From 123c1fda770a39c069ff87a0c33cfc960329dc01 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 11:29:52 +0000 Subject: [PATCH 001/469] ECC-1620: Show human readable step in grid_ls --- src/CMakeLists.txt | 2 + src/grib_accessor_class_g2step_range.cc | 31 ++++- ...grib_accessor_class_step_human_readable.cc | 19 +-- src/step_optimizer.cc | 121 ++++++++++++++++++ src/step_optimizer.h | 42 ++++++ 5 files changed, 200 insertions(+), 15 deletions(-) create mode 100644 src/step_optimizer.cc create mode 100644 src/step_optimizer.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 332118567..b0b0b5236 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,8 @@ # nor does it submit to any jurisdiction. # list( APPEND eccodes_src_files + step_optimizer.cc + timer.cc grib_api.h eccodes.h action.cc diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 8d3440230..11ec414ef 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -13,6 +13,7 @@ *******************************************/ #include "grib_api_internal.h" +#include "step_optimizer.h" /* This is used by make_class.pl @@ -139,23 +140,47 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t size = 0; long start = 0, theEnd = 0; + //0 m Minute + //1 h Hour + //2 D Day + //3 M Month + //4 Y Year + //5 10Y Decade + //6 30Y Normal (30 years) + //7 C Century + //10 3h 3 hours + //11 6h 6 hours + //12 12h 12 hours + //13 15m 15 minutes + //14 30m 30 minutes + //254 s Second + + ret = grib_get_long_internal(h, self->startStep, &start); + long indicatorOfUnitOfTimeRange; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange); + + Step startOptimizer{(int) start, indicatorOfUnitOfTimeRange}; + startOptimizer.optimizeUnit(); + if (ret) return ret; if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%ld", start); + snprintf(buf, sizeof(buf), "%d%s", startOptimizer.value(), startOptimizer.unit_str()); } else { ret = grib_get_long_internal(h, self->endStep, &theEnd); + Step endOptimizer{(int) theEnd, indicatorOfUnitOfTimeRange}; if (ret) return ret; if (start == theEnd) { - snprintf(buf, sizeof(buf), "%ld", theEnd); + snprintf(buf, sizeof(buf), "%d%s", endOptimizer.value(), endOptimizer.unit_str()); } else { - snprintf(buf, sizeof(buf), "%ld-%ld", start, theEnd); + auto [s, e] = findCommonUnits(startOptimizer, endOptimizer); + snprintf(buf, sizeof(buf), "%d-%d%s", s.value(), e.value(), e.unit_str()); } } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index 1e62e044d..70dca5fee 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -9,6 +9,7 @@ */ #include "grib_api_internal.h" +#include "step_optimizer.h" /* This is used by make_class.pl @@ -122,7 +123,7 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) { int err = 0; size_t slen = 2; - long step, hour, minute, second; + long step; /* Change units to seconds (highest resolution) * before computing the step value @@ -132,17 +133,11 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) err = grib_get_long(h, "step", &step); if (err) return err; - hour = step/3600; - minute = step/60 % 60; - second = step % 60; - /* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */ - - if (second) { - snprintf(result, 1024, "%ldh %ldm %lds", hour, minute, second); - } else { - if (minute) snprintf(result, 1024, "%ldh %ldm", hour, minute); - else snprintf(result, 1024, "%ldh", hour); - } + long indicator = grib_get_long(h, "indicatorOfUnitOfTimeRange", &indicator); + auto stepOptimizer = Step(step, indicator); + stepOptimizer.optimizeUnit(); + + snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_str()); *length = strlen(result); return GRIB_SUCCESS; diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc new file mode 100644 index 000000000..646459318 --- /dev/null +++ b/src/step_optimizer.cc @@ -0,0 +1,121 @@ +#include +#include +#include +#include + +#include "step_optimizer.h" + +char* Step::unit_str() const { + static char seconds[] = "s"; + static char minutes[] = "m"; + static char hours[] = "h"; + static char days[] = "d"; + switch (unit_) { + case Unit::SECOND: + return seconds; + case Unit::MINUTE: + return minutes; + case Unit::HOUR: + return hours; + case Unit::DAY: + return days; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); + throw std::runtime_error(msg); + } +} + +Step::Step(int value, long indicatorOfUnitOfTimeRange) { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } + + Unit u = Unit::UNKNOWN; + switch (indicatorOfUnitOfTimeRange) { + case 0: + u = Unit::MINUTE; + break; + case 1: + u = Unit::HOUR; + break; + case 2: + u = Unit::DAY; + break; + case 254: + u = Unit::SECOND; + break; + default: + std::string msg = "Unknown indicatorOfUnitOfTimeRange: " + std::to_string(indicatorOfUnitOfTimeRange); + throw std::runtime_error(msg); + } + value_ = value; + unit_ = u; +} + +Step& Step::optimizeUnit() { + if (value_ == 0) { + return *this; + } + std::map::iterator it = unitMap_.find(unit_); + ++it; + for (; it != unitMap_.end(); ++it){ + Unit u = it->first; + int multiplier = it->second; + if (value_ % multiplier == 0) { + value_ /= multiplier; + unit_ = u; + } + else { + break; + } + } + return *this; +} + +Step& Step::setUnit(Unit new_unit) { + if (unit_ == new_unit) { + return *this; + } + std::map::iterator it = unitMap_.find(unit_); + if (new_unit > unit_) { + ++it; + for (; it != unitMap_.find(new_unit); ++it) { + int multiplier = it->second; + if (value_ % multiplier == 0) { + throw std::exception(); + } + value_ /= multiplier; + unit_ = it->first; + } + } + else { + int multiplier = it->second; + for (; it != unitMap_.find(new_unit);) { + value_ *= multiplier; + --it; + unit_ = it->first; + multiplier = it->second; + } + } + return *this; +} + +bool Step::operator==(const Step& other) const { + if (value_ == other.value_ && unit_ == other.unit_) { + return true; + } + return false; +} + +std::pair findCommonUnits(Step startStep, Step endStep) { + if (startStep.value_ == 0 || endStep.value_ == 0) { + return {startStep, endStep}; + } + + Unit unit = std::min(startStep.optimizeUnit().unit_, endStep.optimizeUnit().unit_); + startStep.setUnit(unit); + endStep.setUnit(unit); + + return {startStep, endStep}; +} diff --git a/src/step_optimizer.h b/src/step_optimizer.h new file mode 100644 index 000000000..b90fad1b5 --- /dev/null +++ b/src/step_optimizer.h @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include +#include +#include + +enum class Unit { + SECOND, + MINUTE, + HOUR, + DAY, + UNKNOWN +}; + +class Step { +public: + Step() : value_(0), unit_(Unit::SECOND) {} + Step(int value, long indicatorOfUnitOfTimeRange); + + int value() const { return value_; } + Unit unit() const { return unit_; } + char* unit_str() const; + + Step& optimizeUnit(); + Step& setUnit(Unit new_unit); + bool operator==(const Step& other) const; + friend std::pair findCommonUnits(Step startStep, Step endStep); + +private: + std::map unitMap_ = { + {Unit::SECOND, 0}, + {Unit::MINUTE, 60}, + {Unit::HOUR, 60}, + {Unit::DAY, 24} + }; + int value_; + Unit unit_; +}; + +std::pair findCommonUnits(Step, Step); From dbf322805e03ee5d52344c30925619c7e3b74405 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 11:35:16 +0000 Subject: [PATCH 002/469] ECC-1620: Don't set steps to seconds --- src/grib_accessor_class_step_human_readable.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index 70dca5fee..24c7ac823 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -128,8 +128,8 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) /* Change units to seconds (highest resolution) * before computing the step value */ - err = grib_set_string(h, "stepUnits", "s", &slen); - if (err) return err; + //err = grib_set_string(h, "stepUnits", "s", &slen); + //if (err) return err; err = grib_get_long(h, "step", &step); if (err) return err; From f0e207386911635108d639f606b5dd74b5ae6a44 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 11:50:28 +0000 Subject: [PATCH 003/469] ECC-1620: Remove timer.cc from CMakeLists.txt --- src/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b0b0b5236..8a3cf1ed0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,7 +10,6 @@ # list( APPEND eccodes_src_files step_optimizer.cc - timer.cc grib_api.h eccodes.h action.cc @@ -264,7 +263,6 @@ list( APPEND eccodes_src_files grib_accessor_class_abstract_long_vector.cc grib_loader_from_handle.cc grib_bits.cc - grib_timer.cc grib_ibmfloat.cc grib_ieeefloat.cc grib_accessor_class_reference_value_error.cc From 0a5cca89c8fe97f87da735f0cf0b2d925ba1495d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 13:23:32 +0000 Subject: [PATCH 004/469] ECC-1620: Consider different units --- src/CMakeLists.txt | 1 + src/grib_accessor_class_g2step_range.cc | 24 +++++++++++++++++++++--- src/step_optimizer.cc | 15 +++++++++++++++ src/step_optimizer.h | 2 ++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8a3cf1ed0..2adbef70a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,6 +11,7 @@ list( APPEND eccodes_src_files step_optimizer.cc grib_api.h + grib_timer.cc eccodes.h action.cc action_class_alias.cc diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 11ec414ef..6576d3de0 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -157,10 +157,19 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) ret = grib_get_long_internal(h, self->startStep, &start); + if (ret) + return ret; long indicatorOfUnitOfTimeRange; + long forecastTime; ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange); + if (ret) + return ret; + ret = grib_get_long_internal(h, "forecastTime", &forecastTime); + if (ret) + return ret; - Step startOptimizer{(int) start, indicatorOfUnitOfTimeRange}; + + Step startOptimizer{(int) forecastTime, indicatorOfUnitOfTimeRange}; startOptimizer.optimizeUnit(); if (ret) @@ -170,8 +179,17 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) snprintf(buf, sizeof(buf), "%d%s", startOptimizer.value(), startOptimizer.unit_str()); } else { - ret = grib_get_long_internal(h, self->endStep, &theEnd); - Step endOptimizer{(int) theEnd, indicatorOfUnitOfTimeRange}; + long indicatorOfUnitForTimeRange; + long lengthOfTimeRange; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &indicatorOfUnitForTimeRange); + if (ret) + return ret; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &lengthOfTimeRange); + if (ret) + return ret; + //ret = grib_get_long_internal(h, self->endStep, &theEnd); + Step length{(int) lengthOfTimeRange, indicatorOfUnitForTimeRange}; + Step endOptimizer = startOptimizer + length; if (ret) return ret; diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index 646459318..e98aed2fc 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -53,6 +53,15 @@ Step::Step(int value, long indicatorOfUnitOfTimeRange) { unit_ = u; } +Step::Step(int value, Unit u) { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } + value_ = value; + unit_ = u; +} + Step& Step::optimizeUnit() { if (value_ == 0) { return *this; @@ -108,6 +117,12 @@ bool Step::operator==(const Step& other) const { return false; } +Step operator+(const Step step1, const Step step2) { + auto [a, b] = findCommonUnits(step1, step2); + return Step(a.value_ + b.value_, a.unit_); +} + + std::pair findCommonUnits(Step startStep, Step endStep) { if (startStep.value_ == 0 || endStep.value_ == 0) { return {startStep, endStep}; diff --git a/src/step_optimizer.h b/src/step_optimizer.h index b90fad1b5..913fc30de 100644 --- a/src/step_optimizer.h +++ b/src/step_optimizer.h @@ -18,6 +18,7 @@ class Step { public: Step() : value_(0), unit_(Unit::SECOND) {} Step(int value, long indicatorOfUnitOfTimeRange); + Step(int value, Unit unit); int value() const { return value_; } Unit unit() const { return unit_; } @@ -27,6 +28,7 @@ class Step { Step& setUnit(Unit new_unit); bool operator==(const Step& other) const; friend std::pair findCommonUnits(Step startStep, Step endStep); + friend Step operator+(const Step step1, const Step step2); private: std::map unitMap_ = { From 3a9172e3f4f8b8098a0338f4a8055c63b6d4250d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 13:35:11 +0000 Subject: [PATCH 005/469] ECC-1620: Minor fixes --- src/grib_accessor_class_g2step_range.cc | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 6576d3de0..cf71eb1bf 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -138,7 +138,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - long start = 0, theEnd = 0; + //long start = 0, theEnd = 0; //0 m Minute //1 h Hour @@ -156,7 +156,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) //254 s Second - ret = grib_get_long_internal(h, self->startStep, &start); + //ret = grib_get_long_internal(h, self->startStep, &start); if (ret) return ret; long indicatorOfUnitOfTimeRange; @@ -169,14 +169,14 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; - Step startOptimizer{(int) forecastTime, indicatorOfUnitOfTimeRange}; - startOptimizer.optimizeUnit(); + Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; + step_a.optimizeUnit(); if (ret) return ret; if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%d%s", startOptimizer.value(), startOptimizer.unit_str()); + snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_str()); } else { long indicatorOfUnitForTimeRange; @@ -187,18 +187,17 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) ret = grib_get_long_internal(h, "lengthOfTimeRange", &lengthOfTimeRange); if (ret) return ret; - //ret = grib_get_long_internal(h, self->endStep, &theEnd); + Step length{(int) lengthOfTimeRange, indicatorOfUnitForTimeRange}; - Step endOptimizer = startOptimizer + length; - if (ret) - return ret; + Step step_b = step_a + length; + step_b.optimizeUnit(); + auto [a, b] = findCommonUnits(step_a, step_b); - if (start == theEnd) { - snprintf(buf, sizeof(buf), "%d%s", endOptimizer.value(), endOptimizer.unit_str()); + if (a.value() == 0) { + snprintf(buf, sizeof(buf), "%d%s", step_b.value(), step_b.unit_str()); } else { - auto [s, e] = findCommonUnits(startOptimizer, endOptimizer); - snprintf(buf, sizeof(buf), "%d-%d%s", s.value(), e.value(), e.unit_str()); + snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), a.unit_str()); } } From 140b7d84c6880334e05c7cdbf2c174186dbb0f68 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 13:40:09 +0000 Subject: [PATCH 006/469] ECC-1620: Show range instead of starting point --- src/grib_accessor_class_g2step_range.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index cf71eb1bf..7eb25c0cc 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -193,12 +193,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) step_b.optimizeUnit(); auto [a, b] = findCommonUnits(step_a, step_b); - if (a.value() == 0) { - snprintf(buf, sizeof(buf), "%d%s", step_b.value(), step_b.unit_str()); - } - else { + //if (a.value() == 0) { + // snprintf(buf, sizeof(buf), "%d%s", step_b.value(), step_b.unit_str()); + //} + //else { snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), a.unit_str()); - } + //} } size = strlen(buf) + 1; From bfe9d6344961cf6261a1659f11aa7af57e2b1aa6 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 11 Jul 2023 13:44:14 +0000 Subject: [PATCH 007/469] ECC-1620: Fix unit --- src/grib_accessor_class_g2step_range.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 7eb25c0cc..5228163fe 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -193,12 +193,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) step_b.optimizeUnit(); auto [a, b] = findCommonUnits(step_a, step_b); - //if (a.value() == 0) { - // snprintf(buf, sizeof(buf), "%d%s", step_b.value(), step_b.unit_str()); - //} - //else { + if (a.value() == 0) { + snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_str()); + } + else { snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), a.unit_str()); - //} + } } size = strlen(buf) + 1; From c354ff248aafa846184a49577badd22a437a31c2 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 12 Jul 2023 10:31:59 +0000 Subject: [PATCH 008/469] ECC-1620: Fix unit, when range starts from 0 --- src/step_optimizer.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index e98aed2fc..5ea2c6ced 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -2,6 +2,7 @@ #include #include #include +#include #include "step_optimizer.h" @@ -83,6 +84,10 @@ Step& Step::optimizeUnit() { } Step& Step::setUnit(Unit new_unit) { + if (value_ == 0) { + unit_ = new_unit; + return *this; + } if (unit_ == new_unit) { return *this; } @@ -125,6 +130,17 @@ Step operator+(const Step step1, const Step step2) { std::pair findCommonUnits(Step startStep, Step endStep) { if (startStep.value_ == 0 || endStep.value_ == 0) { + if (startStep.value_ == 0 && endStep.value_ == 0) { + Unit unit = std::max(startStep.unit_, endStep.unit_); + startStep.setUnit(unit); + endStep.setUnit(unit); + } + else if (startStep.value_ == 0) { + startStep.setUnit(endStep.unit_); + } + else if (endStep.value_ == 0) { + endStep.setUnit(startStep.unit_); + } return {startStep, endStep}; } From 1517f9604f6fd818c66b829fa914c5b4f82d4a0d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 10 Aug 2023 08:42:44 +0000 Subject: [PATCH 009/469] nai --- definitions/grib2/boot.def | 1 + .../grib2/template.4.forecast_time.def | 5 +- src/grib_accessor_class_g2end_step.cc | 356 ++++++++++++------ src/grib_accessor_class_g2step_range.cc | 125 ++++-- ...grib_accessor_class_step_human_readable.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 212 ++++++++--- src/step_optimizer.cc | 247 ++++++++---- src/step_optimizer.h | 190 +++++++++- tools/grib_ls.cc | 1 + tools/grib_options.cc | 5 + tools/grib_tools.cc | 21 +- tools/grib_tools.h | 2 + 12 files changed, 898 insertions(+), 269 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 32f262bef..cd90c57d1 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -17,6 +17,7 @@ constant million = 1000000 : hidden; constant grib2divider = 1000000; alias extraDimensionPresent=zero; transient angleSubdivisions=grib2divider; # micro degrees +transient stepOutputFormat=""; meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 662310fc6..1f31f48c7 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -10,9 +10,10 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; # Indicator of unit of time range codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 +;alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +;codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +codetable[1] stepUnits 'stepUnits.table' = 255: transient,dump,no_copy; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 285a30085..1388cdeed 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -9,6 +9,9 @@ */ #include "grib_api_internal.h" +#include "step_optimizer.h" +#include + /* This is used by make_class.pl @@ -55,6 +58,10 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int pack_string(grib_accessor*, const char* val, size_t* len); +static int unpack_string(grib_accessor*, char* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -107,12 +114,12 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, /* pack_string */ - 0, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -233,27 +240,36 @@ static int convert_time_range( Assert(lengthOfTimeRange != NULL); if (indicatorOfUnitForTimeRange != stepUnits) { - long u2sf_step_unit; - long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; - if (coded_time_range_sec < 0) { - long u2sf; - int factor = 60; - if (u2s2[indicatorOfUnitForTimeRange] % factor) - return GRIB_DECODING_ERROR; - if (u2s[stepUnits] % factor) - return GRIB_DECODING_ERROR; - u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; - coded_time_range_sec = (*lengthOfTimeRange) * u2sf; - u2sf_step_unit = u2s[stepUnits] / factor; + Step step{(int) *lengthOfTimeRange, indicatorOfUnitForTimeRange}; + if (stepUnits != 255) { + step.setUnit(stepUnits); } else { - u2sf_step_unit = u2s[stepUnits]; - } - if (coded_time_range_sec % u2sf_step_unit != 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); - return GRIB_WRONG_STEP_UNIT; + step.setUnit(indicatorOfUnitForTimeRange); } - *lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; + *lengthOfTimeRange = step.value(); + + //long u2sf_step_unit; + //long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; + //if (coded_time_range_sec < 0) { + // long u2sf; + // int factor = 60; + // if (u2s2[indicatorOfUnitForTimeRange] % factor) + // return GRIB_DECODING_ERROR; + // if (u2s[stepUnits] % factor) + // return GRIB_DECODING_ERROR; + // u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; + // coded_time_range_sec = (*lengthOfTimeRange) * u2sf; + // u2sf_step_unit = u2s[stepUnits] / factor; + //} + //else { + // u2sf_step_unit = u2s[stepUnits]; + //} + //if (coded_time_range_sec % u2sf_step_unit != 0) { + // grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); + // return GRIB_WRONG_STEP_UNIT; + //} + //*lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; } return GRIB_SUCCESS; @@ -391,109 +407,237 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } } +// TODO(maee): Re-implement calendar-based stepRange using std::chrono static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - int err = 0; + Step step{(int) *val, StepUnitsTable::to_long("h")}; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; - long year; - long month; - long day; - long hour; - long minute; - long second; + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; + return GRIB_SUCCESS; - long start_step; - long unit, coded_unit; - long year_of_end_of_interval; - long month_of_end_of_interval; - long day_of_end_of_interval; - long hour_of_end_of_interval; - long minute_of_end_of_interval = 0; - long second_of_end_of_interval = 0; - long coded_time_range, time_range, typeOfTimeIncrement; +// grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; +// grib_handle* h = grib_handle_of_accessor(a); + +// int err = 0; + +// long year; +// long month; +// long day; +// long hour; +// long minute; +// long second; + +// long start_step; +// long unit, coded_unit; +// long year_of_end_of_interval; +// long month_of_end_of_interval; +// long day_of_end_of_interval; +// long hour_of_end_of_interval; +// long minute_of_end_of_interval = 0; +// long second_of_end_of_interval = 0; + +// long coded_time_range, time_range, typeOfTimeIncrement; + +// double dend, dstep; + +// [>point in time <] +// if (self->year == NULL) { +// err = grib_set_long_internal(h, self->start_step, *val); +// return err; +// } + +// if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) +// return err; +// if ((err = grib_get_long_internal(h, self->unit, &unit))) +// return err; +// if ((err = grib_get_long_internal(h, self->year, &year))) +// return err; +// if ((err = grib_get_long_internal(h, self->month, &month))) +// return err; +// if ((err = grib_get_long_internal(h, self->day, &day))) +// return err; +// if ((err = grib_get_long_internal(h, self->hour, &hour))) +// return err; +// if ((err = grib_get_long_internal(h, self->minute, &minute))) +// return err; +// if ((err = grib_get_long_internal(h, self->second, &second))) +// return err; + +// if ((err = grib_get_long_internal(h, self->start_step, &start_step))) +// return err; +// if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) +// return err; + +// time_range = *val - start_step; + +// if (time_range < 0) { +// grib_context_log(h->context, GRIB_LOG_ERROR, +// "endStep < startStep (%ld < %ld)", *val, start_step); +// return GRIB_WRONG_STEP; +// } + +// err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); +// if (err != GRIB_SUCCESS) +// return err; + +// dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; [> in days <] +// dend += dstep; + +// err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, +// &day_of_end_of_interval, &hour_of_end_of_interval, +// &minute_of_end_of_interval, &second_of_end_of_interval); +// if (err != GRIB_SUCCESS) +// return err; + +// if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) +// return err; + +// if (time_range * u2s[unit] % u2s2[coded_unit]) { +// coded_unit = unit; +// if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) +// return err; +// coded_time_range = time_range; +// } +// else +// coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + +// if (typeOfTimeIncrement != 1) { +// [> 1 means "Successive times processed have same forecast time, start time of forecast is incremented" <] +// [> Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step <] +// if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) +// return err; +// } + +// return GRIB_SUCCESS; +} - double dend, dstep; +static int pack_string(grib_accessor* a, const char* val, size_t* len) { + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - /*point in time */ - if (self->year == NULL) { - err = grib_set_long_internal(h, self->start_step, *val); - return err; - } + Step step = Step(parse_step(std::string(val))); - if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) - return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) - return err; - if ((err = grib_get_long_internal(h, self->year, &year))) - return err; - if ((err = grib_get_long_internal(h, self->month, &month))) - return err; - if ((err = grib_get_long_internal(h, self->day, &day))) - return err; - if ((err = grib_get_long_internal(h, self->hour, &hour))) - return err; - if ((err = grib_get_long_internal(h, self->minute, &minute))) - return err; - if ((err = grib_get_long_internal(h, self->second, &second))) - return err; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) - return err; - if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) - return err; + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; - time_range = *val - start_step; + return GRIB_SUCCESS; +} - if (time_range < 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%ld < %ld)", *val, start_step); - return GRIB_WRONG_STEP; - } - err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); - if (err != GRIB_SUCCESS) - return err; +//static int unpack_string(grib_accessor* a, char* val, size_t* len) { +// throw std::runtime_error("g2end_step: unpack_string() is not implemented"); +// //return GRIB_NOT_IMPLEMENTED; +//} - dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ - dend += dstep; +static int unpack_string(grib_accessor* a, char* val, size_t* len) { + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, - &day_of_end_of_interval, &hour_of_end_of_interval, - &minute_of_end_of_interval, &second_of_end_of_interval); - if (err != GRIB_SUCCESS) - return err; + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; - if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) - return err; + long value; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); + if (ret) + return ret; + + Step step{(int) value, unit}; + + sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + + return GRIB_SUCCESS; +} + +static int pack_double(grib_accessor* a, const double* val, size_t* len) { + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - if (time_range * u2s[unit] % u2s2[coded_unit]) { - coded_unit = unit; - if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) - return err; - coded_time_range = time_range; + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; + + + long stepUnits; + ret = grib_get_long_internal(h, "stepUnits", &stepUnits); + if (ret) + return ret; + + Step step; + if (stepUnits != 255) { + step = Step((int) *val, stepUnits); } - else - coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; - - if (typeOfTimeIncrement != 1) { - /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ - /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ - if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) - return err; + else { + step = Step((int) *val, unit); + } + + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; + + return ret; +} + +static int unpack_double(grib_accessor* a, double* val, size_t* len) { + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); + if (ret) + return ret; + + long stepUnits; + ret = grib_get_long_internal(h, "stepUnits", &stepUnits); + if (ret) + return ret; + + if (stepUnits != 255) { + Step step = Step(value, unit); + *val = step.getDoubleValue(stepUnits); + } + else { + Step step = Step(value, unit); + *val = step.value(); } return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 5228163fe..8c8a35b23 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -14,6 +14,7 @@ #include "grib_api_internal.h" #include "step_optimizer.h" +#include /* This is used by make_class.pl @@ -140,22 +141,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t size = 0; //long start = 0, theEnd = 0; - //0 m Minute - //1 h Hour - //2 D Day - //3 M Month - //4 Y Year - //5 10Y Decade - //6 30Y Normal (30 years) - //7 C Century - //10 3h 3 hours - //11 6h 6 hours - //12 12h 12 hours - //13 15m 15 minutes - //14 30m 30 minutes - //254 s Second - - //ret = grib_get_long_internal(h, self->startStep, &start); if (ret) return ret; @@ -169,14 +154,29 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; - Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; - step_a.optimizeUnit(); + size_t stepUnitsSize = 128; + char stepUnits[stepUnitsSize]; + ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize); + if (ret) + return ret; + //printf("stepUnits=%s\n", stepUnits); + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize); if (ret) return ret; + //printf("stepOutputFormat=%s\n", stepOutputFormat); + + Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; + step_a.optimizeUnit(); + + if (strcmp(stepOutputFormat, "future") != 0) { + step_a.hide_hour_unit(); + } if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_str()); + snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_as_str().c_str()); } else { long indicatorOfUnitForTimeRange; @@ -193,11 +193,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) step_b.optimizeUnit(); auto [a, b] = findCommonUnits(step_a, step_b); + if (strcmp(stepOutputFormat, "future") != 0) { + step_b.hide_hour_unit(); + a.hide_hour_unit(); + b.hide_hour_unit(); + } if (a.value() == 0) { - snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_str()); + snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_as_str().c_str()); } else { - snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), a.unit_str()); + snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), step_b.unit_as_str().c_str()); } } @@ -213,29 +218,83 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } + static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); - - long start = 0, theEnd = -1; int ret = 0; - char *p = NULL, *q = NULL; - start = strtol(val, &p, 10); - theEnd = start; + std::vector steps = parse_range(val); + if (steps.size() == 0) { + return GRIB_INVALID_ARGUMENT; + } + //ret = grib_set_long_internal(h, self->startStep, steps[0].value()); + //if (ret) + // return ret; - if (*p != 0) - theEnd = strtol(++p, &q, 10); - ret = grib_set_long_internal(h, self->startStep, start); - if (ret) - return ret; + //printf("val: %s\n", val); - if (self->endStep != NULL) { - ret = grib_set_long_internal(h, self->endStep, theEnd); + if (steps.size() == 1) { + //printf("unit_str 1: %s\n", steps[0].unit_as_str().c_str()); + steps[0].optimizeUnit(); + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit_as_long()); + if (ret) + return ret; + + ret = grib_set_long_internal(h, "forecastTime", steps[0].value()); if (ret) return ret; } + else if (steps.size() == 2) { + //ret = grib_set_long_internal(h, self->endStep, steps[1].value()); + //if (ret) + // return ret; + //printf("unit_str 2: %s\n", steps[1].unit_as_str().c_str()); + + steps[0].optimizeUnit(); + steps[1].optimizeUnit(); + auto [a, b] = findCommonUnits(steps[0], steps[1]); + + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", a.unit_as_long()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "forecastTime", a.value()); + if (ret) + return ret; + + + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", b.unit_as_long()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "lengthOfTimeRange", b.value()); + if (ret) + return ret; + } + else { + std::string msg = std::string("Invalid range: ") + val; + throw std::runtime_error(msg); + } + + + //long start = 0, theEnd = -1; + //int ret = 0; + //char *p = NULL, *q = NULL; + + //start = strtol(val, &p, 10); + //theEnd = start; + + //if (*p != 0) + // theEnd = strtol(++p, &q, 10); + //ret = grib_set_long_internal(h, self->startStep, start); + //if (ret) + // return ret; + + //if (self->endStep != NULL) { + // ret = grib_set_long_internal(h, self->endStep, theEnd); + // if (ret) + // return ret; + //} return 0; } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index 24c7ac823..d9fe32d25 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -137,7 +137,7 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) auto stepOptimizer = Step(step, indicator); stepOptimizer.optimizeUnit(); - snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_str()); + snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); *length = strlen(result); return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index acf570c19..99d493bd5 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -9,6 +9,8 @@ */ #include "grib_api_internal.h" +#include "step_optimizer.h" +#include /* This is used by make_class.pl @@ -39,6 +41,10 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int pack_string(grib_accessor*, const char* val, size_t* len); +static int unpack_string(grib_accessor*, char* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -78,12 +84,12 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, /* pack_string */ - 0, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -214,52 +220,172 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int err = 0; - long codedStep, codedUnits, stepUnits; - long oldStep = 0; - long indicatorOfUnitForTimeRange, lengthOfTimeRange; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) - return err; - if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) - return err; + Step step{(int) *val, StepUnitsTable::to_long("h")}; + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; - unpack_long(a, &oldStep, len); + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + return GRIB_SUCCESS; - if (stepUnits != codedUnits) { - codedStep = *val * u2s[stepUnits]; - if (codedStep % u2s2[codedUnits] != 0) { - codedUnits = stepUnits; - err = grib_set_long_internal(h, self->codedUnits, codedUnits); - if (err != GRIB_SUCCESS) - return err; - codedStep = *val; - } - else { - codedStep = codedStep / u2s2[codedUnits]; - } + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int err = 0; + //long codedStep, codedUnits, stepUnits; + //long oldStep = 0; + //long indicatorOfUnitForTimeRange, lengthOfTimeRange; + + //if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + // return err; + //if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + // return err; + + //unpack_long(a, &oldStep, len); + + //if (stepUnits != codedUnits) { + // codedStep = *val * u2s[stepUnits]; + // if (codedStep % u2s2[codedUnits] != 0) { + // codedUnits = stepUnits; + // err = grib_set_long_internal(h, self->codedUnits, codedUnits); + // if (err != GRIB_SUCCESS) + // return err; + // codedStep = *val; + // } + // else { + // codedStep = codedStep / u2s2[codedUnits]; + // } + //} + //else { + // codedStep = *val; + //} + + //if (self->indicatorOfUnitForTimeRange) { + // if ((err = grib_get_long_internal(h, + // self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) + // return err; + // if ((err = grib_get_long_internal(h, + // self->lengthOfTimeRange, &lengthOfTimeRange))) + // return err; + // if (codedUnits == indicatorOfUnitForTimeRange) + // lengthOfTimeRange -= codedStep - oldStep; + // else + // lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; + // lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; + // err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); + // if (err != GRIB_SUCCESS) + // return err; + //} + + //return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); +} + +static int pack_string(grib_accessor* a, const char* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + Step step = Step(parse_step(std::string(val))); + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; + + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + + return GRIB_SUCCESS; +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "forecastTime", &value); + if (ret) + return ret; + + Step step{(int) value, unit}; + sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + + return GRIB_SUCCESS; +} + + +static int pack_double(grib_accessor* a, const double* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + + long stepUnits; + ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); + if (ret) + return ret; + + Step step; + if (stepUnits != 255) { + step = Step((int) *val, stepUnits); } else { - codedStep = *val; + step = Step((int) *val, unit); } - if (self->indicatorOfUnitForTimeRange) { - if ((err = grib_get_long_internal(h, - self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) - return err; - if ((err = grib_get_long_internal(h, - self->lengthOfTimeRange, &lengthOfTimeRange))) - return err; - if (codedUnits == indicatorOfUnitForTimeRange) - lengthOfTimeRange -= codedStep - oldStep; - else - lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; - lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; - err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); - if (err != GRIB_SUCCESS) - return err; + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; + + return ret; +} + + +static int unpack_double(grib_accessor* a, double* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "forecastTime", &value); + if (ret) + return ret; + + long stepUnits; + ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); + if (ret) + return ret; + + if (stepUnits != 255) { + Step step = Step(value, unit); + *val = step.getDoubleValue(stepUnits); + } + else { + Step step = Step(value, unit); + *val = step.value(); } - return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); + return GRIB_SUCCESS; } diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index 5ea2c6ced..e65611712 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -6,52 +6,65 @@ #include "step_optimizer.h" -char* Step::unit_str() const { - static char seconds[] = "s"; - static char minutes[] = "m"; - static char hours[] = "h"; - static char days[] = "d"; - switch (unit_) { - case Unit::SECOND: - return seconds; - case Unit::MINUTE: - return minutes; - case Unit::HOUR: - return hours; - case Unit::DAY: - return days; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); - throw std::runtime_error(msg); + +std::string parse_step(std::string step) { + if (step.find_first_of("smhdMYC") == std::string::npos) { + step += "h"; + } + return step; +} + + +std::vector parse_range(const std::string& range_str) { + std::vector steps; + std::string::size_type pos = 0; + std::string::size_type prev = 0; + while ((pos = range_str.find("-", prev)) != std::string::npos) { + std::string token = parse_step(range_str.substr(prev, pos - prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); + } + prev = pos + 1; + } + std::string token = parse_step(range_str.substr(prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); } + return steps; } -Step::Step(int value, long indicatorOfUnitOfTimeRange) { + +std::string Step::unit_as_str() const { + if ((unit_ == Unit::HOUR) && hide_hour_unit_) + return std::string(""); + else + return StepUnitsTable::to_str(unit_); +} + +long Step::unit_as_long() const { + return unit_; +} + +Step::Step(int value, long unit) { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(value >= 0 && value <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); } - Unit u = Unit::UNKNOWN; - switch (indicatorOfUnitOfTimeRange) { - case 0: - u = Unit::MINUTE; - break; - case 1: - u = Unit::HOUR; - break; - case 2: - u = Unit::DAY; - break; - case 254: - u = Unit::SECOND; - break; - default: - std::string msg = "Unknown indicatorOfUnitOfTimeRange: " + std::to_string(indicatorOfUnitOfTimeRange); - throw std::runtime_error(msg); - } value_ = value; - unit_ = u; + unit_ = StepUnitsTable::to_unit(unit); +} + +Step::Step(const std::string& str) { + size_t pos = str.find_first_of("smhdMYC"); + if (pos == std::string::npos) { + throw std::runtime_error("Unknown unit."); + } + std::string v_str = str.substr(0, pos); + std::string u_str = str.substr(pos); + int v = std::stoi(v_str); + value_ = v; + unit_ = StepUnitsTable::to_unit(u_str); } Step::Step(int value, Unit u) { @@ -67,22 +80,51 @@ Step& Step::optimizeUnit() { if (value_ == 0) { return *this; } - std::map::iterator it = unitMap_.find(unit_); - ++it; - for (; it != unitMap_.end(); ++it){ - Unit u = it->first; - int multiplier = it->second; - if (value_ % multiplier == 0) { - value_ /= multiplier; - unit_ = u; - } - else { + + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + StepUnitsTable::to_str(unit_); + throw std::runtime_error(msg); + } + + for (auto it = unitMap_.end(); it != unitMap_.begin();) { + --it; + int multiplier = it->second; + if (duration.count() % multiplier == 0) { + value_ = duration.count() / multiplier; + unit_ = it->first; + return *this; } } return *this; } +Step& Step::setUnit(std::string new_unit) { + setUnit(StepUnitsTable::to_unit(new_unit)); + return *this; +} + +Step& Step::setUnit(long new_unit) { + setUnit(StepUnitsTable::to_unit(new_unit)); + return *this; +} + Step& Step::setUnit(Unit new_unit) { if (value_ == 0) { unit_ = new_unit; @@ -91,30 +133,101 @@ Step& Step::setUnit(Unit new_unit) { if (unit_ == new_unit) { return *this; } - std::map::iterator it = unitMap_.find(unit_); - if (new_unit > unit_) { - ++it; - for (; it != unitMap_.find(new_unit); ++it) { - int multiplier = it->second; - if (value_ % multiplier == 0) { - throw std::exception(); - } - value_ /= multiplier; - unit_ = it->first; - } + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); + break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); + throw std::runtime_error(msg); } - else { - int multiplier = it->second; - for (; it != unitMap_.find(new_unit);) { - value_ *= multiplier; - --it; - unit_ = it->first; - multiplier = it->second; - } + + switch (new_unit) { + case Unit::SECOND: + value_ = duration.count(); + break; + case Unit::MINUTE: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::HOUR: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::DAY: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::MONTH: + value_ = std::chrono::duration_cast(duration).count(); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); + throw std::runtime_error(msg); } + unit_ = new_unit; + return *this; } +double Step::getDoubleValue(long new_unit) const { + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); + break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); + throw std::runtime_error(msg); + } + + double value; + switch (new_unit) { + case Unit::SECOND: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::MINUTE: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::HOUR: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::DAY: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::MONTH: + value = std::chrono::duration_cast(duration).count(); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); + throw std::runtime_error(msg); + } + + return value; +} + bool Step::operator==(const Step& other) const { if (value_ == other.value_ && unit_ == other.unit_) { return true; @@ -131,7 +244,7 @@ Step operator+(const Step step1, const Step step2) { std::pair findCommonUnits(Step startStep, Step endStep) { if (startStep.value_ == 0 || endStep.value_ == 0) { if (startStep.value_ == 0 && endStep.value_ == 0) { - Unit unit = std::max(startStep.unit_, endStep.unit_); + Unit unit = StepUnitsTable::unit_duration(startStep.unit_) > StepUnitsTable::unit_duration(endStep.unit_) ? startStep.unit_ : endStep.unit_; startStep.setUnit(unit); endStep.setUnit(unit); } diff --git a/src/step_optimizer.h b/src/step_optimizer.h index 913fc30de..9b88fcd70 100644 --- a/src/step_optimizer.h +++ b/src/step_optimizer.h @@ -5,40 +5,200 @@ #include #include #include +#include +#include +#include + -enum class Unit { - SECOND, - MINUTE, - HOUR, - DAY, - UNKNOWN +enum Unit : long { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, }; +using Minutes = std::chrono::duration>; +using Hours = std::chrono::duration>; +using Days = std::chrono::duration>; +using Months = std::chrono::duration>; +using Years = std::chrono::duration>; +using Years10 = std::chrono::duration>; +using Years30 = std::chrono::duration>; +using Centuries = std::chrono::duration>; +using Hours3 = std::chrono::duration>; +using Hours6 = std::chrono::duration>; +using Hours12 = std::chrono::duration>; +using Seconds = std::chrono::duration>; +using Minutes15 = std::chrono::duration>; +using Minutes30 = std::chrono::duration>; +using Missing = std::chrono::duration>; + +using MinutesDouble = std::chrono::duration>; +using HoursDouble = std::chrono::duration>; +using DaysDouble = std::chrono::duration>; +using MonthsDouble = std::chrono::duration>; +using YearsDouble = std::chrono::duration>; +using Years10Double = std::chrono::duration>; +using Years30Double = std::chrono::duration>; +using CenturiesDouble = std::chrono::duration>; +using Hours3Double = std::chrono::duration>; +using Hours6Double = std::chrono::duration>; +using Hours12Double = std::chrono::duration>; +using SecondsDouble = std::chrono::duration>; +using Minutes15Double = std::chrono::duration>; +using Minutes30Double = std::chrono::duration>; +using MissingDouble = std::chrono::duration>; + +class StepUnitsTable{ +private: + StepUnitsTable() { + } +public: + static Unit to_unit(const std::string& str) { + static std::map map = { + {"m", Unit::MINUTE}, + {"h", Unit::HOUR}, + {"d", Unit::DAY}, + {"M", Unit::MONTH}, + {"Y", Unit::YEAR}, + {"10Y", Unit::YEARS10}, + {"30Y", Unit::YEARS30}, + {"C", Unit::CENTURY}, + {"3h", Unit::HOURS3}, + {"6h", Unit::HOURS6}, + {"12h", Unit::HOURS12}, + {"s", Unit::SECOND}, + {"15m", Unit::MINUTES15}, + {"30m", Unit::MINUTES30}, + {"255", Unit::MISSING}, + }; + return map[str]; + } + + static long to_long(const std::string& str) { + return to_unit(str); + } + + static Unit to_unit(long code) { + static std::map map = { + {Unit::MINUTE, Unit::MINUTE}, + {Unit::HOUR, Unit::HOUR}, + {Unit::DAY, Unit::DAY}, + {Unit::MONTH, Unit::MONTH}, + {Unit::YEAR, Unit::YEAR}, + {Unit::YEARS10, Unit::YEARS10}, + {Unit::YEARS30, Unit::YEARS30}, + {Unit::CENTURY, Unit::CENTURY}, + {Unit::HOURS3, Unit::HOURS3}, + {Unit::HOURS6, Unit::HOURS6}, + {Unit::HOURS12, Unit::HOURS12}, + {Unit::SECOND, Unit::SECOND}, + {Unit::MINUTES15, Unit::MINUTES15}, + {Unit::MINUTES30, Unit::MINUTES30}, + {Unit::MISSING, Unit::MISSING}, + }; + return map[code]; + } + + static std::string to_str(long code) { + static std::map map = { + {Unit::MINUTE, "m"}, + {Unit::HOUR, "h"}, + {Unit::DAY, "d"}, + {Unit::MONTH, "M"}, + {Unit::YEAR, "Y"}, + {Unit::YEARS10, "10Y"}, + {Unit::YEARS30, "30Y"}, + {Unit::CENTURY, "C"}, + {Unit::HOURS3, "3h"}, + {Unit::HOURS6, "6h"}, + {Unit::HOURS12, "12h"}, + {Unit::SECOND, "s"}, + {Unit::MINUTES15, "15m"}, + {Unit::MINUTES30, "30m"}, + {Unit::MISSING, "255"}, + }; + return map[code]; + } + + static double unit_duration(long code) { + static std::map map = { + {Unit::MINUTE, Minutes::period::num / Minutes::period::den}, + {Unit::HOUR, Hours::period::num / Hours::period::den}, + {Unit::DAY, Days::period::num / Days::period::den}, + {Unit::MONTH, Months::period::num / Months::period::den}, + {Unit::YEAR, Years::period::num / Years::period::den}, + {Unit::YEARS10, Years10::period::num / Years10::period::den}, + {Unit::YEARS30, Years30::period::num / Years30::period::den}, + {Unit::CENTURY, Centuries::period::num / Centuries::period::den}, + {Unit::HOURS3, Hours3::period::num / Hours3::period::den}, + {Unit::HOURS6, Hours6::period::num / Hours6::period::den}, + {Unit::HOURS12, Hours12::period::num / Hours12::period::den}, + {Unit::SECOND, Seconds::period::num / Seconds::period::den}, + {Unit::MINUTES15, Minutes15::period::num / Minutes15::period::den}, + {Unit::MINUTES30, Minutes30::period::num / Minutes30::period::den}, + }; + return map[code]; + } +}; + + class Step { public: Step() : value_(0), unit_(Unit::SECOND) {} - Step(int value, long indicatorOfUnitOfTimeRange); - Step(int value, Unit unit); + Step(int value, long unit); + explicit Step(const std::string& str); int value() const { return value_; } - Unit unit() const { return unit_; } - char* unit_str() const; + std::string unit_as_str() const; + long unit_as_long() const; + void hide_hour_unit() { hide_hour_unit_ = true; } Step& optimizeUnit(); - Step& setUnit(Unit new_unit); + Step& setUnit(std::string new_unit); + Step& setUnit(long new_unit); + double getDoubleValue(long unit) const; bool operator==(const Step& other) const; friend std::pair findCommonUnits(Step startStep, Step endStep); friend Step operator+(const Step step1, const Step step2); private: - std::map unitMap_ = { - {Unit::SECOND, 0}, + long unit() const { return unit_; } + Step& setUnit(Unit new_unit); + Step(int value, Unit unit); + std::vector> unitMap_ = { + {Unit::SECOND, 1}, {Unit::MINUTE, 60}, - {Unit::HOUR, 60}, - {Unit::DAY, 24} + //{Unit::MINUTES15, 900}, + //{Unit::MINUTES30, 1800}, + {Unit::HOUR, 3600}, + //{Unit::HOURS3, 10800}, + //{Unit::HOURS6, 21600}, + //{Unit::HOURS12, 43200}, + {Unit::DAY, 86400}, + {Unit::MONTH, 2592000}, + //{Unit::YEAR, 31536000}, + //{Unit::YEARS10, 315360000}, + //{Unit::YEARS30, 946080000}, + //{Unit::CENTURY, 3153600000}, }; int value_; Unit unit_; + Unit default_unit_ = Unit::HOUR; + bool hide_hour_unit_ = false; }; std::pair findCommonUnits(Step, Step); +std::string parse_step(std::string step); +std::vector parse_range(const std::string& range_str); diff --git a/tools/grib_ls.cc b/tools/grib_ls.cc index 44c8dec7f..2f16c022a 100644 --- a/tools/grib_ls.cc +++ b/tools/grib_ls.cc @@ -15,6 +15,7 @@ grib_option grib_options[] = { { "f", 0, 0, 1, 0, 0 }, { "p:", 0, 0, 0, 1, 0 }, { "F:", 0, 0, 1, 1, "%g" }, + { "y", 0, 0, 0, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "j", 0, "JSON output\n", 0, 1, 0 }, diff --git a/tools/grib_options.cc b/tools/grib_options.cc index 6f1af95fe..3e874369f 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -39,6 +39,7 @@ static grib_options_help grib_options_help_list[] = { { "e:", "tolerance", "\n\t\tOnly values whose difference is more than tolerance are considered different.\n" }, { "f", 0, "Force. Force the execution not to fail on error.\n" }, { "F:", "format", "\n\t\tC style format for floating-point values.\n" }, + { "y", "future", "\n\t\tFuture output format.\n" }, { "g", 0, "Copy GTS header. \n" }, { "G", 0, "GRIBEX compatibility mode.\n" }, { "i:", "index", @@ -250,6 +251,10 @@ int grib_process_runtime_options(grib_context* context, int argc, char** argv, g if (grib_options_on("X:")) options->infile_offset = atol(grib_options_get_option("X:")); + if (grib_options_on("y")) { + options->step_output_format = strdup("future"); + } + #ifndef ECCODES_ON_WINDOWS /* Check at compile time to ensure our file offset is at least 64 bits */ COMPILE_TIME_ASSERT(sizeof(options->infile_offset) >= 8); diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 8b6becee7..3fc6eb708 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -9,6 +9,7 @@ */ #include "grib_tools.h" +#include "step_optimizer.h" #include #if HAVE_LIBJASPER @@ -112,7 +113,8 @@ static grib_runtime_options global_options = { 0, /* skip_all */ {{0,},}, /* grib_values tolerance[MAX_KEYS] */ 0, /* infile_offset */ - 0 /* JSON output */ + 0, /* JSON output */ + 0, /* step output format */ }; static grib_handle* grib_handle_new_from_file_x(grib_context* c, FILE* f, int mode, int headers_only, int* err) @@ -405,6 +407,11 @@ static int grib_tool_without_orderby(grib_runtime_options* options) continue; } + if (options->step_output_format) { + size_t step_output_format_size = strlen(options->step_output_format); + grib_set_string(h, "stepOutputFormat", options->step_output_format, &step_output_format_size); + } + grib_tool_new_handle_action(options, h); grib_print_key_values(options, h); @@ -1194,7 +1201,17 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) break; case GRIB_TYPE_LONG: ret = grib_get_long(h, options->print_keys[i].name, &lvalue); - snprintf(value, 32, "%ld", lvalue); + if ( + (strcmp(options->print_keys[i].name, "indicatorOfUnitOfTimeRange") == 0) || + (strcmp(options->print_keys[i].name, "indicatorOfUnitForTimeRange") == 0) + ) + { + snprintf(value, 32, "%s", StepUnitsTable::to_str(lvalue).c_str()); + } + else + { + snprintf(value, 32, "%ld", lvalue); + } break; case GRIB_TYPE_BYTES: ret = grib_get_string(h, options->print_keys[i].name, value, &len); diff --git a/tools/grib_tools.h b/tools/grib_tools.h index ef9ed42c1..9375083d9 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -16,6 +16,7 @@ #endif #include "grib_api_internal.h" +#include #include #ifndef ECCODES_ON_WINDOWS #include @@ -174,6 +175,7 @@ typedef struct grib_runtime_options grib_values tolerance[MAX_KEYS]; off_t infile_offset; int json_output; + char* step_output_format; } grib_runtime_options; extern grib_option grib_options[]; From a9b9bfe17cf8e078e20b12e86b7279b54803ae2a Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 10 Aug 2023 08:42:44 +0000 Subject: [PATCH 010/469] ECC-1620: unit support in grib_set (and more) (buggy) --- definitions/grib2/boot.def | 1 + .../grib2/template.4.forecast_time.def | 5 +- src/grib_accessor_class_g2end_step.cc | 356 ++++++++++++------ src/grib_accessor_class_g2step_range.cc | 125 ++++-- ...grib_accessor_class_step_human_readable.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 212 ++++++++--- src/step_optimizer.cc | 247 ++++++++---- src/step_optimizer.h | 190 +++++++++- tools/grib_ls.cc | 1 + tools/grib_options.cc | 5 + tools/grib_tools.cc | 21 +- tools/grib_tools.h | 2 + 12 files changed, 898 insertions(+), 269 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 32f262bef..cd90c57d1 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -17,6 +17,7 @@ constant million = 1000000 : hidden; constant grib2divider = 1000000; alias extraDimensionPresent=zero; transient angleSubdivisions=grib2divider; # micro degrees +transient stepOutputFormat=""; meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 662310fc6..1f31f48c7 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -10,9 +10,10 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; # Indicator of unit of time range codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 +;alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +;codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +codetable[1] stepUnits 'stepUnits.table' = 255: transient,dump,no_copy; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 285a30085..1388cdeed 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -9,6 +9,9 @@ */ #include "grib_api_internal.h" +#include "step_optimizer.h" +#include + /* This is used by make_class.pl @@ -55,6 +58,10 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int pack_string(grib_accessor*, const char* val, size_t* len); +static int unpack_string(grib_accessor*, char* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -107,12 +114,12 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, /* pack_string */ - 0, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -233,27 +240,36 @@ static int convert_time_range( Assert(lengthOfTimeRange != NULL); if (indicatorOfUnitForTimeRange != stepUnits) { - long u2sf_step_unit; - long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; - if (coded_time_range_sec < 0) { - long u2sf; - int factor = 60; - if (u2s2[indicatorOfUnitForTimeRange] % factor) - return GRIB_DECODING_ERROR; - if (u2s[stepUnits] % factor) - return GRIB_DECODING_ERROR; - u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; - coded_time_range_sec = (*lengthOfTimeRange) * u2sf; - u2sf_step_unit = u2s[stepUnits] / factor; + Step step{(int) *lengthOfTimeRange, indicatorOfUnitForTimeRange}; + if (stepUnits != 255) { + step.setUnit(stepUnits); } else { - u2sf_step_unit = u2s[stepUnits]; - } - if (coded_time_range_sec % u2sf_step_unit != 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); - return GRIB_WRONG_STEP_UNIT; + step.setUnit(indicatorOfUnitForTimeRange); } - *lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; + *lengthOfTimeRange = step.value(); + + //long u2sf_step_unit; + //long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; + //if (coded_time_range_sec < 0) { + // long u2sf; + // int factor = 60; + // if (u2s2[indicatorOfUnitForTimeRange] % factor) + // return GRIB_DECODING_ERROR; + // if (u2s[stepUnits] % factor) + // return GRIB_DECODING_ERROR; + // u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; + // coded_time_range_sec = (*lengthOfTimeRange) * u2sf; + // u2sf_step_unit = u2s[stepUnits] / factor; + //} + //else { + // u2sf_step_unit = u2s[stepUnits]; + //} + //if (coded_time_range_sec % u2sf_step_unit != 0) { + // grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); + // return GRIB_WRONG_STEP_UNIT; + //} + //*lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; } return GRIB_SUCCESS; @@ -391,109 +407,237 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } } +// TODO(maee): Re-implement calendar-based stepRange using std::chrono static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - int err = 0; + Step step{(int) *val, StepUnitsTable::to_long("h")}; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; - long year; - long month; - long day; - long hour; - long minute; - long second; + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; + return GRIB_SUCCESS; - long start_step; - long unit, coded_unit; - long year_of_end_of_interval; - long month_of_end_of_interval; - long day_of_end_of_interval; - long hour_of_end_of_interval; - long minute_of_end_of_interval = 0; - long second_of_end_of_interval = 0; - long coded_time_range, time_range, typeOfTimeIncrement; +// grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; +// grib_handle* h = grib_handle_of_accessor(a); + +// int err = 0; + +// long year; +// long month; +// long day; +// long hour; +// long minute; +// long second; + +// long start_step; +// long unit, coded_unit; +// long year_of_end_of_interval; +// long month_of_end_of_interval; +// long day_of_end_of_interval; +// long hour_of_end_of_interval; +// long minute_of_end_of_interval = 0; +// long second_of_end_of_interval = 0; + +// long coded_time_range, time_range, typeOfTimeIncrement; + +// double dend, dstep; + +// [>point in time <] +// if (self->year == NULL) { +// err = grib_set_long_internal(h, self->start_step, *val); +// return err; +// } + +// if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) +// return err; +// if ((err = grib_get_long_internal(h, self->unit, &unit))) +// return err; +// if ((err = grib_get_long_internal(h, self->year, &year))) +// return err; +// if ((err = grib_get_long_internal(h, self->month, &month))) +// return err; +// if ((err = grib_get_long_internal(h, self->day, &day))) +// return err; +// if ((err = grib_get_long_internal(h, self->hour, &hour))) +// return err; +// if ((err = grib_get_long_internal(h, self->minute, &minute))) +// return err; +// if ((err = grib_get_long_internal(h, self->second, &second))) +// return err; + +// if ((err = grib_get_long_internal(h, self->start_step, &start_step))) +// return err; +// if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) +// return err; + +// time_range = *val - start_step; + +// if (time_range < 0) { +// grib_context_log(h->context, GRIB_LOG_ERROR, +// "endStep < startStep (%ld < %ld)", *val, start_step); +// return GRIB_WRONG_STEP; +// } + +// err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); +// if (err != GRIB_SUCCESS) +// return err; + +// dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; [> in days <] +// dend += dstep; + +// err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, +// &day_of_end_of_interval, &hour_of_end_of_interval, +// &minute_of_end_of_interval, &second_of_end_of_interval); +// if (err != GRIB_SUCCESS) +// return err; + +// if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) +// return err; +// if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) +// return err; + +// if (time_range * u2s[unit] % u2s2[coded_unit]) { +// coded_unit = unit; +// if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) +// return err; +// coded_time_range = time_range; +// } +// else +// coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + +// if (typeOfTimeIncrement != 1) { +// [> 1 means "Successive times processed have same forecast time, start time of forecast is incremented" <] +// [> Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step <] +// if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) +// return err; +// } + +// return GRIB_SUCCESS; +} - double dend, dstep; +static int pack_string(grib_accessor* a, const char* val, size_t* len) { + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - /*point in time */ - if (self->year == NULL) { - err = grib_set_long_internal(h, self->start_step, *val); - return err; - } + Step step = Step(parse_step(std::string(val))); - if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) - return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) - return err; - if ((err = grib_get_long_internal(h, self->year, &year))) - return err; - if ((err = grib_get_long_internal(h, self->month, &month))) - return err; - if ((err = grib_get_long_internal(h, self->day, &day))) - return err; - if ((err = grib_get_long_internal(h, self->hour, &hour))) - return err; - if ((err = grib_get_long_internal(h, self->minute, &minute))) - return err; - if ((err = grib_get_long_internal(h, self->second, &second))) - return err; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) - return err; - if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) - return err; + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; - time_range = *val - start_step; + return GRIB_SUCCESS; +} - if (time_range < 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%ld < %ld)", *val, start_step); - return GRIB_WRONG_STEP; - } - err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); - if (err != GRIB_SUCCESS) - return err; +//static int unpack_string(grib_accessor* a, char* val, size_t* len) { +// throw std::runtime_error("g2end_step: unpack_string() is not implemented"); +// //return GRIB_NOT_IMPLEMENTED; +//} - dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ - dend += dstep; +static int unpack_string(grib_accessor* a, char* val, size_t* len) { + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, - &day_of_end_of_interval, &hour_of_end_of_interval, - &minute_of_end_of_interval, &second_of_end_of_interval); - if (err != GRIB_SUCCESS) - return err; + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; - if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) - return err; + long value; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); + if (ret) + return ret; + + Step step{(int) value, unit}; + + sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + + return GRIB_SUCCESS; +} + +static int pack_double(grib_accessor* a, const double* val, size_t* len) { + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - if (time_range * u2s[unit] % u2s2[coded_unit]) { - coded_unit = unit; - if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) - return err; - coded_time_range = time_range; + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; + + + long stepUnits; + ret = grib_get_long_internal(h, "stepUnits", &stepUnits); + if (ret) + return ret; + + Step step; + if (stepUnits != 255) { + step = Step((int) *val, stepUnits); } - else - coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; - - if (typeOfTimeIncrement != 1) { - /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ - /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ - if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) - return err; + else { + step = Step((int) *val, unit); + } + + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; + + return ret; +} + +static int unpack_double(grib_accessor* a, double* val, size_t* len) { + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); + if (ret) + return ret; + + long stepUnits; + ret = grib_get_long_internal(h, "stepUnits", &stepUnits); + if (ret) + return ret; + + if (stepUnits != 255) { + Step step = Step(value, unit); + *val = step.getDoubleValue(stepUnits); + } + else { + Step step = Step(value, unit); + *val = step.value(); } return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 5228163fe..8c8a35b23 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -14,6 +14,7 @@ #include "grib_api_internal.h" #include "step_optimizer.h" +#include /* This is used by make_class.pl @@ -140,22 +141,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t size = 0; //long start = 0, theEnd = 0; - //0 m Minute - //1 h Hour - //2 D Day - //3 M Month - //4 Y Year - //5 10Y Decade - //6 30Y Normal (30 years) - //7 C Century - //10 3h 3 hours - //11 6h 6 hours - //12 12h 12 hours - //13 15m 15 minutes - //14 30m 30 minutes - //254 s Second - - //ret = grib_get_long_internal(h, self->startStep, &start); if (ret) return ret; @@ -169,14 +154,29 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; - Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; - step_a.optimizeUnit(); + size_t stepUnitsSize = 128; + char stepUnits[stepUnitsSize]; + ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize); + if (ret) + return ret; + //printf("stepUnits=%s\n", stepUnits); + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize); if (ret) return ret; + //printf("stepOutputFormat=%s\n", stepOutputFormat); + + Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; + step_a.optimizeUnit(); + + if (strcmp(stepOutputFormat, "future") != 0) { + step_a.hide_hour_unit(); + } if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_str()); + snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_as_str().c_str()); } else { long indicatorOfUnitForTimeRange; @@ -193,11 +193,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) step_b.optimizeUnit(); auto [a, b] = findCommonUnits(step_a, step_b); + if (strcmp(stepOutputFormat, "future") != 0) { + step_b.hide_hour_unit(); + a.hide_hour_unit(); + b.hide_hour_unit(); + } if (a.value() == 0) { - snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_str()); + snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_as_str().c_str()); } else { - snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), a.unit_str()); + snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), step_b.unit_as_str().c_str()); } } @@ -213,29 +218,83 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } + static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); - - long start = 0, theEnd = -1; int ret = 0; - char *p = NULL, *q = NULL; - start = strtol(val, &p, 10); - theEnd = start; + std::vector steps = parse_range(val); + if (steps.size() == 0) { + return GRIB_INVALID_ARGUMENT; + } + //ret = grib_set_long_internal(h, self->startStep, steps[0].value()); + //if (ret) + // return ret; - if (*p != 0) - theEnd = strtol(++p, &q, 10); - ret = grib_set_long_internal(h, self->startStep, start); - if (ret) - return ret; + //printf("val: %s\n", val); - if (self->endStep != NULL) { - ret = grib_set_long_internal(h, self->endStep, theEnd); + if (steps.size() == 1) { + //printf("unit_str 1: %s\n", steps[0].unit_as_str().c_str()); + steps[0].optimizeUnit(); + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit_as_long()); + if (ret) + return ret; + + ret = grib_set_long_internal(h, "forecastTime", steps[0].value()); if (ret) return ret; } + else if (steps.size() == 2) { + //ret = grib_set_long_internal(h, self->endStep, steps[1].value()); + //if (ret) + // return ret; + //printf("unit_str 2: %s\n", steps[1].unit_as_str().c_str()); + + steps[0].optimizeUnit(); + steps[1].optimizeUnit(); + auto [a, b] = findCommonUnits(steps[0], steps[1]); + + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", a.unit_as_long()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "forecastTime", a.value()); + if (ret) + return ret; + + + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", b.unit_as_long()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "lengthOfTimeRange", b.value()); + if (ret) + return ret; + } + else { + std::string msg = std::string("Invalid range: ") + val; + throw std::runtime_error(msg); + } + + + //long start = 0, theEnd = -1; + //int ret = 0; + //char *p = NULL, *q = NULL; + + //start = strtol(val, &p, 10); + //theEnd = start; + + //if (*p != 0) + // theEnd = strtol(++p, &q, 10); + //ret = grib_set_long_internal(h, self->startStep, start); + //if (ret) + // return ret; + + //if (self->endStep != NULL) { + // ret = grib_set_long_internal(h, self->endStep, theEnd); + // if (ret) + // return ret; + //} return 0; } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index 24c7ac823..d9fe32d25 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -137,7 +137,7 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) auto stepOptimizer = Step(step, indicator); stepOptimizer.optimizeUnit(); - snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_str()); + snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); *length = strlen(result); return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index acf570c19..99d493bd5 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -9,6 +9,8 @@ */ #include "grib_api_internal.h" +#include "step_optimizer.h" +#include /* This is used by make_class.pl @@ -39,6 +41,10 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int pack_string(grib_accessor*, const char* val, size_t* len); +static int unpack_string(grib_accessor*, char* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -78,12 +84,12 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, /* pack_string */ - 0, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -214,52 +220,172 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int err = 0; - long codedStep, codedUnits, stepUnits; - long oldStep = 0; - long indicatorOfUnitForTimeRange, lengthOfTimeRange; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; - if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) - return err; - if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) - return err; + Step step{(int) *val, StepUnitsTable::to_long("h")}; + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; - unpack_long(a, &oldStep, len); + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + return GRIB_SUCCESS; - if (stepUnits != codedUnits) { - codedStep = *val * u2s[stepUnits]; - if (codedStep % u2s2[codedUnits] != 0) { - codedUnits = stepUnits; - err = grib_set_long_internal(h, self->codedUnits, codedUnits); - if (err != GRIB_SUCCESS) - return err; - codedStep = *val; - } - else { - codedStep = codedStep / u2s2[codedUnits]; - } + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int err = 0; + //long codedStep, codedUnits, stepUnits; + //long oldStep = 0; + //long indicatorOfUnitForTimeRange, lengthOfTimeRange; + + //if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + // return err; + //if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + // return err; + + //unpack_long(a, &oldStep, len); + + //if (stepUnits != codedUnits) { + // codedStep = *val * u2s[stepUnits]; + // if (codedStep % u2s2[codedUnits] != 0) { + // codedUnits = stepUnits; + // err = grib_set_long_internal(h, self->codedUnits, codedUnits); + // if (err != GRIB_SUCCESS) + // return err; + // codedStep = *val; + // } + // else { + // codedStep = codedStep / u2s2[codedUnits]; + // } + //} + //else { + // codedStep = *val; + //} + + //if (self->indicatorOfUnitForTimeRange) { + // if ((err = grib_get_long_internal(h, + // self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) + // return err; + // if ((err = grib_get_long_internal(h, + // self->lengthOfTimeRange, &lengthOfTimeRange))) + // return err; + // if (codedUnits == indicatorOfUnitForTimeRange) + // lengthOfTimeRange -= codedStep - oldStep; + // else + // lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; + // lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; + // err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); + // if (err != GRIB_SUCCESS) + // return err; + //} + + //return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); +} + +static int pack_string(grib_accessor* a, const char* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + Step step = Step(parse_step(std::string(val))); + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; + + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + + return GRIB_SUCCESS; +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "forecastTime", &value); + if (ret) + return ret; + + Step step{(int) value, unit}; + sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + + return GRIB_SUCCESS; +} + + +static int pack_double(grib_accessor* a, const double* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + + long stepUnits; + ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); + if (ret) + return ret; + + Step step; + if (stepUnits != 255) { + step = Step((int) *val, stepUnits); } else { - codedStep = *val; + step = Step((int) *val, unit); } - if (self->indicatorOfUnitForTimeRange) { - if ((err = grib_get_long_internal(h, - self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) - return err; - if ((err = grib_get_long_internal(h, - self->lengthOfTimeRange, &lengthOfTimeRange))) - return err; - if (codedUnits == indicatorOfUnitForTimeRange) - lengthOfTimeRange -= codedStep - oldStep; - else - lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; - lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; - err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); - if (err != GRIB_SUCCESS) - return err; + ret = grib_set_long_internal(h, "forecastTime", step.value()); + if (ret) + return ret; + ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + if (ret) + return ret; + + return ret; +} + + +static int unpack_double(grib_accessor* a, double* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long unit; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + if (ret) + return ret; + + long value; + ret = grib_get_long_internal(h, "forecastTime", &value); + if (ret) + return ret; + + long stepUnits; + ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); + if (ret) + return ret; + + if (stepUnits != 255) { + Step step = Step(value, unit); + *val = step.getDoubleValue(stepUnits); + } + else { + Step step = Step(value, unit); + *val = step.value(); } - return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); + return GRIB_SUCCESS; } diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index 5ea2c6ced..e65611712 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -6,52 +6,65 @@ #include "step_optimizer.h" -char* Step::unit_str() const { - static char seconds[] = "s"; - static char minutes[] = "m"; - static char hours[] = "h"; - static char days[] = "d"; - switch (unit_) { - case Unit::SECOND: - return seconds; - case Unit::MINUTE: - return minutes; - case Unit::HOUR: - return hours; - case Unit::DAY: - return days; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); - throw std::runtime_error(msg); + +std::string parse_step(std::string step) { + if (step.find_first_of("smhdMYC") == std::string::npos) { + step += "h"; + } + return step; +} + + +std::vector parse_range(const std::string& range_str) { + std::vector steps; + std::string::size_type pos = 0; + std::string::size_type prev = 0; + while ((pos = range_str.find("-", prev)) != std::string::npos) { + std::string token = parse_step(range_str.substr(prev, pos - prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); + } + prev = pos + 1; + } + std::string token = parse_step(range_str.substr(prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); } + return steps; } -Step::Step(int value, long indicatorOfUnitOfTimeRange) { + +std::string Step::unit_as_str() const { + if ((unit_ == Unit::HOUR) && hide_hour_unit_) + return std::string(""); + else + return StepUnitsTable::to_str(unit_); +} + +long Step::unit_as_long() const { + return unit_; +} + +Step::Step(int value, long unit) { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(value >= 0 && value <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); } - Unit u = Unit::UNKNOWN; - switch (indicatorOfUnitOfTimeRange) { - case 0: - u = Unit::MINUTE; - break; - case 1: - u = Unit::HOUR; - break; - case 2: - u = Unit::DAY; - break; - case 254: - u = Unit::SECOND; - break; - default: - std::string msg = "Unknown indicatorOfUnitOfTimeRange: " + std::to_string(indicatorOfUnitOfTimeRange); - throw std::runtime_error(msg); - } value_ = value; - unit_ = u; + unit_ = StepUnitsTable::to_unit(unit); +} + +Step::Step(const std::string& str) { + size_t pos = str.find_first_of("smhdMYC"); + if (pos == std::string::npos) { + throw std::runtime_error("Unknown unit."); + } + std::string v_str = str.substr(0, pos); + std::string u_str = str.substr(pos); + int v = std::stoi(v_str); + value_ = v; + unit_ = StepUnitsTable::to_unit(u_str); } Step::Step(int value, Unit u) { @@ -67,22 +80,51 @@ Step& Step::optimizeUnit() { if (value_ == 0) { return *this; } - std::map::iterator it = unitMap_.find(unit_); - ++it; - for (; it != unitMap_.end(); ++it){ - Unit u = it->first; - int multiplier = it->second; - if (value_ % multiplier == 0) { - value_ /= multiplier; - unit_ = u; - } - else { + + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + StepUnitsTable::to_str(unit_); + throw std::runtime_error(msg); + } + + for (auto it = unitMap_.end(); it != unitMap_.begin();) { + --it; + int multiplier = it->second; + if (duration.count() % multiplier == 0) { + value_ = duration.count() / multiplier; + unit_ = it->first; + return *this; } } return *this; } +Step& Step::setUnit(std::string new_unit) { + setUnit(StepUnitsTable::to_unit(new_unit)); + return *this; +} + +Step& Step::setUnit(long new_unit) { + setUnit(StepUnitsTable::to_unit(new_unit)); + return *this; +} + Step& Step::setUnit(Unit new_unit) { if (value_ == 0) { unit_ = new_unit; @@ -91,30 +133,101 @@ Step& Step::setUnit(Unit new_unit) { if (unit_ == new_unit) { return *this; } - std::map::iterator it = unitMap_.find(unit_); - if (new_unit > unit_) { - ++it; - for (; it != unitMap_.find(new_unit); ++it) { - int multiplier = it->second; - if (value_ % multiplier == 0) { - throw std::exception(); - } - value_ /= multiplier; - unit_ = it->first; - } + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); + break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); + throw std::runtime_error(msg); } - else { - int multiplier = it->second; - for (; it != unitMap_.find(new_unit);) { - value_ *= multiplier; - --it; - unit_ = it->first; - multiplier = it->second; - } + + switch (new_unit) { + case Unit::SECOND: + value_ = duration.count(); + break; + case Unit::MINUTE: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::HOUR: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::DAY: + value_ = std::chrono::duration_cast(duration).count(); + break; + case Unit::MONTH: + value_ = std::chrono::duration_cast(duration).count(); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); + throw std::runtime_error(msg); } + unit_ = new_unit; + return *this; } +double Step::getDoubleValue(long new_unit) const { + Seconds duration(0); + switch (unit_) { + case Unit::SECOND: + duration = Seconds(value_); + break; + case Unit::MINUTE: + duration = Minutes(value_); + break; + case Unit::HOUR: + duration = Hours(value_); + break; + case Unit::DAY: + duration = Days(value_); + break; + case Unit::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); + throw std::runtime_error(msg); + } + + double value; + switch (new_unit) { + case Unit::SECOND: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::MINUTE: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::HOUR: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::DAY: + value = std::chrono::duration_cast(duration).count(); + break; + case Unit::MONTH: + value = std::chrono::duration_cast(duration).count(); + break; + default: + std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); + throw std::runtime_error(msg); + } + + return value; +} + bool Step::operator==(const Step& other) const { if (value_ == other.value_ && unit_ == other.unit_) { return true; @@ -131,7 +244,7 @@ Step operator+(const Step step1, const Step step2) { std::pair findCommonUnits(Step startStep, Step endStep) { if (startStep.value_ == 0 || endStep.value_ == 0) { if (startStep.value_ == 0 && endStep.value_ == 0) { - Unit unit = std::max(startStep.unit_, endStep.unit_); + Unit unit = StepUnitsTable::unit_duration(startStep.unit_) > StepUnitsTable::unit_duration(endStep.unit_) ? startStep.unit_ : endStep.unit_; startStep.setUnit(unit); endStep.setUnit(unit); } diff --git a/src/step_optimizer.h b/src/step_optimizer.h index 913fc30de..9b88fcd70 100644 --- a/src/step_optimizer.h +++ b/src/step_optimizer.h @@ -5,40 +5,200 @@ #include #include #include +#include +#include +#include + -enum class Unit { - SECOND, - MINUTE, - HOUR, - DAY, - UNKNOWN +enum Unit : long { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, }; +using Minutes = std::chrono::duration>; +using Hours = std::chrono::duration>; +using Days = std::chrono::duration>; +using Months = std::chrono::duration>; +using Years = std::chrono::duration>; +using Years10 = std::chrono::duration>; +using Years30 = std::chrono::duration>; +using Centuries = std::chrono::duration>; +using Hours3 = std::chrono::duration>; +using Hours6 = std::chrono::duration>; +using Hours12 = std::chrono::duration>; +using Seconds = std::chrono::duration>; +using Minutes15 = std::chrono::duration>; +using Minutes30 = std::chrono::duration>; +using Missing = std::chrono::duration>; + +using MinutesDouble = std::chrono::duration>; +using HoursDouble = std::chrono::duration>; +using DaysDouble = std::chrono::duration>; +using MonthsDouble = std::chrono::duration>; +using YearsDouble = std::chrono::duration>; +using Years10Double = std::chrono::duration>; +using Years30Double = std::chrono::duration>; +using CenturiesDouble = std::chrono::duration>; +using Hours3Double = std::chrono::duration>; +using Hours6Double = std::chrono::duration>; +using Hours12Double = std::chrono::duration>; +using SecondsDouble = std::chrono::duration>; +using Minutes15Double = std::chrono::duration>; +using Minutes30Double = std::chrono::duration>; +using MissingDouble = std::chrono::duration>; + +class StepUnitsTable{ +private: + StepUnitsTable() { + } +public: + static Unit to_unit(const std::string& str) { + static std::map map = { + {"m", Unit::MINUTE}, + {"h", Unit::HOUR}, + {"d", Unit::DAY}, + {"M", Unit::MONTH}, + {"Y", Unit::YEAR}, + {"10Y", Unit::YEARS10}, + {"30Y", Unit::YEARS30}, + {"C", Unit::CENTURY}, + {"3h", Unit::HOURS3}, + {"6h", Unit::HOURS6}, + {"12h", Unit::HOURS12}, + {"s", Unit::SECOND}, + {"15m", Unit::MINUTES15}, + {"30m", Unit::MINUTES30}, + {"255", Unit::MISSING}, + }; + return map[str]; + } + + static long to_long(const std::string& str) { + return to_unit(str); + } + + static Unit to_unit(long code) { + static std::map map = { + {Unit::MINUTE, Unit::MINUTE}, + {Unit::HOUR, Unit::HOUR}, + {Unit::DAY, Unit::DAY}, + {Unit::MONTH, Unit::MONTH}, + {Unit::YEAR, Unit::YEAR}, + {Unit::YEARS10, Unit::YEARS10}, + {Unit::YEARS30, Unit::YEARS30}, + {Unit::CENTURY, Unit::CENTURY}, + {Unit::HOURS3, Unit::HOURS3}, + {Unit::HOURS6, Unit::HOURS6}, + {Unit::HOURS12, Unit::HOURS12}, + {Unit::SECOND, Unit::SECOND}, + {Unit::MINUTES15, Unit::MINUTES15}, + {Unit::MINUTES30, Unit::MINUTES30}, + {Unit::MISSING, Unit::MISSING}, + }; + return map[code]; + } + + static std::string to_str(long code) { + static std::map map = { + {Unit::MINUTE, "m"}, + {Unit::HOUR, "h"}, + {Unit::DAY, "d"}, + {Unit::MONTH, "M"}, + {Unit::YEAR, "Y"}, + {Unit::YEARS10, "10Y"}, + {Unit::YEARS30, "30Y"}, + {Unit::CENTURY, "C"}, + {Unit::HOURS3, "3h"}, + {Unit::HOURS6, "6h"}, + {Unit::HOURS12, "12h"}, + {Unit::SECOND, "s"}, + {Unit::MINUTES15, "15m"}, + {Unit::MINUTES30, "30m"}, + {Unit::MISSING, "255"}, + }; + return map[code]; + } + + static double unit_duration(long code) { + static std::map map = { + {Unit::MINUTE, Minutes::period::num / Minutes::period::den}, + {Unit::HOUR, Hours::period::num / Hours::period::den}, + {Unit::DAY, Days::period::num / Days::period::den}, + {Unit::MONTH, Months::period::num / Months::period::den}, + {Unit::YEAR, Years::period::num / Years::period::den}, + {Unit::YEARS10, Years10::period::num / Years10::period::den}, + {Unit::YEARS30, Years30::period::num / Years30::period::den}, + {Unit::CENTURY, Centuries::period::num / Centuries::period::den}, + {Unit::HOURS3, Hours3::period::num / Hours3::period::den}, + {Unit::HOURS6, Hours6::period::num / Hours6::period::den}, + {Unit::HOURS12, Hours12::period::num / Hours12::period::den}, + {Unit::SECOND, Seconds::period::num / Seconds::period::den}, + {Unit::MINUTES15, Minutes15::period::num / Minutes15::period::den}, + {Unit::MINUTES30, Minutes30::period::num / Minutes30::period::den}, + }; + return map[code]; + } +}; + + class Step { public: Step() : value_(0), unit_(Unit::SECOND) {} - Step(int value, long indicatorOfUnitOfTimeRange); - Step(int value, Unit unit); + Step(int value, long unit); + explicit Step(const std::string& str); int value() const { return value_; } - Unit unit() const { return unit_; } - char* unit_str() const; + std::string unit_as_str() const; + long unit_as_long() const; + void hide_hour_unit() { hide_hour_unit_ = true; } Step& optimizeUnit(); - Step& setUnit(Unit new_unit); + Step& setUnit(std::string new_unit); + Step& setUnit(long new_unit); + double getDoubleValue(long unit) const; bool operator==(const Step& other) const; friend std::pair findCommonUnits(Step startStep, Step endStep); friend Step operator+(const Step step1, const Step step2); private: - std::map unitMap_ = { - {Unit::SECOND, 0}, + long unit() const { return unit_; } + Step& setUnit(Unit new_unit); + Step(int value, Unit unit); + std::vector> unitMap_ = { + {Unit::SECOND, 1}, {Unit::MINUTE, 60}, - {Unit::HOUR, 60}, - {Unit::DAY, 24} + //{Unit::MINUTES15, 900}, + //{Unit::MINUTES30, 1800}, + {Unit::HOUR, 3600}, + //{Unit::HOURS3, 10800}, + //{Unit::HOURS6, 21600}, + //{Unit::HOURS12, 43200}, + {Unit::DAY, 86400}, + {Unit::MONTH, 2592000}, + //{Unit::YEAR, 31536000}, + //{Unit::YEARS10, 315360000}, + //{Unit::YEARS30, 946080000}, + //{Unit::CENTURY, 3153600000}, }; int value_; Unit unit_; + Unit default_unit_ = Unit::HOUR; + bool hide_hour_unit_ = false; }; std::pair findCommonUnits(Step, Step); +std::string parse_step(std::string step); +std::vector parse_range(const std::string& range_str); diff --git a/tools/grib_ls.cc b/tools/grib_ls.cc index 44c8dec7f..2f16c022a 100644 --- a/tools/grib_ls.cc +++ b/tools/grib_ls.cc @@ -15,6 +15,7 @@ grib_option grib_options[] = { { "f", 0, 0, 1, 0, 0 }, { "p:", 0, 0, 0, 1, 0 }, { "F:", 0, 0, 1, 1, "%g" }, + { "y", 0, 0, 0, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "j", 0, "JSON output\n", 0, 1, 0 }, diff --git a/tools/grib_options.cc b/tools/grib_options.cc index 6f1af95fe..3e874369f 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -39,6 +39,7 @@ static grib_options_help grib_options_help_list[] = { { "e:", "tolerance", "\n\t\tOnly values whose difference is more than tolerance are considered different.\n" }, { "f", 0, "Force. Force the execution not to fail on error.\n" }, { "F:", "format", "\n\t\tC style format for floating-point values.\n" }, + { "y", "future", "\n\t\tFuture output format.\n" }, { "g", 0, "Copy GTS header. \n" }, { "G", 0, "GRIBEX compatibility mode.\n" }, { "i:", "index", @@ -250,6 +251,10 @@ int grib_process_runtime_options(grib_context* context, int argc, char** argv, g if (grib_options_on("X:")) options->infile_offset = atol(grib_options_get_option("X:")); + if (grib_options_on("y")) { + options->step_output_format = strdup("future"); + } + #ifndef ECCODES_ON_WINDOWS /* Check at compile time to ensure our file offset is at least 64 bits */ COMPILE_TIME_ASSERT(sizeof(options->infile_offset) >= 8); diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 8b6becee7..3fc6eb708 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -9,6 +9,7 @@ */ #include "grib_tools.h" +#include "step_optimizer.h" #include #if HAVE_LIBJASPER @@ -112,7 +113,8 @@ static grib_runtime_options global_options = { 0, /* skip_all */ {{0,},}, /* grib_values tolerance[MAX_KEYS] */ 0, /* infile_offset */ - 0 /* JSON output */ + 0, /* JSON output */ + 0, /* step output format */ }; static grib_handle* grib_handle_new_from_file_x(grib_context* c, FILE* f, int mode, int headers_only, int* err) @@ -405,6 +407,11 @@ static int grib_tool_without_orderby(grib_runtime_options* options) continue; } + if (options->step_output_format) { + size_t step_output_format_size = strlen(options->step_output_format); + grib_set_string(h, "stepOutputFormat", options->step_output_format, &step_output_format_size); + } + grib_tool_new_handle_action(options, h); grib_print_key_values(options, h); @@ -1194,7 +1201,17 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) break; case GRIB_TYPE_LONG: ret = grib_get_long(h, options->print_keys[i].name, &lvalue); - snprintf(value, 32, "%ld", lvalue); + if ( + (strcmp(options->print_keys[i].name, "indicatorOfUnitOfTimeRange") == 0) || + (strcmp(options->print_keys[i].name, "indicatorOfUnitForTimeRange") == 0) + ) + { + snprintf(value, 32, "%s", StepUnitsTable::to_str(lvalue).c_str()); + } + else + { + snprintf(value, 32, "%ld", lvalue); + } break; case GRIB_TYPE_BYTES: ret = grib_get_string(h, options->print_keys[i].name, value, &len); diff --git a/tools/grib_tools.h b/tools/grib_tools.h index ef9ed42c1..9375083d9 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -16,6 +16,7 @@ #endif #include "grib_api_internal.h" +#include #include #ifndef ECCODES_ON_WINDOWS #include @@ -174,6 +175,7 @@ typedef struct grib_runtime_options grib_values tolerance[MAX_KEYS]; off_t infile_offset; int json_output; + char* step_output_format; } grib_runtime_options; extern grib_option grib_options[]; From 5ec09da607bf5cdd273fd84c184a303eea13cd1a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 10 Aug 2023 09:17:02 +0000 Subject: [PATCH 011/469] Compiler warnings: unused variables --- src/grib_accessor_class_g2end_step.cc | 6 +++--- src/grib_accessor_class_g2step_range.cc | 2 +- src/grib_accessor_class_step_human_readable.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 1388cdeed..637e95689 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -410,7 +410,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) // TODO(maee): Re-implement calendar-based stepRange using std::chrono static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; @@ -578,7 +578,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { } static int pack_double(grib_accessor* a, const double* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; @@ -612,7 +612,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { } static int unpack_double(grib_accessor* a, double* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 8c8a35b23..a279d90c6 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -221,7 +221,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + //grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index d9fe32d25..c54e793c8 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -122,7 +122,7 @@ static int get_native_type(grib_accessor* a) static int get_step_human_readable(grib_handle* h, char* result, size_t* length) { int err = 0; - size_t slen = 2; + //size_t slen = 2; long step; /* Change units to seconds (highest resolution) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 99d493bd5..c3523afae 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -219,7 +219,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; @@ -285,7 +285,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; @@ -302,7 +302,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { } static int unpack_string(grib_accessor* a, char* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; From 8ce5263b2e41403516d408651bcfe8288946938d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 11 Aug 2023 13:42:09 +0000 Subject: [PATCH 012/469] ECC-1620: Make almost all tests work --- definitions/grib2/boot.def | 3 +- .../grib2/template.4.forecast_time.def | 5 +- src/grib_accessor_class_g2end_step.cc | 249 +++++++++--------- src/grib_accessor_class_g2step_range.cc | 238 +++++++++-------- ...grib_accessor_class_step_human_readable.cc | 50 +++- src/grib_accessor_class_step_in_units.cc | 20 +- src/step_optimizer.cc | 38 ++- src/step_optimizer.h | 17 +- tools/grib_dump.cc | 1 + tools/grib_set.cc | 1 + tools/grib_tools.cc | 21 +- 11 files changed, 359 insertions(+), 284 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index cd90c57d1..0a16b2893 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -17,7 +17,8 @@ constant million = 1000000 : hidden; constant grib2divider = 1000000; alias extraDimensionPresent=zero; transient angleSubdivisions=grib2divider; # micro degrees -transient stepOutputFormat=""; +transient stepOutputFormat="default" : hidden; +transient forceStepUnits = 0 : hidden; meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 1f31f48c7..662310fc6 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -10,10 +10,9 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; # Indicator of unit of time range codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; -;alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 +alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -;codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -codetable[1] stepUnits 'stepUnits.table' = 255: transient,dump,no_copy; +codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 1388cdeed..e79a87562 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -114,12 +114,12 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, //&pack_double, /* pack_double */ 0, /* pack_float */ - &unpack_double, /* unpack_double */ + 0, //&unpack_double, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ - &unpack_string, /* unpack_string */ + 0, //&pack_string, /* pack_string */ + 0, //&unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -414,121 +414,128 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step step{(int) *val, StepUnitsTable::to_long("h")}; - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); - if (ret) + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) return ret; - ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); - if (ret) - return ret; - return GRIB_SUCCESS; + if (strcmp(stepOutputFormat, "future") == 0) { + Step step{(int) *val, StepUnitsTable::to_long("h")}; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + if (ret) + return ret; + + ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); + if (ret) + return ret; + return GRIB_SUCCESS; + } + else { + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + + int err = 0; + + long year; + long month; + long day; + long hour; + long minute; + long second; + + long start_step; + long unit, coded_unit; + long year_of_end_of_interval; + long month_of_end_of_interval; + long day_of_end_of_interval; + long hour_of_end_of_interval; + long minute_of_end_of_interval = 0; + long second_of_end_of_interval = 0; + + long coded_time_range, time_range, typeOfTimeIncrement; + + double dend, dstep; + + /*point in time */ + if (self->year == NULL) { + err = grib_set_long_internal(h, self->start_step, *val); + return err; + } + + if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) + return err; + if ((err = grib_get_long_internal(h, self->unit, &unit))) + return err; + if ((err = grib_get_long_internal(h, self->year, &year))) + return err; + if ((err = grib_get_long_internal(h, self->month, &month))) + return err; + if ((err = grib_get_long_internal(h, self->day, &day))) + return err; + if ((err = grib_get_long_internal(h, self->hour, &hour))) + return err; + if ((err = grib_get_long_internal(h, self->minute, &minute))) + return err; + if ((err = grib_get_long_internal(h, self->second, &second))) + return err; + + if ((err = grib_get_long_internal(h, self->start_step, &start_step))) + return err; + if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) + return err; + + time_range = *val - start_step; + + if (time_range < 0) { + grib_context_log(h->context, GRIB_LOG_ERROR, + "endStep < startStep (%ld < %ld)", *val, start_step); + return GRIB_WRONG_STEP; + } + err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); + if (err != GRIB_SUCCESS) + return err; + + dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ + dend += dstep; + + err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, + &day_of_end_of_interval, &hour_of_end_of_interval, + &minute_of_end_of_interval, &second_of_end_of_interval); + if (err != GRIB_SUCCESS) + return err; + + if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) + return err; + + if (time_range * u2s[unit] % u2s2[coded_unit]) { + coded_unit = unit; + if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) + return err; + coded_time_range = time_range; + } + else + coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + + if (typeOfTimeIncrement != 1) { + /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ + /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ + if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) + return err; + } -// grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; -// grib_handle* h = grib_handle_of_accessor(a); - -// int err = 0; - -// long year; -// long month; -// long day; -// long hour; -// long minute; -// long second; - -// long start_step; -// long unit, coded_unit; -// long year_of_end_of_interval; -// long month_of_end_of_interval; -// long day_of_end_of_interval; -// long hour_of_end_of_interval; -// long minute_of_end_of_interval = 0; -// long second_of_end_of_interval = 0; - -// long coded_time_range, time_range, typeOfTimeIncrement; - -// double dend, dstep; - -// [>point in time <] -// if (self->year == NULL) { -// err = grib_set_long_internal(h, self->start_step, *val); -// return err; -// } - -// if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) -// return err; -// if ((err = grib_get_long_internal(h, self->unit, &unit))) -// return err; -// if ((err = grib_get_long_internal(h, self->year, &year))) -// return err; -// if ((err = grib_get_long_internal(h, self->month, &month))) -// return err; -// if ((err = grib_get_long_internal(h, self->day, &day))) -// return err; -// if ((err = grib_get_long_internal(h, self->hour, &hour))) -// return err; -// if ((err = grib_get_long_internal(h, self->minute, &minute))) -// return err; -// if ((err = grib_get_long_internal(h, self->second, &second))) -// return err; - -// if ((err = grib_get_long_internal(h, self->start_step, &start_step))) -// return err; -// if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) -// return err; - -// time_range = *val - start_step; - -// if (time_range < 0) { -// grib_context_log(h->context, GRIB_LOG_ERROR, -// "endStep < startStep (%ld < %ld)", *val, start_step); -// return GRIB_WRONG_STEP; -// } - -// err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); -// if (err != GRIB_SUCCESS) -// return err; - -// dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; [> in days <] -// dend += dstep; - -// err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, -// &day_of_end_of_interval, &hour_of_end_of_interval, -// &minute_of_end_of_interval, &second_of_end_of_interval); -// if (err != GRIB_SUCCESS) -// return err; - -// if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) -// return err; -// if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) -// return err; -// if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) -// return err; -// if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) -// return err; -// if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) -// return err; -// if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) -// return err; - -// if (time_range * u2s[unit] % u2s2[coded_unit]) { -// coded_unit = unit; -// if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) -// return err; -// coded_time_range = time_range; -// } -// else -// coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; - -// if (typeOfTimeIncrement != 1) { -// [> 1 means "Successive times processed have same forecast time, start time of forecast is incremented" <] -// [> Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step <] -// if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) -// return err; -// } - -// return GRIB_SUCCESS; + return GRIB_SUCCESS; + } } static int pack_string(grib_accessor* a, const char* val, size_t* len) { @@ -549,25 +556,17 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { return GRIB_SUCCESS; } - -//static int unpack_string(grib_accessor* a, char* val, size_t* len) { -// throw std::runtime_error("g2end_step: unpack_string() is not implemented"); -// //return GRIB_NOT_IMPLEMENTED; -//} - static int unpack_string(grib_accessor* a, char* val, size_t* len) { //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); - if (ret) + if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit))) return ret; long value; - ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); - if (ret) + if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value))) return ret; Step step{(int) value, unit}; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 8c8a35b23..3fe2efcb7 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -142,67 +142,105 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) //long start = 0, theEnd = 0; //ret = grib_get_long_internal(h, self->startStep, &start); - if (ret) - return ret; - long indicatorOfUnitOfTimeRange; - long forecastTime; - ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange); - if (ret) - return ret; - ret = grib_get_long_internal(h, "forecastTime", &forecastTime); - if (ret) - return ret; - - - size_t stepUnitsSize = 128; - char stepUnits[stepUnitsSize]; - ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize); - if (ret) - return ret; - //printf("stepUnits=%s\n", stepUnits); + // + // + // + // + //if (ret) + //return ret; size_t stepOutputFormatSize = 128; char stepOutputFormat[stepOutputFormatSize]; - ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize); - if (ret) + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) return ret; - //printf("stepOutputFormat=%s\n", stepOutputFormat); - Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; - step_a.optimizeUnit(); + if (strcmp(stepOutputFormat, "future") == 0) { + long indicatorOfUnitOfTimeRange; + long forecastTime; + ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange); + if (ret) + return ret; + ret = grib_get_long_internal(h, "forecastTime", &forecastTime); + if (ret) + return ret; - if (strcmp(stepOutputFormat, "future") != 0) { - step_a.hide_hour_unit(); - } - if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_as_str().c_str()); - } - else { - long indicatorOfUnitForTimeRange; - long lengthOfTimeRange; - ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &indicatorOfUnitForTimeRange); + size_t stepUnitsSize = 128; + char stepUnits[stepUnitsSize]; + ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize); if (ret) return ret; - ret = grib_get_long_internal(h, "lengthOfTimeRange", &lengthOfTimeRange); - if (ret) + //printf("stepUnits=%s\n", stepUnits); + + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize) != GRIB_SUCCESS)) return ret; + //printf("stepOutputFormat=%s\n", stepOutputFormat); - Step length{(int) lengthOfTimeRange, indicatorOfUnitForTimeRange}; - Step step_b = step_a + length; - step_b.optimizeUnit(); - auto [a, b] = findCommonUnits(step_a, step_b); + Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; + step_a.optimizeUnit(); if (strcmp(stepOutputFormat, "future") != 0) { - step_b.hide_hour_unit(); - a.hide_hour_unit(); - b.hide_hour_unit(); + step_a.hide_hour_unit(); } - if (a.value() == 0) { - snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_as_str().c_str()); + + if (self->endStep == NULL) { + snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_as_str().c_str()); } else { - snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), step_b.unit_as_str().c_str()); + long indicatorOfUnitForTimeRange; + long lengthOfTimeRange; + ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &indicatorOfUnitForTimeRange); + if (ret) + return ret; + ret = grib_get_long_internal(h, "lengthOfTimeRange", &lengthOfTimeRange); + if (ret) + return ret; + + Step length{(int) lengthOfTimeRange, indicatorOfUnitForTimeRange}; + Step step_b = step_a + length; + step_b.optimizeUnit(); + auto [a, b] = findCommonUnits(step_a, step_b); + + if (strcmp(stepOutputFormat, "future") != 0) { + step_b.hide_hour_unit(); + a.hide_hour_unit(); + b.hide_hour_unit(); + } + if (a.value() == 0) { + snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_as_str().c_str()); + } + else { + snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), b.unit_as_str().c_str()); + } + } + } + else { + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + size_t size = 0; + long start = 0, theEnd = 0; + + ret = grib_get_long_internal(h, self->startStep, &start); + if (ret) + return ret; + + if (self->endStep == NULL) { + snprintf(buf, sizeof(buf), "%ld", start); + } + else { + ret = grib_get_long_internal(h, self->endStep, &theEnd); + if (ret) + return ret; + + if (start == theEnd) { + snprintf(buf, sizeof(buf), "%ld", theEnd); + } + else { + snprintf(buf, sizeof(buf), "%ld-%ld", start, theEnd); + } } } @@ -225,77 +263,61 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - std::vector steps = parse_range(val); - if (steps.size() == 0) { - return GRIB_INVALID_ARGUMENT; - } - //ret = grib_set_long_internal(h, self->startStep, steps[0].value()); - //if (ret) - // return ret; - - //printf("val: %s\n", val); - - if (steps.size() == 1) { - //printf("unit_str 1: %s\n", steps[0].unit_as_str().c_str()); - steps[0].optimizeUnit(); - ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit_as_long()); - if (ret) - return ret; + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + return ret; - ret = grib_set_long_internal(h, "forecastTime", steps[0].value()); - if (ret) - return ret; + if (strcmp(stepOutputFormat, "future") == 0) { + std::vector steps = parse_range(val); + if (steps.size() == 0) { + return GRIB_INVALID_ARGUMENT; + } + if (steps.size() == 1) { + steps[0].optimizeUnit(); + if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit_as_long()))) + return ret; + if ((ret = grib_set_long_internal(h, "forecastTime", steps[0].value()))) + return ret; + } + else if (steps.size() == 2) { + steps[0].optimizeUnit(); + steps[1].optimizeUnit(); + auto [a, b] = findCommonUnits(steps[0], steps[1]); + + if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", a.unit_as_long()))) + return ret; + if ((ret = grib_set_long_internal(h, "forecastTime", a.value()))) + return ret; + + if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", b.unit_as_long()))) + return ret; + if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", b.value()))) + return ret; + } + else { + std::string msg = std::string("Invalid range: ") + val; + throw std::runtime_error(msg); + } } - else if (steps.size() == 2) { - //ret = grib_set_long_internal(h, self->endStep, steps[1].value()); - //if (ret) - // return ret; - //printf("unit_str 2: %s\n", steps[1].unit_as_str().c_str()); + else { + long start = 0, theEnd = -1; + char *p = NULL, *q = NULL; - steps[0].optimizeUnit(); - steps[1].optimizeUnit(); - auto [a, b] = findCommonUnits(steps[0], steps[1]); + start = strtol(val, &p, 10); + theEnd = start; - ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", a.unit_as_long()); - if (ret) - return ret; - ret = grib_set_long_internal(h, "forecastTime", a.value()); - if (ret) + if (*p != 0) + theEnd = strtol(++p, &q, 10); + if ((ret = grib_set_long_internal(h, self->startStep, start))) return ret; - - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", b.unit_as_long()); - if (ret) - return ret; - ret = grib_set_long_internal(h, "lengthOfTimeRange", b.value()); - if (ret) - return ret; - } - else { - std::string msg = std::string("Invalid range: ") + val; - throw std::runtime_error(msg); + if (self->endStep != NULL) { + if ((ret = grib_set_long_internal(h, self->endStep, theEnd))) + return ret; + } } - - //long start = 0, theEnd = -1; - //int ret = 0; - //char *p = NULL, *q = NULL; - - //start = strtol(val, &p, 10); - //theEnd = start; - - //if (*p != 0) - // theEnd = strtol(++p, &q, 10); - //ret = grib_set_long_internal(h, self->startStep, start); - //if (ret) - // return ret; - - //if (self->endStep != NULL) { - // ret = grib_set_long_internal(h, self->endStep, theEnd); - // if (ret) - // return ret; - //} - return 0; } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index d9fe32d25..d83d71c8f 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -125,20 +125,52 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) size_t slen = 2; long step; - /* Change units to seconds (highest resolution) + //size_t stepOutputFormatSize = 128; + //char stepOutputFormat[stepOutputFormatSize]; + //if ((err = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) { + // printf("ERROR: unable to get stepOutputFormat stepOutputFormat=%s\n", stepOutputFormat); + // return err; + //} + + //if (strcmp(stepOutputFormat, "future") == 0) { + /* Change units to seconds (highest resolution) * before computing the step value */ - //err = grib_set_string(h, "stepUnits", "s", &slen); - //if (err) return err; - err = grib_get_long(h, "step", &step); - if (err) return err; + // //err = grib_set_string(h, "stepUnits", "s", &slen); + // //if (err) return err; + // err = grib_get_long(h, "step", &step); + // if (err) return err; - long indicator = grib_get_long(h, "indicatorOfUnitOfTimeRange", &indicator); - auto stepOptimizer = Step(step, indicator); - stepOptimizer.optimizeUnit(); + // long indicator = grib_get_long(h, "indicatorOfUnitOfTimeRange", &indicator); + // auto stepOptimizer = Step(step, indicator); + // stepOptimizer.optimizeUnit(); - snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); + // snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); + //} + //else { + long hour, minute, second; + /* Change units to seconds (highest resolution) + * before computing the step value + */ + err = grib_set_string(h, "stepUnits", "s", &slen); + if (err) return err; + err = grib_get_long(h, "step", &step); + if (err) return err; + + hour = step/3600; + minute = step/60 % 60; + second = step % 60; + /* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */ + + if (second) { + snprintf(result, 1024, "%ldh %ldm %lds", hour, minute, second); + } else { + if (minute) snprintf(result, 1024, "%ldh %ldm", hour, minute); + else snprintf(result, 1024, "%ldh", hour); + } + + //} *length = strlen(result); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 99d493bd5..a5ccbcba2 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -84,12 +84,12 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, //&pack_double, /* pack_double */ 0, /* pack_float */ - &unpack_double, /* unpack_double */ + 0, //&unpack_double, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ - &unpack_string, /* unpack_string */ + 0, //&pack_string, /* pack_string */ + 0, //&unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -306,6 +306,11 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + return ret; + long unit; ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); if (ret) @@ -317,7 +322,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { return ret; Step step{(int) value, unit}; - sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + if (strcmp(stepOutputFormat, "future") == 0) { + sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + } + else { + sprintf(val, "%d", step.value()); + } return GRIB_SUCCESS; } diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index e65611712..76e27f19c 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -3,9 +3,27 @@ #include #include #include +#include +#include #include "step_optimizer.h" +std::vector> Step::unitOrder = { + {Unit::SECOND, 1}, + {Unit::MINUTE, 60}, + //{Unit::MINUTES15, 900}, + //{Unit::MINUTES30, 1800}, + {Unit::HOUR, 3600}, + //{Unit::HOURS3, 10800}, + //{Unit::HOURS6, 21600}, + //{Unit::HOURS12, 43200}, + {Unit::DAY, 86400}, + {Unit::MONTH, 2592000}, + //{Unit::YEAR, 31536000}, + //{Unit::YEARS10, 315360000}, + //{Unit::YEARS30, 946080000}, + //{Unit::CENTURY, 3153600000}, + }; std::string parse_step(std::string step) { if (step.find_first_of("smhdMYC") == std::string::npos) { @@ -103,15 +121,17 @@ Step& Step::optimizeUnit() { throw std::runtime_error(msg); } - for (auto it = unitMap_.end(); it != unitMap_.begin();) { - --it; + Seconds d = std::chrono::duration_cast(duration); + + for (auto it = unitOrder.rbegin(); it != unitOrder.rend(); ++it) { int multiplier = it->second; - if (duration.count() % multiplier == 0) { + if (d.count() % multiplier == 0) { value_ = duration.count() / multiplier; unit_ = it->first; return *this; } } + return *this; } @@ -240,7 +260,6 @@ Step operator+(const Step step1, const Step step2) { return Step(a.value_ + b.value_, a.unit_); } - std::pair findCommonUnits(Step startStep, Step endStep) { if (startStep.value_ == 0 || endStep.value_ == 0) { if (startStep.value_ == 0 && endStep.value_ == 0) { @@ -257,9 +276,14 @@ std::pair findCommonUnits(Step startStep, Step endStep) { return {startStep, endStep}; } - Unit unit = std::min(startStep.optimizeUnit().unit_, endStep.optimizeUnit().unit_); - startStep.setUnit(unit); - endStep.setUnit(unit); + auto it = std::find_if(Step::unitOrder.begin(), Step::unitOrder.end(), [&](const auto& e) { + return e.first == startStep.unit_ || e.first == endStep.unit_; + }); + + assert(it != Step::unitOrder.end()); + + startStep.setUnit(it->first); + endStep.setUnit(it->first); return {startStep, endStep}; } diff --git a/src/step_optimizer.h b/src/step_optimizer.h index 9b88fcd70..dc2a0ab56 100644 --- a/src/step_optimizer.h +++ b/src/step_optimizer.h @@ -177,22 +177,7 @@ class Step { long unit() const { return unit_; } Step& setUnit(Unit new_unit); Step(int value, Unit unit); - std::vector> unitMap_ = { - {Unit::SECOND, 1}, - {Unit::MINUTE, 60}, - //{Unit::MINUTES15, 900}, - //{Unit::MINUTES30, 1800}, - {Unit::HOUR, 3600}, - //{Unit::HOURS3, 10800}, - //{Unit::HOURS6, 21600}, - //{Unit::HOURS12, 43200}, - {Unit::DAY, 86400}, - {Unit::MONTH, 2592000}, - //{Unit::YEAR, 31536000}, - //{Unit::YEARS10, 315360000}, - //{Unit::YEARS30, 946080000}, - //{Unit::CENTURY, 3153600000}, - }; + static std::vector> unitOrder; int value_; Unit unit_; Unit default_unit_ = Unit::HOUR; diff --git a/tools/grib_dump.cc b/tools/grib_dump.cc index f61c6597e..941ac1879 100644 --- a/tools/grib_dump.cc +++ b/tools/grib_dump.cc @@ -1,4 +1,5 @@ /* + * iptio * (C) Copyright 2005- ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 diff --git a/tools/grib_set.cc b/tools/grib_set.cc index a8e562a21..2cfc851aa 100644 --- a/tools/grib_set.cc +++ b/tools/grib_set.cc @@ -15,6 +15,7 @@ grib_option grib_options[] = { { "s:", 0, 0, 1, 1, 0 }, { "r", 0, 0, 0, 1, 0 }, { "d:", 0, 0, 0, 1, 0 }, + { "y", 0, 0, 0, 1, 0 }, /*{"n:","noise percentage","\n\t\tAdd noise to the data values. The noise added is the given percentage of the data value.\n",0,1,0},*/ { "p:", 0, 0, 1, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 3fc6eb708..a27af2ff8 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -1201,17 +1201,18 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) break; case GRIB_TYPE_LONG: ret = grib_get_long(h, options->print_keys[i].name, &lvalue); - if ( - (strcmp(options->print_keys[i].name, "indicatorOfUnitOfTimeRange") == 0) || - (strcmp(options->print_keys[i].name, "indicatorOfUnitForTimeRange") == 0) - ) - { - snprintf(value, 32, "%s", StepUnitsTable::to_str(lvalue).c_str()); - } - else - { + //if ( + // (strcmp(options->print_keys[i].name, "indicatorOfUnitOfTimeRange") == 0) || + // (strcmp(options->print_keys[i].name, "indicatorOfUnitForTimeRange") == 0) && + // (strcmp(options->step_output_format, "future") == 0) + //) + //{ + // snprintf(value, 32, "%s", StepUnitsTable::to_str(lvalue).c_str()); + //} + //else + //{ snprintf(value, 32, "%ld", lvalue); - } + //} break; case GRIB_TYPE_BYTES: ret = grib_get_string(h, options->print_keys[i].name, value, &len); From b38d7386dc01743543d40e916c9e78b36a7f8cfb Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 17 Aug 2023 14:30:06 +0000 Subject: [PATCH 013/469] ECC-1620: CTest + bug fixes --- src/grib_accessor_class_g2end_step.cc | 114 +++-- src/grib_accessor_class_g2step_range.cc | 129 +++--- src/grib_accessor_class_step_in_units.cc | 188 ++++---- src/step_optimizer.cc | 280 +----------- src/step_optimizer.h | 540 ++++++++++++++++------- tests/CMakeLists.txt | 1 + tests/grib_ecc-1620.sh | 211 +++++++++ tools/grib_get.cc | 1 + 8 files changed, 826 insertions(+), 638 deletions(-) create mode 100755 tests/grib_ecc-1620.sh diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index e79a87562..6d695d5df 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -118,8 +118,8 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* pack_float */ 0, //&unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, //&pack_string, /* pack_string */ - 0, //&unpack_string, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -420,8 +420,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; if (strcmp(stepOutputFormat, "future") == 0) { - Step step{(int) *val, StepUnitsTable::to_long("h")}; - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + Step step{*val, "h"}; + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit().to_long()); if (ret) return ret; @@ -543,9 +543,9 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step step = Step(parse_step(std::string(val))); + Step step = Step(parse_step(std::string(val))); - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); + ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit().to_long()); if (ret) return ret; @@ -557,57 +557,79 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { } static int unpack_string(grib_accessor* a, char* val, size_t* len) { - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long unit; - if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit))) + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) return ret; - long value; - if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value))) - return ret; + /* point in time */ + if (self->year == NULL) { + long value; + if ((ret = grib_get_long_internal(h, self->start_step, &value))) + return ret; + long unit; + if ((ret = grib_get_long_internal(h, self->unit, &unit))) + return ret; - Step step{(int) value, unit}; + Step start_step = Step(value, unit); + if (strcmp(stepOutputFormat, "future") == 0) { + start_step.optimizeUnit(); + snprintf(val, *len, "%ld%s", start_step.value(), start_step.unit().to_string().c_str()); + } + else { + snprintf(val, *len, "%ld", start_step.value()); + } + return 0; + } - sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); - return GRIB_SUCCESS; -} + long numberOfTimeRange; + Assert(self->numberOfTimeRange); + if ((ret = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) + return ret; + Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); -static int pack_double(grib_accessor* a, const double* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + if (numberOfTimeRange == 1) { + long unit; + long value; - long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); - if (ret) - return ret; + if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit))) + return ret; + if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value))) + return ret; + Step start_step{value, unit}; + start_step.hide_hour_unit(); + start_step.optimizeUnit(); - long stepUnits; - ret = grib_get_long_internal(h, "stepUnits", &stepUnits); - if (ret) - return ret; + if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "forecastTime", &value)) != GRIB_SUCCESS) + return ret; - Step step; - if (stepUnits != 255) { - step = Step((int) *val, stepUnits); - } - else { - step = Step((int) *val, unit); + Step step{value, unit}; + Step end_step = start_step + step; + end_step.optimizeUnit(); + end_step.hide_hour_unit(); + + if (strcmp(stepOutputFormat, "future") == 0) { + snprintf(val, *len, "%ld%s", end_step.value(), end_step.unit().to_string().c_str()); + } + else { + snprintf(val, *len, "%ld", end_step.value()); + } } - ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); - if (ret) - return ret; - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit_as_long()); - if (ret) - return ret; + return GRIB_SUCCESS; +} - return ret; +static int pack_double(grib_accessor* a, const double* val, size_t* len) { + // not implemented + return GRIB_NOT_IMPLEMENTED; } static int unpack_double(grib_accessor* a, double* val, size_t* len) { @@ -630,14 +652,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) { if (ret) return ret; - if (stepUnits != 255) { - Step step = Step(value, unit); - *val = step.getDoubleValue(stepUnits); - } - else { - Step step = Step(value, unit); - *val = step.value(); - } + Step step = Step(value, unit); + *val = step.setUnit(stepUnits).value(); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 3fe2efcb7..9e3f14bbc 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -139,15 +139,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - //long start = 0, theEnd = 0; - - //ret = grib_get_long_internal(h, self->startStep, &start); - // - // - // - // - //if (ret) - //return ret; size_t stepOutputFormatSize = 128; char stepOutputFormat[stepOutputFormatSize]; @@ -156,37 +147,24 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (strcmp(stepOutputFormat, "future") == 0) { long indicatorOfUnitOfTimeRange; - long forecastTime; - ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange); - if (ret) - return ret; - ret = grib_get_long_internal(h, "forecastTime", &forecastTime); - if (ret) + if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange)) != GRIB_SUCCESS) return ret; + long forecastTime; + if ((ret = grib_get_long_internal(h, "forecastTime", &forecastTime)) != GRIB_SUCCESS) + return ret; size_t stepUnitsSize = 128; char stepUnits[stepUnitsSize]; - ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize); - if (ret) + if ((ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize)) != GRIB_SUCCESS) return ret; - //printf("stepUnits=%s\n", stepUnits); - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize) != GRIB_SUCCESS)) - return ret; - //printf("stepOutputFormat=%s\n", stepOutputFormat); - - Step step_a{(int) forecastTime, indicatorOfUnitOfTimeRange}; + Step step_a{forecastTime, indicatorOfUnitOfTimeRange}; step_a.optimizeUnit(); - - if (strcmp(stepOutputFormat, "future") != 0) { - step_a.hide_hour_unit(); - } + step_a.hide_hour_unit(); if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%d%s", step_a.value(), step_a.unit_as_str().c_str()); + snprintf(buf, sizeof(buf), "%ld%s", step_a.value(), step_a.unit().to_string().c_str()); } else { long indicatorOfUnitForTimeRange; @@ -198,21 +176,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (ret) return ret; - Step length{(int) lengthOfTimeRange, indicatorOfUnitForTimeRange}; - Step step_b = step_a + length; + Step length{lengthOfTimeRange, indicatorOfUnitForTimeRange}; + Step step_b = step_a + length; step_b.optimizeUnit(); auto [a, b] = findCommonUnits(step_a, step_b); - if (strcmp(stepOutputFormat, "future") != 0) { - step_b.hide_hour_unit(); - a.hide_hour_unit(); - b.hide_hour_unit(); - } + step_b.hide_hour_unit(); + a.hide_hour_unit(); + b.hide_hour_unit(); + if (a.value() == 0) { - snprintf(buf, sizeof(buf), "0-%d%s", step_b.value(), step_b.unit_as_str().c_str()); + snprintf(buf, sizeof(buf), "0%s-%ld%s", step_b.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); } else { - snprintf(buf, sizeof(buf), "%d-%d%s", a.value(), b.value(), b.unit_as_str().c_str()); + snprintf(buf, sizeof(buf), "%ld%s-%ld%s", a.value(), a.unit().to_string().c_str(), b.value(), b.unit().to_string().c_str()); } } } @@ -231,8 +208,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) snprintf(buf, sizeof(buf), "%ld", start); } else { - ret = grib_get_long_internal(h, self->endStep, &theEnd); - if (ret) + if ((ret = grib_get_long_internal(h, self->endStep, &theEnd)) != GRIB_SUCCESS) return ret; if (start == theEnd) { @@ -269,13 +245,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; if (strcmp(stepOutputFormat, "future") == 0) { - std::vector steps = parse_range(val); + std::vector> steps = parse_range(val); if (steps.size() == 0) { return GRIB_INVALID_ARGUMENT; } if (steps.size() == 1) { steps[0].optimizeUnit(); - if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit_as_long()))) + if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit().to_long()))) return ret; if ((ret = grib_set_long_internal(h, "forecastTime", steps[0].value()))) return ret; @@ -283,16 +259,16 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) else if (steps.size() == 2) { steps[0].optimizeUnit(); steps[1].optimizeUnit(); - auto [a, b] = findCommonUnits(steps[0], steps[1]); + auto [s0, s1] = findCommonUnits(steps[0], steps[1]); - if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", a.unit_as_long()))) + if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", s0.unit().to_long()))) return ret; - if ((ret = grib_set_long_internal(h, "forecastTime", a.value()))) + if ((ret = grib_set_long_internal(h, "forecastTime", s0.value()))) return ret; - if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", b.unit_as_long()))) + if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", s1.unit().to_long()))) return ret; - if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", b.value()))) + if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", s1.value()))) return ret; } else { @@ -343,23 +319,54 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_long(grib_accessor* a, long* val, size_t* len) { - char buff[100]; - size_t bufflen = 100; - long start, theEnd; - char* p = buff; - char* q = NULL; - int err = 0; + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + return ret; + + if (strcmp(stepOutputFormat, "future") == 0) { + long unit = 0; + long value = 0; + + if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "forecastTime", &value)) != GRIB_SUCCESS) + return ret; + Step start_step(value, unit); + Step step = start_step; + + if (self->endStep != NULL) { + if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value)) != GRIB_SUCCESS) + return ret; + Step end_step(value, unit); + step = start_step + end_step; + } - if ((err = unpack_string(a, buff, &bufflen)) != GRIB_SUCCESS) - return err; + step.optimizeUnit(); + *val = step.value(); + } + else { + char buff[100]; + size_t bufflen = 100; + long start, theEnd; + char* p = buff; + char* q = NULL; + if ((ret = unpack_string(a, buff, &bufflen)) != GRIB_SUCCESS) + return ret; - start = strtol(buff, &p, 10); - theEnd = start; - if (*p != 0) - theEnd = strtol(++p, &q, 10); + start = strtol(buff, &p, 10); + theEnd = start; + if (*p != 0) + theEnd = strtol(++p, &q, 10); - *val = theEnd; + *val = theEnd; + } return 0; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index a5ccbcba2..fbf8b6634 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -88,8 +88,8 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* pack_float */ 0, //&unpack_double, /* unpack_double */ 0, /* unpack_float */ - 0, //&pack_string, /* pack_string */ - 0, //&unpack_string, /* unpack_string */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ 0, /* pack_bytes */ @@ -219,69 +219,69 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //Step step{*val, "h"}; + //ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit().to_long()); + //if (ret) + // return ret; + + //ret = grib_set_long_internal(h, "forecastTime", step.value()); + //if (ret) + // return ret; + //return GRIB_SUCCESS; + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + grib_handle* h = grib_handle_of_accessor(a); + int err = 0; + long codedStep, codedUnits, stepUnits; + long oldStep = 0; + long indicatorOfUnitForTimeRange, lengthOfTimeRange; - Step step{(int) *val, StepUnitsTable::to_long("h")}; - ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); - if (ret) - return ret; + if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + return err; + if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + return err; - ret = grib_set_long_internal(h, "forecastTime", step.value()); - if (ret) - return ret; - return GRIB_SUCCESS; + unpack_long(a, &oldStep, len); - //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int err = 0; - //long codedStep, codedUnits, stepUnits; - //long oldStep = 0; - //long indicatorOfUnitForTimeRange, lengthOfTimeRange; - - //if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) - // return err; - //if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) - // return err; - - //unpack_long(a, &oldStep, len); - - //if (stepUnits != codedUnits) { - // codedStep = *val * u2s[stepUnits]; - // if (codedStep % u2s2[codedUnits] != 0) { - // codedUnits = stepUnits; - // err = grib_set_long_internal(h, self->codedUnits, codedUnits); - // if (err != GRIB_SUCCESS) - // return err; - // codedStep = *val; - // } - // else { - // codedStep = codedStep / u2s2[codedUnits]; - // } - //} - //else { - // codedStep = *val; - //} - - //if (self->indicatorOfUnitForTimeRange) { - // if ((err = grib_get_long_internal(h, - // self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) - // return err; - // if ((err = grib_get_long_internal(h, - // self->lengthOfTimeRange, &lengthOfTimeRange))) - // return err; - // if (codedUnits == indicatorOfUnitForTimeRange) - // lengthOfTimeRange -= codedStep - oldStep; - // else - // lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; - // lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; - // err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); - // if (err != GRIB_SUCCESS) - // return err; - //} - - //return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); + if (stepUnits != codedUnits) { + codedStep = *val * u2s[stepUnits]; + if (codedStep % u2s2[codedUnits] != 0) { + codedUnits = stepUnits; + err = grib_set_long_internal(h, self->codedUnits, codedUnits); + if (err != GRIB_SUCCESS) + return err; + codedStep = *val; + } + else { + codedStep = codedStep / u2s2[codedUnits]; + } + } + else { + codedStep = *val; + } + + if (self->indicatorOfUnitForTimeRange) { + if ((err = grib_get_long_internal(h, + self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) + return err; + if ((err = grib_get_long_internal(h, + self->lengthOfTimeRange, &lengthOfTimeRange))) + return err; + if (codedUnits == indicatorOfUnitForTimeRange) + lengthOfTimeRange -= codedStep - oldStep; + else + lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; + lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; + err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); + if (err != GRIB_SUCCESS) + return err; + } + + return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); } static int pack_string(grib_accessor* a, const char* val, size_t* len) { @@ -289,12 +289,12 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step step = Step(parse_step(std::string(val))); - ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); + Step step = Step(parse_step(std::string(val))); + ret = grib_set_long_internal(h, self->codedUnits, step.unit().to_long()); if (ret) return ret; - ret = grib_set_long_internal(h, "forecastTime", step.value()); + ret = grib_set_long_internal(h, self->codedStep, step.value()); if (ret) return ret; @@ -312,21 +312,21 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { return ret; long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); - if (ret) + if ((ret = grib_get_long_internal(h, self->codedUnits, &unit)) != GRIB_SUCCESS) return ret; long value; - ret = grib_get_long_internal(h, "forecastTime", &value); - if (ret) + if ((ret = grib_get_long_internal(h, self->codedStep, &value)) != GRIB_SUCCESS) return ret; - Step step{(int) value, unit}; + Step step{value, unit}; + step.optimizeUnit(); if (strcmp(stepOutputFormat, "future") == 0) { - sprintf(val, "%d%s", step.value(), step.unit_as_str().c_str()); + step.hide_hour_unit(); + snprintf(val, *len, "%ld%s", step.value(), step.unit().to_string().c_str()); } else { - sprintf(val, "%d", step.value()); + snprintf(val, *len, "%ld", step.value()); } return GRIB_SUCCESS; @@ -334,37 +334,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { static int pack_double(grib_accessor* a, const double* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - - long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); - if (ret) - return ret; - - - long stepUnits; - ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); - if (ret) - return ret; - - Step step; - if (stepUnits != 255) { - step = Step((int) *val, stepUnits); - } - else { - step = Step((int) *val, unit); - } - - ret = grib_set_long_internal(h, "forecastTime", step.value()); - if (ret) - return ret; - ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit_as_long()); - if (ret) - return ret; - - return ret; + return GRIB_NOT_IMPLEMENTED; } @@ -374,12 +344,12 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) { int ret = 0; long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit); + ret = grib_get_long_internal(h, self->codedUnits, &unit); if (ret) return ret; long value; - ret = grib_get_long_internal(h, "forecastTime", &value); + ret = grib_get_long_internal(h, self->codedStep, &value); if (ret) return ret; @@ -388,14 +358,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) { if (ret) return ret; - if (stepUnits != 255) { - Step step = Step(value, unit); - *val = step.getDoubleValue(stepUnits); - } - else { - Step step = Step(value, unit); - *val = step.value(); - } + Step step{(double) value, unit}; + *val = step.setUnit(stepUnits).value(); return GRIB_SUCCESS; } diff --git a/src/step_optimizer.cc b/src/step_optimizer.cc index 76e27f19c..eca3df57f 100644 --- a/src/step_optimizer.cc +++ b/src/step_optimizer.cc @@ -8,22 +8,8 @@ #include "step_optimizer.h" -std::vector> Step::unitOrder = { - {Unit::SECOND, 1}, - {Unit::MINUTE, 60}, - //{Unit::MINUTES15, 900}, - //{Unit::MINUTES30, 1800}, - {Unit::HOUR, 3600}, - //{Unit::HOURS3, 10800}, - //{Unit::HOURS6, 21600}, - //{Unit::HOURS12, 43200}, - {Unit::DAY, 86400}, - {Unit::MONTH, 2592000}, - //{Unit::YEAR, 31536000}, - //{Unit::YEARS10, 315360000}, - //{Unit::YEARS30, 946080000}, - //{Unit::CENTURY, 3153600000}, - }; + + std::string parse_step(std::string step) { if (step.find_first_of("smhdMYC") == std::string::npos) { @@ -33,257 +19,33 @@ std::string parse_step(std::string step) { } -std::vector parse_range(const std::string& range_str) { - std::vector steps; - std::string::size_type pos = 0; - std::string::size_type prev = 0; - while ((pos = range_str.find("-", prev)) != std::string::npos) { - std::string token = parse_step(range_str.substr(prev, pos - prev)); - if (token.size() > 0) { - steps.push_back(Step(token)); - } - prev = pos + 1; - } - std::string token = parse_step(range_str.substr(prev)); - if (token.size() > 0) { - steps.push_back(Step(token)); - } - return steps; -} - - -std::string Step::unit_as_str() const { - if ((unit_ == Unit::HOUR) && hide_hour_unit_) - return std::string(""); - else - return StepUnitsTable::to_str(unit_); -} - -long Step::unit_as_long() const { - return unit_; -} - -Step::Step(int value, long unit) { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); - } - - value_ = value; - unit_ = StepUnitsTable::to_unit(unit); -} - -Step::Step(const std::string& str) { - size_t pos = str.find_first_of("smhdMYC"); - if (pos == std::string::npos) { - throw std::runtime_error("Unknown unit."); - } - std::string v_str = str.substr(0, pos); - std::string u_str = str.substr(pos); - int v = std::stoi(v_str); - value_ = v; - unit_ = StepUnitsTable::to_unit(u_str); -} - -Step::Step(int value, Unit u) { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); - } - value_ = value; - unit_ = u; -} - -Step& Step::optimizeUnit() { - if (value_ == 0) { - return *this; - } - - Seconds duration(0); - switch (unit_) { - case Unit::SECOND: - duration = Seconds(value_); - break; - case Unit::MINUTE: - duration = Minutes(value_); - break; - case Unit::HOUR: - duration = Hours(value_); - break; - case Unit::DAY: - duration = Days(value_); - break; - case Unit::MONTH: - duration = Months(value_); - break; - default: - std::string msg = "Unknown unit: " + StepUnitsTable::to_str(unit_); - throw std::runtime_error(msg); - } - - Seconds d = std::chrono::duration_cast(duration); - - for (auto it = unitOrder.rbegin(); it != unitOrder.rend(); ++it) { - int multiplier = it->second; - if (d.count() % multiplier == 0) { - value_ = duration.count() / multiplier; - unit_ = it->first; - return *this; - } - } - - return *this; -} - -Step& Step::setUnit(std::string new_unit) { - setUnit(StepUnitsTable::to_unit(new_unit)); - return *this; -} - -Step& Step::setUnit(long new_unit) { - setUnit(StepUnitsTable::to_unit(new_unit)); - return *this; -} - -Step& Step::setUnit(Unit new_unit) { - if (value_ == 0) { - unit_ = new_unit; - return *this; - } - if (unit_ == new_unit) { - return *this; - } - Seconds duration(0); - switch (unit_) { - case Unit::SECOND: - duration = Seconds(value_); - break; - case Unit::MINUTE: - duration = Minutes(value_); - break; - case Unit::HOUR: - duration = Hours(value_); - break; - case Unit::DAY: - duration = Days(value_); - break; - case Unit::MONTH: - duration = Months(value_); - break; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); - throw std::runtime_error(msg); - } - - switch (new_unit) { - case Unit::SECOND: - value_ = duration.count(); - break; - case Unit::MINUTE: - value_ = std::chrono::duration_cast(duration).count(); - break; - case Unit::HOUR: - value_ = std::chrono::duration_cast(duration).count(); - break; - case Unit::DAY: - value_ = std::chrono::duration_cast(duration).count(); - break; - case Unit::MONTH: - value_ = std::chrono::duration_cast(duration).count(); - break; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); - throw std::runtime_error(msg); - } - unit_ = new_unit; - - return *this; -} - -double Step::getDoubleValue(long new_unit) const { - Seconds duration(0); - switch (unit_) { - case Unit::SECOND: - duration = Seconds(value_); - break; - case Unit::MINUTE: - duration = Minutes(value_); - break; - case Unit::HOUR: - duration = Hours(value_); - break; - case Unit::DAY: - duration = Days(value_); - break; - case Unit::MONTH: - duration = Months(value_); - break; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(unit_)); - throw std::runtime_error(msg); - } - - double value; - switch (new_unit) { - case Unit::SECOND: - value = std::chrono::duration_cast(duration).count(); - break; - case Unit::MINUTE: - value = std::chrono::duration_cast(duration).count(); - break; - case Unit::HOUR: - value = std::chrono::duration_cast(duration).count(); - break; - case Unit::DAY: - value = std::chrono::duration_cast(duration).count(); - break; - case Unit::MONTH: - value = std::chrono::duration_cast(duration).count(); - break; - default: - std::string msg = "Unknown unit: " + std::to_string(static_cast(new_unit)); - throw std::runtime_error(msg); - } - - return value; -} - -bool Step::operator==(const Step& other) const { - if (value_ == other.value_ && unit_ == other.unit_) { - return true; - } - return false; -} - -Step operator+(const Step step1, const Step step2) { - auto [a, b] = findCommonUnits(step1, step2); - return Step(a.value_ + b.value_, a.unit_); -} +std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep) { + Step a = startStep; + Step b = endStep; -std::pair findCommonUnits(Step startStep, Step endStep) { - if (startStep.value_ == 0 || endStep.value_ == 0) { - if (startStep.value_ == 0 && endStep.value_ == 0) { - Unit unit = StepUnitsTable::unit_duration(startStep.unit_) > StepUnitsTable::unit_duration(endStep.unit_) ? startStep.unit_ : endStep.unit_; - startStep.setUnit(unit); - endStep.setUnit(unit); + if (a.value_ == 0 || b.value_ == 0) { + if (a.value_ == 0 && b.value_ == 0) { + Step::Unit unit = a.unit_ > b.unit_ ? a.unit_ : b.unit_; + a.setUnit(unit); + b.setUnit(unit); } - else if (startStep.value_ == 0) { - startStep.setUnit(endStep.unit_); + else if (a.value_ == 0) { + a.setUnit(b.unit_); } - else if (endStep.value_ == 0) { - endStep.setUnit(startStep.unit_); + else if (b.value_ == 0) { + b.setUnit(a.unit_); } - return {startStep, endStep}; + return {a, b}; } - auto it = std::find_if(Step::unitOrder.begin(), Step::unitOrder.end(), [&](const auto& e) { - return e.first == startStep.unit_ || e.first == endStep.unit_; + auto it = std::find_if(Step::Unit::unitOrder.begin(), Step::Unit::unitOrder.end(), [&](const auto& e) { + return e == a.unit().to_value() || e == b.unit().to_value(); }); - assert(it != Step::unitOrder.end()); + assert(it != Step::Unit::unitOrder.end()); - startStep.setUnit(it->first); - endStep.setUnit(it->first); + a.setUnit(*it); + b.setUnit(*it); - return {startStep, endStep}; + return {a, b}; } diff --git a/src/step_optimizer.h b/src/step_optimizer.h index dc2a0ab56..db6fe0bbd 100644 --- a/src/step_optimizer.h +++ b/src/step_optimizer.h @@ -8,182 +8,408 @@ #include #include #include +#include +#include +#include +#include -enum Unit : long { - MINUTE = 0, - HOUR = 1, - DAY = 2, - MONTH = 3, - YEAR = 4, - YEARS10 = 5, - YEARS30 = 6, - CENTURY = 7, - HOURS3 = 10, - HOURS6 = 11, - HOURS12 = 12, - SECOND = 13, - MINUTES15 = 14, - MINUTES30 = 15, - MISSING = 255, -}; +template using Minutes = std::chrono::duration>; +template using Hours = std::chrono::duration>; +template using Days = std::chrono::duration>; +template using Months = std::chrono::duration>; +template using Years = std::chrono::duration>; +template using Years10 = std::chrono::duration>; +template using Years30 = std::chrono::duration>; +template using Centuries = std::chrono::duration>; +template using Hours3 = std::chrono::duration>; +template using Hours6 = std::chrono::duration>; +template using Hours12 = std::chrono::duration>; +template using Seconds = std::chrono::duration>; +template using Minutes15 = std::chrono::duration>; +template using Minutes30 = std::chrono::duration>; +template using Missing = std::chrono::duration>; -using Minutes = std::chrono::duration>; -using Hours = std::chrono::duration>; -using Days = std::chrono::duration>; -using Months = std::chrono::duration>; -using Years = std::chrono::duration>; -using Years10 = std::chrono::duration>; -using Years30 = std::chrono::duration>; -using Centuries = std::chrono::duration>; -using Hours3 = std::chrono::duration>; -using Hours6 = std::chrono::duration>; -using Hours12 = std::chrono::duration>; -using Seconds = std::chrono::duration>; -using Minutes15 = std::chrono::duration>; -using Minutes30 = std::chrono::duration>; -using Missing = std::chrono::duration>; - -using MinutesDouble = std::chrono::duration>; -using HoursDouble = std::chrono::duration>; -using DaysDouble = std::chrono::duration>; -using MonthsDouble = std::chrono::duration>; -using YearsDouble = std::chrono::duration>; -using Years10Double = std::chrono::duration>; -using Years30Double = std::chrono::duration>; -using CenturiesDouble = std::chrono::duration>; -using Hours3Double = std::chrono::duration>; -using Hours6Double = std::chrono::duration>; -using Hours12Double = std::chrono::duration>; -using SecondsDouble = std::chrono::duration>; -using Minutes15Double = std::chrono::duration>; -using Minutes30Double = std::chrono::duration>; -using MissingDouble = std::chrono::duration>; - -class StepUnitsTable{ -private: - StepUnitsTable() { - } + +template +class Step { public: - static Unit to_unit(const std::string& str) { - static std::map map = { - {"m", Unit::MINUTE}, - {"h", Unit::HOUR}, - {"d", Unit::DAY}, - {"M", Unit::MONTH}, - {"Y", Unit::YEAR}, - {"10Y", Unit::YEARS10}, - {"30Y", Unit::YEARS30}, - {"C", Unit::CENTURY}, - {"3h", Unit::HOURS3}, - {"6h", Unit::HOURS6}, - {"12h", Unit::HOURS12}, - {"s", Unit::SECOND}, - {"15m", Unit::MINUTES15}, - {"30m", Unit::MINUTES30}, - {"255", Unit::MISSING}, + class Unit { + public: + enum class Value { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, }; - return map[str]; - } - static long to_long(const std::string& str) { - return to_unit(str); - } - static Unit to_unit(long code) { - static std::map map = { - {Unit::MINUTE, Unit::MINUTE}, - {Unit::HOUR, Unit::HOUR}, - {Unit::DAY, Unit::DAY}, - {Unit::MONTH, Unit::MONTH}, - {Unit::YEAR, Unit::YEAR}, - {Unit::YEARS10, Unit::YEARS10}, - {Unit::YEARS30, Unit::YEARS30}, - {Unit::CENTURY, Unit::CENTURY}, - {Unit::HOURS3, Unit::HOURS3}, - {Unit::HOURS6, Unit::HOURS6}, - {Unit::HOURS12, Unit::HOURS12}, - {Unit::SECOND, Unit::SECOND}, - {Unit::MINUTES15, Unit::MINUTES15}, - {Unit::MINUTES30, Unit::MINUTES30}, - {Unit::MISSING, Unit::MISSING}, - }; - return map[code]; - } + explicit Unit() : value_(Value::HOUR) {} + explicit Unit(Value unit_value) : value_(unit_value) {} - static std::string to_str(long code) { - static std::map map = { - {Unit::MINUTE, "m"}, - {Unit::HOUR, "h"}, - {Unit::DAY, "d"}, - {Unit::MONTH, "M"}, - {Unit::YEAR, "Y"}, - {Unit::YEARS10, "10Y"}, - {Unit::YEARS30, "30Y"}, - {Unit::CENTURY, "C"}, - {Unit::HOURS3, "3h"}, - {Unit::HOURS6, "6h"}, - {Unit::HOURS12, "12h"}, - {Unit::SECOND, "s"}, - {Unit::MINUTES15, "15m"}, - {Unit::MINUTES30, "30m"}, - {Unit::MISSING, "255"}, - }; - return map[code]; - } + explicit Unit(const std::string& unit_value) { + value_ = map_.name_to_unit(unit_value); + } + + explicit Unit(long unit_value) { + value_ = map_.long_to_unit(unit_value); + } + + bool operator>(const Unit& other) const {return map_.unit_to_duration(value_) > map_.unit_to_duration(other.value_);} + bool operator==(const Value value) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(value);} + Unit& operator=(const Value value) { + value_ = value; + return *this; + } + + std::string to_string() const { + if ((value_ == Value::HOUR) && hide_hour_unit_) { + return ""; + } + else { + return map_.unit_to_name(value_); + } + } + long to_long() const {return map_.unit_to_long(value_);} + Value to_value() const {return value_;} + void hide_hour_unit() { + hide_hour_unit_ = true; + } + + static std::vector unitOrder; + + private: + bool hide_hour_unit_ = false; + class Map { + public: + Map() { + for (const auto& entry : tab_) { + // unit_value <-> unit_name + name_to_value_[entry.unit_name] = entry.unit_value; + value_to_name_[entry.unit_value] = entry.unit_name; + + // unit_value <-> duration in seconds + value_to_duration_[entry.unit_value] = entry.duration; + duration_to_value_[entry.duration] = entry.unit_value; + + // unit_value <-> wmo_code + value_to_long_[entry.unit_value] = static_cast(entry.unit_value); + long_to_value_[static_cast(entry.unit_value)] = entry.unit_value; + } + } + + // wmo_code <-> unit_name + std::string unit_to_name(const Value& unit_value) const {return value_to_name_.at(unit_value);} + Value name_to_unit(const std::string& name) const {return name_to_value_.at(name);} - static double unit_duration(long code) { - static std::map map = { - {Unit::MINUTE, Minutes::period::num / Minutes::period::den}, - {Unit::HOUR, Hours::period::num / Hours::period::den}, - {Unit::DAY, Days::period::num / Days::period::den}, - {Unit::MONTH, Months::period::num / Months::period::den}, - {Unit::YEAR, Years::period::num / Years::period::den}, - {Unit::YEARS10, Years10::period::num / Years10::period::den}, - {Unit::YEARS30, Years30::period::num / Years30::period::den}, - {Unit::CENTURY, Centuries::period::num / Centuries::period::den}, - {Unit::HOURS3, Hours3::period::num / Hours3::period::den}, - {Unit::HOURS6, Hours6::period::num / Hours6::period::den}, - {Unit::HOURS12, Hours12::period::num / Hours12::period::den}, - {Unit::SECOND, Seconds::period::num / Seconds::period::den}, - {Unit::MINUTES15, Minutes15::period::num / Minutes15::period::den}, - {Unit::MINUTES30, Minutes30::period::num / Minutes30::period::den}, + // unit_value <-> duration + long unit_to_duration(const Value& unit_value) const {return value_to_duration_.at(unit_value);} + Value duration_to_unit(long duration) const {return duration_to_value_.at(duration);} + + // wmo_code <-> unit_name + long unit_to_long(const Value& unit_value) const {return value_to_long_.at(unit_value);} + Value long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} + + private: + struct Entry { + Unit::Value unit_value; + std::string unit_name; + long duration; + }; + + const std::array tab_ = { + Entry{Value::MISSING , "MISSING" , 0}, + Entry{Value::SECOND , "s" , 1}, + Entry{Value::MINUTE , "m" , 60}, + Entry{Value::MINUTES15 , "15m" , 900}, + Entry{Value::MINUTES30 , "30m" , 1800}, + Entry{Value::HOUR , "h" , 3600}, + Entry{Value::HOURS3 , "3h" , 10800}, + Entry{Value::HOURS6 , "6h" , 21600}, + Entry{Value::HOURS12 , "12h" , 43200}, + Entry{Value::DAY , "D" , 86400}, + Entry{Value::MONTH , "M" , 2592000}, + Entry{Value::YEAR , "Y" , 31536000}, + Entry{Value::YEARS10 , "10Y" , 315360000}, + Entry{Value::YEARS30 , "30Y" , 946080000}, + Entry{Value::CENTURY , "C" , 3153600000}, + }; + + std::unordered_map name_to_value_; + std::unordered_map value_to_name_; + + std::unordered_map value_to_long_; + std::unordered_map long_to_value_; + + std::unordered_map value_to_duration_; + std::unordered_map duration_to_value_; }; - return map[code]; - } -}; -class Step { -public: + Value value_; + static Map map_; + public: + static Map& get_converter() {return map_;} + }; + + // Constructors Step() : value_(0), unit_(Unit::SECOND) {} - Step(int value, long unit); + Step(T value, const Unit& unit); + Step(T value, long unit); + Step(T value, const std::string& unit); explicit Step(const std::string& str); - int value() const { return value_; } - std::string unit_as_str() const; - long unit_as_long() const; - void hide_hour_unit() { hide_hour_unit_ = true; } + // Getters + T value() const { return value_; } + Unit unit() const { return unit_; } + + // Setters + Step& setUnit(long new_unit); + Step& setUnit(const std::string& new_unit); + Step& setUnit(const Step::Unit& new_unit); + Step& setUnit(const typename Step::Unit::Value new_unit); + + // Operators + bool operator==(const Step& other) const; + Step operator+(const Step& step); - Step& optimizeUnit(); - Step& setUnit(std::string new_unit); - Step& setUnit(long new_unit); - double getDoubleValue(long unit) const; - bool operator==(const Step& other) const; - friend std::pair findCommonUnits(Step startStep, Step endStep); - friend Step operator+(const Step step1, const Step step2); + // Methods + Step& optimizeUnit(); + friend std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep); + void hide_hour_unit() {unit_.hide_hour_unit();} private: - long unit() const { return unit_; } - Step& setUnit(Unit new_unit); - Step(int value, Unit unit); - static std::vector> unitOrder; - int value_; + T value_; Unit unit_; - Unit default_unit_ = Unit::HOUR; - bool hide_hour_unit_ = false; }; -std::pair findCommonUnits(Step, Step); + +template +//typename Step::Unit::Map Step::Unit::map_ = Step::Unit::Map(); +typename Step::Unit::Map Step::Unit::map_{}; + + +template +std::vector::Unit::Value> Step::Unit::unitOrder = { + Value::SECOND, + Value::MINUTE, + //{StepValue::MINUTES15, 900}, + //{StepValue::MINUTES30, 1800}, + Value::HOUR, + //{StepValue::HOURS3, 10800}, + //{StepValue::HOURS6, 21600}, + //{StepValue::HOURS12, 43200}, + //Value::DAY, + //Value::MONTH, + //{StepValue::YEAR, 31536000}, + //{StepValue::YEARS10, 315360000}, + //{StepValue::YEARS30, 946080000}, + //{StepValue::CENTURY, 3153600000}, + }; + + std::string parse_step(std::string step); -std::vector parse_range(const std::string& range_str); + +template +bool Step::operator==(const Step& other) const { + if (value_ == other.value_ && unit_ == other.unit_) { + return true; + } + return false; +} + +template +Step Step::operator+(const Step& step) { + auto [a, b] = findCommonUnits(*this, step); + return Step(a.value_ + b.value_, a.unit_); +} + +std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep); + + +template std::vector> parse_range(const std::string& range_str) { + std::vector> steps; + std::string::size_type pos = 0; + std::string::size_type prev = 0; + while ((pos = range_str.find("-", prev)) != std::string::npos) { + std::string token = parse_step(range_str.substr(prev, pos - prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); + } + prev = pos + 1; + } + std::string token = parse_step(range_str.substr(prev)); + if (token.size() > 0) { + steps.push_back(Step(token)); + } + return steps; +} + + +template +Step::Step(T value, long unit) : value_{value}, unit_{Unit{unit}} { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } +} + +template +Step::Step(T value, const std::string& unit) : value_{value}, unit_{Unit{unit}} { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } +} + +template +Step::Step(const std::string& str) { + size_t pos = str.find_first_of("smhdMYC"); + if (pos == std::string::npos) { + throw std::runtime_error("Unknown unit."); + } + std::string v_str = str.substr(0, pos); + std::string u_str = str.substr(pos); + int v = std::stoi(v_str); + value_ = v; + unit_ = Unit{u_str}; +} + +template +Step::Step(T value, const Unit& u) { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } + value_ = value; + unit_ = u; +} + +template +Step& Step::optimizeUnit() { + if (value_ == 0) { + return *this; + } + + Seconds duration(0); + switch (unit_.to_value()) { + case Unit::Value::SECOND: + duration = Seconds(value_); + break; + case Unit::Value::MINUTE: + duration = Minutes(value_); + break; + case Unit::Value::HOUR: + duration = Hours(value_); + break; + case Unit::Value::DAY: + duration = Days(value_); + break; + case Unit::Value::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + unit_.to_string(); + throw std::runtime_error(msg); + } + + Seconds d = std::chrono::duration_cast>(duration); + + for (auto it = Unit::unitOrder.rbegin(); it != Unit::unitOrder.rend(); ++it) { + long multiplier = Unit::get_converter().unit_to_duration(*it); + if (d.count() % multiplier == 0) { + value_ = duration.count() / multiplier; + unit_ = *it; + return *this; + } + } + + return *this; +} + +template +Step& Step::setUnit(const std::string& unit_name) { + setUnit(Unit{unit_name}); + return *this; +} + +template +Step& Step::setUnit(long unit_code) { + setUnit(Unit{unit_code}); + return *this; +} + +template +Step& Step::setUnit(const Step::Unit& new_unit) { + setUnit(new_unit.to_value()); + return *this; +} + + +template +Step& Step::setUnit(const typename Step::Unit::Value new_unit) { + if (value_ == 0) { + unit_ = new_unit; + return *this; + } + if (unit_ == new_unit) { + return *this; + } + Seconds duration(0); + switch (unit_.to_value()) { + case Unit::Value::SECOND: + duration = Seconds(value_); + break; + case Unit::Value::MINUTE: + duration = Minutes(value_); + break; + case Unit::Value::HOUR: + duration = Hours(value_); + break; + case Unit::Value::DAY: + duration = Days(value_); + break; + case Unit::Value::MONTH: + duration = Months(value_); + break; + default: + std::string msg = "Unknown unit: " + unit_.to_string(); + throw std::runtime_error(msg); + } + + switch (new_unit) { + case Unit::Value::SECOND: + value_ = duration.count(); + break; + case Unit::Value::MINUTE: + value_ = std::chrono::duration_cast>(duration).count(); + break; + case Unit::Value::HOUR: + value_ = std::chrono::duration_cast>(duration).count(); + break; + case Unit::Value::DAY: + value_ = std::chrono::duration_cast>(duration).count(); + break; + case Unit::Value::MONTH: + value_ = std::chrono::duration_cast>(duration).count(); + break; + default: + std::string msg = "Unknown unit: " + Step::Unit{new_unit}.to_string(); + throw std::runtime_error(msg); + } + unit_ = new_unit; + + return *this; +} + diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f8c25d935..59999dd0b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -215,6 +215,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1397 grib_ecc-1425 grib_ecc-1467 + grib_ecc-1620 grib_set_bytes grib_set_force bufr_ecc-556 diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh new file mode 100755 index 000000000..14d13ebaa --- /dev/null +++ b/tests/grib_ecc-1620.sh @@ -0,0 +1,211 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +grib_check_key_equals() +{ + a_file=$1 + a_params=$2 + a_expected=$3 + a_result=`${tools_dir}/grib_get $a_params $a_file` + if [ "$a_result" != "$a_expected" ]; then + echo "File: '$a_file'" + echo "Key(s): '$a_params'" + echo "Expected: '$a_expected'" + echo "Result: '$a_result'" + exit 1 + fi +} + +label="grib_ecc-1620" +temp=temp.$label + + +fn="${data_dir}/reduced_gaussian_surface.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +keys__="step" +keys_s="step:s" +keys_i="step:i" +keys_d="step:d" + + +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 m" +grib_check_key_equals $temp "-p $keys__" "0" +grib_check_key_equals $temp "-y -p $keys__" "0" +grib_check_key_equals $temp "-p $keys_s" "0" +grib_check_key_equals $temp "-y -p $keys_s" "0m" +grib_check_key_equals $temp "-p $keys_i" "0" +grib_check_key_equals $temp "-y -p $keys_i" "0" +grib_check_key_equals $temp "-p $keys_d" "0" +grib_check_key_equals $temp "-y -p $keys_d" "0" + +${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "59 m" +grib_check_key_equals $temp "-p $keys__" "59" +grib_check_key_equals $temp "-y -p $keys__" "59" +grib_check_key_equals $temp "-p $keys_s" "59" +grib_check_key_equals $temp "-y -p $keys_s" "59m" +grib_check_key_equals $temp "-p $keys_i" "59" +grib_check_key_equals $temp "-y -p $keys_i" "59" +grib_check_key_equals $temp "-p $keys_d" "59" +grib_check_key_equals $temp "-y -p $keys_d" "59" + +${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m" +grib_check_key_equals $temp "-p $keys__" "1" +grib_check_key_equals $temp "-y -p $keys__" "1" +grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-y -p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_i" "1" +grib_check_key_equals $temp "-y -p $keys_i" "1" +grib_check_key_equals $temp "-p $keys_d" "1" +grib_check_key_equals $temp "-y -p $keys_d" "1" + +${tools_dir}/grib_set -s forecastTime=61,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "61 m" +grib_check_key_equals $temp "-p $keys__" "61" +grib_check_key_equals $temp "-y -p $keys__" "61" +grib_check_key_equals $temp "-p $keys_s" "61" +grib_check_key_equals $temp "-y -p $keys_s" "61m" +grib_check_key_equals $temp "-p $keys_i" "61" +grib_check_key_equals $temp "-y -p $keys_i" "61" +grib_check_key_equals $temp "-p $keys_d" "61" +grib_check_key_equals $temp "-y -p $keys_d" "61" + +#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys__" "1.0166666666666666" +#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_s" "1.0166666666666666" +#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_i" "1" +#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_d" "1.0166666666666666" + +${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "24 h" +grib_check_key_equals $temp "-p $keys__" "24" +grib_check_key_equals $temp "-y -p $keys__" "24" +grib_check_key_equals $temp "-p $keys_s" "24" +grib_check_key_equals $temp "-y -p $keys_s" "24" +grib_check_key_equals $temp "-p $keys_i" "24" +grib_check_key_equals $temp "-y -p $keys_i" "24" +grib_check_key_equals $temp "-p $keys_d" "24" +grib_check_key_equals $temp "-y -p $keys_d" "24" + +${tools_dir}/grib_set -s forecastTime=1440,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1440 m" +grib_check_key_equals $temp "-p $keys__" "24" +grib_check_key_equals $temp "-y -p $keys__" "24" +grib_check_key_equals $temp "-p $keys_s" "24" +grib_check_key_equals $temp "-y -p $keys_s" "24" +grib_check_key_equals $temp "-p $keys_i" "24" +grib_check_key_equals $temp "-y -p $keys_i" "24" +grib_check_key_equals $temp "-p $keys_d" "24" +grib_check_key_equals $temp "-y -p $keys_d" "24" + + + +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +keys__="stepRange,startStep,endStep" +keys_s="stepRange:s,startStep:s,endStep:s" +keys_i="stepRange:i,startStep:i,endStep:i" +keys_d="stepRange:d,startStep:d,endStep:d" + +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" +grib_check_key_equals $temp "-p $keys__" "0-2 0 2" +grib_check_key_equals $temp "-y -p $keys__" "0-2 0 2" +grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" +grib_check_key_equals $temp "-y -p $keys_s" "0-2 0m 2" +grib_check_key_equals $temp "-p $keys_i" "2 0 2" +grib_check_key_equals $temp "-y -p $keys_i" "2 0 2" +grib_check_key_equals $temp "-p $keys_d" "2 0 2" +grib_check_key_equals $temp "-y -p $keys_d" "2 0 2" + +${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" +grib_check_key_equals $temp "-p $keys__" "24-48 24 48" +grib_check_key_equals $temp "-y -p $keys__" "24-48 24 48" +grib_check_key_equals $temp "-p $keys_s" "24-48 24 48" +grib_check_key_equals $temp "-y -p $keys_s" "24-48 24 48" +grib_check_key_equals $temp "-p $keys_i" "48 24 48" +grib_check_key_equals $temp "-y -p $keys_i" "48 24 48" +grib_check_key_equals $temp "-p $keys_d" "48 24 48" +grib_check_key_equals $temp "-y -p $keys_d" "48 24 48" + +${tools_dir}/grib_set -s forecastTime=25,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "25 h 1 D" +grib_check_key_equals $temp "-p $keys__" "25-49 25 49" +grib_check_key_equals $temp "-y -p $keys__" "25-49 25 49" +grib_check_key_equals $temp "-p $keys_s" "25-49 25 49" +grib_check_key_equals $temp "-y -p $keys_s" "25-49 25 49" +grib_check_key_equals $temp "-p $keys_i" "49 25 49" +grib_check_key_equals $temp "-y -p $keys_i" "49 25 49" +grib_check_key_equals $temp "-p $keys_d" "49 25 49" +grib_check_key_equals $temp "-y -p $keys_d" "49 25 49" + +${tools_dir}/grib_set -s forecastTime=45,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=15,indicatorOfUnitForTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" +grib_check_key_equals $temp "-p $keys__" "45-60 45 60" +grib_check_key_equals $temp "-y -p $keys__" "45m-60m 45 60" +grib_check_key_equals $temp "-p $keys_s" "45-60 45 1" +grib_check_key_equals $temp "-y -p $keys_s" "45m-60m 45m 1" +grib_check_key_equals $temp "-p $keys_i" "60 45 60" +grib_check_key_equals $temp "-y -p $keys_i" "1 45 60" +grib_check_key_equals $temp "-p $keys_d" "60 45 60" +grib_check_key_equals $temp "-y -p $keys_d" "1 45 60" + +${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m 2 h" +grib_check_key_equals $temp "-p $keys__" "1-3 1 3" +grib_check_key_equals $temp "-y -p $keys__" "1-3 1 3" +grib_check_key_equals $temp "-p $keys_s" "1-3 1 3" +grib_check_key_equals $temp "-y -p $keys_s" "1-3 1 3" +grib_check_key_equals $temp "-p $keys_i" "3 1 3" +grib_check_key_equals $temp "-y -p $keys_i" "3 1 3" +grib_check_key_equals $temp "-p $keys_d" "3 1 3" +grib_check_key_equals $temp "-y -p $keys_d" "3 1 3" + +${tools_dir}/grib_set -s forecastTime=18,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "18 h 6 h" +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" + +${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=360,indicatorOfUnitForTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1080 m 360 m" +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" + +${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" + +rm -f $temp + + + diff --git a/tools/grib_get.cc b/tools/grib_get.cc index 4d5040bfa..74a366b7d 100644 --- a/tools/grib_get.cc +++ b/tools/grib_get.cc @@ -15,6 +15,7 @@ grib_option grib_options[] = { { "f", 0, 0, 0, 1, 0 }, { "p:", 0, 0, 0, 1, 0 }, { "F:", 0, 0, 1, 1, "%g" }, + { "y", 0, 0, 0, 1, 0 }, { "B:", 0, 0, 0, 1, 0 }, { "l:", 0, 0, 0, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, From 3b7eb7c02ffb6eee111fcc66d15b5a0c4f00bd46 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 18 Aug 2023 15:53:12 +0000 Subject: [PATCH 014/469] ECC-1620: Step utility functions --- src/CMakeLists.txt | 3 +- src/grib_accessor_class_g2end_step.cc | 71 ++--------- src/grib_accessor_class_g2step_range.cc | 113 +++++------------- ...grib_accessor_class_step_human_readable.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 33 ++--- src/{step_optimizer.cc => step.cc} | 2 +- src/{step_optimizer.h => step.h} | 5 +- src/step_utilities.cc | 42 +++++++ src/step_utilities.h | 12 ++ tools/grib_tools.cc | 2 +- 10 files changed, 119 insertions(+), 166 deletions(-) rename src/{step_optimizer.cc => step.cc} (97%) rename src/{step_optimizer.h => step.h} (98%) create mode 100644 src/step_utilities.cc create mode 100644 src/step_utilities.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2adbef70a..69f39a820 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,7 +9,8 @@ # nor does it submit to any jurisdiction. # list( APPEND eccodes_src_files - step_optimizer.cc + step.cc + step_utilities.cc grib_api.h grib_timer.cc eccodes.h diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 9ea691772..e43de49aa 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -9,7 +9,8 @@ */ #include "grib_api_internal.h" -#include "step_optimizer.h" +#include "step.h" +#include "step_utilities.h" #include /* @@ -561,69 +562,17 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - return ret; - - /* point in time */ - if (self->year == NULL) { - long value; - if ((ret = grib_get_long_internal(h, self->start_step, &value))) - return ret; - long unit; - if ((ret = grib_get_long_internal(h, self->unit, &unit))) - return ret; + auto [start, stop] = getTimeRange(h); + auto [step_a, step_b] = findCommonUnits(start.optimizeUnit(), stop.optimizeUnit()); + step_a.hide_hour_unit(); + step_b.hide_hour_unit(); - Step start_step = Step(value, unit); - if (strcmp(stepOutputFormat, "future") == 0) { - start_step.optimizeUnit(); - snprintf(val, *len, "%ld%s", start_step.value(), start_step.unit().to_string().c_str()); - } - else { - snprintf(val, *len, "%ld", start_step.value()); - } - return 0; + if (futureOutputEnabled(h)) { + snprintf(val, *len, "%ld%s", step_b.value(), step_b.unit().to_string().c_str()); } - - - long numberOfTimeRange; - Assert(self->numberOfTimeRange); - if ((ret = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) - return ret; - Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); - - if (numberOfTimeRange == 1) { - long unit; - long value; - - if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit))) - return ret; - if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value))) - return ret; - - Step start_step{value, unit}; - start_step.hide_hour_unit(); - start_step.optimizeUnit(); - - if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit)) != GRIB_SUCCESS) - return ret; - if ((ret = grib_get_long_internal(h, "forecastTime", &value)) != GRIB_SUCCESS) - return ret; - - Step step{value, unit}; - Step end_step = start_step + step; - end_step.optimizeUnit(); - end_step.hide_hour_unit(); - - if (strcmp(stepOutputFormat, "future") == 0) { - snprintf(val, *len, "%ld%s", end_step.value(), end_step.unit().to_string().c_str()); - } - else { - snprintf(val, *len, "%ld", end_step.value()); - } + else { + snprintf(val, *len, "%ld", step_b.value()); } - return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 9e3f14bbc..6d685a356 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -13,7 +13,8 @@ *******************************************/ #include "grib_api_internal.h" -#include "step_optimizer.h" +#include "step.h" +#include "step_utilities.h" #include /* This is used by make_class.pl @@ -146,58 +147,18 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; if (strcmp(stepOutputFormat, "future") == 0) { - long indicatorOfUnitOfTimeRange; - if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &indicatorOfUnitOfTimeRange)) != GRIB_SUCCESS) - return ret; - - long forecastTime; - if ((ret = grib_get_long_internal(h, "forecastTime", &forecastTime)) != GRIB_SUCCESS) - return ret; - - size_t stepUnitsSize = 128; - char stepUnits[stepUnitsSize]; - if ((ret = grib_get_string_internal(h, "stepUnits", stepUnits, &stepUnitsSize)) != GRIB_SUCCESS) - return ret; - - Step step_a{forecastTime, indicatorOfUnitOfTimeRange}; - step_a.optimizeUnit(); + auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); + auto [step_a, step_b] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); step_a.hide_hour_unit(); - - if (self->endStep == NULL) { + step_b.hide_hour_unit(); + if (step_a == step_b) { snprintf(buf, sizeof(buf), "%ld%s", step_a.value(), step_a.unit().to_string().c_str()); } else { - long indicatorOfUnitForTimeRange; - long lengthOfTimeRange; - ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &indicatorOfUnitForTimeRange); - if (ret) - return ret; - ret = grib_get_long_internal(h, "lengthOfTimeRange", &lengthOfTimeRange); - if (ret) - return ret; - - Step length{lengthOfTimeRange, indicatorOfUnitForTimeRange}; - Step step_b = step_a + length; - step_b.optimizeUnit(); - auto [a, b] = findCommonUnits(step_a, step_b); - - step_b.hide_hour_unit(); - a.hide_hour_unit(); - b.hide_hour_unit(); - - if (a.value() == 0) { - snprintf(buf, sizeof(buf), "0%s-%ld%s", step_b.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); - } - else { - snprintf(buf, sizeof(buf), "%ld%s-%ld%s", a.value(), a.unit().to_string().c_str(), b.value(), b.unit().to_string().c_str()); - } + snprintf(buf, sizeof(buf), "%ld%s-%ld%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); } } else { - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - size_t size = 0; long start = 0, theEnd = 0; ret = grib_get_long_internal(h, self->startStep, &start); @@ -328,45 +289,27 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) return ret; - if (strcmp(stepOutputFormat, "future") == 0) { - long unit = 0; - long value = 0; - - if ((ret = grib_get_long_internal(h, "indicatorOfUnitOfTimeRange", &unit)) != GRIB_SUCCESS) - return ret; - if ((ret = grib_get_long_internal(h, "forecastTime", &value)) != GRIB_SUCCESS) - return ret; - Step start_step(value, unit); - Step step = start_step; - - if (self->endStep != NULL) { - if ((ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit)) != GRIB_SUCCESS) - return ret; - if ((ret = grib_get_long_internal(h, "lengthOfTimeRange", &value)) != GRIB_SUCCESS) - return ret; - Step end_step(value, unit); - step = start_step + end_step; - } - - step.optimizeUnit(); - *val = step.value(); - } - else { - char buff[100]; - size_t bufflen = 100; - long start, theEnd; - char* p = buff; - char* q = NULL; - if ((ret = unpack_string(a, buff, &bufflen)) != GRIB_SUCCESS) - return ret; - - start = strtol(buff, &p, 10); - theEnd = start; - if (*p != 0) - theEnd = strtol(++p, &q, 10); - - *val = theEnd; - } + //if (strcmp(stepOutputFormat, "future") == 0) { + auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); + auto [optForecastTime, optLenghtOfTimeRange] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); + *val = optLenghtOfTimeRange.value(); + //} + //else { + // char buff[100]; + // size_t bufflen = 100; + // long start, theEnd; + // char* p = buff; + // char* q = NULL; + // if ((ret = unpack_string(a, buff, &bufflen)) != GRIB_SUCCESS) + // return ret; + + // start = strtol(buff, &p, 10); + // theEnd = start; + // if (*p != 0) + // theEnd = strtol(++p, &q, 10); + + // *val = theEnd; + //} return 0; } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index d83d71c8f..ebd2c4a7b 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include "step_optimizer.h" +#include "step.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index fbf8b6634..8323cfdd4 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -9,7 +9,8 @@ */ #include "grib_api_internal.h" -#include "step_optimizer.h" +#include "step.h" +#include "step_utilities.h" #include /* This is used by make_class.pl @@ -306,22 +307,26 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - return ret; + //size_t stepOutputFormatSize = 128; + //char stepOutputFormat[stepOutputFormatSize]; + //if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + // return ret; - long unit; - if ((ret = grib_get_long_internal(h, self->codedUnits, &unit)) != GRIB_SUCCESS) - return ret; + //long unit; + //if ((ret = grib_get_long_internal(h, self->codedUnits, &unit)) != GRIB_SUCCESS) + // return ret; - long value; - if ((ret = grib_get_long_internal(h, self->codedStep, &value)) != GRIB_SUCCESS) - return ret; + //long value; + //if ((ret = grib_get_long_internal(h, self->codedStep, &value)) != GRIB_SUCCESS) + // return ret; + + //Step step{value, unit}; + //step.optimizeUnit(); + + auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); + auto [step, step_b] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); - Step step{value, unit}; - step.optimizeUnit(); - if (strcmp(stepOutputFormat, "future") == 0) { + if (futureOutputEnabled(h)) { step.hide_hour_unit(); snprintf(val, *len, "%ld%s", step.value(), step.unit().to_string().c_str()); } diff --git a/src/step_optimizer.cc b/src/step.cc similarity index 97% rename from src/step_optimizer.cc rename to src/step.cc index eca3df57f..b353a38fb 100644 --- a/src/step_optimizer.cc +++ b/src/step.cc @@ -6,7 +6,7 @@ #include #include -#include "step_optimizer.h" +#include "step.h" diff --git a/src/step_optimizer.h b/src/step.h similarity index 98% rename from src/step_optimizer.h rename to src/step.h index db6fe0bbd..f819002e5 100644 --- a/src/step_optimizer.h +++ b/src/step.h @@ -68,6 +68,7 @@ class Step { bool operator>(const Unit& other) const {return map_.unit_to_duration(value_) > map_.unit_to_duration(other.value_);} bool operator==(const Value value) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(value);} + bool operator==(const Unit& unit) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(unit.value_);} Unit& operator=(const Value value) { value_ = value; return *this; @@ -164,7 +165,7 @@ class Step { }; // Constructors - Step() : value_(0), unit_(Unit::SECOND) {} + Step() : value_(0), unit_(Unit::Value::SECOND) {} Step(T value, const Unit& unit); Step(T value, long unit); Step(T value, const std::string& unit); @@ -223,7 +224,7 @@ std::string parse_step(std::string step); template bool Step::operator==(const Step& other) const { - if (value_ == other.value_ && unit_ == other.unit_) { + if ((value_ == other.value_) && (unit_ == other.unit_)) { return true; } return false; diff --git a/src/step_utilities.cc b/src/step_utilities.cc new file mode 100644 index 000000000..19c5cacbd --- /dev/null +++ b/src/step_utilities.cc @@ -0,0 +1,42 @@ +#include "step_utilities.h" + + +std::optional> getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key){ + if (grib_is_defined(h, unit_key.c_str()) && grib_is_defined(h, value_key.c_str())) { + long unit = 0; + if (grib_get_long_internal(h, unit_key.c_str(), &unit) != GRIB_SUCCESS) + return {}; + + long value = 0; + if (grib_get_long_internal(h, value_key.c_str(), &value) != GRIB_SUCCESS) + return {}; + + return Step(value, unit); + } + else { + return {}; + } +} + +std::optional> getForecastTime(grib_handle* h) { + return getStep(h, "forecastTime", "indicatorOfUnitOfTimeRange"); +} + +std::optional> getLengthOfTimeRange(grib_handle* h) { + return getStep(h, "lengthOfTimeRange", "indicatorOfUnitForTimeRange"); +} + +std::pair, Step> getTimeRange(grib_handle* h) { + auto forecast_time = getForecastTime(h); + auto length_of_time_range = getLengthOfTimeRange(h); + return {forecast_time.value(), forecast_time.value() + length_of_time_range.value_or(Step())}; +} + +bool futureOutputEnabled(grib_handle* h) { + int ret = 0; + size_t stepOutputFormatSize = 128; + char stepOutputFormat[stepOutputFormatSize]; + if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + return ret; + return strcmp(stepOutputFormat, "future") == 0; +} diff --git a/src/step_utilities.h b/src/step_utilities.h new file mode 100644 index 000000000..2ac9e3e49 --- /dev/null +++ b/src/step_utilities.h @@ -0,0 +1,12 @@ +#pragma once + +#include "grib_api_internal.h" +#include "step.h" + +#include + +std::optional> getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key); +std::optional> getForecastTime(grib_handle* h); +std::optional> getLengthOfTimeRange(grib_handle* h); +std::pair, Step> getTimeRange(grib_handle* h); +bool futureOutputEnabled(grib_handle* h); diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index a27af2ff8..7b008ad3f 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -9,7 +9,7 @@ */ #include "grib_tools.h" -#include "step_optimizer.h" +//#include "step_optimizer.h" #include #if HAVE_LIBJASPER From bf4e481cd6034c77f4bb55db43f4f24e0704ec18 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 23 Aug 2023 01:08:51 +0000 Subject: [PATCH 015/469] ECC-1620: More step utilities --- src/grib_accessor_class_g2step_range.cc | 20 +- src/grib_accessor_class_step_in_units.cc | 29 +- src/step.cc | 13 +- src/step.h | 327 +++++++++++------------ src/step_utilities.cc | 5 + src/step_utilities.h | 32 +++ tests/grib_ecc-1620.sh | 91 +++++-- 7 files changed, 295 insertions(+), 222 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 6d685a356..a3ff5a0bb 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -141,21 +141,19 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) int ret = 0; size_t size = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - return ret; + if (futureOutputEnabled(h)) { + Step step_a; + Step step_b; + if ((ret = getOptTimeRange(h, step_a, step_b)) != GRIB_SUCCESS) + return ret; - if (strcmp(stepOutputFormat, "future") == 0) { - auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); - auto [step_a, step_b] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); - step_a.hide_hour_unit(); - step_b.hide_hour_unit(); if (step_a == step_b) { - snprintf(buf, sizeof(buf), "%ld%s", step_a.value(), step_a.unit().to_string().c_str()); + //snprintf(buf, sizeof(buf), "%ld%s", step_a.value(), step_a.unit().to_string().c_str()); + snprintf(buf, sizeof(buf), "%0.2f%s", step_a.value(), step_a.unit().to_string().c_str()); } else { - snprintf(buf, sizeof(buf), "%ld%s-%ld%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); + //snprintf(buf, sizeof(buf), "%ld%s-%ld%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); + snprintf(buf, sizeof(buf), "%0.2f%s-%0.2f%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); } } else { diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 8323cfdd4..b8b27d0bb 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -306,32 +306,19 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + //auto [step, step_b] = getOptTimeRange(h); + Step step_a; + Step step_b; + if ((ret = getOptTimeRange(h, step_a, step_b)) != GRIB_SUCCESS) + return ret; - //size_t stepOutputFormatSize = 128; - //char stepOutputFormat[stepOutputFormatSize]; - //if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - // return ret; - - //long unit; - //if ((ret = grib_get_long_internal(h, self->codedUnits, &unit)) != GRIB_SUCCESS) - // return ret; - - //long value; - //if ((ret = grib_get_long_internal(h, self->codedStep, &value)) != GRIB_SUCCESS) - // return ret; - - //Step step{value, unit}; - //step.optimizeUnit(); - - auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); - auto [step, step_b] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); + snprintf(val, *len, "%f%s", step_a.value(), step_a.unit().to_string().c_str()); if (futureOutputEnabled(h)) { - step.hide_hour_unit(); - snprintf(val, *len, "%ld%s", step.value(), step.unit().to_string().c_str()); + snprintf(val, *len, "%f%s", step_a.value(), step_a.unit().to_string().c_str()); } else { - snprintf(val, *len, "%ld", step.value()); + snprintf(val, *len, "%f", step_a.value()); } return GRIB_SUCCESS; diff --git a/src/step.cc b/src/step.cc index b353a38fb..4aa810a08 100644 --- a/src/step.cc +++ b/src/step.cc @@ -9,6 +9,13 @@ #include "step.h" +UnitType::Map UnitType::map_{}; + +std::vector UnitType::unitOrder = { + Unit::SECOND, + Unit::MINUTE, + Unit::HOUR, + }; std::string parse_step(std::string step) { @@ -25,7 +32,7 @@ std::pair, Step> findCommonUnits(const Step& startStep, c if (a.value_ == 0 || b.value_ == 0) { if (a.value_ == 0 && b.value_ == 0) { - Step::Unit unit = a.unit_ > b.unit_ ? a.unit_ : b.unit_; + UnitType unit = a.unit_ > b.unit_ ? a.unit_ : b.unit_; a.setUnit(unit); b.setUnit(unit); } @@ -38,11 +45,11 @@ std::pair, Step> findCommonUnits(const Step& startStep, c return {a, b}; } - auto it = std::find_if(Step::Unit::unitOrder.begin(), Step::Unit::unitOrder.end(), [&](const auto& e) { + auto it = std::find_if(UnitType::unitOrder.begin(), UnitType::unitOrder.end(), [&](const auto& e) { return e == a.unit().to_value() || e == b.unit().to_value(); }); - assert(it != Step::Unit::unitOrder.end()); + assert(it != UnitType::unitOrder.end()); a.setUnit(*it); b.setUnit(*it); diff --git a/src/step.h b/src/step.h index f819002e5..45514441d 100644 --- a/src/step.h +++ b/src/step.h @@ -31,193 +31,171 @@ template using Minutes30 = std::chrono::duration using Missing = std::chrono::duration>; -template -class Step { -public: - class Unit { - public: - enum class Value { - MINUTE = 0, - HOUR = 1, - DAY = 2, - MONTH = 3, - YEAR = 4, - YEARS10 = 5, - YEARS30 = 6, - CENTURY = 7, - HOURS3 = 10, - HOURS6 = 11, - HOURS12 = 12, - SECOND = 13, - MINUTES15 = 14, - MINUTES30 = 15, - MISSING = 255, - }; - +enum class Unit { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, +}; - explicit Unit() : value_(Value::HOUR) {} - explicit Unit(Value unit_value) : value_(unit_value) {} - explicit Unit(const std::string& unit_value) { - value_ = map_.name_to_unit(unit_value); - } +class UnitType { +public: + explicit UnitType() : value_(Unit::HOUR) {} + explicit UnitType(Unit unit_value) : value_(unit_value) {} + explicit UnitType(const std::string& unit_value) {value_ = map_.name_to_unit(unit_value);} + explicit UnitType(long unit_value) {value_ = map_.long_to_unit(unit_value);} + + bool operator>(const UnitType& other) const {return map_.unit_to_duration(value_) > map_.unit_to_duration(other.value_);} + bool operator==(const Unit value) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(value);} + bool operator==(const UnitType& unit) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(unit.value_);} + UnitType& operator=(const Unit value) { + value_ = value; + return *this; + } - explicit Unit(long unit_value) { - value_ = map_.long_to_unit(unit_value); + std::string to_string() const { + if ((value_ == Unit::HOUR) && hide_hour_unit_) { + return ""; } - - bool operator>(const Unit& other) const {return map_.unit_to_duration(value_) > map_.unit_to_duration(other.value_);} - bool operator==(const Value value) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(value);} - bool operator==(const Unit& unit) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(unit.value_);} - Unit& operator=(const Value value) { - value_ = value; - return *this; + else { + return map_.unit_to_name(value_); } + } + long to_long() const {return map_.unit_to_long(value_);} + Unit to_value() const {return value_;} + void hide_hour_unit() {hide_hour_unit_ = true;} + void show_hour_unit() {hide_hour_unit_ = false;} + static std::vector unitOrder; - std::string to_string() const { - if ((value_ == Value::HOUR) && hide_hour_unit_) { - return ""; - } - else { - return map_.unit_to_name(value_); +private: + bool hide_hour_unit_ = false; + class Map { + public: + Map() { + for (const auto& entry : tab_) { + // unit_value <-> unit_name + name_to_value_[entry.unit_name] = entry.unit_value; + value_to_name_[entry.unit_value] = entry.unit_name; + + // unit_value <-> duration in seconds + value_to_duration_[entry.unit_value] = entry.duration; + duration_to_value_[entry.duration] = entry.unit_value; + + // unit_value <-> wmo_code + value_to_long_[entry.unit_value] = static_cast(entry.unit_value); + long_to_value_[static_cast(entry.unit_value)] = entry.unit_value; } } - long to_long() const {return map_.unit_to_long(value_);} - Value to_value() const {return value_;} - void hide_hour_unit() { - hide_hour_unit_ = true; - } - static std::vector unitOrder; + // wmo_code <-> unit_name + std::string unit_to_name(const Unit& unit_value) const {return value_to_name_.at(unit_value);} + Unit name_to_unit(const std::string& name) const {return name_to_value_.at(name);} + + // unit_value <-> duration + long unit_to_duration(const Unit& unit_value) const {return value_to_duration_.at(unit_value);} + Unit duration_to_unit(long duration) const {return duration_to_value_.at(duration);} + + // wmo_code <-> unit_name + long unit_to_long(const Unit& unit_value) const {return value_to_long_.at(unit_value);} + Unit long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} private: - bool hide_hour_unit_ = false; - class Map { - public: - Map() { - for (const auto& entry : tab_) { - // unit_value <-> unit_name - name_to_value_[entry.unit_name] = entry.unit_value; - value_to_name_[entry.unit_value] = entry.unit_name; - - // unit_value <-> duration in seconds - value_to_duration_[entry.unit_value] = entry.duration; - duration_to_value_[entry.duration] = entry.unit_value; - - // unit_value <-> wmo_code - value_to_long_[entry.unit_value] = static_cast(entry.unit_value); - long_to_value_[static_cast(entry.unit_value)] = entry.unit_value; - } - } + struct Entry { + Unit unit_value; + std::string unit_name; + long duration; + }; - // wmo_code <-> unit_name - std::string unit_to_name(const Value& unit_value) const {return value_to_name_.at(unit_value);} - Value name_to_unit(const std::string& name) const {return name_to_value_.at(name);} - - // unit_value <-> duration - long unit_to_duration(const Value& unit_value) const {return value_to_duration_.at(unit_value);} - Value duration_to_unit(long duration) const {return duration_to_value_.at(duration);} - - // wmo_code <-> unit_name - long unit_to_long(const Value& unit_value) const {return value_to_long_.at(unit_value);} - Value long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} - - private: - struct Entry { - Unit::Value unit_value; - std::string unit_name; - long duration; - }; - - const std::array tab_ = { - Entry{Value::MISSING , "MISSING" , 0}, - Entry{Value::SECOND , "s" , 1}, - Entry{Value::MINUTE , "m" , 60}, - Entry{Value::MINUTES15 , "15m" , 900}, - Entry{Value::MINUTES30 , "30m" , 1800}, - Entry{Value::HOUR , "h" , 3600}, - Entry{Value::HOURS3 , "3h" , 10800}, - Entry{Value::HOURS6 , "6h" , 21600}, - Entry{Value::HOURS12 , "12h" , 43200}, - Entry{Value::DAY , "D" , 86400}, - Entry{Value::MONTH , "M" , 2592000}, - Entry{Value::YEAR , "Y" , 31536000}, - Entry{Value::YEARS10 , "10Y" , 315360000}, - Entry{Value::YEARS30 , "30Y" , 946080000}, - Entry{Value::CENTURY , "C" , 3153600000}, - }; - - std::unordered_map name_to_value_; - std::unordered_map value_to_name_; - - std::unordered_map value_to_long_; - std::unordered_map long_to_value_; - - std::unordered_map value_to_duration_; - std::unordered_map duration_to_value_; + const std::array tab_ = { + Entry{Unit::MISSING , "MISSING" , 0}, + Entry{Unit::SECOND , "s" , 1}, + Entry{Unit::MINUTE , "m" , 60}, + Entry{Unit::MINUTES15 , "15m" , 900}, + Entry{Unit::MINUTES30 , "30m" , 1800}, + Entry{Unit::HOUR , "h" , 3600}, + Entry{Unit::HOURS3 , "3h" , 10800}, + Entry{Unit::HOURS6 , "6h" , 21600}, + Entry{Unit::HOURS12 , "12h" , 43200}, + Entry{Unit::DAY , "D" , 86400}, + Entry{Unit::MONTH , "M" , 2592000}, + Entry{Unit::YEAR , "Y" , 31536000}, + Entry{Unit::YEARS10 , "10Y" , 315360000}, + Entry{Unit::YEARS30 , "30Y" , 946080000}, + Entry{Unit::CENTURY , "C" , 3153600000}, }; + std::unordered_map name_to_value_; + std::unordered_map value_to_name_; - Value value_; - static Map map_; - public: - static Map& get_converter() {return map_;} + std::unordered_map value_to_long_; + std::unordered_map long_to_value_; + + std::unordered_map value_to_duration_; + std::unordered_map duration_to_value_; }; + + Unit value_; + static Map map_; +public: + static Map& get_converter() {return map_;} +}; + + + + + +template +class Step { +public: + // Constructors - Step() : value_(0), unit_(Unit::Value::SECOND) {} - Step(T value, const Unit& unit); + Step() : value_(0), unit_(Unit::SECOND) {} + Step(T value, Unit unit); + Step(T value, const UnitType& unit); Step(T value, long unit); Step(T value, const std::string& unit); explicit Step(const std::string& str); // Getters T value() const { return value_; } - Unit unit() const { return unit_; } + UnitType unit() const { return unit_; } // Setters Step& setUnit(long new_unit); Step& setUnit(const std::string& new_unit); - Step& setUnit(const Step::Unit& new_unit); - Step& setUnit(const typename Step::Unit::Value new_unit); + Step& setUnit(const Unit new_unit); + Step& setUnit(const UnitType& new_unit); // Operators bool operator==(const Step& other) const; Step operator+(const Step& step); + operator Step() const {return Step{static_cast(value_), unit_};} // Methods Step& optimizeUnit(); friend std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep); void hide_hour_unit() {unit_.hide_hour_unit();} + void show_hour_unit() {unit_.show_hour_unit();} private: T value_; - Unit unit_; + UnitType unit_; }; -template -//typename Step::Unit::Map Step::Unit::map_ = Step::Unit::Map(); -typename Step::Unit::Map Step::Unit::map_{}; - - -template -std::vector::Unit::Value> Step::Unit::unitOrder = { - Value::SECOND, - Value::MINUTE, - //{StepValue::MINUTES15, 900}, - //{StepValue::MINUTES30, 1800}, - Value::HOUR, - //{StepValue::HOURS3, 10800}, - //{StepValue::HOURS6, 21600}, - //{StepValue::HOURS12, 43200}, - //Value::DAY, - //Value::MONTH, - //{StepValue::YEAR, 31536000}, - //{StepValue::YEARS10, 315360000}, - //{StepValue::YEARS30, 946080000}, - //{StepValue::CENTURY, 3153600000}, - }; std::string parse_step(std::string step); @@ -259,7 +237,16 @@ template std::vector> parse_range(const std::string& range_ template -Step::Step(T value, long unit) : value_{value}, unit_{Unit{unit}} { +Step::Step(T value, Unit unit) : value_{value}, unit_{UnitType{unit}} { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(value >= 0 && value <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } +} + + +template +Step::Step(T value, long unit) : value_{value}, unit_{UnitType{unit}} { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(value >= 0 && value <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); @@ -267,7 +254,7 @@ Step::Step(T value, long unit) : value_{value}, unit_{Unit{unit}} { } template -Step::Step(T value, const std::string& unit) : value_{value}, unit_{Unit{unit}} { +Step::Step(T value, const std::string& unit) : value_{value}, unit_{UnitType{unit}} { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(value >= 0 && value <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); @@ -284,11 +271,11 @@ Step::Step(const std::string& str) { std::string u_str = str.substr(pos); int v = std::stoi(v_str); value_ = v; - unit_ = Unit{u_str}; + unit_ = UnitType{u_str}; } template -Step::Step(T value, const Unit& u) { +Step::Step(T value, const UnitType& u) { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(value >= 0 && value <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); @@ -305,19 +292,19 @@ Step& Step::optimizeUnit() { Seconds duration(0); switch (unit_.to_value()) { - case Unit::Value::SECOND: + case Unit::SECOND: duration = Seconds(value_); break; - case Unit::Value::MINUTE: + case Unit::MINUTE: duration = Minutes(value_); break; - case Unit::Value::HOUR: + case Unit::HOUR: duration = Hours(value_); break; - case Unit::Value::DAY: + case Unit::DAY: duration = Days(value_); break; - case Unit::Value::MONTH: + case Unit::MONTH: duration = Months(value_); break; default: @@ -327,8 +314,8 @@ Step& Step::optimizeUnit() { Seconds d = std::chrono::duration_cast>(duration); - for (auto it = Unit::unitOrder.rbegin(); it != Unit::unitOrder.rend(); ++it) { - long multiplier = Unit::get_converter().unit_to_duration(*it); + for (auto it = UnitType::unitOrder.rbegin(); it != UnitType::unitOrder.rend(); ++it) { + long multiplier = UnitType::get_converter().unit_to_duration(*it); if (d.count() % multiplier == 0) { value_ = duration.count() / multiplier; unit_ = *it; @@ -341,25 +328,25 @@ Step& Step::optimizeUnit() { template Step& Step::setUnit(const std::string& unit_name) { - setUnit(Unit{unit_name}); + setUnit(UnitType{unit_name}); return *this; } template Step& Step::setUnit(long unit_code) { - setUnit(Unit{unit_code}); + setUnit(UnitType{unit_code}); return *this; } template -Step& Step::setUnit(const Step::Unit& new_unit) { +Step& Step::setUnit(const UnitType& new_unit) { setUnit(new_unit.to_value()); return *this; } template -Step& Step::setUnit(const typename Step::Unit::Value new_unit) { +Step& Step::setUnit(const Unit new_unit) { if (value_ == 0) { unit_ = new_unit; return *this; @@ -369,19 +356,19 @@ Step& Step::setUnit(const typename Step::Unit::Value new_unit) { } Seconds duration(0); switch (unit_.to_value()) { - case Unit::Value::SECOND: + case Unit::SECOND: duration = Seconds(value_); break; - case Unit::Value::MINUTE: + case Unit::MINUTE: duration = Minutes(value_); break; - case Unit::Value::HOUR: + case Unit::HOUR: duration = Hours(value_); break; - case Unit::Value::DAY: + case Unit::DAY: duration = Days(value_); break; - case Unit::Value::MONTH: + case Unit::MONTH: duration = Months(value_); break; default: @@ -390,23 +377,23 @@ Step& Step::setUnit(const typename Step::Unit::Value new_unit) { } switch (new_unit) { - case Unit::Value::SECOND: + case Unit::SECOND: value_ = duration.count(); break; - case Unit::Value::MINUTE: + case Unit::MINUTE: value_ = std::chrono::duration_cast>(duration).count(); break; - case Unit::Value::HOUR: + case Unit::HOUR: value_ = std::chrono::duration_cast>(duration).count(); break; - case Unit::Value::DAY: + case Unit::DAY: value_ = std::chrono::duration_cast>(duration).count(); break; - case Unit::Value::MONTH: + case Unit::MONTH: value_ = std::chrono::duration_cast>(duration).count(); break; default: - std::string msg = "Unknown unit: " + Step::Unit{new_unit}.to_string(); + std::string msg = "Unknown unit: " + UnitType{new_unit}.to_string(); throw std::runtime_error(msg); } unit_ = new_unit; diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 19c5cacbd..b216d9d57 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -18,20 +18,25 @@ std::optional> getStep(grib_handle* h, const std::string& value_key, } } + std::optional> getForecastTime(grib_handle* h) { return getStep(h, "forecastTime", "indicatorOfUnitOfTimeRange"); } + std::optional> getLengthOfTimeRange(grib_handle* h) { return getStep(h, "lengthOfTimeRange", "indicatorOfUnitForTimeRange"); } + std::pair, Step> getTimeRange(grib_handle* h) { auto forecast_time = getForecastTime(h); auto length_of_time_range = getLengthOfTimeRange(h); return {forecast_time.value(), forecast_time.value() + length_of_time_range.value_or(Step())}; } + + bool futureOutputEnabled(grib_handle* h) { int ret = 0; size_t stepOutputFormatSize = 128; diff --git a/src/step_utilities.h b/src/step_utilities.h index 2ac9e3e49..21ec426db 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -9,4 +9,36 @@ std::optional> getStep(grib_handle* h, const std::string& value_key, std::optional> getForecastTime(grib_handle* h); std::optional> getLengthOfTimeRange(grib_handle* h); std::pair, Step> getTimeRange(grib_handle* h); +//std::pair, Step> getOptTimeRange(grib_handle* h); bool futureOutputEnabled(grib_handle* h); + +template int getOptTimeRange(grib_handle* h, Step& s_a, Step& s_b); +//std::pair, Step> getOptTimeRange(grib_handle* h) { + +template +int getOptTimeRange(grib_handle* h, Step& s_a, Step& s_b) { + auto [step_a, step_b] = getTimeRange(h); + + long unit_code = 0; + if (grib_get_long_internal(h, "stepUnits", &unit_code) != GRIB_SUCCESS) + return {}; + + UnitType wanted_unit{unit_code}; + try { + if (wanted_unit == Unit::MISSING) { + std::tie(s_a, s_b) = findCommonUnits(step_a.optimizeUnit(), step_b.optimizeUnit()); + } + else { + s_a = static_cast>(step_a).setUnit(unit_code); + s_b = static_cast>(step_b).setUnit(unit_code); + } + } + catch (...) { + return GRIB_INVALID_ARGUMENT; + } + + s_a.hide_hour_unit(); + s_b.hide_hour_unit(); + return GRIB_SUCCESS; +} + diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 90a3f59f0..a46f111a1 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -10,6 +10,20 @@ . ./include.ctest.sh +grib_expect_failure() +{ + a_file=$1 + a_params=$2 + ${tools_dir}/grib_get $a_params $a_file > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "File: '$a_file'" + echo "Key(s): '$a_params'" + echo "Expected: 'failure'" + echo "Result: 'success'" + exit 1 + fi +} + grib_check_key_equals() { a_file=$1 @@ -37,16 +51,59 @@ keys_i="step:i" keys_d="step:d" -${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 m" -grib_check_key_equals $temp "-p $keys__" "0" -grib_check_key_equals $temp "-y -p $keys__" "0" -grib_check_key_equals $temp "-p $keys_s" "0" -grib_check_key_equals $temp "-y -p $keys_s" "0m" -grib_check_key_equals $temp "-p $keys_i" "0" -grib_check_key_equals $temp "-y -p $keys_i" "0" -grib_check_key_equals $temp "-p $keys_d" "0" -grib_check_key_equals $temp "-y -p $keys_d" "0" +${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "3540" +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" +#grib_expect_failure $temp "-y -p $keys__ -s stepUnits=h" # TODO(EB): check behaviour +#exit +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" +grib_expect_failure $temp "-y -p $keys_s -s stepUnits=h" +exit + +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" + +exit + + + +fn="${data_dir}/reduced_gaussian_surface.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +keys__="step" +keys_s="step:s" +keys_i="step:i" +keys_d="step:d" + + +#${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp +#grib_check_key_equals $temp "-p $low_level_keys" "0 m" +#grib_check_key_equals $temp "-p $keys__" "0" +#grib_check_key_equals $temp "-y -p $keys__" "0" +#grib_check_key_equals $temp "-p $keys_s" "0" +#grib_check_key_equals $temp "-y -p $keys_s" "0m" +#grib_check_key_equals $temp "-p $keys_i" "0" +#grib_check_key_equals $temp "-y -p $keys_i" "0" +#grib_check_key_equals $temp "-p $keys_d" "0" +#grib_check_key_equals $temp "-y -p $keys_d" "0" + +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "0s" +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "0m" +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "0s" +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "0m" +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0" +#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" +#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" +#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" +#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" +#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" +#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" + ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "59 m" @@ -117,7 +174,7 @@ grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" grib_check_key_equals $temp "-p $keys__" "0-2 0 2" grib_check_key_equals $temp "-y -p $keys__" "0-2 0 2" grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" -grib_check_key_equals $temp "-y -p $keys_s" "0-2 0m 2" +grib_check_key_equals $temp "-y -p $keys_s" "0-2 0 2" grib_check_key_equals $temp "-p $keys_i" "2 0 2" grib_check_key_equals $temp "-y -p $keys_i" "2 0 2" grib_check_key_equals $temp "-p $keys_d" "2 0 2" @@ -157,12 +214,12 @@ ${tools_dir}/grib_set -s forecastTime=45,indicatorOfUnitOfTimeRange=m,lengthOfTi grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" grib_check_key_equals $temp "-p $keys__" "45-60 45 60" grib_check_key_equals $temp "-y -p $keys__" "45m-60m 45 60" -grib_check_key_equals $temp "-p $keys_s" "45-60 45 1" -grib_check_key_equals $temp "-y -p $keys_s" "45m-60m 45m 1" +grib_check_key_equals $temp "-p $keys_s" "45-60 45 60" +grib_check_key_equals $temp "-y -p $keys_s" "45m-60m 45m 60m" grib_check_key_equals $temp "-p $keys_i" "60 45 60" -grib_check_key_equals $temp "-y -p $keys_i" "1 45 60" +grib_check_key_equals $temp "-y -p $keys_i" "60 45 60" grib_check_key_equals $temp "-p $keys_d" "60 45 60" -grib_check_key_equals $temp "-y -p $keys_d" "1 45 60" +grib_check_key_equals $temp "-y -p $keys_d" "60 45 60" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp @@ -193,9 +250,9 @@ grib_check_key_equals $temp "-p $keys__" "18-24 18 24" grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" # TODO(EB): Check if output of stepRange:i makes sense. grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" -grib_check_key_equals $temp "-p $keys_d" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" # TODO(EB): Check if output of stepRange:d makes sense. grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp From 9cd5041d537f2190278af887eba53287e31e44fb Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 06:10:07 +0000 Subject: [PATCH 016/469] ECC-1620: Prototype --- .../grib2/template.4.forecast_time.def | 8 +- src/CMakeLists.txt | 1 + src/grib_accessor_class.h | 1 + src/grib_accessor_class_g2end_step.cc | 438 ++++++++++-------- src/grib_accessor_class_g2step_range.cc | 236 ++++++---- src/grib_accessor_class_step_in_units.cc | 177 ++++--- src/grib_accessor_classes_hash.cc | 158 ++++--- src/grib_accessor_factory.h | 1 + src/grib_accessor_factory_hash_list | 1 + src/step.cc | 217 +++++++-- src/step.h | 324 +++++-------- src/step_utilities.cc | 31 +- src/step_utilities.h | 42 +- tests/grib_ecc-1620.sh | 171 +++++-- tests/grib_step.sh | 5 +- 15 files changed, 1061 insertions(+), 750 deletions(-) diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 662310fc6..00df0b1a2 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -10,9 +10,11 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; # Indicator of unit of time range codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 -template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +#alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 +#alias forecastTimeUnit = indicatorOfUnitOfTimeRange; +#template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; +#codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 69f39a820..8868d07fe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -167,6 +167,7 @@ list( APPEND eccodes_src_files grib_accessor_class_signed_bits.cc grib_accessor_class_section.cc grib_accessor_class_step_in_units.cc + grib_accessor_class_optimal_step_units.cc grib_accessor_class_section_length.cc grib_accessor_class_g1_message_length.cc grib_accessor_class_g1_section4_length.cc diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 6aca52e29..ea6480a77 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -156,6 +156,7 @@ extern grib_accessor_class* grib_accessor_class_octahedral_gaussian; extern grib_accessor_class* grib_accessor_class_octet_number; extern grib_accessor_class* grib_accessor_class_offset_file; extern grib_accessor_class* grib_accessor_class_offset_values; +extern grib_accessor_class* grib_accessor_class_optimal_step_units; extern grib_accessor_class* grib_accessor_class_pack_bufr_values; extern grib_accessor_class* grib_accessor_class_pad; extern grib_accessor_class* grib_accessor_class_padding; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index e43de49aa..304cc772f 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -20,6 +20,8 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* start_step MEMBERS = const char* unit @@ -57,12 +59,12 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_long(grib_accessor*, const long* val, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); static int pack_double(grib_accessor*, const double* val, size_t* len); +static int pack_long(grib_accessor*, const long* val, size_t* len); +static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); -static int pack_string(grib_accessor*, const char* val, size_t* len); -static int unpack_string(grib_accessor*, char* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -115,9 +117,9 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, //&pack_double, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, //&unpack_double, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -241,36 +243,27 @@ static int convert_time_range( Assert(lengthOfTimeRange != NULL); if (indicatorOfUnitForTimeRange != stepUnits) { - Step step{(int) *lengthOfTimeRange, indicatorOfUnitForTimeRange}; - if (stepUnits != 255) { - step.setUnit(stepUnits); + long u2sf_step_unit; + long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; + if (coded_time_range_sec < 0) { + long u2sf; + int factor = 60; + if (u2s2[indicatorOfUnitForTimeRange] % factor) + return GRIB_DECODING_ERROR; + if (u2s[stepUnits] % factor) + return GRIB_DECODING_ERROR; + u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; + coded_time_range_sec = (*lengthOfTimeRange) * u2sf; + u2sf_step_unit = u2s[stepUnits] / factor; } else { - step.setUnit(indicatorOfUnitForTimeRange); + u2sf_step_unit = u2s[stepUnits]; } - *lengthOfTimeRange = step.value(); - - //long u2sf_step_unit; - //long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; - //if (coded_time_range_sec < 0) { - // long u2sf; - // int factor = 60; - // if (u2s2[indicatorOfUnitForTimeRange] % factor) - // return GRIB_DECODING_ERROR; - // if (u2s[stepUnits] % factor) - // return GRIB_DECODING_ERROR; - // u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; - // coded_time_range_sec = (*lengthOfTimeRange) * u2sf; - // u2sf_step_unit = u2s[stepUnits] / factor; - //} - //else { - // u2sf_step_unit = u2s[stepUnits]; - //} - //if (coded_time_range_sec % u2sf_step_unit != 0) { - // grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); - // return GRIB_WRONG_STEP_UNIT; - //} - //*lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; + if (coded_time_range_sec % u2sf_step_unit != 0) { + grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); + return GRIB_WRONG_STEP_UNIT; + } + *lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; } return GRIB_SUCCESS; @@ -381,10 +374,20 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len) static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + //if (futureOutputEnabled(h)) { + // StepRange range; + // if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) + // return ret; + + // *val = range.endStep().value(); + //} + //else { int err = 0; long start_step; long numberOfTimeRange; - grib_handle* h = grib_handle_of_accessor(a); if ((err = grib_get_long_internal(h, self->start_step, &start_step))) return err; @@ -401,208 +404,275 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); if (numberOfTimeRange == 1) { - return unpack_one_time_range(a, val, len); + ret = unpack_one_time_range(a, val, len); + return ret; } else { - return unpack_multiple_time_ranges(a, val, len); + ret = unpack_multiple_time_ranges(a, val, len); + return ret; } + //} + + return GRIB_SUCCESS; } // TODO(maee): Re-implement calendar-based stepRange using std::chrono static int pack_long(grib_accessor* a, const long* val, size_t* len) { - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int err = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - return ret; + long year; + long month; + long day; + long hour; + long minute; + long second; - if (strcmp(stepOutputFormat, "future") == 0) { - Step step{*val, "h"}; - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit().to_long()); - if (ret) - return ret; + long start_step; + long unit, coded_unit; + long year_of_end_of_interval; + long month_of_end_of_interval; + long day_of_end_of_interval; + long hour_of_end_of_interval; + long minute_of_end_of_interval = 0; + long second_of_end_of_interval = 0; - ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); - if (ret) - return ret; - return GRIB_SUCCESS; - } - else { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - - int err = 0; - - long year; - long month; - long day; - long hour; - long minute; - long second; - - long start_step; - long unit, coded_unit; - long year_of_end_of_interval; - long month_of_end_of_interval; - long day_of_end_of_interval; - long hour_of_end_of_interval; - long minute_of_end_of_interval = 0; - long second_of_end_of_interval = 0; - - long coded_time_range, time_range, typeOfTimeIncrement; - - double dend, dstep; - - /*point in time */ - if (self->year == NULL) { - err = grib_set_long_internal(h, self->start_step, *val); - return err; - } + long coded_time_range, time_range, typeOfTimeIncrement; - if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) - return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) - return err; - if ((err = grib_get_long_internal(h, self->year, &year))) - return err; - if ((err = grib_get_long_internal(h, self->month, &month))) - return err; - if ((err = grib_get_long_internal(h, self->day, &day))) - return err; - if ((err = grib_get_long_internal(h, self->hour, &hour))) - return err; - if ((err = grib_get_long_internal(h, self->minute, &minute))) - return err; - if ((err = grib_get_long_internal(h, self->second, &second))) - return err; + double dend, dstep; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) - return err; - if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) - return err; + /*point in time */ + if (self->year == NULL) { + err = grib_set_long_internal(h, self->start_step, *val); + return err; + } - time_range = *val - start_step; + if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) + return err; + if ((err = grib_get_long_internal(h, self->unit, &unit))) + return err; + if ((err = grib_get_long_internal(h, self->year, &year))) + return err; + if ((err = grib_get_long_internal(h, self->month, &month))) + return err; + if ((err = grib_get_long_internal(h, self->day, &day))) + return err; + if ((err = grib_get_long_internal(h, self->hour, &hour))) + return err; + if ((err = grib_get_long_internal(h, self->minute, &minute))) + return err; + if ((err = grib_get_long_internal(h, self->second, &second))) + return err; - if (time_range < 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%ld < %ld)", *val, start_step); - return GRIB_WRONG_STEP; - } + if ((err = grib_get_long_internal(h, self->start_step, &start_step))) + return err; + if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) + return err; - err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); - if (err != GRIB_SUCCESS) - return err; + time_range = *val - start_step; - dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ - dend += dstep; + if (time_range < 0) { + grib_context_log(h->context, GRIB_LOG_ERROR, + "endStep < startStep (%ld < %ld)", *val, start_step); + return GRIB_WRONG_STEP; + } - err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, - &day_of_end_of_interval, &hour_of_end_of_interval, - &minute_of_end_of_interval, &second_of_end_of_interval); - if (err != GRIB_SUCCESS) - return err; + err = grib_datetime_to_julian(year, month, day, hour, minute, second, &dend); + if (err != GRIB_SUCCESS) + return err; - if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) - return err; - if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) - return err; + dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ + dend += dstep; - if (time_range * u2s[unit] % u2s2[coded_unit]) { - coded_unit = unit; - if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) - return err; - coded_time_range = time_range; - } - else - coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, + &day_of_end_of_interval, &hour_of_end_of_interval, + &minute_of_end_of_interval, &second_of_end_of_interval); + if (err != GRIB_SUCCESS) + return err; - if (typeOfTimeIncrement != 1) { - /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ - /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ - if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) - return err; - } + if ((err = grib_set_long_internal(h, self->year_of_end_of_interval, year_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->month_of_end_of_interval, month_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->day_of_end_of_interval, day_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->hour_of_end_of_interval, hour_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->minute_of_end_of_interval, minute_of_end_of_interval))) + return err; + if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) + return err; - return GRIB_SUCCESS; + if (time_range * u2s[unit] % u2s2[coded_unit]) { + coded_unit = unit; + if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) + return err; + coded_time_range = time_range; + } + else + coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + + if (typeOfTimeIncrement != 1) { + /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ + /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ + if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) + return err; } + + return GRIB_SUCCESS; } -static int pack_string(grib_accessor* a, const char* val, size_t* len) { - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step step = Step(parse_step(std::string(val))); + long step_units_old; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + return ret; - ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", step.unit().to_long()); - if (ret) + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) return ret; - ret = grib_set_long_internal(h, "lengthOfTimeRange", step.value()); - if (ret) + long step_value; + size_t step_len = 0; + if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; - return GRIB_SUCCESS; -} -static int unpack_string(grib_accessor* a, char* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + Step step(step_value, Unit::SECOND); + step.setUnit(step_units_old); - auto [start, stop] = getTimeRange(h); - auto [step_a, step_b] = findCommonUnits(start.optimizeUnit(), stop.optimizeUnit()); - step_a.hide_hour_unit(); - step_b.hide_hour_unit(); + if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) + return ret; + step.hideHourUnit(); if (futureOutputEnabled(h)) { - snprintf(val, *len, "%ld%s", step_b.value(), step_b.unit().to_string().c_str()); + snprintf(val, *len, "%s", step.toString().c_str()); } else { - snprintf(val, *len, "%ld", step_b.value()); + snprintf(val, *len, "%ld", step.value()); } + return GRIB_SUCCESS; -} -static int pack_double(grib_accessor* a, const double* val, size_t* len) { - // not implemented - return GRIB_NOT_IMPLEMENTED; -} -static int unpack_double(grib_accessor* a, double* val, size_t* len) { //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //long start_step_long; + //size_t start_step_len = 0; + //if ((ret = unpack_long(a, &start_step_long, &start_step_len)) != GRIB_SUCCESS) + // return ret; + + //long step_units; + //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + // return ret; + + //Step start_step(start_step_long, step_units); + //start_step.hideHourUnit(); + //if (futureOutputEnabled(h)) { + // snprintf(val, *len, "%s", start_step.toString().c_str()); + //} + //else { + // snprintf(val, *len, "%ld", start_step.value()); + //} + + //return GRIB_SUCCESS; +} + + +static int pack_double(grib_accessor* a, const double* val, size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long unit; - ret = grib_get_long_internal(h, "indicatorOfUnitForTimeRange", &unit); - if (ret) + long step_units; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; + Step end_step{*val, step_units}; - long value; - ret = grib_get_long_internal(h, "lengthOfTimeRange", &value); - if (ret) + end_step.optimizeUnit(); + if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().toLong())) != GRIB_SUCCESS) return ret; + long end_step_value = end_step.value(); - long stepUnits; - ret = grib_get_long_internal(h, "stepUnits", &stepUnits); - if (ret) + if ((ret = pack_long(a, &end_step_value, len)) != GRIB_SUCCESS) return ret; - Step step = Step(value, unit); - *val = step.setUnit(stepUnits).value(); + return GRIB_SUCCESS; +} + + +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + Step end_step = step_from_string(val); + end_step.optimizeUnit(); + if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().toLong())) != GRIB_SUCCESS) + return ret; + + double end_step_value = end_step.value(); + size_t end_step_len = 0; + + if ((ret = pack_double(a, &end_step_value, &end_step_len)) != GRIB_SUCCESS) + return ret; + return GRIB_SUCCESS; + + ////grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //if (futureOutputEnabled(h)) { + // // TODO(EB): Export code to a function + // long stepUnitsLong; + // if ((ret = grib_get_long_internal(h, "stepUnits", &stepUnitsLong)) != GRIB_SUCCESS) + // return ret; + // UnitType stepUnits{stepUnitsLong}; + + // StepRange range; + // getOptTimeRange(h, range); + // UnitType endStepUnit = range.endStep().unit(); + // Step endStep{parseStep(val)}; + // Step length = endStep - range.startStep(); + // if (stepUnits != Unit::MISSING) { + // length.setUnit(stepUnits); + // } + + // length.optimizeUnit(); + // if ((ret = grib_set_double_internal(h, "lengthOfTimeRange", length.value()) != GRIB_SUCCESS)) + // return ret; + // if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", length.unit().toLong())) != GRIB_SUCCESS) + // return ret; + // return GRIB_SUCCESS; + //} + //else { + // return GRIB_NOT_IMPLEMENTED; + //} +} + + +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + long a_val; + if ((ret = unpack_long(a, &a_val, len)) != GRIB_SUCCESS) + return ret; + long step_units; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + Step end_step{a_val, step_units}; + *val = end_step.value(); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index a3ff5a0bb..b103f02f6 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -14,6 +14,7 @@ #include "grib_api_internal.h" #include "step.h" +#include "step_range.h" #include "step_utilities.h" #include /* @@ -23,7 +24,9 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = pack_string;unpack_string;value_count - IMPLEMENTS = pack_long;unpack_long;dump + IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = get_native_type;string_length IMPLEMENTS = init MEMBERS = const char* startStep @@ -43,13 +46,14 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); +static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); -static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); typedef struct grib_accessor_g2step_range @@ -72,7 +76,7 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { &init, /* init */ 0, /* post_init */ 0, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ @@ -84,9 +88,9 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -140,43 +144,49 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; + long start_value = 0; + long end_value = 0; + long step_units_value = 0; + + if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) + return ret; - if (futureOutputEnabled(h)) { - Step step_a; - Step step_b; - if ((ret = getOptTimeRange(h, step_a, step_b)) != GRIB_SUCCESS) - return ret; - if (step_a == step_b) { - //snprintf(buf, sizeof(buf), "%ld%s", step_a.value(), step_a.unit().to_string().c_str()); - snprintf(buf, sizeof(buf), "%0.2f%s", step_a.value(), step_a.unit().to_string().c_str()); + Step start_step = Step(start_value, step_units_value); + start_step.hideHourUnit(); + if (self->endStep == NULL) { + if (futureOutputEnabled(h)) { + snprintf(buf, sizeof(buf), "%s", start_step.toString().c_str()); } else { - //snprintf(buf, sizeof(buf), "%ld%s-%ld%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); - snprintf(buf, sizeof(buf), "%0.2f%s-%0.2f%s", step_a.value(), step_a.unit().to_string().c_str(), step_b.value(), step_b.unit().to_string().c_str()); + snprintf(buf, sizeof(buf), "%ld", start_value); } } else { - long start = 0, theEnd = 0; - - ret = grib_get_long_internal(h, self->startStep, &start); - if (ret) + if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) return ret; - if (self->endStep == NULL) { - snprintf(buf, sizeof(buf), "%ld", start); + if (futureOutputEnabled(h)) { + Step end_step = Step(end_value, step_units_value); + end_step.hideHourUnit(); + if (start_value == end_value) { + snprintf(buf, sizeof(buf), "%s", end_step.toString().c_str()); + } + else { + snprintf(buf, sizeof(buf), "%s-%s", start_step.toString().c_str(), end_step.toString().c_str()); + } } else { - if ((ret = grib_get_long_internal(h, self->endStep, &theEnd)) != GRIB_SUCCESS) - return ret; - - if (start == theEnd) { - snprintf(buf, sizeof(buf), "%ld", theEnd); + if (start_value == end_value) { + snprintf(buf, sizeof(buf), "%ld", end_value); } else { - snprintf(buf, sizeof(buf), "%ld-%ld", start, theEnd); + snprintf(buf, sizeof(buf), "%ld-%ld", start_value, end_value); } } + } size = strlen(buf) + 1; @@ -198,62 +208,26 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) - return ret; + std::vector steps = parseRange(val); + if (steps.size() == 0) + return GRIB_INVALID_ARGUMENT; - if (strcmp(stepOutputFormat, "future") == 0) { - std::vector> steps = parse_range(val); - if (steps.size() == 0) { - return GRIB_INVALID_ARGUMENT; - } - if (steps.size() == 1) { - steps[0].optimizeUnit(); - if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", steps[0].unit().to_long()))) - return ret; - if ((ret = grib_set_long_internal(h, "forecastTime", steps[0].value()))) - return ret; - } - else if (steps.size() == 2) { - steps[0].optimizeUnit(); - steps[1].optimizeUnit(); - auto [s0, s1] = findCommonUnits(steps[0], steps[1]); - - if ((ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", s0.unit().to_long()))) - return ret; - if ((ret = grib_set_long_internal(h, "forecastTime", s0.value()))) - return ret; - - if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", s1.unit().to_long()))) - return ret; - if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", s1.value()))) - return ret; - } - else { - std::string msg = std::string("Invalid range: ") + val; - throw std::runtime_error(msg); - } + Step step_0 = steps[0]; + Step step_1; + if (steps.size() > 1) { + std::tie(step_0, step_1) = findCommonUnits(steps[0].optimizeUnit(), steps[1].optimizeUnit()); + if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().toLong()))) + return ret; } - else { - long start = 0, theEnd = -1; - char *p = NULL, *q = NULL; - start = strtol(val, &p, 10); - theEnd = start; + if ((ret = grib_set_long_internal(h, self->startStep, step_0.value()))) + return ret; - if (*p != 0) - theEnd = strtol(++p, &q, 10); - if ((ret = grib_set_long_internal(h, self->startStep, start))) + if ((self->endStep != NULL) && (steps.size() > 1)) { + if ((ret = grib_set_long_internal(h, self->endStep, step_1.value()))) return ret; - - if (self->endStep != NULL) { - if ((ret = grib_set_long_internal(h, self->endStep, theEnd))) - return ret; - } } - - return 0; + return GRIB_SUCCESS; } static int value_count(grib_accessor* a, long* count) @@ -276,40 +250,96 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return pack_string(a, buff, &bufflen); } +static int pack_double(grib_accessor* a, const double* val, size_t* len) +{ + // TODO(EB) + return GRIB_NOT_IMPLEMENTED; +} + +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + char buf[100]; + int ret = 0; + size_t size = 0; + long start_value = 0; + long end_value = 0; + long step_units_value = 0; + + if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) + return ret; + + Step start_step = Step(start_value, step_units_value); + start_step.hideHourUnit(); + if (self->endStep == NULL) { + *val = start_step.value(); + } + else { + if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) + return ret; + Step end_step = Step(end_value, step_units_value); + *val = end_step.value(); + } + + return GRIB_SUCCESS; + + ////grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //StepRange range; + //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) + // return ret; + + //*val = range.endStep().value(); + + //return 0; +} + static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + char buf[100]; + int ret = 0; + size_t size = 0; + long start_value = 0; + long end_value = 0; + long step_units_value = 0; - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) return ret; - //if (strcmp(stepOutputFormat, "future") == 0) { - auto [forcastTime, lengthOfTimeRange] = getTimeRange(h); - auto [optForecastTime, optLenghtOfTimeRange] = findCommonUnits(forcastTime.optimizeUnit(), lengthOfTimeRange.optimizeUnit()); - *val = optLenghtOfTimeRange.value(); - //} - //else { - // char buff[100]; - // size_t bufflen = 100; - // long start, theEnd; - // char* p = buff; - // char* q = NULL; - // if ((ret = unpack_string(a, buff, &bufflen)) != GRIB_SUCCESS) - // return ret; - - // start = strtol(buff, &p, 10); - // theEnd = start; - // if (*p != 0) - // theEnd = strtol(++p, &q, 10); - - // *val = theEnd; - //} + Step start_step = Step(start_value, step_units_value); + start_step.hideHourUnit(); + if (self->endStep == NULL) { + *val = start_step.value(); + } + else { + if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) + return ret; + Step end_step = Step(end_value, step_units_value); + *val = end_step.value(); + } + + return GRIB_SUCCESS; + + ////grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; - return 0; + //StepRange range; + //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) + // return ret; + + //*val = range.endStep().value(); + + //return 0; } static int get_native_type(grib_accessor* a) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index b8b27d0bb..e26e5a3ed 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -19,6 +19,8 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* codedStep MEMBERS = const char* codedUnits @@ -40,12 +42,12 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_long(grib_accessor*, const long* val, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); static int pack_double(grib_accessor*, const double* val, size_t* len); +static int pack_long(grib_accessor*, const long* val, size_t* len); +static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); -static int pack_string(grib_accessor*, const char* val, size_t* len); -static int unpack_string(grib_accessor*, char* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -85,9 +87,9 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - 0, //&pack_double, /* pack_double */ + &pack_double, /* pack_double */ 0, /* pack_float */ - 0, //&unpack_double, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -175,19 +177,20 @@ static const int u2s[] = { static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - int err = 0; - long codedStep, codedUnits, stepUnits; grib_handle* h = grib_handle_of_accessor(a); + int ret; + + long codedStep, codedUnits, stepUnits; int factor = 0; long u2sf, u2sf_step_unit; - if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) - return err; - if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) - return err; - if ((err = grib_get_long_internal(h, self->codedStep, &codedStep))) - return err; + if ((ret = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + return ret; + if ((ret = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + return ret; + if ((ret = grib_get_long_internal(h, self->codedStep, &codedStep))) + return ret; if (stepUnits != codedUnits) { *val = codedStep * u2s2[codedUnits]; @@ -206,9 +209,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } if (*val % u2sf_step_unit != 0) { - err = grib_set_long_internal(h, self->stepUnits, codedUnits); + ret = grib_set_long_internal(h, self->stepUnits, codedUnits); *val = codedStep; - return err; + return ret; } *val = *val / u2sf_step_unit; } @@ -220,22 +223,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //Step step{*val, "h"}; - //ret = grib_set_long_internal(h, "indicatorOfUnitOfTimeRange", step.unit().to_long()); - //if (ret) - // return ret; - - //ret = grib_set_long_internal(h, "forecastTime", step.value()); - //if (ret) - // return ret; - //return GRIB_SUCCESS; - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); + int err = 0; long codedStep, codedUnits, stepUnits; long oldStep = 0; @@ -285,73 +275,140 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); } -static int pack_string(grib_accessor* a, const char* val, size_t* len) { +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step step = Step(parse_step(std::string(val))); - ret = grib_set_long_internal(h, self->codedUnits, step.unit().to_long()); - if (ret) - return ret; + Step step = step_from_string(val); + step.optimizeUnit(); - ret = grib_set_long_internal(h, self->codedStep, step.value()); - if (ret) + if ((ret = grib_set_long_internal(h, self->stepUnits, step.unit().toLong()))) return ret; + long step_value = step.value(); + if ((ret = pack_long(a, &step_value, len)) != GRIB_SUCCESS) + return ret; + + //if ((ret = grib_set_long_internal(h, self->codedUnits, step.unit().toLong()))) + // return ret; + + //long step_value = step.value(); + //size_t step_value_len = 0; + //if ((ret = pack_long(a, &step_value, &step_value_len)) != GRIB_SUCCESS) + // return ret; return GRIB_SUCCESS; } -static int unpack_string(grib_accessor* a, char* val, size_t* len) { +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - //auto [step, step_b] = getOptTimeRange(h); - Step step_a; - Step step_b; - if ((ret = getOptTimeRange(h, step_a, step_b)) != GRIB_SUCCESS) + + long step_units_old; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + return ret; + + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) + return ret; + + long step_value; + size_t step_len = 0; + if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; - snprintf(val, *len, "%f%s", step_a.value(), step_a.unit().to_string().c_str()); + Step step(step_value, Unit::SECOND); + step.setUnit(step_units_old); + + if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) + return ret; + + step.hideHourUnit(); if (futureOutputEnabled(h)) { - snprintf(val, *len, "%f%s", step_a.value(), step_a.unit().to_string().c_str()); + snprintf(val, *len, "%s", step.toString().c_str()); } else { - snprintf(val, *len, "%f", step_a.value()); + snprintf(val, *len, "%ld", step.value()); } return GRIB_SUCCESS; -} + ////grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + //StepRange range; + //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) + // return ret; + //if (futureOutputEnabled(h)) { + // snprintf(val, *len, "%s", range.startStepToString().c_str()); + //} + //else { + // snprintf(val, *len, "%ld", range.startStep().value()); + //} -static int pack_double(grib_accessor* a, const double* val, size_t* len) { - return GRIB_NOT_IMPLEMENTED; + //return GRIB_SUCCESS; } -static int unpack_double(grib_accessor* a, double* val, size_t* len) { +static int pack_double(grib_accessor* a, const double* val, size_t* len) +{ grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long unit; - ret = grib_get_long_internal(h, self->codedUnits, &unit); - if (ret) + long step_units; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; + Step start_step{*val, step_units}; - long value; - ret = grib_get_long_internal(h, self->codedStep, &value); - if (ret) + start_step.optimizeUnit(); + if ((ret = grib_set_long_internal(h, "stepUnits", start_step.unit().toLong())) != GRIB_SUCCESS) return ret; + long start_step_value = start_step.value(); - long stepUnits; - ret = grib_get_long_internal(h, self->stepUnits, &stepUnits); - if (ret) + if ((ret = pack_long(a, &start_step_value, len)) != GRIB_SUCCESS) return ret; - Step step{(double) value, unit}; - *val = step.setUnit(stepUnits).value(); + return GRIB_SUCCESS; +} + +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret; + + long step_units_old; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + return ret; + UnitType step_units{step_units_old}; + + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) + return ret; + + long value_secs; + size_t value_secs_len = 0; + if ((ret = unpack_long(a, &value_secs, &value_secs_len)) != GRIB_SUCCESS) + return ret; + + Step step(value_secs, Unit::SECOND); + step.setUnit(step_units_old); + *val = step.value(); return GRIB_SUCCESS; + + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret; + + //StepRange range; + //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) + // return ret; + + //*val = range.startStep().value(); + //return GRIB_SUCCESS; + return GRIB_NOT_IMPLEMENTED; } diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index a27a7a7a0..8f0f5075f 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -37,7 +37,7 @@ #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 218 +#define TOTAL_KEYWORDS 219 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 @@ -51,7 +51,8 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; #endif #endif -static unsigned int grib_accessor_classes_get_id (const char *str, size_t len) +static unsigned int +grib_accessor_classes_get_id (register const char *str, register size_t len) { static const unsigned short asso_values[] = { @@ -82,7 +83,7 @@ static unsigned int grib_accessor_classes_get_id (const char *str, size_t len) 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680 }; - unsigned int hval = len; + register unsigned int hval = len; switch (hval) { @@ -134,20 +135,20 @@ static const struct accessor_class_hash classes[] = {"int64", &grib_accessor_class_int64}, #line 72 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 202 "accessor_class_list.gperf" +#line 203 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, #line 69 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, {""}, -#line 190 "accessor_class_list.gperf" +#line 191 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, -#line 180 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 187 "accessor_class_list.gperf" +#line 188 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, -#line 181 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 203 "accessor_class_list.gperf" +#line 204 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, #line 70 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, @@ -157,19 +158,19 @@ static const struct accessor_class_hash classes[] = #line 13 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, {""}, -#line 182 "accessor_class_list.gperf" - {"section_length", &grib_accessor_class_section_length}, #line 183 "accessor_class_list.gperf" + {"section_length", &grib_accessor_class_section_length}, +#line 184 "accessor_class_list.gperf" {"section_padding", &grib_accessor_class_section_padding}, -#line 196 "accessor_class_list.gperf" +#line 197 "accessor_class_list.gperf" {"statistics", &grib_accessor_class_statistics}, -#line 199 "accessor_class_list.gperf" +#line 200 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, -#line 188 "accessor_class_list.gperf" +#line 189 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, -#line 193 "accessor_class_list.gperf" +#line 194 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, -#line 167 "accessor_class_list.gperf" +#line 168 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, #line 76 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, @@ -177,7 +178,7 @@ static const struct accessor_class_hash classes[] = #line 79 "accessor_class_list.gperf" {"dirty", &grib_accessor_class_dirty}, {""}, {""}, -#line 197 "accessor_class_list.gperf" +#line 198 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, #line 78 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, @@ -187,7 +188,7 @@ static const struct accessor_class_hash classes[] = {""}, #line 112 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, -#line 205 "accessor_class_list.gperf" +#line 206 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, #line 127 "accessor_class_list.gperf" {"int16", &grib_accessor_class_int16}, @@ -197,7 +198,7 @@ static const struct accessor_class_hash classes[] = #line 46 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, {""}, -#line 184 "accessor_class_list.gperf" +#line 185 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, #line 68 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, @@ -225,32 +226,32 @@ static const struct accessor_class_hash classes[] = #line 109 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, {""}, -#line 206 "accessor_class_list.gperf" +#line 207 "accessor_class_list.gperf" {"to_string", &grib_accessor_class_to_string}, {""}, {""}, #line 134 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, -#line 168 "accessor_class_list.gperf" +#line 169 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, {""}, {""}, -#line 209 "accessor_class_list.gperf" +#line 210 "accessor_class_list.gperf" {"trim", &grib_accessor_class_trim}, {""}, #line 65 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, -#line 174 "accessor_class_list.gperf" +#line 175 "accessor_class_list.gperf" {"raw", &grib_accessor_class_raw}, {""}, #line 82 "accessor_class_list.gperf" {"element", &grib_accessor_class_element}, -#line 169 "accessor_class_list.gperf" +#line 170 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, #line 103 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, {""}, {""}, #line 156 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 207 "accessor_class_list.gperf" +#line 208 "accessor_class_list.gperf" {"transient", &grib_accessor_class_transient}, #line 14 "accessor_class_list.gperf" {"assert", &grib_accessor_class_assert}, @@ -262,7 +263,7 @@ static const struct accessor_class_hash classes[] = {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, #line 63 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 208 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" {"transient_darray", &grib_accessor_class_transient_darray}, {""}, #line 101 "accessor_class_list.gperf" @@ -277,7 +278,7 @@ static const struct accessor_class_hash classes[] = #line 12 "accessor_class_list.gperf" {"array", &grib_accessor_class_array}, {""}, {""}, {""}, {""}, -#line 175 "accessor_class_list.gperf" +#line 176 "accessor_class_list.gperf" {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, #line 67 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, @@ -285,59 +286,59 @@ static const struct accessor_class_hash classes[] = #line 119 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, {""}, -#line 186 "accessor_class_list.gperf" +#line 187 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, #line 139 "accessor_class_list.gperf" {"laplacian", &grib_accessor_class_laplacian}, {""}, -#line 200 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" {"sum", &grib_accessor_class_sum}, {""}, #line 114 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, -#line 177 "accessor_class_list.gperf" +#line 178 "accessor_class_list.gperf" {"round", &grib_accessor_class_round}, #line 145 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, {""}, #line 81 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, -#line 189 "accessor_class_list.gperf" +#line 190 "accessor_class_list.gperf" {"simple_packing_error", &grib_accessor_class_simple_packing_error}, #line 120 "accessor_class_list.gperf" {"group", &grib_accessor_class_group}, {""}, -#line 172 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"position", &grib_accessor_class_position}, #line 136 "accessor_class_list.gperf" {"julian_day", &grib_accessor_class_julian_day}, #line 135 "accessor_class_list.gperf" {"julian_date", &grib_accessor_class_julian_date}, -#line 219 "accessor_class_list.gperf" +#line 220 "accessor_class_list.gperf" {"unsigned", &grib_accessor_class_unsigned}, {""}, {""}, #line 52 "accessor_class_list.gperf" {"data_dummy_field", &grib_accessor_class_data_dummy_field}, {""}, -#line 173 "accessor_class_list.gperf" +#line 174 "accessor_class_list.gperf" {"proj_string", &grib_accessor_class_proj_string}, #line 15 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, #line 17 "accessor_class_list.gperf" {"bits", &grib_accessor_class_bits}, -#line 198 "accessor_class_list.gperf" +#line 199 "accessor_class_list.gperf" {"step_human_readable", &grib_accessor_class_step_human_readable}, #line 71 "accessor_class_list.gperf" {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, -#line 178 "accessor_class_list.gperf" +#line 179 "accessor_class_list.gperf" {"scale", &grib_accessor_class_scale}, -#line 194 "accessor_class_list.gperf" +#line 195 "accessor_class_list.gperf" {"spectral_truncation", &grib_accessor_class_spectral_truncation}, #line 45 "accessor_class_list.gperf" {"data_2order_packing", &grib_accessor_class_data_2order_packing}, -#line 212 "accessor_class_list.gperf" +#line 213 "accessor_class_list.gperf" {"uint32", &grib_accessor_class_uint32}, -#line 216 "accessor_class_list.gperf" +#line 217 "accessor_class_list.gperf" {"uint8", &grib_accessor_class_uint8}, #line 31 "accessor_class_list.gperf" {"bytes", &grib_accessor_class_bytes}, @@ -347,7 +348,7 @@ static const struct accessor_class_hash classes[] = #line 106 "accessor_class_list.gperf" {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, {""}, -#line 195 "accessor_class_list.gperf" +#line 196 "accessor_class_list.gperf" {"sprintf", &grib_accessor_class_sprintf}, {""}, {""}, {""}, #line 18 "accessor_class_list.gperf" @@ -355,12 +356,12 @@ static const struct accessor_class_hash classes[] = #line 50 "accessor_class_list.gperf" {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, {""}, -#line 220 "accessor_class_list.gperf" +#line 221 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, #line 164 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, {""}, -#line 213 "accessor_class_list.gperf" +#line 214 "accessor_class_list.gperf" {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, {""}, #line 89 "accessor_class_list.gperf" @@ -373,9 +374,9 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 138 "accessor_class_list.gperf" {"label", &grib_accessor_class_label}, -#line 217 "accessor_class_list.gperf" +#line 218 "accessor_class_list.gperf" {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, -#line 214 "accessor_class_list.gperf" +#line 215 "accessor_class_list.gperf" {"uint64", &grib_accessor_class_uint64}, {""}, #line 159 "accessor_class_list.gperf" @@ -399,18 +400,18 @@ static const struct accessor_class_hash classes[] = {"concept", &grib_accessor_class_concept}, #line 41 "accessor_class_list.gperf" {"constant", &grib_accessor_class_constant}, -#line 215 "accessor_class_list.gperf" +#line 216 "accessor_class_list.gperf" {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, #line 80 "accessor_class_list.gperf" {"divdouble", &grib_accessor_class_divdouble}, -#line 226 "accessor_class_list.gperf" +#line 227 "accessor_class_list.gperf" {"when", &grib_accessor_class_when}, #line 163 "accessor_class_list.gperf" {"octet_number", &grib_accessor_class_octet_number}, {""}, #line 104 "accessor_class_list.gperf" {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 185 "accessor_class_list.gperf" +#line 186 "accessor_class_list.gperf" {"select_step_template", &grib_accessor_class_select_step_template}, {""}, #line 59 "accessor_class_list.gperf" @@ -422,7 +423,7 @@ static const struct accessor_class_hash classes[] = #line 19 "accessor_class_list.gperf" {"blob", &grib_accessor_class_blob}, {""}, {""}, {""}, -#line 223 "accessor_class_list.gperf" +#line 224 "accessor_class_list.gperf" {"values", &grib_accessor_class_values}, {""}, {""}, {""}, {""}, #line 60 "accessor_class_list.gperf" @@ -432,18 +433,18 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 146 "accessor_class_list.gperf" {"long_vector", &grib_accessor_class_long_vector}, -#line 201 "accessor_class_list.gperf" +#line 202 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, #line 121 "accessor_class_list.gperf" {"gts_header", &grib_accessor_class_gts_header}, -#line 204 "accessor_class_list.gperf" +#line 205 "accessor_class_list.gperf" {"to_double", &grib_accessor_class_to_double}, {""}, {""}, #line 144 "accessor_class_list.gperf" {"local_definition", &grib_accessor_class_local_definition}, #line 58 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, -#line 221 "accessor_class_list.gperf" +#line 222 "accessor_class_list.gperf" {"validity_date", &grib_accessor_class_validity_date}, #line 143 "accessor_class_list.gperf" {"library_version", &grib_accessor_class_library_version}, @@ -466,7 +467,7 @@ static const struct accessor_class_hash classes[] = {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, #line 151 "accessor_class_list.gperf" {"md5", &grib_accessor_class_md5}, -#line 222 "accessor_class_list.gperf" +#line 223 "accessor_class_list.gperf" {"validity_time", &grib_accessor_class_validity_time}, #line 130 "accessor_class_list.gperf" {"int32_little_endian", &grib_accessor_class_int32_little_endian}, @@ -478,7 +479,7 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 74 "accessor_class_list.gperf" {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 225 "accessor_class_list.gperf" +#line 226 "accessor_class_list.gperf" {"vector", &grib_accessor_class_vector}, #line 20 "accessor_class_list.gperf" {"budgdate", &grib_accessor_class_budgdate}, @@ -491,14 +492,14 @@ static const struct accessor_class_hash classes[] = #line 137 "accessor_class_list.gperf" {"ksec1expver", &grib_accessor_class_ksec1expver}, {""}, -#line 171 "accessor_class_list.gperf" +#line 172 "accessor_class_list.gperf" {"padtomultiple", &grib_accessor_class_padtomultiple}, #line 150 "accessor_class_list.gperf" {"mars_step", &grib_accessor_class_mars_step}, #line 126 "accessor_class_list.gperf" {"ifs_param", &grib_accessor_class_ifs_param}, {""}, -#line 191 "accessor_class_list.gperf" +#line 192 "accessor_class_list.gperf" {"smart_table", &grib_accessor_class_smart_table}, {""}, #line 149 "accessor_class_list.gperf" @@ -507,7 +508,7 @@ static const struct accessor_class_hash classes[] = #line 22 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, {""}, {""}, -#line 192 "accessor_class_list.gperf" +#line 193 "accessor_class_list.gperf" {"smart_table_column", &grib_accessor_class_smart_table_column}, {""}, #line 21 "accessor_class_list.gperf" @@ -541,15 +542,15 @@ static const struct accessor_class_hash classes[] = #line 153 "accessor_class_list.gperf" {"message_copy", &grib_accessor_class_message_copy}, {""}, {""}, -#line 170 "accessor_class_list.gperf" +#line 171 "accessor_class_list.gperf" {"padtoeven", &grib_accessor_class_padtoeven}, {""}, {""}, -#line 210 "accessor_class_list.gperf" +#line 211 "accessor_class_list.gperf" {"uint16", &grib_accessor_class_uint16}, {""}, {""}, #line 154 "accessor_class_list.gperf" {"missing", &grib_accessor_class_missing}, -#line 224 "accessor_class_list.gperf" +#line 225 "accessor_class_list.gperf" {"variable", &grib_accessor_class_variable}, {""}, {""}, #line 86 "accessor_class_list.gperf" @@ -561,7 +562,7 @@ static const struct accessor_class_hash classes[] = #line 36 "accessor_class_list.gperf" {"codeflag", &grib_accessor_class_codeflag}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 211 "accessor_class_list.gperf" +#line 212 "accessor_class_list.gperf" {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, #line 37 "accessor_class_list.gperf" {"codetable", &grib_accessor_class_codetable}, @@ -595,10 +596,10 @@ static const struct accessor_class_hash classes[] = #line 161 "accessor_class_list.gperf" {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, {""}, {""}, {""}, {""}, -#line 179 "accessor_class_list.gperf" +#line 180 "accessor_class_list.gperf" {"scale_values", &grib_accessor_class_scale_values}, {""}, -#line 218 "accessor_class_list.gperf" +#line 219 "accessor_class_list.gperf" {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, {""}, {""}, {""}, #line 85 "accessor_class_list.gperf" @@ -617,10 +618,10 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 100 "accessor_class_list.gperf" {"g1verificationdate", &grib_accessor_class_g1verificationdate}, -#line 166 "accessor_class_list.gperf" +#line 167 "accessor_class_list.gperf" {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, {""}, {""}, -#line 176 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -638,7 +639,9 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 166 "accessor_class_list.gperf" + {"optimal_step_units", &grib_accessor_class_optimal_step_units}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -686,19 +689,20 @@ static const struct accessor_class_hash classes[] = {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; -static const struct accessor_class_hash* grib_accessor_classes_hash (const char *str, size_t len) +const struct accessor_class_hash * +grib_accessor_classes_hash (register const char *str, register size_t len) { - unsigned int key = grib_accessor_classes_get_id (str, len); - -#ifdef DEBUG + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - const char *s; - Assert( len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH ); - Assert( key <= MAX_HASH_VALUE ); - s = classes[key].name; - Assert( *str == *s && strcmp(str + 1, s + 1)==0 ); - } -#endif + register unsigned int key = grib_accessor_classes_get_id (str, len); - return &classes[key]; + if (key <= MAX_HASH_VALUE) + { + register const char *s = classes[key].name; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &classes[key]; + } + } + return 0; } diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index a706fc95c..9dced7940 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -155,6 +155,7 @@ { "octet_number", &grib_accessor_class_octet_number, }, { "offset_file", &grib_accessor_class_offset_file, }, { "offset_values", &grib_accessor_class_offset_values, }, +{ "optimal_step_units", &grib_accessor_class_optimal_step_units, }, { "pack_bufr_values", &grib_accessor_class_pack_bufr_values, }, { "pad", &grib_accessor_class_pad, }, { "padding", &grib_accessor_class_padding, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 0abb60a46..e8f526500 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -156,6 +156,7 @@ octahedral_gaussian, &grib_accessor_class_octahedral_gaussian octet_number, &grib_accessor_class_octet_number offset_file, &grib_accessor_class_offset_file offset_values, &grib_accessor_class_offset_values +optimal_step_units, &grib_accessor_class_optimal_step_units pack_bufr_values, &grib_accessor_class_pack_bufr_values pad, &grib_accessor_class_pad padding, &grib_accessor_class_padding diff --git a/src/step.cc b/src/step.cc index 4aa810a08..d1f1faa5e 100644 --- a/src/step.cc +++ b/src/step.cc @@ -5,6 +5,7 @@ #include #include #include +#include #include "step.h" @@ -18,41 +19,205 @@ std::vector UnitType::unitOrder = { }; -std::string parse_step(std::string step) { - if (step.find_first_of("smhdMYC") == std::string::npos) { - step += "h"; +Step step_from_string(std::string step) { + std::regex re("([0-9.]+)([smhDMYC]?)"); + std::smatch match; + if (std::regex_match(step, match, re)) { + if (match.size() == 3) { + std::string value = match[1]; + std::string unit = match[2]; + if (unit.size() == 0) { + unit = "h"; + } + return Step{std::stod(value), UnitType{unit}}; + } } - return step; + throw std::runtime_error("Could not parse step: " + step); } +std::vector parseRange(const std::string& range_str) { + std::vector steps; + std::string::size_type pos = 0; + std::string::size_type prev = 0; + while ((pos = range_str.find("-", prev)) != std::string::npos) { + steps.push_back(step_from_string(range_str.substr(prev, pos - prev))); + prev = pos + 1; + } + steps.push_back(step_from_string(range_str.substr(prev))); + return steps; +} -std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep) { - Step a = startStep; - Step b = endStep; - if (a.value_ == 0 || b.value_ == 0) { - if (a.value_ == 0 && b.value_ == 0) { - UnitType unit = a.unit_ > b.unit_ ? a.unit_ : b.unit_; - a.setUnit(unit); - b.setUnit(unit); - } - else if (a.value_ == 0) { - a.setUnit(b.unit_); - } - else if (b.value_ == 0) { - b.setUnit(a.unit_); - } - return {a, b}; +bool Step::operator==(const Step& other) const { + if ((internal_value_ == other.internal_value_) && (internal_unit_ == other.internal_unit_)) { + return true; } + return false; +} + +Step Step::operator+(const Step& step) { + Step tmp = step; + auto [a, b] = findCommonUnits(this->optimizeUnit(), tmp.optimizeUnit()); + assert(a.internal_unit_ == b.internal_unit_); + return Step(a.internal_value_ + b.internal_value_, a.internal_unit_); +} + +Step Step::operator-(const Step& step) { + Step tmp = step; + auto [a, b] = findCommonUnits(this->optimizeUnit(), tmp.optimizeUnit()); + assert(a.internal_unit_ == b.internal_unit_); + if (a.internal_value_ < b.internal_value_) { + throw std::runtime_error("Negative step not supported"); + } + return Step(a.internal_value_ - b.internal_value_, a.internal_unit_); +} + +std::pair findCommonUnits(const Step& startStep, const Step& endStep) { + Step a = startStep; + Step b = endStep; - auto it = std::find_if(UnitType::unitOrder.begin(), UnitType::unitOrder.end(), [&](const auto& e) { - return e == a.unit().to_value() || e == b.unit().to_value(); - }); + if (a.internal_value_ == 0 && b.internal_value_ == 0) { + UnitType unit = a.internal_unit_ > b.internal_unit_ ? a.internal_unit_ : b.internal_unit_; + b.internal_unit_ = unit; + b.unit_ = unit; + a.internal_unit_ = unit; + a.unit_ = unit; + } + else if (b.internal_value_ == 0) { + b.internal_unit_ = a.internal_unit_; + b.unit_ = a.internal_unit_; + a.unit_ = a.internal_unit_; + a.recalculateValue(); + } + else if (a.internal_value_ == 0) { + a.internal_unit_ = b.internal_unit_; + a.unit_ = b.internal_unit_; + b.unit_ = b.internal_unit_; + b.recalculateValue(); + } + else { + // Find the highest common unit + auto it = std::find_if(UnitType::unitOrder.begin(), UnitType::unitOrder.end(), [&](const auto& e) { + return e == a.unit().toValue() || e == b.unit().toValue(); + }); - assert(it != UnitType::unitOrder.end()); + assert(it != UnitType::unitOrder.end()); - a.setUnit(*it); - b.setUnit(*it); + a.setUnit(*it); + b.setUnit(*it); + a.recalculateValue(); + b.recalculateValue(); + assert(a.internal_unit_ == b.internal_unit_); + } return {a, b}; } + +void Step::sanityCheck() const { + static_assert(sizeof(int) == 4, "int is not 4 bytes"); + if (!(internal_value_ >= std::numeric_limits::min() && internal_value_ <= std::numeric_limits::max())) { + throw std::out_of_range("Step is out of range."); + } +} + + +void Step::initLong(long value, const UnitType& unit) { + internal_value_ = value; + internal_unit_ = unit; + unit_ = internal_unit_; + sanityCheck(); +} + +void Step::initDouble(double value, const UnitType& unit) { + long seconds = UnitType::getConverter().unit_to_duration(unit.toValue()); + initLong(static_cast(value * seconds), UnitType{Unit::SECOND}); + optimizeUnit(); +} + +Step::Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {initDouble(value, unit);} +Step::Step(double value, Unit unit) {initDouble(value, UnitType{unit});} +Step::Step(double value, long unit) {initDouble(value, UnitType{unit});} +Step::Step(double value, const std::string& unit) {initDouble(value, UnitType{unit});} + +Step::Step(long value, const UnitType& unit) { initLong(value, unit);} +Step::Step(long value, Unit unit) {initLong(value, UnitType{unit});} +Step::Step(long value, long unit) {initLong(value, UnitType{unit});} +Step::Step(long value, const std::string& unit) {initLong(value, UnitType{unit});} + +Step::Step(const std::string& str) { + //size_t pos = str.find_first_of("smhDMYC"); + size_t pos = str.find_first_of("smh"); + if (pos == std::string::npos) { + throw std::runtime_error("Unknown unit."); + } + std::string v_str = str.substr(0, pos); + std::string u_str = str.substr(pos); + double v = std::stod(v_str); + + initDouble(v, UnitType{u_str}); +} + + +Step& Step::optimizeUnit() { + if (internal_value_ == 0) { + return *this; + } + + unit_ = internal_unit_; + Seconds duration(0); + switch (internal_unit_.toValue()) { + case Unit::SECOND: + duration = Seconds(internal_value_); + break; + case Unit::MINUTE: + duration = Minutes(internal_value_); + break; + case Unit::HOUR: + duration = Hours(internal_value_); + break; + case Unit::DAY: + duration = Days(internal_value_); + break; + case Unit::MONTH: + duration = Months(internal_value_); + break; + default: + std::string msg = "Unknown unit: " + internal_unit_.toString(); + throw std::runtime_error(msg); + } + + Seconds d = std::chrono::duration_cast>(duration); + + for (auto it = UnitType::unitOrder.rbegin(); it != UnitType::unitOrder.rend(); ++it) { + long multiplier = UnitType::getConverter().unit_to_duration(*it); + if (d.count() % multiplier == 0) { + internal_value_ = duration.count() / multiplier; + internal_unit_ = *it; + unit_ = *it; + return *this; + } + } + + return *this; +} + +Step& Step::setUnit(const std::string& unit_name) { + unit_ = UnitType{unit_name}; + return *this; +} + +Step& Step::setUnit(long unit_code) { + unit_ = UnitType{unit_code}; + return *this; +} + +Step& Step::setUnit(const UnitType& new_unit) { + unit_ = new_unit; + return *this; +} + +Step& Step::setUnit(const Unit new_unit) { + unit_ = new_unit; + return *this; +} + diff --git a/src/step.h b/src/step.h index 45514441d..52c8b9f17 100644 --- a/src/step.h +++ b/src/step.h @@ -12,6 +12,8 @@ #include #include #include +#include +#include template using Minutes = std::chrono::duration>; @@ -52,31 +54,34 @@ enum class Unit { class UnitType { public: - explicit UnitType() : value_(Unit::HOUR) {} - explicit UnitType(Unit unit_value) : value_(unit_value) {} - explicit UnitType(const std::string& unit_value) {value_ = map_.name_to_unit(unit_value);} - explicit UnitType(long unit_value) {value_ = map_.long_to_unit(unit_value);} - - bool operator>(const UnitType& other) const {return map_.unit_to_duration(value_) > map_.unit_to_duration(other.value_);} - bool operator==(const Unit value) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(value);} - bool operator==(const UnitType& unit) const {return map_.unit_to_duration(value_) == map_.unit_to_duration(unit.value_);} + explicit UnitType() : internal_value_(Unit::HOUR) {} + explicit UnitType(Unit unit_value) : internal_value_(unit_value) {} + explicit UnitType(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} + explicit UnitType(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} + + bool operator>(const UnitType& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} + bool operator==(const Unit value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} + bool operator==(const UnitType& unit) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(unit.internal_value_);} + bool operator!=(const UnitType& unit) const {return !(*this == unit);} + bool operator!=(const Unit value) const {return !(*this == value);} + UnitType& operator=(const Unit value) { - value_ = value; + internal_value_ = value; return *this; } - std::string to_string() const { - if ((value_ == Unit::HOUR) && hide_hour_unit_) { + std::string toString() const { + if ((internal_value_ == Unit::HOUR) && hide_hour_unit_) { return ""; } else { - return map_.unit_to_name(value_); + return map_.unit_to_name(internal_value_); } } - long to_long() const {return map_.unit_to_long(value_);} - Unit to_value() const {return value_;} - void hide_hour_unit() {hide_hour_unit_ = true;} - void show_hour_unit() {hide_hour_unit_ = false;} + long toLong() const {return map_.unit_to_long(internal_value_);} + Unit toValue() const {return internal_value_;} + void hideHourUnit() {hide_hour_unit_ = true;} + void showHourUnit() {hide_hour_unit_ = false;} static std::vector unitOrder; private: @@ -147,257 +152,166 @@ class UnitType { }; - Unit value_; + Unit internal_value_; static Map map_; public: - static Map& get_converter() {return map_;} + static Map& getConverter() {return map_;} }; - - - -template class Step { public: - // Constructors - Step() : value_(0), unit_(Unit::SECOND) {} - Step(T value, Unit unit); - Step(T value, const UnitType& unit); - Step(T value, long unit); - Step(T value, const std::string& unit); + Step() : internal_value_(0), internal_unit_(Unit::SECOND) {} + Step(double value, const UnitType& unit); + Step(double value, Unit unit); + Step(double value, long unit); + Step(double value, const std::string& unit); + + Step(long value, const UnitType& unit); + Step(long value, Unit unit); + Step(long value, long unit); + Step(long value, const std::string& unit); explicit Step(const std::string& str); // Getters - T value() const { return value_; } + template T value() const; UnitType unit() const { return unit_; } // Setters - Step& setUnit(long new_unit); - Step& setUnit(const std::string& new_unit); - Step& setUnit(const Unit new_unit); - Step& setUnit(const UnitType& new_unit); + Step& setUnit(long new_unit); + Step& setUnit(const std::string& new_unit); + Step& setUnit(const Unit new_unit); + Step& setUnit(const UnitType& new_unit); // Operators - bool operator==(const Step& other) const; - Step operator+(const Step& step); - operator Step() const {return Step{static_cast(value_), unit_};} + bool operator==(const Step& other) const; + bool operator!=(const Step& other) const; + Step operator+(const Step& step); + Step operator-(const Step& step); // Methods - Step& optimizeUnit(); - friend std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep); - void hide_hour_unit() {unit_.hide_hour_unit();} - void show_hour_unit() {unit_.show_hour_unit();} - -private: - T value_; - UnitType unit_; -}; - - - - -std::string parse_step(std::string step); - -template -bool Step::operator==(const Step& other) const { - if ((value_ == other.value_) && (unit_ == other.unit_)) { - return true; - } - return false; -} - -template -Step Step::operator+(const Step& step) { - auto [a, b] = findCommonUnits(*this, step); - return Step(a.value_ + b.value_, a.unit_); -} - -std::pair, Step> findCommonUnits(const Step& startStep, const Step& endStep); - - -template std::vector> parse_range(const std::string& range_str) { - std::vector> steps; - std::string::size_type pos = 0; - std::string::size_type prev = 0; - while ((pos = range_str.find("-", prev)) != std::string::npos) { - std::string token = parse_step(range_str.substr(prev, pos - prev)); - if (token.size() > 0) { - steps.push_back(Step(token)); - } - prev = pos + 1; + Step& optimizeUnit(); + friend std::pair findCommonUnits(const Step& startStep, const Step& endStep); + void hideHourUnit() { + internal_unit_.hideHourUnit(); + unit_.hideHourUnit(); } - std::string token = parse_step(range_str.substr(prev)); - if (token.size() > 0) { - steps.push_back(Step(token)); - } - return steps; -} - - -template -Step::Step(T value, Unit unit) : value_{value}, unit_{UnitType{unit}} { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); + void showHourUnit() { + internal_unit_.showHourUnit(); + unit_.showHourUnit(); } -} - -template -Step::Step(T value, long unit) : value_{value}, unit_{UnitType{unit}} { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); + std::string toString() const { + std::stringstream ss; + if (value() == value()) { + ss << value() << unit_.toString(); + } else { + ss << value() << unit_.toString(); + } + return ss.str(); } -} -template -Step::Step(T value, const std::string& unit) : value_{value}, unit_{UnitType{unit}} { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); - } -} +private: + void initLong(long value, const UnitType& unit); + void initDouble(double value, const UnitType& unit); + void sanityCheck() const; + Step& recalculateValue() { + if (internal_value_ == 0) { + internal_unit_ = unit_; + return *this; + } -template -Step::Step(const std::string& str) { - size_t pos = str.find_first_of("smhdMYC"); - if (pos == std::string::npos) { - throw std::runtime_error("Unknown unit."); - } - std::string v_str = str.substr(0, pos); - std::string u_str = str.substr(pos); - int v = std::stoi(v_str); - value_ = v; - unit_ = UnitType{u_str}; -} + Seconds secs(0); + switch (internal_unit_.toValue()) { + case Unit::SECOND: + secs = Seconds(internal_value_); + break; + case Unit::MINUTE: + secs = Minutes(internal_value_); + break; + case Unit::HOUR: + secs = Hours(internal_value_); + break; + case Unit::DAY: + secs = Days(internal_value_); + break; + case Unit::MONTH: + secs = Months(internal_value_); + break; + default: + std::string msg = "Unknown unit: " + internal_unit_.toString(); + throw std::runtime_error(msg); + } -template -Step::Step(T value, const UnitType& u) { - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(value >= 0 && value <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); - } - value_ = value; - unit_ = u; -} + long multiplier = UnitType::getConverter().unit_to_duration(unit_.toValue()); + internal_value_ = secs.count() / multiplier; + internal_unit_ = unit_; -template -Step& Step::optimizeUnit() { - if (value_ == 0) { return *this; } - Seconds duration(0); - switch (unit_.to_value()) { - case Unit::SECOND: - duration = Seconds(value_); - break; - case Unit::MINUTE: - duration = Minutes(value_); - break; - case Unit::HOUR: - duration = Hours(value_); - break; - case Unit::DAY: - duration = Days(value_); - break; - case Unit::MONTH: - duration = Months(value_); - break; - default: - std::string msg = "Unknown unit: " + unit_.to_string(); - throw std::runtime_error(msg); - } - - Seconds d = std::chrono::duration_cast>(duration); - - for (auto it = UnitType::unitOrder.rbegin(); it != UnitType::unitOrder.rend(); ++it) { - long multiplier = UnitType::get_converter().unit_to_duration(*it); - if (d.count() % multiplier == 0) { - value_ = duration.count() / multiplier; - unit_ = *it; - return *this; - } - } - - return *this; -} - -template -Step& Step::setUnit(const std::string& unit_name) { - setUnit(UnitType{unit_name}); - return *this; -} + long internal_value_; + UnitType internal_unit_; + UnitType unit_; +}; -template -Step& Step::setUnit(long unit_code) { - setUnit(UnitType{unit_code}); - return *this; -} -template -Step& Step::setUnit(const UnitType& new_unit) { - setUnit(new_unit.to_value()); - return *this; -} +Step step_from_string(std::string step); +std::vector parseRange(const std::string& range_str); +std::pair findCommonUnits(const Step& startStep, const Step& endStep); -template -Step& Step::setUnit(const Unit new_unit) { - if (value_ == 0) { - unit_ = new_unit; - return *this; +template T Step::value() const { + if (internal_value_ == 0) { + return internal_value_; } - if (unit_ == new_unit) { - return *this; + if (internal_unit_ == unit_) { + return internal_value_; } Seconds duration(0); - switch (unit_.to_value()) { + switch (internal_unit_.toValue()) { case Unit::SECOND: - duration = Seconds(value_); + duration = Seconds(internal_value_); break; case Unit::MINUTE: - duration = Minutes(value_); + duration = Minutes(internal_value_); break; case Unit::HOUR: - duration = Hours(value_); + duration = Hours(internal_value_); break; case Unit::DAY: - duration = Days(value_); + duration = Days(internal_value_); break; case Unit::MONTH: - duration = Months(value_); + duration = Months(internal_value_); break; default: - std::string msg = "Unknown unit: " + unit_.to_string(); + std::string msg = "Unknown unit: " + internal_unit_.toString(); throw std::runtime_error(msg); } - switch (new_unit) { + T value = 0; + switch (unit_.toValue()) { case Unit::SECOND: - value_ = duration.count(); + value = duration.count(); break; case Unit::MINUTE: - value_ = std::chrono::duration_cast>(duration).count(); + value = std::chrono::duration_cast>(duration).count(); break; case Unit::HOUR: - value_ = std::chrono::duration_cast>(duration).count(); + value = std::chrono::duration_cast>(duration).count(); break; case Unit::DAY: - value_ = std::chrono::duration_cast>(duration).count(); + value = std::chrono::duration_cast>(duration).count(); break; case Unit::MONTH: - value_ = std::chrono::duration_cast>(duration).count(); + value = std::chrono::duration_cast>(duration).count(); break; default: - std::string msg = "Unknown unit: " + UnitType{new_unit}.to_string(); + std::string msg = "Unknown unit: " + UnitType{unit_}.toString(); throw std::runtime_error(msg); } - unit_ = new_unit; - - return *this; + return value; } diff --git a/src/step_utilities.cc b/src/step_utilities.cc index b216d9d57..575ae8384 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -1,7 +1,7 @@ +//#include "step_range.h" #include "step_utilities.h" - -std::optional> getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key){ +std::optional getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key){ if (grib_is_defined(h, unit_key.c_str()) && grib_is_defined(h, value_key.c_str())) { long unit = 0; if (grib_get_long_internal(h, unit_key.c_str(), &unit) != GRIB_SUCCESS) @@ -11,7 +11,7 @@ std::optional> getStep(grib_handle* h, const std::string& value_key, if (grib_get_long_internal(h, value_key.c_str(), &value) != GRIB_SUCCESS) return {}; - return Step(value, unit); + return Step(value, unit); } else { return {}; @@ -19,28 +19,27 @@ std::optional> getStep(grib_handle* h, const std::string& value_key, } -std::optional> getForecastTime(grib_handle* h) { - return getStep(h, "forecastTime", "indicatorOfUnitOfTimeRange"); -} +//std::optional getForecastTime(grib_handle* h) { +// return getStep(h, "forecastTime", "indicatorOfUnitOfTimeRange"); +//} -std::optional> getLengthOfTimeRange(grib_handle* h) { - return getStep(h, "lengthOfTimeRange", "indicatorOfUnitForTimeRange"); -} +//std::optional getLengthOfTimeRange(grib_handle* h) { +// return getStep(h, "lengthOfTimeRange", "indicatorOfUnitForTimeRange"); +//} -std::pair, Step> getTimeRange(grib_handle* h) { - auto forecast_time = getForecastTime(h); - auto length_of_time_range = getLengthOfTimeRange(h); - return {forecast_time.value(), forecast_time.value() + length_of_time_range.value_or(Step())}; -} - +//StepRange getTimeRange(grib_handle* h) { +// auto forecast_time = getForecastTime(h); +// auto length_of_time_range = getLengthOfTimeRange(h); +// return StepRange{forecast_time.value_or(Step{}), forecast_time.value_or(Step{}) + length_of_time_range.value_or(Step{})}; +//} bool futureOutputEnabled(grib_handle* h) { - int ret = 0; size_t stepOutputFormatSize = 128; char stepOutputFormat[stepOutputFormatSize]; + int ret = 0; if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) return ret; return strcmp(stepOutputFormat, "future") == 0; diff --git a/src/step_utilities.h b/src/step_utilities.h index 21ec426db..fddcd1f9c 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -2,43 +2,13 @@ #include "grib_api_internal.h" #include "step.h" - #include +//#include "step_range.h" -std::optional> getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key); -std::optional> getForecastTime(grib_handle* h); -std::optional> getLengthOfTimeRange(grib_handle* h); -std::pair, Step> getTimeRange(grib_handle* h); -//std::pair, Step> getOptTimeRange(grib_handle* h); -bool futureOutputEnabled(grib_handle* h); - -template int getOptTimeRange(grib_handle* h, Step& s_a, Step& s_b); -//std::pair, Step> getOptTimeRange(grib_handle* h) { - -template -int getOptTimeRange(grib_handle* h, Step& s_a, Step& s_b) { - auto [step_a, step_b] = getTimeRange(h); - long unit_code = 0; - if (grib_get_long_internal(h, "stepUnits", &unit_code) != GRIB_SUCCESS) - return {}; - - UnitType wanted_unit{unit_code}; - try { - if (wanted_unit == Unit::MISSING) { - std::tie(s_a, s_b) = findCommonUnits(step_a.optimizeUnit(), step_b.optimizeUnit()); - } - else { - s_a = static_cast>(step_a).setUnit(unit_code); - s_b = static_cast>(step_b).setUnit(unit_code); - } - } - catch (...) { - return GRIB_INVALID_ARGUMENT; - } - - s_a.hide_hour_unit(); - s_b.hide_hour_unit(); - return GRIB_SUCCESS; -} +std::optional getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key); +//std::optional getForecastTime(grib_handle* h); +//std::optional getLengthOfTimeRange(grib_handle* h); +//StepRange getTimeRange(grib_handle* h); +bool futureOutputEnabled(grib_handle* h); diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index a46f111a1..261f4bc13 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -35,12 +35,103 @@ grib_check_key_equals() echo "Key(s): '$a_params'" echo "Expected: '$a_expected'" echo "Result: '$a_result'" + ${tools_dir}/grib_dump -O $a_file | grep -E "indicatorOfUnitOfTimeRange|lengthOfTimeRange|indicatorOfUnitForTimeRange|forecastTime" exit 1 fi } label="grib_ecc-1620" temp=temp.$label +temp2=temp_2.$label + + + +### CHECK: grib_set - endStep + stepUnits +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" + +# Use range unit: hour +${tools_dir}/grib_set -y -s endStep:d=30 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" +${tools_dir}/grib_set -y -s endStep:d=24.5 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" + +# Use stepUnits +${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" +${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +${tools_dir}/grib_set -y -s endStep:s=88200s $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +${tools_dir}/grib_set -y -s endStep:s=1446.65m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 399 s" +${tools_dir}/grib_set -y -s endStep:s=24024 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 1000 D" + +# Use range unit: hour +${tools_dir}/grib_set -y -s startStep:d=5 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" +${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" + +# Use stepUnits +${tools_dir}/grib_set -y -s startStep:s=5h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" +${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" +${tools_dir}/grib_set -y -s startStep:s=240s $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 1 D" +${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" +${tools_dir}/grib_set -y -s startStep:s=2 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 1 D" + + + + + +${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" + +${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" + +${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" + +${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" + +${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" +grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" + +${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" +exit + +#${tools_dir}/grib_set -s $fn $temp + +#fn="${data_dir}/reduced_gaussian_surface.grib2" +#low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +#keys__="step" +#keys_s="step:s" +#keys_i="step:i" +#keys_d="step:d" + + +#${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp +#${tools_dir}/grib_set -s step:d=10 $fn $temp +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" +#exit + fn="${data_dir}/reduced_gaussian_surface.grib2" @@ -52,15 +143,21 @@ keys_d="step:d" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "3540" -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" -#grib_expect_failure $temp "-y -p $keys__ -s stepUnits=h" # TODO(EB): check behaviour -#exit -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" -grib_expect_failure $temp "-y -p $keys_s -s stepUnits=h" -exit - +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "3540" +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "3540" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "59" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "3540" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "59" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour + + +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" @@ -68,8 +165,6 @@ grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" -exit - fn="${data_dir}/reduced_gaussian_surface.grib2" @@ -80,29 +175,29 @@ keys_i="step:i" keys_d="step:d" -#${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -#grib_check_key_equals $temp "-p $low_level_keys" "0 m" -#grib_check_key_equals $temp "-p $keys__" "0" -#grib_check_key_equals $temp "-y -p $keys__" "0" -#grib_check_key_equals $temp "-p $keys_s" "0" -#grib_check_key_equals $temp "-y -p $keys_s" "0m" -#grib_check_key_equals $temp "-p $keys_i" "0" -#grib_check_key_equals $temp "-y -p $keys_i" "0" -#grib_check_key_equals $temp "-p $keys_d" "0" -#grib_check_key_equals $temp "-y -p $keys_d" "0" - -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "0s" -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "0m" -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "0s" -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "0m" -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0" -#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" -#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" -#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" -#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" -#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" -#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 m" +grib_check_key_equals $temp "-p $keys__" "0" +grib_check_key_equals $temp "-y -p $keys__" "0" +grib_check_key_equals $temp "-p $keys_s" "0" +grib_check_key_equals $temp "-y -p $keys_s" "0m" +grib_check_key_equals $temp "-p $keys_i" "0" +grib_check_key_equals $temp "-y -p $keys_i" "0" +grib_check_key_equals $temp "-p $keys_d" "0" +grib_check_key_equals $temp "-y -p $keys_d" "0" + +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "0" +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "0" +grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "0s" +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "0m" +grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" +grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" +grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp @@ -250,10 +345,10 @@ grib_check_key_equals $temp "-p $keys__" "18-24 18 24" grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_i" "24 18 24" # TODO(EB): Check if output of stepRange:i makes sense. -grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" -grib_check_key_equals $temp "-p $keys_d" "24 18 24" # TODO(EB): Check if output of stepRange:d makes sense. -grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" # TODO(EB): Check if output of stepRange:i makes sense. +grib_check_key_equals $temp "-p $keys_d" "24 18 24" +grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" # TODO(EB): Check if output of stepRange:d makes sense. ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" diff --git a/tests/grib_step.sh b/tests/grib_step.sh index 7a79a6e6b..037060659 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -137,8 +137,9 @@ grib_check_key_equals $temp "stepRange:d" "28" ${tools_dir}/grib_set -s stepRange:i=24 $grib2_sample $temp grib_check_key_equals $temp "stepRange,startStep,endStep" "24 24 24" # Should this be an error? currently this gets cast from double to int -${tools_dir}/grib_set -s stepRange:d=14.56 $grib2_sample $temp -grib_check_key_equals $temp "stepRange,startStep,endStep" "14 14 14" +# In ECC-1620 this behaviour changes +#${tools_dir}/grib_set -s stepRange:d=14.56 $grib2_sample $temp +#grib_check_key_equals $temp "stepRange,startStep,endStep" "14 14 14" # Clean up From 14b44d3e0fc0b40e49aec0b88d7468383ecebc1b Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 06:21:14 +0000 Subject: [PATCH 017/469] ECC-1620: Add missing file --- src/grib_accessor_class_optimal_step_units.cc | 252 ++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 src/grib_accessor_class_optimal_step_units.cc diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc new file mode 100644 index 000000000..4db104569 --- /dev/null +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -0,0 +1,252 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +/********************************************* + * Enrico Fucile + *******************************************/ + +#include "grib_api_internal.h" +#include "step.h" +#include "step_utilities.h" +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = pack_long;unpack_long;dump + IMPLEMENTS = pack_string;unpack_string;dump + IMPLEMENTS = get_native_type;string_length + IMPLEMENTS = init + MEMBERS = const char* forecastTime + MEMBERS = const char* indicatorOfUnitOfTimeRange + MEMBERS = const char* lengthOfTimeRange + MEMBERS = const char* indicatorOfUnitForTimeRange + END_CLASS_DEF + + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int get_native_type(grib_accessor*); +static int pack_long(grib_accessor*, const long* val, size_t* len); +static int pack_string(grib_accessor*, const char*, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); +static size_t string_length(grib_accessor*); +static void dump(grib_accessor*, grib_dumper*); +static void init(grib_accessor*, const long, grib_arguments*); + +typedef struct grib_accessor_optimal_step_units +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in optimal_step_units */ + const char* forecastTime; + const char* indicatorOfUnitOfTimeRange; + const char* lengthOfTimeRange; + const char* indicatorOfUnitForTimeRange; +} grib_accessor_optimal_step_units; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_optimal_step_units = { + &grib_accessor_class_gen, /* super */ + "optimal_step_units", /* name */ + sizeof(grib_accessor_optimal_step_units), /* size */ + 0, /* inited */ + 0, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ + &string_length, /* get length of string */ + 0, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + &get_native_type, /* get native type */ + 0, /* get sub_section */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ + 0, /* pack_expression */ + 0, /* notify_change */ + 0, /* update_size */ + 0, /* preferred_size */ + 0, /* resize */ + 0, /* nearest_smaller_value */ + 0, /* next accessor */ + 0, /* compare vs. another accessor */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ +}; + + +grib_accessor_class* grib_accessor_class_optimal_step_units = &_grib_accessor_class_optimal_step_units; + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long l, grib_arguments* c) +{ + grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + + int n = 0; + + self->forecastTime = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->indicatorOfUnitOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->lengthOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->indicatorOfUnitForTimeRange= grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + a->length = 0; +} + +static void dump(grib_accessor* a, grib_dumper* dumper) +{ + grib_dump_string(dumper, a, NULL); +} + + +static int value_count(grib_accessor* a, long* count) +{ + *count = 1; + return 0; +} + +static size_t string_length(grib_accessor* a) +{ + return 255; +} + +static long staticStepUnits = UnitType{Unit::MISSING}.toLong(); + +static int pack_long(grib_accessor* a, const long* val, size_t* len) +{ + //grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //auto range = getTimeRange(h); + //Step startStep = range.startStep(); + //Step endStep = range.endStep(); + //startStep.setUnit(UnitType{*val}); + //endStep.setUnit(UnitType{*val}); + + //if ((ret = grib_set_long_internal(h, "forecastTime", startStep.value())) != GRIB_SUCCESS) + // return ret; + //if ((ret = grib_set_long_internal(h, self->indicatorOfUnitOfTimeRange, startStep.unit().toLong())) != GRIB_SUCCESS) + // return ret; + + //if (grib_is_defined(h, "lengthOfTimeRange")) { + // if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", (endStep - startStep).value())) != GRIB_SUCCESS) + // return ret; + // if ((ret = grib_set_long_internal(h, self->indicatorOfUnitForTimeRange, (endStep - startStep).unit().toLong())) != GRIB_SUCCESS) + // return ret; + //} + staticStepUnits = *val; + + return GRIB_SUCCESS; +} + +static int unpack_long(grib_accessor* a, long* val, size_t* len) +{ + if (staticStepUnits != 255) { + *val = staticStepUnits; + return GRIB_SUCCESS; + } + grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + auto start_step_opt = getStep(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); + auto end_step_opt = getStep(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); + + if (!(start_step_opt && end_step_opt)) { + *val = UnitType{Unit::HOUR}.toLong(); + } + + Step start_step = start_step_opt.value_or(Step{}); + Step end_step = end_step_opt.value_or(Step{}); + + auto [step_a, step_b] = findCommonUnits(start_step.optimizeUnit(), end_step.optimizeUnit()); + *val = step_a.unit().toLong(); + return GRIB_SUCCESS; +} + + +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ + //grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int ret = 0; + + //auto range = getTimeRange(h); + //Step startStep = range.startStep(); + //Step endStep = range.endStep(); + //UnitType unit{val}; + //startStep.setUnit(unit); + //endStep.setUnit(unit); + + + //if ((ret = grib_set_long_internal(h, "forecastTime", startStep.value())) != GRIB_SUCCESS) + // return ret; + //if ((ret = grib_set_long_internal(h, self->indicatorOfUnitOfTimeRange, startStep.unit().toLong())) != GRIB_SUCCESS) + // return ret; + + //if (grib_is_defined(h, "lengthOfTimeRange")) { + // if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", (endStep - startStep).value())) != GRIB_SUCCESS) + // return ret; + // if ((ret = grib_set_long_internal(h, self->indicatorOfUnitForTimeRange, (endStep - startStep).unit().toLong())) != GRIB_SUCCESS) + // return ret; + //} + staticStepUnits = UnitType{val}.toLong(); + + return GRIB_SUCCESS; +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ + int ret = 0; + long unit = 0; + size_t unit_len = 0; + if ((ret = unpack_long(a, &unit, &unit_len)) != GRIB_SUCCESS) + return ret; + *len = snprintf(val, *len, "%s", UnitType{unit}.toString().c_str()); + return GRIB_SUCCESS; +} + + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_LONG; +} From ac854208bdd005d8c3eafe18d4f858a173564ebf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 06:35:19 +0000 Subject: [PATCH 018/469] ECC-1620: Refactoring and clean-up --- src/grib_accessor_class_g2end_step.cc | 93 +++---------------- src/grib_accessor_class_g2step_range.cc | 49 +++------- src/grib_accessor_class_optimal_step_units.cc | 61 ++---------- ...grib_accessor_class_step_human_readable.cc | 12 +-- src/grib_accessor_class_step_in_units.cc | 57 +++--------- src/step.cc | 62 ++++++------- src/step.h | 66 ++++++------- src/step_utilities.cc | 30 ++---- src/step_utilities.h | 9 +- 9 files changed, 123 insertions(+), 316 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 304cc772f..b8ab3b411 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -376,21 +376,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - - //if (futureOutputEnabled(h)) { - // StepRange range; - // if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) - // return ret; - - // *val = range.endStep().value(); - //} - //else { - int err = 0; long start_step; long numberOfTimeRange; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) - return err; + if ((ret = grib_get_long_internal(h, self->start_step, &start_step))) + return ret; /* point in time */ if (self->year == NULL) { @@ -399,8 +389,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } Assert(self->numberOfTimeRange); - if ((err = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) - return err; + if ((ret = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) + return ret; Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); if (numberOfTimeRange == 1) { @@ -411,7 +401,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) ret = unpack_multiple_time_ranges(a, val, len); return ret; } - //} return GRIB_SUCCESS; } @@ -534,7 +523,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) return ret; - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) return ret; long step_value; @@ -544,45 +533,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step step(step_value, Unit::SECOND); - step.setUnit(step_units_old); + step.set_unit(step_units_old); if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) return ret; - step.hideHourUnit(); - if (futureOutputEnabled(h)) { - snprintf(val, *len, "%s", step.toString().c_str()); + step.hide_hour_unit(); + if (is_future_output_enabled(h)) { + snprintf(val, *len, "%s", step.to_string().c_str()); } else { snprintf(val, *len, "%ld", step.value()); } return GRIB_SUCCESS; - - - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //long start_step_long; - //size_t start_step_len = 0; - //if ((ret = unpack_long(a, &start_step_long, &start_step_len)) != GRIB_SUCCESS) - // return ret; - - //long step_units; - //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - // return ret; - - //Step start_step(start_step_long, step_units); - //start_step.hideHourUnit(); - //if (futureOutputEnabled(h)) { - // snprintf(val, *len, "%s", start_step.toString().c_str()); - //} - //else { - // snprintf(val, *len, "%ld", start_step.value()); - //} - - //return GRIB_SUCCESS; } @@ -597,8 +561,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return ret; Step end_step{*val, step_units}; - end_step.optimizeUnit(); - if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().toLong())) != GRIB_SUCCESS) + end_step.optimize_unit(); + if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().to_long())) != GRIB_SUCCESS) return ret; long end_step_value = end_step.value(); @@ -615,8 +579,8 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; Step end_step = step_from_string(val); - end_step.optimizeUnit(); - if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().toLong())) != GRIB_SUCCESS) + end_step.optimize_unit(); + if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().to_long())) != GRIB_SUCCESS) return ret; double end_step_value = end_step.value(); @@ -625,37 +589,6 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = pack_double(a, &end_step_value, &end_step_len)) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; - - ////grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //if (futureOutputEnabled(h)) { - // // TODO(EB): Export code to a function - // long stepUnitsLong; - // if ((ret = grib_get_long_internal(h, "stepUnits", &stepUnitsLong)) != GRIB_SUCCESS) - // return ret; - // UnitType stepUnits{stepUnitsLong}; - - // StepRange range; - // getOptTimeRange(h, range); - // UnitType endStepUnit = range.endStep().unit(); - // Step endStep{parseStep(val)}; - // Step length = endStep - range.startStep(); - // if (stepUnits != Unit::MISSING) { - // length.setUnit(stepUnits); - // } - - // length.optimizeUnit(); - // if ((ret = grib_set_double_internal(h, "lengthOfTimeRange", length.value()) != GRIB_SUCCESS)) - // return ret; - // if ((ret = grib_set_long_internal(h, "indicatorOfUnitForTimeRange", length.unit().toLong())) != GRIB_SUCCESS) - // return ret; - // return GRIB_SUCCESS; - //} - //else { - // return GRIB_NOT_IMPLEMENTED; - //} } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index b103f02f6..05bf65be7 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -14,7 +14,6 @@ #include "grib_api_internal.h" #include "step.h" -#include "step_range.h" #include "step_utilities.h" #include /* @@ -155,10 +154,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step start_step = Step(start_value, step_units_value); - start_step.hideHourUnit(); + start_step.hide_hour_unit(); if (self->endStep == NULL) { - if (futureOutputEnabled(h)) { - snprintf(buf, sizeof(buf), "%s", start_step.toString().c_str()); + if (is_future_output_enabled(h)) { + snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); } else { snprintf(buf, sizeof(buf), "%ld", start_value); @@ -168,14 +167,14 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) return ret; - if (futureOutputEnabled(h)) { + if (is_future_output_enabled(h)) { Step end_step = Step(end_value, step_units_value); - end_step.hideHourUnit(); + end_step.hide_hour_unit(); if (start_value == end_value) { - snprintf(buf, sizeof(buf), "%s", end_step.toString().c_str()); + snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); } else { - snprintf(buf, sizeof(buf), "%s-%s", start_step.toString().c_str(), end_step.toString().c_str()); + snprintf(buf, sizeof(buf), "%s-%s", start_step.to_string().c_str(), end_step.to_string().c_str()); } } else { @@ -208,15 +207,15 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - std::vector steps = parseRange(val); + std::vector steps = parse_range(val); if (steps.size() == 0) return GRIB_INVALID_ARGUMENT; Step step_0 = steps[0]; Step step_1; if (steps.size() > 1) { - std::tie(step_0, step_1) = findCommonUnits(steps[0].optimizeUnit(), steps[1].optimizeUnit()); - if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().toLong()))) + std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); + if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) return ret; } @@ -273,7 +272,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; Step start_step = Step(start_value, step_units_value); - start_step.hideHourUnit(); + start_step.hide_hour_unit(); if (self->endStep == NULL) { *val = start_step.value(); } @@ -285,18 +284,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } return GRIB_SUCCESS; - - ////grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //StepRange range; - //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) - // return ret; - - //*val = range.endStep().value(); - - //return 0; } static int unpack_long(grib_accessor* a, long* val, size_t* len) @@ -316,7 +303,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return ret; Step start_step = Step(start_value, step_units_value); - start_step.hideHourUnit(); + start_step.hide_hour_unit(); if (self->endStep == NULL) { *val = start_step.value(); } @@ -328,18 +315,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } return GRIB_SUCCESS; - - ////grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //StepRange range; - //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) - // return ret; - - //*val = range.endStep().value(); - - //return 0; } static int get_native_type(grib_accessor* a) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 4db104569..e670034c6 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -148,31 +148,10 @@ static size_t string_length(grib_accessor* a) return 255; } -static long staticStepUnits = UnitType{Unit::MISSING}.toLong(); +static long staticStepUnits = UnitType{Unit::MISSING}.to_long(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { - //grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //auto range = getTimeRange(h); - //Step startStep = range.startStep(); - //Step endStep = range.endStep(); - //startStep.setUnit(UnitType{*val}); - //endStep.setUnit(UnitType{*val}); - - //if ((ret = grib_set_long_internal(h, "forecastTime", startStep.value())) != GRIB_SUCCESS) - // return ret; - //if ((ret = grib_set_long_internal(h, self->indicatorOfUnitOfTimeRange, startStep.unit().toLong())) != GRIB_SUCCESS) - // return ret; - - //if (grib_is_defined(h, "lengthOfTimeRange")) { - // if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", (endStep - startStep).value())) != GRIB_SUCCESS) - // return ret; - // if ((ret = grib_set_long_internal(h, self->indicatorOfUnitForTimeRange, (endStep - startStep).unit().toLong())) != GRIB_SUCCESS) - // return ret; - //} staticStepUnits = *val; return GRIB_SUCCESS; @@ -188,49 +167,25 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - auto start_step_opt = getStep(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); - auto end_step_opt = getStep(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); + auto start_step_opt = get_step(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); + auto end_step_opt = get_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); if (!(start_step_opt && end_step_opt)) { - *val = UnitType{Unit::HOUR}.toLong(); + *val = UnitType{Unit::HOUR}.to_long(); } Step start_step = start_step_opt.value_or(Step{}); Step end_step = end_step_opt.value_or(Step{}); - auto [step_a, step_b] = findCommonUnits(start_step.optimizeUnit(), end_step.optimizeUnit()); - *val = step_a.unit().toLong(); + auto [step_a, step_b] = find_common_units(start_step.optimize_unit(), end_step.optimize_unit()); + *val = step_a.unit().to_long(); return GRIB_SUCCESS; } static int pack_string(grib_accessor* a, const char* val, size_t* len) { - //grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - - //auto range = getTimeRange(h); - //Step startStep = range.startStep(); - //Step endStep = range.endStep(); - //UnitType unit{val}; - //startStep.setUnit(unit); - //endStep.setUnit(unit); - - - //if ((ret = grib_set_long_internal(h, "forecastTime", startStep.value())) != GRIB_SUCCESS) - // return ret; - //if ((ret = grib_set_long_internal(h, self->indicatorOfUnitOfTimeRange, startStep.unit().toLong())) != GRIB_SUCCESS) - // return ret; - - //if (grib_is_defined(h, "lengthOfTimeRange")) { - // if ((ret = grib_set_long_internal(h, "lengthOfTimeRange", (endStep - startStep).value())) != GRIB_SUCCESS) - // return ret; - // if ((ret = grib_set_long_internal(h, self->indicatorOfUnitForTimeRange, (endStep - startStep).unit().toLong())) != GRIB_SUCCESS) - // return ret; - //} - staticStepUnits = UnitType{val}.toLong(); - + staticStepUnits = UnitType{val}.to_long(); return GRIB_SUCCESS; } @@ -241,7 +196,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t unit_len = 0; if ((ret = unpack_long(a, &unit, &unit_len)) != GRIB_SUCCESS) return ret; - *len = snprintf(val, *len, "%s", UnitType{unit}.toString().c_str()); + *len = snprintf(val, *len, "%s", UnitType{unit}.to_string().c_str()); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index ebd2c4a7b..b275c444a 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -125,14 +125,14 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) size_t slen = 2; long step; - //size_t stepOutputFormatSize = 128; - //char stepOutputFormat[stepOutputFormatSize]; - //if ((err = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) { - // printf("ERROR: unable to get stepOutputFormat stepOutputFormat=%s\n", stepOutputFormat); + //size_t step_output_format_size = 128; + //char step_output_format[step_output_format_size]; + //if ((err = grib_get_string_internal(h, "step_output_format", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) { + // printf("ERROR: unable to get step_output_format step_output_format=%s\n", step_output_format); // return err; //} - //if (strcmp(stepOutputFormat, "future") == 0) { + //if (strcmp(step_output_format, "future") == 0) { /* Change units to seconds (highest resolution) * before computing the step value */ @@ -143,7 +143,7 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) // long indicator = grib_get_long(h, "indicatorOfUnitOfTimeRange", &indicator); // auto stepOptimizer = Step(step, indicator); - // stepOptimizer.optimizeUnit(); + // stepOptimizer.optimize_unit(); // snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); //} diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index e26e5a3ed..27d33e627 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -282,22 +282,14 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) int ret = 0; Step step = step_from_string(val); - step.optimizeUnit(); + step.optimize_unit(); - if ((ret = grib_set_long_internal(h, self->stepUnits, step.unit().toLong()))) + if ((ret = grib_set_long_internal(h, self->stepUnits, step.unit().to_long()))) return ret; long step_value = step.value(); if ((ret = pack_long(a, &step_value, len)) != GRIB_SUCCESS) return ret; - //if ((ret = grib_set_long_internal(h, self->codedUnits, step.unit().toLong()))) - // return ret; - - //long step_value = step.value(); - //size_t step_value_len = 0; - //if ((ret = pack_long(a, &step_value, &step_value_len)) != GRIB_SUCCESS) - // return ret; - return GRIB_SUCCESS; } @@ -311,7 +303,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) return ret; - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) return ret; long step_value; @@ -321,35 +313,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step step(step_value, Unit::SECOND); - step.setUnit(step_units_old); + step.set_unit(step_units_old); if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) return ret; - step.hideHourUnit(); - if (futureOutputEnabled(h)) { - snprintf(val, *len, "%s", step.toString().c_str()); + step.hide_hour_unit(); + if (is_future_output_enabled(h)) { + snprintf(val, *len, "%s", step.to_string().c_str()); } else { snprintf(val, *len, "%ld", step.value()); } return GRIB_SUCCESS; - ////grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret = 0; - //StepRange range; - //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) - // return ret; - - //if (futureOutputEnabled(h)) { - // snprintf(val, *len, "%s", range.startStepToString().c_str()); - //} - //else { - // snprintf(val, *len, "%ld", range.startStep().value()); - //} - - //return GRIB_SUCCESS; } @@ -364,8 +341,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return ret; Step start_step{*val, step_units}; - start_step.optimizeUnit(); - if ((ret = grib_set_long_internal(h, "stepUnits", start_step.unit().toLong())) != GRIB_SUCCESS) + start_step.optimize_unit(); + if ((ret = grib_set_long_internal(h, "stepUnits", start_step.unit().to_long())) != GRIB_SUCCESS) return ret; long start_step_value = start_step.value(); @@ -387,7 +364,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; UnitType step_units{step_units_old}; - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.toLong())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) return ret; long value_secs; @@ -396,19 +373,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; Step step(value_secs, Unit::SECOND); - step.setUnit(step_units_old); + step.set_unit(step_units_old); *val = step.value(); return GRIB_SUCCESS; - - //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int ret; - - //StepRange range; - //if ((ret = getOptTimeRange(h, range)) != GRIB_SUCCESS) - // return ret; - - //*val = range.startStep().value(); - //return GRIB_SUCCESS; - return GRIB_NOT_IMPLEMENTED; } diff --git a/src/step.cc b/src/step.cc index d1f1faa5e..21b5929ee 100644 --- a/src/step.cc +++ b/src/step.cc @@ -35,7 +35,7 @@ Step step_from_string(std::string step) { throw std::runtime_error("Could not parse step: " + step); } -std::vector parseRange(const std::string& range_str) { +std::vector parse_range(const std::string& range_str) { std::vector steps; std::string::size_type pos = 0; std::string::size_type prev = 0; @@ -57,14 +57,14 @@ bool Step::operator==(const Step& other) const { Step Step::operator+(const Step& step) { Step tmp = step; - auto [a, b] = findCommonUnits(this->optimizeUnit(), tmp.optimizeUnit()); + auto [a, b] = find_common_units(this->optimize_unit(), tmp.optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); return Step(a.internal_value_ + b.internal_value_, a.internal_unit_); } Step Step::operator-(const Step& step) { Step tmp = step; - auto [a, b] = findCommonUnits(this->optimizeUnit(), tmp.optimizeUnit()); + auto [a, b] = find_common_units(this->optimize_unit(), tmp.optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); if (a.internal_value_ < b.internal_value_) { throw std::runtime_error("Negative step not supported"); @@ -72,7 +72,7 @@ Step Step::operator-(const Step& step) { return Step(a.internal_value_ - b.internal_value_, a.internal_unit_); } -std::pair findCommonUnits(const Step& startStep, const Step& endStep) { +std::pair find_common_units(const Step& startStep, const Step& endStep) { Step a = startStep; Step b = endStep; @@ -98,13 +98,13 @@ std::pair findCommonUnits(const Step& startStep, const Step& endStep else { // Find the highest common unit auto it = std::find_if(UnitType::unitOrder.begin(), UnitType::unitOrder.end(), [&](const auto& e) { - return e == a.unit().toValue() || e == b.unit().toValue(); + return e == a.unit().to_value() || e == b.unit().to_value(); }); assert(it != UnitType::unitOrder.end()); - a.setUnit(*it); - b.setUnit(*it); + a.set_unit(*it); + b.set_unit(*it); a.recalculateValue(); b.recalculateValue(); assert(a.internal_unit_ == b.internal_unit_); @@ -113,7 +113,7 @@ std::pair findCommonUnits(const Step& startStep, const Step& endStep return {a, b}; } -void Step::sanityCheck() const { +void Step::sanity_check() const { static_assert(sizeof(int) == 4, "int is not 4 bytes"); if (!(internal_value_ >= std::numeric_limits::min() && internal_value_ <= std::numeric_limits::max())) { throw std::out_of_range("Step is out of range."); @@ -121,28 +121,28 @@ void Step::sanityCheck() const { } -void Step::initLong(long value, const UnitType& unit) { +void Step::init_long(long value, const UnitType& unit) { internal_value_ = value; internal_unit_ = unit; unit_ = internal_unit_; - sanityCheck(); + sanity_check(); } -void Step::initDouble(double value, const UnitType& unit) { - long seconds = UnitType::getConverter().unit_to_duration(unit.toValue()); - initLong(static_cast(value * seconds), UnitType{Unit::SECOND}); - optimizeUnit(); +void Step::init_double(double value, const UnitType& unit) { + long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); + init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); + optimize_unit(); } -Step::Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {initDouble(value, unit);} -Step::Step(double value, Unit unit) {initDouble(value, UnitType{unit});} -Step::Step(double value, long unit) {initDouble(value, UnitType{unit});} -Step::Step(double value, const std::string& unit) {initDouble(value, UnitType{unit});} +Step::Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {init_double(value, unit);} +Step::Step(double value, Unit unit) {init_double(value, UnitType{unit});} +Step::Step(double value, long unit) {init_double(value, UnitType{unit});} +Step::Step(double value, const std::string& unit) {init_double(value, UnitType{unit});} -Step::Step(long value, const UnitType& unit) { initLong(value, unit);} -Step::Step(long value, Unit unit) {initLong(value, UnitType{unit});} -Step::Step(long value, long unit) {initLong(value, UnitType{unit});} -Step::Step(long value, const std::string& unit) {initLong(value, UnitType{unit});} +Step::Step(long value, const UnitType& unit) { init_long(value, unit);} +Step::Step(long value, Unit unit) {init_long(value, UnitType{unit});} +Step::Step(long value, long unit) {init_long(value, UnitType{unit});} +Step::Step(long value, const std::string& unit) {init_long(value, UnitType{unit});} Step::Step(const std::string& str) { //size_t pos = str.find_first_of("smhDMYC"); @@ -154,18 +154,18 @@ Step::Step(const std::string& str) { std::string u_str = str.substr(pos); double v = std::stod(v_str); - initDouble(v, UnitType{u_str}); + init_double(v, UnitType{u_str}); } -Step& Step::optimizeUnit() { +Step& Step::optimize_unit() { if (internal_value_ == 0) { return *this; } unit_ = internal_unit_; Seconds duration(0); - switch (internal_unit_.toValue()) { + switch (internal_unit_.to_value()) { case Unit::SECOND: duration = Seconds(internal_value_); break; @@ -182,14 +182,14 @@ Step& Step::optimizeUnit() { duration = Months(internal_value_); break; default: - std::string msg = "Unknown unit: " + internal_unit_.toString(); + std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); } Seconds d = std::chrono::duration_cast>(duration); for (auto it = UnitType::unitOrder.rbegin(); it != UnitType::unitOrder.rend(); ++it) { - long multiplier = UnitType::getConverter().unit_to_duration(*it); + long multiplier = UnitType::get_converter().unit_to_duration(*it); if (d.count() % multiplier == 0) { internal_value_ = duration.count() / multiplier; internal_unit_ = *it; @@ -201,22 +201,22 @@ Step& Step::optimizeUnit() { return *this; } -Step& Step::setUnit(const std::string& unit_name) { +Step& Step::set_unit(const std::string& unit_name) { unit_ = UnitType{unit_name}; return *this; } -Step& Step::setUnit(long unit_code) { +Step& Step::set_unit(long unit_code) { unit_ = UnitType{unit_code}; return *this; } -Step& Step::setUnit(const UnitType& new_unit) { +Step& Step::set_unit(const UnitType& new_unit) { unit_ = new_unit; return *this; } -Step& Step::setUnit(const Unit new_unit) { +Step& Step::set_unit(const Unit new_unit) { unit_ = new_unit; return *this; } diff --git a/src/step.h b/src/step.h index 52c8b9f17..a39daf989 100644 --- a/src/step.h +++ b/src/step.h @@ -70,7 +70,7 @@ class UnitType { return *this; } - std::string toString() const { + std::string to_string() const { if ((internal_value_ == Unit::HOUR) && hide_hour_unit_) { return ""; } @@ -78,10 +78,10 @@ class UnitType { return map_.unit_to_name(internal_value_); } } - long toLong() const {return map_.unit_to_long(internal_value_);} - Unit toValue() const {return internal_value_;} - void hideHourUnit() {hide_hour_unit_ = true;} - void showHourUnit() {hide_hour_unit_ = false;} + long to_long() const {return map_.unit_to_long(internal_value_);} + Unit to_value() const {return internal_value_;} + void hide_hour_unit() {hide_hour_unit_ = true;} + void show_hour_unit() {hide_hour_unit_ = false;} static std::vector unitOrder; private: @@ -155,7 +155,7 @@ class UnitType { Unit internal_value_; static Map map_; public: - static Map& getConverter() {return map_;} + static Map& get_converter() {return map_;} }; @@ -179,10 +179,10 @@ class Step { UnitType unit() const { return unit_; } // Setters - Step& setUnit(long new_unit); - Step& setUnit(const std::string& new_unit); - Step& setUnit(const Unit new_unit); - Step& setUnit(const UnitType& new_unit); + Step& set_unit(long new_unit); + Step& set_unit(const std::string& new_unit); + Step& set_unit(const Unit new_unit); + Step& set_unit(const UnitType& new_unit); // Operators bool operator==(const Step& other) const; @@ -191,31 +191,31 @@ class Step { Step operator-(const Step& step); // Methods - Step& optimizeUnit(); - friend std::pair findCommonUnits(const Step& startStep, const Step& endStep); - void hideHourUnit() { - internal_unit_.hideHourUnit(); - unit_.hideHourUnit(); + Step& optimize_unit(); + friend std::pair find_common_units(const Step& startStep, const Step& endStep); + void hide_hour_unit() { + internal_unit_.hide_hour_unit(); + unit_.hide_hour_unit(); } - void showHourUnit() { - internal_unit_.showHourUnit(); - unit_.showHourUnit(); + void show_hour_unit() { + internal_unit_.show_hour_unit(); + unit_.show_hour_unit(); } - std::string toString() const { + std::string to_string() const { std::stringstream ss; if (value() == value()) { - ss << value() << unit_.toString(); + ss << value() << unit_.to_string(); } else { - ss << value() << unit_.toString(); + ss << value() << unit_.to_string(); } return ss.str(); } private: - void initLong(long value, const UnitType& unit); - void initDouble(double value, const UnitType& unit); - void sanityCheck() const; + void init_long(long value, const UnitType& unit); + void init_double(double value, const UnitType& unit); + void sanity_check() const; Step& recalculateValue() { if (internal_value_ == 0) { internal_unit_ = unit_; @@ -223,7 +223,7 @@ class Step { } Seconds secs(0); - switch (internal_unit_.toValue()) { + switch (internal_unit_.to_value()) { case Unit::SECOND: secs = Seconds(internal_value_); break; @@ -240,11 +240,11 @@ class Step { secs = Months(internal_value_); break; default: - std::string msg = "Unknown unit: " + internal_unit_.toString(); + std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); } - long multiplier = UnitType::getConverter().unit_to_duration(unit_.toValue()); + long multiplier = UnitType::get_converter().unit_to_duration(unit_.to_value()); internal_value_ = secs.count() / multiplier; internal_unit_ = unit_; @@ -258,8 +258,8 @@ class Step { Step step_from_string(std::string step); -std::vector parseRange(const std::string& range_str); -std::pair findCommonUnits(const Step& startStep, const Step& endStep); +std::vector parse_range(const std::string& range_str); +std::pair find_common_units(const Step& startStep, const Step& endStep); template T Step::value() const { @@ -270,7 +270,7 @@ template T Step::value() const { return internal_value_; } Seconds duration(0); - switch (internal_unit_.toValue()) { + switch (internal_unit_.to_value()) { case Unit::SECOND: duration = Seconds(internal_value_); break; @@ -287,12 +287,12 @@ template T Step::value() const { duration = Months(internal_value_); break; default: - std::string msg = "Unknown unit: " + internal_unit_.toString(); + std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); } T value = 0; - switch (unit_.toValue()) { + switch (unit_.to_value()) { case Unit::SECOND: value = duration.count(); break; @@ -309,7 +309,7 @@ template T Step::value() const { value = std::chrono::duration_cast>(duration).count(); break; default: - std::string msg = "Unknown unit: " + UnitType{unit_}.toString(); + std::string msg = "Unknown unit: " + UnitType{unit_}.to_string(); throw std::runtime_error(msg); } return value; diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 575ae8384..284c9ec08 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -1,7 +1,8 @@ //#include "step_range.h" #include "step_utilities.h" -std::optional getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key){ + +std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key){ if (grib_is_defined(h, unit_key.c_str()) && grib_is_defined(h, value_key.c_str())) { long unit = 0; if (grib_get_long_internal(h, unit_key.c_str(), &unit) != GRIB_SUCCESS) @@ -19,28 +20,11 @@ std::optional getStep(grib_handle* h, const std::string& value_key, const } -//std::optional getForecastTime(grib_handle* h) { -// return getStep(h, "forecastTime", "indicatorOfUnitOfTimeRange"); -//} - - -//std::optional getLengthOfTimeRange(grib_handle* h) { -// return getStep(h, "lengthOfTimeRange", "indicatorOfUnitForTimeRange"); -//} - - -//StepRange getTimeRange(grib_handle* h) { -// auto forecast_time = getForecastTime(h); -// auto length_of_time_range = getLengthOfTimeRange(h); -// return StepRange{forecast_time.value_or(Step{}), forecast_time.value_or(Step{}) + length_of_time_range.value_or(Step{})}; -//} - - -bool futureOutputEnabled(grib_handle* h) { - size_t stepOutputFormatSize = 128; - char stepOutputFormat[stepOutputFormatSize]; +bool is_future_output_enabled(grib_handle* h) { + size_t step_output_format_size = 128; + char step_output_format[step_output_format_size]; int ret = 0; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", stepOutputFormat, &stepOutputFormatSize)) != GRIB_SUCCESS) + if ((ret = grib_get_string_internal(h, "step_output_format", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) return ret; - return strcmp(stepOutputFormat, "future") == 0; + return strcmp(step_output_format, "future") == 0; } diff --git a/src/step_utilities.h b/src/step_utilities.h index fddcd1f9c..d6733e0e4 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -3,12 +3,7 @@ #include "grib_api_internal.h" #include "step.h" #include -//#include "step_range.h" - -std::optional getStep(grib_handle* h, const std::string& value_key, const std::string& unit_key); -//std::optional getForecastTime(grib_handle* h); -//std::optional getLengthOfTimeRange(grib_handle* h); -//StepRange getTimeRange(grib_handle* h); -bool futureOutputEnabled(grib_handle* h); +std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key); +bool is_future_output_enabled(grib_handle* h); From e243ccff4a80dd7da658de5722cc4e959154b393 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 06:45:38 +0000 Subject: [PATCH 019/469] ECC-1620: Fix key name --- src/step_utilities.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 284c9ec08..7ad8780eb 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -24,7 +24,7 @@ bool is_future_output_enabled(grib_handle* h) { size_t step_output_format_size = 128; char step_output_format[step_output_format_size]; int ret = 0; - if ((ret = grib_get_string_internal(h, "step_output_format", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) + if ((ret = grib_get_string_internal(h, "stepOutputFormat", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) return ret; return strcmp(step_output_format, "future") == 0; } From 037fdbbddc8478a8c10e6cd6ff9781d22c5a88bf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 09:04:42 +0000 Subject: [PATCH 020/469] ECC-1620: Bug fix --- src/grib_accessor_class_step_in_units.cc | 2 ++ tests/grib_ecc-1620.sh | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 27d33e627..6b5bd4656 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -375,5 +375,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) Step step(value_secs, Unit::SECOND); step.set_unit(step_units_old); *val = step.value(); + if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) + return ret; return GRIB_SUCCESS; } diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 261f4bc13..048bb26de 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -115,7 +115,6 @@ grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" ${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" -exit #${tools_dir}/grib_set -s $fn $temp @@ -145,13 +144,13 @@ keys_d="step:d" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) +#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0.983333" # TODO(EB): check behaviour grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "59" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "59" grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour From 1f268a57c63a1099a6cf4b5067ffa5e654df6293 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 25 Aug 2023 09:16:19 +0000 Subject: [PATCH 021/469] ECC-1620: Bug fix (MARS output) --- src/step.cc | 29 +++++++++--------- src/step.h | 87 ++++++++++++++++++++++++++--------------------------- 2 files changed, 56 insertions(+), 60 deletions(-) diff --git a/src/step.cc b/src/step.cc index 21b5929ee..1a8c709f8 100644 --- a/src/step.cc +++ b/src/step.cc @@ -166,21 +166,20 @@ Step& Step::optimize_unit() { unit_ = internal_unit_; Seconds duration(0); switch (internal_unit_.to_value()) { - case Unit::SECOND: - duration = Seconds(internal_value_); - break; - case Unit::MINUTE: - duration = Minutes(internal_value_); - break; - case Unit::HOUR: - duration = Hours(internal_value_); - break; - case Unit::DAY: - duration = Days(internal_value_); - break; - case Unit::MONTH: - duration = Months(internal_value_); - break; + case Unit::SECOND: duration = Seconds(internal_value_); break; + case Unit::MINUTE: duration = Minutes(internal_value_); break; + case Unit::MINUTES15: duration = Minutes15(internal_value_); break; + case Unit::MINUTES30: duration = Minutes30(internal_value_); break; + case Unit::HOUR: duration = Hours(internal_value_); break; + case Unit::HOURS3: duration = Hours3(internal_value_); break; + case Unit::HOURS6: duration = Hours6(internal_value_); break; + case Unit::HOURS12: duration = Hours12(internal_value_); break; + case Unit::DAY: duration = Days(internal_value_); break; + case Unit::MONTH: duration = Months(internal_value_); break; + case Unit::YEAR: duration = Years(internal_value_); break; + case Unit::YEARS10: duration = Years10(internal_value_); break; + case Unit::YEARS30: duration = Years30(internal_value_); break; + case Unit::CENTURY: duration = Centuries(internal_value_); break; default: std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); diff --git a/src/step.h b/src/step.h index a39daf989..f07ee5412 100644 --- a/src/step.h +++ b/src/step.h @@ -224,21 +224,20 @@ class Step { Seconds secs(0); switch (internal_unit_.to_value()) { - case Unit::SECOND: - secs = Seconds(internal_value_); - break; - case Unit::MINUTE: - secs = Minutes(internal_value_); - break; - case Unit::HOUR: - secs = Hours(internal_value_); - break; - case Unit::DAY: - secs = Days(internal_value_); - break; - case Unit::MONTH: - secs = Months(internal_value_); - break; + case Unit::SECOND: secs = Seconds(internal_value_); break; + case Unit::MINUTE: secs = Minutes(internal_value_); break; + case Unit::MINUTES15: secs = Minutes15(internal_value_); break; + case Unit::MINUTES30: secs = Minutes30(internal_value_); break; + case Unit::HOUR: secs = Hours(internal_value_); break; + case Unit::HOURS3: secs = Hours3(internal_value_); break; + case Unit::HOURS6: secs = Hours6(internal_value_); break; + case Unit::HOURS12: secs = Hours12(internal_value_); break; + case Unit::DAY: secs = Days(internal_value_); break; + case Unit::MONTH: secs = Months(internal_value_); break; + case Unit::YEAR: secs = Years(internal_value_); break; + case Unit::YEARS10: secs = Years10(internal_value_); break; + case Unit::YEARS30: secs = Years30(internal_value_); break; + case Unit::CENTURY: secs = Centuries(internal_value_); break; default: std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); @@ -271,21 +270,20 @@ template T Step::value() const { } Seconds duration(0); switch (internal_unit_.to_value()) { - case Unit::SECOND: - duration = Seconds(internal_value_); - break; - case Unit::MINUTE: - duration = Minutes(internal_value_); - break; - case Unit::HOUR: - duration = Hours(internal_value_); - break; - case Unit::DAY: - duration = Days(internal_value_); - break; - case Unit::MONTH: - duration = Months(internal_value_); - break; + case Unit::SECOND: duration = Seconds(internal_value_); break; + case Unit::MINUTE: duration = Minutes(internal_value_); break; + case Unit::MINUTES15: duration = Minutes15(internal_value_); break; + case Unit::MINUTES30: duration = Minutes30(internal_value_); break; + case Unit::HOUR: duration = Hours(internal_value_); break; + case Unit::HOURS3: duration = Hours3(internal_value_); break; + case Unit::HOURS6: duration = Hours6(internal_value_); break; + case Unit::HOURS12: duration = Hours12(internal_value_); break; + case Unit::DAY: duration = Days(internal_value_); break; + case Unit::MONTH: duration = Months(internal_value_); break; + case Unit::YEAR: duration = Years(internal_value_); break; + case Unit::YEARS10: duration = Years10(internal_value_); break; + case Unit::YEARS30: duration = Years30(internal_value_); break; + case Unit::CENTURY: duration = Centuries(internal_value_); break; default: std::string msg = "Unknown unit: " + internal_unit_.to_string(); throw std::runtime_error(msg); @@ -293,21 +291,20 @@ template T Step::value() const { T value = 0; switch (unit_.to_value()) { - case Unit::SECOND: - value = duration.count(); - break; - case Unit::MINUTE: - value = std::chrono::duration_cast>(duration).count(); - break; - case Unit::HOUR: - value = std::chrono::duration_cast>(duration).count(); - break; - case Unit::DAY: - value = std::chrono::duration_cast>(duration).count(); - break; - case Unit::MONTH: - value = std::chrono::duration_cast>(duration).count(); - break; + case Unit::SECOND: value = duration.count(); break; + case Unit::MINUTE: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::MINUTES15: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::MINUTES30: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::HOUR: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::HOURS3: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::HOURS6: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::HOURS12: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::DAY: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::MONTH: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::YEAR: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::YEARS10: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::YEARS30: value = std::chrono::duration_cast>(duration).count(); break; + case Unit::CENTURY: value = std::chrono::duration_cast>(duration).count(); break; default: std::string msg = "Unknown unit: " + UnitType{unit_}.to_string(); throw std::runtime_error(msg); From febbca0c3f094e27dc373ea549242f26a82f14e7 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 30 Aug 2023 06:00:49 +0000 Subject: [PATCH 022/469] ECC-1620: Remove double packing and unpacking --- .../grib2/template.4.forecast_time.def | 1 + src/grib_accessor_class_g2end_step.cc | 74 ++------ src/grib_accessor_class_g2step_range.cc | 43 +---- src/grib_accessor_class_optimal_step_units.cc | 13 +- src/grib_accessor_class_step_in_units.cc | 128 +++++-------- src/step.cc | 174 ++++++++---------- src/step.h | 164 +++++++++-------- src/step_utilities.cc | 21 ++- src/step_utilities.h | 23 +++ tests/grib_ecc-1620.sh | 90 ++++----- 10 files changed, 320 insertions(+), 411 deletions(-) diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 00df0b1a2..600be0616 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -14,6 +14,7 @@ codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump #alias forecastTimeUnit = indicatorOfUnitOfTimeRange; #template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; #codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +transient useOptimalStepUnits = 0; meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index b8ab3b411..836f42825 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -20,7 +20,6 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long - IMPLEMENTS = unpack_double;pack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* start_step @@ -59,10 +58,8 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); @@ -117,9 +114,9 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, /* pack_double */ 0, /* pack_float */ - &unpack_double, /* unpack_double */ + 0, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -233,7 +230,7 @@ static int is_special_expver(grib_handle* h) return 0; } -static int convert_time_range( +static int convert_time_range_long_( grib_handle* h, long stepUnits, /* unit */ long indicatorOfUnitForTimeRange, /* coded_unit */ @@ -269,7 +266,8 @@ static int convert_time_range( return GRIB_SUCCESS; } -static int unpack_one_time_range(grib_accessor* a, long* val, size_t* len) + +static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; int err = 0; @@ -292,7 +290,7 @@ static int unpack_one_time_range(grib_accessor* a, long* val, size_t* len) if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - err = convert_time_range(h, unit, coded_unit, &coded_time_range); + err = convert_time_range_long_(h, unit, coded_unit, &coded_time_range); if (err != GRIB_SUCCESS) return err; @@ -314,8 +312,9 @@ static int unpack_one_time_range(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } + #define MAX_NUM_TIME_RANGES 16 /* maximum number of time range specifications */ -static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len) +static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; int i = 0, err = 0; @@ -354,7 +353,7 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len) long the_coded_unit = arr_coded_unit[i]; long the_coded_time_range = arr_coded_time_range[i]; - err = convert_time_range(h, unit, the_coded_unit, &the_coded_time_range); + err = convert_time_range_long_(h, unit, the_coded_unit, &the_coded_time_range); if (err != GRIB_SUCCESS) return err; @@ -368,6 +367,7 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len) return GRIB_DECODING_ERROR; } + // For the old implementation of unpack_long, see // src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc // @@ -394,18 +394,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); if (numberOfTimeRange == 1) { - ret = unpack_one_time_range(a, val, len); + ret = unpack_one_time_range_long_(a, val, len); return ret; } else { - ret = unpack_multiple_time_ranges(a, val, len); + ret = unpack_multiple_time_ranges_long_(a, val, len); return ret; } return GRIB_SUCCESS; } -// TODO(maee): Re-implement calendar-based stepRange using std::chrono + + static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -513,6 +514,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return GRIB_SUCCESS; } + static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -550,29 +552,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } -static int pack_double(grib_accessor* a, const double* val, size_t* len) -{ - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - - long step_units; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; - Step end_step{*val, step_units}; - - end_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().to_long())) != GRIB_SUCCESS) - return ret; - long end_step_value = end_step.value(); - - if ((ret = pack_long(a, &end_step_value, len)) != GRIB_SUCCESS) - return ret; - - return GRIB_SUCCESS; -} - - static int pack_string(grib_accessor* a, const char* val, size_t* len) { //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -583,29 +562,10 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().to_long())) != GRIB_SUCCESS) return ret; - double end_step_value = end_step.value(); + long end_step_value = end_step.value(); size_t end_step_len = 0; - if ((ret = pack_double(a, &end_step_value, &end_step_len)) != GRIB_SUCCESS) - return ret; - return GRIB_SUCCESS; -} - - -static int unpack_double(grib_accessor* a, double* val, size_t* len) -{ - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - - long a_val; - if ((ret = unpack_long(a, &a_val, len)) != GRIB_SUCCESS) + if ((ret = pack_long(a, &end_step_value, &end_step_len)) != GRIB_SUCCESS) return ret; - long step_units; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; - - Step end_step{a_val, step_units}; - *val = end_step.value(); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 05bf65be7..a6291b646 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -24,7 +24,6 @@ SUPER = grib_accessor_class_gen IMPLEMENTS = pack_string;unpack_string;value_count IMPLEMENTS = unpack_long;pack_long - IMPLEMENTS = unpack_double;pack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = get_native_type;string_length IMPLEMENTS = init @@ -45,10 +44,8 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); @@ -87,9 +84,9 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, /* pack_double */ 0, /* pack_float */ - &unpack_double, /* unpack_double */ + 0, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -249,42 +246,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return pack_string(a, buff, &bufflen); } -static int pack_double(grib_accessor* a, const double* val, size_t* len) -{ - // TODO(EB) - return GRIB_NOT_IMPLEMENTED; -} - -static int unpack_double(grib_accessor* a, double* val, size_t* len) -{ - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - grib_handle* h = grib_handle_of_accessor(a); - char buf[100]; - int ret = 0; - size_t size = 0; - long start_value = 0; - long end_value = 0; - long step_units_value = 0; - - if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) - return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) - return ret; - - Step start_step = Step(start_value, step_units_value); - start_step.hide_hour_unit(); - if (self->endStep == NULL) { - *val = start_step.value(); - } - else { - if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) - return ret; - Step end_step = Step(end_value, step_units_value); - *val = end_step.value(); - } - - return GRIB_SUCCESS; -} static int unpack_long(grib_accessor* a, long* val, size_t* len) { diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index e670034c6..79d9cf054 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -167,17 +167,18 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - auto start_step_opt = get_step(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); - auto end_step_opt = get_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); + auto forecast_time_opt = get_step(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); + auto lenght_of_time_range_opt = get_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); - if (!(start_step_opt && end_step_opt)) { + if (!(forecast_time_opt && lenght_of_time_range_opt)) { *val = UnitType{Unit::HOUR}.to_long(); + return GRIB_SUCCESS; } - Step start_step = start_step_opt.value_or(Step{}); - Step end_step = end_step_opt.value_or(Step{}); + Step forecast_time = forecast_time_opt.value_or(Step{}); + Step length_of_time_range = lenght_of_time_range_opt.value_or(Step{}); - auto [step_a, step_b] = find_common_units(start_step.optimize_unit(), end_step.optimize_unit()); + auto [step_a, step_b] = find_common_units(forecast_time.optimize_unit(), (forecast_time + length_of_time_range).optimize_unit()); *val = step_a.unit().to_long(); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 6b5bd4656..89c23b130 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -19,7 +19,6 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long - IMPLEMENTS = unpack_double;pack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* codedStep @@ -42,10 +41,8 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); @@ -87,9 +84,9 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, /* pack_double */ 0, /* pack_float */ - &unpack_double, /* unpack_double */ + 0, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -174,23 +171,23 @@ static const int u2s[] = { 1800 /* (15) 30 minutes */ }; + static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret; - + int err = 0; long codedStep, codedUnits, stepUnits; + grib_handle* h = grib_handle_of_accessor(a); int factor = 0; long u2sf, u2sf_step_unit; - if ((ret = grib_get_long_internal(h, self->codedUnits, &codedUnits))) - return ret; - if ((ret = grib_get_long_internal(h, self->stepUnits, &stepUnits))) - return ret; - if ((ret = grib_get_long_internal(h, self->codedStep, &codedStep))) - return ret; + if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + return err; + if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + return err; + if ((err = grib_get_long_internal(h, self->codedStep, &codedStep))) + return err; if (stepUnits != codedUnits) { *val = codedStep * u2s2[codedUnits]; @@ -209,9 +206,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } if (*val % u2sf_step_unit != 0) { - ret = grib_set_long_internal(h, self->stepUnits, codedUnits); + err = grib_set_long_internal(h, self->stepUnits, codedUnits); *val = codedStep; - return ret; + return err; } *val = *val / u2sf_step_unit; } @@ -221,11 +218,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } + static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); - int err = 0; long codedStep, codedUnits, stepUnits; long oldStep = 0; @@ -275,107 +272,64 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); } + static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + size_t value_len = 0; Step step = step_from_string(val); - step.optimize_unit(); - - if ((ret = grib_set_long_internal(h, self->stepUnits, step.unit().to_long()))) - return ret; - long step_value = step.value(); - if ((ret = pack_long(a, &step_value, len)) != GRIB_SUCCESS) - return ret; - - return GRIB_SUCCESS; -} - -static int unpack_string(grib_accessor* a, char* val, size_t* len) -{ - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - - long step_units_old; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + long step_units; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) + long end_step_value; + if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) return ret; + Step end_step{end_step_value, UnitType{step_units}}; - long step_value; - size_t step_len = 0; - if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) + auto [step_a, step_b] = find_common_units(step, end_step); + if ((ret = grib_set_long_internal(h, "stepUnits", step_a.unit().to_long())) != GRIB_SUCCESS) return ret; + long value = step.value(step_a.unit()); - Step step(step_value, Unit::SECOND); - step.set_unit(step_units_old); - - if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) + if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) return ret; - step.hide_hour_unit(); - if (is_future_output_enabled(h)) { - snprintf(val, *len, "%s", step.to_string().c_str()); - } - else { - snprintf(val, *len, "%ld", step.value()); - } + //if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) + //return ret; return GRIB_SUCCESS; } - -static int pack_double(grib_accessor* a, const double* val, size_t* len) +static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + long value; + size_t value_len; + if ((ret = unpack_long(a, &value, &value_len)) != GRIB_SUCCESS) + return ret; long step_units; if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - Step start_step{*val, step_units}; - - start_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, "stepUnits", start_step.unit().to_long())) != GRIB_SUCCESS) - return ret; - long start_step_value = start_step.value(); - if ((ret = pack_long(a, &start_step_value, len)) != GRIB_SUCCESS) - return ret; + Step step{value, step_units}; + step.hide_hour_unit(); + //snprintf(val, *len, "%ld", value); + if (is_future_output_enabled(h)) { + snprintf(val, *len, "%s", step.to_string().c_str()); + } + else { + snprintf(val, *len, "%ld", step.value()); + } return GRIB_SUCCESS; } -static int unpack_double(grib_accessor* a, double* val, size_t* len) -{ - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret; - - long step_units_old; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) - return ret; - UnitType step_units{step_units_old}; - - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) - return ret; - - long value_secs; - size_t value_secs_len = 0; - if ((ret = unpack_long(a, &value_secs, &value_secs_len)) != GRIB_SUCCESS) - return ret; - - Step step(value_secs, Unit::SECOND); - step.set_unit(step_units_old); - *val = step.value(); - if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) - return ret; - return GRIB_SUCCESS; -} diff --git a/src/step.cc b/src/step.cc index 1a8c709f8..13ff22cd8 100644 --- a/src/step.cc +++ b/src/step.cc @@ -12,14 +12,35 @@ UnitType::Map UnitType::map_{}; -std::vector UnitType::unitOrder = { - Unit::SECOND, - Unit::MINUTE, - Unit::HOUR, - }; - -Step step_from_string(std::string step) { +std::vector UnitType::unit_order_ = { + Unit::SECOND, + Unit::MINUTE, + Unit::HOUR, + //Unit::DAY, +}; + +std::vector UnitType::complete_unit_order_ = { + Unit::MISSING , + Unit::SECOND , + Unit::MINUTE , + Unit::MINUTES15 , + Unit::MINUTES30 , + Unit::HOUR , + Unit::HOURS3 , + Unit::HOURS6 , + Unit::HOURS12 , + Unit::DAY , + Unit::MONTH , + Unit::YEAR , + Unit::YEARS10 , + Unit::YEARS30 , + Unit::CENTURY +}; + + +Step step_from_string(std::string step) +{ std::regex re("([0-9.]+)([smhDMYC]?)"); std::smatch match; if (std::regex_match(step, match, re)) { @@ -35,7 +56,9 @@ Step step_from_string(std::string step) { throw std::runtime_error("Could not parse step: " + step); } -std::vector parse_range(const std::string& range_str) { + +std::vector parse_range(const std::string& range_str) +{ std::vector steps; std::string::size_type pos = 0; std::string::size_type prev = 0; @@ -48,31 +71,52 @@ std::vector parse_range(const std::string& range_str) { } -bool Step::operator==(const Step& other) const { +bool Step::operator==(const Step& other) const +{ if ((internal_value_ == other.internal_value_) && (internal_unit_ == other.internal_unit_)) { return true; } return false; } -Step Step::operator+(const Step& step) { + +bool Step::operator>(const Step& step) const +{ + auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); + assert(a.internal_unit_ == b.internal_unit_); + return a.internal_value_ > b.internal_value_; +} + + +bool Step::operator<(const Step& step) const +{ + auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); + assert(a.internal_unit_ == b.internal_unit_); + return a.internal_value_ < b.internal_value_; +} + + +Step Step::operator+(const Step& step) const +{ Step tmp = step; - auto [a, b] = find_common_units(this->optimize_unit(), tmp.optimize_unit()); + auto [a, b] = find_common_units(this->copy().optimize_unit(), tmp.copy().optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); return Step(a.internal_value_ + b.internal_value_, a.internal_unit_); } -Step Step::operator-(const Step& step) { + +Step Step::operator-(const Step& step) const +{ Step tmp = step; - auto [a, b] = find_common_units(this->optimize_unit(), tmp.optimize_unit()); + auto [a, b] = find_common_units(this->copy().optimize_unit(), tmp.copy().optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); - if (a.internal_value_ < b.internal_value_) { - throw std::runtime_error("Negative step not supported"); - } return Step(a.internal_value_ - b.internal_value_, a.internal_unit_); } -std::pair find_common_units(const Step& startStep, const Step& endStep) { + +//std::pair find_common_units(const Step& startStep, const Step& endStep) +std::pair find_common_units(const Step& startStep, const Step& endStep) +{ Step a = startStep; Step b = endStep; @@ -97,11 +141,11 @@ std::pair find_common_units(const Step& startStep, const Step& endSt } else { // Find the highest common unit - auto it = std::find_if(UnitType::unitOrder.begin(), UnitType::unitOrder.end(), [&](const auto& e) { + auto it = std::find_if(UnitType::unit_order_.begin(), UnitType::unit_order_.end(), [&](const auto& e) { return e == a.unit().to_value() || e == b.unit().to_value(); }); - assert(it != UnitType::unitOrder.end()); + assert(it != UnitType::unit_order_.end()); a.set_unit(*it); b.set_unit(*it); @@ -113,84 +157,43 @@ std::pair find_common_units(const Step& startStep, const Step& endSt return {a, b}; } -void Step::sanity_check() const { +void Step::sanity_check() const +{ static_assert(sizeof(int) == 4, "int is not 4 bytes"); - if (!(internal_value_ >= std::numeric_limits::min() && internal_value_ <= std::numeric_limits::max())) { - throw std::out_of_range("Step is out of range."); - } + //if (!(internal_value_ >= std::numeric_limits::min() && internal_value_ <= std::numeric_limits::max())) { + //throw std::out_of_range("Step is out of range."); + //} } -void Step::init_long(long value, const UnitType& unit) { +void Step::init_long(long value, const UnitType& unit) +{ internal_value_ = value; internal_unit_ = unit; unit_ = internal_unit_; sanity_check(); } -void Step::init_double(double value, const UnitType& unit) { +void Step::init_double(double value, const UnitType& unit) +{ long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); optimize_unit(); } -Step::Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {init_double(value, unit);} -Step::Step(double value, Unit unit) {init_double(value, UnitType{unit});} -Step::Step(double value, long unit) {init_double(value, UnitType{unit});} -Step::Step(double value, const std::string& unit) {init_double(value, UnitType{unit});} - -Step::Step(long value, const UnitType& unit) { init_long(value, unit);} -Step::Step(long value, Unit unit) {init_long(value, UnitType{unit});} -Step::Step(long value, long unit) {init_long(value, UnitType{unit});} -Step::Step(long value, const std::string& unit) {init_long(value, UnitType{unit});} - -Step::Step(const std::string& str) { - //size_t pos = str.find_first_of("smhDMYC"); - size_t pos = str.find_first_of("smh"); - if (pos == std::string::npos) { - throw std::runtime_error("Unknown unit."); - } - std::string v_str = str.substr(0, pos); - std::string u_str = str.substr(pos); - double v = std::stod(v_str); - - init_double(v, UnitType{u_str}); -} - - -Step& Step::optimize_unit() { +Step& Step::optimize_unit() +{ if (internal_value_ == 0) { return *this; } unit_ = internal_unit_; - Seconds duration(0); - switch (internal_unit_.to_value()) { - case Unit::SECOND: duration = Seconds(internal_value_); break; - case Unit::MINUTE: duration = Minutes(internal_value_); break; - case Unit::MINUTES15: duration = Minutes15(internal_value_); break; - case Unit::MINUTES30: duration = Minutes30(internal_value_); break; - case Unit::HOUR: duration = Hours(internal_value_); break; - case Unit::HOURS3: duration = Hours3(internal_value_); break; - case Unit::HOURS6: duration = Hours6(internal_value_); break; - case Unit::HOURS12: duration = Hours12(internal_value_); break; - case Unit::DAY: duration = Days(internal_value_); break; - case Unit::MONTH: duration = Months(internal_value_); break; - case Unit::YEAR: duration = Years(internal_value_); break; - case Unit::YEARS10: duration = Years10(internal_value_); break; - case Unit::YEARS30: duration = Years30(internal_value_); break; - case Unit::CENTURY: duration = Centuries(internal_value_); break; - default: - std::string msg = "Unknown unit: " + internal_unit_.to_string(); - throw std::runtime_error(msg); - } + Seconds seconds = to_seconds(internal_value_, internal_unit_); - Seconds d = std::chrono::duration_cast>(duration); - - for (auto it = UnitType::unitOrder.rbegin(); it != UnitType::unitOrder.rend(); ++it) { + for (auto it = UnitType::unit_order_.rbegin(); it != UnitType::unit_order_.rend(); ++it) { long multiplier = UnitType::get_converter().unit_to_duration(*it); - if (d.count() % multiplier == 0) { - internal_value_ = duration.count() / multiplier; + if (seconds.count() % multiplier == 0) { + internal_value_ = seconds.count() / multiplier; internal_unit_ = *it; unit_ = *it; return *this; @@ -199,24 +202,3 @@ Step& Step::optimize_unit() { return *this; } - -Step& Step::set_unit(const std::string& unit_name) { - unit_ = UnitType{unit_name}; - return *this; -} - -Step& Step::set_unit(long unit_code) { - unit_ = UnitType{unit_code}; - return *this; -} - -Step& Step::set_unit(const UnitType& new_unit) { - unit_ = new_unit; - return *this; -} - -Step& Step::set_unit(const Unit new_unit) { - unit_ = new_unit; - return *this; -} - diff --git a/src/step.h b/src/step.h index f07ee5412..a5d6d5343 100644 --- a/src/step.h +++ b/src/step.h @@ -32,7 +32,6 @@ template using Minutes15 = std::chrono::duration template using Minutes30 = std::chrono::duration>; template using Missing = std::chrono::duration>; - enum class Unit { MINUTE = 0, HOUR = 1, @@ -51,10 +50,13 @@ enum class Unit { MISSING = 255, }; +class UnitType; +template Seconds to_seconds(long value, const UnitType& unit); +template T from_seconds(Seconds seconds, const UnitType& unit); class UnitType { public: - explicit UnitType() : internal_value_(Unit::HOUR) {} + UnitType() : internal_value_(Unit::HOUR) {} explicit UnitType(Unit unit_value) : internal_value_(unit_value) {} explicit UnitType(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} explicit UnitType(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} @@ -82,7 +84,8 @@ class UnitType { Unit to_value() const {return internal_value_;} void hide_hour_unit() {hide_hour_unit_ = true;} void show_hour_unit() {hide_hour_unit_ = false;} - static std::vector unitOrder; + static std::vector unit_order_; + static std::vector complete_unit_order_; private: bool hide_hour_unit_ = false; @@ -163,42 +166,46 @@ class Step { public: // Constructors Step() : internal_value_(0), internal_unit_(Unit::SECOND) {} - Step(double value, const UnitType& unit); - Step(double value, Unit unit); - Step(double value, long unit); - Step(double value, const std::string& unit); - Step(long value, const UnitType& unit); - Step(long value, Unit unit); - Step(long value, long unit); - Step(long value, const std::string& unit); - explicit Step(const std::string& str); + Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {init_double(value, unit);} + Step(double value, Unit unit) {init_double(value, UnitType{unit});} + Step(double value, long unit) {init_double(value, UnitType{unit});} + Step(double value, const std::string& unit) {init_double(value, UnitType{unit});} + + Step(long value, const UnitType& unit) { init_long(value, unit);} + Step(long value, Unit unit) {init_long(value, UnitType{unit});} + Step(long value, long unit) {init_long(value, UnitType{unit});} + Step(long value, const std::string& unit) {init_long(value, UnitType{unit});} // Getters template T value() const; + template T value(const UnitType& unit) const; UnitType unit() const { return unit_; } // Setters - Step& set_unit(long new_unit); - Step& set_unit(const std::string& new_unit); - Step& set_unit(const Unit new_unit); - Step& set_unit(const UnitType& new_unit); + Step& set_unit(const std::string& unit_name) {unit_ = UnitType{unit_name}; return *this;} + Step& set_unit(long unit_code) {unit_ = UnitType{unit_code}; return *this;} + Step& set_unit(const UnitType& new_unit) {unit_ = new_unit; return *this;} + Step& set_unit(const Unit new_unit) {unit_ = new_unit; return *this;} // Operators bool operator==(const Step& other) const; bool operator!=(const Step& other) const; - Step operator+(const Step& step); - Step operator-(const Step& step); + Step operator+(const Step& step) const; + Step operator-(const Step& step) const; + bool operator>(const Step& step) const; + bool operator<(const Step& step) const; + Step copy() const {return Step{internal_value_, internal_unit_};} // Methods Step& optimize_unit(); friend std::pair find_common_units(const Step& startStep, const Step& endStep); void hide_hour_unit() { - internal_unit_.hide_hour_unit(); + internal_unit_.hide_hour_unit(); unit_.hide_hour_unit(); } void show_hour_unit() { - internal_unit_.show_hour_unit(); + internal_unit_.show_hour_unit(); unit_.show_hour_unit(); } @@ -222,29 +229,9 @@ class Step { return *this; } - Seconds secs(0); - switch (internal_unit_.to_value()) { - case Unit::SECOND: secs = Seconds(internal_value_); break; - case Unit::MINUTE: secs = Minutes(internal_value_); break; - case Unit::MINUTES15: secs = Minutes15(internal_value_); break; - case Unit::MINUTES30: secs = Minutes30(internal_value_); break; - case Unit::HOUR: secs = Hours(internal_value_); break; - case Unit::HOURS3: secs = Hours3(internal_value_); break; - case Unit::HOURS6: secs = Hours6(internal_value_); break; - case Unit::HOURS12: secs = Hours12(internal_value_); break; - case Unit::DAY: secs = Days(internal_value_); break; - case Unit::MONTH: secs = Months(internal_value_); break; - case Unit::YEAR: secs = Years(internal_value_); break; - case Unit::YEARS10: secs = Years10(internal_value_); break; - case Unit::YEARS30: secs = Years30(internal_value_); break; - case Unit::CENTURY: secs = Centuries(internal_value_); break; - default: - std::string msg = "Unknown unit: " + internal_unit_.to_string(); - throw std::runtime_error(msg); - } - + Seconds seconds = to_seconds(internal_value_, internal_unit_); long multiplier = UnitType::get_converter().unit_to_duration(unit_.to_value()); - internal_value_ = secs.count() / multiplier; + internal_value_ = seconds.count() / multiplier; internal_unit_ = unit_; return *this; @@ -263,50 +250,75 @@ std::pair find_common_units(const Step& startStep, const Step& endSt template T Step::value() const { if (internal_value_ == 0) { - return internal_value_; + return 0; } if (internal_unit_ == unit_) { return internal_value_; } - Seconds duration(0); - switch (internal_unit_.to_value()) { - case Unit::SECOND: duration = Seconds(internal_value_); break; - case Unit::MINUTE: duration = Minutes(internal_value_); break; - case Unit::MINUTES15: duration = Minutes15(internal_value_); break; - case Unit::MINUTES30: duration = Minutes30(internal_value_); break; - case Unit::HOUR: duration = Hours(internal_value_); break; - case Unit::HOURS3: duration = Hours3(internal_value_); break; - case Unit::HOURS6: duration = Hours6(internal_value_); break; - case Unit::HOURS12: duration = Hours12(internal_value_); break; - case Unit::DAY: duration = Days(internal_value_); break; - case Unit::MONTH: duration = Months(internal_value_); break; - case Unit::YEAR: duration = Years(internal_value_); break; - case Unit::YEARS10: duration = Years10(internal_value_); break; - case Unit::YEARS30: duration = Years30(internal_value_); break; - case Unit::CENTURY: duration = Centuries(internal_value_); break; + Seconds seconds = to_seconds(internal_value_, internal_unit_); + T value = from_seconds(seconds, unit_); + return value; +} + +template T Step::value(const UnitType& unit) const { + if (internal_value_ == 0) { + return 0; + } + if (internal_unit_ == unit) { + return internal_value_; + } + Seconds seconds = to_seconds(internal_value_, internal_unit_); + T value = from_seconds(seconds, unit); + return value; +} + + +template +Seconds to_seconds(long value, const UnitType& unit) { + Seconds seconds; + switch (unit.to_value()) { + case Unit::SECOND: seconds = Seconds(value); break; + case Unit::MINUTE: seconds = Minutes(value); break; + case Unit::MINUTES15: seconds = Minutes15(value); break; + case Unit::MINUTES30: seconds = Minutes30(value); break; + case Unit::HOUR: seconds = Hours(value); break; + case Unit::HOURS3: seconds = Hours3(value); break; + case Unit::HOURS6: seconds = Hours6(value); break; + case Unit::HOURS12: seconds = Hours12(value); break; + case Unit::DAY: seconds = Days(value); break; + case Unit::MONTH: seconds = Months(value); break; + case Unit::YEAR: seconds = Years(value); break; + case Unit::YEARS10: seconds = Years10(value); break; + case Unit::YEARS30: seconds = Years30(value); break; + case Unit::CENTURY: seconds = Centuries(value); break; default: - std::string msg = "Unknown unit: " + internal_unit_.to_string(); + std::string msg = "Unknown unit: " + unit.to_string(); throw std::runtime_error(msg); } + return seconds; +} + +template +T from_seconds(Seconds seconds, const UnitType& unit) { T value = 0; - switch (unit_.to_value()) { - case Unit::SECOND: value = duration.count(); break; - case Unit::MINUTE: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::MINUTES15: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::MINUTES30: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::HOUR: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::HOURS3: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::HOURS6: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::HOURS12: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::DAY: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::MONTH: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::YEAR: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::YEARS10: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::YEARS30: value = std::chrono::duration_cast>(duration).count(); break; - case Unit::CENTURY: value = std::chrono::duration_cast>(duration).count(); break; + switch (unit.to_value()) { + case Unit::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::MINUTES30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::HOUR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::HOURS3: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::HOURS6: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::HOURS12: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::DAY: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::MONTH: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::YEAR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::YEARS10: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; default: - std::string msg = "Unknown unit: " + UnitType{unit_}.to_string(); + std::string msg = "Unknown unit: " + unit.to_string(); throw std::runtime_error(msg); } return value; diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 7ad8780eb..808010bcb 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -1,8 +1,9 @@ -//#include "step_range.h" #include "step_utilities.h" +#include -std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key){ +std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key) +{ if (grib_is_defined(h, unit_key.c_str()) && grib_is_defined(h, value_key.c_str())) { long unit = 0; if (grib_get_long_internal(h, unit_key.c_str(), &unit) != GRIB_SUCCESS) @@ -20,7 +21,21 @@ std::optional get_step(grib_handle* h, const std::string& value_key, const } -bool is_future_output_enabled(grib_handle* h) { +int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) +{ + int err; + Step step_copy = step.copy(); + step_copy.optimize_unit(); + if ((err = grib_set_long_internal(h, value_key.c_str(), step_copy.value())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(h, unit_key.c_str(), step_copy.unit().to_long())) != GRIB_SUCCESS) + return err; + return GRIB_SUCCESS; +} + + +bool is_future_output_enabled(grib_handle* h) +{ size_t step_output_format_size = 128; char step_output_format[step_output_format_size]; int ret = 0; diff --git a/src/step_utilities.h b/src/step_utilities.h index d6733e0e4..65176a76c 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -6,4 +6,27 @@ std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key); bool is_future_output_enabled(grib_handle* h); +int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); + +//template +//int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) +//{ +// int err; +// if constexpr (std::is_same_v) { +// if ((err = grib_set_long_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) +// return err; +// } +// else if constexpr (std::is_same_v) { +// if ((err = grib_set_double_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) +// return err; +// } +// else { +// return GRIB_NOT_IMPLEMENTED; +// } + +// if ((err = grib_set_long_internal(h, unit_key.c_str(), step.unit().to_long())) != GRIB_SUCCESS) +// return err; +// return GRIB_SUCCESS; +//} + diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 048bb26de..8700b086b 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -46,7 +46,7 @@ temp2=temp_2.$label -### CHECK: grib_set - endStep + stepUnits +#### CHECK: grib_set - endStep + stepUnits fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp @@ -55,36 +55,36 @@ grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" # Use range unit: hour ${tools_dir}/grib_set -y -s endStep:d=30 $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" -${tools_dir}/grib_set -y -s endStep:d=24.5 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +#${tools_dir}/grib_set -y -s endStep:d=24.5 $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" # Use stepUnits ${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" -${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +#${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" ${tools_dir}/grib_set -y -s endStep:s=88200s $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" -${tools_dir}/grib_set -y -s endStep:s=1446.65m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 399 s" +#${tools_dir}/grib_set -y -s endStep:s=1446.65m $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 399 s" ${tools_dir}/grib_set -y -s endStep:s=24024 $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 1000 D" # Use range unit: hour ${tools_dir}/grib_set -y -s startStep:d=5 $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" -${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" +#${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" # Use stepUnits ${tools_dir}/grib_set -y -s startStep:s=5h $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" -${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" +#${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" ${tools_dir}/grib_set -y -s startStep:s=240s $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 1 D" -${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" +#${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" ${tools_dir}/grib_set -y -s startStep:s=2 $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 1 D" @@ -92,44 +92,44 @@ grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 1 D" -${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +#${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" -${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +#${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" -${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" +#${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" -${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" +#${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" -${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" -grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" +#${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" -${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" +#${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" +#grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" -#${tools_dir}/grib_set -s $fn $temp +##${tools_dir}/grib_set -s $fn $temp -#fn="${data_dir}/reduced_gaussian_surface.grib2" -#low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" -#keys__="step" -#keys_s="step:s" -#keys_i="step:i" -#keys_d="step:d" +##fn="${data_dir}/reduced_gaussian_surface.grib2" +##low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +##keys__="step" +##keys_s="step:s" +##keys_i="step:i" +##keys_d="step:d" -#${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -#${tools_dir}/grib_set -s step:d=10 $fn $temp -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" -#exit +##${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp +##${tools_dir}/grib_set -s step:d=10 $fn $temp +##grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" +##exit @@ -147,13 +147,13 @@ grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" #grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0.983333" # TODO(EB): check behaviour grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "59" #grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "59" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp @@ -179,7 +179,7 @@ grib_check_key_equals $temp "-p $low_level_keys" "0 m" grib_check_key_equals $temp "-p $keys__" "0" grib_check_key_equals $temp "-y -p $keys__" "0" grib_check_key_equals $temp "-p $keys_s" "0" -grib_check_key_equals $temp "-y -p $keys_s" "0m" +grib_check_key_equals $temp "-y -p $keys_s" "0" grib_check_key_equals $temp "-p $keys_i" "0" grib_check_key_equals $temp "-y -p $keys_i" "0" grib_check_key_equals $temp "-p $keys_d" "0" From 32b65a142feb28f8e1c8c8c0c512cfa533aff167 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 30 Aug 2023 08:52:27 +0000 Subject: [PATCH 023/469] ECC-1620: nai --- src/grib_accessor_class_step_in_units.cc | 42 ++++++++++++---- tests/grib_ecc-1620.sh | 61 +++++++++++++----------- 2 files changed, 66 insertions(+), 37 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 89c23b130..598015bd1 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -233,6 +233,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) return err; + + unpack_long(a, &oldStep, len); if (stepUnits != codedUnits) { @@ -264,9 +266,18 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) else lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; + + //lengthOfTimeRange = lengthOfTimeRange * u2s2[indicatorOfUnitForTimeRange] / u2s2[stepUnits]; + codedUnits = stepUnits; err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); if (err != GRIB_SUCCESS) return err; + //err = grib_set_long_internal(grib_handle_of_accessor(a), self->indicatorOfUnitForTimeRange, codedUnits); + //if (err != GRIB_SUCCESS) + // return err; + //err = grib_set_long_internal(grib_handle_of_accessor(a), self->codedUnits, codedUnits); + //if (err != GRIB_SUCCESS) + // return err; } return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); @@ -285,16 +296,31 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - long end_step_value; - if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) - return ret; - Step end_step{end_step_value, UnitType{step_units}}; - auto [step_a, step_b] = find_common_units(step, end_step); - if ((ret = grib_set_long_internal(h, "stepUnits", step_a.unit().to_long())) != GRIB_SUCCESS) - return ret; - long value = step.value(step_a.unit()); + long value; + if (self->indicatorOfUnitForTimeRange != NULL) { + + long end_step_value; + if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) + return ret; + Step end_step{end_step_value, UnitType{step_units}}; + + auto [step_a, step_b] = find_common_units(step, end_step); + if ((ret = grib_set_long_internal(h, "stepUnits", step_b.unit().to_long())) != GRIB_SUCCESS) + return ret; + + if ((ret = grib_set_long_internal(h, "endStep", step_b.value())) != GRIB_SUCCESS) + return ret; + + //if ((ret = set_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange, step_b)) != GRIB_SUCCESS) + //return ret; + + value = step.value(step_a.unit()); + } + else { + value = step.value(UnitType{step_units}); + } if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) return ret; diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 8700b086b..3dc3583b7 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -92,44 +92,44 @@ grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 1 D" -#${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" -#${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" -#${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" +${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" -#${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" +${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" -#${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" +${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" +grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" -#${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" -#grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" +${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" +grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" -##${tools_dir}/grib_set -s $fn $temp +#${tools_dir}/grib_set -s $fn $temp -##fn="${data_dir}/reduced_gaussian_surface.grib2" -##low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" -##keys__="step" -##keys_s="step:s" -##keys_i="step:i" -##keys_d="step:d" +#fn="${data_dir}/reduced_gaussian_surface.grib2" +#low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +#keys__="step" +#keys_s="step:s" +#keys_i="step:i" +#keys_d="step:d" -##${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -##${tools_dir}/grib_set -s step:d=10 $fn $temp -##grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" -##exit +#${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp +#${tools_dir}/grib_set -s step:d=10 $fn $temp +#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" +#exit @@ -362,5 +362,8 @@ grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" rm -f $temp +#~/build/eccodes/bin/grib_ls -m /perm/maro/referenceGRIBfiles4MTG2testing/grib1+2_operational_and_rd/151145_s2_enfo_cf_o2d_zos_2002_prod_ecmf_glob.grib2 +#~/build/eccodes/bin/grib_ls -m /perm/maro/referenceGRIBfiles4MTG2testing/grib1+2_operational_and_rd/240023_ce_efas_fc_sfc_dis06_2022_0001_ecmf_lisflood.grib2 + From b7019a99141f9682340226e88f978bfdcf2a497c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 30 Aug 2023 09:33:37 +0000 Subject: [PATCH 024/469] ECC-1620: Workaround ECC-1676 --- src/grib_accessor_class_g2end_step.cc | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 836f42825..e42da9bda 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -521,25 +521,19 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long step_units_old; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) - return ret; - - if ((ret = grib_set_long_internal(h, "stepUnits", UnitType{Unit::SECOND}.to_long())) != GRIB_SUCCESS) - return ret; long step_value; size_t step_len = 0; if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; + long step_units_old; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + return ret; - Step step(step_value, Unit::SECOND); + Step step(step_value, step_units_old); step.set_unit(step_units_old); - if ((ret = grib_set_long_internal(h, "stepUnits", step_units_old)) != GRIB_SUCCESS) - return ret; - step.hide_hour_unit(); if (is_future_output_enabled(h)) { snprintf(val, *len, "%s", step.to_string().c_str()); From 2786c982d42febcf251c000b7a442bdfebdf8b20 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 30 Aug 2023 10:16:33 +0000 Subject: [PATCH 025/469] ECC-1620: Refactoring --- src/grib_accessor_class_g2end_step.cc | 116 ++++++++--------- src/grib_accessor_class_g2step_range.cc | 64 ++++----- src/grib_accessor_class_optimal_step_units.cc | 34 ++--- src/grib_accessor_class_step_in_units.cc | 122 +++++++++--------- 4 files changed, 168 insertions(+), 168 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index e42da9bda..74987a952 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -22,8 +22,8 @@ IMPLEMENTS = unpack_long;pack_long IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump - MEMBERS = const char* start_step - MEMBERS = const char* unit + MEMBERS = const char* start_step_value // startStep + MEMBERS = const char* step_units // stepUnits MEMBERS = const char* year MEMBERS = const char* month @@ -39,8 +39,8 @@ MEMBERS = const char* minute_of_end_of_interval MEMBERS = const char* second_of_end_of_interval - MEMBERS = const char* coded_unit - MEMBERS = const char* coded_time_range + MEMBERS = const char* time_range_unit // indicatorOfUnitForTimeRange + MEMBERS = const char* time_range_value // lengthOfTimeRange MEMBERS = const char* typeOfTimeIncrement MEMBERS = const char* numberOfTimeRange @@ -71,8 +71,8 @@ typedef struct grib_accessor_g2end_step /* Members defined in gen */ /* Members defined in long */ /* Members defined in g2end_step */ - const char* start_step; - const char* unit; + const char* start_step_value; + const char* step_units; const char* year; const char* month; const char* day; @@ -85,8 +85,8 @@ typedef struct grib_accessor_g2end_step const char* hour_of_end_of_interval; const char* minute_of_end_of_interval; const char* second_of_end_of_interval; - const char* coded_unit; - const char* coded_time_range; + const char* time_range_unit; + const char* time_range_value; const char* typeOfTimeIncrement; const char* numberOfTimeRange; } grib_accessor_g2end_step; @@ -152,8 +152,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) int n = 0; grib_handle* h = grib_handle_of_accessor(a); - self->start_step = grib_arguments_get_name(h, c, n++); - self->unit = grib_arguments_get_name(h, c, n++); + self->start_step_value = grib_arguments_get_name(h, c, n++); + self->step_units = grib_arguments_get_name(h, c, n++); self->year = grib_arguments_get_name(h, c, n++); self->month = grib_arguments_get_name(h, c, n++); @@ -169,8 +169,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) self->minute_of_end_of_interval = grib_arguments_get_name(h, c, n++); self->second_of_end_of_interval = grib_arguments_get_name(h, c, n++); - self->coded_unit = grib_arguments_get_name(h, c, n++); - self->coded_time_range = grib_arguments_get_name(h, c, n++); + self->time_range_unit = grib_arguments_get_name(h, c, n++); + self->time_range_value = grib_arguments_get_name(h, c, n++); self->typeOfTimeIncrement = grib_arguments_get_name(h, c, n++); self->numberOfTimeRange = grib_arguments_get_name(h, c, n++); } @@ -232,9 +232,9 @@ static int is_special_expver(grib_handle* h) static int convert_time_range_long_( grib_handle* h, - long stepUnits, /* unit */ - long indicatorOfUnitForTimeRange, /* coded_unit */ - long* lengthOfTimeRange /* coded_time_range */ + long stepUnits, /* step_units */ + long indicatorOfUnitForTimeRange, /* time_range_unit */ + long* lengthOfTimeRange /* time_range_value */ ) { Assert(lengthOfTimeRange != NULL); @@ -271,26 +271,26 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; int err = 0; - long start_step; - long unit; - long coded_unit; - long coded_time_range, typeOfTimeIncrement; + long start_step_value; + long step_units; + long time_range_unit; + long time_range_value, typeOfTimeIncrement; int add_time_range = 1; /* whether we add lengthOfTimeRange */ grib_handle* h = grib_handle_of_accessor(a); - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) + if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; - if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) + if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; - if ((err = grib_get_long_internal(h, self->coded_time_range, &coded_time_range))) + if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) return err; if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - err = convert_time_range_long_(h, unit, coded_unit, &coded_time_range); + err = convert_time_range_long_(h, step_units, time_range_unit, &time_range_value); if (err != GRIB_SUCCESS) return err; @@ -303,10 +303,10 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) } } if (add_time_range) { - *val = start_step + coded_time_range; + *val = start_step_value + time_range_value; } else { - *val = start_step; + *val = start_step_value; } return GRIB_SUCCESS; @@ -319,16 +319,16 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; int i = 0, err = 0; grib_handle* h = grib_handle_of_accessor(a); - long numberOfTimeRange = 0, unit = 0, start_step = 0; + long numberOfTimeRange = 0, step_units = 0, start_step_value = 0; size_t count = 0; long arr_typeOfTimeIncrement[MAX_NUM_TIME_RANGES] = {0,}; long arr_coded_unit[MAX_NUM_TIME_RANGES] = {0,}; long arr_coded_time_range[MAX_NUM_TIME_RANGES] = {0,}; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) + if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; if ((err = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) return err; @@ -341,9 +341,9 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t /* Get the arrays for the N time ranges */ if ((err = grib_get_long_array(h, self->typeOfTimeIncrement, arr_typeOfTimeIncrement, &count))) return err; - if ((err = grib_get_long_array(h, self->coded_unit, arr_coded_unit, &count))) + if ((err = grib_get_long_array(h, self->time_range_unit, arr_coded_unit, &count))) return err; - if ((err = grib_get_long_array(h, self->coded_time_range, arr_coded_time_range, &count))) + if ((err = grib_get_long_array(h, self->time_range_value, arr_coded_time_range, &count))) return err; /* Look in the array of typeOfTimeIncrements for first entry whose typeOfTimeIncrement == 2 */ @@ -353,11 +353,11 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t long the_coded_unit = arr_coded_unit[i]; long the_coded_time_range = arr_coded_time_range[i]; - err = convert_time_range_long_(h, unit, the_coded_unit, &the_coded_time_range); + err = convert_time_range_long_(h, step_units, the_coded_unit, &the_coded_time_range); if (err != GRIB_SUCCESS) return err; - *val = start_step + the_coded_time_range; + *val = start_step_value + the_coded_time_range; return GRIB_SUCCESS; } } @@ -376,15 +376,15 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long start_step; + long start_step_value; long numberOfTimeRange; - if ((ret = grib_get_long_internal(h, self->start_step, &start_step))) + if ((ret = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return ret; /* point in time */ if (self->year == NULL) { - *val = start_step; + *val = start_step_value; return 0; } @@ -420,8 +420,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long minute; long second; - long start_step; - long unit, coded_unit; + long start_step_value; + long step_units, time_range_unit; long year_of_end_of_interval; long month_of_end_of_interval; long day_of_end_of_interval; @@ -429,19 +429,19 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long minute_of_end_of_interval = 0; long second_of_end_of_interval = 0; - long coded_time_range, time_range, typeOfTimeIncrement; + long time_range_value, time_range, typeOfTimeIncrement; double dend, dstep; /*point in time */ if (self->year == NULL) { - err = grib_set_long_internal(h, self->start_step, *val); + err = grib_set_long_internal(h, self->start_step_value, *val); return err; } - if ((err = grib_get_long_internal(h, self->coded_unit, &coded_unit))) + if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; - if ((err = grib_get_long_internal(h, self->unit, &unit))) + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; if ((err = grib_get_long_internal(h, self->year, &year))) return err; @@ -456,16 +456,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->second, &second))) return err; - if ((err = grib_get_long_internal(h, self->start_step, &start_step))) + if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - time_range = *val - start_step; + time_range = *val - start_step_value; if (time_range < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%ld < %ld)", *val, start_step); + "endStep < startStep (%ld < %ld)", *val, start_step_value); return GRIB_WRONG_STEP; } @@ -473,7 +473,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if (err != GRIB_SUCCESS) return err; - dstep = (((double)(*val)) * u2s[unit]) / u2s[2]; /* in days */ + dstep = (((double)(*val)) * u2s[step_units]) / u2s[2]; /* in days */ dend += dstep; err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, @@ -495,19 +495,19 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) return err; - if (time_range * u2s[unit] % u2s2[coded_unit]) { - coded_unit = unit; - if ((err = grib_set_long_internal(h, self->coded_unit, coded_unit))) + if (time_range * u2s[step_units] % u2s2[time_range_unit]) { + time_range_unit = step_units; + if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) return err; - coded_time_range = time_range; + time_range_value = time_range; } else - coded_time_range = (time_range * u2s[unit]) / u2s2[coded_unit]; + time_range_value = (time_range * u2s[step_units]) / u2s2[time_range_unit]; if (typeOfTimeIncrement != 1) { /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ - if ((err = grib_set_long_internal(h, self->coded_time_range, coded_time_range))) + if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) return err; } @@ -527,12 +527,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; - long step_units_old; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_old)) != GRIB_SUCCESS) + long step_units; + if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) return ret; - Step step(step_value, step_units_old); - step.set_unit(step_units_old); + Step step(step_value, step_units); + step.set_unit(step_units); step.hide_hour_unit(); if (is_future_output_enabled(h)) { @@ -548,12 +548,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - //grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; Step end_step = step_from_string(val); end_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, "stepUnits", end_step.unit().to_long())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, self->step_units, end_step.unit().to_long())) != GRIB_SUCCESS) return ret; long end_step_value = end_step.value(); diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index a6291b646..6482823ac 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -27,8 +27,8 @@ IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = get_native_type;string_length IMPLEMENTS = init - MEMBERS = const char* startStep - MEMBERS = const char* endStep + MEMBERS = const char* start_step + MEMBERS = const char* end_step END_CLASS_DEF */ @@ -57,8 +57,8 @@ typedef struct grib_accessor_g2step_range grib_accessor att; /* Members defined in gen */ /* Members defined in g2step_range */ - const char* startStep; - const char* endStep; + const char* start_step; + const char* end_step; } grib_accessor_g2step_range; extern grib_accessor_class* grib_accessor_class_gen; @@ -122,8 +122,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) int n = 0; - self->startStep = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->endStep = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->start_step = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->end_step = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); a->length = 0; } @@ -140,34 +140,34 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - long start_value = 0; - long end_value = 0; - long step_units_value = 0; + long end_start_value = 0; + long end_step_value = 0; + long step_units = 0; - if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - Step start_step = Step(start_value, step_units_value); + Step start_step{end_start_value, step_units}; start_step.hide_hour_unit(); - if (self->endStep == NULL) { + if (self->end_step == NULL) { if (is_future_output_enabled(h)) { snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); } else { - snprintf(buf, sizeof(buf), "%ld", start_value); + snprintf(buf, sizeof(buf), "%ld", end_start_value); } } else { - if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; if (is_future_output_enabled(h)) { - Step end_step = Step(end_value, step_units_value); + Step end_step{end_step_value, step_units}; end_step.hide_hour_unit(); - if (start_value == end_value) { + if (end_start_value == end_step_value) { snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); } else { @@ -175,11 +175,11 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } } else { - if (start_value == end_value) { - snprintf(buf, sizeof(buf), "%ld", end_value); + if (end_start_value == end_step_value) { + snprintf(buf, sizeof(buf), "%ld", end_step_value); } else { - snprintf(buf, sizeof(buf), "%ld-%ld", start_value, end_value); + snprintf(buf, sizeof(buf), "%ld-%ld", end_start_value, end_step_value); } } @@ -216,11 +216,11 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; } - if ((ret = grib_set_long_internal(h, self->startStep, step_0.value()))) + if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) return ret; - if ((self->endStep != NULL) && (steps.size() > 1)) { - if ((ret = grib_set_long_internal(h, self->endStep, step_1.value()))) + if ((self->end_step != NULL) && (steps.size() > 1)) { + if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) return ret; } return GRIB_SUCCESS; @@ -254,24 +254,24 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - long start_value = 0; - long end_value = 0; - long step_units_value = 0; + long end_start_value = 0; + long end_step_value = 0; + long step_units = 0; - if ((ret = grib_get_long_internal(h, self->startStep, &start_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - Step start_step = Step(start_value, step_units_value); + Step start_step{end_start_value, step_units}; start_step.hide_hour_unit(); - if (self->endStep == NULL) { + if (self->end_step == NULL) { *val = start_step.value(); } else { - if ((ret = grib_get_long_internal(h, self->endStep, &end_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - Step end_step = Step(end_value, step_units_value); + Step end_step{end_step_value, step_units}; *val = end_step.value(); } diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 79d9cf054..39ce04304 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -25,10 +25,10 @@ IMPLEMENTS = pack_string;unpack_string;dump IMPLEMENTS = get_native_type;string_length IMPLEMENTS = init - MEMBERS = const char* forecastTime - MEMBERS = const char* indicatorOfUnitOfTimeRange - MEMBERS = const char* lengthOfTimeRange - MEMBERS = const char* indicatorOfUnitForTimeRange + MEMBERS = const char* forecast_time_value + MEMBERS = const char* forecast_time_unit + MEMBERS = const char* time_range_value + MEMBERS = const char* time_range_unit END_CLASS_DEF */ @@ -57,10 +57,10 @@ typedef struct grib_accessor_optimal_step_units grib_accessor att; /* Members defined in gen */ /* Members defined in optimal_step_units */ - const char* forecastTime; - const char* indicatorOfUnitOfTimeRange; - const char* lengthOfTimeRange; - const char* indicatorOfUnitForTimeRange; + const char* forecast_time_value; + const char* forecast_time_unit; + const char* time_range_value; + const char* time_range_unit; } grib_accessor_optimal_step_units; extern grib_accessor_class* grib_accessor_class_gen; @@ -124,10 +124,10 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) int n = 0; - self->forecastTime = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->indicatorOfUnitOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->lengthOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->indicatorOfUnitForTimeRange= grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_unit= grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); a->length = 0; } @@ -167,18 +167,18 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - auto forecast_time_opt = get_step(h, self->forecastTime, self->indicatorOfUnitOfTimeRange); - auto lenght_of_time_range_opt = get_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange); + auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); + auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); - if (!(forecast_time_opt && lenght_of_time_range_opt)) { + if (!(forecast_time_opt && time_range_opt)) { *val = UnitType{Unit::HOUR}.to_long(); return GRIB_SUCCESS; } Step forecast_time = forecast_time_opt.value_or(Step{}); - Step length_of_time_range = lenght_of_time_range_opt.value_or(Step{}); + Step time_range = time_range_opt.value_or(Step{}); - auto [step_a, step_b] = find_common_units(forecast_time.optimize_unit(), (forecast_time + length_of_time_range).optimize_unit()); + auto [step_a, step_b] = find_common_units(forecast_time.optimize_unit(), (forecast_time + time_range).optimize_unit()); *val = step_a.unit().to_long(); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 598015bd1..a609f55d6 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -21,11 +21,11 @@ IMPLEMENTS = unpack_long;pack_long IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump - MEMBERS = const char* codedStep - MEMBERS = const char* codedUnits - MEMBERS = const char* stepUnits - MEMBERS = const char* indicatorOfUnitForTimeRange - MEMBERS = const char* lengthOfTimeRange + MEMBERS = const char* forecast_time_value + MEMBERS = const char* forecast_time_unit + MEMBERS = const char* step_units + MEMBERS = const char* time_range_unit + MEMBERS = const char* time_range_value END_CLASS_DEF @@ -54,11 +54,11 @@ typedef struct grib_accessor_step_in_units /* Members defined in gen */ /* Members defined in long */ /* Members defined in step_in_units */ - const char* codedStep; - const char* codedUnits; - const char* stepUnits; - const char* indicatorOfUnitForTimeRange; - const char* lengthOfTimeRange; + const char* forecast_time_value; + const char* forecast_time_unit; + const char* step_units; + const char* time_range_unit; + const char* time_range_value; } grib_accessor_step_in_units; extern grib_accessor_class* grib_accessor_class_long; @@ -121,11 +121,11 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; int n = 0; - self->codedStep = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->codedUnits = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->stepUnits = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->indicatorOfUnitForTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->lengthOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->step_units = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); } static void dump(grib_accessor* a, grib_dumper* dumper) @@ -151,7 +151,7 @@ static const int u2s2[] = { 1 /* (13) seconds */ }; -/* Note: 'stepUnits' has a different table with extra entries e.g. 15 and 30 mins */ +/* Note: 'step_units' has a different table with extra entries e.g. 15 and 30 mins */ static const int u2s[] = { 60, /* (0) minutes */ 3600, /* (1) hour */ @@ -176,44 +176,44 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; int err = 0; - long codedStep, codedUnits, stepUnits; + long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); int factor = 0; long u2sf, u2sf_step_unit; - if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; - if ((err = grib_get_long_internal(h, self->codedStep, &codedStep))) + if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) return err; - if (stepUnits != codedUnits) { - *val = codedStep * u2s2[codedUnits]; + if (step_units != forecast_time_unit) { + *val = forecast_time_value * u2s2[forecast_time_unit]; if (*val < 0) { factor = 60; - if (u2s2[codedUnits] % factor) + if (u2s2[forecast_time_unit] % factor) return GRIB_DECODING_ERROR; - if (u2s[stepUnits] % factor) + if (u2s[step_units] % factor) return GRIB_DECODING_ERROR; - u2sf = u2s2[codedUnits] / factor; - *val = codedStep * u2sf; - u2sf_step_unit = u2s[stepUnits] / factor; + u2sf = u2s2[forecast_time_unit] / factor; + *val = forecast_time_value * u2sf; + u2sf_step_unit = u2s[step_units] / factor; } else { - u2sf_step_unit = u2s[stepUnits]; + u2sf_step_unit = u2s[step_units]; } if (*val % u2sf_step_unit != 0) { - err = grib_set_long_internal(h, self->stepUnits, codedUnits); - *val = codedStep; + err = grib_set_long_internal(h, self->step_units, forecast_time_unit); + *val = forecast_time_value; return err; } *val = *val / u2sf_step_unit; } else - *val = codedStep; + *val = forecast_time_value; return GRIB_SUCCESS; } @@ -224,63 +224,63 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; - long codedStep, codedUnits, stepUnits; + long forecast_time_value, forecast_time_unit, step_units; long oldStep = 0; - long indicatorOfUnitForTimeRange, lengthOfTimeRange; + long time_range_unit, time_range_value; - if ((err = grib_get_long_internal(h, self->codedUnits, &codedUnits))) + if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - if ((err = grib_get_long_internal(h, self->stepUnits, &stepUnits))) + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; unpack_long(a, &oldStep, len); - if (stepUnits != codedUnits) { - codedStep = *val * u2s[stepUnits]; - if (codedStep % u2s2[codedUnits] != 0) { - codedUnits = stepUnits; - err = grib_set_long_internal(h, self->codedUnits, codedUnits); + if (step_units != forecast_time_unit) { + forecast_time_value = *val * u2s[step_units]; + if (forecast_time_value % u2s2[forecast_time_unit] != 0) { + forecast_time_unit = step_units; + err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); if (err != GRIB_SUCCESS) return err; - codedStep = *val; + forecast_time_value = *val; } else { - codedStep = codedStep / u2s2[codedUnits]; + forecast_time_value = forecast_time_value / u2s2[forecast_time_unit]; } } else { - codedStep = *val; + forecast_time_value = *val; } - if (self->indicatorOfUnitForTimeRange) { + if (self->time_range_unit) { if ((err = grib_get_long_internal(h, - self->indicatorOfUnitForTimeRange, &indicatorOfUnitForTimeRange))) + self->time_range_unit, &time_range_unit))) return err; if ((err = grib_get_long_internal(h, - self->lengthOfTimeRange, &lengthOfTimeRange))) + self->time_range_value, &time_range_value))) return err; - if (codedUnits == indicatorOfUnitForTimeRange) - lengthOfTimeRange -= codedStep - oldStep; + if (forecast_time_unit == time_range_unit) + time_range_value -= forecast_time_value - oldStep; else - lengthOfTimeRange -= codedStep * u2s2[codedUnits] / u2s2[indicatorOfUnitForTimeRange]; - lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0; + time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; + time_range_value = time_range_value > 0 ? time_range_value : 0; - //lengthOfTimeRange = lengthOfTimeRange * u2s2[indicatorOfUnitForTimeRange] / u2s2[stepUnits]; - codedUnits = stepUnits; - err = grib_set_long_internal(grib_handle_of_accessor(a), self->lengthOfTimeRange, lengthOfTimeRange); + //time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[step_units]; + forecast_time_unit = step_units; + err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_value); if (err != GRIB_SUCCESS) return err; - //err = grib_set_long_internal(grib_handle_of_accessor(a), self->indicatorOfUnitForTimeRange, codedUnits); + //err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, forecast_time_unit); //if (err != GRIB_SUCCESS) // return err; - //err = grib_set_long_internal(grib_handle_of_accessor(a), self->codedUnits, codedUnits); + //err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time_unit); //if (err != GRIB_SUCCESS) // return err; } - return grib_set_long_internal(grib_handle_of_accessor(a), self->codedStep, codedStep); + return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); } @@ -293,13 +293,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) Step step = step_from_string(val); long step_units; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) return ret; long value; - if (self->indicatorOfUnitForTimeRange != NULL) { + if (self->time_range_unit != NULL) { long end_step_value; if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) @@ -307,13 +307,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) Step end_step{end_step_value, UnitType{step_units}}; auto [step_a, step_b] = find_common_units(step, end_step); - if ((ret = grib_set_long_internal(h, "stepUnits", step_b.unit().to_long())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, self->step_units, step_b.unit().to_long())) != GRIB_SUCCESS) return ret; if ((ret = grib_set_long_internal(h, "endStep", step_b.value())) != GRIB_SUCCESS) return ret; - //if ((ret = set_step(h, self->lengthOfTimeRange, self->indicatorOfUnitForTimeRange, step_b)) != GRIB_SUCCESS) + //if ((ret = set_step(h, self->time_range_value, self->time_range_unit, step_b)) != GRIB_SUCCESS) //return ret; value = step.value(step_a.unit()); @@ -342,7 +342,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) return ret; Step step{value, step_units}; From 0244a922c58216987a89807f0826043870bb1400 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 30 Aug 2023 11:59:04 +0000 Subject: [PATCH 026/469] ECC-1620: Encode low level keys with the same unit --- src/grib_accessor_class_g2end_step.cc | 58 +++++++++++++---- src/grib_accessor_class_step_in_units.cc | 81 +++++++++++++----------- tests/grib_ecc-1620.sh | 16 ++--- 3 files changed, 97 insertions(+), 58 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 74987a952..cb3479708 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -429,7 +429,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long minute_of_end_of_interval = 0; long second_of_end_of_interval = 0; - long time_range_value, time_range, typeOfTimeIncrement; + long time_range_value, time_range_v, typeOfTimeIncrement; double dend, dstep; @@ -461,9 +461,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - time_range = *val - start_step_value; + time_range_v = *val - start_step_value; - if (time_range < 0) { + if (time_range_v < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, "endStep < startStep (%ld < %ld)", *val, start_step_value); return GRIB_WRONG_STEP; @@ -495,21 +495,55 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) return err; - if (time_range * u2s[step_units] % u2s2[time_range_unit]) { + if (time_range_v * u2s[step_units] % u2s2[time_range_unit]) { time_range_unit = step_units; if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) return err; - time_range_value = time_range; + time_range_value = time_range_v; } else - time_range_value = (time_range * u2s[step_units]) / u2s2[time_range_unit]; + time_range_value = (time_range_v * u2s[step_units]) / u2s2[time_range_unit]; - if (typeOfTimeIncrement != 1) { - /* 1 means "Successive times processed have same forecast time, start time of forecast is incremented" */ - /* Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step */ - if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) - return err; - } + + time_range_value = time_range_value * u2s[time_range_unit] / u2s2[step_units]; + time_range_unit = step_units; + if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) + return err; + if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) + return err; + + + + const char* forecast_time_value_key = "forecastTime"; + const char* forecast_time_unit_key = "indicatorOfUnitOfTimeRange"; + long forecast_time_value; + long forecast_time_unit; + if ((err = grib_get_long_internal(h, forecast_time_value_key, &forecast_time_value)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(h, forecast_time_unit_key, &forecast_time_unit)) != GRIB_SUCCESS) + return err; + + + //auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + auto [forecast_time, time_range] = find_common_units(Step{start_step_value, step_units}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_value_key, forecast_time.value())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time.unit().to_long())) != GRIB_SUCCESS) + return err; + + + + //if (typeOfTimeIncrement != 1) { + // [> 1 means "Successive times processed have same forecast time, start time of forecast is incremented" <] + // [> Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step <] + // if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) + // return err; + //} return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index a609f55d6..a4555b999 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -225,7 +225,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int err = 0; long forecast_time_value, forecast_time_unit, step_units; - long oldStep = 0; + long forecast_time_value_old = 0; long time_range_unit, time_range_value; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) @@ -235,13 +235,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) - unpack_long(a, &oldStep, len); + unpack_long(a, &forecast_time_value_old, len); if (step_units != forecast_time_unit) { forecast_time_value = *val * u2s[step_units]; if (forecast_time_value % u2s2[forecast_time_unit] != 0) { forecast_time_unit = step_units; - err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); + err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); if (err != GRIB_SUCCESS) return err; forecast_time_value = *val; @@ -255,29 +255,28 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } if (self->time_range_unit) { - if ((err = grib_get_long_internal(h, - self->time_range_unit, &time_range_unit))) + if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; - if ((err = grib_get_long_internal(h, - self->time_range_value, &time_range_value))) + if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) return err; if (forecast_time_unit == time_range_unit) - time_range_value -= forecast_time_value - oldStep; + time_range_value -= forecast_time_value - forecast_time_value_old; else time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; time_range_value = time_range_value > 0 ? time_range_value : 0; - //time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[step_units]; - forecast_time_unit = step_units; - err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_value); - if (err != GRIB_SUCCESS) + time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[forecast_time_unit]; + time_range_unit = forecast_time_unit; + auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time.value())) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time.unit().to_long())) != GRIB_SUCCESS) return err; - //err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, forecast_time_unit); - //if (err != GRIB_SUCCESS) - // return err; - //err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time_unit); - //if (err != GRIB_SUCCESS) - // return err; } return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); @@ -297,33 +296,39 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; + long value = step.value(); - long value; - if (self->time_range_unit != NULL) { + if ((ret = grib_set_long_internal(h, "stepUnits", step.unit().to_long())) != GRIB_SUCCESS) + return ret; + if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) + return ret; - long end_step_value; - if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) - return ret; - Step end_step{end_step_value, UnitType{step_units}}; + //long value; + //if (self->time_range_unit != NULL) { - auto [step_a, step_b] = find_common_units(step, end_step); - if ((ret = grib_set_long_internal(h, self->step_units, step_b.unit().to_long())) != GRIB_SUCCESS) - return ret; + // long end_step_value; + // if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) + // return ret; + // Step end_step{end_step_value, UnitType{step_units}}; - if ((ret = grib_set_long_internal(h, "endStep", step_b.value())) != GRIB_SUCCESS) - return ret; + // auto [step_a, step_b] = find_common_units(step, end_step); + // if ((ret = grib_set_long_internal(h, self->step_units, step_b.unit().to_long())) != GRIB_SUCCESS) + // return ret; - //if ((ret = set_step(h, self->time_range_value, self->time_range_unit, step_b)) != GRIB_SUCCESS) - //return ret; + // if ((ret = grib_set_long_internal(h, "endStep", step_b.value())) != GRIB_SUCCESS) + // return ret; - value = step.value(step_a.unit()); - } - else { - value = step.value(UnitType{step_units}); - } + // //if ((ret = set_step(h, self->time_range_value, self->time_range_unit, step_b)) != GRIB_SUCCESS) + // //return ret; - if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) - return ret; + // value = step.value(step_a.unit()); + //} + //else { + // value = step.value(UnitType{step_units}); + //} + + //if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) + // return ret; //if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) //return ret; diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 3dc3583b7..948e060b2 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -64,29 +64,29 @@ grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" #${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" ${tools_dir}/grib_set -y -s endStep:s=88200s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1440 m 30 m" #${tools_dir}/grib_set -y -s endStep:s=1446.65m $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 399 s" ${tools_dir}/grib_set -y -s endStep:s=24024 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 1000 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 24000 h" # Use range unit: hour ${tools_dir}/grib_set -y -s startStep:d=5 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 24 h" #${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" # Use stepUnits ${tools_dir}/grib_set -y -s startStep:s=5h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 1 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 24 h" #${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" ${tools_dir}/grib_set -y -s startStep:s=240s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 1 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 1440 m" #${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" ${tools_dir}/grib_set -y -s startStep:s=2 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 1 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 24 h" @@ -109,11 +109,11 @@ grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" ${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 61 m" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "60 m 61 m" grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" ${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 60 D" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 1440 h" grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" #${tools_dir}/grib_set -s $fn $temp From 371be8028319fbcf030a1901ed0c3a073053af1f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 31 Aug 2023 13:30:10 +0000 Subject: [PATCH 027/469] ECC-1620: Don't modify endStep, when changing startStep --- src/grib_accessor_class_g2end_step.cc | 4 +- src/grib_accessor_class_g2step_range.cc | 45 ++++++- src/grib_accessor_class_step_in_units.cc | 153 ++++++++++++++++++++--- tests/grib_ecc-1620.sh | 53 ++++---- 4 files changed, 211 insertions(+), 44 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index cb3479708..f7b84e238 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -39,8 +39,8 @@ MEMBERS = const char* minute_of_end_of_interval MEMBERS = const char* second_of_end_of_interval - MEMBERS = const char* time_range_unit // indicatorOfUnitForTimeRange - MEMBERS = const char* time_range_value // lengthOfTimeRange + MEMBERS = const char* time_range_unit + MEMBERS = const char* time_range_value MEMBERS = const char* typeOfTimeIncrement MEMBERS = const char* numberOfTimeRange diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 6482823ac..a2de8bed1 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -198,7 +198,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } -static int pack_string(grib_accessor* a, const char* val, size_t* len) +static int pack_string_old(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); @@ -226,6 +226,49 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return GRIB_SUCCESS; } + +static int pack_string_new(grib_accessor* a, const char* val, size_t* len) +{ + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + + std::vector steps = parse_range(val); + if (steps.size() == 0) + return GRIB_INVALID_ARGUMENT; + + Step step_0 = steps[0]; + Step step_1; + if (steps.size() > 1) { + std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); + if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) + return ret; + } + + //if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) + // return ret; + if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) + return ret; + + if ((self->end_step != NULL) && (steps.size() > 1)) { + if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) + return ret; + } + return GRIB_SUCCESS; +} + +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + if (is_future_output_enabled(h)) { + return pack_string_new(a, val, len); + } + else { + return pack_string_old(a, val, len); + } +} + static int value_count(grib_accessor* a, long* count) { *count = 1; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index a4555b999..f2733d63b 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -219,13 +219,12 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ +int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; long forecast_time_value, forecast_time_unit, step_units; - long forecast_time_value_old = 0; + long oldStep = 0; long time_range_unit, time_range_value; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) @@ -233,15 +232,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; - - - unpack_long(a, &forecast_time_value_old, len); + unpack_long(a, &oldStep, len); if (step_units != forecast_time_unit) { forecast_time_value = *val * u2s[step_units]; if (forecast_time_value % u2s2[forecast_time_unit] != 0) { forecast_time_unit = step_units; - err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); + err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); if (err != GRIB_SUCCESS) return err; forecast_time_value = *val; @@ -255,31 +252,147 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } if (self->time_range_unit) { - if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) + if ((err = grib_get_long_internal(h, + self->time_range_unit, &time_range_unit))) return err; - if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) + if ((err = grib_get_long_internal(h, + self->time_range_value, &time_range_value))) return err; if (forecast_time_unit == time_range_unit) - time_range_value -= forecast_time_value - forecast_time_value_old; + time_range_value -= forecast_time_value - oldStep; else time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; time_range_value = time_range_value > 0 ? time_range_value : 0; + err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_value); + if (err != GRIB_SUCCESS) + return err; + } - time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[forecast_time_unit]; - time_range_unit = forecast_time_unit; - auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); +} - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time.value())) != GRIB_SUCCESS) +int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int err = 0; + //long forecast_time_value; + long forecast_time_unit; + long step_units; + long start_step_value_old= 0; + long time_range_unit; + long time_range_value; + + if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit)) != GRIB_SUCCESS) + return err; + if ((err = unpack_long(a, &start_step_value_old, len)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + return err; + Step start_step_old(start_step_value_old, step_units); + Step forecast_time(*val, step_units); + Step time_range_new{}; + + auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); + if (time_range_opt) { + auto time_range = time_range_opt.value(); + time_range = time_range - (forecast_time - start_step_old); + auto [sa, sb] = find_common_units(forecast_time.optimize_unit(), time_range.optimize_unit()); + if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, sa)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time.unit().to_long())) != GRIB_SUCCESS) + if ((err = set_step(h, self->time_range_value, self->time_range_unit, sb)) != GRIB_SUCCESS) return err; + return GRIB_SUCCESS; } + + forecast_time.optimize_unit(); + if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, forecast_time)) != GRIB_SUCCESS) + return err; - return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); + // if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) + // return err; + // if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) + // return err; + // if (forecast_time_unit == time_range_unit) + // time_range_value -= forecast_time_value - forecast_time_value_old; + // else + // time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; + // time_range_value = time_range_value > 0 ? time_range_value : 0; + + return GRIB_SUCCESS; + + //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + //grib_handle* h = grib_handle_of_accessor(a); + //int err = 0; + //long forecast_time_value, forecast_time_unit, step_units; + //long forecast_time_value_old = 0; + //long time_range_unit, time_range_value; + + //if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) + // return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + // return err; + + //unpack_long(a, &forecast_time_value_old, len); + + //if (step_units != forecast_time_unit) { + // forecast_time_value = *val * u2s[step_units]; + // if (forecast_time_value % u2s2[forecast_time_unit] != 0) { + // forecast_time_unit = step_units; + // err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); + // if (err != GRIB_SUCCESS) + // return err; + // forecast_time_value = *val; + // } + // else { + // forecast_time_value = forecast_time_value / u2s2[forecast_time_unit]; + // } + //} + //else { + // forecast_time_value = *val; + //} + + //if (self->time_range_unit) { + // if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) + // return err; + // if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) + // return err; + // if (forecast_time_unit == time_range_unit) + // time_range_value -= forecast_time_value - forecast_time_value_old; + // else + // time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; + // time_range_value = time_range_value > 0 ? time_range_value : 0; + + // time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[forecast_time_unit]; + // time_range_unit = forecast_time_unit; + // auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + + // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) + // return err; + // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) + // return err; + // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time.value())) != GRIB_SUCCESS) + // return err; + // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time.unit().to_long())) != GRIB_SUCCESS) + // return err; + //} + + //return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); + +} + +static int pack_long(grib_accessor* a, const long* val, size_t* len) +{ + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret; + if (is_future_output_enabled(h)) { + ret = pack_long_new_(a, val, len); + } + else { + ret = pack_long_old_(a, val, len); + } + + return ret; } diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 948e060b2..29bc07479 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -46,6 +46,27 @@ temp2=temp_2.$label + +#fn="${data_dir}/reduced_gaussian_sub_area.grib2" +#low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +##high_level_keys="startStep:s,endStep:s" +#high_level_keys="startStep:i,endStep:i" +#${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp +#grib_check_key_equals $temp "-y -p $low_level_keys" "24 h 1 D" +#grib_check_key_equals $temp "-y -p $high_level_keys" "24 48" +#${tools_dir}/grib_set -y -s startStep:i=24 $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 0 h" +#grib_check_key_equals $temp2 "-y -p $high_level_keys" "24 24" + +#${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=24,indicatorOfUnitForTimeRange=h $fn $temp +#grib_check_key_equals $temp "-y -p $low_level_keys" "24 h 24 h" +#grib_check_key_equals $temp "-y -p $high_level_keys" "24 48" +#${tools_dir}/grib_set -y -s startStep:i=24 $temp $temp2 +#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 24 h" +#grib_check_key_equals $temp2 "-y -p $high_level_keys" "24 48" +#exit + + #### CHECK: grib_set - endStep + stepUnits fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" @@ -53,12 +74,17 @@ ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTi grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" # Use range unit: hour -${tools_dir}/grib_set -y -s endStep:d=30 $temp $temp2 +${tools_dir}/grib_set -y -s endStep:d=30 $temp $temp2 # TODO(EB) remove in the future behavior +#${tools_dir}/grib_set -y -s endStep:i=30 $temp $temp2 # TODO(EB) keep for backwards compatibility +#${tools_dir}/grib_set -y -s endStep:s=30 $temp $temp2 +#${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 +#${tools_dir}/grib_set -y -s endStep=30h $temp $temp2 # TODO(EB) add to tests grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" #${tools_dir}/grib_set -y -s endStep:d=24.5 $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" # Use stepUnits +${tools_dir}/grib_set -y -s endStep:s=30 $temp $temp2 ${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" #${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 @@ -72,21 +98,21 @@ grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 24000 h" # Use range unit: hour ${tools_dir}/grib_set -y -s startStep:d=5 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 24 h" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 43 h" #${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" # Use stepUnits ${tools_dir}/grib_set -y -s startStep:s=5h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 24 h" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 43 h" #${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" ${tools_dir}/grib_set -y -s startStep:s=240s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 1440 m" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 2876 m" #${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 #grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" ${tools_dir}/grib_set -y -s startStep:s=2 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 24 h" +grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 46 h" @@ -116,21 +142,6 @@ ${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 1440 h" grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" -#${tools_dir}/grib_set -s $fn $temp - -#fn="${data_dir}/reduced_gaussian_surface.grib2" -#low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" -#keys__="step" -#keys_s="step:s" -#keys_i="step:i" -#keys_d="step:d" - - -#${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -#${tools_dir}/grib_set -s step:d=10 $fn $temp -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "10m" -#exit - fn="${data_dir}/reduced_gaussian_surface.grib2" @@ -147,7 +158,7 @@ grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" #grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" -#grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-y -p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(EB): check behaviour // See tools for default output format grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "3540" grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "59" #grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour From cf154eb62eb2122e4cccd17a0101a9b3fb2ce01f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 31 Aug 2023 15:56:49 +0000 Subject: [PATCH 028/469] ECC-1620: Don't use variable-length arrays --- src/step_utilities.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 808010bcb..11a1c015e 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -37,7 +37,7 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un bool is_future_output_enabled(grib_handle* h) { size_t step_output_format_size = 128; - char step_output_format[step_output_format_size]; + char step_output_format[128]; int ret = 0; if ((ret = grib_get_string_internal(h, "stepOutputFormat", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) return ret; From c51203a7570e81fc07066dd1968d9e37a4345a95 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 31 Aug 2023 16:56:50 +0100 Subject: [PATCH 029/469] ISO C++17 does not allow 'register' storage class specifier [-Wregister] --- src/grib_accessor_classes_hash.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index 8f0f5075f..32a13c8d1 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -52,7 +52,7 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; #endif #endif static unsigned int -grib_accessor_classes_get_id (register const char *str, register size_t len) +grib_accessor_classes_get_id (const char *str, size_t len) { static const unsigned short asso_values[] = { @@ -83,7 +83,7 @@ grib_accessor_classes_get_id (register const char *str, register size_t len) 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680 }; - register unsigned int hval = len; + unsigned int hval = len; switch (hval) { @@ -690,15 +690,15 @@ static const struct accessor_class_hash classes[] = }; const struct accessor_class_hash * -grib_accessor_classes_hash (register const char *str, register size_t len) +grib_accessor_classes_hash ( const char *str, size_t len) { if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - register unsigned int key = grib_accessor_classes_get_id (str, len); + unsigned int key = grib_accessor_classes_get_id (str, len); if (key <= MAX_HASH_VALUE) { - register const char *s = classes[key].name; + const char *s = classes[key].name; if (*str == *s && !strcmp (str + 1, s + 1)) return &classes[key]; From 546b9851cbc4dfd23bae95a02739b6b57a6f4e7d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 31 Aug 2023 17:02:12 +0100 Subject: [PATCH 030/469] Compiler warnings --- src/grib_accessor_class_g2step_range.cc | 11 ++++------- src/grib_accessor_class_optimal_step_units.cc | 11 +++++------ src/grib_accessor_class_step_in_units.cc | 5 ++--- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index a2de8bed1..09f2778a2 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -128,10 +128,10 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) a->length = 0; } -static void dump(grib_accessor* a, grib_dumper* dumper) -{ - grib_dump_string(dumper, a, NULL); -} +//static void dump(grib_accessor* a, grib_dumper* dumper) +//{ + //grib_dump_string(dumper, a, NULL); +//} static int unpack_string(grib_accessor* a, char* val, size_t* len) { @@ -259,7 +259,6 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); if (is_future_output_enabled(h)) { return pack_string_new(a, val, len); @@ -294,9 +293,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); - char buf[100]; int ret = 0; - size_t size = 0; long end_start_value = 0; long end_step_value = 0; long step_units = 0; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 39ce04304..d2f0c370e 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -137,11 +137,11 @@ static void dump(grib_accessor* a, grib_dumper* dumper) } -static int value_count(grib_accessor* a, long* count) -{ - *count = 1; - return 0; -} +//static int value_count(grib_accessor* a, long* count) +//{ + //*count = 1; + //return 0; +//} static size_t string_length(grib_accessor* a) { @@ -165,7 +165,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index f2733d63b..de5b3cec6 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -279,8 +279,8 @@ int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { long forecast_time_unit; long step_units; long start_step_value_old= 0; - long time_range_unit; - long time_range_value; + //long time_range_unit; + //long time_range_value; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit)) != GRIB_SUCCESS) return err; @@ -382,7 +382,6 @@ int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret; if (is_future_output_enabled(h)) { From 610f3845842704bd3b28865ec84eeade5f458eb7 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 31 Aug 2023 16:10:57 +0000 Subject: [PATCH 031/469] ECC-1620: Clean-up --- src/grib_accessor_class_step_in_units.cc | 101 ----------------------- 1 file changed, 101 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index de5b3cec6..a4baca1be 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -308,76 +308,7 @@ int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, forecast_time)) != GRIB_SUCCESS) return err; - // if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) - // return err; - // if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) - // return err; - // if (forecast_time_unit == time_range_unit) - // time_range_value -= forecast_time_value - forecast_time_value_old; - // else - // time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; - // time_range_value = time_range_value > 0 ? time_range_value : 0; - return GRIB_SUCCESS; - - //grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - //grib_handle* h = grib_handle_of_accessor(a); - //int err = 0; - //long forecast_time_value, forecast_time_unit, step_units; - //long forecast_time_value_old = 0; - //long time_range_unit, time_range_value; - - //if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) - // return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - // return err; - - //unpack_long(a, &forecast_time_value_old, len); - - //if (step_units != forecast_time_unit) { - // forecast_time_value = *val * u2s[step_units]; - // if (forecast_time_value % u2s2[forecast_time_unit] != 0) { - // forecast_time_unit = step_units; - // err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); - // if (err != GRIB_SUCCESS) - // return err; - // forecast_time_value = *val; - // } - // else { - // forecast_time_value = forecast_time_value / u2s2[forecast_time_unit]; - // } - //} - //else { - // forecast_time_value = *val; - //} - - //if (self->time_range_unit) { - // if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) - // return err; - // if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) - // return err; - // if (forecast_time_unit == time_range_unit) - // time_range_value -= forecast_time_value - forecast_time_value_old; - // else - // time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; - // time_range_value = time_range_value > 0 ? time_range_value : 0; - - // time_range_value = time_range_value * u2s2[time_range_unit] / u2s2[forecast_time_unit]; - // time_range_unit = forecast_time_unit; - // auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); - - // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) - // return err; - // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) - // return err; - // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time.value())) != GRIB_SUCCESS) - // return err; - // if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_unit, forecast_time.unit().to_long())) != GRIB_SUCCESS) - // return err; - //} - - //return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); - } static int pack_long(grib_accessor* a, const long* val, size_t* len) @@ -394,7 +325,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; } - static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; @@ -407,7 +337,6 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) return ret; - long value = step.value(); if ((ret = grib_set_long_internal(h, "stepUnits", step.unit().to_long())) != GRIB_SUCCESS) @@ -415,36 +344,6 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) return ret; - //long value; - //if (self->time_range_unit != NULL) { - - // long end_step_value; - // if ((ret = grib_get_long_internal(h, "endStep", &end_step_value)) != GRIB_SUCCESS) - // return ret; - // Step end_step{end_step_value, UnitType{step_units}}; - - // auto [step_a, step_b] = find_common_units(step, end_step); - // if ((ret = grib_set_long_internal(h, self->step_units, step_b.unit().to_long())) != GRIB_SUCCESS) - // return ret; - - // if ((ret = grib_set_long_internal(h, "endStep", step_b.value())) != GRIB_SUCCESS) - // return ret; - - // //if ((ret = set_step(h, self->time_range_value, self->time_range_unit, step_b)) != GRIB_SUCCESS) - // //return ret; - - // value = step.value(step_a.unit()); - //} - //else { - // value = step.value(UnitType{step_units}); - //} - - //if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) - // return ret; - - //if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) - //return ret; - return GRIB_SUCCESS; } From b2c8b6876decb1f99b3f56e987cc733d22c3a524 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 4 Sep 2023 10:15:50 +0000 Subject: [PATCH 032/469] ECC-1620: Optimize performance --- src/grib_accessor_classes_hash.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index 32a13c8d1..8456336e5 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -689,20 +689,20 @@ static const struct accessor_class_hash classes[] = {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; -const struct accessor_class_hash * -grib_accessor_classes_hash ( const char *str, size_t len) + +static const struct accessor_class_hash *grib_accessor_classes_hash(const char *str, size_t len) { - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + unsigned int key = grib_accessor_classes_get_id (str, len); + +#ifdef DEBUG { - unsigned int key = grib_accessor_classes_get_id (str, len); - - if (key <= MAX_HASH_VALUE) - { - const char *s = classes[key].name; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &classes[key]; - } + const char *s; + Assert( len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH ); + Assert( key <= MAX_HASH_VALUE ); + s = classes[key].name; + Assert( *str == *s && strcmp(str + 1, s + 1)==0 ); } - return 0; +#endif + + return &classes[key]; } From a08c2cec4a9f8a5fc04088b9c4140cc7077cf1a7 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 4 Sep 2023 13:01:19 +0000 Subject: [PATCH 033/469] ECC-1620: Recompute optimal step units for each message --- .../grib2/template.4.forecast_time.def | 5 +- src/grib_accessor_class_g2end_step.cc | 30 +- src/grib_accessor_class_g2step_range.cc | 52 +-- src/grib_accessor_class_optimal_step_units.cc | 38 +- src/grib_accessor_class_step_in_units.cc | 45 ++- src/step_utilities.cc | 15 + src/step_utilities.h | 1 + tests/grib_ecc-1620.sh | 363 ++++++++---------- 8 files changed, 258 insertions(+), 291 deletions(-) diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 600be0616..4a9c6f410 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -14,8 +14,9 @@ codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump #alias forecastTimeUnit = indicatorOfUnitOfTimeRange; #template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; #codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -transient useOptimalStepUnits = 0; -meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; +codetable[1] stepUnits 'stepUnits.table' = 255 : transient,dump,no_copy; +#transient useOptimalStepUnits = 0; +meta optimalStepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index f7b84e238..8e73f4d2b 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -281,8 +281,9 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + //return err; + step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) @@ -328,8 +329,9 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + //return err; + step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) return err; if (numberOfTimeRange > MAX_NUM_TIME_RANGES) { @@ -441,8 +443,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + //return err; + step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->year, &year))) return err; if ((err = grib_get_long_internal(h, self->month, &month))) @@ -562,19 +565,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - return ret; + //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + //return ret; + step_units = get_step_units(h); Step step(step_value, step_units); step.set_unit(step_units); step.hide_hour_unit(); - if (is_future_output_enabled(h)) { + //if (is_future_output_enabled(h)) { snprintf(val, *len, "%s", step.to_string().c_str()); - } - else { - snprintf(val, *len, "%ld", step.value()); - } + //} + //else { + // snprintf(val, *len, "%ld", step.value()); + //} return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 09f2778a2..d4312cfcd 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -146,25 +146,26 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; + //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + // return ret; + step_units = get_step_units(h); Step start_step{end_start_value, step_units}; start_step.hide_hour_unit(); if (self->end_step == NULL) { - if (is_future_output_enabled(h)) { + //if (is_future_output_enabled(h)) { snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); - } - else { - snprintf(buf, sizeof(buf), "%ld", end_start_value); - } + //} + //else { + // snprintf(buf, sizeof(buf), "%ld", end_start_value); + //} } else { if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - if (is_future_output_enabled(h)) { + //if (is_future_output_enabled(h)) { Step end_step{end_step_value, step_units}; end_step.hide_hour_unit(); if (end_start_value == end_step_value) { @@ -173,15 +174,15 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) else { snprintf(buf, sizeof(buf), "%s-%s", start_step.to_string().c_str(), end_step.to_string().c_str()); } - } - else { - if (end_start_value == end_step_value) { - snprintf(buf, sizeof(buf), "%ld", end_step_value); - } - else { - snprintf(buf, sizeof(buf), "%ld-%ld", end_start_value, end_step_value); - } - } + //} + //else { + // if (end_start_value == end_step_value) { + // snprintf(buf, sizeof(buf), "%ld", end_step_value); + // } + // else { + // snprintf(buf, sizeof(buf), "%ld-%ld", end_start_value, end_step_value); + // } + //} } @@ -259,13 +260,13 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); - if (is_future_output_enabled(h)) { + //grib_handle* h = grib_handle_of_accessor(a); + //if (is_future_output_enabled(h)) { return pack_string_new(a, val, len); - } - else { - return pack_string_old(a, val, len); - } + //} + //else { + // return pack_string_old(a, val, len); + //} } static int value_count(grib_accessor* a, long* count) @@ -300,8 +301,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; + //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + // return ret; + step_units = get_step_units(h); Step start_step{end_start_value, step_units}; start_step.hide_hour_unit(); diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index d2f0c370e..3ed171d0f 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -21,9 +21,9 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_gen - IMPLEMENTS = pack_long;unpack_long;dump - IMPLEMENTS = pack_string;unpack_string;dump - IMPLEMENTS = get_native_type;string_length + IMPLEMENTS = unpack_long;dump + IMPLEMENTS = unpack_string;dump + IMPLEMENTS = string_length IMPLEMENTS = init MEMBERS = const char* forecast_time_value MEMBERS = const char* forecast_time_unit @@ -84,13 +84,13 @@ static grib_accessor_class _grib_accessor_class_optimal_step_units = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ 0, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ + 0, /* pack_string */ &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ @@ -150,19 +150,19 @@ static size_t string_length(grib_accessor* a) static long staticStepUnits = UnitType{Unit::MISSING}.to_long(); -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - staticStepUnits = *val; +//static int pack_long(grib_accessor* a, const long* val, size_t* len) +//{ +// staticStepUnits = *val; - return GRIB_SUCCESS; -} +// return GRIB_SUCCESS; +//} static int unpack_long(grib_accessor* a, long* val, size_t* len) { - if (staticStepUnits != 255) { - *val = staticStepUnits; - return GRIB_SUCCESS; - } + //if (staticStepUnits != 255) { + // *val = staticStepUnits; + // return GRIB_SUCCESS; + //} grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; grib_handle* h = grib_handle_of_accessor(a); @@ -183,11 +183,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - staticStepUnits = UnitType{val}.to_long(); - return GRIB_SUCCESS; -} +//static int pack_string(grib_accessor* a, const char* val, size_t* len) +//{ +// staticStepUnits = UnitType{val}.to_long(); +// return GRIB_SUCCESS; +//} static int unpack_string(grib_accessor* a, char* val, size_t* len) { diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index a4baca1be..e70043201 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -184,8 +184,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + // return err; + step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) return err; @@ -229,8 +230,9 @@ int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + // return err; + step_units = get_step_units(h); unpack_long(a, &oldStep, len); @@ -286,8 +288,9 @@ int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { return err; if ((err = unpack_long(a, &start_step_value_old, len)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + //return err; + step_units = get_step_units(h); Step start_step_old(start_step_value_old, step_units); Step forecast_time(*val, step_units); Step time_range_new{}; @@ -315,12 +318,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret; - if (is_future_output_enabled(h)) { + //if (is_future_output_enabled(h)) { ret = pack_long_new_(a, val, len); - } - else { - ret = pack_long_old_(a, val, len); - } + //} + //else { + // ret = pack_long_old_(a, val, len); + //} return ret; } @@ -334,8 +337,9 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) Step step = step_from_string(val); long step_units; - if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - return ret; + //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + // return ret; + step_units = get_step_units(h); long value = step.value(); @@ -358,19 +362,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - return ret; + //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + // return ret; + step_units = get_step_units(h); Step step{value, step_units}; step.hide_hour_unit(); //snprintf(val, *len, "%ld", value); - if (is_future_output_enabled(h)) { + //if (is_future_output_enabled(h)) { snprintf(val, *len, "%s", step.to_string().c_str()); - } - else { - snprintf(val, *len, "%ld", step.value()); - } + //} + //else { + // snprintf(val, *len, "%ld", step.value()); + //} return GRIB_SUCCESS; } diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 11a1c015e..f2bedef10 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -43,3 +43,18 @@ bool is_future_output_enabled(grib_handle* h) return ret; return strcmp(step_output_format, "future") == 0; } + + +long get_step_units(grib_handle* h) +{ + int ret = 0; + long step_units = 0; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + throw std::runtime_error("Failed to get stepUnits"); + + if (step_units == 255) { + if((ret = grib_get_long_internal(h, "optimalStepUnits", &step_units)) != GRIB_SUCCESS) + throw std::runtime_error("Failed to get optimalStepUnits"); + } + return step_units; +} diff --git a/src/step_utilities.h b/src/step_utilities.h index 65176a76c..9926f5938 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -7,6 +7,7 @@ std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key); bool is_future_output_enabled(grib_handle* h); int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); +long get_step_units(grib_handle* h); //template //int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 29bc07479..916f2b8b5 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -52,18 +52,18 @@ temp2=temp_2.$label ##high_level_keys="startStep:s,endStep:s" #high_level_keys="startStep:i,endStep:i" #${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp -#grib_check_key_equals $temp "-y -p $low_level_keys" "24 h 1 D" -#grib_check_key_equals $temp "-y -p $high_level_keys" "24 48" -#${tools_dir}/grib_set -y -s startStep:i=24 $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 0 h" -#grib_check_key_equals $temp2 "-y -p $high_level_keys" "24 24" +#grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" +#grib_check_key_equals $temp "-p $high_level_keys" "24 48" +#${tools_dir}/grib_set -s startStep:i=24 $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 0 h" +#grib_check_key_equals $temp2 "-p $high_level_keys" "24 24" #${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=24,indicatorOfUnitForTimeRange=h $fn $temp -#grib_check_key_equals $temp "-y -p $low_level_keys" "24 h 24 h" -#grib_check_key_equals $temp "-y -p $high_level_keys" "24 48" -#${tools_dir}/grib_set -y -s startStep:i=24 $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 24 h" -#grib_check_key_equals $temp2 "-y -p $high_level_keys" "24 48" +#grib_check_key_equals $temp "-p $low_level_keys" "24 h 24 h" +#grib_check_key_equals $temp "-p $high_level_keys" "24 48" +#${tools_dir}/grib_set -s startStep:i=24 $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 24 h" +#grib_check_key_equals $temp2 "-p $high_level_keys" "24 48" #exit @@ -74,73 +74,73 @@ ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTi grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" # Use range unit: hour -${tools_dir}/grib_set -y -s endStep:d=30 $temp $temp2 # TODO(EB) remove in the future behavior -#${tools_dir}/grib_set -y -s endStep:i=30 $temp $temp2 # TODO(EB) keep for backwards compatibility -#${tools_dir}/grib_set -y -s endStep:s=30 $temp $temp2 -#${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 -#${tools_dir}/grib_set -y -s endStep=30h $temp $temp2 # TODO(EB) add to tests -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" -#${tools_dir}/grib_set -y -s endStep:d=24.5 $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" +${tools_dir}/grib_set -s endStep:d=30 $temp $temp2 # TODO(EB) remove in the future behavior +#${tools_dir}/grib_set -s endStep:i=30 $temp $temp2 # TODO(EB) keep for backwards compatibility +#${tools_dir}/grib_set -s endStep:s=30 $temp $temp2 +#${tools_dir}/grib_set -s endStep:s=30h $temp $temp2 +#${tools_dir}/grib_set -s endStep=30h $temp $temp2 # TODO(EB) add to tests +grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" +#${tools_dir}/grib_set -s endStep:d=24.5 $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 30 m" # Use stepUnits -${tools_dir}/grib_set -y -s endStep:s=30 $temp $temp2 -${tools_dir}/grib_set -y -s endStep:s=30h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 6 h" -#${tools_dir}/grib_set -y -s endStep:s=24.5h $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 30 m" -${tools_dir}/grib_set -y -s endStep:s=88200s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1440 m 30 m" -#${tools_dir}/grib_set -y -s endStep:s=1446.65m $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 399 s" -${tools_dir}/grib_set -y -s endStep:s=24024 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "24 h 24000 h" +${tools_dir}/grib_set -s endStep:s=30 $temp $temp2 +${tools_dir}/grib_set -s endStep:s=30h $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" +#${tools_dir}/grib_set -s endStep:s=24.5h $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 30 m" +${tools_dir}/grib_set -s endStep:s=88200s $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1440 m 30 m" +#${tools_dir}/grib_set -s endStep:s=1446.65m $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 399 s" +${tools_dir}/grib_set -s endStep:s=24024 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 24000 h" # Use range unit: hour -${tools_dir}/grib_set -y -s startStep:d=5 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 43 h" -#${tools_dir}/grib_set -y -s startStep:d=4.5 $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" +${tools_dir}/grib_set -s startStep:d=5 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 43 h" +#${tools_dir}/grib_set -s startStep:d=4.5 $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "270 m 1 D" # Use stepUnits -${tools_dir}/grib_set -y -s startStep:s=5h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 43 h" -#${tools_dir}/grib_set -y -s startStep:s=4.5h $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "270 m 1 D" -${tools_dir}/grib_set -y -s startStep:s=240s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "4 m 2876 m" -#${tools_dir}/grib_set -y -s startStep:s=0.65m $temp $temp2 -#grib_check_key_equals $temp2 "-y -p $low_level_keys" "39 s 1 D" -${tools_dir}/grib_set -y -s startStep:s=2 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "2 h 46 h" +${tools_dir}/grib_set -s startStep:s=5h $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 43 h" +#${tools_dir}/grib_set -s startStep:s=4.5h $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "270 m 1 D" +${tools_dir}/grib_set -s startStep:s=240s $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "4 m 2876 m" +#${tools_dir}/grib_set -s startStep:s=0.65m $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "39 s 1 D" +${tools_dir}/grib_set -s startStep:s=2 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "2 h 46 h" -${tools_dir}/grib_set -y -s stepRange:s=5h-30h $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +${tools_dir}/grib_set -s stepRange:s=5h-30h $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-p stepRange:s" "5-30" -${tools_dir}/grib_set -y -s stepRange:s=5-30 $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "5-30" +${tools_dir}/grib_set -s stepRange:s=5-30 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 25 h" +grib_check_key_equals $temp2 "-p stepRange:s" "5-30" -${tools_dir}/grib_set -y -s stepRange:s=60m-120m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 h 1 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1-2" +${tools_dir}/grib_set -s stepRange:s=60m-120m $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 1 h" +grib_check_key_equals $temp2 "-p stepRange:s" "1-2" -${tools_dir}/grib_set -y -s stepRange:s=60s-120s $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1 m 1 m" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1m-2m" +${tools_dir}/grib_set -s stepRange:s=60s-120s $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 1 m" +grib_check_key_equals $temp2 "-p stepRange:s" "1m-2m" -${tools_dir}/grib_set -y -s stepRange:s=60m-121m $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "60 m 61 m" -grib_check_key_equals $temp2 "-y -p stepRange:s" "60m-121m" +${tools_dir}/grib_set -s stepRange:s=60m-121m $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "60 m 61 m" +grib_check_key_equals $temp2 "-p stepRange:s" "60m-121m" -${tools_dir}/grib_set -y -s stepRange:s=62D-122D $temp $temp2 -grib_check_key_equals $temp2 "-y -p $low_level_keys" "1488 h 1440 h" -grib_check_key_equals $temp2 "-y -p stepRange:s" "1488-2928" +${tools_dir}/grib_set -s stepRange:s=62D-122D $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1488 h 1440 h" +grib_check_key_equals $temp2 "-p stepRange:s" "1488-2928" @@ -153,27 +153,27 @@ keys_d="step:d" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "3540" -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "59" -#grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "3540s" -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "59m" -#grib_check_key_equals $temp "-y -p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(EB): check behaviour // See tools for default output format -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "3540" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "59" -#grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "3540" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "59" -#grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59" +#grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) +grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "3540s" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "59m" +#grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(EB): check behaviour // See tools for default output format +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "3540" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "59" +#grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "3540" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59" +#grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0" @@ -187,83 +187,61 @@ keys_d="step:d" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m" -grib_check_key_equals $temp "-p $keys__" "0" -grib_check_key_equals $temp "-y -p $keys__" "0" -grib_check_key_equals $temp "-p $keys_s" "0" -grib_check_key_equals $temp "-y -p $keys_s" "0" -grib_check_key_equals $temp "-p $keys_i" "0" -grib_check_key_equals $temp "-y -p $keys_i" "0" -grib_check_key_equals $temp "-p $keys_d" "0" -grib_check_key_equals $temp "-y -p $keys_d" "0" - -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=s" "0" -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=m" "0" -grib_check_key_equals $temp "-y -p $keys__ -s stepUnits=h" "0" -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=s" "0s" -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=m" "0m" -grib_check_key_equals $temp "-y -p $keys_s -s stepUnits=h" "0" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=s" "0" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=m" "0" -grib_check_key_equals $temp "-y -p $keys_i -s stepUnits=h" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=s" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=m" "0" -grib_check_key_equals $temp "-y -p $keys_d -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys__" "0" +grib_check_key_equals $temp "-p $keys_s" "0" +grib_check_key_equals $temp "-p $keys_i" "0" +grib_check_key_equals $temp "-p $keys_d" "0" + +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "0s" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "0m" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "59 m" -grib_check_key_equals $temp "-p $keys__" "59" -grib_check_key_equals $temp "-y -p $keys__" "59" -grib_check_key_equals $temp "-p $keys_s" "59" -grib_check_key_equals $temp "-y -p $keys_s" "59m" -grib_check_key_equals $temp "-p $keys_i" "59" -grib_check_key_equals $temp "-y -p $keys_i" "59" -grib_check_key_equals $temp "-p $keys_d" "59" -grib_check_key_equals $temp "-y -p $keys_d" "59" +grib_check_key_equals $temp "-p $keys__" "59" +#grib_check_key_equals $temp "-p $keys_s" "59" +grib_check_key_equals $temp "-p $keys_s" "59m" +grib_check_key_equals $temp "-p $keys_i" "59" +grib_check_key_equals $temp "-p $keys_d" "59" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" -grib_check_key_equals $temp "-p $keys__" "1" -grib_check_key_equals $temp "-y -p $keys__" "1" -grib_check_key_equals $temp "-p $keys_s" "1" -grib_check_key_equals $temp "-y -p $keys_s" "1" -grib_check_key_equals $temp "-p $keys_i" "1" -grib_check_key_equals $temp "-y -p $keys_i" "1" -grib_check_key_equals $temp "-p $keys_d" "1" -grib_check_key_equals $temp "-y -p $keys_d" "1" +grib_check_key_equals $temp "-p $keys__" "1" +grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_i" "1" +grib_check_key_equals $temp "-p $keys_d" "1" ${tools_dir}/grib_set -s forecastTime=61,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "61 m" -grib_check_key_equals $temp "-p $keys__" "61" -grib_check_key_equals $temp "-y -p $keys__" "61" -grib_check_key_equals $temp "-p $keys_s" "61" -grib_check_key_equals $temp "-y -p $keys_s" "61m" -grib_check_key_equals $temp "-p $keys_i" "61" -grib_check_key_equals $temp "-y -p $keys_i" "61" -grib_check_key_equals $temp "-p $keys_d" "61" -grib_check_key_equals $temp "-y -p $keys_d" "61" +grib_check_key_equals $temp "-p $keys__" "61" +#grib_check_key_equals $temp "-p $keys_s" "61" +grib_check_key_equals $temp "-p $keys_s" "61m" +grib_check_key_equals $temp "-p $keys_i" "61" +grib_check_key_equals $temp "-p $keys_d" "61" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h" -grib_check_key_equals $temp "-p $keys__" "24" -grib_check_key_equals $temp "-y -p $keys__" "24" -grib_check_key_equals $temp "-p $keys_s" "24" -grib_check_key_equals $temp "-y -p $keys_s" "24" -grib_check_key_equals $temp "-p $keys_i" "24" -grib_check_key_equals $temp "-y -p $keys_i" "24" -grib_check_key_equals $temp "-p $keys_d" "24" -grib_check_key_equals $temp "-y -p $keys_d" "24" +grib_check_key_equals $temp "-p $keys__" "24" +grib_check_key_equals $temp "-p $keys_s" "24" +grib_check_key_equals $temp "-p $keys_i" "24" +grib_check_key_equals $temp "-p $keys_d" "24" ${tools_dir}/grib_set -s forecastTime=1440,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1440 m" -grib_check_key_equals $temp "-p $keys__" "24" -grib_check_key_equals $temp "-y -p $keys__" "24" -grib_check_key_equals $temp "-p $keys_s" "24" -grib_check_key_equals $temp "-y -p $keys_s" "24" -grib_check_key_equals $temp "-p $keys_i" "24" -grib_check_key_equals $temp "-y -p $keys_i" "24" -grib_check_key_equals $temp "-p $keys_d" "24" -grib_check_key_equals $temp "-y -p $keys_d" "24" +grib_check_key_equals $temp "-p $keys__" "24" +grib_check_key_equals $temp "-p $keys_s" "24" +grib_check_key_equals $temp "-p $keys_i" "24" +grib_check_key_equals $temp "-p $keys_d" "24" @@ -276,100 +254,61 @@ keys_d="stepRange:d,startStep:d,endStep:d" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" -grib_check_key_equals $temp "-p $keys__" "0-2 0 2" -grib_check_key_equals $temp "-y -p $keys__" "0-2 0 2" -grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" -grib_check_key_equals $temp "-y -p $keys_s" "0-2 0 2" -grib_check_key_equals $temp "-p $keys_i" "2 0 2" -grib_check_key_equals $temp "-y -p $keys_i" "2 0 2" -grib_check_key_equals $temp "-p $keys_d" "2 0 2" -grib_check_key_equals $temp "-y -p $keys_d" "2 0 2" +grib_check_key_equals $temp "-p $keys__" "0-2 0 2" +grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" +grib_check_key_equals $temp "-p $keys_i" "2 0 2" +grib_check_key_equals $temp "-p $keys_d" "2 0 2" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" -grib_check_key_equals $temp "-p $keys__" "24-48 24 48" -grib_check_key_equals $temp "-y -p $keys__" "24-48 24 48" -grib_check_key_equals $temp "-p $keys_s" "24-48 24 48" -grib_check_key_equals $temp "-y -p $keys_s" "24-48 24 48" -grib_check_key_equals $temp "-p $keys_i" "48 24 48" -grib_check_key_equals $temp "-y -p $keys_i" "48 24 48" -grib_check_key_equals $temp "-p $keys_d" "48 24 48" -grib_check_key_equals $temp "-y -p $keys_d" "48 24 48" +grib_check_key_equals $temp "-p $keys__" "24-48 24 48" +grib_check_key_equals $temp "-p $keys_s" "24-48 24 48" +grib_check_key_equals $temp "-p $keys_i" "48 24 48" +grib_check_key_equals $temp "-p $keys_d" "48 24 48" ${tools_dir}/grib_set -s forecastTime=25,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "25 h 1 D" grib_check_key_equals $temp "-p $keys__" "25-49 25 49" -grib_check_key_equals $temp "-y -p $keys__" "25-49 25 49" -grib_check_key_equals $temp "-p $keys_s" "25-49 25 49" -grib_check_key_equals $temp "-y -p $keys_s" "25-49 25 49" -grib_check_key_equals $temp "-p $keys_i" "49 25 49" -grib_check_key_equals $temp "-y -p $keys_i" "49 25 49" -grib_check_key_equals $temp "-p $keys_d" "49 25 49" -grib_check_key_equals $temp "-y -p $keys_d" "49 25 49" - - -#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys__" "1.0166666666666666" -#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_s" "1.0166666666666666" -#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_i" "1" -#grib_check_key_equals $temp "-y -s stepUnits=h -p $keys_d" "1.0166666666666666" - - +grib_check_key_equals $temp "-p $keys__" "25-49 25 49" +grib_check_key_equals $temp "-p $keys_s" "25-49 25 49" +grib_check_key_equals $temp "-p $keys_i" "49 25 49" +grib_check_key_equals $temp "-p $keys_d" "49 25 49" ${tools_dir}/grib_set -s forecastTime=45,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=15,indicatorOfUnitForTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" -grib_check_key_equals $temp "-p $keys__" "45-60 45 60" -grib_check_key_equals $temp "-y -p $keys__" "45m-60m 45 60" -grib_check_key_equals $temp "-p $keys_s" "45-60 45 60" -grib_check_key_equals $temp "-y -p $keys_s" "45m-60m 45m 60m" -grib_check_key_equals $temp "-p $keys_i" "60 45 60" -grib_check_key_equals $temp "-y -p $keys_i" "60 45 60" -grib_check_key_equals $temp "-p $keys_d" "60 45 60" -grib_check_key_equals $temp "-y -p $keys_d" "60 45 60" - +grib_check_key_equals $temp "-p $keys__" "45m-60m 45 60" +#grib_check_key_equals $temp "-p $keys_s" "45-60 45 60" +grib_check_key_equals $temp "-p $keys_s" "45m-60m 45m 60m" +grib_check_key_equals $temp "-p $keys_i" "60 45 60" +grib_check_key_equals $temp "-p $keys_d" "60 45 60" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 2 h" -grib_check_key_equals $temp "-p $keys__" "1-3 1 3" -grib_check_key_equals $temp "-y -p $keys__" "1-3 1 3" -grib_check_key_equals $temp "-p $keys_s" "1-3 1 3" -grib_check_key_equals $temp "-y -p $keys_s" "1-3 1 3" -grib_check_key_equals $temp "-p $keys_i" "3 1 3" -grib_check_key_equals $temp "-y -p $keys_i" "3 1 3" -grib_check_key_equals $temp "-p $keys_d" "3 1 3" -grib_check_key_equals $temp "-y -p $keys_d" "3 1 3" +grib_check_key_equals $temp "-p $keys__" "1-3 1 3" +grib_check_key_equals $temp "-p $keys_s" "1-3 1 3" +grib_check_key_equals $temp "-p $keys_i" "3 1 3" +grib_check_key_equals $temp "-p $keys_d" "3 1 3" ${tools_dir}/grib_set -s forecastTime=18,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "18 h 6 h" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_i" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" -grib_check_key_equals $temp "-p $keys_d" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=360,indicatorOfUnitForTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1080 m 360 m" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_i" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" # TODO(EB): Check if output of stepRange:i makes sense. -grib_check_key_equals $temp "-p $keys_d" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" # TODO(EB): Check if output of stepRange:d makes sense. +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-y -p $keys_s" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_i" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_i" "24 18 24" -grib_check_key_equals $temp "-p $keys_d" "24 18 24" -grib_check_key_equals $temp "-y -p $keys_d" "24 18 24" +grib_check_key_equals $temp "-p $keys__" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys_i" "24 18 24" +grib_check_key_equals $temp "-p $keys_d" "24 18 24" rm -f $temp From b11a82edbbdc645ce09e701581c7a2e1bbb15ef5 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 4 Sep 2023 18:41:16 +0000 Subject: [PATCH 034/469] ECC-1620: Remove -y option --- src/grib_api_internal.h | 1 + src/grib_context.cc | 6 +++++- src/step_utilities.cc | 7 +------ tools/grib_options.cc | 1 - 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 9f413495b..57cd11b98 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1097,6 +1097,7 @@ struct grib_context grib_trie* lists; grib_trie* expanded_descriptors; int file_pool_max_opened_files; + int is_future_step_format; #if GRIB_PTHREADS pthread_mutex_t mutex; #elif GRIB_OMP_THREADS diff --git a/src/grib_context.cc b/src/grib_context.cc index 90b531f6f..b66dce790 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -366,7 +366,8 @@ static grib_context default_grib_context = { 0, /* classes */ 0, /* lists */ 0, /* expanded_descriptors */ - DEFAULT_FILE_POOL_MAX_OPENED_FILES /* file_pool_max_opened_files */ + DEFAULT_FILE_POOL_MAX_OPENED_FILES, /* file_pool_max_opened_files */ + 0 #if GRIB_PTHREADS , PTHREAD_MUTEX_INITIALIZER /* mutex */ @@ -399,6 +400,7 @@ grib_context* grib_context_get_default() const char* grib_data_quality_checks = NULL; const char* single_precision = NULL; const char* file_pool_max_opened_files = NULL; + const char* is_future_step_format = NULL; #ifdef ENABLE_FLOATING_POINT_EXCEPTIONS feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); @@ -421,6 +423,7 @@ grib_context* grib_context_get_default() no_spd = codes_getenv("ECCODES_GRIB_NO_SPD"); keep_matrix = codes_getenv("ECCODES_GRIB_KEEP_MATRIX"); file_pool_max_opened_files = getenv("ECCODES_FILE_POOL_MAX_OPENED_FILES"); + is_future_step_format = getenv("ECCODES_GRIB_IS_FUTURE_STEP_FORMAT"); /* On UNIX, when we read from a file we get exactly what is in the file on disk. * But on Windows a file can be opened in binary or text mode. In binary mode the system behaves exactly as in UNIX. @@ -555,6 +558,7 @@ grib_context* grib_context_get_default() default_grib_context.grib_data_quality_checks = grib_data_quality_checks ? atoi(grib_data_quality_checks) : 0; default_grib_context.single_precision = single_precision ? atoi(single_precision) : 0; default_grib_context.file_pool_max_opened_files = file_pool_max_opened_files ? atoi(file_pool_max_opened_files) : DEFAULT_FILE_POOL_MAX_OPENED_FILES; + default_grib_context.is_future_step_format = is_future_step_format ? atoi(is_future_step_format) : 0; } GRIB_MUTEX_UNLOCK(&mutex_c); diff --git a/src/step_utilities.cc b/src/step_utilities.cc index f2bedef10..22b9929f7 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -36,12 +36,7 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un bool is_future_output_enabled(grib_handle* h) { - size_t step_output_format_size = 128; - char step_output_format[128]; - int ret = 0; - if ((ret = grib_get_string_internal(h, "stepOutputFormat", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) - return ret; - return strcmp(step_output_format, "future") == 0; + return h->context->is_future_step_format > 0; } diff --git a/tools/grib_options.cc b/tools/grib_options.cc index 3e874369f..0d77dc67d 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -39,7 +39,6 @@ static grib_options_help grib_options_help_list[] = { { "e:", "tolerance", "\n\t\tOnly values whose difference is more than tolerance are considered different.\n" }, { "f", 0, "Force. Force the execution not to fail on error.\n" }, { "F:", "format", "\n\t\tC style format for floating-point values.\n" }, - { "y", "future", "\n\t\tFuture output format.\n" }, { "g", 0, "Copy GTS header. \n" }, { "G", 0, "GRIBEX compatibility mode.\n" }, { "i:", "index", From 982f46d16a3f210790789817b73abf73738d2ecd Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 4 Sep 2023 19:06:17 +0000 Subject: [PATCH 035/469] ECC-1620: Test conversion from step range to low level keys --- tests/grib_ecc-1620.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 916f2b8b5..7be6a6df3 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -245,6 +245,13 @@ grib_check_key_equals $temp "-p $keys_d" "24" + +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +${tools_dir}/grib_set -s stepRange=60m-2h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" + + fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" keys__="stepRange,startStep,endStep" From 45267d146dae919dda506ae331f226b4e2a39696 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 15 Sep 2023 07:10:29 +0000 Subject: [PATCH 036/469] ECC-1620: Fix handing multiple messages in a GRIB file --- .../grib2/template.4.forecast_time.def | 6 +- src/grib_accessor_class_g2end_step.cc | 110 ++++++++++------- src/grib_accessor_class_g2step_range.cc | 104 ++++++++-------- src/grib_accessor_class_optimal_step_units.cc | 56 +++++---- src/grib_accessor_class_step_in_units.cc | 87 ++++++-------- src/step.cc | 2 - src/step_utilities.cc | 8 +- src/step_utilities.h | 23 ---- tests/grib_ecc-1620.sh | 112 +++++++++--------- 9 files changed, 245 insertions(+), 263 deletions(-) diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 4a9c6f410..2c0372e36 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -14,9 +14,9 @@ codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump #alias forecastTimeUnit = indicatorOfUnitOfTimeRange; #template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; #codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -codetable[1] stepUnits 'stepUnits.table' = 255 : transient,dump,no_copy; -#transient useOptimalStepUnits = 0; -meta optimalStepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; +meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; +transient startStepUnit = 255; +transient endStepUnit = 255; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 8e73f4d2b..fa275eafd 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -409,7 +409,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) -static int pack_long(grib_accessor* a, const long* val, size_t* len) +static int pack_long_(grib_accessor* a, const long end_step_value, const long end_step_unit) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); @@ -423,6 +423,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long second; long start_step_value; + long start_step_unit; long step_units, time_range_unit; long year_of_end_of_interval; long month_of_end_of_interval; @@ -435,17 +436,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) double dend, dstep; + Step end_step{end_step_value, end_step_unit}; + /*point in time */ if (self->year == NULL) { - err = grib_set_long_internal(h, self->start_step_value, *val); + err = grib_set_long_internal(h, self->start_step_value, end_step.value()); return err; } if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - //return err; - step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->year, &year))) return err; if ((err = grib_get_long_internal(h, self->month, &month))) @@ -461,14 +461,23 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; + if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) + return err; + if (start_step_unit == 255) { + throw std::runtime_error("startStepUnit == 255"); + } + if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - time_range_v = *val - start_step_value; + Step start_step{start_step_value, start_step_unit}; - if (time_range_v < 0) { + //time_range_v = *val - start_step_value; + Step time_range = end_step - start_step; + + if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%ld < %ld)", *val, start_step_value); + "endStep < startStep (%s < %s)", end_step.to_string().c_str(), start_step.to_string().c_str()); return GRIB_WRONG_STEP; } @@ -476,7 +485,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if (err != GRIB_SUCCESS) return err; - dstep = (((double)(*val)) * u2s[step_units]) / u2s[2]; /* in days */ + dstep = end_step.value(UnitType{Unit::DAY}); dend += dstep; err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, @@ -498,45 +507,46 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) return err; - if (time_range_v * u2s[step_units] % u2s2[time_range_unit]) { - time_range_unit = step_units; - if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) - return err; - time_range_value = time_range_v; - } - else - time_range_value = (time_range_v * u2s[step_units]) / u2s2[time_range_unit]; + //if (time_range_v * u2s[step_units] % u2s2[time_range_unit]) { + // time_range_unit = step_units; + // if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) + // return err; + // time_range_value = time_range_v; + //} + //else + // time_range_value = (time_range_v * u2s[step_units]) / u2s2[time_range_unit]; - time_range_value = time_range_value * u2s[time_range_unit] / u2s2[step_units]; - time_range_unit = step_units; - if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) - return err; - if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) - return err; + //time_range_value = time_range_value * u2s[time_range_unit] / u2s2[step_units]; + //time_range_unit = step_units; + //if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) + // return err; + //if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) + // return err; const char* forecast_time_value_key = "forecastTime"; const char* forecast_time_unit_key = "indicatorOfUnitOfTimeRange"; - long forecast_time_value; - long forecast_time_unit; - if ((err = grib_get_long_internal(h, forecast_time_value_key, &forecast_time_value)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(h, forecast_time_unit_key, &forecast_time_unit)) != GRIB_SUCCESS) - return err; + //long forecast_time_value; + //long forecast_time_unit; + //if ((err = grib_get_long_internal(h, forecast_time_value_key, &forecast_time_value)) != GRIB_SUCCESS) + // return err; + //if ((err = grib_get_long_internal(h, forecast_time_unit_key, &forecast_time_unit)) != GRIB_SUCCESS) + // return err; //auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); - auto [forecast_time, time_range] = find_common_units(Step{start_step_value, step_units}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + //auto [forecast_time, time_range] = find_common_units(Step{start_step_value, step_units}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); + auto [forecast_time_opt, time_range_opt] = find_common_units(start_step, time_range); - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range.value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range_opt.unit().to_long())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_value_key, forecast_time.value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_value_key, forecast_time_opt.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time_opt.unit().to_long())) != GRIB_SUCCESS) return err; @@ -552,6 +562,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } + static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -573,16 +584,27 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) step.set_unit(step_units); step.hide_hour_unit(); - //if (is_future_output_enabled(h)) { - snprintf(val, *len, "%s", step.to_string().c_str()); - //} - //else { - // snprintf(val, *len, "%ld", step.value()); - //} + snprintf(val, *len, "%s", step.to_string().c_str()); return GRIB_SUCCESS; } +static int pack_long(grib_accessor* a, const long* val, size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret; + + long end_step_unit; + if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) + return ret; + + if (end_step_unit == 255) + end_step_unit = UnitType{Unit::HOUR}.to_long(); + + return pack_long_(a, *val, end_step_unit); +} + static int pack_string(grib_accessor* a, const char* val, size_t* len) { @@ -591,13 +613,11 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) int ret = 0; Step end_step = step_from_string(val); end_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, self->step_units, end_step.unit().to_long())) != GRIB_SUCCESS) - return ret; - long end_step_value = end_step.value(); - size_t end_step_len = 0; + if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().to_long())) != GRIB_SUCCESS) + return ret; - if ((ret = pack_long(a, &end_step_value, &end_step_len)) != GRIB_SUCCESS) + if ((ret = pack_long_(a, end_step.value(), end_step.unit().to_long())) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index d4312cfcd..580452eca 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -140,25 +140,28 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - long end_start_value = 0; + long start_step_value = 0; long end_step_value = 0; - long step_units = 0; + long step_units; - if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->start_step, &start_step_value)) != GRIB_SUCCESS) return ret; - //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - // return ret; - step_units = get_step_units(h); + if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + if (step_units == 255) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } - Step start_step{end_start_value, step_units}; + Step start_step{start_step_value, step_units}; start_step.hide_hour_unit(); if (self->end_step == NULL) { //if (is_future_output_enabled(h)) { snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); //} //else { - // snprintf(buf, sizeof(buf), "%ld", end_start_value); + // snprintf(buf, sizeof(buf), "%ld", start_step_value); //} } else { @@ -168,7 +171,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) //if (is_future_output_enabled(h)) { Step end_step{end_step_value, step_units}; end_step.hide_hour_unit(); - if (end_start_value == end_step_value) { + if (start_step_value == end_step_value) { snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); } else { @@ -176,11 +179,11 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } //} //else { - // if (end_start_value == end_step_value) { + // if (start_step_value == end_step_value) { // snprintf(buf, sizeof(buf), "%ld", end_step_value); // } // else { - // snprintf(buf, sizeof(buf), "%ld-%ld", end_start_value, end_step_value); + // snprintf(buf, sizeof(buf), "%ld-%ld", start_step_value, end_step_value); // } //} @@ -199,33 +202,33 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } -static int pack_string_old(grib_accessor* a, const char* val, size_t* len) -{ - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; - - std::vector steps = parse_range(val); - if (steps.size() == 0) - return GRIB_INVALID_ARGUMENT; - - Step step_0 = steps[0]; - Step step_1; - if (steps.size() > 1) { - std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); - if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) - return ret; - } - - if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) - return ret; - - if ((self->end_step != NULL) && (steps.size() > 1)) { - if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) - return ret; - } - return GRIB_SUCCESS; -} +//static int pack_string_old(grib_accessor* a, const char* val, size_t* len) +//{ +// grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; +// grib_handle* h = grib_handle_of_accessor(a); +// int ret = 0; + +// std::vector steps = parse_range(val); +// if (steps.size() == 0) +// return GRIB_INVALID_ARGUMENT; + +// Step step_0 = steps[0]; +// Step step_1; +// if (steps.size() > 1) { +// std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); +// if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) +// return ret; +// } + +// if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) +// return ret; + +// if ((self->end_step != NULL) && (steps.size() > 1)) { +// if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) +// return ret; +// } +// return GRIB_SUCCESS; +//} static int pack_string_new(grib_accessor* a, const char* val, size_t* len) @@ -242,16 +245,16 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) Step step_1; if (steps.size() > 1) { std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); - if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) - return ret; } - //if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) - // return ret; + if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().to_long()))) + return ret; if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) return ret; if ((self->end_step != NULL) && (steps.size() > 1)) { + if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().to_long()))) + return ret; if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) return ret; } @@ -260,13 +263,7 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - //grib_handle* h = grib_handle_of_accessor(a); - //if (is_future_output_enabled(h)) { - return pack_string_new(a, val, len); - //} - //else { - // return pack_string_old(a, val, len); - //} + return pack_string_new(a, val, len); } static int value_count(grib_accessor* a, long* count) @@ -301,9 +298,12 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - //if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - // return ret; - step_units = get_step_units(h); + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + throw std::runtime_error("Failed to get stepUnits"); + if (step_units == 255) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } Step start_step{end_start_value, step_units}; start_step.hide_hour_unit(); diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 3ed171d0f..20ff3b1be 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -21,8 +21,8 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_gen - IMPLEMENTS = unpack_long;dump - IMPLEMENTS = unpack_string;dump + IMPLEMENTS = pack_long,unpack_long;dump + IMPLEMENTS = unpack_string,unpack_string;dump IMPLEMENTS = string_length IMPLEMENTS = init MEMBERS = const char* forecast_time_value @@ -84,13 +84,13 @@ static grib_accessor_class _grib_accessor_class_optimal_step_units = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - 0, /* pack_long */ + &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ 0, /* unpack_double */ 0, /* unpack_float */ - 0, /* pack_string */ + &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ @@ -150,44 +150,48 @@ static size_t string_length(grib_accessor* a) static long staticStepUnits = UnitType{Unit::MISSING}.to_long(); -//static int pack_long(grib_accessor* a, const long* val, size_t* len) -//{ -// staticStepUnits = *val; +static int pack_long(grib_accessor* a, const long* val, size_t* len) +{ + staticStepUnits = *val; -// return GRIB_SUCCESS; -//} + return GRIB_SUCCESS; +} static int unpack_long(grib_accessor* a, long* val, size_t* len) { - //if (staticStepUnits != 255) { - // *val = staticStepUnits; - // return GRIB_SUCCESS; - //} + if (staticStepUnits != 255) { + *val = staticStepUnits; + return GRIB_SUCCESS; + } + grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; grib_handle* h = grib_handle_of_accessor(a); auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); - if (!(forecast_time_opt && time_range_opt)) { + if (forecast_time_opt && time_range_opt) { + auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); + *val = step_a.unit().to_long(); + } + else if (forecast_time_opt && !time_range_opt) { + *val = forecast_time_opt.value().optimize_unit().unit().to_long(); + } + else if (!forecast_time_opt && time_range_opt) { + *val = time_range_opt.value().optimize_unit().unit().to_long(); + } + else if (!forecast_time_opt && !time_range_opt) { *val = UnitType{Unit::HOUR}.to_long(); - return GRIB_SUCCESS; } - Step forecast_time = forecast_time_opt.value_or(Step{}); - Step time_range = time_range_opt.value_or(Step{}); - - auto [step_a, step_b] = find_common_units(forecast_time.optimize_unit(), (forecast_time + time_range).optimize_unit()); - *val = step_a.unit().to_long(); return GRIB_SUCCESS; } - -//static int pack_string(grib_accessor* a, const char* val, size_t* len) -//{ -// staticStepUnits = UnitType{val}.to_long(); -// return GRIB_SUCCESS; -//} +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ + staticStepUnits = UnitType{val}.to_long(); + return GRIB_SUCCESS; +} static int unpack_string(grib_accessor* a, char* val, size_t* len) { diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index e70043201..4e2d3c17b 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -181,40 +181,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) int factor = 0; long u2sf, u2sf_step_unit; - + if ((err= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return err; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - // return err; - step_units = get_step_units(h); if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) return err; - if (step_units != forecast_time_unit) { - *val = forecast_time_value * u2s2[forecast_time_unit]; - if (*val < 0) { - factor = 60; - if (u2s2[forecast_time_unit] % factor) - return GRIB_DECODING_ERROR; - if (u2s[step_units] % factor) - return GRIB_DECODING_ERROR; - u2sf = u2s2[forecast_time_unit] / factor; - *val = forecast_time_value * u2sf; - u2sf_step_unit = u2s[step_units] / factor; - } - else { - u2sf_step_unit = u2s[step_units]; - } + Step step{forecast_time_value, forecast_time_unit}; - if (*val % u2sf_step_unit != 0) { - err = grib_set_long_internal(h, self->step_units, forecast_time_unit); - *val = forecast_time_value; - return err; - } - *val = *val / u2sf_step_unit; - } - else - *val = forecast_time_value; + if ((err = grib_set_long_internal(h, "startStepUnit", UnitType{step_units}.to_long())) != GRIB_SUCCESS) + return err; + + *val = step.value(UnitType{step_units}); return GRIB_SUCCESS; } @@ -273,26 +252,31 @@ int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); } -int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { +int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; //long forecast_time_value; long forecast_time_unit; long step_units; - long start_step_value_old= 0; + long start_step_value_old; + long start_step_unit_old; + size_t len = 0; //long time_range_unit; //long time_range_value; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit)) != GRIB_SUCCESS) return err; - if ((err = unpack_long(a, &start_step_value_old, len)) != GRIB_SUCCESS) + if ((err = unpack_long(a, &start_step_value_old, &len)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit_old)) != GRIB_SUCCESS) return err; + //if ((err = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) //return err; - step_units = get_step_units(h); - Step start_step_old(start_step_value_old, step_units); - Step forecast_time(*val, step_units); + //step_units = get_step_units(h); + Step start_step_old(start_step_value_old, start_step_unit_old); + Step forecast_time(start_step_value, start_step_unit); Step time_range_new{}; auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); @@ -302,12 +286,16 @@ int pack_long_new_(grib_accessor* a, const long* val, size_t* len) { auto [sa, sb] = find_common_units(forecast_time.optimize_unit(), time_range.optimize_unit()); if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, sa)) != GRIB_SUCCESS) return err; + if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().to_long())) != GRIB_SUCCESS) + return err; if ((err = set_step(h, self->time_range_value, self->time_range_unit, sb)) != GRIB_SUCCESS) return err; return GRIB_SUCCESS; } - + forecast_time.optimize_unit(); + if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().to_long())) != GRIB_SUCCESS) + return err; if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, forecast_time)) != GRIB_SUCCESS) return err; @@ -318,12 +306,17 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret; - //if (is_future_output_enabled(h)) { - ret = pack_long_new_(a, val, len); - //} - //else { - // ret = pack_long_old_(a, val, len); - //} + //long step_units = UnitType{Unit::HOUR}.to_long(); + + + long start_step_unit; + if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) + return ret; + + if (start_step_unit == 255) + start_step_unit = UnitType{Unit::HOUR}.to_long(); + + ret = pack_long_new_(a, *val, start_step_unit); return ret; } @@ -336,16 +329,8 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) size_t value_len = 0; Step step = step_from_string(val); - long step_units; - //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - // return ret; - step_units = get_step_units(h); - long value = step.value(); - - if ((ret = grib_set_long_internal(h, "stepUnits", step.unit().to_long())) != GRIB_SUCCESS) - return ret; - if ((ret = pack_long(a, &value, &value_len)) != GRIB_SUCCESS) + if ((ret = pack_long_new_(a, step.value(), step.unit().to_long())) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; @@ -362,8 +347,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - // return ret; step_units = get_step_units(h); Step step{value, step_units}; diff --git a/src/step.cc b/src/step.cc index 13ff22cd8..565f7b8ee 100644 --- a/src/step.cc +++ b/src/step.cc @@ -114,7 +114,6 @@ Step Step::operator-(const Step& step) const } -//std::pair find_common_units(const Step& startStep, const Step& endStep) std::pair find_common_units(const Step& startStep, const Step& endStep) { Step a = startStep; @@ -140,7 +139,6 @@ std::pair find_common_units(const Step& startStep, const Step& endSt b.recalculateValue(); } else { - // Find the highest common unit auto it = std::find_if(UnitType::unit_order_.begin(), UnitType::unit_order_.end(), [&](const auto& e) { return e == a.unit().to_value() || e == b.unit().to_value(); }); diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 22b9929f7..4d98c5af8 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -47,9 +47,9 @@ long get_step_units(grib_handle* h) if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) throw std::runtime_error("Failed to get stepUnits"); - if (step_units == 255) { - if((ret = grib_get_long_internal(h, "optimalStepUnits", &step_units)) != GRIB_SUCCESS) - throw std::runtime_error("Failed to get optimalStepUnits"); - } + //if (step_units == 255) { + // if((ret = grib_get_long_internal(h, "optimalStepUnits", &step_units)) != GRIB_SUCCESS) + // throw std::runtime_error("Failed to get optimalStepUnits"); + //} return step_units; } diff --git a/src/step_utilities.h b/src/step_utilities.h index 9926f5938..5cb7dd6fa 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -8,26 +8,3 @@ std::optional get_step(grib_handle* h, const std::string& value_key, const bool is_future_output_enabled(grib_handle* h); int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); long get_step_units(grib_handle* h); - -//template -//int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) -//{ -// int err; -// if constexpr (std::is_same_v) { -// if ((err = grib_set_long_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) -// return err; -// } -// else if constexpr (std::is_same_v) { -// if ((err = grib_set_double_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) -// return err; -// } -// else { -// return GRIB_NOT_IMPLEMENTED; -// } - -// if ((err = grib_set_long_internal(h, unit_key.c_str(), step.unit().to_long())) != GRIB_SUCCESS) -// return err; -// return GRIB_SUCCESS; -//} - - diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 7be6a6df3..9a5dd0230 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -146,102 +146,102 @@ grib_check_key_equals $temp2 "-p stepRange:s" "1488-2928" fn="${data_dir}/reduced_gaussian_surface.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" -keys__="step" +keys__="step,stepUnits:s" keys_s="step:s" -keys_i="step:i" -keys_d="step:d" +keys_i="step:i,stepUnits:s" +keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540 s" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59 m" #grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "59m" #grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(EB): check behaviour // See tools for default output format -grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "3540" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "59" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "3540 s" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "59 m" #grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour -grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "3540" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "3540 s" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59 m" #grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0 s" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0 s" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" fn="${data_dir}/reduced_gaussian_surface.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" -keys__="step" -keys_s="step:s" -keys_i="step:i" -keys_d="step:d" +keys__="step,stepUnits:s" +keys_s="step:s,stepUnits:s" +keys_i="step:i,stepUnits:s" +keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m" -grib_check_key_equals $temp "-p $keys__" "0" -grib_check_key_equals $temp "-p $keys_s" "0" -grib_check_key_equals $temp "-p $keys_i" "0" -grib_check_key_equals $temp "-p $keys_d" "0" - -grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" -grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "0s" -grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "0m" -grib_check_key_equals $temp "-p $keys_s -s stepUnits=h" "0" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0" -grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0" -grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0" +grib_check_key_equals $temp "-p $keys__" "0 m" +grib_check_key_equals $temp "-p $keys_s" "0m m" +grib_check_key_equals $temp "-p $keys_i" "0 m" +grib_check_key_equals $temp "-p $keys_d" "0 m" + +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0 s" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "0s s" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "0m m" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0 s" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "0 s" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "59 m" -grib_check_key_equals $temp "-p $keys__" "59" +grib_check_key_equals $temp "-p $keys__" "59 m" #grib_check_key_equals $temp "-p $keys_s" "59" -grib_check_key_equals $temp "-p $keys_s" "59m" -grib_check_key_equals $temp "-p $keys_i" "59" -grib_check_key_equals $temp "-p $keys_d" "59" +grib_check_key_equals $temp "-p $keys_s" "59m m" +grib_check_key_equals $temp "-p $keys_i" "59 m" +grib_check_key_equals $temp "-p $keys_d" "59 m" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" -grib_check_key_equals $temp "-p $keys__" "1" -grib_check_key_equals $temp "-p $keys_s" "1" -grib_check_key_equals $temp "-p $keys_i" "1" -grib_check_key_equals $temp "-p $keys_d" "1" +grib_check_key_equals $temp "-p $keys__" "1 h" +grib_check_key_equals $temp "-p $keys_s" "1 h" +grib_check_key_equals $temp "-p $keys_i" "1 h" +grib_check_key_equals $temp "-p $keys_d" "1 h" ${tools_dir}/grib_set -s forecastTime=61,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "61 m" -grib_check_key_equals $temp "-p $keys__" "61" +grib_check_key_equals $temp "-p $keys__" "61 m" #grib_check_key_equals $temp "-p $keys_s" "61" -grib_check_key_equals $temp "-p $keys_s" "61m" -grib_check_key_equals $temp "-p $keys_i" "61" -grib_check_key_equals $temp "-p $keys_d" "61" +grib_check_key_equals $temp "-p $keys_s" "61m m" +grib_check_key_equals $temp "-p $keys_i" "61 m" +grib_check_key_equals $temp "-p $keys_d" "61 m" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h" -grib_check_key_equals $temp "-p $keys__" "24" -grib_check_key_equals $temp "-p $keys_s" "24" -grib_check_key_equals $temp "-p $keys_i" "24" -grib_check_key_equals $temp "-p $keys_d" "24" +grib_check_key_equals $temp "-p $keys__" "24 h" +grib_check_key_equals $temp "-p $keys_s" "24 h" +grib_check_key_equals $temp "-p $keys_i" "24 h" +grib_check_key_equals $temp "-p $keys_d" "24 h" ${tools_dir}/grib_set -s forecastTime=1440,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1440 m" -grib_check_key_equals $temp "-p $keys__" "24" -grib_check_key_equals $temp "-p $keys_s" "24" -grib_check_key_equals $temp "-p $keys_i" "24" -grib_check_key_equals $temp "-p $keys_d" "24" +grib_check_key_equals $temp "-p $keys__" "24 h" +grib_check_key_equals $temp "-p $keys_s" "24 h" +grib_check_key_equals $temp "-p $keys_i" "24 h" +grib_check_key_equals $temp "-p $keys_d" "24 h" From 24e3b4f4bb4299da81a99fcdbd65cdc2268f821c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 15 Sep 2023 07:13:43 +0000 Subject: [PATCH 037/469] ECC-1620: Remove get_step_units() function --- src/grib_accessor_class_g2end_step.cc | 15 ++++++--------- src/grib_accessor_class_step_in_units.cc | 8 ++++---- src/step_utilities.cc | 15 --------------- src/step_utilities.h | 1 - 4 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index fa275eafd..539d03b55 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -281,9 +281,8 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - //return err; - step_units = get_step_units(h); + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + return err; if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) return err; if ((err = grib_get_long_internal(h, self->time_range_value, &time_range_value))) @@ -329,9 +328,8 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - //return err; - step_units = get_step_units(h); + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + return err; if ((err = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) return err; if (numberOfTimeRange > MAX_NUM_TIME_RANGES) { @@ -576,9 +574,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - //if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - //return ret; - step_units = get_step_units(h); + if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) + return ret; Step step(step_value, step_units); step.set_unit(step_units); diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 4e2d3c17b..78259360b 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -209,9 +209,8 @@ int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - // return err; - step_units = get_step_units(h); + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + return err; unpack_long(a, &oldStep, len); @@ -347,7 +346,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; long step_units; - step_units = get_step_units(h); + if ((ret = grib_get_long_internal(h, self->step_units, &step_units))) + return ret; Step step{value, step_units}; step.hide_hour_unit(); diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 4d98c5af8..51dc3dbc1 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -38,18 +38,3 @@ bool is_future_output_enabled(grib_handle* h) { return h->context->is_future_step_format > 0; } - - -long get_step_units(grib_handle* h) -{ - int ret = 0; - long step_units = 0; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - throw std::runtime_error("Failed to get stepUnits"); - - //if (step_units == 255) { - // if((ret = grib_get_long_internal(h, "optimalStepUnits", &step_units)) != GRIB_SUCCESS) - // throw std::runtime_error("Failed to get optimalStepUnits"); - //} - return step_units; -} diff --git a/src/step_utilities.h b/src/step_utilities.h index 5cb7dd6fa..da70bec94 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -7,4 +7,3 @@ std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key); bool is_future_output_enabled(grib_handle* h); int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); -long get_step_units(grib_handle* h); From 32aceb86a08d185d834e256452bd54938d962386 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 15 Sep 2023 11:34:16 +0000 Subject: [PATCH 038/469] ECC-1620: Bug fixes --- src/grib_accessor_class_step_in_units.cc | 5 ++++- src/step.cc | 5 +++-- src/step.h | 8 +++++++- src/step_utilities.cc | 10 +++++----- src/step_utilities.h | 2 +- tests/grib_ecc-1620.sh | 13 +++++++++++++ 6 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 78259360b..868f46b24 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -191,7 +191,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) Step step{forecast_time_value, forecast_time_unit}; if ((err = grib_set_long_internal(h, "startStepUnit", UnitType{step_units}.to_long())) != GRIB_SUCCESS) - return err; + return err; *val = step.value(UnitType{step_units}); @@ -279,9 +279,12 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta Step time_range_new{}; auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); + if (time_range_opt) { auto time_range = time_range_opt.value(); time_range = time_range - (forecast_time - start_step_old); + if (time_range.value() < 0) + time_range = Step{0l, time_range.unit()}; auto [sa, sb] = find_common_units(forecast_time.optimize_unit(), time_range.optimize_unit()); if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, sa)) != GRIB_SUCCESS) return err; diff --git a/src/step.cc b/src/step.cc index 565f7b8ee..18d72a594 100644 --- a/src/step.cc +++ b/src/step.cc @@ -50,7 +50,8 @@ Step step_from_string(std::string step) if (unit.size() == 0) { unit = "h"; } - return Step{std::stod(value), UnitType{unit}}; + Step ret{std::stod(value), UnitType{unit}}; + return ret; } } throw std::runtime_error("Could not parse step: " + step); @@ -176,7 +177,7 @@ void Step::init_double(double value, const UnitType& unit) { long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); - optimize_unit(); + unit_ = unit; } Step& Step::optimize_unit() diff --git a/src/step.h b/src/step.h index a5d6d5343..481007767 100644 --- a/src/step.h +++ b/src/step.h @@ -195,7 +195,13 @@ class Step { Step operator-(const Step& step) const; bool operator>(const Step& step) const; bool operator<(const Step& step) const; - Step copy() const {return Step{internal_value_, internal_unit_};} + Step copy() const { + Step ret{}; + ret.internal_value_ = internal_value_; + ret.internal_unit_ = internal_unit_; + ret.unit_ = unit_; + return ret; + } // Methods Step& optimize_unit(); diff --git a/src/step_utilities.cc b/src/step_utilities.cc index 51dc3dbc1..d46d1900e 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -2,15 +2,15 @@ #include -std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key) +std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key) { - if (grib_is_defined(h, unit_key.c_str()) && grib_is_defined(h, value_key.c_str())) { + if (value_key && unit_key && grib_is_defined(h, unit_key) && grib_is_defined(h, value_key)) { long unit = 0; - if (grib_get_long_internal(h, unit_key.c_str(), &unit) != GRIB_SUCCESS) + if (grib_get_long_internal(h, unit_key, &unit) != GRIB_SUCCESS) return {}; long value = 0; - if (grib_get_long_internal(h, value_key.c_str(), &value) != GRIB_SUCCESS) + if (grib_get_long_internal(h, value_key, &value) != GRIB_SUCCESS) return {}; return Step(value, unit); @@ -25,7 +25,7 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un { int err; Step step_copy = step.copy(); - step_copy.optimize_unit(); + //step_copy.optimize_unit(); if ((err = grib_set_long_internal(h, value_key.c_str(), step_copy.value())) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(h, unit_key.c_str(), step_copy.unit().to_long())) != GRIB_SUCCESS) diff --git a/src/step_utilities.h b/src/step_utilities.h index da70bec94..5259a0ed3 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -4,6 +4,6 @@ #include "step.h" #include -std::optional get_step(grib_handle* h, const std::string& value_key, const std::string& unit_key); +std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key); bool is_future_output_enabled(grib_handle* h); int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 9a5dd0230..cc97118da 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -46,6 +46,19 @@ temp2=temp_2.$label +#### CHECK: check optimal units are set correctly in GRIB files +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" + +${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=m $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 2 h" +${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=h $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 180 h" + #fn="${data_dir}/reduced_gaussian_sub_area.grib2" #low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" From 5392a164b05dbde6102faa4e5c70e745dabb39bf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 19 Sep 2023 09:44:35 +0000 Subject: [PATCH 039/469] ECC-1620: Fix stepUnits --- .../grib2/template.4.forecast_time.def | 3 ++- src/grib_accessor_class_g2end_step.cc | 19 ++++++++++++++----- src/grib_accessor_class_optimal_step_units.cc | 19 +++++++++++-------- src/grib_accessor_class_step_in_units.cc | 19 +++++++++++++------ tests/grib_ecc-1620.sh | 16 ++++++++++++---- 5 files changed, 52 insertions(+), 24 deletions(-) diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 2c0372e36..837c41fa1 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -14,7 +14,8 @@ codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump #alias forecastTimeUnit = indicatorOfUnitOfTimeRange; #template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; #codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : dump; +meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; +transient forceStepUnits = 255; transient startStepUnit = 255; transient endStepUnit = 255; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 539d03b55..9b73d4c78 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -536,7 +536,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en //auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); //auto [forecast_time, time_range] = find_common_units(Step{start_step_value, step_units}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); - auto [forecast_time_opt, time_range_opt] = find_common_units(start_step, time_range); + auto [forecast_time_opt, time_range_opt] = find_common_units(start_step.optimize_unit(), time_range.optimize_unit()); if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) return err; @@ -592,12 +592,21 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret; - long end_step_unit; - if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) + long force_step_units; + if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) return ret; - if (end_step_unit == 255) - end_step_unit = UnitType{Unit::HOUR}.to_long(); + long end_step_unit; + if (force_step_units == 255) { + if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) + return ret; + + if (end_step_unit == 255) + end_step_unit = UnitType{Unit::HOUR}.to_long(); + } + else { + end_step_unit = force_step_units; + } return pack_long_(a, *val, end_step_unit); } diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 20ff3b1be..9a828e8d6 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -22,7 +22,7 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = pack_long,unpack_long;dump - IMPLEMENTS = unpack_string,unpack_string;dump + IMPLEMENTS = pack_string,unpack_string;dump IMPLEMENTS = string_length IMPLEMENTS = init MEMBERS = const char* forecast_time_value @@ -137,22 +137,24 @@ static void dump(grib_accessor* a, grib_dumper* dumper) } -//static int value_count(grib_accessor* a, long* count) -//{ - //*count = 1; - //return 0; -//} - static size_t string_length(grib_accessor* a) { return 255; } static long staticStepUnits = UnitType{Unit::MISSING}.to_long(); +static long staticForceStepUnits = UnitType{Unit::MISSING}.to_long(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { + grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + grib_handle* h = grib_handle_of_accessor(a); + + int ret; staticStepUnits = *val; + if ((ret = grib_set_long_internal(h, "forceStepUnits", *val)) != GRIB_SUCCESS) { + return ret; + } return GRIB_SUCCESS; } @@ -189,7 +191,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - staticStepUnits = UnitType{val}.to_long(); + long unit = UnitType{val}.to_long(); + pack_long(a, &unit, len); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 868f46b24..cdf8eb2bd 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -279,7 +279,7 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta Step time_range_new{}; auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); - + if (time_range_opt) { auto time_range = time_range_opt.value(); time_range = time_range - (forecast_time - start_step_old); @@ -308,15 +308,22 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret; - //long step_units = UnitType{Unit::HOUR}.to_long(); + long force_step_units; + if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) + return ret; long start_step_unit; - if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) - return ret; + if (force_step_units == 255) { + if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) + return ret; - if (start_step_unit == 255) - start_step_unit = UnitType{Unit::HOUR}.to_long(); + if (start_step_unit == 255) + start_step_unit = UnitType{Unit::HOUR}.to_long(); + } + else { + start_step_unit = force_step_units; + } ret = pack_long_new_(a, *val, start_step_unit); diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index cc97118da..8dd22a0e5 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -52,12 +52,20 @@ low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indi ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" -${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 +${tools_dir}/grib_set -s stepUnits:i=13,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" -${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=m $temp $temp2 +${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" + +${tools_dir}/grib_set -s stepUnits:i=0,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 2 h" -${tools}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=h $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 180 h" +${tools_dir}/grib_set -s stepUnits:s=m,startStep:i=60,endStep:i=180 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 2 h" + +${tools_dir}/grib_set -s stepUnits:i=1,startStep:i=60,endStep:i=180 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" +${tools_dir}/grib_set -s stepUnits:s=h,startStep:i=60,endStep:i=180 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" #fn="${data_dir}/reduced_gaussian_sub_area.grib2" From 3a39398462882e90e1cd8146df7e8cdc35cf4aaf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 19 Sep 2023 09:58:04 +0000 Subject: [PATCH 040/469] ECC-1620: Add stepUnits to MARS output --- definitions/grib1/section.1.def | 1 + definitions/grib2/products_s2s.def | 1 + definitions/grib2/template.4.localtime.def | 2 +- definitions/grib2/template.4.point_in_time.def | 1 + definitions/grib2/template.4.statistical.def | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 0a1985904..4a930af5d 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -224,6 +224,7 @@ alias ls.stepRange = stepRange; alias ls.dataDate = dataDate; alias mars.step = endStep; +alias mars.stepUnits = stepUnits; alias mars.date = dataDate; alias mars.levtype = indicatorOfTypeOfLevel; alias mars.time = dataTime; diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index 13c90fb72..a20c733ee 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -73,6 +73,7 @@ alias mars.type = marsType; # Normally MARS step is endStep but for monthly means we want stepRange if (stepType is "avg") { alias mars.step = stepRange; + alias mars.stepUnits = stepUnits; } if (isHindcast == 1) { diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index 01491217c..a9ea6a8a3 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -82,7 +82,7 @@ if (numberOfForecastsUsedInLocalTime == 1) { alias mars.date = dateOfForecastUsedInLocalTime : dump; alias mars.time = timeOfForecastUsedInLocalTime : dump; alias mars.step = endStep; - + alias mars.stepUnits = stepUnits; alias time.dataDate = dateOfForecastUsedInLocalTime; alias time.dataTime = timeOfForecastUsedInLocalTime; alias time.endStep = endStep; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index f2e8606fd..61d939991 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -7,6 +7,7 @@ alias step=startStep; alias marsStep=startStep; alias mars.step=startStep; +alias mars.stepUnits=stepUnits; alias marsStartStep = startStep; alias marsEndStep = endStep; diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 63545eea0..d68b54efd 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -112,6 +112,7 @@ if (numberOfTimeRange == 1 || numberOfTimeRange == 2) { alias ls.stepRange=stepRange; alias mars.step=endStep; +alias mars.stepUnits=stepUnits; alias time.stepType=stepType; alias time.stepRange=stepRange; From 9309bae15465127967cbef4f1a34a5cf26975dc1 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 19 Sep 2023 12:04:38 +0000 Subject: [PATCH 041/469] ECC-1620: Support decimal steps --- src/grib_accessor_class_g2end_step.cc | 152 ++++++++++++++++++++++- src/grib_accessor_class_g2step_range.cc | 77 +++++++----- src/grib_accessor_class_step_in_units.cc | 32 ++++- 3 files changed, 230 insertions(+), 31 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 9b73d4c78..83fe53247 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -20,6 +20,7 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* start_step_value // startStep @@ -61,6 +62,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -116,7 +118,7 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -267,6 +269,7 @@ static int convert_time_range_long_( } + static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -313,6 +316,55 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) } +static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + int err = 0; + double start_step_value; + long start_step_unit; + long step_units; + long time_range_unit; + double time_range_value; + long typeOfTimeIncrement; + int add_time_range = 1; /* whether we add lengthOfTimeRange */ + + grib_handle* h = grib_handle_of_accessor(a); + + if ((err = grib_get_double_internal(h, self->start_step_value, &start_step_value))) + return err; + if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) + return err; + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + return err; + if ((err = grib_get_long_internal(h, self->time_range_unit, &time_range_unit))) + return err; + if ((err = grib_get_double_internal(h, self->time_range_value, &time_range_value))) + return err; + if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) + return err; + + Step start_step{start_step_value, start_step_unit}; + Step time_range{time_range_value, time_range_unit}; + + if (typeOfTimeIncrement == 1) { + /* See GRIB-488 */ + /* Note: For this case, lengthOfTimeRange is not related to step and should not be used to calculate step */ + add_time_range = 0; + if (is_special_expver(h)) { + add_time_range = 1; + } + } + if (add_time_range) { + *val = (start_step + time_range).value(UnitType(step_units)); + } + else { + *val = start_step.value(UnitType(start_step_unit)); + } + + return GRIB_SUCCESS; +} + + #define MAX_NUM_TIME_RANGES 16 /* maximum number of time range specifications */ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t* len) { @@ -368,6 +420,69 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t } + +static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + int i = 0, err = 0; + grib_handle* h = grib_handle_of_accessor(a); + long numberOfTimeRange = 0; + long step_units = 0; + long start_step_value = 0; + long start_step_unit = 0; + + size_t count = 0; + long arr_typeOfTimeIncrement[MAX_NUM_TIME_RANGES] = {0, }; + long arr_coded_unit[MAX_NUM_TIME_RANGES] = {0, }; + long arr_coded_time_range[MAX_NUM_TIME_RANGES] = {0, }; + + if ((err = grib_get_long_internal(h, self->start_step_value, &start_step_value))) + return err; + if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) + return err; + + Step start_step{start_step_value, start_step_unit}; + + if ((err = grib_get_long_internal(h, self->step_units, &step_units))) + return err; + + if ((err = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) + return err; + if (numberOfTimeRange > MAX_NUM_TIME_RANGES) { + grib_context_log(h->context, GRIB_LOG_ERROR, "Too many time range specifications!"); + return GRIB_DECODING_ERROR; + } + + count = numberOfTimeRange; + /* Get the arrays for the N time ranges */ + if ((err = grib_get_long_array(h, self->typeOfTimeIncrement, arr_typeOfTimeIncrement, &count))) + return err; + if ((err = grib_get_long_array(h, self->time_range_unit, arr_coded_unit, &count))) + return err; + if ((err = grib_get_long_array(h, self->time_range_value, arr_coded_time_range, &count))) + return err; + + /* Look in the array of typeOfTimeIncrements for first entry whose typeOfTimeIncrement == 2 */ + for (i = 0; i < count; i++) { + if (arr_typeOfTimeIncrement[i] == 2) { + /* Found the required time range. Get the other two keys from it */ + long the_coded_unit = arr_coded_unit[i]; + long the_coded_time_range = arr_coded_time_range[i]; + + Step time_range{the_coded_unit, the_coded_time_range}; + *val = (start_step + time_range).value(UnitType(step_units)); + + return GRIB_SUCCESS; + } + } + + grib_context_log(h->context, GRIB_LOG_ERROR, + "Cannot calculate endStep. No time range specification with typeOfTimeIncrement = 2"); + return GRIB_DECODING_ERROR; +} + + + // For the old implementation of unpack_long, see // src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc // @@ -406,6 +521,41 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + long start_step_value; + long numberOfTimeRange; + + if ((ret = grib_get_long_internal(h, self->start_step_value, &start_step_value))) + return ret; + + /* point in time */ + if (self->year == NULL) { + *val = start_step_value; + return 0; + } + + Assert(self->numberOfTimeRange); + if ((ret = grib_get_long_internal(h, self->numberOfTimeRange, &numberOfTimeRange))) + return ret; + Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); + + if (numberOfTimeRange == 1) { + ret = unpack_one_time_range_double_(a, val, len); + return ret; + } + else { + ret = unpack_multiple_time_ranges_double_(a, val, len); + return ret; + } + + return GRIB_SUCCESS; +} + + static int pack_long_(grib_accessor* a, const long end_step_value, const long end_step_unit) { diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 580452eca..da5917860 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -140,11 +140,11 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[100]; int ret = 0; size_t size = 0; - long start_step_value = 0; - long end_step_value = 0; + double start_step_value = 0; + double end_step_value = 0; long step_units; - if ((ret = grib_get_long_internal(h, self->start_step, &start_step_value)) != GRIB_SUCCESS) + if ((ret = grib_get_double_internal(h, self->start_step, &start_step_value)) != GRIB_SUCCESS) return ret; if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; @@ -157,36 +157,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step start_step{start_step_value, step_units}; start_step.hide_hour_unit(); if (self->end_step == NULL) { - //if (is_future_output_enabled(h)) { - snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); - //} - //else { - // snprintf(buf, sizeof(buf), "%ld", start_step_value); - //} + snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); } else { - if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - //if (is_future_output_enabled(h)) { - Step end_step{end_step_value, step_units}; - end_step.hide_hour_unit(); - if (start_step_value == end_step_value) { - snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); - } - else { - snprintf(buf, sizeof(buf), "%s-%s", start_step.to_string().c_str(), end_step.to_string().c_str()); - } - //} - //else { - // if (start_step_value == end_step_value) { - // snprintf(buf, sizeof(buf), "%ld", end_step_value); - // } - // else { - // snprintf(buf, sizeof(buf), "%ld-%ld", start_step_value, end_step_value); - // } - //} - + Step end_step{end_step_value, step_units}; + end_step.hide_hour_unit(); + if (start_step_value == end_step_value) { + snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); + } + else { + snprintf(buf, sizeof(buf), "%s-%s", start_step.to_string().c_str(), end_step.to_string().c_str()); + } } size = strlen(buf) + 1; @@ -320,6 +304,41 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } + +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h = grib_handle_of_accessor(a); + int ret = 0; + double end_start_value = 0; + double end_step_value = 0; + long step_units = 0; + + if ((ret = grib_get_double_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + throw std::runtime_error("Failed to get stepUnits"); + if (step_units == 255) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } + + Step start_step{end_start_value, step_units}; + start_step.hide_hour_unit(); + if (self->end_step == NULL) { + *val = start_step.value(); + } + else { + if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + return ret; + Step end_step{end_step_value, step_units}; + *val = end_step.value(); + } + + return GRIB_SUCCESS; +} + + static int get_native_type(grib_accessor* a) { return GRIB_TYPE_STRING; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index cdf8eb2bd..678a28bcf 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -19,6 +19,7 @@ CLASS = accessor SUPER = grib_accessor_class_long IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump MEMBERS = const char* forecast_time_value @@ -44,6 +45,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -86,7 +88,7 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -199,6 +201,34 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } + +static int unpack_double(grib_accessor* a, double * val, size_t* len) +{ + grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + int err = 0; + long forecast_time_value, forecast_time_unit, step_units; + grib_handle* h = grib_handle_of_accessor(a); + int factor = 0; + long u2sf, u2sf_step_unit; + + if ((err= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) + return err; + if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) + return err; + + Step step{forecast_time_value, forecast_time_unit}; + + if ((err = grib_set_long_internal(h, "startStepUnit", UnitType{step_units}.to_long())) != GRIB_SUCCESS) + return err; + + *val = step.value(UnitType{step_units}); + + return GRIB_SUCCESS; +} + + int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); From 0bd065768096b0aa585399f675ea03559ee3892d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 20 Sep 2023 13:56:38 +0000 Subject: [PATCH 042/469] ECC-1620: Format decimal values --- definitions/boot.def | 1 + definitions/grib2/boot.def | 1 + .../grib2/template.4.forecast_time.def | 5 +-- src/grib_accessor_class_g2end_step.cc | 27 +++++++++---- src/grib_accessor_class_g2step_range.cc | 22 +++++----- src/grib_accessor_class_step_in_units.cc | 38 +++++++++++------- src/step.cc | 2 + src/step.h | 40 ++++++++----------- tests/grib_ecc-1212.sh | 1 + tests/grib_mars_keys.sh | 2 + tools/grib_options.cc | 2 +- tools/grib_tools.cc | 27 +++++++------ 12 files changed, 98 insertions(+), 70 deletions(-) diff --git a/definitions/boot.def b/definitions/boot.def index 22edf96e1..683f21a37 100644 --- a/definitions/boot.def +++ b/definitions/boot.def @@ -52,6 +52,7 @@ transient unitsFactor=1 : hidden; transient unitsBias=0 : hidden; constant globalDomain = "g"; transient timeRangeIndicatorFromStepRange=-1 : hidden; +transient format = "%g" : hidden; # ECC-868 transient produceLargeConstantFields = 0 : hidden; diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 0a16b2893..4157806d2 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -42,3 +42,4 @@ template core "grib2/sections.def"; #} template section_8 "grib2/section.8.def"; +transient forceStepUnits = 255 : hidden; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 837c41fa1..d8c8b8cce 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -15,9 +15,8 @@ codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump #template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; #codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; -transient forceStepUnits = 255; -transient startStepUnit = 255; -transient endStepUnit = 255; +transient startStepUnit = 255 : hidden; +transient endStepUnit = 255 : hidden; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 83fe53247..b5e814172 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -625,7 +625,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%s < %s)", end_step.to_string().c_str(), start_step.to_string().c_str()); + "endStep < startStep (%s < %s)", end_step.to_string("%g").c_str(), start_step.to_string("%g").c_str()); return GRIB_WRONG_STEP; } @@ -716,22 +716,35 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + size_t fp_format_len = 128; + char fp_format[128]; + size_t step_len = 0; + long step_value; + long step_units; - long step_value; - size_t step_len = 0; if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; - - long step_units; if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) return ret; + if ((ret = grib_get_string_internal(h, "format", fp_format, &fp_format_len)) != GRIB_SUCCESS) + return ret; Step step(step_value, step_units); step.set_unit(step_units); - step.hide_hour_unit(); - snprintf(val, *len, "%s", step.to_string().c_str()); + std::stringstream ss; + + ss << step.to_string(fp_format); + + size_t size = ss.str().size() + 1; + + if (*len < size) + return GRIB_ARRAY_TOO_SMALL; + + *len = size; + + memcpy(val, ss.str().c_str(), size); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index da5917860..3d4e61228 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -16,6 +16,7 @@ #include "step.h" #include "step_utilities.h" #include +#include /* This is used by make_class.pl @@ -154,33 +155,38 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } + size_t fp_format_len = 128; + char fp_format[128]; + if ((ret = grib_get_string_internal(h, "format", fp_format, &fp_format_len)) != GRIB_SUCCESS) + return ret; + std::stringstream ss; + Step start_step{start_step_value, step_units}; - start_step.hide_hour_unit(); if (self->end_step == NULL) { - snprintf(buf, sizeof(buf), "%s", start_step.to_string().c_str()); + ss << start_step.to_string(fp_format); } else { if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; Step end_step{end_step_value, step_units}; - end_step.hide_hour_unit(); + if (start_step_value == end_step_value) { - snprintf(buf, sizeof(buf), "%s", end_step.to_string().c_str()); + ss << end_step.to_string(fp_format); } else { - snprintf(buf, sizeof(buf), "%s-%s", start_step.to_string().c_str(), end_step.to_string().c_str()); + ss << start_step.to_string(fp_format) << "-" << end_step.to_string(fp_format); } } - size = strlen(buf) + 1; + size = ss.str().size() + 1; if (*len < size) return GRIB_ARRAY_TOO_SMALL; *len = size; - memcpy(val, buf, size); + memcpy(val, ss.str().c_str(), size); return GRIB_SUCCESS; } @@ -290,7 +296,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } Step start_step{end_start_value, step_units}; - start_step.hide_hour_unit(); if (self->end_step == NULL) { *val = start_step.value(); } @@ -324,7 +329,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } Step start_step{end_start_value, step_units}; - start_step.hide_hour_unit(); if (self->end_step == NULL) { *val = start_step.value(); } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 678a28bcf..74f2cce34 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -380,25 +380,35 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - long value; - size_t value_len; - if ((ret = unpack_long(a, &value, &value_len)) != GRIB_SUCCESS) - return ret; - + long start_step_value; + long start_step_unit; long step_units; + size_t fp_format_len = 128; + char fp_format[128]; + + if ((ret = grib_get_long_internal(h, "startStep", &start_step_value)) != GRIB_SUCCESS) + return ret; + if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) + return ret; if ((ret = grib_get_long_internal(h, self->step_units, &step_units))) return ret; + if ((ret = grib_get_string_internal(h, "format", fp_format, &fp_format_len)) != GRIB_SUCCESS) + return ret; + + Step step{start_step_value, start_step_unit}; + std::stringstream ss; + + ss << step.to_string(fp_format); + + size_t size = ss.str().size() + 1; + + if (*len < size) + return GRIB_ARRAY_TOO_SMALL; + + *len = size; - Step step{value, step_units}; - step.hide_hour_unit(); - //snprintf(val, *len, "%ld", value); + memcpy(val, ss.str().c_str(), size); - //if (is_future_output_enabled(h)) { - snprintf(val, *len, "%s", step.to_string().c_str()); - //} - //else { - // snprintf(val, *len, "%ld", step.value()); - //} return GRIB_SUCCESS; } diff --git a/src/step.cc b/src/step.cc index 18d72a594..f4f710561 100644 --- a/src/step.cc +++ b/src/step.cc @@ -170,6 +170,7 @@ void Step::init_long(long value, const UnitType& unit) internal_value_ = value; internal_unit_ = unit; unit_ = internal_unit_; + //unit_.hide_hour_unit(); sanity_check(); } @@ -178,6 +179,7 @@ void Step::init_double(double value, const UnitType& unit) long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); unit_ = unit; + //unit_.hide_hour_unit(); } Step& Step::optimize_unit() diff --git a/src/step.h b/src/step.h index 481007767..ed5d9b69c 100644 --- a/src/step.h +++ b/src/step.h @@ -73,22 +73,15 @@ class UnitType { } std::string to_string() const { - if ((internal_value_ == Unit::HOUR) && hide_hour_unit_) { - return ""; - } - else { - return map_.unit_to_name(internal_value_); - } + return map_.unit_to_name(internal_value_); } + long to_long() const {return map_.unit_to_long(internal_value_);} Unit to_value() const {return internal_value_;} - void hide_hour_unit() {hide_hour_unit_ = true;} - void show_hour_unit() {hide_hour_unit_ = false;} static std::vector unit_order_; static std::vector complete_unit_order_; private: - bool hide_hour_unit_ = false; class Map { public: Map() { @@ -206,23 +199,22 @@ class Step { // Methods Step& optimize_unit(); friend std::pair find_common_units(const Step& startStep, const Step& endStep); - void hide_hour_unit() { - internal_unit_.hide_hour_unit(); - unit_.hide_hour_unit(); - } - void show_hour_unit() { - internal_unit_.show_hour_unit(); - unit_.show_hour_unit(); - } - std::string to_string() const { - std::stringstream ss; - if (value() == value()) { - ss << value() << unit_.to_string(); - } else { - ss << value() << unit_.to_string(); + std::string to_string(const std::string& format) const { + constexpr int max_size = 128; + char output[max_size]; + std::string u; + + if (unit_ == Unit::HOUR) + u = ""; + else + u = unit_.to_string(); + + int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); + if (err < 0 || err >= max_size) { + throw std::runtime_error("Error while formatting Step to string"); } - return ss.str(); + return output; } private: diff --git a/tests/grib_ecc-1212.sh b/tests/grib_ecc-1212.sh index 7ae426756..286e9c0de 100755 --- a/tests/grib_ecc-1212.sh +++ b/tests/grib_ecc-1212.sh @@ -59,6 +59,7 @@ cat > $tempRef < $tempRef << EOF "class": "od", "type": "an", "stream": "oper", + "stepUnits": "h", "step": 0, "levelist": 1000, "levtype": "pl", @@ -58,6 +59,7 @@ cat > $tempRef << EOF "class": "od", "type": "pf", "stream": "enfo", + "stepUnits": "h", "step": 0, "levelist": 1000, "levtype": "pl", diff --git a/tools/grib_options.cc b/tools/grib_options.cc index 0d77dc67d..2ed00ebb1 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -232,7 +232,7 @@ int grib_process_runtime_options(grib_context* context, int argc, char** argv, g if (grib_options_on("F:")) options->format = grib_options_get_option("F:"); else - options->format = strdup("%g"); + options->format = NULL; if (grib_options_on("i:")) { options->index_on = 1; diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 7b008ad3f..7ac2c2256 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -363,6 +363,7 @@ static int grib_tool_without_orderby(grib_runtime_options* options) while (!options->skip_all && ((h = grib_handle_new_from_file_x(c, infile->file, options->mode, options->headers_only, &err)) != NULL || err != GRIB_SUCCESS)) { + infile->handle_count++; options->handle_count++; @@ -412,6 +413,19 @@ static int grib_tool_without_orderby(grib_runtime_options* options) grib_set_string(h, "stepOutputFormat", options->step_output_format, &step_output_format_size); } + if (options->format != NULL) { + size_t format_len = strlen(options->format); + if ((err = grib_set_string_internal(h, "format", options->format, &format_len)) != GRIB_SUCCESS) + return err; + } + else { + char format[1024]; + size_t format_len = sizeof(format); + if ((err = grib_get_string_internal(h, "format", format, &format_len)) != GRIB_SUCCESS) + return err; + options->format = strdup(format); + } + grib_tool_new_handle_action(options, h); grib_print_key_values(options, h); @@ -1201,18 +1215,7 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) break; case GRIB_TYPE_LONG: ret = grib_get_long(h, options->print_keys[i].name, &lvalue); - //if ( - // (strcmp(options->print_keys[i].name, "indicatorOfUnitOfTimeRange") == 0) || - // (strcmp(options->print_keys[i].name, "indicatorOfUnitForTimeRange") == 0) && - // (strcmp(options->step_output_format, "future") == 0) - //) - //{ - // snprintf(value, 32, "%s", StepUnitsTable::to_str(lvalue).c_str()); - //} - //else - //{ - snprintf(value, 32, "%ld", lvalue); - //} + snprintf(value, 32, "%ld", lvalue); break; case GRIB_TYPE_BYTES: ret = grib_get_string(h, options->print_keys[i].name, value, &len); From b842df4fdfb6be8d0ed8333e56c37128679db2a2 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 20 Sep 2023 14:55:57 +0000 Subject: [PATCH 043/469] ECC-1620: Separate step value and step unit --- src/CMakeLists.txt | 1 + src/step.cc | 30 ---------- src/step.h | 142 +------------------------------------------ src/step_unit.cc | 29 +++++++++ src/step_unit.h | 146 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 177 insertions(+), 171 deletions(-) create mode 100644 src/step_unit.cc create mode 100644 src/step_unit.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8868d07fe..be8196605 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,6 +10,7 @@ # list( APPEND eccodes_src_files step.cc + step_unit.cc step_utilities.cc grib_api.h grib_timer.cc diff --git a/src/step.cc b/src/step.cc index f4f710561..3bb34cc00 100644 --- a/src/step.cc +++ b/src/step.cc @@ -10,34 +10,6 @@ #include "step.h" -UnitType::Map UnitType::map_{}; - - -std::vector UnitType::unit_order_ = { - Unit::SECOND, - Unit::MINUTE, - Unit::HOUR, - //Unit::DAY, -}; - -std::vector UnitType::complete_unit_order_ = { - Unit::MISSING , - Unit::SECOND , - Unit::MINUTE , - Unit::MINUTES15 , - Unit::MINUTES30 , - Unit::HOUR , - Unit::HOURS3 , - Unit::HOURS6 , - Unit::HOURS12 , - Unit::DAY , - Unit::MONTH , - Unit::YEAR , - Unit::YEARS10 , - Unit::YEARS30 , - Unit::CENTURY -}; - Step step_from_string(std::string step) { @@ -170,7 +142,6 @@ void Step::init_long(long value, const UnitType& unit) internal_value_ = value; internal_unit_ = unit; unit_ = internal_unit_; - //unit_.hide_hour_unit(); sanity_check(); } @@ -179,7 +150,6 @@ void Step::init_double(double value, const UnitType& unit) long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); unit_ = unit; - //unit_.hide_hour_unit(); } Step& Step::optimize_unit() diff --git a/src/step.h b/src/step.h index ed5d9b69c..001239a66 100644 --- a/src/step.h +++ b/src/step.h @@ -5,155 +5,15 @@ #include #include #include -#include #include #include -#include #include #include #include #include #include - -template using Minutes = std::chrono::duration>; -template using Hours = std::chrono::duration>; -template using Days = std::chrono::duration>; -template using Months = std::chrono::duration>; -template using Years = std::chrono::duration>; -template using Years10 = std::chrono::duration>; -template using Years30 = std::chrono::duration>; -template using Centuries = std::chrono::duration>; -template using Hours3 = std::chrono::duration>; -template using Hours6 = std::chrono::duration>; -template using Hours12 = std::chrono::duration>; -template using Seconds = std::chrono::duration>; -template using Minutes15 = std::chrono::duration>; -template using Minutes30 = std::chrono::duration>; -template using Missing = std::chrono::duration>; - -enum class Unit { - MINUTE = 0, - HOUR = 1, - DAY = 2, - MONTH = 3, - YEAR = 4, - YEARS10 = 5, - YEARS30 = 6, - CENTURY = 7, - HOURS3 = 10, - HOURS6 = 11, - HOURS12 = 12, - SECOND = 13, - MINUTES15 = 14, - MINUTES30 = 15, - MISSING = 255, -}; - -class UnitType; -template Seconds to_seconds(long value, const UnitType& unit); -template T from_seconds(Seconds seconds, const UnitType& unit); - -class UnitType { -public: - UnitType() : internal_value_(Unit::HOUR) {} - explicit UnitType(Unit unit_value) : internal_value_(unit_value) {} - explicit UnitType(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} - explicit UnitType(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} - - bool operator>(const UnitType& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} - bool operator==(const Unit value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} - bool operator==(const UnitType& unit) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(unit.internal_value_);} - bool operator!=(const UnitType& unit) const {return !(*this == unit);} - bool operator!=(const Unit value) const {return !(*this == value);} - - UnitType& operator=(const Unit value) { - internal_value_ = value; - return *this; - } - - std::string to_string() const { - return map_.unit_to_name(internal_value_); - } - - long to_long() const {return map_.unit_to_long(internal_value_);} - Unit to_value() const {return internal_value_;} - static std::vector unit_order_; - static std::vector complete_unit_order_; - -private: - class Map { - public: - Map() { - for (const auto& entry : tab_) { - // unit_value <-> unit_name - name_to_value_[entry.unit_name] = entry.unit_value; - value_to_name_[entry.unit_value] = entry.unit_name; - - // unit_value <-> duration in seconds - value_to_duration_[entry.unit_value] = entry.duration; - duration_to_value_[entry.duration] = entry.unit_value; - - // unit_value <-> wmo_code - value_to_long_[entry.unit_value] = static_cast(entry.unit_value); - long_to_value_[static_cast(entry.unit_value)] = entry.unit_value; - } - } - - // wmo_code <-> unit_name - std::string unit_to_name(const Unit& unit_value) const {return value_to_name_.at(unit_value);} - Unit name_to_unit(const std::string& name) const {return name_to_value_.at(name);} - - // unit_value <-> duration - long unit_to_duration(const Unit& unit_value) const {return value_to_duration_.at(unit_value);} - Unit duration_to_unit(long duration) const {return duration_to_value_.at(duration);} - - // wmo_code <-> unit_name - long unit_to_long(const Unit& unit_value) const {return value_to_long_.at(unit_value);} - Unit long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} - - private: - struct Entry { - Unit unit_value; - std::string unit_name; - long duration; - }; - - const std::array tab_ = { - Entry{Unit::MISSING , "MISSING" , 0}, - Entry{Unit::SECOND , "s" , 1}, - Entry{Unit::MINUTE , "m" , 60}, - Entry{Unit::MINUTES15 , "15m" , 900}, - Entry{Unit::MINUTES30 , "30m" , 1800}, - Entry{Unit::HOUR , "h" , 3600}, - Entry{Unit::HOURS3 , "3h" , 10800}, - Entry{Unit::HOURS6 , "6h" , 21600}, - Entry{Unit::HOURS12 , "12h" , 43200}, - Entry{Unit::DAY , "D" , 86400}, - Entry{Unit::MONTH , "M" , 2592000}, - Entry{Unit::YEAR , "Y" , 31536000}, - Entry{Unit::YEARS10 , "10Y" , 315360000}, - Entry{Unit::YEARS30 , "30Y" , 946080000}, - Entry{Unit::CENTURY , "C" , 3153600000}, - }; - - std::unordered_map name_to_value_; - std::unordered_map value_to_name_; - - std::unordered_map value_to_long_; - std::unordered_map long_to_value_; - - std::unordered_map value_to_duration_; - std::unordered_map duration_to_value_; - }; - - - Unit internal_value_; - static Map map_; -public: - static Map& get_converter() {return map_;} -}; - +#include "step_unit.h" class Step { public: diff --git a/src/step_unit.cc b/src/step_unit.cc new file mode 100644 index 000000000..2dd4c0812 --- /dev/null +++ b/src/step_unit.cc @@ -0,0 +1,29 @@ +#include "step_unit.h" + +UnitType::Map UnitType::map_{}; + +std::vector UnitType::unit_order_ = { + Unit::SECOND, + Unit::MINUTE, + Unit::HOUR, + //Unit::DAY, +}; + +std::vector UnitType::complete_unit_order_ = { + Unit::MISSING , + Unit::SECOND , + Unit::MINUTE , + Unit::MINUTES15 , + Unit::MINUTES30 , + Unit::HOUR , + Unit::HOURS3 , + Unit::HOURS6 , + Unit::HOURS12 , + Unit::DAY , + Unit::MONTH , + Unit::YEAR , + Unit::YEARS10 , + Unit::YEARS30 , + Unit::CENTURY +}; + diff --git a/src/step_unit.h b/src/step_unit.h new file mode 100644 index 000000000..587ae2898 --- /dev/null +++ b/src/step_unit.h @@ -0,0 +1,146 @@ +#pragma once + +#include +#include +#include +#include +#include + +template using Minutes = std::chrono::duration>; +template using Hours = std::chrono::duration>; +template using Days = std::chrono::duration>; +template using Months = std::chrono::duration>; +template using Years = std::chrono::duration>; +template using Years10 = std::chrono::duration>; +template using Years30 = std::chrono::duration>; +template using Centuries = std::chrono::duration>; +template using Hours3 = std::chrono::duration>; +template using Hours6 = std::chrono::duration>; +template using Hours12 = std::chrono::duration>; +template using Seconds = std::chrono::duration>; +template using Minutes15 = std::chrono::duration>; +template using Minutes30 = std::chrono::duration>; +template using Missing = std::chrono::duration>; + + +enum class Unit { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, +}; + +class UnitType; +template Seconds to_seconds(long value, const UnitType& unit); +template T from_seconds(Seconds seconds, const UnitType& unit); + +class UnitType { +public: + UnitType() : internal_value_(Unit::HOUR) {} + explicit UnitType(Unit unit_value) : internal_value_(unit_value) {} + explicit UnitType(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} + explicit UnitType(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} + + bool operator>(const UnitType& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} + bool operator==(const Unit value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} + bool operator==(const UnitType& unit) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(unit.internal_value_);} + bool operator!=(const UnitType& unit) const {return !(*this == unit);} + bool operator!=(const Unit value) const {return !(*this == value);} + + UnitType& operator=(const Unit value) { + internal_value_ = value; + return *this; + } + + std::string to_string() const { + return map_.unit_to_name(internal_value_); + } + + long to_long() const {return map_.unit_to_long(internal_value_);} + Unit to_value() const {return internal_value_;} + static std::vector unit_order_; + static std::vector complete_unit_order_; + +private: + class Map { + public: + Map() { + for (const auto& entry : tab_) { + // unit_value <-> unit_name + name_to_value_[entry.unit_name] = entry.unit_value; + value_to_name_[entry.unit_value] = entry.unit_name; + + // unit_value <-> duration in seconds + value_to_duration_[entry.unit_value] = entry.duration; + duration_to_value_[entry.duration] = entry.unit_value; + + // unit_value <-> wmo_code + value_to_long_[entry.unit_value] = static_cast(entry.unit_value); + long_to_value_[static_cast(entry.unit_value)] = entry.unit_value; + } + } + + // wmo_code <-> unit_name + std::string unit_to_name(const Unit& unit_value) const {return value_to_name_.at(unit_value);} + Unit name_to_unit(const std::string& name) const {return name_to_value_.at(name);} + + // unit_value <-> duration + long unit_to_duration(const Unit& unit_value) const {return value_to_duration_.at(unit_value);} + Unit duration_to_unit(long duration) const {return duration_to_value_.at(duration);} + + // wmo_code <-> unit_name + long unit_to_long(const Unit& unit_value) const {return value_to_long_.at(unit_value);} + Unit long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} + + private: + struct Entry { + Unit unit_value; + std::string unit_name; + long duration; + }; + + const std::array tab_ = { + Entry{Unit::MISSING , "MISSING" , 0}, + Entry{Unit::SECOND , "s" , 1}, + Entry{Unit::MINUTE , "m" , 60}, + Entry{Unit::MINUTES15 , "15m" , 900}, + Entry{Unit::MINUTES30 , "30m" , 1800}, + Entry{Unit::HOUR , "h" , 3600}, + Entry{Unit::HOURS3 , "3h" , 10800}, + Entry{Unit::HOURS6 , "6h" , 21600}, + Entry{Unit::HOURS12 , "12h" , 43200}, + Entry{Unit::DAY , "D" , 86400}, + Entry{Unit::MONTH , "M" , 2592000}, + Entry{Unit::YEAR , "Y" , 31536000}, + Entry{Unit::YEARS10 , "10Y" , 315360000}, + Entry{Unit::YEARS30 , "30Y" , 946080000}, + Entry{Unit::CENTURY , "C" , 3153600000}, + }; + + std::unordered_map name_to_value_; + std::unordered_map value_to_name_; + + std::unordered_map value_to_long_; + std::unordered_map long_to_value_; + + std::unordered_map value_to_duration_; + std::unordered_map duration_to_value_; + }; + + + Unit internal_value_; + static Map map_; +public: + static Map& get_converter() {return map_;} +}; From 0a1b650ba268337f16211251751db5244644a4bf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 20 Sep 2023 15:07:20 +0000 Subject: [PATCH 044/469] ECC-1620: Refactoring of unit --- src/grib_accessor_class_g2end_step.cc | 10 +- src/grib_accessor_class_optimal_step_units.cc | 11 +- src/grib_accessor_class_step_in_units.cc | 10 +- src/step.cc | 20 +-- src/step.h | 104 +++++++------- src/step_unit.cc | 44 +++--- src/step_unit.h | 131 +++++++++--------- 7 files changed, 165 insertions(+), 165 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index b5e814172..4e04e3714 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -355,10 +355,10 @@ static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* } } if (add_time_range) { - *val = (start_step + time_range).value(UnitType(step_units)); + *val = (start_step + time_range).value(Unit(step_units)); } else { - *val = start_step.value(UnitType(start_step_unit)); + *val = start_step.value(Unit(start_step_unit)); } return GRIB_SUCCESS; @@ -470,7 +470,7 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si long the_coded_time_range = arr_coded_time_range[i]; Step time_range{the_coded_unit, the_coded_time_range}; - *val = (start_step + time_range).value(UnitType(step_units)); + *val = (start_step + time_range).value(Unit(step_units)); return GRIB_SUCCESS; } @@ -633,7 +633,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (err != GRIB_SUCCESS) return err; - dstep = end_step.value(UnitType{Unit::DAY}); + dstep = end_step.value(Unit{Unit::Value::DAY}); dend += dstep; err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, @@ -765,7 +765,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; if (end_step_unit == 255) - end_step_unit = UnitType{Unit::HOUR}.to_long(); + end_step_unit = Unit{Unit::Value::HOUR}.to_long(); } else { end_step_unit = force_step_units; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 9a828e8d6..f09b61f38 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -142,8 +142,8 @@ static size_t string_length(grib_accessor* a) return 255; } -static long staticStepUnits = UnitType{Unit::MISSING}.to_long(); -static long staticForceStepUnits = UnitType{Unit::MISSING}.to_long(); +static long staticStepUnits = Unit{Unit::Value::MISSING}.to_long(); +static long staticForceStepUnits = Unit{Unit::Value::MISSING}.to_long(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { @@ -183,7 +183,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) *val = time_range_opt.value().optimize_unit().unit().to_long(); } else if (!forecast_time_opt && !time_range_opt) { - *val = UnitType{Unit::HOUR}.to_long(); + *val = Unit{Unit::Value::HOUR}.to_long(); } return GRIB_SUCCESS; @@ -191,7 +191,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - long unit = UnitType{val}.to_long(); + long unit = Unit{val}.to_long(); pack_long(a, &unit, len); return GRIB_SUCCESS; } @@ -203,11 +203,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t unit_len = 0; if ((ret = unpack_long(a, &unit, &unit_len)) != GRIB_SUCCESS) return ret; - *len = snprintf(val, *len, "%s", UnitType{unit}.to_string().c_str()); + *len = snprintf(val, *len, "%s", Unit{unit}.to_string().c_str()); return GRIB_SUCCESS; } - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 74f2cce34..1de9d5540 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -192,10 +192,10 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", UnitType{step_units}.to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.to_long())) != GRIB_SUCCESS) return err; - *val = step.value(UnitType{step_units}); + *val = step.value(Unit{step_units}); return GRIB_SUCCESS; } @@ -220,10 +220,10 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", UnitType{step_units}.to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.to_long())) != GRIB_SUCCESS) return err; - *val = step.value(UnitType{step_units}); + *val = step.value(Unit{step_units}); return GRIB_SUCCESS; } @@ -349,7 +349,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; if (start_step_unit == 255) - start_step_unit = UnitType{Unit::HOUR}.to_long(); + start_step_unit = Unit{Unit::Value::HOUR}.to_long(); } else { start_step_unit = force_step_units; diff --git a/src/step.cc b/src/step.cc index 3bb34cc00..a61bc6dfa 100644 --- a/src/step.cc +++ b/src/step.cc @@ -22,7 +22,7 @@ Step step_from_string(std::string step) if (unit.size() == 0) { unit = "h"; } - Step ret{std::stod(value), UnitType{unit}}; + Step ret{std::stod(value), Unit{unit}}; return ret; } } @@ -93,7 +93,7 @@ std::pair find_common_units(const Step& startStep, const Step& endSt Step b = endStep; if (a.internal_value_ == 0 && b.internal_value_ == 0) { - UnitType unit = a.internal_unit_ > b.internal_unit_ ? a.internal_unit_ : b.internal_unit_; + Unit unit = a.internal_unit_ > b.internal_unit_ ? a.internal_unit_ : b.internal_unit_; b.internal_unit_ = unit; b.unit_ = unit; a.internal_unit_ = unit; @@ -112,11 +112,11 @@ std::pair find_common_units(const Step& startStep, const Step& endSt b.recalculateValue(); } else { - auto it = std::find_if(UnitType::unit_order_.begin(), UnitType::unit_order_.end(), [&](const auto& e) { + auto it = std::find_if(Unit::unit_order_.begin(), Unit::unit_order_.end(), [&](const auto& e) { return e == a.unit().to_value() || e == b.unit().to_value(); }); - assert(it != UnitType::unit_order_.end()); + assert(it != Unit::unit_order_.end()); a.set_unit(*it); b.set_unit(*it); @@ -137,7 +137,7 @@ void Step::sanity_check() const } -void Step::init_long(long value, const UnitType& unit) +void Step::init_long(long value, const Unit& unit) { internal_value_ = value; internal_unit_ = unit; @@ -145,10 +145,10 @@ void Step::init_long(long value, const UnitType& unit) sanity_check(); } -void Step::init_double(double value, const UnitType& unit) +void Step::init_double(double value, const Unit& unit) { - long seconds = UnitType::get_converter().unit_to_duration(unit.to_value()); - init_long(static_cast(value * seconds), UnitType{Unit::SECOND}); + long seconds = Unit::get_converter().unit_to_duration(unit.to_value()); + init_long(static_cast(value * seconds), Unit{Unit::Value::SECOND}); unit_ = unit; } @@ -161,8 +161,8 @@ Step& Step::optimize_unit() unit_ = internal_unit_; Seconds seconds = to_seconds(internal_value_, internal_unit_); - for (auto it = UnitType::unit_order_.rbegin(); it != UnitType::unit_order_.rend(); ++it) { - long multiplier = UnitType::get_converter().unit_to_duration(*it); + for (auto it = Unit::unit_order_.rbegin(); it != Unit::unit_order_.rend(); ++it) { + long multiplier = Unit::get_converter().unit_to_duration(*it); if (seconds.count() % multiplier == 0) { internal_value_ = seconds.count() / multiplier; internal_unit_ = *it; diff --git a/src/step.h b/src/step.h index 001239a66..261d9edb8 100644 --- a/src/step.h +++ b/src/step.h @@ -18,28 +18,28 @@ class Step { public: // Constructors - Step() : internal_value_(0), internal_unit_(Unit::SECOND) {} + Step() : internal_value_(0), internal_unit_(Unit::Value::SECOND) {} - Step(double value, const UnitType& unit) : internal_unit_{unit}, unit_{internal_unit_} {init_double(value, unit);} - Step(double value, Unit unit) {init_double(value, UnitType{unit});} - Step(double value, long unit) {init_double(value, UnitType{unit});} - Step(double value, const std::string& unit) {init_double(value, UnitType{unit});} + Step(double value, const Unit& unit) : internal_unit_{unit}, unit_{internal_unit_} {init_double(value, unit);} + Step(double value, Unit::Value unit) {init_double(value, Unit{unit});} + Step(double value, long unit) {init_double(value, Unit{unit});} + Step(double value, const std::string& unit) {init_double(value, Unit{unit});} - Step(long value, const UnitType& unit) { init_long(value, unit);} - Step(long value, Unit unit) {init_long(value, UnitType{unit});} - Step(long value, long unit) {init_long(value, UnitType{unit});} - Step(long value, const std::string& unit) {init_long(value, UnitType{unit});} + Step(long value, const Unit& unit) { init_long(value, unit);} + Step(long value, Unit::Value unit) {init_long(value, Unit{unit});} + Step(long value, long unit) {init_long(value, Unit{unit});} + Step(long value, const std::string& unit) {init_long(value, Unit{unit});} // Getters template T value() const; - template T value(const UnitType& unit) const; - UnitType unit() const { return unit_; } + template T value(const Unit& unit) const; + Unit unit() const { return unit_; } // Setters - Step& set_unit(const std::string& unit_name) {unit_ = UnitType{unit_name}; return *this;} - Step& set_unit(long unit_code) {unit_ = UnitType{unit_code}; return *this;} - Step& set_unit(const UnitType& new_unit) {unit_ = new_unit; return *this;} - Step& set_unit(const Unit new_unit) {unit_ = new_unit; return *this;} + Step& set_unit(const std::string& unit_name) {unit_ = Unit{unit_name}; return *this;} + Step& set_unit(long unit_code) {unit_ = Unit{unit_code}; return *this;} + Step& set_unit(const Unit& new_unit) {unit_ = new_unit; return *this;} + Step& set_unit(const Unit::Value new_unit) {unit_ = new_unit; return *this;} // Operators bool operator==(const Step& other) const; @@ -65,7 +65,7 @@ class Step { char output[max_size]; std::string u; - if (unit_ == Unit::HOUR) + if (unit_ == Unit::Value::HOUR) u = ""; else u = unit_.to_string(); @@ -78,8 +78,8 @@ class Step { } private: - void init_long(long value, const UnitType& unit); - void init_double(double value, const UnitType& unit); + void init_long(long value, const Unit& unit); + void init_double(double value, const Unit& unit); void sanity_check() const; Step& recalculateValue() { if (internal_value_ == 0) { @@ -88,7 +88,7 @@ class Step { } Seconds seconds = to_seconds(internal_value_, internal_unit_); - long multiplier = UnitType::get_converter().unit_to_duration(unit_.to_value()); + long multiplier = Unit::get_converter().unit_to_duration(unit_.to_value()); internal_value_ = seconds.count() / multiplier; internal_unit_ = unit_; @@ -96,8 +96,8 @@ class Step { } long internal_value_; - UnitType internal_unit_; - UnitType unit_; + Unit internal_unit_; + Unit unit_; }; @@ -118,7 +118,7 @@ template T Step::value() const { return value; } -template T Step::value(const UnitType& unit) const { +template T Step::value(const Unit& unit) const { if (internal_value_ == 0) { return 0; } @@ -132,23 +132,23 @@ template T Step::value(const UnitType& unit) const { template -Seconds to_seconds(long value, const UnitType& unit) { +Seconds to_seconds(long value, const Unit& unit) { Seconds seconds; switch (unit.to_value()) { - case Unit::SECOND: seconds = Seconds(value); break; - case Unit::MINUTE: seconds = Minutes(value); break; - case Unit::MINUTES15: seconds = Minutes15(value); break; - case Unit::MINUTES30: seconds = Minutes30(value); break; - case Unit::HOUR: seconds = Hours(value); break; - case Unit::HOURS3: seconds = Hours3(value); break; - case Unit::HOURS6: seconds = Hours6(value); break; - case Unit::HOURS12: seconds = Hours12(value); break; - case Unit::DAY: seconds = Days(value); break; - case Unit::MONTH: seconds = Months(value); break; - case Unit::YEAR: seconds = Years(value); break; - case Unit::YEARS10: seconds = Years10(value); break; - case Unit::YEARS30: seconds = Years30(value); break; - case Unit::CENTURY: seconds = Centuries(value); break; + case Unit::Value::SECOND: seconds = Seconds(value); break; + case Unit::Value::MINUTE: seconds = Minutes(value); break; + case Unit::Value::MINUTES15: seconds = Minutes15(value); break; + case Unit::Value::MINUTES30: seconds = Minutes30(value); break; + case Unit::Value::HOUR: seconds = Hours(value); break; + case Unit::Value::HOURS3: seconds = Hours3(value); break; + case Unit::Value::HOURS6: seconds = Hours6(value); break; + case Unit::Value::HOURS12: seconds = Hours12(value); break; + case Unit::Value::DAY: seconds = Days(value); break; + case Unit::Value::MONTH: seconds = Months(value); break; + case Unit::Value::YEAR: seconds = Years(value); break; + case Unit::Value::YEARS10: seconds = Years10(value); break; + case Unit::Value::YEARS30: seconds = Years30(value); break; + case Unit::Value::CENTURY: seconds = Centuries(value); break; default: std::string msg = "Unknown unit: " + unit.to_string(); throw std::runtime_error(msg); @@ -158,23 +158,23 @@ Seconds to_seconds(long value, const UnitType& unit) { template -T from_seconds(Seconds seconds, const UnitType& unit) { +T from_seconds(Seconds seconds, const Unit& unit) { T value = 0; switch (unit.to_value()) { - case Unit::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::MINUTES30: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::HOUR: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::HOURS3: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::HOURS6: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::HOURS12: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::DAY: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::MONTH: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::YEAR: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::YEARS10: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTES30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOUR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS3: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS6: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS12: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::DAY: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MONTH: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEAR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEARS10: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; default: std::string msg = "Unknown unit: " + unit.to_string(); throw std::runtime_error(msg); diff --git a/src/step_unit.cc b/src/step_unit.cc index 2dd4c0812..e24e3a0d5 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -1,29 +1,29 @@ #include "step_unit.h" -UnitType::Map UnitType::map_{}; +Unit::Map Unit::map_{}; -std::vector UnitType::unit_order_ = { - Unit::SECOND, - Unit::MINUTE, - Unit::HOUR, - //Unit::DAY, +std::vector Unit::unit_order_ = { + Unit::Value::SECOND, + Unit::Value::MINUTE, + Unit::Value::HOUR, + //Unit::Value::DAY, }; -std::vector UnitType::complete_unit_order_ = { - Unit::MISSING , - Unit::SECOND , - Unit::MINUTE , - Unit::MINUTES15 , - Unit::MINUTES30 , - Unit::HOUR , - Unit::HOURS3 , - Unit::HOURS6 , - Unit::HOURS12 , - Unit::DAY , - Unit::MONTH , - Unit::YEAR , - Unit::YEARS10 , - Unit::YEARS30 , - Unit::CENTURY +std::vector Unit::complete_unit_order_ = { + Unit::Value::MISSING , + Unit::Value::SECOND , + Unit::Value::MINUTE , + Unit::Value::MINUTES15 , + Unit::Value::MINUTES30 , + Unit::Value::HOUR , + Unit::Value::HOURS3 , + Unit::Value::HOURS6 , + Unit::Value::HOURS12 , + Unit::Value::DAY , + Unit::Value::MONTH , + Unit::Value::YEAR , + Unit::Value::YEARS10 , + Unit::Value::YEARS30 , + Unit::Value::CENTURY }; diff --git a/src/step_unit.h b/src/step_unit.h index 587ae2898..2fc3fe934 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -23,42 +23,43 @@ template using Minutes30 = std::chrono::duration using Missing = std::chrono::duration>; -enum class Unit { - MINUTE = 0, - HOUR = 1, - DAY = 2, - MONTH = 3, - YEAR = 4, - YEARS10 = 5, - YEARS30 = 6, - CENTURY = 7, - HOURS3 = 10, - HOURS6 = 11, - HOURS12 = 12, - SECOND = 13, - MINUTES15 = 14, - MINUTES30 = 15, - MISSING = 255, -}; -class UnitType; -template Seconds to_seconds(long value, const UnitType& unit); -template T from_seconds(Seconds seconds, const UnitType& unit); +class Unit; +template Seconds to_seconds(long value, const Unit& unit); +template T from_seconds(Seconds seconds, const Unit& unit); -class UnitType { +class Unit { public: - UnitType() : internal_value_(Unit::HOUR) {} - explicit UnitType(Unit unit_value) : internal_value_(unit_value) {} - explicit UnitType(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} - explicit UnitType(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} - - bool operator>(const UnitType& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} - bool operator==(const Unit value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} - bool operator==(const UnitType& unit) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(unit.internal_value_);} - bool operator!=(const UnitType& unit) const {return !(*this == unit);} - bool operator!=(const Unit value) const {return !(*this == value);} - - UnitType& operator=(const Unit value) { + enum class Value { + MINUTE = 0, + HOUR = 1, + DAY = 2, + MONTH = 3, + YEAR = 4, + YEARS10 = 5, + YEARS30 = 6, + CENTURY = 7, + HOURS3 = 10, + HOURS6 = 11, + HOURS12 = 12, + SECOND = 13, + MINUTES15 = 14, + MINUTES30 = 15, + MISSING = 255, + }; + + Unit() : internal_value_(Value::HOUR) {} + explicit Unit(Value unit_value) : internal_value_(unit_value) {} + explicit Unit(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} + explicit Unit(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} + + bool operator>(const Unit& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} + bool operator==(const Value value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} + bool operator==(const Unit& unit) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(unit.internal_value_);} + bool operator!=(const Unit& unit) const {return !(*this == unit);} + bool operator!=(const Value value) const {return !(*this == value);} + + Unit& operator=(const Value value) { internal_value_ = value; return *this; } @@ -68,9 +69,9 @@ class UnitType { } long to_long() const {return map_.unit_to_long(internal_value_);} - Unit to_value() const {return internal_value_;} - static std::vector unit_order_; - static std::vector complete_unit_order_; + Value to_value() const {return internal_value_;} + static std::vector unit_order_; + static std::vector complete_unit_order_; private: class Map { @@ -92,54 +93,54 @@ class UnitType { } // wmo_code <-> unit_name - std::string unit_to_name(const Unit& unit_value) const {return value_to_name_.at(unit_value);} - Unit name_to_unit(const std::string& name) const {return name_to_value_.at(name);} + std::string unit_to_name(const Value& unit_value) const {return value_to_name_.at(unit_value);} + Value name_to_unit(const std::string& name) const {return name_to_value_.at(name);} // unit_value <-> duration - long unit_to_duration(const Unit& unit_value) const {return value_to_duration_.at(unit_value);} - Unit duration_to_unit(long duration) const {return duration_to_value_.at(duration);} + long unit_to_duration(const Value& unit_value) const {return value_to_duration_.at(unit_value);} + Value duration_to_unit(long duration) const {return duration_to_value_.at(duration);} // wmo_code <-> unit_name - long unit_to_long(const Unit& unit_value) const {return value_to_long_.at(unit_value);} - Unit long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} + long unit_to_long(const Value& unit_value) const {return value_to_long_.at(unit_value);} + Value long_to_unit(long wmo_code) const {return long_to_value_.at(wmo_code);} private: struct Entry { - Unit unit_value; + Value unit_value; std::string unit_name; long duration; }; const std::array tab_ = { - Entry{Unit::MISSING , "MISSING" , 0}, - Entry{Unit::SECOND , "s" , 1}, - Entry{Unit::MINUTE , "m" , 60}, - Entry{Unit::MINUTES15 , "15m" , 900}, - Entry{Unit::MINUTES30 , "30m" , 1800}, - Entry{Unit::HOUR , "h" , 3600}, - Entry{Unit::HOURS3 , "3h" , 10800}, - Entry{Unit::HOURS6 , "6h" , 21600}, - Entry{Unit::HOURS12 , "12h" , 43200}, - Entry{Unit::DAY , "D" , 86400}, - Entry{Unit::MONTH , "M" , 2592000}, - Entry{Unit::YEAR , "Y" , 31536000}, - Entry{Unit::YEARS10 , "10Y" , 315360000}, - Entry{Unit::YEARS30 , "30Y" , 946080000}, - Entry{Unit::CENTURY , "C" , 3153600000}, + Entry{Value::MISSING , "MISSING" , 0}, + Entry{Value::SECOND , "s" , 1}, + Entry{Value::MINUTE , "m" , 60}, + Entry{Value::MINUTES15 , "15m" , 900}, + Entry{Value::MINUTES30 , "30m" , 1800}, + Entry{Value::HOUR , "h" , 3600}, + Entry{Value::HOURS3 , "3h" , 10800}, + Entry{Value::HOURS6 , "6h" , 21600}, + Entry{Value::HOURS12 , "12h" , 43200}, + Entry{Value::DAY , "D" , 86400}, + Entry{Value::MONTH , "M" , 2592000}, + Entry{Value::YEAR , "Y" , 31536000}, + Entry{Value::YEARS10 , "10Y" , 315360000}, + Entry{Value::YEARS30 , "30Y" , 946080000}, + Entry{Value::CENTURY , "C" , 3153600000}, }; - std::unordered_map name_to_value_; - std::unordered_map value_to_name_; + std::unordered_map name_to_value_; + std::unordered_map value_to_name_; - std::unordered_map value_to_long_; - std::unordered_map long_to_value_; + std::unordered_map value_to_long_; + std::unordered_map long_to_value_; - std::unordered_map value_to_duration_; - std::unordered_map duration_to_value_; + std::unordered_map value_to_duration_; + std::unordered_map duration_to_value_; }; - Unit internal_value_; + Value internal_value_; static Map map_; public: static Map& get_converter() {return map_;} From 249867cc4a144c963b92caa3c91082ed30139c07 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 20 Sep 2023 15:16:55 +0000 Subject: [PATCH 045/469] ECC-1620: Refactor Unit::value() --- src/grib_accessor_class_g2end_step.cc | 10 +++++----- src/grib_accessor_class_g2step_range.cc | 4 ++-- src/grib_accessor_class_optimal_step_units.cc | 16 ++++++++-------- src/grib_accessor_class_step_in_units.cc | 12 ++++++------ src/step.cc | 4 ++-- src/step.h | 14 +++++++------- src/step_unit.cc | 11 +++++++++++ src/step_unit.h | 12 ++++++------ src/step_utilities.cc | 2 +- 9 files changed, 48 insertions(+), 37 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 4e04e3714..3a9509745 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -690,11 +690,11 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range_opt.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_unit, time_range_opt.unit().value())) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_value_key, forecast_time_opt.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time_opt.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time_opt.unit().value())) != GRIB_SUCCESS) return err; @@ -765,7 +765,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; if (end_step_unit == 255) - end_step_unit = Unit{Unit::Value::HOUR}.to_long(); + end_step_unit = Unit{Unit::Value::HOUR}.value(); } else { end_step_unit = force_step_units; @@ -783,10 +783,10 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) Step end_step = step_from_string(val); end_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().to_long())) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().value())) != GRIB_SUCCESS) return ret; - if ((ret = pack_long_(a, end_step.value(), end_step.unit().to_long())) != GRIB_SUCCESS) + if ((ret = pack_long_(a, end_step.value(), end_step.unit().value())) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 3d4e61228..0578a08e3 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -237,13 +237,13 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); } - if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().to_long()))) + if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().value()))) return ret; if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) return ret; if ((self->end_step != NULL) && (steps.size() > 1)) { - if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().to_long()))) + if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) return ret; if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) return ret; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index f09b61f38..384c3800e 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -142,8 +142,8 @@ static size_t string_length(grib_accessor* a) return 255; } -static long staticStepUnits = Unit{Unit::Value::MISSING}.to_long(); -static long staticForceStepUnits = Unit{Unit::Value::MISSING}.to_long(); +static long staticStepUnits = Unit{Unit::Value::MISSING}.value(); +static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { @@ -174,16 +174,16 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if (forecast_time_opt && time_range_opt) { auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); - *val = step_a.unit().to_long(); + *val = step_a.unit().value(); } else if (forecast_time_opt && !time_range_opt) { - *val = forecast_time_opt.value().optimize_unit().unit().to_long(); + *val = forecast_time_opt.value().optimize_unit().unit().value(); } else if (!forecast_time_opt && time_range_opt) { - *val = time_range_opt.value().optimize_unit().unit().to_long(); + *val = time_range_opt.value().optimize_unit().unit().value(); } else if (!forecast_time_opt && !time_range_opt) { - *val = Unit{Unit::Value::HOUR}.to_long(); + *val = Unit{Unit::Value::HOUR}.value(); } return GRIB_SUCCESS; @@ -191,7 +191,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - long unit = Unit{val}.to_long(); + long unit = Unit{val}.value(); pack_long(a, &unit, len); return GRIB_SUCCESS; } @@ -203,7 +203,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t unit_len = 0; if ((ret = unpack_long(a, &unit, &unit_len)) != GRIB_SUCCESS) return ret; - *len = snprintf(val, *len, "%s", Unit{unit}.to_string().c_str()); + *len = snprintf(val, *len, "%s", Unit{unit}.value().c_str()); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 1de9d5540..f47d9bfd0 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -192,7 +192,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) return err; *val = step.value(Unit{step_units}); @@ -220,7 +220,7 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) return err; *val = step.value(Unit{step_units}); @@ -318,7 +318,7 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta auto [sa, sb] = find_common_units(forecast_time.optimize_unit(), time_range.optimize_unit()); if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, sa)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().value())) != GRIB_SUCCESS) return err; if ((err = set_step(h, self->time_range_value, self->time_range_unit, sb)) != GRIB_SUCCESS) return err; @@ -326,7 +326,7 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta } forecast_time.optimize_unit(); - if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().value())) != GRIB_SUCCESS) return err; if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, forecast_time)) != GRIB_SUCCESS) return err; @@ -349,7 +349,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; if (start_step_unit == 255) - start_step_unit = Unit{Unit::Value::HOUR}.to_long(); + start_step_unit = Unit{Unit::Value::HOUR}.value(); } else { start_step_unit = force_step_units; @@ -369,7 +369,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) Step step = step_from_string(val); - if ((ret = pack_long_new_(a, step.value(), step.unit().to_long())) != GRIB_SUCCESS) + if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; diff --git a/src/step.cc b/src/step.cc index a61bc6dfa..060a506ef 100644 --- a/src/step.cc +++ b/src/step.cc @@ -113,7 +113,7 @@ std::pair find_common_units(const Step& startStep, const Step& endSt } else { auto it = std::find_if(Unit::unit_order_.begin(), Unit::unit_order_.end(), [&](const auto& e) { - return e == a.unit().to_value() || e == b.unit().to_value(); + return e == a.unit().value() || e == b.unit().value(); }); assert(it != Unit::unit_order_.end()); @@ -147,7 +147,7 @@ void Step::init_long(long value, const Unit& unit) void Step::init_double(double value, const Unit& unit) { - long seconds = Unit::get_converter().unit_to_duration(unit.to_value()); + long seconds = Unit::get_converter().unit_to_duration(unit.value()); init_long(static_cast(value * seconds), Unit{Unit::Value::SECOND}); unit_ = unit; } diff --git a/src/step.h b/src/step.h index 261d9edb8..1c80d380c 100644 --- a/src/step.h +++ b/src/step.h @@ -68,7 +68,7 @@ class Step { if (unit_ == Unit::Value::HOUR) u = ""; else - u = unit_.to_string(); + u = unit_.value(); int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); if (err < 0 || err >= max_size) { @@ -88,7 +88,7 @@ class Step { } Seconds seconds = to_seconds(internal_value_, internal_unit_); - long multiplier = Unit::get_converter().unit_to_duration(unit_.to_value()); + long multiplier = Unit::get_converter().unit_to_duration(unit_.value()); internal_value_ = seconds.count() / multiplier; internal_unit_ = unit_; @@ -134,7 +134,7 @@ template T Step::value(const Unit& unit) const { template Seconds to_seconds(long value, const Unit& unit) { Seconds seconds; - switch (unit.to_value()) { + switch (unit.value()) { case Unit::Value::SECOND: seconds = Seconds(value); break; case Unit::Value::MINUTE: seconds = Minutes(value); break; case Unit::Value::MINUTES15: seconds = Minutes15(value); break; @@ -150,7 +150,7 @@ Seconds to_seconds(long value, const Unit& unit) { case Unit::Value::YEARS30: seconds = Years30(value); break; case Unit::Value::CENTURY: seconds = Centuries(value); break; default: - std::string msg = "Unknown unit: " + unit.to_string(); + std::string msg = "Unknown unit: " + unit.value(); throw std::runtime_error(msg); } return seconds; @@ -159,8 +159,8 @@ Seconds to_seconds(long value, const Unit& unit) { template T from_seconds(Seconds seconds, const Unit& unit) { - T value = 0; - switch (unit.to_value()) { + T value; + switch (unit.value()) { case Unit::Value::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; case Unit::Value::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; case Unit::Value::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; @@ -176,7 +176,7 @@ T from_seconds(Seconds seconds, const Unit& unit) { case Unit::Value::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; case Unit::Value::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; default: - std::string msg = "Unknown unit: " + unit.to_string(); + std::string msg = "Unknown unit: " + unit.value(); throw std::runtime_error(msg); } return value; diff --git a/src/step_unit.cc b/src/step_unit.cc index e24e3a0d5..3c450fcf2 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -27,3 +27,14 @@ std::vector Unit::complete_unit_order_ = { Unit::Value::CENTURY }; +template <> long Unit::value() const { + return map_.unit_to_long(internal_value_); +} + +template <> Unit::Value Unit::value() const { + return internal_value_; +} + +template <> std::string Unit::value() const { + return map_.unit_to_name(internal_value_); +} diff --git a/src/step_unit.h b/src/step_unit.h index 2fc3fe934..1c5c0b196 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -64,12 +64,12 @@ class Unit { return *this; } - std::string to_string() const { - return map_.unit_to_name(internal_value_); - } - - long to_long() const {return map_.unit_to_long(internal_value_);} - Value to_value() const {return internal_value_;} + //std::string to_string() const { + // return map_.unit_to_name(internal_value_); + //} + //long to_long() const {return map_.unit_to_long(internal_value_);} + //Value to_value() const {return internal_value_;} + template T value() const; static std::vector unit_order_; static std::vector complete_unit_order_; diff --git a/src/step_utilities.cc b/src/step_utilities.cc index d46d1900e..cbea1621d 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -28,7 +28,7 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un //step_copy.optimize_unit(); if ((err = grib_set_long_internal(h, value_key.c_str(), step_copy.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(h, unit_key.c_str(), step_copy.unit().to_long())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, unit_key.c_str(), step_copy.unit().value())) != GRIB_SUCCESS) return err; return GRIB_SUCCESS; } From fe45013440db86d0f387f9d45ee95102a9c368df Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 20 Sep 2023 15:31:57 +0000 Subject: [PATCH 046/469] ECC-1620: Refactoring Step::value() --- src/grib_accessor_class_g2end_step.cc | 4 ++-- src/grib_accessor_class_g2step_range.cc | 6 +++--- src/grib_accessor_class_step_in_units.cc | 2 +- src/step.cc | 20 ++++++++++++++++++++ src/step.h | 17 +---------------- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 3a9509745..cacdfb087 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -625,7 +625,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%s < %s)", end_step.to_string("%g").c_str(), start_step.to_string("%g").c_str()); + "endStep < startStep (%s < %s)", end_step.value("%g").c_str(), start_step.value("%g").c_str()); return GRIB_WRONG_STEP; } @@ -735,7 +735,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) std::stringstream ss; - ss << step.to_string(fp_format); + ss << step.value(fp_format); size_t size = ss.str().size() + 1; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 0578a08e3..7ece162f0 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -163,7 +163,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step start_step{start_step_value, step_units}; if (self->end_step == NULL) { - ss << start_step.to_string(fp_format); + ss << start_step.value(fp_format); } else { if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) @@ -172,10 +172,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step end_step{end_step_value, step_units}; if (start_step_value == end_step_value) { - ss << end_step.to_string(fp_format); + ss << end_step.value(fp_format); } else { - ss << start_step.to_string(fp_format) << "-" << end_step.to_string(fp_format); + ss << start_step.value(fp_format) << "-" << end_step.value(fp_format); } } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index f47d9bfd0..e10a14f39 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -398,7 +398,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step step{start_step_value, start_step_unit}; std::stringstream ss; - ss << step.to_string(fp_format); + ss << step.value(fp_format); size_t size = ss.str().size() + 1; diff --git a/src/step.cc b/src/step.cc index 060a506ef..c402c8e2e 100644 --- a/src/step.cc +++ b/src/step.cc @@ -173,3 +173,23 @@ Step& Step::optimize_unit() return *this; } + + +template <> +std::string Step::value(const std::string& format) const { + constexpr int max_size = 128; + char output[max_size]; + std::string u; + + if (unit_ == Unit::Value::HOUR) + u = ""; + else + u = unit_.value(); + + int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); + if (err < 0 || err >= max_size) { + throw std::runtime_error("Error while formatting Step to string"); + } + return output; +} + diff --git a/src/step.h b/src/step.h index 1c80d380c..98996fe08 100644 --- a/src/step.h +++ b/src/step.h @@ -33,6 +33,7 @@ class Step { // Getters template T value() const; template T value(const Unit& unit) const; + template T value(const std::string& format) const; Unit unit() const { return unit_; } // Setters @@ -60,22 +61,6 @@ class Step { Step& optimize_unit(); friend std::pair find_common_units(const Step& startStep, const Step& endStep); - std::string to_string(const std::string& format) const { - constexpr int max_size = 128; - char output[max_size]; - std::string u; - - if (unit_ == Unit::Value::HOUR) - u = ""; - else - u = unit_.value(); - - int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); - if (err < 0 || err >= max_size) { - throw std::runtime_error("Error while formatting Step to string"); - } - return output; - } private: void init_long(long value, const Unit& unit); From 624e51513c621e1cabda66c9bd8bf19a01be48b8 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 21 Sep 2023 12:26:02 +0000 Subject: [PATCH 047/469] ECC-1620: Minor changes --- src/CMakeLists.txt | 2 +- src/grib_accessor_class_g2end_step.cc | 111 +++----------------------- src/step.cc | 10 ++- src/step.h | 53 ------------ src/step_unit.h | 59 ++++++++++++-- 5 files changed, 76 insertions(+), 159 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index be8196605..31f115f84 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,8 +9,8 @@ # nor does it submit to any jurisdiction. # list( APPEND eccodes_src_files - step.cc step_unit.cc + step.cc step_utilities.cc grib_api.h grib_timer.cc diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index cacdfb087..05e1f674a 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -95,6 +95,7 @@ typedef struct grib_accessor_g2end_step extern grib_accessor_class* grib_accessor_class_long; + static grib_accessor_class _grib_accessor_class_g2end_step = { &grib_accessor_class_long, /* super */ "g2end_step", /* name */ @@ -177,46 +178,12 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) self->numberOfTimeRange = grib_arguments_get_name(h, c, n++); } + static void dump(grib_accessor* a, grib_dumper* dumper) { grib_dump_double(dumper, a, NULL); } -static const int u2s2[] = { - 60, /* (0) minutes */ - 3600, /* (1) hour */ - 86400, /* (2) day */ - 2592000, /* (3) month */ - -1, /* (4) */ - -1, /* (5) */ - -1, /* (6) */ - -1, /* (7) */ - -1, /* (8) */ - -1, /* (9) */ - 10800, /* (10) 3 hours */ - 21600, /* (11) 6 hours */ - 43200, /* (12) 12 hours */ - 1 /* (13) seconds */ -}; - -static const int u2s[] = { - 60, /* (0) minutes */ - 3600, /* (1) hour */ - 86400, /* (2) day */ - 2592000, /* (3) month */ - -1, /* (4) */ - -1, /* (5) */ - -1, /* (6) */ - -1, /* (7) */ - -1, /* (8) */ - -1, /* (9) */ - 10800, /* (10) 3 hours */ - 21600, /* (11) 6 hours */ - 43200, /* (12) 12 hours */ - 1, /* (13) seconds */ - 900, /* (14) 15 minutes */ - 1800 /* (15) 30 minutes */ -}; /* See GRIB-488 */ static int is_special_expver(grib_handle* h) @@ -232,6 +199,7 @@ static int is_special_expver(grib_handle* h) return 0; } + static int convert_time_range_long_( grib_handle* h, long stepUnits, /* step_units */ @@ -242,34 +210,18 @@ static int convert_time_range_long_( Assert(lengthOfTimeRange != NULL); if (indicatorOfUnitForTimeRange != stepUnits) { - long u2sf_step_unit; - long coded_time_range_sec = (*lengthOfTimeRange) * u2s2[indicatorOfUnitForTimeRange]; - if (coded_time_range_sec < 0) { - long u2sf; - int factor = 60; - if (u2s2[indicatorOfUnitForTimeRange] % factor) - return GRIB_DECODING_ERROR; - if (u2s[stepUnits] % factor) - return GRIB_DECODING_ERROR; - u2sf = u2s2[indicatorOfUnitForTimeRange] / factor; - coded_time_range_sec = (*lengthOfTimeRange) * u2sf; - u2sf_step_unit = u2s[stepUnits] / factor; + Step time_range{*lengthOfTimeRange, indicatorOfUnitForTimeRange}; + time_range.set_unit(Unit{stepUnits}); + if (time_range.value() != time_range.value()) { + return GRIB_DECODING_ERROR; } - else { - u2sf_step_unit = u2s[stepUnits]; - } - if (coded_time_range_sec % u2sf_step_unit != 0) { - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to convert endStep in stepUnits"); - return GRIB_WRONG_STEP_UNIT; - } - *lengthOfTimeRange = coded_time_range_sec / u2sf_step_unit; + *lengthOfTimeRange = time_range.value(); } return GRIB_SUCCESS; } - static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -482,7 +434,6 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si } - // For the old implementation of unpack_long, see // src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc // @@ -611,16 +562,17 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en return err; if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) return err; + if (start_step_unit == 255) { - throw std::runtime_error("startStepUnit == 255"); + grib_context_log(h->context, GRIB_LOG_ERROR, + "missing start step unit"); + return GRIB_WRONG_STEP_UNIT; } if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; Step start_step{start_step_value, start_step_unit}; - - //time_range_v = *val - start_step_value; Step time_range = end_step - start_step; if (time_range.value() < 0) { @@ -655,37 +607,8 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_set_long_internal(h, self->second_of_end_of_interval, second_of_end_of_interval))) return err; - //if (time_range_v * u2s[step_units] % u2s2[time_range_unit]) { - // time_range_unit = step_units; - // if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) - // return err; - // time_range_value = time_range_v; - //} - //else - // time_range_value = (time_range_v * u2s[step_units]) / u2s2[time_range_unit]; - - - //time_range_value = time_range_value * u2s[time_range_unit] / u2s2[step_units]; - //time_range_unit = step_units; - //if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) - // return err; - //if ((err = grib_set_long_internal(h, self->time_range_unit, time_range_unit))) - // return err; - - - const char* forecast_time_value_key = "forecastTime"; const char* forecast_time_unit_key = "indicatorOfUnitOfTimeRange"; - //long forecast_time_value; - //long forecast_time_unit; - //if ((err = grib_get_long_internal(h, forecast_time_value_key, &forecast_time_value)) != GRIB_SUCCESS) - // return err; - //if ((err = grib_get_long_internal(h, forecast_time_unit_key, &forecast_time_unit)) != GRIB_SUCCESS) - // return err; - - - //auto [forecast_time, time_range] = find_common_units(Step{forecast_time_value, forecast_time_unit}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); - //auto [forecast_time, time_range] = find_common_units(Step{start_step_value, step_units}.optimize_unit(), Step{time_range_value, time_range_unit}.optimize_unit()); auto [forecast_time_opt, time_range_opt] = find_common_units(start_step.optimize_unit(), time_range.optimize_unit()); if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) @@ -697,15 +620,6 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_set_long_internal(grib_handle_of_accessor(a), forecast_time_unit_key, forecast_time_opt.unit().value())) != GRIB_SUCCESS) return err; - - - //if (typeOfTimeIncrement != 1) { - // [> 1 means "Successive times processed have same forecast time, start time of forecast is incremented" <] - // [> Note: For this case, length of timeRange is not related to step and so should NOT be used to calculate step <] - // if ((err = grib_set_long_internal(h, self->time_range_value, time_range_value))) - // return err; - //} - return GRIB_SUCCESS; } @@ -749,6 +663,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } + static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; diff --git a/src/step.cc b/src/step.cc index c402c8e2e..4617927dc 100644 --- a/src/step.cc +++ b/src/step.cc @@ -7,10 +7,9 @@ #include #include +#include "step_unit.h" #include "step.h" - - Step step_from_string(std::string step) { std::regex re("([0-9.]+)([smhDMYC]?)"); @@ -174,6 +173,13 @@ Step& Step::optimize_unit() return *this; } +//Step Step::copy() const { +// Step ret{}; +// ret.internal_value_ = internal_value_; +// ret.internal_unit_ = internal_unit_; +// ret.unit_ = unit_; +// return ret; +//} template <> std::string Step::value(const std::string& format) const { diff --git a/src/step.h b/src/step.h index 98996fe08..63adc89fa 100644 --- a/src/step.h +++ b/src/step.h @@ -114,56 +114,3 @@ template T Step::value(const Unit& unit) const { T value = from_seconds(seconds, unit); return value; } - - -template -Seconds to_seconds(long value, const Unit& unit) { - Seconds seconds; - switch (unit.value()) { - case Unit::Value::SECOND: seconds = Seconds(value); break; - case Unit::Value::MINUTE: seconds = Minutes(value); break; - case Unit::Value::MINUTES15: seconds = Minutes15(value); break; - case Unit::Value::MINUTES30: seconds = Minutes30(value); break; - case Unit::Value::HOUR: seconds = Hours(value); break; - case Unit::Value::HOURS3: seconds = Hours3(value); break; - case Unit::Value::HOURS6: seconds = Hours6(value); break; - case Unit::Value::HOURS12: seconds = Hours12(value); break; - case Unit::Value::DAY: seconds = Days(value); break; - case Unit::Value::MONTH: seconds = Months(value); break; - case Unit::Value::YEAR: seconds = Years(value); break; - case Unit::Value::YEARS10: seconds = Years10(value); break; - case Unit::Value::YEARS30: seconds = Years30(value); break; - case Unit::Value::CENTURY: seconds = Centuries(value); break; - default: - std::string msg = "Unknown unit: " + unit.value(); - throw std::runtime_error(msg); - } - return seconds; -} - - -template -T from_seconds(Seconds seconds, const Unit& unit) { - T value; - switch (unit.value()) { - case Unit::Value::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::MINUTES30: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::HOUR: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::HOURS3: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::HOURS6: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::HOURS12: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::DAY: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::MONTH: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::YEAR: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::YEARS10: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; - case Unit::Value::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; - default: - std::string msg = "Unknown unit: " + unit.value(); - throw std::runtime_error(msg); - } - return value; -} - diff --git a/src/step_unit.h b/src/step_unit.h index 1c5c0b196..aa827674d 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -64,11 +65,6 @@ class Unit { return *this; } - //std::string to_string() const { - // return map_.unit_to_name(internal_value_); - //} - //long to_long() const {return map_.unit_to_long(internal_value_);} - //Value to_value() const {return internal_value_;} template T value() const; static std::vector unit_order_; static std::vector complete_unit_order_; @@ -145,3 +141,56 @@ class Unit { public: static Map& get_converter() {return map_;} }; + + + +template +Seconds to_seconds(long value, const Unit& unit) { + Seconds seconds; + switch (unit.value()) { + case Unit::Value::SECOND: seconds = Seconds(value); break; + case Unit::Value::MINUTE: seconds = Minutes(value); break; + case Unit::Value::MINUTES15: seconds = Minutes15(value); break; + case Unit::Value::MINUTES30: seconds = Minutes30(value); break; + case Unit::Value::HOUR: seconds = Hours(value); break; + case Unit::Value::HOURS3: seconds = Hours3(value); break; + case Unit::Value::HOURS6: seconds = Hours6(value); break; + case Unit::Value::HOURS12: seconds = Hours12(value); break; + case Unit::Value::DAY: seconds = Days(value); break; + case Unit::Value::MONTH: seconds = Months(value); break; + case Unit::Value::YEAR: seconds = Years(value); break; + case Unit::Value::YEARS10: seconds = Years10(value); break; + case Unit::Value::YEARS30: seconds = Years30(value); break; + case Unit::Value::CENTURY: seconds = Centuries(value); break; + default: + std::string msg = "Unknown unit: " + unit.value(); + throw std::runtime_error(msg); + } + return seconds; +} + + +template +T from_seconds(Seconds seconds, const Unit& unit) { + T value; + switch (unit.value()) { + case Unit::Value::SECOND: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTE: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTES15: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MINUTES30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOUR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS3: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS6: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::HOURS12: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::DAY: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::MONTH: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEAR: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEARS10: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::YEARS30: value = std::chrono::duration_cast>(seconds).count(); break; + case Unit::Value::CENTURY: value = std::chrono::duration_cast>(seconds).count(); break; + default: + std::string msg = "Unknown unit: " + unit.value(); + throw std::runtime_error(msg); + } + return value; +} From de4178e33d1633c7e7922df016fb1ef59e529b79 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 21 Sep 2023 12:51:19 +0000 Subject: [PATCH 048/469] ECC-1620: Clean step_in_units --- src/grib_accessor_class_step_in_units.cc | 110 ++--------------------- 1 file changed, 7 insertions(+), 103 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index e10a14f39..4ab5b2b47 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -123,11 +123,11 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; int n = 0; - self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->step_units = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->step_units = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); } static void dump(grib_accessor* a, grib_dumper* dumper) @@ -135,44 +135,6 @@ static void dump(grib_accessor* a, grib_dumper* dumper) grib_dump_double(dumper, a, NULL); } -/* Conversion of to seconds - Grib edition 2 table 4.4 */ -static const int u2s2[] = { - 60, /* (0) minutes */ - 3600, /* (1) hour */ - 86400, /* (2) day */ - 2592000, /* (3) month */ - -1, /* (4) year */ - -1, /* (5) decade */ - -1, /* (6) 30 years */ - -1, /* (7) century */ - -1, /* (8) RESERVED */ - -1, /* (9) RESERVED */ - 10800, /* (10) 3 hours */ - 21600, /* (11) 6 hours */ - 43200, /* (12) 12 hours */ - 1 /* (13) seconds */ -}; - -/* Note: 'step_units' has a different table with extra entries e.g. 15 and 30 mins */ -static const int u2s[] = { - 60, /* (0) minutes */ - 3600, /* (1) hour */ - 86400, /* (2) day */ - 2592000, /* (3) month */ - -1, /* (4) year */ - -1, /* (5) decade */ - -1, /* (6) 30 years */ - -1, /* (7) century */ - -1, /* (8) */ - -1, /* (9) */ - 10800, /* (10) 3 hours */ - 21600, /* (11) 6 hours */ - 43200, /* (12) 12 hours */ - 1, /* (13) seconds */ - 900, /* (14) 15 minutes */ - 1800 /* (15) 30 minutes */ -}; - static int unpack_long(grib_accessor* a, long* val, size_t* len) { @@ -229,70 +191,15 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) } -int pack_long_old_(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int err = 0; - long forecast_time_value, forecast_time_unit, step_units; - long oldStep = 0; - long time_range_unit, time_range_value; - - if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit))) - return err; - if ((err = grib_get_long_internal(h, self->step_units, &step_units))) - return err; - - unpack_long(a, &oldStep, len); - - if (step_units != forecast_time_unit) { - forecast_time_value = *val * u2s[step_units]; - if (forecast_time_value % u2s2[forecast_time_unit] != 0) { - forecast_time_unit = step_units; - err = grib_set_long_internal(h, self->forecast_time_unit, forecast_time_unit); - if (err != GRIB_SUCCESS) - return err; - forecast_time_value = *val; - } - else { - forecast_time_value = forecast_time_value / u2s2[forecast_time_unit]; - } - } - else { - forecast_time_value = *val; - } - - if (self->time_range_unit) { - if ((err = grib_get_long_internal(h, - self->time_range_unit, &time_range_unit))) - return err; - if ((err = grib_get_long_internal(h, - self->time_range_value, &time_range_value))) - return err; - if (forecast_time_unit == time_range_unit) - time_range_value -= forecast_time_value - oldStep; - else - time_range_value -= forecast_time_value * u2s2[forecast_time_unit] / u2s2[time_range_unit]; - time_range_value = time_range_value > 0 ? time_range_value : 0; - err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_value); - if (err != GRIB_SUCCESS) - return err; - } - - return grib_set_long_internal(grib_handle_of_accessor(a), self->forecast_time_value, forecast_time_value); -} - int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; - //long forecast_time_value; long forecast_time_unit; long step_units; long start_step_value_old; long start_step_unit_old; size_t len = 0; - //long time_range_unit; - //long time_range_value; if ((err = grib_get_long_internal(h, self->forecast_time_unit, &forecast_time_unit)) != GRIB_SUCCESS) return err; @@ -301,9 +208,6 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit_old)) != GRIB_SUCCESS) return err; - //if ((err = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) - //return err; - //step_units = get_step_units(h); Step start_step_old(start_step_value_old, start_step_unit_old); Step forecast_time(start_step_value, start_step_unit); Step time_range_new{}; @@ -334,6 +238,7 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta return GRIB_SUCCESS; } + static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); @@ -360,6 +265,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; } + static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; @@ -411,5 +317,3 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } - - From 97830f57b8b3978c6b05dbb73770bcc7c7c1630f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 21 Sep 2023 12:57:08 +0000 Subject: [PATCH 049/469] ECC-1620: Cleanup tests --- tests/grib_ecc-1620.sh | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 8dd22a0e5..5ca007453 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -52,6 +52,13 @@ low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indi ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" +### TODO(EB): @Shahram: how to make parameters position independent +${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +#${tools_dir}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 +#grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" + + ${tools_dir}/grib_set -s stepUnits:i=13,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" ${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 @@ -101,44 +108,32 @@ ${tools_dir}/grib_set -s endStep:d=30 $temp $temp2 # TODO(EB) remove in the futu #${tools_dir}/grib_set -s endStep:s=30h $temp $temp2 #${tools_dir}/grib_set -s endStep=30h $temp $temp2 # TODO(EB) add to tests grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" -#${tools_dir}/grib_set -s endStep:d=24.5 $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 30 m" # Use stepUnits ${tools_dir}/grib_set -s endStep:s=30 $temp $temp2 +grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" + ${tools_dir}/grib_set -s endStep:s=30h $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" -#${tools_dir}/grib_set -s endStep:s=24.5h $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 30 m" + ${tools_dir}/grib_set -s endStep:s=88200s $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1440 m 30 m" -#${tools_dir}/grib_set -s endStep:s=1446.65m $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 399 s" + ${tools_dir}/grib_set -s endStep:s=24024 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 24000 h" -# Use range unit: hour ${tools_dir}/grib_set -s startStep:d=5 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 43 h" -#${tools_dir}/grib_set -s startStep:d=4.5 $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "270 m 1 D" -# Use stepUnits ${tools_dir}/grib_set -s startStep:s=5h $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 43 h" -#${tools_dir}/grib_set -s startStep:s=4.5h $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "270 m 1 D" + ${tools_dir}/grib_set -s startStep:s=240s $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "4 m 2876 m" -#${tools_dir}/grib_set -s startStep:s=0.65m $temp $temp2 -#grib_check_key_equals $temp2 "-p $low_level_keys" "39 s 1 D" + ${tools_dir}/grib_set -s startStep:s=2 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "2 h 46 h" - - - - ${tools_dir}/grib_set -s stepRange:s=5h-30h $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 25 h" grib_check_key_equals $temp2 "-p stepRange:s" "5-30" From b98039e652155d4c13771483aacf222c47d1c6da Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 21 Sep 2023 15:57:11 +0000 Subject: [PATCH 050/469] ECC-1620: Minor changes --- src/grib_accessor_class_step_in_units.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 4ab5b2b47..d8947b7fd 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -170,8 +170,6 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); - int factor = 0; - long u2sf, u2sf_step_unit; if ((err= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return err; From b38aedd57e875de2acbbd91c6910d327fe6cd6bb Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 21 Sep 2023 17:02:09 +0000 Subject: [PATCH 051/469] ECC-1620: Fix grib_set test --- src/grib_accessor_class_optimal_step_units.cc | 10 ++++++++-- tests/grib_set.sh | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 384c3800e..8eab3a9ed 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -191,8 +191,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - long unit = Unit{val}.value(); - pack_long(a, &unit, len); + try { + long unit = Unit{val}.value(); + pack_long(a, &unit, len); + } + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Invalid unit: %s", val); + return GRIB_INVALID_ARGUMENT; + } return GRIB_SUCCESS; } diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 1b8be144b..0489c61c3 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -223,7 +223,8 @@ ${tools_dir}/grib_set -s stepUnits=d $input $outfile > $temp 2>&1 status=$? set -e [ $status -ne 0 ] -grep -q "stepUnits: No such code table entry.*Did you mean" $temp +grep -q "Invalid argument" $temp +#grep -q "stepUnits: No such code table entry.*Did you mean" $temp # ------------------------ # Unreadable message From 65193dfd89324859b5c7b5e61f5b00e8c3705ec6 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 10:25:34 +0000 Subject: [PATCH 052/469] ECC-1620: Change mars.step unit from string to undefined --- tools/grib_tools.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 0cfef8449..2d78e0a98 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -776,6 +776,9 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle if (strlen(name) > options->default_print_width) options->default_print_width = (int)strlen(name); options->print_keys[options->print_keys_count].type = GRIB_TYPE_STRING; + if (strcmp(ns, "mars") == 0 && (strcmp(name, "step") == 0)) { + options->print_keys[options->print_keys_count].type = GRIB_TYPE_UNDEFINED; + } // For the statistics namespace, do not force the type to be string. // Setting it to undefined will use the keys' native type i.e. GRIB_TYPE_DOUBLE if (strcmp(ns,"statistics")==0) From bd69d15d13ea4d4176d649a252a2db200da76198 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 10:26:12 +0000 Subject: [PATCH 053/469] ECC-1620: Clean up --- src/grib_accessor_class_g2end_step.cc | 8 ++------ src/grib_accessor_class_g2step_range.cc | 5 +++-- src/grib_accessor_class_optimal_step_units.cc | 1 - src/grib_accessor_class_step_in_units.cc | 7 ------- src/step_unit.h | 4 ++-- 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 05e1f674a..f04850488 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -523,15 +523,14 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en long start_step_value; long start_step_unit; - long step_units, time_range_unit; + long time_range_unit; long year_of_end_of_interval; long month_of_end_of_interval; long day_of_end_of_interval; long hour_of_end_of_interval; long minute_of_end_of_interval = 0; long second_of_end_of_interval = 0; - - long time_range_value, time_range_v, typeOfTimeIncrement; + long typeOfTimeIncrement; double dend, dstep; @@ -636,7 +635,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) long step_value; long step_units; - if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; if ((ret = grib_get_long_internal(h, self->step_units, &step_units)) != GRIB_SUCCESS) @@ -666,7 +664,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret; @@ -692,7 +689,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; Step end_step = step_from_string(val); diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 7ece162f0..8178ac7f0 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -25,6 +25,7 @@ SUPER = grib_accessor_class_gen IMPLEMENTS = pack_string;unpack_string;value_count IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = get_native_type;string_length IMPLEMENTS = init @@ -48,6 +49,7 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); @@ -87,7 +89,7 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ - 0, /* unpack_double */ + &unpack_double, /* unpack_double */ 0, /* unpack_float */ &pack_string, /* pack_string */ &unpack_string, /* unpack_string */ @@ -138,7 +140,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); - char buf[100]; int ret = 0; size_t size = 0; double start_step_value = 0; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 8eab3a9ed..0daaefa26 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -147,7 +147,6 @@ static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; grib_handle* h = grib_handle_of_accessor(a); int ret; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index d8947b7fd..b4a2e0056 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -142,8 +142,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); - int factor = 0; - long u2sf, u2sf_step_unit; if ((err= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return err; @@ -194,7 +192,6 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta grib_handle* h = grib_handle_of_accessor(a); int err = 0; long forecast_time_unit; - long step_units; long start_step_value_old; long start_step_unit_old; size_t len = 0; @@ -266,11 +263,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - size_t value_len = 0; - Step step = step_from_string(val); if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) diff --git a/src/step_unit.h b/src/step_unit.h index aa827674d..8fd16d77a 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -107,7 +107,7 @@ class Unit { long duration; }; - const std::array tab_ = { + const std::array tab_ = {{ Entry{Value::MISSING , "MISSING" , 0}, Entry{Value::SECOND , "s" , 1}, Entry{Value::MINUTE , "m" , 60}, @@ -123,7 +123,7 @@ class Unit { Entry{Value::YEARS10 , "10Y" , 315360000}, Entry{Value::YEARS30 , "30Y" , 946080000}, Entry{Value::CENTURY , "C" , 3153600000}, - }; + }}; std::unordered_map name_to_value_; std::unordered_map value_to_name_; From aef6905224815243ea193f230507b5dc1828b8ce Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 10:55:09 +0000 Subject: [PATCH 054/469] ECC-1620: Fix stepUnits, when value == 0 --- src/grib_accessor_class_step_in_units.cc | 1 + src/step.cc | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index b4a2e0056..acd725b10 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -151,6 +151,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return err; Step step{forecast_time_value, forecast_time_unit}; + step.optimize_unit(); if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) return err; diff --git a/src/step.cc b/src/step.cc index 4617927dc..3e67b5216 100644 --- a/src/step.cc +++ b/src/step.cc @@ -154,6 +154,9 @@ void Step::init_double(double value, const Unit& unit) Step& Step::optimize_unit() { if (internal_value_ == 0) { + if (unit() > Unit{Unit::Value::HOUR}) { + set_unit(Unit{Unit::Value::HOUR}); + } return *this; } From c241db010723eb762abc1a71d9af95473b4afdc6 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 11:10:30 +0000 Subject: [PATCH 055/469] ECC-1620: Change mars.stepUnits to mars.stepunits --- definitions/grib2/products_s2s.def | 2 +- definitions/grib2/template.4.localtime.def | 2 +- definitions/grib2/template.4.point_in_time.def | 4 ++-- definitions/grib2/template.4.statistical.def | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index a20c733ee..09238eb49 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -73,7 +73,7 @@ alias mars.type = marsType; # Normally MARS step is endStep but for monthly means we want stepRange if (stepType is "avg") { alias mars.step = stepRange; - alias mars.stepUnits = stepUnits; + alias mars.stepunits = stepUnits; } if (isHindcast == 1) { diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index f1d533a84..f37c5c3aa 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -82,7 +82,7 @@ if (numberOfForecastsUsedInLocalTime == 1) { alias mars.date = dateOfForecastUsedInLocalTime : dump; alias mars.time = timeOfForecastUsedInLocalTime : dump; alias mars.step = endStep; - alias mars.stepUnits = stepUnits; + alias mars.stepunits = stepUnits; alias time.dataDate = dateOfForecastUsedInLocalTime; alias time.dataTime = timeOfForecastUsedInLocalTime; alias time.endStep = endStep; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 7164d8dbb..f32d04ba1 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -7,7 +7,7 @@ alias step=startStep; alias marsStep=startStep; alias mars.step=startStep; -alias mars.stepUnits=stepUnits; +alias mars.stepunits=stepUnits; alias marsStartStep = startStep; alias marsEndStep = endStep; @@ -21,7 +21,7 @@ meta stepHumanReadable step_human_readable(stepUnits, stepRange): hidden,no_copy alias time.stepType=stepType; alias time.stepRange=stepRange; -alias time.stepUnits=stepUnits; +alias time.stepunits=stepUnits; alias time.dataDate=dataDate; alias time.dataTime=dataTime; alias time.startStep=startStep; diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 810379d86..a726ca1c0 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -111,7 +111,7 @@ if (numberOfTimeRange == 1 || numberOfTimeRange == 2) { alias ls.stepRange=stepRange; alias mars.step=endStep; -alias mars.stepUnits=stepUnits; +alias mars.stepunits=stepUnits; alias time.stepType=stepType; alias time.stepRange=stepRange; From 72ac273cc0eb7a4d9a1f58784a1f06d4f890e77f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 11:10:49 +0000 Subject: [PATCH 056/469] ECC-1620: Change 255 to Unit{Unit::Value::MISSING} --- src/grib_accessor_class_g2end_step.cc | 6 +++--- src/grib_accessor_class_g2step_range.cc | 7 ++++--- src/grib_accessor_class_optimal_step_units.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index f04850488..efecc9302 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -562,7 +562,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) return err; - if (start_step_unit == 255) { + if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) { grib_context_log(h->context, GRIB_LOG_ERROR, "missing start step unit"); return GRIB_WRONG_STEP_UNIT; @@ -672,11 +672,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; long end_step_unit; - if (force_step_units == 255) { + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) return ret; - if (end_step_unit == 255) + if (Unit{end_step_unit} == Unit{Unit::Value::MISSING}) end_step_unit = Unit{Unit::Value::HOUR}.value(); } else { diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 8178ac7f0..5af96847f 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -150,7 +150,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - if (step_units == 255) { + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } @@ -291,7 +291,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return ret; if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) throw std::runtime_error("Failed to get stepUnits"); - if (step_units == 255) { + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } @@ -324,7 +324,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) throw std::runtime_error("Failed to get stepUnits"); - if (step_units == 255) { + + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 0daaefa26..7a9316952 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -160,7 +160,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_long(grib_accessor* a, long* val, size_t* len) { - if (staticStepUnits != 255) { + if (Unit{staticStepUnits} != Unit{Unit::Value::MISSING}) { *val = staticStepUnits; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index acd725b10..dd4fd6ebc 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -245,11 +245,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; long start_step_unit; - if (force_step_units == 255) { + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) return ret; - if (start_step_unit == 255) + if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) start_step_unit = Unit{Unit::Value::HOUR}.value(); } else { From 89a0a0e870cfc6e8e4e19554be44f85cbcd67972 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 11:17:02 +0000 Subject: [PATCH 057/469] ECC-1620: Adapt mars tests --- tests/grib_ecc-1212.sh | 2 +- tests/grib_mars_keys1.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/grib_ecc-1212.sh b/tests/grib_ecc-1212.sh index 286e9c0de..f52026594 100755 --- a/tests/grib_ecc-1212.sh +++ b/tests/grib_ecc-1212.sh @@ -59,7 +59,7 @@ cat > $tempRef < $tempRef << EOF "class": "od", "type": "an", "stream": "oper", - "stepUnits": "h", + "stepunits": "h", "step": 0, "levelist": 1000, "levtype": "pl", @@ -69,7 +69,7 @@ cat > $tempRef << EOF "class": "od", "type": "pf", "stream": "enfo", - "stepUnits": "h", + "stepunits": "h", "step": 0, "levelist": 1000, "levtype": "pl", From d0189a5df5cb59fa312c946a0324470e8c6a1ff1 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 22 Sep 2023 13:44:23 +0000 Subject: [PATCH 058/469] ECC-1620: GRIB1: mars.stepUnits to mars.stepunits --- definitions/grib1/section.1.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index f962f0aeb..0032f6117 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -224,7 +224,7 @@ alias ls.stepRange = stepRange; alias ls.dataDate = dataDate; alias mars.step = endStep; -alias mars.stepUnits = stepUnits; +alias mars.stepunits = stepUnits; alias mars.date = dataDate; alias mars.levtype = indicatorOfTypeOfLevel; alias mars.time = dataTime; From 6c1df597f7c7b655f2c529c292c0446495ca3574 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 4 Oct 2023 12:54:20 +0100 Subject: [PATCH 059/469] Add copyright notices --- src/step.cc | 19 ++++++++++--------- src/step_unit.cc | 10 ++++++++++ src/step_utilities.cc | 13 ++++++++++--- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/step.cc b/src/step.cc index 3e67b5216..b6f4afef3 100644 --- a/src/step.cc +++ b/src/step.cc @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #include #include #include @@ -28,7 +38,6 @@ Step step_from_string(std::string step) throw std::runtime_error("Could not parse step: " + step); } - std::vector parse_range(const std::string& range_str) { std::vector steps; @@ -42,7 +51,6 @@ std::vector parse_range(const std::string& range_str) return steps; } - bool Step::operator==(const Step& other) const { if ((internal_value_ == other.internal_value_) && (internal_unit_ == other.internal_unit_)) { @@ -51,7 +59,6 @@ bool Step::operator==(const Step& other) const return false; } - bool Step::operator>(const Step& step) const { auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); @@ -59,7 +66,6 @@ bool Step::operator>(const Step& step) const return a.internal_value_ > b.internal_value_; } - bool Step::operator<(const Step& step) const { auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); @@ -67,7 +73,6 @@ bool Step::operator<(const Step& step) const return a.internal_value_ < b.internal_value_; } - Step Step::operator+(const Step& step) const { Step tmp = step; @@ -76,7 +81,6 @@ Step Step::operator+(const Step& step) const return Step(a.internal_value_ + b.internal_value_, a.internal_unit_); } - Step Step::operator-(const Step& step) const { Step tmp = step; @@ -85,7 +89,6 @@ Step Step::operator-(const Step& step) const return Step(a.internal_value_ - b.internal_value_, a.internal_unit_); } - std::pair find_common_units(const Step& startStep, const Step& endStep) { Step a = startStep; @@ -135,7 +138,6 @@ void Step::sanity_check() const //} } - void Step::init_long(long value, const Unit& unit) { internal_value_ = value; @@ -201,4 +203,3 @@ std::string Step::value(const std::string& format) const { } return output; } - diff --git a/src/step_unit.cc b/src/step_unit.cc index 3c450fcf2..4fb323586 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #include "step_unit.h" Unit::Map Unit::map_{}; diff --git a/src/step_utilities.cc b/src/step_utilities.cc index cbea1621d..e4e4b02d4 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -1,7 +1,16 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #include "step_utilities.h" #include - std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key) { if (value_key && unit_key && grib_is_defined(h, unit_key) && grib_is_defined(h, value_key)) { @@ -20,7 +29,6 @@ std::optional get_step(grib_handle* h, const char* value_key, const char* } } - int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) { int err; @@ -33,7 +41,6 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un return GRIB_SUCCESS; } - bool is_future_output_enabled(grib_handle* h) { return h->context->is_future_step_format > 0; From 01ab2de0febff437dd5fda37546baf0189ebfe8d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 4 Oct 2023 13:07:55 +0100 Subject: [PATCH 060/469] Add copyright notices --- src/step.h | 10 ++++++++++ src/step_unit.h | 10 ++++++++++ src/step_utilities.h | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/step.h b/src/step.h index 63adc89fa..cc7eec47d 100644 --- a/src/step.h +++ b/src/step.h @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include diff --git a/src/step_unit.h b/src/step_unit.h index 8fd16d77a..bffb67715 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include diff --git a/src/step_utilities.h b/src/step_utilities.h index 5259a0ed3..eac3b2619 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include "grib_api_internal.h" From d614da57e72860cb32a091841beaa1e2bb8b3d20 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 4 Oct 2023 13:08:12 +0100 Subject: [PATCH 061/469] Do not use variable-length arrays --- src/step.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/step.cc b/src/step.cc index b6f4afef3..629143c34 100644 --- a/src/step.cc +++ b/src/step.cc @@ -189,7 +189,7 @@ Step& Step::optimize_unit() template <> std::string Step::value(const std::string& format) const { constexpr int max_size = 128; - char output[max_size]; + char output[128]; //Do not use variable-length arrays std::string u; if (unit_ == Unit::Value::HOUR) From ef45cef6e8f20f1c6bfe7c8e2b5a2ac42eb5a477 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 4 Oct 2023 13:17:18 +0000 Subject: [PATCH 062/469] Remove duplicated include --- src/step.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/step.h b/src/step.h index cc7eec47d..2397e77d3 100644 --- a/src/step.h +++ b/src/step.h @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include From 09c2c670493affc929a438487eed1f814fff91ef Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 9 Oct 2023 10:57:33 +0000 Subject: [PATCH 063/469] Remove future step format --- src/grib_api_internal.h | 1 - src/grib_context.cc | 6 +----- src/step_utilities.cc | 5 ----- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 3aa41ef77..bf6b3694d 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1067,7 +1067,6 @@ struct grib_context grib_trie* lists; grib_trie* expanded_descriptors; int file_pool_max_opened_files; - int is_future_step_format; #if GRIB_PTHREADS pthread_mutex_t mutex; #elif GRIB_OMP_THREADS diff --git a/src/grib_context.cc b/src/grib_context.cc index b5c8c0a2f..8f52633eb 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -361,8 +361,7 @@ static grib_context default_grib_context = { 0, /* classes */ 0, /* lists */ 0, /* expanded_descriptors */ - DEFAULT_FILE_POOL_MAX_OPENED_FILES, /* file_pool_max_opened_files */ - 0 + DEFAULT_FILE_POOL_MAX_OPENED_FILES /* file_pool_max_opened_files */ #if GRIB_PTHREADS , PTHREAD_MUTEX_INITIALIZER /* mutex */ @@ -395,7 +394,6 @@ grib_context* grib_context_get_default() const char* grib_data_quality_checks = NULL; const char* single_precision = NULL; const char* file_pool_max_opened_files = NULL; - const char* is_future_step_format = NULL; #ifdef ENABLE_FLOATING_POINT_EXCEPTIONS feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); @@ -418,7 +416,6 @@ grib_context* grib_context_get_default() no_spd = codes_getenv("ECCODES_GRIB_NO_SPD"); keep_matrix = codes_getenv("ECCODES_GRIB_KEEP_MATRIX"); file_pool_max_opened_files = getenv("ECCODES_FILE_POOL_MAX_OPENED_FILES"); - is_future_step_format = getenv("ECCODES_GRIB_IS_FUTURE_STEP_FORMAT"); /* On UNIX, when we read from a file we get exactly what is in the file on disk. * But on Windows a file can be opened in binary or text mode. In binary mode the system behaves exactly as in UNIX. @@ -553,7 +550,6 @@ grib_context* grib_context_get_default() default_grib_context.grib_data_quality_checks = grib_data_quality_checks ? atoi(grib_data_quality_checks) : 0; default_grib_context.single_precision = single_precision ? atoi(single_precision) : 0; default_grib_context.file_pool_max_opened_files = file_pool_max_opened_files ? atoi(file_pool_max_opened_files) : DEFAULT_FILE_POOL_MAX_OPENED_FILES; - default_grib_context.is_future_step_format = is_future_step_format ? atoi(is_future_step_format) : 0; } GRIB_MUTEX_UNLOCK(&mutex_c); diff --git a/src/step_utilities.cc b/src/step_utilities.cc index e4e4b02d4..d6f244acd 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -40,8 +40,3 @@ int set_step(grib_handle* h, const std::string& value_key, const std::string& un return err; return GRIB_SUCCESS; } - -bool is_future_output_enabled(grib_handle* h) -{ - return h->context->is_future_step_format > 0; -} From efd64951fbdb38179b02396c452d2f3cc5e45fb4 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 11 Oct 2023 11:48:04 +0000 Subject: [PATCH 064/469] ECC-1620: Remove future format --- tools/grib_get.cc | 1 - tools/grib_ls.cc | 1 - tools/grib_options.cc | 6 +----- tools/grib_set.cc | 1 - tools/grib_tools.cc | 9 +-------- tools/grib_tools.h | 2 -- 6 files changed, 2 insertions(+), 18 deletions(-) diff --git a/tools/grib_get.cc b/tools/grib_get.cc index 8ce60d7eb..12acb78da 100644 --- a/tools/grib_get.cc +++ b/tools/grib_get.cc @@ -15,7 +15,6 @@ grib_option grib_options[] = { { "f", 0, 0, 0, 1, 0 }, { "p:", 0, 0, 0, 1, 0 }, { "F:", 0, 0, 1, 1, "%g" }, - { "y", 0, 0, 0, 1, 0 }, { "B:", 0, 0, 0, 1, 0 }, { "l:", 0, 0, 0, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, diff --git a/tools/grib_ls.cc b/tools/grib_ls.cc index b15263576..0193b3e17 100644 --- a/tools/grib_ls.cc +++ b/tools/grib_ls.cc @@ -15,7 +15,6 @@ grib_option grib_options[] = { { "f", 0, 0, 1, 0, 0 }, { "p:", 0, 0, 0, 1, 0 }, { "F:", 0, 0, 1, 1, "%g" }, - { "y", 0, 0, 0, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "j", 0, "JSON output\n", 0, 1, 0 }, diff --git a/tools/grib_options.cc b/tools/grib_options.cc index 1b4c0c98b..475f22fdf 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -232,7 +232,7 @@ int grib_process_runtime_options(grib_context* context, int argc, char** argv, g if (grib_options_on("F:")) options->format = grib_options_get_option("F:"); else - options->format = NULL; + options->format = strdup("%g"); if (grib_options_on("i:")) { options->index_on = 1; @@ -250,10 +250,6 @@ int grib_process_runtime_options(grib_context* context, int argc, char** argv, g if (grib_options_on("X:")) options->infile_offset = atol(grib_options_get_option("X:")); - if (grib_options_on("y")) { - options->step_output_format = strdup("future"); - } - #ifndef ECCODES_ON_WINDOWS /* Check at compile time to ensure our file offset is at least 64 bits */ COMPILE_TIME_ASSERT(sizeof(options->infile_offset) >= 8); diff --git a/tools/grib_set.cc b/tools/grib_set.cc index b805c5f66..13adcde65 100644 --- a/tools/grib_set.cc +++ b/tools/grib_set.cc @@ -15,7 +15,6 @@ grib_option grib_options[] = { { "s:", 0, 0, 1, 1, 0 }, { "r", 0, 0, 0, 1, 0 }, { "d:", 0, 0, 0, 1, 0 }, - { "y", 0, 0, 0, 1, 0 }, /*{"n:","noise percentage","\n\t\tAdd noise to the data values. The noise added is the given percentage of the data value.\n",0,1,0},*/ { "p:", 0, 0, 1, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 7190610ca..fc5637ab6 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -112,8 +112,7 @@ static grib_runtime_options global_options = { 0, /* skip_all */ {{0,},}, /* grib_values tolerance[MAX_KEYS] */ 0, /* infile_offset */ - 0, /* JSON output */ - 0, /* step output format */ + 0 /* JSON output */ }; static grib_handle* grib_handle_new_from_file_x(grib_context* c, FILE* f, int mode, int headers_only, int* err) @@ -362,7 +361,6 @@ static int grib_tool_without_orderby(grib_runtime_options* options) while (!options->skip_all && ((h = grib_handle_new_from_file_x(c, infile->file, options->mode, options->headers_only, &err)) != NULL || err != GRIB_SUCCESS)) { - infile->handle_count++; options->handle_count++; @@ -407,11 +405,6 @@ static int grib_tool_without_orderby(grib_runtime_options* options) continue; } - if (options->step_output_format) { - size_t step_output_format_size = strlen(options->step_output_format); - grib_set_string(h, "stepOutputFormat", options->step_output_format, &step_output_format_size); - } - if (options->format != NULL) { size_t format_len = strlen(options->format); if ((err = grib_set_string_internal(h, "formatForDoubles", options->format, &format_len)) != GRIB_SUCCESS) diff --git a/tools/grib_tools.h b/tools/grib_tools.h index 9375083d9..ef9ed42c1 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -16,7 +16,6 @@ #endif #include "grib_api_internal.h" -#include #include #ifndef ECCODES_ON_WINDOWS #include @@ -175,7 +174,6 @@ typedef struct grib_runtime_options grib_values tolerance[MAX_KEYS]; off_t infile_offset; int json_output; - char* step_output_format; } grib_runtime_options; extern grib_option grib_options[]; From 07e183b0e117f550b199622ac62c221a40b9ed1a Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 11 Oct 2023 11:54:12 +0000 Subject: [PATCH 065/469] ECC-1620: Remove future step format --- ...grib_accessor_class_step_human_readable.cc | 62 ++++++------------- src/step_utilities.h | 1 - 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index b275c444a..557a58185 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -123,54 +123,28 @@ static int get_step_human_readable(grib_handle* h, char* result, size_t* length) { int err = 0; size_t slen = 2; - long step; + long step, hour, minute, second; - //size_t step_output_format_size = 128; - //char step_output_format[step_output_format_size]; - //if ((err = grib_get_string_internal(h, "step_output_format", step_output_format, &step_output_format_size)) != GRIB_SUCCESS) { - // printf("ERROR: unable to get step_output_format step_output_format=%s\n", step_output_format); - // return err; - //} - - //if (strcmp(step_output_format, "future") == 0) { - /* Change units to seconds (highest resolution) + /* Change units to seconds (highest resolution) * before computing the step value */ - // //err = grib_set_string(h, "stepUnits", "s", &slen); - // //if (err) return err; - // err = grib_get_long(h, "step", &step); - // if (err) return err; - - // long indicator = grib_get_long(h, "indicatorOfUnitOfTimeRange", &indicator); - // auto stepOptimizer = Step(step, indicator); - // stepOptimizer.optimize_unit(); - - // snprintf(result, 1024, "%d%s", stepOptimizer.value(), stepOptimizer.unit_as_str().c_str()); - //} - //else { - long hour, minute, second; + if ((err = grib_set_string(h, "stepUnits", "s", &slen)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long(h, "step", &step)) != GRIB_SUCCESS) + return err; + + hour = step/3600; + minute = step/60 % 60; + second = step % 60; + /* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */ + + if (second) { + snprintf(result, 1024, "%ldh %ldm %lds", hour, minute, second); + } else { + if (minute) snprintf(result, 1024, "%ldh %ldm", hour, minute); + else snprintf(result, 1024, "%ldh", hour); + } - /* Change units to seconds (highest resolution) - * before computing the step value - */ - err = grib_set_string(h, "stepUnits", "s", &slen); - if (err) return err; - err = grib_get_long(h, "step", &step); - if (err) return err; - - hour = step/3600; - minute = step/60 % 60; - second = step % 60; - /* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */ - - if (second) { - snprintf(result, 1024, "%ldh %ldm %lds", hour, minute, second); - } else { - if (minute) snprintf(result, 1024, "%ldh %ldm", hour, minute); - else snprintf(result, 1024, "%ldh", hour); - } - - //} *length = strlen(result); return GRIB_SUCCESS; } diff --git a/src/step_utilities.h b/src/step_utilities.h index eac3b2619..8224a3a32 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -15,5 +15,4 @@ #include std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key); -bool is_future_output_enabled(grib_handle* h); int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); From 5048933904ffe4976ec33af2c6b63da2ef748a37 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 11 Oct 2023 11:56:50 +0000 Subject: [PATCH 066/469] ECC-1620: Clean up set_step() --- src/step_utilities.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/step_utilities.cc b/src/step_utilities.cc index d6f244acd..dcf0d3dd5 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -32,11 +32,9 @@ std::optional get_step(grib_handle* h, const char* value_key, const char* int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) { int err; - Step step_copy = step.copy(); - //step_copy.optimize_unit(); - if ((err = grib_set_long_internal(h, value_key.c_str(), step_copy.value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(h, unit_key.c_str(), step_copy.unit().value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, unit_key.c_str(), step.unit().value())) != GRIB_SUCCESS) return err; return GRIB_SUCCESS; } From c52c05944cfb9d7306b8be634b591138a071ca64 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 11 Oct 2023 12:47:24 +0000 Subject: [PATCH 067/469] ECC-1620: Cleanup stepOutputFormat and forceStepUnits --- definitions/grib2/boot.def | 2 -- 1 file changed, 2 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 85e3d80e5..2d5c2bc03 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -17,8 +17,6 @@ constant million = 1000000 : hidden; constant grib2divider = 1000000; alias extraDimensionPresent=zero; transient angleSubdivisions=grib2divider; # micro degrees -transient stepOutputFormat="default" : hidden; -transient forceStepUnits = 0 : hidden; meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; From 06b5604692fb0d41326477f58b538f28aca00d73 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 11 Oct 2023 14:56:44 +0000 Subject: [PATCH 068/469] ECC-1620: fix grib2/boot.def --- definitions/grib2/boot.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 2d5c2bc03..f3930ea83 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -17,6 +17,7 @@ constant million = 1000000 : hidden; constant grib2divider = 1000000; alias extraDimensionPresent=zero; transient angleSubdivisions=grib2divider; # micro degrees +transient forceStepUnits = 255 : hidden; meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; @@ -40,4 +41,3 @@ template core "grib2/sections.def"; #} template section_8 "grib2/section.8.def"; -transient forceStepUnits = 255 : hidden; From 453207593cff5f1eb1d64ff090ad62eeb6caab23 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 12 Oct 2023 13:33:09 +0100 Subject: [PATCH 069/469] Testing: Delete temp files --- tests/grib_ecc-1620.sh | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 5ca007453..d7a77d65d 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -44,8 +44,6 @@ label="grib_ecc-1620" temp=temp.$label temp2=temp_2.$label - - #### CHECK: check optimal units are set correctly in GRIB files fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" @@ -58,7 +56,6 @@ grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" #${tools_dir}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 #grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" - ${tools_dir}/grib_set -s stepUnits:i=13,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" ${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 @@ -74,7 +71,6 @@ grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" ${tools_dir}/grib_set -s stepUnits:s=h,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" - #fn="${data_dir}/reduced_gaussian_sub_area.grib2" #low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ##high_level_keys="startStep:s,endStep:s" @@ -94,7 +90,6 @@ grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" #grib_check_key_equals $temp2 "-p $high_level_keys" "24 48" #exit - #### CHECK: grib_set - endStep + stepUnits fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" @@ -158,8 +153,6 @@ ${tools_dir}/grib_set -s stepRange:s=62D-122D $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1488 h 1440 h" grib_check_key_equals $temp2 "-p stepRange:s" "1488-2928" - - fn="${data_dir}/reduced_gaussian_surface.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys__="step,stepUnits:s" @@ -167,7 +160,6 @@ keys_s="step:s" keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" - ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540 s" grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59 m" @@ -192,7 +184,6 @@ grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0 m" grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" - fn="${data_dir}/reduced_gaussian_surface.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys__="step,stepUnits:s" @@ -200,7 +191,6 @@ keys_s="step:s,stepUnits:s" keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" - ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m" grib_check_key_equals $temp "-p $keys__" "0 m" @@ -260,8 +250,6 @@ grib_check_key_equals $temp "-p $keys_i" "24 h" grib_check_key_equals $temp "-p $keys_d" "24 h" - - fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s stepRange=60m-2h $fn $temp @@ -333,10 +321,7 @@ grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" -rm -f $temp +rm -f $temp $temp2 #~/build/eccodes/bin/grib_ls -m /perm/maro/referenceGRIBfiles4MTG2testing/grib1+2_operational_and_rd/151145_s2_enfo_cf_o2d_zos_2002_prod_ecmf_glob.grib2 #~/build/eccodes/bin/grib_ls -m /perm/maro/referenceGRIBfiles4MTG2testing/grib1+2_operational_and_rd/240023_ce_efas_fc_sfc_dis06_2022_0001_ecmf_lisflood.grib2 - - - From 338d20e893ecd52685f5ddab6ac2657deafd8338 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 12 Oct 2023 13:50:43 +0100 Subject: [PATCH 070/469] Cleanup --- src/grib_accessor_classes_hash.cc | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index d5ff3f491..cb9a8b437 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -51,8 +51,7 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; #endif #endif -static unsigned int -grib_accessor_classes_get_id (const char *str, size_t len) +static unsigned int grib_accessor_classes_get_id (const char *str, size_t len) { static const unsigned short asso_values[] = { @@ -621,20 +620,19 @@ static const struct accessor_class_hash classes[] = {"g1verificationdate", &grib_accessor_class_g1verificationdate} }; -const struct accessor_class_hash * -grib_accessor_classes_hash (const char *str, size_t len) +static const struct accessor_class_hash* grib_accessor_classes_hash(const char *str, size_t len) { - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = grib_accessor_classes_get_id (str, len); - - if (key <= MAX_HASH_VALUE) - { - const char *s = classes[key].name; + unsigned int key = grib_accessor_classes_get_id (str, len); - if (*str == *s && !strcmp (str + 1, s + 1)) - return &classes[key]; - } +#ifdef DEBUG + { + const char *s; + Assert( len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH ); + Assert( key <= MAX_HASH_VALUE ); + s = classes[key].name; + Assert( *str == *s && strcmp(str + 1, s + 1)==0 ); } - return 0; +#endif + + return &classes[key]; } From 9215c5ed66c6670673f35988a01b1ecb8c1ab9ca Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 12 Oct 2023 19:39:04 +0000 Subject: [PATCH 071/469] ECC-1620: Better error message for bad units --- src/grib_accessor_class_g2step_range.cc | 41 ++----------------- src/grib_accessor_class_optimal_step_units.cc | 28 ++++++++++++- src/step.cc | 14 ++----- src/step_unit.cc | 3 +- src/step_unit.h | 34 +++++++++++++-- 5 files changed, 66 insertions(+), 54 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 5d09ae740..96cb3d50c 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -187,45 +187,17 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } - -//static int pack_string_old(grib_accessor* a, const char* val, size_t* len) -//{ -// grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; -// grib_handle* h = grib_handle_of_accessor(a); -// int ret = 0; - -// std::vector steps = parse_range(val); -// if (steps.size() == 0) -// return GRIB_INVALID_ARGUMENT; - -// Step step_0 = steps[0]; -// Step step_1; -// if (steps.size() > 1) { -// std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); -// if ((ret = grib_set_long_internal(h, "stepUnits", step_0.unit().to_long()))) -// return ret; -// } - -// if ((ret = grib_set_long_internal(h, self->start_step, step_0.value()))) -// return ret; - -// if ((self->end_step != NULL) && (steps.size() > 1)) { -// if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) -// return ret; -// } -// return GRIB_SUCCESS; -//} - - -static int pack_string_new(grib_accessor* a, const char* val, size_t* len) +static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; std::vector steps = parse_range(val); - if (steps.size() == 0) + if (steps.size() == 0) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Could not parse step range: %s", val); return GRIB_INVALID_ARGUMENT; + } Step step_0 = steps[0]; Step step_1; @@ -247,11 +219,6 @@ static int pack_string_new(grib_accessor* a, const char* val, size_t* len) return GRIB_SUCCESS; } -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - return pack_string_new(a, val, len); -} - static int value_count(grib_accessor* a, long* count) { *count = 1; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 7a9316952..29017fc62 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -148,6 +148,21 @@ static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); + try { + if (!Unit::is_visible(Unit{*val})) + throw std::runtime_error("Unit masked"); + } + catch (std::exception& e) { + auto visible_units = Unit::list_visible_units(); + std::string visible_units_str; + for (auto& u : visible_units) + visible_units_str += Unit{u}.value() + ","; + visible_units_str.pop_back(); + + std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available units are: " + visible_units_str; + grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); + return GRIB_INVALID_ARGUMENT; + } int ret; staticStepUnits = *val; @@ -192,10 +207,21 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { try { long unit = Unit{val}.value(); + + if (!Unit::is_visible(Unit{val})) + throw std::runtime_error("Unit masked"); + pack_long(a, &unit, len); } catch (std::exception& e) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Invalid unit: %s", val); + auto visible_units = Unit::list_visible_units(); + std::string visible_units_str; + for (auto& u : visible_units) + visible_units_str += Unit{u}.value() + ","; + visible_units_str.pop_back(); + + std::string msg = "Invalid unit: " + std::string(val) + " (" + e.what() + ")" + ". Available units are: " + visible_units_str; + grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); return GRIB_INVALID_ARGUMENT; } return GRIB_SUCCESS; diff --git a/src/step.cc b/src/step.cc index 629143c34..ac7b3bed3 100644 --- a/src/step.cc +++ b/src/step.cc @@ -114,11 +114,11 @@ std::pair find_common_units(const Step& startStep, const Step& endSt b.recalculateValue(); } else { - auto it = std::find_if(Unit::unit_order_.begin(), Unit::unit_order_.end(), [&](const auto& e) { + auto it = std::find_if(Unit::publicly_visible_units_.begin(), Unit::publicly_visible_units_.end(), [&](const auto& e) { return e == a.unit().value() || e == b.unit().value(); }); - assert(it != Unit::unit_order_.end()); + assert(it != Unit::publicly_visible_units_.end()); a.set_unit(*it); b.set_unit(*it); @@ -165,7 +165,7 @@ Step& Step::optimize_unit() unit_ = internal_unit_; Seconds seconds = to_seconds(internal_value_, internal_unit_); - for (auto it = Unit::unit_order_.rbegin(); it != Unit::unit_order_.rend(); ++it) { + for (auto it = Unit::publicly_visible_units_.rbegin(); it != Unit::publicly_visible_units_.rend(); ++it) { long multiplier = Unit::get_converter().unit_to_duration(*it); if (seconds.count() % multiplier == 0) { internal_value_ = seconds.count() / multiplier; @@ -178,14 +178,6 @@ Step& Step::optimize_unit() return *this; } -//Step Step::copy() const { -// Step ret{}; -// ret.internal_value_ = internal_value_; -// ret.internal_unit_ = internal_unit_; -// ret.unit_ = unit_; -// return ret; -//} - template <> std::string Step::value(const std::string& format) const { constexpr int max_size = 128; diff --git a/src/step_unit.cc b/src/step_unit.cc index 4fb323586..54db81487 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -12,11 +12,10 @@ Unit::Map Unit::map_{}; -std::vector Unit::unit_order_ = { +std::vector Unit::publicly_visible_units_ = { Unit::Value::SECOND, Unit::Value::MINUTE, Unit::Value::HOUR, - //Unit::Value::DAY, }; std::vector Unit::complete_unit_order_ = { diff --git a/src/step_unit.h b/src/step_unit.h index bffb67715..778e17fed 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -16,6 +16,7 @@ #include #include #include +#include template using Minutes = std::chrono::duration>; template using Hours = std::chrono::duration>; @@ -60,9 +61,24 @@ class Unit { }; Unit() : internal_value_(Value::HOUR) {} + explicit Unit(Value unit_value) : internal_value_(unit_value) {} - explicit Unit(const std::string& unit_value) {internal_value_ = map_.name_to_unit(unit_value);} - explicit Unit(long unit_value) {internal_value_ = map_.long_to_unit(unit_value);} + + explicit Unit(const std::string& unit_value) { + try { + internal_value_ = map_.name_to_unit(unit_value); + } catch (std::exception& e) { + throw std::runtime_error(std::string{"Unit not found"}); + } + } + + explicit Unit(long unit_value) { + try { + internal_value_ = map_.long_to_unit(unit_value); + } catch (std::exception& e) { + throw std::runtime_error(std::string{"Unit not found"}); + } + } bool operator>(const Unit& other) const {return map_.unit_to_duration(internal_value_) > map_.unit_to_duration(other.internal_value_);} bool operator==(const Value value) const {return map_.unit_to_duration(internal_value_) == map_.unit_to_duration(value);} @@ -75,8 +91,20 @@ class Unit { return *this; } + static bool is_visible(Unit unit) { + return std::find(publicly_visible_units_.begin(), publicly_visible_units_.end(), unit.internal_value_) != publicly_visible_units_.end(); + } + + static std::vector list_visible_units() { + std::vector result; + for (const auto& value : publicly_visible_units_) { + result.push_back(Unit(value)); + } + return result; + } + template T value() const; - static std::vector unit_order_; + static std::vector publicly_visible_units_; static std::vector complete_unit_order_; private: From e0cd0dc7930b41e183868742486576d0e6a7f971 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 12 Oct 2023 22:13:44 +0000 Subject: [PATCH 072/469] ECC-1620: Restore test --- tests/grib_step.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/grib_step.sh b/tests/grib_step.sh index a2e41636f..2b1ca37b6 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -137,9 +137,8 @@ grib_check_key_equals $temp "stepRange:d" "28" ${tools_dir}/grib_set -s stepRange:i=24 $grib2_sample $temp grib_check_key_equals $temp "stepRange,startStep,endStep" "24 24 24" # Should this be an error? currently this gets cast from double to int -# In ECC-1620 this behaviour changes -#${tools_dir}/grib_set -s stepRange:d=14.56 $grib2_sample $temp -#grib_check_key_equals $temp "stepRange,startStep,endStep" "14 14 14" +${tools_dir}/grib_set -s stepRange:d=14.56 $grib2_sample $temp +grib_check_key_equals $temp "stepRange,startStep,endStep" "14 14 14" # Key validityDateTime # ----------------------------------------------- From d21f76ced7beaffef500b53c052ab5a807ff5f90 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 12 Oct 2023 22:23:17 +0000 Subject: [PATCH 073/469] ECC-1620: Grep for whole error message --- tests/grib_set.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 0489c61c3..26cec498b 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -223,8 +223,7 @@ ${tools_dir}/grib_set -s stepUnits=d $input $outfile > $temp 2>&1 status=$? set -e [ $status -ne 0 ] -grep -q "Invalid argument" $temp -#grep -q "stepUnits: No such code table entry.*Did you mean" $temp +grep -q "Invalid unit:.*(Unit not found). Available units are:.*" $temp # ------------------------ # Unreadable message From e1fff76338b206f9beb9981cfab2737ffee44e26 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 13 Oct 2023 11:56:56 +0000 Subject: [PATCH 074/469] ECC-1620: Remove formatForDoubles --- tools/grib_tools.cc | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index fc5637ab6..9c5663a00 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -405,19 +405,6 @@ static int grib_tool_without_orderby(grib_runtime_options* options) continue; } - if (options->format != NULL) { - size_t format_len = strlen(options->format); - if ((err = grib_set_string_internal(h, "formatForDoubles", options->format, &format_len)) != GRIB_SUCCESS) - return err; - } - else { - char format[1024]; - size_t format_len = sizeof(format); - if ((err = grib_get_string_internal(h, "formatForDoubles", format, &format_len)) != GRIB_SUCCESS) - return err; - options->format = strdup(format); - } - grib_tool_new_handle_action(options, h); grib_print_key_values(options, h); From bd8ee44ab4a9f8a0b1b363e1ff8f03de50122a6f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 16 Oct 2023 09:04:58 +0000 Subject: [PATCH 075/469] ECC-1620: Test negative forecastTime with sub-hourly units --- tests/grib_ecc-1620.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index d7a77d65d..fb539b7d8 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -43,6 +43,19 @@ grib_check_key_equals() label="grib_ecc-1620" temp=temp.$label temp2=temp_2.$label +samples_dir=$ECCODES_SAMPLES_PATH + + +#### CHECK negative forecastTime +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +${tools_dir}/grib_set -s forecastTime=-6,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "-6 h 6 h" + +grib_check_key_equals $temp "-s stepUnits:s=h -p startStep:s,endStep:s" "-6 0" +grib_check_key_equals $temp "-s stepUnits:s=m -p startStep:s,endStep:s" "-360m 0m" +grib_check_key_equals $temp "-s stepUnits:s=s -p startStep:s,endStep:s" "-21600s 0s" + #### CHECK: check optimal units are set correctly in GRIB files fn="${data_dir}/reduced_gaussian_sub_area.grib2" From b077cdbb856cc8f14a7a9d3ba52cf11c84f54def Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 16 Oct 2023 15:28:14 +0100 Subject: [PATCH 076/469] Cleanup --- src/grib_accessor_class_g2end_step.cc | 16 ---------------- src/grib_accessor_class_step_in_units.cc | 8 +------- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index a8d1a4968..cfa8500b6 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -178,13 +178,11 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) self->numberOfTimeRange = grib_arguments_get_name(h, c, n++); } - static void dump(grib_accessor* a, grib_dumper* dumper) { grib_dump_double(dumper, a, NULL); } - // See GRIB-488 static bool is_special_expver(const grib_handle* h) { @@ -205,7 +203,6 @@ static bool is_special_expver(const grib_handle* h) return false; } - static int convert_time_range_long_( grib_handle* h, long stepUnits, /* step_units */ @@ -227,7 +224,6 @@ static int convert_time_range_long_( return GRIB_SUCCESS; } - static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -273,7 +269,6 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -322,7 +317,6 @@ static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* return GRIB_SUCCESS; } - #define MAX_NUM_TIME_RANGES 16 /* maximum number of time range specifications */ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t* len) { @@ -377,8 +371,6 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t return GRIB_DECODING_ERROR; } - - static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -439,7 +431,6 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si return GRIB_DECODING_ERROR; } - // For the old implementation of unpack_long, see // src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc // @@ -477,7 +468,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -512,8 +502,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return GRIB_SUCCESS; } - - static int pack_long_(grib_accessor* a, const long end_step_value, const long end_step_unit) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -628,8 +616,6 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en return GRIB_SUCCESS; } - - static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -667,7 +653,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } - static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); @@ -692,7 +677,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return pack_long_(a, *val, end_step_unit); } - static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 02641d714..1262ac5e3 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -135,7 +135,6 @@ static void dump(grib_accessor* a, grib_dumper* dumper) grib_dump_double(dumper, a, NULL); } - static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; @@ -161,8 +160,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - - static int unpack_double(grib_accessor* a, double * val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; @@ -187,8 +184,7 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) return GRIB_SUCCESS; } - -int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) { +static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; @@ -234,7 +230,6 @@ int pack_long_new_(grib_accessor* a, const long start_step_value, const long sta return GRIB_SUCCESS; } - static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); @@ -261,7 +256,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; } - static int pack_string(grib_accessor* a, const char* val, size_t* len) { int ret = 0; From e342186550a65aa6bed63f3ce3e06e00108ebffa Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 16 Oct 2023 15:31:23 +0100 Subject: [PATCH 077/469] Cleanup --- src/grib_accessor_class_optimal_step_units.cc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 29017fc62..3461d85e8 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/********************************************* - * Enrico Fucile - *******************************************/ - #include "grib_api_internal.h" #include "step.h" #include "step_utilities.h" @@ -136,7 +132,6 @@ static void dump(grib_accessor* a, grib_dumper* dumper) grib_dump_string(dumper, a, NULL); } - static size_t string_length(grib_accessor* a) { return 255; @@ -147,7 +142,7 @@ static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); try { if (!Unit::is_visible(Unit{*val})) throw std::runtime_error("Unit masked"); From 8bda848b382dcdabd3b34c5eeab8d57a9b13df8e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 16 Oct 2023 15:34:58 +0100 Subject: [PATCH 078/469] Cleanup --- src/grib_accessor_class_step_in_units.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 1262ac5e3..1a9a92e70 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_step_in_units = &_grib_accessor_class_s static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - int n = 0; + int n = 0; self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); @@ -138,7 +138,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - int err = 0; + int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); @@ -163,7 +163,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int unpack_double(grib_accessor* a, double * val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - int err = 0; + int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); @@ -184,10 +184,11 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) return GRIB_SUCCESS; } -static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) { +static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) +{ grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); - int err = 0; + grib_handle* h = grib_handle_of_accessor(a); + int err = 0; long forecast_time_unit; long start_step_value_old; long start_step_unit_old; @@ -232,8 +233,8 @@ static int pack_long_new_(grib_accessor* a, const long start_step_value, const l static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); - int ret; + grib_handle* h = grib_handle_of_accessor(a); + int ret = GRIB_SUCCESS; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) @@ -258,7 +259,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - int ret = 0; + int ret = GRIB_SUCCESS; Step step = step_from_string(val); if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) @@ -271,7 +272,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); - int ret = 0; + int ret = GRIB_SUCCESS; long start_step_value; long start_step_unit; long step_units; From 12f1612647900bd6c9958a9352927b1ef93b5c9c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 18 Oct 2023 08:22:46 +0000 Subject: [PATCH 079/469] ECC-1620: Remove restriction in stepUnits --- src/grib_accessor_class_optimal_step_units.cc | 38 +++++++++---------- src/step_unit.h | 18 ++++----- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 29017fc62..a29dfdf75 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -147,19 +147,22 @@ static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); + auto supported_units = Unit::list_supported_units(); try { - if (!Unit::is_visible(Unit{*val})) - throw std::runtime_error("Unit masked"); + Unit unit{*val}; // throws if not supported + auto iter = std::find(supported_units.begin(), supported_units.end(), unit); + if (iter == supported_units.end()) { + throw std::runtime_error{"Unit not supported"}; + } } catch (std::exception& e) { - auto visible_units = Unit::list_visible_units(); - std::string visible_units_str; - for (auto& u : visible_units) - visible_units_str += Unit{u}.value() + ","; - visible_units_str.pop_back(); + std::string supported_units_str; + for (auto& u : supported_units) + supported_units_str += Unit{u}.value() + ","; + supported_units_str.pop_back(); - std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available units are: " + visible_units_str; + std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available X tunits are: " + supported_units_str; grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); return GRIB_INVALID_ARGUMENT; } @@ -207,23 +210,20 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { try { long unit = Unit{val}.value(); - - if (!Unit::is_visible(Unit{val})) - throw std::runtime_error("Unit masked"); - pack_long(a, &unit, len); } catch (std::exception& e) { - auto visible_units = Unit::list_visible_units(); - std::string visible_units_str; - for (auto& u : visible_units) - visible_units_str += Unit{u}.value() + ","; - visible_units_str.pop_back(); + auto supported_units = Unit::list_supported_units(); + std::string supported_units_str; + for (auto& u : supported_units) + supported_units_str += Unit{u}.value() + ","; + supported_units_str.pop_back(); - std::string msg = "Invalid unit: " + std::string(val) + " (" + e.what() + ")" + ". Available units are: " + visible_units_str; + std::string msg = "Invalid unit: " + std::string(val) + " (" + e.what() + ")" + ". Available units are: " + supported_units_str; grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); return GRIB_INVALID_ARGUMENT; } + return GRIB_SUCCESS; } diff --git a/src/step_unit.h b/src/step_unit.h index 778e17fed..7dc7eeb33 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -91,22 +91,22 @@ class Unit { return *this; } - static bool is_visible(Unit unit) { - return std::find(publicly_visible_units_.begin(), publicly_visible_units_.end(), unit.internal_value_) != publicly_visible_units_.end(); - } - static std::vector list_visible_units() { + template T value() const; + static std::vector publicly_visible_units_; + static std::vector complete_unit_order_; + + static std::vector list_supported_units() { std::vector result; - for (const auto& value : publicly_visible_units_) { + for (const auto& value : complete_unit_order_) { + if (value == Value::MISSING) + continue; result.push_back(Unit(value)); } + return result; } - template T value() const; - static std::vector publicly_visible_units_; - static std::vector complete_unit_order_; - private: class Map { public: From e7edaa21364311c84b9176d1fb86570c3d287fe8 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 18 Oct 2023 08:43:30 +0000 Subject: [PATCH 080/469] ECC-1620: Catch exceptions --- src/grib_accessor_class_g2end_step.cc | 104 +++++++---- src/grib_accessor_class_g2step_range.cc | 164 ++++++++++-------- src/grib_accessor_class_optimal_step_units.cc | 44 +++-- src/grib_accessor_class_step_in_units.cc | 86 ++++++--- 4 files changed, 244 insertions(+), 154 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index cfa8500b6..bb398e5ea 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -456,13 +456,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return ret; Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); - if (numberOfTimeRange == 1) { - ret = unpack_one_time_range_long_(a, val, len); - return ret; + try { + if (numberOfTimeRange == 1) { + ret = unpack_one_time_range_long_(a, val, len); + return ret; + } + else { + ret = unpack_multiple_time_ranges_long_(a, val, len); + return ret; + } } - else { - ret = unpack_multiple_time_ranges_long_(a, val, len); - return ret; + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "grib_accessor_g2end_step::unpack_long: %s", e.what()); + return GRIB_DECODING_ERROR; } return GRIB_SUCCESS; @@ -490,13 +496,19 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); - if (numberOfTimeRange == 1) { - ret = unpack_one_time_range_double_(a, val, len); - return ret; + try { + if (numberOfTimeRange == 1) { + ret = unpack_one_time_range_double_(a, val, len); + return ret; + } + else { + ret = unpack_multiple_time_ranges_double_(a, val, len); + return ret; + } } - else { - ret = unpack_multiple_time_ranges_double_(a, val, len); - return ret; + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "grib_accessor_g2end_step::unpack_double: %s", e.what()); + return GRIB_DECODING_ERROR; } return GRIB_SUCCESS; @@ -634,21 +646,27 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_string(h, "formatForDoubles", fp_format, &fp_format_len)) != GRIB_SUCCESS) return ret; - Step step(step_value, step_units); - step.set_unit(step_units); + try { + Step step(step_value, step_units); + step.set_unit(step_units); - std::stringstream ss; + std::stringstream ss; - ss << step.value(fp_format); + ss << step.value(fp_format); - size_t size = ss.str().size() + 1; + size_t size = ss.str().size() + 1; - if (*len < size) - return GRIB_ARRAY_TOO_SMALL; + if (*len < size) + return GRIB_ARRAY_TOO_SMALL; - *len = size; + *len = size; - memcpy(val, ss.str().c_str(), size); + memcpy(val, ss.str().c_str(), size); + } + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "grib_accessor_g2end_step::unpack_string: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } @@ -662,32 +680,44 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) return ret; - long end_step_unit; - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { - if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) - return ret; + try { + long end_step_unit; + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) + return ret; - if (Unit{end_step_unit} == Unit{Unit::Value::MISSING}) - end_step_unit = Unit{Unit::Value::HOUR}.value(); + if (Unit{end_step_unit} == Unit{Unit::Value::MISSING}) + end_step_unit = Unit{Unit::Value::HOUR}.value(); + } + else { + end_step_unit = force_step_units; + } + ret = pack_long_(a, *val, end_step_unit); } - else { - end_step_unit = force_step_units; + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "grib_accessor_g2end_step::pack_long: %s", e.what()); + return GRIB_DECODING_ERROR; } - - return pack_long_(a, *val, end_step_unit); + return ret; } static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - Step end_step = step_from_string(val); - end_step.optimize_unit(); + try { + Step end_step = step_from_string(val); + end_step.optimize_unit(); - if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().value())) != GRIB_SUCCESS) - return ret; + if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().value())) != GRIB_SUCCESS) + return ret; - if ((ret = pack_long_(a, end_step.value(), end_step.unit().value())) != GRIB_SUCCESS) - return ret; + if ((ret = pack_long_(a, end_step.value(), end_step.unit().value())) != GRIB_SUCCESS) + return ret; + } + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "grib_accessor_g2end_step::pack_string: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 96cb3d50c..d93358a94 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -146,43 +146,49 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; - } - - char fp_format[128] = "%g"; - size_t fp_format_len = sizeof(fp_format); - if ((ret = grib_get_string_internal(h, "formatForDoubles", fp_format, &fp_format_len)) != GRIB_SUCCESS) - return ret; - std::stringstream ss; + try { + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } - Step start_step{start_step_value, step_units}; - if (self->end_step == NULL) { - ss << start_step.value(fp_format); - } - else { - if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + char fp_format[128] = "%g"; + size_t fp_format_len = sizeof(fp_format); + if ((ret = grib_get_string_internal(h, "formatForDoubles", fp_format, &fp_format_len)) != GRIB_SUCCESS) return ret; + std::stringstream ss; - Step end_step{end_step_value, step_units}; - - if (start_step_value == end_step_value) { - ss << end_step.value(fp_format); + Step start_step{start_step_value, step_units}; + if (self->end_step == NULL) { + ss << start_step.value(fp_format); } else { - ss << start_step.value(fp_format) << "-" << end_step.value(fp_format); + if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + return ret; + + Step end_step{end_step_value, step_units}; + + if (start_step_value == end_step_value) { + ss << end_step.value(fp_format); + } + else { + ss << start_step.value(fp_format) << "-" << end_step.value(fp_format); + } } - } - size = ss.str().size() + 1; + size = ss.str().size() + 1; - if (*len < size) - return GRIB_ARRAY_TOO_SMALL; + if (*len < size) + return GRIB_ARRAY_TOO_SMALL; - *len = size; + *len = size; - memcpy(val, ss.str().c_str(), size); + memcpy(val, ss.str().c_str(), size); + } + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_g2step_range::unpack_string: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } @@ -193,28 +199,34 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - std::vector steps = parse_range(val); - if (steps.size() == 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Could not parse step range: %s", val); - return GRIB_INVALID_ARGUMENT; - } - - Step step_0 = steps[0]; - Step step_1; - if (steps.size() > 1) { - std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); - } + try { + std::vector steps = parse_range(val); + if (steps.size() == 0) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Could not parse step range: %s", val); + return GRIB_INVALID_ARGUMENT; + } - if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().value()))) - return ret; - if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) - return ret; + Step step_0 = steps[0]; + Step step_1; + if (steps.size() > 1) { + std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); + } - if ((self->end_step != NULL) && (steps.size() > 1)) { - if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) + if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().value()))) return ret; - if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) + if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) return ret; + + if ((self->end_step != NULL) && (steps.size() > 1)) { + if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) + return ret; + if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) + return ret; + } + } + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_g2step_range::pack_string: %s", e.what()); + return GRIB_INVALID_ARGUMENT; } return GRIB_SUCCESS; } @@ -251,22 +263,28 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((ret = grib_get_long_internal(h, self->start_step, &end_start_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - throw std::runtime_error("Failed to get stepUnits"); - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + try { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; - } + throw std::runtime_error("Failed to get stepUnits"); + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } - Step start_step{end_start_value, step_units}; - if (self->end_step == NULL) { - *val = start_step.value(); + Step start_step{end_start_value, step_units}; + if (self->end_step == NULL) { + *val = start_step.value(); + } + else { + if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + return ret; + Step end_step{end_step_value, step_units}; + *val = end_step.value(); + } } - else { - if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) - return ret; - Step end_step{end_step_value, step_units}; - *val = end_step.value(); + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Failed to unpack step range: %s", e.what()); + return GRIB_DECODING_ERROR; } return GRIB_SUCCESS; @@ -287,20 +305,26 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) throw std::runtime_error("Failed to get stepUnits"); - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { - if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) - return ret; - } + try { + if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) + return ret; + } - Step start_step{end_start_value, step_units}; - if (self->end_step == NULL) { - *val = start_step.value(); + Step start_step{end_start_value, step_units}; + if (self->end_step == NULL) { + *val = start_step.value(); + } + else { + if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) + return ret; + Step end_step{end_step_value, step_units}; + *val = end_step.value(); + } } - else { - if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) - return ret; - Step end_step{end_step_value, step_units}; - *val = end_step.value(); + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_accessor_g2step_range::unpack_double: %s", e.what()); + return GRIB_DECODING_ERROR; } return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 9bbca118e..362415299 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -173,29 +173,35 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_long(grib_accessor* a, long* val, size_t* len) { - if (Unit{staticStepUnits} != Unit{Unit::Value::MISSING}) { - *val = staticStepUnits; - return GRIB_SUCCESS; - } + try { + if (Unit{staticStepUnits} != Unit{Unit::Value::MISSING}) { + *val = staticStepUnits; + return GRIB_SUCCESS; + } - grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + grib_handle* h = grib_handle_of_accessor(a); - auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); - auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); + auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); + auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); - if (forecast_time_opt && time_range_opt) { - auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); - *val = step_a.unit().value(); - } - else if (forecast_time_opt && !time_range_opt) { - *val = forecast_time_opt.value().optimize_unit().unit().value(); - } - else if (!forecast_time_opt && time_range_opt) { - *val = time_range_opt.value().optimize_unit().unit().value(); + if (forecast_time_opt && time_range_opt) { + auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); + *val = step_a.unit().value(); + } + else if (forecast_time_opt && !time_range_opt) { + *val = forecast_time_opt.value().optimize_unit().unit().value(); + } + else if (!forecast_time_opt && time_range_opt) { + *val = time_range_opt.value().optimize_unit().unit().value(); + } + else if (!forecast_time_opt && !time_range_opt) { + *val = Unit{Unit::Value::HOUR}.value(); + } } - else if (!forecast_time_opt && !time_range_opt) { - *val = Unit{Unit::Value::HOUR}.value(); + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, e.what()); + return GRIB_INTERNAL_ERROR; } return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 1a9a92e70..d88c8c62c 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -149,13 +149,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) return err; - Step step{forecast_time_value, forecast_time_unit}; - step.optimize_unit(); + try { + Step step{forecast_time_value, forecast_time_unit}; + step.optimize_unit(); - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) - return err; + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) + return err; - *val = step.value(Unit{step_units}); + *val = step.value(Unit{step_units}); + } + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } @@ -174,12 +180,18 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) if ((err = grib_get_long_internal(h, self->forecast_time_value, &forecast_time_value))) return err; - Step step{forecast_time_value, forecast_time_unit}; + try { + Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) - return err; + if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) + return err; - *val = step.value(Unit{step_units}); + *val = step.value(Unit{step_units}); + } + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } @@ -241,15 +253,21 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return ret; long start_step_unit; - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { - if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) - return ret; - - if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) - start_step_unit = Unit{Unit::Value::HOUR}.value(); + try { + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) + return ret; + + if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) + start_step_unit = Unit{Unit::Value::HOUR}.value(); + } + else { + start_step_unit = force_step_units; + } } - else { - start_step_unit = force_step_units; + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); + return GRIB_DECODING_ERROR; } ret = pack_long_new_(a, *val, start_step_unit); @@ -260,10 +278,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { int ret = GRIB_SUCCESS; - Step step = step_from_string(val); + try { + Step step = step_from_string(val); - if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) - return ret; + if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) + return ret; + } + catch (std::exception& e) { + grib_context_log(a->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } @@ -288,19 +312,25 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_string_internal(h, "formatForDoubles", fp_format, &fp_format_len)) != GRIB_SUCCESS) return ret; - Step step{start_step_value, start_step_unit}; - std::stringstream ss; + try { + Step step{start_step_value, start_step_unit}; + std::stringstream ss; - ss << step.value(fp_format); + ss << step.value(fp_format); - size_t size = ss.str().size() + 1; + size_t size = ss.str().size() + 1; - if (*len < size) - return GRIB_ARRAY_TOO_SMALL; + if (*len < size) + return GRIB_ARRAY_TOO_SMALL; - *len = size; + *len = size; - memcpy(val, ss.str().c_str(), size); + memcpy(val, ss.str().c_str(), size); + } + catch (std::exception& e) { + grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } From 6e1c08e290379e16a18ef561e5575f80cc22b483 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 07:51:18 +0000 Subject: [PATCH 081/469] ECC-1620: Change long -> uint64_t --- src/step_unit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/step_unit.h b/src/step_unit.h index 7dc7eeb33..5fe457ad2 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -142,7 +142,7 @@ class Unit { struct Entry { Value unit_value; std::string unit_name; - long duration; + uint64_t duration; }; const std::array tab_ = {{ From 094a055e1634af7956461a2f3f556a5eb1df3edf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 08:29:24 +0000 Subject: [PATCH 082/469] ECC-1620: Better variable name for selected step units allowed in a GRIB file --- src/step.cc | 6 +++--- src/step_unit.cc | 2 +- src/step_unit.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/step.cc b/src/step.cc index ac7b3bed3..a5fc057c6 100644 --- a/src/step.cc +++ b/src/step.cc @@ -114,11 +114,11 @@ std::pair find_common_units(const Step& startStep, const Step& endSt b.recalculateValue(); } else { - auto it = std::find_if(Unit::publicly_visible_units_.begin(), Unit::publicly_visible_units_.end(), [&](const auto& e) { + auto it = std::find_if(Unit::grib_selected_units.begin(), Unit::grib_selected_units.end(), [&](const auto& e) { return e == a.unit().value() || e == b.unit().value(); }); - assert(it != Unit::publicly_visible_units_.end()); + assert(it != Unit::grib_selected_units.end()); a.set_unit(*it); b.set_unit(*it); @@ -165,7 +165,7 @@ Step& Step::optimize_unit() unit_ = internal_unit_; Seconds seconds = to_seconds(internal_value_, internal_unit_); - for (auto it = Unit::publicly_visible_units_.rbegin(); it != Unit::publicly_visible_units_.rend(); ++it) { + for (auto it = Unit::grib_selected_units.rbegin(); it != Unit::grib_selected_units.rend(); ++it) { long multiplier = Unit::get_converter().unit_to_duration(*it); if (seconds.count() % multiplier == 0) { internal_value_ = seconds.count() / multiplier; diff --git a/src/step_unit.cc b/src/step_unit.cc index 54db81487..e356d4ba4 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -12,7 +12,7 @@ Unit::Map Unit::map_{}; -std::vector Unit::publicly_visible_units_ = { +std::vector Unit::grib_selected_units = { Unit::Value::SECOND, Unit::Value::MINUTE, Unit::Value::HOUR, diff --git a/src/step_unit.h b/src/step_unit.h index 5fe457ad2..ee9ae3638 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -93,7 +93,7 @@ class Unit { template T value() const; - static std::vector publicly_visible_units_; + static std::vector grib_selected_units; static std::vector complete_unit_order_; static std::vector list_supported_units() { From 55f501f8b5e1d1bb88543c2607e6970ce1fed3b4 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 12:06:32 +0000 Subject: [PATCH 083/469] ECC-1620: Rename shadowed variable: value --- src/step_unit.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/step_unit.h b/src/step_unit.h index ee9ae3638..0842014de 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -98,10 +98,10 @@ class Unit { static std::vector list_supported_units() { std::vector result; - for (const auto& value : complete_unit_order_) { - if (value == Value::MISSING) + for (const auto& val : complete_unit_order_) { + if (val == Value::MISSING) continue; - result.push_back(Unit(value)); + result.push_back(Unit(val)); } return result; From ece252800a59b04a20748a6021ba0c4e3ce3df02 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 12:10:48 +0000 Subject: [PATCH 084/469] ECC-1620: Remove sanity_check() for steps --- src/step.cc | 9 --------- src/step.h | 1 - 2 files changed, 10 deletions(-) diff --git a/src/step.cc b/src/step.cc index a5fc057c6..13445d69e 100644 --- a/src/step.cc +++ b/src/step.cc @@ -130,20 +130,11 @@ std::pair find_common_units(const Step& startStep, const Step& endSt return {a, b}; } -void Step::sanity_check() const -{ - static_assert(sizeof(int) == 4, "int is not 4 bytes"); - //if (!(internal_value_ >= std::numeric_limits::min() && internal_value_ <= std::numeric_limits::max())) { - //throw std::out_of_range("Step is out of range."); - //} -} - void Step::init_long(long value, const Unit& unit) { internal_value_ = value; internal_unit_ = unit; unit_ = internal_unit_; - sanity_check(); } void Step::init_double(double value, const Unit& unit) diff --git a/src/step.h b/src/step.h index 2397e77d3..624e751ac 100644 --- a/src/step.h +++ b/src/step.h @@ -74,7 +74,6 @@ class Step { private: void init_long(long value, const Unit& unit); void init_double(double value, const Unit& unit); - void sanity_check() const; Step& recalculateValue() { if (internal_value_ == 0) { internal_unit_ = unit_; From 6a24296bb1cfa74786b9c791caf141332011aed7 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 13:14:32 +0000 Subject: [PATCH 085/469] ECC-1620: Cleanup and comment --- src/step.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/step.cc b/src/step.cc index 13445d69e..f51718d23 100644 --- a/src/step.cc +++ b/src/step.cc @@ -175,9 +175,10 @@ std::string Step::value(const std::string& format) const { char output[128]; //Do not use variable-length arrays std::string u; - if (unit_ == Unit::Value::HOUR) - u = ""; - else + // Do not print unit if it is HOUR to keep backward compatibility + // with previous versions of ecCodes. This is a temporary solution. + + if (unit_ != Unit::Value::HOUR) u = unit_.value(); int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); From ca4b70307c2ceb2b9e973bcff19e54a54df5ee84 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 19 Oct 2023 15:34:22 +0000 Subject: [PATCH 086/469] ECC-1620: Switch to uint64_t for duration and minor fixes --- src/step.cc | 16 +++++++++------- src/step.h | 2 +- src/step_unit.h | 6 +++--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/step.cc b/src/step.cc index f51718d23..6d2fd1452 100644 --- a/src/step.cc +++ b/src/step.cc @@ -139,7 +139,7 @@ void Step::init_long(long value, const Unit& unit) void Step::init_double(double value, const Unit& unit) { - long seconds = Unit::get_converter().unit_to_duration(unit.value()); + auto seconds = Unit::get_converter().unit_to_duration(unit.value()); init_long(static_cast(value * seconds), Unit{Unit::Value::SECOND}); unit_ = unit; } @@ -157,7 +157,7 @@ Step& Step::optimize_unit() Seconds seconds = to_seconds(internal_value_, internal_unit_); for (auto it = Unit::grib_selected_units.rbegin(); it != Unit::grib_selected_units.rend(); ++it) { - long multiplier = Unit::get_converter().unit_to_duration(*it); + auto multiplier = Unit::get_converter().unit_to_duration(*it); if (seconds.count() % multiplier == 0) { internal_value_ = seconds.count() / multiplier; internal_unit_ = *it; @@ -171,18 +171,20 @@ Step& Step::optimize_unit() template <> std::string Step::value(const std::string& format) const { - constexpr int max_size = 128; - char output[128]; //Do not use variable-length arrays + constexpr int MAX_SIZE = 128; + char output[MAX_SIZE]; std::string u; // Do not print unit if it is HOUR to keep backward compatibility - // with previous versions of ecCodes. This is a temporary solution. + // with previous versions of ecCodes (see ECC-1620). This is a temporary solution. + // + // TODO(maee): Remove this code to enable future output, e.g., 15h. if (unit_ != Unit::Value::HOUR) u = unit_.value(); - int err = snprintf(output, max_size, (format + "%s").c_str(), value(), u.c_str()); - if (err < 0 || err >= max_size) { + int err = snprintf(output, MAX_SIZE, (format + "%s").c_str(), value(), u.c_str()); + if (err < 0 || err >= MAX_SIZE) { throw std::runtime_error("Error while formatting Step to string"); } return output; diff --git a/src/step.h b/src/step.h index 624e751ac..f033a409c 100644 --- a/src/step.h +++ b/src/step.h @@ -81,7 +81,7 @@ class Step { } Seconds seconds = to_seconds(internal_value_, internal_unit_); - long multiplier = Unit::get_converter().unit_to_duration(unit_.value()); + auto multiplier = Unit::get_converter().unit_to_duration(unit_.value()); internal_value_ = seconds.count() / multiplier; internal_unit_ = unit_; diff --git a/src/step_unit.h b/src/step_unit.h index 0842014de..4bfd23290 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -131,7 +131,7 @@ class Unit { Value name_to_unit(const std::string& name) const {return name_to_value_.at(name);} // unit_value <-> duration - long unit_to_duration(const Value& unit_value) const {return value_to_duration_.at(unit_value);} + uint64_t unit_to_duration(const Value& unit_value) const {return value_to_duration_.at(unit_value);} Value duration_to_unit(long duration) const {return duration_to_value_.at(duration);} // wmo_code <-> unit_name @@ -169,8 +169,8 @@ class Unit { std::unordered_map value_to_long_; std::unordered_map long_to_value_; - std::unordered_map value_to_duration_; - std::unordered_map duration_to_value_; + std::unordered_map value_to_duration_; + std::unordered_map duration_to_value_; }; From 141f788ae9b2861f52b1054aba90c04c46b8e240 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 2 Nov 2023 22:03:09 +0000 Subject: [PATCH 087/469] ECC-1620: Change default step type to string --- src/grib_accessor_class_g2end_step.cc | 16 +++++++++++----- src/grib_accessor_class_step_in_units.cc | 12 ++++++++++-- tools/grib_tools.cc | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index bb398e5ea..b2d4bd1f0 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -23,8 +23,9 @@ IMPLEMENTS = unpack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump - MEMBERS = const char* start_step_value // startStep - MEMBERS = const char* step_units // stepUnits + IMPLEMENTS = get_native_type + MEMBERS = const char* start_step_value + MEMBERS = const char* step_units MEMBERS = const char* year MEMBERS = const char* month @@ -59,10 +60,11 @@ or edit "accessor.class" and rerun ./make_class.pl */ +static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -95,7 +97,6 @@ typedef struct grib_accessor_g2end_step extern grib_accessor_class* grib_accessor_class_long; - static grib_accessor_class _grib_accessor_class_g2end_step = { &grib_accessor_class_long, /* super */ "g2end_step", /* name */ @@ -111,7 +112,7 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ - 0, /* get native type */ + &get_native_type, /* get native type */ 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ @@ -721,3 +722,8 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) } return GRIB_SUCCESS; } + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; +} diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index d88c8c62c..2fbc43123 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -22,6 +22,7 @@ IMPLEMENTS = unpack_double IMPLEMENTS = unpack_string;pack_string IMPLEMENTS = init;dump + IMPLEMENTS = get_native_type MEMBERS = const char* forecast_time_value MEMBERS = const char* forecast_time_unit MEMBERS = const char* step_units @@ -42,10 +43,11 @@ or edit "accessor.class" and rerun ./make_class.pl */ +static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -80,7 +82,7 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ - 0, /* get native type */ + &get_native_type, /* get native type */ 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ @@ -334,3 +336,9 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } + + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; +} diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index f3c2ce82f..8e831de29 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -756,7 +756,7 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle options->default_print_width = (int)strlen(name); options->print_keys[options->print_keys_count].type = GRIB_TYPE_STRING; if (strcmp(ns, "mars") == 0 && (strcmp(name, "step") == 0)) { - options->print_keys[options->print_keys_count].type = GRIB_TYPE_UNDEFINED; + options->print_keys[options->print_keys_count].type = GRIB_TYPE_LONG; } // For the statistics namespace, do not force the type to be string. // Setting it to undefined will use the keys' native type i.e. GRIB_TYPE_DOUBLE From ea69d2927f4306c53338cc04cfe55a6e29b2704a Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 3 Nov 2023 12:07:41 +0000 Subject: [PATCH 088/469] ECC-1620: Fix negative steps --- src/step.cc | 11 +++++------ src/step.h | 2 +- tests/grib_ecc-1620.sh | 3 +++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/step.cc b/src/step.cc index 6d2fd1452..23318d27e 100644 --- a/src/step.cc +++ b/src/step.cc @@ -75,16 +75,14 @@ bool Step::operator<(const Step& step) const Step Step::operator+(const Step& step) const { - Step tmp = step; - auto [a, b] = find_common_units(this->copy().optimize_unit(), tmp.copy().optimize_unit()); + auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); return Step(a.internal_value_ + b.internal_value_, a.internal_unit_); } Step Step::operator-(const Step& step) const { - Step tmp = step; - auto [a, b] = find_common_units(this->copy().optimize_unit(), tmp.copy().optimize_unit()); + auto [a, b] = find_common_units(this->copy().optimize_unit(), step.copy().optimize_unit()); assert(a.internal_unit_ == b.internal_unit_); return Step(a.internal_value_ - b.internal_value_, a.internal_unit_); } @@ -155,10 +153,11 @@ Step& Step::optimize_unit() unit_ = internal_unit_; Seconds seconds = to_seconds(internal_value_, internal_unit_); + long abs_seconds = seconds.count() < 0 ? -seconds.count() : seconds.count(); for (auto it = Unit::grib_selected_units.rbegin(); it != Unit::grib_selected_units.rend(); ++it) { - auto multiplier = Unit::get_converter().unit_to_duration(*it); - if (seconds.count() % multiplier == 0) { + long multiplier = Unit::get_converter().unit_to_duration(*it); + if (abs_seconds % multiplier == 0) { internal_value_ = seconds.count() / multiplier; internal_unit_ = *it; unit_ = *it; diff --git a/src/step.h b/src/step.h index f033a409c..624e751ac 100644 --- a/src/step.h +++ b/src/step.h @@ -81,7 +81,7 @@ class Step { } Seconds seconds = to_seconds(internal_value_, internal_unit_); - auto multiplier = Unit::get_converter().unit_to_duration(unit_.value()); + long multiplier = Unit::get_converter().unit_to_duration(unit_.value()); internal_value_ = seconds.count() / multiplier; internal_unit_ = unit_; diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index fb539b7d8..d7452ce68 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -56,6 +56,9 @@ grib_check_key_equals $temp "-s stepUnits:s=h -p startStep:s,endStep:s" "-6 0" grib_check_key_equals $temp "-s stepUnits:s=m -p startStep:s,endStep:s" "-360m 0m" grib_check_key_equals $temp "-s stepUnits:s=s -p startStep:s,endStep:s" "-21600s 0s" +${tools_dir}/grib_set -s forecastTime=-48,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=0,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p stepRange" "-48" + #### CHECK: check optimal units are set correctly in GRIB files fn="${data_dir}/reduced_gaussian_sub_area.grib2" From 372ba12ddc37be7778a17882aaee8c99c829c0a2 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 3 Nov 2023 12:16:04 +0000 Subject: [PATCH 089/469] ECC-1620: Switch default step type to string --- tests/grib_ecc-1620.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index d7452ce68..c999ac42e 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -177,8 +177,8 @@ keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540 s" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59 m" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540s s" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59m m" #grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "59m" @@ -209,13 +209,13 @@ keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m" -grib_check_key_equals $temp "-p $keys__" "0 m" +grib_check_key_equals $temp "-p $keys__" "0m m" grib_check_key_equals $temp "-p $keys_s" "0m m" grib_check_key_equals $temp "-p $keys_i" "0 m" grib_check_key_equals $temp "-p $keys_d" "0 m" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0 s" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0 m" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0s s" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0m m" grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0 h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "0s s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "0m m" @@ -229,8 +229,8 @@ grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "59 m" -grib_check_key_equals $temp "-p $keys__" "59 m" +grib_check_key_equals $temp "-p $low_level_keys" "59 m" +grib_check_key_equals $temp "-p $keys__" "59m m" #grib_check_key_equals $temp "-p $keys_s" "59" grib_check_key_equals $temp "-p $keys_s" "59m m" grib_check_key_equals $temp "-p $keys_i" "59 m" @@ -245,7 +245,7 @@ grib_check_key_equals $temp "-p $keys_d" "1 h" ${tools_dir}/grib_set -s forecastTime=61,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "61 m" -grib_check_key_equals $temp "-p $keys__" "61 m" +grib_check_key_equals $temp "-p $keys__" "61m m" #grib_check_key_equals $temp "-p $keys_s" "61" grib_check_key_equals $temp "-p $keys_s" "61m m" grib_check_key_equals $temp "-p $keys_i" "61 m" @@ -303,7 +303,7 @@ grib_check_key_equals $temp "-p $keys_d" "49 25 49" ${tools_dir}/grib_set -s forecastTime=45,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=15,indicatorOfUnitForTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" -grib_check_key_equals $temp "-p $keys__" "45m-60m 45 60" +grib_check_key_equals $temp "-p $keys__" "45m-60m 45m 60m" #grib_check_key_equals $temp "-p $keys_s" "45-60 45 60" grib_check_key_equals $temp "-p $keys_s" "45m-60m 45m 60m" grib_check_key_equals $temp "-p $keys_i" "60 45 60" From 60ebb29450a85c15f59c23cce52b1867f2ca5252 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 3 Nov 2023 12:26:00 +0000 Subject: [PATCH 090/469] ECC-1620: Default step type: string --- tests/grib_ecc-1620.sh | 28 ++++++++++++++-------------- tests/grib_step.sh | 16 ++++++++-------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index c999ac42e..2416e15a2 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -208,7 +208,7 @@ keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 m" +grib_check_key_equals $temp "-p $low_level_keys" "0 m" grib_check_key_equals $temp "-p $keys__" "0m m" grib_check_key_equals $temp "-p $keys_s" "0m m" grib_check_key_equals $temp "-p $keys_i" "0 m" @@ -237,14 +237,14 @@ grib_check_key_equals $temp "-p $keys_i" "59 m" grib_check_key_equals $temp "-p $keys_d" "59 m" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "60 m" +grib_check_key_equals $temp "-p $low_level_keys" "60 m" grib_check_key_equals $temp "-p $keys__" "1 h" grib_check_key_equals $temp "-p $keys_s" "1 h" grib_check_key_equals $temp "-p $keys_i" "1 h" grib_check_key_equals $temp "-p $keys_d" "1 h" ${tools_dir}/grib_set -s forecastTime=61,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "61 m" +grib_check_key_equals $temp "-p $low_level_keys" "61 m" grib_check_key_equals $temp "-p $keys__" "61m m" #grib_check_key_equals $temp "-p $keys_s" "61" grib_check_key_equals $temp "-p $keys_s" "61m m" @@ -252,14 +252,14 @@ grib_check_key_equals $temp "-p $keys_i" "61 m" grib_check_key_equals $temp "-p $keys_d" "61 m" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "24 h" +grib_check_key_equals $temp "-p $low_level_keys" "24 h" grib_check_key_equals $temp "-p $keys__" "24 h" grib_check_key_equals $temp "-p $keys_s" "24 h" grib_check_key_equals $temp "-p $keys_i" "24 h" grib_check_key_equals $temp "-p $keys_d" "24 h" ${tools_dir}/grib_set -s forecastTime=1440,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "1440 m" +grib_check_key_equals $temp "-p $low_level_keys" "1440 m" grib_check_key_equals $temp "-p $keys__" "24 h" grib_check_key_equals $temp "-p $keys_s" "24 h" grib_check_key_equals $temp "-p $keys_i" "24 h" @@ -280,29 +280,29 @@ keys_i="stepRange:i,startStep:i,endStep:i" keys_d="stepRange:d,startStep:d,endStep:d" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" grib_check_key_equals $temp "-p $keys__" "0-2 0 2" grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" grib_check_key_equals $temp "-p $keys_i" "2 0 2" grib_check_key_equals $temp "-p $keys_d" "2 0 2" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" +grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" grib_check_key_equals $temp "-p $keys__" "24-48 24 48" grib_check_key_equals $temp "-p $keys_s" "24-48 24 48" grib_check_key_equals $temp "-p $keys_i" "48 24 48" grib_check_key_equals $temp "-p $keys_d" "48 24 48" ${tools_dir}/grib_set -s forecastTime=25,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "25 h 1 D" -grib_check_key_equals $temp "-p $keys__" "25-49 25 49" +grib_check_key_equals $temp "-p $low_level_keys" "25 h 1 D" +grib_check_key_equals $temp "-p $keys__" "25-49 25 49" grib_check_key_equals $temp "-p $keys__" "25-49 25 49" grib_check_key_equals $temp "-p $keys_s" "25-49 25 49" grib_check_key_equals $temp "-p $keys_i" "49 25 49" grib_check_key_equals $temp "-p $keys_d" "49 25 49" ${tools_dir}/grib_set -s forecastTime=45,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=15,indicatorOfUnitForTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" +grib_check_key_equals $temp "-p $low_level_keys" "45 m 15 m" grib_check_key_equals $temp "-p $keys__" "45m-60m 45m 60m" #grib_check_key_equals $temp "-p $keys_s" "45-60 45 60" grib_check_key_equals $temp "-p $keys_s" "45m-60m 45m 60m" @@ -310,28 +310,28 @@ grib_check_key_equals $temp "-p $keys_i" "60 45 60" grib_check_key_equals $temp "-p $keys_d" "60 45 60" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "60 m 2 h" +grib_check_key_equals $temp "-p $low_level_keys" "60 m 2 h" grib_check_key_equals $temp "-p $keys__" "1-3 1 3" grib_check_key_equals $temp "-p $keys_s" "1-3 1 3" grib_check_key_equals $temp "-p $keys_i" "3 1 3" grib_check_key_equals $temp "-p $keys_d" "3 1 3" ${tools_dir}/grib_set -s forecastTime=18,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "18 h 6 h" +grib_check_key_equals $temp "-p $low_level_keys" "18 h 6 h" grib_check_key_equals $temp "-p $keys__" "18-24 18 24" grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=360,indicatorOfUnitForTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "1080 m 360 m" +grib_check_key_equals $temp "-p $low_level_keys" "1080 m 360 m" grib_check_key_equals $temp "-p $keys__" "18-24 18 24" grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" +grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" grib_check_key_equals $temp "-p $keys__" "18-24 18 24" grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" grib_check_key_equals $temp "-p $keys_i" "24 18 24" diff --git a/tests/grib_step.sh b/tests/grib_step.sh index 741da1867..d452de0a1 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -182,28 +182,28 @@ result=$( ${tools_dir}/grib_get -p dataTime -s hour=2,minute=255 $input ) # Various step units # -------------------- input=${data_dir}/tigge_cf_ecmwf.grib2 -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=h $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=h $input) [ $result = 96 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=30m $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=30m $input) [ $result = 192 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=15m $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=15m $input) [ $result = 384 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=s $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=s $input) [ $result = 345600 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=12h $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=12h $input) [ $result = 8 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=6h $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=6h $input) [ $result = 16 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=D $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=D $input) [ $result = 4 ] -result=$(${tools_dir}/grib_get -w count=1 -p step -s stepUnits=m $input) +result=$(${tools_dir}/grib_get -w count=1 -p step:i -s stepUnits=m $input) [ $result = 5760 ] # GRIB1 stepRange and timeRangeIndicator=10 From d6b9fae892791d94035b882c5c1d3e7d609c35d8 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 6 Nov 2023 10:18:01 +0000 Subject: [PATCH 091/469] ECC-1620: Special handling of 15m and 30m units --- src/step.cc | 7 ++++++- tests/grib_ecc-1620.sh | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/step.cc b/src/step.cc index 23318d27e..a5baacd88 100644 --- a/src/step.cc +++ b/src/step.cc @@ -173,6 +173,7 @@ std::string Step::value(const std::string& format) const { constexpr int MAX_SIZE = 128; char output[MAX_SIZE]; std::string u; + int err; // Do not print unit if it is HOUR to keep backward compatibility // with previous versions of ecCodes (see ECC-1620). This is a temporary solution. @@ -182,7 +183,11 @@ std::string Step::value(const std::string& format) const { if (unit_ != Unit::Value::HOUR) u = unit_.value(); - int err = snprintf(output, MAX_SIZE, (format + "%s").c_str(), value(), u.c_str()); + if (unit_ == Unit::Value::MINUTES15 || unit_ == Unit::Value::MINUTES30) + err = snprintf(output, MAX_SIZE, (format + "(%s)").c_str(), value(), u.c_str()); + else + err = snprintf(output, MAX_SIZE, (format + "%s").c_str(), value(), u.c_str()); + if (err < 0 || err >= MAX_SIZE) { throw std::runtime_error("Error while formatting Step to string"); } diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 2416e15a2..360c5bfcf 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -46,6 +46,31 @@ temp2=temp_2.$label samples_dir=$ECCODES_SAMPLES_PATH +#### CHECK units +fn="${data_dir}/reduced_gaussian_sub_area.grib2" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=96,indicatorOfUnitForTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" + +grib_check_key_equals $temp " -w count=1 -s stepUnits=s -p step:i,stepUnits:s" "345600 s" +grib_check_key_equals $temp " -w count=1 -s stepUnits=m -p step:i,stepUnits:s" "5760 m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=15m -p step:i,stepUnits:s" "384 15m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=30m -p step:i,stepUnits:s" "192 30m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=h -p step:i,stepUnits:s" "96 h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step:i,stepUnits:s" "16 6h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step:i,stepUnits:s" "8 12h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step:i,stepUnits:s" "4 D" + +grib_check_key_equals $temp " -w count=1 -s stepUnits=s -p step,stepUnits:s" "345600s s" +grib_check_key_equals $temp " -w count=1 -s stepUnits=m -p step,stepUnits:s" "5760m m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=15m -p step,stepUnits:s" "384(15m) 15m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=30m -p step,stepUnits:s" "192(30m) 30m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=h -p step,stepUnits:s" "96 h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step,stepUnits:s" "166h 6h" # FIXME(maee) (16(6h) 6h) is correct +grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" "812h 12h" # FIXME(maee) (8(12h) 12h) is correct +grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step,stepUnits:s" "4D D" + + #### CHECK negative forecastTime fn="${data_dir}/reduced_gaussian_sub_area.grib2" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" @@ -66,7 +91,7 @@ low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indi ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" -### TODO(EB): @Shahram: how to make parameters position independent +### TODO(maee): @Shahram: how to make parameters position independent ${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" #${tools_dir}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 @@ -113,11 +138,11 @@ ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTi grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" # Use range unit: hour -${tools_dir}/grib_set -s endStep:d=30 $temp $temp2 # TODO(EB) remove in the future behavior -#${tools_dir}/grib_set -s endStep:i=30 $temp $temp2 # TODO(EB) keep for backwards compatibility +${tools_dir}/grib_set -s endStep:d=30 $temp $temp2 # TODO(maee) remove in the future behavior +#${tools_dir}/grib_set -s endStep:i=30 $temp $temp2 # TODO(maee) keep for backwards compatibility #${tools_dir}/grib_set -s endStep:s=30 $temp $temp2 #${tools_dir}/grib_set -s endStep:s=30h $temp $temp2 -#${tools_dir}/grib_set -s endStep=30h $temp $temp2 # TODO(EB) add to tests +#${tools_dir}/grib_set -s endStep=30h $temp $temp2 # TODO(maee) add to tests grib_check_key_equals $temp2 "-p $low_level_keys" "24 h 6 h" # Use stepUnits @@ -179,16 +204,16 @@ keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540s s" grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59m m" -#grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(EB): check behaviour (should be 0.983333) +#grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(maee): check behaviour (should be 0.983333) grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "59m" -#grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(EB): check behaviour // See tools for default output format +#grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(maee): check behaviour // See tools for default output format grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "3540 s" grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "59 m" -#grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # TODO(maee): check behaviour grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "3540 s" grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59 m" -#grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # TODO(EB): check behaviour +#grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # TODO(maee): check behaviour ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp From 485e2caedc7d2d3f4307de4455df2a797c3e8f5c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 6 Nov 2023 10:35:52 +0000 Subject: [PATCH 092/469] ECC-1620: Test setting 15m, 30m units --- tests/grib_ecc-1620.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 360c5bfcf..a5e1bb009 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -70,6 +70,23 @@ grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step,stepUnits:s" "1 grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" "812h 12h" # FIXME(maee) (8(12h) 12h) is correct grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step,stepUnits:s" "4D D" +${tools_dir}/grib_set -s stepUnits=s,startStep=0,endStep=345600 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=m,startStep=0,endStep=5760 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=15m,startStep=0,endStep=384 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=30m,startStep=0,endStep=192 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=h,startStep=0,endStep=96 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=6h,startStep=0,endStep=16 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=12h,startStep=0,endStep=8 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +${tools_dir}/grib_set -s stepUnits=D,startStep=0,endStep=4 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" + #### CHECK negative forecastTime fn="${data_dir}/reduced_gaussian_sub_area.grib2" From 4837d203a2f606774563b3c9ed66abdb47927dc7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 8 Nov 2023 14:01:48 +0000 Subject: [PATCH 093/469] Prototyping: GRIB clone lightweight --- src/eccodes.cc | 5 +++++ src/eccodes.h | 1 + src/grib_api.h | 1 + src/grib_handle.cc | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+) diff --git a/src/eccodes.cc b/src/eccodes.cc index 13b23ddc0..06ba8b536 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -175,6 +175,11 @@ grib_handle* codes_handle_clone(const grib_handle* h) { return grib_handle_clone(h); } +grib_handle* codes_handle_clone_light(const grib_handle* h) +{ + return grib_handle_clone_light(h); +} + int codes_handle_delete(grib_handle* h) { return grib_handle_delete(h); diff --git a/src/eccodes.h b/src/eccodes.h index d890438f2..d49edce78 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -495,6 +495,7 @@ codes_handle* codes_handle_new_from_samples(codes_context* c, const char* sample * @return the new handle, NULL if the message is invalid or a problem is encountered */ codes_handle* codes_handle_clone(const codes_handle* h); +codes_handle* codes_handle_clone_light(const codes_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_api.h b/src/grib_api.h index 9a3e46ffc..cadb0ec60 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -507,6 +507,7 @@ grib_handle* grib_handle_new_from_samples(grib_context* c, const char* sample_na * @return the new handle, NULL if the message is invalid or a problem is encountered */ grib_handle* grib_handle_clone(const grib_handle* h); +grib_handle* grib_handle_clone_light(const grib_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_handle.cc b/src/grib_handle.cc index be5cdecda..0f55b08e8 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -326,6 +326,43 @@ grib_handle* grib_handle_clone(const grib_handle* h) return result; } +grib_handle* grib_handle_clone_light(const grib_handle* h) +{ + int err = 0; + size_t size1 = 0; + const void* msg1 = NULL; + grib_handle* h1 = (grib_handle*)h; + long edition = 0; + + err = grib_get_long(h, "edition", &edition); + if (!err && edition == 1) { + grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Edition not supported", __func__); + return NULL; + } + + err = grib_get_message_headers(h1, &msg1, &size1); + if (err) return NULL; + + size1 += 4; + grib_handle* result = grib_handle_new_from_partial_message_copy(h->context, msg1, size1); + result->buffer->data[ size1 - 4 ] = '7'; + result->buffer->data[ size1 - 3 ] = '7'; + result->buffer->data[ size1 - 2 ] = '7'; + result->buffer->data[ size1 - 1 ] = '7'; + result->buffer->ulength = size1; + + result->product_kind = h->product_kind; + + long off = 64; // This is only true for GRIB edition 2 + err = grib_encode_unsigned_long( result->buffer->data, (unsigned long)size1, &off, 64); + if (err) { + printf("err=%s\n", grib_get_error_message(err)); + return NULL; + } + + return result; +} + grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind product, int* error) { if (product == PRODUCT_GRIB) From 70049aea0cd406e8289f20b7f64d049624541ff2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 8 Nov 2023 15:06:43 +0000 Subject: [PATCH 094/469] GRIB lightweight clone: Disable BUFR etc --- src/grib_handle.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 0f55b08e8..7ae2e7035 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -334,6 +334,13 @@ grib_handle* grib_handle_clone_light(const grib_handle* h) grib_handle* h1 = (grib_handle*)h; long edition = 0; + // Only for GRIB, not BUFR etc + if (h->product_kind != PRODUCT_GRIB) { + grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Only supported for %s", + __func__, codes_get_product_name(PRODUCT_GRIB)); + return NULL; + } + err = grib_get_long(h, "edition", &edition); if (!err && edition == 1) { grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Edition not supported", __func__); From 180aab7b3a468ea6a97148f6197fbdc0229007b4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 8 Nov 2023 19:00:55 +0000 Subject: [PATCH 095/469] Const correctness --- src/grib_handle.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index bb37b0040..07fac236e 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -331,7 +331,6 @@ grib_handle* grib_handle_clone_light(const grib_handle* h) int err = 0; size_t size1 = 0; const void* msg1 = NULL; - grib_handle* h1 = (grib_handle*)h; long edition = 0; // Only for GRIB, not BUFR etc @@ -347,7 +346,7 @@ grib_handle* grib_handle_clone_light(const grib_handle* h) return NULL; } - err = grib_get_message_headers(h1, &msg1, &size1); + err = grib_get_message_headers(h, &msg1, &size1); if (err) return NULL; size1 += 4; From 2707c2fca26a39a763e890e38221d82ed1b1fdfb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 27 Nov 2023 17:20:49 +0000 Subject: [PATCH 096/469] GRIB lightweight clone: WIP --- src/grib_handle.cc | 106 +++++++++++++++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 32 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 07fac236e..876de92b2 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -326,49 +326,91 @@ grib_handle* grib_handle_clone(const grib_handle* h) return result; } -grib_handle* grib_handle_clone_light(const grib_handle* h) +static bool can_create_clone_light(const grib_handle* h) { - int err = 0; - size_t size1 = 0; - const void* msg1 = NULL; - long edition = 0; - // Only for GRIB, not BUFR etc - if (h->product_kind != PRODUCT_GRIB) { - grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Only supported for %s", - __func__, codes_get_product_name(PRODUCT_GRIB)); - return NULL; - } - - err = grib_get_long(h, "edition", &edition); - if (!err && edition == 1) { - grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Edition not supported", __func__); - return NULL; - } + if (h->product_kind != PRODUCT_GRIB) return false; - err = grib_get_message_headers(h, &msg1, &size1); - if (err) return NULL; + // Spectral data does not have constant fields! + long isGridded = 0; + int err = grib_get_long(h, "isGridded", &isGridded); + if (err || !isGridded) return false; - size1 += 4; - grib_handle* result = grib_handle_new_from_partial_message_copy(h->context, msg1, size1); - result->buffer->data[ size1 - 4 ] = '7'; - result->buffer->data[ size1 - 3 ] = '7'; - result->buffer->data[ size1 - 2 ] = '7'; - result->buffer->data[ size1 - 1 ] = '7'; - result->buffer->ulength = size1; - - result->product_kind = h->product_kind; + return true; +} - long off = 64; // This is only true for GRIB edition 2 - err = grib_encode_unsigned_long( result->buffer->data, (unsigned long)size1, &off, 64); - if (err) { - printf("err=%s\n", grib_get_error_message(err)); +grib_handle* grib_handle_clone_light(const grib_handle* h) +{ + int err = 0; + long edition = 0; + grib_handle* result = NULL; + + if (!can_create_clone_light(h)) { + // Lightweight clone not possible. Do a normal clone + return grib_handle_clone(h); + } + + char sample_name[1024]; /* name of the GRIB sample file */ + grib_get_long(h, "edition", &edition); + snprintf(sample_name, sizeof(sample_name), "GRIB%ld", edition); + grib_handle* h_sample = grib_handle_new_from_samples(NULL, sample_name); + + // Copy all sections except Bitmap and Data from h to h_sample + const int sections_to_copy = GRIB_SECTION_PRODUCT | GRIB_SECTION_LOCAL | GRIB_SECTION_GRID; + result = grib_util_sections_copy((grib_handle*)h, h_sample, sections_to_copy, &err); + if (!result || err) { + grib_context_log(h->context, GRIB_LOG_ERROR, "Failed to create lightweight clone"); + grib_handle_delete(h_sample); return NULL; } + grib_handle_delete(h_sample); return result; } +// grib_handle* grib_handle_clone_light(const grib_handle* h) +// { +// int err = 0; +// size_t size1 = 0; +// const void* msg1 = NULL; +// long edition = 0; + +// // Only for GRIB, not BUFR etc +// if (h->product_kind != PRODUCT_GRIB) { +// grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Only supported for %s", +// __func__, codes_get_product_name(PRODUCT_GRIB)); +// return NULL; +// } + +// err = grib_get_long(h, "edition", &edition); +// if (!err && edition == 1) { +// grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Edition not supported", __func__); +// return NULL; +// } + +// err = grib_get_message_headers(h, &msg1, &size1); +// if (err) return NULL; + +// size1 += 4; +// grib_handle* result = grib_handle_new_from_partial_message_copy(h->context, msg1, size1); +// result->buffer->data[ size1 - 4 ] = '7'; +// result->buffer->data[ size1 - 3 ] = '7'; +// result->buffer->data[ size1 - 2 ] = '7'; +// result->buffer->data[ size1 - 1 ] = '7'; +// result->buffer->ulength = size1; + +// result->product_kind = h->product_kind; + +// long off = 64; // This is only true for GRIB edition 2 +// err = grib_encode_unsigned_long( result->buffer->data, (unsigned long)size1, &off, 64); +// if (err) { +// printf("err=%s\n", grib_get_error_message(err)); +// return NULL; +// } + +// return result; +// } + grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind product, int* error) { if (product == PRODUCT_GRIB) From 017947df5fb19eab4c8467af4382363dc01a6d48 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 27 Nov 2023 17:50:59 +0000 Subject: [PATCH 097/469] GRIB lightweight clone: Copy packingType --- src/grib_handle.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 876de92b2..e80adcba3 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -341,25 +341,38 @@ static bool can_create_clone_light(const grib_handle* h) grib_handle* grib_handle_clone_light(const grib_handle* h) { - int err = 0; - long edition = 0; + int err = 0; grib_handle* result = NULL; + grib_context* c = h->context; if (!can_create_clone_light(h)) { // Lightweight clone not possible. Do a normal clone return grib_handle_clone(h); } - char sample_name[1024]; /* name of the GRIB sample file */ + char sample_name[1024]; + long edition = 0; grib_get_long(h, "edition", &edition); snprintf(sample_name, sizeof(sample_name), "GRIB%ld", edition); - grib_handle* h_sample = grib_handle_new_from_samples(NULL, sample_name); + grib_handle* h_sample = grib_handle_new_from_samples(c, sample_name); + if (!h_sample) { + grib_context_log(c, GRIB_LOG_ERROR, "Failed to create lightweight clone using sample %s", sample_name); + return NULL; + } + + // Must preserve the packingType + char input_packing_type[100]; + size_t len = sizeof(input_packing_type); + err = grib_get_string(h, "packingType", input_packing_type, &len); + if (!err) { + grib_set_string(h_sample, "packingType", input_packing_type, &len); + } // Copy all sections except Bitmap and Data from h to h_sample const int sections_to_copy = GRIB_SECTION_PRODUCT | GRIB_SECTION_LOCAL | GRIB_SECTION_GRID; result = grib_util_sections_copy((grib_handle*)h, h_sample, sections_to_copy, &err); if (!result || err) { - grib_context_log(h->context, GRIB_LOG_ERROR, "Failed to create lightweight clone"); + grib_context_log(c, GRIB_LOG_ERROR, "Failed to create lightweight clone: Unable to copy sections"); grib_handle_delete(h_sample); return NULL; } From 3bcb5a8cc92eddf15450c9ad39cfe2dd36ca378a Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 29 Nov 2023 09:37:38 +0000 Subject: [PATCH 098/469] ECC-1620: New format for special units, e.g., 8x15m --- src/step.cc | 13 ++++++++++--- tests/grib_ecc-1620.sh | 8 ++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/step.cc b/src/step.cc index a5baacd88..c2ff472b9 100644 --- a/src/step.cc +++ b/src/step.cc @@ -183,9 +183,16 @@ std::string Step::value(const std::string& format) const { if (unit_ != Unit::Value::HOUR) u = unit_.value(); - if (unit_ == Unit::Value::MINUTES15 || unit_ == Unit::Value::MINUTES30) - err = snprintf(output, MAX_SIZE, (format + "(%s)").c_str(), value(), u.c_str()); - else + if (unit_ == Unit::Value::MINUTES15 || + unit_ == Unit::Value::MINUTES30 || + unit_ == Unit::Value::HOURS3 || + unit_ == Unit::Value::HOURS6 || + unit_ == Unit::Value::HOURS12 || + unit_ == Unit::Value::YEARS10 || + unit_ == Unit::Value::YEARS30 + ) + err = snprintf(output, MAX_SIZE, (format + "x%s").c_str(), value(), u.c_str()); + else err = snprintf(output, MAX_SIZE, (format + "%s").c_str(), value(), u.c_str()); if (err < 0 || err >= MAX_SIZE) { diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index a5e1bb009..a08cde285 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -63,11 +63,11 @@ grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step:i,stepUnits:s" " grib_check_key_equals $temp " -w count=1 -s stepUnits=s -p step,stepUnits:s" "345600s s" grib_check_key_equals $temp " -w count=1 -s stepUnits=m -p step,stepUnits:s" "5760m m" -grib_check_key_equals $temp " -w count=1 -s stepUnits=15m -p step,stepUnits:s" "384(15m) 15m" -grib_check_key_equals $temp " -w count=1 -s stepUnits=30m -p step,stepUnits:s" "192(30m) 30m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=15m -p step,stepUnits:s" "384x15m 15m" +grib_check_key_equals $temp " -w count=1 -s stepUnits=30m -p step,stepUnits:s" "192x30m 30m" grib_check_key_equals $temp " -w count=1 -s stepUnits=h -p step,stepUnits:s" "96 h" -grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step,stepUnits:s" "166h 6h" # FIXME(maee) (16(6h) 6h) is correct -grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" "812h 12h" # FIXME(maee) (8(12h) 12h) is correct +grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step,stepUnits:s" "16x6h 6h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" "8x12h 12h" grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step,stepUnits:s" "4D D" ${tools_dir}/grib_set -s stepUnits=s,startStep=0,endStep=345600 $fn $temp From eec53eb56b5ddcae734acbb98c504434eda03ecc Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 29 Nov 2023 14:22:36 +0000 Subject: [PATCH 099/469] ECC-1620: Force stepUnits --- src/grib_accessor_class_g2end_step.cc | 20 +++- src/grib_accessor_class_g2step_range.cc | 21 +++- src/grib_accessor_class_optimal_step_units.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 20 ++-- src/step.cc | 31 ++++-- src/step.h | 4 +- tests/grib_ecc-1620.sh | 96 +++++++++++++------ 7 files changed, 142 insertions(+), 52 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index b2d4bd1f0..0bd8d70ab 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -569,6 +569,10 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) return err; + long force_step_units; + if ((err= grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) + return err; + if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) { grib_context_log(h->context, GRIB_LOG_ERROR, "missing start step unit"); @@ -615,7 +619,15 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en const char* forecast_time_value_key = "forecastTime"; const char* forecast_time_unit_key = "indicatorOfUnitOfTimeRange"; - auto [forecast_time_opt, time_range_opt] = find_common_units(start_step.optimize_unit(), time_range.optimize_unit()); + Step forecast_time_opt; + Step time_range_opt; + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + std::tie(forecast_time_opt, time_range_opt) = find_common_units(start_step.optimize_unit(), time_range.optimize_unit()); + } + else { + forecast_time_opt = Step{start_step.value(Unit{force_step_units}), Unit{force_step_units}}; + time_range_opt = Step{time_range.value(Unit{force_step_units}), Unit{force_step_units}}; + } if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) return err; @@ -706,8 +718,12 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + long force_step_units; + if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) + return ret; + try { - Step end_step = step_from_string(val); + Step end_step = step_from_string(val, Unit{force_step_units}); end_step.optimize_unit(); if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().value())) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index d93358a94..1260f44c2 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -199,17 +199,30 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + long force_step_units; + if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) + return ret; + try { - std::vector steps = parse_range(val); + std::vector steps = parse_range(val, Unit{force_step_units}); if (steps.size() == 0) { grib_context_log(a->context, GRIB_LOG_ERROR, "Could not parse step range: %s", val); return GRIB_INVALID_ARGUMENT; } - Step step_0 = steps[0]; + Step step_0; Step step_1; - if (steps.size() > 1) { - std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if (steps.size() > 1) + std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); + else + step_0 = steps[0].optimize_unit(); + } + else { + step_0 = Step{steps[0].value(Unit{force_step_units}), Unit{force_step_units}}; + if (steps.size() > 1) { + step_1 = Step{steps[1].value(Unit{force_step_units}), Unit{force_step_units}}; + } } if ((ret = grib_set_long_internal(h, "startStepUnit", step_0.unit().value()))) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 362415299..5d297b96c 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -157,7 +157,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) supported_units_str += Unit{u}.value() + ","; supported_units_str.pop_back(); - std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available X tunits are: " + supported_units_str; + std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available units are: " + supported_units_str; grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); return GRIB_INVALID_ARGUMENT; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 2fbc43123..b7faa5859 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -198,7 +198,7 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) return GRIB_SUCCESS; } -static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit) +static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit, const long force_step_units) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); @@ -236,7 +236,10 @@ static int pack_long_new_(grib_accessor* a, const long start_step_value, const l return GRIB_SUCCESS; } - forecast_time.optimize_unit(); + if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + forecast_time.optimize_unit(); + } + if ((err = grib_set_long_internal(h, "startStepUnit", forecast_time.unit().value())) != GRIB_SUCCESS) return err; if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, forecast_time)) != GRIB_SUCCESS) @@ -272,18 +275,23 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return GRIB_DECODING_ERROR; } - ret = pack_long_new_(a, *val, start_step_unit); + ret = pack_long_new_(a, *val, start_step_unit, force_step_units); return ret; } static int pack_string(grib_accessor* a, const char* val, size_t* len) { + grib_handle* h = grib_handle_of_accessor(a); + //long force_step_units = Unit(Unit::Value::MISSING).value(); int ret = GRIB_SUCCESS; - try { - Step step = step_from_string(val); + long force_step_units; + if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) + return ret; - if ((ret = pack_long_new_(a, step.value(), step.unit().value())) != GRIB_SUCCESS) + try { + Step step = step_from_string(val, Unit{force_step_units}); + if ((ret = pack_long_new_(a, step.value(), step.unit().value(), force_step_units)) != GRIB_SUCCESS) return ret; } catch (std::exception& e) { diff --git a/src/step.cc b/src/step.cc index c2ff472b9..d26a47128 100644 --- a/src/step.cc +++ b/src/step.cc @@ -20,34 +20,44 @@ #include "step_unit.h" #include "step.h" -Step step_from_string(std::string step) +Step step_from_string(const std::string& step, const Unit& force_unit) { std::regex re("([0-9.]+)([smhDMYC]?)"); std::smatch match; if (std::regex_match(step, match, re)) { if (match.size() == 3) { std::string value = match[1]; - std::string unit = match[2]; - if (unit.size() == 0) { - unit = "h"; + std::string unit_str = match[2]; + Unit unit; + if (unit_str.size() != 0) { + if (force_unit == Unit{Unit::Value::MISSING}) + unit = Unit{unit_str}; + else + throw std::runtime_error("Cannot force unit when unit is specified in step string"); } - Step ret{std::stod(value), Unit{unit}}; + else { + if (force_unit == Unit{Unit::Value::MISSING}) + unit = Unit{Unit::Value::HOUR}; + else + unit = force_unit; + } + Step ret{std::stod(value), unit}; return ret; } } throw std::runtime_error("Could not parse step: " + step); } -std::vector parse_range(const std::string& range_str) +std::vector parse_range(const std::string& range_str, const Unit& force_unit) { std::vector steps; std::string::size_type pos = 0; std::string::size_type prev = 0; while ((pos = range_str.find("-", prev)) != std::string::npos) { - steps.push_back(step_from_string(range_str.substr(prev, pos - prev))); + steps.push_back(step_from_string(range_str.substr(prev, pos - prev), force_unit)); prev = pos + 1; } - steps.push_back(step_from_string(range_str.substr(prev))); + steps.push_back(step_from_string(range_str.substr(prev), force_unit)); return steps; } @@ -132,13 +142,14 @@ void Step::init_long(long value, const Unit& unit) { internal_value_ = value; internal_unit_ = unit; - unit_ = internal_unit_; + unit_ = unit; } void Step::init_double(double value, const Unit& unit) { auto seconds = Unit::get_converter().unit_to_duration(unit.value()); - init_long(static_cast(value * seconds), Unit{Unit::Value::SECOND}); + internal_value_ = value * seconds; + internal_unit_ = Unit{Unit::Value::SECOND}; unit_ = unit; } diff --git a/src/step.h b/src/step.h index 624e751ac..79afdaeb1 100644 --- a/src/step.h +++ b/src/step.h @@ -94,8 +94,8 @@ class Step { }; -Step step_from_string(std::string step); -std::vector parse_range(const std::string& range_str); +Step step_from_string(const std::string& step, const Unit& force_unit); +std::vector parse_range(const std::string& range_str, const Unit& force_unit); std::pair find_common_units(const Step& startStep, const Step& endStep); diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index a08cde285..b7a0449c7 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -45,9 +45,49 @@ temp=temp.$label temp2=temp_2.$label samples_dir=$ECCODES_SAMPLES_PATH +instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 +accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 + +# if stepUnits is set, then set the low level keys to stepUnits +# if stepUnits is not set, then optimise low level keys +# instant fields: +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +fn="$instantaneous_field" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +keys__="step,stepUnits:s" +keys_s="step:s" +keys_i="step:i,stepUnits:s" +keys_d="step:d,stepUnits:s" + +${tools_dir}/grib_set -s stepUnits=m,step=60 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m" +grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" +${tools_dir}/grib_set -s step=60m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1 h" +grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" + + +# accumulated fields: +fn="$accumulated_field" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" +keys__="step,startStep,endStep,stepRange,stepUnits:s" +keys_s="step:s,startStep:s,endStep:s,stepRange:s,stepUnits:s" +keys_i="step:i,startStep:i,endStep:i,stepRange:i,stepUnits:s" +keys_d="step:d,startStep:d,endStep:d,stepRange:d,stepUnits:s" + +${tools_dir}/grib_set -s stepUnits=m,stepRange=60-120 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" +grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" +${tools_dir}/grib_set -s stepRange=60m-120m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" +grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" #### CHECK units -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=96,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" @@ -71,25 +111,21 @@ grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" " grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step,stepUnits:s" "4D D" ${tools_dir}/grib_set -s stepUnits=s,startStep=0,endStep=345600 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 s 345600 s" ${tools_dir}/grib_set -s stepUnits=m,startStep=0,endStep=5760 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" -${tools_dir}/grib_set -s stepUnits=15m,startStep=0,endStep=384 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" -${tools_dir}/grib_set -s stepUnits=30m,startStep=0,endStep=192 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 m 5760 m" ${tools_dir}/grib_set -s stepUnits=h,startStep=0,endStep=96 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" ${tools_dir}/grib_set -s stepUnits=6h,startStep=0,endStep=16 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 6h 16 6h" ${tools_dir}/grib_set -s stepUnits=12h,startStep=0,endStep=8 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 12h 8 12h" ${tools_dir}/grib_set -s stepUnits=D,startStep=0,endStep=4 $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 h 96 h" +grib_check_key_equals $temp "-p $low_level_keys" "0 D 4 D" #### CHECK negative forecastTime -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s forecastTime=-6,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "-6 h 6 h" @@ -103,33 +139,36 @@ grib_check_key_equals $temp "-p stepRange" "-48" #### CHECK: check optimal units are set correctly in GRIB files -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" ### TODO(maee): @Shahram: how to make parameters position independent ${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +grib_check_key_equals $temp2 "-p $low_level_keys" "60 s 120 s" #${tools_dir}/grib_set -s startStep:i=60,endStep:i=180,stepUnits:s=s $temp $temp2 #grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +# Seconds ${tools_dir}/grib_set -s stepUnits:i=13,startStep:i=60,endStep:i=180 $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +grib_check_key_equals $temp2 "-p $low_level_keys" "60 s 120 s" ${tools_dir}/grib_set -s stepUnits:s=s,startStep:i=60,endStep:i=180 $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 2 m" +grib_check_key_equals $temp2 "-p $low_level_keys" "60 s 120 s" +# Minutes ${tools_dir}/grib_set -s stepUnits:i=0,startStep:i=60,endStep:i=180 $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 2 h" +grib_check_key_equals $temp2 "-p $low_level_keys" "60 m 120 m" ${tools_dir}/grib_set -s stepUnits:s=m,startStep:i=60,endStep:i=180 $temp $temp2 -grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 2 h" +grib_check_key_equals $temp2 "-p $low_level_keys" "60 m 120 m" +# Hours ${tools_dir}/grib_set -s stepUnits:i=1,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" ${tools_dir}/grib_set -s stepUnits:s=h,startStep:i=60,endStep:i=180 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" -#fn="${data_dir}/reduced_gaussian_sub_area.grib2" +#fn="$accumulated_field" #low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ##high_level_keys="startStep:s,endStep:s" #high_level_keys="startStep:i,endStep:i" @@ -149,7 +188,7 @@ grib_check_key_equals $temp2 "-p $low_level_keys" "60 h 120 h" #exit #### CHECK: grib_set - endStep + stepUnits -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" @@ -211,7 +250,7 @@ ${tools_dir}/grib_set -s stepRange:s=62D-122D $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1488 h 1440 h" grib_check_key_equals $temp2 "-p stepRange:s" "1488-2928" -fn="${data_dir}/reduced_gaussian_surface.grib2" +fn="$instantaneous_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys__="step,stepUnits:s" keys_s="step:s" @@ -221,16 +260,18 @@ keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=59,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "3540s s" grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "59m m" -#grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # TODO(maee): check behaviour (should be 0.983333) +#grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0" # not supported grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "3540s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "59m" -#grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.983333" # TODO(maee): check behaviour // See tools for default output format +#grib_check_key_equals $temp "-p $keys_s -F"%.2f" -s stepUnits=h" "0.98" # not supported grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "3540 s" grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "59 m" -#grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # TODO(maee): check behaviour +#grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0" # not supported grib_check_key_equals $temp "-p $keys_d -s stepUnits=s" "3540 s" grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59 m" -#grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # TODO(maee): check behaviour +#grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # not supported + + ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp @@ -242,7 +283,8 @@ grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0 m" grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" -fn="${data_dir}/reduced_gaussian_surface.grib2" + +fn="$instantaneous_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys__="step,stepUnits:s" keys_s="step:s,stepUnits:s" @@ -308,13 +350,13 @@ grib_check_key_equals $temp "-p $keys_i" "24 h" grib_check_key_equals $temp "-p $keys_d" "24 h" -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" ${tools_dir}/grib_set -s stepRange=60m-2h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" -fn="${data_dir}/reduced_gaussian_sub_area.grib2" +fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" keys__="stepRange,startStep,endStep" keys_s="stepRange:s,startStep:s,endStep:s" From 1b05e403022c9db3f33c880f08d6a1aa0cddb9a2 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 29 Nov 2023 14:36:54 +0000 Subject: [PATCH 100/469] ECC-1620: Test stepunits key (MARS key) --- tests/grib_ecc-1620.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index b7a0449c7..bb91eb375 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -49,7 +49,7 @@ instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 # if stepUnits is set, then set the low level keys to stepUnits -# if stepUnits is not set, then optimise low level keys +# else optimise low level keys # instant fields: low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" fn="$instantaneous_field" @@ -59,6 +59,10 @@ keys_s="step:s" keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" +${tools_dir}/grib_set -s stepunits=m,step=60 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m" +grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" ${tools_dir}/grib_set -s stepUnits=m,step=60 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" grib_check_key_equals $temp "-p $keys_s" "1" @@ -77,6 +81,10 @@ keys_s="step:s,startStep:s,endStep:s,stepRange:s,stepUnits:s" keys_i="step:i,startStep:i,endStep:i,stepRange:i,stepUnits:s" keys_d="step:d,startStep:d,endStep:d,stepRange:d,stepUnits:s" +${tools_dir}/grib_set -s stepunits=m,stepRange=60-120 $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" +grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" ${tools_dir}/grib_set -s stepUnits=m,stepRange=60-120 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" @@ -86,6 +94,7 @@ grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" + #### CHECK units fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" From 8c7286d096f58528b2f87a7d23915083defba817 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 29 Nov 2023 14:56:48 +0000 Subject: [PATCH 101/469] ECC-1620: add future behaviour: export ECCODES_FUTURE_BEHAVIOUR=1 --- src/step.cc | 8 ++++- tests/grib_ecc-1620.sh | 74 ++++++++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/src/step.cc b/src/step.cc index d26a47128..6f7f2d045 100644 --- a/src/step.cc +++ b/src/step.cc @@ -191,8 +191,14 @@ std::string Step::value(const std::string& format) const { // // TODO(maee): Remove this code to enable future output, e.g., 15h. - if (unit_ != Unit::Value::HOUR) + int future_behaviour = getenv("ECCODES_FUTURE_BEHAVIOUR") ? atoi(getenv("ECCODES_FUTURE_BEHAVIOUR")) : 0; + if (future_behaviour != 1) { + if (unit_ != Unit::Value::HOUR) + u = unit_.value(); + } + else { u = unit_.value(); + } if (unit_ == Unit::Value::MINUTES15 || unit_ == Unit::Value::MINUTES30 || diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index bb91eb375..7987455ec 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -40,6 +40,8 @@ grib_check_key_equals() fi } +[[ -z "${ECCODES_FUTURE_BEHAVIOUR}" ]] && HOUR="" || HOUR="h" + label="grib_ecc-1620" temp=temp.$label temp2=temp_2.$label @@ -61,15 +63,16 @@ keys_d="step:d,stepUnits:s" ${tools_dir}/grib_set -s stepunits=m,step=60 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" -grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" ${tools_dir}/grib_set -s stepUnits=m,step=60 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" -grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" ${tools_dir}/grib_set -s step=60m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1 h" -grib_check_key_equals $temp "-p $keys_s" "1" +grib_check_key_equals $temp "-p $low_level_keys" "1 h" +grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" @@ -83,15 +86,15 @@ keys_d="step:d,startStep:d,endStep:d,stepRange:d,stepUnits:s" ${tools_dir}/grib_set -s stepunits=m,stepRange=60-120 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" -grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s" "2$HOUR 1$HOUR 2$HOUR 1$HOUR-2$HOUR h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" ${tools_dir}/grib_set -s stepUnits=m,stepRange=60-120 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" -grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s" "2$HOUR 1$HOUR 2$HOUR 1$HOUR-2$HOUR h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" ${tools_dir}/grib_set -s stepRange=60m-120m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" -grib_check_key_equals $temp "-p $keys_s" "2 1 2 1-2 h" +grib_check_key_equals $temp "-p $keys_s" "2$HOUR 1$HOUR 2$HOUR 1$HOUR-2$HOUR h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" @@ -114,7 +117,7 @@ grib_check_key_equals $temp " -w count=1 -s stepUnits=s -p step,stepUnits:s" "34 grib_check_key_equals $temp " -w count=1 -s stepUnits=m -p step,stepUnits:s" "5760m m" grib_check_key_equals $temp " -w count=1 -s stepUnits=15m -p step,stepUnits:s" "384x15m 15m" grib_check_key_equals $temp " -w count=1 -s stepUnits=30m -p step,stepUnits:s" "192x30m 30m" -grib_check_key_equals $temp " -w count=1 -s stepUnits=h -p step,stepUnits:s" "96 h" +grib_check_key_equals $temp " -w count=1 -s stepUnits=h -p step,stepUnits:s" "96$HOUR h" grib_check_key_equals $temp " -w count=1 -s stepUnits=6h -p step,stepUnits:s" "16x6h 6h" grib_check_key_equals $temp " -w count=1 -s stepUnits=12h -p step,stepUnits:s" "8x12h 12h" grib_check_key_equals $temp " -w count=1 -s stepUnits=D -p step,stepUnits:s" "4D D" @@ -139,12 +142,12 @@ low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indi ${tools_dir}/grib_set -s forecastTime=-6,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "-6 h 6 h" -grib_check_key_equals $temp "-s stepUnits:s=h -p startStep:s,endStep:s" "-6 0" +grib_check_key_equals $temp "-s stepUnits:s=h -p startStep:s,endStep:s" "-6$HOUR 0$HOUR" grib_check_key_equals $temp "-s stepUnits:s=m -p startStep:s,endStep:s" "-360m 0m" grib_check_key_equals $temp "-s stepUnits:s=s -p startStep:s,endStep:s" "-21600s 0s" ${tools_dir}/grib_set -s forecastTime=-48,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=0,indicatorOfUnitForTimeRange=h $fn $temp -grib_check_key_equals $temp "-p stepRange" "-48" +grib_check_key_equals $temp "-p stepRange" "-48$HOUR" #### CHECK: check optimal units are set correctly in GRIB files @@ -237,15 +240,15 @@ grib_check_key_equals $temp2 "-p $low_level_keys" "2 h 46 h" ${tools_dir}/grib_set -s stepRange:s=5h-30h $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-p stepRange:s" "5-30" +grib_check_key_equals $temp2 "-p stepRange:s" "5$HOUR-30$HOUR" ${tools_dir}/grib_set -s stepRange:s=5-30 $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "5 h 25 h" -grib_check_key_equals $temp2 "-p stepRange:s" "5-30" +grib_check_key_equals $temp2 "-p stepRange:s" "5$HOUR-30$HOUR" ${tools_dir}/grib_set -s stepRange:s=60m-120m $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 h 1 h" -grib_check_key_equals $temp2 "-p stepRange:s" "1-2" +grib_check_key_equals $temp2 "-p stepRange:s" "1$HOUR-2$HOUR" ${tools_dir}/grib_set -s stepRange:s=60s-120s $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1 m 1 m" @@ -257,7 +260,7 @@ grib_check_key_equals $temp2 "-p stepRange:s" "60m-121m" ${tools_dir}/grib_set -s stepRange:s=62D-122D $temp $temp2 grib_check_key_equals $temp2 "-p $low_level_keys" "1488 h 1440 h" -grib_check_key_equals $temp2 "-p stepRange:s" "1488-2928" +grib_check_key_equals $temp2 "-p stepRange:s" "1488$HOUR-2928$HOUR" fn="$instantaneous_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" @@ -309,10 +312,10 @@ grib_check_key_equals $temp "-p $keys_d" "0 m" grib_check_key_equals $temp "-p $keys__ -s stepUnits=s" "0s s" grib_check_key_equals $temp "-p $keys__ -s stepUnits=m" "0m m" -grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys__ -s stepUnits=h" "0$HOUR h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=s" "0s s" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "0m m" -grib_check_key_equals $temp "-p $keys_s -s stepUnits=h" "0 h" +grib_check_key_equals $temp "-p $keys_s -s stepUnits=h" "0$HOUR h" grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0 s" grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0 m" grib_check_key_equals $temp "-p $keys_i -s stepUnits=h" "0 h" @@ -331,8 +334,8 @@ grib_check_key_equals $temp "-p $keys_d" "59 m" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" -grib_check_key_equals $temp "-p $keys__" "1 h" -grib_check_key_equals $temp "-p $keys_s" "1 h" +grib_check_key_equals $temp "-p $keys__" "1$HOUR h" +grib_check_key_equals $temp "-p $keys_s" "1$HOUR h" grib_check_key_equals $temp "-p $keys_i" "1 h" grib_check_key_equals $temp "-p $keys_d" "1 h" @@ -346,15 +349,15 @@ grib_check_key_equals $temp "-p $keys_d" "61 m" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h" -grib_check_key_equals $temp "-p $keys__" "24 h" -grib_check_key_equals $temp "-p $keys_s" "24 h" +grib_check_key_equals $temp "-p $keys__" "24$HOUR h" +grib_check_key_equals $temp "-p $keys_s" "24$HOUR h" grib_check_key_equals $temp "-p $keys_i" "24 h" grib_check_key_equals $temp "-p $keys_d" "24 h" ${tools_dir}/grib_set -s forecastTime=1440,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1440 m" -grib_check_key_equals $temp "-p $keys__" "24 h" -grib_check_key_equals $temp "-p $keys_s" "24 h" +grib_check_key_equals $temp "-p $keys__" "24$HOUR h" +grib_check_key_equals $temp "-p $keys_s" "24$HOUR h" grib_check_key_equals $temp "-p $keys_i" "24 h" grib_check_key_equals $temp "-p $keys_d" "24 h" @@ -374,23 +377,22 @@ keys_d="stepRange:d,startStep:d,endStep:d" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 m 2 h" -grib_check_key_equals $temp "-p $keys__" "0-2 0 2" -grib_check_key_equals $temp "-p $keys_s" "0-2 0 2" +grib_check_key_equals $temp "-p $keys__" "0$HOUR-2$HOUR 0$HOUR 2$HOUR" +grib_check_key_equals $temp "-p $keys_s" "0$HOUR-2$HOUR 0$HOUR 2$HOUR" grib_check_key_equals $temp "-p $keys_i" "2 0 2" grib_check_key_equals $temp "-p $keys_d" "2 0 2" ${tools_dir}/grib_set -s forecastTime=24,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "24 h 1 D" -grib_check_key_equals $temp "-p $keys__" "24-48 24 48" -grib_check_key_equals $temp "-p $keys_s" "24-48 24 48" +grib_check_key_equals $temp "-p $keys__" "24$HOUR-48$HOUR 24$HOUR 48$HOUR" +grib_check_key_equals $temp "-p $keys_s" "24$HOUR-48$HOUR 24$HOUR 48$HOUR" grib_check_key_equals $temp "-p $keys_i" "48 24 48" grib_check_key_equals $temp "-p $keys_d" "48 24 48" ${tools_dir}/grib_set -s forecastTime=25,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=1,indicatorOfUnitForTimeRange=D $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "25 h 1 D" -grib_check_key_equals $temp "-p $keys__" "25-49 25 49" -grib_check_key_equals $temp "-p $keys__" "25-49 25 49" -grib_check_key_equals $temp "-p $keys_s" "25-49 25 49" +grib_check_key_equals $temp "-p $keys__" "25$HOUR-49$HOUR 25$HOUR 49$HOUR" +grib_check_key_equals $temp "-p $keys_s" "25$HOUR-49$HOUR 25$HOUR 49$HOUR" grib_check_key_equals $temp "-p $keys_i" "49 25 49" grib_check_key_equals $temp "-p $keys_d" "49 25 49" @@ -404,29 +406,29 @@ grib_check_key_equals $temp "-p $keys_d" "60 45 60" ${tools_dir}/grib_set -s forecastTime=60,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=2,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 2 h" -grib_check_key_equals $temp "-p $keys__" "1-3 1 3" -grib_check_key_equals $temp "-p $keys_s" "1-3 1 3" +grib_check_key_equals $temp "-p $keys__" "1$HOUR-3$HOUR 1$HOUR 3$HOUR" +grib_check_key_equals $temp "-p $keys_s" "1$HOUR-3$HOUR 1$HOUR 3$HOUR" grib_check_key_equals $temp "-p $keys_i" "3 1 3" grib_check_key_equals $temp "-p $keys_d" "3 1 3" ${tools_dir}/grib_set -s forecastTime=18,indicatorOfUnitOfTimeRange=h,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "18 h 6 h" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys__" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" +grib_check_key_equals $temp "-p $keys_s" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=360,indicatorOfUnitForTimeRange=m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1080 m 360 m" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys__" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" +grib_check_key_equals $temp "-p $keys_s" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" ${tools_dir}/grib_set -s forecastTime=1080,indicatorOfUnitOfTimeRange=m,lengthOfTimeRange=6,indicatorOfUnitForTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1080 m 6 h" -grib_check_key_equals $temp "-p $keys__" "18-24 18 24" -grib_check_key_equals $temp "-p $keys_s" "18-24 18 24" +grib_check_key_equals $temp "-p $keys__" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" +grib_check_key_equals $temp "-p $keys_s" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" From f155dbbb58d1ef9ba167be6d3fc2556336b8d5ec Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 Nov 2023 20:25:43 +0000 Subject: [PATCH 102/469] codes_get_all_codetable_entries_malloc --- src/eccodes_prototypes.h | 1 + src/grib_accessor_class_codetable.cc | 47 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index c9032e08e..26a6d0851 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -340,6 +340,7 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); +int codes_get_all_codetable_entries_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); /* grib_accessor_class_codetable_units.cc*/ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index e8e286623..6ecafa05a 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -523,6 +523,53 @@ void grib_codetable_delete(grib_context* c) } } +int codes_get_all_codetable_entries_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) +{ + long lvalue = 0; + size_t size = 1; + int err = 0; + grib_context* c = h->context; + + grib_accessor* aa = grib_find_accessor(h, key); + if (!aa) return GRIB_NOT_FOUND; + + if (!STR_EQUAL(aa->cclass->name, "codetable")) { + return GRIB_INVALID_ARGUMENT; // key is not a codetable + } + + const grib_accessor_codetable* ca = (const grib_accessor_codetable*)aa; // could be dynamic_cast + + if ((err = grib_unpack_long(aa, &lvalue, &size)) != GRIB_SUCCESS) { + return err; + } + + const grib_codetable* table = ca->table; + if (!table) return GRIB_INTERNAL_ERROR; + + grib_codetable* cached_table = c->codetable; + while (cached_table) { + if (STR_EQUAL(table->recomposed_name[0], cached_table->recomposed_name[0])) { + // Found a cache entry that matches the recomposed name of ours + *entries = (code_table_entry*)calloc(cached_table->size, sizeof(code_table_entry)); + if (!*entries) { + return GRIB_OUT_OF_MEMORY; + } + size_t n = 0; + for (size_t i = 0; i < cached_table->size; i++) { + const char* abbrev = cached_table->entries[i].abbreviation; + if (abbrev) { + (*entries)[n++] = cached_table->entries[i]; + } + } + *num_entries = n; + return GRIB_SUCCESS; + } + cached_table = cached_table->next; + } + + return GRIB_CODE_NOT_FOUND_IN_TABLE; +} + static void dump(grib_accessor* a, grib_dumper* dumper) { grib_accessor_codetable* self = (grib_accessor_codetable*)a; From 832ca298e200f9407dba2d924633d448b0206bdf Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 09:21:17 +0000 Subject: [PATCH 103/469] ECC-1620: Change ECCODES_FUTURE_BEHAVIOUR to ECCODES_GRIB_SHOW_HOUR_STEPUNIT --- src/grib_accessor_class_g2end_step.cc | 6 ++++-- src/grib_accessor_class_g2step_range.cc | 8 +++++--- src/grib_accessor_class_step_in_units.cc | 3 ++- src/grib_api_internal.h | 1 + src/grib_context.cc | 4 ++++ src/step.cc | 13 +++++-------- src/step.h | 2 +- 7 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 0bd8d70ab..b7ae986f3 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -540,6 +540,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en long typeOfTimeIncrement; double dend, dstep; + int show_hours = a->context->show_hour_stepunit; Step end_step{end_step_value, end_step_unit}; @@ -587,7 +588,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%s < %s)", end_step.value("%g").c_str(), start_step.value("%g").c_str()); + "endStep < startStep (%s < %s)", end_step.value("%g", show_hours).c_str(), start_step.value("%g", show_hours).c_str()); return GRIB_WRONG_STEP; } @@ -651,6 +652,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t step_len = 0; long step_value; long step_units; + int show_hours = a->context->show_hour_stepunit; if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; @@ -665,7 +667,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) std::stringstream ss; - ss << step.value(fp_format); + ss << step.value(fp_format, show_hours); size_t size = ss.str().size() + 1; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 1260f44c2..c0bcc209d 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -142,6 +142,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) double end_step_value = 0; long step_units; + int show_hours = a->context->show_hour_stepunit; + if ((ret = grib_get_double_internal(h, self->start_step, &start_step_value)) != GRIB_SUCCESS) return ret; if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) @@ -160,7 +162,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step start_step{start_step_value, step_units}; if (self->end_step == NULL) { - ss << start_step.value(fp_format); + ss << start_step.value(fp_format, show_hours); } else { if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) @@ -169,10 +171,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step end_step{end_step_value, step_units}; if (start_step_value == end_step_value) { - ss << end_step.value(fp_format); + ss << end_step.value(fp_format, show_hours); } else { - ss << start_step.value(fp_format) << "-" << end_step.value(fp_format); + ss << start_step.value(fp_format, show_hours) << "-" << end_step.value(fp_format, show_hours); } } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index b7faa5859..d1ebcd832 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -312,6 +312,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) long step_units; char fp_format[128] = "%g"; size_t fp_format_len = sizeof(fp_format); + int show_hours = a->context->show_hour_stepunit; if ((ret = grib_get_long_internal(h, "startStep", &start_step_value)) != GRIB_SUCCESS) return ret; @@ -326,7 +327,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) Step step{start_step_value, start_step_unit}; std::stringstream ss; - ss << step.value(fp_format); + ss << step.value(fp_format, show_hours); size_t size = ss.str().size() + 1; diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index bf6b3694d..177214a6c 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1005,6 +1005,7 @@ struct grib_context int no_big_group_split; int no_spd; int keep_matrix; + int show_hour_stepunit; char* grib_definition_files_path; char* grib_samples_path; char* grib_concept_path; diff --git a/src/grib_context.cc b/src/grib_context.cc index 8f52633eb..d77fd2c06 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -287,6 +287,7 @@ static grib_context default_grib_context = { 0, /* no_big_group_split */ 0, /* no_spd */ 0, /* keep_matrix */ + 0, /* show_hour_stepunit */ 0, /* grib_definition_files_path */ 0, /* grib_samples_path */ 0, /* grib_concept_path */ @@ -388,6 +389,7 @@ grib_context* grib_context_get_default() const char* no_big_group_split = NULL; const char* no_spd = NULL; const char* keep_matrix = NULL; + const char* show_hour_stepunit = NULL; const char* bufrdc_mode = NULL; const char* bufr_set_to_missing_if_out_of_range = NULL; const char* bufr_multi_element_constant_arrays = NULL; @@ -415,6 +417,7 @@ grib_context* grib_context_get_default() no_big_group_split = codes_getenv("ECCODES_GRIB_NO_BIG_GROUP_SPLIT"); no_spd = codes_getenv("ECCODES_GRIB_NO_SPD"); keep_matrix = codes_getenv("ECCODES_GRIB_KEEP_MATRIX"); + show_hour_stepunit = codes_getenv("ECCODES_GRIB_SHOW_HOUR_STEPUNIT"); file_pool_max_opened_files = getenv("ECCODES_FILE_POOL_MAX_OPENED_FILES"); /* On UNIX, when we read from a file we get exactly what is in the file on disk. @@ -429,6 +432,7 @@ grib_context* grib_context_get_default() default_grib_context.no_big_group_split = no_big_group_split ? atoi(no_big_group_split) : 0; default_grib_context.no_spd = no_spd ? atoi(no_spd) : 0; default_grib_context.keep_matrix = keep_matrix ? atoi(keep_matrix) : 1; + default_grib_context.show_hour_stepunit = show_hour_stepunit ? atoi(show_hour_stepunit) : 0; default_grib_context.write_on_fail = write_on_fail ? atoi(write_on_fail) : 0; default_grib_context.no_abort = no_abort ? atoi(no_abort) : 0; default_grib_context.debug = debug ? atoi(debug) : 0; diff --git a/src/step.cc b/src/step.cc index 6f7f2d045..49a61f662 100644 --- a/src/step.cc +++ b/src/step.cc @@ -180,7 +180,7 @@ Step& Step::optimize_unit() } template <> -std::string Step::value(const std::string& format) const { +std::string Step::value(const std::string& format, bool show_hours) const { constexpr int MAX_SIZE = 128; char output[MAX_SIZE]; std::string u; @@ -188,16 +188,13 @@ std::string Step::value(const std::string& format) const { // Do not print unit if it is HOUR to keep backward compatibility // with previous versions of ecCodes (see ECC-1620). This is a temporary solution. - // - // TODO(maee): Remove this code to enable future output, e.g., 15h. - int future_behaviour = getenv("ECCODES_FUTURE_BEHAVIOUR") ? atoi(getenv("ECCODES_FUTURE_BEHAVIOUR")) : 0; - if (future_behaviour != 1) { - if (unit_ != Unit::Value::HOUR) - u = unit_.value(); + if (show_hours) { + u = unit_.value(); } else { - u = unit_.value(); + if (unit_ != Unit::Value::HOUR) + u = unit_.value(); } if (unit_ == Unit::Value::MINUTES15 || diff --git a/src/step.h b/src/step.h index 79afdaeb1..a9dbf8bca 100644 --- a/src/step.h +++ b/src/step.h @@ -42,7 +42,7 @@ class Step { // Getters template T value() const; template T value(const Unit& unit) const; - template T value(const std::string& format) const; + template T value(const std::string& format, bool show_hours) const; Unit unit() const { return unit_; } // Setters From 5b74d558a2bbf47464f6535378b1a9c31261d75d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 09:23:21 +0000 Subject: [PATCH 104/469] ECC-1620: Change ECCODES_FUTURE_BEHAVIOUR to ECCODES_GRIB_SHOW_HOUR_STEPUNIT --- tests/grib_ecc-1620.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 7987455ec..eb3bfb573 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -40,7 +40,7 @@ grib_check_key_equals() fi } -[[ -z "${ECCODES_FUTURE_BEHAVIOUR}" ]] && HOUR="" || HOUR="h" +[[ -z "${ECCODES_GRIB_SHOW_HOUR_STEPUNIT}" ]] && HOUR="" || HOUR="h" label="grib_ecc-1620" temp=temp.$label From 33d8f6eeafe5201dc170db13cf7c93f228c9cbc3 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 09:31:31 +0000 Subject: [PATCH 105/469] ECC-1620: Fix ECCODES_GRIB_SHOW_HOUR_STEPUNIT --- tests/grib_ecc-1620.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index eb3bfb573..0d2994459 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -40,7 +40,7 @@ grib_check_key_equals() fi } -[[ -z "${ECCODES_GRIB_SHOW_HOUR_STEPUNIT}" ]] && HOUR="" || HOUR="h" +[ -v ECCODES_GRIB_SHOW_HOUR_STEPUNIT ] && HOUR="h" || HOUR="" label="grib_ecc-1620" temp=temp.$label From d2ef5965afe07c9be89ced8ec11b7ff451c6093c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 1 Dec 2023 12:46:07 +0000 Subject: [PATCH 106/469] ECC-1620: Fix broken Windows test (ECCODES_FUTURE_BEHAVIOUR: unbound variable) --- tests/grib_ecc-1620.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 7987455ec..1fdf6b075 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -40,7 +40,9 @@ grib_check_key_equals() fi } +set +u [[ -z "${ECCODES_FUTURE_BEHAVIOUR}" ]] && HOUR="" || HOUR="h" +set -u label="grib_ecc-1620" temp=temp.$label From 61695712e14e2fb58f504da8148a5d8030d7a4a9 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 12:51:22 +0000 Subject: [PATCH 107/469] ECC-1620: nai --- tests/grib_ecc-1620.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 0d2994459..40dc6516a 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -50,6 +50,24 @@ samples_dir=$ECCODES_SAMPLES_PATH instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 + +#### Check that step, stepRange, startStep, endStep produce the same result in instantaneous fields +fn="$instantaneous_field" +low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" +keys_step="step,step:s,step:i,step:d,stepUnits:s" +keys_step_range="stepRange,stepRange:s,stepRange:i,stepRange:d,stepUnits:s" +keys_start_step="startStep,startStep:s,startStep:i,startStep:d,stepUnits:s" +keys_end_step="endStep,endStep:s,endStep:i,endStep:d,stepUnits:s" +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 m" +${tools_dir}/grib_set -s stepunits=m,step=59 $fn $temp +grib_check_key_equals $temp "-p $keys_step" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_step_range" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_start_step" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_end_step" "59m 59m 59 59 m" + + + # if stepUnits is set, then set the low level keys to stepUnits # else optimise low level keys # instant fields: @@ -71,7 +89,6 @@ grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" ${tools_dir}/grib_set -s step=60m $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1 h" -grib_check_key_equals $temp "-p $low_level_keys" "1 h" grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" From 511270e75c2fedfc95d87afe7b2d3d4a5379431f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 13:12:04 +0000 Subject: [PATCH 108/469] ECC-1620: Check value of ECCODES_GRIB_SHOW_HOUR_STEPUNIT --- tests/grib_ecc-1620.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index 40dc6516a..ecabcb1fd 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -40,7 +40,12 @@ grib_check_key_equals() fi } -[ -v ECCODES_GRIB_SHOW_HOUR_STEPUNIT ] && HOUR="h" || HOUR="" +HOUR="" +if [ -v ECCODES_GRIB_SHOW_HOUR_STEPUNIT ]; then + if [ $ECCODES_GRIB_SHOW_HOUR_STEPUNIT -gt 0 ]; then + export HOUR="h" + fi +fi label="grib_ecc-1620" temp=temp.$label From 52205dc77d237d57b2948951c19bd3afb3f4bdbc Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 1 Dec 2023 16:26:54 +0000 Subject: [PATCH 109/469] ECC-1620: Set startStepUnit --- src/grib_accessor_class_g2end_step.cc | 1 + tests/grib_ecc-1620.sh | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index b7ae986f3..62b0c9e26 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -546,6 +546,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en /*point in time */ if (self->year == NULL) { + err = grib_set_long_internal(h, "startStepUnit", end_step.unit().value()); err = grib_set_long_internal(h, self->start_step_value, end_step.value()); return err; } diff --git a/tests/grib_ecc-1620.sh b/tests/grib_ecc-1620.sh index ecabcb1fd..bcf149ead 100755 --- a/tests/grib_ecc-1620.sh +++ b/tests/grib_ecc-1620.sh @@ -41,12 +41,13 @@ grib_check_key_equals() } HOUR="" -if [ -v ECCODES_GRIB_SHOW_HOUR_STEPUNIT ]; then +if (set -u; : ${ECCODES_GRIB_SHOW_HOUR_STEPUNIT?}) 2> /dev/null; then if [ $ECCODES_GRIB_SHOW_HOUR_STEPUNIT -gt 0 ]; then export HOUR="h" fi fi + label="grib_ecc-1620" temp=temp.$label temp2=temp_2.$label @@ -56,24 +57,32 @@ instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 -#### Check that step, stepRange, startStep, endStep produce the same result in instantaneous fields +#### Make sure that step, stepRange, startStep, endStep produce the same result for instantaneous fields fn="$instantaneous_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys_step="step,step:s,step:i,step:d,stepUnits:s" keys_step_range="stepRange,stepRange:s,stepRange:i,stepRange:d,stepUnits:s" keys_start_step="startStep,startStep:s,startStep:i,startStep:d,stepUnits:s" keys_end_step="endStep,endStep:s,endStep:i,endStep:d,stepUnits:s" -${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp -grib_check_key_equals $temp "-p $low_level_keys" "0 m" +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h" ${tools_dir}/grib_set -s stepunits=m,step=59 $fn $temp grib_check_key_equals $temp "-p $keys_step" "59m 59m 59 59 m" grib_check_key_equals $temp "-p $keys_step_range" "59m 59m 59 59 m" grib_check_key_equals $temp "-p $keys_start_step" "59m 59m 59 59 m" grib_check_key_equals $temp "-p $keys_end_step" "59m 59m 59 59 m" +${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=h $fn $temp +grib_check_key_equals $temp "-p $low_level_keys" "0 h" +${tools_dir}/grib_set -s step=59m $fn $temp +grib_check_key_equals $temp "-p $keys_step" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_step_range" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_start_step" "59m 59m 59 59 m" +grib_check_key_equals $temp "-p $keys_end_step" "59m 59m 59 59 m" -# if stepUnits is set, then set the low level keys to stepUnits +#### stepUnits overrides the units in the low level keys +# if stepUnits=UNIT is set, then set the low level keys to UNIT # else optimise low level keys # instant fields: low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" From dca34cfc2df5e418d2c8265a213cc59650e70e24 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 2 Dec 2023 16:34:56 +0000 Subject: [PATCH 110/469] codes_get_codetable_contents_malloc: Renamed and added test --- src/eccodes_prototypes.h | 2 +- src/grib_accessor_class_codetable.cc | 2 +- tests/CMakeLists.txt | 2 ++ tests/codes_codetable.cc | 35 ++++++++++++++++++++++++++++ tests/codes_codetable.sh | 22 +++++++++++++++++ 5 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 tests/codes_codetable.cc create mode 100755 tests/codes_codetable.sh diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 26a6d0851..a68f0f343 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -340,7 +340,7 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); -int codes_get_all_codetable_entries_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); +int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); /* grib_accessor_class_codetable_units.cc*/ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 6ecafa05a..cccb573dd 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -523,7 +523,7 @@ void grib_codetable_delete(grib_context* c) } } -int codes_get_all_codetable_entries_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) +int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) { long lvalue = 0; size_t size = 1; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 55818b054..8079b9082 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,6 +50,7 @@ list(APPEND test_c_bins codes_set_samples_path codes_compare_keys codes_dump_content + codes_codetable grib_sh_ieee64 grib_ieee grib_set_bytes @@ -243,6 +244,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_force bufr_ecc-556 codes_ecc-1698 + codes_codetable gts_get gts_ls gts_count diff --git a/tests/codes_codetable.cc b/tests/codes_codetable.cc new file mode 100644 index 000000000..36b36f98a --- /dev/null +++ b/tests/codes_codetable.cc @@ -0,0 +1,35 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ +#include +#include "grib_api_internal.h" + +#undef NDEBUG +#include + +int main(int argc, char* argv[]) +{ + Assert(argc == 1); + grib_handle* h = grib_handle_new_from_samples(0, "GRIB2"); + + code_table_entry* entries = NULL; + size_t num_entries = 0; + const char* keyname = "indicatorOfUnitOfTimeRange"; + int err = codes_get_codetable_contents_malloc(h, keyname, &entries, &num_entries); + Assert(!err); + Assert(num_entries == 13); + + for (size_t i=0; i Date: Sat, 2 Dec 2023 17:45:44 +0000 Subject: [PATCH 111/469] codes_codetable_check_entry and further tests --- src/eccodes_prototypes.h | 3 +- src/grib_accessor_class_codetable.cc | 35 ++++++++++++++++------ tests/codes_codetable.cc | 43 +++++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index a68f0f343..59e5958d4 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -340,7 +340,8 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); -int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); +int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); +int codes_codetable_check_entry(const grib_handle* h, const char* key, long code); /* grib_accessor_class_codetable_units.cc*/ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index cccb573dd..e1df1b87f 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -523,7 +523,7 @@ void grib_codetable_delete(grib_context* c) } } -int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) +int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) { long lvalue = 0; size_t size = 1; @@ -539,6 +539,7 @@ int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, c const grib_accessor_codetable* ca = (const grib_accessor_codetable*)aa; // could be dynamic_cast + // Decode the key itself. This will either fetch it from the cache or place it there if ((err = grib_unpack_long(aa, &lvalue, &size)) != GRIB_SUCCESS) { return err; } @@ -546,22 +547,18 @@ int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, c const grib_codetable* table = ca->table; if (!table) return GRIB_INTERNAL_ERROR; - grib_codetable* cached_table = c->codetable; + grib_codetable* cached_table = c->codetable; // Access the codetable cache while (cached_table) { if (STR_EQUAL(table->recomposed_name[0], cached_table->recomposed_name[0])) { // Found a cache entry that matches the recomposed name of ours + *num_entries = cached_table->size; *entries = (code_table_entry*)calloc(cached_table->size, sizeof(code_table_entry)); if (!*entries) { return GRIB_OUT_OF_MEMORY; } - size_t n = 0; for (size_t i = 0; i < cached_table->size; i++) { - const char* abbrev = cached_table->entries[i].abbreviation; - if (abbrev) { - (*entries)[n++] = cached_table->entries[i]; - } + (*entries)[i] = cached_table->entries[i]; } - *num_entries = n; return GRIB_SUCCESS; } cached_table = cached_table->next; @@ -570,6 +567,28 @@ int codes_get_codetable_contents_malloc(const grib_handle* h, const char* key, c return GRIB_CODE_NOT_FOUND_IN_TABLE; } +int codes_codetable_check_entry(const grib_handle* h, const char* key, long code) +{ + code_table_entry* entries = NULL; + size_t num_entries = 0; + int err = 0; + err = codes_codetable_get_contents_malloc(h, key, &entries, &num_entries); + if (err) return err; + + if (code < 0 || (size_t)code >= num_entries) { + err = GRIB_OUT_OF_RANGE; + goto cleanup; + } + + if (entries[code].abbreviation == NULL) { + err = GRIB_INVALID_KEY_VALUE; + goto cleanup; + } +cleanup: + free(entries); + return err; +} + static void dump(grib_accessor* a, grib_dumper* dumper) { grib_accessor_codetable* self = (grib_accessor_codetable*)a; diff --git a/tests/codes_codetable.cc b/tests/codes_codetable.cc index 36b36f98a..65ee7a1da 100644 --- a/tests/codes_codetable.cc +++ b/tests/codes_codetable.cc @@ -20,15 +20,50 @@ int main(int argc, char* argv[]) code_table_entry* entries = NULL; size_t num_entries = 0; - const char* keyname = "indicatorOfUnitOfTimeRange"; - int err = codes_get_codetable_contents_malloc(h, keyname, &entries, &num_entries); + int err = codes_codetable_get_contents_malloc(h, "indicatorOfUnitOfTimeRange", &entries, &num_entries); Assert(!err); - Assert(num_entries == 13); + Assert(entries != NULL); + Assert(num_entries == 256); for (size_t i=0; i Date: Sat, 2 Dec 2023 18:35:01 +0000 Subject: [PATCH 112/469] Functions codes_codetable_check_code_figure and codes_codetable_check_abbreviation --- src/eccodes_prototypes.h | 3 ++- src/grib_accessor_class_codetable.cc | 24 +++++++++++++++++++++++- tests/codes_codetable.cc | 24 +++++++++++++++++------- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 59e5958d4..1d049c14c 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -341,7 +341,8 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); -int codes_codetable_check_entry(const grib_handle* h, const char* key, long code); +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code); +int codes_codetable_check_abbreviation(const grib_handle* h, const char* key, const char* abbreviation); /* grib_accessor_class_codetable_units.cc*/ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index e1df1b87f..92f5daf5f 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -567,7 +567,7 @@ int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, c return GRIB_CODE_NOT_FOUND_IN_TABLE; } -int codes_codetable_check_entry(const grib_handle* h, const char* key, long code) +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code) { code_table_entry* entries = NULL; size_t num_entries = 0; @@ -589,6 +589,28 @@ int codes_codetable_check_entry(const grib_handle* h, const char* key, long code return err; } +int codes_codetable_check_abbreviation(const grib_handle* h, const char* key, const char* abbreviation) +{ + code_table_entry* entries = NULL; + size_t num_entries = 0; + int err = 0; + err = codes_codetable_get_contents_malloc(h, key, &entries, &num_entries); + if (err) return err; + + bool found = false; + for (size_t i=0; i Date: Sat, 2 Dec 2023 18:51:39 +0000 Subject: [PATCH 113/469] Codetable API functions --- src/eccodes_prototypes.h | 2 +- src/grib_accessor_class_codetable.cc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 1d049c14c..6d72509de 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -341,7 +341,7 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); -int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code); +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code_figure); int codes_codetable_check_abbreviation(const grib_handle* h, const char* key, const char* abbreviation); /* grib_accessor_class_codetable_units.cc*/ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 92f5daf5f..f57917858 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -567,7 +567,7 @@ int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, c return GRIB_CODE_NOT_FOUND_IN_TABLE; } -int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code) +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code_figure) { code_table_entry* entries = NULL; size_t num_entries = 0; @@ -575,12 +575,12 @@ int codes_codetable_check_code_figure(const grib_handle* h, const char* key, lon err = codes_codetable_get_contents_malloc(h, key, &entries, &num_entries); if (err) return err; - if (code < 0 || (size_t)code >= num_entries) { + if (code_figure < 0 || (size_t)code_figure >= num_entries) { err = GRIB_OUT_OF_RANGE; goto cleanup; } - if (entries[code].abbreviation == NULL) { + if (entries[code_figure].abbreviation == NULL) { err = GRIB_INVALID_KEY_VALUE; goto cleanup; } From e3ba4f1a0274ffdc86eb9ebf38feb170be1fe76e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 3 Dec 2023 12:28:41 +0000 Subject: [PATCH 114/469] Rename test --- tests/CMakeLists.txt | 2 +- tests/{grib_ecc-1620.sh => grib_sub_hourly.sh} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/{grib_ecc-1620.sh => grib_sub_hourly.sh} (100%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 69cf59a5f..59c46bc02 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -240,7 +240,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1397 grib_ecc-1425 grib_ecc-1467 - grib_ecc-1620 + grib_sub_hourly grib_set_bytes grib_set_force bufr_ecc-556 diff --git a/tests/grib_ecc-1620.sh b/tests/grib_sub_hourly.sh similarity index 100% rename from tests/grib_ecc-1620.sh rename to tests/grib_sub_hourly.sh From 89dda0d8459ebec2182b40ac851b011f970cde6c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 3 Dec 2023 12:31:04 +0000 Subject: [PATCH 115/469] Rename test --- tests/grib_sub_hourly.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index bcf149ead..c9ac1f34e 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -10,6 +10,9 @@ . ./include.ctest.sh +# See JIRA issues ECC-1620, ECC-1238 +# ----------------------------------- + grib_expect_failure() { a_file=$1 From 93322ae0c5632826e6bc7cd424bb2da23a1a9f38 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 4 Dec 2023 18:18:21 +0000 Subject: [PATCH 116/469] Tools: Rename and documentation --- tools/{grib_split => grib_split.pl} | 5 +++++ 1 file changed, 5 insertions(+) rename tools/{grib_split => grib_split.pl} (92%) diff --git a/tools/grib_split b/tools/grib_split.pl similarity index 92% rename from tools/grib_split rename to tools/grib_split.pl index 1e86d8fda..492267ad7 100755 --- a/tools/grib_split +++ b/tools/grib_split.pl @@ -1,6 +1,11 @@ #!/usr/bin/perl use strict; +# ---------------------------------------------------------------------- +# Convert GRIB edition 2 multi-field (several fields per message) files +# to single-field (one field per message) +# ---------------------------------------------------------------------- + my $debug = 0; my $total = 0; my $previous_bitmap; From e91e71c1e8cc5074300f200208aa3fce27edd5f8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 4 Dec 2023 18:25:19 +0000 Subject: [PATCH 117/469] Tools: Cleanup --- tools/grib_split.pl | 260 +++++++++++++++++++++----------------------- 1 file changed, 125 insertions(+), 135 deletions(-) diff --git a/tools/grib_split.pl b/tools/grib_split.pl index 492267ad7..209c5186a 100755 --- a/tools/grib_split.pl +++ b/tools/grib_split.pl @@ -10,156 +10,146 @@ my $total = 0; my $previous_bitmap; - -if($ARGV[0] eq "-d") +if ($ARGV[0] eq "-d") { - $debug = 1; - shift @ARGV; + $debug = 1; + shift @ARGV; } my $out = pop @ARGV; unless(@ARGV >= 1 && defined $out) { - print STDERR "Usage: $0 [-d] in1 [in2 ...] out\n"; - exit(1); + print STDERR "Usage: $0 [-d] in1 [in2 ...] out\n"; + exit(1); } open(OUT,">$out") || die "$out: $!"; foreach my $in ( @ARGV ) { - my $gribs = 0; - my $cnt = 0; - open(IN,"<$in") || die "$in: $!"; - - - while(1) - { - - my @sections = (); -# Find header - - print "Looking for GRIB\n" if($debug); - my $grib; - while((read(IN,$grib,4) == 4) && ($grib ne "GRIB")) - { - seek(IN,-3,1); - } - - unless($grib eq "GRIB") - { - print "No more GRIBs\n" if($debug); - last; - } - - my $here = tell(IN); - my $start = $here - 4; - $gribs++; - - print "$grib found at offset $start\n" if($debug); - - my ($reserved,$discipline,$edition); - - die "$in: $!" unless(read(IN,$reserved,2) == 2); - die "$in: $!" unless(read(IN,$discipline,1) == 1); - die "$in: $!" unless(read(IN,$edition,1) == 1); - - my $grib_edition = ord($edition); - die "Un-supported edition $grib_edition" unless($grib_edition == 2); - - - my ($len1,$len2); - die "$in: $!" unless(read(IN,$len1,4) == 4); - die "$in: $!" unless(read(IN,$len2,4) == 4); - - my $msglen1 = unpack("N",$len1); die "GRIB too large" if($msglen1); - my $msglen2 = unpack("N",$len2); - my $msglen = $msglen2; - print "Message length $msglen\n" if($debug); - - while(1) - { - $here = tell(IN); - my ($seclen,$section); - - die "$in: $!" unless(read(IN,$seclen,4) == 4); - - if($seclen eq "7777") - { - print "7777 found at offset $here\n" if($debug); - die "Invalid message lenth $msglen" - unless($here+4-$start == $msglen); - last; - } - - $seclen = unpack("N",$seclen); - die "$in: $!" unless(read(IN,$section,1) == 1); - $section = ord($section); - die "Invalid section number $section" unless ($section >= 1 && $section <=7); - print "Section $section found at offset $here length $seclen\n" if($debug); - seek(IN,-5,1) or die "$in: $!"; - - my $data; - die "$in: $!" unless(read(IN,$data,$seclen) == $seclen); - - - if($section == 6) - { - # Special case for inherited bitmaps - if(unpack('C',substr($data,5,1)) == 254) - { - die "No previous bitmap" unless(defined $previous_bitmap); - $data = $previous_bitmap; - } - else - { - $previous_bitmap = $data; - } - } - - splice(@sections,$section+1); - $sections[$section] = $data; - - - if($section == 7) - { - print OUT "GRIB"; - print OUT $reserved; - print OUT $discipline; - print OUT $edition; - print OUT $len1; - - $len2 = 16 + 4; - for(my $i = 1; $i <= 7 ; $i++) - { - $len2 += length($sections[$i]) - if(defined $sections[$i]); - } - - $cnt++; - print "GRIB $cnt is $len2\n" if($debug); - $len2 = pack("N",$len2); - print OUT $len2; - - for(my $i = 1; $i <= 7 ; $i++) - { - next unless(defined $sections[$i]); - print OUT $sections[$i]; - } - print OUT "7777"; - } - - } - - } - - print "$in: $cnt field(s) found in $gribs GRIB(s)\n"; - $total += $cnt; + my $gribs = 0; + my $cnt = 0; + open(IN,"<$in") || die "$in: $!"; + + while(1) + { + my @sections = (); + # Find header + + print "Looking for GRIB\n" if ($debug); + my $grib; + while((read(IN,$grib,4) == 4) && ($grib ne "GRIB")) + { + seek(IN,-3,1); + } + + unless($grib eq "GRIB") + { + print "No more GRIBs\n" if ($debug); + last; + } + + my $here = tell(IN); + my $start = $here - 4; + $gribs++; + + print "$grib found at offset $start\n" if ($debug); + + my ($reserved,$discipline,$edition); + + die "$in: $!" unless(read(IN,$reserved,2) == 2); + die "$in: $!" unless(read(IN,$discipline,1) == 1); + die "$in: $!" unless(read(IN,$edition,1) == 1); + + my $grib_edition = ord($edition); + die "Un-supported edition $grib_edition" unless($grib_edition == 2); + + my ($len1,$len2); + die "$in: $!" unless(read(IN,$len1,4) == 4); + die "$in: $!" unless(read(IN,$len2,4) == 4); + + my $msglen1 = unpack("N",$len1); die "GRIB too large" if ($msglen1); + my $msglen2 = unpack("N",$len2); + my $msglen = $msglen2; + print "Message length $msglen\n" if ($debug); + + while(1) + { + $here = tell(IN); + my ($seclen,$section); + + die "$in: $!" unless(read(IN,$seclen,4) == 4); + + if ($seclen eq "7777") + { + print "7777 found at offset $here\n" if ($debug); + die "Invalid message lenth $msglen" + unless($here+4-$start == $msglen); + last; + } + + $seclen = unpack("N",$seclen); + die "$in: $!" unless(read(IN,$section,1) == 1); + $section = ord($section); + die "Invalid section number $section" unless ($section >= 1 && $section <=7); + print "Section $section found at offset $here length $seclen\n" if ($debug); + seek(IN,-5,1) or die "$in: $!"; + + my $data; + die "$in: $!" unless(read(IN,$data,$seclen) == $seclen); + + if ($section == 6) + { + # Special case for inherited bitmaps + if (unpack('C',substr($data,5,1)) == 254) + { + die "No previous bitmap" unless(defined $previous_bitmap); + $data = $previous_bitmap; + } + else + { + $previous_bitmap = $data; + } + } + + splice(@sections,$section+1); + $sections[$section] = $data; + + if ($section == 7) + { + print OUT "GRIB"; + print OUT $reserved; + print OUT $discipline; + print OUT $edition; + print OUT $len1; + + $len2 = 16 + 4; + for(my $i = 1; $i <= 7 ; $i++) + { + $len2 += length($sections[$i]) + if (defined $sections[$i]); + } + + $cnt++; + print "GRIB $cnt is $len2\n" if ($debug); + $len2 = pack("N",$len2); + print OUT $len2; + + for(my $i = 1; $i <= 7 ; $i++) + { + next unless(defined $sections[$i]); + print OUT $sections[$i]; + } + print OUT "7777"; + } + } + } + + print "$in: $cnt field(s) found in $gribs GRIB(s)\n"; + $total += $cnt; } close(OUT) or die "$out: $!"; print "$out: $total field(s) written\n"; - - From 0a63f073a7a027541db3c528e5dc847c7d37ca14 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 4 Dec 2023 22:05:49 +0000 Subject: [PATCH 118/469] Definitions: Remove unused local code tables (discipline 192) --- definitions/grib2/tables/10/4.1.192.table | 3 --- definitions/grib2/tables/11/4.1.192.table | 3 --- definitions/grib2/tables/12/4.1.192.table | 2 -- definitions/grib2/tables/13/4.1.192.table | 2 -- definitions/grib2/tables/14/4.1.192.table | 4 ---- definitions/grib2/tables/15/4.1.192.table | 2 -- definitions/grib2/tables/16/4.1.192.table | 3 --- definitions/grib2/tables/17/4.1.192.table | 3 --- definitions/grib2/tables/18/4.1.192.table | 3 --- definitions/grib2/tables/19/4.1.192.table | 3 --- definitions/grib2/tables/20/4.1.192.table | 2 -- definitions/grib2/tables/21/4.1.192.table | 3 --- definitions/grib2/tables/22/4.1.192.table | 2 -- definitions/grib2/tables/23/4.1.192.table | 2 -- definitions/grib2/tables/24/4.1.192.table | 2 -- definitions/grib2/tables/25/4.1.192.table | 3 --- definitions/grib2/tables/26/4.1.192.table | 3 --- definitions/grib2/tables/27/4.1.192.table | 3 --- definitions/grib2/tables/28/4.1.192.table | 3 --- definitions/grib2/tables/29/4.1.192.table | 3 --- definitions/grib2/tables/30/4.1.192.table | 2 -- definitions/grib2/tables/31/4.1.192.table | 2 -- definitions/grib2/tables/32/4.1.192.table | 2 -- definitions/grib2/tables/4/4.1.192.table | 2 -- definitions/grib2/tables/4/4.2.192.0.table | 2 -- definitions/grib2/tables/4/4.2.192.1.table | 2 -- definitions/grib2/tables/4/4.2.192.10.table | 2 -- definitions/grib2/tables/4/4.2.192.100.table | 2 -- definitions/grib2/tables/4/4.2.192.101.table | 2 -- definitions/grib2/tables/4/4.2.192.102.table | 2 -- definitions/grib2/tables/4/4.2.192.103.table | 2 -- definitions/grib2/tables/4/4.2.192.104.table | 2 -- definitions/grib2/tables/4/4.2.192.105.table | 2 -- definitions/grib2/tables/4/4.2.192.106.table | 2 -- definitions/grib2/tables/4/4.2.192.107.table | 2 -- definitions/grib2/tables/4/4.2.192.108.table | 2 -- definitions/grib2/tables/4/4.2.192.109.table | 2 -- definitions/grib2/tables/4/4.2.192.11.table | 2 -- definitions/grib2/tables/4/4.2.192.110.table | 2 -- definitions/grib2/tables/4/4.2.192.111.table | 2 -- definitions/grib2/tables/4/4.2.192.112.table | 2 -- definitions/grib2/tables/4/4.2.192.113.table | 2 -- definitions/grib2/tables/4/4.2.192.114.table | 2 -- definitions/grib2/tables/4/4.2.192.115.table | 2 -- definitions/grib2/tables/4/4.2.192.116.table | 2 -- definitions/grib2/tables/4/4.2.192.117.table | 2 -- definitions/grib2/tables/4/4.2.192.118.table | 2 -- definitions/grib2/tables/4/4.2.192.119.table | 2 -- definitions/grib2/tables/4/4.2.192.12.table | 2 -- definitions/grib2/tables/4/4.2.192.120.table | 2 -- definitions/grib2/tables/4/4.2.192.121.table | 2 -- definitions/grib2/tables/4/4.2.192.122.table | 2 -- definitions/grib2/tables/4/4.2.192.123.table | 2 -- definitions/grib2/tables/4/4.2.192.124.table | 2 -- definitions/grib2/tables/4/4.2.192.125.table | 2 -- definitions/grib2/tables/4/4.2.192.126.table | 2 -- definitions/grib2/tables/4/4.2.192.127.table | 2 -- definitions/grib2/tables/4/4.2.192.128.table | 2 -- definitions/grib2/tables/4/4.2.192.129.table | 2 -- definitions/grib2/tables/4/4.2.192.13.table | 2 -- definitions/grib2/tables/4/4.2.192.130.table | 2 -- definitions/grib2/tables/4/4.2.192.131.table | 2 -- definitions/grib2/tables/4/4.2.192.132.table | 2 -- definitions/grib2/tables/4/4.2.192.133.table | 2 -- definitions/grib2/tables/4/4.2.192.134.table | 2 -- definitions/grib2/tables/4/4.2.192.135.table | 2 -- definitions/grib2/tables/4/4.2.192.136.table | 2 -- definitions/grib2/tables/4/4.2.192.137.table | 2 -- definitions/grib2/tables/4/4.2.192.138.table | 2 -- definitions/grib2/tables/4/4.2.192.139.table | 2 -- definitions/grib2/tables/4/4.2.192.14.table | 2 -- definitions/grib2/tables/4/4.2.192.140.table | 2 -- definitions/grib2/tables/4/4.2.192.141.table | 2 -- definitions/grib2/tables/4/4.2.192.142.table | 2 -- definitions/grib2/tables/4/4.2.192.143.table | 2 -- definitions/grib2/tables/4/4.2.192.144.table | 2 -- definitions/grib2/tables/4/4.2.192.145.table | 2 -- definitions/grib2/tables/4/4.2.192.146.table | 2 -- definitions/grib2/tables/4/4.2.192.147.table | 2 -- definitions/grib2/tables/4/4.2.192.148.table | 2 -- definitions/grib2/tables/4/4.2.192.149.table | 2 -- definitions/grib2/tables/4/4.2.192.15.table | 2 -- definitions/grib2/tables/4/4.2.192.150.table | 2 -- definitions/grib2/tables/4/4.2.192.151.table | 2 -- definitions/grib2/tables/4/4.2.192.152.table | 2 -- definitions/grib2/tables/4/4.2.192.153.table | 2 -- definitions/grib2/tables/4/4.2.192.154.table | 2 -- definitions/grib2/tables/4/4.2.192.155.table | 2 -- definitions/grib2/tables/4/4.2.192.156.table | 2 -- definitions/grib2/tables/4/4.2.192.157.table | 2 -- definitions/grib2/tables/4/4.2.192.158.table | 2 -- definitions/grib2/tables/4/4.2.192.159.table | 2 -- definitions/grib2/tables/4/4.2.192.16.table | 2 -- definitions/grib2/tables/4/4.2.192.160.table | 2 -- definitions/grib2/tables/4/4.2.192.161.table | 2 -- definitions/grib2/tables/4/4.2.192.162.table | 2 -- definitions/grib2/tables/4/4.2.192.163.table | 2 -- definitions/grib2/tables/4/4.2.192.164.table | 2 -- definitions/grib2/tables/4/4.2.192.165.table | 2 -- definitions/grib2/tables/4/4.2.192.166.table | 2 -- definitions/grib2/tables/4/4.2.192.167.table | 2 -- definitions/grib2/tables/4/4.2.192.168.table | 2 -- definitions/grib2/tables/4/4.2.192.169.table | 2 -- definitions/grib2/tables/4/4.2.192.17.table | 2 -- definitions/grib2/tables/4/4.2.192.170.table | 2 -- definitions/grib2/tables/4/4.2.192.171.table | 2 -- definitions/grib2/tables/4/4.2.192.172.table | 2 -- definitions/grib2/tables/4/4.2.192.173.table | 2 -- definitions/grib2/tables/4/4.2.192.174.table | 2 -- definitions/grib2/tables/4/4.2.192.175.table | 2 -- definitions/grib2/tables/4/4.2.192.176.table | 2 -- definitions/grib2/tables/4/4.2.192.177.table | 2 -- definitions/grib2/tables/4/4.2.192.178.table | 2 -- definitions/grib2/tables/4/4.2.192.179.table | 2 -- definitions/grib2/tables/4/4.2.192.18.table | 2 -- definitions/grib2/tables/4/4.2.192.180.table | 2 -- definitions/grib2/tables/4/4.2.192.181.table | 2 -- definitions/grib2/tables/4/4.2.192.182.table | 2 -- definitions/grib2/tables/4/4.2.192.183.table | 2 -- definitions/grib2/tables/4/4.2.192.184.table | 2 -- definitions/grib2/tables/4/4.2.192.185.table | 2 -- definitions/grib2/tables/4/4.2.192.186.table | 2 -- definitions/grib2/tables/4/4.2.192.187.table | 2 -- definitions/grib2/tables/4/4.2.192.188.table | 2 -- definitions/grib2/tables/4/4.2.192.189.table | 2 -- definitions/grib2/tables/4/4.2.192.19.table | 2 -- definitions/grib2/tables/4/4.2.192.190.table | 2 -- definitions/grib2/tables/4/4.2.192.191.table | 2 -- definitions/grib2/tables/4/4.2.192.192.table | 2 -- definitions/grib2/tables/4/4.2.192.193.table | 2 -- definitions/grib2/tables/4/4.2.192.194.table | 2 -- definitions/grib2/tables/4/4.2.192.195.table | 2 -- definitions/grib2/tables/4/4.2.192.196.table | 2 -- definitions/grib2/tables/4/4.2.192.197.table | 2 -- definitions/grib2/tables/4/4.2.192.198.table | 2 -- definitions/grib2/tables/4/4.2.192.199.table | 2 -- definitions/grib2/tables/4/4.2.192.2.table | 2 -- definitions/grib2/tables/4/4.2.192.20.table | 2 -- definitions/grib2/tables/4/4.2.192.200.table | 2 -- definitions/grib2/tables/4/4.2.192.201.table | 2 -- definitions/grib2/tables/4/4.2.192.202.table | 2 -- definitions/grib2/tables/4/4.2.192.203.table | 2 -- definitions/grib2/tables/4/4.2.192.204.table | 2 -- definitions/grib2/tables/4/4.2.192.205.table | 2 -- definitions/grib2/tables/4/4.2.192.206.table | 2 -- definitions/grib2/tables/4/4.2.192.207.table | 2 -- definitions/grib2/tables/4/4.2.192.208.table | 2 -- definitions/grib2/tables/4/4.2.192.209.table | 2 -- definitions/grib2/tables/4/4.2.192.21.table | 2 -- definitions/grib2/tables/4/4.2.192.210.table | 2 -- definitions/grib2/tables/4/4.2.192.211.table | 2 -- definitions/grib2/tables/4/4.2.192.212.table | 2 -- definitions/grib2/tables/4/4.2.192.213.table | 2 -- definitions/grib2/tables/4/4.2.192.214.table | 2 -- definitions/grib2/tables/4/4.2.192.215.table | 2 -- definitions/grib2/tables/4/4.2.192.216.table | 2 -- definitions/grib2/tables/4/4.2.192.217.table | 2 -- definitions/grib2/tables/4/4.2.192.218.table | 2 -- definitions/grib2/tables/4/4.2.192.219.table | 2 -- definitions/grib2/tables/4/4.2.192.22.table | 2 -- definitions/grib2/tables/4/4.2.192.220.table | 2 -- definitions/grib2/tables/4/4.2.192.221.table | 2 -- definitions/grib2/tables/4/4.2.192.222.table | 2 -- definitions/grib2/tables/4/4.2.192.223.table | 2 -- definitions/grib2/tables/4/4.2.192.224.table | 2 -- definitions/grib2/tables/4/4.2.192.225.table | 2 -- definitions/grib2/tables/4/4.2.192.226.table | 2 -- definitions/grib2/tables/4/4.2.192.227.table | 2 -- definitions/grib2/tables/4/4.2.192.228.table | 2 -- definitions/grib2/tables/4/4.2.192.229.table | 2 -- definitions/grib2/tables/4/4.2.192.23.table | 2 -- definitions/grib2/tables/4/4.2.192.230.table | 2 -- definitions/grib2/tables/4/4.2.192.231.table | 2 -- definitions/grib2/tables/4/4.2.192.232.table | 2 -- definitions/grib2/tables/4/4.2.192.233.table | 2 -- definitions/grib2/tables/4/4.2.192.234.table | 2 -- definitions/grib2/tables/4/4.2.192.235.table | 2 -- definitions/grib2/tables/4/4.2.192.236.table | 2 -- definitions/grib2/tables/4/4.2.192.237.table | 2 -- definitions/grib2/tables/4/4.2.192.238.table | 2 -- definitions/grib2/tables/4/4.2.192.239.table | 2 -- definitions/grib2/tables/4/4.2.192.24.table | 2 -- definitions/grib2/tables/4/4.2.192.240.table | 2 -- definitions/grib2/tables/4/4.2.192.241.table | 2 -- definitions/grib2/tables/4/4.2.192.242.table | 2 -- definitions/grib2/tables/4/4.2.192.243.table | 2 -- definitions/grib2/tables/4/4.2.192.244.table | 2 -- definitions/grib2/tables/4/4.2.192.245.table | 2 -- definitions/grib2/tables/4/4.2.192.246.table | 2 -- definitions/grib2/tables/4/4.2.192.247.table | 2 -- definitions/grib2/tables/4/4.2.192.248.table | 2 -- definitions/grib2/tables/4/4.2.192.249.table | 2 -- definitions/grib2/tables/4/4.2.192.25.table | 2 -- definitions/grib2/tables/4/4.2.192.250.table | 2 -- definitions/grib2/tables/4/4.2.192.251.table | 2 -- definitions/grib2/tables/4/4.2.192.252.table | 2 -- definitions/grib2/tables/4/4.2.192.253.table | 2 -- definitions/grib2/tables/4/4.2.192.254.table | 2 -- definitions/grib2/tables/4/4.2.192.255.table | 2 -- definitions/grib2/tables/4/4.2.192.26.table | 2 -- definitions/grib2/tables/4/4.2.192.27.table | 2 -- definitions/grib2/tables/4/4.2.192.28.table | 2 -- definitions/grib2/tables/4/4.2.192.29.table | 2 -- definitions/grib2/tables/4/4.2.192.3.table | 2 -- definitions/grib2/tables/4/4.2.192.30.table | 2 -- definitions/grib2/tables/4/4.2.192.31.table | 2 -- definitions/grib2/tables/4/4.2.192.32.table | 2 -- definitions/grib2/tables/4/4.2.192.33.table | 2 -- definitions/grib2/tables/4/4.2.192.34.table | 2 -- definitions/grib2/tables/4/4.2.192.35.table | 2 -- definitions/grib2/tables/4/4.2.192.36.table | 2 -- definitions/grib2/tables/4/4.2.192.37.table | 2 -- definitions/grib2/tables/4/4.2.192.38.table | 2 -- definitions/grib2/tables/4/4.2.192.39.table | 2 -- definitions/grib2/tables/4/4.2.192.4.table | 2 -- definitions/grib2/tables/4/4.2.192.40.table | 2 -- definitions/grib2/tables/4/4.2.192.41.table | 2 -- definitions/grib2/tables/4/4.2.192.42.table | 2 -- definitions/grib2/tables/4/4.2.192.43.table | 2 -- definitions/grib2/tables/4/4.2.192.44.table | 2 -- definitions/grib2/tables/4/4.2.192.45.table | 2 -- definitions/grib2/tables/4/4.2.192.46.table | 2 -- definitions/grib2/tables/4/4.2.192.47.table | 2 -- definitions/grib2/tables/4/4.2.192.48.table | 2 -- definitions/grib2/tables/4/4.2.192.49.table | 2 -- definitions/grib2/tables/4/4.2.192.5.table | 2 -- definitions/grib2/tables/4/4.2.192.50.table | 2 -- definitions/grib2/tables/4/4.2.192.51.table | 2 -- definitions/grib2/tables/4/4.2.192.52.table | 2 -- definitions/grib2/tables/4/4.2.192.53.table | 2 -- definitions/grib2/tables/4/4.2.192.54.table | 2 -- definitions/grib2/tables/4/4.2.192.55.table | 2 -- definitions/grib2/tables/4/4.2.192.56.table | 2 -- definitions/grib2/tables/4/4.2.192.57.table | 2 -- definitions/grib2/tables/4/4.2.192.58.table | 2 -- definitions/grib2/tables/4/4.2.192.59.table | 2 -- definitions/grib2/tables/4/4.2.192.6.table | 2 -- definitions/grib2/tables/4/4.2.192.60.table | 2 -- definitions/grib2/tables/4/4.2.192.61.table | 2 -- definitions/grib2/tables/4/4.2.192.62.table | 2 -- definitions/grib2/tables/4/4.2.192.63.table | 2 -- definitions/grib2/tables/4/4.2.192.64.table | 2 -- definitions/grib2/tables/4/4.2.192.65.table | 2 -- definitions/grib2/tables/4/4.2.192.66.table | 2 -- definitions/grib2/tables/4/4.2.192.67.table | 2 -- definitions/grib2/tables/4/4.2.192.68.table | 2 -- definitions/grib2/tables/4/4.2.192.69.table | 2 -- definitions/grib2/tables/4/4.2.192.7.table | 2 -- definitions/grib2/tables/4/4.2.192.70.table | 2 -- definitions/grib2/tables/4/4.2.192.71.table | 2 -- definitions/grib2/tables/4/4.2.192.72.table | 2 -- definitions/grib2/tables/4/4.2.192.73.table | 2 -- definitions/grib2/tables/4/4.2.192.74.table | 2 -- definitions/grib2/tables/4/4.2.192.75.table | 2 -- definitions/grib2/tables/4/4.2.192.76.table | 2 -- definitions/grib2/tables/4/4.2.192.77.table | 2 -- definitions/grib2/tables/4/4.2.192.78.table | 2 -- definitions/grib2/tables/4/4.2.192.79.table | 2 -- definitions/grib2/tables/4/4.2.192.8.table | 2 -- definitions/grib2/tables/4/4.2.192.80.table | 2 -- definitions/grib2/tables/4/4.2.192.81.table | 2 -- definitions/grib2/tables/4/4.2.192.82.table | 2 -- definitions/grib2/tables/4/4.2.192.83.table | 2 -- definitions/grib2/tables/4/4.2.192.84.table | 2 -- definitions/grib2/tables/4/4.2.192.85.table | 2 -- definitions/grib2/tables/4/4.2.192.86.table | 2 -- definitions/grib2/tables/4/4.2.192.87.table | 2 -- definitions/grib2/tables/4/4.2.192.88.table | 2 -- definitions/grib2/tables/4/4.2.192.89.table | 2 -- definitions/grib2/tables/4/4.2.192.9.table | 2 -- definitions/grib2/tables/4/4.2.192.90.table | 2 -- definitions/grib2/tables/4/4.2.192.91.table | 2 -- definitions/grib2/tables/4/4.2.192.92.table | 2 -- definitions/grib2/tables/4/4.2.192.93.table | 2 -- definitions/grib2/tables/4/4.2.192.94.table | 2 -- definitions/grib2/tables/4/4.2.192.95.table | 2 -- definitions/grib2/tables/4/4.2.192.96.table | 2 -- definitions/grib2/tables/4/4.2.192.97.table | 2 -- definitions/grib2/tables/4/4.2.192.98.table | 2 -- definitions/grib2/tables/4/4.2.192.99.table | 2 -- definitions/grib2/tables/5/4.1.192.table | 2 -- definitions/grib2/tables/5/4.2.192.0.table | 2 -- definitions/grib2/tables/5/4.2.192.1.table | 2 -- definitions/grib2/tables/5/4.2.192.10.table | 2 -- definitions/grib2/tables/5/4.2.192.100.table | 2 -- definitions/grib2/tables/5/4.2.192.101.table | 2 -- definitions/grib2/tables/5/4.2.192.102.table | 2 -- definitions/grib2/tables/5/4.2.192.103.table | 2 -- definitions/grib2/tables/5/4.2.192.104.table | 2 -- definitions/grib2/tables/5/4.2.192.105.table | 2 -- definitions/grib2/tables/5/4.2.192.106.table | 2 -- definitions/grib2/tables/5/4.2.192.107.table | 2 -- definitions/grib2/tables/5/4.2.192.108.table | 2 -- definitions/grib2/tables/5/4.2.192.109.table | 2 -- definitions/grib2/tables/5/4.2.192.11.table | 2 -- definitions/grib2/tables/5/4.2.192.110.table | 2 -- definitions/grib2/tables/5/4.2.192.111.table | 2 -- definitions/grib2/tables/5/4.2.192.112.table | 2 -- definitions/grib2/tables/5/4.2.192.113.table | 2 -- definitions/grib2/tables/5/4.2.192.114.table | 2 -- definitions/grib2/tables/5/4.2.192.115.table | 2 -- definitions/grib2/tables/5/4.2.192.116.table | 2 -- definitions/grib2/tables/5/4.2.192.117.table | 2 -- definitions/grib2/tables/5/4.2.192.118.table | 2 -- definitions/grib2/tables/5/4.2.192.119.table | 2 -- definitions/grib2/tables/5/4.2.192.12.table | 2 -- definitions/grib2/tables/5/4.2.192.120.table | 2 -- definitions/grib2/tables/5/4.2.192.121.table | 2 -- definitions/grib2/tables/5/4.2.192.122.table | 2 -- definitions/grib2/tables/5/4.2.192.123.table | 2 -- definitions/grib2/tables/5/4.2.192.124.table | 2 -- definitions/grib2/tables/5/4.2.192.125.table | 2 -- definitions/grib2/tables/5/4.2.192.126.table | 2 -- definitions/grib2/tables/5/4.2.192.127.table | 2 -- definitions/grib2/tables/5/4.2.192.128.table | 2 -- definitions/grib2/tables/5/4.2.192.129.table | 2 -- definitions/grib2/tables/5/4.2.192.13.table | 2 -- definitions/grib2/tables/5/4.2.192.130.table | 2 -- definitions/grib2/tables/5/4.2.192.131.table | 2 -- definitions/grib2/tables/5/4.2.192.132.table | 2 -- definitions/grib2/tables/5/4.2.192.133.table | 2 -- definitions/grib2/tables/5/4.2.192.134.table | 2 -- definitions/grib2/tables/5/4.2.192.135.table | 2 -- definitions/grib2/tables/5/4.2.192.136.table | 2 -- definitions/grib2/tables/5/4.2.192.137.table | 2 -- definitions/grib2/tables/5/4.2.192.138.table | 2 -- definitions/grib2/tables/5/4.2.192.139.table | 2 -- definitions/grib2/tables/5/4.2.192.14.table | 2 -- definitions/grib2/tables/5/4.2.192.140.table | 2 -- definitions/grib2/tables/5/4.2.192.141.table | 2 -- definitions/grib2/tables/5/4.2.192.142.table | 2 -- definitions/grib2/tables/5/4.2.192.143.table | 2 -- definitions/grib2/tables/5/4.2.192.144.table | 2 -- definitions/grib2/tables/5/4.2.192.145.table | 2 -- definitions/grib2/tables/5/4.2.192.146.table | 2 -- definitions/grib2/tables/5/4.2.192.147.table | 2 -- definitions/grib2/tables/5/4.2.192.148.table | 2 -- definitions/grib2/tables/5/4.2.192.149.table | 2 -- definitions/grib2/tables/5/4.2.192.15.table | 2 -- definitions/grib2/tables/5/4.2.192.150.table | 2 -- definitions/grib2/tables/5/4.2.192.151.table | 2 -- definitions/grib2/tables/5/4.2.192.152.table | 2 -- definitions/grib2/tables/5/4.2.192.153.table | 2 -- definitions/grib2/tables/5/4.2.192.154.table | 2 -- definitions/grib2/tables/5/4.2.192.155.table | 2 -- definitions/grib2/tables/5/4.2.192.156.table | 2 -- definitions/grib2/tables/5/4.2.192.157.table | 2 -- definitions/grib2/tables/5/4.2.192.158.table | 2 -- definitions/grib2/tables/5/4.2.192.159.table | 2 -- definitions/grib2/tables/5/4.2.192.16.table | 2 -- definitions/grib2/tables/5/4.2.192.160.table | 2 -- definitions/grib2/tables/5/4.2.192.161.table | 2 -- definitions/grib2/tables/5/4.2.192.162.table | 2 -- definitions/grib2/tables/5/4.2.192.163.table | 2 -- definitions/grib2/tables/5/4.2.192.164.table | 2 -- definitions/grib2/tables/5/4.2.192.165.table | 2 -- definitions/grib2/tables/5/4.2.192.166.table | 2 -- definitions/grib2/tables/5/4.2.192.167.table | 2 -- definitions/grib2/tables/5/4.2.192.168.table | 2 -- definitions/grib2/tables/5/4.2.192.169.table | 2 -- definitions/grib2/tables/5/4.2.192.17.table | 2 -- definitions/grib2/tables/5/4.2.192.170.table | 2 -- definitions/grib2/tables/5/4.2.192.171.table | 2 -- definitions/grib2/tables/5/4.2.192.172.table | 2 -- definitions/grib2/tables/5/4.2.192.173.table | 2 -- definitions/grib2/tables/5/4.2.192.174.table | 2 -- definitions/grib2/tables/5/4.2.192.175.table | 2 -- definitions/grib2/tables/5/4.2.192.176.table | 2 -- definitions/grib2/tables/5/4.2.192.177.table | 2 -- definitions/grib2/tables/5/4.2.192.178.table | 2 -- definitions/grib2/tables/5/4.2.192.179.table | 2 -- definitions/grib2/tables/5/4.2.192.18.table | 2 -- definitions/grib2/tables/5/4.2.192.180.table | 2 -- definitions/grib2/tables/5/4.2.192.181.table | 2 -- definitions/grib2/tables/5/4.2.192.182.table | 2 -- definitions/grib2/tables/5/4.2.192.183.table | 2 -- definitions/grib2/tables/5/4.2.192.184.table | 2 -- definitions/grib2/tables/5/4.2.192.185.table | 2 -- definitions/grib2/tables/5/4.2.192.186.table | 2 -- definitions/grib2/tables/5/4.2.192.187.table | 2 -- definitions/grib2/tables/5/4.2.192.188.table | 2 -- definitions/grib2/tables/5/4.2.192.189.table | 2 -- definitions/grib2/tables/5/4.2.192.19.table | 2 -- definitions/grib2/tables/5/4.2.192.190.table | 2 -- definitions/grib2/tables/5/4.2.192.191.table | 2 -- definitions/grib2/tables/5/4.2.192.192.table | 2 -- definitions/grib2/tables/5/4.2.192.193.table | 2 -- definitions/grib2/tables/5/4.2.192.194.table | 2 -- definitions/grib2/tables/5/4.2.192.195.table | 2 -- definitions/grib2/tables/5/4.2.192.196.table | 2 -- definitions/grib2/tables/5/4.2.192.197.table | 2 -- definitions/grib2/tables/5/4.2.192.198.table | 2 -- definitions/grib2/tables/5/4.2.192.199.table | 2 -- definitions/grib2/tables/5/4.2.192.2.table | 2 -- definitions/grib2/tables/5/4.2.192.20.table | 2 -- definitions/grib2/tables/5/4.2.192.200.table | 2 -- definitions/grib2/tables/5/4.2.192.201.table | 2 -- definitions/grib2/tables/5/4.2.192.202.table | 2 -- definitions/grib2/tables/5/4.2.192.203.table | 2 -- definitions/grib2/tables/5/4.2.192.204.table | 2 -- definitions/grib2/tables/5/4.2.192.205.table | 2 -- definitions/grib2/tables/5/4.2.192.206.table | 2 -- definitions/grib2/tables/5/4.2.192.207.table | 2 -- definitions/grib2/tables/5/4.2.192.208.table | 2 -- definitions/grib2/tables/5/4.2.192.209.table | 2 -- definitions/grib2/tables/5/4.2.192.21.table | 2 -- definitions/grib2/tables/5/4.2.192.210.table | 2 -- definitions/grib2/tables/5/4.2.192.211.table | 2 -- definitions/grib2/tables/5/4.2.192.212.table | 2 -- definitions/grib2/tables/5/4.2.192.213.table | 2 -- definitions/grib2/tables/5/4.2.192.214.table | 2 -- definitions/grib2/tables/5/4.2.192.215.table | 2 -- definitions/grib2/tables/5/4.2.192.216.table | 2 -- definitions/grib2/tables/5/4.2.192.217.table | 2 -- definitions/grib2/tables/5/4.2.192.218.table | 2 -- definitions/grib2/tables/5/4.2.192.219.table | 2 -- definitions/grib2/tables/5/4.2.192.22.table | 2 -- definitions/grib2/tables/5/4.2.192.220.table | 2 -- definitions/grib2/tables/5/4.2.192.221.table | 2 -- definitions/grib2/tables/5/4.2.192.222.table | 2 -- definitions/grib2/tables/5/4.2.192.223.table | 2 -- definitions/grib2/tables/5/4.2.192.224.table | 2 -- definitions/grib2/tables/5/4.2.192.225.table | 2 -- definitions/grib2/tables/5/4.2.192.226.table | 2 -- definitions/grib2/tables/5/4.2.192.227.table | 2 -- definitions/grib2/tables/5/4.2.192.228.table | 2 -- definitions/grib2/tables/5/4.2.192.229.table | 2 -- definitions/grib2/tables/5/4.2.192.23.table | 2 -- definitions/grib2/tables/5/4.2.192.230.table | 2 -- definitions/grib2/tables/5/4.2.192.231.table | 2 -- definitions/grib2/tables/5/4.2.192.232.table | 2 -- definitions/grib2/tables/5/4.2.192.233.table | 2 -- definitions/grib2/tables/5/4.2.192.234.table | 2 -- definitions/grib2/tables/5/4.2.192.235.table | 2 -- definitions/grib2/tables/5/4.2.192.236.table | 2 -- definitions/grib2/tables/5/4.2.192.237.table | 2 -- definitions/grib2/tables/5/4.2.192.238.table | 2 -- definitions/grib2/tables/5/4.2.192.239.table | 2 -- definitions/grib2/tables/5/4.2.192.24.table | 2 -- definitions/grib2/tables/5/4.2.192.240.table | 2 -- definitions/grib2/tables/5/4.2.192.241.table | 2 -- definitions/grib2/tables/5/4.2.192.242.table | 2 -- definitions/grib2/tables/5/4.2.192.243.table | 2 -- definitions/grib2/tables/5/4.2.192.244.table | 2 -- definitions/grib2/tables/5/4.2.192.245.table | 2 -- definitions/grib2/tables/5/4.2.192.246.table | 2 -- definitions/grib2/tables/5/4.2.192.247.table | 2 -- definitions/grib2/tables/5/4.2.192.248.table | 2 -- definitions/grib2/tables/5/4.2.192.249.table | 2 -- definitions/grib2/tables/5/4.2.192.25.table | 2 -- definitions/grib2/tables/5/4.2.192.250.table | 2 -- definitions/grib2/tables/5/4.2.192.251.table | 2 -- definitions/grib2/tables/5/4.2.192.252.table | 2 -- definitions/grib2/tables/5/4.2.192.253.table | 2 -- definitions/grib2/tables/5/4.2.192.254.table | 2 -- definitions/grib2/tables/5/4.2.192.255.table | 2 -- definitions/grib2/tables/5/4.2.192.26.table | 2 -- definitions/grib2/tables/5/4.2.192.27.table | 2 -- definitions/grib2/tables/5/4.2.192.28.table | 2 -- definitions/grib2/tables/5/4.2.192.29.table | 2 -- definitions/grib2/tables/5/4.2.192.3.table | 2 -- definitions/grib2/tables/5/4.2.192.30.table | 2 -- definitions/grib2/tables/5/4.2.192.31.table | 2 -- definitions/grib2/tables/5/4.2.192.32.table | 2 -- definitions/grib2/tables/5/4.2.192.33.table | 2 -- definitions/grib2/tables/5/4.2.192.34.table | 2 -- definitions/grib2/tables/5/4.2.192.35.table | 2 -- definitions/grib2/tables/5/4.2.192.36.table | 2 -- definitions/grib2/tables/5/4.2.192.37.table | 2 -- definitions/grib2/tables/5/4.2.192.38.table | 2 -- definitions/grib2/tables/5/4.2.192.39.table | 2 -- definitions/grib2/tables/5/4.2.192.4.table | 2 -- definitions/grib2/tables/5/4.2.192.40.table | 2 -- definitions/grib2/tables/5/4.2.192.41.table | 2 -- definitions/grib2/tables/5/4.2.192.42.table | 2 -- definitions/grib2/tables/5/4.2.192.43.table | 2 -- definitions/grib2/tables/5/4.2.192.44.table | 2 -- definitions/grib2/tables/5/4.2.192.45.table | 2 -- definitions/grib2/tables/5/4.2.192.46.table | 2 -- definitions/grib2/tables/5/4.2.192.47.table | 2 -- definitions/grib2/tables/5/4.2.192.48.table | 2 -- definitions/grib2/tables/5/4.2.192.49.table | 2 -- definitions/grib2/tables/5/4.2.192.5.table | 2 -- definitions/grib2/tables/5/4.2.192.50.table | 2 -- definitions/grib2/tables/5/4.2.192.51.table | 2 -- definitions/grib2/tables/5/4.2.192.52.table | 2 -- definitions/grib2/tables/5/4.2.192.53.table | 2 -- definitions/grib2/tables/5/4.2.192.54.table | 2 -- definitions/grib2/tables/5/4.2.192.55.table | 2 -- definitions/grib2/tables/5/4.2.192.56.table | 2 -- definitions/grib2/tables/5/4.2.192.57.table | 2 -- definitions/grib2/tables/5/4.2.192.58.table | 2 -- definitions/grib2/tables/5/4.2.192.59.table | 2 -- definitions/grib2/tables/5/4.2.192.6.table | 2 -- definitions/grib2/tables/5/4.2.192.60.table | 2 -- definitions/grib2/tables/5/4.2.192.61.table | 2 -- definitions/grib2/tables/5/4.2.192.62.table | 2 -- definitions/grib2/tables/5/4.2.192.63.table | 2 -- definitions/grib2/tables/5/4.2.192.64.table | 2 -- definitions/grib2/tables/5/4.2.192.65.table | 2 -- definitions/grib2/tables/5/4.2.192.66.table | 2 -- definitions/grib2/tables/5/4.2.192.67.table | 2 -- definitions/grib2/tables/5/4.2.192.68.table | 2 -- definitions/grib2/tables/5/4.2.192.69.table | 2 -- definitions/grib2/tables/5/4.2.192.7.table | 2 -- definitions/grib2/tables/5/4.2.192.70.table | 2 -- definitions/grib2/tables/5/4.2.192.71.table | 2 -- definitions/grib2/tables/5/4.2.192.72.table | 2 -- definitions/grib2/tables/5/4.2.192.73.table | 2 -- definitions/grib2/tables/5/4.2.192.74.table | 2 -- definitions/grib2/tables/5/4.2.192.75.table | 2 -- definitions/grib2/tables/5/4.2.192.76.table | 2 -- definitions/grib2/tables/5/4.2.192.77.table | 2 -- definitions/grib2/tables/5/4.2.192.78.table | 2 -- definitions/grib2/tables/5/4.2.192.79.table | 2 -- definitions/grib2/tables/5/4.2.192.8.table | 2 -- definitions/grib2/tables/5/4.2.192.80.table | 2 -- definitions/grib2/tables/5/4.2.192.81.table | 2 -- definitions/grib2/tables/5/4.2.192.82.table | 2 -- definitions/grib2/tables/5/4.2.192.83.table | 2 -- definitions/grib2/tables/5/4.2.192.84.table | 2 -- definitions/grib2/tables/5/4.2.192.85.table | 2 -- definitions/grib2/tables/5/4.2.192.86.table | 2 -- definitions/grib2/tables/5/4.2.192.87.table | 2 -- definitions/grib2/tables/5/4.2.192.88.table | 2 -- definitions/grib2/tables/5/4.2.192.89.table | 2 -- definitions/grib2/tables/5/4.2.192.9.table | 2 -- definitions/grib2/tables/5/4.2.192.90.table | 2 -- definitions/grib2/tables/5/4.2.192.91.table | 2 -- definitions/grib2/tables/5/4.2.192.92.table | 2 -- definitions/grib2/tables/5/4.2.192.93.table | 2 -- definitions/grib2/tables/5/4.2.192.94.table | 2 -- definitions/grib2/tables/5/4.2.192.95.table | 2 -- definitions/grib2/tables/5/4.2.192.96.table | 2 -- definitions/grib2/tables/5/4.2.192.97.table | 2 -- definitions/grib2/tables/5/4.2.192.98.table | 2 -- definitions/grib2/tables/5/4.2.192.99.table | 2 -- definitions/grib2/tables/6/4.1.192.table | 3 --- definitions/grib2/tables/6/4.2.192.0.table | 2 -- definitions/grib2/tables/6/4.2.192.1.table | 2 -- definitions/grib2/tables/6/4.2.192.10.table | 2 -- definitions/grib2/tables/6/4.2.192.100.table | 2 -- definitions/grib2/tables/6/4.2.192.101.table | 2 -- definitions/grib2/tables/6/4.2.192.102.table | 2 -- definitions/grib2/tables/6/4.2.192.103.table | 2 -- definitions/grib2/tables/6/4.2.192.104.table | 2 -- definitions/grib2/tables/6/4.2.192.105.table | 2 -- definitions/grib2/tables/6/4.2.192.106.table | 2 -- definitions/grib2/tables/6/4.2.192.107.table | 2 -- definitions/grib2/tables/6/4.2.192.108.table | 2 -- definitions/grib2/tables/6/4.2.192.109.table | 2 -- definitions/grib2/tables/6/4.2.192.11.table | 2 -- definitions/grib2/tables/6/4.2.192.110.table | 2 -- definitions/grib2/tables/6/4.2.192.111.table | 2 -- definitions/grib2/tables/6/4.2.192.112.table | 2 -- definitions/grib2/tables/6/4.2.192.113.table | 2 -- definitions/grib2/tables/6/4.2.192.114.table | 2 -- definitions/grib2/tables/6/4.2.192.115.table | 2 -- definitions/grib2/tables/6/4.2.192.116.table | 2 -- definitions/grib2/tables/6/4.2.192.117.table | 2 -- definitions/grib2/tables/6/4.2.192.118.table | 2 -- definitions/grib2/tables/6/4.2.192.119.table | 2 -- definitions/grib2/tables/6/4.2.192.12.table | 2 -- definitions/grib2/tables/6/4.2.192.120.table | 2 -- definitions/grib2/tables/6/4.2.192.121.table | 2 -- definitions/grib2/tables/6/4.2.192.122.table | 2 -- definitions/grib2/tables/6/4.2.192.123.table | 2 -- definitions/grib2/tables/6/4.2.192.124.table | 2 -- definitions/grib2/tables/6/4.2.192.125.table | 2 -- definitions/grib2/tables/6/4.2.192.126.table | 2 -- definitions/grib2/tables/6/4.2.192.127.table | 2 -- definitions/grib2/tables/6/4.2.192.128.table | 2 -- definitions/grib2/tables/6/4.2.192.129.table | 2 -- definitions/grib2/tables/6/4.2.192.13.table | 2 -- definitions/grib2/tables/6/4.2.192.130.table | 2 -- definitions/grib2/tables/6/4.2.192.131.table | 2 -- definitions/grib2/tables/6/4.2.192.132.table | 2 -- definitions/grib2/tables/6/4.2.192.133.table | 2 -- definitions/grib2/tables/6/4.2.192.134.table | 2 -- definitions/grib2/tables/6/4.2.192.135.table | 2 -- definitions/grib2/tables/6/4.2.192.136.table | 2 -- definitions/grib2/tables/6/4.2.192.137.table | 2 -- definitions/grib2/tables/6/4.2.192.138.table | 2 -- definitions/grib2/tables/6/4.2.192.139.table | 2 -- definitions/grib2/tables/6/4.2.192.14.table | 2 -- definitions/grib2/tables/6/4.2.192.140.table | 2 -- definitions/grib2/tables/6/4.2.192.141.table | 2 -- definitions/grib2/tables/6/4.2.192.142.table | 2 -- definitions/grib2/tables/6/4.2.192.143.table | 2 -- definitions/grib2/tables/6/4.2.192.144.table | 2 -- definitions/grib2/tables/6/4.2.192.145.table | 2 -- definitions/grib2/tables/6/4.2.192.146.table | 2 -- definitions/grib2/tables/6/4.2.192.147.table | 2 -- definitions/grib2/tables/6/4.2.192.148.table | 2 -- definitions/grib2/tables/6/4.2.192.149.table | 2 -- definitions/grib2/tables/6/4.2.192.15.table | 2 -- definitions/grib2/tables/6/4.2.192.150.table | 2 -- definitions/grib2/tables/6/4.2.192.151.table | 2 -- definitions/grib2/tables/6/4.2.192.152.table | 2 -- definitions/grib2/tables/6/4.2.192.153.table | 2 -- definitions/grib2/tables/6/4.2.192.154.table | 2 -- definitions/grib2/tables/6/4.2.192.155.table | 2 -- definitions/grib2/tables/6/4.2.192.156.table | 2 -- definitions/grib2/tables/6/4.2.192.157.table | 2 -- definitions/grib2/tables/6/4.2.192.158.table | 2 -- definitions/grib2/tables/6/4.2.192.159.table | 2 -- definitions/grib2/tables/6/4.2.192.16.table | 2 -- definitions/grib2/tables/6/4.2.192.160.table | 2 -- definitions/grib2/tables/6/4.2.192.161.table | 2 -- definitions/grib2/tables/6/4.2.192.162.table | 2 -- definitions/grib2/tables/6/4.2.192.163.table | 2 -- definitions/grib2/tables/6/4.2.192.164.table | 2 -- definitions/grib2/tables/6/4.2.192.165.table | 2 -- definitions/grib2/tables/6/4.2.192.166.table | 2 -- definitions/grib2/tables/6/4.2.192.167.table | 2 -- definitions/grib2/tables/6/4.2.192.168.table | 2 -- definitions/grib2/tables/6/4.2.192.169.table | 2 -- definitions/grib2/tables/6/4.2.192.17.table | 2 -- definitions/grib2/tables/6/4.2.192.170.table | 2 -- definitions/grib2/tables/6/4.2.192.171.table | 2 -- definitions/grib2/tables/6/4.2.192.172.table | 2 -- definitions/grib2/tables/6/4.2.192.173.table | 2 -- definitions/grib2/tables/6/4.2.192.174.table | 2 -- definitions/grib2/tables/6/4.2.192.175.table | 2 -- definitions/grib2/tables/6/4.2.192.176.table | 2 -- definitions/grib2/tables/6/4.2.192.177.table | 2 -- definitions/grib2/tables/6/4.2.192.178.table | 2 -- definitions/grib2/tables/6/4.2.192.179.table | 2 -- definitions/grib2/tables/6/4.2.192.18.table | 2 -- definitions/grib2/tables/6/4.2.192.180.table | 2 -- definitions/grib2/tables/6/4.2.192.181.table | 2 -- definitions/grib2/tables/6/4.2.192.182.table | 2 -- definitions/grib2/tables/6/4.2.192.183.table | 2 -- definitions/grib2/tables/6/4.2.192.184.table | 2 -- definitions/grib2/tables/6/4.2.192.185.table | 2 -- definitions/grib2/tables/6/4.2.192.186.table | 2 -- definitions/grib2/tables/6/4.2.192.187.table | 2 -- definitions/grib2/tables/6/4.2.192.188.table | 2 -- definitions/grib2/tables/6/4.2.192.189.table | 2 -- definitions/grib2/tables/6/4.2.192.19.table | 2 -- definitions/grib2/tables/6/4.2.192.190.table | 2 -- definitions/grib2/tables/6/4.2.192.191.table | 2 -- definitions/grib2/tables/6/4.2.192.192.table | 2 -- definitions/grib2/tables/6/4.2.192.193.table | 2 -- definitions/grib2/tables/6/4.2.192.194.table | 2 -- definitions/grib2/tables/6/4.2.192.195.table | 2 -- definitions/grib2/tables/6/4.2.192.196.table | 2 -- definitions/grib2/tables/6/4.2.192.197.table | 2 -- definitions/grib2/tables/6/4.2.192.198.table | 2 -- definitions/grib2/tables/6/4.2.192.199.table | 2 -- definitions/grib2/tables/6/4.2.192.2.table | 2 -- definitions/grib2/tables/6/4.2.192.20.table | 2 -- definitions/grib2/tables/6/4.2.192.200.table | 2 -- definitions/grib2/tables/6/4.2.192.201.table | 2 -- definitions/grib2/tables/6/4.2.192.202.table | 2 -- definitions/grib2/tables/6/4.2.192.203.table | 2 -- definitions/grib2/tables/6/4.2.192.204.table | 2 -- definitions/grib2/tables/6/4.2.192.205.table | 2 -- definitions/grib2/tables/6/4.2.192.206.table | 2 -- definitions/grib2/tables/6/4.2.192.207.table | 2 -- definitions/grib2/tables/6/4.2.192.208.table | 2 -- definitions/grib2/tables/6/4.2.192.209.table | 2 -- definitions/grib2/tables/6/4.2.192.21.table | 2 -- definitions/grib2/tables/6/4.2.192.210.table | 2 -- definitions/grib2/tables/6/4.2.192.211.table | 2 -- definitions/grib2/tables/6/4.2.192.212.table | 2 -- definitions/grib2/tables/6/4.2.192.213.table | 2 -- definitions/grib2/tables/6/4.2.192.214.table | 2 -- definitions/grib2/tables/6/4.2.192.215.table | 2 -- definitions/grib2/tables/6/4.2.192.216.table | 2 -- definitions/grib2/tables/6/4.2.192.217.table | 2 -- definitions/grib2/tables/6/4.2.192.218.table | 2 -- definitions/grib2/tables/6/4.2.192.219.table | 2 -- definitions/grib2/tables/6/4.2.192.22.table | 2 -- definitions/grib2/tables/6/4.2.192.220.table | 2 -- definitions/grib2/tables/6/4.2.192.221.table | 2 -- definitions/grib2/tables/6/4.2.192.222.table | 2 -- definitions/grib2/tables/6/4.2.192.223.table | 2 -- definitions/grib2/tables/6/4.2.192.224.table | 2 -- definitions/grib2/tables/6/4.2.192.225.table | 2 -- definitions/grib2/tables/6/4.2.192.226.table | 2 -- definitions/grib2/tables/6/4.2.192.227.table | 2 -- definitions/grib2/tables/6/4.2.192.228.table | 2 -- definitions/grib2/tables/6/4.2.192.229.table | 2 -- definitions/grib2/tables/6/4.2.192.23.table | 2 -- definitions/grib2/tables/6/4.2.192.230.table | 2 -- definitions/grib2/tables/6/4.2.192.231.table | 2 -- definitions/grib2/tables/6/4.2.192.232.table | 2 -- definitions/grib2/tables/6/4.2.192.233.table | 2 -- definitions/grib2/tables/6/4.2.192.234.table | 2 -- definitions/grib2/tables/6/4.2.192.235.table | 2 -- definitions/grib2/tables/6/4.2.192.236.table | 2 -- definitions/grib2/tables/6/4.2.192.237.table | 2 -- definitions/grib2/tables/6/4.2.192.238.table | 2 -- definitions/grib2/tables/6/4.2.192.239.table | 2 -- definitions/grib2/tables/6/4.2.192.24.table | 2 -- definitions/grib2/tables/6/4.2.192.240.table | 2 -- definitions/grib2/tables/6/4.2.192.241.table | 2 -- definitions/grib2/tables/6/4.2.192.242.table | 2 -- definitions/grib2/tables/6/4.2.192.243.table | 2 -- definitions/grib2/tables/6/4.2.192.244.table | 2 -- definitions/grib2/tables/6/4.2.192.245.table | 2 -- definitions/grib2/tables/6/4.2.192.246.table | 2 -- definitions/grib2/tables/6/4.2.192.247.table | 2 -- definitions/grib2/tables/6/4.2.192.248.table | 2 -- definitions/grib2/tables/6/4.2.192.249.table | 2 -- definitions/grib2/tables/6/4.2.192.25.table | 2 -- definitions/grib2/tables/6/4.2.192.250.table | 2 -- definitions/grib2/tables/6/4.2.192.251.table | 2 -- definitions/grib2/tables/6/4.2.192.252.table | 2 -- definitions/grib2/tables/6/4.2.192.253.table | 2 -- definitions/grib2/tables/6/4.2.192.254.table | 2 -- definitions/grib2/tables/6/4.2.192.255.table | 2 -- definitions/grib2/tables/6/4.2.192.26.table | 2 -- definitions/grib2/tables/6/4.2.192.27.table | 2 -- definitions/grib2/tables/6/4.2.192.28.table | 2 -- definitions/grib2/tables/6/4.2.192.29.table | 2 -- definitions/grib2/tables/6/4.2.192.3.table | 2 -- definitions/grib2/tables/6/4.2.192.30.table | 2 -- definitions/grib2/tables/6/4.2.192.31.table | 2 -- definitions/grib2/tables/6/4.2.192.32.table | 2 -- definitions/grib2/tables/6/4.2.192.33.table | 2 -- definitions/grib2/tables/6/4.2.192.34.table | 2 -- definitions/grib2/tables/6/4.2.192.35.table | 2 -- definitions/grib2/tables/6/4.2.192.36.table | 2 -- definitions/grib2/tables/6/4.2.192.37.table | 2 -- definitions/grib2/tables/6/4.2.192.38.table | 2 -- definitions/grib2/tables/6/4.2.192.39.table | 2 -- definitions/grib2/tables/6/4.2.192.4.table | 2 -- definitions/grib2/tables/6/4.2.192.40.table | 2 -- definitions/grib2/tables/6/4.2.192.41.table | 2 -- definitions/grib2/tables/6/4.2.192.42.table | 2 -- definitions/grib2/tables/6/4.2.192.43.table | 2 -- definitions/grib2/tables/6/4.2.192.44.table | 2 -- definitions/grib2/tables/6/4.2.192.45.table | 2 -- definitions/grib2/tables/6/4.2.192.46.table | 2 -- definitions/grib2/tables/6/4.2.192.47.table | 2 -- definitions/grib2/tables/6/4.2.192.48.table | 2 -- definitions/grib2/tables/6/4.2.192.49.table | 2 -- definitions/grib2/tables/6/4.2.192.5.table | 2 -- definitions/grib2/tables/6/4.2.192.50.table | 2 -- definitions/grib2/tables/6/4.2.192.51.table | 2 -- definitions/grib2/tables/6/4.2.192.52.table | 2 -- definitions/grib2/tables/6/4.2.192.53.table | 2 -- definitions/grib2/tables/6/4.2.192.54.table | 2 -- definitions/grib2/tables/6/4.2.192.55.table | 2 -- definitions/grib2/tables/6/4.2.192.56.table | 2 -- definitions/grib2/tables/6/4.2.192.57.table | 2 -- definitions/grib2/tables/6/4.2.192.58.table | 2 -- definitions/grib2/tables/6/4.2.192.59.table | 2 -- definitions/grib2/tables/6/4.2.192.6.table | 2 -- definitions/grib2/tables/6/4.2.192.60.table | 2 -- definitions/grib2/tables/6/4.2.192.61.table | 2 -- definitions/grib2/tables/6/4.2.192.62.table | 2 -- definitions/grib2/tables/6/4.2.192.63.table | 2 -- definitions/grib2/tables/6/4.2.192.64.table | 2 -- definitions/grib2/tables/6/4.2.192.65.table | 2 -- definitions/grib2/tables/6/4.2.192.66.table | 2 -- definitions/grib2/tables/6/4.2.192.67.table | 2 -- definitions/grib2/tables/6/4.2.192.68.table | 2 -- definitions/grib2/tables/6/4.2.192.69.table | 2 -- definitions/grib2/tables/6/4.2.192.7.table | 2 -- definitions/grib2/tables/6/4.2.192.70.table | 2 -- definitions/grib2/tables/6/4.2.192.71.table | 2 -- definitions/grib2/tables/6/4.2.192.72.table | 2 -- definitions/grib2/tables/6/4.2.192.73.table | 2 -- definitions/grib2/tables/6/4.2.192.74.table | 2 -- definitions/grib2/tables/6/4.2.192.75.table | 2 -- definitions/grib2/tables/6/4.2.192.76.table | 2 -- definitions/grib2/tables/6/4.2.192.77.table | 2 -- definitions/grib2/tables/6/4.2.192.78.table | 2 -- definitions/grib2/tables/6/4.2.192.79.table | 2 -- definitions/grib2/tables/6/4.2.192.8.table | 2 -- definitions/grib2/tables/6/4.2.192.80.table | 2 -- definitions/grib2/tables/6/4.2.192.81.table | 2 -- definitions/grib2/tables/6/4.2.192.82.table | 2 -- definitions/grib2/tables/6/4.2.192.83.table | 2 -- definitions/grib2/tables/6/4.2.192.84.table | 2 -- definitions/grib2/tables/6/4.2.192.85.table | 2 -- definitions/grib2/tables/6/4.2.192.86.table | 2 -- definitions/grib2/tables/6/4.2.192.87.table | 2 -- definitions/grib2/tables/6/4.2.192.88.table | 2 -- definitions/grib2/tables/6/4.2.192.89.table | 2 -- definitions/grib2/tables/6/4.2.192.9.table | 2 -- definitions/grib2/tables/6/4.2.192.90.table | 2 -- definitions/grib2/tables/6/4.2.192.91.table | 2 -- definitions/grib2/tables/6/4.2.192.92.table | 2 -- definitions/grib2/tables/6/4.2.192.93.table | 2 -- definitions/grib2/tables/6/4.2.192.94.table | 2 -- definitions/grib2/tables/6/4.2.192.95.table | 2 -- definitions/grib2/tables/6/4.2.192.96.table | 2 -- definitions/grib2/tables/6/4.2.192.97.table | 2 -- definitions/grib2/tables/6/4.2.192.98.table | 2 -- definitions/grib2/tables/6/4.2.192.99.table | 2 -- definitions/grib2/tables/7/4.1.192.table | 3 --- definitions/grib2/tables/7/4.2.192.0.table | 2 -- definitions/grib2/tables/7/4.2.192.1.table | 2 -- definitions/grib2/tables/7/4.2.192.10.table | 2 -- definitions/grib2/tables/7/4.2.192.100.table | 2 -- definitions/grib2/tables/7/4.2.192.101.table | 2 -- definitions/grib2/tables/7/4.2.192.102.table | 2 -- definitions/grib2/tables/7/4.2.192.103.table | 2 -- definitions/grib2/tables/7/4.2.192.104.table | 2 -- definitions/grib2/tables/7/4.2.192.105.table | 2 -- definitions/grib2/tables/7/4.2.192.106.table | 2 -- definitions/grib2/tables/7/4.2.192.107.table | 2 -- definitions/grib2/tables/7/4.2.192.108.table | 2 -- definitions/grib2/tables/7/4.2.192.109.table | 2 -- definitions/grib2/tables/7/4.2.192.11.table | 2 -- definitions/grib2/tables/7/4.2.192.110.table | 2 -- definitions/grib2/tables/7/4.2.192.111.table | 2 -- definitions/grib2/tables/7/4.2.192.112.table | 2 -- definitions/grib2/tables/7/4.2.192.113.table | 2 -- definitions/grib2/tables/7/4.2.192.114.table | 2 -- definitions/grib2/tables/7/4.2.192.115.table | 2 -- definitions/grib2/tables/7/4.2.192.116.table | 2 -- definitions/grib2/tables/7/4.2.192.117.table | 2 -- definitions/grib2/tables/7/4.2.192.118.table | 2 -- definitions/grib2/tables/7/4.2.192.119.table | 2 -- definitions/grib2/tables/7/4.2.192.12.table | 2 -- definitions/grib2/tables/7/4.2.192.120.table | 2 -- definitions/grib2/tables/7/4.2.192.121.table | 2 -- definitions/grib2/tables/7/4.2.192.122.table | 2 -- definitions/grib2/tables/7/4.2.192.123.table | 2 -- definitions/grib2/tables/7/4.2.192.124.table | 2 -- definitions/grib2/tables/7/4.2.192.125.table | 2 -- definitions/grib2/tables/7/4.2.192.126.table | 2 -- definitions/grib2/tables/7/4.2.192.127.table | 2 -- definitions/grib2/tables/7/4.2.192.128.table | 2 -- definitions/grib2/tables/7/4.2.192.129.table | 2 -- definitions/grib2/tables/7/4.2.192.13.table | 2 -- definitions/grib2/tables/7/4.2.192.130.table | 2 -- definitions/grib2/tables/7/4.2.192.131.table | 2 -- definitions/grib2/tables/7/4.2.192.132.table | 2 -- definitions/grib2/tables/7/4.2.192.133.table | 2 -- definitions/grib2/tables/7/4.2.192.134.table | 2 -- definitions/grib2/tables/7/4.2.192.135.table | 2 -- definitions/grib2/tables/7/4.2.192.136.table | 2 -- definitions/grib2/tables/7/4.2.192.137.table | 2 -- definitions/grib2/tables/7/4.2.192.138.table | 2 -- definitions/grib2/tables/7/4.2.192.139.table | 2 -- definitions/grib2/tables/7/4.2.192.14.table | 2 -- definitions/grib2/tables/7/4.2.192.140.table | 2 -- definitions/grib2/tables/7/4.2.192.141.table | 2 -- definitions/grib2/tables/7/4.2.192.142.table | 2 -- definitions/grib2/tables/7/4.2.192.143.table | 2 -- definitions/grib2/tables/7/4.2.192.144.table | 2 -- definitions/grib2/tables/7/4.2.192.145.table | 2 -- definitions/grib2/tables/7/4.2.192.146.table | 2 -- definitions/grib2/tables/7/4.2.192.147.table | 2 -- definitions/grib2/tables/7/4.2.192.148.table | 2 -- definitions/grib2/tables/7/4.2.192.149.table | 2 -- definitions/grib2/tables/7/4.2.192.15.table | 2 -- definitions/grib2/tables/7/4.2.192.150.table | 2 -- definitions/grib2/tables/7/4.2.192.151.table | 2 -- definitions/grib2/tables/7/4.2.192.152.table | 2 -- definitions/grib2/tables/7/4.2.192.153.table | 2 -- definitions/grib2/tables/7/4.2.192.154.table | 2 -- definitions/grib2/tables/7/4.2.192.155.table | 2 -- definitions/grib2/tables/7/4.2.192.156.table | 2 -- definitions/grib2/tables/7/4.2.192.157.table | 2 -- definitions/grib2/tables/7/4.2.192.158.table | 2 -- definitions/grib2/tables/7/4.2.192.159.table | 2 -- definitions/grib2/tables/7/4.2.192.16.table | 2 -- definitions/grib2/tables/7/4.2.192.160.table | 2 -- definitions/grib2/tables/7/4.2.192.161.table | 2 -- definitions/grib2/tables/7/4.2.192.162.table | 2 -- definitions/grib2/tables/7/4.2.192.163.table | 2 -- definitions/grib2/tables/7/4.2.192.164.table | 2 -- definitions/grib2/tables/7/4.2.192.165.table | 2 -- definitions/grib2/tables/7/4.2.192.166.table | 2 -- definitions/grib2/tables/7/4.2.192.167.table | 2 -- definitions/grib2/tables/7/4.2.192.168.table | 2 -- definitions/grib2/tables/7/4.2.192.169.table | 2 -- definitions/grib2/tables/7/4.2.192.17.table | 2 -- definitions/grib2/tables/7/4.2.192.170.table | 2 -- definitions/grib2/tables/7/4.2.192.171.table | 2 -- definitions/grib2/tables/7/4.2.192.172.table | 2 -- definitions/grib2/tables/7/4.2.192.173.table | 2 -- definitions/grib2/tables/7/4.2.192.174.table | 2 -- definitions/grib2/tables/7/4.2.192.175.table | 2 -- definitions/grib2/tables/7/4.2.192.176.table | 2 -- definitions/grib2/tables/7/4.2.192.177.table | 2 -- definitions/grib2/tables/7/4.2.192.178.table | 2 -- definitions/grib2/tables/7/4.2.192.179.table | 2 -- definitions/grib2/tables/7/4.2.192.18.table | 2 -- definitions/grib2/tables/7/4.2.192.180.table | 2 -- definitions/grib2/tables/7/4.2.192.181.table | 2 -- definitions/grib2/tables/7/4.2.192.182.table | 2 -- definitions/grib2/tables/7/4.2.192.183.table | 2 -- definitions/grib2/tables/7/4.2.192.184.table | 2 -- definitions/grib2/tables/7/4.2.192.185.table | 2 -- definitions/grib2/tables/7/4.2.192.186.table | 2 -- definitions/grib2/tables/7/4.2.192.187.table | 2 -- definitions/grib2/tables/7/4.2.192.188.table | 2 -- definitions/grib2/tables/7/4.2.192.189.table | 2 -- definitions/grib2/tables/7/4.2.192.19.table | 2 -- definitions/grib2/tables/7/4.2.192.190.table | 2 -- definitions/grib2/tables/7/4.2.192.191.table | 2 -- definitions/grib2/tables/7/4.2.192.192.table | 2 -- definitions/grib2/tables/7/4.2.192.193.table | 2 -- definitions/grib2/tables/7/4.2.192.194.table | 2 -- definitions/grib2/tables/7/4.2.192.195.table | 2 -- definitions/grib2/tables/7/4.2.192.196.table | 2 -- definitions/grib2/tables/7/4.2.192.197.table | 2 -- definitions/grib2/tables/7/4.2.192.198.table | 2 -- definitions/grib2/tables/7/4.2.192.199.table | 2 -- definitions/grib2/tables/7/4.2.192.2.table | 2 -- definitions/grib2/tables/7/4.2.192.20.table | 2 -- definitions/grib2/tables/7/4.2.192.200.table | 2 -- definitions/grib2/tables/7/4.2.192.201.table | 2 -- definitions/grib2/tables/7/4.2.192.202.table | 2 -- definitions/grib2/tables/7/4.2.192.203.table | 2 -- definitions/grib2/tables/7/4.2.192.204.table | 2 -- definitions/grib2/tables/7/4.2.192.205.table | 2 -- definitions/grib2/tables/7/4.2.192.206.table | 2 -- definitions/grib2/tables/7/4.2.192.207.table | 2 -- definitions/grib2/tables/7/4.2.192.208.table | 2 -- definitions/grib2/tables/7/4.2.192.209.table | 2 -- definitions/grib2/tables/7/4.2.192.21.table | 2 -- definitions/grib2/tables/7/4.2.192.210.table | 2 -- definitions/grib2/tables/7/4.2.192.211.table | 2 -- definitions/grib2/tables/7/4.2.192.212.table | 2 -- definitions/grib2/tables/7/4.2.192.213.table | 2 -- definitions/grib2/tables/7/4.2.192.214.table | 2 -- definitions/grib2/tables/7/4.2.192.215.table | 2 -- definitions/grib2/tables/7/4.2.192.216.table | 2 -- definitions/grib2/tables/7/4.2.192.217.table | 2 -- definitions/grib2/tables/7/4.2.192.218.table | 2 -- definitions/grib2/tables/7/4.2.192.219.table | 2 -- definitions/grib2/tables/7/4.2.192.22.table | 2 -- definitions/grib2/tables/7/4.2.192.220.table | 2 -- definitions/grib2/tables/7/4.2.192.221.table | 2 -- definitions/grib2/tables/7/4.2.192.222.table | 2 -- definitions/grib2/tables/7/4.2.192.223.table | 2 -- definitions/grib2/tables/7/4.2.192.224.table | 2 -- definitions/grib2/tables/7/4.2.192.225.table | 2 -- definitions/grib2/tables/7/4.2.192.226.table | 2 -- definitions/grib2/tables/7/4.2.192.227.table | 2 -- definitions/grib2/tables/7/4.2.192.228.table | 2 -- definitions/grib2/tables/7/4.2.192.229.table | 2 -- definitions/grib2/tables/7/4.2.192.23.table | 2 -- definitions/grib2/tables/7/4.2.192.230.table | 2 -- definitions/grib2/tables/7/4.2.192.231.table | 2 -- definitions/grib2/tables/7/4.2.192.232.table | 2 -- definitions/grib2/tables/7/4.2.192.233.table | 2 -- definitions/grib2/tables/7/4.2.192.234.table | 2 -- definitions/grib2/tables/7/4.2.192.235.table | 2 -- definitions/grib2/tables/7/4.2.192.236.table | 2 -- definitions/grib2/tables/7/4.2.192.237.table | 2 -- definitions/grib2/tables/7/4.2.192.238.table | 2 -- definitions/grib2/tables/7/4.2.192.239.table | 2 -- definitions/grib2/tables/7/4.2.192.24.table | 2 -- definitions/grib2/tables/7/4.2.192.240.table | 2 -- definitions/grib2/tables/7/4.2.192.241.table | 2 -- definitions/grib2/tables/7/4.2.192.242.table | 2 -- definitions/grib2/tables/7/4.2.192.243.table | 2 -- definitions/grib2/tables/7/4.2.192.244.table | 2 -- definitions/grib2/tables/7/4.2.192.245.table | 2 -- definitions/grib2/tables/7/4.2.192.246.table | 2 -- definitions/grib2/tables/7/4.2.192.247.table | 2 -- definitions/grib2/tables/7/4.2.192.248.table | 2 -- definitions/grib2/tables/7/4.2.192.249.table | 2 -- definitions/grib2/tables/7/4.2.192.25.table | 2 -- definitions/grib2/tables/7/4.2.192.250.table | 2 -- definitions/grib2/tables/7/4.2.192.251.table | 2 -- definitions/grib2/tables/7/4.2.192.252.table | 2 -- definitions/grib2/tables/7/4.2.192.253.table | 2 -- definitions/grib2/tables/7/4.2.192.254.table | 2 -- definitions/grib2/tables/7/4.2.192.255.table | 2 -- definitions/grib2/tables/7/4.2.192.26.table | 2 -- definitions/grib2/tables/7/4.2.192.27.table | 2 -- definitions/grib2/tables/7/4.2.192.28.table | 2 -- definitions/grib2/tables/7/4.2.192.29.table | 2 -- definitions/grib2/tables/7/4.2.192.3.table | 2 -- definitions/grib2/tables/7/4.2.192.30.table | 2 -- definitions/grib2/tables/7/4.2.192.31.table | 2 -- definitions/grib2/tables/7/4.2.192.32.table | 2 -- definitions/grib2/tables/7/4.2.192.33.table | 2 -- definitions/grib2/tables/7/4.2.192.34.table | 2 -- definitions/grib2/tables/7/4.2.192.35.table | 2 -- definitions/grib2/tables/7/4.2.192.36.table | 2 -- definitions/grib2/tables/7/4.2.192.37.table | 2 -- definitions/grib2/tables/7/4.2.192.38.table | 2 -- definitions/grib2/tables/7/4.2.192.39.table | 2 -- definitions/grib2/tables/7/4.2.192.4.table | 2 -- definitions/grib2/tables/7/4.2.192.40.table | 2 -- definitions/grib2/tables/7/4.2.192.41.table | 2 -- definitions/grib2/tables/7/4.2.192.42.table | 2 -- definitions/grib2/tables/7/4.2.192.43.table | 2 -- definitions/grib2/tables/7/4.2.192.44.table | 2 -- definitions/grib2/tables/7/4.2.192.45.table | 2 -- definitions/grib2/tables/7/4.2.192.46.table | 2 -- definitions/grib2/tables/7/4.2.192.47.table | 2 -- definitions/grib2/tables/7/4.2.192.48.table | 2 -- definitions/grib2/tables/7/4.2.192.49.table | 2 -- definitions/grib2/tables/7/4.2.192.5.table | 2 -- definitions/grib2/tables/7/4.2.192.50.table | 2 -- definitions/grib2/tables/7/4.2.192.51.table | 2 -- definitions/grib2/tables/7/4.2.192.52.table | 2 -- definitions/grib2/tables/7/4.2.192.53.table | 2 -- definitions/grib2/tables/7/4.2.192.54.table | 2 -- definitions/grib2/tables/7/4.2.192.55.table | 2 -- definitions/grib2/tables/7/4.2.192.56.table | 2 -- definitions/grib2/tables/7/4.2.192.57.table | 2 -- definitions/grib2/tables/7/4.2.192.58.table | 2 -- definitions/grib2/tables/7/4.2.192.59.table | 2 -- definitions/grib2/tables/7/4.2.192.6.table | 2 -- definitions/grib2/tables/7/4.2.192.60.table | 2 -- definitions/grib2/tables/7/4.2.192.61.table | 2 -- definitions/grib2/tables/7/4.2.192.62.table | 2 -- definitions/grib2/tables/7/4.2.192.63.table | 2 -- definitions/grib2/tables/7/4.2.192.64.table | 2 -- definitions/grib2/tables/7/4.2.192.65.table | 2 -- definitions/grib2/tables/7/4.2.192.66.table | 2 -- definitions/grib2/tables/7/4.2.192.67.table | 2 -- definitions/grib2/tables/7/4.2.192.68.table | 2 -- definitions/grib2/tables/7/4.2.192.69.table | 2 -- definitions/grib2/tables/7/4.2.192.7.table | 2 -- definitions/grib2/tables/7/4.2.192.70.table | 2 -- definitions/grib2/tables/7/4.2.192.71.table | 2 -- definitions/grib2/tables/7/4.2.192.72.table | 2 -- definitions/grib2/tables/7/4.2.192.73.table | 2 -- definitions/grib2/tables/7/4.2.192.74.table | 2 -- definitions/grib2/tables/7/4.2.192.75.table | 2 -- definitions/grib2/tables/7/4.2.192.76.table | 2 -- definitions/grib2/tables/7/4.2.192.77.table | 2 -- definitions/grib2/tables/7/4.2.192.78.table | 2 -- definitions/grib2/tables/7/4.2.192.79.table | 2 -- definitions/grib2/tables/7/4.2.192.8.table | 2 -- definitions/grib2/tables/7/4.2.192.80.table | 2 -- definitions/grib2/tables/7/4.2.192.81.table | 2 -- definitions/grib2/tables/7/4.2.192.82.table | 2 -- definitions/grib2/tables/7/4.2.192.83.table | 2 -- definitions/grib2/tables/7/4.2.192.84.table | 2 -- definitions/grib2/tables/7/4.2.192.85.table | 2 -- definitions/grib2/tables/7/4.2.192.86.table | 2 -- definitions/grib2/tables/7/4.2.192.87.table | 2 -- definitions/grib2/tables/7/4.2.192.88.table | 2 -- definitions/grib2/tables/7/4.2.192.89.table | 2 -- definitions/grib2/tables/7/4.2.192.9.table | 2 -- definitions/grib2/tables/7/4.2.192.90.table | 2 -- definitions/grib2/tables/7/4.2.192.91.table | 2 -- definitions/grib2/tables/7/4.2.192.92.table | 2 -- definitions/grib2/tables/7/4.2.192.93.table | 2 -- definitions/grib2/tables/7/4.2.192.94.table | 2 -- definitions/grib2/tables/7/4.2.192.95.table | 2 -- definitions/grib2/tables/7/4.2.192.96.table | 2 -- definitions/grib2/tables/7/4.2.192.97.table | 2 -- definitions/grib2/tables/7/4.2.192.98.table | 2 -- definitions/grib2/tables/7/4.2.192.99.table | 2 -- definitions/grib2/tables/8/4.1.192.table | 3 --- definitions/grib2/tables/8/4.2.192.0.table | 2 -- definitions/grib2/tables/8/4.2.192.1.table | 2 -- definitions/grib2/tables/8/4.2.192.10.table | 2 -- definitions/grib2/tables/8/4.2.192.100.table | 2 -- definitions/grib2/tables/8/4.2.192.101.table | 2 -- definitions/grib2/tables/8/4.2.192.102.table | 2 -- definitions/grib2/tables/8/4.2.192.103.table | 2 -- definitions/grib2/tables/8/4.2.192.104.table | 2 -- definitions/grib2/tables/8/4.2.192.105.table | 2 -- definitions/grib2/tables/8/4.2.192.106.table | 2 -- definitions/grib2/tables/8/4.2.192.107.table | 2 -- definitions/grib2/tables/8/4.2.192.108.table | 2 -- definitions/grib2/tables/8/4.2.192.109.table | 2 -- definitions/grib2/tables/8/4.2.192.11.table | 2 -- definitions/grib2/tables/8/4.2.192.110.table | 2 -- definitions/grib2/tables/8/4.2.192.111.table | 2 -- definitions/grib2/tables/8/4.2.192.112.table | 2 -- definitions/grib2/tables/8/4.2.192.113.table | 2 -- definitions/grib2/tables/8/4.2.192.114.table | 2 -- definitions/grib2/tables/8/4.2.192.115.table | 2 -- definitions/grib2/tables/8/4.2.192.116.table | 2 -- definitions/grib2/tables/8/4.2.192.117.table | 2 -- definitions/grib2/tables/8/4.2.192.118.table | 2 -- definitions/grib2/tables/8/4.2.192.119.table | 2 -- definitions/grib2/tables/8/4.2.192.12.table | 2 -- definitions/grib2/tables/8/4.2.192.120.table | 2 -- definitions/grib2/tables/8/4.2.192.121.table | 2 -- definitions/grib2/tables/8/4.2.192.122.table | 2 -- definitions/grib2/tables/8/4.2.192.123.table | 2 -- definitions/grib2/tables/8/4.2.192.124.table | 2 -- definitions/grib2/tables/8/4.2.192.125.table | 2 -- definitions/grib2/tables/8/4.2.192.126.table | 2 -- definitions/grib2/tables/8/4.2.192.127.table | 2 -- definitions/grib2/tables/8/4.2.192.128.table | 2 -- definitions/grib2/tables/8/4.2.192.129.table | 2 -- definitions/grib2/tables/8/4.2.192.13.table | 2 -- definitions/grib2/tables/8/4.2.192.130.table | 2 -- definitions/grib2/tables/8/4.2.192.131.table | 2 -- definitions/grib2/tables/8/4.2.192.132.table | 2 -- definitions/grib2/tables/8/4.2.192.133.table | 2 -- definitions/grib2/tables/8/4.2.192.134.table | 2 -- definitions/grib2/tables/8/4.2.192.135.table | 2 -- definitions/grib2/tables/8/4.2.192.136.table | 2 -- definitions/grib2/tables/8/4.2.192.137.table | 2 -- definitions/grib2/tables/8/4.2.192.138.table | 2 -- definitions/grib2/tables/8/4.2.192.139.table | 2 -- definitions/grib2/tables/8/4.2.192.14.table | 2 -- definitions/grib2/tables/8/4.2.192.140.table | 2 -- definitions/grib2/tables/8/4.2.192.141.table | 2 -- definitions/grib2/tables/8/4.2.192.142.table | 2 -- definitions/grib2/tables/8/4.2.192.143.table | 2 -- definitions/grib2/tables/8/4.2.192.144.table | 2 -- definitions/grib2/tables/8/4.2.192.145.table | 2 -- definitions/grib2/tables/8/4.2.192.146.table | 2 -- definitions/grib2/tables/8/4.2.192.147.table | 2 -- definitions/grib2/tables/8/4.2.192.148.table | 2 -- definitions/grib2/tables/8/4.2.192.149.table | 2 -- definitions/grib2/tables/8/4.2.192.15.table | 2 -- definitions/grib2/tables/8/4.2.192.150.table | 2 -- definitions/grib2/tables/8/4.2.192.151.table | 2 -- definitions/grib2/tables/8/4.2.192.152.table | 2 -- definitions/grib2/tables/8/4.2.192.153.table | 2 -- definitions/grib2/tables/8/4.2.192.154.table | 2 -- definitions/grib2/tables/8/4.2.192.155.table | 2 -- definitions/grib2/tables/8/4.2.192.156.table | 2 -- definitions/grib2/tables/8/4.2.192.157.table | 2 -- definitions/grib2/tables/8/4.2.192.158.table | 2 -- definitions/grib2/tables/8/4.2.192.159.table | 2 -- definitions/grib2/tables/8/4.2.192.16.table | 2 -- definitions/grib2/tables/8/4.2.192.160.table | 2 -- definitions/grib2/tables/8/4.2.192.161.table | 2 -- definitions/grib2/tables/8/4.2.192.162.table | 2 -- definitions/grib2/tables/8/4.2.192.163.table | 2 -- definitions/grib2/tables/8/4.2.192.164.table | 2 -- definitions/grib2/tables/8/4.2.192.165.table | 2 -- definitions/grib2/tables/8/4.2.192.166.table | 2 -- definitions/grib2/tables/8/4.2.192.167.table | 2 -- definitions/grib2/tables/8/4.2.192.168.table | 2 -- definitions/grib2/tables/8/4.2.192.169.table | 2 -- definitions/grib2/tables/8/4.2.192.17.table | 2 -- definitions/grib2/tables/8/4.2.192.170.table | 2 -- definitions/grib2/tables/8/4.2.192.171.table | 2 -- definitions/grib2/tables/8/4.2.192.172.table | 2 -- definitions/grib2/tables/8/4.2.192.173.table | 2 -- definitions/grib2/tables/8/4.2.192.174.table | 2 -- definitions/grib2/tables/8/4.2.192.175.table | 2 -- definitions/grib2/tables/8/4.2.192.176.table | 2 -- definitions/grib2/tables/8/4.2.192.177.table | 2 -- definitions/grib2/tables/8/4.2.192.178.table | 2 -- definitions/grib2/tables/8/4.2.192.179.table | 2 -- definitions/grib2/tables/8/4.2.192.18.table | 2 -- definitions/grib2/tables/8/4.2.192.180.table | 2 -- definitions/grib2/tables/8/4.2.192.181.table | 2 -- definitions/grib2/tables/8/4.2.192.182.table | 2 -- definitions/grib2/tables/8/4.2.192.183.table | 2 -- definitions/grib2/tables/8/4.2.192.184.table | 2 -- definitions/grib2/tables/8/4.2.192.185.table | 2 -- definitions/grib2/tables/8/4.2.192.186.table | 2 -- definitions/grib2/tables/8/4.2.192.187.table | 2 -- definitions/grib2/tables/8/4.2.192.188.table | 2 -- definitions/grib2/tables/8/4.2.192.189.table | 2 -- definitions/grib2/tables/8/4.2.192.19.table | 2 -- definitions/grib2/tables/8/4.2.192.190.table | 2 -- definitions/grib2/tables/8/4.2.192.191.table | 2 -- definitions/grib2/tables/8/4.2.192.192.table | 2 -- definitions/grib2/tables/8/4.2.192.193.table | 2 -- definitions/grib2/tables/8/4.2.192.194.table | 2 -- definitions/grib2/tables/8/4.2.192.195.table | 2 -- definitions/grib2/tables/8/4.2.192.196.table | 2 -- definitions/grib2/tables/8/4.2.192.197.table | 2 -- definitions/grib2/tables/8/4.2.192.198.table | 2 -- definitions/grib2/tables/8/4.2.192.199.table | 2 -- definitions/grib2/tables/8/4.2.192.2.table | 2 -- definitions/grib2/tables/8/4.2.192.20.table | 2 -- definitions/grib2/tables/8/4.2.192.200.table | 2 -- definitions/grib2/tables/8/4.2.192.201.table | 2 -- definitions/grib2/tables/8/4.2.192.202.table | 2 -- definitions/grib2/tables/8/4.2.192.203.table | 2 -- definitions/grib2/tables/8/4.2.192.204.table | 2 -- definitions/grib2/tables/8/4.2.192.205.table | 2 -- definitions/grib2/tables/8/4.2.192.206.table | 2 -- definitions/grib2/tables/8/4.2.192.207.table | 2 -- definitions/grib2/tables/8/4.2.192.208.table | 2 -- definitions/grib2/tables/8/4.2.192.209.table | 2 -- definitions/grib2/tables/8/4.2.192.21.table | 2 -- definitions/grib2/tables/8/4.2.192.210.table | 2 -- definitions/grib2/tables/8/4.2.192.211.table | 2 -- definitions/grib2/tables/8/4.2.192.212.table | 2 -- definitions/grib2/tables/8/4.2.192.213.table | 2 -- definitions/grib2/tables/8/4.2.192.214.table | 2 -- definitions/grib2/tables/8/4.2.192.215.table | 2 -- definitions/grib2/tables/8/4.2.192.216.table | 2 -- definitions/grib2/tables/8/4.2.192.217.table | 2 -- definitions/grib2/tables/8/4.2.192.218.table | 2 -- definitions/grib2/tables/8/4.2.192.219.table | 2 -- definitions/grib2/tables/8/4.2.192.22.table | 2 -- definitions/grib2/tables/8/4.2.192.220.table | 2 -- definitions/grib2/tables/8/4.2.192.221.table | 2 -- definitions/grib2/tables/8/4.2.192.222.table | 2 -- definitions/grib2/tables/8/4.2.192.223.table | 2 -- definitions/grib2/tables/8/4.2.192.224.table | 2 -- definitions/grib2/tables/8/4.2.192.225.table | 2 -- definitions/grib2/tables/8/4.2.192.226.table | 2 -- definitions/grib2/tables/8/4.2.192.227.table | 2 -- definitions/grib2/tables/8/4.2.192.228.table | 2 -- definitions/grib2/tables/8/4.2.192.229.table | 2 -- definitions/grib2/tables/8/4.2.192.23.table | 2 -- definitions/grib2/tables/8/4.2.192.230.table | 2 -- definitions/grib2/tables/8/4.2.192.231.table | 2 -- definitions/grib2/tables/8/4.2.192.232.table | 2 -- definitions/grib2/tables/8/4.2.192.233.table | 2 -- definitions/grib2/tables/8/4.2.192.234.table | 2 -- definitions/grib2/tables/8/4.2.192.235.table | 2 -- definitions/grib2/tables/8/4.2.192.236.table | 2 -- definitions/grib2/tables/8/4.2.192.237.table | 2 -- definitions/grib2/tables/8/4.2.192.238.table | 2 -- definitions/grib2/tables/8/4.2.192.239.table | 2 -- definitions/grib2/tables/8/4.2.192.24.table | 2 -- definitions/grib2/tables/8/4.2.192.240.table | 2 -- definitions/grib2/tables/8/4.2.192.241.table | 2 -- definitions/grib2/tables/8/4.2.192.242.table | 2 -- definitions/grib2/tables/8/4.2.192.243.table | 2 -- definitions/grib2/tables/8/4.2.192.244.table | 2 -- definitions/grib2/tables/8/4.2.192.245.table | 2 -- definitions/grib2/tables/8/4.2.192.246.table | 2 -- definitions/grib2/tables/8/4.2.192.247.table | 2 -- definitions/grib2/tables/8/4.2.192.248.table | 2 -- definitions/grib2/tables/8/4.2.192.249.table | 2 -- definitions/grib2/tables/8/4.2.192.25.table | 2 -- definitions/grib2/tables/8/4.2.192.250.table | 2 -- definitions/grib2/tables/8/4.2.192.251.table | 2 -- definitions/grib2/tables/8/4.2.192.252.table | 2 -- definitions/grib2/tables/8/4.2.192.253.table | 2 -- definitions/grib2/tables/8/4.2.192.254.table | 2 -- definitions/grib2/tables/8/4.2.192.255.table | 2 -- definitions/grib2/tables/8/4.2.192.26.table | 2 -- definitions/grib2/tables/8/4.2.192.27.table | 2 -- definitions/grib2/tables/8/4.2.192.28.table | 2 -- definitions/grib2/tables/8/4.2.192.29.table | 2 -- definitions/grib2/tables/8/4.2.192.3.table | 2 -- definitions/grib2/tables/8/4.2.192.30.table | 2 -- definitions/grib2/tables/8/4.2.192.31.table | 2 -- definitions/grib2/tables/8/4.2.192.32.table | 2 -- definitions/grib2/tables/8/4.2.192.33.table | 2 -- definitions/grib2/tables/8/4.2.192.34.table | 2 -- definitions/grib2/tables/8/4.2.192.35.table | 2 -- definitions/grib2/tables/8/4.2.192.36.table | 2 -- definitions/grib2/tables/8/4.2.192.37.table | 2 -- definitions/grib2/tables/8/4.2.192.38.table | 2 -- definitions/grib2/tables/8/4.2.192.39.table | 2 -- definitions/grib2/tables/8/4.2.192.4.table | 2 -- definitions/grib2/tables/8/4.2.192.40.table | 2 -- definitions/grib2/tables/8/4.2.192.41.table | 2 -- definitions/grib2/tables/8/4.2.192.42.table | 2 -- definitions/grib2/tables/8/4.2.192.43.table | 2 -- definitions/grib2/tables/8/4.2.192.44.table | 2 -- definitions/grib2/tables/8/4.2.192.45.table | 2 -- definitions/grib2/tables/8/4.2.192.46.table | 2 -- definitions/grib2/tables/8/4.2.192.47.table | 2 -- definitions/grib2/tables/8/4.2.192.48.table | 2 -- definitions/grib2/tables/8/4.2.192.49.table | 2 -- definitions/grib2/tables/8/4.2.192.5.table | 2 -- definitions/grib2/tables/8/4.2.192.50.table | 2 -- definitions/grib2/tables/8/4.2.192.51.table | 2 -- definitions/grib2/tables/8/4.2.192.52.table | 2 -- definitions/grib2/tables/8/4.2.192.53.table | 2 -- definitions/grib2/tables/8/4.2.192.54.table | 2 -- definitions/grib2/tables/8/4.2.192.55.table | 2 -- definitions/grib2/tables/8/4.2.192.56.table | 2 -- definitions/grib2/tables/8/4.2.192.57.table | 2 -- definitions/grib2/tables/8/4.2.192.58.table | 2 -- definitions/grib2/tables/8/4.2.192.59.table | 2 -- definitions/grib2/tables/8/4.2.192.6.table | 2 -- definitions/grib2/tables/8/4.2.192.60.table | 2 -- definitions/grib2/tables/8/4.2.192.61.table | 2 -- definitions/grib2/tables/8/4.2.192.62.table | 2 -- definitions/grib2/tables/8/4.2.192.63.table | 2 -- definitions/grib2/tables/8/4.2.192.64.table | 2 -- definitions/grib2/tables/8/4.2.192.65.table | 2 -- definitions/grib2/tables/8/4.2.192.66.table | 2 -- definitions/grib2/tables/8/4.2.192.67.table | 2 -- definitions/grib2/tables/8/4.2.192.68.table | 2 -- definitions/grib2/tables/8/4.2.192.69.table | 2 -- definitions/grib2/tables/8/4.2.192.7.table | 2 -- definitions/grib2/tables/8/4.2.192.70.table | 2 -- definitions/grib2/tables/8/4.2.192.71.table | 2 -- definitions/grib2/tables/8/4.2.192.72.table | 2 -- definitions/grib2/tables/8/4.2.192.73.table | 2 -- definitions/grib2/tables/8/4.2.192.74.table | 2 -- definitions/grib2/tables/8/4.2.192.75.table | 2 -- definitions/grib2/tables/8/4.2.192.76.table | 2 -- definitions/grib2/tables/8/4.2.192.77.table | 2 -- definitions/grib2/tables/8/4.2.192.78.table | 2 -- definitions/grib2/tables/8/4.2.192.79.table | 2 -- definitions/grib2/tables/8/4.2.192.8.table | 2 -- definitions/grib2/tables/8/4.2.192.80.table | 2 -- definitions/grib2/tables/8/4.2.192.81.table | 2 -- definitions/grib2/tables/8/4.2.192.82.table | 2 -- definitions/grib2/tables/8/4.2.192.83.table | 2 -- definitions/grib2/tables/8/4.2.192.84.table | 2 -- definitions/grib2/tables/8/4.2.192.85.table | 2 -- definitions/grib2/tables/8/4.2.192.86.table | 2 -- definitions/grib2/tables/8/4.2.192.87.table | 2 -- definitions/grib2/tables/8/4.2.192.88.table | 2 -- definitions/grib2/tables/8/4.2.192.89.table | 2 -- definitions/grib2/tables/8/4.2.192.9.table | 2 -- definitions/grib2/tables/8/4.2.192.90.table | 2 -- definitions/grib2/tables/8/4.2.192.91.table | 2 -- definitions/grib2/tables/8/4.2.192.92.table | 2 -- definitions/grib2/tables/8/4.2.192.93.table | 2 -- definitions/grib2/tables/8/4.2.192.94.table | 2 -- definitions/grib2/tables/8/4.2.192.95.table | 2 -- definitions/grib2/tables/8/4.2.192.96.table | 2 -- definitions/grib2/tables/8/4.2.192.97.table | 2 -- definitions/grib2/tables/8/4.2.192.98.table | 2 -- definitions/grib2/tables/8/4.2.192.99.table | 2 -- definitions/grib2/tables/9/4.1.192.table | 3 --- definitions/grib2/tables/9/4.2.192.0.table | 2 -- definitions/grib2/tables/9/4.2.192.1.table | 2 -- definitions/grib2/tables/9/4.2.192.10.table | 2 -- definitions/grib2/tables/9/4.2.192.100.table | 2 -- definitions/grib2/tables/9/4.2.192.101.table | 2 -- definitions/grib2/tables/9/4.2.192.102.table | 2 -- definitions/grib2/tables/9/4.2.192.103.table | 2 -- definitions/grib2/tables/9/4.2.192.104.table | 2 -- definitions/grib2/tables/9/4.2.192.105.table | 2 -- definitions/grib2/tables/9/4.2.192.106.table | 2 -- definitions/grib2/tables/9/4.2.192.107.table | 2 -- definitions/grib2/tables/9/4.2.192.108.table | 2 -- definitions/grib2/tables/9/4.2.192.109.table | 2 -- definitions/grib2/tables/9/4.2.192.11.table | 2 -- definitions/grib2/tables/9/4.2.192.110.table | 2 -- definitions/grib2/tables/9/4.2.192.111.table | 2 -- definitions/grib2/tables/9/4.2.192.112.table | 2 -- definitions/grib2/tables/9/4.2.192.113.table | 2 -- definitions/grib2/tables/9/4.2.192.114.table | 2 -- definitions/grib2/tables/9/4.2.192.115.table | 2 -- definitions/grib2/tables/9/4.2.192.116.table | 2 -- definitions/grib2/tables/9/4.2.192.117.table | 2 -- definitions/grib2/tables/9/4.2.192.118.table | 2 -- definitions/grib2/tables/9/4.2.192.119.table | 2 -- definitions/grib2/tables/9/4.2.192.12.table | 2 -- definitions/grib2/tables/9/4.2.192.120.table | 2 -- definitions/grib2/tables/9/4.2.192.121.table | 2 -- definitions/grib2/tables/9/4.2.192.122.table | 2 -- definitions/grib2/tables/9/4.2.192.123.table | 2 -- definitions/grib2/tables/9/4.2.192.124.table | 2 -- definitions/grib2/tables/9/4.2.192.125.table | 2 -- definitions/grib2/tables/9/4.2.192.126.table | 2 -- definitions/grib2/tables/9/4.2.192.127.table | 2 -- definitions/grib2/tables/9/4.2.192.128.table | 2 -- definitions/grib2/tables/9/4.2.192.129.table | 2 -- definitions/grib2/tables/9/4.2.192.13.table | 2 -- definitions/grib2/tables/9/4.2.192.130.table | 2 -- definitions/grib2/tables/9/4.2.192.131.table | 2 -- definitions/grib2/tables/9/4.2.192.132.table | 2 -- definitions/grib2/tables/9/4.2.192.133.table | 2 -- definitions/grib2/tables/9/4.2.192.134.table | 2 -- definitions/grib2/tables/9/4.2.192.135.table | 2 -- definitions/grib2/tables/9/4.2.192.136.table | 2 -- definitions/grib2/tables/9/4.2.192.137.table | 2 -- definitions/grib2/tables/9/4.2.192.138.table | 2 -- definitions/grib2/tables/9/4.2.192.139.table | 2 -- definitions/grib2/tables/9/4.2.192.14.table | 2 -- definitions/grib2/tables/9/4.2.192.140.table | 2 -- definitions/grib2/tables/9/4.2.192.141.table | 2 -- definitions/grib2/tables/9/4.2.192.142.table | 2 -- definitions/grib2/tables/9/4.2.192.143.table | 2 -- definitions/grib2/tables/9/4.2.192.144.table | 2 -- definitions/grib2/tables/9/4.2.192.145.table | 2 -- definitions/grib2/tables/9/4.2.192.146.table | 2 -- definitions/grib2/tables/9/4.2.192.147.table | 2 -- definitions/grib2/tables/9/4.2.192.148.table | 2 -- definitions/grib2/tables/9/4.2.192.149.table | 2 -- definitions/grib2/tables/9/4.2.192.15.table | 2 -- definitions/grib2/tables/9/4.2.192.150.table | 2 -- definitions/grib2/tables/9/4.2.192.151.table | 2 -- definitions/grib2/tables/9/4.2.192.152.table | 2 -- definitions/grib2/tables/9/4.2.192.153.table | 2 -- definitions/grib2/tables/9/4.2.192.154.table | 2 -- definitions/grib2/tables/9/4.2.192.155.table | 2 -- definitions/grib2/tables/9/4.2.192.156.table | 2 -- definitions/grib2/tables/9/4.2.192.157.table | 2 -- definitions/grib2/tables/9/4.2.192.158.table | 2 -- definitions/grib2/tables/9/4.2.192.159.table | 2 -- definitions/grib2/tables/9/4.2.192.16.table | 2 -- definitions/grib2/tables/9/4.2.192.160.table | 2 -- definitions/grib2/tables/9/4.2.192.161.table | 2 -- definitions/grib2/tables/9/4.2.192.162.table | 2 -- definitions/grib2/tables/9/4.2.192.163.table | 2 -- definitions/grib2/tables/9/4.2.192.164.table | 2 -- definitions/grib2/tables/9/4.2.192.165.table | 2 -- definitions/grib2/tables/9/4.2.192.166.table | 2 -- definitions/grib2/tables/9/4.2.192.167.table | 2 -- definitions/grib2/tables/9/4.2.192.168.table | 2 -- definitions/grib2/tables/9/4.2.192.169.table | 2 -- definitions/grib2/tables/9/4.2.192.17.table | 2 -- definitions/grib2/tables/9/4.2.192.170.table | 2 -- definitions/grib2/tables/9/4.2.192.171.table | 2 -- definitions/grib2/tables/9/4.2.192.172.table | 2 -- definitions/grib2/tables/9/4.2.192.173.table | 2 -- definitions/grib2/tables/9/4.2.192.174.table | 2 -- definitions/grib2/tables/9/4.2.192.175.table | 2 -- definitions/grib2/tables/9/4.2.192.176.table | 2 -- definitions/grib2/tables/9/4.2.192.177.table | 2 -- definitions/grib2/tables/9/4.2.192.178.table | 2 -- definitions/grib2/tables/9/4.2.192.179.table | 2 -- definitions/grib2/tables/9/4.2.192.18.table | 2 -- definitions/grib2/tables/9/4.2.192.180.table | 2 -- definitions/grib2/tables/9/4.2.192.181.table | 2 -- definitions/grib2/tables/9/4.2.192.182.table | 2 -- definitions/grib2/tables/9/4.2.192.183.table | 2 -- definitions/grib2/tables/9/4.2.192.184.table | 2 -- definitions/grib2/tables/9/4.2.192.185.table | 2 -- definitions/grib2/tables/9/4.2.192.186.table | 2 -- definitions/grib2/tables/9/4.2.192.187.table | 2 -- definitions/grib2/tables/9/4.2.192.188.table | 2 -- definitions/grib2/tables/9/4.2.192.189.table | 2 -- definitions/grib2/tables/9/4.2.192.19.table | 2 -- definitions/grib2/tables/9/4.2.192.190.table | 2 -- definitions/grib2/tables/9/4.2.192.191.table | 2 -- definitions/grib2/tables/9/4.2.192.192.table | 2 -- definitions/grib2/tables/9/4.2.192.193.table | 2 -- definitions/grib2/tables/9/4.2.192.194.table | 2 -- definitions/grib2/tables/9/4.2.192.195.table | 2 -- definitions/grib2/tables/9/4.2.192.196.table | 2 -- definitions/grib2/tables/9/4.2.192.197.table | 2 -- definitions/grib2/tables/9/4.2.192.198.table | 2 -- definitions/grib2/tables/9/4.2.192.199.table | 2 -- definitions/grib2/tables/9/4.2.192.2.table | 2 -- definitions/grib2/tables/9/4.2.192.20.table | 2 -- definitions/grib2/tables/9/4.2.192.200.table | 2 -- definitions/grib2/tables/9/4.2.192.201.table | 2 -- definitions/grib2/tables/9/4.2.192.202.table | 2 -- definitions/grib2/tables/9/4.2.192.203.table | 2 -- definitions/grib2/tables/9/4.2.192.204.table | 2 -- definitions/grib2/tables/9/4.2.192.205.table | 2 -- definitions/grib2/tables/9/4.2.192.206.table | 2 -- definitions/grib2/tables/9/4.2.192.207.table | 2 -- definitions/grib2/tables/9/4.2.192.208.table | 2 -- definitions/grib2/tables/9/4.2.192.209.table | 2 -- definitions/grib2/tables/9/4.2.192.21.table | 2 -- definitions/grib2/tables/9/4.2.192.210.table | 2 -- definitions/grib2/tables/9/4.2.192.211.table | 2 -- definitions/grib2/tables/9/4.2.192.212.table | 2 -- definitions/grib2/tables/9/4.2.192.213.table | 2 -- definitions/grib2/tables/9/4.2.192.214.table | 2 -- definitions/grib2/tables/9/4.2.192.215.table | 2 -- definitions/grib2/tables/9/4.2.192.216.table | 2 -- definitions/grib2/tables/9/4.2.192.217.table | 2 -- definitions/grib2/tables/9/4.2.192.218.table | 2 -- definitions/grib2/tables/9/4.2.192.219.table | 2 -- definitions/grib2/tables/9/4.2.192.22.table | 2 -- definitions/grib2/tables/9/4.2.192.220.table | 2 -- definitions/grib2/tables/9/4.2.192.221.table | 2 -- definitions/grib2/tables/9/4.2.192.222.table | 2 -- definitions/grib2/tables/9/4.2.192.223.table | 2 -- definitions/grib2/tables/9/4.2.192.224.table | 2 -- definitions/grib2/tables/9/4.2.192.225.table | 2 -- definitions/grib2/tables/9/4.2.192.226.table | 2 -- definitions/grib2/tables/9/4.2.192.227.table | 2 -- definitions/grib2/tables/9/4.2.192.228.table | 2 -- definitions/grib2/tables/9/4.2.192.229.table | 2 -- definitions/grib2/tables/9/4.2.192.23.table | 2 -- definitions/grib2/tables/9/4.2.192.230.table | 2 -- definitions/grib2/tables/9/4.2.192.231.table | 2 -- definitions/grib2/tables/9/4.2.192.232.table | 2 -- definitions/grib2/tables/9/4.2.192.233.table | 2 -- definitions/grib2/tables/9/4.2.192.234.table | 2 -- definitions/grib2/tables/9/4.2.192.235.table | 2 -- definitions/grib2/tables/9/4.2.192.236.table | 2 -- definitions/grib2/tables/9/4.2.192.237.table | 2 -- definitions/grib2/tables/9/4.2.192.238.table | 2 -- definitions/grib2/tables/9/4.2.192.239.table | 2 -- definitions/grib2/tables/9/4.2.192.24.table | 2 -- definitions/grib2/tables/9/4.2.192.240.table | 2 -- definitions/grib2/tables/9/4.2.192.241.table | 2 -- definitions/grib2/tables/9/4.2.192.242.table | 2 -- definitions/grib2/tables/9/4.2.192.243.table | 2 -- definitions/grib2/tables/9/4.2.192.244.table | 2 -- definitions/grib2/tables/9/4.2.192.245.table | 2 -- definitions/grib2/tables/9/4.2.192.246.table | 2 -- definitions/grib2/tables/9/4.2.192.247.table | 2 -- definitions/grib2/tables/9/4.2.192.248.table | 2 -- definitions/grib2/tables/9/4.2.192.249.table | 2 -- definitions/grib2/tables/9/4.2.192.25.table | 2 -- definitions/grib2/tables/9/4.2.192.250.table | 2 -- definitions/grib2/tables/9/4.2.192.251.table | 2 -- definitions/grib2/tables/9/4.2.192.252.table | 2 -- definitions/grib2/tables/9/4.2.192.253.table | 2 -- definitions/grib2/tables/9/4.2.192.254.table | 2 -- definitions/grib2/tables/9/4.2.192.255.table | 2 -- definitions/grib2/tables/9/4.2.192.26.table | 2 -- definitions/grib2/tables/9/4.2.192.27.table | 2 -- definitions/grib2/tables/9/4.2.192.28.table | 2 -- definitions/grib2/tables/9/4.2.192.29.table | 2 -- definitions/grib2/tables/9/4.2.192.3.table | 2 -- definitions/grib2/tables/9/4.2.192.30.table | 2 -- definitions/grib2/tables/9/4.2.192.31.table | 2 -- definitions/grib2/tables/9/4.2.192.32.table | 2 -- definitions/grib2/tables/9/4.2.192.33.table | 2 -- definitions/grib2/tables/9/4.2.192.34.table | 2 -- definitions/grib2/tables/9/4.2.192.35.table | 2 -- definitions/grib2/tables/9/4.2.192.36.table | 2 -- definitions/grib2/tables/9/4.2.192.37.table | 2 -- definitions/grib2/tables/9/4.2.192.38.table | 2 -- definitions/grib2/tables/9/4.2.192.39.table | 2 -- definitions/grib2/tables/9/4.2.192.4.table | 2 -- definitions/grib2/tables/9/4.2.192.40.table | 2 -- definitions/grib2/tables/9/4.2.192.41.table | 2 -- definitions/grib2/tables/9/4.2.192.42.table | 2 -- definitions/grib2/tables/9/4.2.192.43.table | 2 -- definitions/grib2/tables/9/4.2.192.44.table | 2 -- definitions/grib2/tables/9/4.2.192.45.table | 2 -- definitions/grib2/tables/9/4.2.192.46.table | 2 -- definitions/grib2/tables/9/4.2.192.47.table | 2 -- definitions/grib2/tables/9/4.2.192.48.table | 2 -- definitions/grib2/tables/9/4.2.192.49.table | 2 -- definitions/grib2/tables/9/4.2.192.5.table | 2 -- definitions/grib2/tables/9/4.2.192.50.table | 2 -- definitions/grib2/tables/9/4.2.192.51.table | 2 -- definitions/grib2/tables/9/4.2.192.52.table | 2 -- definitions/grib2/tables/9/4.2.192.53.table | 2 -- definitions/grib2/tables/9/4.2.192.54.table | 2 -- definitions/grib2/tables/9/4.2.192.55.table | 2 -- definitions/grib2/tables/9/4.2.192.56.table | 2 -- definitions/grib2/tables/9/4.2.192.57.table | 2 -- definitions/grib2/tables/9/4.2.192.58.table | 2 -- definitions/grib2/tables/9/4.2.192.59.table | 2 -- definitions/grib2/tables/9/4.2.192.6.table | 2 -- definitions/grib2/tables/9/4.2.192.60.table | 2 -- definitions/grib2/tables/9/4.2.192.61.table | 2 -- definitions/grib2/tables/9/4.2.192.62.table | 2 -- definitions/grib2/tables/9/4.2.192.63.table | 2 -- definitions/grib2/tables/9/4.2.192.64.table | 2 -- definitions/grib2/tables/9/4.2.192.65.table | 2 -- definitions/grib2/tables/9/4.2.192.66.table | 2 -- definitions/grib2/tables/9/4.2.192.67.table | 2 -- definitions/grib2/tables/9/4.2.192.68.table | 2 -- definitions/grib2/tables/9/4.2.192.69.table | 2 -- definitions/grib2/tables/9/4.2.192.7.table | 2 -- definitions/grib2/tables/9/4.2.192.70.table | 2 -- definitions/grib2/tables/9/4.2.192.71.table | 2 -- definitions/grib2/tables/9/4.2.192.72.table | 2 -- definitions/grib2/tables/9/4.2.192.73.table | 2 -- definitions/grib2/tables/9/4.2.192.74.table | 2 -- definitions/grib2/tables/9/4.2.192.75.table | 2 -- definitions/grib2/tables/9/4.2.192.76.table | 2 -- definitions/grib2/tables/9/4.2.192.77.table | 2 -- definitions/grib2/tables/9/4.2.192.78.table | 2 -- definitions/grib2/tables/9/4.2.192.79.table | 2 -- definitions/grib2/tables/9/4.2.192.8.table | 2 -- definitions/grib2/tables/9/4.2.192.80.table | 2 -- definitions/grib2/tables/9/4.2.192.81.table | 2 -- definitions/grib2/tables/9/4.2.192.82.table | 2 -- definitions/grib2/tables/9/4.2.192.83.table | 2 -- definitions/grib2/tables/9/4.2.192.84.table | 2 -- definitions/grib2/tables/9/4.2.192.85.table | 2 -- definitions/grib2/tables/9/4.2.192.86.table | 2 -- definitions/grib2/tables/9/4.2.192.87.table | 2 -- definitions/grib2/tables/9/4.2.192.88.table | 2 -- definitions/grib2/tables/9/4.2.192.89.table | 2 -- definitions/grib2/tables/9/4.2.192.9.table | 2 -- definitions/grib2/tables/9/4.2.192.90.table | 2 -- definitions/grib2/tables/9/4.2.192.91.table | 2 -- definitions/grib2/tables/9/4.2.192.92.table | 2 -- definitions/grib2/tables/9/4.2.192.93.table | 2 -- definitions/grib2/tables/9/4.2.192.94.table | 2 -- definitions/grib2/tables/9/4.2.192.95.table | 2 -- definitions/grib2/tables/9/4.2.192.96.table | 2 -- definitions/grib2/tables/9/4.2.192.97.table | 2 -- definitions/grib2/tables/9/4.2.192.98.table | 2 -- definitions/grib2/tables/9/4.2.192.99.table | 2 -- 1565 files changed, 3148 deletions(-) delete mode 100644 definitions/grib2/tables/10/4.1.192.table delete mode 100644 definitions/grib2/tables/11/4.1.192.table delete mode 100644 definitions/grib2/tables/12/4.1.192.table delete mode 100644 definitions/grib2/tables/13/4.1.192.table delete mode 100644 definitions/grib2/tables/14/4.1.192.table delete mode 100644 definitions/grib2/tables/15/4.1.192.table delete mode 100644 definitions/grib2/tables/16/4.1.192.table delete mode 100644 definitions/grib2/tables/17/4.1.192.table delete mode 100644 definitions/grib2/tables/18/4.1.192.table delete mode 100644 definitions/grib2/tables/19/4.1.192.table delete mode 100644 definitions/grib2/tables/20/4.1.192.table delete mode 100644 definitions/grib2/tables/21/4.1.192.table delete mode 100644 definitions/grib2/tables/22/4.1.192.table delete mode 100644 definitions/grib2/tables/23/4.1.192.table delete mode 100644 definitions/grib2/tables/24/4.1.192.table delete mode 100644 definitions/grib2/tables/25/4.1.192.table delete mode 100644 definitions/grib2/tables/26/4.1.192.table delete mode 100644 definitions/grib2/tables/27/4.1.192.table delete mode 100644 definitions/grib2/tables/28/4.1.192.table delete mode 100644 definitions/grib2/tables/29/4.1.192.table delete mode 100644 definitions/grib2/tables/30/4.1.192.table delete mode 100644 definitions/grib2/tables/31/4.1.192.table delete mode 100644 definitions/grib2/tables/32/4.1.192.table delete mode 100644 definitions/grib2/tables/4/4.1.192.table delete mode 100644 definitions/grib2/tables/4/4.2.192.0.table delete mode 100644 definitions/grib2/tables/4/4.2.192.1.table delete mode 100644 definitions/grib2/tables/4/4.2.192.10.table delete mode 100644 definitions/grib2/tables/4/4.2.192.100.table delete mode 100644 definitions/grib2/tables/4/4.2.192.101.table delete mode 100644 definitions/grib2/tables/4/4.2.192.102.table delete mode 100644 definitions/grib2/tables/4/4.2.192.103.table delete mode 100644 definitions/grib2/tables/4/4.2.192.104.table delete mode 100644 definitions/grib2/tables/4/4.2.192.105.table delete mode 100644 definitions/grib2/tables/4/4.2.192.106.table delete mode 100644 definitions/grib2/tables/4/4.2.192.107.table delete mode 100644 definitions/grib2/tables/4/4.2.192.108.table delete mode 100644 definitions/grib2/tables/4/4.2.192.109.table delete mode 100644 definitions/grib2/tables/4/4.2.192.11.table delete mode 100644 definitions/grib2/tables/4/4.2.192.110.table delete mode 100644 definitions/grib2/tables/4/4.2.192.111.table delete mode 100644 definitions/grib2/tables/4/4.2.192.112.table delete mode 100644 definitions/grib2/tables/4/4.2.192.113.table delete mode 100644 definitions/grib2/tables/4/4.2.192.114.table delete mode 100644 definitions/grib2/tables/4/4.2.192.115.table delete mode 100644 definitions/grib2/tables/4/4.2.192.116.table delete mode 100644 definitions/grib2/tables/4/4.2.192.117.table delete mode 100644 definitions/grib2/tables/4/4.2.192.118.table delete mode 100644 definitions/grib2/tables/4/4.2.192.119.table delete mode 100644 definitions/grib2/tables/4/4.2.192.12.table delete mode 100644 definitions/grib2/tables/4/4.2.192.120.table delete mode 100644 definitions/grib2/tables/4/4.2.192.121.table delete mode 100644 definitions/grib2/tables/4/4.2.192.122.table delete mode 100644 definitions/grib2/tables/4/4.2.192.123.table delete mode 100644 definitions/grib2/tables/4/4.2.192.124.table delete mode 100644 definitions/grib2/tables/4/4.2.192.125.table delete mode 100644 definitions/grib2/tables/4/4.2.192.126.table delete mode 100644 definitions/grib2/tables/4/4.2.192.127.table delete mode 100644 definitions/grib2/tables/4/4.2.192.128.table delete mode 100644 definitions/grib2/tables/4/4.2.192.129.table delete mode 100644 definitions/grib2/tables/4/4.2.192.13.table delete mode 100644 definitions/grib2/tables/4/4.2.192.130.table delete mode 100644 definitions/grib2/tables/4/4.2.192.131.table delete mode 100644 definitions/grib2/tables/4/4.2.192.132.table delete mode 100644 definitions/grib2/tables/4/4.2.192.133.table delete mode 100644 definitions/grib2/tables/4/4.2.192.134.table delete mode 100644 definitions/grib2/tables/4/4.2.192.135.table delete mode 100644 definitions/grib2/tables/4/4.2.192.136.table delete mode 100644 definitions/grib2/tables/4/4.2.192.137.table delete mode 100644 definitions/grib2/tables/4/4.2.192.138.table delete mode 100644 definitions/grib2/tables/4/4.2.192.139.table delete mode 100644 definitions/grib2/tables/4/4.2.192.14.table delete mode 100644 definitions/grib2/tables/4/4.2.192.140.table delete mode 100644 definitions/grib2/tables/4/4.2.192.141.table delete mode 100644 definitions/grib2/tables/4/4.2.192.142.table delete mode 100644 definitions/grib2/tables/4/4.2.192.143.table delete mode 100644 definitions/grib2/tables/4/4.2.192.144.table delete mode 100644 definitions/grib2/tables/4/4.2.192.145.table delete mode 100644 definitions/grib2/tables/4/4.2.192.146.table delete mode 100644 definitions/grib2/tables/4/4.2.192.147.table delete mode 100644 definitions/grib2/tables/4/4.2.192.148.table delete mode 100644 definitions/grib2/tables/4/4.2.192.149.table delete mode 100644 definitions/grib2/tables/4/4.2.192.15.table delete mode 100644 definitions/grib2/tables/4/4.2.192.150.table delete mode 100644 definitions/grib2/tables/4/4.2.192.151.table delete mode 100644 definitions/grib2/tables/4/4.2.192.152.table delete mode 100644 definitions/grib2/tables/4/4.2.192.153.table delete mode 100644 definitions/grib2/tables/4/4.2.192.154.table delete mode 100644 definitions/grib2/tables/4/4.2.192.155.table delete mode 100644 definitions/grib2/tables/4/4.2.192.156.table delete mode 100644 definitions/grib2/tables/4/4.2.192.157.table delete mode 100644 definitions/grib2/tables/4/4.2.192.158.table delete mode 100644 definitions/grib2/tables/4/4.2.192.159.table delete mode 100644 definitions/grib2/tables/4/4.2.192.16.table delete mode 100644 definitions/grib2/tables/4/4.2.192.160.table delete mode 100644 definitions/grib2/tables/4/4.2.192.161.table delete mode 100644 definitions/grib2/tables/4/4.2.192.162.table delete mode 100644 definitions/grib2/tables/4/4.2.192.163.table delete mode 100644 definitions/grib2/tables/4/4.2.192.164.table delete mode 100644 definitions/grib2/tables/4/4.2.192.165.table delete mode 100644 definitions/grib2/tables/4/4.2.192.166.table delete mode 100644 definitions/grib2/tables/4/4.2.192.167.table delete mode 100644 definitions/grib2/tables/4/4.2.192.168.table delete mode 100644 definitions/grib2/tables/4/4.2.192.169.table delete mode 100644 definitions/grib2/tables/4/4.2.192.17.table delete mode 100644 definitions/grib2/tables/4/4.2.192.170.table delete mode 100644 definitions/grib2/tables/4/4.2.192.171.table delete mode 100644 definitions/grib2/tables/4/4.2.192.172.table delete mode 100644 definitions/grib2/tables/4/4.2.192.173.table delete mode 100644 definitions/grib2/tables/4/4.2.192.174.table delete mode 100644 definitions/grib2/tables/4/4.2.192.175.table delete mode 100644 definitions/grib2/tables/4/4.2.192.176.table delete mode 100644 definitions/grib2/tables/4/4.2.192.177.table delete mode 100644 definitions/grib2/tables/4/4.2.192.178.table delete mode 100644 definitions/grib2/tables/4/4.2.192.179.table delete mode 100644 definitions/grib2/tables/4/4.2.192.18.table delete mode 100644 definitions/grib2/tables/4/4.2.192.180.table delete mode 100644 definitions/grib2/tables/4/4.2.192.181.table delete mode 100644 definitions/grib2/tables/4/4.2.192.182.table delete mode 100644 definitions/grib2/tables/4/4.2.192.183.table delete mode 100644 definitions/grib2/tables/4/4.2.192.184.table delete mode 100644 definitions/grib2/tables/4/4.2.192.185.table delete mode 100644 definitions/grib2/tables/4/4.2.192.186.table delete mode 100644 definitions/grib2/tables/4/4.2.192.187.table delete mode 100644 definitions/grib2/tables/4/4.2.192.188.table delete mode 100644 definitions/grib2/tables/4/4.2.192.189.table delete mode 100644 definitions/grib2/tables/4/4.2.192.19.table delete mode 100644 definitions/grib2/tables/4/4.2.192.190.table delete mode 100644 definitions/grib2/tables/4/4.2.192.191.table delete mode 100644 definitions/grib2/tables/4/4.2.192.192.table delete mode 100644 definitions/grib2/tables/4/4.2.192.193.table delete mode 100644 definitions/grib2/tables/4/4.2.192.194.table delete mode 100644 definitions/grib2/tables/4/4.2.192.195.table delete mode 100644 definitions/grib2/tables/4/4.2.192.196.table delete mode 100644 definitions/grib2/tables/4/4.2.192.197.table delete mode 100644 definitions/grib2/tables/4/4.2.192.198.table delete mode 100644 definitions/grib2/tables/4/4.2.192.199.table delete mode 100644 definitions/grib2/tables/4/4.2.192.2.table delete mode 100644 definitions/grib2/tables/4/4.2.192.20.table delete mode 100644 definitions/grib2/tables/4/4.2.192.200.table delete mode 100644 definitions/grib2/tables/4/4.2.192.201.table delete mode 100644 definitions/grib2/tables/4/4.2.192.202.table delete mode 100644 definitions/grib2/tables/4/4.2.192.203.table delete mode 100644 definitions/grib2/tables/4/4.2.192.204.table delete mode 100644 definitions/grib2/tables/4/4.2.192.205.table delete mode 100644 definitions/grib2/tables/4/4.2.192.206.table delete mode 100644 definitions/grib2/tables/4/4.2.192.207.table delete mode 100644 definitions/grib2/tables/4/4.2.192.208.table delete mode 100644 definitions/grib2/tables/4/4.2.192.209.table delete mode 100644 definitions/grib2/tables/4/4.2.192.21.table delete mode 100644 definitions/grib2/tables/4/4.2.192.210.table delete mode 100644 definitions/grib2/tables/4/4.2.192.211.table delete mode 100644 definitions/grib2/tables/4/4.2.192.212.table delete mode 100644 definitions/grib2/tables/4/4.2.192.213.table delete mode 100644 definitions/grib2/tables/4/4.2.192.214.table delete mode 100644 definitions/grib2/tables/4/4.2.192.215.table delete mode 100644 definitions/grib2/tables/4/4.2.192.216.table delete mode 100644 definitions/grib2/tables/4/4.2.192.217.table delete mode 100644 definitions/grib2/tables/4/4.2.192.218.table delete mode 100644 definitions/grib2/tables/4/4.2.192.219.table delete mode 100644 definitions/grib2/tables/4/4.2.192.22.table delete mode 100644 definitions/grib2/tables/4/4.2.192.220.table delete mode 100644 definitions/grib2/tables/4/4.2.192.221.table delete mode 100644 definitions/grib2/tables/4/4.2.192.222.table delete mode 100644 definitions/grib2/tables/4/4.2.192.223.table delete mode 100644 definitions/grib2/tables/4/4.2.192.224.table delete mode 100644 definitions/grib2/tables/4/4.2.192.225.table delete mode 100644 definitions/grib2/tables/4/4.2.192.226.table delete mode 100644 definitions/grib2/tables/4/4.2.192.227.table delete mode 100644 definitions/grib2/tables/4/4.2.192.228.table delete mode 100644 definitions/grib2/tables/4/4.2.192.229.table delete mode 100644 definitions/grib2/tables/4/4.2.192.23.table delete mode 100644 definitions/grib2/tables/4/4.2.192.230.table delete mode 100644 definitions/grib2/tables/4/4.2.192.231.table delete mode 100644 definitions/grib2/tables/4/4.2.192.232.table delete mode 100644 definitions/grib2/tables/4/4.2.192.233.table delete mode 100644 definitions/grib2/tables/4/4.2.192.234.table delete mode 100644 definitions/grib2/tables/4/4.2.192.235.table delete mode 100644 definitions/grib2/tables/4/4.2.192.236.table delete mode 100644 definitions/grib2/tables/4/4.2.192.237.table delete mode 100644 definitions/grib2/tables/4/4.2.192.238.table delete mode 100644 definitions/grib2/tables/4/4.2.192.239.table delete mode 100644 definitions/grib2/tables/4/4.2.192.24.table delete mode 100644 definitions/grib2/tables/4/4.2.192.240.table delete mode 100644 definitions/grib2/tables/4/4.2.192.241.table delete mode 100644 definitions/grib2/tables/4/4.2.192.242.table delete mode 100644 definitions/grib2/tables/4/4.2.192.243.table delete mode 100644 definitions/grib2/tables/4/4.2.192.244.table delete mode 100644 definitions/grib2/tables/4/4.2.192.245.table delete mode 100644 definitions/grib2/tables/4/4.2.192.246.table delete mode 100644 definitions/grib2/tables/4/4.2.192.247.table delete mode 100644 definitions/grib2/tables/4/4.2.192.248.table delete mode 100644 definitions/grib2/tables/4/4.2.192.249.table delete mode 100644 definitions/grib2/tables/4/4.2.192.25.table delete mode 100644 definitions/grib2/tables/4/4.2.192.250.table delete mode 100644 definitions/grib2/tables/4/4.2.192.251.table delete mode 100644 definitions/grib2/tables/4/4.2.192.252.table delete mode 100644 definitions/grib2/tables/4/4.2.192.253.table delete mode 100644 definitions/grib2/tables/4/4.2.192.254.table delete mode 100644 definitions/grib2/tables/4/4.2.192.255.table delete mode 100644 definitions/grib2/tables/4/4.2.192.26.table delete mode 100644 definitions/grib2/tables/4/4.2.192.27.table delete mode 100644 definitions/grib2/tables/4/4.2.192.28.table delete mode 100644 definitions/grib2/tables/4/4.2.192.29.table delete mode 100644 definitions/grib2/tables/4/4.2.192.3.table delete mode 100644 definitions/grib2/tables/4/4.2.192.30.table delete mode 100644 definitions/grib2/tables/4/4.2.192.31.table delete mode 100644 definitions/grib2/tables/4/4.2.192.32.table delete mode 100644 definitions/grib2/tables/4/4.2.192.33.table delete mode 100644 definitions/grib2/tables/4/4.2.192.34.table delete mode 100644 definitions/grib2/tables/4/4.2.192.35.table delete mode 100644 definitions/grib2/tables/4/4.2.192.36.table delete mode 100644 definitions/grib2/tables/4/4.2.192.37.table delete mode 100644 definitions/grib2/tables/4/4.2.192.38.table delete mode 100644 definitions/grib2/tables/4/4.2.192.39.table delete mode 100644 definitions/grib2/tables/4/4.2.192.4.table delete mode 100644 definitions/grib2/tables/4/4.2.192.40.table delete mode 100644 definitions/grib2/tables/4/4.2.192.41.table delete mode 100644 definitions/grib2/tables/4/4.2.192.42.table delete mode 100644 definitions/grib2/tables/4/4.2.192.43.table delete mode 100644 definitions/grib2/tables/4/4.2.192.44.table delete mode 100644 definitions/grib2/tables/4/4.2.192.45.table delete mode 100644 definitions/grib2/tables/4/4.2.192.46.table delete mode 100644 definitions/grib2/tables/4/4.2.192.47.table delete mode 100644 definitions/grib2/tables/4/4.2.192.48.table delete mode 100644 definitions/grib2/tables/4/4.2.192.49.table delete mode 100644 definitions/grib2/tables/4/4.2.192.5.table delete mode 100644 definitions/grib2/tables/4/4.2.192.50.table delete mode 100644 definitions/grib2/tables/4/4.2.192.51.table delete mode 100644 definitions/grib2/tables/4/4.2.192.52.table delete mode 100644 definitions/grib2/tables/4/4.2.192.53.table delete mode 100644 definitions/grib2/tables/4/4.2.192.54.table delete mode 100644 definitions/grib2/tables/4/4.2.192.55.table delete mode 100644 definitions/grib2/tables/4/4.2.192.56.table delete mode 100644 definitions/grib2/tables/4/4.2.192.57.table delete mode 100644 definitions/grib2/tables/4/4.2.192.58.table delete mode 100644 definitions/grib2/tables/4/4.2.192.59.table delete mode 100644 definitions/grib2/tables/4/4.2.192.6.table delete mode 100644 definitions/grib2/tables/4/4.2.192.60.table delete mode 100644 definitions/grib2/tables/4/4.2.192.61.table delete mode 100644 definitions/grib2/tables/4/4.2.192.62.table delete mode 100644 definitions/grib2/tables/4/4.2.192.63.table delete mode 100644 definitions/grib2/tables/4/4.2.192.64.table delete mode 100644 definitions/grib2/tables/4/4.2.192.65.table delete mode 100644 definitions/grib2/tables/4/4.2.192.66.table delete mode 100644 definitions/grib2/tables/4/4.2.192.67.table delete mode 100644 definitions/grib2/tables/4/4.2.192.68.table delete mode 100644 definitions/grib2/tables/4/4.2.192.69.table delete mode 100644 definitions/grib2/tables/4/4.2.192.7.table delete mode 100644 definitions/grib2/tables/4/4.2.192.70.table delete mode 100644 definitions/grib2/tables/4/4.2.192.71.table delete mode 100644 definitions/grib2/tables/4/4.2.192.72.table delete mode 100644 definitions/grib2/tables/4/4.2.192.73.table delete mode 100644 definitions/grib2/tables/4/4.2.192.74.table delete mode 100644 definitions/grib2/tables/4/4.2.192.75.table delete mode 100644 definitions/grib2/tables/4/4.2.192.76.table delete mode 100644 definitions/grib2/tables/4/4.2.192.77.table delete mode 100644 definitions/grib2/tables/4/4.2.192.78.table delete mode 100644 definitions/grib2/tables/4/4.2.192.79.table delete mode 100644 definitions/grib2/tables/4/4.2.192.8.table delete mode 100644 definitions/grib2/tables/4/4.2.192.80.table delete mode 100644 definitions/grib2/tables/4/4.2.192.81.table delete mode 100644 definitions/grib2/tables/4/4.2.192.82.table delete mode 100644 definitions/grib2/tables/4/4.2.192.83.table delete mode 100644 definitions/grib2/tables/4/4.2.192.84.table delete mode 100644 definitions/grib2/tables/4/4.2.192.85.table delete mode 100644 definitions/grib2/tables/4/4.2.192.86.table delete mode 100644 definitions/grib2/tables/4/4.2.192.87.table delete mode 100644 definitions/grib2/tables/4/4.2.192.88.table delete mode 100644 definitions/grib2/tables/4/4.2.192.89.table delete mode 100644 definitions/grib2/tables/4/4.2.192.9.table delete mode 100644 definitions/grib2/tables/4/4.2.192.90.table delete mode 100644 definitions/grib2/tables/4/4.2.192.91.table delete mode 100644 definitions/grib2/tables/4/4.2.192.92.table delete mode 100644 definitions/grib2/tables/4/4.2.192.93.table delete mode 100644 definitions/grib2/tables/4/4.2.192.94.table delete mode 100644 definitions/grib2/tables/4/4.2.192.95.table delete mode 100644 definitions/grib2/tables/4/4.2.192.96.table delete mode 100644 definitions/grib2/tables/4/4.2.192.97.table delete mode 100644 definitions/grib2/tables/4/4.2.192.98.table delete mode 100644 definitions/grib2/tables/4/4.2.192.99.table delete mode 100644 definitions/grib2/tables/5/4.1.192.table delete mode 100644 definitions/grib2/tables/5/4.2.192.0.table delete mode 100644 definitions/grib2/tables/5/4.2.192.1.table delete mode 100644 definitions/grib2/tables/5/4.2.192.10.table delete mode 100644 definitions/grib2/tables/5/4.2.192.100.table delete mode 100644 definitions/grib2/tables/5/4.2.192.101.table delete mode 100644 definitions/grib2/tables/5/4.2.192.102.table delete mode 100644 definitions/grib2/tables/5/4.2.192.103.table delete mode 100644 definitions/grib2/tables/5/4.2.192.104.table delete mode 100644 definitions/grib2/tables/5/4.2.192.105.table delete mode 100644 definitions/grib2/tables/5/4.2.192.106.table delete mode 100644 definitions/grib2/tables/5/4.2.192.107.table delete mode 100644 definitions/grib2/tables/5/4.2.192.108.table delete mode 100644 definitions/grib2/tables/5/4.2.192.109.table delete mode 100644 definitions/grib2/tables/5/4.2.192.11.table delete mode 100644 definitions/grib2/tables/5/4.2.192.110.table delete mode 100644 definitions/grib2/tables/5/4.2.192.111.table delete mode 100644 definitions/grib2/tables/5/4.2.192.112.table delete mode 100644 definitions/grib2/tables/5/4.2.192.113.table delete mode 100644 definitions/grib2/tables/5/4.2.192.114.table delete mode 100644 definitions/grib2/tables/5/4.2.192.115.table delete mode 100644 definitions/grib2/tables/5/4.2.192.116.table delete mode 100644 definitions/grib2/tables/5/4.2.192.117.table delete mode 100644 definitions/grib2/tables/5/4.2.192.118.table delete mode 100644 definitions/grib2/tables/5/4.2.192.119.table delete mode 100644 definitions/grib2/tables/5/4.2.192.12.table delete mode 100644 definitions/grib2/tables/5/4.2.192.120.table delete mode 100644 definitions/grib2/tables/5/4.2.192.121.table delete mode 100644 definitions/grib2/tables/5/4.2.192.122.table delete mode 100644 definitions/grib2/tables/5/4.2.192.123.table delete mode 100644 definitions/grib2/tables/5/4.2.192.124.table delete mode 100644 definitions/grib2/tables/5/4.2.192.125.table delete mode 100644 definitions/grib2/tables/5/4.2.192.126.table delete mode 100644 definitions/grib2/tables/5/4.2.192.127.table delete mode 100644 definitions/grib2/tables/5/4.2.192.128.table delete mode 100644 definitions/grib2/tables/5/4.2.192.129.table delete mode 100644 definitions/grib2/tables/5/4.2.192.13.table delete mode 100644 definitions/grib2/tables/5/4.2.192.130.table delete mode 100644 definitions/grib2/tables/5/4.2.192.131.table delete mode 100644 definitions/grib2/tables/5/4.2.192.132.table delete mode 100644 definitions/grib2/tables/5/4.2.192.133.table delete mode 100644 definitions/grib2/tables/5/4.2.192.134.table delete mode 100644 definitions/grib2/tables/5/4.2.192.135.table delete mode 100644 definitions/grib2/tables/5/4.2.192.136.table delete mode 100644 definitions/grib2/tables/5/4.2.192.137.table delete mode 100644 definitions/grib2/tables/5/4.2.192.138.table delete mode 100644 definitions/grib2/tables/5/4.2.192.139.table delete mode 100644 definitions/grib2/tables/5/4.2.192.14.table delete mode 100644 definitions/grib2/tables/5/4.2.192.140.table delete mode 100644 definitions/grib2/tables/5/4.2.192.141.table delete mode 100644 definitions/grib2/tables/5/4.2.192.142.table delete mode 100644 definitions/grib2/tables/5/4.2.192.143.table delete mode 100644 definitions/grib2/tables/5/4.2.192.144.table delete mode 100644 definitions/grib2/tables/5/4.2.192.145.table delete mode 100644 definitions/grib2/tables/5/4.2.192.146.table delete mode 100644 definitions/grib2/tables/5/4.2.192.147.table delete mode 100644 definitions/grib2/tables/5/4.2.192.148.table delete mode 100644 definitions/grib2/tables/5/4.2.192.149.table delete mode 100644 definitions/grib2/tables/5/4.2.192.15.table delete mode 100644 definitions/grib2/tables/5/4.2.192.150.table delete mode 100644 definitions/grib2/tables/5/4.2.192.151.table delete mode 100644 definitions/grib2/tables/5/4.2.192.152.table delete mode 100644 definitions/grib2/tables/5/4.2.192.153.table delete mode 100644 definitions/grib2/tables/5/4.2.192.154.table delete mode 100644 definitions/grib2/tables/5/4.2.192.155.table delete mode 100644 definitions/grib2/tables/5/4.2.192.156.table delete mode 100644 definitions/grib2/tables/5/4.2.192.157.table delete mode 100644 definitions/grib2/tables/5/4.2.192.158.table delete mode 100644 definitions/grib2/tables/5/4.2.192.159.table delete mode 100644 definitions/grib2/tables/5/4.2.192.16.table delete mode 100644 definitions/grib2/tables/5/4.2.192.160.table delete mode 100644 definitions/grib2/tables/5/4.2.192.161.table delete mode 100644 definitions/grib2/tables/5/4.2.192.162.table delete mode 100644 definitions/grib2/tables/5/4.2.192.163.table delete mode 100644 definitions/grib2/tables/5/4.2.192.164.table delete mode 100644 definitions/grib2/tables/5/4.2.192.165.table delete mode 100644 definitions/grib2/tables/5/4.2.192.166.table delete mode 100644 definitions/grib2/tables/5/4.2.192.167.table delete mode 100644 definitions/grib2/tables/5/4.2.192.168.table delete mode 100644 definitions/grib2/tables/5/4.2.192.169.table delete mode 100644 definitions/grib2/tables/5/4.2.192.17.table delete mode 100644 definitions/grib2/tables/5/4.2.192.170.table delete mode 100644 definitions/grib2/tables/5/4.2.192.171.table delete mode 100644 definitions/grib2/tables/5/4.2.192.172.table delete mode 100644 definitions/grib2/tables/5/4.2.192.173.table delete mode 100644 definitions/grib2/tables/5/4.2.192.174.table delete mode 100644 definitions/grib2/tables/5/4.2.192.175.table delete mode 100644 definitions/grib2/tables/5/4.2.192.176.table delete mode 100644 definitions/grib2/tables/5/4.2.192.177.table delete mode 100644 definitions/grib2/tables/5/4.2.192.178.table delete mode 100644 definitions/grib2/tables/5/4.2.192.179.table delete mode 100644 definitions/grib2/tables/5/4.2.192.18.table delete mode 100644 definitions/grib2/tables/5/4.2.192.180.table delete mode 100644 definitions/grib2/tables/5/4.2.192.181.table delete mode 100644 definitions/grib2/tables/5/4.2.192.182.table delete mode 100644 definitions/grib2/tables/5/4.2.192.183.table delete mode 100644 definitions/grib2/tables/5/4.2.192.184.table delete mode 100644 definitions/grib2/tables/5/4.2.192.185.table delete mode 100644 definitions/grib2/tables/5/4.2.192.186.table delete mode 100644 definitions/grib2/tables/5/4.2.192.187.table delete mode 100644 definitions/grib2/tables/5/4.2.192.188.table delete mode 100644 definitions/grib2/tables/5/4.2.192.189.table delete mode 100644 definitions/grib2/tables/5/4.2.192.19.table delete mode 100644 definitions/grib2/tables/5/4.2.192.190.table delete mode 100644 definitions/grib2/tables/5/4.2.192.191.table delete mode 100644 definitions/grib2/tables/5/4.2.192.192.table delete mode 100644 definitions/grib2/tables/5/4.2.192.193.table delete mode 100644 definitions/grib2/tables/5/4.2.192.194.table delete mode 100644 definitions/grib2/tables/5/4.2.192.195.table delete mode 100644 definitions/grib2/tables/5/4.2.192.196.table delete mode 100644 definitions/grib2/tables/5/4.2.192.197.table delete mode 100644 definitions/grib2/tables/5/4.2.192.198.table delete mode 100644 definitions/grib2/tables/5/4.2.192.199.table delete mode 100644 definitions/grib2/tables/5/4.2.192.2.table delete mode 100644 definitions/grib2/tables/5/4.2.192.20.table delete mode 100644 definitions/grib2/tables/5/4.2.192.200.table delete mode 100644 definitions/grib2/tables/5/4.2.192.201.table delete mode 100644 definitions/grib2/tables/5/4.2.192.202.table delete mode 100644 definitions/grib2/tables/5/4.2.192.203.table delete mode 100644 definitions/grib2/tables/5/4.2.192.204.table delete mode 100644 definitions/grib2/tables/5/4.2.192.205.table delete mode 100644 definitions/grib2/tables/5/4.2.192.206.table delete mode 100644 definitions/grib2/tables/5/4.2.192.207.table delete mode 100644 definitions/grib2/tables/5/4.2.192.208.table delete mode 100644 definitions/grib2/tables/5/4.2.192.209.table delete mode 100644 definitions/grib2/tables/5/4.2.192.21.table delete mode 100644 definitions/grib2/tables/5/4.2.192.210.table delete mode 100644 definitions/grib2/tables/5/4.2.192.211.table delete mode 100644 definitions/grib2/tables/5/4.2.192.212.table delete mode 100644 definitions/grib2/tables/5/4.2.192.213.table delete mode 100644 definitions/grib2/tables/5/4.2.192.214.table delete mode 100644 definitions/grib2/tables/5/4.2.192.215.table delete mode 100644 definitions/grib2/tables/5/4.2.192.216.table delete mode 100644 definitions/grib2/tables/5/4.2.192.217.table delete mode 100644 definitions/grib2/tables/5/4.2.192.218.table delete mode 100644 definitions/grib2/tables/5/4.2.192.219.table delete mode 100644 definitions/grib2/tables/5/4.2.192.22.table delete mode 100644 definitions/grib2/tables/5/4.2.192.220.table delete mode 100644 definitions/grib2/tables/5/4.2.192.221.table delete mode 100644 definitions/grib2/tables/5/4.2.192.222.table delete mode 100644 definitions/grib2/tables/5/4.2.192.223.table delete mode 100644 definitions/grib2/tables/5/4.2.192.224.table delete mode 100644 definitions/grib2/tables/5/4.2.192.225.table delete mode 100644 definitions/grib2/tables/5/4.2.192.226.table delete mode 100644 definitions/grib2/tables/5/4.2.192.227.table delete mode 100644 definitions/grib2/tables/5/4.2.192.228.table delete mode 100644 definitions/grib2/tables/5/4.2.192.229.table delete mode 100644 definitions/grib2/tables/5/4.2.192.23.table delete mode 100644 definitions/grib2/tables/5/4.2.192.230.table delete mode 100644 definitions/grib2/tables/5/4.2.192.231.table delete mode 100644 definitions/grib2/tables/5/4.2.192.232.table delete mode 100644 definitions/grib2/tables/5/4.2.192.233.table delete mode 100644 definitions/grib2/tables/5/4.2.192.234.table delete mode 100644 definitions/grib2/tables/5/4.2.192.235.table delete mode 100644 definitions/grib2/tables/5/4.2.192.236.table delete mode 100644 definitions/grib2/tables/5/4.2.192.237.table delete mode 100644 definitions/grib2/tables/5/4.2.192.238.table delete mode 100644 definitions/grib2/tables/5/4.2.192.239.table delete mode 100644 definitions/grib2/tables/5/4.2.192.24.table delete mode 100644 definitions/grib2/tables/5/4.2.192.240.table delete mode 100644 definitions/grib2/tables/5/4.2.192.241.table delete mode 100644 definitions/grib2/tables/5/4.2.192.242.table delete mode 100644 definitions/grib2/tables/5/4.2.192.243.table delete mode 100644 definitions/grib2/tables/5/4.2.192.244.table delete mode 100644 definitions/grib2/tables/5/4.2.192.245.table delete mode 100644 definitions/grib2/tables/5/4.2.192.246.table delete mode 100644 definitions/grib2/tables/5/4.2.192.247.table delete mode 100644 definitions/grib2/tables/5/4.2.192.248.table delete mode 100644 definitions/grib2/tables/5/4.2.192.249.table delete mode 100644 definitions/grib2/tables/5/4.2.192.25.table delete mode 100644 definitions/grib2/tables/5/4.2.192.250.table delete mode 100644 definitions/grib2/tables/5/4.2.192.251.table delete mode 100644 definitions/grib2/tables/5/4.2.192.252.table delete mode 100644 definitions/grib2/tables/5/4.2.192.253.table delete mode 100644 definitions/grib2/tables/5/4.2.192.254.table delete mode 100644 definitions/grib2/tables/5/4.2.192.255.table delete mode 100644 definitions/grib2/tables/5/4.2.192.26.table delete mode 100644 definitions/grib2/tables/5/4.2.192.27.table delete mode 100644 definitions/grib2/tables/5/4.2.192.28.table delete mode 100644 definitions/grib2/tables/5/4.2.192.29.table delete mode 100644 definitions/grib2/tables/5/4.2.192.3.table delete mode 100644 definitions/grib2/tables/5/4.2.192.30.table delete mode 100644 definitions/grib2/tables/5/4.2.192.31.table delete mode 100644 definitions/grib2/tables/5/4.2.192.32.table delete mode 100644 definitions/grib2/tables/5/4.2.192.33.table delete mode 100644 definitions/grib2/tables/5/4.2.192.34.table delete mode 100644 definitions/grib2/tables/5/4.2.192.35.table delete mode 100644 definitions/grib2/tables/5/4.2.192.36.table delete mode 100644 definitions/grib2/tables/5/4.2.192.37.table delete mode 100644 definitions/grib2/tables/5/4.2.192.38.table delete mode 100644 definitions/grib2/tables/5/4.2.192.39.table delete mode 100644 definitions/grib2/tables/5/4.2.192.4.table delete mode 100644 definitions/grib2/tables/5/4.2.192.40.table delete mode 100644 definitions/grib2/tables/5/4.2.192.41.table delete mode 100644 definitions/grib2/tables/5/4.2.192.42.table delete mode 100644 definitions/grib2/tables/5/4.2.192.43.table delete mode 100644 definitions/grib2/tables/5/4.2.192.44.table delete mode 100644 definitions/grib2/tables/5/4.2.192.45.table delete mode 100644 definitions/grib2/tables/5/4.2.192.46.table delete mode 100644 definitions/grib2/tables/5/4.2.192.47.table delete mode 100644 definitions/grib2/tables/5/4.2.192.48.table delete mode 100644 definitions/grib2/tables/5/4.2.192.49.table delete mode 100644 definitions/grib2/tables/5/4.2.192.5.table delete mode 100644 definitions/grib2/tables/5/4.2.192.50.table delete mode 100644 definitions/grib2/tables/5/4.2.192.51.table delete mode 100644 definitions/grib2/tables/5/4.2.192.52.table delete mode 100644 definitions/grib2/tables/5/4.2.192.53.table delete mode 100644 definitions/grib2/tables/5/4.2.192.54.table delete mode 100644 definitions/grib2/tables/5/4.2.192.55.table delete mode 100644 definitions/grib2/tables/5/4.2.192.56.table delete mode 100644 definitions/grib2/tables/5/4.2.192.57.table delete mode 100644 definitions/grib2/tables/5/4.2.192.58.table delete mode 100644 definitions/grib2/tables/5/4.2.192.59.table delete mode 100644 definitions/grib2/tables/5/4.2.192.6.table delete mode 100644 definitions/grib2/tables/5/4.2.192.60.table delete mode 100644 definitions/grib2/tables/5/4.2.192.61.table delete mode 100644 definitions/grib2/tables/5/4.2.192.62.table delete mode 100644 definitions/grib2/tables/5/4.2.192.63.table delete mode 100644 definitions/grib2/tables/5/4.2.192.64.table delete mode 100644 definitions/grib2/tables/5/4.2.192.65.table delete mode 100644 definitions/grib2/tables/5/4.2.192.66.table delete mode 100644 definitions/grib2/tables/5/4.2.192.67.table delete mode 100644 definitions/grib2/tables/5/4.2.192.68.table delete mode 100644 definitions/grib2/tables/5/4.2.192.69.table delete mode 100644 definitions/grib2/tables/5/4.2.192.7.table delete mode 100644 definitions/grib2/tables/5/4.2.192.70.table delete mode 100644 definitions/grib2/tables/5/4.2.192.71.table delete mode 100644 definitions/grib2/tables/5/4.2.192.72.table delete mode 100644 definitions/grib2/tables/5/4.2.192.73.table delete mode 100644 definitions/grib2/tables/5/4.2.192.74.table delete mode 100644 definitions/grib2/tables/5/4.2.192.75.table delete mode 100644 definitions/grib2/tables/5/4.2.192.76.table delete mode 100644 definitions/grib2/tables/5/4.2.192.77.table delete mode 100644 definitions/grib2/tables/5/4.2.192.78.table delete mode 100644 definitions/grib2/tables/5/4.2.192.79.table delete mode 100644 definitions/grib2/tables/5/4.2.192.8.table delete mode 100644 definitions/grib2/tables/5/4.2.192.80.table delete mode 100644 definitions/grib2/tables/5/4.2.192.81.table delete mode 100644 definitions/grib2/tables/5/4.2.192.82.table delete mode 100644 definitions/grib2/tables/5/4.2.192.83.table delete mode 100644 definitions/grib2/tables/5/4.2.192.84.table delete mode 100644 definitions/grib2/tables/5/4.2.192.85.table delete mode 100644 definitions/grib2/tables/5/4.2.192.86.table delete mode 100644 definitions/grib2/tables/5/4.2.192.87.table delete mode 100644 definitions/grib2/tables/5/4.2.192.88.table delete mode 100644 definitions/grib2/tables/5/4.2.192.89.table delete mode 100644 definitions/grib2/tables/5/4.2.192.9.table delete mode 100644 definitions/grib2/tables/5/4.2.192.90.table delete mode 100644 definitions/grib2/tables/5/4.2.192.91.table delete mode 100644 definitions/grib2/tables/5/4.2.192.92.table delete mode 100644 definitions/grib2/tables/5/4.2.192.93.table delete mode 100644 definitions/grib2/tables/5/4.2.192.94.table delete mode 100644 definitions/grib2/tables/5/4.2.192.95.table delete mode 100644 definitions/grib2/tables/5/4.2.192.96.table delete mode 100644 definitions/grib2/tables/5/4.2.192.97.table delete mode 100644 definitions/grib2/tables/5/4.2.192.98.table delete mode 100644 definitions/grib2/tables/5/4.2.192.99.table delete mode 100644 definitions/grib2/tables/6/4.1.192.table delete mode 100644 definitions/grib2/tables/6/4.2.192.0.table delete mode 100644 definitions/grib2/tables/6/4.2.192.1.table delete mode 100644 definitions/grib2/tables/6/4.2.192.10.table delete mode 100644 definitions/grib2/tables/6/4.2.192.100.table delete mode 100644 definitions/grib2/tables/6/4.2.192.101.table delete mode 100644 definitions/grib2/tables/6/4.2.192.102.table delete mode 100644 definitions/grib2/tables/6/4.2.192.103.table delete mode 100644 definitions/grib2/tables/6/4.2.192.104.table delete mode 100644 definitions/grib2/tables/6/4.2.192.105.table delete mode 100644 definitions/grib2/tables/6/4.2.192.106.table delete mode 100644 definitions/grib2/tables/6/4.2.192.107.table delete mode 100644 definitions/grib2/tables/6/4.2.192.108.table delete mode 100644 definitions/grib2/tables/6/4.2.192.109.table delete mode 100644 definitions/grib2/tables/6/4.2.192.11.table delete mode 100644 definitions/grib2/tables/6/4.2.192.110.table delete mode 100644 definitions/grib2/tables/6/4.2.192.111.table delete mode 100644 definitions/grib2/tables/6/4.2.192.112.table delete mode 100644 definitions/grib2/tables/6/4.2.192.113.table delete mode 100644 definitions/grib2/tables/6/4.2.192.114.table delete mode 100644 definitions/grib2/tables/6/4.2.192.115.table delete mode 100644 definitions/grib2/tables/6/4.2.192.116.table delete mode 100644 definitions/grib2/tables/6/4.2.192.117.table delete mode 100644 definitions/grib2/tables/6/4.2.192.118.table delete mode 100644 definitions/grib2/tables/6/4.2.192.119.table delete mode 100644 definitions/grib2/tables/6/4.2.192.12.table delete mode 100644 definitions/grib2/tables/6/4.2.192.120.table delete mode 100644 definitions/grib2/tables/6/4.2.192.121.table delete mode 100644 definitions/grib2/tables/6/4.2.192.122.table delete mode 100644 definitions/grib2/tables/6/4.2.192.123.table delete mode 100644 definitions/grib2/tables/6/4.2.192.124.table delete mode 100644 definitions/grib2/tables/6/4.2.192.125.table delete mode 100644 definitions/grib2/tables/6/4.2.192.126.table delete mode 100644 definitions/grib2/tables/6/4.2.192.127.table delete mode 100644 definitions/grib2/tables/6/4.2.192.128.table delete mode 100644 definitions/grib2/tables/6/4.2.192.129.table delete mode 100644 definitions/grib2/tables/6/4.2.192.13.table delete mode 100644 definitions/grib2/tables/6/4.2.192.130.table delete mode 100644 definitions/grib2/tables/6/4.2.192.131.table delete mode 100644 definitions/grib2/tables/6/4.2.192.132.table delete mode 100644 definitions/grib2/tables/6/4.2.192.133.table delete mode 100644 definitions/grib2/tables/6/4.2.192.134.table delete mode 100644 definitions/grib2/tables/6/4.2.192.135.table delete mode 100644 definitions/grib2/tables/6/4.2.192.136.table delete mode 100644 definitions/grib2/tables/6/4.2.192.137.table delete mode 100644 definitions/grib2/tables/6/4.2.192.138.table delete mode 100644 definitions/grib2/tables/6/4.2.192.139.table delete mode 100644 definitions/grib2/tables/6/4.2.192.14.table delete mode 100644 definitions/grib2/tables/6/4.2.192.140.table delete mode 100644 definitions/grib2/tables/6/4.2.192.141.table delete mode 100644 definitions/grib2/tables/6/4.2.192.142.table delete mode 100644 definitions/grib2/tables/6/4.2.192.143.table delete mode 100644 definitions/grib2/tables/6/4.2.192.144.table delete mode 100644 definitions/grib2/tables/6/4.2.192.145.table delete mode 100644 definitions/grib2/tables/6/4.2.192.146.table delete mode 100644 definitions/grib2/tables/6/4.2.192.147.table delete mode 100644 definitions/grib2/tables/6/4.2.192.148.table delete mode 100644 definitions/grib2/tables/6/4.2.192.149.table delete mode 100644 definitions/grib2/tables/6/4.2.192.15.table delete mode 100644 definitions/grib2/tables/6/4.2.192.150.table delete mode 100644 definitions/grib2/tables/6/4.2.192.151.table delete mode 100644 definitions/grib2/tables/6/4.2.192.152.table delete mode 100644 definitions/grib2/tables/6/4.2.192.153.table delete mode 100644 definitions/grib2/tables/6/4.2.192.154.table delete mode 100644 definitions/grib2/tables/6/4.2.192.155.table delete mode 100644 definitions/grib2/tables/6/4.2.192.156.table delete mode 100644 definitions/grib2/tables/6/4.2.192.157.table delete mode 100644 definitions/grib2/tables/6/4.2.192.158.table delete mode 100644 definitions/grib2/tables/6/4.2.192.159.table delete mode 100644 definitions/grib2/tables/6/4.2.192.16.table delete mode 100644 definitions/grib2/tables/6/4.2.192.160.table delete mode 100644 definitions/grib2/tables/6/4.2.192.161.table delete mode 100644 definitions/grib2/tables/6/4.2.192.162.table delete mode 100644 definitions/grib2/tables/6/4.2.192.163.table delete mode 100644 definitions/grib2/tables/6/4.2.192.164.table delete mode 100644 definitions/grib2/tables/6/4.2.192.165.table delete mode 100644 definitions/grib2/tables/6/4.2.192.166.table delete mode 100644 definitions/grib2/tables/6/4.2.192.167.table delete mode 100644 definitions/grib2/tables/6/4.2.192.168.table delete mode 100644 definitions/grib2/tables/6/4.2.192.169.table delete mode 100644 definitions/grib2/tables/6/4.2.192.17.table delete mode 100644 definitions/grib2/tables/6/4.2.192.170.table delete mode 100644 definitions/grib2/tables/6/4.2.192.171.table delete mode 100644 definitions/grib2/tables/6/4.2.192.172.table delete mode 100644 definitions/grib2/tables/6/4.2.192.173.table delete mode 100644 definitions/grib2/tables/6/4.2.192.174.table delete mode 100644 definitions/grib2/tables/6/4.2.192.175.table delete mode 100644 definitions/grib2/tables/6/4.2.192.176.table delete mode 100644 definitions/grib2/tables/6/4.2.192.177.table delete mode 100644 definitions/grib2/tables/6/4.2.192.178.table delete mode 100644 definitions/grib2/tables/6/4.2.192.179.table delete mode 100644 definitions/grib2/tables/6/4.2.192.18.table delete mode 100644 definitions/grib2/tables/6/4.2.192.180.table delete mode 100644 definitions/grib2/tables/6/4.2.192.181.table delete mode 100644 definitions/grib2/tables/6/4.2.192.182.table delete mode 100644 definitions/grib2/tables/6/4.2.192.183.table delete mode 100644 definitions/grib2/tables/6/4.2.192.184.table delete mode 100644 definitions/grib2/tables/6/4.2.192.185.table delete mode 100644 definitions/grib2/tables/6/4.2.192.186.table delete mode 100644 definitions/grib2/tables/6/4.2.192.187.table delete mode 100644 definitions/grib2/tables/6/4.2.192.188.table delete mode 100644 definitions/grib2/tables/6/4.2.192.189.table delete mode 100644 definitions/grib2/tables/6/4.2.192.19.table delete mode 100644 definitions/grib2/tables/6/4.2.192.190.table delete mode 100644 definitions/grib2/tables/6/4.2.192.191.table delete mode 100644 definitions/grib2/tables/6/4.2.192.192.table delete mode 100644 definitions/grib2/tables/6/4.2.192.193.table delete mode 100644 definitions/grib2/tables/6/4.2.192.194.table delete mode 100644 definitions/grib2/tables/6/4.2.192.195.table delete mode 100644 definitions/grib2/tables/6/4.2.192.196.table delete mode 100644 definitions/grib2/tables/6/4.2.192.197.table delete mode 100644 definitions/grib2/tables/6/4.2.192.198.table delete mode 100644 definitions/grib2/tables/6/4.2.192.199.table delete mode 100644 definitions/grib2/tables/6/4.2.192.2.table delete mode 100644 definitions/grib2/tables/6/4.2.192.20.table delete mode 100644 definitions/grib2/tables/6/4.2.192.200.table delete mode 100644 definitions/grib2/tables/6/4.2.192.201.table delete mode 100644 definitions/grib2/tables/6/4.2.192.202.table delete mode 100644 definitions/grib2/tables/6/4.2.192.203.table delete mode 100644 definitions/grib2/tables/6/4.2.192.204.table delete mode 100644 definitions/grib2/tables/6/4.2.192.205.table delete mode 100644 definitions/grib2/tables/6/4.2.192.206.table delete mode 100644 definitions/grib2/tables/6/4.2.192.207.table delete mode 100644 definitions/grib2/tables/6/4.2.192.208.table delete mode 100644 definitions/grib2/tables/6/4.2.192.209.table delete mode 100644 definitions/grib2/tables/6/4.2.192.21.table delete mode 100644 definitions/grib2/tables/6/4.2.192.210.table delete mode 100644 definitions/grib2/tables/6/4.2.192.211.table delete mode 100644 definitions/grib2/tables/6/4.2.192.212.table delete mode 100644 definitions/grib2/tables/6/4.2.192.213.table delete mode 100644 definitions/grib2/tables/6/4.2.192.214.table delete mode 100644 definitions/grib2/tables/6/4.2.192.215.table delete mode 100644 definitions/grib2/tables/6/4.2.192.216.table delete mode 100644 definitions/grib2/tables/6/4.2.192.217.table delete mode 100644 definitions/grib2/tables/6/4.2.192.218.table delete mode 100644 definitions/grib2/tables/6/4.2.192.219.table delete mode 100644 definitions/grib2/tables/6/4.2.192.22.table delete mode 100644 definitions/grib2/tables/6/4.2.192.220.table delete mode 100644 definitions/grib2/tables/6/4.2.192.221.table delete mode 100644 definitions/grib2/tables/6/4.2.192.222.table delete mode 100644 definitions/grib2/tables/6/4.2.192.223.table delete mode 100644 definitions/grib2/tables/6/4.2.192.224.table delete mode 100644 definitions/grib2/tables/6/4.2.192.225.table delete mode 100644 definitions/grib2/tables/6/4.2.192.226.table delete mode 100644 definitions/grib2/tables/6/4.2.192.227.table delete mode 100644 definitions/grib2/tables/6/4.2.192.228.table delete mode 100644 definitions/grib2/tables/6/4.2.192.229.table delete mode 100644 definitions/grib2/tables/6/4.2.192.23.table delete mode 100644 definitions/grib2/tables/6/4.2.192.230.table delete mode 100644 definitions/grib2/tables/6/4.2.192.231.table delete mode 100644 definitions/grib2/tables/6/4.2.192.232.table delete mode 100644 definitions/grib2/tables/6/4.2.192.233.table delete mode 100644 definitions/grib2/tables/6/4.2.192.234.table delete mode 100644 definitions/grib2/tables/6/4.2.192.235.table delete mode 100644 definitions/grib2/tables/6/4.2.192.236.table delete mode 100644 definitions/grib2/tables/6/4.2.192.237.table delete mode 100644 definitions/grib2/tables/6/4.2.192.238.table delete mode 100644 definitions/grib2/tables/6/4.2.192.239.table delete mode 100644 definitions/grib2/tables/6/4.2.192.24.table delete mode 100644 definitions/grib2/tables/6/4.2.192.240.table delete mode 100644 definitions/grib2/tables/6/4.2.192.241.table delete mode 100644 definitions/grib2/tables/6/4.2.192.242.table delete mode 100644 definitions/grib2/tables/6/4.2.192.243.table delete mode 100644 definitions/grib2/tables/6/4.2.192.244.table delete mode 100644 definitions/grib2/tables/6/4.2.192.245.table delete mode 100644 definitions/grib2/tables/6/4.2.192.246.table delete mode 100644 definitions/grib2/tables/6/4.2.192.247.table delete mode 100644 definitions/grib2/tables/6/4.2.192.248.table delete mode 100644 definitions/grib2/tables/6/4.2.192.249.table delete mode 100644 definitions/grib2/tables/6/4.2.192.25.table delete mode 100644 definitions/grib2/tables/6/4.2.192.250.table delete mode 100644 definitions/grib2/tables/6/4.2.192.251.table delete mode 100644 definitions/grib2/tables/6/4.2.192.252.table delete mode 100644 definitions/grib2/tables/6/4.2.192.253.table delete mode 100644 definitions/grib2/tables/6/4.2.192.254.table delete mode 100644 definitions/grib2/tables/6/4.2.192.255.table delete mode 100644 definitions/grib2/tables/6/4.2.192.26.table delete mode 100644 definitions/grib2/tables/6/4.2.192.27.table delete mode 100644 definitions/grib2/tables/6/4.2.192.28.table delete mode 100644 definitions/grib2/tables/6/4.2.192.29.table delete mode 100644 definitions/grib2/tables/6/4.2.192.3.table delete mode 100644 definitions/grib2/tables/6/4.2.192.30.table delete mode 100644 definitions/grib2/tables/6/4.2.192.31.table delete mode 100644 definitions/grib2/tables/6/4.2.192.32.table delete mode 100644 definitions/grib2/tables/6/4.2.192.33.table delete mode 100644 definitions/grib2/tables/6/4.2.192.34.table delete mode 100644 definitions/grib2/tables/6/4.2.192.35.table delete mode 100644 definitions/grib2/tables/6/4.2.192.36.table delete mode 100644 definitions/grib2/tables/6/4.2.192.37.table delete mode 100644 definitions/grib2/tables/6/4.2.192.38.table delete mode 100644 definitions/grib2/tables/6/4.2.192.39.table delete mode 100644 definitions/grib2/tables/6/4.2.192.4.table delete mode 100644 definitions/grib2/tables/6/4.2.192.40.table delete mode 100644 definitions/grib2/tables/6/4.2.192.41.table delete mode 100644 definitions/grib2/tables/6/4.2.192.42.table delete mode 100644 definitions/grib2/tables/6/4.2.192.43.table delete mode 100644 definitions/grib2/tables/6/4.2.192.44.table delete mode 100644 definitions/grib2/tables/6/4.2.192.45.table delete mode 100644 definitions/grib2/tables/6/4.2.192.46.table delete mode 100644 definitions/grib2/tables/6/4.2.192.47.table delete mode 100644 definitions/grib2/tables/6/4.2.192.48.table delete mode 100644 definitions/grib2/tables/6/4.2.192.49.table delete mode 100644 definitions/grib2/tables/6/4.2.192.5.table delete mode 100644 definitions/grib2/tables/6/4.2.192.50.table delete mode 100644 definitions/grib2/tables/6/4.2.192.51.table delete mode 100644 definitions/grib2/tables/6/4.2.192.52.table delete mode 100644 definitions/grib2/tables/6/4.2.192.53.table delete mode 100644 definitions/grib2/tables/6/4.2.192.54.table delete mode 100644 definitions/grib2/tables/6/4.2.192.55.table delete mode 100644 definitions/grib2/tables/6/4.2.192.56.table delete mode 100644 definitions/grib2/tables/6/4.2.192.57.table delete mode 100644 definitions/grib2/tables/6/4.2.192.58.table delete mode 100644 definitions/grib2/tables/6/4.2.192.59.table delete mode 100644 definitions/grib2/tables/6/4.2.192.6.table delete mode 100644 definitions/grib2/tables/6/4.2.192.60.table delete mode 100644 definitions/grib2/tables/6/4.2.192.61.table delete mode 100644 definitions/grib2/tables/6/4.2.192.62.table delete mode 100644 definitions/grib2/tables/6/4.2.192.63.table delete mode 100644 definitions/grib2/tables/6/4.2.192.64.table delete mode 100644 definitions/grib2/tables/6/4.2.192.65.table delete mode 100644 definitions/grib2/tables/6/4.2.192.66.table delete mode 100644 definitions/grib2/tables/6/4.2.192.67.table delete mode 100644 definitions/grib2/tables/6/4.2.192.68.table delete mode 100644 definitions/grib2/tables/6/4.2.192.69.table delete mode 100644 definitions/grib2/tables/6/4.2.192.7.table delete mode 100644 definitions/grib2/tables/6/4.2.192.70.table delete mode 100644 definitions/grib2/tables/6/4.2.192.71.table delete mode 100644 definitions/grib2/tables/6/4.2.192.72.table delete mode 100644 definitions/grib2/tables/6/4.2.192.73.table delete mode 100644 definitions/grib2/tables/6/4.2.192.74.table delete mode 100644 definitions/grib2/tables/6/4.2.192.75.table delete mode 100644 definitions/grib2/tables/6/4.2.192.76.table delete mode 100644 definitions/grib2/tables/6/4.2.192.77.table delete mode 100644 definitions/grib2/tables/6/4.2.192.78.table delete mode 100644 definitions/grib2/tables/6/4.2.192.79.table delete mode 100644 definitions/grib2/tables/6/4.2.192.8.table delete mode 100644 definitions/grib2/tables/6/4.2.192.80.table delete mode 100644 definitions/grib2/tables/6/4.2.192.81.table delete mode 100644 definitions/grib2/tables/6/4.2.192.82.table delete mode 100644 definitions/grib2/tables/6/4.2.192.83.table delete mode 100644 definitions/grib2/tables/6/4.2.192.84.table delete mode 100644 definitions/grib2/tables/6/4.2.192.85.table delete mode 100644 definitions/grib2/tables/6/4.2.192.86.table delete mode 100644 definitions/grib2/tables/6/4.2.192.87.table delete mode 100644 definitions/grib2/tables/6/4.2.192.88.table delete mode 100644 definitions/grib2/tables/6/4.2.192.89.table delete mode 100644 definitions/grib2/tables/6/4.2.192.9.table delete mode 100644 definitions/grib2/tables/6/4.2.192.90.table delete mode 100644 definitions/grib2/tables/6/4.2.192.91.table delete mode 100644 definitions/grib2/tables/6/4.2.192.92.table delete mode 100644 definitions/grib2/tables/6/4.2.192.93.table delete mode 100644 definitions/grib2/tables/6/4.2.192.94.table delete mode 100644 definitions/grib2/tables/6/4.2.192.95.table delete mode 100644 definitions/grib2/tables/6/4.2.192.96.table delete mode 100644 definitions/grib2/tables/6/4.2.192.97.table delete mode 100644 definitions/grib2/tables/6/4.2.192.98.table delete mode 100644 definitions/grib2/tables/6/4.2.192.99.table delete mode 100644 definitions/grib2/tables/7/4.1.192.table delete mode 100644 definitions/grib2/tables/7/4.2.192.0.table delete mode 100644 definitions/grib2/tables/7/4.2.192.1.table delete mode 100644 definitions/grib2/tables/7/4.2.192.10.table delete mode 100644 definitions/grib2/tables/7/4.2.192.100.table delete mode 100644 definitions/grib2/tables/7/4.2.192.101.table delete mode 100644 definitions/grib2/tables/7/4.2.192.102.table delete mode 100644 definitions/grib2/tables/7/4.2.192.103.table delete mode 100644 definitions/grib2/tables/7/4.2.192.104.table delete mode 100644 definitions/grib2/tables/7/4.2.192.105.table delete mode 100644 definitions/grib2/tables/7/4.2.192.106.table delete mode 100644 definitions/grib2/tables/7/4.2.192.107.table delete mode 100644 definitions/grib2/tables/7/4.2.192.108.table delete mode 100644 definitions/grib2/tables/7/4.2.192.109.table delete mode 100644 definitions/grib2/tables/7/4.2.192.11.table delete mode 100644 definitions/grib2/tables/7/4.2.192.110.table delete mode 100644 definitions/grib2/tables/7/4.2.192.111.table delete mode 100644 definitions/grib2/tables/7/4.2.192.112.table delete mode 100644 definitions/grib2/tables/7/4.2.192.113.table delete mode 100644 definitions/grib2/tables/7/4.2.192.114.table delete mode 100644 definitions/grib2/tables/7/4.2.192.115.table delete mode 100644 definitions/grib2/tables/7/4.2.192.116.table delete mode 100644 definitions/grib2/tables/7/4.2.192.117.table delete mode 100644 definitions/grib2/tables/7/4.2.192.118.table delete mode 100644 definitions/grib2/tables/7/4.2.192.119.table delete mode 100644 definitions/grib2/tables/7/4.2.192.12.table delete mode 100644 definitions/grib2/tables/7/4.2.192.120.table delete mode 100644 definitions/grib2/tables/7/4.2.192.121.table delete mode 100644 definitions/grib2/tables/7/4.2.192.122.table delete mode 100644 definitions/grib2/tables/7/4.2.192.123.table delete mode 100644 definitions/grib2/tables/7/4.2.192.124.table delete mode 100644 definitions/grib2/tables/7/4.2.192.125.table delete mode 100644 definitions/grib2/tables/7/4.2.192.126.table delete mode 100644 definitions/grib2/tables/7/4.2.192.127.table delete mode 100644 definitions/grib2/tables/7/4.2.192.128.table delete mode 100644 definitions/grib2/tables/7/4.2.192.129.table delete mode 100644 definitions/grib2/tables/7/4.2.192.13.table delete mode 100644 definitions/grib2/tables/7/4.2.192.130.table delete mode 100644 definitions/grib2/tables/7/4.2.192.131.table delete mode 100644 definitions/grib2/tables/7/4.2.192.132.table delete mode 100644 definitions/grib2/tables/7/4.2.192.133.table delete mode 100644 definitions/grib2/tables/7/4.2.192.134.table delete mode 100644 definitions/grib2/tables/7/4.2.192.135.table delete mode 100644 definitions/grib2/tables/7/4.2.192.136.table delete mode 100644 definitions/grib2/tables/7/4.2.192.137.table delete mode 100644 definitions/grib2/tables/7/4.2.192.138.table delete mode 100644 definitions/grib2/tables/7/4.2.192.139.table delete mode 100644 definitions/grib2/tables/7/4.2.192.14.table delete mode 100644 definitions/grib2/tables/7/4.2.192.140.table delete mode 100644 definitions/grib2/tables/7/4.2.192.141.table delete mode 100644 definitions/grib2/tables/7/4.2.192.142.table delete mode 100644 definitions/grib2/tables/7/4.2.192.143.table delete mode 100644 definitions/grib2/tables/7/4.2.192.144.table delete mode 100644 definitions/grib2/tables/7/4.2.192.145.table delete mode 100644 definitions/grib2/tables/7/4.2.192.146.table delete mode 100644 definitions/grib2/tables/7/4.2.192.147.table delete mode 100644 definitions/grib2/tables/7/4.2.192.148.table delete mode 100644 definitions/grib2/tables/7/4.2.192.149.table delete mode 100644 definitions/grib2/tables/7/4.2.192.15.table delete mode 100644 definitions/grib2/tables/7/4.2.192.150.table delete mode 100644 definitions/grib2/tables/7/4.2.192.151.table delete mode 100644 definitions/grib2/tables/7/4.2.192.152.table delete mode 100644 definitions/grib2/tables/7/4.2.192.153.table delete mode 100644 definitions/grib2/tables/7/4.2.192.154.table delete mode 100644 definitions/grib2/tables/7/4.2.192.155.table delete mode 100644 definitions/grib2/tables/7/4.2.192.156.table delete mode 100644 definitions/grib2/tables/7/4.2.192.157.table delete mode 100644 definitions/grib2/tables/7/4.2.192.158.table delete mode 100644 definitions/grib2/tables/7/4.2.192.159.table delete mode 100644 definitions/grib2/tables/7/4.2.192.16.table delete mode 100644 definitions/grib2/tables/7/4.2.192.160.table delete mode 100644 definitions/grib2/tables/7/4.2.192.161.table delete mode 100644 definitions/grib2/tables/7/4.2.192.162.table delete mode 100644 definitions/grib2/tables/7/4.2.192.163.table delete mode 100644 definitions/grib2/tables/7/4.2.192.164.table delete mode 100644 definitions/grib2/tables/7/4.2.192.165.table delete mode 100644 definitions/grib2/tables/7/4.2.192.166.table delete mode 100644 definitions/grib2/tables/7/4.2.192.167.table delete mode 100644 definitions/grib2/tables/7/4.2.192.168.table delete mode 100644 definitions/grib2/tables/7/4.2.192.169.table delete mode 100644 definitions/grib2/tables/7/4.2.192.17.table delete mode 100644 definitions/grib2/tables/7/4.2.192.170.table delete mode 100644 definitions/grib2/tables/7/4.2.192.171.table delete mode 100644 definitions/grib2/tables/7/4.2.192.172.table delete mode 100644 definitions/grib2/tables/7/4.2.192.173.table delete mode 100644 definitions/grib2/tables/7/4.2.192.174.table delete mode 100644 definitions/grib2/tables/7/4.2.192.175.table delete mode 100644 definitions/grib2/tables/7/4.2.192.176.table delete mode 100644 definitions/grib2/tables/7/4.2.192.177.table delete mode 100644 definitions/grib2/tables/7/4.2.192.178.table delete mode 100644 definitions/grib2/tables/7/4.2.192.179.table delete mode 100644 definitions/grib2/tables/7/4.2.192.18.table delete mode 100644 definitions/grib2/tables/7/4.2.192.180.table delete mode 100644 definitions/grib2/tables/7/4.2.192.181.table delete mode 100644 definitions/grib2/tables/7/4.2.192.182.table delete mode 100644 definitions/grib2/tables/7/4.2.192.183.table delete mode 100644 definitions/grib2/tables/7/4.2.192.184.table delete mode 100644 definitions/grib2/tables/7/4.2.192.185.table delete mode 100644 definitions/grib2/tables/7/4.2.192.186.table delete mode 100644 definitions/grib2/tables/7/4.2.192.187.table delete mode 100644 definitions/grib2/tables/7/4.2.192.188.table delete mode 100644 definitions/grib2/tables/7/4.2.192.189.table delete mode 100644 definitions/grib2/tables/7/4.2.192.19.table delete mode 100644 definitions/grib2/tables/7/4.2.192.190.table delete mode 100644 definitions/grib2/tables/7/4.2.192.191.table delete mode 100644 definitions/grib2/tables/7/4.2.192.192.table delete mode 100644 definitions/grib2/tables/7/4.2.192.193.table delete mode 100644 definitions/grib2/tables/7/4.2.192.194.table delete mode 100644 definitions/grib2/tables/7/4.2.192.195.table delete mode 100644 definitions/grib2/tables/7/4.2.192.196.table delete mode 100644 definitions/grib2/tables/7/4.2.192.197.table delete mode 100644 definitions/grib2/tables/7/4.2.192.198.table delete mode 100644 definitions/grib2/tables/7/4.2.192.199.table delete mode 100644 definitions/grib2/tables/7/4.2.192.2.table delete mode 100644 definitions/grib2/tables/7/4.2.192.20.table delete mode 100644 definitions/grib2/tables/7/4.2.192.200.table delete mode 100644 definitions/grib2/tables/7/4.2.192.201.table delete mode 100644 definitions/grib2/tables/7/4.2.192.202.table delete mode 100644 definitions/grib2/tables/7/4.2.192.203.table delete mode 100644 definitions/grib2/tables/7/4.2.192.204.table delete mode 100644 definitions/grib2/tables/7/4.2.192.205.table delete mode 100644 definitions/grib2/tables/7/4.2.192.206.table delete mode 100644 definitions/grib2/tables/7/4.2.192.207.table delete mode 100644 definitions/grib2/tables/7/4.2.192.208.table delete mode 100644 definitions/grib2/tables/7/4.2.192.209.table delete mode 100644 definitions/grib2/tables/7/4.2.192.21.table delete mode 100644 definitions/grib2/tables/7/4.2.192.210.table delete mode 100644 definitions/grib2/tables/7/4.2.192.211.table delete mode 100644 definitions/grib2/tables/7/4.2.192.212.table delete mode 100644 definitions/grib2/tables/7/4.2.192.213.table delete mode 100644 definitions/grib2/tables/7/4.2.192.214.table delete mode 100644 definitions/grib2/tables/7/4.2.192.215.table delete mode 100644 definitions/grib2/tables/7/4.2.192.216.table delete mode 100644 definitions/grib2/tables/7/4.2.192.217.table delete mode 100644 definitions/grib2/tables/7/4.2.192.218.table delete mode 100644 definitions/grib2/tables/7/4.2.192.219.table delete mode 100644 definitions/grib2/tables/7/4.2.192.22.table delete mode 100644 definitions/grib2/tables/7/4.2.192.220.table delete mode 100644 definitions/grib2/tables/7/4.2.192.221.table delete mode 100644 definitions/grib2/tables/7/4.2.192.222.table delete mode 100644 definitions/grib2/tables/7/4.2.192.223.table delete mode 100644 definitions/grib2/tables/7/4.2.192.224.table delete mode 100644 definitions/grib2/tables/7/4.2.192.225.table delete mode 100644 definitions/grib2/tables/7/4.2.192.226.table delete mode 100644 definitions/grib2/tables/7/4.2.192.227.table delete mode 100644 definitions/grib2/tables/7/4.2.192.228.table delete mode 100644 definitions/grib2/tables/7/4.2.192.229.table delete mode 100644 definitions/grib2/tables/7/4.2.192.23.table delete mode 100644 definitions/grib2/tables/7/4.2.192.230.table delete mode 100644 definitions/grib2/tables/7/4.2.192.231.table delete mode 100644 definitions/grib2/tables/7/4.2.192.232.table delete mode 100644 definitions/grib2/tables/7/4.2.192.233.table delete mode 100644 definitions/grib2/tables/7/4.2.192.234.table delete mode 100644 definitions/grib2/tables/7/4.2.192.235.table delete mode 100644 definitions/grib2/tables/7/4.2.192.236.table delete mode 100644 definitions/grib2/tables/7/4.2.192.237.table delete mode 100644 definitions/grib2/tables/7/4.2.192.238.table delete mode 100644 definitions/grib2/tables/7/4.2.192.239.table delete mode 100644 definitions/grib2/tables/7/4.2.192.24.table delete mode 100644 definitions/grib2/tables/7/4.2.192.240.table delete mode 100644 definitions/grib2/tables/7/4.2.192.241.table delete mode 100644 definitions/grib2/tables/7/4.2.192.242.table delete mode 100644 definitions/grib2/tables/7/4.2.192.243.table delete mode 100644 definitions/grib2/tables/7/4.2.192.244.table delete mode 100644 definitions/grib2/tables/7/4.2.192.245.table delete mode 100644 definitions/grib2/tables/7/4.2.192.246.table delete mode 100644 definitions/grib2/tables/7/4.2.192.247.table delete mode 100644 definitions/grib2/tables/7/4.2.192.248.table delete mode 100644 definitions/grib2/tables/7/4.2.192.249.table delete mode 100644 definitions/grib2/tables/7/4.2.192.25.table delete mode 100644 definitions/grib2/tables/7/4.2.192.250.table delete mode 100644 definitions/grib2/tables/7/4.2.192.251.table delete mode 100644 definitions/grib2/tables/7/4.2.192.252.table delete mode 100644 definitions/grib2/tables/7/4.2.192.253.table delete mode 100644 definitions/grib2/tables/7/4.2.192.254.table delete mode 100644 definitions/grib2/tables/7/4.2.192.255.table delete mode 100644 definitions/grib2/tables/7/4.2.192.26.table delete mode 100644 definitions/grib2/tables/7/4.2.192.27.table delete mode 100644 definitions/grib2/tables/7/4.2.192.28.table delete mode 100644 definitions/grib2/tables/7/4.2.192.29.table delete mode 100644 definitions/grib2/tables/7/4.2.192.3.table delete mode 100644 definitions/grib2/tables/7/4.2.192.30.table delete mode 100644 definitions/grib2/tables/7/4.2.192.31.table delete mode 100644 definitions/grib2/tables/7/4.2.192.32.table delete mode 100644 definitions/grib2/tables/7/4.2.192.33.table delete mode 100644 definitions/grib2/tables/7/4.2.192.34.table delete mode 100644 definitions/grib2/tables/7/4.2.192.35.table delete mode 100644 definitions/grib2/tables/7/4.2.192.36.table delete mode 100644 definitions/grib2/tables/7/4.2.192.37.table delete mode 100644 definitions/grib2/tables/7/4.2.192.38.table delete mode 100644 definitions/grib2/tables/7/4.2.192.39.table delete mode 100644 definitions/grib2/tables/7/4.2.192.4.table delete mode 100644 definitions/grib2/tables/7/4.2.192.40.table delete mode 100644 definitions/grib2/tables/7/4.2.192.41.table delete mode 100644 definitions/grib2/tables/7/4.2.192.42.table delete mode 100644 definitions/grib2/tables/7/4.2.192.43.table delete mode 100644 definitions/grib2/tables/7/4.2.192.44.table delete mode 100644 definitions/grib2/tables/7/4.2.192.45.table delete mode 100644 definitions/grib2/tables/7/4.2.192.46.table delete mode 100644 definitions/grib2/tables/7/4.2.192.47.table delete mode 100644 definitions/grib2/tables/7/4.2.192.48.table delete mode 100644 definitions/grib2/tables/7/4.2.192.49.table delete mode 100644 definitions/grib2/tables/7/4.2.192.5.table delete mode 100644 definitions/grib2/tables/7/4.2.192.50.table delete mode 100644 definitions/grib2/tables/7/4.2.192.51.table delete mode 100644 definitions/grib2/tables/7/4.2.192.52.table delete mode 100644 definitions/grib2/tables/7/4.2.192.53.table delete mode 100644 definitions/grib2/tables/7/4.2.192.54.table delete mode 100644 definitions/grib2/tables/7/4.2.192.55.table delete mode 100644 definitions/grib2/tables/7/4.2.192.56.table delete mode 100644 definitions/grib2/tables/7/4.2.192.57.table delete mode 100644 definitions/grib2/tables/7/4.2.192.58.table delete mode 100644 definitions/grib2/tables/7/4.2.192.59.table delete mode 100644 definitions/grib2/tables/7/4.2.192.6.table delete mode 100644 definitions/grib2/tables/7/4.2.192.60.table delete mode 100644 definitions/grib2/tables/7/4.2.192.61.table delete mode 100644 definitions/grib2/tables/7/4.2.192.62.table delete mode 100644 definitions/grib2/tables/7/4.2.192.63.table delete mode 100644 definitions/grib2/tables/7/4.2.192.64.table delete mode 100644 definitions/grib2/tables/7/4.2.192.65.table delete mode 100644 definitions/grib2/tables/7/4.2.192.66.table delete mode 100644 definitions/grib2/tables/7/4.2.192.67.table delete mode 100644 definitions/grib2/tables/7/4.2.192.68.table delete mode 100644 definitions/grib2/tables/7/4.2.192.69.table delete mode 100644 definitions/grib2/tables/7/4.2.192.7.table delete mode 100644 definitions/grib2/tables/7/4.2.192.70.table delete mode 100644 definitions/grib2/tables/7/4.2.192.71.table delete mode 100644 definitions/grib2/tables/7/4.2.192.72.table delete mode 100644 definitions/grib2/tables/7/4.2.192.73.table delete mode 100644 definitions/grib2/tables/7/4.2.192.74.table delete mode 100644 definitions/grib2/tables/7/4.2.192.75.table delete mode 100644 definitions/grib2/tables/7/4.2.192.76.table delete mode 100644 definitions/grib2/tables/7/4.2.192.77.table delete mode 100644 definitions/grib2/tables/7/4.2.192.78.table delete mode 100644 definitions/grib2/tables/7/4.2.192.79.table delete mode 100644 definitions/grib2/tables/7/4.2.192.8.table delete mode 100644 definitions/grib2/tables/7/4.2.192.80.table delete mode 100644 definitions/grib2/tables/7/4.2.192.81.table delete mode 100644 definitions/grib2/tables/7/4.2.192.82.table delete mode 100644 definitions/grib2/tables/7/4.2.192.83.table delete mode 100644 definitions/grib2/tables/7/4.2.192.84.table delete mode 100644 definitions/grib2/tables/7/4.2.192.85.table delete mode 100644 definitions/grib2/tables/7/4.2.192.86.table delete mode 100644 definitions/grib2/tables/7/4.2.192.87.table delete mode 100644 definitions/grib2/tables/7/4.2.192.88.table delete mode 100644 definitions/grib2/tables/7/4.2.192.89.table delete mode 100644 definitions/grib2/tables/7/4.2.192.9.table delete mode 100644 definitions/grib2/tables/7/4.2.192.90.table delete mode 100644 definitions/grib2/tables/7/4.2.192.91.table delete mode 100644 definitions/grib2/tables/7/4.2.192.92.table delete mode 100644 definitions/grib2/tables/7/4.2.192.93.table delete mode 100644 definitions/grib2/tables/7/4.2.192.94.table delete mode 100644 definitions/grib2/tables/7/4.2.192.95.table delete mode 100644 definitions/grib2/tables/7/4.2.192.96.table delete mode 100644 definitions/grib2/tables/7/4.2.192.97.table delete mode 100644 definitions/grib2/tables/7/4.2.192.98.table delete mode 100644 definitions/grib2/tables/7/4.2.192.99.table delete mode 100644 definitions/grib2/tables/8/4.1.192.table delete mode 100644 definitions/grib2/tables/8/4.2.192.0.table delete mode 100644 definitions/grib2/tables/8/4.2.192.1.table delete mode 100644 definitions/grib2/tables/8/4.2.192.10.table delete mode 100644 definitions/grib2/tables/8/4.2.192.100.table delete mode 100644 definitions/grib2/tables/8/4.2.192.101.table delete mode 100644 definitions/grib2/tables/8/4.2.192.102.table delete mode 100644 definitions/grib2/tables/8/4.2.192.103.table delete mode 100644 definitions/grib2/tables/8/4.2.192.104.table delete mode 100644 definitions/grib2/tables/8/4.2.192.105.table delete mode 100644 definitions/grib2/tables/8/4.2.192.106.table delete mode 100644 definitions/grib2/tables/8/4.2.192.107.table delete mode 100644 definitions/grib2/tables/8/4.2.192.108.table delete mode 100644 definitions/grib2/tables/8/4.2.192.109.table delete mode 100644 definitions/grib2/tables/8/4.2.192.11.table delete mode 100644 definitions/grib2/tables/8/4.2.192.110.table delete mode 100644 definitions/grib2/tables/8/4.2.192.111.table delete mode 100644 definitions/grib2/tables/8/4.2.192.112.table delete mode 100644 definitions/grib2/tables/8/4.2.192.113.table delete mode 100644 definitions/grib2/tables/8/4.2.192.114.table delete mode 100644 definitions/grib2/tables/8/4.2.192.115.table delete mode 100644 definitions/grib2/tables/8/4.2.192.116.table delete mode 100644 definitions/grib2/tables/8/4.2.192.117.table delete mode 100644 definitions/grib2/tables/8/4.2.192.118.table delete mode 100644 definitions/grib2/tables/8/4.2.192.119.table delete mode 100644 definitions/grib2/tables/8/4.2.192.12.table delete mode 100644 definitions/grib2/tables/8/4.2.192.120.table delete mode 100644 definitions/grib2/tables/8/4.2.192.121.table delete mode 100644 definitions/grib2/tables/8/4.2.192.122.table delete mode 100644 definitions/grib2/tables/8/4.2.192.123.table delete mode 100644 definitions/grib2/tables/8/4.2.192.124.table delete mode 100644 definitions/grib2/tables/8/4.2.192.125.table delete mode 100644 definitions/grib2/tables/8/4.2.192.126.table delete mode 100644 definitions/grib2/tables/8/4.2.192.127.table delete mode 100644 definitions/grib2/tables/8/4.2.192.128.table delete mode 100644 definitions/grib2/tables/8/4.2.192.129.table delete mode 100644 definitions/grib2/tables/8/4.2.192.13.table delete mode 100644 definitions/grib2/tables/8/4.2.192.130.table delete mode 100644 definitions/grib2/tables/8/4.2.192.131.table delete mode 100644 definitions/grib2/tables/8/4.2.192.132.table delete mode 100644 definitions/grib2/tables/8/4.2.192.133.table delete mode 100644 definitions/grib2/tables/8/4.2.192.134.table delete mode 100644 definitions/grib2/tables/8/4.2.192.135.table delete mode 100644 definitions/grib2/tables/8/4.2.192.136.table delete mode 100644 definitions/grib2/tables/8/4.2.192.137.table delete mode 100644 definitions/grib2/tables/8/4.2.192.138.table delete mode 100644 definitions/grib2/tables/8/4.2.192.139.table delete mode 100644 definitions/grib2/tables/8/4.2.192.14.table delete mode 100644 definitions/grib2/tables/8/4.2.192.140.table delete mode 100644 definitions/grib2/tables/8/4.2.192.141.table delete mode 100644 definitions/grib2/tables/8/4.2.192.142.table delete mode 100644 definitions/grib2/tables/8/4.2.192.143.table delete mode 100644 definitions/grib2/tables/8/4.2.192.144.table delete mode 100644 definitions/grib2/tables/8/4.2.192.145.table delete mode 100644 definitions/grib2/tables/8/4.2.192.146.table delete mode 100644 definitions/grib2/tables/8/4.2.192.147.table delete mode 100644 definitions/grib2/tables/8/4.2.192.148.table delete mode 100644 definitions/grib2/tables/8/4.2.192.149.table delete mode 100644 definitions/grib2/tables/8/4.2.192.15.table delete mode 100644 definitions/grib2/tables/8/4.2.192.150.table delete mode 100644 definitions/grib2/tables/8/4.2.192.151.table delete mode 100644 definitions/grib2/tables/8/4.2.192.152.table delete mode 100644 definitions/grib2/tables/8/4.2.192.153.table delete mode 100644 definitions/grib2/tables/8/4.2.192.154.table delete mode 100644 definitions/grib2/tables/8/4.2.192.155.table delete mode 100644 definitions/grib2/tables/8/4.2.192.156.table delete mode 100644 definitions/grib2/tables/8/4.2.192.157.table delete mode 100644 definitions/grib2/tables/8/4.2.192.158.table delete mode 100644 definitions/grib2/tables/8/4.2.192.159.table delete mode 100644 definitions/grib2/tables/8/4.2.192.16.table delete mode 100644 definitions/grib2/tables/8/4.2.192.160.table delete mode 100644 definitions/grib2/tables/8/4.2.192.161.table delete mode 100644 definitions/grib2/tables/8/4.2.192.162.table delete mode 100644 definitions/grib2/tables/8/4.2.192.163.table delete mode 100644 definitions/grib2/tables/8/4.2.192.164.table delete mode 100644 definitions/grib2/tables/8/4.2.192.165.table delete mode 100644 definitions/grib2/tables/8/4.2.192.166.table delete mode 100644 definitions/grib2/tables/8/4.2.192.167.table delete mode 100644 definitions/grib2/tables/8/4.2.192.168.table delete mode 100644 definitions/grib2/tables/8/4.2.192.169.table delete mode 100644 definitions/grib2/tables/8/4.2.192.17.table delete mode 100644 definitions/grib2/tables/8/4.2.192.170.table delete mode 100644 definitions/grib2/tables/8/4.2.192.171.table delete mode 100644 definitions/grib2/tables/8/4.2.192.172.table delete mode 100644 definitions/grib2/tables/8/4.2.192.173.table delete mode 100644 definitions/grib2/tables/8/4.2.192.174.table delete mode 100644 definitions/grib2/tables/8/4.2.192.175.table delete mode 100644 definitions/grib2/tables/8/4.2.192.176.table delete mode 100644 definitions/grib2/tables/8/4.2.192.177.table delete mode 100644 definitions/grib2/tables/8/4.2.192.178.table delete mode 100644 definitions/grib2/tables/8/4.2.192.179.table delete mode 100644 definitions/grib2/tables/8/4.2.192.18.table delete mode 100644 definitions/grib2/tables/8/4.2.192.180.table delete mode 100644 definitions/grib2/tables/8/4.2.192.181.table delete mode 100644 definitions/grib2/tables/8/4.2.192.182.table delete mode 100644 definitions/grib2/tables/8/4.2.192.183.table delete mode 100644 definitions/grib2/tables/8/4.2.192.184.table delete mode 100644 definitions/grib2/tables/8/4.2.192.185.table delete mode 100644 definitions/grib2/tables/8/4.2.192.186.table delete mode 100644 definitions/grib2/tables/8/4.2.192.187.table delete mode 100644 definitions/grib2/tables/8/4.2.192.188.table delete mode 100644 definitions/grib2/tables/8/4.2.192.189.table delete mode 100644 definitions/grib2/tables/8/4.2.192.19.table delete mode 100644 definitions/grib2/tables/8/4.2.192.190.table delete mode 100644 definitions/grib2/tables/8/4.2.192.191.table delete mode 100644 definitions/grib2/tables/8/4.2.192.192.table delete mode 100644 definitions/grib2/tables/8/4.2.192.193.table delete mode 100644 definitions/grib2/tables/8/4.2.192.194.table delete mode 100644 definitions/grib2/tables/8/4.2.192.195.table delete mode 100644 definitions/grib2/tables/8/4.2.192.196.table delete mode 100644 definitions/grib2/tables/8/4.2.192.197.table delete mode 100644 definitions/grib2/tables/8/4.2.192.198.table delete mode 100644 definitions/grib2/tables/8/4.2.192.199.table delete mode 100644 definitions/grib2/tables/8/4.2.192.2.table delete mode 100644 definitions/grib2/tables/8/4.2.192.20.table delete mode 100644 definitions/grib2/tables/8/4.2.192.200.table delete mode 100644 definitions/grib2/tables/8/4.2.192.201.table delete mode 100644 definitions/grib2/tables/8/4.2.192.202.table delete mode 100644 definitions/grib2/tables/8/4.2.192.203.table delete mode 100644 definitions/grib2/tables/8/4.2.192.204.table delete mode 100644 definitions/grib2/tables/8/4.2.192.205.table delete mode 100644 definitions/grib2/tables/8/4.2.192.206.table delete mode 100644 definitions/grib2/tables/8/4.2.192.207.table delete mode 100644 definitions/grib2/tables/8/4.2.192.208.table delete mode 100644 definitions/grib2/tables/8/4.2.192.209.table delete mode 100644 definitions/grib2/tables/8/4.2.192.21.table delete mode 100644 definitions/grib2/tables/8/4.2.192.210.table delete mode 100644 definitions/grib2/tables/8/4.2.192.211.table delete mode 100644 definitions/grib2/tables/8/4.2.192.212.table delete mode 100644 definitions/grib2/tables/8/4.2.192.213.table delete mode 100644 definitions/grib2/tables/8/4.2.192.214.table delete mode 100644 definitions/grib2/tables/8/4.2.192.215.table delete mode 100644 definitions/grib2/tables/8/4.2.192.216.table delete mode 100644 definitions/grib2/tables/8/4.2.192.217.table delete mode 100644 definitions/grib2/tables/8/4.2.192.218.table delete mode 100644 definitions/grib2/tables/8/4.2.192.219.table delete mode 100644 definitions/grib2/tables/8/4.2.192.22.table delete mode 100644 definitions/grib2/tables/8/4.2.192.220.table delete mode 100644 definitions/grib2/tables/8/4.2.192.221.table delete mode 100644 definitions/grib2/tables/8/4.2.192.222.table delete mode 100644 definitions/grib2/tables/8/4.2.192.223.table delete mode 100644 definitions/grib2/tables/8/4.2.192.224.table delete mode 100644 definitions/grib2/tables/8/4.2.192.225.table delete mode 100644 definitions/grib2/tables/8/4.2.192.226.table delete mode 100644 definitions/grib2/tables/8/4.2.192.227.table delete mode 100644 definitions/grib2/tables/8/4.2.192.228.table delete mode 100644 definitions/grib2/tables/8/4.2.192.229.table delete mode 100644 definitions/grib2/tables/8/4.2.192.23.table delete mode 100644 definitions/grib2/tables/8/4.2.192.230.table delete mode 100644 definitions/grib2/tables/8/4.2.192.231.table delete mode 100644 definitions/grib2/tables/8/4.2.192.232.table delete mode 100644 definitions/grib2/tables/8/4.2.192.233.table delete mode 100644 definitions/grib2/tables/8/4.2.192.234.table delete mode 100644 definitions/grib2/tables/8/4.2.192.235.table delete mode 100644 definitions/grib2/tables/8/4.2.192.236.table delete mode 100644 definitions/grib2/tables/8/4.2.192.237.table delete mode 100644 definitions/grib2/tables/8/4.2.192.238.table delete mode 100644 definitions/grib2/tables/8/4.2.192.239.table delete mode 100644 definitions/grib2/tables/8/4.2.192.24.table delete mode 100644 definitions/grib2/tables/8/4.2.192.240.table delete mode 100644 definitions/grib2/tables/8/4.2.192.241.table delete mode 100644 definitions/grib2/tables/8/4.2.192.242.table delete mode 100644 definitions/grib2/tables/8/4.2.192.243.table delete mode 100644 definitions/grib2/tables/8/4.2.192.244.table delete mode 100644 definitions/grib2/tables/8/4.2.192.245.table delete mode 100644 definitions/grib2/tables/8/4.2.192.246.table delete mode 100644 definitions/grib2/tables/8/4.2.192.247.table delete mode 100644 definitions/grib2/tables/8/4.2.192.248.table delete mode 100644 definitions/grib2/tables/8/4.2.192.249.table delete mode 100644 definitions/grib2/tables/8/4.2.192.25.table delete mode 100644 definitions/grib2/tables/8/4.2.192.250.table delete mode 100644 definitions/grib2/tables/8/4.2.192.251.table delete mode 100644 definitions/grib2/tables/8/4.2.192.252.table delete mode 100644 definitions/grib2/tables/8/4.2.192.253.table delete mode 100644 definitions/grib2/tables/8/4.2.192.254.table delete mode 100644 definitions/grib2/tables/8/4.2.192.255.table delete mode 100644 definitions/grib2/tables/8/4.2.192.26.table delete mode 100644 definitions/grib2/tables/8/4.2.192.27.table delete mode 100644 definitions/grib2/tables/8/4.2.192.28.table delete mode 100644 definitions/grib2/tables/8/4.2.192.29.table delete mode 100644 definitions/grib2/tables/8/4.2.192.3.table delete mode 100644 definitions/grib2/tables/8/4.2.192.30.table delete mode 100644 definitions/grib2/tables/8/4.2.192.31.table delete mode 100644 definitions/grib2/tables/8/4.2.192.32.table delete mode 100644 definitions/grib2/tables/8/4.2.192.33.table delete mode 100644 definitions/grib2/tables/8/4.2.192.34.table delete mode 100644 definitions/grib2/tables/8/4.2.192.35.table delete mode 100644 definitions/grib2/tables/8/4.2.192.36.table delete mode 100644 definitions/grib2/tables/8/4.2.192.37.table delete mode 100644 definitions/grib2/tables/8/4.2.192.38.table delete mode 100644 definitions/grib2/tables/8/4.2.192.39.table delete mode 100644 definitions/grib2/tables/8/4.2.192.4.table delete mode 100644 definitions/grib2/tables/8/4.2.192.40.table delete mode 100644 definitions/grib2/tables/8/4.2.192.41.table delete mode 100644 definitions/grib2/tables/8/4.2.192.42.table delete mode 100644 definitions/grib2/tables/8/4.2.192.43.table delete mode 100644 definitions/grib2/tables/8/4.2.192.44.table delete mode 100644 definitions/grib2/tables/8/4.2.192.45.table delete mode 100644 definitions/grib2/tables/8/4.2.192.46.table delete mode 100644 definitions/grib2/tables/8/4.2.192.47.table delete mode 100644 definitions/grib2/tables/8/4.2.192.48.table delete mode 100644 definitions/grib2/tables/8/4.2.192.49.table delete mode 100644 definitions/grib2/tables/8/4.2.192.5.table delete mode 100644 definitions/grib2/tables/8/4.2.192.50.table delete mode 100644 definitions/grib2/tables/8/4.2.192.51.table delete mode 100644 definitions/grib2/tables/8/4.2.192.52.table delete mode 100644 definitions/grib2/tables/8/4.2.192.53.table delete mode 100644 definitions/grib2/tables/8/4.2.192.54.table delete mode 100644 definitions/grib2/tables/8/4.2.192.55.table delete mode 100644 definitions/grib2/tables/8/4.2.192.56.table delete mode 100644 definitions/grib2/tables/8/4.2.192.57.table delete mode 100644 definitions/grib2/tables/8/4.2.192.58.table delete mode 100644 definitions/grib2/tables/8/4.2.192.59.table delete mode 100644 definitions/grib2/tables/8/4.2.192.6.table delete mode 100644 definitions/grib2/tables/8/4.2.192.60.table delete mode 100644 definitions/grib2/tables/8/4.2.192.61.table delete mode 100644 definitions/grib2/tables/8/4.2.192.62.table delete mode 100644 definitions/grib2/tables/8/4.2.192.63.table delete mode 100644 definitions/grib2/tables/8/4.2.192.64.table delete mode 100644 definitions/grib2/tables/8/4.2.192.65.table delete mode 100644 definitions/grib2/tables/8/4.2.192.66.table delete mode 100644 definitions/grib2/tables/8/4.2.192.67.table delete mode 100644 definitions/grib2/tables/8/4.2.192.68.table delete mode 100644 definitions/grib2/tables/8/4.2.192.69.table delete mode 100644 definitions/grib2/tables/8/4.2.192.7.table delete mode 100644 definitions/grib2/tables/8/4.2.192.70.table delete mode 100644 definitions/grib2/tables/8/4.2.192.71.table delete mode 100644 definitions/grib2/tables/8/4.2.192.72.table delete mode 100644 definitions/grib2/tables/8/4.2.192.73.table delete mode 100644 definitions/grib2/tables/8/4.2.192.74.table delete mode 100644 definitions/grib2/tables/8/4.2.192.75.table delete mode 100644 definitions/grib2/tables/8/4.2.192.76.table delete mode 100644 definitions/grib2/tables/8/4.2.192.77.table delete mode 100644 definitions/grib2/tables/8/4.2.192.78.table delete mode 100644 definitions/grib2/tables/8/4.2.192.79.table delete mode 100644 definitions/grib2/tables/8/4.2.192.8.table delete mode 100644 definitions/grib2/tables/8/4.2.192.80.table delete mode 100644 definitions/grib2/tables/8/4.2.192.81.table delete mode 100644 definitions/grib2/tables/8/4.2.192.82.table delete mode 100644 definitions/grib2/tables/8/4.2.192.83.table delete mode 100644 definitions/grib2/tables/8/4.2.192.84.table delete mode 100644 definitions/grib2/tables/8/4.2.192.85.table delete mode 100644 definitions/grib2/tables/8/4.2.192.86.table delete mode 100644 definitions/grib2/tables/8/4.2.192.87.table delete mode 100644 definitions/grib2/tables/8/4.2.192.88.table delete mode 100644 definitions/grib2/tables/8/4.2.192.89.table delete mode 100644 definitions/grib2/tables/8/4.2.192.9.table delete mode 100644 definitions/grib2/tables/8/4.2.192.90.table delete mode 100644 definitions/grib2/tables/8/4.2.192.91.table delete mode 100644 definitions/grib2/tables/8/4.2.192.92.table delete mode 100644 definitions/grib2/tables/8/4.2.192.93.table delete mode 100644 definitions/grib2/tables/8/4.2.192.94.table delete mode 100644 definitions/grib2/tables/8/4.2.192.95.table delete mode 100644 definitions/grib2/tables/8/4.2.192.96.table delete mode 100644 definitions/grib2/tables/8/4.2.192.97.table delete mode 100644 definitions/grib2/tables/8/4.2.192.98.table delete mode 100644 definitions/grib2/tables/8/4.2.192.99.table delete mode 100644 definitions/grib2/tables/9/4.1.192.table delete mode 100644 definitions/grib2/tables/9/4.2.192.0.table delete mode 100644 definitions/grib2/tables/9/4.2.192.1.table delete mode 100644 definitions/grib2/tables/9/4.2.192.10.table delete mode 100644 definitions/grib2/tables/9/4.2.192.100.table delete mode 100644 definitions/grib2/tables/9/4.2.192.101.table delete mode 100644 definitions/grib2/tables/9/4.2.192.102.table delete mode 100644 definitions/grib2/tables/9/4.2.192.103.table delete mode 100644 definitions/grib2/tables/9/4.2.192.104.table delete mode 100644 definitions/grib2/tables/9/4.2.192.105.table delete mode 100644 definitions/grib2/tables/9/4.2.192.106.table delete mode 100644 definitions/grib2/tables/9/4.2.192.107.table delete mode 100644 definitions/grib2/tables/9/4.2.192.108.table delete mode 100644 definitions/grib2/tables/9/4.2.192.109.table delete mode 100644 definitions/grib2/tables/9/4.2.192.11.table delete mode 100644 definitions/grib2/tables/9/4.2.192.110.table delete mode 100644 definitions/grib2/tables/9/4.2.192.111.table delete mode 100644 definitions/grib2/tables/9/4.2.192.112.table delete mode 100644 definitions/grib2/tables/9/4.2.192.113.table delete mode 100644 definitions/grib2/tables/9/4.2.192.114.table delete mode 100644 definitions/grib2/tables/9/4.2.192.115.table delete mode 100644 definitions/grib2/tables/9/4.2.192.116.table delete mode 100644 definitions/grib2/tables/9/4.2.192.117.table delete mode 100644 definitions/grib2/tables/9/4.2.192.118.table delete mode 100644 definitions/grib2/tables/9/4.2.192.119.table delete mode 100644 definitions/grib2/tables/9/4.2.192.12.table delete mode 100644 definitions/grib2/tables/9/4.2.192.120.table delete mode 100644 definitions/grib2/tables/9/4.2.192.121.table delete mode 100644 definitions/grib2/tables/9/4.2.192.122.table delete mode 100644 definitions/grib2/tables/9/4.2.192.123.table delete mode 100644 definitions/grib2/tables/9/4.2.192.124.table delete mode 100644 definitions/grib2/tables/9/4.2.192.125.table delete mode 100644 definitions/grib2/tables/9/4.2.192.126.table delete mode 100644 definitions/grib2/tables/9/4.2.192.127.table delete mode 100644 definitions/grib2/tables/9/4.2.192.128.table delete mode 100644 definitions/grib2/tables/9/4.2.192.129.table delete mode 100644 definitions/grib2/tables/9/4.2.192.13.table delete mode 100644 definitions/grib2/tables/9/4.2.192.130.table delete mode 100644 definitions/grib2/tables/9/4.2.192.131.table delete mode 100644 definitions/grib2/tables/9/4.2.192.132.table delete mode 100644 definitions/grib2/tables/9/4.2.192.133.table delete mode 100644 definitions/grib2/tables/9/4.2.192.134.table delete mode 100644 definitions/grib2/tables/9/4.2.192.135.table delete mode 100644 definitions/grib2/tables/9/4.2.192.136.table delete mode 100644 definitions/grib2/tables/9/4.2.192.137.table delete mode 100644 definitions/grib2/tables/9/4.2.192.138.table delete mode 100644 definitions/grib2/tables/9/4.2.192.139.table delete mode 100644 definitions/grib2/tables/9/4.2.192.14.table delete mode 100644 definitions/grib2/tables/9/4.2.192.140.table delete mode 100644 definitions/grib2/tables/9/4.2.192.141.table delete mode 100644 definitions/grib2/tables/9/4.2.192.142.table delete mode 100644 definitions/grib2/tables/9/4.2.192.143.table delete mode 100644 definitions/grib2/tables/9/4.2.192.144.table delete mode 100644 definitions/grib2/tables/9/4.2.192.145.table delete mode 100644 definitions/grib2/tables/9/4.2.192.146.table delete mode 100644 definitions/grib2/tables/9/4.2.192.147.table delete mode 100644 definitions/grib2/tables/9/4.2.192.148.table delete mode 100644 definitions/grib2/tables/9/4.2.192.149.table delete mode 100644 definitions/grib2/tables/9/4.2.192.15.table delete mode 100644 definitions/grib2/tables/9/4.2.192.150.table delete mode 100644 definitions/grib2/tables/9/4.2.192.151.table delete mode 100644 definitions/grib2/tables/9/4.2.192.152.table delete mode 100644 definitions/grib2/tables/9/4.2.192.153.table delete mode 100644 definitions/grib2/tables/9/4.2.192.154.table delete mode 100644 definitions/grib2/tables/9/4.2.192.155.table delete mode 100644 definitions/grib2/tables/9/4.2.192.156.table delete mode 100644 definitions/grib2/tables/9/4.2.192.157.table delete mode 100644 definitions/grib2/tables/9/4.2.192.158.table delete mode 100644 definitions/grib2/tables/9/4.2.192.159.table delete mode 100644 definitions/grib2/tables/9/4.2.192.16.table delete mode 100644 definitions/grib2/tables/9/4.2.192.160.table delete mode 100644 definitions/grib2/tables/9/4.2.192.161.table delete mode 100644 definitions/grib2/tables/9/4.2.192.162.table delete mode 100644 definitions/grib2/tables/9/4.2.192.163.table delete mode 100644 definitions/grib2/tables/9/4.2.192.164.table delete mode 100644 definitions/grib2/tables/9/4.2.192.165.table delete mode 100644 definitions/grib2/tables/9/4.2.192.166.table delete mode 100644 definitions/grib2/tables/9/4.2.192.167.table delete mode 100644 definitions/grib2/tables/9/4.2.192.168.table delete mode 100644 definitions/grib2/tables/9/4.2.192.169.table delete mode 100644 definitions/grib2/tables/9/4.2.192.17.table delete mode 100644 definitions/grib2/tables/9/4.2.192.170.table delete mode 100644 definitions/grib2/tables/9/4.2.192.171.table delete mode 100644 definitions/grib2/tables/9/4.2.192.172.table delete mode 100644 definitions/grib2/tables/9/4.2.192.173.table delete mode 100644 definitions/grib2/tables/9/4.2.192.174.table delete mode 100644 definitions/grib2/tables/9/4.2.192.175.table delete mode 100644 definitions/grib2/tables/9/4.2.192.176.table delete mode 100644 definitions/grib2/tables/9/4.2.192.177.table delete mode 100644 definitions/grib2/tables/9/4.2.192.178.table delete mode 100644 definitions/grib2/tables/9/4.2.192.179.table delete mode 100644 definitions/grib2/tables/9/4.2.192.18.table delete mode 100644 definitions/grib2/tables/9/4.2.192.180.table delete mode 100644 definitions/grib2/tables/9/4.2.192.181.table delete mode 100644 definitions/grib2/tables/9/4.2.192.182.table delete mode 100644 definitions/grib2/tables/9/4.2.192.183.table delete mode 100644 definitions/grib2/tables/9/4.2.192.184.table delete mode 100644 definitions/grib2/tables/9/4.2.192.185.table delete mode 100644 definitions/grib2/tables/9/4.2.192.186.table delete mode 100644 definitions/grib2/tables/9/4.2.192.187.table delete mode 100644 definitions/grib2/tables/9/4.2.192.188.table delete mode 100644 definitions/grib2/tables/9/4.2.192.189.table delete mode 100644 definitions/grib2/tables/9/4.2.192.19.table delete mode 100644 definitions/grib2/tables/9/4.2.192.190.table delete mode 100644 definitions/grib2/tables/9/4.2.192.191.table delete mode 100644 definitions/grib2/tables/9/4.2.192.192.table delete mode 100644 definitions/grib2/tables/9/4.2.192.193.table delete mode 100644 definitions/grib2/tables/9/4.2.192.194.table delete mode 100644 definitions/grib2/tables/9/4.2.192.195.table delete mode 100644 definitions/grib2/tables/9/4.2.192.196.table delete mode 100644 definitions/grib2/tables/9/4.2.192.197.table delete mode 100644 definitions/grib2/tables/9/4.2.192.198.table delete mode 100644 definitions/grib2/tables/9/4.2.192.199.table delete mode 100644 definitions/grib2/tables/9/4.2.192.2.table delete mode 100644 definitions/grib2/tables/9/4.2.192.20.table delete mode 100644 definitions/grib2/tables/9/4.2.192.200.table delete mode 100644 definitions/grib2/tables/9/4.2.192.201.table delete mode 100644 definitions/grib2/tables/9/4.2.192.202.table delete mode 100644 definitions/grib2/tables/9/4.2.192.203.table delete mode 100644 definitions/grib2/tables/9/4.2.192.204.table delete mode 100644 definitions/grib2/tables/9/4.2.192.205.table delete mode 100644 definitions/grib2/tables/9/4.2.192.206.table delete mode 100644 definitions/grib2/tables/9/4.2.192.207.table delete mode 100644 definitions/grib2/tables/9/4.2.192.208.table delete mode 100644 definitions/grib2/tables/9/4.2.192.209.table delete mode 100644 definitions/grib2/tables/9/4.2.192.21.table delete mode 100644 definitions/grib2/tables/9/4.2.192.210.table delete mode 100644 definitions/grib2/tables/9/4.2.192.211.table delete mode 100644 definitions/grib2/tables/9/4.2.192.212.table delete mode 100644 definitions/grib2/tables/9/4.2.192.213.table delete mode 100644 definitions/grib2/tables/9/4.2.192.214.table delete mode 100644 definitions/grib2/tables/9/4.2.192.215.table delete mode 100644 definitions/grib2/tables/9/4.2.192.216.table delete mode 100644 definitions/grib2/tables/9/4.2.192.217.table delete mode 100644 definitions/grib2/tables/9/4.2.192.218.table delete mode 100644 definitions/grib2/tables/9/4.2.192.219.table delete mode 100644 definitions/grib2/tables/9/4.2.192.22.table delete mode 100644 definitions/grib2/tables/9/4.2.192.220.table delete mode 100644 definitions/grib2/tables/9/4.2.192.221.table delete mode 100644 definitions/grib2/tables/9/4.2.192.222.table delete mode 100644 definitions/grib2/tables/9/4.2.192.223.table delete mode 100644 definitions/grib2/tables/9/4.2.192.224.table delete mode 100644 definitions/grib2/tables/9/4.2.192.225.table delete mode 100644 definitions/grib2/tables/9/4.2.192.226.table delete mode 100644 definitions/grib2/tables/9/4.2.192.227.table delete mode 100644 definitions/grib2/tables/9/4.2.192.228.table delete mode 100644 definitions/grib2/tables/9/4.2.192.229.table delete mode 100644 definitions/grib2/tables/9/4.2.192.23.table delete mode 100644 definitions/grib2/tables/9/4.2.192.230.table delete mode 100644 definitions/grib2/tables/9/4.2.192.231.table delete mode 100644 definitions/grib2/tables/9/4.2.192.232.table delete mode 100644 definitions/grib2/tables/9/4.2.192.233.table delete mode 100644 definitions/grib2/tables/9/4.2.192.234.table delete mode 100644 definitions/grib2/tables/9/4.2.192.235.table delete mode 100644 definitions/grib2/tables/9/4.2.192.236.table delete mode 100644 definitions/grib2/tables/9/4.2.192.237.table delete mode 100644 definitions/grib2/tables/9/4.2.192.238.table delete mode 100644 definitions/grib2/tables/9/4.2.192.239.table delete mode 100644 definitions/grib2/tables/9/4.2.192.24.table delete mode 100644 definitions/grib2/tables/9/4.2.192.240.table delete mode 100644 definitions/grib2/tables/9/4.2.192.241.table delete mode 100644 definitions/grib2/tables/9/4.2.192.242.table delete mode 100644 definitions/grib2/tables/9/4.2.192.243.table delete mode 100644 definitions/grib2/tables/9/4.2.192.244.table delete mode 100644 definitions/grib2/tables/9/4.2.192.245.table delete mode 100644 definitions/grib2/tables/9/4.2.192.246.table delete mode 100644 definitions/grib2/tables/9/4.2.192.247.table delete mode 100644 definitions/grib2/tables/9/4.2.192.248.table delete mode 100644 definitions/grib2/tables/9/4.2.192.249.table delete mode 100644 definitions/grib2/tables/9/4.2.192.25.table delete mode 100644 definitions/grib2/tables/9/4.2.192.250.table delete mode 100644 definitions/grib2/tables/9/4.2.192.251.table delete mode 100644 definitions/grib2/tables/9/4.2.192.252.table delete mode 100644 definitions/grib2/tables/9/4.2.192.253.table delete mode 100644 definitions/grib2/tables/9/4.2.192.254.table delete mode 100644 definitions/grib2/tables/9/4.2.192.255.table delete mode 100644 definitions/grib2/tables/9/4.2.192.26.table delete mode 100644 definitions/grib2/tables/9/4.2.192.27.table delete mode 100644 definitions/grib2/tables/9/4.2.192.28.table delete mode 100644 definitions/grib2/tables/9/4.2.192.29.table delete mode 100644 definitions/grib2/tables/9/4.2.192.3.table delete mode 100644 definitions/grib2/tables/9/4.2.192.30.table delete mode 100644 definitions/grib2/tables/9/4.2.192.31.table delete mode 100644 definitions/grib2/tables/9/4.2.192.32.table delete mode 100644 definitions/grib2/tables/9/4.2.192.33.table delete mode 100644 definitions/grib2/tables/9/4.2.192.34.table delete mode 100644 definitions/grib2/tables/9/4.2.192.35.table delete mode 100644 definitions/grib2/tables/9/4.2.192.36.table delete mode 100644 definitions/grib2/tables/9/4.2.192.37.table delete mode 100644 definitions/grib2/tables/9/4.2.192.38.table delete mode 100644 definitions/grib2/tables/9/4.2.192.39.table delete mode 100644 definitions/grib2/tables/9/4.2.192.4.table delete mode 100644 definitions/grib2/tables/9/4.2.192.40.table delete mode 100644 definitions/grib2/tables/9/4.2.192.41.table delete mode 100644 definitions/grib2/tables/9/4.2.192.42.table delete mode 100644 definitions/grib2/tables/9/4.2.192.43.table delete mode 100644 definitions/grib2/tables/9/4.2.192.44.table delete mode 100644 definitions/grib2/tables/9/4.2.192.45.table delete mode 100644 definitions/grib2/tables/9/4.2.192.46.table delete mode 100644 definitions/grib2/tables/9/4.2.192.47.table delete mode 100644 definitions/grib2/tables/9/4.2.192.48.table delete mode 100644 definitions/grib2/tables/9/4.2.192.49.table delete mode 100644 definitions/grib2/tables/9/4.2.192.5.table delete mode 100644 definitions/grib2/tables/9/4.2.192.50.table delete mode 100644 definitions/grib2/tables/9/4.2.192.51.table delete mode 100644 definitions/grib2/tables/9/4.2.192.52.table delete mode 100644 definitions/grib2/tables/9/4.2.192.53.table delete mode 100644 definitions/grib2/tables/9/4.2.192.54.table delete mode 100644 definitions/grib2/tables/9/4.2.192.55.table delete mode 100644 definitions/grib2/tables/9/4.2.192.56.table delete mode 100644 definitions/grib2/tables/9/4.2.192.57.table delete mode 100644 definitions/grib2/tables/9/4.2.192.58.table delete mode 100644 definitions/grib2/tables/9/4.2.192.59.table delete mode 100644 definitions/grib2/tables/9/4.2.192.6.table delete mode 100644 definitions/grib2/tables/9/4.2.192.60.table delete mode 100644 definitions/grib2/tables/9/4.2.192.61.table delete mode 100644 definitions/grib2/tables/9/4.2.192.62.table delete mode 100644 definitions/grib2/tables/9/4.2.192.63.table delete mode 100644 definitions/grib2/tables/9/4.2.192.64.table delete mode 100644 definitions/grib2/tables/9/4.2.192.65.table delete mode 100644 definitions/grib2/tables/9/4.2.192.66.table delete mode 100644 definitions/grib2/tables/9/4.2.192.67.table delete mode 100644 definitions/grib2/tables/9/4.2.192.68.table delete mode 100644 definitions/grib2/tables/9/4.2.192.69.table delete mode 100644 definitions/grib2/tables/9/4.2.192.7.table delete mode 100644 definitions/grib2/tables/9/4.2.192.70.table delete mode 100644 definitions/grib2/tables/9/4.2.192.71.table delete mode 100644 definitions/grib2/tables/9/4.2.192.72.table delete mode 100644 definitions/grib2/tables/9/4.2.192.73.table delete mode 100644 definitions/grib2/tables/9/4.2.192.74.table delete mode 100644 definitions/grib2/tables/9/4.2.192.75.table delete mode 100644 definitions/grib2/tables/9/4.2.192.76.table delete mode 100644 definitions/grib2/tables/9/4.2.192.77.table delete mode 100644 definitions/grib2/tables/9/4.2.192.78.table delete mode 100644 definitions/grib2/tables/9/4.2.192.79.table delete mode 100644 definitions/grib2/tables/9/4.2.192.8.table delete mode 100644 definitions/grib2/tables/9/4.2.192.80.table delete mode 100644 definitions/grib2/tables/9/4.2.192.81.table delete mode 100644 definitions/grib2/tables/9/4.2.192.82.table delete mode 100644 definitions/grib2/tables/9/4.2.192.83.table delete mode 100644 definitions/grib2/tables/9/4.2.192.84.table delete mode 100644 definitions/grib2/tables/9/4.2.192.85.table delete mode 100644 definitions/grib2/tables/9/4.2.192.86.table delete mode 100644 definitions/grib2/tables/9/4.2.192.87.table delete mode 100644 definitions/grib2/tables/9/4.2.192.88.table delete mode 100644 definitions/grib2/tables/9/4.2.192.89.table delete mode 100644 definitions/grib2/tables/9/4.2.192.9.table delete mode 100644 definitions/grib2/tables/9/4.2.192.90.table delete mode 100644 definitions/grib2/tables/9/4.2.192.91.table delete mode 100644 definitions/grib2/tables/9/4.2.192.92.table delete mode 100644 definitions/grib2/tables/9/4.2.192.93.table delete mode 100644 definitions/grib2/tables/9/4.2.192.94.table delete mode 100644 definitions/grib2/tables/9/4.2.192.95.table delete mode 100644 definitions/grib2/tables/9/4.2.192.96.table delete mode 100644 definitions/grib2/tables/9/4.2.192.97.table delete mode 100644 definitions/grib2/tables/9/4.2.192.98.table delete mode 100644 definitions/grib2/tables/9/4.2.192.99.table diff --git a/definitions/grib2/tables/10/4.1.192.table b/definitions/grib2/tables/10/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/10/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/11/4.1.192.table b/definitions/grib2/tables/11/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/11/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/12/4.1.192.table b/definitions/grib2/tables/12/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/12/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/13/4.1.192.table b/definitions/grib2/tables/13/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/13/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/14/4.1.192.table b/definitions/grib2/tables/14/4.1.192.table deleted file mode 100644 index c428acab0..000000000 --- a/definitions/grib2/tables/14/4.1.192.table +++ /dev/null @@ -1,4 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - - diff --git a/definitions/grib2/tables/15/4.1.192.table b/definitions/grib2/tables/15/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/15/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/16/4.1.192.table b/definitions/grib2/tables/16/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/16/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/17/4.1.192.table b/definitions/grib2/tables/17/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/17/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/18/4.1.192.table b/definitions/grib2/tables/18/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/18/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/19/4.1.192.table b/definitions/grib2/tables/19/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/19/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/20/4.1.192.table b/definitions/grib2/tables/20/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/20/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/21/4.1.192.table b/definitions/grib2/tables/21/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/21/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/22/4.1.192.table b/definitions/grib2/tables/22/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/22/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/23/4.1.192.table b/definitions/grib2/tables/23/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/23/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/24/4.1.192.table b/definitions/grib2/tables/24/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/24/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/25/4.1.192.table b/definitions/grib2/tables/25/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/25/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/26/4.1.192.table b/definitions/grib2/tables/26/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/26/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/27/4.1.192.table b/definitions/grib2/tables/27/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/27/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/28/4.1.192.table b/definitions/grib2/tables/28/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/28/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/29/4.1.192.table b/definitions/grib2/tables/29/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/29/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/30/4.1.192.table b/definitions/grib2/tables/30/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/30/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.192.table b/definitions/grib2/tables/31/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/31/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/32/4.1.192.table b/definitions/grib2/tables/32/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/32/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/4/4.1.192.table b/definitions/grib2/tables/4/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/4/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/4/4.2.192.0.table b/definitions/grib2/tables/4/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.1.table b/definitions/grib2/tables/4/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.10.table b/definitions/grib2/tables/4/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.100.table b/definitions/grib2/tables/4/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.101.table b/definitions/grib2/tables/4/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.102.table b/definitions/grib2/tables/4/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.103.table b/definitions/grib2/tables/4/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.104.table b/definitions/grib2/tables/4/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.105.table b/definitions/grib2/tables/4/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.106.table b/definitions/grib2/tables/4/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.107.table b/definitions/grib2/tables/4/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.108.table b/definitions/grib2/tables/4/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.109.table b/definitions/grib2/tables/4/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.11.table b/definitions/grib2/tables/4/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.110.table b/definitions/grib2/tables/4/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.111.table b/definitions/grib2/tables/4/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.112.table b/definitions/grib2/tables/4/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.113.table b/definitions/grib2/tables/4/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.114.table b/definitions/grib2/tables/4/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.115.table b/definitions/grib2/tables/4/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.116.table b/definitions/grib2/tables/4/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.117.table b/definitions/grib2/tables/4/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.118.table b/definitions/grib2/tables/4/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.119.table b/definitions/grib2/tables/4/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.12.table b/definitions/grib2/tables/4/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.120.table b/definitions/grib2/tables/4/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.121.table b/definitions/grib2/tables/4/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.122.table b/definitions/grib2/tables/4/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.123.table b/definitions/grib2/tables/4/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.124.table b/definitions/grib2/tables/4/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.125.table b/definitions/grib2/tables/4/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.126.table b/definitions/grib2/tables/4/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.127.table b/definitions/grib2/tables/4/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.128.table b/definitions/grib2/tables/4/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.129.table b/definitions/grib2/tables/4/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.13.table b/definitions/grib2/tables/4/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.130.table b/definitions/grib2/tables/4/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.131.table b/definitions/grib2/tables/4/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.132.table b/definitions/grib2/tables/4/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.133.table b/definitions/grib2/tables/4/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.134.table b/definitions/grib2/tables/4/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.135.table b/definitions/grib2/tables/4/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.136.table b/definitions/grib2/tables/4/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.137.table b/definitions/grib2/tables/4/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.138.table b/definitions/grib2/tables/4/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.139.table b/definitions/grib2/tables/4/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.14.table b/definitions/grib2/tables/4/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.140.table b/definitions/grib2/tables/4/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.141.table b/definitions/grib2/tables/4/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.142.table b/definitions/grib2/tables/4/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.143.table b/definitions/grib2/tables/4/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.144.table b/definitions/grib2/tables/4/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.145.table b/definitions/grib2/tables/4/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.146.table b/definitions/grib2/tables/4/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.147.table b/definitions/grib2/tables/4/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.148.table b/definitions/grib2/tables/4/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.149.table b/definitions/grib2/tables/4/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.15.table b/definitions/grib2/tables/4/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.150.table b/definitions/grib2/tables/4/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.151.table b/definitions/grib2/tables/4/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.152.table b/definitions/grib2/tables/4/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.153.table b/definitions/grib2/tables/4/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.154.table b/definitions/grib2/tables/4/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.155.table b/definitions/grib2/tables/4/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.156.table b/definitions/grib2/tables/4/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.157.table b/definitions/grib2/tables/4/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.158.table b/definitions/grib2/tables/4/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.159.table b/definitions/grib2/tables/4/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.16.table b/definitions/grib2/tables/4/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.160.table b/definitions/grib2/tables/4/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.161.table b/definitions/grib2/tables/4/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.162.table b/definitions/grib2/tables/4/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.163.table b/definitions/grib2/tables/4/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.164.table b/definitions/grib2/tables/4/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.165.table b/definitions/grib2/tables/4/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.166.table b/definitions/grib2/tables/4/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.167.table b/definitions/grib2/tables/4/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.168.table b/definitions/grib2/tables/4/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.169.table b/definitions/grib2/tables/4/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.17.table b/definitions/grib2/tables/4/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.170.table b/definitions/grib2/tables/4/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.171.table b/definitions/grib2/tables/4/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.172.table b/definitions/grib2/tables/4/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.173.table b/definitions/grib2/tables/4/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.174.table b/definitions/grib2/tables/4/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.175.table b/definitions/grib2/tables/4/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.176.table b/definitions/grib2/tables/4/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.177.table b/definitions/grib2/tables/4/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.178.table b/definitions/grib2/tables/4/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.179.table b/definitions/grib2/tables/4/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.18.table b/definitions/grib2/tables/4/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.180.table b/definitions/grib2/tables/4/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.181.table b/definitions/grib2/tables/4/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.182.table b/definitions/grib2/tables/4/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.183.table b/definitions/grib2/tables/4/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.184.table b/definitions/grib2/tables/4/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.185.table b/definitions/grib2/tables/4/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.186.table b/definitions/grib2/tables/4/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.187.table b/definitions/grib2/tables/4/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.188.table b/definitions/grib2/tables/4/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.189.table b/definitions/grib2/tables/4/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.19.table b/definitions/grib2/tables/4/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.190.table b/definitions/grib2/tables/4/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.191.table b/definitions/grib2/tables/4/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.192.table b/definitions/grib2/tables/4/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.193.table b/definitions/grib2/tables/4/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.194.table b/definitions/grib2/tables/4/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.195.table b/definitions/grib2/tables/4/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.196.table b/definitions/grib2/tables/4/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.197.table b/definitions/grib2/tables/4/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.198.table b/definitions/grib2/tables/4/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.199.table b/definitions/grib2/tables/4/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.2.table b/definitions/grib2/tables/4/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.20.table b/definitions/grib2/tables/4/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.200.table b/definitions/grib2/tables/4/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.201.table b/definitions/grib2/tables/4/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.202.table b/definitions/grib2/tables/4/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.203.table b/definitions/grib2/tables/4/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.204.table b/definitions/grib2/tables/4/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.205.table b/definitions/grib2/tables/4/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.206.table b/definitions/grib2/tables/4/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.207.table b/definitions/grib2/tables/4/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.208.table b/definitions/grib2/tables/4/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.209.table b/definitions/grib2/tables/4/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.21.table b/definitions/grib2/tables/4/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.210.table b/definitions/grib2/tables/4/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.211.table b/definitions/grib2/tables/4/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.212.table b/definitions/grib2/tables/4/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.213.table b/definitions/grib2/tables/4/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.214.table b/definitions/grib2/tables/4/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.215.table b/definitions/grib2/tables/4/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.216.table b/definitions/grib2/tables/4/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.217.table b/definitions/grib2/tables/4/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.218.table b/definitions/grib2/tables/4/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.219.table b/definitions/grib2/tables/4/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.22.table b/definitions/grib2/tables/4/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.220.table b/definitions/grib2/tables/4/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.221.table b/definitions/grib2/tables/4/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.222.table b/definitions/grib2/tables/4/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.223.table b/definitions/grib2/tables/4/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.224.table b/definitions/grib2/tables/4/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.225.table b/definitions/grib2/tables/4/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.226.table b/definitions/grib2/tables/4/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.227.table b/definitions/grib2/tables/4/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.228.table b/definitions/grib2/tables/4/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.229.table b/definitions/grib2/tables/4/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.23.table b/definitions/grib2/tables/4/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.230.table b/definitions/grib2/tables/4/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.231.table b/definitions/grib2/tables/4/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.232.table b/definitions/grib2/tables/4/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.233.table b/definitions/grib2/tables/4/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.234.table b/definitions/grib2/tables/4/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.235.table b/definitions/grib2/tables/4/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.236.table b/definitions/grib2/tables/4/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.237.table b/definitions/grib2/tables/4/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.238.table b/definitions/grib2/tables/4/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.239.table b/definitions/grib2/tables/4/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.24.table b/definitions/grib2/tables/4/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.240.table b/definitions/grib2/tables/4/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.241.table b/definitions/grib2/tables/4/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.242.table b/definitions/grib2/tables/4/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.243.table b/definitions/grib2/tables/4/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.244.table b/definitions/grib2/tables/4/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.245.table b/definitions/grib2/tables/4/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.246.table b/definitions/grib2/tables/4/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.247.table b/definitions/grib2/tables/4/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.248.table b/definitions/grib2/tables/4/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.249.table b/definitions/grib2/tables/4/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.25.table b/definitions/grib2/tables/4/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.250.table b/definitions/grib2/tables/4/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.251.table b/definitions/grib2/tables/4/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.252.table b/definitions/grib2/tables/4/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.253.table b/definitions/grib2/tables/4/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.254.table b/definitions/grib2/tables/4/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.255.table b/definitions/grib2/tables/4/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.26.table b/definitions/grib2/tables/4/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.27.table b/definitions/grib2/tables/4/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.28.table b/definitions/grib2/tables/4/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.29.table b/definitions/grib2/tables/4/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.3.table b/definitions/grib2/tables/4/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.30.table b/definitions/grib2/tables/4/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.31.table b/definitions/grib2/tables/4/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.32.table b/definitions/grib2/tables/4/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.33.table b/definitions/grib2/tables/4/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.34.table b/definitions/grib2/tables/4/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.35.table b/definitions/grib2/tables/4/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.36.table b/definitions/grib2/tables/4/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.37.table b/definitions/grib2/tables/4/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.38.table b/definitions/grib2/tables/4/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.39.table b/definitions/grib2/tables/4/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.4.table b/definitions/grib2/tables/4/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.40.table b/definitions/grib2/tables/4/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.41.table b/definitions/grib2/tables/4/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.42.table b/definitions/grib2/tables/4/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.43.table b/definitions/grib2/tables/4/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.44.table b/definitions/grib2/tables/4/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.45.table b/definitions/grib2/tables/4/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.46.table b/definitions/grib2/tables/4/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.47.table b/definitions/grib2/tables/4/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.48.table b/definitions/grib2/tables/4/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.49.table b/definitions/grib2/tables/4/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.5.table b/definitions/grib2/tables/4/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.50.table b/definitions/grib2/tables/4/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.51.table b/definitions/grib2/tables/4/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.52.table b/definitions/grib2/tables/4/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.53.table b/definitions/grib2/tables/4/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.54.table b/definitions/grib2/tables/4/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.55.table b/definitions/grib2/tables/4/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.56.table b/definitions/grib2/tables/4/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.57.table b/definitions/grib2/tables/4/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.58.table b/definitions/grib2/tables/4/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.59.table b/definitions/grib2/tables/4/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.6.table b/definitions/grib2/tables/4/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.60.table b/definitions/grib2/tables/4/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.61.table b/definitions/grib2/tables/4/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.62.table b/definitions/grib2/tables/4/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.63.table b/definitions/grib2/tables/4/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.64.table b/definitions/grib2/tables/4/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.65.table b/definitions/grib2/tables/4/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.66.table b/definitions/grib2/tables/4/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.67.table b/definitions/grib2/tables/4/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.68.table b/definitions/grib2/tables/4/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.69.table b/definitions/grib2/tables/4/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.7.table b/definitions/grib2/tables/4/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.70.table b/definitions/grib2/tables/4/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.71.table b/definitions/grib2/tables/4/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.72.table b/definitions/grib2/tables/4/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.73.table b/definitions/grib2/tables/4/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.74.table b/definitions/grib2/tables/4/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.75.table b/definitions/grib2/tables/4/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.76.table b/definitions/grib2/tables/4/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.77.table b/definitions/grib2/tables/4/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.78.table b/definitions/grib2/tables/4/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.79.table b/definitions/grib2/tables/4/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.8.table b/definitions/grib2/tables/4/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.80.table b/definitions/grib2/tables/4/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.81.table b/definitions/grib2/tables/4/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.82.table b/definitions/grib2/tables/4/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.83.table b/definitions/grib2/tables/4/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.84.table b/definitions/grib2/tables/4/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.85.table b/definitions/grib2/tables/4/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.86.table b/definitions/grib2/tables/4/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.87.table b/definitions/grib2/tables/4/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.88.table b/definitions/grib2/tables/4/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.89.table b/definitions/grib2/tables/4/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.9.table b/definitions/grib2/tables/4/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.90.table b/definitions/grib2/tables/4/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.91.table b/definitions/grib2/tables/4/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.92.table b/definitions/grib2/tables/4/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.93.table b/definitions/grib2/tables/4/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.94.table b/definitions/grib2/tables/4/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.95.table b/definitions/grib2/tables/4/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.96.table b/definitions/grib2/tables/4/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.97.table b/definitions/grib2/tables/4/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.98.table b/definitions/grib2/tables/4/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/4/4.2.192.99.table b/definitions/grib2/tables/4/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/4/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.1.192.table b/definitions/grib2/tables/5/4.1.192.table deleted file mode 100644 index 5ee0de0d5..000000000 --- a/definitions/grib2/tables/5/4.1.192.table +++ /dev/null @@ -1,2 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing diff --git a/definitions/grib2/tables/5/4.2.192.0.table b/definitions/grib2/tables/5/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.1.table b/definitions/grib2/tables/5/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.10.table b/definitions/grib2/tables/5/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.100.table b/definitions/grib2/tables/5/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.101.table b/definitions/grib2/tables/5/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.102.table b/definitions/grib2/tables/5/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.103.table b/definitions/grib2/tables/5/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.104.table b/definitions/grib2/tables/5/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.105.table b/definitions/grib2/tables/5/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.106.table b/definitions/grib2/tables/5/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.107.table b/definitions/grib2/tables/5/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.108.table b/definitions/grib2/tables/5/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.109.table b/definitions/grib2/tables/5/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.11.table b/definitions/grib2/tables/5/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.110.table b/definitions/grib2/tables/5/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.111.table b/definitions/grib2/tables/5/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.112.table b/definitions/grib2/tables/5/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.113.table b/definitions/grib2/tables/5/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.114.table b/definitions/grib2/tables/5/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.115.table b/definitions/grib2/tables/5/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.116.table b/definitions/grib2/tables/5/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.117.table b/definitions/grib2/tables/5/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.118.table b/definitions/grib2/tables/5/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.119.table b/definitions/grib2/tables/5/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.12.table b/definitions/grib2/tables/5/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.120.table b/definitions/grib2/tables/5/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.121.table b/definitions/grib2/tables/5/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.122.table b/definitions/grib2/tables/5/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.123.table b/definitions/grib2/tables/5/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.124.table b/definitions/grib2/tables/5/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.125.table b/definitions/grib2/tables/5/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.126.table b/definitions/grib2/tables/5/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.127.table b/definitions/grib2/tables/5/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.128.table b/definitions/grib2/tables/5/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.129.table b/definitions/grib2/tables/5/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.13.table b/definitions/grib2/tables/5/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.130.table b/definitions/grib2/tables/5/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.131.table b/definitions/grib2/tables/5/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.132.table b/definitions/grib2/tables/5/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.133.table b/definitions/grib2/tables/5/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.134.table b/definitions/grib2/tables/5/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.135.table b/definitions/grib2/tables/5/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.136.table b/definitions/grib2/tables/5/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.137.table b/definitions/grib2/tables/5/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.138.table b/definitions/grib2/tables/5/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.139.table b/definitions/grib2/tables/5/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.14.table b/definitions/grib2/tables/5/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.140.table b/definitions/grib2/tables/5/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.141.table b/definitions/grib2/tables/5/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.142.table b/definitions/grib2/tables/5/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.143.table b/definitions/grib2/tables/5/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.144.table b/definitions/grib2/tables/5/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.145.table b/definitions/grib2/tables/5/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.146.table b/definitions/grib2/tables/5/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.147.table b/definitions/grib2/tables/5/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.148.table b/definitions/grib2/tables/5/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.149.table b/definitions/grib2/tables/5/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.15.table b/definitions/grib2/tables/5/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.150.table b/definitions/grib2/tables/5/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.151.table b/definitions/grib2/tables/5/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.152.table b/definitions/grib2/tables/5/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.153.table b/definitions/grib2/tables/5/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.154.table b/definitions/grib2/tables/5/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.155.table b/definitions/grib2/tables/5/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.156.table b/definitions/grib2/tables/5/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.157.table b/definitions/grib2/tables/5/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.158.table b/definitions/grib2/tables/5/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.159.table b/definitions/grib2/tables/5/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.16.table b/definitions/grib2/tables/5/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.160.table b/definitions/grib2/tables/5/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.161.table b/definitions/grib2/tables/5/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.162.table b/definitions/grib2/tables/5/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.163.table b/definitions/grib2/tables/5/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.164.table b/definitions/grib2/tables/5/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.165.table b/definitions/grib2/tables/5/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.166.table b/definitions/grib2/tables/5/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.167.table b/definitions/grib2/tables/5/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.168.table b/definitions/grib2/tables/5/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.169.table b/definitions/grib2/tables/5/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.17.table b/definitions/grib2/tables/5/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.170.table b/definitions/grib2/tables/5/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.171.table b/definitions/grib2/tables/5/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.172.table b/definitions/grib2/tables/5/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.173.table b/definitions/grib2/tables/5/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.174.table b/definitions/grib2/tables/5/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.175.table b/definitions/grib2/tables/5/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.176.table b/definitions/grib2/tables/5/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.177.table b/definitions/grib2/tables/5/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.178.table b/definitions/grib2/tables/5/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.179.table b/definitions/grib2/tables/5/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.18.table b/definitions/grib2/tables/5/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.180.table b/definitions/grib2/tables/5/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.181.table b/definitions/grib2/tables/5/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.182.table b/definitions/grib2/tables/5/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.183.table b/definitions/grib2/tables/5/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.184.table b/definitions/grib2/tables/5/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.185.table b/definitions/grib2/tables/5/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.186.table b/definitions/grib2/tables/5/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.187.table b/definitions/grib2/tables/5/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.188.table b/definitions/grib2/tables/5/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.189.table b/definitions/grib2/tables/5/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.19.table b/definitions/grib2/tables/5/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.190.table b/definitions/grib2/tables/5/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.191.table b/definitions/grib2/tables/5/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.192.table b/definitions/grib2/tables/5/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.193.table b/definitions/grib2/tables/5/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.194.table b/definitions/grib2/tables/5/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.195.table b/definitions/grib2/tables/5/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.196.table b/definitions/grib2/tables/5/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.197.table b/definitions/grib2/tables/5/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.198.table b/definitions/grib2/tables/5/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.199.table b/definitions/grib2/tables/5/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.2.table b/definitions/grib2/tables/5/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.20.table b/definitions/grib2/tables/5/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.200.table b/definitions/grib2/tables/5/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.201.table b/definitions/grib2/tables/5/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.202.table b/definitions/grib2/tables/5/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.203.table b/definitions/grib2/tables/5/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.204.table b/definitions/grib2/tables/5/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.205.table b/definitions/grib2/tables/5/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.206.table b/definitions/grib2/tables/5/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.207.table b/definitions/grib2/tables/5/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.208.table b/definitions/grib2/tables/5/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.209.table b/definitions/grib2/tables/5/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.21.table b/definitions/grib2/tables/5/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.210.table b/definitions/grib2/tables/5/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.211.table b/definitions/grib2/tables/5/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.212.table b/definitions/grib2/tables/5/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.213.table b/definitions/grib2/tables/5/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.214.table b/definitions/grib2/tables/5/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.215.table b/definitions/grib2/tables/5/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.216.table b/definitions/grib2/tables/5/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.217.table b/definitions/grib2/tables/5/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.218.table b/definitions/grib2/tables/5/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.219.table b/definitions/grib2/tables/5/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.22.table b/definitions/grib2/tables/5/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.220.table b/definitions/grib2/tables/5/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.221.table b/definitions/grib2/tables/5/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.222.table b/definitions/grib2/tables/5/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.223.table b/definitions/grib2/tables/5/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.224.table b/definitions/grib2/tables/5/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.225.table b/definitions/grib2/tables/5/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.226.table b/definitions/grib2/tables/5/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.227.table b/definitions/grib2/tables/5/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.228.table b/definitions/grib2/tables/5/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.229.table b/definitions/grib2/tables/5/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.23.table b/definitions/grib2/tables/5/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.230.table b/definitions/grib2/tables/5/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.231.table b/definitions/grib2/tables/5/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.232.table b/definitions/grib2/tables/5/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.233.table b/definitions/grib2/tables/5/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.234.table b/definitions/grib2/tables/5/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.235.table b/definitions/grib2/tables/5/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.236.table b/definitions/grib2/tables/5/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.237.table b/definitions/grib2/tables/5/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.238.table b/definitions/grib2/tables/5/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.239.table b/definitions/grib2/tables/5/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.24.table b/definitions/grib2/tables/5/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.240.table b/definitions/grib2/tables/5/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.241.table b/definitions/grib2/tables/5/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.242.table b/definitions/grib2/tables/5/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.243.table b/definitions/grib2/tables/5/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.244.table b/definitions/grib2/tables/5/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.245.table b/definitions/grib2/tables/5/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.246.table b/definitions/grib2/tables/5/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.247.table b/definitions/grib2/tables/5/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.248.table b/definitions/grib2/tables/5/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.249.table b/definitions/grib2/tables/5/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.25.table b/definitions/grib2/tables/5/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.250.table b/definitions/grib2/tables/5/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.251.table b/definitions/grib2/tables/5/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.252.table b/definitions/grib2/tables/5/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.253.table b/definitions/grib2/tables/5/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.254.table b/definitions/grib2/tables/5/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.255.table b/definitions/grib2/tables/5/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.26.table b/definitions/grib2/tables/5/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.27.table b/definitions/grib2/tables/5/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.28.table b/definitions/grib2/tables/5/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.29.table b/definitions/grib2/tables/5/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.3.table b/definitions/grib2/tables/5/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.30.table b/definitions/grib2/tables/5/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.31.table b/definitions/grib2/tables/5/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.32.table b/definitions/grib2/tables/5/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.33.table b/definitions/grib2/tables/5/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.34.table b/definitions/grib2/tables/5/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.35.table b/definitions/grib2/tables/5/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.36.table b/definitions/grib2/tables/5/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.37.table b/definitions/grib2/tables/5/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.38.table b/definitions/grib2/tables/5/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.39.table b/definitions/grib2/tables/5/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.4.table b/definitions/grib2/tables/5/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.40.table b/definitions/grib2/tables/5/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.41.table b/definitions/grib2/tables/5/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.42.table b/definitions/grib2/tables/5/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.43.table b/definitions/grib2/tables/5/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.44.table b/definitions/grib2/tables/5/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.45.table b/definitions/grib2/tables/5/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.46.table b/definitions/grib2/tables/5/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.47.table b/definitions/grib2/tables/5/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.48.table b/definitions/grib2/tables/5/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.49.table b/definitions/grib2/tables/5/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.5.table b/definitions/grib2/tables/5/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.50.table b/definitions/grib2/tables/5/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.51.table b/definitions/grib2/tables/5/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.52.table b/definitions/grib2/tables/5/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.53.table b/definitions/grib2/tables/5/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.54.table b/definitions/grib2/tables/5/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.55.table b/definitions/grib2/tables/5/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.56.table b/definitions/grib2/tables/5/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.57.table b/definitions/grib2/tables/5/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.58.table b/definitions/grib2/tables/5/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.59.table b/definitions/grib2/tables/5/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.6.table b/definitions/grib2/tables/5/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.60.table b/definitions/grib2/tables/5/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.61.table b/definitions/grib2/tables/5/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.62.table b/definitions/grib2/tables/5/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.63.table b/definitions/grib2/tables/5/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.64.table b/definitions/grib2/tables/5/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.65.table b/definitions/grib2/tables/5/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.66.table b/definitions/grib2/tables/5/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.67.table b/definitions/grib2/tables/5/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.68.table b/definitions/grib2/tables/5/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.69.table b/definitions/grib2/tables/5/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.7.table b/definitions/grib2/tables/5/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.70.table b/definitions/grib2/tables/5/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.71.table b/definitions/grib2/tables/5/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.72.table b/definitions/grib2/tables/5/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.73.table b/definitions/grib2/tables/5/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.74.table b/definitions/grib2/tables/5/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.75.table b/definitions/grib2/tables/5/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.76.table b/definitions/grib2/tables/5/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.77.table b/definitions/grib2/tables/5/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.78.table b/definitions/grib2/tables/5/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.79.table b/definitions/grib2/tables/5/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.8.table b/definitions/grib2/tables/5/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.80.table b/definitions/grib2/tables/5/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.81.table b/definitions/grib2/tables/5/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.82.table b/definitions/grib2/tables/5/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.83.table b/definitions/grib2/tables/5/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.84.table b/definitions/grib2/tables/5/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.85.table b/definitions/grib2/tables/5/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.86.table b/definitions/grib2/tables/5/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.87.table b/definitions/grib2/tables/5/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.88.table b/definitions/grib2/tables/5/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.89.table b/definitions/grib2/tables/5/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.9.table b/definitions/grib2/tables/5/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.90.table b/definitions/grib2/tables/5/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.91.table b/definitions/grib2/tables/5/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.92.table b/definitions/grib2/tables/5/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.93.table b/definitions/grib2/tables/5/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.94.table b/definitions/grib2/tables/5/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.95.table b/definitions/grib2/tables/5/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.96.table b/definitions/grib2/tables/5/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.97.table b/definitions/grib2/tables/5/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.98.table b/definitions/grib2/tables/5/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/5/4.2.192.99.table b/definitions/grib2/tables/5/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/5/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.1.192.table b/definitions/grib2/tables/6/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/6/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/6/4.2.192.0.table b/definitions/grib2/tables/6/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.1.table b/definitions/grib2/tables/6/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.10.table b/definitions/grib2/tables/6/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.100.table b/definitions/grib2/tables/6/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.101.table b/definitions/grib2/tables/6/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.102.table b/definitions/grib2/tables/6/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.103.table b/definitions/grib2/tables/6/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.104.table b/definitions/grib2/tables/6/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.105.table b/definitions/grib2/tables/6/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.106.table b/definitions/grib2/tables/6/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.107.table b/definitions/grib2/tables/6/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.108.table b/definitions/grib2/tables/6/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.109.table b/definitions/grib2/tables/6/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.11.table b/definitions/grib2/tables/6/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.110.table b/definitions/grib2/tables/6/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.111.table b/definitions/grib2/tables/6/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.112.table b/definitions/grib2/tables/6/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.113.table b/definitions/grib2/tables/6/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.114.table b/definitions/grib2/tables/6/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.115.table b/definitions/grib2/tables/6/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.116.table b/definitions/grib2/tables/6/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.117.table b/definitions/grib2/tables/6/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.118.table b/definitions/grib2/tables/6/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.119.table b/definitions/grib2/tables/6/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.12.table b/definitions/grib2/tables/6/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.120.table b/definitions/grib2/tables/6/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.121.table b/definitions/grib2/tables/6/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.122.table b/definitions/grib2/tables/6/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.123.table b/definitions/grib2/tables/6/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.124.table b/definitions/grib2/tables/6/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.125.table b/definitions/grib2/tables/6/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.126.table b/definitions/grib2/tables/6/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.127.table b/definitions/grib2/tables/6/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.128.table b/definitions/grib2/tables/6/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.129.table b/definitions/grib2/tables/6/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.13.table b/definitions/grib2/tables/6/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.130.table b/definitions/grib2/tables/6/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.131.table b/definitions/grib2/tables/6/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.132.table b/definitions/grib2/tables/6/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.133.table b/definitions/grib2/tables/6/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.134.table b/definitions/grib2/tables/6/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.135.table b/definitions/grib2/tables/6/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.136.table b/definitions/grib2/tables/6/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.137.table b/definitions/grib2/tables/6/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.138.table b/definitions/grib2/tables/6/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.139.table b/definitions/grib2/tables/6/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.14.table b/definitions/grib2/tables/6/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.140.table b/definitions/grib2/tables/6/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.141.table b/definitions/grib2/tables/6/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.142.table b/definitions/grib2/tables/6/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.143.table b/definitions/grib2/tables/6/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.144.table b/definitions/grib2/tables/6/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.145.table b/definitions/grib2/tables/6/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.146.table b/definitions/grib2/tables/6/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.147.table b/definitions/grib2/tables/6/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.148.table b/definitions/grib2/tables/6/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.149.table b/definitions/grib2/tables/6/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.15.table b/definitions/grib2/tables/6/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.150.table b/definitions/grib2/tables/6/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.151.table b/definitions/grib2/tables/6/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.152.table b/definitions/grib2/tables/6/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.153.table b/definitions/grib2/tables/6/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.154.table b/definitions/grib2/tables/6/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.155.table b/definitions/grib2/tables/6/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.156.table b/definitions/grib2/tables/6/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.157.table b/definitions/grib2/tables/6/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.158.table b/definitions/grib2/tables/6/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.159.table b/definitions/grib2/tables/6/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.16.table b/definitions/grib2/tables/6/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.160.table b/definitions/grib2/tables/6/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.161.table b/definitions/grib2/tables/6/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.162.table b/definitions/grib2/tables/6/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.163.table b/definitions/grib2/tables/6/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.164.table b/definitions/grib2/tables/6/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.165.table b/definitions/grib2/tables/6/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.166.table b/definitions/grib2/tables/6/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.167.table b/definitions/grib2/tables/6/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.168.table b/definitions/grib2/tables/6/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.169.table b/definitions/grib2/tables/6/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.17.table b/definitions/grib2/tables/6/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.170.table b/definitions/grib2/tables/6/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.171.table b/definitions/grib2/tables/6/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.172.table b/definitions/grib2/tables/6/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.173.table b/definitions/grib2/tables/6/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.174.table b/definitions/grib2/tables/6/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.175.table b/definitions/grib2/tables/6/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.176.table b/definitions/grib2/tables/6/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.177.table b/definitions/grib2/tables/6/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.178.table b/definitions/grib2/tables/6/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.179.table b/definitions/grib2/tables/6/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.18.table b/definitions/grib2/tables/6/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.180.table b/definitions/grib2/tables/6/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.181.table b/definitions/grib2/tables/6/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.182.table b/definitions/grib2/tables/6/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.183.table b/definitions/grib2/tables/6/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.184.table b/definitions/grib2/tables/6/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.185.table b/definitions/grib2/tables/6/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.186.table b/definitions/grib2/tables/6/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.187.table b/definitions/grib2/tables/6/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.188.table b/definitions/grib2/tables/6/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.189.table b/definitions/grib2/tables/6/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.19.table b/definitions/grib2/tables/6/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.190.table b/definitions/grib2/tables/6/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.191.table b/definitions/grib2/tables/6/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.192.table b/definitions/grib2/tables/6/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.193.table b/definitions/grib2/tables/6/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.194.table b/definitions/grib2/tables/6/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.195.table b/definitions/grib2/tables/6/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.196.table b/definitions/grib2/tables/6/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.197.table b/definitions/grib2/tables/6/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.198.table b/definitions/grib2/tables/6/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.199.table b/definitions/grib2/tables/6/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.2.table b/definitions/grib2/tables/6/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.20.table b/definitions/grib2/tables/6/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.200.table b/definitions/grib2/tables/6/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.201.table b/definitions/grib2/tables/6/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.202.table b/definitions/grib2/tables/6/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.203.table b/definitions/grib2/tables/6/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.204.table b/definitions/grib2/tables/6/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.205.table b/definitions/grib2/tables/6/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.206.table b/definitions/grib2/tables/6/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.207.table b/definitions/grib2/tables/6/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.208.table b/definitions/grib2/tables/6/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.209.table b/definitions/grib2/tables/6/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.21.table b/definitions/grib2/tables/6/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.210.table b/definitions/grib2/tables/6/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.211.table b/definitions/grib2/tables/6/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.212.table b/definitions/grib2/tables/6/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.213.table b/definitions/grib2/tables/6/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.214.table b/definitions/grib2/tables/6/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.215.table b/definitions/grib2/tables/6/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.216.table b/definitions/grib2/tables/6/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.217.table b/definitions/grib2/tables/6/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.218.table b/definitions/grib2/tables/6/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.219.table b/definitions/grib2/tables/6/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.22.table b/definitions/grib2/tables/6/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.220.table b/definitions/grib2/tables/6/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.221.table b/definitions/grib2/tables/6/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.222.table b/definitions/grib2/tables/6/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.223.table b/definitions/grib2/tables/6/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.224.table b/definitions/grib2/tables/6/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.225.table b/definitions/grib2/tables/6/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.226.table b/definitions/grib2/tables/6/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.227.table b/definitions/grib2/tables/6/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.228.table b/definitions/grib2/tables/6/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.229.table b/definitions/grib2/tables/6/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.23.table b/definitions/grib2/tables/6/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.230.table b/definitions/grib2/tables/6/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.231.table b/definitions/grib2/tables/6/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.232.table b/definitions/grib2/tables/6/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.233.table b/definitions/grib2/tables/6/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.234.table b/definitions/grib2/tables/6/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.235.table b/definitions/grib2/tables/6/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.236.table b/definitions/grib2/tables/6/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.237.table b/definitions/grib2/tables/6/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.238.table b/definitions/grib2/tables/6/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.239.table b/definitions/grib2/tables/6/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.24.table b/definitions/grib2/tables/6/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.240.table b/definitions/grib2/tables/6/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.241.table b/definitions/grib2/tables/6/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.242.table b/definitions/grib2/tables/6/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.243.table b/definitions/grib2/tables/6/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.244.table b/definitions/grib2/tables/6/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.245.table b/definitions/grib2/tables/6/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.246.table b/definitions/grib2/tables/6/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.247.table b/definitions/grib2/tables/6/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.248.table b/definitions/grib2/tables/6/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.249.table b/definitions/grib2/tables/6/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.25.table b/definitions/grib2/tables/6/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.250.table b/definitions/grib2/tables/6/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.251.table b/definitions/grib2/tables/6/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.252.table b/definitions/grib2/tables/6/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.253.table b/definitions/grib2/tables/6/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.254.table b/definitions/grib2/tables/6/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.255.table b/definitions/grib2/tables/6/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.26.table b/definitions/grib2/tables/6/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.27.table b/definitions/grib2/tables/6/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.28.table b/definitions/grib2/tables/6/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.29.table b/definitions/grib2/tables/6/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.3.table b/definitions/grib2/tables/6/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.30.table b/definitions/grib2/tables/6/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.31.table b/definitions/grib2/tables/6/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.32.table b/definitions/grib2/tables/6/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.33.table b/definitions/grib2/tables/6/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.34.table b/definitions/grib2/tables/6/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.35.table b/definitions/grib2/tables/6/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.36.table b/definitions/grib2/tables/6/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.37.table b/definitions/grib2/tables/6/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.38.table b/definitions/grib2/tables/6/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.39.table b/definitions/grib2/tables/6/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.4.table b/definitions/grib2/tables/6/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.40.table b/definitions/grib2/tables/6/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.41.table b/definitions/grib2/tables/6/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.42.table b/definitions/grib2/tables/6/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.43.table b/definitions/grib2/tables/6/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.44.table b/definitions/grib2/tables/6/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.45.table b/definitions/grib2/tables/6/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.46.table b/definitions/grib2/tables/6/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.47.table b/definitions/grib2/tables/6/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.48.table b/definitions/grib2/tables/6/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.49.table b/definitions/grib2/tables/6/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.5.table b/definitions/grib2/tables/6/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.50.table b/definitions/grib2/tables/6/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.51.table b/definitions/grib2/tables/6/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.52.table b/definitions/grib2/tables/6/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.53.table b/definitions/grib2/tables/6/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.54.table b/definitions/grib2/tables/6/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.55.table b/definitions/grib2/tables/6/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.56.table b/definitions/grib2/tables/6/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.57.table b/definitions/grib2/tables/6/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.58.table b/definitions/grib2/tables/6/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.59.table b/definitions/grib2/tables/6/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.6.table b/definitions/grib2/tables/6/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.60.table b/definitions/grib2/tables/6/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.61.table b/definitions/grib2/tables/6/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.62.table b/definitions/grib2/tables/6/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.63.table b/definitions/grib2/tables/6/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.64.table b/definitions/grib2/tables/6/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.65.table b/definitions/grib2/tables/6/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.66.table b/definitions/grib2/tables/6/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.67.table b/definitions/grib2/tables/6/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.68.table b/definitions/grib2/tables/6/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.69.table b/definitions/grib2/tables/6/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.7.table b/definitions/grib2/tables/6/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.70.table b/definitions/grib2/tables/6/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.71.table b/definitions/grib2/tables/6/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.72.table b/definitions/grib2/tables/6/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.73.table b/definitions/grib2/tables/6/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.74.table b/definitions/grib2/tables/6/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.75.table b/definitions/grib2/tables/6/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.76.table b/definitions/grib2/tables/6/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.77.table b/definitions/grib2/tables/6/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.78.table b/definitions/grib2/tables/6/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.79.table b/definitions/grib2/tables/6/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.8.table b/definitions/grib2/tables/6/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.80.table b/definitions/grib2/tables/6/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.81.table b/definitions/grib2/tables/6/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.82.table b/definitions/grib2/tables/6/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.83.table b/definitions/grib2/tables/6/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.84.table b/definitions/grib2/tables/6/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.85.table b/definitions/grib2/tables/6/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.86.table b/definitions/grib2/tables/6/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.87.table b/definitions/grib2/tables/6/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.88.table b/definitions/grib2/tables/6/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.89.table b/definitions/grib2/tables/6/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.9.table b/definitions/grib2/tables/6/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.90.table b/definitions/grib2/tables/6/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.91.table b/definitions/grib2/tables/6/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.92.table b/definitions/grib2/tables/6/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.93.table b/definitions/grib2/tables/6/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.94.table b/definitions/grib2/tables/6/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.95.table b/definitions/grib2/tables/6/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.96.table b/definitions/grib2/tables/6/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.97.table b/definitions/grib2/tables/6/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.98.table b/definitions/grib2/tables/6/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/6/4.2.192.99.table b/definitions/grib2/tables/6/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/6/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.1.192.table b/definitions/grib2/tables/7/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/7/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/7/4.2.192.0.table b/definitions/grib2/tables/7/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.1.table b/definitions/grib2/tables/7/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.10.table b/definitions/grib2/tables/7/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.100.table b/definitions/grib2/tables/7/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.101.table b/definitions/grib2/tables/7/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.102.table b/definitions/grib2/tables/7/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.103.table b/definitions/grib2/tables/7/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.104.table b/definitions/grib2/tables/7/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.105.table b/definitions/grib2/tables/7/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.106.table b/definitions/grib2/tables/7/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.107.table b/definitions/grib2/tables/7/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.108.table b/definitions/grib2/tables/7/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.109.table b/definitions/grib2/tables/7/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.11.table b/definitions/grib2/tables/7/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.110.table b/definitions/grib2/tables/7/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.111.table b/definitions/grib2/tables/7/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.112.table b/definitions/grib2/tables/7/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.113.table b/definitions/grib2/tables/7/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.114.table b/definitions/grib2/tables/7/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.115.table b/definitions/grib2/tables/7/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.116.table b/definitions/grib2/tables/7/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.117.table b/definitions/grib2/tables/7/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.118.table b/definitions/grib2/tables/7/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.119.table b/definitions/grib2/tables/7/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.12.table b/definitions/grib2/tables/7/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.120.table b/definitions/grib2/tables/7/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.121.table b/definitions/grib2/tables/7/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.122.table b/definitions/grib2/tables/7/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.123.table b/definitions/grib2/tables/7/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.124.table b/definitions/grib2/tables/7/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.125.table b/definitions/grib2/tables/7/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.126.table b/definitions/grib2/tables/7/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.127.table b/definitions/grib2/tables/7/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.128.table b/definitions/grib2/tables/7/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.129.table b/definitions/grib2/tables/7/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.13.table b/definitions/grib2/tables/7/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.130.table b/definitions/grib2/tables/7/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.131.table b/definitions/grib2/tables/7/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.132.table b/definitions/grib2/tables/7/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.133.table b/definitions/grib2/tables/7/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.134.table b/definitions/grib2/tables/7/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.135.table b/definitions/grib2/tables/7/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.136.table b/definitions/grib2/tables/7/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.137.table b/definitions/grib2/tables/7/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.138.table b/definitions/grib2/tables/7/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.139.table b/definitions/grib2/tables/7/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.14.table b/definitions/grib2/tables/7/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.140.table b/definitions/grib2/tables/7/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.141.table b/definitions/grib2/tables/7/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.142.table b/definitions/grib2/tables/7/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.143.table b/definitions/grib2/tables/7/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.144.table b/definitions/grib2/tables/7/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.145.table b/definitions/grib2/tables/7/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.146.table b/definitions/grib2/tables/7/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.147.table b/definitions/grib2/tables/7/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.148.table b/definitions/grib2/tables/7/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.149.table b/definitions/grib2/tables/7/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.15.table b/definitions/grib2/tables/7/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.150.table b/definitions/grib2/tables/7/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.151.table b/definitions/grib2/tables/7/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.152.table b/definitions/grib2/tables/7/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.153.table b/definitions/grib2/tables/7/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.154.table b/definitions/grib2/tables/7/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.155.table b/definitions/grib2/tables/7/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.156.table b/definitions/grib2/tables/7/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.157.table b/definitions/grib2/tables/7/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.158.table b/definitions/grib2/tables/7/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.159.table b/definitions/grib2/tables/7/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.16.table b/definitions/grib2/tables/7/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.160.table b/definitions/grib2/tables/7/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.161.table b/definitions/grib2/tables/7/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.162.table b/definitions/grib2/tables/7/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.163.table b/definitions/grib2/tables/7/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.164.table b/definitions/grib2/tables/7/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.165.table b/definitions/grib2/tables/7/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.166.table b/definitions/grib2/tables/7/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.167.table b/definitions/grib2/tables/7/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.168.table b/definitions/grib2/tables/7/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.169.table b/definitions/grib2/tables/7/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.17.table b/definitions/grib2/tables/7/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.170.table b/definitions/grib2/tables/7/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.171.table b/definitions/grib2/tables/7/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.172.table b/definitions/grib2/tables/7/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.173.table b/definitions/grib2/tables/7/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.174.table b/definitions/grib2/tables/7/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.175.table b/definitions/grib2/tables/7/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.176.table b/definitions/grib2/tables/7/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.177.table b/definitions/grib2/tables/7/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.178.table b/definitions/grib2/tables/7/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.179.table b/definitions/grib2/tables/7/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.18.table b/definitions/grib2/tables/7/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.180.table b/definitions/grib2/tables/7/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.181.table b/definitions/grib2/tables/7/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.182.table b/definitions/grib2/tables/7/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.183.table b/definitions/grib2/tables/7/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.184.table b/definitions/grib2/tables/7/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.185.table b/definitions/grib2/tables/7/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.186.table b/definitions/grib2/tables/7/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.187.table b/definitions/grib2/tables/7/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.188.table b/definitions/grib2/tables/7/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.189.table b/definitions/grib2/tables/7/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.19.table b/definitions/grib2/tables/7/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.190.table b/definitions/grib2/tables/7/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.191.table b/definitions/grib2/tables/7/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.192.table b/definitions/grib2/tables/7/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.193.table b/definitions/grib2/tables/7/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.194.table b/definitions/grib2/tables/7/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.195.table b/definitions/grib2/tables/7/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.196.table b/definitions/grib2/tables/7/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.197.table b/definitions/grib2/tables/7/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.198.table b/definitions/grib2/tables/7/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.199.table b/definitions/grib2/tables/7/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.2.table b/definitions/grib2/tables/7/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.20.table b/definitions/grib2/tables/7/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.200.table b/definitions/grib2/tables/7/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.201.table b/definitions/grib2/tables/7/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.202.table b/definitions/grib2/tables/7/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.203.table b/definitions/grib2/tables/7/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.204.table b/definitions/grib2/tables/7/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.205.table b/definitions/grib2/tables/7/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.206.table b/definitions/grib2/tables/7/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.207.table b/definitions/grib2/tables/7/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.208.table b/definitions/grib2/tables/7/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.209.table b/definitions/grib2/tables/7/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.21.table b/definitions/grib2/tables/7/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.210.table b/definitions/grib2/tables/7/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.211.table b/definitions/grib2/tables/7/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.212.table b/definitions/grib2/tables/7/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.213.table b/definitions/grib2/tables/7/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.214.table b/definitions/grib2/tables/7/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.215.table b/definitions/grib2/tables/7/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.216.table b/definitions/grib2/tables/7/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.217.table b/definitions/grib2/tables/7/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.218.table b/definitions/grib2/tables/7/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.219.table b/definitions/grib2/tables/7/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.22.table b/definitions/grib2/tables/7/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.220.table b/definitions/grib2/tables/7/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.221.table b/definitions/grib2/tables/7/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.222.table b/definitions/grib2/tables/7/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.223.table b/definitions/grib2/tables/7/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.224.table b/definitions/grib2/tables/7/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.225.table b/definitions/grib2/tables/7/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.226.table b/definitions/grib2/tables/7/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.227.table b/definitions/grib2/tables/7/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.228.table b/definitions/grib2/tables/7/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.229.table b/definitions/grib2/tables/7/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.23.table b/definitions/grib2/tables/7/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.230.table b/definitions/grib2/tables/7/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.231.table b/definitions/grib2/tables/7/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.232.table b/definitions/grib2/tables/7/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.233.table b/definitions/grib2/tables/7/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.234.table b/definitions/grib2/tables/7/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.235.table b/definitions/grib2/tables/7/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.236.table b/definitions/grib2/tables/7/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.237.table b/definitions/grib2/tables/7/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.238.table b/definitions/grib2/tables/7/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.239.table b/definitions/grib2/tables/7/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.24.table b/definitions/grib2/tables/7/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.240.table b/definitions/grib2/tables/7/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.241.table b/definitions/grib2/tables/7/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.242.table b/definitions/grib2/tables/7/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.243.table b/definitions/grib2/tables/7/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.244.table b/definitions/grib2/tables/7/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.245.table b/definitions/grib2/tables/7/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.246.table b/definitions/grib2/tables/7/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.247.table b/definitions/grib2/tables/7/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.248.table b/definitions/grib2/tables/7/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.249.table b/definitions/grib2/tables/7/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.25.table b/definitions/grib2/tables/7/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.250.table b/definitions/grib2/tables/7/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.251.table b/definitions/grib2/tables/7/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.252.table b/definitions/grib2/tables/7/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.253.table b/definitions/grib2/tables/7/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.254.table b/definitions/grib2/tables/7/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.255.table b/definitions/grib2/tables/7/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.26.table b/definitions/grib2/tables/7/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.27.table b/definitions/grib2/tables/7/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.28.table b/definitions/grib2/tables/7/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.29.table b/definitions/grib2/tables/7/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.3.table b/definitions/grib2/tables/7/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.30.table b/definitions/grib2/tables/7/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.31.table b/definitions/grib2/tables/7/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.32.table b/definitions/grib2/tables/7/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.33.table b/definitions/grib2/tables/7/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.34.table b/definitions/grib2/tables/7/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.35.table b/definitions/grib2/tables/7/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.36.table b/definitions/grib2/tables/7/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.37.table b/definitions/grib2/tables/7/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.38.table b/definitions/grib2/tables/7/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.39.table b/definitions/grib2/tables/7/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.4.table b/definitions/grib2/tables/7/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.40.table b/definitions/grib2/tables/7/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.41.table b/definitions/grib2/tables/7/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.42.table b/definitions/grib2/tables/7/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.43.table b/definitions/grib2/tables/7/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.44.table b/definitions/grib2/tables/7/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.45.table b/definitions/grib2/tables/7/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.46.table b/definitions/grib2/tables/7/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.47.table b/definitions/grib2/tables/7/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.48.table b/definitions/grib2/tables/7/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.49.table b/definitions/grib2/tables/7/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.5.table b/definitions/grib2/tables/7/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.50.table b/definitions/grib2/tables/7/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.51.table b/definitions/grib2/tables/7/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.52.table b/definitions/grib2/tables/7/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.53.table b/definitions/grib2/tables/7/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.54.table b/definitions/grib2/tables/7/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.55.table b/definitions/grib2/tables/7/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.56.table b/definitions/grib2/tables/7/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.57.table b/definitions/grib2/tables/7/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.58.table b/definitions/grib2/tables/7/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.59.table b/definitions/grib2/tables/7/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.6.table b/definitions/grib2/tables/7/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.60.table b/definitions/grib2/tables/7/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.61.table b/definitions/grib2/tables/7/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.62.table b/definitions/grib2/tables/7/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.63.table b/definitions/grib2/tables/7/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.64.table b/definitions/grib2/tables/7/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.65.table b/definitions/grib2/tables/7/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.66.table b/definitions/grib2/tables/7/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.67.table b/definitions/grib2/tables/7/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.68.table b/definitions/grib2/tables/7/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.69.table b/definitions/grib2/tables/7/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.7.table b/definitions/grib2/tables/7/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.70.table b/definitions/grib2/tables/7/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.71.table b/definitions/grib2/tables/7/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.72.table b/definitions/grib2/tables/7/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.73.table b/definitions/grib2/tables/7/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.74.table b/definitions/grib2/tables/7/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.75.table b/definitions/grib2/tables/7/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.76.table b/definitions/grib2/tables/7/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.77.table b/definitions/grib2/tables/7/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.78.table b/definitions/grib2/tables/7/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.79.table b/definitions/grib2/tables/7/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.8.table b/definitions/grib2/tables/7/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.80.table b/definitions/grib2/tables/7/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.81.table b/definitions/grib2/tables/7/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.82.table b/definitions/grib2/tables/7/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.83.table b/definitions/grib2/tables/7/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.84.table b/definitions/grib2/tables/7/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.85.table b/definitions/grib2/tables/7/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.86.table b/definitions/grib2/tables/7/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.87.table b/definitions/grib2/tables/7/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.88.table b/definitions/grib2/tables/7/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.89.table b/definitions/grib2/tables/7/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.9.table b/definitions/grib2/tables/7/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.90.table b/definitions/grib2/tables/7/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.91.table b/definitions/grib2/tables/7/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.92.table b/definitions/grib2/tables/7/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.93.table b/definitions/grib2/tables/7/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.94.table b/definitions/grib2/tables/7/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.95.table b/definitions/grib2/tables/7/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.96.table b/definitions/grib2/tables/7/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.97.table b/definitions/grib2/tables/7/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.98.table b/definitions/grib2/tables/7/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/7/4.2.192.99.table b/definitions/grib2/tables/7/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/7/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.1.192.table b/definitions/grib2/tables/8/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/8/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/8/4.2.192.0.table b/definitions/grib2/tables/8/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.1.table b/definitions/grib2/tables/8/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.10.table b/definitions/grib2/tables/8/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.100.table b/definitions/grib2/tables/8/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.101.table b/definitions/grib2/tables/8/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.102.table b/definitions/grib2/tables/8/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.103.table b/definitions/grib2/tables/8/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.104.table b/definitions/grib2/tables/8/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.105.table b/definitions/grib2/tables/8/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.106.table b/definitions/grib2/tables/8/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.107.table b/definitions/grib2/tables/8/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.108.table b/definitions/grib2/tables/8/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.109.table b/definitions/grib2/tables/8/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.11.table b/definitions/grib2/tables/8/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.110.table b/definitions/grib2/tables/8/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.111.table b/definitions/grib2/tables/8/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.112.table b/definitions/grib2/tables/8/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.113.table b/definitions/grib2/tables/8/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.114.table b/definitions/grib2/tables/8/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.115.table b/definitions/grib2/tables/8/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.116.table b/definitions/grib2/tables/8/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.117.table b/definitions/grib2/tables/8/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.118.table b/definitions/grib2/tables/8/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.119.table b/definitions/grib2/tables/8/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.12.table b/definitions/grib2/tables/8/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.120.table b/definitions/grib2/tables/8/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.121.table b/definitions/grib2/tables/8/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.122.table b/definitions/grib2/tables/8/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.123.table b/definitions/grib2/tables/8/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.124.table b/definitions/grib2/tables/8/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.125.table b/definitions/grib2/tables/8/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.126.table b/definitions/grib2/tables/8/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.127.table b/definitions/grib2/tables/8/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.128.table b/definitions/grib2/tables/8/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.129.table b/definitions/grib2/tables/8/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.13.table b/definitions/grib2/tables/8/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.130.table b/definitions/grib2/tables/8/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.131.table b/definitions/grib2/tables/8/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.132.table b/definitions/grib2/tables/8/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.133.table b/definitions/grib2/tables/8/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.134.table b/definitions/grib2/tables/8/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.135.table b/definitions/grib2/tables/8/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.136.table b/definitions/grib2/tables/8/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.137.table b/definitions/grib2/tables/8/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.138.table b/definitions/grib2/tables/8/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.139.table b/definitions/grib2/tables/8/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.14.table b/definitions/grib2/tables/8/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.140.table b/definitions/grib2/tables/8/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.141.table b/definitions/grib2/tables/8/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.142.table b/definitions/grib2/tables/8/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.143.table b/definitions/grib2/tables/8/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.144.table b/definitions/grib2/tables/8/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.145.table b/definitions/grib2/tables/8/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.146.table b/definitions/grib2/tables/8/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.147.table b/definitions/grib2/tables/8/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.148.table b/definitions/grib2/tables/8/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.149.table b/definitions/grib2/tables/8/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.15.table b/definitions/grib2/tables/8/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.150.table b/definitions/grib2/tables/8/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.151.table b/definitions/grib2/tables/8/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.152.table b/definitions/grib2/tables/8/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.153.table b/definitions/grib2/tables/8/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.154.table b/definitions/grib2/tables/8/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.155.table b/definitions/grib2/tables/8/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.156.table b/definitions/grib2/tables/8/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.157.table b/definitions/grib2/tables/8/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.158.table b/definitions/grib2/tables/8/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.159.table b/definitions/grib2/tables/8/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.16.table b/definitions/grib2/tables/8/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.160.table b/definitions/grib2/tables/8/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.161.table b/definitions/grib2/tables/8/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.162.table b/definitions/grib2/tables/8/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.163.table b/definitions/grib2/tables/8/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.164.table b/definitions/grib2/tables/8/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.165.table b/definitions/grib2/tables/8/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.166.table b/definitions/grib2/tables/8/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.167.table b/definitions/grib2/tables/8/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.168.table b/definitions/grib2/tables/8/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.169.table b/definitions/grib2/tables/8/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.17.table b/definitions/grib2/tables/8/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.170.table b/definitions/grib2/tables/8/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.171.table b/definitions/grib2/tables/8/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.172.table b/definitions/grib2/tables/8/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.173.table b/definitions/grib2/tables/8/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.174.table b/definitions/grib2/tables/8/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.175.table b/definitions/grib2/tables/8/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.176.table b/definitions/grib2/tables/8/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.177.table b/definitions/grib2/tables/8/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.178.table b/definitions/grib2/tables/8/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.179.table b/definitions/grib2/tables/8/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.18.table b/definitions/grib2/tables/8/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.180.table b/definitions/grib2/tables/8/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.181.table b/definitions/grib2/tables/8/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.182.table b/definitions/grib2/tables/8/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.183.table b/definitions/grib2/tables/8/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.184.table b/definitions/grib2/tables/8/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.185.table b/definitions/grib2/tables/8/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.186.table b/definitions/grib2/tables/8/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.187.table b/definitions/grib2/tables/8/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.188.table b/definitions/grib2/tables/8/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.189.table b/definitions/grib2/tables/8/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.19.table b/definitions/grib2/tables/8/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.190.table b/definitions/grib2/tables/8/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.191.table b/definitions/grib2/tables/8/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.192.table b/definitions/grib2/tables/8/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.193.table b/definitions/grib2/tables/8/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.194.table b/definitions/grib2/tables/8/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.195.table b/definitions/grib2/tables/8/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.196.table b/definitions/grib2/tables/8/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.197.table b/definitions/grib2/tables/8/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.198.table b/definitions/grib2/tables/8/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.199.table b/definitions/grib2/tables/8/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.2.table b/definitions/grib2/tables/8/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.20.table b/definitions/grib2/tables/8/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.200.table b/definitions/grib2/tables/8/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.201.table b/definitions/grib2/tables/8/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.202.table b/definitions/grib2/tables/8/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.203.table b/definitions/grib2/tables/8/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.204.table b/definitions/grib2/tables/8/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.205.table b/definitions/grib2/tables/8/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.206.table b/definitions/grib2/tables/8/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.207.table b/definitions/grib2/tables/8/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.208.table b/definitions/grib2/tables/8/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.209.table b/definitions/grib2/tables/8/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.21.table b/definitions/grib2/tables/8/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.210.table b/definitions/grib2/tables/8/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.211.table b/definitions/grib2/tables/8/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.212.table b/definitions/grib2/tables/8/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.213.table b/definitions/grib2/tables/8/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.214.table b/definitions/grib2/tables/8/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.215.table b/definitions/grib2/tables/8/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.216.table b/definitions/grib2/tables/8/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.217.table b/definitions/grib2/tables/8/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.218.table b/definitions/grib2/tables/8/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.219.table b/definitions/grib2/tables/8/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.22.table b/definitions/grib2/tables/8/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.220.table b/definitions/grib2/tables/8/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.221.table b/definitions/grib2/tables/8/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.222.table b/definitions/grib2/tables/8/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.223.table b/definitions/grib2/tables/8/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.224.table b/definitions/grib2/tables/8/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.225.table b/definitions/grib2/tables/8/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.226.table b/definitions/grib2/tables/8/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.227.table b/definitions/grib2/tables/8/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.228.table b/definitions/grib2/tables/8/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.229.table b/definitions/grib2/tables/8/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.23.table b/definitions/grib2/tables/8/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.230.table b/definitions/grib2/tables/8/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.231.table b/definitions/grib2/tables/8/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.232.table b/definitions/grib2/tables/8/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.233.table b/definitions/grib2/tables/8/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.234.table b/definitions/grib2/tables/8/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.235.table b/definitions/grib2/tables/8/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.236.table b/definitions/grib2/tables/8/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.237.table b/definitions/grib2/tables/8/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.238.table b/definitions/grib2/tables/8/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.239.table b/definitions/grib2/tables/8/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.24.table b/definitions/grib2/tables/8/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.240.table b/definitions/grib2/tables/8/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.241.table b/definitions/grib2/tables/8/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.242.table b/definitions/grib2/tables/8/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.243.table b/definitions/grib2/tables/8/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.244.table b/definitions/grib2/tables/8/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.245.table b/definitions/grib2/tables/8/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.246.table b/definitions/grib2/tables/8/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.247.table b/definitions/grib2/tables/8/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.248.table b/definitions/grib2/tables/8/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.249.table b/definitions/grib2/tables/8/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.25.table b/definitions/grib2/tables/8/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.250.table b/definitions/grib2/tables/8/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.251.table b/definitions/grib2/tables/8/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.252.table b/definitions/grib2/tables/8/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.253.table b/definitions/grib2/tables/8/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.254.table b/definitions/grib2/tables/8/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.255.table b/definitions/grib2/tables/8/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.26.table b/definitions/grib2/tables/8/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.27.table b/definitions/grib2/tables/8/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.28.table b/definitions/grib2/tables/8/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.29.table b/definitions/grib2/tables/8/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.3.table b/definitions/grib2/tables/8/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.30.table b/definitions/grib2/tables/8/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.31.table b/definitions/grib2/tables/8/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.32.table b/definitions/grib2/tables/8/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.33.table b/definitions/grib2/tables/8/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.34.table b/definitions/grib2/tables/8/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.35.table b/definitions/grib2/tables/8/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.36.table b/definitions/grib2/tables/8/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.37.table b/definitions/grib2/tables/8/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.38.table b/definitions/grib2/tables/8/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.39.table b/definitions/grib2/tables/8/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.4.table b/definitions/grib2/tables/8/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.40.table b/definitions/grib2/tables/8/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.41.table b/definitions/grib2/tables/8/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.42.table b/definitions/grib2/tables/8/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.43.table b/definitions/grib2/tables/8/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.44.table b/definitions/grib2/tables/8/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.45.table b/definitions/grib2/tables/8/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.46.table b/definitions/grib2/tables/8/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.47.table b/definitions/grib2/tables/8/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.48.table b/definitions/grib2/tables/8/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.49.table b/definitions/grib2/tables/8/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.5.table b/definitions/grib2/tables/8/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.50.table b/definitions/grib2/tables/8/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.51.table b/definitions/grib2/tables/8/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.52.table b/definitions/grib2/tables/8/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.53.table b/definitions/grib2/tables/8/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.54.table b/definitions/grib2/tables/8/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.55.table b/definitions/grib2/tables/8/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.56.table b/definitions/grib2/tables/8/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.57.table b/definitions/grib2/tables/8/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.58.table b/definitions/grib2/tables/8/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.59.table b/definitions/grib2/tables/8/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.6.table b/definitions/grib2/tables/8/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.60.table b/definitions/grib2/tables/8/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.61.table b/definitions/grib2/tables/8/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.62.table b/definitions/grib2/tables/8/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.63.table b/definitions/grib2/tables/8/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.64.table b/definitions/grib2/tables/8/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.65.table b/definitions/grib2/tables/8/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.66.table b/definitions/grib2/tables/8/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.67.table b/definitions/grib2/tables/8/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.68.table b/definitions/grib2/tables/8/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.69.table b/definitions/grib2/tables/8/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.7.table b/definitions/grib2/tables/8/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.70.table b/definitions/grib2/tables/8/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.71.table b/definitions/grib2/tables/8/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.72.table b/definitions/grib2/tables/8/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.73.table b/definitions/grib2/tables/8/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.74.table b/definitions/grib2/tables/8/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.75.table b/definitions/grib2/tables/8/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.76.table b/definitions/grib2/tables/8/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.77.table b/definitions/grib2/tables/8/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.78.table b/definitions/grib2/tables/8/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.79.table b/definitions/grib2/tables/8/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.8.table b/definitions/grib2/tables/8/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.80.table b/definitions/grib2/tables/8/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.81.table b/definitions/grib2/tables/8/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.82.table b/definitions/grib2/tables/8/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.83.table b/definitions/grib2/tables/8/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.84.table b/definitions/grib2/tables/8/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.85.table b/definitions/grib2/tables/8/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.86.table b/definitions/grib2/tables/8/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.87.table b/definitions/grib2/tables/8/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.88.table b/definitions/grib2/tables/8/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.89.table b/definitions/grib2/tables/8/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.9.table b/definitions/grib2/tables/8/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.90.table b/definitions/grib2/tables/8/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.91.table b/definitions/grib2/tables/8/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.92.table b/definitions/grib2/tables/8/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.93.table b/definitions/grib2/tables/8/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.94.table b/definitions/grib2/tables/8/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.95.table b/definitions/grib2/tables/8/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.96.table b/definitions/grib2/tables/8/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.97.table b/definitions/grib2/tables/8/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.98.table b/definitions/grib2/tables/8/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/8/4.2.192.99.table b/definitions/grib2/tables/8/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/8/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.1.192.table b/definitions/grib2/tables/9/4.1.192.table deleted file mode 100644 index 67b962652..000000000 --- a/definitions/grib2/tables/9/4.1.192.table +++ /dev/null @@ -1,3 +0,0 @@ -#Discipline 192: ECMWF local parameters -255 255 Missing - diff --git a/definitions/grib2/tables/9/4.2.192.0.table b/definitions/grib2/tables/9/4.2.192.0.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.0.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.1.table b/definitions/grib2/tables/9/4.2.192.1.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.1.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.10.table b/definitions/grib2/tables/9/4.2.192.10.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.10.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.100.table b/definitions/grib2/tables/9/4.2.192.100.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.100.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.101.table b/definitions/grib2/tables/9/4.2.192.101.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.101.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.102.table b/definitions/grib2/tables/9/4.2.192.102.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.102.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.103.table b/definitions/grib2/tables/9/4.2.192.103.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.103.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.104.table b/definitions/grib2/tables/9/4.2.192.104.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.104.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.105.table b/definitions/grib2/tables/9/4.2.192.105.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.105.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.106.table b/definitions/grib2/tables/9/4.2.192.106.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.106.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.107.table b/definitions/grib2/tables/9/4.2.192.107.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.107.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.108.table b/definitions/grib2/tables/9/4.2.192.108.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.108.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.109.table b/definitions/grib2/tables/9/4.2.192.109.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.109.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.11.table b/definitions/grib2/tables/9/4.2.192.11.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.11.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.110.table b/definitions/grib2/tables/9/4.2.192.110.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.110.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.111.table b/definitions/grib2/tables/9/4.2.192.111.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.111.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.112.table b/definitions/grib2/tables/9/4.2.192.112.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.112.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.113.table b/definitions/grib2/tables/9/4.2.192.113.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.113.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.114.table b/definitions/grib2/tables/9/4.2.192.114.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.114.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.115.table b/definitions/grib2/tables/9/4.2.192.115.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.115.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.116.table b/definitions/grib2/tables/9/4.2.192.116.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.116.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.117.table b/definitions/grib2/tables/9/4.2.192.117.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.117.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.118.table b/definitions/grib2/tables/9/4.2.192.118.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.118.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.119.table b/definitions/grib2/tables/9/4.2.192.119.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.119.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.12.table b/definitions/grib2/tables/9/4.2.192.12.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.12.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.120.table b/definitions/grib2/tables/9/4.2.192.120.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.120.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.121.table b/definitions/grib2/tables/9/4.2.192.121.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.121.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.122.table b/definitions/grib2/tables/9/4.2.192.122.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.122.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.123.table b/definitions/grib2/tables/9/4.2.192.123.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.123.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.124.table b/definitions/grib2/tables/9/4.2.192.124.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.124.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.125.table b/definitions/grib2/tables/9/4.2.192.125.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.125.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.126.table b/definitions/grib2/tables/9/4.2.192.126.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.126.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.127.table b/definitions/grib2/tables/9/4.2.192.127.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.127.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.128.table b/definitions/grib2/tables/9/4.2.192.128.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.128.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.129.table b/definitions/grib2/tables/9/4.2.192.129.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.129.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.13.table b/definitions/grib2/tables/9/4.2.192.13.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.13.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.130.table b/definitions/grib2/tables/9/4.2.192.130.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.130.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.131.table b/definitions/grib2/tables/9/4.2.192.131.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.131.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.132.table b/definitions/grib2/tables/9/4.2.192.132.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.132.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.133.table b/definitions/grib2/tables/9/4.2.192.133.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.133.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.134.table b/definitions/grib2/tables/9/4.2.192.134.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.134.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.135.table b/definitions/grib2/tables/9/4.2.192.135.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.135.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.136.table b/definitions/grib2/tables/9/4.2.192.136.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.136.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.137.table b/definitions/grib2/tables/9/4.2.192.137.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.137.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.138.table b/definitions/grib2/tables/9/4.2.192.138.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.138.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.139.table b/definitions/grib2/tables/9/4.2.192.139.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.139.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.14.table b/definitions/grib2/tables/9/4.2.192.14.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.14.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.140.table b/definitions/grib2/tables/9/4.2.192.140.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.140.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.141.table b/definitions/grib2/tables/9/4.2.192.141.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.141.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.142.table b/definitions/grib2/tables/9/4.2.192.142.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.142.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.143.table b/definitions/grib2/tables/9/4.2.192.143.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.143.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.144.table b/definitions/grib2/tables/9/4.2.192.144.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.144.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.145.table b/definitions/grib2/tables/9/4.2.192.145.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.145.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.146.table b/definitions/grib2/tables/9/4.2.192.146.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.146.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.147.table b/definitions/grib2/tables/9/4.2.192.147.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.147.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.148.table b/definitions/grib2/tables/9/4.2.192.148.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.148.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.149.table b/definitions/grib2/tables/9/4.2.192.149.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.149.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.15.table b/definitions/grib2/tables/9/4.2.192.15.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.15.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.150.table b/definitions/grib2/tables/9/4.2.192.150.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.150.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.151.table b/definitions/grib2/tables/9/4.2.192.151.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.151.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.152.table b/definitions/grib2/tables/9/4.2.192.152.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.152.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.153.table b/definitions/grib2/tables/9/4.2.192.153.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.153.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.154.table b/definitions/grib2/tables/9/4.2.192.154.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.154.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.155.table b/definitions/grib2/tables/9/4.2.192.155.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.155.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.156.table b/definitions/grib2/tables/9/4.2.192.156.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.156.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.157.table b/definitions/grib2/tables/9/4.2.192.157.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.157.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.158.table b/definitions/grib2/tables/9/4.2.192.158.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.158.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.159.table b/definitions/grib2/tables/9/4.2.192.159.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.159.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.16.table b/definitions/grib2/tables/9/4.2.192.16.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.16.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.160.table b/definitions/grib2/tables/9/4.2.192.160.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.160.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.161.table b/definitions/grib2/tables/9/4.2.192.161.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.161.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.162.table b/definitions/grib2/tables/9/4.2.192.162.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.162.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.163.table b/definitions/grib2/tables/9/4.2.192.163.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.163.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.164.table b/definitions/grib2/tables/9/4.2.192.164.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.164.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.165.table b/definitions/grib2/tables/9/4.2.192.165.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.165.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.166.table b/definitions/grib2/tables/9/4.2.192.166.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.166.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.167.table b/definitions/grib2/tables/9/4.2.192.167.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.167.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.168.table b/definitions/grib2/tables/9/4.2.192.168.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.168.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.169.table b/definitions/grib2/tables/9/4.2.192.169.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.169.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.17.table b/definitions/grib2/tables/9/4.2.192.17.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.17.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.170.table b/definitions/grib2/tables/9/4.2.192.170.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.170.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.171.table b/definitions/grib2/tables/9/4.2.192.171.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.171.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.172.table b/definitions/grib2/tables/9/4.2.192.172.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.172.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.173.table b/definitions/grib2/tables/9/4.2.192.173.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.173.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.174.table b/definitions/grib2/tables/9/4.2.192.174.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.174.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.175.table b/definitions/grib2/tables/9/4.2.192.175.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.175.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.176.table b/definitions/grib2/tables/9/4.2.192.176.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.176.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.177.table b/definitions/grib2/tables/9/4.2.192.177.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.177.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.178.table b/definitions/grib2/tables/9/4.2.192.178.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.178.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.179.table b/definitions/grib2/tables/9/4.2.192.179.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.179.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.18.table b/definitions/grib2/tables/9/4.2.192.18.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.18.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.180.table b/definitions/grib2/tables/9/4.2.192.180.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.180.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.181.table b/definitions/grib2/tables/9/4.2.192.181.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.181.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.182.table b/definitions/grib2/tables/9/4.2.192.182.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.182.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.183.table b/definitions/grib2/tables/9/4.2.192.183.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.183.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.184.table b/definitions/grib2/tables/9/4.2.192.184.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.184.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.185.table b/definitions/grib2/tables/9/4.2.192.185.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.185.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.186.table b/definitions/grib2/tables/9/4.2.192.186.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.186.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.187.table b/definitions/grib2/tables/9/4.2.192.187.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.187.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.188.table b/definitions/grib2/tables/9/4.2.192.188.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.188.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.189.table b/definitions/grib2/tables/9/4.2.192.189.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.189.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.19.table b/definitions/grib2/tables/9/4.2.192.19.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.19.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.190.table b/definitions/grib2/tables/9/4.2.192.190.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.190.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.191.table b/definitions/grib2/tables/9/4.2.192.191.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.191.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.192.table b/definitions/grib2/tables/9/4.2.192.192.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.192.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.193.table b/definitions/grib2/tables/9/4.2.192.193.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.193.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.194.table b/definitions/grib2/tables/9/4.2.192.194.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.194.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.195.table b/definitions/grib2/tables/9/4.2.192.195.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.195.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.196.table b/definitions/grib2/tables/9/4.2.192.196.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.196.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.197.table b/definitions/grib2/tables/9/4.2.192.197.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.197.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.198.table b/definitions/grib2/tables/9/4.2.192.198.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.198.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.199.table b/definitions/grib2/tables/9/4.2.192.199.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.199.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.2.table b/definitions/grib2/tables/9/4.2.192.2.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.2.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.20.table b/definitions/grib2/tables/9/4.2.192.20.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.20.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.200.table b/definitions/grib2/tables/9/4.2.192.200.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.200.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.201.table b/definitions/grib2/tables/9/4.2.192.201.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.201.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.202.table b/definitions/grib2/tables/9/4.2.192.202.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.202.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.203.table b/definitions/grib2/tables/9/4.2.192.203.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.203.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.204.table b/definitions/grib2/tables/9/4.2.192.204.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.204.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.205.table b/definitions/grib2/tables/9/4.2.192.205.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.205.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.206.table b/definitions/grib2/tables/9/4.2.192.206.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.206.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.207.table b/definitions/grib2/tables/9/4.2.192.207.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.207.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.208.table b/definitions/grib2/tables/9/4.2.192.208.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.208.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.209.table b/definitions/grib2/tables/9/4.2.192.209.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.209.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.21.table b/definitions/grib2/tables/9/4.2.192.21.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.21.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.210.table b/definitions/grib2/tables/9/4.2.192.210.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.210.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.211.table b/definitions/grib2/tables/9/4.2.192.211.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.211.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.212.table b/definitions/grib2/tables/9/4.2.192.212.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.212.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.213.table b/definitions/grib2/tables/9/4.2.192.213.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.213.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.214.table b/definitions/grib2/tables/9/4.2.192.214.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.214.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.215.table b/definitions/grib2/tables/9/4.2.192.215.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.215.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.216.table b/definitions/grib2/tables/9/4.2.192.216.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.216.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.217.table b/definitions/grib2/tables/9/4.2.192.217.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.217.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.218.table b/definitions/grib2/tables/9/4.2.192.218.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.218.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.219.table b/definitions/grib2/tables/9/4.2.192.219.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.219.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.22.table b/definitions/grib2/tables/9/4.2.192.22.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.22.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.220.table b/definitions/grib2/tables/9/4.2.192.220.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.220.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.221.table b/definitions/grib2/tables/9/4.2.192.221.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.221.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.222.table b/definitions/grib2/tables/9/4.2.192.222.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.222.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.223.table b/definitions/grib2/tables/9/4.2.192.223.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.223.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.224.table b/definitions/grib2/tables/9/4.2.192.224.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.224.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.225.table b/definitions/grib2/tables/9/4.2.192.225.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.225.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.226.table b/definitions/grib2/tables/9/4.2.192.226.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.226.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.227.table b/definitions/grib2/tables/9/4.2.192.227.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.227.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.228.table b/definitions/grib2/tables/9/4.2.192.228.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.228.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.229.table b/definitions/grib2/tables/9/4.2.192.229.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.229.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.23.table b/definitions/grib2/tables/9/4.2.192.23.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.23.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.230.table b/definitions/grib2/tables/9/4.2.192.230.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.230.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.231.table b/definitions/grib2/tables/9/4.2.192.231.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.231.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.232.table b/definitions/grib2/tables/9/4.2.192.232.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.232.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.233.table b/definitions/grib2/tables/9/4.2.192.233.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.233.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.234.table b/definitions/grib2/tables/9/4.2.192.234.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.234.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.235.table b/definitions/grib2/tables/9/4.2.192.235.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.235.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.236.table b/definitions/grib2/tables/9/4.2.192.236.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.236.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.237.table b/definitions/grib2/tables/9/4.2.192.237.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.237.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.238.table b/definitions/grib2/tables/9/4.2.192.238.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.238.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.239.table b/definitions/grib2/tables/9/4.2.192.239.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.239.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.24.table b/definitions/grib2/tables/9/4.2.192.24.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.24.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.240.table b/definitions/grib2/tables/9/4.2.192.240.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.240.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.241.table b/definitions/grib2/tables/9/4.2.192.241.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.241.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.242.table b/definitions/grib2/tables/9/4.2.192.242.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.242.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.243.table b/definitions/grib2/tables/9/4.2.192.243.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.243.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.244.table b/definitions/grib2/tables/9/4.2.192.244.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.244.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.245.table b/definitions/grib2/tables/9/4.2.192.245.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.245.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.246.table b/definitions/grib2/tables/9/4.2.192.246.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.246.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.247.table b/definitions/grib2/tables/9/4.2.192.247.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.247.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.248.table b/definitions/grib2/tables/9/4.2.192.248.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.248.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.249.table b/definitions/grib2/tables/9/4.2.192.249.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.249.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.25.table b/definitions/grib2/tables/9/4.2.192.25.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.25.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.250.table b/definitions/grib2/tables/9/4.2.192.250.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.250.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.251.table b/definitions/grib2/tables/9/4.2.192.251.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.251.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.252.table b/definitions/grib2/tables/9/4.2.192.252.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.252.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.253.table b/definitions/grib2/tables/9/4.2.192.253.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.253.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.254.table b/definitions/grib2/tables/9/4.2.192.254.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.254.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.255.table b/definitions/grib2/tables/9/4.2.192.255.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.255.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.26.table b/definitions/grib2/tables/9/4.2.192.26.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.26.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.27.table b/definitions/grib2/tables/9/4.2.192.27.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.27.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.28.table b/definitions/grib2/tables/9/4.2.192.28.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.28.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.29.table b/definitions/grib2/tables/9/4.2.192.29.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.29.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.3.table b/definitions/grib2/tables/9/4.2.192.3.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.3.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.30.table b/definitions/grib2/tables/9/4.2.192.30.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.30.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.31.table b/definitions/grib2/tables/9/4.2.192.31.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.31.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.32.table b/definitions/grib2/tables/9/4.2.192.32.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.32.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.33.table b/definitions/grib2/tables/9/4.2.192.33.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.33.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.34.table b/definitions/grib2/tables/9/4.2.192.34.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.34.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.35.table b/definitions/grib2/tables/9/4.2.192.35.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.35.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.36.table b/definitions/grib2/tables/9/4.2.192.36.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.36.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.37.table b/definitions/grib2/tables/9/4.2.192.37.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.37.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.38.table b/definitions/grib2/tables/9/4.2.192.38.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.38.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.39.table b/definitions/grib2/tables/9/4.2.192.39.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.39.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.4.table b/definitions/grib2/tables/9/4.2.192.4.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.4.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.40.table b/definitions/grib2/tables/9/4.2.192.40.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.40.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.41.table b/definitions/grib2/tables/9/4.2.192.41.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.41.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.42.table b/definitions/grib2/tables/9/4.2.192.42.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.42.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.43.table b/definitions/grib2/tables/9/4.2.192.43.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.43.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.44.table b/definitions/grib2/tables/9/4.2.192.44.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.44.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.45.table b/definitions/grib2/tables/9/4.2.192.45.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.45.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.46.table b/definitions/grib2/tables/9/4.2.192.46.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.46.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.47.table b/definitions/grib2/tables/9/4.2.192.47.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.47.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.48.table b/definitions/grib2/tables/9/4.2.192.48.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.48.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.49.table b/definitions/grib2/tables/9/4.2.192.49.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.49.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.5.table b/definitions/grib2/tables/9/4.2.192.5.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.5.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.50.table b/definitions/grib2/tables/9/4.2.192.50.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.50.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.51.table b/definitions/grib2/tables/9/4.2.192.51.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.51.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.52.table b/definitions/grib2/tables/9/4.2.192.52.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.52.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.53.table b/definitions/grib2/tables/9/4.2.192.53.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.53.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.54.table b/definitions/grib2/tables/9/4.2.192.54.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.54.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.55.table b/definitions/grib2/tables/9/4.2.192.55.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.55.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.56.table b/definitions/grib2/tables/9/4.2.192.56.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.56.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.57.table b/definitions/grib2/tables/9/4.2.192.57.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.57.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.58.table b/definitions/grib2/tables/9/4.2.192.58.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.58.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.59.table b/definitions/grib2/tables/9/4.2.192.59.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.59.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.6.table b/definitions/grib2/tables/9/4.2.192.6.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.6.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.60.table b/definitions/grib2/tables/9/4.2.192.60.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.60.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.61.table b/definitions/grib2/tables/9/4.2.192.61.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.61.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.62.table b/definitions/grib2/tables/9/4.2.192.62.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.62.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.63.table b/definitions/grib2/tables/9/4.2.192.63.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.63.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.64.table b/definitions/grib2/tables/9/4.2.192.64.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.64.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.65.table b/definitions/grib2/tables/9/4.2.192.65.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.65.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.66.table b/definitions/grib2/tables/9/4.2.192.66.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.66.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.67.table b/definitions/grib2/tables/9/4.2.192.67.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.67.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.68.table b/definitions/grib2/tables/9/4.2.192.68.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.68.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.69.table b/definitions/grib2/tables/9/4.2.192.69.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.69.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.7.table b/definitions/grib2/tables/9/4.2.192.7.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.7.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.70.table b/definitions/grib2/tables/9/4.2.192.70.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.70.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.71.table b/definitions/grib2/tables/9/4.2.192.71.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.71.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.72.table b/definitions/grib2/tables/9/4.2.192.72.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.72.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.73.table b/definitions/grib2/tables/9/4.2.192.73.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.73.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.74.table b/definitions/grib2/tables/9/4.2.192.74.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.74.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.75.table b/definitions/grib2/tables/9/4.2.192.75.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.75.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.76.table b/definitions/grib2/tables/9/4.2.192.76.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.76.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.77.table b/definitions/grib2/tables/9/4.2.192.77.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.77.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.78.table b/definitions/grib2/tables/9/4.2.192.78.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.78.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.79.table b/definitions/grib2/tables/9/4.2.192.79.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.79.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.8.table b/definitions/grib2/tables/9/4.2.192.8.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.8.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.80.table b/definitions/grib2/tables/9/4.2.192.80.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.80.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.81.table b/definitions/grib2/tables/9/4.2.192.81.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.81.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.82.table b/definitions/grib2/tables/9/4.2.192.82.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.82.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.83.table b/definitions/grib2/tables/9/4.2.192.83.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.83.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.84.table b/definitions/grib2/tables/9/4.2.192.84.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.84.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.85.table b/definitions/grib2/tables/9/4.2.192.85.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.85.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.86.table b/definitions/grib2/tables/9/4.2.192.86.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.86.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.87.table b/definitions/grib2/tables/9/4.2.192.87.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.87.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.88.table b/definitions/grib2/tables/9/4.2.192.88.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.88.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.89.table b/definitions/grib2/tables/9/4.2.192.89.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.89.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.9.table b/definitions/grib2/tables/9/4.2.192.9.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.9.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.90.table b/definitions/grib2/tables/9/4.2.192.90.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.90.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.91.table b/definitions/grib2/tables/9/4.2.192.91.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.91.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.92.table b/definitions/grib2/tables/9/4.2.192.92.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.92.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.93.table b/definitions/grib2/tables/9/4.2.192.93.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.93.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.94.table b/definitions/grib2/tables/9/4.2.192.94.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.94.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.95.table b/definitions/grib2/tables/9/4.2.192.95.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.95.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.96.table b/definitions/grib2/tables/9/4.2.192.96.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.96.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.97.table b/definitions/grib2/tables/9/4.2.192.97.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.97.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.98.table b/definitions/grib2/tables/9/4.2.192.98.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.98.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) diff --git a/definitions/grib2/tables/9/4.2.192.99.table b/definitions/grib2/tables/9/4.2.192.99.table deleted file mode 100644 index c37fd8f74..000000000 --- a/definitions/grib2/tables/9/4.2.192.99.table +++ /dev/null @@ -1,2 +0,0 @@ -# ECMWF local parameters -255 255 Missing (-) From 3cb61d994f7b34ac56486050eabc850893ad8408 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 5 Dec 2023 12:40:22 +0000 Subject: [PATCH 119/469] ECC-1656: isGridded for DWD grid --- definitions/grib1/grid_definition_192.78.def | 2 ++ 1 file changed, 2 insertions(+) diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def index e70f7019a..a7c3e746b 100644 --- a/definitions/grib1/grid_definition_192.78.def +++ b/definitions/grib1/grid_definition_192.78.def @@ -2,6 +2,8 @@ # DWD local grid definition 192 - triangular grid base on icosahedron subdivision +constant isGridded = true; + # n2 - exponent of 2 for the number of intervals on main triangle sides unsigned[2] n2 : dump ; From 161a048488c4e7c2ae95b74601dedd0bf17ad8b5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 5 Dec 2023 13:02:27 +0000 Subject: [PATCH 120/469] ECC-1699: Dump --- src/bufr_util.cc | 8 ++++++++ src/eccodes_prototypes.h | 1 + src/grib_dumper_class_bufr_decode_C.cc | 18 +++++++++++------- src/grib_dumper_class_bufr_decode_filter.cc | 5 +++-- src/grib_dumper_class_bufr_decode_fortran.cc | 6 ++++-- src/grib_dumper_class_bufr_decode_python.cc | 6 ++++-- src/grib_dumper_class_bufr_encode_C.cc | 10 ++++++---- src/grib_dumper_class_bufr_encode_filter.cc | 8 +++++--- src/grib_dumper_class_bufr_encode_fortran.cc | 10 ++++++---- src/grib_dumper_class_bufr_encode_python.cc | 10 ++++++---- src/grib_dumper_class_bufr_simple.cc | 18 +++++++++--------- 11 files changed, 63 insertions(+), 37 deletions(-) diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 000435488..7691c1fe0 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -1134,3 +1134,11 @@ int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err *err = GRIB_SUCCESS; return ((acc->flags & GRIB_ACCESSOR_FLAG_BUFR_COORD) != 0); } + +int codes_bufr_key_exclude_from_dump(const char* key) +{ + if (strstr(key, "percentConfidence->percentConfidence->percentConfidence->percentConfidence->percentConfidence")) { + return 1; + } + return 0; +} diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index c9032e08e..68284b66e 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1382,6 +1382,7 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* val, size_t* len); int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err); int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err); +int codes_bufr_key_exclude_from_dump(const char* key); /* string_util.cc*/ int strcmp_nocase(const char* s1, const char* s2); diff --git a/src/grib_dumper_class_bufr_decode_C.cc b/src/grib_dumper_class_bufr_decode_C.cc index 294f7931e..49805279b 100644 --- a/src/grib_dumper_class_bufr_decode_C.cc +++ b/src/grib_dumper_class_bufr_decode_C.cc @@ -326,11 +326,13 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) } else { r = compute_bufr_key_rank(h, self->keys, a->name); - if (!grib_is_missing_long(a, value)) { - if (r != 0) - fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"#%d#%s\", &iVal), 0);\n", r, a->name); - else - fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"%s\", &iVal), 0);\n", a->name); + if (!codes_bufr_key_exclude_from_dump(a->name)) { + if (!grib_is_missing_long(a, value)) { + if (r != 0) + fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"#%d#%s\", &iVal), 0);\n", r, a->name); + else + fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"%s\", &iVal), 0);\n", a->name); + } } } @@ -388,8 +390,10 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr } else { /* int r=compute_bufr_key_rank(h,self->keys,a->name); */ - if (!grib_is_missing_long(a, value)) { - fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"%s->%s\", &iVal), 0);\n", prefix, a->name); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + if (!grib_is_missing_long(a, value)) { + fprintf(self->dumper.out, " CODES_CHECK(codes_get_long(h, \"%s->%s\", &iVal), 0);\n", prefix, a->name); + } } } diff --git a/src/grib_dumper_class_bufr_decode_filter.cc b/src/grib_dumper_class_bufr_decode_filter.cc index ca1e7f454..0fff0fc14 100644 --- a/src/grib_dumper_class_bufr_decode_filter.cc +++ b/src/grib_dumper_class_bufr_decode_filter.cc @@ -322,8 +322,9 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr return; self->empty = 0; - fprintf(self->dumper.out, "print \"%s->%s = [%s->%s]\";\n", prefix, a->name, prefix, a->name); - + if (!codes_bufr_key_exclude_from_dump(prefix)) { + fprintf(self->dumper.out, "print \"%s->%s = [%s->%s]\";\n", prefix, a->name, prefix, a->name); + } if (self->isLeaf == 0) { char* prefix1 = (char*)grib_context_malloc_clear(c, sizeof(char) * (strlen(a->name) + strlen(prefix) + 5)); snprintf(prefix1, 1024, "%s->%s", prefix, a->name); diff --git a/src/grib_dumper_class_bufr_decode_fortran.cc b/src/grib_dumper_class_bufr_decode_fortran.cc index 739ec1362..b07f59b49 100644 --- a/src/grib_dumper_class_bufr_decode_fortran.cc +++ b/src/grib_dumper_class_bufr_decode_fortran.cc @@ -347,8 +347,10 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr fprintf(self->dumper.out, " call codes_get(ibufr, '%s->%s', iValues)\n", prefix, a->name); } else { - if (!grib_is_missing_long(a, value)) { - fprintf(self->dumper.out, " call codes_get(ibufr, '%s->%s', iVal)\n", prefix, a->name); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + if (!grib_is_missing_long(a, value)) { + fprintf(self->dumper.out, " call codes_get(ibufr, '%s->%s', iVal)\n", prefix, a->name); + } } } diff --git a/src/grib_dumper_class_bufr_decode_python.cc b/src/grib_dumper_class_bufr_decode_python.cc index 8c77c8325..632cbe98b 100644 --- a/src/grib_dumper_class_bufr_decode_python.cc +++ b/src/grib_dumper_class_bufr_decode_python.cc @@ -359,8 +359,10 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr fprintf(self->dumper.out, " iVals = codes_get_array(ibufr, '%s->%s')\n", prefix, a->name); } else { - if (!grib_is_missing_long(a, value)) { - fprintf(self->dumper.out, " iVal = codes_get(ibufr, '%s->%s')\n", prefix, a->name); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + if (!grib_is_missing_long(a, value)) { + fprintf(self->dumper.out, " iVal = codes_get(ibufr, '%s->%s')\n", prefix, a->name); + } } } diff --git a/src/grib_dumper_class_bufr_encode_C.cc b/src/grib_dumper_class_bufr_encode_C.cc index b69f765c6..de68b423f 100644 --- a/src/grib_dumper_class_bufr_encode_C.cc +++ b/src/grib_dumper_class_bufr_encode_C.cc @@ -524,10 +524,12 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr fprintf(self->dumper.out, " CODES_CHECK(codes_set_long_array(h, \"%s->%s\", ivalues, size), 0);\n", prefix, a->name); } else { - char* sval = lval_to_string(c, value); - fprintf(self->dumper.out, " CODES_CHECK(codes_set_long(h, \"%s->%s\", ", prefix, a->name); - fprintf(self->dumper.out, "%s), 0);\n", sval); - grib_context_free(c, sval); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + char* sval = lval_to_string(c, value); + fprintf(self->dumper.out, " CODES_CHECK(codes_set_long(h, \"%s->%s\", ", prefix, a->name); + fprintf(self->dumper.out, "%s), 0);\n", sval); + grib_context_free(c, sval); + } } if (self->isLeaf == 0) { diff --git a/src/grib_dumper_class_bufr_encode_filter.cc b/src/grib_dumper_class_bufr_encode_filter.cc index 38a704842..d55eb767a 100644 --- a/src/grib_dumper_class_bufr_encode_filter.cc +++ b/src/grib_dumper_class_bufr_encode_filter.cc @@ -451,9 +451,11 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr } else { /* int r=compute_bufr_key_rank(h,self->keys,a->name); */ - if (!grib_is_missing_long(a, value)) { - fprintf(self->dumper.out, "set %s->%s = ", prefix, a->name); - fprintf(self->dumper.out, "%ld ;\n", value); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + if (!grib_is_missing_long(a, value)) { + fprintf(self->dumper.out, "set %s->%s = ", prefix, a->name); + fprintf(self->dumper.out, "%ld ;\n", value); + } } } diff --git a/src/grib_dumper_class_bufr_encode_fortran.cc b/src/grib_dumper_class_bufr_encode_fortran.cc index 8ddc771b6..b0f462019 100644 --- a/src/grib_dumper_class_bufr_encode_fortran.cc +++ b/src/grib_dumper_class_bufr_encode_fortran.cc @@ -573,10 +573,12 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr fprintf(self->dumper.out, " call codes_set(ibufr,'%s->%s' &\n,ivalues)\n", pref, a->name); } else { - char* sval = lval_to_string(c, value); - fprintf(self->dumper.out, " call codes_set(ibufr,'%s->%s'&\n,", pref, a->name); - fprintf(self->dumper.out, "%s)\n", sval); - grib_context_free(c, sval); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + char* sval = lval_to_string(c, value); + fprintf(self->dumper.out, " call codes_set(ibufr,'%s->%s'&\n,", pref, a->name); + fprintf(self->dumper.out, "%s)\n", sval); + grib_context_free(c, sval); + } } if (self->isLeaf == 0) { diff --git a/src/grib_dumper_class_bufr_encode_python.cc b/src/grib_dumper_class_bufr_encode_python.cc index ba2a0998a..f4bcba49b 100644 --- a/src/grib_dumper_class_bufr_encode_python.cc +++ b/src/grib_dumper_class_bufr_encode_python.cc @@ -519,10 +519,12 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr fprintf(self->dumper.out, " codes_set_array(ibufr, '%s->%s', ivalues)\n", prefix, a->name); } else { - char* sval = lval_to_string(c, value); - fprintf(self->dumper.out, " codes_set(ibufr, '%s->%s', ", prefix, a->name); - fprintf(self->dumper.out, "%s)\n", sval); - grib_context_free(c, sval); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + char* sval = lval_to_string(c, value); + fprintf(self->dumper.out, " codes_set(ibufr, '%s->%s', ", prefix, a->name); + fprintf(self->dumper.out, "%s)\n", sval); + grib_context_free(c, sval); + } } if (self->isLeaf == 0) { diff --git a/src/grib_dumper_class_bufr_simple.cc b/src/grib_dumper_class_bufr_simple.cc index 7dc758bc4..ca4701f38 100644 --- a/src/grib_dumper_class_bufr_simple.cc +++ b/src/grib_dumper_class_bufr_simple.cc @@ -466,19 +466,19 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr } else { /* int r=compute_bufr_key_rank(h,self->keys,a->name); */ - if (!grib_is_missing_long(a, value)) { - fprintf(self->dumper.out, "%s->%s = ", prefix, a->name); - fprintf(self->dumper.out, "%ld\n", value); - } - else { - fprintf(self->dumper.out, "%s->%s = MISSING\n", prefix, a->name); + if (!codes_bufr_key_exclude_from_dump(prefix)) { + if (!grib_is_missing_long(a, value)) { + fprintf(self->dumper.out, "%s->%s = ", prefix, a->name); + fprintf(self->dumper.out, "%ld\n", value); + } + else { + fprintf(self->dumper.out, "%s->%s = MISSING\n", prefix, a->name); + } } } if (self->isLeaf == 0) { - char* prefix1; - - prefix1 = (char*)grib_context_malloc_clear(c, sizeof(char) * (strlen(a->name) + strlen(prefix) + 5)); + char* prefix1 = (char*)grib_context_malloc_clear(c, sizeof(char) * (strlen(a->name) + strlen(prefix) + 5)); snprintf(prefix1, 1024, "%s->%s", prefix, a->name); dump_attributes(d, a, prefix1); From bfabfb2e21059571be449d44c94d2c875d062bfd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 5 Dec 2023 13:45:57 +0000 Subject: [PATCH 121/469] ECC-791 and ECC-786: Tools output --- tests/grib_ls.sh | 8 +++++++- tools/grib_tools.cc | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index f702c0747..2a6f6c5ab 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -40,7 +40,13 @@ ${tools_dir}/grib_ls -l 0,0,1 $infile >> $tempLog ${tools_dir}/grib_get -l 0,0,1 $infile >> $tempLog ${tools_dir}/grib_get -p count,step $infile >> $tempLog ${tools_dir}/grib_get -P count $infile >> $tempLog -${tools_dir}/grib_get -i 0 $infile + +# ECC-786 and ECC-791 +result=$( ${tools_dir}/grib_get -p shortName -i 0 $infile ) +[ "$result" = "t 199.078 " ] +result=$( ${tools_dir}/grib_get -i 8191 $infile ) +[ "$result" = "160.852 " ] + files=" reduced_gaussian_lsm.grib1 reduced_gaussian_model_level.grib1 diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index b039c8d0d..fef2950e0 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -1285,7 +1285,7 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) snprintf(value, 32, options->format, v); strlenvalue = (int)strlen(value); width = strlenvalue < options->default_print_width ? options->default_print_width + 2 : strlenvalue + 2; - fprintf(dump_file, "%-*s", (int)width, value); + fprintf(dump_file, "%s%-*s", (written_to_dump?" ":""), (int)width, value); written_to_dump = 1; } if (written_to_dump) { From 6109f790e8ece64e5b9bd18686df1875613c2d22 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 6 Dec 2023 10:18:05 +0000 Subject: [PATCH 122/469] ECC-1620: Revert mars.step data type back to string --- tools/grib_tools.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index 2ad3bef83..b039c8d0d 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -755,9 +755,6 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle if (strlen(name) > options->default_print_width) options->default_print_width = (int)strlen(name); options->print_keys[options->print_keys_count].type = GRIB_TYPE_STRING; - if (strcmp(ns, "mars") == 0 && (strcmp(name, "step") == 0)) { - options->print_keys[options->print_keys_count].type = GRIB_TYPE_LONG; - } // For the statistics namespace, do not force the type to be string. // Setting it to undefined will use the keys' native type i.e. GRIB_TYPE_DOUBLE if (strcmp(ns,"statistics")==0) From f414dc41de8284de79b048b36ae1e9d49068d479 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 6 Dec 2023 11:58:50 +0000 Subject: [PATCH 123/469] ECC-1620: Remove time.stepunits and mars.stepunits --- definitions/grib1/section.1.def | 2 +- definitions/grib2/products_s2s.def | 2 +- definitions/grib2/template.4.forecast_time.def | 6 +----- definitions/grib2/template.4.localtime.def | 2 +- definitions/grib2/template.4.point_in_time.def | 3 +-- definitions/grib2/template.4.statistical.def | 2 +- tests/grib_ecc-1212.sh | 1 - tests/grib_mars_keys1.sh | 2 -- 8 files changed, 6 insertions(+), 14 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 1178f969d..fcb306cb5 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -222,7 +222,7 @@ alias ls.stepRange = stepRange; alias ls.dataDate = dataDate; alias mars.step = endStep; -alias mars.stepunits = stepUnits; +alias stepunits = stepUnits; alias mars.date = dataDate; alias mars.levtype = indicatorOfTypeOfLevel; alias mars.time = dataTime; diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index 09238eb49..7063def51 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -73,7 +73,7 @@ alias mars.type = marsType; # Normally MARS step is endStep but for monthly means we want stepRange if (stepType is "avg") { alias mars.step = stepRange; - alias mars.stepunits = stepUnits; + alias stepunits = stepUnits; } if (isHindcast == 1) { diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 2f05d0cb8..8dc62f16b 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -12,12 +12,8 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -#alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 -#alias forecastTimeUnit = indicatorOfUnitOfTimeRange; -#template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -#codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; -transient startStepUnit = 255 : hidden; +transient startStepUnit = 255 : hidden; # 255 means MISSING. See code table 4.4 transient endStepUnit = 255 : hidden; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index f37c5c3aa..3432f8b6a 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -82,7 +82,7 @@ if (numberOfForecastsUsedInLocalTime == 1) { alias mars.date = dateOfForecastUsedInLocalTime : dump; alias mars.time = timeOfForecastUsedInLocalTime : dump; alias mars.step = endStep; - alias mars.stepunits = stepUnits; + alias stepunits = stepUnits; alias time.dataDate = dateOfForecastUsedInLocalTime; alias time.dataTime = timeOfForecastUsedInLocalTime; alias time.endStep = endStep; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index f32d04ba1..3e341f54b 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -7,7 +7,7 @@ alias step=startStep; alias marsStep=startStep; alias mars.step=startStep; -alias mars.stepunits=stepUnits; +alias stepunits=stepUnits; alias marsStartStep = startStep; alias marsEndStep = endStep; @@ -21,7 +21,6 @@ meta stepHumanReadable step_human_readable(stepUnits, stepRange): hidden,no_copy alias time.stepType=stepType; alias time.stepRange=stepRange; -alias time.stepunits=stepUnits; alias time.dataDate=dataDate; alias time.dataTime=dataTime; alias time.startStep=startStep; diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 6a8688fdd..fa40bbd37 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -112,7 +112,7 @@ if (numberOfTimeRanges == 1 || numberOfTimeRanges == 2) { alias ls.stepRange=stepRange; alias mars.step=endStep; -alias mars.stepunits=stepUnits; +alias stepunits=stepUnits; alias time.stepType=stepType; alias time.stepRange=stepRange; diff --git a/tests/grib_ecc-1212.sh b/tests/grib_ecc-1212.sh index f52026594..7ae426756 100755 --- a/tests/grib_ecc-1212.sh +++ b/tests/grib_ecc-1212.sh @@ -59,7 +59,6 @@ cat > $tempRef < $tempRef << EOF "class": "od", "type": "an", "stream": "oper", - "stepunits": "h", "step": 0, "levelist": 1000, "levtype": "pl", @@ -69,7 +68,6 @@ cat > $tempRef << EOF "class": "od", "type": "pf", "stream": "enfo", - "stepunits": "h", "step": 0, "levelist": 1000, "levtype": "pl", From 937d2fa737cf567ed4237b756a6bb034f9126644 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 6 Dec 2023 12:57:07 +0000 Subject: [PATCH 124/469] Tools: Improved error messages --- src/grib_value.cc | 4 ++-- tests/bufr_ecc-1304.sh | 2 +- tests/grib_filter.sh | 2 +- tests/grib_suppressed.sh | 1 + tools/bufr_filter.cc | 5 +++-- tools/bufr_set.cc | 4 ++-- tools/grib_filter.cc | 5 +++-- 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/grib_value.cc b/src/grib_value.cc index e244d3c65..f9e24d678 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1815,9 +1815,9 @@ int grib_set_values(grib_handle* h, grib_values* args, size_t count) for (i = 0; i < count; i++) { if (args[i].error != GRIB_SUCCESS) { grib_context_log(h->context, GRIB_LOG_ERROR, - "grib_set_values[%d] %s (type=%s) failed: %s", + "grib_set_values[%d] %s (type=%s) failed: %s (message %d)", i, args[i].name, grib_get_type_name(args[i].type), - grib_get_error_message(args[i].error)); + grib_get_error_message(args[i].error), h->context->handle_file_count); err = err == GRIB_SUCCESS ? args[i].error : err; } } diff --git a/tests/bufr_ecc-1304.sh b/tests/bufr_ecc-1304.sh index 2ffd34711..4e1bc409f 100755 --- a/tests/bufr_ecc-1304.sh +++ b/tests/bufr_ecc-1304.sh @@ -36,7 +36,7 @@ EOF # Command should fail but not crash set +e -${tools_dir}/bufr_filter $tempFilt $sample_bufr4 > $tempOut +${tools_dir}/bufr_filter $tempFilt $sample_bufr4 2> $tempOut stat=$? set -e echo stat=$stat diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index c114c5e4e..1010cd9e0 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -365,7 +365,7 @@ cat >$tempFilt < $tempOut +${tools_dir}/grib_filter $tempFilt $ECCODES_SAMPLES_PATH/GRIB2.tmpl 2> $tempOut status=$? set -e [ $status -ne 0 ] diff --git a/tests/grib_suppressed.sh b/tests/grib_suppressed.sh index c8166ebce..2b8477064 100755 --- a/tests/grib_suppressed.sh +++ b/tests/grib_suppressed.sh @@ -34,6 +34,7 @@ cat > $tempRef <action) { const char* filt = options->infile_extra->name; if (strcmp(filt, "-") == 0) filt = "stdin"; - fprintf(stderr, "Error: %s: unable to create action\n", filt); + fprintf(stderr, "ERROR: %s: unable to create action\n", filt); exit(1); } @@ -88,7 +88,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) err = grib_handle_apply_action(h, options->action); if (err != GRIB_SUCCESS && options->fail) { - printf("ERROR: %s\n", grib_get_error_message(err)); + fprintf(stderr, "ERROR: %s (message %d)\n", + grib_get_error_message(err), h->context->handle_file_count); exit(err); } return 0; diff --git a/tools/bufr_set.cc b/tools/bufr_set.cc index 40c51547b..4bb055fb9 100644 --- a/tools/bufr_set.cc +++ b/tools/bufr_set.cc @@ -62,7 +62,7 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { if (options->set_values_count == 0 && !options->repack && !options->constant) { - printf("ERROR: please provide some keys to set through the -s option or use the -r/-d options\n"); + fprintf(stderr, "ERROR: Please provide some keys to set through the -s option or use the -r/-d options\n"); exit(1); } if (options->verbose) @@ -73,7 +73,7 @@ int grib_tool_init(grib_runtime_options* options) }*/ if (grib_options_on("n:") && grib_options_on("d:")) { - printf("Error: -n and -d options are incompatible. Choose one of the two please.\n"); + fprintf(stderr, "ERROR: -n and -d options are incompatible. Choose one of the two please.\n"); exit(1); } diff --git a/tools/grib_filter.cc b/tools/grib_filter.cc index 019fc48c8..ae0a1c5e3 100644 --- a/tools/grib_filter.cc +++ b/tools/grib_filter.cc @@ -54,7 +54,7 @@ int grib_tool_init(grib_runtime_options* options) if (!options->action) { const char* filt = options->infile_extra->name; if (strcmp(filt, "-") == 0) filt = "stdin"; - fprintf(stderr, "Error: %s: unable to create action\n", filt); + fprintf(stderr, "ERROR: %s: unable to create action\n", filt); exit(1); } @@ -86,7 +86,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) err = grib_handle_apply_action(h, options->action); if (err != GRIB_SUCCESS && options->fail) { - printf("ERROR: %s\n", grib_get_error_message(err)); + fprintf(stderr, "ERROR: %s (message %d)\n", + grib_get_error_message(err), h->context->handle_file_count); exit(err); } return 0; From 5bd9d6264202052fe44f86ab128584cdecf004c2 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 6 Dec 2023 15:58:51 +0000 Subject: [PATCH 125/469] ECC-1620: Introduction of the "eccodes" namespace --- src/grib_accessor_class_g2end_step.cc | 48 +++++++++---------- src/grib_accessor_class_g2step_range.cc | 30 ++++++------ src/grib_accessor_class_optimal_step_units.cc | 24 +++++----- src/grib_accessor_class_step_in_units.cc | 34 ++++++------- src/step.cc | 4 ++ src/step.h | 3 ++ src/step_unit.cc | 4 ++ src/step_unit.h | 4 ++ src/step_utilities.cc | 6 +-- src/step_utilities.h | 4 +- 10 files changed, 88 insertions(+), 73 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 62b0c9e26..e967268ef 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -214,8 +214,8 @@ static int convert_time_range_long_( Assert(lengthOfTimeRange != NULL); if (indicatorOfUnitForTimeRange != stepUnits) { - Step time_range{*lengthOfTimeRange, indicatorOfUnitForTimeRange}; - time_range.set_unit(Unit{stepUnits}); + eccodes::Step time_range{*lengthOfTimeRange, indicatorOfUnitForTimeRange}; + time_range.set_unit(eccodes::Unit{stepUnits}); if (time_range.value() != time_range.value()) { return GRIB_DECODING_ERROR; } @@ -297,8 +297,8 @@ static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - Step start_step{start_step_value, start_step_unit}; - Step time_range{time_range_value, time_range_unit}; + eccodes::Step start_step{start_step_value, start_step_unit}; + eccodes::Step time_range{time_range_value, time_range_unit}; if (typeOfTimeIncrement == 1) { /* See GRIB-488 */ @@ -309,10 +309,10 @@ static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* } } if (add_time_range) { - *val = (start_step + time_range).value(Unit(step_units)); + *val = (start_step + time_range).value(eccodes::Unit(step_units)); } else { - *val = start_step.value(Unit(start_step_unit)); + *val = start_step.value(eccodes::Unit(start_step_unit)); } return GRIB_SUCCESS; @@ -392,7 +392,7 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit))) return err; - Step start_step{start_step_value, start_step_unit}; + eccodes::Step start_step{start_step_value, start_step_unit}; if ((err = grib_get_long_internal(h, self->step_units, &step_units))) return err; @@ -420,8 +420,8 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si long the_coded_unit = arr_coded_unit[i]; long the_coded_time_range = arr_coded_time_range[i]; - Step time_range{the_coded_unit, the_coded_time_range}; - *val = (start_step + time_range).value(Unit(step_units)); + eccodes::Step time_range{the_coded_unit, the_coded_time_range}; + *val = (start_step + time_range).value(eccodes::Unit(step_units)); return GRIB_SUCCESS; } @@ -542,7 +542,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en double dend, dstep; int show_hours = a->context->show_hour_stepunit; - Step end_step{end_step_value, end_step_unit}; + eccodes::Step end_step{end_step_value, end_step_unit}; /*point in time */ if (self->year == NULL) { @@ -575,7 +575,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err= grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) return err; - if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{start_step_unit} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { grib_context_log(h->context, GRIB_LOG_ERROR, "missing start step unit"); return GRIB_WRONG_STEP_UNIT; @@ -584,8 +584,8 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if ((err = grib_get_long_internal(h, self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - Step start_step{start_step_value, start_step_unit}; - Step time_range = end_step - start_step; + eccodes::Step start_step{start_step_value, start_step_unit}; + eccodes::Step time_range = end_step - start_step; if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, @@ -597,7 +597,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (err != GRIB_SUCCESS) return err; - dstep = end_step.value(Unit{Unit::Value::DAY}); + dstep = end_step.value(eccodes::Unit{eccodes::Unit::Value::DAY}); dend += dstep; err = grib_julian_to_datetime(dend, &year_of_end_of_interval, &month_of_end_of_interval, @@ -621,14 +621,14 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en const char* forecast_time_value_key = "forecastTime"; const char* forecast_time_unit_key = "indicatorOfUnitOfTimeRange"; - Step forecast_time_opt; - Step time_range_opt; - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + eccodes::Step forecast_time_opt; + eccodes::Step time_range_opt; + if (eccodes::Unit{force_step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { std::tie(forecast_time_opt, time_range_opt) = find_common_units(start_step.optimize_unit(), time_range.optimize_unit()); } else { - forecast_time_opt = Step{start_step.value(Unit{force_step_units}), Unit{force_step_units}}; - time_range_opt = Step{time_range.value(Unit{force_step_units}), Unit{force_step_units}}; + forecast_time_opt = eccodes::Step{start_step.value(eccodes::Unit{force_step_units}), eccodes::Unit{force_step_units}}; + time_range_opt = eccodes::Step{time_range.value(eccodes::Unit{force_step_units}), eccodes::Unit{force_step_units}}; } if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->time_range_value, time_range_opt.value())) != GRIB_SUCCESS) @@ -663,7 +663,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; try { - Step step(step_value, step_units); + eccodes::Step step(step_value, step_units); step.set_unit(step_units); std::stringstream ss; @@ -698,12 +698,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) try { long end_step_unit; - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{force_step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "endStepUnit", &end_step_unit)) != GRIB_SUCCESS) return ret; - if (Unit{end_step_unit} == Unit{Unit::Value::MISSING}) - end_step_unit = Unit{Unit::Value::HOUR}.value(); + if (eccodes::Unit{end_step_unit} == eccodes::Unit{eccodes::Unit::Value::MISSING}) + end_step_unit = eccodes::Unit{eccodes::Unit::Value::HOUR}.value(); } else { end_step_unit = force_step_units; @@ -726,7 +726,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; try { - Step end_step = step_from_string(val, Unit{force_step_units}); + eccodes::Step end_step = step_from_string(val, eccodes::Unit{force_step_units}); end_step.optimize_unit(); if ((ret = grib_set_long_internal(h, "endStepUnit", end_step.unit().value())) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index c0bcc209d..2089f493b 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -149,7 +149,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret= grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; try { - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } @@ -160,7 +160,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; std::stringstream ss; - Step start_step{start_step_value, step_units}; + eccodes::Step start_step{start_step_value, step_units}; if (self->end_step == NULL) { ss << start_step.value(fp_format, show_hours); } @@ -168,7 +168,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - Step end_step{end_step_value, step_units}; + eccodes::Step end_step{end_step_value, step_units}; if (start_step_value == end_step_value) { ss << end_step.value(fp_format, show_hours); @@ -206,24 +206,24 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; try { - std::vector steps = parse_range(val, Unit{force_step_units}); + std::vector steps = parse_range(val, eccodes::Unit{force_step_units}); if (steps.size() == 0) { grib_context_log(a->context, GRIB_LOG_ERROR, "Could not parse step range: %s", val); return GRIB_INVALID_ARGUMENT; } - Step step_0; - Step step_1; - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + eccodes::Step step_0; + eccodes::Step step_1; + if (eccodes::Unit{force_step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if (steps.size() > 1) std::tie(step_0, step_1) = find_common_units(steps[0].optimize_unit(), steps[1].optimize_unit()); else step_0 = steps[0].optimize_unit(); } else { - step_0 = Step{steps[0].value(Unit{force_step_units}), Unit{force_step_units}}; + step_0 = eccodes::Step{steps[0].value(eccodes::Unit{force_step_units}), eccodes::Unit{force_step_units}}; if (steps.size() > 1) { - step_1 = Step{steps[1].value(Unit{force_step_units}), Unit{force_step_units}}; + step_1 = eccodes::Step{steps[1].value(eccodes::Unit{force_step_units}), eccodes::Unit{force_step_units}}; } } @@ -281,19 +281,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) try { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) throw std::runtime_error("Failed to get stepUnits"); - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } - Step start_step{end_start_value, step_units}; + eccodes::Step start_step{end_start_value, step_units}; if (self->end_step == NULL) { *val = start_step.value(); } else { if ((ret = grib_get_long_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - Step end_step{end_step_value, step_units}; + eccodes::Step end_step{end_step_value, step_units}; *val = end_step.value(); } } @@ -321,19 +321,19 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) throw std::runtime_error("Failed to get stepUnits"); try { - if (Unit{step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "stepUnits", &step_units)) != GRIB_SUCCESS) return ret; } - Step start_step{end_start_value, step_units}; + eccodes::Step start_step{end_start_value, step_units}; if (self->end_step == NULL) { *val = start_step.value(); } else { if ((ret = grib_get_double_internal(h, self->end_step, &end_step_value)) != GRIB_SUCCESS) return ret; - Step end_step{end_step_value, step_units}; + eccodes::Step end_step{end_step_value, step_units}; *val = end_step.value(); } } diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 5d297b96c..7ac95a902 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -137,24 +137,24 @@ static size_t string_length(grib_accessor* a) return 255; } -static long staticStepUnits = Unit{Unit::Value::MISSING}.value(); -static long staticForceStepUnits = Unit{Unit::Value::MISSING}.value(); +static long staticStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); +static long staticForceStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); - auto supported_units = Unit::list_supported_units(); + auto supported_units = eccodes::Unit::list_supported_units(); try { - Unit unit{*val}; // throws if not supported + eccodes::Unit unit{*val}; // throws if not supported auto iter = std::find(supported_units.begin(), supported_units.end(), unit); if (iter == supported_units.end()) { - throw std::runtime_error{"Unit not supported"}; + throw std::runtime_error{"eccodes::Unit not supported"}; } } catch (std::exception& e) { std::string supported_units_str; for (auto& u : supported_units) - supported_units_str += Unit{u}.value() + ","; + supported_units_str += eccodes::Unit{u}.value() + ","; supported_units_str.pop_back(); std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available units are: " + supported_units_str; @@ -174,7 +174,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_long(grib_accessor* a, long* val, size_t* len) { try { - if (Unit{staticStepUnits} != Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{staticStepUnits} != eccodes::Unit{eccodes::Unit::Value::MISSING}) { *val = staticStepUnits; return GRIB_SUCCESS; } @@ -196,7 +196,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) *val = time_range_opt.value().optimize_unit().unit().value(); } else if (!forecast_time_opt && !time_range_opt) { - *val = Unit{Unit::Value::HOUR}.value(); + *val = eccodes::Unit{eccodes::Unit::Value::HOUR}.value(); } } catch (std::exception& e) { @@ -210,14 +210,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { try { - long unit = Unit{val}.value(); + long unit = eccodes::Unit{val}.value(); pack_long(a, &unit, len); } catch (std::exception& e) { - auto supported_units = Unit::list_supported_units(); + auto supported_units = eccodes::Unit::list_supported_units(); std::string supported_units_str; for (auto& u : supported_units) - supported_units_str += Unit{u}.value() + ","; + supported_units_str += eccodes::Unit{u}.value() + ","; supported_units_str.pop_back(); std::string msg = "Invalid unit: " + std::string(val) + " (" + e.what() + ")" + ". Available units are: " + supported_units_str; @@ -235,7 +235,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t unit_len = 0; if ((ret = unpack_long(a, &unit, &unit_len)) != GRIB_SUCCESS) return ret; - *len = snprintf(val, *len, "%s", Unit{unit}.value().c_str()); + *len = snprintf(val, *len, "%s", eccodes::Unit{unit}.value().c_str()); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index d1ebcd832..b6800f6fb 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -152,13 +152,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return err; try { - Step step{forecast_time_value, forecast_time_unit}; + eccodes::Step step{forecast_time_value, forecast_time_unit}; step.optimize_unit(); - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", eccodes::Unit{step_units}.value())) != GRIB_SUCCESS) return err; - *val = step.value(Unit{step_units}); + *val = step.value(eccodes::Unit{step_units}); } catch (std::exception& e) { grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); @@ -183,12 +183,12 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) return err; try { - Step step{forecast_time_value, forecast_time_unit}; + eccodes::Step step{forecast_time_value, forecast_time_unit}; - if ((err = grib_set_long_internal(h, "startStepUnit", Unit{step_units}.value())) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(h, "startStepUnit", eccodes::Unit{step_units}.value())) != GRIB_SUCCESS) return err; - *val = step.value(Unit{step_units}); + *val = step.value(eccodes::Unit{step_units}); } catch (std::exception& e) { grib_context_log(h->context, GRIB_LOG_ERROR, "step_in_units: %s", e.what()); @@ -215,9 +215,9 @@ static int pack_long_new_(grib_accessor* a, const long start_step_value, const l if ((err = grib_get_long_internal(h, "startStepUnit", &start_step_unit_old)) != GRIB_SUCCESS) return err; - Step start_step_old(start_step_value_old, start_step_unit_old); - Step forecast_time(start_step_value, start_step_unit); - Step time_range_new{}; + eccodes::Step start_step_old(start_step_value_old, start_step_unit_old); + eccodes::Step forecast_time(start_step_value, start_step_unit); + eccodes::Step time_range_new{}; auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); @@ -225,7 +225,7 @@ static int pack_long_new_(grib_accessor* a, const long start_step_value, const l auto time_range = time_range_opt.value(); time_range = time_range - (forecast_time - start_step_old); if (time_range.value() < 0) - time_range = Step{0l, time_range.unit()}; + time_range = eccodes::Step{0l, time_range.unit()}; auto [sa, sb] = find_common_units(forecast_time.optimize_unit(), time_range.optimize_unit()); if ((err = set_step(h, self->forecast_time_value, self->forecast_time_unit, sa)) != GRIB_SUCCESS) return err; @@ -236,7 +236,7 @@ static int pack_long_new_(grib_accessor* a, const long start_step_value, const l return GRIB_SUCCESS; } - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{force_step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { forecast_time.optimize_unit(); } @@ -259,12 +259,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long start_step_unit; try { - if (Unit{force_step_units} == Unit{Unit::Value::MISSING}) { + if (eccodes::Unit{force_step_units} == eccodes::Unit{eccodes::Unit::Value::MISSING}) { if ((ret = grib_get_long_internal(h, "startStepUnit", &start_step_unit)) != GRIB_SUCCESS) return ret; - if (Unit{start_step_unit} == Unit{Unit::Value::MISSING}) - start_step_unit = Unit{Unit::Value::HOUR}.value(); + if (eccodes::Unit{start_step_unit} == eccodes::Unit{eccodes::Unit::Value::MISSING}) + start_step_unit = eccodes::Unit{eccodes::Unit::Value::HOUR}.value(); } else { start_step_unit = force_step_units; @@ -283,14 +283,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_handle* h = grib_handle_of_accessor(a); - //long force_step_units = Unit(Unit::Value::MISSING).value(); + //long force_step_units = eccodes::Unit(eccodes::Unit::Value::MISSING).value(); int ret = GRIB_SUCCESS; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) return ret; try { - Step step = step_from_string(val, Unit{force_step_units}); + eccodes::Step step = step_from_string(val, eccodes::Unit{force_step_units}); if ((ret = pack_long_new_(a, step.value(), step.unit().value(), force_step_units)) != GRIB_SUCCESS) return ret; } @@ -324,7 +324,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return ret; try { - Step step{start_step_value, start_step_unit}; + eccodes::Step step{start_step_value, start_step_unit}; std::stringstream ss; ss << step.value(fp_format, show_hours); diff --git a/src/step.cc b/src/step.cc index 49a61f662..81bdaeeb3 100644 --- a/src/step.cc +++ b/src/step.cc @@ -20,6 +20,8 @@ #include "step_unit.h" #include "step.h" +namespace eccodes { + Step step_from_string(const std::string& step, const Unit& force_unit) { std::regex re("([0-9.]+)([smhDMYC]?)"); @@ -214,3 +216,5 @@ std::string Step::value(const std::string& format, bool show_hours) } return output; } + +} // namespace eccodes diff --git a/src/step.h b/src/step.h index a9dbf8bca..a7d8b2bd1 100644 --- a/src/step.h +++ b/src/step.h @@ -24,6 +24,7 @@ #include "step_unit.h" +namespace eccodes { class Step { public: // Constructors @@ -122,3 +123,5 @@ template T Step::value(const Unit& unit) const { T value = from_seconds(seconds, unit); return value; } + +} // namespace eccodes diff --git a/src/step_unit.cc b/src/step_unit.cc index e356d4ba4..bd192a6e7 100644 --- a/src/step_unit.cc +++ b/src/step_unit.cc @@ -10,6 +10,8 @@ #include "step_unit.h" +namespace eccodes { + Unit::Map Unit::map_{}; std::vector Unit::grib_selected_units = { @@ -47,3 +49,5 @@ template <> Unit::Value Unit::value() const { template <> std::string Unit::value() const { return map_.unit_to_name(internal_value_); } + +} // namespace eccodes diff --git a/src/step_unit.h b/src/step_unit.h index 4bfd23290..3d8897bbe 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -18,6 +18,8 @@ #include #include +namespace eccodes { + template using Minutes = std::chrono::duration>; template using Hours = std::chrono::duration>; template using Days = std::chrono::duration>; @@ -232,3 +234,5 @@ T from_seconds(Seconds seconds, const Unit& unit) { } return value; } + +} // namespace eccodes diff --git a/src/step_utilities.cc b/src/step_utilities.cc index dcf0d3dd5..4ae82a911 100644 --- a/src/step_utilities.cc +++ b/src/step_utilities.cc @@ -11,7 +11,7 @@ #include "step_utilities.h" #include -std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key) +std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key) { if (value_key && unit_key && grib_is_defined(h, unit_key) && grib_is_defined(h, value_key)) { long unit = 0; @@ -22,14 +22,14 @@ std::optional get_step(grib_handle* h, const char* value_key, const char* if (grib_get_long_internal(h, value_key, &value) != GRIB_SUCCESS) return {}; - return Step(value, unit); + return eccodes::Step(value, unit); } else { return {}; } } -int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step) +int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const eccodes::Step& step) { int err; if ((err = grib_set_long_internal(h, value_key.c_str(), step.value())) != GRIB_SUCCESS) diff --git a/src/step_utilities.h b/src/step_utilities.h index 8224a3a32..9ae26996d 100644 --- a/src/step_utilities.h +++ b/src/step_utilities.h @@ -14,5 +14,5 @@ #include "step.h" #include -std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key); -int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const Step& step); +std::optional get_step(grib_handle* h, const char* value_key, const char* unit_key); +int set_step(grib_handle* h, const std::string& value_key, const std::string& unit_key, const eccodes::Step& step); From 8b2d4c45f546989d5d6886fe027fa4376c4bc33e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 6 Dec 2023 17:11:33 +0000 Subject: [PATCH 126/469] Dumper: add default value info (Debug mode) --- src/grib_dumper_class_debug.cc | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 79c1ea29c..97496b43c 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -100,6 +100,57 @@ static int destroy(grib_dumper* d) return GRIB_SUCCESS; } +static void default_long_value(grib_dumper* d, grib_accessor* a, long actualValue) +{ + grib_dumper_debug* self = (grib_dumper_debug*)d; + grib_action* act = a->creator; + if (act->default_value == NULL) + return; + + grib_handle* h = grib_handle_of_accessor(a); + grib_expression* expression = grib_arguments_get_expression(h, act->default_value, 0); + if (!expression) + return; + + const int type = grib_expression_native_type(h, expression); + DEBUG_ASSERT(type == GRIB_TYPE_LONG); + + if (type == GRIB_TYPE_LONG) { + long defaultValue = 0; + if (grib_expression_evaluate_long(h, expression, &defaultValue) == GRIB_SUCCESS && defaultValue != actualValue) { + if (defaultValue == GRIB_MISSING_LONG) + fprintf(self->dumper.out, " (default=MISSING)"); + else + fprintf(self->dumper.out, " (default=%ld)",defaultValue); + } + } +} + +// static void default_string_value(grib_dumper* d, grib_accessor* a, const char* actualValue) +// { +// grib_dumper_debug* self = (grib_dumper_debug*)d; +// grib_action* act = a->creator; +// if (act->default_value == NULL) +// return; + +// grib_handle* h = grib_handle_of_accessor(a); +// grib_expression* expression = grib_arguments_get_expression(h, act->default_value, 0); +// if (!expression) +// return; + +// const int type = grib_expression_native_type(h, expression); +// DEBUG_ASSERT(type == GRIB_TYPE_STRING); +// if (type == GRIB_TYPE_STRING) { +// char tmp[1024] = {0,}; +// size_t s_len = sizeof(tmp); +// int err = 0; +// const char* p = grib_expression_evaluate_string(h, expression, tmp, &s_len, &err); +// if (!err && !STR_EQUAL(p, actualValue)) { +// fprintf(self->dumper.out, " (default=%s)", p); +// } +// } +// } + static void aliases(grib_dumper* d, grib_accessor* a) { int i; @@ -202,6 +253,7 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_debug::dump_long]", err, grib_get_error_message(err)); aliases(d, a); + default_long_value(d, a, value); fprintf(self->dumper.out, "\n"); } From 1183031e7153e26ee845bef264c37a8a390f1578 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 7 Dec 2023 12:48:28 +0000 Subject: [PATCH 127/469] ECC-1723: Re-add params 162055 and 190141 --- .../grib2/localConcepts/ecmf/cfVarName.legacy.def | 12 ++++++++++++ definitions/grib2/localConcepts/ecmf/name.legacy.def | 12 ++++++++++++ .../grib2/localConcepts/ecmf/paramId.legacy.def | 12 ++++++++++++ .../grib2/localConcepts/ecmf/shortName.legacy.def | 12 ++++++++++++ .../grib2/localConcepts/ecmf/units.legacy.def | 12 ++++++++++++ 5 files changed, 60 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 27f6cde86..42c81b37e 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -1339,3 +1339,15 @@ parameterCategory = 128 ; parameterNumber = 124 ; } +#Vertical integral of water vapour +'p55.162' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 55 ; +} +#Snow depth +'sdsien' = { + discipline = 192 ; + parameterCategory = 190 ; + parameterNumber = 141 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 01695cdf0..b27bc61c7 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -1339,3 +1339,15 @@ parameterCategory = 128 ; parameterNumber = 124 ; } +#Vertical integral of water vapour +'Vertical integral of water vapour' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 55 ; +} +#Snow depth +'Snow depth' = { + discipline = 192 ; + parameterCategory = 190 ; + parameterNumber = 141 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 6c8e0c585..e1122a4bc 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -1339,3 +1339,15 @@ parameterCategory = 128 ; parameterNumber = 124 ; } +#Vertical integral of water vapour +'162055' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 55 ; +} +#Snow depth +'190141' = { + discipline = 192 ; + parameterCategory = 190 ; + parameterNumber = 141 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 655244bc1..aa0db49de 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -1339,3 +1339,15 @@ parameterCategory = 128 ; parameterNumber = 124 ; } +#Vertical integral of water vapour +'viwv' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 55 ; +} +#Snow depth +'sdsien' = { + discipline = 192 ; + parameterCategory = 190 ; + parameterNumber = 141 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index 20bce98cf..d2f4aafda 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -1339,3 +1339,15 @@ parameterCategory = 128 ; parameterNumber = 124 ; } +#Vertical integral of water vapour +'kg m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 55 ; +} +#Snow depth +'kg m**-2' = { + discipline = 192 ; + parameterCategory = 190 ; + parameterNumber = 141 ; +} From 591f335cdb312e364ebc94d92d5fcb6e1ce9e255 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 7 Dec 2023 15:46:03 +0000 Subject: [PATCH 128/469] ECC-1733: GRIB2: codes_set_missing doesn't work for timeIncrement and indicatorOfUnitOfTimeIncrement keys --- examples/C/new_sample.c | 1 + src/eccodes_prototypes.h | 4 + src/grib_accessor_class_codetable.cc | 117 ++++++++++++++++++++++++++- src/grib_dumper_class_debug.cc | 2 - src/grib_value.cc | 15 +++- tests/CMakeLists.txt | 2 + tests/codes_codetable.cc | 80 ++++++++++++++++++ tests/codes_codetable.sh | 22 +++++ tests/grib_missing.sh | 22 ++++- 9 files changed, 257 insertions(+), 8 deletions(-) create mode 100644 tests/codes_codetable.cc create mode 100755 tests/codes_codetable.sh diff --git a/examples/C/new_sample.c b/examples/C/new_sample.c index 529b52b29..53014845c 100644 --- a/examples/C/new_sample.c +++ b/examples/C/new_sample.c @@ -196,6 +196,7 @@ int main(int argc, char** argv) /* 255 = Missing (grib2/tables/4/4.5.table) */ CODES_CHECK(codes_set_long(h, "typeOfSecondFixedSurface", 255), 0); + CODES_CHECK(codes_set_missing(h, "typeOfSecondFixedSurface"), 0); CODES_CHECK(codes_set_missing(h, "scaleFactorOfSecondFixedSurface"), 0); CODES_CHECK(codes_set_missing(h, "scaledValueOfSecondFixedSurface"), 0); diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 68284b66e..0b475f635 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -340,6 +340,9 @@ void grib_smart_table_delete(grib_context* c); /* grib_accessor_class_codetable.cc*/ void grib_codetable_delete(grib_context* c); +int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries); +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code_figure); +int codes_codetable_check_abbreviation(const grib_handle* h, const char* key, const char* abbreviation); /* grib_accessor_class_codetable_units.cc*/ @@ -1144,6 +1147,7 @@ int grib_set_missing(grib_handle* h, const char* name); int grib_is_missing_long(grib_accessor* a, long x); int grib_is_missing_double(grib_accessor* a, double x); int grib_is_missing_string(grib_accessor* a, const unsigned char* x, size_t len); +int grib_accessor_can_be_missing(grib_accessor* a, int* err); int grib_accessor_is_missing(grib_accessor* a, int* err); int grib_is_missing(const grib_handle* h, const char* name, int* err); int grib_is_defined(const grib_handle* h, const char* name); diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index e8e286623..a14f13178 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -50,7 +50,7 @@ static void thread_init() CLASS = accessor SUPER = grib_accessor_class_unsigned IMPLEMENTS = init;dump;unpack_string;pack_expression;unpack_long - IMPLEMENTS = value_count;pack_string; destroy; get_native_type; + IMPLEMENTS = value_count;pack_string; destroy; get_native_type;pack_missing MEMBERS = const char* tablename MEMBERS = const char* masterDir MEMBERS = const char* localDir @@ -71,6 +71,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); +static int pack_missing(grib_accessor*); static int pack_string(grib_accessor*, const char*, size_t* len); static int pack_expression(grib_accessor*, grib_expression*); static int unpack_long(grib_accessor*, long* val, size_t* len); @@ -115,7 +116,7 @@ static grib_accessor_class _grib_accessor_class_codetable = { 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* pack_missing */ + &pack_missing, /* pack_missing */ 0, /* is_missing */ 0, /* pack_long */ &unpack_long, /* unpack_long */ @@ -523,6 +524,94 @@ void grib_codetable_delete(grib_context* c) } } +int codes_codetable_get_contents_malloc(const grib_handle* h, const char* key, code_table_entry** entries, size_t* num_entries) +{ + long lvalue = 0; + size_t size = 1; + int err = 0; + grib_context* c = h->context; + + grib_accessor* aa = grib_find_accessor(h, key); + if (!aa) return GRIB_NOT_FOUND; + + if (!STR_EQUAL(aa->cclass->name, "codetable")) { + return GRIB_INVALID_ARGUMENT; // key is not a codetable + } + + const grib_accessor_codetable* ca = (const grib_accessor_codetable*)aa; // could be dynamic_cast + + // Decode the key itself. This will either fetch it from the cache or place it there + if ((err = grib_unpack_long(aa, &lvalue, &size)) != GRIB_SUCCESS) { + return err; + } + + const grib_codetable* table = ca->table; + if (!table) return GRIB_INTERNAL_ERROR; + + grib_codetable* cached_table = c->codetable; // Access the codetable cache + while (cached_table) { + if (STR_EQUAL(table->recomposed_name[0], cached_table->recomposed_name[0])) { + // Found a cache entry that matches the recomposed name of ours + *num_entries = cached_table->size; + *entries = (code_table_entry*)calloc(cached_table->size, sizeof(code_table_entry)); + if (!*entries) { + return GRIB_OUT_OF_MEMORY; + } + for (size_t i = 0; i < cached_table->size; i++) { + (*entries)[i] = cached_table->entries[i]; + } + return GRIB_SUCCESS; + } + cached_table = cached_table->next; + } + + return GRIB_CODE_NOT_FOUND_IN_TABLE; +} + +int codes_codetable_check_code_figure(const grib_handle* h, const char* key, long code_figure) +{ + code_table_entry* entries = NULL; + size_t num_entries = 0; + int err = 0; + err = codes_codetable_get_contents_malloc(h, key, &entries, &num_entries); + if (err) return err; + + if (code_figure < 0 || (size_t)code_figure >= num_entries) { + err = GRIB_OUT_OF_RANGE; + goto cleanup; + } + + if (entries[code_figure].abbreviation == NULL) { + err = GRIB_INVALID_KEY_VALUE; + goto cleanup; + } +cleanup: + free(entries); + return err; +} + +int codes_codetable_check_abbreviation(const grib_handle* h, const char* key, const char* abbreviation) +{ + code_table_entry* entries = NULL; + size_t num_entries = 0; + int err = 0; + err = codes_codetable_get_contents_malloc(h, key, &entries, &num_entries); + if (err) return err; + + bool found = false; + for (size_t i=0; ilength; + const long nbits = nbytes*8; + const long maxVal = (1<name, maxVal); + if (!err) { + size_t l = 1; + return grib_pack_long(a, &maxVal, &l); + } + + grib_context_log(a->context, GRIB_LOG_ERROR, "There is no 'missing' entry in Code Table %s (%s)", + self->tablename, grib_get_error_message(err)); + + return err; +} diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 97496b43c..cf92e9e28 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -113,8 +113,6 @@ static void default_long_value(grib_dumper* d, grib_accessor* a, long actualValu return; const int type = grib_expression_native_type(h, expression); - DEBUG_ASSERT(type == GRIB_TYPE_LONG); - if (type == GRIB_TYPE_LONG) { long defaultValue = 0; if (grib_expression_evaluate_long(h, expression, &defaultValue) == GRIB_SUCCESS && defaultValue != actualValue) { diff --git a/src/grib_value.cc b/src/grib_value.cc index f9e24d678..9455992c3 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -571,7 +571,7 @@ int grib_set_missing(grib_handle* h, const char* name) if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) return GRIB_READ_ONLY; - if (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) { + if (grib_accessor_can_be_missing(a, &ret)) { if (h->context->debug) fprintf(stderr, "ECCODES DEBUG grib_set_missing %s\n", name); @@ -641,6 +641,19 @@ int grib_accessor_is_missing(grib_accessor* a, int* err) } } +int grib_accessor_can_be_missing(grib_accessor* a, int* err) +{ + if (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) { + return 1; + } + if (STR_EQUAL(a->cclass->name, "codetable")) { + // Special case of Code Table keys + // The vast majority have a 'Missing' entry + return 1; + } + return 0; +} + int grib_is_missing(const grib_handle* h, const char* name, int* err) { grib_accessor* a = grib_find_accessor(h, name); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 55818b054..8079b9082 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,6 +50,7 @@ list(APPEND test_c_bins codes_set_samples_path codes_compare_keys codes_dump_content + codes_codetable grib_sh_ieee64 grib_ieee grib_set_bytes @@ -243,6 +244,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_force bufr_ecc-556 codes_ecc-1698 + codes_codetable gts_get gts_ls gts_count diff --git a/tests/codes_codetable.cc b/tests/codes_codetable.cc new file mode 100644 index 000000000..0d4878d00 --- /dev/null +++ b/tests/codes_codetable.cc @@ -0,0 +1,80 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ +#include +#include "grib_api_internal.h" + +#undef NDEBUG +#include + +int main(int argc, char* argv[]) +{ + Assert(argc == 1); + grib_handle* h = grib_handle_new_from_samples(0, "GRIB2"); + + code_table_entry* entries = NULL; + size_t num_entries = 0; + int err = codes_codetable_get_contents_malloc(h, "indicatorOfUnitOfTimeRange", &entries, &num_entries); + Assert(!err); + Assert(entries != NULL); + Assert(num_entries == 256); + + for (size_t i=0; i $REDIRECT > $REDIRECT +# Make sure it works with the default sample +${tools_dir}/grib_set -s typeOfFirstFixedSurface=missing $sample2 $outfile +grib_check_key_equals $outfile 'typeOfFirstFixedSurface:i' '255' -[ $? -ne 0 ] +# Make sure it works with the latest GRIB2 version code table 4.5 +latest=`${tools_dir}/grib_get -p tablesVersionLatest $sample2` +${tools_dir}/grib_set -s tablesVersion=$latest $sample2 $temp +${tools_dir}/grib_set -s typeOfFirstFixedSurface=missing $temp $outfile +grib_check_key_equals $outfile 'typeOfFirstFixedSurface:i' '255' +rm -f $temp +${tools_dir}/grib_set -s centre=missing $sample1 $outfile +grib_check_key_equals $outfile 'centre' 'consensus' + + +# Clean up rm -f $outfile From 3f2524c1672270136b5b78861f1d40a89b7b5954 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 7 Dec 2023 16:37:23 +0000 Subject: [PATCH 129/469] ECC-1733: Further tests --- tests/grib_missing.sh | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/grib_missing.sh b/tests/grib_missing.sh index 3242039cd..f80177100 100755 --- a/tests/grib_missing.sh +++ b/tests/grib_missing.sh @@ -12,8 +12,12 @@ REDIRECT=/dev/null +label="grib_missing_test" + infile="${data_dir}/missing.grib2" -outfile="${data_dir}/temp.missing_new.grib2" +outfile="${data_dir}/temp.$label.grib2" +tempText=temp.$label.txt +tempGrib=temp.$label.grib scaleFactorOfSecondFixedSurface=`${tools_dir}/grib_get -w count=1 -p scaleFactorOfSecondFixedSurface $infile` [ "$scaleFactorOfSecondFixedSurface" = "0" ] @@ -33,7 +37,6 @@ scaledValueOfSecondFixedSurface=`${tools_dir}/grib_get -w count=1 -p scaledValue # ----------------------------------------- sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -temp=temp.grib_missing.grib # Make sure it works with the default sample ${tools_dir}/grib_set -s typeOfFirstFixedSurface=missing $sample2 $outfile @@ -41,14 +44,22 @@ grib_check_key_equals $outfile 'typeOfFirstFixedSurface:i' '255' # Make sure it works with the latest GRIB2 version code table 4.5 latest=`${tools_dir}/grib_get -p tablesVersionLatest $sample2` -${tools_dir}/grib_set -s tablesVersion=$latest $sample2 $temp -${tools_dir}/grib_set -s typeOfFirstFixedSurface=missing $temp $outfile +${tools_dir}/grib_set -s tablesVersion=$latest $sample2 $tempGrib +${tools_dir}/grib_set -s typeOfFirstFixedSurface=missing $tempGrib $outfile grib_check_key_equals $outfile 'typeOfFirstFixedSurface:i' '255' -rm -f $temp +rm -f $tempGrib ${tools_dir}/grib_set -s centre=missing $sample1 $outfile grib_check_key_equals $outfile 'centre' 'consensus' +# Some code tables do not have a missing entry +set +e +${tools_dir}/grib_set -s timeRangeIndicator=missing $sample1 $outfile 2>$tempText +status=$? +set -e +[ $status -ne 0 ] +grep -q "There is no 'missing' entry in Code Table 5.table" $tempText + # Clean up -rm -f $outfile +rm -f $outfile $tempText $tempGrib From c728c0d7a9be0ebead4a6561a3d505fb5aa58001 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 7 Dec 2023 17:13:45 +0000 Subject: [PATCH 130/469] Const correctness --- src/eccodes_prototypes.h | 6 +++--- src/grib_value.cc | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 0b475f635..350b8bed9 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1161,8 +1161,8 @@ int grib_set_float_array(grib_handle* h, const char* name, const float* val, siz int grib_set_long_array_internal(grib_handle* h, const char* name, const long* val, size_t length); int grib_set_long_array(grib_handle* h, const char* name, const long* val, size_t length); int grib_get_long_internal(grib_handle* h, const char* name, long* val); -int grib_is_in_dump(grib_handle* h, const char* name); -int grib_attributes_count(grib_accessor* a, size_t* size); +int grib_is_in_dump(const grib_handle* h, const char* name); +int grib_attributes_count(const grib_accessor* a, size_t* size); int grib_get_long(const grib_handle* h, const char* name, long* val); int grib_get_double_internal(grib_handle* h, const char* name, double* val); int grib_get_double(const grib_handle* h, const char* name, double* val); @@ -1208,7 +1208,7 @@ int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); void grib_print_values(const char* title, grib_values* values); int grib_values_check(grib_handle* h, grib_values* values, int count); -int grib_key_equal(grib_handle* h1, grib_handle* h2, const char* key, int type, int* err); +int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err); int codes_copy_key(grib_handle* h1, grib_handle* h2, const char* key, int type); int codes_compare_key(grib_handle* h1, grib_handle* h2, const char* key, int compare_flags); diff --git a/src/grib_value.cc b/src/grib_value.cc index 9455992c3..4cc974fd6 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -81,7 +81,7 @@ int grib_set_expression(grib_handle* h, const char* name, grib_expression* e) int grib_set_long_internal(grib_handle* h, const char* name, long val) { - grib_context* c = h->context; + const grib_context* c = h->context; int ret = GRIB_SUCCESS; grib_accessor* a = NULL; size_t l = 1; @@ -213,8 +213,8 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src) grib_accessor* a = NULL; key_err = first; while (key_err) { - char* key = key_err->name; - err = &(key_err->err); + const char* key = key_err->name; + err = &(key_err->err); if (*err == GRIB_SUCCESS) { key_err = key_err->next; @@ -663,7 +663,7 @@ int grib_is_missing(const grib_handle* h, const char* name, int* err) /* Return true if the given key exists (is defined) in our grib message */ int grib_is_defined(const grib_handle* h, const char* name) { - grib_accessor* a = grib_find_accessor(h, name); + const grib_accessor* a = grib_find_accessor(h, name); return (a ? 1 : 0); } @@ -951,16 +951,16 @@ int grib_get_long_internal(grib_handle* h, const char* name, long* val) return ret; } -int grib_is_in_dump(grib_handle* h, const char* name) +int grib_is_in_dump(const grib_handle* h, const char* name) { - grib_accessor* a = grib_find_accessor(h, name); + const grib_accessor* a = grib_find_accessor(h, name); if (a != NULL && (a->flags & GRIB_ACCESSOR_FLAG_DUMP)) return 1; else return 0; } -int grib_attributes_count(grib_accessor* a, size_t* size) +int grib_attributes_count(const grib_accessor* a, size_t* size) { if (a) { *size = 0; @@ -1465,7 +1465,7 @@ int grib_get_length(const grib_handle* h, const char* name, size_t* length) int grib_get_offset(const grib_handle* ch, const char* key, size_t* val) { - grib_handle* h = (grib_handle*)ch; + const grib_handle* h = (grib_handle*)ch; grib_accessor* act = grib_find_accessor(h, key); if (act) { *val = (size_t)grib_byte_offset(act); @@ -1931,7 +1931,7 @@ int grib_values_check(grib_handle* h, grib_values* values, int count) return 0; } -int grib_key_equal(grib_handle* h1, grib_handle* h2, const char* key, int type, int* err) +int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err) { double d1 = 0, d2 = 0; long l1 = 0, l2 = 0; From ca4046302f3e4847cef1867c06f3c92c610340a2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 8 Dec 2023 11:41:58 +0000 Subject: [PATCH 131/469] Samples: Update tablesVersion to 32 --- samples/destine_grib2.tmpl | Bin 200 -> 200 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/samples/destine_grib2.tmpl b/samples/destine_grib2.tmpl index 95154453c7d79748bd091682d633d23c1fb1607e..427911ce1553ae6f56b7b1a3ea4aee25e359bb0f 100644 GIT binary patch delta 11 ScmX@Xc!F_)B%{JasdWGsT?4iN delta 11 ScmX@Xc!F_)B%}O9sdWGsSp&5I From 2617255ef1390f78eaa792505f751c9f19b218ad Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 9 Dec 2023 14:32:38 +0000 Subject: [PATCH 132/469] Testing: Packing gridded values --- tests/grib_2nd_order_numValues.cc | 2696 +- tests/grib_gridded_values.h | 2693 ++ tests/grib_optimize_scaling.cc | 2700 +- tests/grib_packing_order.cc | 49561 ++++++++++++++-------------- 4 files changed, 27480 insertions(+), 30170 deletions(-) create mode 100644 tests/grib_gridded_values.h diff --git a/tests/grib_2nd_order_numValues.cc b/tests/grib_2nd_order_numValues.cc index 8e66c04e5..480dc6c31 100644 --- a/tests/grib_2nd_order_numValues.cc +++ b/tests/grib_2nd_order_numValues.cc @@ -11,2702 +11,10 @@ #include "grib_api.h" /* - * Test that second order packing sets the correct numberOfValues + * Test that packing sets the correct numberOfValues * philippe.marguinaud@meteo.fr, 2016/02 */ - -static double values[] = { - 0.101300032966540894E+06, 0.101300537463512766E+06, 0.101300575340236785E+06, 0.101300006392703450E+06, 0.101298681683129777E+06, - 0.101296357626198034E+06, 0.101291429037962458E+06, 0.101285211396584113E+06, 0.101277811769244916E+06, 0.101269604202318660E+06, - 0.101261086325391967E+06, 0.101252536774223816E+06, 0.101244258202072262E+06, 0.101236292863086681E+06, 0.101228818038673067E+06, - 0.101222576320632390E+06, 0.101217951101617422E+06, 0.101215281498123208E+06, 0.101214831830208335E+06, 0.101216756641191008E+06, - 0.101220329473252321E+06, 0.101229814720005656E+06, 0.101242852565120862E+06, 0.101257243179816374E+06, 0.101272242223526715E+06, - 0.101287023899284890E+06, 0.101300727324330161E+06, 0.101312508880994021E+06, 0.101321304787958841E+06, 0.101323045492054458E+06, - 0.101323689235454440E+06, 0.101322654817980932E+06, 0.101318546143449697E+06, 0.101311446435368038E+06, 0.101301582670344171E+06, - 0.101289313645048256E+06, 0.101272976739770951E+06, 0.101254670123119533E+06, 0.101236204711241953E+06, 0.101218525147353255E+06, - 0.101203644914472199E+06, 0.101191859002529978E+06, 0.101183427645969176E+06, 0.101178788732659857E+06, 0.101176248776911350E+06, - 0.101174781987763519E+06, 0.101173755414963452E+06, 0.101172549028196707E+06, 0.101170596810517556E+06, 0.101164899003713479E+06, - 0.101158419589045283E+06, 0.101152491572940358E+06, 0.101147843517789603E+06, 0.101145017464391334E+06, 0.101144350744426047E+06, - 0.101145965622140546E+06, 0.101150160852645960E+06, 0.101156489280060341E+06, 0.101164999288937499E+06, 0.101174680757722846E+06, - 0.101184614700939375E+06, 0.101194476866903220E+06, 0.101203847071805940E+06, 0.101212793693367261E+06, 0.101221210811864396E+06, - 0.101228967667653473E+06, 0.101235941297612240E+06, 0.101241825830798407E+06, 0.101246384813952725E+06, 0.101250233289149895E+06, - 0.101253625288606709E+06, 0.101256829767974210E+06, 0.101260135466684485E+06, 0.101263922730170481E+06, 0.101268258457290780E+06, - 0.101273173871677092E+06, 0.101278603318462468E+06, 0.101284438572224244E+06, 0.101291451901038017E+06, 0.101298825789695678E+06, - 0.101305583597361008E+06, 0.101311198590170257E+06, 0.101313106869633571E+06, 0.101311964918650119E+06, 0.101309609217350633E+06, - 0.101306588009722152E+06, 0.101303789827421686E+06, 0.101303204229508177E+06, 0.101302539808644782E+06, 0.101301748136565366E+06, - 0.101300889588588965E+06, 0.101301524026314495E+06, 0.101302253276609670E+06, 0.101302463210049027E+06, 0.101302292202795681E+06, - 0.101298302559037387E+06, 0.101291449427361382E+06, 0.101283550209983820E+06, 0.101275343284659903E+06, 0.101268451030137920E+06, - 0.101263440167506284E+06, 0.101259681043976845E+06, 0.101257275584439689E+06, 0.101255817294926324E+06, 0.101255329151085723E+06, - 0.101256832423130865E+06, 0.101260699063277454E+06, 0.101270225601657599E+06, 0.101287312191364559E+06, 0.101303455630186116E+06, - 0.101316029699689170E+06, 0.101320758891846766E+06, 0.101311100182774215E+06, 0.101294901290088586E+06, 0.101273081896347416E+06, - 0.101246397937256072E+06, 0.101214175532589943E+06, 0.101180475299171711E+06, 0.101147446887522659E+06, 0.101117364487217361E+06, - 0.101093085915674965E+06, 0.101075700452174933E+06, 0.101066299886712630E+06, 0.101066158368806296E+06, 0.101078251612071312E+06, - 0.101107333429588485E+06, 0.101145577197960345E+06, 0.101190184433163799E+06, 0.101238249723994639E+06, 0.101280682092796589E+06, - 0.101316576899162261E+06, 0.101349617253023622E+06, 0.101379226791601075E+06, 0.101404833281466810E+06, 0.101426608723689307E+06, - 0.101443265324151027E+06, 0.101453984963411596E+06, 0.101458728599400347E+06, 0.101457810163301183E+06, 0.101452773264225369E+06, - 0.101443352159658025E+06, 0.101428700824100233E+06, 0.101409534671443689E+06, 0.101387066094169772E+06, 0.101362901532581192E+06, - 0.101342428907368536E+06, 0.101323657976273273E+06, 0.101307125752964450E+06, 0.101293183514770688E+06, 0.101280868902945120E+06, - 0.101268909632403243E+06, 0.101254864133468844E+06, 0.101241751785266810E+06, 0.101229873732095890E+06, 0.101219507414652238E+06, - 0.101210854622372586E+06, 0.101203998200015136E+06, 0.101202118817604176E+06, 0.101204115282818020E+06, 0.101207394659720041E+06, - 0.101211469101194845E+06, 0.101215801913933246E+06, 0.101219837912576768E+06, 0.101222821880958276E+06, 0.101223619521153145E+06, - 0.101223119359168049E+06, 0.101279933976388784E+06, 0.101280230886902951E+06, 0.101280173829517254E+06, 0.101279628905657766E+06, - 0.101278452724477320E+06, 0.101276500130166445E+06, 0.101273279706602567E+06, 0.101267225127293903E+06, 0.101259879400551043E+06, - 0.101251952874409501E+06, 0.101243674039727790E+06, 0.101235303075196876E+06, 0.101227122345847776E+06, 0.101219423613287974E+06, - 0.101212178882549546E+06, 0.101205696806113177E+06, 0.101200710454399567E+06, 0.101197550054666615E+06, 0.101196424920055710E+06, - 0.101196682426928426E+06, 0.101199196544638864E+06, 0.101204111882830854E+06, 0.101214864879095490E+06, 0.101228568680570461E+06, - 0.101243289081509487E+06, 0.101258220436669624E+06, 0.101272521063369320E+06, 0.101285366950491778E+06, 0.101296012419061328E+06, - 0.101305658540617282E+06, 0.101309682063797125E+06, 0.101310624244857565E+06, 0.101308433795484656E+06, 0.101303210985482059E+06, - 0.101295198335334237E+06, 0.101284767756201632E+06, 0.101272403737592205E+06, 0.101256113788140079E+06, 0.101238847669926457E+06, - 0.101222589159180454E+06, 0.101208629956686913E+06, 0.101197517909479167E+06, 0.101189497449897433E+06, 0.101184456694785782E+06, - 0.101181649500138068E+06, 0.101179750491125887E+06, 0.101178046404878522E+06, 0.101175885037415414E+06, 0.101168022154143066E+06, - 0.101159966065713801E+06, 0.101152331174549618E+06, 0.101145627588820978E+06, 0.101140536375719617E+06, 0.101137554875074289E+06, - 0.101136964384819003E+06, 0.101138821605761070E+06, 0.101143054186604160E+06, 0.101151654753774303E+06, 0.101161075130481171E+06, - 0.101170963288776737E+06, 0.101180942106852366E+06, 0.101190660642090996E+06, 0.101199851697929174E+06, 0.101208579711314771E+06, - 0.101216763897321827E+06, 0.101224252677880388E+06, 0.101230718188980885E+06, 0.101236243573164116E+06, 0.101240451206177866E+06, - 0.101243892699987075E+06, 0.101246988344102370E+06, 0.101250044906442185E+06, 0.101253348298035868E+06, 0.101257374370298217E+06, - 0.101262251561231329E+06, 0.101267895803787687E+06, 0.101275473367753089E+06, 0.101283709026768585E+06, 0.101292283625024313E+06, - 0.101300598737905675E+06, 0.101308093199018083E+06, 0.101314220495369867E+06, 0.101317565250665139E+06, 0.101316383038650820E+06, - 0.101313738332474823E+06, 0.101310203262582130E+06, 0.101306334680532935E+06, 0.101304140173899126E+06, 0.101302185066315011E+06, - 0.101301166929963205E+06, 0.101300627409982437E+06, 0.101301442301666364E+06, 0.101302674870566902E+06, 0.101303021785214194E+06, - 0.101301874610097177E+06, 0.101297234163742920E+06, 0.101289212662159043E+06, 0.101280201810217695E+06, 0.101271153345172788E+06, - 0.101264093160240271E+06, 0.101259964551924568E+06, 0.101257527008254954E+06, 0.101256779297676592E+06, 0.101257083402693010E+06, - 0.101258345876766994E+06, 0.101261741195912517E+06, 0.101267637196925745E+06, 0.101280255542587736E+06, 0.101300219472217796E+06, - 0.101318811431023903E+06, 0.101333064281329105E+06, 0.101337822826176372E+06, 0.101329633927901843E+06, 0.101313842956693508E+06, - 0.101291773913463257E+06, 0.101264248822328038E+06, 0.101231681402834831E+06, 0.101198711256044262E+06, 0.101165944729817566E+06, - 0.101135663129340406E+06, 0.101112149821393570E+06, 0.101094336258872077E+06, 0.101083754934829689E+06, 0.101081962838100400E+06, - 0.101094161177945804E+06, 0.101119463798994111E+06, 0.101153379508463855E+06, 0.101193466772876971E+06, 0.101236864297787688E+06, - 0.101271319749684611E+06, 0.101304810719710440E+06, 0.101336529049048593E+06, 0.101365547226062699E+06, 0.101391403447243065E+06, - 0.101414233987549960E+06, 0.101431699751902197E+06, 0.101443249701215464E+06, 0.101448694379159249E+06, 0.101448342945639379E+06, - 0.101444949497289897E+06, 0.101434983683722516E+06, 0.101420339588228075E+06, 0.101400782009497547E+06, 0.101377357223598548E+06, - 0.101353445824612878E+06, 0.101331105881366500E+06, 0.101310391048972291E+06, 0.101292023316921361E+06, 0.101276408630823629E+06, - 0.101263594338449708E+06, 0.101249134886344415E+06, 0.101234892154251414E+06, 0.101221982151018121E+06, 0.101210641209280395E+06, - 0.101201103409364907E+06, 0.101193542381486463E+06, 0.101189530184913005E+06, 0.101188943141927884E+06, 0.101190369535781749E+06, - 0.101194174658495293E+06, 0.101198877046582638E+06, 0.101203781726436631E+06, 0.101208345081553751E+06, 0.101210641923420510E+06, - 0.101211907924376195E+06, 0.101211894158448660E+06, 0.101261542396602526E+06, 0.101261524602459496E+06, 0.101261271962264684E+06, - 0.101260655467705859E+06, 0.101259535677996173E+06, 0.101257770460092695E+06, 0.101254858567248273E+06, 0.101250130827152869E+06, - 0.101243199529206220E+06, 0.101235660710148513E+06, 0.101227727082598372E+06, 0.101219642017676335E+06, 0.101211669747645647E+06, - 0.101204082204654842E+06, 0.101197142166519814E+06, 0.101190828836761386E+06, 0.101185622952613427E+06, 0.101182084994122983E+06, - 0.101179819644487143E+06, 0.101179386785722192E+06, 0.101181037231546885E+06, 0.101184921544816825E+06, 0.101191071708805684E+06, - 0.101202963344456002E+06, 0.101217214661309525E+06, 0.101232127096539611E+06, 0.101246868435665092E+06, 0.101260623299959872E+06, - 0.101275012912500446E+06, 0.101287927630361359E+06, 0.101297156607966986E+06, 0.101300022279744313E+06, 0.101299658882873831E+06, - 0.101296185125092088E+06, 0.101289860769760111E+06, 0.101281072853932870E+06, 0.101270317685887567E+06, 0.101257849866728764E+06, - 0.101241620969336713E+06, 0.101226620289076629E+06, 0.101213719159152053E+06, 0.101203448100139896E+06, 0.101196030165699893E+06, - 0.101191332050565718E+06, 0.101188825460235021E+06, 0.101186627930786824E+06, 0.101183177496864155E+06, 0.101175055095382006E+06, - 0.101166325451567565E+06, 0.101157506572639366E+06, 0.101149141784503256E+06, 0.101141882059824522E+06, 0.101136611424843984E+06, - 0.101133780517071078E+06, 0.101133612778250375E+06, 0.101137015702474586E+06, 0.101144048000326933E+06, 0.101152946100252506E+06, - 0.101162592544671337E+06, 0.101172594122147348E+06, 0.101182525914593833E+06, 0.101192006688188281E+06, 0.101200731545306888E+06, - 0.101208949653701755E+06, 0.101216776035106115E+06, 0.101223643986761963E+06, 0.101229495275078225E+06, 0.101234397106283810E+06, - 0.101238325186287970E+06, 0.101241245958931366E+06, 0.101243986310471693E+06, 0.101246885079730608E+06, 0.101250239965938381E+06, - 0.101254497783043873E+06, 0.101260948534770170E+06, 0.101268693386766550E+06, 0.101277410860750868E+06, 0.101286673004684562E+06, - 0.101296037156777587E+06, 0.101304973100759889E+06, 0.101312836471203336E+06, 0.101319077100166265E+06, 0.101323200714451756E+06, - 0.101322250124293394E+06, 0.101319426400325508E+06, 0.101315327879672026E+06, 0.101311379409400208E+06, 0.101308929715621984E+06, - 0.101307576201749136E+06, 0.101306752066909641E+06, 0.101306276681202202E+06, 0.101306450951061837E+06, 0.101306928825287003E+06, - 0.101306304370611891E+06, 0.101304071949983219E+06, 0.101298726444911401E+06, 0.101289556844688181E+06, 0.101279573549734007E+06, - 0.101269900918276995E+06, 0.101262737639210711E+06, 0.101259533404357528E+06, 0.101258456904325285E+06, 0.101259373853730853E+06, - 0.101261455254273096E+06, 0.101264486663057716E+06, 0.101269671494430630E+06, 0.101277337091813301E+06, 0.101292476984397377E+06, - 0.101314252890570002E+06, 0.101334243526143560E+06, 0.101349257112687643E+06, 0.101353348220742904E+06, 0.101345316081726181E+06, - 0.101329205683580891E+06, 0.101306196398575121E+06, 0.101276157501052992E+06, 0.101241050683782683E+06, 0.101205878990180805E+06, - 0.101173117425566874E+06, 0.101145231775263543E+06, 0.101124829234029152E+06, 0.101110142836540865E+06, 0.101099009983212847E+06, - 0.101095931793603289E+06, 0.101107937055714152E+06, 0.101129557639286853E+06, 0.101159016947845914E+06, 0.101194290171214365E+06, - 0.101229194191076458E+06, 0.101259884907642350E+06, 0.101290909335772027E+06, 0.101321534960278805E+06, 0.101350933609778935E+06, - 0.101378619763291339E+06, 0.101402515553940961E+06, 0.101421126437325220E+06, 0.101433759893184542E+06, 0.101440081432142906E+06, - 0.101442774222367792E+06, 0.101440175371796868E+06, 0.101430382938397539E+06, 0.101414195446914280E+06, 0.101393183882853962E+06, - 0.101368556280786899E+06, 0.101342857987377705E+06, 0.101318002031737051E+06, 0.101294900480304379E+06, 0.101274304523903862E+06, - 0.101256697091383176E+06, 0.101240541623616038E+06, 0.101225909818463362E+06, 0.101213299349493405E+06, 0.101200928172660904E+06, - 0.101190501742025459E+06, 0.101182213405811461E+06, 0.101176901403817319E+06, 0.101175245583661221E+06, 0.101175762446152599E+06, - 0.101178005333581008E+06, 0.101181392651505157E+06, 0.101186087494527630E+06, 0.101191405412103719E+06, 0.101195091837111089E+06, - 0.101197730891759726E+06, 0.101199364382066880E+06, 0.101199730209935369E+06, 0.101245004040932326E+06, 0.101244559135352756E+06, - 0.101244006361693333E+06, 0.101243220164091719E+06, 0.101242063426875131E+06, 0.101239785127296316E+06, 0.101236357261140554E+06, - 0.101232655165141550E+06, 0.101227802625625860E+06, 0.101220780822386791E+06, 0.101213322053334618E+06, 0.101205654745465290E+06, - 0.101198027406206093E+06, 0.101190695138277268E+06, 0.101183902374283105E+06, 0.101177861446733092E+06, 0.101172715839318174E+06, - 0.101168727915036332E+06, 0.101166083677619172E+06, 0.101165120300427254E+06, 0.101166097664782996E+06, 0.101169176642534818E+06, - 0.101174400762938254E+06, 0.101181681695578300E+06, 0.101194628149370954E+06, 0.101209354172510837E+06, 0.101224384543212596E+06, - 0.101241003377192639E+06, 0.101256971279536912E+06, 0.101271325762838256E+06, 0.101283302907598583E+06, 0.101290837888259193E+06, - 0.101292188600320253E+06, 0.101290316399723524E+06, 0.101285500501916889E+06, 0.101278145707370568E+06, 0.101268063741988299E+06, - 0.101255992666718317E+06, 0.101243630289196284E+06, 0.101230020660095543E+06, 0.101218300352418431E+06, 0.101208996070145775E+06, - 0.101202318103285957E+06, 0.101198115125068754E+06, 0.101195865072430563E+06, 0.101192485973754709E+06, 0.101184883550562605E+06, - 0.101176252043943983E+06, 0.101167064140836461E+06, 0.101157837055866650E+06, 0.101149111932572778E+06, 0.101141425669095363E+06, - 0.101136096494374695E+06, 0.101133772515929886E+06, 0.101136278536261714E+06, 0.101141790910123251E+06, 0.101149565058361550E+06, - 0.101159158826086161E+06, 0.101169280924233710E+06, 0.101179364339541717E+06, 0.101189214375348573E+06, 0.101198419330631325E+06, - 0.101206662421100802E+06, 0.101214110977152406E+06, 0.101221277683224456E+06, 0.101227361193735371E+06, 0.101232391962857888E+06, - 0.101236456240121115E+06, 0.101239696448804534E+06, 0.101242131415364871E+06, 0.101244485321801025E+06, 0.101247206329288369E+06, - 0.101250813340918423E+06, 0.101256254483921584E+06, 0.101263638654577793E+06, 0.101272420586206106E+06, 0.101282081390786785E+06, - 0.101292093147014763E+06, 0.101301886889219619E+06, 0.101311011635127215E+06, 0.101318745388787589E+06, 0.101324552511834278E+06, - 0.101327137099599713E+06, 0.101325798652594996E+06, 0.101322370281172494E+06, 0.101318873214067411E+06, 0.101316033453167009E+06, - 0.101314254241750285E+06, 0.101313290040590538E+06, 0.101312777489808956E+06, 0.101312426972162124E+06, 0.101312077043907979E+06, - 0.101311637613854371E+06, 0.101309930679532728E+06, 0.101306604219150962E+06, 0.101300708574919438E+06, 0.101290667766194849E+06, - 0.101280103453056901E+06, 0.101270238174615952E+06, 0.101263265305097812E+06, 0.101261210282368877E+06, 0.101261635280168994E+06, - 0.101264259503469541E+06, 0.101268188459234763E+06, 0.101273120782915241E+06, 0.101280081032422138E+06, 0.101289326234345950E+06, - 0.101306137507821695E+06, 0.101328331726916280E+06, 0.101348454606262691E+06, 0.101363243724620203E+06, 0.101365228148856142E+06, - 0.101355701191101674E+06, 0.101338137535693226E+06, 0.101313442343172661E+06, 0.101279893686959578E+06, 0.101241766771608411E+06, - 0.101204166019317592E+06, 0.101170013105795253E+06, 0.101142432350644231E+06, 0.101122231791865343E+06, 0.101108816561727523E+06, - 0.101102229721379510E+06, 0.101103813368451665E+06, 0.101116580337189007E+06, 0.101134920647456835E+06, 0.101160141230191730E+06, - 0.101190695983823272E+06, 0.101217581338673946E+06, 0.101244990949544663E+06, 0.101273917316553634E+06, 0.101303572896501239E+06, - 0.101333544453130846E+06, 0.101364877370781323E+06, 0.101391063816659895E+06, 0.101411237101045277E+06, 0.101425278782258334E+06, - 0.101433519934200929E+06, 0.101439158935259431E+06, 0.101436999045160905E+06, 0.101426916105024720E+06, 0.101409617969188068E+06, - 0.101386542831537823E+06, 0.101358099179373283E+06, 0.101329104321193983E+06, 0.101301390131810738E+06, 0.101275584184176812E+06, - 0.101252450915750233E+06, 0.101231887457535791E+06, 0.101212090768716560E+06, 0.101196447068532798E+06, 0.101185068443023629E+06, - 0.101177384135667060E+06, 0.101168309967723544E+06, 0.101161992541140848E+06, 0.101159852630578913E+06, 0.101159796489626082E+06, - 0.101161597602608847E+06, 0.101164838510229980E+06, 0.101168957886595192E+06, 0.101173308450019656E+06, 0.101177043737997461E+06, - 0.101180725542300570E+06, 0.101183638211952741E+06, 0.101185541375514644E+06, 0.101186177771331219E+06, 0.101231389269493171E+06, - 0.101229452023944614E+06, 0.101228492450459045E+06, 0.101227437857730562E+06, 0.101225272919369032E+06, 0.101222115782736248E+06, - 0.101218895852368762E+06, 0.101215584732123752E+06, 0.101212116636056322E+06, 0.101207354097621472E+06, 0.101200521838921966E+06, - 0.101193426713001274E+06, 0.101186304142571476E+06, 0.101179395677309934E+06, 0.101172931379861388E+06, 0.101167151828382484E+06, - 0.101162308500518877E+06, 0.101158300144806009E+06, 0.101155408258388663E+06, 0.101154070184498851E+06, 0.101154559752015484E+06, - 0.101157052466433044E+06, 0.101161607131965604E+06, 0.101168151354609319E+06, 0.101176471448160533E+06, 0.101190446255643255E+06, - 0.101207546249739040E+06, 0.101224869025537133E+06, 0.101241629266362957E+06, 0.101257034534386199E+06, 0.101270300423290071E+06, - 0.101280701804350014E+06, 0.101286032850469506E+06, 0.101285592385854572E+06, 0.101282085195034277E+06, 0.101274697798302746E+06, - 0.101264580591891121E+06, 0.101253728075986262E+06, 0.101242929317346643E+06, 0.101232485866013521E+06, 0.101222025672053554E+06, - 0.101213765521939480E+06, 0.101207908438247250E+06, 0.101204284122239580E+06, 0.101199927839590950E+06, 0.101194734819518329E+06, - 0.101188456889903726E+06, 0.101179666542616309E+06, 0.101170394407501270E+06, 0.101161163472120141E+06, 0.101152520749703152E+06, - 0.101145006252468942E+06, 0.101139495861547286E+06, 0.101140801932908304E+06, 0.101144658005535239E+06, 0.101150950782672968E+06, - 0.101159402010231061E+06, 0.101169516352869221E+06, 0.101180618870833394E+06, 0.101190857796199096E+06, 0.101200641550543587E+06, - 0.101209362327359180E+06, 0.101217130139796180E+06, 0.101224049008589936E+06, 0.101230122753387783E+06, 0.101235212462695199E+06, - 0.101239229954162147E+06, 0.101242277095199534E+06, 0.101244507835626879E+06, 0.101246153185945266E+06, 0.101247135672995661E+06, - 0.101249606832741643E+06, 0.101254017340448758E+06, 0.101260512682501125E+06, 0.101268912159280037E+06, 0.101278581961162170E+06, - 0.101288935630890279E+06, 0.101299344634514127E+06, 0.101309165575948311E+06, 0.101317556887074039E+06, 0.101323172703937016E+06, - 0.101326358447397986E+06, 0.101327232302474091E+06, 0.101325894572504010E+06, 0.101322706535794525E+06, 0.101319932108380584E+06, - 0.101318115839731938E+06, 0.101317374329348502E+06, 0.101316802412196412E+06, 0.101316539167573457E+06, 0.101316220872659469E+06, - 0.101315472541661889E+06, 0.101313988991298058E+06, 0.101311143303248988E+06, 0.101306823565026949E+06, 0.101300909517459571E+06, - 0.101291139156745485E+06, 0.101281432901143096E+06, 0.101272931024738762E+06, 0.101267480423988032E+06, 0.101267406598649904E+06, - 0.101269963384954986E+06, 0.101274800002130170E+06, 0.101281233237463195E+06, 0.101288842618392577E+06, 0.101297886975346977E+06, - 0.101308296387334616E+06, 0.101325624485844790E+06, 0.101346166178142783E+06, 0.101363441252856501E+06, 0.101374801583022883E+06, - 0.101371478339382054E+06, 0.101357965915636902E+06, 0.101337616663800756E+06, 0.101310513973449386E+06, 0.101272307541573202E+06, - 0.101230865550039016E+06, 0.101190791911869368E+06, 0.101155350687670492E+06, 0.101129224427448615E+06, 0.101110583343861392E+06, - 0.101099020700267734E+06, 0.101094724119735372E+06, 0.101099023269690821E+06, 0.101111662707600757E+06, 0.101130628382792580E+06, - 0.101154442701152686E+06, 0.101179514522985817E+06, 0.101201379997560478E+06, 0.101226265787734679E+06, 0.101253796882664625E+06, - 0.101283225572595169E+06, 0.101317124967778669E+06, 0.101350989077608407E+06, 0.101379921717535108E+06, 0.101402381642000008E+06, - 0.101417742462739217E+06, 0.101429901727416946E+06, 0.101436203470310473E+06, 0.101434079341425662E+06, 0.101423164600191842E+06, - 0.101404037685293821E+06, 0.101376818918793375E+06, 0.101344589194113520E+06, 0.101311531147971255E+06, 0.101279820675164505E+06, - 0.101251153362574143E+06, 0.101225285333396270E+06, 0.101199764562447148E+06, 0.101178262360150809E+06, 0.101161772194779478E+06, - 0.101150434481179953E+06, 0.101143909494338062E+06, 0.101141390141577620E+06, 0.101140639767941699E+06, 0.101140632648710569E+06, - 0.101142372620975060E+06, 0.101145663398052158E+06, 0.101150107990777600E+06, 0.101155154940690569E+06, 0.101159369531278891E+06, - 0.101162295247948568E+06, 0.101164893804552295E+06, 0.101168002876310085E+06, 0.101170082535517562E+06, 0.101170879828210964E+06, - 0.101219861459639709E+06, 0.101217353733850920E+06, 0.101214813662341927E+06, 0.101212272616671195E+06, 0.101208980334428372E+06, - 0.101205795685889956E+06, 0.101202734659769427E+06, 0.101199769990954403E+06, 0.101196834984741159E+06, 0.101193828164992272E+06, - 0.101189376363543503E+06, 0.101183028116295318E+06, 0.101176590659241221E+06, 0.101170295511546516E+06, 0.101164459781001147E+06, - 0.101159272837843542E+06, 0.101154626508349247E+06, 0.101150830978481536E+06, 0.101147940393322046E+06, 0.101146374185143752E+06, - 0.101146551350105059E+06, 0.101148666345078062E+06, 0.101152796928674230E+06, 0.101158889620899077E+06, 0.101166802022490039E+06, - 0.101178035305259487E+06, 0.101194860122035752E+06, 0.101212325551695918E+06, 0.101229507831180323E+06, 0.101245588075390231E+06, - 0.101259749204794090E+06, 0.101271227064842373E+06, 0.101279354568716226E+06, 0.101282023041620065E+06, 0.101277735417878983E+06, - 0.101270065940430606E+06, 0.101260942221718724E+06, 0.101251183302667749E+06, 0.101241580790420048E+06, 0.101232817663754860E+06, - 0.101224865544509375E+06, 0.101217678236240463E+06, 0.101212672610467605E+06, 0.101207368061914924E+06, 0.101202142949429748E+06, - 0.101197200360827206E+06, 0.101192321056135959E+06, 0.101185312042045203E+06, 0.101176366919002583E+06, 0.101167575306740793E+06, - 0.101159499887747690E+06, 0.101153693581619635E+06, 0.101151632492099627E+06, 0.101152648343697670E+06, 0.101157198969257923E+06, - 0.101164178808173063E+06, 0.101173247856793882E+06, 0.101183857272265639E+06, 0.101195294072408884E+06, 0.101206439742155373E+06, - 0.101215821840872028E+06, 0.101224223508709707E+06, 0.101231582323487324E+06, 0.101237823030360581E+06, 0.101242874318770337E+06, - 0.101246774089702827E+06, 0.101249620201836733E+06, 0.101251514633922707E+06, 0.101250998739460556E+06, 0.101250350564701104E+06, - 0.101251192192736547E+06, 0.101254126969565099E+06, 0.101259362363834385E+06, 0.101266888172729494E+06, 0.101276372037240624E+06, - 0.101286838617996444E+06, 0.101297573246049607E+06, 0.101307533698699568E+06, 0.101315884770704040E+06, 0.101322262940598855E+06, - 0.101325965760392661E+06, 0.101327074410681467E+06, 0.101325913256045969E+06, 0.101323124870245505E+06, 0.101319702236701676E+06, - 0.101317199019545646E+06, 0.101315951598744505E+06, 0.101315806747022463E+06, 0.101315575437492836E+06, 0.101314907982108765E+06, - 0.101313877512845647E+06, 0.101312479697057366E+06, 0.101309803618787570E+06, 0.101306072028328548E+06, 0.101301517809186698E+06, - 0.101296222398532715E+06, 0.101287978736962512E+06, 0.101280134483104775E+06, 0.101273858730883643E+06, 0.101270559684999607E+06, - 0.101272646114663905E+06, 0.101277445816036910E+06, 0.101284587711525965E+06, 0.101293877343276210E+06, 0.101304839668757166E+06, - 0.101316528257227954E+06, 0.101328366576771165E+06, 0.101345969486117698E+06, 0.101364186088572969E+06, 0.101377148495963469E+06, - 0.101382093829553254E+06, 0.101370766337072331E+06, 0.101349741353763951E+06, 0.101321811510905638E+06, 0.101288468123698593E+06, - 0.101244965303345511E+06, 0.101202004776977919E+06, 0.101162860285996649E+06, 0.101126851606302604E+06, 0.101104372225545885E+06, - 0.101088557676466924E+06, 0.101079807482518576E+06, 0.101078498448923550E+06, 0.101085445131155400E+06, 0.101098827324377111E+06, - 0.101117379276230466E+06, 0.101139770652544976E+06, 0.101160113557297649E+06, 0.101180387504904938E+06, 0.101203886596317709E+06, - 0.101230902181368132E+06, 0.101261803558958476E+06, 0.101300608660476937E+06, 0.101337274184836075E+06, 0.101369125977644289E+06, - 0.101394267041929546E+06, 0.101413158265606093E+06, 0.101427330114929093E+06, 0.101432361057773902E+06, 0.101429910859225725E+06, - 0.101417624134461643E+06, 0.101395314188587567E+06, 0.101362172145086661E+06, 0.101325960646168634E+06, 0.101289070977803320E+06, - 0.101253544677021608E+06, 0.101220938962399465E+06, 0.101189935258524172E+06, 0.101161696612905507E+06, 0.101138721820111517E+06, - 0.101121644349305658E+06, 0.101110649141410599E+06, 0.101105415636551304E+06, 0.101106709372907222E+06, 0.101112684473039320E+06, - 0.101118393699309789E+06, 0.101122164751330070E+06, 0.101127188453840165E+06, 0.101133080620089138E+06, 0.101138746974859983E+06, - 0.101142873479913527E+06, 0.101146389620966002E+06, 0.101149025184660437E+06, 0.101150587859464547E+06, 0.101152755345234560E+06, - 0.101153603260132426E+06, 0.101210525717246186E+06, 0.101207548474999538E+06, 0.101202904596832290E+06, 0.101197951386655157E+06, - 0.101194386519771622E+06, 0.101191122015514105E+06, 0.101188175657561296E+06, 0.101185519945178385E+06, 0.101183085746111174E+06, - 0.101180766773284515E+06, 0.101178424993241424E+06, 0.101174517040993989E+06, 0.101168962341147722E+06, 0.101163714253363345E+06, - 0.101158948557658077E+06, 0.101154261182255184E+06, 0.101149950932639709E+06, 0.101146327181315632E+06, 0.101143687040794233E+06, - 0.101142126337276364E+06, 0.101142152044085655E+06, 0.101144083527112423E+06, 0.101148021171421016E+06, 0.101154000779215450E+06, - 0.101162760282120405E+06, 0.101173711396198050E+06, 0.101186611484798021E+06, 0.101203854792520258E+06, 0.101221108630801245E+06, - 0.101237514909808757E+06, 0.101252212005649548E+06, 0.101264385838287199E+06, 0.101273313773670612E+06, 0.101275991122254636E+06, - 0.101272633847169331E+06, 0.101265839223746094E+06, 0.101257619395513131E+06, 0.101248828329997094E+06, 0.101240269262524962E+06, - 0.101232609922544550E+06, 0.101226305719316471E+06, 0.101221001261636731E+06, 0.101215325578545016E+06, 0.101210148330884782E+06, - 0.101205386910296002E+06, 0.101200913609812837E+06, 0.101196557499459639E+06, 0.101192094621711993E+06, 0.101184939627293686E+06, - 0.101177056092112194E+06, 0.101171384998373789E+06, 0.101168077457142164E+06, 0.101167062491365999E+06, 0.101168742847490139E+06, - 0.101173481015017140E+06, 0.101181062252591364E+06, 0.101190688726292763E+06, 0.101201754487460537E+06, 0.101213053590803727E+06, - 0.101224458950927612E+06, 0.101234613260145692E+06, 0.101242743726390036E+06, 0.101249595831817132E+06, 0.101255046289272010E+06, - 0.101258984767052723E+06, 0.101261363785577109E+06, 0.101261779254400128E+06, 0.101259695740838331E+06, 0.101257723355522670E+06, - 0.101256712782620496E+06, 0.101257390131988577E+06, 0.101260812728128207E+06, 0.101266865110914150E+06, 0.101275356425384583E+06, - 0.101285757165198593E+06, 0.101297005109519319E+06, 0.101307222441895385E+06, 0.101316130802742104E+06, 0.101323131432448601E+06, - 0.101327755554835458E+06, 0.101329091060690815E+06, 0.101327426676222676E+06, 0.101323405755774875E+06, 0.101317808009742424E+06, - 0.101312695092861308E+06, 0.101309644418928467E+06, 0.101307843097245379E+06, 0.101307258014776118E+06, 0.101306396062738830E+06, - 0.101304392989299769E+06, 0.101302318926388383E+06, 0.101300146974100906E+06, 0.101296693003163877E+06, 0.101292171838443071E+06, - 0.101287472873098537E+06, 0.101282787197424317E+06, 0.101276691890622955E+06, 0.101271343380570586E+06, 0.101267971439309680E+06, - 0.101267491024100920E+06, 0.101272069334797809E+06, 0.101279335267968272E+06, 0.101288917788163279E+06, 0.101301241225878053E+06, - 0.101315819189724789E+06, 0.101330320177330534E+06, 0.101343606724499783E+06, 0.101360277666390102E+06, 0.101374651937569957E+06, - 0.101381948044541350E+06, 0.101379139254734604E+06, 0.101357829215456179E+06, 0.101327280040149271E+06, 0.101289941888269532E+06, - 0.101246108522415467E+06, 0.101194796632095546E+06, 0.101146024288208340E+06, 0.101103656741928615E+06, 0.101073141515266252E+06, - 0.101057806173447316E+06, 0.101051682514418280E+06, 0.101049406076037965E+06, 0.101052339673225651E+06, 0.101063115066462298E+06, - 0.101078506068417060E+06, 0.101097590566484258E+06, 0.101118771179471136E+06, 0.101135489318013730E+06, 0.101154758424584812E+06, - 0.101177654242688412E+06, 0.101205061131610448E+06, 0.101242230976538951E+06, 0.101283647903067162E+06, 0.101323242160821901E+06, - 0.101358087742294330E+06, 0.101385937955843910E+06, 0.101409794381458749E+06, 0.101425117131910592E+06, 0.101429997042675925E+06, - 0.101424225668113679E+06, 0.101409012607044147E+06, 0.101378645916584719E+06, 0.101341017521829854E+06, 0.101300635121866770E+06, - 0.101259780015675904E+06, 0.101220490612824302E+06, 0.101183385014229250E+06, 0.101147969487759023E+06, 0.101117685992608021E+06, - 0.101093539937281050E+06, 0.101076195561657238E+06, 0.101065910310074483E+06, 0.101063435753359998E+06, 0.101067804628520898E+06, - 0.101076221687106154E+06, 0.101087269872699864E+06, 0.101098388777976448E+06, 0.101105436139853176E+06, 0.101112874451142532E+06, - 0.101118849015061031E+06, 0.101124113984576659E+06, 0.101128454272832299E+06, 0.101131632912711430E+06, 0.101133440671438293E+06, - 0.101133742258942963E+06, 0.101133420481460824E+06, 0.101203377126110252E+06, 0.101198268613597073E+06, 0.101192518049139719E+06, - 0.101186803252296639E+06, 0.101181813758537333E+06, 0.101178421999043727E+06, 0.101175553435103371E+06, 0.101173179030172672E+06, - 0.101171225754259809E+06, 0.101169580857152410E+06, 0.101168097072006873E+06, 0.101166598871645896E+06, 0.101163936200708034E+06, - 0.101160319529115644E+06, 0.101156350070871646E+06, 0.101152298957045554E+06, 0.101148469397518347E+06, 0.101145174878879858E+06, - 0.101142716121090431E+06, 0.101141356671128422E+06, 0.101141393983984628E+06, 0.101143318014807519E+06, 0.101147349641468565E+06, - 0.101153926105170540E+06, 0.101162646354183598E+06, 0.101173404206242340E+06, 0.101185918183552916E+06, 0.101199863730921250E+06, - 0.101216872253279580E+06, 0.101233295276471807E+06, 0.101248215030952546E+06, 0.101260757021715341E+06, 0.101267495548934719E+06, - 0.101269706371902867E+06, 0.101268204478453976E+06, 0.101262805085999877E+06, 0.101255380826612120E+06, 0.101247430865831397E+06, - 0.101239780825202557E+06, 0.101233090454269026E+06, 0.101227802760140185E+06, 0.101223571816330572E+06, 0.101219066722623626E+06, - 0.101214540599785731E+06, 0.101210406057645538E+06, 0.101206592274863258E+06, 0.101202981532469319E+06, 0.101199400726594919E+06, - 0.101195627874287937E+06, 0.101191227720762778E+06, 0.101187565739316706E+06, 0.101185464827996155E+06, 0.101185511851585936E+06, - 0.101188073018881041E+06, 0.101193228150490002E+06, 0.101201132185450770E+06, 0.101211253103469411E+06, 0.101221691007216708E+06, - 0.101232930515629778E+06, 0.101244622455395234E+06, 0.101256099137093290E+06, 0.101264336488988658E+06, 0.101270613718010951E+06, - 0.101275186944850837E+06, 0.101277911712320536E+06, 0.101275720871891084E+06, 0.101272701050287156E+06, 0.101269530015498065E+06, - 0.101266916775846155E+06, 0.101265667085305176E+06, 0.101266412423480491E+06, 0.101269963618393420E+06, 0.101276824074798991E+06, - 0.101286538984123661E+06, 0.101297754584716895E+06, 0.101309268788473608E+06, 0.101319049570761636E+06, 0.101326688370924327E+06, - 0.101331858743319128E+06, 0.101334118663267698E+06, 0.101332850026087355E+06, 0.101327763563889297E+06, 0.101320054486635490E+06, - 0.101310581963123463E+06, 0.101301464042469088E+06, 0.101296071475081029E+06, 0.101292351628835357E+06, 0.101290169534329834E+06, - 0.101288302766939916E+06, 0.101284014152439850E+06, 0.101279941996829206E+06, 0.101276061598442378E+06, 0.101271538120976256E+06, - 0.101266097326113042E+06, 0.101261239127189925E+06, 0.101257245251898741E+06, 0.101253483641709958E+06, 0.101251125639619684E+06, - 0.101251189762292764E+06, 0.101253695416316186E+06, 0.101260342754598576E+06, 0.101269818597965233E+06, 0.101281786685942599E+06, - 0.101297267888598697E+06, 0.101315752383087500E+06, 0.101333588295053938E+06, 0.101349152940472399E+06, 0.101363783604825469E+06, - 0.101372978867465237E+06, 0.101373889912201208E+06, 0.101361962340075130E+06, 0.101329656482126462E+06, 0.101288577681367635E+06, - 0.101241353955692000E+06, 0.101187015186283301E+06, 0.101128342669573714E+06, 0.101074249019373397E+06, 0.101029162958810339E+06, - 0.101000523612843142E+06, 0.100987089359594960E+06, 0.100984958621042068E+06, 0.100992130612266148E+06, 0.101008448898443559E+06, - 0.101030521667859153E+06, 0.101051007866767963E+06, 0.101071664234935859E+06, 0.101090175915114785E+06, 0.101106549855269026E+06, - 0.101125443846952985E+06, 0.101148128478478480E+06, 0.101176649869573142E+06, 0.101219367480301720E+06, 0.101264169410245595E+06, - 0.101307902998138612E+06, 0.101345704641115881E+06, 0.101377820901637606E+06, 0.101403851472658702E+06, 0.101419708524997433E+06, - 0.101423957150136412E+06, 0.101416125366734399E+06, 0.101392821386149662E+06, 0.101354118286926780E+06, 0.101311952791900418E+06, - 0.101267586958551430E+06, 0.101222923148393995E+06, 0.101179984606825063E+06, 0.101137775123404324E+06, 0.101100052058991307E+06, - 0.101068211877007227E+06, 0.101043182495123227E+06, 0.101025887119877370E+06, 0.101017441028948917E+06, 0.101018646999727091E+06, - 0.101025249625575729E+06, 0.101036067916060245E+06, 0.101049702828005305E+06, 0.101064676552964025E+06, 0.101079565938465035E+06, - 0.101088532594576784E+06, 0.101096312478571519E+06, 0.101102983223382442E+06, 0.101108374984337381E+06, 0.101112280329396730E+06, - 0.101114507038743657E+06, 0.101114428830065517E+06, 0.101111055246130432E+06, 0.101196406538596522E+06, 0.101190461736979341E+06, - 0.101184419171533169E+06, 0.101178438759959274E+06, 0.101172694307587532E+06, 0.101168042459568693E+06, 0.101165224780188713E+06, - 0.101163116738625147E+06, 0.101161640044718297E+06, 0.101160673934197897E+06, 0.101160060130737882E+06, 0.101160308872814785E+06, - 0.101161160328086728E+06, 0.101159852318196237E+06, 0.101156811572228151E+06, 0.101153532829243355E+06, 0.101150328623015521E+06, - 0.101147521674777250E+06, 0.101145421670737880E+06, 0.101144300600728122E+06, 0.101144366524547018E+06, 0.101146453358106490E+06, - 0.101151154760197140E+06, 0.101157852536650826E+06, 0.101166593375939396E+06, 0.101177254193880435E+06, 0.101189538295227583E+06, - 0.101202976381101937E+06, 0.101217143841964367E+06, 0.101233326011591271E+06, 0.101248211830283530E+06, 0.101258376645531374E+06, - 0.101264582921753405E+06, 0.101267070734474910E+06, 0.101266001194085227E+06, 0.101261820132445268E+06, 0.101255225790946322E+06, - 0.101247986960119670E+06, 0.101241132826118715E+06, 0.101235589817356347E+06, 0.101231742691396459E+06, 0.101228190519347510E+06, - 0.101224868811623688E+06, 0.101221346956982394E+06, 0.101217966212733285E+06, 0.101214970532675288E+06, 0.101212299627427041E+06, - 0.101209926653408853E+06, 0.101209182347595939E+06, 0.101208894928154026E+06, 0.101206557077161851E+06, 0.101205653829090777E+06, - 0.101206766501731909E+06, 0.101210234953384323E+06, 0.101216093544594405E+06, 0.101223864474518923E+06, 0.101233270650245788E+06, - 0.101243919236364745E+06, 0.101255411905531102E+06, 0.101267215651558581E+06, 0.101278589053053409E+06, 0.101288326667672663E+06, - 0.101293977254483369E+06, 0.101295988963460462E+06, 0.101293942850610052E+06, 0.101290379977981182E+06, 0.101286211796570817E+06, - 0.101282157951643720E+06, 0.101279101833166642E+06, 0.101277814046354848E+06, 0.101278807487432292E+06, 0.101282938226413549E+06, - 0.101291273361035273E+06, 0.101301583582921769E+06, 0.101312849202165788E+06, 0.101324002651453309E+06, 0.101333489244781522E+06, - 0.101339488921891199E+06, 0.101342369325021820E+06, 0.101341720289730991E+06, 0.101337127319298394E+06, 0.101327791615567519E+06, - 0.101315437423608601E+06, 0.101301282640627105E+06, 0.101286811802460725E+06, 0.101276747879297676E+06, 0.101269331760055575E+06, - 0.101263643990522745E+06, 0.101258989523824217E+06, 0.101251456119543334E+06, 0.101244182196566340E+06, 0.101237348106484831E+06, - 0.101228692607444944E+06, 0.101218585751885927E+06, 0.101210928314959441E+06, 0.101206232353375613E+06, 0.101203871455940549E+06, - 0.101203999533384937E+06, 0.101207475042430247E+06, 0.101214320092416674E+06, 0.101224147807091678E+06, 0.101236699974733609E+06, - 0.101251676274940794E+06, 0.101270825632959895E+06, 0.101293545270099348E+06, 0.101314419599624249E+06, 0.101330994497954525E+06, - 0.101343242305169362E+06, 0.101347429834497641E+06, 0.101341255518135789E+06, 0.101319524205864262E+06, 0.101278200143226626E+06, - 0.101228562906559484E+06, 0.101174212317573372E+06, 0.101112623030610339E+06, 0.101048222350508891E+06, 0.100990099190183420E+06, - 0.100943211786408705E+06, 0.100918044317067266E+06, 0.100907611661432689E+06, 0.100910107183064712E+06, 0.100923917070401818E+06, - 0.100948850301936414E+06, 0.100978281786140433E+06, 0.101008728042257979E+06, 0.101037658211344344E+06, 0.101057364399701371E+06, - 0.101074391235513976E+06, 0.101093594285308805E+06, 0.101116488413099345E+06, 0.101150558690399863E+06, 0.101193914933389984E+06, - 0.101239758121016799E+06, 0.101285323747319708E+06, 0.101327925492475028E+06, 0.101365565138565944E+06, 0.101392573640838629E+06, - 0.101408539383438299E+06, 0.101411604282492801E+06, 0.101400582930128410E+06, 0.101366946069406418E+06, 0.101324287192622069E+06, - 0.101276101666633986E+06, 0.101226619258282910E+06, 0.101178585432356136E+06, 0.101130984262627506E+06, 0.101086307783769356E+06, - 0.101046851053375387E+06, 0.101014063196888950E+06, 0.100988908271188513E+06, 0.100971785835137707E+06, 0.100968245753203373E+06, - 0.100971380696101813E+06, 0.100980060807918417E+06, 0.100993169646215858E+06, 0.101009312468744305E+06, 0.101026966655764860E+06, - 0.101044366184895640E+06, 0.101060339563627815E+06, 0.101071158866529076E+06, 0.101079488812984200E+06, 0.101086153913575283E+06, - 0.101090971172654899E+06, 0.101093525999388585E+06, 0.101092846852564820E+06, 0.101089780957355411E+06, 0.101191123249149765E+06, - 0.101184975896710632E+06, 0.101178781171733193E+06, 0.101172687284701038E+06, 0.101166856628363908E+06, 0.101161463025241668E+06, - 0.101157556719236236E+06, 0.101155715658911155E+06, 0.101154729896713383E+06, 0.101154469238441612E+06, 0.101155775624535832E+06, - 0.101158121462038107E+06, 0.101160042093184384E+06, 0.101161344855236384E+06, 0.101160448275110015E+06, 0.101158071590188309E+06, - 0.101155631532086059E+06, 0.101153465356088433E+06, 0.101151897289994900E+06, 0.101151213659422618E+06, 0.101151737576582789E+06, - 0.101154199170773107E+06, 0.101158985005759008E+06, 0.101165841396522868E+06, 0.101174673234837159E+06, 0.101185340894024586E+06, - 0.101197532040988634E+06, 0.101210762902995120E+06, 0.101224385238204501E+06, 0.101237894404589199E+06, 0.101250772227856185E+06, - 0.101260411029266310E+06, 0.101266591706174368E+06, 0.101269204187456722E+06, 0.101268397182717250E+06, 0.101264588122030676E+06, - 0.101258438511883942E+06, 0.101251623403392019E+06, 0.101246063118456994E+06, 0.101242417800723517E+06, 0.101239166549985050E+06, - 0.101236254306650939E+06, 0.101233631773944420E+06, 0.101231248894982156E+06, 0.101228825720597553E+06, 0.101226772928204024E+06, - 0.101225473798737570E+06, 0.101225516278296083E+06, 0.101226043519455008E+06, 0.101227093486833808E+06, 0.101228289760449348E+06, - 0.101228546951147655E+06, 0.101230707510254171E+06, 0.101235093253586310E+06, 0.101241126677553519E+06, 0.101248645598633651E+06, - 0.101258142018320970E+06, 0.101268933306888299E+06, 0.101280513500391826E+06, 0.101292262732881034E+06, 0.101303355465601169E+06, - 0.101312817264586003E+06, 0.101316400177874268E+06, 0.101315483458758521E+06, 0.101312277984593762E+06, 0.101307698621808959E+06, - 0.101302673951913355E+06, 0.101298053010945936E+06, 0.101294840530663249E+06, 0.101294065839099727E+06, 0.101296783533959431E+06, - 0.101302065639223511E+06, 0.101310033568624291E+06, 0.101320378178744606E+06, 0.101331366932783130E+06, 0.101341800425977897E+06, - 0.101350415611308272E+06, 0.101354800042096002E+06, 0.101354718500839095E+06, 0.101350294315183972E+06, 0.101341487001001398E+06, - 0.101327926160731338E+06, 0.101310260858651716E+06, 0.101290273767883307E+06, 0.101269495556410489E+06, 0.101251846238950835E+06, - 0.101238682635122401E+06, 0.101227174341821534E+06, 0.101213482647208613E+06, 0.101195603009729079E+06, 0.101177872156641286E+06, - 0.101162325618075352E+06, 0.101149982165601716E+06, 0.101139852149278217E+06, 0.101134024565056650E+06, 0.101132753824598782E+06, - 0.101135032680571021E+06, 0.101140084766430024E+06, 0.101148877574289698E+06, 0.101161005262514984E+06, 0.101174747769146576E+06, - 0.101190713232751208E+06, 0.101208811802622309E+06, 0.101231640660711972E+06, 0.101258571723189729E+06, 0.101282336017681446E+06, - 0.101299629439163051E+06, 0.101308040998087759E+06, 0.101305555171365690E+06, 0.101290435343250807E+06, 0.101256519799893256E+06, - 0.101204322883293091E+06, 0.101144321216045384E+06, 0.101080811870748948E+06, 0.101014238668434729E+06, 0.100950513534181708E+06, - 0.100894391363170798E+06, 0.100851829575523923E+06, 0.100832142921501421E+06, 0.100825615789308096E+06, 0.100832955840479583E+06, - 0.100854821405899405E+06, 0.100888239967709887E+06, 0.100925422763286362E+06, 0.100962602314510819E+06, 0.100994687767612981E+06, - 0.101018445383155631E+06, 0.101039638130810010E+06, 0.101060824122542370E+06, 0.101084945514884181E+06, 0.101122354145820311E+06, - 0.101165147778325379E+06, 0.101210847657910417E+06, 0.101256682236652778E+06, 0.101301382158490291E+06, 0.101341411155713809E+06, - 0.101372219111328362E+06, 0.101389231784620119E+06, 0.101390880863434664E+06, 0.101369226261351185E+06, 0.101331834231281726E+06, - 0.101285779545129859E+06, 0.101234345503529141E+06, 0.101180743690781746E+06, 0.101127223607977256E+06, 0.101076620915575957E+06, - 0.101030138146362922E+06, 0.100989582250385356E+06, 0.100956503181212684E+06, 0.100931937764084651E+06, 0.100920299784557195E+06, - 0.100918057371207338E+06, 0.100922770743209869E+06, 0.100933261994784887E+06, 0.100948483778151451E+06, 0.100967026543898348E+06, - 0.100987282070977919E+06, 0.101007276882737569E+06, 0.101025807002176851E+06, 0.101042092544874176E+06, 0.101053732614110791E+06, - 0.101061889868345606E+06, 0.101067702910314212E+06, 0.101070224192290465E+06, 0.101070263142884942E+06, 0.101067836061994312E+06, - 0.101188101877120876E+06, 0.101181904204517952E+06, 0.101175721080675750E+06, 0.101169689701016847E+06, 0.101163962332899173E+06, - 0.101158703372389791E+06, 0.101154083105507743E+06, 0.101151357736191479E+06, 0.101150899044327409E+06, 0.101152824487497259E+06, - 0.101156224838871945E+06, 0.101159507416219887E+06, 0.101162417168140935E+06, 0.101164756494849746E+06, 0.101166400553546104E+06, - 0.101165982684454619E+06, 0.101164433293333408E+06, 0.101163049411835455E+06, 0.101162175585306977E+06, 0.101162128095756125E+06, - 0.101163361425100273E+06, 0.101166227742201969E+06, 0.101170937924715152E+06, 0.101177913034471421E+06, 0.101186917319165936E+06, - 0.101197704545258457E+06, 0.101209946031686050E+06, 0.101223141837685776E+06, 0.101236628019135329E+06, 0.101248564959035430E+06, - 0.101259061289307880E+06, 0.101268404236147617E+06, 0.101274449875235630E+06, 0.101277082514349167E+06, 0.101276437786749404E+06, - 0.101272910152209646E+06, 0.101267124457491314E+06, 0.101260716984134080E+06, 0.101256743164844607E+06, 0.101253604663335806E+06, - 0.101250897345323741E+06, 0.101248591593381454E+06, 0.101246654559015689E+06, 0.101245041613427515E+06, 0.101243680788220503E+06, - 0.101243097273199470E+06, 0.101243781512439353E+06, 0.101244948599458978E+06, 0.101246597302939059E+06, 0.101248747416430124E+06, - 0.101251423906546814E+06, 0.101254153427662954E+06, 0.101257318705204321E+06, 0.101261887373189515E+06, 0.101267979989058746E+06, - 0.101275948774720324E+06, 0.101285713213097159E+06, 0.101296774828760288E+06, 0.101308302668075557E+06, 0.101319850467473152E+06, - 0.101329837083710619E+06, 0.101335921303205963E+06, 0.101339123113933456E+06, 0.101337898637374194E+06, 0.101333773323031986E+06, - 0.101328456667992868E+06, 0.101322897112772887E+06, 0.101317900606162963E+06, 0.101315889108461066E+06, 0.101316599306327043E+06, - 0.101319758730558635E+06, 0.101325424301052059E+06, 0.101333284991047447E+06, 0.101343211873693581E+06, 0.101353644944564134E+06, - 0.101363021317380320E+06, 0.101370049287251401E+06, 0.101372596455484265E+06, 0.101369268865042672E+06, 0.101360883616870342E+06, - 0.101347449435595729E+06, 0.101329133164082014E+06, 0.101305327141900649E+06, 0.101278380398203022E+06, 0.101249743471045615E+06, - 0.101219239546209603E+06, 0.101192352888002861E+06, 0.101165652475197479E+06, 0.101139697586887822E+06, 0.101114494511137265E+06, - 0.101090858686180072E+06, 0.101071576294283674E+06, 0.101057575297732197E+06, 0.101048074783742806E+06, 0.101044336258060692E+06, - 0.101046551193469917E+06, 0.101053556962642004E+06, 0.101063713831673056E+06, 0.101077829626709223E+06, 0.101095071852015652E+06, - 0.101113125151151267E+06, 0.101132720710483336E+06, 0.101154045391176667E+06, 0.101180390285880436E+06, 0.101211142948122884E+06, - 0.101237614514436951E+06, 0.101255726302408526E+06, 0.101259492448119025E+06, 0.101250509056824711E+06, 0.101227395084634161E+06, - 0.101182035261948520E+06, 0.101119630114631931E+06, 0.101050635848782738E+06, 0.100979922793482459E+06, 0.100910697623495973E+06, - 0.100847357213499476E+06, 0.100794166368117731E+06, 0.100758894445481623E+06, 0.100744322296544080E+06, 0.100745120848886974E+06, - 0.100759352059448109E+06, 0.100791294801023934E+06, 0.100833112039419531E+06, 0.100877562571698305E+06, 0.100920779246866339E+06, - 0.100955025798225848E+06, 0.100982525754081420E+06, 0.101006044587505748E+06, 0.101028143007870822E+06, 0.101055611280174300E+06, - 0.101091320427340703E+06, 0.101132355621430252E+06, 0.101176767088174020E+06, 0.101222102616479577E+06, 0.101267504098879013E+06, - 0.101307233300950669E+06, 0.101337730007502250E+06, 0.101356132691262712E+06, 0.101355517504656993E+06, 0.101326703347885734E+06, - 0.101286746249401243E+06, 0.101238373176205030E+06, 0.101184685036191077E+06, 0.101128907484998796E+06, 0.101073391747240559E+06, - 0.101019454525129811E+06, 0.100970871910515343E+06, 0.100929826661987419E+06, 0.100897105571455861E+06, 0.100876831879007659E+06, - 0.100867962906273533E+06, 0.100867330421829305E+06, 0.100873728684090966E+06, 0.100885749735442761E+06, 0.100902849954122852E+06, - 0.100924138951177738E+06, 0.100946961851234868E+06, 0.100969279025770302E+06, 0.100990033557581031E+06, 0.101008477654044342E+06, - 0.101024214908302165E+06, 0.101035732998499894E+06, 0.101041912961714450E+06, 0.101045642366251923E+06, 0.101046792406885972E+06, - 0.101045365333532347E+06, 0.101187355100872199E+06, 0.101181283838042174E+06, 0.101175299671037268E+06, 0.101169529662610788E+06, - 0.101164117431673949E+06, 0.101159220075809775E+06, 0.101155001817589582E+06, 0.101151624022777440E+06, 0.101152497595067340E+06, - 0.101156451659840226E+06, 0.101160648061411019E+06, 0.101164790528929152E+06, 0.101168618147906396E+06, 0.101171926049179310E+06, - 0.101174580360364256E+06, 0.101176526712674633E+06, 0.101176736224529814E+06, 0.101176257363116325E+06, 0.101176166983752380E+06, - 0.101176807287626842E+06, 0.101178681128324213E+06, 0.101182078251181316E+06, 0.101187204570596310E+06, 0.101194163269585537E+06, - 0.101203334524264646E+06, 0.101214364937736551E+06, 0.101226809413448165E+06, 0.101240149829298927E+06, 0.101253261358725853E+06, - 0.101265100089497806E+06, 0.101275120974395875E+06, 0.101282996940042518E+06, 0.101288828111014154E+06, 0.101291420149586207E+06, - 0.101290897222999163E+06, 0.101287639377078289E+06, 0.101283002528089506E+06, 0.101278193857728707E+06, 0.101273020512430914E+06, - 0.101269901051284018E+06, 0.101267678623295869E+06, 0.101265950449211479E+06, 0.101264703039611326E+06, 0.101263900879826906E+06, - 0.101263923607509249E+06, 0.101265004562038375E+06, 0.101266684912193334E+06, 0.101268855296950496E+06, 0.101271506964180182E+06, - 0.101274640173084292E+06, 0.101278241537383161E+06, 0.101282245825992912E+06, 0.101286353240369135E+06, 0.101291355828485597E+06, - 0.101297931619035255E+06, 0.101306253371424813E+06, 0.101316214078965480E+06, 0.101327380285913983E+06, 0.101338920669929619E+06, - 0.101349293450103680E+06, 0.101357122930671496E+06, 0.101362252520088790E+06, 0.101364464771970830E+06, 0.101363785192026829E+06, - 0.101359089181177871E+06, 0.101353368594169064E+06, 0.101348059285105599E+06, 0.101344504609358351E+06, 0.101342802273270747E+06, - 0.101343694674300015E+06, 0.101347186594235303E+06, 0.101353156284255645E+06, 0.101361135003142495E+06, 0.101370388484892959E+06, - 0.101380640458787442E+06, 0.101388946718752617E+06, 0.101393651801589484E+06, 0.101393499019751704E+06, 0.101386884558896083E+06, - 0.101374143979384535E+06, 0.101355609362859250E+06, 0.101331626780358332E+06, 0.101301083582183201E+06, 0.101263353354839783E+06, - 0.101221306897352624E+06, 0.101176993466944725E+06, 0.101136539903244993E+06, 0.101098204242251013E+06, 0.101061761330862719E+06, - 0.101028266665796909E+06, 0.100998589290583972E+06, 0.100975333400938267E+06, 0.100959068131358043E+06, 0.100949766177223195E+06, - 0.100947806353674678E+06, 0.100952626346498961E+06, 0.100962758032929953E+06, 0.100976213788639361E+06, 0.100993663080123253E+06, - 0.101014486892675981E+06, 0.101035822837299012E+06, 0.101058579399157214E+06, 0.101083303211150094E+06, 0.101113186489526008E+06, - 0.101147351565124962E+06, 0.101176652682216401E+06, 0.101196193972918787E+06, 0.101198569776344622E+06, 0.101186160134931008E+06, - 0.101157868126258880E+06, 0.101103141394806822E+06, 0.101031831614193070E+06, 0.100956733996206865E+06, 0.100882403087983286E+06, - 0.100813473138545116E+06, 0.100752516407046714E+06, 0.100703757785565627E+06, 0.100676218536944187E+06, 0.100667431274046598E+06, - 0.100674873519601999E+06, 0.100697658618489222E+06, 0.100739841159568794E+06, 0.100789068474863947E+06, 0.100839720710070338E+06, - 0.100886379550526690E+06, 0.100923029883014446E+06, 0.100953143284320337E+06, 0.100977639241319004E+06, 0.100999128395021136E+06, - 0.101024581691416737E+06, 0.101055845921262473E+06, 0.101093715024692676E+06, 0.101137145750038864E+06, 0.101181709309337297E+06, - 0.101225325474523444E+06, 0.101263559713032722E+06, 0.101292474677031365E+06, 0.101308682549641118E+06, 0.101297475120822361E+06, - 0.101271409211849808E+06, 0.101232040601299872E+06, 0.101182869285470704E+06, 0.101128290980360704E+06, 0.101072929755581790E+06, - 0.101016889073163620E+06, 0.100962491541966170E+06, 0.100912327910715336E+06, 0.100869361400221751E+06, 0.100839775977090918E+06, - 0.100823441492130820E+06, 0.100816113342184137E+06, 0.100817094874734074E+06, 0.100825233759279654E+06, 0.100839074432490510E+06, - 0.100858082771811969E+06, 0.100882174552001874E+06, 0.100906977487573211E+06, 0.100931151837540980E+06, 0.100953671595204651E+06, - 0.100973813441941427E+06, 0.100991208365737388E+06, 0.101004593996319396E+06, 0.101014464426847393E+06, 0.101019840305871679E+06, - 0.101022516216040211E+06, 0.101022479820383916E+06, 0.101189306237606637E+06, 0.101183099563423224E+06, 0.101177524645541649E+06, - 0.101172236435105573E+06, 0.101167371532973528E+06, 0.101163082020276575E+06, 0.101159529060147339E+06, 0.101159316447558173E+06, - 0.101160894564677219E+06, 0.101164348300187223E+06, 0.101169261422140553E+06, 0.101174195290734366E+06, 0.101178879818970003E+06, - 0.101183100812083387E+06, 0.101186714675334646E+06, 0.101189656703835382E+06, 0.101191942124414170E+06, 0.101192917377320977E+06, - 0.101193593575982464E+06, 0.101195069630171711E+06, 0.101197693383898673E+06, 0.101201751769885639E+06, 0.101207449602623747E+06, - 0.101214890679059696E+06, 0.101224061589853489E+06, 0.101235336912347877E+06, 0.101248190104239126E+06, 0.101262427935202722E+06, - 0.101275786221996692E+06, 0.101287697523967043E+06, 0.101297635973110140E+06, 0.101305160473319178E+06, 0.101310051693956630E+06, - 0.101312576731523863E+06, 0.101312178530984005E+06, 0.101309704462442271E+06, 0.101306154021924303E+06, 0.101301740366064056E+06, - 0.101296951709652378E+06, 0.101292269396465854E+06, 0.101290108113855764E+06, 0.101288928548419208E+06, 0.101288387917089291E+06, - 0.101288777866387623E+06, 0.101290116771842790E+06, 0.101292139767421628E+06, 0.101294723268304471E+06, 0.101297795211849851E+06, - 0.101301366709605994E+06, 0.101305420330384557E+06, 0.101309869927812077E+06, 0.101314312823006214E+06, 0.101319116997910372E+06, - 0.101324617109151222E+06, 0.101331532615370001E+06, 0.101340103637168490E+06, 0.101350201834497682E+06, 0.101361344371531173E+06, - 0.101372418886796950E+06, 0.101381948875157381E+06, 0.101388923839096911E+06, 0.101393136106285616E+06, 0.101394429864949576E+06, - 0.101392894622174237E+06, 0.101388710803148075E+06, 0.101383777236252092E+06, 0.101379295952832908E+06, 0.101375940276367168E+06, - 0.101374441230547527E+06, 0.101375326622697306E+06, 0.101379093018278771E+06, 0.101385343361571824E+06, 0.101393971058482173E+06, - 0.101404050563811383E+06, 0.101413309721598285E+06, 0.101419590399406094E+06, 0.101421556394179410E+06, 0.101418021431235960E+06, - 0.101407974515161055E+06, 0.101390537479077990E+06, 0.101366032709315157E+06, 0.101334626683717870E+06, 0.101295933958054040E+06, - 0.101248443893183838E+06, 0.101195557967522065E+06, 0.101139585544601810E+06, 0.101085211343045346E+06, 0.101035266930195139E+06, - 0.100988241812145512E+06, 0.100945367896748721E+06, 0.100910497202633036E+06, 0.100884702886764164E+06, 0.100866517649476897E+06, - 0.100856014684083144E+06, 0.100852787000617667E+06, 0.100856653557479323E+06, 0.100867163372326730E+06, 0.100881111266454434E+06, - 0.100900315195405696E+06, 0.100923976750114074E+06, 0.100948598119614544E+06, 0.100974781704195004E+06, 0.101003202157587060E+06, - 0.101036407590628412E+06, 0.101073193182310031E+06, 0.101104736474453239E+06, 0.101125695287679831E+06, 0.101129453279073452E+06, - 0.101117773581594010E+06, 0.101089185532541305E+06, 0.101034032199054171E+06, 0.100963945545633382E+06, 0.100886699328991119E+06, - 0.100810636627241329E+06, 0.100740715610179395E+06, 0.100679191246166200E+06, 0.100632989251138570E+06, 0.100613781871159343E+06, - 0.100610871530594683E+06, 0.100624379990977119E+06, 0.100656925116010229E+06, 0.100705935141557828E+06, 0.100761070879974053E+06, - 0.100816622699684551E+06, 0.100864793595773081E+06, 0.100902967646118850E+06, 0.100932714749620762E+06, 0.100956310150092322E+06, - 0.100973624358999965E+06, 0.100992241483773090E+06, 0.101016637765204548E+06, 0.101048154107647293E+06, 0.101087466334016062E+06, - 0.101132339254048915E+06, 0.101174823812832328E+06, 0.101210761915469266E+06, 0.101237271423401384E+06, 0.101243002885737078E+06, - 0.101230131791106003E+06, 0.101203940299668466E+06, 0.101166656487591579E+06, 0.101121119041289232E+06, 0.101069073832594047E+06, - 0.101014700223724387E+06, 0.100959265268248433E+06, 0.100905468112225586E+06, 0.100856040902612105E+06, 0.100814460428244129E+06, - 0.100787259237540056E+06, 0.100772005863003345E+06, 0.100765985352267919E+06, 0.100768479113289053E+06, 0.100778366997407138E+06, - 0.100794945598743492E+06, 0.100817620478677374E+06, 0.100842147859125718E+06, 0.100867955315801722E+06, 0.100893394586128459E+06, - 0.100917107047287223E+06, 0.100938380004807230E+06, 0.100955347801049342E+06, 0.100970101009214006E+06, 0.100982904354844184E+06, - 0.100992784717252944E+06, 0.100997426697573173E+06, 0.100999203666720758E+06, 0.101193726602745155E+06, 0.101187754050723946E+06, - 0.101182357442443288E+06, 0.101177791388126643E+06, 0.101173723996436573E+06, 0.101170304719806183E+06, 0.101170612153776412E+06, - 0.101172440371721386E+06, 0.101174837075875621E+06, 0.101177672254314428E+06, 0.101182161160034389E+06, 0.101187828651191783E+06, - 0.101193320301503438E+06, 0.101198410730358519E+06, 0.101202946144533795E+06, 0.101206852558810875E+06, 0.101210007801575470E+06, - 0.101212489910168282E+06, 0.101214469378389869E+06, 0.101216878002924321E+06, 0.101220363461237575E+06, 0.101225214136769951E+06, - 0.101231637580600829E+06, 0.101239741560505950E+06, 0.101249517808410572E+06, 0.101260983023677167E+06, 0.101275957870551239E+06, - 0.101290656294668952E+06, 0.101304333702323362E+06, 0.101316427532517599E+06, 0.101326426428850100E+06, 0.101333915035895625E+06, - 0.101338611708287717E+06, 0.101340492859798338E+06, 0.101340362563395611E+06, 0.101338449476013702E+06, 0.101335257523435517E+06, - 0.101331249861504504E+06, 0.101326886093198918E+06, 0.101322617484757109E+06, 0.101318867500197564E+06, 0.101317900452591755E+06, - 0.101318314786954928E+06, 0.101319723768116164E+06, 0.101321959881412520E+06, 0.101324889048512938E+06, 0.101328347647524672E+06, - 0.101332174840765205E+06, 0.101336616060312401E+06, 0.101341556829236884E+06, 0.101346573413864826E+06, 0.101351603295543347E+06, - 0.101356815104860521E+06, 0.101362438373961399E+06, 0.101369371088361426E+06, 0.101378082295762331E+06, 0.101388314410706720E+06, - 0.101399372327800622E+06, 0.101410061836120745E+06, 0.101419580351030396E+06, 0.101425913537260407E+06, 0.101429293259021812E+06, - 0.101429804412116951E+06, 0.101427672924137820E+06, 0.101424080437455879E+06, 0.101419619212416699E+06, 0.101415230974183942E+06, - 0.101412067965185430E+06, 0.101410791086110883E+06, 0.101411739073867124E+06, 0.101415639705951602E+06, 0.101423312622668134E+06, - 0.101432474045874798E+06, 0.101442051195699867E+06, 0.101450469188552204E+06, 0.101454491373749755E+06, 0.101453440137517347E+06, - 0.101446281387837167E+06, 0.101431595048405667E+06, 0.101408886711617088E+06, 0.101378784184722594E+06, 0.101341184770978914E+06, - 0.101295889547724786E+06, 0.101240328400627433E+06, 0.101177652284460986E+06, 0.101111150684114546E+06, 0.101044053118300144E+06, - 0.100984918740243505E+06, 0.100930374090685815E+06, 0.100881582472409573E+06, 0.100841112633375247E+06, 0.100809768362702191E+06, - 0.100786799243457121E+06, 0.100772143085301912E+06, 0.100764968278141983E+06, 0.100765770745809103E+06, 0.100774102380776618E+06, - 0.100787701814049200E+06, 0.100807502103195773E+06, 0.100832717694658859E+06, 0.100860249536352872E+06, 0.100889852423407749E+06, - 0.100921848628126099E+06, 0.100957861355781963E+06, 0.100996433916241411E+06, 0.101029829562515966E+06, 0.101052485930506547E+06, - 0.101058372937639273E+06, 0.101049548410078569E+06, 0.101024243456762211E+06, 0.100972590760278690E+06, 0.100908281417167527E+06, - 0.100837060983074800E+06, 0.100768161325613342E+06, 0.100704714640766149E+06, 0.100649980401007386E+06, 0.100610226186345069E+06, - 0.100590748020045430E+06, 0.100587436259410169E+06, 0.100600313080586799E+06, 0.100641206195168561E+06, 0.100694783185600594E+06, - 0.100753395339411843E+06, 0.100811221255729251E+06, 0.100860359364136690E+06, 0.100899824043495319E+06, 0.100928315410134717E+06, - 0.100945425133485944E+06, 0.100949685705930868E+06, 0.100959203677864440E+06, 0.100974757114044391E+06, 0.100998131833821230E+06, - 0.101033920715517670E+06, 0.101074219109624129E+06, 0.101114091820176982E+06, 0.101149405994865883E+06, 0.101170348641579942E+06, - 0.101169807298637141E+06, 0.101156298476682292E+06, 0.101130628971099330E+06, 0.101094643437300154E+06, 0.101052492078486888E+06, - 0.101007253119503090E+06, 0.100955907017813224E+06, 0.100902084595712833E+06, 0.100849827379669470E+06, 0.100802083544595851E+06, - 0.100765913220995702E+06, 0.100739572869835451E+06, 0.100723779479156976E+06, 0.100718506421119528E+06, 0.100722320980193326E+06, - 0.100734436110120514E+06, 0.100755329206052033E+06, 0.100779519272158068E+06, 0.100805173540144926E+06, 0.100830784490592530E+06, - 0.100856189170746162E+06, 0.100880432886013805E+06, 0.100899949784039432E+06, 0.100917438620547167E+06, 0.100933522862752710E+06, - 0.100948109352301544E+06, 0.100961044329522949E+06, 0.100971373211325132E+06, 0.100975423948777170E+06, 0.101200152192834488E+06, - 0.101194982325493736E+06, 0.101190103263664205E+06, 0.101186138559247396E+06, 0.101183134221834189E+06, 0.101184216681154692E+06, - 0.101186521041798725E+06, 0.101189436060083317E+06, 0.101192802546943451E+06, 0.101196478796712297E+06, 0.101200354354545649E+06, - 0.101205668611732151E+06, 0.101211929159398627E+06, 0.101217855930562437E+06, 0.101223284560094209E+06, 0.101227968215825720E+06, - 0.101231889676374194E+06, 0.101235394681567603E+06, 0.101238691342655846E+06, 0.101242180145337508E+06, 0.101246637252434826E+06, - 0.101252408136256170E+06, 0.101259706939182157E+06, 0.101268648761024378E+06, 0.101279505402642011E+06, 0.101294343975882977E+06, - 0.101309563533686218E+06, 0.101324641711895500E+06, 0.101338688391072021E+06, 0.101351044389960793E+06, 0.101361207159967045E+06, - 0.101368783445243811E+06, 0.101373529077171552E+06, 0.101374957490127519E+06, 0.101374464042535998E+06, 0.101372814207710297E+06, - 0.101369991240096075E+06, 0.101366429702577938E+06, 0.101362562430391059E+06, 0.101358815668015828E+06, 0.101355589086463762E+06, - 0.101353446673457220E+06, 0.101354379072032898E+06, 0.101356568662050558E+06, 0.101359675232751892E+06, 0.101363521918530183E+06, - 0.101367901119934351E+06, 0.101372596354978567E+06, 0.101377679630817802E+06, 0.101383555064504282E+06, 0.101389214201889146E+06, - 0.101394747283543154E+06, 0.101400304955646759E+06, 0.101406085277459220E+06, 0.101412285840230092E+06, 0.101421118963008921E+06, - 0.101431763041225102E+06, 0.101442507714153820E+06, 0.101452705296310087E+06, 0.101461587946274274E+06, 0.101468308697248838E+06, - 0.101470980618346424E+06, 0.101470729759961876E+06, 0.101468260238464049E+06, 0.101464485269084631E+06, 0.101460142280246233E+06, - 0.101455922507406227E+06, 0.101452998879112638E+06, 0.101452045655453316E+06, 0.101454002525278673E+06, 0.101458795222069632E+06, - 0.101466167386261062E+06, 0.101474834484365027E+06, 0.101483448321051124E+06, 0.101490293297485317E+06, 0.101492761571887779E+06, - 0.101487122913431667E+06, 0.101474656695076628E+06, 0.101456224507296021E+06, 0.101430664509854570E+06, 0.101396241168372988E+06, - 0.101353344458271313E+06, 0.101301873429881321E+06, 0.101240809982906721E+06, 0.101170237649192510E+06, 0.101096056635001150E+06, - 0.101022326149495057E+06, 0.100954494264510751E+06, 0.100892663983306251E+06, 0.100837194485465618E+06, 0.100789854158125687E+06, - 0.100752681688232609E+06, 0.100724050472389747E+06, 0.100703743253736306E+06, 0.100691513151292049E+06, 0.100687489061012806E+06, - 0.100691112445670500E+06, 0.100703488782601926E+06, 0.100723515984008409E+06, 0.100749686437924174E+06, 0.100779862035053753E+06, - 0.100812870466228749E+06, 0.100848356219152789E+06, 0.100886618033728999E+06, 0.100925814700154908E+06, 0.100959913340029161E+06, - 0.100983841408427761E+06, 0.100992708938197888E+06, 0.100988038726636543E+06, 0.100967451749821237E+06, 0.100923773661071609E+06, - 0.100869154347678006E+06, 0.100808293671752166E+06, 0.100749950128448239E+06, 0.100695742144580625E+06, 0.100650055466795442E+06, - 0.100620543751264457E+06, 0.100607774629359716E+06, 0.100609856499218455E+06, 0.100627731512123690E+06, 0.100665827330432643E+06, - 0.100713727303578300E+06, 0.100768972922192886E+06, 0.100825101449405265E+06, 0.100873709631678183E+06, 0.100911910907812446E+06, - 0.100937425920985901E+06, 0.100943826278808614E+06, 0.100938923612846338E+06, 0.100932772703382885E+06, 0.100933209681834254E+06, - 0.100949942917228545E+06, 0.100978390439217677E+06, 0.101012218238497939E+06, 0.101047001443362271E+06, 0.101078030320958118E+06, - 0.101092528178749781E+06, 0.101092763600199483E+06, 0.101079667768304178E+06, 0.101055363093306296E+06, 0.101021923023798488E+06, - 0.100985043918944197E+06, 0.100942576674115116E+06, 0.100896142310934607E+06, 0.100846740359288175E+06, 0.100796745756417309E+06, - 0.100754281013923188E+06, 0.100719661969801513E+06, 0.100694202095497239E+06, 0.100678990016565542E+06, 0.100674159552381345E+06, - 0.100679144362130333E+06, 0.100696517057853678E+06, 0.100718723297862292E+06, 0.100743828966135392E+06, 0.100770038155539907E+06, - 0.100795879753092362E+06, 0.100820314666932885E+06, 0.100840279171251284E+06, 0.100859249879902098E+06, 0.100877455365052447E+06, - 0.100894767625869688E+06, 0.100911051050858092E+06, 0.100926113687447752E+06, 0.100939677540915931E+06, 0.100954098051095163E+06, - 0.101208266074669766E+06, 0.101204147301312958E+06, 0.101200416332034234E+06, 0.101197391022381067E+06, 0.101199181271863577E+06, - 0.101202094479608772E+06, 0.101205718922681015E+06, 0.101209868079757638E+06, 0.101214363087133126E+06, 0.101219049217859545E+06, - 0.101223809934456556E+06, 0.101228578149758148E+06, 0.101234563424877633E+06, 0.101241302361129114E+06, 0.101247428820028508E+06, - 0.101252833705618847E+06, 0.101257741214607289E+06, 0.101262268791874914E+06, 0.101266621965163562E+06, 0.101271104202253337E+06, - 0.101276449761759577E+06, 0.101283261996570189E+06, 0.101291578552841063E+06, 0.101301921001578070E+06, 0.101316864610287244E+06, - 0.101332633397110185E+06, 0.101348565409528048E+06, 0.101363970375545556E+06, 0.101378339950166031E+06, 0.101391005184961628E+06, - 0.101401390238182328E+06, 0.101409118811233842E+06, 0.101412813852507519E+06, 0.101413916622343488E+06, 0.101413648249779086E+06, - 0.101412262363096830E+06, 0.101409843816287481E+06, 0.101406792118611833E+06, 0.101403515263375913E+06, 0.101400419883465394E+06, - 0.101397648089374270E+06, 0.101396200071828469E+06, 0.101396462464251483E+06, 0.101399249041504649E+06, 0.101403242459244415E+06, - 0.101408064521844237E+06, 0.101413460579763079E+06, 0.101419299541355576E+06, 0.101425515902185769E+06, 0.101431872156549493E+06, - 0.101438092345517420E+06, 0.101444082593329236E+06, 0.101449980221889302E+06, 0.101455962961780679E+06, 0.101462741205452243E+06, - 0.101470817291088752E+06, 0.101480892587434573E+06, 0.101491089133211004E+06, 0.101500643428374140E+06, 0.101508817670985038E+06, - 0.101514860224122342E+06, 0.101517434476198061E+06, 0.101516541747761323E+06, 0.101513815068472235E+06, 0.101509904719619197E+06, - 0.101505507654049128E+06, 0.101501313463842132E+06, 0.101498849002981064E+06, 0.101499159934514231E+06, 0.101501693020130377E+06, - 0.101506338552975649E+06, 0.101512651659291208E+06, 0.101520288072555239E+06, 0.101527432009874057E+06, 0.101531192551327069E+06, - 0.101528423709889583E+06, 0.101519435532333911E+06, 0.101504734513441072E+06, 0.101484004484384001E+06, 0.101456280732745858E+06, - 0.101419035179553714E+06, 0.101371837096264266E+06, 0.101315248944149382E+06, 0.101249891741609565E+06, 0.101174205010685138E+06, - 0.101095025216710172E+06, 0.101016603839094241E+06, 0.100942714517862012E+06, 0.100875651961458614E+06, 0.100815206600637175E+06, - 0.100762266129504540E+06, 0.100719792923412402E+06, 0.100688381242510412E+06, 0.100664315202569429E+06, 0.100646899315571907E+06, - 0.100636389190856382E+06, 0.100633921317728295E+06, 0.100640986745192960E+06, 0.100657927960284273E+06, 0.100683603999329847E+06, - 0.100715139361547874E+06, 0.100750464071587950E+06, 0.100789001781336541E+06, 0.100828980626378441E+06, 0.100867904881876937E+06, - 0.100901941917073651E+06, 0.100927518925117751E+06, 0.100941703370720032E+06, 0.100943313763502156E+06, 0.100929483993483183E+06, - 0.100897899422321643E+06, 0.100855144068640948E+06, 0.100806216832129357E+06, 0.100757963881253396E+06, 0.100713882396988687E+06, - 0.100678037239657642E+06, 0.100660578064393208E+06, 0.100655660139403961E+06, 0.100663394611081239E+06, 0.100687757803070126E+06, - 0.100726360544964817E+06, 0.100771737117872792E+06, 0.100819550423355045E+06, 0.100863789606076709E+06, 0.100903960982124961E+06, - 0.100937933974381580E+06, 0.100955929021348216E+06, 0.100950002084778927E+06, 0.100936336168784517E+06, 0.100920611799506456E+06, - 0.100908792443247541E+06, 0.100909956087163751E+06, 0.100924519937428529E+06, 0.100950317855032117E+06, 0.100978637481090613E+06, - 0.101001785171553231E+06, 0.101014600980588948E+06, 0.101015533816949537E+06, 0.101004399554267075E+06, 0.100982402170127083E+06, - 0.100954472767269413E+06, 0.100920498290662959E+06, 0.100881272186000555E+06, 0.100838252143924561E+06, 0.100793001524282852E+06, - 0.100749722238879811E+06, 0.100710007831689465E+06, 0.100676561452258436E+06, 0.100651754156739727E+06, 0.100637016515992684E+06, - 0.100632797680647462E+06, 0.100643122435673547E+06, 0.100662040946369423E+06, 0.100684765371038040E+06, 0.100710073382574032E+06, - 0.100736158886730540E+06, 0.100761558107963079E+06, 0.100780935166741401E+06, 0.100798370121153508E+06, 0.100816555152162895E+06, - 0.100835390903751701E+06, 0.100853847765655024E+06, 0.100871757501481305E+06, 0.100888895778612612E+06, 0.100908175229415137E+06, - 0.100925669047910487E+06, 0.101217702072300162E+06, 0.101214879429494846E+06, 0.101212918203238412E+06, 0.101215072363802130E+06, - 0.101218250672383481E+06, 0.101222522132735277E+06, 0.101227622288938786E+06, 0.101233167267756522E+06, 0.101238956389902218E+06, - 0.101244820309774892E+06, 0.101250635435466815E+06, 0.101256335683556361E+06, 0.101261921151622766E+06, 0.101268342600560762E+06, - 0.101275163933372678E+06, 0.101281497833931266E+06, 0.101287383286156546E+06, 0.101292932525330558E+06, 0.101298347923196663E+06, - 0.101303932128846092E+06, 0.101310090422888767E+06, 0.101317693616226330E+06, 0.101327652607175361E+06, 0.101342480557763687E+06, - 0.101358556451299402E+06, 0.101375279086523937E+06, 0.101391978870831925E+06, 0.101407971443584844E+06, 0.101422613121423448E+06, - 0.101435506823643867E+06, 0.101446124078218185E+06, 0.101452234738676838E+06, 0.101455284023688801E+06, 0.101456737369482420E+06, - 0.101456865445288451E+06, 0.101455916182255954E+06, 0.101454121953738781E+06, 0.101451661773156113E+06, 0.101449081947506013E+06, - 0.101446228059309360E+06, 0.101444208961239303E+06, 0.101443612932188233E+06, 0.101444705011359765E+06, 0.101447541270001515E+06, - 0.101452383501387390E+06, 0.101458282693875270E+06, 0.101464997464114887E+06, 0.101472100710916289E+06, 0.101479273864667499E+06, - 0.101486350419971670E+06, 0.101493152086614995E+06, 0.101499576717366377E+06, 0.101505843270561643E+06, 0.101512436676125639E+06, - 0.101519641676807107E+06, 0.101527434410592061E+06, 0.101535644765811841E+06, 0.101545029301612725E+06, 0.101553754432012545E+06, - 0.101560956040866411E+06, 0.101564550165702050E+06, 0.101566892094339870E+06, 0.101567035078111294E+06, 0.101564167039659485E+06, - 0.101560257949168226E+06, 0.101555969226616333E+06, 0.101552313766367617E+06, 0.101550452021603851E+06, 0.101550963150145908E+06, - 0.101553454481203808E+06, 0.101557594737071355E+06, 0.101562591960326725E+06, 0.101568055832384678E+06, 0.101570018237429336E+06, - 0.101568806715803599E+06, 0.101563796324326468E+06, 0.101553825571776295E+06, 0.101537561122490020E+06, 0.101515230788797810E+06, - 0.101485862600308523E+06, 0.101448189650402157E+06, 0.101397681000099896E+06, 0.101336913516701141E+06, 0.101267241010695536E+06, - 0.101189600658946001E+06, 0.101107785950000631E+06, 0.101027329917614610E+06, 0.100951013494106854E+06, 0.100883020611558357E+06, - 0.100825246076290889E+06, 0.100775271676367163E+06, 0.100732070018118597E+06, 0.100693807828755365E+06, 0.100660471847562090E+06, - 0.100632198820324600E+06, 0.100610336348454613E+06, 0.100597445568148105E+06, 0.100596347705297740E+06, 0.100608739289963560E+06, - 0.100632312399144867E+06, 0.100664180492312080E+06, 0.100701580165578795E+06, 0.100742885809197804E+06, 0.100784251808581277E+06, - 0.100822721504335888E+06, 0.100857114729781009E+06, 0.100884974331454141E+06, 0.100904296005382625E+06, 0.100913525976403209E+06, - 0.100909880311948247E+06, 0.100892635225440783E+06, 0.100865034092500646E+06, 0.100830041776689235E+06, 0.100792635237818962E+06, - 0.100758858691726316E+06, 0.100734424708176390E+06, 0.100726153683192097E+06, 0.100729591906647329E+06, 0.100742469628359380E+06, - 0.100772373108355430E+06, 0.100810039805286127E+06, 0.100850865902025442E+06, 0.100889839249818047E+06, 0.100924291493751982E+06, - 0.100954018166122405E+06, 0.100976020229241141E+06, 0.100977598211779696E+06, 0.100962801120868462E+06, 0.100940325812200113E+06, - 0.100915300637579014E+06, 0.100897607613392654E+06, 0.100888545266499175E+06, 0.100887361365753401E+06, 0.100894417619390835E+06, - 0.100914107950286358E+06, 0.100931864535990011E+06, 0.100942729300749750E+06, 0.100943712413188565E+06, 0.100933999633237443E+06, - 0.100915953837210676E+06, 0.100891962587812566E+06, 0.100861290497928669E+06, 0.100825794229352119E+06, 0.100786805648525173E+06, - 0.100747059949918155E+06, 0.100708052571343884E+06, 0.100670389177752746E+06, 0.100637438856290988E+06, 0.100612791553316754E+06, - 0.100598161054412602E+06, 0.100597616745557592E+06, 0.100608245258248513E+06, 0.100627589752602711E+06, 0.100652501052796259E+06, - 0.100677256390096882E+06, 0.100702485105916334E+06, 0.100721371071945381E+06, 0.100737732280855227E+06, 0.100754743779602475E+06, - 0.100772593580461515E+06, 0.100791374419969914E+06, 0.100810897025248196E+06, 0.100830367089737425E+06, 0.100852737881952431E+06, - 0.100874075837282377E+06, 0.100893534157121714E+06, 0.101228070489269143E+06, 0.101227544665406953E+06, 0.101230349746524807E+06, - 0.101234269851944497E+06, 0.101239184467959683E+06, 0.101244939450664504E+06, 0.101251545017166776E+06, 0.101258662705518451E+06, - 0.101265918196699597E+06, 0.101273125560589353E+06, 0.101280152736103031E+06, 0.101286933875186733E+06, 0.101293407125996848E+06, - 0.101299586824039099E+06, 0.101306376779591956E+06, 0.101313623028716072E+06, 0.101320476967868250E+06, 0.101327043370354135E+06, - 0.101333520713772232E+06, 0.101340211822319048E+06, 0.101347526837547412E+06, 0.101356523012281294E+06, 0.101370533287668499E+06, - 0.101386582740267011E+06, 0.101403758993542797E+06, 0.101421430602220105E+06, 0.101438909393433467E+06, 0.101455505881131437E+06, - 0.101470586854150286E+06, 0.101483635012064580E+06, 0.101492144560654036E+06, 0.101497362403152074E+06, 0.101500801900675287E+06, - 0.101502736875093309E+06, 0.101503413235270535E+06, 0.101503062612840484E+06, 0.101501914512809366E+06, 0.101500206465205003E+06, - 0.101497831592138784E+06, 0.101495767534276791E+06, 0.101494714546066039E+06, 0.101495119352637426E+06, 0.101497237786485115E+06, - 0.101501125674684867E+06, 0.101506644060371764E+06, 0.101514150312748505E+06, 0.101522320784248848E+06, 0.101530563331544297E+06, - 0.101538706294350879E+06, 0.101546559377466736E+06, 0.101553946547580461E+06, 0.101560765945043371E+06, 0.101567653265792658E+06, - 0.101574587210003941E+06, 0.101581752742970988E+06, 0.101589174518686996E+06, 0.101596642355671458E+06, 0.101603818859754785E+06, - 0.101610799838750623E+06, 0.101614811522755466E+06, 0.101617790546373333E+06, 0.101619757440904345E+06, 0.101620562545717650E+06, - 0.101618884459059045E+06, 0.101615191240677028E+06, 0.101611483339551589E+06, 0.101608375965291722E+06, 0.101606589668011176E+06, - 0.101606767311590491E+06, 0.101608967585915860E+06, 0.101612347393029107E+06, 0.101614810665037265E+06, 0.101614446811429036E+06, - 0.101613127583126843E+06, 0.101609516694027276E+06, 0.101602475273863849E+06, 0.101591105455035053E+06, 0.101574139304303288E+06, - 0.101552261616850359E+06, 0.101522964529426812E+06, 0.101483809256113498E+06, 0.101431803333729331E+06, 0.101367984772122625E+06, - 0.101295216781381270E+06, 0.101216180859079337E+06, 0.101134418945842335E+06, 0.101057719484696820E+06, 0.100987761361816083E+06, - 0.100925129407695815E+06, 0.100869076127166059E+06, 0.100819148307903684E+06, 0.100772602660554068E+06, 0.100726367887494707E+06, - 0.100682387602061091E+06, 0.100642046686646194E+06, 0.100608073036628615E+06, 0.100583165331615121E+06, 0.100571567333927058E+06, - 0.100579161681519065E+06, 0.100599831523424771E+06, 0.100631457444745640E+06, 0.100671162741316628E+06, 0.100715517300559659E+06, - 0.100759196447210823E+06, 0.100798644466533326E+06, 0.100834218092755124E+06, 0.100864022068452279E+06, 0.100886844670119492E+06, - 0.100903072952249466E+06, 0.100910324635737983E+06, 0.100907110564502160E+06, 0.100894913649374212E+06, 0.100873485872527890E+06, - 0.100847908218072756E+06, 0.100825028815845202E+06, 0.100812235195442801E+06, 0.100811789392154620E+06, 0.100821477468724654E+06, - 0.100842188280174509E+06, 0.100874882105417564E+06, 0.100910352034741096E+06, 0.100944613694273561E+06, 0.100970573806106200E+06, - 0.100992876564753780E+06, 0.101010256709896377E+06, 0.101017365734439736E+06, 0.101004642180764087E+06, 0.100981216767300502E+06, - 0.100950670557522288E+06, 0.100918693714911191E+06, 0.100893168282002865E+06, 0.100873786774855747E+06, 0.100862092518860401E+06, - 0.100858765389723776E+06, 0.100863848594959985E+06, 0.100872455106490743E+06, 0.100880727391939872E+06, 0.100881060958518239E+06, - 0.100871581642927995E+06, 0.100854982629453050E+06, 0.100833968938175327E+06, 0.100809126941723182E+06, 0.100777926015906574E+06, - 0.100744862813125714E+06, 0.100711030659190204E+06, 0.100674920663551122E+06, 0.100638665812651045E+06, 0.100604613640158801E+06, - 0.100577951755037328E+06, 0.100565299257314167E+06, 0.100564490794773781E+06, 0.100574070775104672E+06, 0.100592267906427369E+06, - 0.100616576592620535E+06, 0.100643954138155808E+06, 0.100661679785274406E+06, 0.100676519993234426E+06, 0.100692101751513052E+06, - 0.100708845098980164E+06, 0.100726890359751837E+06, 0.100746088291053093E+06, 0.100766274118497415E+06, 0.100790485020117267E+06, - 0.100814283052694198E+06, 0.100836998900601233E+06, 0.100857834251143926E+06, 0.101239951294366925E+06, 0.101243511198018721E+06, - 0.101248266604097182E+06, 0.101254120739513630E+06, 0.101260940255995316E+06, 0.101268566543099048E+06, 0.101276830453567702E+06, - 0.101285622454819968E+06, 0.101294523809254446E+06, 0.101303237484829937E+06, 0.101311620976720500E+06, 0.101319644374765689E+06, - 0.101327259549206297E+06, 0.101334480948853117E+06, 0.101341388354789131E+06, 0.101348710884544664E+06, 0.101356521517190282E+06, - 0.101364093945627537E+06, 0.101371621643877312E+06, 0.101379408199202080E+06, 0.101388443315429948E+06, 0.101401687552132498E+06, - 0.101416572004818678E+06, 0.101433189992554107E+06, 0.101451428970825116E+06, 0.101470024045938291E+06, 0.101488255659360628E+06, - 0.101505416028128879E+06, 0.101520868917434069E+06, 0.101531842805264969E+06, 0.101539245769958565E+06, 0.101544605958666289E+06, - 0.101548569302459247E+06, 0.101551134535491103E+06, 0.101552518676128384E+06, 0.101552933361419549E+06, 0.101552598628048305E+06, - 0.101551346091754502E+06, 0.101549620534837697E+06, 0.101548503290274006E+06, 0.101548531268210281E+06, 0.101550086213979870E+06, - 0.101553415865284071E+06, 0.101558574308658994E+06, 0.101566141420655156E+06, 0.101575323430362041E+06, 0.101584790524686381E+06, - 0.101594148506046142E+06, 0.101603272905442951E+06, 0.101611945735174741E+06, 0.101619979003416622E+06, 0.101627204805596586E+06, - 0.101634427668451928E+06, 0.101641404911077247E+06, 0.101648381901037224E+06, 0.101655340222651532E+06, 0.101662034474683896E+06, - 0.101666783103935741E+06, 0.101669591715802919E+06, 0.101672592019255666E+06, 0.101674896474706766E+06, 0.101676486613950226E+06, - 0.101677173545713507E+06, 0.101676735064566892E+06, 0.101674421820609132E+06, 0.101671063643987713E+06, 0.101668202552547300E+06, - 0.101666520557556054E+06, 0.101666348434875123E+06, 0.101667923680669555E+06, 0.101669351667803800E+06, 0.101668978131977754E+06, - 0.101666110028333933E+06, 0.101660538752964931E+06, 0.101654594444694463E+06, 0.101645738692219165E+06, 0.101634351733125281E+06, - 0.101619445806351592E+06, 0.101597486529762551E+06, 0.101566963080607631E+06, 0.101526313623151611E+06, 0.101474414132893216E+06, - 0.101408806070782084E+06, 0.101334676336432865E+06, 0.101255967485764850E+06, 0.101177930379907673E+06, 0.101105923487214692E+06, - 0.101041528067973224E+06, 0.100984421243628807E+06, 0.100931366999700622E+06, 0.100882259035952666E+06, 0.100834318510275116E+06, - 0.100780975023316409E+06, 0.100725029283105585E+06, 0.100672125573187601E+06, 0.100626333648281943E+06, 0.100591108252538659E+06, - 0.100571154519613207E+06, 0.100572764811242494E+06, 0.100590644123334263E+06, 0.100622114840101916E+06, 0.100663170419413218E+06, - 0.100711109304953105E+06, 0.100759450274770090E+06, 0.100803668821019484E+06, 0.100843723009858411E+06, 0.100878065056743988E+06, - 0.100905193898488564E+06, 0.100924238150348683E+06, 0.100935705112497482E+06, 0.100940040808540827E+06, 0.100938611611957211E+06, - 0.100929132041696241E+06, 0.100917754954705204E+06, 0.100905818223427166E+06, 0.100905472653716875E+06, 0.100913513200435162E+06, - 0.100929234171202479E+06, 0.100956672791980032E+06, 0.100989933744260285E+06, 0.101021721049159081E+06, 0.101045261345619481E+06, - 0.101056484086316414E+06, 0.101064376750130497E+06, 0.101068662292293593E+06, 0.101058850049314118E+06, 0.101036734626105259E+06, - 0.101005396099047648E+06, 0.100967551751069492E+06, 0.100930584068150943E+06, 0.100895049839971194E+06, 0.100865689126530953E+06, - 0.100843766391791884E+06, 0.100833519035555830E+06, 0.100830429319700765E+06, 0.100830534716874317E+06, 0.100831218872075027E+06, - 0.100828733033744793E+06, 0.100816736999957517E+06, 0.100801115692818625E+06, 0.100782650624359696E+06, 0.100761638271208169E+06, - 0.100739079948099330E+06, 0.100715508303584225E+06, 0.100685570121976882E+06, 0.100651926936336182E+06, 0.100616808436076797E+06, - 0.100582738088950529E+06, 0.100553609533300842E+06, 0.100536151852068826E+06, 0.100533191840017098E+06, 0.100540563795043839E+06, - 0.100556547268302660E+06, 0.100578647827983019E+06, 0.100597845282151320E+06, 0.100615643951716338E+06, 0.100629644958407152E+06, - 0.100644649717624998E+06, 0.100661314686951257E+06, 0.100679739011681770E+06, 0.100699923738231213E+06, 0.100724000291545439E+06, - 0.100748935934403649E+06, 0.100773460147275109E+06, 0.100796886100017015E+06, 0.100818431742268527E+06, 0.101253250319671861E+06, - 0.101258941275491015E+06, 0.101265825984074268E+06, 0.101273785992740712E+06, 0.101282673338371926E+06, 0.101292322337458594E+06, - 0.101302564811119126E+06, 0.101313249084015886E+06, 0.101324039732978374E+06, 0.101334420443956798E+06, 0.101344441355969844E+06, - 0.101353937804033951E+06, 0.101362853548466621E+06, 0.101371239996888005E+06, 0.101379195223571107E+06, 0.101386868114858662E+06, - 0.101394863418320267E+06, 0.101403421459721620E+06, 0.101411971625535502E+06, 0.101421328676152989E+06, 0.101434052612144369E+06, - 0.101448448578493975E+06, 0.101464428560022046E+06, 0.101481780318751698E+06, 0.101500377161328623E+06, 0.101519861969620310E+06, - 0.101538794301281392E+06, 0.101556432572582416E+06, 0.101569913275213607E+06, 0.101580111679331065E+06, 0.101588077608188687E+06, - 0.101593761388586005E+06, 0.101597743292873696E+06, 0.101601111211300595E+06, 0.101603375473686290E+06, 0.101604722386775393E+06, - 0.101605277974446421E+06, 0.101605137189286179E+06, 0.101604583774228318E+06, 0.101604027662526438E+06, 0.101605032612257637E+06, - 0.101607890648949600E+06, 0.101612610274943596E+06, 0.101620190413487217E+06, 0.101629709918692257E+06, 0.101640274485895483E+06, - 0.101651366271263018E+06, 0.101662017372317307E+06, 0.101672127532921921E+06, 0.101681639836175294E+06, 0.101689695653715113E+06, - 0.101697371401130935E+06, 0.101704816287710346E+06, 0.101711959261812881E+06, 0.101718592829194225E+06, 0.101724976617920722E+06, - 0.101729049321389990E+06, 0.101731107282530153E+06, 0.101732743234520705E+06, 0.101734177642089810E+06, 0.101735792298410903E+06, - 0.101737051523103568E+06, 0.101737813506062157E+06, 0.101737771770358304E+06, 0.101736766611527375E+06, 0.101733998643601444E+06, - 0.101731285447018498E+06, 0.101729657615879667E+06, 0.101729463824108592E+06, 0.101730467776220365E+06, 0.101730634889909721E+06, - 0.101728530424326527E+06, 0.101723478773003560E+06, 0.101715128998538450E+06, 0.101705173881448645E+06, 0.101697065128410613E+06, - 0.101686174729378530E+06, 0.101670746397321127E+06, 0.101648602916028351E+06, 0.101617289856162359E+06, 0.101575677936215157E+06, - 0.101523549414822643E+06, 0.101459384090740117E+06, 0.101385766535040675E+06, 0.101307806220871105E+06, 0.101230532040925333E+06, - 0.101163615695121596E+06, 0.101105144301163149E+06, 0.101053953064553687E+06, 0.101004506092646785E+06, 0.100954394425546445E+06, - 0.100903265851270029E+06, 0.100843568326323351E+06, 0.100779909310060830E+06, 0.100718507897475429E+06, 0.100663227538561507E+06, - 0.100619196470881463E+06, 0.100590878309716514E+06, 0.100585918330994056E+06, 0.100599670235220139E+06, 0.100629367268692309E+06, - 0.100671559948193928E+06, 0.100722625470161831E+06, 0.100775876461740903E+06, 0.100826307692812305E+06, 0.100872731273009820E+06, - 0.100911769660482067E+06, 0.100942401025764135E+06, 0.100964392752327054E+06, 0.100978678374194351E+06, 0.100986716960824007E+06, - 0.100990258819483715E+06, 0.100986859094204920E+06, 0.100984358423690996E+06, 0.100986880945730183E+06, 0.101001308030144719E+06, - 0.101021911204537639E+06, 0.101045314756852677E+06, 0.101079374563270016E+06, 0.101112057664106265E+06, 0.101138492426304845E+06, - 0.101147264582452117E+06, 0.101146181575950890E+06, 0.101139597898295426E+06, 0.101126956426191653E+06, 0.101104207044017559E+06, - 0.101074184746976593E+06, 0.101036351784390296E+06, 0.100994839802225833E+06, 0.100951701131987342E+06, 0.100907802015808338E+06, - 0.100866623322513595E+06, 0.100836261177509557E+06, 0.100817609325104844E+06, 0.100806057949370603E+06, 0.100799101756952587E+06, - 0.100794178922864405E+06, 0.100782586521973222E+06, 0.100770278560914870E+06, 0.100755730874395027E+06, 0.100740174567162278E+06, - 0.100724221891415305E+06, 0.100711960802472036E+06, 0.100695201938734870E+06, 0.100670904548085469E+06, 0.100639130264881242E+06, - 0.100604667725497551E+06, 0.100569533181772116E+06, 0.100538827586813903E+06, 0.100515863557522040E+06, 0.100504283432544311E+06, - 0.100508208880423437E+06, 0.100520846592849106E+06, 0.100533319890499857E+06, 0.100546979620563667E+06, 0.100563406036921282E+06, - 0.100581336883139578E+06, 0.100596479945475046E+06, 0.100613263609396352E+06, 0.100632606505272503E+06, 0.100655737101977575E+06, - 0.100680377627359165E+06, 0.100705693019706334E+06, 0.100730567542817560E+06, 0.100753963268230000E+06, 0.100775475443369112E+06, - 0.101264306669592683E+06, 0.101273005643247234E+06, 0.101282212261941575E+06, 0.101292455230279535E+06, 0.101303569666892407E+06, - 0.101315379627821021E+06, 0.101327713762651794E+06, 0.101340424766245633E+06, 0.101353413011349316E+06, 0.101366215214067837E+06, - 0.101378003241061873E+06, 0.101389048142805594E+06, 0.101399358057326695E+06, 0.101408993909155237E+06, 0.101418071350073515E+06, - 0.101426765747085621E+06, 0.101435320572288721E+06, 0.101444230417056518E+06, 0.101454115342003613E+06, 0.101466281775386233E+06, - 0.101480018815107192E+06, 0.101495370152025978E+06, 0.101512249092142942E+06, 0.101530457200416044E+06, 0.101549717357720714E+06, - 0.101569710093644739E+06, 0.101589282549966229E+06, 0.101605011230739328E+06, 0.101617835360473735E+06, 0.101628768238586897E+06, - 0.101637571031423722E+06, 0.101644166338589697E+06, 0.101648697806602591E+06, 0.101651881208006424E+06, 0.101655220484862148E+06, - 0.101657859335835557E+06, 0.101659761085947117E+06, 0.101661032940759702E+06, 0.101661921699332699E+06, 0.101662809971163108E+06, - 0.101664227024246793E+06, 0.101667989933228542E+06, 0.101675508452427108E+06, 0.101685268933038969E+06, 0.101696374945899413E+06, - 0.101708376350831662E+06, 0.101720741353243910E+06, 0.101732914311869565E+06, 0.101744191311434886E+06, 0.101753679207339199E+06, - 0.101762383198229145E+06, 0.101770484632283566E+06, 0.101778058653469430E+06, 0.101785052189110153E+06, 0.101791286685933344E+06, - 0.101795171487182030E+06, 0.101797156941597103E+06, 0.101798421280143026E+06, 0.101799261614609830E+06, 0.101799803038408485E+06, - 0.101800210895802447E+06, 0.101801683280290250E+06, 0.101802630829050468E+06, 0.101802543397740184E+06, 0.101801482357017914E+06, - 0.101799624587932572E+06, 0.101797066559983883E+06, 0.101795799625004249E+06, 0.101795785922852519E+06, 0.101796374037248344E+06, - 0.101796548441705847E+06, 0.101793091799900605E+06, 0.101786346983049574E+06, 0.101776575607877137E+06, 0.101765049283969143E+06, - 0.101754303368654233E+06, 0.101742481241294314E+06, 0.101726517364683619E+06, 0.101704526213350880E+06, 0.101673251963278643E+06, - 0.101631549642581842E+06, 0.101579630218674371E+06, 0.101517751331919892E+06, 0.101445587957413649E+06, 0.101369276534187840E+06, - 0.101293749197962985E+06, 0.101228845743408630E+06, 0.101175974072217723E+06, 0.101128069068520213E+06, 0.101080672101220363E+06, - 0.101030554297062597E+06, 0.100978255877595599E+06, 0.100917786384446328E+06, 0.100848380590802917E+06, 0.100779685419598463E+06, - 0.100716993576480047E+06, 0.100665449877585226E+06, 0.100628730188585745E+06, 0.100616768912061103E+06, 0.100625017647516172E+06, - 0.100651010955717982E+06, 0.100693983128488617E+06, 0.100748028718061119E+06, 0.100807126354548294E+06, 0.100865743222122503E+06, - 0.100920280263948240E+06, 0.100963697339721592E+06, 0.100996625031755175E+06, 0.101020588466931018E+06, 0.101034801756696354E+06, - 0.101044107550953762E+06, 0.101050001068824189E+06, 0.101053046373654055E+06, 0.101058552912032319E+06, 0.101072171257776601E+06, - 0.101095588999532294E+06, 0.101124462408449937E+06, 0.101159998252541394E+06, 0.101199939829214418E+06, 0.101233511940909040E+06, - 0.101250548981260363E+06, 0.101245238633873159E+06, 0.101231967019851887E+06, 0.101212524735667932E+06, 0.101187116747768814E+06, - 0.101155254569723096E+06, 0.101117728069520774E+06, 0.101075849861174778E+06, 0.101031454770778844E+06, 0.100982633468066182E+06, - 0.100931817382534617E+06, 0.100883044212189372E+06, 0.100842431678571462E+06, 0.100810753030772234E+06, 0.100790307235783985E+06, - 0.100775641660991605E+06, 0.100758065719658363E+06, 0.100742431929372280E+06, 0.100730276589137924E+06, 0.100719950891765460E+06, - 0.100707897196450547E+06, 0.100704034450479885E+06, 0.100696304475012279E+06, 0.100682955042842383E+06, 0.100662970635189646E+06, - 0.100635257255516670E+06, 0.100598919177042175E+06, 0.100561998994079375E+06, 0.100529207116205667E+06, 0.100503120931424841E+06, - 0.100485371253469493E+06, 0.100478084387816067E+06, 0.100480161528695491E+06, 0.100486330170588408E+06, 0.100497656033703854E+06, - 0.100512793940874559E+06, 0.100530267502319883E+06, 0.100548674998529634E+06, 0.100566870164484106E+06, 0.100588713074028346E+06, - 0.100612035752629497E+06, 0.100636570551070865E+06, 0.100661555413946771E+06, 0.100685975940573393E+06, 0.100708805081237850E+06, - 0.100728426698084644E+06, 0.101271996036762896E+06, 0.101284449704480561E+06, 0.101296689346213228E+06, 0.101309400454198360E+06, - 0.101322901055611903E+06, 0.101337001192974072E+06, 0.101351521575208899E+06, 0.101366313393139906E+06, 0.101382034494546009E+06, - 0.101397351776588475E+06, 0.101411443443270473E+06, 0.101424117470686309E+06, 0.101435883616085790E+06, 0.101446811616959909E+06, - 0.101457033181746156E+06, 0.101466747751913790E+06, 0.101476231696805597E+06, 0.101486021283400187E+06, 0.101497396375811921E+06, - 0.101510400207985600E+06, 0.101524923388815208E+06, 0.101540994381505661E+06, 0.101558520228044814E+06, 0.101577305318149651E+06, - 0.101597084529118074E+06, 0.101617572913645636E+06, 0.101635935716414897E+06, 0.101650985317801838E+06, 0.101664666828709975E+06, - 0.101676613583561295E+06, 0.101686531498022989E+06, 0.101694300750966708E+06, 0.101700039232711759E+06, 0.101704155496819658E+06, - 0.101707559871844016E+06, 0.101711706616868032E+06, 0.101715220819953611E+06, 0.101718183769718671E+06, 0.101720797579619655E+06, - 0.101723413797095534E+06, 0.101726548168837966E+06, 0.101732421109602874E+06, 0.101741180387240456E+06, 0.101752626090808626E+06, - 0.101765327683930620E+06, 0.101778794125947126E+06, 0.101792465254962983E+06, 0.101805759257347163E+06, 0.101817578749370528E+06, - 0.101828002210067600E+06, 0.101837310759124710E+06, 0.101845770211075462E+06, 0.101853420566787143E+06, 0.101860181736826940E+06, - 0.101864213062694500E+06, 0.101866574115216965E+06, 0.101867875008511299E+06, 0.101868524705411764E+06, 0.101868825959176160E+06, - 0.101868919433276926E+06, 0.101869678539425964E+06, 0.101870695483190138E+06, 0.101871330785532584E+06, 0.101870979213963699E+06, - 0.101869675931957303E+06, 0.101867574002842535E+06, 0.101865625644742016E+06, 0.101864444239763863E+06, 0.101864129871809724E+06, - 0.101864253411905665E+06, 0.101863863423935647E+06, 0.101861147095331355E+06, 0.101853046503827805E+06, 0.101842469691830149E+06, - 0.101829793173113096E+06, 0.101815148158582204E+06, 0.101801721489973846E+06, 0.101784969966993638E+06, 0.101762516553084497E+06, - 0.101733198141890345E+06, 0.101692387931239413E+06, 0.101641579160683832E+06, 0.101581604629232388E+06, 0.101513447361368249E+06, - 0.101440920474624741E+06, 0.101370696075984946E+06, 0.101305428265875380E+06, 0.101254160309156374E+06, 0.101207383873920160E+06, - 0.101161789898628529E+06, 0.101111489873579616E+06, 0.101058073620173833E+06, 0.100998431410120465E+06, 0.100925178881860134E+06, - 0.100851277940204382E+06, 0.100782887728638991E+06, 0.100724637342850445E+06, 0.100681654247053943E+06, 0.100660743763258797E+06, - 0.100662241191619672E+06, 0.100684600997945701E+06, 0.100726431789378737E+06, 0.100783621753223240E+06, 0.100850165592330639E+06, - 0.100919393459606828E+06, 0.100984663126731160E+06, 0.101035581217426865E+06, 0.101073289555574971E+06, 0.101097883508170984E+06, - 0.101109275635634360E+06, 0.101115535689499287E+06, 0.101120721213043289E+06, 0.101127445332507938E+06, 0.101138555650677066E+06, - 0.101162386128591490E+06, 0.101193764958060041E+06, 0.101229324100487633E+06, 0.101272586038755646E+06, 0.101314017050708091E+06, - 0.101345307647537833E+06, 0.101350681405921583E+06, 0.101336274552223433E+06, 0.101312002659208913E+06, 0.101282108941999220E+06, - 0.101247511268828879E+06, 0.101208775326433519E+06, 0.101166118942493005E+06, 0.101124324087716755E+06, 0.101077097855417393E+06, - 0.101023493736806588E+06, 0.100966370678116829E+06, 0.100910649732596605E+06, 0.100860956183662900E+06, 0.100818859583747035E+06, - 0.100784487610509677E+06, 0.100755633857502806E+06, 0.100730268695456398E+06, 0.100710865638861083E+06, 0.100697679049610029E+06, - 0.100690061794109570E+06, 0.100696089852752222E+06, 0.100696921102593260E+06, 0.100692632540626320E+06, 0.100681762801710865E+06, - 0.100663264802660036E+06, 0.100633791904004815E+06, 0.100597430688150896E+06, 0.100559133196241281E+06, 0.100524051576254133E+06, - 0.100494743325319461E+06, 0.100472843717532320E+06, 0.100453469270866597E+06, 0.100441938855850953E+06, 0.100444602587366870E+06, - 0.100453700278505523E+06, 0.100467703647186674E+06, 0.100484865751373640E+06, 0.100504556800278908E+06, 0.100526747147881411E+06, - 0.100548342492759344E+06, 0.100570928110482331E+06, 0.100594499129673175E+06, 0.100618314768352022E+06, 0.100641358389098648E+06, - 0.100661048545089099E+06, 0.100674922441404182E+06, 0.101277440454925483E+06, 0.101292275045881630E+06, 0.101308217918252703E+06, - 0.101324032641650105E+06, 0.101340083417949048E+06, 0.101356599817204507E+06, 0.101373389242319026E+06, 0.101391680572806275E+06, - 0.101409655246696246E+06, 0.101426966070523806E+06, 0.101443353143514600E+06, 0.101458277199001546E+06, 0.101471528522387307E+06, - 0.101483748681189623E+06, 0.101495083125874895E+06, 0.101505752090554262E+06, 0.101516050089151657E+06, 0.101526815975076141E+06, - 0.101538795327266271E+06, 0.101552338028206417E+06, 0.101567404995926277E+06, 0.101583932457588046E+06, 0.101601812845274559E+06, - 0.101620841504076889E+06, 0.101640749378202716E+06, 0.101659290500403222E+06, 0.101676771795349603E+06, 0.101693884723980591E+06, - 0.101708998663612001E+06, 0.101722276078936207E+06, 0.101733606252533034E+06, 0.101742808520292456E+06, 0.101749958233873534E+06, - 0.101756733187784732E+06, 0.101761976313215302E+06, 0.101765600227458519E+06, 0.101770624962746049E+06, 0.101775587804667244E+06, - 0.101780223730697457E+06, 0.101784845963681015E+06, 0.101792019560120360E+06, 0.101800861910829000E+06, 0.101810238167576026E+06, - 0.101821334626365482E+06, 0.101835649384848730E+06, 0.101850599319270405E+06, 0.101865571025550424E+06, 0.101879726510542314E+06, - 0.101892673462390783E+06, 0.101903975174055988E+06, 0.101913651691837455E+06, 0.101922403262289721E+06, 0.101930066269132934E+06, - 0.101934959838625931E+06, 0.101938013574382479E+06, 0.101939867945920269E+06, 0.101940768404829549E+06, 0.101940976512875422E+06, - 0.101940974808985324E+06, 0.101941915218950715E+06, 0.101942796779357042E+06, 0.101943325071244180E+06, 0.101943321289824438E+06, - 0.101942520685581403E+06, 0.101940795734215877E+06, 0.101938328485986989E+06, 0.101936102913573559E+06, 0.101934189161022412E+06, - 0.101933270983365946E+06, 0.101932726854111810E+06, 0.101931071080041162E+06, 0.101927390375963005E+06, 0.101920782487591568E+06, - 0.101909599976852041E+06, 0.101896034018928112E+06, 0.101880121030327078E+06, 0.101861777722108454E+06, 0.101843441866567693E+06, - 0.101821175828396939E+06, 0.101793162871491804E+06, 0.101756243381197477E+06, 0.101707526053893132E+06, 0.101651390637597418E+06, - 0.101591096250860501E+06, 0.101525066978488496E+06, 0.101457842460151805E+06, 0.101392749867658815E+06, 0.101338205739929384E+06, - 0.101290789521037383E+06, 0.101243732978547458E+06, 0.101191560328100386E+06, 0.101135333560209707E+06, 0.101074991868799916E+06, - 0.101002789603246347E+06, 0.100928035016280875E+06, 0.100857779212484500E+06, 0.100794984785666602E+06, 0.100746221294778152E+06, - 0.100717266126841918E+06, 0.100710869212579069E+06, 0.100726313373954297E+06, 0.100765862955971417E+06, 0.100824009621681325E+06, - 0.100896074483335498E+06, 0.100975156087370415E+06, 0.101050862045185830E+06, 0.101108616996395343E+06, 0.101151397540630162E+06, - 0.101177118649863274E+06, 0.101187234876946401E+06, 0.101192189574432836E+06, 0.101198920872520132E+06, 0.101209271572763842E+06, - 0.101225853188380381E+06, 0.101255763867716960E+06, 0.101292205782835576E+06, 0.101333769433737034E+06, 0.101380487686360808E+06, - 0.101421196585383368E+06, 0.101445943578677994E+06, 0.101442593076884281E+06, 0.101422753739062216E+06, 0.101390520324852318E+06, - 0.101350761888702051E+06, 0.101308120360709363E+06, 0.101265074031475204E+06, 0.101223556150358476E+06, 0.101181059083197164E+06, - 0.101131282154724337E+06, 0.101073985674786556E+06, 0.101009316519365500E+06, 0.100945620806578852E+06, 0.100887564966803198E+06, - 0.100836870701820939E+06, 0.100791306568270127E+06, 0.100748587002241606E+06, 0.100714275195360678E+06, 0.100691096015225994E+06, - 0.100677036214206237E+06, 0.100679656532840978E+06, 0.100689403954963505E+06, 0.100699806241966638E+06, 0.100699758014009334E+06, - 0.100690385161567290E+06, 0.100668712287826143E+06, 0.100636906386880102E+06, 0.100599766534639755E+06, 0.100560426804608782E+06, - 0.100523011227441762E+06, 0.100490487333571364E+06, 0.100458484377625064E+06, 0.100433836484664062E+06, 0.100418321599970062E+06, - 0.100412076649917391E+06, 0.100419080629848453E+06, 0.100432241000389156E+06, 0.100450792482229837E+06, 0.100472305642769512E+06, - 0.100493869619492121E+06, 0.100514430080734746E+06, 0.100535036793476407E+06, 0.100556629184451856E+06, 0.100578314394928922E+06, - 0.100596991295179905E+06, 0.100611500340730694E+06, 0.100623274306907668E+06, 0.101280196625301396E+06, 0.101297364868656936E+06, - 0.101315860426329833E+06, 0.101335437548964052E+06, 0.101354738212366676E+06, 0.101373945822871654E+06, 0.101394704590563779E+06, - 0.101415369573864707E+06, 0.101435547066077095E+06, 0.101454900560777067E+06, 0.101473156717428967E+06, 0.101490111858949429E+06, - 0.101505426648419336E+06, 0.101518896733282789E+06, 0.101531260767964472E+06, 0.101542531309453814E+06, 0.101553164954199878E+06, - 0.101564411925864319E+06, 0.101576767311889984E+06, 0.101590613786174377E+06, 0.101606186426911474E+06, 0.101622949542643095E+06, - 0.101640870734518088E+06, 0.101659778611533140E+06, 0.101677671599300767E+06, 0.101695145189232746E+06, 0.101713022490742442E+06, - 0.101730968458130665E+06, 0.101748633328473559E+06, 0.101764332593418454E+06, 0.101777415582760368E+06, 0.101788327636173344E+06, - 0.101798745459491343E+06, 0.101807854686651277E+06, 0.101815215507054876E+06, 0.101821043040616947E+06, 0.101825884968623417E+06, - 0.101832189148969264E+06, 0.101839168448648401E+06, 0.101848045440598347E+06, 0.101858730804693652E+06, 0.101869959329435806E+06, - 0.101881533268110448E+06, 0.101893454722194554E+06, 0.101906437265534973E+06, 0.101922905509709031E+06, 0.101939197745689977E+06, - 0.101954795923734462E+06, 0.101969009671704334E+06, 0.101981310726737574E+06, 0.101991415766123711E+06, 0.101999594743156573E+06, - 0.102005976491342561E+06, 0.102010334316063047E+06, 0.102013157295944911E+06, 0.102014722383416287E+06, 0.102015313093490025E+06, - 0.102015201185307524E+06, 0.102016512237083880E+06, 0.102017510782104568E+06, 0.102018055903560264E+06, 0.102018084579591843E+06, - 0.102017466339170613E+06, 0.102015842014936527E+06, 0.102013009808558825E+06, 0.102010188377710918E+06, 0.102007504920719613E+06, - 0.102004842449303280E+06, 0.102002010784629019E+06, 0.101999472815438930E+06, 0.101995912864510945E+06, 0.101991527724094442E+06, - 0.101985699759707655E+06, 0.101975812995855114E+06, 0.101961537246313150E+06, 0.101943695019863866E+06, 0.101923033375715851E+06, - 0.101901362121280530E+06, 0.101879075837123033E+06, 0.101852284874085046E+06, 0.101819539147717020E+06, 0.101776999589703846E+06, - 0.101726785900868257E+06, 0.101671557646898407E+06, 0.101612042588822980E+06, 0.101548622762663115E+06, 0.101485284216076703E+06, - 0.101425147441038411E+06, 0.101373420817102917E+06, 0.101321191476503751E+06, 0.101266538752380700E+06, 0.101208938335707280E+06, - 0.101148533319442722E+06, 0.101080582757091557E+06, 0.101007172321080754E+06, 0.100937106866050381E+06, 0.100872650853732252E+06, - 0.100818490092161403E+06, 0.100780581038449120E+06, 0.100763989069985822E+06, 0.100769172528104478E+06, 0.100801781036641652E+06, - 0.100856282722816642E+06, 0.100929221528193739E+06, 0.101013884730459817E+06, 0.101097563707576744E+06, 0.101162534274172547E+06, - 0.101213486478638646E+06, 0.101244516559525029E+06, 0.101257648408437890E+06, 0.101263733502884890E+06, 0.101275510052246449E+06, - 0.101290762661853529E+06, 0.101314197491016195E+06, 0.101347943558257903E+06, 0.101386651316440679E+06, 0.101430443429601510E+06, - 0.101475669896804160E+06, 0.101514950055520574E+06, 0.101531515938051540E+06, 0.101524788957272292E+06, 0.101501664340208648E+06, - 0.101465580088908755E+06, 0.101421732802947983E+06, 0.101374184582676520E+06, 0.101328046898908578E+06, 0.101289807901878230E+06, - 0.101246491413997268E+06, 0.101194778317482283E+06, 0.101131646224091921E+06, 0.101060205833383836E+06, 0.100988174374432070E+06, - 0.100922370979696687E+06, 0.100863854824209222E+06, 0.100809964699915654E+06, 0.100761271524313197E+06, 0.100719104259046479E+06, - 0.100686430395430245E+06, 0.100678847862221184E+06, 0.100683138663107515E+06, 0.100693073794055832E+06, 0.100704133264039236E+06, - 0.100711587564049987E+06, 0.100702838554374641E+06, 0.100679156446423745E+06, 0.100646910483054933E+06, 0.100608627281804467E+06, - 0.100567412671928309E+06, 0.100526528285293534E+06, 0.100483943399388023E+06, 0.100448443665773972E+06, 0.100421899539395425E+06, - 0.100404924203073868E+06, 0.100397063255380912E+06, 0.100397195586259491E+06, 0.100412985650041403E+06, 0.100432834475288488E+06, - 0.100453366207182436E+06, 0.100473356439391355E+06, 0.100491742373035304E+06, 0.100507905429383289E+06, 0.100525814076571885E+06, - 0.100542096974396103E+06, 0.100555812166254138E+06, 0.100567395231908740E+06, 0.100576579149565121E+06, 0.101279908089260382E+06, - 0.101299372851355220E+06, 0.101320345227797603E+06, 0.101342568251312987E+06, 0.101366203167707048E+06, 0.101390159455080997E+06, - 0.101413541104309363E+06, 0.101436670068180945E+06, 0.101459134145086064E+06, 0.101480579621756508E+06, 0.101500717501762701E+06, - 0.101519330301993643E+06, 0.101536279443531355E+06, 0.101551434684382868E+06, 0.101564255195383463E+06, 0.101575422887434994E+06, - 0.101586445548099669E+06, 0.101597902131166629E+06, 0.101610316943178666E+06, 0.101624105975331244E+06, 0.101639540620591506E+06, - 0.101656731770743747E+06, 0.101674690803331439E+06, 0.101691335236531100E+06, 0.101707821449698851E+06, 0.101725245164068649E+06, - 0.101743396815362881E+06, 0.101762005533747782E+06, 0.101780794703432257E+06, 0.101799566956391791E+06, 0.101816729089967106E+06, - 0.101830810115947446E+06, 0.101843847767199652E+06, 0.101855309960108818E+06, 0.101865083082604426E+06, 0.101873349177960990E+06, - 0.101880647099664595E+06, 0.101887932618480903E+06, 0.101897799286328358E+06, 0.101910318475203370E+06, 0.101923741945953618E+06, - 0.101937617512615703E+06, 0.101951634884124011E+06, 0.101965709346062926E+06, 0.101980052214833602E+06, 0.101995075682068244E+06, - 0.102012705906177565E+06, 0.102029916826673259E+06, 0.102045578980748891E+06, 0.102059048316380504E+06, 0.102069947174644665E+06, - 0.102077684357740349E+06, 0.102082147312762972E+06, 0.102086500261915091E+06, 0.102089248935513198E+06, 0.102090698933738371E+06, - 0.102091178364924752E+06, 0.102092701245381337E+06, 0.102093815457381104E+06, 0.102094368575754212E+06, 0.102094331459262947E+06, - 0.102093649378548696E+06, 0.102091495160413397E+06, 0.102088077118329078E+06, 0.102085266715555787E+06, 0.102082068081696532E+06, - 0.102078934857918081E+06, 0.102075562114887900E+06, 0.102070631820974115E+06, 0.102064438122544176E+06, 0.102059414174384161E+06, - 0.102053827822841413E+06, 0.102047097203453392E+06, 0.102038205276517619E+06, 0.102023970080276820E+06, 0.102005255572377879E+06, - 0.101983545280989390E+06, 0.101959239559772468E+06, 0.101934934813177606E+06, 0.101909416211695381E+06, 0.101879530216405619E+06, - 0.101843729384204227E+06, 0.101798771374156902E+06, 0.101749131431232046E+06, 0.101696435747962270E+06, 0.101638597439857098E+06, - 0.101576958615739393E+06, 0.101514239708325505E+06, 0.101456190833159548E+06, 0.101399554349585407E+06, 0.101340424142701784E+06, - 0.101280446676456311E+06, 0.101219442303719290E+06, 0.101155802903883246E+06, 0.101085010925495619E+06, 0.101016127520053677E+06, - 0.100949559692596478E+06, 0.100889898302085116E+06, 0.100844209040313392E+06, 0.100816129681629769E+06, 0.100810501379105452E+06, - 0.100832591111220638E+06, 0.100879523722449056E+06, 0.100948063089510324E+06, 0.101031460853947981E+06, 0.101115973986060417E+06, - 0.101184231818201646E+06, 0.101240245990651732E+06, 0.101276004337181133E+06, 0.101297693264287940E+06, 0.101316108838536718E+06, - 0.101339338207326771E+06, 0.101364838726589573E+06, 0.101398212697034352E+06, 0.101435020262566584E+06, 0.101474120214935858E+06, - 0.101515374742090018E+06, 0.101554913896900893E+06, 0.101585525309637247E+06, 0.101596313029333352E+06, 0.101591763310596391E+06, - 0.101572063905601564E+06, 0.101533915795807872E+06, 0.101488864498615381E+06, 0.101440950048410057E+06, 0.101401964815710235E+06, - 0.101362939393266570E+06, 0.101319118725317487E+06, 0.101264253224874032E+06, 0.101194604583161839E+06, 0.101119529697804493E+06, - 0.101043148821796305E+06, 0.100969817218776385E+06, 0.100904222807714512E+06, 0.100845424566366739E+06, 0.100792297539129795E+06, - 0.100746429506127941E+06, 0.100716119483396033E+06, 0.100699086889567552E+06, 0.100699855109205411E+06, 0.100707310375888119E+06, - 0.100716570575528633E+06, 0.100720007898216936E+06, 0.100714797932772417E+06, 0.100695727134459230E+06, 0.100662985850684985E+06, - 0.100623495462979961E+06, 0.100579571082265902E+06, 0.100528287659914175E+06, 0.100483047690553038E+06, 0.100446858129451386E+06, - 0.100420432087088702E+06, 0.100404117469529898E+06, 0.100397105480157465E+06, 0.100403234638665162E+06, 0.100415020179178769E+06, - 0.100433067114222082E+06, 0.100451452530888302E+06, 0.100468854497717490E+06, 0.100484113018387754E+06, 0.100496513635322510E+06, - 0.100504396642556661E+06, 0.100514796346128511E+06, 0.100524493045942218E+06, 0.100532404153307187E+06, 0.100538289704171490E+06, - 0.101276336252575435E+06, 0.101298080414544456E+06, 0.101321469561098274E+06, 0.101347127563797287E+06, 0.101375017595738012E+06, - 0.101402741686854177E+06, 0.101429372639699533E+06, 0.101455094154428705E+06, 0.101479936738935212E+06, 0.101503527247806051E+06, - 0.101525558424067625E+06, 0.101545795970329476E+06, 0.101564086253569083E+06, 0.101579860400036196E+06, 0.101592656313919491E+06, - 0.101604222243081458E+06, 0.101615370617936293E+06, 0.101626717204329048E+06, 0.101638824013794816E+06, 0.101652144675515985E+06, - 0.101666986413953739E+06, 0.101683491567268982E+06, 0.101699730410034434E+06, 0.101715308981035720E+06, 0.101731361440654102E+06, - 0.101748589449732390E+06, 0.101766824698764540E+06, 0.101785841910313233E+06, 0.101805411629659066E+06, 0.101825381837012450E+06, - 0.101846839764007193E+06, 0.101867081140515147E+06, 0.101882747001865355E+06, 0.101896903928888263E+06, 0.101909362288120537E+06, - 0.101920245934517079E+06, 0.101930058238641242E+06, 0.101941637442764200E+06, 0.101954785426383867E+06, 0.101968215450878924E+06, - 0.101984710778129607E+06, 0.102001549965592465E+06, 0.102018275841846422E+06, 0.102034683222590960E+06, 0.102052401989689286E+06, - 0.102069645673240069E+06, 0.102086007650836211E+06, 0.102103768116502732E+06, 0.102121127630333416E+06, 0.102135973777942898E+06, - 0.102147987937177197E+06, 0.102156601874315427E+06, 0.102161672760610920E+06, 0.102163612354316181E+06, 0.102165768392921964E+06, - 0.102167214431077227E+06, 0.102169260247518920E+06, 0.102170746287005837E+06, 0.102171480626503515E+06, 0.102171269145651808E+06, - 0.102170214520413967E+06, 0.102167256562754847E+06, 0.102162479386098232E+06, 0.102158371150627951E+06, 0.102155244448894475E+06, - 0.102152875264177637E+06, 0.102149492287714515E+06, 0.102145495391175835E+06, 0.102139392366010521E+06, 0.102131234162350753E+06, - 0.102121845495369198E+06, 0.102114444604303775E+06, 0.102106462190456019E+06, 0.102096364075651625E+06, 0.102082958297694466E+06, - 0.102064065966768365E+06, 0.102041420899050965E+06, 0.102016297892142000E+06, 0.101989261194259234E+06, 0.101963193901333740E+06, - 0.101934697827006079E+06, 0.101902018630394974E+06, 0.101863893013675159E+06, 0.101820477410193009E+06, 0.101774528513823985E+06, - 0.101724002882111308E+06, 0.101665763047983230E+06, 0.101603648801794363E+06, 0.101540096977050402E+06, 0.101478947206942044E+06, - 0.101415470097827929E+06, 0.101351609294201058E+06, 0.101289469642166499E+06, 0.101226537327552069E+06, 0.101158605139549531E+06, - 0.101091671283985226E+06, 0.101026501778518956E+06, 0.100963906622713315E+06, 0.100912235109733156E+06, 0.100875156448926034E+06, - 0.100858092199168052E+06, 0.100869196724643829E+06, 0.100906258192389359E+06, 0.100966643545000639E+06, 0.101044871026198045E+06, - 0.101126128294873750E+06, 0.101195519846174895E+06, 0.101255659962385485E+06, 0.101297057174446716E+06, 0.101328131549875659E+06, - 0.101358621176643224E+06, 0.101392239138290606E+06, 0.101427359701943147E+06, 0.101468500213009858E+06, 0.101510703720686288E+06, - 0.101550908563824967E+06, 0.101587166287520682E+06, 0.101619760493459311E+06, 0.101640375989610111E+06, 0.101647164822681414E+06, - 0.101640476796716728E+06, 0.101620225665346763E+06, 0.101589549071868416E+06, 0.101551044697311809E+06, 0.101511563682290900E+06, - 0.101475939268223781E+06, 0.101437438003792078E+06, 0.101392805212183681E+06, 0.101332702985176016E+06, 0.101262976832194923E+06, - 0.101186444126810515E+06, 0.101108333464266703E+06, 0.101034512676034472E+06, 0.100963849818957518E+06, 0.100898562106253885E+06, - 0.100842056459041982E+06, 0.100798749608423153E+06, 0.100767148703609448E+06, 0.100745027122654850E+06, 0.100731425417328996E+06, - 0.100731821012642424E+06, 0.100734592849697350E+06, 0.100733986756515151E+06, 0.100727026999971698E+06, 0.100711618349869153E+06, - 0.100683470368124676E+06, 0.100640250766840603E+06, 0.100586314437398818E+06, 0.100534961959011474E+06, 0.100490642055552060E+06, - 0.100456264076438296E+06, 0.100432289810027520E+06, 0.100419632142970615E+06, 0.100423645734029778E+06, 0.100432024957258123E+06, - 0.100442709528904365E+06, 0.100454138069834065E+06, 0.100469282754753091E+06, 0.100483179206656147E+06, 0.100494317659240289E+06, - 0.100501048475271105E+06, 0.100503737147053136E+06, 0.100502939624753810E+06, 0.100506864511892840E+06, 0.100510205922212830E+06, - 0.100511985008099888E+06, 0.101269395817640194E+06, 0.101293433370600033E+06, 0.101320709064215349E+06, 0.101350720216622271E+06, - 0.101381363474586935E+06, 0.101411901774678990E+06, 0.101441702408660596E+06, 0.101470286272251309E+06, 0.101497612121933402E+06, - 0.101523409436511720E+06, 0.101547349710601979E+06, 0.101569178391354450E+06, 0.101588382552830284E+06, 0.101604424454005639E+06, - 0.101617806496970152E+06, 0.101629009202247544E+06, 0.101639790736640862E+06, 0.101650653799515901E+06, 0.101662034467563892E+06, - 0.101674429962589624E+06, 0.101688184881771667E+06, 0.101701776789907686E+06, 0.101715632368359467E+06, 0.101731005396025357E+06, - 0.101747619021182472E+06, 0.101764475149160600E+06, 0.101782565451806455E+06, 0.101801692572504733E+06, 0.101821649291101741E+06, - 0.101844372908615100E+06, 0.101868013490669473E+06, 0.101890926735153276E+06, 0.101912734436730447E+06, 0.101930521333358061E+06, - 0.101945955049482625E+06, 0.101959618341155976E+06, 0.101973842306752718E+06, 0.101990092943988522E+06, 0.102006492234429417E+06, - 0.102022981199823858E+06, 0.102039845835770568E+06, 0.102059553276874620E+06, 0.102079331788742449E+06, 0.102099902964415654E+06, - 0.102120532959564909E+06, 0.102140448801236460E+06, 0.102159255793075747E+06, 0.102176879448503649E+06, 0.102194365868866342E+06, - 0.102211106097444455E+06, 0.102224803244153038E+06, 0.102234823789642047E+06, 0.102240968923527806E+06, 0.102243570541519104E+06, - 0.102243519688579676E+06, 0.102244750868611838E+06, 0.102246759472131700E+06, 0.102247988131721504E+06, 0.102248209161490959E+06, - 0.102247170632681489E+06, 0.102243247319650705E+06, 0.102236753031268512E+06, 0.102230982493940493E+06, 0.102226187707310237E+06, - 0.102222666096639834E+06, 0.102220567141386651E+06, 0.102219855956292071E+06, 0.102215511479397683E+06, 0.102208434908867741E+06, - 0.102198721169081880E+06, 0.102186789184960857E+06, 0.102174609249495770E+06, 0.102164550205667154E+06, 0.102152502370517235E+06, - 0.102137501608386214E+06, 0.102118919702411848E+06, 0.102095889999392573E+06, 0.102070100404917495E+06, 0.102041997958624415E+06, - 0.102012090612610089E+06, 0.101983710969351829E+06, 0.101953137519082840E+06, 0.101920734120792738E+06, 0.101883717982373681E+06, - 0.101842973734119500E+06, 0.101798428245916861E+06, 0.101747102066966778E+06, 0.101687602338869881E+06, 0.101624664318831565E+06, - 0.101559707946739305E+06, 0.101491658640950249E+06, 0.101420567276357397E+06, 0.101354355882096454E+06, 0.101289435543346961E+06, - 0.101224098024003702E+06, 0.101159952737485408E+06, 0.101097956680038245E+06, 0.101035227047009626E+06, 0.100981546520210177E+06, - 0.100939244847484995E+06, 0.100914786575781181E+06, 0.100915867157493747E+06, 0.100942559164277671E+06, 0.100993021366280096E+06, - 0.101062207385378511E+06, 0.101136754321606641E+06, 0.101205153055716102E+06, 0.101267549676815237E+06, 0.101315566331653798E+06, - 0.101356986952566978E+06, 0.101400109049254897E+06, 0.101444047042664242E+06, 0.101488513133860251E+06, 0.101534593023339607E+06, - 0.101578862893253303E+06, 0.101617989104461085E+06, 0.101651469070145307E+06, 0.101676676962902973E+06, 0.101688426206951568E+06, - 0.101690699198194692E+06, 0.101681585082600272E+06, 0.101660802224054729E+06, 0.101632322368388574E+06, 0.101602214382015110E+06, - 0.101577248018812563E+06, 0.101546577483431887E+06, 0.101509347660459607E+06, 0.101460277851145336E+06, 0.101400695177468675E+06, - 0.101333061941295062E+06, 0.101259893373003069E+06, 0.101185498750814251E+06, 0.101111060613673137E+06, 0.101038806163680754E+06, - 0.100970853556921851E+06, 0.100913205537255504E+06, 0.100868081185120318E+06, 0.100831661076531760E+06, 0.100803490881640522E+06, - 0.100782858759036229E+06, 0.100767010800255986E+06, 0.100760517927946479E+06, 0.100755313595541767E+06, 0.100745011420950410E+06, - 0.100727337942231010E+06, 0.100696437123156371E+06, 0.100650083823098379E+06, 0.100597278983266224E+06, 0.100548413676936747E+06, - 0.100507765427222563E+06, 0.100477948430878227E+06, 0.100463614942480534E+06, 0.100466404104801695E+06, 0.100473340681007379E+06, - 0.100482742216284692E+06, 0.100492637659898319E+06, 0.100501306119762710E+06, 0.100508155310289090E+06, 0.100517896956254641E+06, - 0.100523967020314361E+06, 0.100525551437862276E+06, 0.100522692726944748E+06, 0.100516008939190593E+06, 0.100506617021169775E+06, - 0.100504130401290677E+06, 0.100500855757604397E+06, 0.101259195015618316E+06, 0.101287394131248599E+06, 0.101318624387393094E+06, - 0.101351388311065471E+06, 0.101384848445848693E+06, 0.101418230695586331E+06, 0.101450864090695264E+06, 0.101482215379592511E+06, - 0.101512000328888942E+06, 0.101540081556911420E+06, 0.101565958007626774E+06, 0.101589239793549044E+06, 0.101609354590231524E+06, - 0.101626245425942194E+06, 0.101640116415258730E+06, 0.101651384047841973E+06, 0.101660624537901342E+06, 0.101669864682349900E+06, - 0.101680046518619303E+06, 0.101691016789836227E+06, 0.101701600972581538E+06, 0.101712344116073305E+06, 0.101724596034016693E+06, - 0.101738626214170567E+06, 0.101754578760972465E+06, 0.101772464174383247E+06, 0.101790289256249525E+06, 0.101809225095436283E+06, - 0.101831409086778760E+06, 0.101855713865937665E+06, 0.101880304248738481E+06, 0.101904708267321548E+06, 0.101928659429272666E+06, - 0.101952215895369998E+06, 0.101973129343184191E+06, 0.101990492819853054E+06, 0.102009155453432861E+06, 0.102028626658851339E+06, - 0.102048465714061036E+06, 0.102068480817810836E+06, 0.102088846460710702E+06, 0.102110232566220016E+06, 0.102133295641766570E+06, - 0.102157356921516912E+06, 0.102181314870907911E+06, 0.102204374004590238E+06, 0.102226000444488978E+06, 0.102246017656184413E+06, - 0.102265607213167954E+06, 0.102282589184103534E+06, 0.102298432423255334E+06, 0.102310352702715958E+06, 0.102317999706446251E+06, - 0.102321598850661234E+06, 0.102323515138576258E+06, 0.102323197704490987E+06, 0.102322212878332677E+06, 0.102323063816814887E+06, - 0.102322646091264614E+06, 0.102319439183542258E+06, 0.102312970911412354E+06, 0.102304997794601848E+06, 0.102296841478971372E+06, - 0.102291418130089238E+06, 0.102288360395478667E+06, 0.102288552237265947E+06, 0.102287701703575425E+06, 0.102284538846590702E+06, - 0.102276897495121520E+06, 0.102265740813761135E+06, 0.102252134571836228E+06, 0.102237131022390793E+06, 0.102221272996986561E+06, - 0.102206507054624482E+06, 0.102189132554294789E+06, 0.102168602609417649E+06, 0.102145544389345145E+06, 0.102118566149667124E+06, - 0.102089083952633140E+06, 0.102057798140960163E+06, 0.102026969995698295E+06, 0.101997794023706476E+06, 0.101966743922712252E+06, - 0.101933057167765714E+06, 0.101896592945729586E+06, 0.101857371791885336E+06, 0.101815607416803119E+06, 0.101763023383776948E+06, - 0.101702407436462090E+06, 0.101635116047538351E+06, 0.101562945833011370E+06, 0.101485822606547168E+06, 0.101411005039628857E+06, - 0.101339835091662317E+06, 0.101272689532459044E+06, 0.101210368076346276E+06, 0.101154473004817381E+06, 0.101097829928473817E+06, - 0.101048482059940754E+06, 0.101007048910648111E+06, 0.100979473833055905E+06, 0.100973447727585182E+06, 0.100990584221201716E+06, - 0.101029960997994902E+06, 0.101087951257948895E+06, 0.101153695183268181E+06, 0.101219018003879406E+06, 0.101282293838312820E+06, - 0.101338465984178547E+06, 0.101391368230947162E+06, 0.101446772222011277E+06, 0.101500085973176334E+06, 0.101550853250171887E+06, - 0.101598573456663202E+06, 0.101641988898670184E+06, 0.101679214186169236E+06, 0.101710098564568776E+06, 0.101732780885386266E+06, - 0.101743179226637279E+06, 0.101740055966295447E+06, 0.101722994425650759E+06, 0.101700469255730888E+06, 0.101674123165238838E+06, - 0.101653160060864204E+06, 0.101631596453806415E+06, 0.101607075787893336E+06, 0.101574486424828559E+06, 0.101526976419999381E+06, - 0.101469612332252946E+06, 0.101404225279481514E+06, 0.101336714868594907E+06, 0.101267916935403031E+06, 0.101195492908750399E+06, - 0.101123687793417601E+06, 0.101058751346724224E+06, 0.101000171416406578E+06, 0.100947653236097554E+06, 0.100904324965127365E+06, - 0.100869022485961759E+06, 0.100838631774334179E+06, 0.100814997040174785E+06, 0.100796371893838630E+06, 0.100782994420463059E+06, - 0.100767931078048772E+06, 0.100738709347425858E+06, 0.100699551218149616E+06, 0.100657848886243373E+06, 0.100613930496747955E+06, - 0.100570328091677089E+06, 0.100536417956577148E+06, 0.100522106220241680E+06, 0.100523981788664518E+06, 0.100534576173254580E+06, - 0.100544607428678122E+06, 0.100555100707554739E+06, 0.100564477570051735E+06, 0.100571044680449282E+06, 0.100573984997784108E+06, - 0.100574098036419746E+06, 0.100574969682196417E+06, 0.100570985693230745E+06, 0.100562235725965831E+06, 0.100549403090203457E+06, - 0.100533663303323410E+06, 0.100514985690890928E+06, 0.100501506969102309E+06, 0.101247028543607215E+06, 0.101279000272323727E+06, - 0.101313044900483452E+06, 0.101348706117229129E+06, 0.101385099864543183E+06, 0.101421406335684835E+06, 0.101456908730823867E+06, - 0.101491027169870344E+06, 0.101523346965489472E+06, 0.101553641131603319E+06, 0.101581591041353255E+06, 0.101606456037034135E+06, - 0.101627802489960915E+06, 0.101645553091339185E+06, 0.101659871959589625E+06, 0.101671125963614424E+06, 0.101679833672676948E+06, - 0.101686600287344059E+06, 0.101693249899754504E+06, 0.101700828771449567E+06, 0.101708214676399468E+06, 0.101716786788727914E+06, - 0.101726994188702083E+06, 0.101739189978545895E+06, 0.101753597010140846E+06, 0.101770294478413707E+06, 0.101789229323241438E+06, - 0.101810439881563492E+06, 0.101833551125124432E+06, 0.101857745342370516E+06, 0.101882520275840274E+06, 0.101907489508364233E+06, - 0.101932461599410264E+06, 0.101957552146214075E+06, 0.101983305456973438E+06, 0.102008579834297911E+06, 0.102030494060992147E+06, - 0.102053548115608966E+06, 0.102077104427164624E+06, 0.102100783210934751E+06, 0.102124584361851768E+06, 0.102151618960978216E+06, - 0.102178487299050277E+06, 0.102203837934088209E+06, 0.102231789811787370E+06, 0.102258565924026567E+06, 0.102283435612743153E+06, - 0.102308168911264584E+06, 0.102331519967324959E+06, 0.102351306090243161E+06, 0.102367344163488393E+06, 0.102380956720203612E+06, - 0.102390540926741916E+06, 0.102396561280422888E+06, 0.102399644414793191E+06, 0.102399967479044542E+06, 0.102398097050173761E+06, - 0.102394877934586664E+06, 0.102392579382061362E+06, 0.102387437885771593E+06, 0.102380474134807795E+06, 0.102372089234619867E+06, - 0.102363087167973557E+06, 0.102355720695108947E+06, 0.102355336216227777E+06, 0.102355244528026058E+06, 0.102353863384518510E+06, - 0.102349945815737563E+06, 0.102342442703922468E+06, 0.102329934370864139E+06, 0.102314612359457431E+06, 0.102297370131901000E+06, - 0.102278388120427626E+06, 0.102257491551240819E+06, 0.102236307907230104E+06, 0.102213097347429662E+06, 0.102187800432568954E+06, - 0.102160229919730293E+06, 0.102129097981842890E+06, 0.102096889363146300E+06, 0.102063827052134482E+06, 0.102031184486610946E+06, - 0.101999264622467439E+06, 0.101966221591490219E+06, 0.101931754343580265E+06, 0.101897700536754972E+06, 0.101861993529889558E+06, - 0.101819636716650479E+06, 0.101763615901241341E+06, 0.101697976370488861E+06, 0.101620393736143524E+06, 0.101535102872161384E+06, - 0.101449253069692393E+06, 0.101374420264238244E+06, 0.101306501858255855E+06, 0.101247778577939956E+06, 0.101198381473636808E+06, - 0.101152064836353820E+06, 0.101110344624142366E+06, 0.101075281561938828E+06, 0.101049407554255304E+06, 0.101040768998780331E+06, - 0.101052199471517510E+06, 0.101082392815890635E+06, 0.101129144157533199E+06, 0.101184092780294726E+06, 0.101243772906750455E+06, - 0.101307121999288836E+06, 0.101369991062098430E+06, 0.101433698297000723E+06, 0.101498903828178067E+06, 0.101560474018943947E+06, - 0.101615857050411636E+06, 0.101665138596523073E+06, 0.101705590047241931E+06, 0.101738943786932854E+06, 0.101767114003134644E+06, - 0.101789192730629773E+06, 0.101799147989736230E+06, 0.101794735430608300E+06, 0.101777146397531964E+06, 0.101750372193384130E+06, - 0.101723141667504169E+06, 0.101702833712477848E+06, 0.101682678205011733E+06, 0.101660302359832262E+06, 0.101630633216063026E+06, - 0.101590584748240784E+06, 0.101537939783765964E+06, 0.101477184750419154E+06, 0.101412613988421668E+06, 0.101346432956553763E+06, - 0.101280354991399392E+06, 0.101215950742003886E+06, 0.101152407700542390E+06, 0.101091630971862964E+06, 0.101034381306262483E+06, - 0.100980581565512359E+06, 0.100932607474756849E+06, 0.100894526231033058E+06, 0.100863524006721316E+06, 0.100837940986693153E+06, - 0.100815616712752075E+06, 0.100783831314269482E+06, 0.100747340055464098E+06, 0.100708359519305974E+06, 0.100669700349442544E+06, - 0.100634134123292621E+06, 0.100602055798299742E+06, 0.100591037034284673E+06, 0.100590664657868474E+06, 0.100599127748830913E+06, - 0.100614596189110918E+06, 0.100634150489947802E+06, 0.100646345748706677E+06, 0.100655865724535965E+06, 0.100661116257080008E+06, - 0.100661028163947834E+06, 0.100655523835145024E+06, 0.100646490601253885E+06, 0.100636711851892294E+06, 0.100621894936014534E+06, - 0.100602810704563395E+06, 0.100576368488764041E+06, 0.100548286166395032E+06, 0.100522977180969814E+06, 0.101228903510937074E+06, - 0.101265781795862422E+06, 0.101303509185958625E+06, 0.101342284425688282E+06, 0.101381796177970391E+06, 0.101421170386188518E+06, - 0.101459636817675681E+06, 0.101496562449942183E+06, 0.101531479594885182E+06, 0.101564960000747014E+06, 0.101594803080993937E+06, - 0.101621355790812595E+06, 0.101644027594565501E+06, 0.101662677874236993E+06, 0.101677441926593165E+06, 0.101688651352830973E+06, - 0.101696785059940390E+06, 0.101702406683447451E+06, 0.101704728868073435E+06, 0.101705248359237783E+06, 0.101710033061244059E+06, - 0.101715986265950589E+06, 0.101723653592966657E+06, 0.101733480291010681E+06, 0.101745772459652580E+06, 0.101760677660607515E+06, - 0.101780220410703594E+06, 0.101803075598452182E+06, 0.101826488604444239E+06, 0.101849820362239523E+06, 0.101873892351949500E+06, - 0.101898378960095564E+06, 0.101923130766489805E+06, 0.101948518897807691E+06, 0.101975696258303404E+06, 0.102004061929304342E+06, - 0.102033460145040677E+06, 0.102061651327409054E+06, 0.102089414327740989E+06, 0.102117077133701037E+06, 0.102147883501053424E+06, - 0.102180718015203005E+06, 0.102212493723892243E+06, 0.102242559046992334E+06, 0.102271049350391899E+06, 0.102300915058795246E+06, - 0.102331227250506359E+06, 0.102361003675242988E+06, 0.102387797529886448E+06, 0.102410738749007287E+06, 0.102429543001075872E+06, - 0.102444601309541205E+06, 0.102455934113666241E+06, 0.102463826248762096E+06, 0.102468461440316110E+06, 0.102469870975073049E+06, - 0.102468446450288320E+06, 0.102464798290121791E+06, 0.102458449322550092E+06, 0.102451735051873286E+06, 0.102444849067868476E+06, - 0.102436636367539046E+06, 0.102428988993985171E+06, 0.102425331914020266E+06, 0.102421620005855337E+06, 0.102419560924305013E+06, - 0.102417115927208128E+06, 0.102411283378863518E+06, 0.102401124644854805E+06, 0.102388294546935547E+06, 0.102372130138911380E+06, - 0.102352872703988251E+06, 0.102330900792506814E+06, 0.102305906692453034E+06, 0.102278836660343848E+06, 0.102251891886031619E+06, - 0.102223352000414103E+06, 0.102193067106830058E+06, 0.102161078903831076E+06, 0.102125912821954276E+06, 0.102089510678556544E+06, - 0.102052507421496150E+06, 0.102015228902546209E+06, 0.101978931284532373E+06, 0.101944546111379605E+06, 0.101912474602996255E+06, - 0.101881505541306557E+06, 0.101847220983536259E+06, 0.101796545763435774E+06, 0.101731194445780915E+06, 0.101655521374345393E+06, - 0.101570254785904996E+06, 0.101481522317187802E+06, 0.101401331116195521E+06, 0.101332141668882890E+06, 0.101273993470810659E+06, - 0.101228638656778901E+06, 0.101190604276845741E+06, 0.101158196197344718E+06, 0.101133936056759660E+06, 0.101117981664703751E+06, - 0.101116933850947476E+06, 0.101131399795691948E+06, 0.101160604644423380E+06, 0.101201518443580746E+06, 0.101248903707713456E+06, - 0.101300592974865489E+06, 0.101357214090897702E+06, 0.101418441744321666E+06, 0.101485557443350626E+06, 0.101555445746166064E+06, - 0.101621303501475879E+06, 0.101679228518906544E+06, 0.101728241686716501E+06, 0.101766854072509333E+06, 0.101798436487011495E+06, - 0.101826906634104991E+06, 0.101847291990324695E+06, 0.101856878275200172E+06, 0.101852227620230362E+06, 0.101834698267214306E+06, - 0.101809239675292964E+06, 0.101781969547875371E+06, 0.101755152512939356E+06, 0.101732931589822008E+06, 0.101712653074247995E+06, - 0.101684830999865546E+06, 0.101647239704296619E+06, 0.101599826041378212E+06, 0.101544653396053778E+06, 0.101483464700333992E+06, - 0.101420696082338764E+06, 0.101361355157000173E+06, 0.101303077019503457E+06, 0.101242949922489031E+06, 0.101180470229611776E+06, - 0.101117365765681796E+06, 0.101054059738264114E+06, 0.100995066688862426E+06, 0.100946512981860345E+06, 0.100908291761953325E+06, - 0.100873905402216697E+06, 0.100835045455127693E+06, 0.100798873170272855E+06, 0.100762695696108858E+06, 0.100726025871425081E+06, - 0.100692734909454986E+06, 0.100668902864702948E+06, 0.100663213502720391E+06, 0.100664621390201341E+06, 0.100671374502519597E+06, - 0.100685680453359950E+06, 0.100705798123986984E+06, 0.100728995575579524E+06, 0.100751658112675097E+06, 0.100762519462763623E+06, - 0.100767027529124854E+06, 0.100764553224004907E+06, 0.100755187738630775E+06, 0.100739605979863540E+06, 0.100720551089520799E+06, - 0.100698313533178705E+06, 0.100666865056198847E+06, 0.100634031483894869E+06, 0.100601785153826728E+06, 0.100571987820731039E+06, - 0.101206374045435979E+06, 0.101245886159229500E+06, 0.101288633787391896E+06, 0.101331822184275137E+06, 0.101374720391458119E+06, - 0.101417383823794662E+06, 0.101458981013573735E+06, 0.101498818874093005E+06, 0.101538685205643225E+06, 0.101575422468180957E+06, - 0.101607594064004836E+06, 0.101634787525358639E+06, 0.101658391829702683E+06, 0.101677992927276675E+06, 0.101693216382147584E+06, - 0.101704372381742840E+06, 0.101711917535928253E+06, 0.101714961207000641E+06, 0.101714465004361307E+06, 0.101712311040969114E+06, - 0.101709673671424040E+06, 0.101711218999391320E+06, 0.101715783535561670E+06, 0.101722657082666818E+06, 0.101732238893442816E+06, - 0.101747062236834958E+06, 0.101766365174287086E+06, 0.101787109475394507E+06, 0.101808925705709073E+06, 0.101831553485340701E+06, - 0.101854101136956699E+06, 0.101876977318564983E+06, 0.101900071328279475E+06, 0.101924414875452247E+06, 0.101951462468272264E+06, - 0.101980975232741199E+06, 0.102012836826491402E+06, 0.102047258491401968E+06, 0.102083474297558190E+06, 0.102117469380506620E+06, - 0.102154658530511195E+06, 0.102192659983700083E+06, 0.102229894335694480E+06, 0.102265384438205918E+06, 0.102298947455958070E+06, - 0.102332733340180333E+06, 0.102366161911789881E+06, 0.102400223366988168E+06, 0.102430989231899657E+06, 0.102457385343324306E+06, - 0.102478953671150099E+06, 0.102497140263958892E+06, 0.102511039792962809E+06, 0.102520299291871444E+06, 0.102526846630820248E+06, - 0.102529945588383314E+06, 0.102529752833756676E+06, 0.102527108906249603E+06, 0.102521410242623388E+06, 0.102513405849115865E+06, - 0.102504764193898140E+06, 0.102498120743343170E+06, 0.102494756241843366E+06, 0.102491412904970945E+06, 0.102487349910826408E+06, - 0.102482003045019752E+06, 0.102474975478072651E+06, 0.102465362858837878E+06, 0.102453624922867719E+06, 0.102439388282147716E+06, - 0.102422313370157048E+06, 0.102401857750208626E+06, 0.102377162061003954E+06, 0.102349188460773526E+06, 0.102318424237125233E+06, - 0.102285363297180986E+06, 0.102252385208010586E+06, 0.102218029776633513E+06, 0.102181810380545387E+06, 0.102143591228429039E+06, - 0.102102341867038209E+06, 0.102057770995654748E+06, 0.102012593759546347E+06, 0.101970748503609808E+06, 0.101933725108693834E+06, - 0.101900789684666524E+06, 0.101867979870800904E+06, 0.101834235978935918E+06, 0.101794954568116285E+06, 0.101739484665823096E+06, - 0.101671789500483821E+06, 0.101593418617286006E+06, 0.101506698290483502E+06, 0.101422237896336897E+06, 0.101350833220772416E+06, - 0.101290575286891341E+06, 0.101248402171152557E+06, 0.101218529092999917E+06, 0.101197447450399108E+06, 0.101187612570890138E+06, - 0.101185871864261528E+06, 0.101196499134288402E+06, 0.101218353571942265E+06, 0.101249194623964548E+06, 0.101286372345386742E+06, - 0.101326464875508391E+06, 0.101369986766969960E+06, 0.101419749853660280E+06, 0.101476722498559480E+06, 0.101542829739890207E+06, - 0.101612522924097197E+06, 0.101678721249810798E+06, 0.101737575823144638E+06, 0.101785395492746917E+06, 0.101823368561408701E+06, - 0.101856014056084430E+06, 0.101884313206989173E+06, 0.101903695929922687E+06, 0.101912969317636380E+06, 0.101908832298462992E+06, - 0.101892237038585794E+06, 0.101866203497664581E+06, 0.101837081196005645E+06, 0.101809606048398258E+06, 0.101786840568731568E+06, - 0.101762564033379982E+06, 0.101734680154915579E+06, 0.101696592635540685E+06, 0.101650662453849189E+06, 0.101599162120752633E+06, - 0.101544343001196743E+06, 0.101488647544765059E+06, 0.101433089123172278E+06, 0.101377125096785036E+06, 0.101320042947392227E+06, - 0.101256674805424394E+06, 0.101187987297748215E+06, 0.101120641997896339E+06, 0.101056247927954246E+06, 0.100996331972370142E+06, - 0.100943232428022544E+06, 0.100895353842840079E+06, 0.100852555312220196E+06, 0.100815337064243067E+06, 0.100783799781542155E+06, - 0.100753868748835012E+06, 0.100736637044447663E+06, 0.100730650096307727E+06, 0.100733232093861763E+06, 0.100743913291446443E+06, - 0.100758835470579754E+06, 0.100778259316407013E+06, 0.100802567061591370E+06, 0.100828283762383522E+06, 0.100855135515023372E+06, - 0.100877691529341333E+06, 0.100882602938691591E+06, 0.100878787688210650E+06, 0.100866582130667157E+06, 0.100846949291204379E+06, - 0.100815418882725819E+06, 0.100780247866813195E+06, 0.100745087245795497E+06, 0.100709396490561645E+06, 0.100675020472311327E+06, - 0.100643622948665085E+06, 0.101179250397845899E+06, 0.101221149498052953E+06, 0.101266816356343159E+06, 0.101315335097978430E+06, - 0.101363838550262313E+06, 0.101410108301517408E+06, 0.101455090720967710E+06, 0.101501448789654576E+06, 0.101545139345543692E+06, - 0.101584741389399278E+06, 0.101619452976458153E+06, 0.101648772604086349E+06, 0.101672509578882498E+06, 0.101691865395895249E+06, - 0.101707555892752804E+06, 0.101718643945821881E+06, 0.101724156365132570E+06, 0.101724941937858879E+06, 0.101722568702130273E+06, - 0.101718069834871334E+06, 0.101712578971246767E+06, 0.101707223787895346E+06, 0.101704839789861668E+06, 0.101708104689497137E+06, - 0.101716865742578157E+06, 0.101731053443752840E+06, 0.101746952161869922E+06, 0.101764257279303914E+06, 0.101782706182959490E+06, - 0.101802123848941148E+06, 0.101822482313672357E+06, 0.101842936616784311E+06, 0.101860934973268697E+06, 0.101882854305976114E+06, - 0.101908552344231415E+06, 0.101937813400383588E+06, 0.101970499454458186E+06, 0.102006741063404974E+06, 0.102048298491096837E+06, - 0.102094559383243701E+06, 0.102138864116678858E+06, 0.102182980858368159E+06, 0.102226517702417070E+06, 0.102268076174545422E+06, - 0.102309052474061144E+06, 0.102352381321886001E+06, 0.102391102131696549E+06, 0.102425199358256839E+06, 0.102458541492672259E+06, - 0.102488862618142084E+06, 0.102514290917361213E+06, 0.102535791702452596E+06, 0.102552503476764061E+06, 0.102564543232835902E+06, - 0.102572720164328770E+06, 0.102578198051091356E+06, 0.102580323990135614E+06, 0.102579265394634727E+06, 0.102574962647335808E+06, - 0.102568059504060235E+06, 0.102560319977754334E+06, 0.102556118504191676E+06, 0.102553057067685237E+06, 0.102550069919232395E+06, - 0.102545676460258372E+06, 0.102538438321503912E+06, 0.102526558414006213E+06, 0.102512331043456594E+06, 0.102498934035030790E+06, - 0.102483367837719314E+06, 0.102465528571415576E+06, 0.102444019300123240E+06, 0.102417539855634386E+06, 0.102386941153851396E+06, - 0.102352803854769852E+06, 0.102315908735629360E+06, 0.102276253891919623E+06, 0.102235698643740441E+06, 0.102193754813942534E+06, - 0.102149197092732255E+06, 0.102100466547888893E+06, 0.102048387340808171E+06, 0.101995636407850165E+06, 0.101944784700201388E+06, - 0.101899202783926419E+06, 0.101857839910913841E+06, 0.101822276933475470E+06, 0.101792037001853430E+06, 0.101761456733915693E+06, - 0.101723124817417673E+06, 0.101667540093368385E+06, 0.101602052196997916E+06, 0.101524286713149719E+06, 0.101443448254745468E+06, - 0.101372151184877337E+06, 0.101312547429677303E+06, 0.101270741733953284E+06, 0.101245862300696550E+06, 0.101237403284129323E+06, - 0.101240955267019526E+06, 0.101253727619962054E+06, 0.101276647528408124E+06, 0.101307289777398546E+06, 0.101342096503173772E+06, - 0.101377440256415284E+06, 0.101410859947128090E+06, 0.101445291144028568E+06, 0.101485896954639960E+06, 0.101536034363702740E+06, - 0.101598275532425832E+06, 0.101665271864468625E+06, 0.101730455163620383E+06, 0.101789053839460757E+06, 0.101836451975671342E+06, - 0.101875114449402914E+06, 0.101909841821580325E+06, 0.101937388731349492E+06, 0.101957316621074744E+06, 0.101965726747313485E+06, - 0.101960066223235612E+06, 0.101941333444338321E+06, 0.101914153314528972E+06, 0.101884034639169928E+06, 0.101858023754631969E+06, - 0.101832589987368483E+06, 0.101805510097226972E+06, 0.101772567651719524E+06, 0.101733410070028302E+06, 0.101687946616198518E+06, - 0.101638303259297347E+06, 0.101588584508090702E+06, 0.101540424262528119E+06, 0.101488738611497931E+06, 0.101435260593399056E+06, - 0.101375735107437940E+06, 0.101312542555417007E+06, 0.101246134029601395E+06, 0.101177277643560679E+06, 0.101109587858444022E+06, - 0.101039831433180021E+06, 0.100972865937903305E+06, 0.100917142934489922E+06, 0.100872742649287640E+06, 0.100836992191858386E+06, - 0.100811317083979215E+06, 0.100803167641532855E+06, 0.100798970012812904E+06, 0.100800172827859802E+06, 0.100809159254650964E+06, - 0.100825090132632613E+06, 0.100846063732092007E+06, 0.100868925096583727E+06, 0.100895209549142979E+06, 0.100924583482422255E+06, - 0.100954767114643226E+06, 0.100982762726865476E+06, 0.101000126944911273E+06, 0.100996312696391295E+06, 0.100980278059754797E+06, - 0.100948675007578538E+06, 0.100912131109198177E+06, 0.100873893055713954E+06, 0.100836895686632663E+06, 0.100800840190763440E+06, - 0.100766824999287084E+06, 0.100736390306808840E+06, 0.101147547908848283E+06, 0.101191548413107710E+06, 0.101239813004555443E+06, - 0.101291456639815791E+06, 0.101345618815623297E+06, 0.101399848017628567E+06, 0.101452120246013321E+06, 0.101502531147260263E+06, - 0.101549713655955595E+06, 0.101592520742368200E+06, 0.101630069264663078E+06, 0.101661769202013544E+06, 0.101687336031179409E+06, - 0.101706783718499020E+06, 0.101720752729463624E+06, 0.101730352171304155E+06, 0.101734303682047248E+06, 0.101733803712048772E+06, - 0.101729673880940856E+06, 0.101722933683541196E+06, 0.101714707079396278E+06, 0.101706119415995257E+06, 0.101698183703231305E+06, - 0.101694443401773460E+06, 0.101701997679200067E+06, 0.101711622212974413E+06, 0.101722702839184887E+06, 0.101735051927557608E+06, - 0.101748506288605597E+06, 0.101762966981866150E+06, 0.101778437616403622E+06, 0.101789127619601830E+06, 0.101803967912821841E+06, - 0.101822592115495441E+06, 0.101845777685417066E+06, 0.101873478314957349E+06, 0.101905482242767845E+06, 0.101942888324591171E+06, - 0.101988404530944768E+06, 0.102038702733784274E+06, 0.102092474242398283E+06, 0.102148032734040069E+06, 0.102199248899464394E+06, - 0.102248915596860126E+06, 0.102302591874664358E+06, 0.102352656965704402E+06, 0.102397731646050539E+06, 0.102437448450124619E+06, - 0.102472449474120032E+06, 0.102503421423363616E+06, 0.102532064367287210E+06, 0.102556777288245488E+06, 0.102576671821794167E+06, - 0.102591572855277176E+06, 0.102602228863800672E+06, 0.102612279279788083E+06, 0.102616851593614643E+06, 0.102617893333235930E+06, - 0.102615765691172550E+06, 0.102610441888248854E+06, 0.102607301386114821E+06, 0.102603993592939412E+06, 0.102600663908017392E+06, - 0.102597488187445881E+06, 0.102592493791941044E+06, 0.102582466666192224E+06, 0.102569826273933562E+06, 0.102554713868615829E+06, - 0.102537648672080177E+06, 0.102521039168448478E+06, 0.102503173475915130E+06, 0.102480635537613605E+06, 0.102452652573625455E+06, - 0.102419350874903001E+06, 0.102382346399272821E+06, 0.102341612134553201E+06, 0.102297029075732309E+06, 0.102248948564059086E+06, - 0.102198720030139870E+06, 0.102145758870677353E+06, 0.102088950595530157E+06, 0.102029051584965782E+06, 0.101967199226732264E+06, - 0.101903210271600808E+06, 0.101842958311824055E+06, 0.101794271532633502E+06, 0.101756533651972539E+06, 0.101727257623922851E+06, - 0.101703822910323244E+06, 0.101679786232533574E+06, 0.101644516695705548E+06, 0.101595106427152612E+06, 0.101536504683202511E+06, - 0.101467865301457467E+06, 0.101405006154835806E+06, 0.101354849767181862E+06, 0.101317686662273423E+06, 0.101296595665381508E+06, - 0.101290414819946876E+06, 0.101298257504082198E+06, 0.101319018351106934E+06, 0.101351193190044753E+06, 0.101389882715506814E+06, - 0.101429774758297252E+06, 0.101465327153650665E+06, 0.101493697248690820E+06, 0.101519475777882981E+06, 0.101549278536429629E+06, - 0.101589674862889879E+06, 0.101644437539602266E+06, 0.101707639653092512E+06, 0.101773446880721283E+06, 0.101832627929812195E+06, - 0.101881326017934320E+06, 0.101922991773475122E+06, 0.101958375717528819E+06, 0.101986274837340650E+06, 0.102005491030983016E+06, - 0.102011686815100737E+06, 0.102002038930530602E+06, 0.101979844500374034E+06, 0.101949713592872038E+06, 0.101919794688969385E+06, - 0.101890097820657014E+06, 0.101860915631872151E+06, 0.101828511020572609E+06, 0.101792400720458652E+06, 0.101751700978283421E+06, - 0.101705424659848417E+06, 0.101656344874022790E+06, 0.101609238060088639E+06, 0.101564980684227325E+06, 0.101522208207649019E+06, - 0.101469412985671690E+06, 0.101412347630207965E+06, 0.101351832558558221E+06, 0.101288709894130297E+06, 0.101222062151738224E+06, - 0.101149874038784459E+06, 0.101078002130177440E+06, 0.101009088984990114E+06, 0.100945974661293003E+06, 0.100898762938745946E+06, - 0.100870562536964586E+06, 0.100856855516523385E+06, 0.100855450035140704E+06, 0.100864081929396765E+06, 0.100872263570757554E+06, - 0.100886283473303847E+06, 0.100905686340654982E+06, 0.100926632293872623E+06, 0.100951268783756459E+06, 0.100980364613721176E+06, - 0.101012594678026580E+06, 0.101045448177269616E+06, 0.101076054483113505E+06, 0.101101140326098612E+06, 0.101100763828566429E+06, - 0.101077946327603815E+06, 0.101047158711316821E+06, 0.101011715736067359E+06, 0.100974871631289832E+06, 0.100939265943285602E+06, - 0.100905758734950185E+06, 0.100874978764764266E+06, 0.100855175471442562E+06, 0.101111520792912168E+06, 0.101157325849907211E+06, - 0.101207855335016298E+06, 0.101262234561872421E+06, 0.101320453238625094E+06, 0.101383611932041124E+06, 0.101446021580746979E+06, - 0.101500639373333164E+06, 0.101551782605323038E+06, 0.101598222486408573E+06, 0.101638989420395039E+06, 0.101673403579343765E+06, - 0.101701089807805052E+06, 0.101721974472240297E+06, 0.101735419880771398E+06, 0.101741369945130849E+06, 0.101743897808629612E+06, - 0.101742267006478505E+06, 0.101736494037811004E+06, 0.101727612235604785E+06, 0.101716766590943007E+06, 0.101705114503249541E+06, - 0.101695691907190470E+06, 0.101691082917827283E+06, 0.101688492565094857E+06, 0.101689693834759819E+06, 0.101694319117847946E+06, - 0.101699984888099891E+06, 0.101706624023230441E+06, 0.101714209290037295E+06, 0.101714886189053461E+06, 0.101718477607258348E+06, - 0.101727166805334680E+06, 0.101741942812281210E+06, 0.101762884060961267E+06, 0.101787922016469936E+06, 0.101818124304470504E+06, - 0.101856144652932824E+06, 0.101902274632393572E+06, 0.101955219215111909E+06, 0.102013545239481187E+06, 0.102075989637765349E+06, - 0.102141825734524129E+06, 0.102209412008951840E+06, 0.102271101455590702E+06, 0.102328905451065119E+06, 0.102380997966748007E+06, - 0.102426592472327698E+06, 0.102466679017069036E+06, 0.102502492265674373E+06, 0.102531828163015132E+06, 0.102557693337524877E+06, - 0.102581562159738140E+06, 0.102599817594232780E+06, 0.102617360456048831E+06, 0.102630533755776734E+06, 0.102638413398652745E+06, - 0.102641585059017671E+06, 0.102641643207641609E+06, 0.102639909103140890E+06, 0.102637870663539637E+06, 0.102635390209430159E+06, - 0.102632452553768846E+06, 0.102629055188468876E+06, 0.102622883797323870E+06, 0.102613396703866238E+06, 0.102601167982128070E+06, - 0.102586228500797864E+06, 0.102570641502416736E+06, 0.102554342163336842E+06, 0.102534088219572732E+06, 0.102511041429401579E+06, - 0.102481963706129696E+06, 0.102447121630716501E+06, 0.102407091340582192E+06, 0.102362401740888643E+06, 0.102313427305605088E+06, - 0.102259555941640690E+06, 0.102201038299707958E+06, 0.102138783904224241E+06, 0.102073015852343407E+06, 0.102003417942998523E+06, - 0.101925865118624715E+06, 0.101850155355117560E+06, 0.101780650482480312E+06, 0.101721528392427077E+06, 0.101678592950691062E+06, - 0.101649600593305571E+06, 0.101630406458717945E+06, 0.101617445713840047E+06, 0.101603733747246617E+06, 0.101577149951594518E+06, - 0.101547743780961551E+06, 0.101507738128132827E+06, 0.101462001737325336E+06, 0.101417253659172507E+06, 0.101379673252643261E+06, - 0.101354722198341828E+06, 0.101344083982961922E+06, 0.101350090319994677E+06, 0.101372932240478462E+06, 0.101408874721438551E+06, - 0.101453217513073498E+06, 0.101497802352511892E+06, 0.101536224569247846E+06, 0.101563019361021943E+06, 0.101582620293203203E+06, - 0.101603379870639314E+06, 0.101634664417891821E+06, 0.101681132562699248E+06, 0.101739502773358443E+06, 0.101803164120008223E+06, - 0.101863683127456912E+06, 0.101917393438978630E+06, 0.101963558171047160E+06, 0.101999276960053059E+06, 0.102027732037148526E+06, - 0.102044731025719229E+06, 0.102045431775095058E+06, 0.102030705033808161E+06, 0.102003666856825570E+06, 0.101970343646836016E+06, - 0.101935360181740762E+06, 0.101900669036632447E+06, 0.101865688643875081E+06, 0.101829409780582253E+06, 0.101790176042387873E+06, - 0.101745151599830831E+06, 0.101696472660873420E+06, 0.101648060959889524E+06, 0.101603410369994090E+06, 0.101561835852602439E+06, - 0.101521855998799132E+06, 0.101482037163334768E+06, 0.101431340410975914E+06, 0.101375699870779092E+06, 0.101314779976223654E+06, - 0.101251712502201844E+06, 0.101185784883436660E+06, 0.101116517257030340E+06, 0.101049883113580014E+06, 0.100989563385332454E+06, - 0.100941765093850961E+06, 0.100916306862933794E+06, 0.100906980056579865E+06, 0.100910197269982164E+06, 0.100922958161069488E+06, - 0.100941314458770998E+06, 0.100957519326146881E+06, 0.100976831072572779E+06, 0.100999605735160003E+06, 0.101025582535843947E+06, - 0.101054164787686663E+06, 0.101087890451072817E+06, 0.101122283479534453E+06, 0.101149350938674921E+06, 0.101166873408313593E+06, - 0.101177821152178367E+06, 0.101167655432610394E+06, 0.101141220410113790E+06, 0.101110321588459745E+06, 0.101078361586283063E+06, - 0.101047967121170557E+06, 0.101023734539325480E+06, 0.101008383694813747E+06, 0.100996781521485842E+06, 0.101071681166949435E+06, - 0.101119012263039112E+06, 0.101171496350808069E+06, 0.101230050130927513E+06, 0.101294972556584413E+06, 0.101361718999132645E+06, - 0.101428515451916319E+06, 0.101493595145979649E+06, 0.101550612440880213E+06, 0.101601210858501552E+06, 0.101645666556374214E+06, - 0.101683206121268653E+06, 0.101713363718937704E+06, 0.101736031118329251E+06, 0.101750515944612693E+06, 0.101757053628392736E+06, - 0.101756382807271759E+06, 0.101751079781741602E+06, 0.101743715819909994E+06, 0.101732729519215369E+06, 0.101719316686245147E+06, - 0.101706213959027606E+06, 0.101695984176562313E+06, 0.101686190677071994E+06, 0.101677301261342131E+06, 0.101669511529871947E+06, - 0.101662644903393695E+06, 0.101659294762388396E+06, 0.101657066043437371E+06, 0.101647001805639928E+06, 0.101637372304767356E+06, - 0.101632049251178221E+06, 0.101632583495971994E+06, 0.101640198281276986E+06, 0.101655810259860154E+06, 0.101680028481804649E+06, - 0.101706638821039131E+06, 0.101742286180341995E+06, 0.101788109417502055E+06, 0.101842726554478882E+06, 0.101904504042995715E+06, - 0.101971839066862056E+06, 0.102051325178151485E+06, 0.102132183694597014E+06, 0.102209672996832567E+06, 0.102278148214885616E+06, - 0.102338448224708001E+06, 0.102390873033725249E+06, 0.102438626144456910E+06, 0.102479259552033545E+06, 0.102513206393975473E+06, - 0.102541824188105747E+06, 0.102567198188429233E+06, 0.102591367917437441E+06, 0.102612619776373147E+06, 0.102629292784196412E+06, - 0.102640555112501301E+06, 0.102646561280503796E+06, 0.102650072544106879E+06, 0.102650385076837265E+06, 0.102648623310889074E+06, - 0.102647398290377925E+06, 0.102645017994891765E+06, 0.102642292476577204E+06, 0.102637067835034904E+06, 0.102629000591322547E+06, - 0.102618729003435990E+06, 0.102606585296063713E+06, 0.102594489398555161E+06, 0.102579129366844747E+06, 0.102559288929741029E+06, - 0.102534463674515951E+06, 0.102503683064059122E+06, 0.102467677027648388E+06, 0.102425952698371388E+06, 0.102378489696413220E+06, - 0.102325464394964612E+06, 0.102266592853272959E+06, 0.102201770963158517E+06, 0.102131402230157837E+06, 0.102054746212255937E+06, - 0.101968929014764348E+06, 0.101881350922099227E+06, 0.101796528814235106E+06, 0.101718540575217223E+06, 0.101652169308423996E+06, - 0.101599956132104824E+06, 0.101567900805891448E+06, 0.101551935071902582E+06, 0.101547427861477787E+06, 0.101554419426909473E+06, - 0.101561600978615184E+06, 0.101559452993868224E+06, 0.101543318540946057E+06, 0.101516046490907509E+06, 0.101480708475794294E+06, - 0.101442199752635075E+06, 0.101409794893836297E+06, 0.101389114738180739E+06, 0.101385262237127725E+06, 0.101400028248419621E+06, - 0.101431176088229637E+06, 0.101474781214988048E+06, 0.101522572921117302E+06, 0.101566852249736243E+06, 0.101600450643120159E+06, - 0.101625889986676848E+06, 0.101647907487096571E+06, 0.101675661997654053E+06, 0.101714463575179296E+06, 0.101767306549608373E+06, - 0.101829328954263532E+06, 0.101890507206039634E+06, 0.101946066216170686E+06, 0.101992520848846892E+06, 0.102030925636120199E+06, - 0.102058119932572736E+06, 0.102069397218130180E+06, 0.102063960577488731E+06, 0.102043326123970241E+06, 0.102008553848255615E+06, - 0.101967472871147096E+06, 0.101926394136031289E+06, 0.101886043970172454E+06, 0.101846744426466306E+06, 0.101807275512743188E+06, - 0.101761955344090966E+06, 0.101713799217710359E+06, 0.101665117193273894E+06, 0.101617359026062331E+06, 0.101572592180247302E+06, - 0.101533981842693742E+06, 0.101499194744985522E+06, 0.101466415578573593E+06, 0.101432243614177438E+06, 0.101381882914991351E+06, - 0.101327735566313961E+06, 0.101272085428944469E+06, 0.101216117169049772E+06, 0.101156916040190554E+06, 0.101098197832462072E+06, - 0.101045083251186894E+06, 0.101001341900752319E+06, 0.100969631972021365E+06, 0.100962352822747649E+06, 0.100968513387743296E+06, - 0.100983909597780104E+06, 0.101002878032770619E+06, 0.101021997578890048E+06, 0.101041366902723443E+06, 0.101063829282811043E+06, - 0.101089246526039147E+06, 0.101117245287077734E+06, 0.101145180487582722E+06, 0.101169961535366980E+06, 0.101193870243324593E+06, - 0.101214945572481010E+06, 0.101231265902229890E+06, 0.101240946166576672E+06, 0.101226758959788902E+06, 0.101203801319224774E+06, - 0.101180554692105070E+06, 0.101163284364848339E+06, 0.101153028319845049E+06, 0.101150355172476586E+06, 0.101145580058182692E+06, - 0.101028800627874574E+06, 0.101077428684324259E+06, 0.101134167142638209E+06, 0.101197990565301836E+06, 0.101265722975280849E+06, - 0.101335709112544850E+06, 0.101406209334330430E+06, 0.101475487925550115E+06, 0.101541907493692343E+06, 0.101600856889744842E+06, - 0.101649573257523298E+06, 0.101690733358275495E+06, 0.101724376638615926E+06, 0.101749510141425519E+06, 0.101765791117457280E+06, - 0.101773452578481490E+06, 0.101773114885158633E+06, 0.101765715127990101E+06, 0.101752413867995332E+06, 0.101738692514285227E+06, - 0.101723904619569148E+06, 0.101710227930270819E+06, 0.101695310346281782E+06, 0.101679758838352922E+06, 0.101664029621015856E+06, - 0.101648327607929226E+06, 0.101632507008869143E+06, 0.101615973949263309E+06, 0.101591834033789346E+06, 0.101568495570761865E+06, - 0.101547691859404833E+06, 0.101531530936334253E+06, 0.101521827887484746E+06, 0.101520050854732108E+06, 0.101527313513054993E+06, - 0.101537145982894304E+06, 0.101560590862112396E+06, 0.101599562166824646E+06, 0.101645766826557534E+06, 0.101701752618078797E+06, - 0.101766692067664408E+06, 0.101846710834492522E+06, 0.101935405126349360E+06, 0.102024396175872622E+06, 0.102110867349092339E+06, - 0.102192853218211705E+06, 0.102269413494696259E+06, 0.102330281542130935E+06, 0.102383945506085889E+06, 0.102430199256480380E+06, - 0.102469066393364890E+06, 0.102501583023640342E+06, 0.102532817139689723E+06, 0.102561960069998779E+06, 0.102585754372647149E+06, - 0.102606277240311640E+06, 0.102621561801826407E+06, 0.102631876834385388E+06, 0.102638884194148588E+06, 0.102641934388380745E+06, - 0.102641959420915780E+06, 0.102640521654950935E+06, 0.102639686428696965E+06, 0.102638253506522131E+06, 0.102634465365988304E+06, - 0.102627915114268661E+06, 0.102619787557100746E+06, 0.102613378349844119E+06, 0.102603999870031650E+06, 0.102590631585167415E+06, - 0.102572103225089755E+06, 0.102547313635873026E+06, 0.102516398885249058E+06, 0.102479446900462790E+06, 0.102437237325361522E+06, - 0.102388874413479600E+06, 0.102333718028784861E+06, 0.102271049401030890E+06, 0.102201028861754414E+06, 0.102122663528859397E+06, - 0.102032876851637207E+06, 0.101938463410692304E+06, 0.101842660210214104E+06, 0.101749957344606999E+06, 0.101664764507437576E+06, - 0.101591439187819764E+06, 0.101533919460466379E+06, 0.101494271575071776E+06, 0.101478987993255127E+06, 0.101485263674090980E+06, - 0.101506279443945081E+06, 0.101532941096559764E+06, 0.101553896677561657E+06, 0.101563917085832989E+06, 0.101552692436306723E+06, - 0.101526766068070108E+06, 0.101490572300548680E+06, 0.101454740971174542E+06, 0.101425776324883132E+06, 0.101411062568111098E+06, - 0.101413866812942622E+06, 0.101435131474614493E+06, 0.101474051380900128E+06, 0.101522941427092213E+06, 0.101574152032058948E+06, - 0.101618098831177398E+06, 0.101654170137284003E+06, 0.101684054984246599E+06, 0.101716539075889523E+06, 0.101756604551361495E+06, - 0.101806467761705877E+06, 0.101862424100462653E+06, 0.101918408568819126E+06, 0.101971439624029648E+06, 0.102015800714595636E+06, - 0.102049385208646127E+06, 0.102069908714661666E+06, 0.102076032068515779E+06, 0.102064732659179368E+06, 0.102034093795762514E+06, - 0.101992630086863239E+06, 0.101944780810628261E+06, 0.101894141477159937E+06, 0.101849042057571452E+06, 0.101805808680122878E+06, - 0.101760916109816302E+06, 0.101714291793644923E+06, 0.101666393705850103E+06, 0.101619297696421156E+06, 0.101573598742667251E+06, - 0.101529420471224686E+06, 0.101490381423561645E+06, 0.101460489541744115E+06, 0.101432531917615197E+06, 0.101405679166028422E+06, - 0.101376758400729959E+06, 0.101333014356477448E+06, 0.101288061869102195E+06, 0.101243137897010267E+06, 0.101200014773099698E+06, - 0.101153035601030700E+06, 0.101107255027280131E+06, 0.101068975039667697E+06, 0.101040318598185462E+06, 0.101026239021205620E+06, - 0.101036150724925217E+06, 0.101050786638747362E+06, 0.101066960176317720E+06, 0.101082545023658342E+06, 0.101098187778212945E+06, - 0.101117678130985703E+06, 0.101139021760228803E+06, 0.101155522461091532E+06, 0.101175020122667425E+06, 0.101198265495543150E+06, - 0.101224832562545693E+06, 0.101250329820757150E+06, 0.101272684085133165E+06, 0.101289811161881575E+06, 0.101299701614067628E+06, - 0.101289739336630024E+06, 0.101279678002747503E+06, 0.101273826681569160E+06, 0.101274570526567550E+06, 0.101282465694758634E+06, - 0.101293902962443753E+06, 0.100983835656151976E+06, 0.101036388934372706E+06, 0.101096497142358145E+06, 0.101162397946509547E+06, - 0.101232608232112354E+06, 0.101305480982330599E+06, 0.101379283841868455E+06, 0.101452283197187178E+06, 0.101522834159475562E+06, - 0.101589476875808105E+06, 0.101650386759155634E+06, 0.101696210127681858E+06, 0.101733613430271813E+06, 0.101761832290367092E+06, - 0.101780569821559126E+06, 0.101789961901369534E+06, 0.101790532679209500E+06, 0.101783131653860866E+06, 0.101768849808582265E+06, - 0.101750041068809616E+06, 0.101731803246356489E+06, 0.101713921895166000E+06, 0.101693731889764837E+06, 0.101671835744684708E+06, - 0.101648705771986570E+06, 0.101624585079514640E+06, 0.101599389025969096E+06, 0.101563768387053642E+06, 0.101522704766848532E+06, - 0.101483489785699712E+06, 0.101448687013231232E+06, 0.101419615240213854E+06, 0.101397479525329196E+06, 0.101384028029676760E+06, - 0.101370836998047147E+06, 0.101368370266732833E+06, 0.101383065641375812E+06, 0.101416090998647196E+06, 0.101467290265164353E+06, - 0.101534882313080263E+06, 0.101609445319890510E+06, 0.101699733235880441E+06, 0.101794859855521834E+06, 0.101891101060966321E+06, - 0.101985315130313480E+06, 0.102075076914327306E+06, 0.102159945052938041E+06, 0.102235771297951098E+06, 0.102301477656430769E+06, - 0.102354930558367778E+06, 0.102399782724316072E+06, 0.102438694369211255E+06, 0.102476839111309280E+06, 0.102509751156878236E+06, - 0.102537521783681077E+06, 0.102560895469354815E+06, 0.102580819063130271E+06, 0.102594854584419911E+06, 0.102605160074562926E+06, - 0.102611577337313051E+06, 0.102614486702620023E+06, 0.102617674490494959E+06, 0.102619973525111447E+06, 0.102618324460179618E+06, - 0.102615416266488261E+06, 0.102610851205396946E+06, 0.102607299216665502E+06, 0.102602572628475973E+06, 0.102595515104050908E+06, - 0.102585432283621078E+06, 0.102569550312714797E+06, 0.102546496599273247E+06, 0.102517612581426918E+06, 0.102482362007529839E+06, - 0.102441544642516921E+06, 0.102393921375066857E+06, 0.102338338767732290E+06, 0.102273827698305467E+06, 0.102199580759235032E+06, - 0.102112717239415593E+06, 0.102017541011033652E+06, 0.101917267901995700E+06, 0.101815758981969469E+06, 0.101717854365049221E+06, - 0.101627270343615834E+06, 0.101547308817353100E+06, 0.101483765146806487E+06, 0.101441943712900873E+06, 0.101423999856314156E+06, - 0.101430776328316933E+06, 0.101457783973006139E+06, 0.101497023306538365E+06, 0.101538146597104598E+06, 0.101564980031804182E+06, - 0.101571345079031700E+06, 0.101556555710264554E+06, 0.101527227279379993E+06, 0.101491242458124063E+06, 0.101455431195561541E+06, - 0.101427222639413303E+06, 0.101413952789479707E+06, 0.101420016873493543E+06, 0.101448672726717166E+06, 0.101494479796940665E+06, - 0.101550679225448213E+06, 0.101607025893701604E+06, 0.101659304835337243E+06, 0.101705889950175377E+06, 0.101749787609497245E+06, - 0.101793551387452957E+06, 0.101844793551510127E+06, 0.101899113907290477E+06, 0.101951953582127840E+06, 0.101997167012573933E+06, - 0.102030191525044342E+06, 0.102053787395966574E+06, 0.102064887574337728E+06, 0.102060267944376203E+06, 0.102039749700523636E+06, - 0.102005081906476669E+06, 0.101957654047840246E+06, 0.101904801258523614E+06, 0.101850843726662788E+06, 0.101798946363995929E+06, - 0.101751878064897523E+06, 0.101705939443378287E+06, 0.101659768391705205E+06, 0.101615380159911743E+06, 0.101570783461705709E+06, - 0.101526947551755860E+06, 0.101484787939652975E+06, 0.101445231219594032E+06, 0.101413345817087800E+06, 0.101391047300393111E+06, - 0.101372584877227360E+06, 0.101355566853485740E+06, 0.101335220992961375E+06, 0.101303837716816255E+06, 0.101271525370591757E+06, - 0.101240298133351855E+06, 0.101211003024413338E+06, 0.101175839364889063E+06, 0.101146665774628709E+06, 0.101127801050420749E+06, - 0.101116214564623544E+06, 0.101115217567181709E+06, 0.101124992952320288E+06, 0.101134962605509543E+06, 0.101143290627816998E+06, - 0.101149282865567409E+06, 0.101151001731697805E+06, 0.101160080279956310E+06, 0.101174468885292459E+06, 0.101194158852267166E+06, - 0.101218629627263130E+06, 0.101247610934086246E+06, 0.101278139638903813E+06, 0.101306993640526780E+06, 0.101332857422239162E+06, - 0.101352835922766695E+06, 0.101364854062282961E+06, 0.101366215681609348E+06, 0.101371982657827277E+06, 0.101384204628605657E+06, - 0.101403123567578412E+06, 0.101427293507956012E+06, 0.100939699761507189E+06, 0.100993926545564740E+06, 0.101055617446205957E+06, - 0.101123302505147047E+06, 0.101195700951661318E+06, 0.101271150132425566E+06, 0.101347899405442047E+06, 0.101424189839355866E+06, - 0.101498339603613043E+06, 0.101568835452811982E+06, 0.101636401101424097E+06, 0.101695457584751377E+06, 0.101740082571501800E+06, - 0.101772165987128828E+06, 0.101794061760174460E+06, 0.101805821721959510E+06, 0.101807890769523758E+06, 0.101801052084176001E+06, - 0.101787222143099047E+06, 0.101769333451322513E+06, 0.101746134751190912E+06, 0.101718716143227328E+06, 0.101691356809011646E+06, - 0.101662464249923956E+06, 0.101631298348493656E+06, 0.101598170677190283E+06, 0.101554964683279206E+06, 0.101502331999436428E+06, - 0.101449056042133889E+06, 0.101396847279871756E+06, 0.101347056172201555E+06, 0.101300460882216124E+06, 0.101262584703042259E+06, - 0.101225780265849375E+06, 0.101194459775717551E+06, 0.101179417053502169E+06, 0.101183702376592380E+06, 0.101209076499852017E+06, - 0.101255909037280071E+06, 0.101326640203920455E+06, 0.101424239758254218E+06, 0.101531367651623077E+06, 0.101632910073723979E+06, - 0.101736158570445637E+06, 0.101837656744184424E+06, 0.101936360666710083E+06, 0.102029774479476604E+06, 0.102113550935132720E+06, - 0.102187275245992423E+06, 0.102251742085495353E+06, 0.102308744854441014E+06, 0.102354056548559587E+06, 0.102395496326958368E+06, - 0.102432085609497080E+06, 0.102463450245845990E+06, 0.102489865598489851E+06, 0.102514853262571502E+06, 0.102534082770129738E+06, - 0.102548592777604266E+06, 0.102559883810599669E+06, 0.102568794081739034E+06, 0.102579021392062437E+06, 0.102585007107402751E+06, - 0.102586497457448539E+06, 0.102584376842419224E+06, 0.102580903181294503E+06, 0.102577151681759657E+06, 0.102573827515381417E+06, - 0.102568538059750121E+06, 0.102560561364228692E+06, 0.102548460310359820E+06, 0.102530289426340809E+06, 0.102505861568008157E+06, - 0.102475498063954670E+06, 0.102440643792700503E+06, 0.102396241614374099E+06, 0.102341446243588929E+06, 0.102276649353635905E+06, - 0.102199862029058393E+06, 0.102111863644497949E+06, 0.102014314786398143E+06, 0.101910607455440113E+06, 0.101806306816961252E+06, - 0.101704399917697054E+06, 0.101609603981306922E+06, 0.101526211311625375E+06, 0.101459322473350869E+06, 0.101412795838567283E+06, - 0.101389618525710335E+06, 0.101393845554395113E+06, 0.101424357742906359E+06, 0.101472713797786171E+06, 0.101522607587252613E+06, - 0.101559998357663775E+06, 0.101576743781235520E+06, 0.101573310646049868E+06, 0.101549833954751783E+06, 0.101514456685338067E+06, - 0.101472694191529066E+06, 0.101434208011361596E+06, 0.101406914911600485E+06, 0.101398454904380153E+06, 0.101415253675564527E+06, - 0.101455136695375608E+06, 0.101512719547979839E+06, 0.101577237869349250E+06, 0.101641152022720256E+06, 0.101700396834169049E+06, - 0.101757567947174000E+06, 0.101815111575731135E+06, 0.101874014294397304E+06, 0.101930155420364375E+06, 0.101979578233631371E+06, - 0.102017827567168875E+06, 0.102041453032023797E+06, 0.102049181677356071E+06, 0.102042624564991027E+06, 0.102027458526470917E+06, - 0.101998856271186160E+06, 0.101958763385915998E+06, 0.101909825004560786E+06, 0.101855834630693556E+06, 0.101803471305377156E+06, - 0.101751840395667561E+06, 0.101701669671223848E+06, 0.101657371568089962E+06, 0.101614737302306821E+06, 0.101571808841198203E+06, - 0.101529035182503387E+06, 0.101487836291383923E+06, 0.101448187429775586E+06, 0.101410201287687276E+06, 0.101375725543945955E+06, - 0.101354091334976038E+06, 0.101343701275904139E+06, 0.101337958790157587E+06, 0.101334014323027164E+06, 0.101323058410853802E+06, - 0.101303680281432564E+06, 0.101285071086934273E+06, 0.101269046902558985E+06, 0.101256912292666253E+06, 0.101239485050412128E+06, - 0.101225094542196108E+06, 0.101214114558167246E+06, 0.101206300766355242E+06, 0.101205366180458252E+06, 0.101205376802251209E+06, - 0.101196436467417006E+06, 0.101184014918681118E+06, 0.101170971956995039E+06, 0.101173896703063627E+06, 0.101186778426832985E+06, - 0.101207425966799259E+06, 0.101235075391491133E+06, 0.101268299800364039E+06, 0.101308063493844020E+06, 0.101344788336284473E+06, - 0.101376389450400151E+06, 0.101402378295128001E+06, 0.101423140134659829E+06, 0.101438782026730638E+06, 0.101455746728587110E+06, - 0.101479368387625509E+06, 0.101509546030359561E+06, 0.101546739387306210E+06, 0.100893625093361974E+06, 0.100948455392464501E+06, - 0.101011317645263582E+06, 0.101080913011082172E+06, 0.101155302174425058E+06, 0.101233112731396410E+06, 0.101312551980581891E+06, - 0.101391810121618284E+06, 0.101469643740293817E+06, 0.101547894952444782E+06, 0.101619713078854009E+06, 0.101683304064554628E+06, - 0.101737232999154556E+06, 0.101779617777438179E+06, 0.101805388291197829E+06, 0.101820150398714570E+06, 0.101824280737551730E+06, - 0.101819067925622789E+06, 0.101806980910888844E+06, 0.101787436214918198E+06, 0.101761287349566453E+06, 0.101729423465328233E+06, - 0.101692622608612961E+06, 0.101651573936670728E+06, 0.101611590783753491E+06, 0.101562833006838278E+06, 0.101502364394767414E+06, - 0.101438724936641054E+06, 0.101373805958635741E+06, 0.101309369954324357E+06, 0.101246873385268977E+06, 0.101187267453513661E+06, - 0.101122914968029043E+06, 0.101055428119650373E+06, 0.101008249772026029E+06, 0.100979473982631680E+06, 0.100972177967227311E+06, - 0.100988832853860484E+06, 0.101031262783445170E+06, 0.101112202656024601E+06, 0.101211093846252057E+06, 0.101323155130905317E+06, - 0.101443212391304434E+06, 0.101565274984548159E+06, 0.101675064133449094E+06, 0.101783046764746541E+06, 0.101883427362778093E+06, - 0.101974048605326316E+06, 0.102054089915572622E+06, 0.102123916001737191E+06, 0.102185138506351650E+06, 0.102239277647944138E+06, - 0.102288043635062262E+06, 0.102329848961112002E+06, 0.102365570526105090E+06, 0.102398175565311816E+06, 0.102427118018994763E+06, - 0.102451215888181687E+06, 0.102470889959435211E+06, 0.102487322259304128E+06, 0.102507363262553656E+06, 0.102522539511451090E+06, - 0.102533202617323841E+06, 0.102538447738773189E+06, 0.102539366679125000E+06, 0.102537806325041631E+06, 0.102534134338413278E+06, - 0.102529616480806799E+06, 0.102525504718401397E+06, 0.102520340764588414E+06, 0.102512361946182253E+06, 0.102499685852779818E+06, - 0.102481370178637997E+06, 0.102461804458447645E+06, 0.102433116211535496E+06, 0.102394820498302695E+06, 0.102344806742965229E+06, - 0.102282869771580241E+06, 0.102208190347609911E+06, 0.102122230232017173E+06, 0.102026360478078772E+06, 0.101922376088166435E+06, - 0.101815964790077211E+06, 0.101712553837059808E+06, 0.101615912730210781E+06, 0.101531538428717235E+06, 0.101462015329520931E+06, - 0.101411095529211190E+06, 0.101383553801811446E+06, 0.101387868686696354E+06, 0.101419065450411930E+06, 0.101465197763774107E+06, - 0.101514122624701689E+06, 0.101554157750064871E+06, 0.101577510533460605E+06, 0.101578561408166206E+06, 0.101561717136454608E+06, - 0.101527942832344896E+06, 0.101485492708933743E+06, 0.101442040681691869E+06, 0.101407214730937660E+06, 0.101391475969427891E+06, - 0.101402057936737707E+06, 0.101438129992839313E+06, 0.101494675186752138E+06, 0.101561405991801003E+06, 0.101631832958464947E+06, - 0.101700764128050694E+06, 0.101765471244284083E+06, 0.101829298739144535E+06, 0.101891487805957440E+06, 0.101949649930012936E+06, - 0.101996983260441179E+06, 0.102028825999188412E+06, 0.102041977726062381E+06, 0.102037063043873364E+06, 0.102018484271153007E+06, - 0.101987519813082123E+06, 0.101953322744109144E+06, 0.101911210582393775E+06, 0.101863879485885569E+06, 0.101813868935175255E+06, - 0.101763558865488987E+06, 0.101714781421884982E+06, 0.101669784944327868E+06, 0.101626116114336663E+06, 0.101583855166139518E+06, - 0.101542346971029430E+06, 0.101502633877275308E+06, 0.101464939559164166E+06, 0.101426766367174598E+06, 0.101390458857219390E+06, - 0.101358471458522574E+06, 0.101334112694217969E+06, 0.101328407691393310E+06, 0.101330874497622441E+06, 0.101337110359200757E+06, - 0.101343736678259927E+06, 0.101343244142495707E+06, 0.101341300900043818E+06, 0.101339844172589394E+06, 0.101338724330486657E+06, - 0.101333664918719776E+06, 0.101322891249048946E+06, 0.101311826452015521E+06, 0.101299221594776434E+06, 0.101282571152943405E+06, - 0.101266530780531204E+06, 0.101246643011162712E+06, 0.101224150063358495E+06, 0.101202571591745436E+06, 0.101188612840670292E+06, - 0.101199966484071061E+06, 0.101222097051704724E+06, 0.101260233588647054E+06, 0.101304129252313578E+06, 0.101350161554908336E+06, - 0.101389652624068185E+06, 0.101424551417429771E+06, 0.101454274075586436E+06, 0.101479148917351384E+06, 0.101500388782067501E+06, - 0.101525545796928971E+06, 0.101562513561929518E+06, 0.101606090475506091E+06, 0.101653619386718725E+06, 0.100845507039246062E+06, - 0.100900566753226827E+06, 0.100964147998307293E+06, 0.101035004760987780E+06, 0.101111734714359307E+06, 0.101192123809297234E+06, - 0.101274156352906692E+06, 0.101357605885697238E+06, 0.101443671119726976E+06, 0.101525544557033369E+06, 0.101601182677887831E+06, - 0.101668789681363778E+06, 0.101726898348598319E+06, 0.101774441929614739E+06, 0.101810815552412794E+06, 0.101832035149566495E+06, - 0.101838765440822797E+06, 0.101835596101807649E+06, 0.101823419644672496E+06, 0.101802715728713345E+06, 0.101774151142095492E+06, - 0.101738457612419079E+06, 0.101696295926065533E+06, 0.101648104911459959E+06, 0.101590285842002006E+06, 0.101521209919707282E+06, - 0.101450839575846665E+06, 0.101376697188940336E+06, 0.101300744148618498E+06, 0.101224863840720194E+06, 0.101150697403150189E+06, - 0.101073301607053800E+06, 0.100983235760375988E+06, 0.100901684378507489E+06, 0.100833101972986929E+06, 0.100781373167571786E+06, - 0.100760772506158712E+06, 0.100768040826660945E+06, 0.100819963855216105E+06, 0.100898361962391151E+06, 0.100996401252706506E+06, - 0.101109805590524003E+06, 0.101233684034863138E+06, 0.101362757333502159E+06, 0.101494642793831357E+06, 0.101619684005633680E+06, - 0.101728129058541483E+06, 0.101825059560781054E+06, 0.101910320070122136E+06, 0.101982389350624275E+06, 0.102044412115271698E+06, - 0.102100145695870931E+06, 0.102151182120026933E+06, 0.102199014246850449E+06, 0.102244844616859526E+06, 0.102284509458517772E+06, - 0.102318215421307876E+06, 0.102347902960885476E+06, 0.102373421335254781E+06, 0.102401951332123936E+06, 0.102429181477717284E+06, - 0.102450532016644735E+06, 0.102465997336774948E+06, 0.102475777963121422E+06, 0.102478313815590023E+06, 0.102478110250759957E+06, - 0.102475657036715347E+06, 0.102471918321198871E+06, 0.102469939192222024E+06, 0.102467007436977176E+06, 0.102462490014742158E+06, - 0.102456722431479779E+06, 0.102450737615132341E+06, 0.102440335034919917E+06, 0.102420575011656954E+06, 0.102389812989896382E+06, - 0.102347122683242473E+06, 0.102292275082950306E+06, 0.102224438636867562E+06, 0.102143836217952965E+06, 0.102050866494433591E+06, - 0.101949943411085245E+06, 0.101845736377779569E+06, 0.101742816153747364E+06, 0.101647911129982123E+06, 0.101563216996056130E+06, - 0.101491604823778136E+06, 0.101437861556007003E+06, 0.101412287502927546E+06, 0.101412856551671823E+06, 0.101435247443498505E+06, - 0.101472966599928535E+06, 0.101514519271643498E+06, 0.101550307716508367E+06, 0.101572773831424129E+06, 0.101577300876503461E+06, - 0.101561783761491213E+06, 0.101528832671536744E+06, 0.101487621468217170E+06, 0.101449333621855301E+06, 0.101421572690143163E+06, - 0.101412849368901254E+06, 0.101428815273143569E+06, 0.101468452704213269E+06, 0.101526342258825374E+06, 0.101593070240422909E+06, - 0.101660293633886846E+06, 0.101724359259873541E+06, 0.101785772418607943E+06, 0.101847556062125179E+06, 0.101908363003809383E+06, - 0.101961701914240010E+06, 0.102002429874153109E+06, 0.102025185688122059E+06, 0.102030228237618969E+06, 0.102016392623057240E+06, - 0.101989203583738155E+06, 0.101954215596148948E+06, 0.101916658897302012E+06, 0.101876815696310456E+06, 0.101833071043157586E+06, - 0.101787308476072212E+06, 0.101741539193291770E+06, 0.101697630101558476E+06, 0.101654119182481736E+06, 0.101610960850170581E+06, - 0.101569179414185535E+06, 0.101528773468682877E+06, 0.101490142318063241E+06, 0.101454189911789217E+06, 0.101420537325155994E+06, - 0.101387196165512592E+06, 0.101359208745426033E+06, 0.101338989486127597E+06, 0.101329695327606096E+06, 0.101338867992364074E+06, - 0.101355871810450670E+06, 0.101375430345140587E+06, 0.101394209504973755E+06, 0.101402919751202760E+06, 0.101410688334029808E+06, - 0.101416920285657412E+06, 0.101420489242522977E+06, 0.101413658635510583E+06, 0.101399351916641783E+06, 0.101380364637205465E+06, - 0.101357315413079603E+06, 0.101331383086953632E+06, 0.101302463143222500E+06, 0.101271861027862804E+06, 0.101243797629858222E+06, - 0.101225102912379341E+06, 0.101230895188582799E+06, 0.101260967028080006E+06, 0.101301126414935963E+06, 0.101347821784489817E+06, - 0.101397550525323837E+06, 0.101444003541722705E+06, 0.101480976560253359E+06, 0.101512946357403111E+06, 0.101540212183607568E+06, - 0.101567953884550225E+06, 0.101594468785546575E+06, 0.101637676393726375E+06, 0.101688399693186482E+06, 0.101742930184759069E+06, - 0.100795882153115017E+06, 0.100850797431345025E+06, 0.100914750948998306E+06, 0.100986523708389999E+06, 0.101064741053657359E+06, - 0.101147944583867647E+06, 0.101236474647069423E+06, 0.101327593382317646E+06, 0.101416818345205553E+06, 0.101501970105562199E+06, - 0.101581006340059568E+06, 0.101652107178935606E+06, 0.101713753841424812E+06, 0.101764799350409041E+06, 0.101804529976921447E+06, - 0.101832451081090258E+06, 0.101847567048303332E+06, 0.101846442214230046E+06, 0.101834900151378431E+06, 0.101813744156519519E+06, - 0.101783490044669117E+06, 0.101744750228076155E+06, 0.101698109004179641E+06, 0.101641364118676778E+06, 0.101569583201128436E+06, - 0.101490816574609969E+06, 0.101406531256311253E+06, 0.101319625817001812E+06, 0.101233091961074242E+06, 0.101146347584902731E+06, - 0.101058989124578555E+06, 0.100953964690316512E+06, 0.100852899705475327E+06, 0.100760578698964149E+06, 0.100681685450575751E+06, - 0.100620492778267973E+06, 0.100580496608869158E+06, 0.100579462774121028E+06, 0.100625977088063315E+06, 0.100699672061534206E+06, - 0.100794647180633037E+06, 0.100907249288633233E+06, 0.101033016501104474E+06, 0.101170532820658074E+06, 0.101310202043631813E+06, - 0.101443951517617694E+06, 0.101566665342990047E+06, 0.101674561727816923E+06, 0.101762857707379371E+06, 0.101831050817027455E+06, - 0.101892059674295087E+06, 0.101947353598683054E+06, 0.101998507084363489E+06, 0.102047351014086569E+06, 0.102096770563981801E+06, - 0.102143221374936838E+06, 0.102186890306655871E+06, 0.102228196597294736E+06, 0.102264105567156759E+06, 0.102302445150954794E+06, - 0.102336246787148004E+06, 0.102363781472504663E+06, 0.102384291162903231E+06, 0.102397430622010026E+06, 0.102403312624922473E+06, - 0.102403832627536103E+06, 0.102402612769131738E+06, 0.102401390930183130E+06, 0.102401466546220196E+06, 0.102401874865610895E+06, - 0.102402100027913009E+06, 0.102404524182350739E+06, 0.102408945753433436E+06, 0.102408228479075435E+06, 0.102399207567720179E+06, - 0.102378727543360583E+06, 0.102346081419689654E+06, 0.102300584036716507E+06, 0.102242408524207058E+06, 0.102170172560628038E+06, - 0.102084827969266131E+06, 0.101990466580006148E+06, 0.101891305283198890E+06, 0.101794051647235989E+06, 0.101701758202335564E+06, - 0.101617607399452128E+06, 0.101545673956610553E+06, 0.101493920019806435E+06, 0.101463389589686616E+06, 0.101454707404169429E+06, - 0.101465784796775130E+06, 0.101489404864046577E+06, 0.101519701691131908E+06, 0.101547620610180951E+06, 0.101565576165996550E+06, - 0.101562026624260950E+06, 0.101539419490073633E+06, 0.101508015501831396E+06, 0.101475602714955035E+06, 0.101449209652947975E+06, - 0.101436251410560508E+06, 0.101442877175111498E+06, 0.101471341372345414E+06, 0.101518178052896081E+06, 0.101577355032239313E+06, - 0.101641314782584261E+06, 0.101703564541155953E+06, 0.101762362987943518E+06, 0.101818379277178246E+06, 0.101872714548978096E+06, - 0.101924119264252775E+06, 0.101966776195386803E+06, 0.101995500768842219E+06, 0.102007086660768691E+06, 0.102002030153628395E+06, - 0.101985038462701981E+06, 0.101956611217972633E+06, 0.101924174284332606E+06, 0.101890531345005773E+06, 0.101858684611865552E+06, - 0.101821867670641383E+06, 0.101781442886233301E+06, 0.101738169818174909E+06, 0.101693020445221118E+06, 0.101649533509090848E+06, - 0.101606065252630258E+06, 0.101563356987927487E+06, 0.101522196794781717E+06, 0.101483000104046587E+06, 0.101448492093986119E+06, - 0.101420196255985837E+06, 0.101395294590973572E+06, 0.101373162271020163E+06, 0.101359621762719311E+06, 0.101356933368830039E+06, - 0.101368947980949306E+06, 0.101392192190573551E+06, 0.101417779659041989E+06, 0.101442531040709990E+06, 0.101462476541542521E+06, - 0.101476476704636079E+06, 0.101486973325915984E+06, 0.101492708978460287E+06, 0.101491506327010982E+06, 0.101476163566485891E+06, - 0.101454012045195879E+06, 0.101426588508176050E+06, 0.101395767868210212E+06, 0.101361555520167341E+06, 0.101327388871009054E+06, - 0.101300667576237203E+06, 0.101284994174892112E+06, 0.101283350959747040E+06, 0.101309210052713708E+06, 0.101350688755181967E+06, - 0.101399465772761600E+06, 0.101451857069433157E+06, 0.101504338927611956E+06, 0.101548087731741456E+06, 0.101585173851711908E+06, - 0.101617418107249265E+06, 0.101645918462371425E+06, 0.101672368866688703E+06, 0.101702644054264791E+06, 0.101756834440843944E+06, - 0.101815020493009375E+06, 0.100745394112667054E+06, 0.100799832870823317E+06, 0.100863855953311213E+06, 0.100936251298315474E+06, - 0.101015648499264644E+06, 0.101104654341683374E+06, 0.101200128443110370E+06, 0.101296361142831636E+06, 0.101389195762127056E+06, - 0.101477275829104881E+06, 0.101559295351936235E+06, 0.101633387586243814E+06, 0.101697961740723156E+06, 0.101751772598623953E+06, - 0.101793901427349119E+06, 0.101823866729636080E+06, 0.101841583691637163E+06, 0.101847052782340179E+06, 0.101840097601263231E+06, - 0.101819364884434224E+06, 0.101788292383590582E+06, 0.101747405137351147E+06, 0.101695621343299601E+06, 0.101627436111935327E+06, - 0.101550322384277897E+06, 0.101465476616664964E+06, 0.101374194733789423E+06, 0.101277718928660746E+06, 0.101177047947947533E+06, - 0.101075621770040874E+06, 0.100963507971772880E+06, 0.100850151599165794E+06, 0.100741049456883455E+06, 0.100641201275214524E+06, - 0.100555640521779089E+06, 0.100489164793431541E+06, 0.100453712051746988E+06, 0.100455966233873114E+06, 0.100484341033634380E+06, - 0.100537490332318921E+06, 0.100620003905902136E+06, 0.100729309835612949E+06, 0.100858870023752374E+06, 0.101002649715674357E+06, - 0.101147678361066428E+06, 0.101287802540963821E+06, 0.101417496539417145E+06, 0.101532273896933402E+06, 0.101613683175199098E+06, - 0.101680723164626179E+06, 0.101737444859119263E+06, 0.101791182708811306E+06, 0.101841314940347904E+06, 0.101891796533315224E+06, - 0.101941590080887530E+06, 0.101990059211011772E+06, 0.102037355306302023E+06, 0.102083701488133767E+06, 0.102136891332944331E+06, - 0.102186806386969169E+06, 0.102230479823408270E+06, 0.102264774535572782E+06, 0.102290420308268731E+06, 0.102307702555592783E+06, - 0.102317766904831617E+06, 0.102321662148245741E+06, 0.102321498408406202E+06, 0.102320441248726507E+06, 0.102319523718290511E+06, - 0.102322447750704567E+06, 0.102327503158949214E+06, 0.102340754529364640E+06, 0.102353506384693246E+06, 0.102362358688122375E+06, - 0.102364445626707267E+06, 0.102355674159446760E+06, 0.102335040551811529E+06, 0.102301981999839074E+06, 0.102255676163442389E+06, - 0.102195798314690837E+06, 0.102122639698007450E+06, 0.102039086723219865E+06, 0.101949840960878224E+06, 0.101859938889724974E+06, - 0.101771880315094095E+06, 0.101689691466275064E+06, 0.101619553461018091E+06, 0.101564784382206009E+06, 0.101527063676792590E+06, - 0.101506865347517232E+06, 0.101503522390084341E+06, 0.101512744653858725E+06, 0.101529231308459130E+06, 0.101545937638918578E+06, - 0.101543746232650679E+06, 0.101529149091683401E+06, 0.101505036617385034E+06, 0.101477259643610611E+06, 0.101452985842091570E+06, - 0.101443019818922796E+06, 0.101450005107018835E+06, 0.101477223491849247E+06, 0.101523231314288976E+06, 0.101581629450517838E+06, - 0.101644098508760901E+06, 0.101703051093558723E+06, 0.101755080739197074E+06, 0.101801349748540073E+06, 0.101847343504094184E+06, - 0.101892088842664132E+06, 0.101930776572625342E+06, 0.101959972929516225E+06, 0.101973275480066382E+06, 0.101972016851233420E+06, - 0.101959747868463455E+06, 0.101940685784926434E+06, 0.101919336338791196E+06, 0.101894507185877927E+06, 0.101871113669696017E+06, - 0.101847657889249851E+06, 0.101820887903955852E+06, 0.101784170021964572E+06, 0.101741602583369866E+06, 0.101694747059338464E+06, - 0.101647292622998575E+06, 0.101600773270067424E+06, 0.101554052329806203E+06, 0.101509997350416306E+06, 0.101472107321641699E+06, - 0.101442071551669200E+06, 0.101420240877131699E+06, 0.101406891473258380E+06, 0.101396015807551084E+06, 0.101392164060749914E+06, - 0.101397198621684831E+06, 0.101410725481402653E+06, 0.101436168965154429E+06, 0.101464448461599168E+06, 0.101491134274545591E+06, - 0.101513817760506034E+06, 0.101531534488231206E+06, 0.101544658070101810E+06, 0.101551681755858954E+06, 0.101551216434335554E+06, - 0.101539195357785327E+06, 0.101514919199184893E+06, 0.101483010220912314E+06, 0.101448007466093870E+06, 0.101414858070553688E+06, - 0.101383218898751307E+06, 0.101359262217297684E+06, 0.101346709055278770E+06, 0.101347915439013712E+06, 0.101365119587774912E+06, - 0.101407924765819262E+06, 0.101458658683875430E+06, 0.101515675014729291E+06, 0.101573920518004117E+06, 0.101629788706552135E+06, - 0.101668434413804149E+06, 0.101700504314289530E+06, 0.101727848552964642E+06, 0.101752288382924846E+06, 0.101776226460626523E+06, - 0.101814361167678813E+06, 0.101872139466116685E+06, 0.100694816386903738E+06, 0.100748531064111390E+06, 0.100812413075077391E+06, - 0.100885240325433202E+06, 0.100971984589634725E+06, 0.101066079836500590E+06, 0.101163332246353209E+06, 0.101261519892330936E+06, - 0.101358385768427062E+06, 0.101451421123224791E+06, 0.101536054276749637E+06, 0.101612689419430462E+06, 0.101679641914763270E+06, - 0.101735174644287632E+06, 0.101778750617147758E+06, 0.101810665166487233E+06, 0.101830410029895895E+06, 0.101837810772118624E+06, - 0.101833022665443903E+06, 0.101816510393020842E+06, 0.101787854012666052E+06, 0.101744823421577603E+06, 0.101683938556403096E+06, - 0.101613036597664483E+06, 0.101532884942156001E+06, 0.101444504410039342E+06, 0.101349069651044396E+06, 0.101247781610335631E+06, - 0.101141708506075884E+06, 0.101021202144232695E+06, 0.100894721062327983E+06, 0.100769982600624178E+06, 0.100655427823023274E+06, - 0.100550770964121868E+06, 0.100461477319971644E+06, 0.100396193533225101E+06, 0.100370475160386210E+06, 0.100369362731624045E+06, - 0.100393088104568509E+06, 0.100440996230512974E+06, 0.100511511049115361E+06, 0.100603846780177613E+06, 0.100726574426591877E+06, - 0.100871208402494914E+06, 0.101018016887883554E+06, 0.101160944293748136E+06, 0.101294154343677379E+06, 0.101398406532467285E+06, - 0.101478074072107382E+06, 0.101546049324473512E+06, 0.101603974418745871E+06, 0.101653727077973454E+06, 0.101697954544609078E+06, - 0.101741376690074656E+06, 0.101789988330066262E+06, 0.101838680208411213E+06, 0.101887795803836605E+06, 0.101942598855672841E+06, - 0.102000837418646348E+06, 0.102056277940396962E+06, 0.102106768405713607E+06, 0.102150535774670396E+06, 0.102182996899048041E+06, - 0.102206750157000613E+06, 0.102221201245532342E+06, 0.102228757950974235E+06, 0.102230269318708335E+06, 0.102229908214737996E+06, - 0.102230221444085299E+06, 0.102233117647704858E+06, 0.102243955867660014E+06, 0.102261169827573845E+06, 0.102280623025385154E+06, - 0.102298710646779829E+06, 0.102311720481040116E+06, 0.102316483254606297E+06, 0.102310329085876278E+06, 0.102292054686377145E+06, - 0.102261582445110776E+06, 0.102217278999264774E+06, 0.102159938958497296E+06, 0.102090651836751262E+06, 0.102014420809727890E+06, - 0.101933158619991009E+06, 0.101851325383247095E+06, 0.101773700996606422E+06, 0.101704655579852813E+06, 0.101645470306280142E+06, - 0.101599387487163476E+06, 0.101568762309086727E+06, 0.101551200721109650E+06, 0.101544950055199806E+06, 0.101545234940555893E+06, - 0.101536151271568684E+06, 0.101520957074193793E+06, 0.101499514166347813E+06, 0.101472481430049040E+06, 0.101447481037651174E+06, - 0.101431698928562022E+06, 0.101432519665399988E+06, 0.101455989679772596E+06, 0.101503867701139068E+06, 0.101569707321795955E+06, - 0.101641541183263049E+06, 0.101707359784777087E+06, 0.101760909663319078E+06, 0.101802944092112913E+06, 0.101837429073186562E+06, - 0.101868490058515003E+06, 0.101895999089963501E+06, 0.101921719560774494E+06, 0.101935208629263929E+06, 0.101934734847469299E+06, - 0.101921789770189804E+06, 0.101905337918664198E+06, 0.101889233907825823E+06, 0.101876223533093609E+06, 0.101864529046626514E+06, - 0.101850666495852842E+06, 0.101835575764428810E+06, 0.101815211112956240E+06, 0.101783740571016519E+06, 0.101739678309719806E+06, - 0.101689041718466135E+06, 0.101634899667157661E+06, 0.101583884425190394E+06, 0.101535509776931387E+06, 0.101491128441498251E+06, - 0.101453011421685966E+06, 0.101428708334432333E+06, 0.101415133080661239E+06, 0.101411902195392497E+06, 0.101415741142001993E+06, - 0.101421700628259656E+06, 0.101434916879656914E+06, 0.101454096376128975E+06, 0.101478884585159176E+06, 0.101507961817356219E+06, - 0.101534772926637874E+06, 0.101557090728886120E+06, 0.101574113620330667E+06, 0.101587280909418565E+06, 0.101593317203057959E+06, - 0.101589233196906163E+06, 0.101574814776511601E+06, 0.101547332581751762E+06, 0.101514869284270651E+06, 0.101481998192358122E+06, - 0.101452150550811974E+06, 0.101427572510067519E+06, 0.101409813743047896E+06, 0.101403676308175665E+06, 0.101410943983370715E+06, - 0.101433007929108295E+06, 0.101473704830047689E+06, 0.101528968358056605E+06, 0.101588585098966272E+06, 0.101648865730780017E+06, - 0.101706538485246449E+06, 0.101754905727487509E+06, 0.101785976200502380E+06, 0.101811017148794053E+06, 0.101832089114193281E+06, - 0.101851827047180632E+06, 0.101871848271984418E+06, 0.101914442748880043E+06, 0.100645050821058583E+06, 0.100697921098829320E+06, - 0.100761591261288675E+06, 0.100844244243942405E+06, 0.100934005537327830E+06, 0.101028963380699686E+06, 0.101127123691640561E+06, - 0.101226361187462535E+06, 0.101324505036089657E+06, 0.101419431488063798E+06, 0.101509163971173737E+06, 0.101590063785101636E+06, - 0.101657671467199980E+06, 0.101713396702810118E+06, 0.101758515364488485E+06, 0.101792091325616479E+06, 0.101813481673006056E+06, - 0.101822350253392695E+06, 0.101818668615804971E+06, 0.101802702749391727E+06, 0.101774619027333058E+06, 0.101728109831474241E+06, - 0.101668908134665704E+06, 0.101597584119515159E+06, 0.101516856663981162E+06, 0.101427599824837293E+06, 0.101330896414631075E+06, - 0.101227935201261804E+06, 0.101113372919066416E+06, 0.100989129696766337E+06, 0.100861373889168084E+06, 0.100733678225485171E+06, - 0.100610105917794019E+06, 0.100495004451233079E+06, 0.100402578780181022E+06, 0.100353109983544055E+06, 0.100326440206043859E+06, - 0.100322735531117156E+06, 0.100342802276422299E+06, 0.100386646482634504E+06, 0.100453451962470805E+06, 0.100549574897853177E+06, - 0.100666205550992949E+06, 0.100795807241975184E+06, 0.100931381874395069E+06, 0.101067411193584325E+06, 0.101192762302618430E+06, - 0.101283622761741586E+06, 0.101362350787791220E+06, 0.101430423297678528E+06, 0.101489314399921583E+06, 0.101540641111512159E+06, - 0.101585585061290316E+06, 0.101627410996723280E+06, 0.101667724011934901E+06, 0.101707970653555123E+06, 0.101751269935565215E+06, - 0.101811021944586406E+06, 0.101870809774501089E+06, 0.101928469764575537E+06, 0.101981732364511379E+06, 0.102026310772180412E+06, - 0.102061898497918446E+06, 0.102089845634957077E+06, 0.102110105242362508E+06, 0.102121882127719451E+06, 0.102124061355970684E+06, - 0.102123733324673376E+06, 0.102124546125847337E+06, 0.102129219082775890E+06, 0.102145351303200790E+06, 0.102166260171440692E+06, - 0.102190433845960331E+06, 0.102216291023032318E+06, 0.102242152119835548E+06, 0.102260901292175229E+06, 0.102271019053290802E+06, - 0.102270194336435845E+06, 0.102258376332468251E+06, 0.102232740434276260E+06, 0.102193082447496578E+06, 0.102140339518538545E+06, - 0.102077291761659100E+06, 0.102007943796066291E+06, 0.101934901694509579E+06, 0.101863769251748963E+06, 0.101795867039438526E+06, - 0.101734634917306947E+06, 0.101683465453549536E+06, 0.101643719755611994E+06, 0.101613589850316028E+06, 0.101591266195843433E+06, - 0.101568063676064237E+06, 0.101544190597726789E+06, 0.101518173523634308E+06, 0.101489293133355706E+06, 0.101456969224960791E+06, - 0.101429471204937334E+06, 0.101413477375518429E+06, 0.101417790921687454E+06, 0.101450822395921219E+06, 0.101510233193849519E+06, - 0.101585841462266966E+06, 0.101664438788265412E+06, 0.101733920550829818E+06, 0.101788706066789920E+06, 0.101825829329588349E+06, - 0.101850405636027645E+06, 0.101871083937706790E+06, 0.101887382097668247E+06, 0.101896455049501354E+06, 0.101897289413654769E+06, - 0.101886248870001597E+06, 0.101867415759247539E+06, 0.101847995171556977E+06, 0.101838485076295401E+06, 0.101834100858943464E+06, - 0.101832686427819717E+06, 0.101828063075528247E+06, 0.101816399093795466E+06, 0.101796719243765314E+06, 0.101767216502717842E+06, - 0.101721966250064579E+06, 0.101668953652310433E+06, 0.101611959093829370E+06, 0.101556227036786251E+06, 0.101506414279391960E+06, - 0.101461971390057777E+06, 0.101425468706421860E+06, 0.101404163733341426E+06, 0.101399096476539751E+06, 0.101405522879150667E+06, - 0.101421050121819761E+06, 0.101438689378578158E+06, 0.101460180927881505E+06, 0.101485796004159551E+06, 0.101513713918150577E+06, - 0.101542550860272706E+06, 0.101568068025141562E+06, 0.101588331740948968E+06, 0.101600913455480535E+06, 0.101607630152187616E+06, - 0.101607407012941694E+06, 0.101598607139348926E+06, 0.101581645287700347E+06, 0.101557205094100689E+06, 0.101527626140599372E+06, - 0.101498954813168501E+06, 0.101474478229909684E+06, 0.101456851592814171E+06, 0.101447916547657107E+06, 0.101451532249133510E+06, - 0.101469023039587555E+06, 0.101500095660945575E+06, 0.101543265481331633E+06, 0.101599989966535504E+06, 0.101661394639400824E+06, - 0.101722843298708525E+06, 0.101781217785530855E+06, 0.101833962893083750E+06, 0.101869504665579036E+06, 0.101891006131465809E+06, - 0.101907724224272592E+06, 0.101922174311177543E+06, 0.101935867942354409E+06, 0.101950426065447158E+06, 0.100607098755765037E+06, - 0.100655240281701743E+06, 0.100726600376942501E+06, 0.100809356254825645E+06, 0.100899004634437370E+06, 0.100993829979357848E+06, - 0.101091906852125423E+06, 0.101191172811513417E+06, 0.101289507328918466E+06, 0.101384817108912728E+06, 0.101475128234200398E+06, - 0.101556622026723067E+06, 0.101627508170991190E+06, 0.101685968687809233E+06, 0.101732567539073978E+06, 0.101767665006896481E+06, - 0.101790488350008833E+06, 0.101800548295886649E+06, 0.101797644943693944E+06, 0.101781861361740375E+06, 0.101747873759633774E+06, - 0.101701859594637368E+06, 0.101644745116156497E+06, 0.101577648617696381E+06, 0.101501095515959882E+06, 0.101413668608079461E+06, - 0.101318547892610906E+06, 0.101214143017131020E+06, 0.101099338905386365E+06, 0.100978397278849705E+06, 0.100854041321450713E+06, - 0.100729710648106629E+06, 0.100609462614676057E+06, 0.100497826949930561E+06, 0.100414459388165211E+06, 0.100356511886266162E+06, - 0.100322777395156372E+06, 0.100316042351856522E+06, 0.100332097081535409E+06, 0.100371561029088683E+06, 0.100439298341075264E+06, - 0.100532568922400489E+06, 0.100643002914990837E+06, 0.100765387761929349E+06, 0.100893492581718543E+06, 0.101020399500629603E+06, - 0.101112706098134367E+06, 0.101194570041727216E+06, 0.101269273413618284E+06, 0.101335562528605122E+06, 0.101394060212437602E+06, - 0.101445483977905038E+06, 0.101491335215433006E+06, 0.101533800970901357E+06, 0.101574594133775521E+06, 0.101615314066683874E+06, - 0.101662259781339875E+06, 0.101713149881755875E+06, 0.101764653351764238E+06, 0.101815034877485959E+06, 0.101864609985221337E+06, - 0.101906670614871124E+06, 0.101942016196974146E+06, 0.101970135166829859E+06, 0.101990609169172516E+06, 0.101996950610404732E+06, - 0.101996810049367472E+06, 0.101996317886868128E+06, 0.101998445642552077E+06, 0.102008824591142213E+06, 0.102027635971959302E+06, - 0.102051641514833580E+06, 0.102080850665324571E+06, 0.102117904503131693E+06, 0.102157634194590821E+06, 0.102192504721610734E+06, - 0.102219235460459910E+06, 0.102236777347130861E+06, 0.102242902162718834E+06, 0.102236355155139478E+06, 0.102216651883876315E+06, - 0.102180426444035780E+06, 0.102133083528179093E+06, 0.102077034681391349E+06, 0.102016323324797893E+06, 0.101953628282518228E+06, - 0.101890856388452012E+06, 0.101830915333128054E+06, 0.101779447310396441E+06, 0.101734080624489550E+06, 0.101693870504157734E+06, - 0.101656684022070389E+06, 0.101619340499046710E+06, 0.101584139894536143E+06, 0.101548750508560886E+06, 0.101508927593507731E+06, - 0.101469477866382847E+06, 0.101436805815304979E+06, 0.101415993387059803E+06, 0.101423466131997789E+06, 0.101453632286171531E+06, - 0.101508029375078389E+06, 0.101580823336132147E+06, 0.101656593588021438E+06, 0.101722011470405239E+06, 0.101771508397742451E+06, - 0.101807913013677957E+06, 0.101834964343916130E+06, 0.101850402618856344E+06, 0.101859186985402383E+06, 0.101860587418252151E+06, - 0.101854518941434624E+06, 0.101838720084331697E+06, 0.101819824582356232E+06, 0.101803402458019846E+06, 0.101796893209118367E+06, - 0.101799592648883248E+06, 0.101802452116411427E+06, 0.101801265547130839E+06, 0.101788566176828695E+06, 0.101765879286445153E+06, - 0.101732953696931960E+06, 0.101687950182710265E+06, 0.101633167492824286E+06, 0.101575598313827417E+06, 0.101518917024984054E+06, - 0.101468456845219422E+06, 0.101425013728590406E+06, 0.101390361593186084E+06, 0.101368216911030337E+06, 0.101370279495935785E+06, - 0.101384930299833504E+06, 0.101409208395769369E+06, 0.101438468993645060E+06, 0.101467787546390668E+06, 0.101499453696433935E+06, - 0.101530518538351142E+06, 0.101558938309742618E+06, 0.101581645149348537E+06, 0.101598207551499479E+06, 0.101607649285544889E+06, - 0.101609802844516307E+06, 0.101605573988511765E+06, 0.101593037714059843E+06, 0.101573514674016667E+06, 0.101549196000671189E+06, - 0.101522849664976588E+06, 0.101498330261054754E+06, 0.101479889987571310E+06, 0.101470097853539497E+06, 0.101471225349216998E+06, - 0.101486588535369752E+06, 0.101515334980482352E+06, 0.101556357596876667E+06, 0.101607560846124834E+06, 0.101666443968593783E+06, - 0.101729419441298363E+06, 0.101791387702929569E+06, 0.101848011454613385E+06, 0.101897514583017852E+06, 0.101939642427183790E+06, - 0.101960271009820077E+06, 0.101975158780464568E+06, 0.101986424653725320E+06, 0.101995822513432664E+06, 0.102004992120982162E+06, - 0.100578411052675729E+06, 0.100635318784110554E+06, 0.100702588041198120E+06, 0.100778983082032035E+06, 0.100867372014784603E+06, - 0.100961003291497836E+06, 0.101057944061462069E+06, 0.101156164506401896E+06, 0.101253562485936651E+06, 0.101348041518852056E+06, - 0.101435305736620867E+06, 0.101514565773677881E+06, 0.101585969098869886E+06, 0.101648080408071197E+06, 0.101699676885091831E+06, - 0.101737081890784044E+06, 0.101761287426791518E+06, 0.101772434840921720E+06, 0.101770158786062922E+06, 0.101748537453835859E+06, - 0.101714770053279746E+06, 0.101669742860261249E+06, 0.101614251954373656E+06, 0.101549290791504973E+06, 0.101476027861641691E+06, - 0.101395781087328636E+06, 0.101309332351133024E+06, 0.101208930191804626E+06, 0.101100827344175617E+06, 0.100987036454510526E+06, - 0.100870048278151575E+06, 0.100753131768219901E+06, 0.100640279785382925E+06, 0.100543839073244162E+06, 0.100470119984832578E+06, - 0.100412920571785522E+06, 0.100374418672954038E+06, 0.100356321711452154E+06, 0.100359754832890321E+06, 0.100393037545625295E+06, - 0.100461456665693026E+06, 0.100548040695085903E+06, 0.100649774320544951E+06, 0.100762231735881898E+06, 0.100879810004682629E+06, - 0.100978944107382951E+06, 0.101056139035317683E+06, 0.101129122973660080E+06, 0.101197131809436498E+06, 0.101259400864402109E+06, - 0.101315369721067444E+06, 0.101366567376128267E+06, 0.101413068730518760E+06, 0.101456050767495792E+06, 0.101497394979706776E+06, - 0.101540388547235518E+06, 0.101589723482442452E+06, 0.101639287384227951E+06, 0.101688119127630343E+06, 0.101734881227949692E+06, - 0.101774055633342999E+06, 0.101806176343790416E+06, 0.101833758016756707E+06, 0.101855867301477920E+06, 0.101869669516056863E+06, - 0.101867423844660036E+06, 0.101862185064065459E+06, 0.101857648911106618E+06, 0.101857166947219768E+06, 0.101869453362050233E+06, - 0.101889395994667357E+06, 0.101917145273055416E+06, 0.101952665990595080E+06, 0.102005113066678605E+06, 0.102059201352783610E+06, - 0.102110590092891594E+06, 0.102155134120450733E+06, 0.102189008661845161E+06, 0.102212893719536674E+06, 0.102224794573552019E+06, - 0.102221917283866860E+06, 0.102203717818992911E+06, 0.102173729797711843E+06, 0.102134066117315539E+06, 0.102088155198460590E+06, - 0.102037322504280150E+06, 0.101983804157969324E+06, 0.101930882216981918E+06, 0.101882568835916391E+06, 0.101835848097687121E+06, - 0.101791045975844638E+06, 0.101745969221785286E+06, 0.101701401299452598E+06, 0.101658034247290489E+06, 0.101613792586539625E+06, - 0.101566658381616784E+06, 0.101523107840297394E+06, 0.101485865057037794E+06, 0.101467196461575470E+06, 0.101465231282475186E+06, - 0.101481792269703801E+06, 0.101521171184929379E+06, 0.101584362409188645E+06, 0.101654606382538637E+06, 0.101708085889500013E+06, - 0.101750884319908815E+06, 0.101781151271932016E+06, 0.101802265119226417E+06, 0.101814660749166302E+06, 0.101818059160636913E+06, - 0.101815376584443497E+06, 0.101808025978518664E+06, 0.101796093709958877E+06, 0.101783205967926551E+06, 0.101773519465245452E+06, - 0.101768347262196490E+06, 0.101772318875173907E+06, 0.101774032894583841E+06, 0.101769304008539359E+06, 0.101752736287782580E+06, - 0.101724576811767562E+06, 0.101687606667018787E+06, 0.101642832213384885E+06, 0.101588413046507747E+06, 0.101532052789407389E+06, - 0.101477089478998780E+06, 0.101426937636667906E+06, 0.101383983337104524E+06, 0.101350070067916895E+06, 0.101327894217902314E+06, - 0.101330294767154453E+06, 0.101349863124191863E+06, 0.101379498558547202E+06, 0.101415335536042723E+06, 0.101450570253408456E+06, - 0.101486617503024216E+06, 0.101521790468661828E+06, 0.101553679702050722E+06, 0.101576951634593526E+06, 0.101592599322586801E+06, - 0.101600882539355007E+06, 0.101601982296252419E+06, 0.101593711037322297E+06, 0.101576295595724252E+06, 0.101552760225610255E+06, - 0.101525860012702775E+06, 0.101500304746004782E+06, 0.101482529221745732E+06, 0.101472615361795470E+06, 0.101472486373178777E+06, - 0.101483501295817390E+06, 0.101509279618775763E+06, 0.101549321581216165E+06, 0.101600205319342873E+06, 0.101659295372980385E+06, - 0.101721590076149907E+06, 0.101783337171577281E+06, 0.101842427132610639E+06, 0.101897333754838794E+06, 0.101946395082493676E+06, - 0.101988236942542819E+06, 0.102017526821220177E+06, 0.102031828714653369E+06, 0.102041305631011754E+06, 0.102047936605813040E+06, - 0.102053545022376406E+06, 0.100561618890645521E+06, 0.100618675407796312E+06, 0.100685232428278308E+06, 0.100760148812781379E+06, - 0.100842043992347171E+06, 0.100930626779751663E+06, 0.101025380770443604E+06, 0.101121496737499227E+06, 0.101216863489791329E+06, - 0.101306591907260168E+06, 0.101390820508431876E+06, 0.101469198549494278E+06, 0.101540194252744899E+06, 0.101602382440106187E+06, - 0.101654511301229999E+06, 0.101695567045773627E+06, 0.101724835997739530E+06, 0.101738206502799672E+06, 0.101728469792924647E+06, - 0.101706705766990082E+06, 0.101673943944349550E+06, 0.101630654689779229E+06, 0.101577521269946941E+06, 0.101515423259462186E+06, - 0.101445417400194085E+06, 0.101369301689578249E+06, 0.101289207179891833E+06, 0.101202291357723705E+06, 0.101109840862024794E+06, - 0.101010060536526478E+06, 0.100903624985256116E+06, 0.100797206247763170E+06, 0.100697721229483854E+06, 0.100617879166639119E+06, - 0.100549334862444375E+06, 0.100494554672908853E+06, 0.100455829928310864E+06, 0.100435159192249281E+06, 0.100434140902790139E+06, - 0.100463827743078145E+06, 0.100516682399563157E+06, 0.100588924784875649E+06, 0.100677081454071609E+06, 0.100775641942890885E+06, - 0.100875619518922729E+06, 0.100945870321605689E+06, 0.101013133541299816E+06, 0.101077503451870405E+06, 0.101138697419382283E+06, - 0.101196245970018281E+06, 0.101247478059058092E+06, 0.101295381961911495E+06, 0.101341293286219021E+06, 0.101385520658941925E+06, - 0.101428507369388099E+06, 0.101477628384924552E+06, 0.101527439265766385E+06, 0.101575625370267109E+06, 0.101621502298168052E+06, - 0.101663832962092813E+06, 0.101694866512688139E+06, 0.101720503961646493E+06, 0.101740691340596662E+06, 0.101755087321406769E+06, - 0.101753809082437700E+06, 0.101741526291839808E+06, 0.101728608499199152E+06, 0.101718502985755840E+06, 0.101716703972249219E+06, - 0.101727329002141589E+06, 0.101746865685733879E+06, 0.101776394054624689E+06, 0.101821041668101156E+06, 0.101883903619016666E+06, - 0.101950707313021689E+06, 0.102016579439056790E+06, 0.102074857884153607E+06, 0.102122966684235507E+06, 0.102162229375958646E+06, - 0.102191070936530305E+06, 0.102205291241337400E+06, 0.102205781057829736E+06, 0.102194562190391560E+06, 0.102173148282368042E+06, - 0.102144343637741913E+06, 0.102108830373893230E+06, 0.102068178268037620E+06, 0.102026306869767315E+06, 0.101984352807968040E+06, - 0.101941207962857719E+06, 0.101897306791024865E+06, 0.101851675563811092E+06, 0.101805566459294409E+06, 0.101759497966033654E+06, - 0.101711369603787127E+06, 0.101663340792011426E+06, 0.101619227450208040E+06, 0.101582695699032221E+06, 0.101558695579259147E+06, - 0.101546029798913645E+06, 0.101545588074274448E+06, 0.101567771713567665E+06, 0.101607748589558381E+06, 0.101688531278736336E+06, - 0.101712604992569381E+06, 0.101743096832469848E+06, 0.101760620836449103E+06, 0.101769961191482769E+06, 0.101772822414354494E+06, - 0.101770897529126829E+06, 0.101765958574697099E+06, 0.101759443212774597E+06, 0.101753267088761611E+06, 0.101750523367411457E+06, - 0.101749706624054088E+06, 0.101749678109808025E+06, 0.101749285406108000E+06, 0.101744523322546709E+06, 0.101733022628531995E+06, - 0.101711787295703034E+06, 0.101679008351294804E+06, 0.101639130834085285E+06, 0.101593625025334943E+06, 0.101541393928166348E+06, - 0.101487105460277933E+06, 0.101434417444056598E+06, 0.101385551046964029E+06, 0.101342006161188154E+06, 0.101307140291916905E+06, - 0.101283659047930778E+06, 0.101280818499683781E+06, 0.101302531797972479E+06, 0.101335121595155433E+06, 0.101374651651055479E+06, - 0.101415853089015101E+06, 0.101456337388213346E+06, 0.101495434796083166E+06, 0.101530692665964845E+06, 0.101556780887815577E+06, - 0.101572252524485899E+06, 0.101580348283763422E+06, 0.101581288046389862E+06, 0.101573497525049606E+06, 0.101553231842264839E+06, - 0.101527699101148173E+06, 0.101500366015751919E+06, 0.101475147159402040E+06, 0.101462872833845016E+06, 0.101461553787802579E+06, - 0.101470899121458526E+06, 0.101491574771335596E+06, 0.101526109462851629E+06, 0.101575993595638676E+06, 0.101633539000189689E+06, - 0.101696017474012726E+06, 0.101760468358366721E+06, 0.101823741442191822E+06, 0.101882328042741588E+06, 0.101936367528451112E+06, - 0.101984427337493747E+06, 0.102025414498975340E+06, 0.102058638462272647E+06, 0.102075739484648249E+06, 0.102084208298001584E+06, - 0.102090352048999324E+06, 0.102097473483009948E+06, 0.100548208007167515E+06, 0.100605095427047316E+06, 0.100670706010579946E+06, - 0.100743978438203791E+06, 0.100823629545142438E+06, 0.100908178696427160E+06, 0.100995982580288008E+06, 0.101087314481146692E+06, - 0.101176414116338347E+06, 0.101262458356531424E+06, 0.101344547676157905E+06, 0.101421163164599711E+06, 0.101490796631980134E+06, - 0.101552014265238700E+06, 0.101603518886931997E+06, 0.101644210460807284E+06, 0.101673244462872826E+06, 0.101680735386759538E+06, - 0.101674706326058280E+06, 0.101655388783202914E+06, 0.101624670690422980E+06, 0.101584138623298597E+06, 0.101534372942937815E+06, - 0.101476149074961329E+06, 0.101410568098193849E+06, 0.101343974609530458E+06, 0.101270896963409337E+06, 0.101192137510717424E+06, - 0.101108880683603289E+06, 0.101022724309234283E+06, 0.100935715390839119E+06, 0.100850390680374665E+06, 0.100774745624155403E+06, - 0.100703597598235123E+06, 0.100641200968575649E+06, 0.100589854186508950E+06, 0.100551830710988637E+06, 0.100529267606730675E+06, - 0.100528295556730111E+06, 0.100549682448172025E+06, 0.100589658714417616E+06, 0.100646339245096955E+06, 0.100716647083594595E+06, - 0.100796330849082777E+06, 0.100862509969368170E+06, 0.100921980592583743E+06, 0.100978572070364797E+06, 0.101033342690100937E+06, - 0.101086524659137300E+06, 0.101137201268390738E+06, 0.101183872284207260E+06, 0.101229010938212319E+06, 0.101273109489612165E+06, - 0.101316619892713090E+06, 0.101361395459038307E+06, 0.101412097251747749E+06, 0.101462443230712757E+06, 0.101510984330326377E+06, - 0.101556016862365155E+06, 0.101593723038725308E+06, 0.101622224707454676E+06, 0.101642725690420295E+06, 0.101656123946685548E+06, - 0.101662476115757090E+06, 0.101646779923387396E+06, 0.101626132803217159E+06, 0.101605491482854268E+06, 0.101589147781629013E+06, - 0.101585251139149026E+06, 0.101593208937773641E+06, 0.101612184718608827E+06, 0.101643206312575028E+06, 0.101695818816071987E+06, - 0.101764928221785813E+06, 0.101840193899589591E+06, 0.101916494038259974E+06, 0.101982907500618603E+06, 0.102040970845980133E+06, - 0.102091837845918839E+06, 0.102134078254784647E+06, 0.102164394058369740E+06, 0.102183887971255608E+06, 0.102192909965391460E+06, - 0.102191628213096585E+06, 0.102180725302393228E+06, 0.102161729213580154E+06, 0.102136138522838941E+06, 0.102107142982990175E+06, - 0.102074807010027405E+06, 0.102039103318180598E+06, 0.102000767273371166E+06, 0.101960362993373739E+06, 0.101918302600709168E+06, - 0.101875356744285367E+06, 0.101830760544282428E+06, 0.101787058843222650E+06, 0.101746854946198102E+06, 0.101712081627763269E+06, - 0.101684170852595838E+06, 0.101663959106856215E+06, 0.101652494286064044E+06, 0.101669560085676902E+06, 0.101704444840698343E+06, - 0.101700571875176043E+06, 0.101721535240709272E+06, 0.101745779185469408E+06, 0.101743873285487498E+06, 0.101738112527286779E+06, - 0.101730354652939321E+06, 0.101722249363334777E+06, 0.101714810079808434E+06, 0.101708639567806546E+06, 0.101706113756708350E+06, - 0.101714036658689380E+06, 0.101722369687996295E+06, 0.101728359378835914E+06, 0.101725407412529981E+06, 0.101714092896974922E+06, - 0.101695958827062772E+06, 0.101670373525743838E+06, 0.101635678816692453E+06, 0.101595418488830386E+06, 0.101550830010831283E+06, - 0.101501001127021242E+06, 0.101448446456819016E+06, 0.101396954698346424E+06, 0.101348845039631386E+06, 0.101304062386825870E+06, - 0.101267451987425215E+06, 0.101242193004994537E+06, 0.101233636404356381E+06, 0.101254846780972948E+06, 0.101287816325990920E+06, - 0.101328479900242310E+06, 0.101372263340125617E+06, 0.101414617472293321E+06, 0.101455579958959497E+06, 0.101492853465017077E+06, - 0.101523278594798670E+06, 0.101540885808085994E+06, 0.101551450070809791E+06, 0.101555278183125236E+06, 0.101552538038431827E+06, - 0.101533468414678850E+06, 0.101508500675057512E+06, 0.101482796927905787E+06, 0.101462379842144772E+06, 0.101454892688142470E+06, - 0.101464325466535738E+06, 0.101484135316789325E+06, 0.101513829601535981E+06, 0.101552601163330517E+06, 0.101603687744035284E+06, - 0.101663791684624332E+06, 0.101727767774695865E+06, 0.101792762408730807E+06, 0.101856171640086162E+06, 0.101914393070144404E+06, - 0.101966522189743861E+06, 0.102012469486766611E+06, 0.102051444457628037E+06, 0.102084940153698932E+06, 0.102109046172999864E+06, - 0.102120432478447823E+06, 0.102128404810622902E+06, 0.102134103220031029E+06, 0.100537775584916468E+06, 0.100594064464056602E+06, - 0.100658361556240663E+06, 0.100729672253821584E+06, 0.100806792979668055E+06, 0.100888331818478662E+06, 0.100972640703881028E+06, - 0.101054356923499276E+06, 0.101136218305642746E+06, 0.101218059282136164E+06, 0.101297128938538604E+06, 0.101371075949467442E+06, - 0.101438396724319813E+06, 0.101497631946100053E+06, 0.101547424352719638E+06, 0.101586575081165560E+06, 0.101605344305898223E+06, - 0.101611802560867160E+06, 0.101607062825132700E+06, 0.101591492022024759E+06, 0.101565740711957988E+06, 0.101530433274754861E+06, - 0.101485334233030881E+06, 0.101432291750987933E+06, 0.101377329376169117E+06, 0.101317207789115375E+06, 0.101251671625233779E+06, - 0.101181417558871472E+06, 0.101107498655681804E+06, 0.101031350521440603E+06, 0.100954821051961742E+06, 0.100889588668171375E+06, - 0.100831564213864112E+06, 0.100778330447916189E+06, 0.100731315465427993E+06, 0.100686629349019524E+06, 0.100649847468544394E+06, - 0.100626941602005361E+06, 0.100623247975728824E+06, 0.100634858419738637E+06, 0.100661484011766472E+06, 0.100701891329741135E+06, - 0.100753800334865009E+06, 0.100807541818709986E+06, 0.100848659308669099E+06, 0.100892548219874385E+06, 0.100938268977634565E+06, - 0.100984815257879964E+06, 0.101031244555508310E+06, 0.101077229148432787E+06, 0.101120811543651638E+06, 0.101163080762204729E+06, - 0.101205133328227632E+06, 0.101247555470727515E+06, 0.101295212705033598E+06, 0.101345677435592734E+06, 0.101395414916676789E+06, - 0.101443142113523310E+06, 0.101487391928729412E+06, 0.101523112860496927E+06, 0.101551091220213115E+06, 0.101571202362138647E+06, - 0.101582765233024111E+06, 0.101580576420733298E+06, 0.101559006090641735E+06, 0.101532638260340871E+06, 0.101505636854472148E+06, - 0.101482925905383032E+06, 0.101478221569192814E+06, 0.101483749961331385E+06, 0.101500913638159356E+06, 0.101531272427147036E+06, - 0.101587537367870260E+06, 0.101657752923680528E+06, 0.101735341257440305E+06, 0.101815392189158199E+06, 0.101883415778570139E+06, - 0.101946670918334348E+06, 0.102005217869353437E+06, 0.102057696492837160E+06, 0.102103056512906318E+06, 0.102140317424393026E+06, - 0.102168554530401248E+06, 0.102186118819968382E+06, 0.102192209463688341E+06, 0.102189750578587409E+06, 0.102179864477714669E+06, - 0.102164622014063440E+06, 0.102144222519251431E+06, 0.102119031801210527E+06, 0.102090001778615697E+06, 0.102058500322085427E+06, - 0.102024456224525828E+06, 0.101988984142914618E+06, 0.101952414757101811E+06, 0.101915891308398845E+06, 0.101881589770049075E+06, - 0.101851270386932039E+06, 0.101822396029631869E+06, 0.101797879312661476E+06, 0.101778855518825338E+06, 0.101766764384149530E+06, - 0.101767117846749301E+06, 0.101765125533417420E+06, 0.101764893632733350E+06, 0.101755791518637372E+06, 0.101738415072208983E+06, - 0.101717693412627370E+06, 0.101697849566573597E+06, 0.101679653680022544E+06, 0.101666036116405725E+06, 0.101657802915804903E+06, - 0.101659358381537619E+06, 0.101675042132274451E+06, 0.101690591932105221E+06, 0.101702102691112683E+06, 0.101698890266004499E+06, - 0.101685170063431069E+06, 0.101664399827034271E+06, 0.101636981850683907E+06, 0.101602430202209493E+06, 0.101562887328751778E+06, - 0.101519409569218289E+06, 0.101470958313536248E+06, 0.101419317694792786E+06, 0.101368660117972962E+06, 0.101321145110236859E+06, - 0.101276071087296979E+06, 0.101238240695380387E+06, 0.101211277007847661E+06, 0.101197902530338179E+06, 0.101215581555680212E+06, - 0.101246094621904544E+06, 0.101284825497456564E+06, 0.101328072813235674E+06, 0.101370225701783012E+06, 0.101411514155655474E+06, - 0.101449747457354388E+06, 0.101482930506732373E+06, 0.101505336383574511E+06, 0.101520932260299305E+06, 0.101530875621757339E+06, - 0.101535660531138637E+06, 0.101527586118792417E+06, 0.101509422337400800E+06, 0.101491464951296075E+06, 0.101477501245060659E+06, - 0.101471117495995146E+06, 0.101486007619632292E+06, 0.101510757134502812E+06, 0.101544449952577212E+06, 0.101586055913800505E+06, - 0.101635695535260849E+06, 0.101695729268481853E+06, 0.101758721424995805E+06, 0.101822050355179599E+06, 0.101883639102236455E+06, - 0.101943513401448537E+06, 0.101994845858460889E+06, 0.102039591261445501E+06, 0.102076829661285185E+06, 0.102105964877399136E+06, - 0.102126794141653125E+06, 0.102139212624906431E+06, 0.102146437567661822E+06, 0.102150500772487969E+06, 0.100529766660700814E+06, - 0.100584936771645967E+06, 0.100647449978120101E+06, 0.100716367627817162E+06, 0.100790551176116554E+06, 0.100867761991881081E+06, - 0.100944392016551021E+06, 0.101022283363768598E+06, 0.101100094859150340E+06, 0.101176390860314190E+06, 0.101249683961219664E+06, - 0.101319429056106397E+06, 0.101383533080313195E+06, 0.101439851116198683E+06, 0.101486953091034593E+06, 0.101514035380600777E+06, - 0.101530274350960754E+06, 0.101536503930903316E+06, 0.101532791192708028E+06, 0.101519414459226711E+06, 0.101496896545514726E+06, - 0.101466032997577611E+06, 0.101427914819550628E+06, 0.101386928031759133E+06, 0.101339510051842895E+06, 0.101286534144961479E+06, - 0.101229073267725224E+06, 0.101167697805292846E+06, 0.101103306882333491E+06, 0.101037149535454111E+06, 0.100976699320003900E+06, - 0.100924651148493227E+06, 0.100875357695395811E+06, 0.100829790933326149E+06, 0.100789063316662927E+06, 0.100754382631035871E+06, - 0.100727001544673127E+06, 0.100712812235705482E+06, 0.100707393276471601E+06, 0.100709250582931563E+06, 0.100722573388958059E+06, - 0.100746645734061545E+06, 0.100779895700786001E+06, 0.100804396943602027E+06, 0.100830073367685545E+06, 0.100859556300720957E+06, - 0.100892387870409642E+06, 0.100927975633083144E+06, 0.100965551602012056E+06, 0.101004683619487085E+06, 0.101045330597207460E+06, - 0.101087013008305672E+06, 0.101129446011777312E+06, 0.101173089623770706E+06, 0.101224746709176397E+06, 0.101276086346010212E+06, - 0.101326149198708168E+06, 0.101374129662616979E+06, 0.101418481717269460E+06, 0.101456308681409500E+06, 0.101487100471046055E+06, - 0.101509891159304345E+06, 0.101523887972284254E+06, 0.101519085107067789E+06, 0.101499035636973305E+06, 0.101474107212159681E+06, - 0.101448532598947975E+06, 0.101428087461135481E+06, 0.101420183587270294E+06, 0.101421890388346379E+06, 0.101434924963140438E+06, - 0.101461175739645623E+06, 0.101512942173575240E+06, 0.101576674737662266E+06, 0.101648311032956131E+06, 0.101723489882150840E+06, - 0.101787480132178534E+06, 0.101850028038504926E+06, 0.101910282046108841E+06, 0.101967661149882086E+06, 0.102023524732844948E+06, - 0.102074242265323439E+06, 0.102118210977073832E+06, 0.102152171123111169E+06, 0.102173114540454029E+06, 0.102185669537254769E+06, - 0.102190716001940251E+06, 0.102189608656019511E+06, 0.102183136999173483E+06, 0.102171644521202223E+06, 0.102155743904811548E+06, - 0.102135288964191917E+06, 0.102110694874428111E+06, 0.102083194402445937E+06, 0.102053140888443799E+06, 0.102023029614340878E+06, - 0.101994305634375618E+06, 0.101968130490490352E+06, 0.101944981816832049E+06, 0.101917533305451230E+06, 0.101891792228334729E+06, - 0.101867962161627947E+06, 0.101846942835226117E+06, 0.101828399128989535E+06, 0.101808349218342468E+06, 0.101783185169399527E+06, - 0.101752129728330387E+06, 0.101717730687555537E+06, 0.101682415904166002E+06, 0.101651064189548269E+06, 0.101628214835530569E+06, - 0.101615101470726600E+06, 0.101622078677434256E+06, 0.101640462768905272E+06, 0.101659951220889372E+06, 0.101675418801938606E+06, - 0.101673225878615136E+06, 0.101661928138148622E+06, 0.101642662123728296E+06, 0.101615888022248750E+06, 0.101582080924031965E+06, - 0.101543348953446970E+06, 0.101500631267208417E+06, 0.101452586432289259E+06, 0.101401256146737229E+06, 0.101350655526253569E+06, - 0.101302884790491065E+06, 0.101258041134635379E+06, 0.101219975854280870E+06, 0.101192075948155878E+06, 0.101176911767419486E+06, - 0.101189137340948175E+06, 0.101215695508690798E+06, 0.101250828629981872E+06, 0.101291224981271953E+06, 0.101331080207125036E+06, - 0.101370380504028988E+06, 0.101408081153893057E+06, 0.101442820210735677E+06, 0.101470980944890180E+06, 0.101493569638212546E+06, - 0.101512139169726375E+06, 0.101526611096755121E+06, 0.101532495997983948E+06, 0.101522627542459595E+06, 0.101512420265735462E+06, - 0.101505304745591246E+06, 0.101504334695817597E+06, 0.101519650872094615E+06, 0.101547899391185740E+06, 0.101583965970937570E+06, - 0.101627433236286277E+06, 0.101678082609776582E+06, 0.101737298190423375E+06, 0.101799968663717998E+06, 0.101862212637869627E+06, - 0.101921525254885390E+06, 0.101975615485969174E+06, 0.102022129365600340E+06, 0.102060753757629835E+06, 0.102091435012152549E+06, - 0.102114037703653419E+06, 0.102128864386004381E+06, 0.102136712377933785E+06, 0.102141341896670521E+06, 0.102142376150148193E+06, - 0.100523535976660394E+06, 0.100577052820581303E+06, 0.100637236479140498E+06, 0.100703252727134633E+06, 0.100772552025250538E+06, - 0.100843355148487011E+06, 0.100916200005643404E+06, 0.100989978980367348E+06, 0.101063458978865412E+06, 0.101135313180651341E+06, - 0.101204158192835064E+06, 0.101268596961150513E+06, 0.101327267803054579E+06, 0.101379219393509498E+06, 0.101411658551840825E+06, - 0.101435013304419204E+06, 0.101449723991433348E+06, 0.101455671589434161E+06, 0.101452876078218949E+06, 0.101441532989260799E+06, - 0.101422046210621003E+06, 0.101395056661309005E+06, 0.101365757780455795E+06, 0.101332677387078918E+06, 0.101293673363073496E+06, - 0.101249457127459696E+06, 0.101201011753970408E+06, 0.101149108558075517E+06, 0.101094587629913221E+06, 0.101040779590145175E+06, - 0.100995382496306906E+06, 0.100951579695860622E+06, 0.100909850434587090E+06, 0.100870858422985533E+06, 0.100835419863702089E+06, - 0.100804467614276640E+06, 0.100781685669042199E+06, 0.100767335396187831E+06, 0.100759289879836622E+06, 0.100757866722066232E+06, - 0.100763078005519506E+06, 0.100774506516805646E+06, 0.100786062954307781E+06, 0.100793269206959361E+06, 0.100804822422906916E+06, - 0.100820834091496698E+06, 0.100841255618750598E+06, 0.100865889078778535E+06, 0.100894749198775666E+06, 0.100927416956011424E+06, - 0.100963395796724551E+06, 0.101002315623510774E+06, 0.101043887250100248E+06, 0.101091039191901757E+06, 0.101144066547046401E+06, - 0.101197932497966991E+06, 0.101251195535936524E+06, 0.101302429885710808E+06, 0.101350642114984890E+06, 0.101394018940216731E+06, - 0.101430608604817069E+06, 0.101459057570376521E+06, 0.101478044590623220E+06, 0.101475387865733283E+06, 0.101461856537208994E+06, - 0.101443018892087159E+06, 0.101422586718123261E+06, 0.101406882059484167E+06, 0.101400350668646613E+06, 0.101401136819027641E+06, - 0.101411047287252732E+06, 0.101432998273655045E+06, 0.101475019664207721E+06, 0.101526976345226532E+06, 0.101585936905203198E+06, - 0.101648470322235924E+06, 0.101703644183282871E+06, 0.101759331828263079E+06, 0.101814866055730265E+06, 0.101869901220545507E+06, - 0.101928914084517004E+06, 0.101985712555209233E+06, 0.102038213057230983E+06, 0.102083503006818413E+06, 0.102116318481194263E+06, - 0.102142478770143352E+06, 0.102162510227578357E+06, 0.102176745632176331E+06, 0.102185382260760132E+06, 0.102189351865029588E+06, - 0.102188985060908250E+06, 0.102181978502190381E+06, 0.102166343098074416E+06, 0.102144949217122790E+06, 0.102118539343817305E+06, - 0.102090320241642432E+06, 0.102064949154931208E+06, 0.102041510471142406E+06, 0.102020894051233234E+06, 0.102002076919490239E+06, - 0.101978687982916701E+06, 0.101949947159686926E+06, 0.101920721729201105E+06, 0.101890840787188339E+06, 0.101858502442174227E+06, - 0.101821787050020226E+06, 0.101779170614060145E+06, 0.101731633607835785E+06, 0.101683872606227975E+06, 0.101641706250363815E+06, - 0.101609757163432500E+06, 0.101594408710602715E+06, 0.101599861763739507E+06, 0.101615600568650814E+06, 0.101634792862023707E+06, - 0.101649560822422354E+06, 0.101653324074520948E+06, 0.101647718645786255E+06, 0.101632892509714380E+06, 0.101607498410070068E+06, - 0.101573604987650251E+06, 0.101534332171428061E+06, 0.101490882315485491E+06, 0.101441914985506301E+06, 0.101390598505943577E+06, - 0.101340225499994325E+06, 0.101292893172337470E+06, 0.101249121490931240E+06, 0.101212206615971038E+06, 0.101184803983927792E+06, - 0.101169090523178049E+06, 0.101177216406820677E+06, 0.101199121436619549E+06, 0.101229487274117826E+06, 0.101265433425285810E+06, - 0.101301460838134211E+06, 0.101337546551032807E+06, 0.101373572179327981E+06, 0.101408481747705810E+06, 0.101441269413672373E+06, - 0.101471589979924611E+06, 0.101499094210238720E+06, 0.101523046431578827E+06, 0.101542483002773370E+06, 0.101543831013172356E+06, - 0.101544064378257113E+06, 0.101546276856648081E+06, 0.101553107004487800E+06, 0.101570758226424994E+06, 0.101603899362922981E+06, - 0.101643466171828870E+06, 0.101688020902613556E+06, 0.101736066489577410E+06, 0.101788778651382352E+06, 0.101846229772819366E+06, - 0.101902087545993330E+06, 0.101954243560902876E+06, 0.102000912067655503E+06, 0.102040460468150268E+06, 0.102070397922830496E+06, - 0.102092123176266672E+06, 0.102106027606901625E+06, 0.102112955537274407E+06, 0.102114233430400913E+06, 0.102110160726652859E+06, - 0.102103564706523437E+06, 0.100518689604693471E+06, 0.100570188968489383E+06, 0.100627085580226092E+06, 0.100688425846865008E+06, - 0.100752801664219747E+06, 0.100819711434372482E+06, 0.100888275239485200E+06, 0.100957467842034559E+06, 0.101026141537060103E+06, - 0.101093053338000958E+06, 0.101156896762082222E+06, 0.101216338486683555E+06, 0.101270050228910055E+06, 0.101303959592322863E+06, - 0.101331155104026548E+06, 0.101351367252466414E+06, 0.101364631606699608E+06, 0.101370354947362532E+06, 0.101368511938952593E+06, - 0.101359219879845390E+06, 0.101342770712901329E+06, 0.101323279228074665E+06, 0.101301442257920979E+06, 0.101274216777385765E+06, - 0.101241963101549714E+06, 0.101205245491941663E+06, 0.101164856326946916E+06, 0.101121839477416492E+06, 0.101077512757932636E+06, - 0.101040769978266762E+06, 0.101003816768457153E+06, 0.100967482943484662E+06, 0.100932599047362921E+06, 0.100899538621347674E+06, - 0.100868835073115974E+06, 0.100841822788138859E+06, 0.100822146543393857E+06, 0.100806275342578825E+06, 0.100794425676255967E+06, - 0.100786746583171247E+06, 0.100783223558698664E+06, 0.100783580356914550E+06, 0.100777240593710594E+06, 0.100772797244677698E+06, - 0.100771995893256535E+06, 0.100775628518037935E+06, 0.100784330892865575E+06, 0.100798832415402489E+06, 0.100819830174998613E+06, - 0.100845869940026445E+06, 0.100876821716840641E+06, 0.100912505059014773E+06, 0.100952732377084161E+06, 0.101002888396750073E+06, - 0.101057716858402928E+06, 0.101114463416698447E+06, 0.101171669964558023E+06, 0.101227895955215106E+06, 0.101283382095900626E+06, - 0.101334958226825765E+06, 0.101380444142405948E+06, 0.101418245220739525E+06, 0.101446407440058887E+06, 0.101450870781566424E+06, - 0.101446840525337553E+06, 0.101437171069169228E+06, 0.101424931486162226E+06, 0.101415799787063268E+06, 0.101412071436230064E+06, - 0.101412950725123417E+06, 0.101420014842418866E+06, 0.101435968083775937E+06, 0.101466352271600088E+06, 0.101503661068658505E+06, - 0.101546063702057072E+06, 0.101591631627750539E+06, 0.101633780932880036E+06, 0.101677233535571504E+06, 0.101722001382731454E+06, - 0.101768084603012278E+06, 0.101821697636718192E+06, 0.101876504987276159E+06, 0.101929725277785576E+06, 0.101979436992402916E+06, - 0.102021048948978249E+06, 0.102058738337406423E+06, 0.102093407361196325E+06, 0.102125483850517805E+06, 0.102150396359340550E+06, - 0.102169939569479524E+06, 0.102183985952502859E+06, 0.102191376525420768E+06, 0.102185685603385369E+06, 0.102169450367412603E+06, - 0.102146358644484295E+06, 0.102119842646822071E+06, 0.102094075555721618E+06, 0.102073636097204362E+06, 0.102056299206566269E+06, - 0.102039605800132485E+06, 0.102021374390271580E+06, 0.101998770599080817E+06, 0.101970853166201807E+06, 0.101937971227922506E+06, - 0.101900413338984057E+06, 0.101857321774920129E+06, 0.101808436773914334E+06, 0.101755010517902134E+06, 0.101701108954033160E+06, - 0.101652170013780356E+06, 0.101614009141804403E+06, 0.101594396568573589E+06, 0.101591391668390439E+06, 0.101601222158549106E+06, - 0.101618244864968845E+06, 0.101635666146591233E+06, 0.101645911116270872E+06, 0.101646699642323045E+06, 0.101636431221179548E+06, - 0.101609654908569675E+06, 0.101575048385323738E+06, 0.101534330175456344E+06, 0.101489532139668852E+06, 0.101438185377782967E+06, - 0.101385959560380783E+06, 0.101335194667244825E+06, 0.101287926354806812E+06, 0.101245203663320397E+06, 0.101209646717536321E+06, - 0.101183113534233489E+06, 0.101167399256673903E+06, 0.101173255047212093E+06, 0.101191266867459737E+06, 0.101217555082850216E+06, - 0.101249738922742486E+06, 0.101282540292244405E+06, 0.101316175523455371E+06, 0.101351248733287808E+06, 0.101387035478988051E+06, - 0.101423676548066695E+06, 0.101461316613871037E+06, 0.101497507316982592E+06, 0.101531170814716766E+06, 0.101561263551730270E+06, - 0.101576206116756410E+06, 0.101586714996634080E+06, 0.101597778963160541E+06, 0.101611464789349586E+06, 0.101630169532632644E+06, - 0.101664927306783313E+06, 0.101704113353483583E+06, 0.101746416585083251E+06, 0.101790584390523509E+06, 0.101835630759291264E+06, - 0.101885286326592308E+06, 0.101932452931491775E+06, 0.101975582690834839E+06, 0.102013491689891205E+06, 0.102045391567770363E+06, - 0.102064776694095723E+06, 0.102074647376751818E+06, 0.102077355461506435E+06, 0.102073009372423272E+06, 0.102062037114194260E+06, - 0.102045197475351029E+06, 0.102032862053345467E+06, 0.100516203599419721E+06, 0.100565218916304395E+06, 0.100617260891664730E+06, - 0.100673956912948721E+06, 0.100734470974993252E+06, 0.100796865106346027E+06, 0.100860518975916333E+06, 0.100924514220946570E+06, - 0.100987769915576093E+06, 0.101049106773664753E+06, 0.101107273840837661E+06, 0.101159905161335395E+06, 0.101194545284544540E+06, - 0.101223680392232840E+06, 0.101247089234949191E+06, 0.101264590537126525E+06, 0.101276076890375974E+06, 0.101281552099694847E+06, - 0.101280982310362175E+06, 0.101273943686812767E+06, 0.101262940282394411E+06, 0.101250027136122240E+06, 0.101232503141791327E+06, - 0.101210483653828545E+06, 0.101184228737493526E+06, 0.101154165002910086E+06, 0.101120906752935975E+06, 0.101085276329601198E+06, - 0.101055059197187191E+06, 0.101026747435691374E+06, 0.100998039675420368E+06, 0.100969366867174089E+06, 0.100941239345533730E+06, - 0.100914229378812437E+06, 0.100888324815689179E+06, 0.100866108957016506E+06, 0.100846788167441075E+06, 0.100829635550168416E+06, - 0.100814589974162533E+06, 0.100801624509251793E+06, 0.100790670060632678E+06, 0.100777235449754880E+06, 0.100759761272309115E+06, - 0.100744498201414157E+06, 0.100732510380326974E+06, 0.100724806452672536E+06, 0.100722312648745443E+06, 0.100727124797232929E+06, - 0.100739250727341408E+06, 0.100757924088756554E+06, 0.100783210335334952E+06, 0.100815143464493012E+06, 0.100854893070929611E+06, - 0.100907659832364327E+06, 0.100964923673006793E+06, 0.101024919613124526E+06, 0.101086575092280807E+06, 0.101148693938726588E+06, - 0.101212491181683130E+06, 0.101273236178490639E+06, 0.101328963344270000E+06, 0.101377761563192791E+06, 0.101415272026218052E+06, - 0.101431876200949133E+06, 0.101440210101162083E+06, 0.101442472419936472E+06, 0.101441025799434588E+06, 0.101440273436921474E+06, - 0.101441412028859413E+06, 0.101444242700126299E+06, 0.101450026358596937E+06, 0.101460476599565445E+06, 0.101479171248484825E+06, - 0.101501585380914767E+06, 0.101526832551874162E+06, 0.101554045751632453E+06, 0.101581088175181358E+06, 0.101609436210866566E+06, - 0.101639553558900094E+06, 0.101671699640266219E+06, 0.101712219603055011E+06, 0.101758423241378463E+06, 0.101805738585399682E+06, - 0.101852962314692355E+06, 0.101899310754771403E+06, 0.101946265190960024E+06, 0.101994211955312698E+06, 0.102041986736160048E+06, - 0.102085797585756969E+06, 0.102118247218596109E+06, 0.102143944256965377E+06, 0.102160780837746963E+06, 0.102166943569605079E+06, - 0.102158326056491831E+06, 0.102140886616651740E+06, 0.102119658913957755E+06, 0.102098499930418155E+06, 0.102080904999102844E+06, - 0.102066516422517074E+06, 0.102054504472527260E+06, 0.102039748545332608E+06, 0.102020600907278713E+06, 0.101995196360471018E+06, - 0.101963875490564329E+06, 0.101926792596088359E+06, 0.101883686482137069E+06, 0.101834681537134267E+06, 0.101781342698296125E+06, - 0.101725325815194636E+06, 0.101672635846780700E+06, 0.101631506833831096E+06, 0.101606236395939879E+06, 0.101597475949642787E+06, - 0.101603731801431582E+06, 0.101625616805930535E+06, 0.101646355193644980E+06, 0.101660903200991379E+06, 0.101665697733909154E+06, - 0.101654090491919997E+06, 0.101628201204639379E+06, 0.101592718579965003E+06, 0.101550440364196067E+06, 0.101501865690094695E+06, - 0.101447993110863157E+06, 0.101394085224710812E+06, 0.101342099839650211E+06, 0.101293810362817196E+06, 0.101250946740538144E+06, - 0.101215426073013630E+06, 0.101188872150540003E+06, 0.101172928312290038E+06, 0.101177855232292422E+06, 0.101192799356549629E+06, - 0.101215813274799773E+06, 0.101244944643138500E+06, 0.101275131726042877E+06, 0.101307174081444085E+06, 0.101341749283816956E+06, - 0.101378289914467692E+06, 0.101417332589792815E+06, 0.101459925058367837E+06, 0.101502062670976826E+06, 0.101542401965262659E+06, - 0.101579707707947498E+06, 0.101605443608385016E+06, 0.101624638835457939E+06, 0.101643143897028465E+06, 0.101662631727210814E+06, - 0.101684583160134658E+06, 0.101717073342919160E+06, 0.101753756733753267E+06, 0.101791888041425977E+06, 0.101829704004501327E+06, - 0.101866836453342432E+06, 0.101904943611418348E+06, 0.101941838182645661E+06, 0.101974805182480457E+06, 0.102002312012851093E+06, - 0.102022951004307251E+06, 0.102034588422611414E+06, 0.102035115083442288E+06, 0.102027670824049870E+06, 0.102012988929236992E+06, - 0.101992061827493861E+06, 0.101966142466949459E+06, 0.101941390128694227E+06, 0.100514970796833106E+06, 0.100558835077606142E+06, - 0.100607260398477549E+06, 0.100659655071357542E+06, 0.100715265417817398E+06, 0.100773178786940116E+06, 0.100832331209467477E+06, - 0.100890717506978282E+06, 0.100947860531606886E+06, 0.101002917974898708E+06, 0.101052195859970219E+06, 0.101086008388641625E+06, - 0.101115273930014009E+06, 0.101139857117029198E+06, 0.101159622269959131E+06, 0.101174458955507551E+06, 0.101184310219007501E+06, - 0.101189203551941042E+06, 0.101189284643897758E+06, 0.101186114007991724E+06, 0.101181270068826241E+06, 0.101171908271853448E+06, - 0.101158297091944536E+06, 0.101141013465808763E+06, 0.101120226925708761E+06, 0.101096239397641839E+06, 0.101069503529764173E+06, - 0.101044711943530012E+06, 0.101023498931715556E+06, 0.101001656961748697E+06, 0.100979308414565210E+06, 0.100956646567351941E+06, - 0.100933930245713549E+06, 0.100911474196776457E+06, 0.100891471408871366E+06, 0.100874184642035718E+06, 0.100856582877880370E+06, - 0.100838800023023141E+06, 0.100821055717833835E+06, 0.100804211342234223E+06, 0.100787393558680691E+06, 0.100761008720101294E+06, - 0.100734732500141792E+06, 0.100710174312875781E+06, 0.100688451173672947E+06, 0.100670708926784253E+06, 0.100658093134885828E+06, - 0.100653547542059678E+06, 0.100656000772829168E+06, 0.100665921580032358E+06, 0.100683713857153736E+06, 0.100709718860814537E+06, - 0.100748801228508208E+06, 0.100801823503565058E+06, 0.100861225414351109E+06, 0.100925234962917515E+06, 0.100992162379509042E+06, - 0.101061180367843728E+06, 0.101132825200904612E+06, 0.101202551905614309E+06, 0.101268249128093084E+06, 0.101327796560415067E+06, - 0.101375435871056281E+06, 0.101404641442907785E+06, 0.101425758115715638E+06, 0.101440394650381306E+06, 0.101450217422559756E+06, - 0.101458727822546076E+06, 0.101466619611513932E+06, 0.101473463661342525E+06, 0.101480183000528341E+06, 0.101487645084924108E+06, - 0.101498004691627488E+06, 0.101508871394480026E+06, 0.101520205876727661E+06, 0.101532083912951843E+06, 0.101544647478942308E+06, - 0.101558096380653675E+06, 0.101573050568899664E+06, 0.101590428478391070E+06, 0.101613972514299414E+06, 0.101648920007989669E+06, - 0.101687381188284504E+06, 0.101728410452743919E+06, 0.101771447499673959E+06, 0.101823102602039115E+06, 0.101880173737650490E+06, - 0.101939952057504197E+06, 0.101998671132745076E+06, 0.102047778748635392E+06, 0.102081283700837084E+06, 0.102104626314851310E+06, - 0.102117132803555040E+06, 0.102118423258010647E+06, 0.102110210033883151E+06, 0.102097574911021075E+06, 0.102084451243621195E+06, - 0.102073635202554215E+06, 0.102064362043080371E+06, 0.102055076068754133E+06, 0.102042482878204013E+06, 0.102025288372749041E+06, - 0.102001685111197468E+06, 0.101971967159961292E+06, 0.101935955157193923E+06, 0.101893991729276575E+06, 0.101846831752592378E+06, - 0.101795519670136433E+06, 0.101743547706146055E+06, 0.101695867126943878E+06, 0.101657509946900449E+06, 0.101633507015335563E+06, - 0.101630312812292759E+06, 0.101646392192630388E+06, 0.101668889131485266E+06, 0.101690704618882228E+06, 0.101706951776862203E+06, - 0.101710803657395867E+06, 0.101698215938497582E+06, 0.101672792047461742E+06, 0.101636565396570542E+06, 0.101592796399993240E+06, - 0.101539557371443312E+06, 0.101482505549964961E+06, 0.101424993232468783E+06, 0.101369854642081831E+06, 0.101318588912198626E+06, - 0.101273234899637857E+06, 0.101235886605930398E+06, 0.101207937266056106E+06, 0.101192654572110885E+06, 0.101195023201913122E+06, - 0.101207165308628755E+06, 0.101227217799392965E+06, 0.101253372828479289E+06, 0.101281097568006837E+06, 0.101311856149601605E+06, - 0.101345648585710995E+06, 0.101381904947258168E+06, 0.101421272631944972E+06, 0.101465042995991040E+06, 0.101508835313142772E+06, - 0.101551196503329018E+06, 0.101590747790927970E+06, 0.101621682377021876E+06, 0.101645776231220763E+06, 0.101668026172758953E+06, - 0.101689491310640093E+06, 0.101711039834481373E+06, 0.101739312046503386E+06, 0.101772112447843610E+06, 0.101804858575323728E+06, - 0.101836540790179512E+06, 0.101866167898941654E+06, 0.101895518959796798E+06, 0.101925181845865300E+06, 0.101950074886373186E+06, - 0.101969061543749413E+06, 0.101981139844382837E+06, 0.101985462621642117E+06, 0.101977051366888656E+06, 0.101959701573010476E+06, - 0.101935377351789808E+06, 0.101905526341066099E+06, 0.101871781260336036E+06, 0.101835950124052295E+06, 0.100513581366792612E+06, - 0.100554019513422492E+06, 0.100598330045055409E+06, 0.100645982440550681E+06, 0.100696296648474527E+06, 0.100748444268485124E+06, - 0.100801453596632928E+06, 0.100854218792530621E+06, 0.100905513420273754E+06, 0.100949903492433834E+06, 0.100981652101286920E+06, - 0.101009573882022771E+06, 0.101033642379315977E+06, 0.101053802681678295E+06, 0.101069990410599494E+06, 0.101082152783372076E+06, - 0.101090271780979238E+06, 0.101094389439540580E+06, 0.101095654589873608E+06, 0.101096426446181518E+06, 0.101093666576257223E+06, - 0.101087429979991794E+06, 0.101077885304853742E+06, 0.101065339866105438E+06, 0.101050264366095507E+06, 0.101032061623940666E+06, - 0.101012844290179608E+06, 0.100996964302313558E+06, 0.100980770382518007E+06, 0.100964167390490678E+06, 0.100947108284160218E+06, - 0.100929597010366851E+06, 0.100911688070060860E+06, 0.100893582156858451E+06, 0.100881499094758808E+06, 0.100868335774262508E+06, - 0.100853829088449522E+06, 0.100837798044627038E+06, 0.100820106254778977E+06, 0.100800619132333683E+06, 0.100775042434612522E+06, - 0.100741873481754403E+06, 0.100707732498585203E+06, 0.100674198173852987E+06, 0.100642873485934600E+06, 0.100616787946543613E+06, - 0.100595574493244218E+06, 0.100580853452354946E+06, 0.100573369371954352E+06, 0.100573991194533155E+06, 0.100583507950136642E+06, - 0.100602650207284896E+06, 0.100640744734742359E+06, 0.100692244893923940E+06, 0.100751760770043053E+06, 0.100817532941637197E+06, - 0.100887787830291069E+06, 0.100962050144272376E+06, 0.101039744081827113E+06, 0.101116778936214221E+06, 0.101190892544115282E+06, - 0.101259778024939151E+06, 0.101317175633898092E+06, 0.101357978697233921E+06, 0.101390994520218446E+06, 0.101417406025828648E+06, - 0.101438439369066997E+06, 0.101456877295130529E+06, 0.101473268310223793E+06, 0.101486701484946811E+06, 0.101497860785624449E+06, - 0.101507276039524368E+06, 0.101514237723266677E+06, 0.101518949933443597E+06, 0.101522085026395580E+06, 0.101524243387710812E+06, - 0.101525990459469860E+06, 0.101528194232853784E+06, 0.101531700114421837E+06, 0.101537410817429205E+06, 0.101546492305229593E+06, - 0.101567903398293696E+06, 0.101597046994887613E+06, 0.101630996885802393E+06, 0.101669578744430226E+06, 0.101714590729228381E+06, - 0.101773403370424989E+06, 0.101836874445576148E+06, 0.101900881795697991E+06, 0.101960687121667026E+06, 0.102008686461021774E+06, - 0.102037960319300764E+06, 0.102056196723826288E+06, 0.102065273055902842E+06, 0.102066914347914004E+06, 0.102063547681288721E+06, - 0.102059509493393372E+06, 0.102055314339710254E+06, 0.102050951292832178E+06, 0.102044111461623615E+06, 0.102032193928193665E+06, - 0.102014558041099997E+06, 0.101990243188425869E+06, 0.101960364538554975E+06, 0.101925773749474116E+06, 0.101887402236031689E+06, - 0.101845900309227552E+06, 0.101802685936693102E+06, 0.101760172705529054E+06, 0.101722211673123806E+06, 0.101698120911338105E+06, - 0.101693242621827798E+06, 0.101701200555816351E+06, 0.101719376001235738E+06, 0.101743123574903206E+06, 0.101765016750218143E+06, - 0.101780249253377129E+06, 0.101783141086790420E+06, 0.101773015434274668E+06, 0.101749944711398595E+06, 0.101715364981995837E+06, - 0.101666832632786492E+06, 0.101609705385936162E+06, 0.101549151532732372E+06, 0.101488088183680564E+06, 0.101428826013168145E+06, - 0.101371975824192647E+06, 0.101321130368394268E+06, 0.101278514950626632E+06, 0.101245823084732416E+06, 0.101229713571326531E+06, - 0.101228252523962350E+06, 0.101236240082679593E+06, 0.101252202249213733E+06, 0.101274554004038626E+06, 0.101299571284751277E+06, - 0.101328619250470016E+06, 0.101360846988672172E+06, 0.101395461438518367E+06, 0.101432766703864487E+06, 0.101473307204623023E+06, - 0.101514010222445781E+06, 0.101553562190150420E+06, 0.101590717887284656E+06, 0.101621853851409600E+06, 0.101647543893485548E+06, - 0.101671058814602424E+06, 0.101693056210828203E+06, 0.101714129349830531E+06, 0.101738767714405170E+06, 0.101767638107703999E+06, - 0.101795424880191335E+06, 0.101821375190827370E+06, 0.101844797381800585E+06, 0.101865803928462847E+06, 0.101887241456978605E+06, - 0.101903742329332832E+06, 0.101914505259923375E+06, 0.101918870822307275E+06, 0.101916337996088478E+06, 0.101901784739594950E+06, - 0.101874548045828633E+06, 0.101841292001167923E+06, 0.101803678665118787E+06, 0.101762946401782145E+06, 0.101720412831625683E+06, - 0.100515408142486602E+06, 0.100551771547175376E+06, 0.100591372710722571E+06, 0.100633738189236901E+06, 0.100678255595108407E+06, - 0.100724173138854574E+06, 0.100770602351690526E+06, 0.100816524184232330E+06, 0.100854077383907817E+06, 0.100882309305546267E+06, - 0.100908312612091744E+06, 0.100931760805658370E+06, 0.100951200960303162E+06, 0.100967005250871938E+06, 0.100979637398817140E+06, - 0.100989094128378885E+06, 0.100995390483498064E+06, 0.100999335048962457E+06, 0.101003623776222332E+06, 0.101005037852830981E+06, - 0.101003566011062838E+06, 0.100999260214490059E+06, 0.100992254677997669E+06, 0.100982785569327156E+06, 0.100971211282625562E+06, - 0.100958033151982832E+06, 0.100947713227353204E+06, 0.100936845226361344E+06, 0.100925586455398079E+06, 0.100913386427886144E+06, - 0.100900970885727584E+06, 0.100888200173575184E+06, 0.100874969576689109E+06, 0.100865322504112410E+06, 0.100857431942648880E+06, - 0.100848190571948653E+06, 0.100837041611588123E+06, 0.100823522652975458E+06, 0.100807245058683751E+06, 0.100787869439158167E+06, - 0.100757391684316404E+06, 0.100722719302699363E+06, 0.100685949398277124E+06, 0.100648508643416208E+06, 0.100611886678086536E+06, - 0.100577601709138020E+06, 0.100546746024841152E+06, 0.100520863816718731E+06, 0.100501704292206879E+06, 0.100490795320886566E+06, - 0.100489573337377500E+06, 0.100499397978964334E+06, 0.100534016438231076E+06, 0.100580634795179663E+06, 0.100636771821988543E+06, - 0.100700900349775504E+06, 0.100771475161532377E+06, 0.100847971681032548E+06, 0.100928796704597553E+06, 0.101010401416626322E+06, - 0.101090599925904797E+06, 0.101167170271662733E+06, 0.101233921628300508E+06, 0.101285179817018958E+06, 0.101329796645055787E+06, - 0.101368459516926756E+06, 0.101402063972120028E+06, 0.101431554233350747E+06, 0.101457605089509292E+06, 0.101479887700559731E+06, - 0.101498521383338972E+06, 0.101513550784224833E+06, 0.101523174827992611E+06, 0.101527475564510401E+06, 0.101528428909431837E+06, - 0.101526914423630384E+06, 0.101523962459723334E+06, 0.101520309815973524E+06, 0.101516483972158181E+06, 0.101514002315449485E+06, - 0.101514722417862809E+06, 0.101522283068780089E+06, 0.101544056083037300E+06, 0.101571190634249404E+06, 0.101603956939872005E+06, - 0.101642017592925840E+06, 0.101688020789515867E+06, 0.101748771464749283E+06, 0.101810913304749745E+06, 0.101870419614457860E+06, - 0.101923449267402393E+06, 0.101967012984100948E+06, 0.101994050943781331E+06, 0.102011245751808630E+06, 0.102022174558490107E+06, - 0.102029125315834375E+06, 0.102033037791472336E+06, 0.102034394101747268E+06, 0.102032647951692605E+06, 0.102026060860393205E+06, - 0.102014286206869132E+06, 0.101997287902874697E+06, 0.101973908129249903E+06, 0.101945685744995091E+06, 0.101913755487835835E+06, - 0.101879518050633123E+06, 0.101845462413359521E+06, 0.101814438244852194E+06, 0.101787626131292665E+06, 0.101769079269016060E+06, - 0.101760662506367516E+06, 0.101763690025728793E+06, 0.101778245812273221E+06, 0.101800769364128020E+06, 0.101825464810029356E+06, - 0.101849318133198423E+06, 0.101866690516569448E+06, 0.101874423097137915E+06, 0.101868322033511577E+06, 0.101847631400323429E+06, - 0.101809657617465651E+06, 0.101759023134988529E+06, 0.101701048933469734E+06, 0.101638831844116052E+06, 0.101574555754104877E+06, - 0.101509980617449197E+06, 0.101449449533488441E+06, 0.101394594035173650E+06, 0.101347377713062888E+06, 0.101309681379202666E+06, - 0.101289625678805663E+06, 0.101280310168622382E+06, 0.101280601256181355E+06, 0.101289183040688731E+06, 0.101304405647058535E+06, - 0.101324688438220604E+06, 0.101349563357044477E+06, 0.101377976699525767E+06, 0.101409028339016470E+06, 0.101442179995567261E+06, - 0.101476777887449236E+06, 0.101511738303380160E+06, 0.101546126683052818E+06, 0.101579196765551533E+06, 0.101607991498285395E+06, - 0.101632611269017507E+06, 0.101655502605639515E+06, 0.101677080810846644E+06, 0.101697768628730599E+06, 0.101719316740837268E+06, - 0.101742656846947124E+06, 0.101764837611636452E+06, 0.101785178883928776E+06, 0.101802942432164040E+06, 0.101817351144786313E+06, - 0.101829733328404807E+06, 0.101837655847121932E+06, 0.101840093420000965E+06, 0.101836302876360205E+06, 0.101825658934804160E+06, - 0.101806477102295394E+06, 0.101772591154458947E+06, 0.101732979877375386E+06, 0.101689114392674877E+06, 0.101642472350711148E+06, - 0.101594527408217124E+06, 0.100521483098622790E+06, 0.100553034374379175E+06, 0.100587237837357708E+06, 0.100623674982973011E+06, - 0.100661797732431733E+06, 0.100700926585977664E+06, 0.100740251364819997E+06, 0.100769102422238415E+06, 0.100792034055430398E+06, - 0.100813412935669796E+06, 0.100833061354508041E+06, 0.100850766087262135E+06, 0.100866291971468818E+06, 0.100879397215573350E+06, - 0.100889850447447578E+06, 0.100896874983048474E+06, 0.100901879624732552E+06, 0.100908045012513743E+06, 0.100911845008177756E+06, - 0.100913263133695262E+06, 0.100912309117336132E+06, 0.100909033352763217E+06, 0.100903541829518552E+06, 0.100896011438153932E+06, - 0.100886705535507586E+06, 0.100878478741165993E+06, 0.100870518698868997E+06, 0.100862258577488697E+06, 0.100853850267061993E+06, - 0.100845456536039332E+06, 0.100837262111476593E+06, 0.100829483975533818E+06, 0.100823560640713331E+06, 0.100821677296257287E+06, - 0.100817550375560750E+06, 0.100812145039498006E+06, 0.100804659355862575E+06, 0.100794378660273913E+06, 0.100780665915676014E+06, - 0.100760028631593887E+06, 0.100729776405452620E+06, 0.100695664007384359E+06, 0.100658676701707998E+06, 0.100619966898071216E+06, - 0.100580820672301052E+06, 0.100542567168908456E+06, 0.100504377972890885E+06, 0.100469914337100665E+06, 0.100440979221872039E+06, - 0.100419342752137061E+06, 0.100406745142411062E+06, 0.100406705150974245E+06, 0.100432011566503701E+06, 0.100468676779983842E+06, - 0.100515495509657252E+06, 0.100571181275147042E+06, 0.100634390994595859E+06, 0.100706784795550964E+06, 0.100786680087649889E+06, - 0.100869494529497810E+06, 0.100952905038971541E+06, 0.101034572199124057E+06, 0.101109749894571214E+06, 0.101172314783061069E+06, - 0.101229755518492922E+06, 0.101282350507230105E+06, 0.101330323821815167E+06, 0.101373763209774886E+06, 0.101412160049147336E+06, - 0.101445520624250392E+06, 0.101474055469030995E+06, 0.101497872459806793E+06, 0.101516095634979050E+06, 0.101525003393313920E+06, - 0.101529087732478598E+06, 0.101529555701643461E+06, 0.101527554535439689E+06, 0.101523924716972469E+06, 0.101519184588702949E+06, - 0.101515359052858228E+06, 0.101513419431477203E+06, 0.101515061119696038E+06, 0.101524365504439338E+06, 0.101545492952323460E+06, - 0.101572260216870665E+06, 0.101604062662735640E+06, 0.101640454999672467E+06, 0.101681140705924787E+06, 0.101736471342456469E+06, - 0.101791820815604107E+06, 0.101843025813835338E+06, 0.101888338055426750E+06, 0.101926497388645425E+06, 0.101956523951729410E+06, - 0.101977389503551763E+06, 0.101992863624521677E+06, 0.102004636055621828E+06, 0.102012873990628723E+06, 0.102016923944167502E+06, - 0.102015589894533594E+06, 0.102008242524494635E+06, 0.101994805733422399E+06, 0.101975527326879805E+06, 0.101951699623577006E+06, - 0.101924648595227743E+06, 0.101896134378200717E+06, 0.101868181223228035E+06, 0.101842690796364026E+06, 0.101823518800336897E+06, - 0.101810966006917995E+06, 0.101810361562174381E+06, 0.101819625326231835E+06, 0.101837655873780983E+06, 0.101862056783833701E+06, - 0.101890848697784473E+06, 0.101919025148523811E+06, 0.101942604878219718E+06, 0.101953732079914320E+06, 0.101952348959737385E+06, - 0.101930393928014251E+06, 0.101894531594142769E+06, 0.101847206824460780E+06, 0.101792255748977870E+06, 0.101731720782488774E+06, - 0.101667410578914118E+06, 0.101601955467176056E+06, 0.101538353512944566E+06, 0.101479206063803722E+06, 0.101426875382686587E+06, - 0.101386679687780139E+06, 0.101358881267937715E+06, 0.101340978693972764E+06, 0.101332100373616413E+06, 0.101331377677835859E+06, - 0.101337757250038121E+06, 0.101350176595795769E+06, 0.101367529237839539E+06, 0.101388710034061514E+06, 0.101412656335492444E+06, - 0.101438146564572395E+06, 0.101465030990242507E+06, 0.101492743759273944E+06, 0.101520528048576030E+06, 0.101547656089289187E+06, - 0.101573646733203917E+06, 0.101598176409242311E+06, 0.101621015547307805E+06, 0.101642090999262466E+06, 0.101661344187207244E+06, - 0.101680048117579805E+06, 0.101700060142799775E+06, 0.101717676267340707E+06, 0.101732293239297534E+06, 0.101743299867593101E+06, - 0.101750084174098316E+06, 0.101754164408332057E+06, 0.101753815772929738E+06, 0.101747787368181351E+06, 0.101735699407228763E+06, - 0.101717273900884597E+06, 0.101692348035134710E+06, 0.101654861811602153E+06, 0.101610673295375120E+06, 0.101562751614357956E+06, - 0.101512638519625150E+06, 0.101461813597627668E+06, 0.100533318325900138E+06, 0.100559018706234609E+06, 0.100586667516233734E+06, - 0.100616430509356855E+06, 0.100647457772304173E+06, 0.100679140607943787E+06, 0.100698527261697847E+06, 0.100715798167830915E+06, - 0.100731931694921790E+06, 0.100746896633405166E+06, 0.100760616569955790E+06, 0.100772979417731243E+06, 0.100783848302944942E+06, - 0.100793073809534399E+06, 0.100800507571478287E+06, 0.100806483772806212E+06, 0.100813801762586605E+06, 0.100819127022868051E+06, - 0.100822124828140237E+06, 0.100822902466370797E+06, 0.100821716855826366E+06, 0.100818621189554789E+06, 0.100813702346186765E+06, - 0.100807092657524059E+06, 0.100799795563032545E+06, 0.100792638500522866E+06, 0.100785284309503724E+06, 0.100777874398839282E+06, - 0.100770527259340961E+06, 0.100763347669699418E+06, 0.100756435329570639E+06, 0.100749892793592095E+06, 0.100749373875165576E+06, - 0.100750222933888348E+06, 0.100750603463785985E+06, 0.100749864242144642E+06, 0.100747320689053289E+06, 0.100742256076426071E+06, - 0.100733920852957395E+06, 0.100715113795294979E+06, 0.100689064952966379E+06, 0.100657845711542803E+06, 0.100623250918292935E+06, - 0.100586038000497676E+06, 0.100547134348203457E+06, 0.100506028825088957E+06, 0.100462291432826620E+06, 0.100421048783818245E+06, - 0.100384122683633468E+06, 0.100353368412380165E+06, 0.100330670880394246E+06, 0.100321776442990944E+06, 0.100334624094787185E+06, - 0.100358437666044687E+06, 0.100392488442372807E+06, 0.100435977221972600E+06, 0.100488073955800399E+06, 0.100552415559277870E+06, - 0.100627255810881121E+06, 0.100707092289738357E+06, 0.100789756856378794E+06, 0.100873101113792349E+06, 0.100954216801293107E+06, - 0.101025863759345229E+06, 0.101094584610272868E+06, 0.101160235498342692E+06, 0.101222606811297053E+06, 0.101281370962640489E+06, - 0.101332163642811851E+06, 0.101376972618262807E+06, 0.101416728366496085E+06, 0.101451473910749541E+06, 0.101480959555488313E+06, - 0.101500381551832834E+06, 0.101512210195641775E+06, 0.101519514244373393E+06, 0.101523444803633465E+06, 0.101525155563451161E+06, - 0.101524617344664759E+06, 0.101522395272590235E+06, 0.101521151212846860E+06, 0.101522340865174643E+06, 0.101527072168721963E+06, - 0.101537882062393008E+06, 0.101559080181885220E+06, 0.101584526114373686E+06, 0.101614244538571933E+06, 0.101647894372795839E+06, - 0.101684681982032082E+06, 0.101726895995367770E+06, 0.101774312937747018E+06, 0.101818830342195433E+06, 0.101858335228138851E+06, - 0.101893176738273338E+06, 0.101922949034176403E+06, 0.101947508183230893E+06, 0.101967684274917294E+06, 0.101983202615811271E+06, - 0.101993442131563672E+06, 0.101998812147038072E+06, 0.101998613039324773E+06, 0.101992329378160532E+06, 0.101980249760691964E+06, - 0.101962626054339082E+06, 0.101940465078019130E+06, 0.101915907622174098E+06, 0.101890478407916715E+06, 0.101866977689826570E+06, - 0.101849754719304707E+06, 0.101837665745559920E+06, 0.101833602586389810E+06, 0.101841599729967784E+06, 0.101859775477370218E+06, - 0.101886984424902446E+06, 0.101919867690970117E+06, 0.101951746477934430E+06, 0.101978482983373731E+06, 0.101993393892969194E+06, - 0.101991412250034802E+06, 0.101974123414601141E+06, 0.101945239434022718E+06, 0.101905684392780662E+06, 0.101856949799144815E+06, - 0.101801731134592686E+06, 0.101742504741481811E+06, 0.101681038790539489E+06, 0.101619356067038418E+06, 0.101559380452289755E+06, - 0.101505641285490463E+06, 0.101461701752299428E+06, 0.101426005705293821E+06, 0.101398896334048623E+06, 0.101380282180095601E+06, - 0.101369836995025384E+06, 0.101367277170112575E+06, 0.101370986941406809E+06, 0.101379906423074499E+06, 0.101392831033495459E+06, - 0.101408554312665205E+06, 0.101424869582900283E+06, 0.101443182567207696E+06, 0.101462968409184250E+06, 0.101483671134433898E+06, - 0.101504732894123474E+06, 0.101527421913474638E+06, 0.101550095820920280E+06, 0.101571562110317216E+06, 0.101591355780169426E+06, - 0.101609078015251362E+06, 0.101625097194956237E+06, 0.101640337310256451E+06, 0.101652605117688974E+06, 0.101661397415208048E+06, - 0.101666225004107662E+06, 0.101666619975683658E+06, 0.101662556408727090E+06, 0.101653580628123964E+06, 0.101639218203126409E+06, - 0.101619381357809092E+06, 0.101594063768788052E+06, 0.101563351510846944E+06, 0.101523851133020638E+06, 0.101476807405962056E+06, - 0.101426978369828445E+06, 0.101375797428347505E+06, 0.101324598573980998E+06, 0.100551530203326562E+06, 0.100571727120900570E+06, - 0.100593051779557791E+06, 0.100614868997312486E+06, 0.100634144763448072E+06, 0.100645833089619511E+06, 0.100657235284227281E+06, - 0.100667686387769805E+06, 0.100677292913672762E+06, 0.100686112073701530E+06, 0.100694158258119947E+06, 0.100701410586929007E+06, - 0.100707821531117806E+06, 0.100713326592793543E+06, 0.100718292448464927E+06, 0.100725135313074701E+06, 0.100730736036059810E+06, - 0.100734776949494801E+06, 0.100736983079004160E+06, 0.100737142689159882E+06, 0.100735125062421313E+06, 0.100730895453973062E+06, - 0.100724936089312163E+06, 0.100718101716589372E+06, 0.100710128659467940E+06, 0.100701978143640532E+06, 0.100693854728853868E+06, - 0.100685917546278361E+06, 0.100678288281938949E+06, 0.100671058793584918E+06, 0.100664298277410649E+06, 0.100660712381595760E+06, - 0.100661723426356752E+06, 0.100663150264819735E+06, 0.100664393149270531E+06, 0.100664799968549007E+06, 0.100663672287188572E+06, - 0.100660269896986065E+06, 0.100653054372944243E+06, 0.100638919308817800E+06, 0.100620188598009743E+06, 0.100597036492593310E+06, - 0.100569788712949841E+06, 0.100538901380231502E+06, 0.100504939031211514E+06, 0.100464616545740675E+06, 0.100420082357890147E+06, - 0.100376069547844643E+06, 0.100334560389268605E+06, 0.100297550195584583E+06, 0.100267038173233668E+06, 0.100249183652606138E+06, - 0.100248031291493899E+06, 0.100256756900526307E+06, 0.100275250996069168E+06, 0.100303318888992886E+06, 0.100340733860613560E+06, - 0.100392668457859341E+06, 0.100458197469974984E+06, 0.100530344725997711E+06, 0.100607247564767138E+06, 0.100687079608666914E+06, - 0.100768076831136714E+06, 0.100845286817167653E+06, 0.100921915425536106E+06, 0.100997896081585553E+06, 0.101072548063258917E+06, - 0.101144965887108527E+06, 0.101210711249507964E+06, 0.101267759563819229E+06, 0.101319932991058231E+06, 0.101367121820533270E+06, - 0.101409115377035181E+06, 0.101445063624758288E+06, 0.101467868269852072E+06, 0.101485221941439115E+06, 0.101498187544558168E+06, - 0.101507881316604296E+06, 0.101515310949875333E+06, 0.101519599975213365E+06, 0.101522106701145909E+06, 0.101524851878856789E+06, - 0.101529230085351330E+06, 0.101536191323789782E+06, 0.101546697524065807E+06, 0.101566224388216360E+06, 0.101589918902257763E+06, - 0.101616845515287452E+06, 0.101647215589828833E+06, 0.101680341115790361E+06, 0.101715366089036543E+06, 0.101752316168779886E+06, - 0.101791176678952732E+06, 0.101827052748008107E+06, 0.101859044996505589E+06, 0.101887670526199319E+06, 0.101913122414070647E+06, - 0.101934463666524054E+06, 0.101952632860506710E+06, 0.101966700037415663E+06, 0.101975525710702976E+06, 0.101978461989723088E+06, - 0.101975173899271627E+06, 0.101964823473388897E+06, 0.101947665044748559E+06, 0.101926227690128857E+06, 0.101900561072349257E+06, - 0.101874251008341424E+06, 0.101851830347918643E+06, 0.101836189738381829E+06, 0.101828888260193082E+06, 0.101835000054969831E+06, - 0.101851733006117443E+06, 0.101877232568018531E+06, 0.101909510086827300E+06, 0.101940989073697696E+06, 0.101965528537313672E+06, - 0.101979608526400712E+06, 0.101982970036656799E+06, 0.101975240583827399E+06, 0.101955388827734365E+06, 0.101924654892196661E+06, - 0.101887578699447098E+06, 0.101842186561714494E+06, 0.101789317463778367E+06, 0.101732832688802417E+06, 0.101675288481823532E+06, - 0.101619263688587671E+06, 0.101568048094496247E+06, 0.101521062700628769E+06, 0.101479654154784279E+06, 0.101445221739311222E+06, - 0.101418076416901371E+06, 0.101399045923829544E+06, 0.101387018859001342E+06, 0.101381135963448469E+06, 0.101380650007871780E+06, - 0.101384722424981679E+06, 0.101391720295262028E+06, 0.101400396876228624E+06, 0.101411346068523795E+06, 0.101424155121034681E+06, - 0.101438457710905030E+06, 0.101453929199892154E+06, 0.101472913422971527E+06, 0.101492074099173711E+06, 0.101510560767898467E+06, - 0.101527744434993336E+06, 0.101543054611759319E+06, 0.101555675557276962E+06, 0.101564929191696821E+06, 0.101571016898623420E+06, - 0.101573544015567939E+06, 0.101572121672385867E+06, 0.101566370463087485E+06, 0.101554662308102721E+06, 0.101536629786898047E+06, - 0.101513803810128695E+06, 0.101486361735486105E+06, 0.101454563654390658E+06, 0.101418767627698660E+06, 0.101378013088347099E+06, - 0.101330707820646552E+06, 0.101282264555356756E+06, 0.101234028760920090E+06, 0.101187294700704195E+06, 0.100576965529563255E+06, - 0.100591678218711211E+06, 0.100607008383076420E+06, 0.100616323103987481E+06, 0.100620258552074985E+06, 0.100623651287353903E+06, - 0.100626463751429124E+06, 0.100628648078344573E+06, 0.100631378331016531E+06, 0.100634129163284262E+06, 0.100636562070289394E+06, - 0.100638738873227092E+06, 0.100640693964837556E+06, 0.100643049230926015E+06, 0.100648185229669587E+06, 0.100652678597624064E+06, - 0.100656261255894686E+06, 0.100658660860211399E+06, 0.100659622834889029E+06, 0.100658930196984991E+06, 0.100656421096238220E+06, - 0.100652004015325234E+06, 0.100645400203396595E+06, 0.100634943591599571E+06, 0.100623790772243461E+06, 0.100612166299320219E+06, - 0.100600323220825783E+06, 0.100589367539107639E+06, 0.100580442279124138E+06, 0.100572243324848969E+06, 0.100564857703730217E+06, - 0.100563322531964557E+06, 0.100563065402201857E+06, 0.100563607762748041E+06, 0.100564433779967017E+06, 0.100564965723689515E+06, - 0.100564572517680892E+06, 0.100562577288210698E+06, 0.100558128795487573E+06, 0.100550306656448985E+06, 0.100538784205606309E+06, - 0.100523395229331582E+06, 0.100504107960399502E+06, 0.100481009310527326E+06, 0.100454286649172413E+06, 0.100417998848613410E+06, - 0.100377654481256992E+06, 0.100336323265197076E+06, 0.100295695643989733E+06, 0.100257502669341542E+06, 0.100223497751048752E+06, - 0.100198365893325012E+06, 0.100183895883056030E+06, 0.100176748173119719E+06, 0.100177409781642637E+06, 0.100186348863375271E+06, - 0.100204071706916817E+06, 0.100236974921233719E+06, 0.100288202283773542E+06, 0.100347584962604393E+06, 0.100413567810885099E+06, - 0.100484685800612540E+06, 0.100559609376774941E+06, 0.100637786676389092E+06, 0.100719143709254829E+06, 0.100802573207076450E+06, - 0.100886953694736978E+06, 0.100970981281993736E+06, 0.101053137277853224E+06, 0.101122114850514685E+06, 0.101186021991939982E+06, - 0.101244880734986247E+06, 0.101298842483030225E+06, 0.101347976726965513E+06, 0.101388865316328054E+06, 0.101417494561782441E+06, - 0.101441011237599363E+06, 0.101460308434203442E+06, 0.101476142058636950E+06, 0.101489111828680267E+06, 0.101498177707129027E+06, - 0.101504275218907074E+06, 0.101509888353816961E+06, 0.101516205429889771E+06, 0.101524373025953057E+06, 0.101535544403108914E+06, - 0.101550771587497264E+06, 0.101572228401773711E+06, 0.101596922610232752E+06, 0.101624267341491490E+06, 0.101653892197854148E+06, - 0.101685371964174541E+06, 0.101717744368668005E+06, 0.101749825128001146E+06, 0.101781782699506482E+06, 0.101812709382600748E+06, - 0.101841353313321029E+06, 0.101867900490832937E+06, 0.101893188014203624E+06, 0.101915193984979924E+06, 0.101933169418903170E+06, - 0.101945970442238802E+06, 0.101952233644425200E+06, 0.101949989638197949E+06, 0.101938812116678397E+06, 0.101921309771955755E+06, - 0.101897306204910492E+06, 0.101870511994013577E+06, 0.101845727987357284E+06, 0.101827162893394896E+06, 0.101815741469126820E+06, - 0.101815347936997394E+06, 0.101829035456973521E+06, 0.101849227052658054E+06, 0.101873947210599901E+06, 0.101900166979187969E+06, - 0.101922501433547208E+06, 0.101938537730062933E+06, 0.101945622505927895E+06, 0.101943220759731354E+06, 0.101933233593028053E+06, - 0.101913480508279812E+06, 0.101884226864883196E+06, 0.101847880125950556E+06, 0.101805028700279145E+06, 0.101757073613196655E+06, - 0.101706590973509752E+06, 0.101656335498895467E+06, 0.101607292592687139E+06, 0.101560626743744360E+06, 0.101517500638364392E+06, - 0.101478925847553910E+06, 0.101446343700160927E+06, 0.101419879250754559E+06, 0.101398958955256283E+06, 0.101383710029623602E+06, - 0.101374588904196891E+06, 0.101370168865842439E+06, 0.101369105684779628E+06, 0.101370929669406774E+06, 0.101375271898136503E+06, - 0.101381760968333765E+06, 0.101390061699633865E+06, 0.101400585700279218E+06, 0.101414338736935577E+06, 0.101428328122293344E+06, - 0.101441772517097343E+06, 0.101453941211612226E+06, 0.101464150240094372E+06, 0.101470694861331591E+06, 0.101472993001670693E+06, - 0.101472098749250043E+06, 0.101467692245319617E+06, 0.101459459863983502E+06, 0.101447099986294808E+06, 0.101428337148487699E+06, - 0.101402273058774066E+06, 0.101372210423711062E+06, 0.101338601145403256E+06, 0.101301942982120236E+06, 0.101262793506100817E+06, - 0.101221677786233748E+06, 0.101176731503889008E+06, 0.101131973913656722E+06, 0.101088479543089110E+06, 0.101047269615024925E+06, - 0.100610222449967056E+06, 0.100619368346169198E+06, 0.100619051340248508E+06, 0.100617580194349401E+06, 0.100615500249746110E+06, - 0.100612844510783863E+06, 0.100609637715591729E+06, 0.100605899629696811E+06, 0.100601648181252385E+06, 0.100596902436962919E+06, - 0.100591685422206356E+06, 0.100587098052459361E+06, 0.100585436102778738E+06, 0.100587603438895458E+06, 0.100589520780671664E+06, - 0.100591027689952418E+06, 0.100591916118502122E+06, 0.100591952568608729E+06, 0.100590898493088505E+06, 0.100588528847269830E+06, - 0.100584648718839380E+06, 0.100579107975368854E+06, 0.100568181408087505E+06, 0.100556028233350124E+06, 0.100543329111321902E+06, - 0.100530292741429832E+06, 0.100517138305172819E+06, 0.100504104046550317E+06, 0.100491454262540399E+06, 0.100479484740824249E+06, - 0.100470155044772182E+06, 0.100463687256117119E+06, 0.100458896797118272E+06, 0.100455620879032227E+06, 0.100454260984570079E+06, - 0.100454114005490293E+06, 0.100453954401208190E+06, 0.100453246548017763E+06, 0.100453544534649671E+06, 0.100451784335522374E+06, - 0.100447402272511725E+06, 0.100439945313556469E+06, 0.100429058870933281E+06, 0.100414474145118424E+06, 0.100395971880822995E+06, - 0.100364627363950829E+06, 0.100330069619100730E+06, 0.100293517928604648E+06, 0.100256250274621154E+06, 0.100219578502905337E+06, - 0.100184821369736295E+06, 0.100153602788173128E+06, 0.100126759271301082E+06, 0.100104736505522000E+06, 0.100088530813236051E+06, - 0.100079174170628597E+06, 0.100077782208942881E+06, 0.100089384583247156E+06, 0.100124675759422840E+06, 0.100169171328412835E+06, - 0.100221720050477204E+06, 0.100281293603445694E+06, 0.100347032197583365E+06, 0.100419381954596480E+06, 0.100501100689285435E+06, - 0.100587123759395632E+06, 0.100676265830202465E+06, 0.100767041531711700E+06, 0.100857717751965523E+06, 0.100942425402787208E+06, - 0.101015252626361835E+06, 0.101084506455799405E+06, 0.101149930187516162E+06, 0.101211031351648766E+06, 0.101267093811678642E+06, - 0.101313485842090842E+06, 0.101347864445685816E+06, 0.101377348186801406E+06, 0.101401563075397265E+06, 0.101421152746379506E+06, - 0.101436703379514453E+06, 0.101448418323353719E+06, 0.101455739244278491E+06, 0.101461288984514365E+06, 0.101466634842994637E+06, - 0.101474204912937290E+06, 0.101485236375258624E+06, 0.101500599693197641E+06, 0.101519974341673922E+06, 0.101542425947491516E+06, - 0.101567705013514729E+06, 0.101595287754062447E+06, 0.101623559085342917E+06, 0.101653300863473152E+06, 0.101684268370484802E+06, - 0.101715396578327011E+06, 0.101746648790418796E+06, 0.101778157009654227E+06, 0.101810294427225992E+06, 0.101840186138904261E+06, - 0.101866664724512098E+06, 0.101888829801923304E+06, 0.101904365840783910E+06, 0.101910875981687976E+06, 0.101907623411986046E+06, - 0.101897747215346535E+06, 0.101880196785050444E+06, 0.101858268156208374E+06, 0.101836776997478300E+06, 0.101819952813389187E+06, - 0.101808320250000223E+06, 0.101803197426602317E+06, 0.101808609816872282E+06, 0.101820932164050100E+06, 0.101835981686293468E+06, - 0.101853975694054869E+06, 0.101871402202830723E+06, 0.101884750589340591E+06, 0.101893763845945417E+06, 0.101896316342375110E+06, - 0.101891679490974697E+06, 0.101879011465031377E+06, 0.101858040507289596E+06, 0.101829415896828315E+06, 0.101794099063775866E+06, - 0.101754870334758903E+06, 0.101712830221134776E+06, 0.101668524343052632E+06, 0.101623305627111258E+06, 0.101578731565899987E+06, - 0.101536822594720084E+06, 0.101498255706646247E+06, 0.101464056159653454E+06, 0.101434228357694403E+06, 0.101408947230003760E+06, - 0.101388258426133107E+06, 0.101372054750796451E+06, 0.101360489212098575E+06, 0.101352621134682369E+06, 0.101347535522944934E+06, - 0.101344862604306050E+06, 0.101344225484927229E+06, 0.101345820651379589E+06, 0.101351700849621455E+06, 0.101359530806993411E+06, - 0.101367464680662029E+06, 0.101374791985950258E+06, 0.101380818284913359E+06, 0.101384869714943547E+06, 0.101384236152984289E+06, - 0.101379411934677875E+06, 0.101371434785651902E+06, 0.101360085004396402E+06, 0.101345137105284986E+06, 0.101326366500254488E+06, - 0.101300808610161446E+06, 0.101267227431123814E+06, 0.101230448890002648E+06, 0.101191134568648122E+06, 0.101149957676138991E+06, - 0.101107616865909265E+06, 0.101064847159165423E+06, 0.101022580301005539E+06, 0.100981724783641272E+06, 0.100943032631428388E+06, - 0.100907229742725089E+06, 0.100647986354424997E+06, 0.100642715659511494E+06, 0.100636609969385099E+06, 0.100629766959429631E+06, - 0.100622273153360293E+06, 0.100614207409999959E+06, 0.100605644320867577E+06, 0.100596657511128040E+06, 0.100587322839384142E+06, - 0.100577721494929676E+06, 0.100567942994422949E+06, 0.100559032457675799E+06, 0.100552977775159990E+06, 0.100548029023239913E+06, - 0.100543925649759869E+06, 0.100540775676255420E+06, 0.100537926202230563E+06, 0.100534526225857189E+06, 0.100530349204130558E+06, - 0.100525160024924175E+06, 0.100518730289664294E+06, 0.100507262057308282E+06, 0.100493351445575739E+06, 0.100478812420309798E+06, - 0.100463863563753723E+06, 0.100448706735957079E+06, 0.100433537133342616E+06, 0.100418551953121700E+06, 0.100403957667064577E+06, - 0.100390113818734360E+06, 0.100378283224859435E+06, 0.100368019408275955E+06, 0.100359348113145898E+06, 0.100352231413445901E+06, - 0.100346572462762793E+06, 0.100342221388570266E+06, 0.100338982151060118E+06, 0.100338392782828159E+06, 0.100341188152017450E+06, - 0.100343374795880460E+06, 0.100344284175602748E+06, 0.100343279804720136E+06, 0.100339754195549598E+06, 0.100333123950383713E+06, - 0.100321286971674039E+06, 0.100297287465905509E+06, 0.100269835508128133E+06, 0.100239714419667638E+06, 0.100207741409672206E+06, - 0.100174751447097195E+06, 0.100141579771693956E+06, 0.100106755441371904E+06, 0.100069912900784475E+06, 0.100035704844720982E+06, - 0.100005528642180579E+06, 0.999808555037528422E+05, 0.999632723451110069E+05, 0.999545236439836153E+05, 0.999736658577992639E+05, - 0.100003353333015431E+06, 0.100042064117430200E+06, 0.100089071041598727E+06, 0.100143778848621456E+06, 0.100205754250853075E+06, - 0.100280664932831889E+06, 0.100364704219084786E+06, 0.100454126970714191E+06, 0.100547163719590288E+06, 0.100641885410501171E+06, - 0.100736224731986324E+06, 0.100821668363604142E+06, 0.100899090295081827E+06, 0.100973330050358534E+06, 0.101044570047650093E+06, - 0.101111101684352281E+06, 0.101171922832138123E+06, 0.101223284014747289E+06, 0.101260000146915598E+06, 0.101290169362142216E+06, - 0.101314373328620830E+06, 0.101333177003506280E+06, 0.101345070024148474E+06, 0.101353392220116293E+06, 0.101359052838648713E+06, - 0.101363820978951000E+06, 0.101369812488926094E+06, 0.101377607762478350E+06, 0.101388432240829963E+06, 0.101403721097234418E+06, - 0.101423686495689355E+06, 0.101447911692908267E+06, 0.101474956233570803E+06, 0.101501708578459278E+06, 0.101530416403443902E+06, - 0.101560731988182699E+06, 0.101592331907465996E+06, 0.101625384375889567E+06, 0.101660463766652349E+06, 0.101696287937694025E+06, - 0.101731505165402195E+06, 0.101765373671168942E+06, 0.101795889760683582E+06, 0.101821575901139222E+06, 0.101839426770240534E+06, - 0.101848304582011391E+06, 0.101850674932157766E+06, 0.101845563338820590E+06, 0.101833662450669886E+06, 0.101819729736987734E+06, - 0.101806525676924168E+06, 0.101796235624030873E+06, 0.101788878921415002E+06, 0.101786474628160606E+06, 0.101791411418041462E+06, - 0.101799155363379643E+06, 0.101808395203049906E+06, 0.101819645577764153E+06, 0.101830409662230682E+06, 0.101837554446248556E+06, - 0.101839744105951162E+06, 0.101836170755967585E+06, 0.101826399135349377E+06, 0.101810169058729633E+06, 0.101787697095879019E+06, - 0.101760376393189144E+06, 0.101728853043894385E+06, 0.101693851935638726E+06, 0.101656211520082943E+06, 0.101616790158213262E+06, - 0.101576704560053928E+06, 0.101537500986694940E+06, 0.101500335696260430E+06, 0.101465878362827381E+06, 0.101434840756723977E+06, - 0.101408292472182264E+06, 0.101385653681886775E+06, 0.101367773762272278E+06, 0.101355060936308873E+06, 0.101344865614149967E+06, - 0.101336866601978196E+06, 0.101330803221953858E+06, 0.101326445157375012E+06, 0.101323705025865274E+06, 0.101323151766299212E+06, - 0.101323317919074820E+06, 0.101323609309034800E+06, 0.101323383998279736E+06, 0.101321968519799790E+06, 0.101318674829698095E+06, - 0.101309557473271183E+06, 0.101297255318789845E+06, 0.101282004506700381E+06, 0.101263593826286131E+06, 0.101241822534985287E+06, - 0.101216505434514431E+06, 0.101183763113335532E+06, 0.101143062284304673E+06, 0.101099958082106066E+06, 0.101055260378077917E+06, - 0.101009770107324861E+06, 0.100964289722992879E+06, 0.100919631222605836E+06, 0.100878395229792455E+06, 0.100840230418695966E+06, - 0.100804814065610379E+06, 0.100772660269162792E+06, 0.100687581879727732E+06, 0.100677327145079587E+06, 0.100666160693170401E+06, - 0.100654207341057889E+06, 0.100641583937123549E+06, 0.100628402623918475E+06, 0.100614774045043421E+06, 0.100600810488184259E+06, - 0.100586628958508634E+06, 0.100572354178803900E+06, 0.100558377265734845E+06, 0.100545518784321612E+06, 0.100533722529582723E+06, - 0.100522910171807918E+06, 0.100512931196078469E+06, 0.100503576020145658E+06, 0.100494590303307457E+06, 0.100485690264560879E+06, - 0.100476578798775605E+06, 0.100466962148914608E+06, 0.100453831814755409E+06, 0.100437250927331042E+06, 0.100419883924672962E+06, - 0.100402010894887906E+06, 0.100383869790613491E+06, 0.100365667294769126E+06, 0.100347588515499185E+06, 0.100329805497802925E+06, - 0.100312484547517117E+06, 0.100295677938969020E+06, 0.100279971482571520E+06, 0.100265646792895117E+06, 0.100252835911466231E+06, - 0.100241624480511469E+06, 0.100232054881627162E+06, 0.100224130808306480E+06, 0.100217823206996967E+06, 0.100218259667894425E+06, - 0.100221888558547784E+06, 0.100225662634090608E+06, 0.100228894178654795E+06, 0.100230909476646018E+06, 0.100231046622607246E+06, - 0.100228652435841679E+06, 0.100220736457496634E+06, 0.100203006988572233E+06, 0.100182026084597936E+06, 0.100158298000477531E+06, - 0.100132350369893451E+06, 0.100104715520267695E+06, 0.100075909358704739E+06, 0.100043124770855982E+06, 0.100002028989072438E+06, - 0.999616642547620577E+05, 0.999236877809293510E+05, 0.998898266920593742E+05, 0.998618945050216280E+05, 0.998418030619178171E+05, - 0.998423833568641858E+05, 0.998594396345241257E+05, 0.998857662121956964E+05, 0.999209046169008070E+05, 0.999644862724064005E+05, - 0.100016242187354641E+06, 0.100077317810256820E+06, 0.100156061627195784E+06, 0.100241897409154641E+06, 0.100332874470688155E+06, - 0.100428637026128985E+06, 0.100526117084385623E+06, 0.100622332108951261E+06, 0.100709061724389190E+06, 0.100788527255290071E+06, - 0.100863969991383987E+06, 0.100934619610214693E+06, 0.100999507530848088E+06, 0.101057589879684849E+06, 0.101107912118639942E+06, - 0.101140898046464674E+06, 0.101165194334426677E+06, 0.101183324487668549E+06, 0.101196455912974372E+06, 0.101205787756098696E+06, - 0.101212555660780359E+06, 0.101217307428240179E+06, 0.101221221076374510E+06, 0.101226815969850082E+06, 0.101235775469520071E+06, - 0.101249089517923203E+06, 0.101267499119154090E+06, 0.101290114155802439E+06, 0.101316108973235343E+06, 0.101344864351232871E+06, - 0.101376027068939133E+06, 0.101409318557868275E+06, 0.101444185441017980E+06, 0.101479505555003896E+06, 0.101516882009007721E+06, - 0.101555258888103534E+06, 0.101593997928136538E+06, 0.101632899844262269E+06, 0.101670115604274892E+06, 0.101703897209036979E+06, - 0.101731821696663668E+06, 0.101752696747597220E+06, 0.101767805557897402E+06, 0.101776451771069726E+06, 0.101776669469582252E+06, - 0.101773409436917937E+06, 0.101768516316242836E+06, 0.101762622025664066E+06, 0.101757375988241824E+06, 0.101753826825127559E+06, - 0.101753403149395934E+06, 0.101756975828023817E+06, 0.101760728893977721E+06, 0.101764213695991348E+06, 0.101767251659026326E+06, - 0.101770663081707637E+06, 0.101770424123169345E+06, 0.101766072271416459E+06, 0.101755995409002455E+06, 0.101740345666592038E+06, - 0.101721298174118318E+06, 0.101699043646416510E+06, 0.101673714396835901E+06, 0.101645709970302123E+06, 0.101615709217670097E+06, - 0.101584438818864903E+06, 0.101549071157331651E+06, 0.101514367930820241E+06, 0.101481015481659371E+06, 0.101449616141240651E+06, - 0.101420749509000205E+06, 0.101394921878986992E+06, 0.101373676775729036E+06, 0.101359486676981818E+06, 0.101347304837422518E+06, - 0.101336841360518913E+06, 0.101328023341265842E+06, 0.101320386045212057E+06, 0.101313764510643596E+06, 0.101308434768293082E+06, - 0.101303621069785135E+06, 0.101298777855350723E+06, 0.101293531204510582E+06, 0.101287470834921696E+06, 0.101280152845400124E+06, - 0.101270201669037211E+06, 0.101254701725787949E+06, 0.101236553755882080E+06, 0.101215630660361639E+06, 0.101191802985207483E+06, - 0.101164939977834394E+06, 0.101134911067020425E+06, 0.101095221983884170E+06, 0.101047509096163092E+06, 0.100998010357585692E+06, - 0.100947641730482603E+06, 0.100897282218335793E+06, 0.100847785377602457E+06, 0.100799988650482410E+06, 0.100756067172860465E+06, - 0.100716404949108095E+06, 0.100680394601797932E+06, 0.100648426393021538E+06, 0.100745881471474568E+06, 0.100728142553068014E+06, - 0.100709625290291020E+06, 0.100690810595279676E+06, 0.100673015913888710E+06, 0.100654662696282932E+06, 0.100635883098483231E+06, - 0.100616812156066226E+06, 0.100597590570947941E+06, 0.100577923093225269E+06, 0.100558481382763435E+06, 0.100539763749561054E+06, - 0.100521848971490384E+06, 0.100504736841997088E+06, 0.100488356281683067E+06, 0.100472574428834167E+06, 0.100457206575664590E+06, - 0.100442026795809623E+06, 0.100426779086875598E+06, 0.100408173847290411E+06, 0.100384737995668649E+06, 0.100361938241868149E+06, - 0.100339809752568588E+06, 0.100318341944825661E+06, 0.100297490120403570E+06, 0.100277187624826533E+06, 0.100256847285368276E+06, - 0.100235365725066120E+06, 0.100214436988323068E+06, 0.100194015395758135E+06, 0.100174603679756343E+06, 0.100156451770575964E+06, - 0.100139783864459299E+06, 0.100124799136242582E+06, 0.100111674036540222E+06, 0.100100566149749706E+06, 0.100091646133474802E+06, - 0.100094268080595342E+06, 0.100098360646490051E+06, 0.100103245417476035E+06, 0.100108251398645036E+06, 0.100112713737688697E+06, - 0.100115972074298101E+06, 0.100117368468727698E+06, 0.100113713047268437E+06, 0.100102264314479005E+06, 0.100088001440509222E+06, - 0.100071163974188516E+06, 0.100051996036882978E+06, 0.100030726477270320E+06, 0.100007546295320470E+06, 0.999807647979038738E+05, - 0.999391989552558807E+05, 0.998969708781520749E+05, 0.998557810370234511E+05, 0.998173700956349639E+05, 0.997835138413437380E+05, - 0.997560107381300622E+05, 0.997399269866001996E+05, 0.997470920864752261E+05, 0.997634292598558095E+05, 0.997888964555621351E+05, - 0.998253139512354246E+05, 0.998703081483062851E+05, 0.999237330223304161E+05, 0.999900673422841937E+05, 0.100071098592214898E+06, - 0.100157786095159157E+06, 0.100248141148947368E+06, 0.100340095617225234E+06, 0.100431568456538211E+06, 0.100520552982271765E+06, - 0.100601957172444119E+06, 0.100676277857242458E+06, 0.100746000837763233E+06, 0.100808736668317229E+06, 0.100864485886548777E+06, - 0.100912656357667453E+06, 0.100952804425252194E+06, 0.100983458937089512E+06, 0.101002905816960556E+06, 0.101017076739301760E+06, - 0.101025919304932366E+06, 0.101031319629252597E+06, 0.101035629307633033E+06, 0.101040244934609727E+06, 0.101046393155694794E+06, - 0.101055516125687020E+06, 0.101070906234944094E+06, 0.101089614225348079E+06, 0.101111577432790844E+06, 0.101136727145279292E+06, - 0.101164845396941935E+06, 0.101195505773623969E+06, 0.101228307857940395E+06, 0.101262885478130513E+06, 0.101298695011647855E+06, - 0.101336323186784808E+06, 0.101375617863355365E+06, 0.101416132308550543E+06, 0.101458486694783467E+06, 0.101500186893265898E+06, - 0.101539835500673144E+06, 0.101576113752189529E+06, 0.101608148989054069E+06, 0.101635731083729115E+06, 0.101658502412969741E+06, - 0.101672883340000117E+06, 0.101682956248776158E+06, 0.101690136156231834E+06, 0.101694729692935623E+06, 0.101695555850151519E+06, - 0.101694985210699713E+06, 0.101693812129123311E+06, 0.101693039728607808E+06, 0.101693715283905956E+06, 0.101692868849250488E+06, - 0.101690508890417783E+06, 0.101685212790082718E+06, 0.101676311144040446E+06, 0.101666676329463662E+06, 0.101655232931092047E+06, - 0.101641717109236590E+06, 0.101625993005500495E+06, 0.101608164735537764E+06, 0.101588188219044227E+06, 0.101565919017002117E+06, - 0.101541334705616158E+06, 0.101515224870468810E+06, 0.101488328834034881E+06, 0.101461275807381404E+06, 0.101434883687913665E+06, - 0.101409484965064941E+06, 0.101385820779280519E+06, 0.101366650582102375E+06, 0.101354446840173172E+06, 0.101343919272935833E+06, - 0.101334580534699839E+06, 0.101326051033725802E+06, 0.101318025772555571E+06, 0.101310244905231491E+06, 0.101303240884958926E+06, - 0.101296508440228543E+06, 0.101288703571071324E+06, 0.101279586340018883E+06, 0.101269869694777401E+06, 0.101258981910571456E+06, - 0.101246361574452327E+06, 0.101230052909366845E+06, 0.101210205538298207E+06, 0.101187520180750522E+06, 0.101161911206820834E+06, - 0.101133290201435040E+06, 0.101101563145659631E+06, 0.101066628653128937E+06, 0.101019252959455625E+06, 0.100965746706630394E+06, - 0.100910740992734136E+06, 0.100855238817428384E+06, 0.100800186778776610E+06, 0.100746485895287333E+06, 0.100695000750680716E+06, - 0.100647864656014091E+06, 0.100605793755290593E+06, 0.100567897173808713E+06, 0.100534547818198989E+06, 0.100814127595255733E+06, - 0.100792022069682134E+06, 0.100768906676945466E+06, 0.100744859019167008E+06, 0.100719947172904969E+06, 0.100694229203288138E+06, - 0.100667752842392147E+06, 0.100641747076966523E+06, 0.100616187623394333E+06, 0.100590421603492592E+06, 0.100564843816162116E+06, - 0.100539661442132914E+06, 0.100515003622905657E+06, 0.100490925990557327E+06, 0.100467416019604236E+06, 0.100444399107853926E+06, - 0.100421745278230635E+06, 0.100399276378565366E+06, 0.100374479059296529E+06, 0.100342341387721070E+06, 0.100310819294281551E+06, - 0.100280122297496389E+06, 0.100250406051737154E+06, 0.100221779328347242E+06, 0.100194311780137796E+06, 0.100168042299398876E+06, - 0.100142987772136228E+06, 0.100119152028053810E+06, 0.100096071569344102E+06, 0.100074127372371906E+06, 0.100053458844250679E+06, - 0.100034145590099070E+06, 0.100016303683140140E+06, 0.100000086204841966E+06, 0.999856841527353536E+05, 0.999733278135488799E+05, - 0.999663531822283549E+05, 0.999693777575280983E+05, 0.999741959503276157E+05, 0.999802590538802469E+05, 0.999870378916889313E+05, - 0.999938949144795042E+05, 0.100000191518739506E+06, 0.100005286991947069E+06, 0.100006317487418550E+06, 0.100001195017387858E+06, - 0.999937624881289375E+05, 0.999840228227615153E+05, 0.999719630030743720E+05, 0.999577541117163637E+05, 0.999414190489595931E+05, - 0.999227353126357775E+05, 0.998873066933161899E+05, 0.998482442672230973E+05, 0.998092392179712187E+05, 0.997720171343442780E+05, - 0.997383602763239178E+05, 0.997100954593149654E+05, 0.996890738866330212E+05, 0.996865348971301573E+05, 0.996979284283922898E+05, - 0.997178025858917244E+05, 0.997459381653020537E+05, 0.997821174181933602E+05, 0.998261113921440992E+05, 0.998776597193271737E+05, - 0.999420283421857603E+05, 0.100017917957394646E+06, 0.100097878242084247E+06, 0.100179897231054711E+06, 0.100262024118021669E+06, - 0.100342632647495484E+06, 0.100419763744213284E+06, 0.100491241165072570E+06, 0.100554990596539108E+06, 0.100613108372608185E+06, - 0.100664964935558615E+06, 0.100710050488669251E+06, 0.100748062257432917E+06, 0.100778981129089982E+06, 0.100801136588479072E+06, - 0.100816775933362136E+06, 0.100825979191023362E+06, 0.100833035761093313E+06, 0.100839384072879693E+06, 0.100846373089390050E+06, - 0.100857951736503237E+06, 0.100872302980121356E+06, 0.100888680627202251E+06, 0.100907092306334001E+06, 0.100927501559027049E+06, - 0.100950662310288419E+06, 0.100977294658870305E+06, 0.101006277386327682E+06, 0.101036971461367139E+06, 0.101068254496147259E+06, - 0.101099848827670517E+06, 0.101133511540723193E+06, 0.101169399010245761E+06, 0.101207870174907031E+06, 0.101248846664781042E+06, - 0.101290872607848010E+06, 0.101333141189654139E+06, 0.101375246051365641E+06, 0.101416446476650075E+06, 0.101455302158143284E+06, - 0.101490839830927347E+06, 0.101520107656443550E+06, 0.101543517742126453E+06, 0.101563037513223637E+06, 0.101578855351202437E+06, - 0.101589294440855650E+06, 0.101594084692158984E+06, 0.101595811485579121E+06, 0.101594522898840631E+06, 0.101587783852875349E+06, - 0.101580434348492054E+06, 0.101571251185715577E+06, 0.101560523496472335E+06, 0.101548552694418337E+06, 0.101535867827232971E+06, - 0.101525413599061823E+06, 0.101514059084604145E+06, 0.101501599931887249E+06, 0.101487982453526070E+06, 0.101472687979190014E+06, - 0.101455256212675624E+06, 0.101436599458446668E+06, 0.101417421871714148E+06, 0.101397941747779230E+06, 0.101378563636379375E+06, - 0.101359842874464084E+06, 0.101342462840995518E+06, 0.101332246224379633E+06, 0.101325840252083945E+06, 0.101320103689658979E+06, - 0.101314877253089740E+06, 0.101310111834561045E+06, 0.101305378666758857E+06, 0.101300345803243748E+06, 0.101295776170531011E+06, - 0.101292199871251156E+06, 0.101287082936946317E+06, 0.101280060941132921E+06, 0.101270852280511215E+06, 0.101259228389922413E+06, - 0.101244988802512118E+06, 0.101227740446083306E+06, 0.101206586899449845E+06, 0.101182271497207475E+06, 0.101154765725986566E+06, - 0.101124017218970926E+06, 0.101089948851124151E+06, 0.101052459983455323E+06, 0.101011429271982197E+06, 0.100955245737388075E+06, - 0.100896292883737755E+06, 0.100836289133349041E+06, 0.100776402552628671E+06, 0.100717117782225978E+06, 0.100659365283430379E+06, - 0.100604025319315682E+06, 0.100553449734939946E+06, 0.100508407522918642E+06, 0.100467703215460322E+06, 0.100431774319843782E+06, - 0.100887777028820332E+06, 0.100861720047367722E+06, 0.100834436753951144E+06, 0.100806009321876336E+06, 0.100776515387351727E+06, - 0.100746027719175327E+06, 0.100714128174464058E+06, 0.100678835400336873E+06, 0.100643940658424166E+06, 0.100609599439615049E+06, - 0.100575890439937211E+06, 0.100542814645689868E+06, 0.100510647118237335E+06, 0.100478852228419142E+06, 0.100447427441828680E+06, - 0.100416345678542421E+06, 0.100385524391706378E+06, 0.100353710114660586E+06, 0.100313330006065604E+06, 0.100273215809488320E+06, - 0.100233726851702537E+06, 0.100195172710990315E+06, 0.100157816918484707E+06, 0.100121881575408392E+06, 0.100087552777137244E+06, - 0.100054986731522251E+06, 0.100024316458513829E+06, 0.999958188555688102E+05, 0.999694587498323526E+05, 0.999449162204764725E+05, - 0.999222572991156194E+05, 0.999015841003048117E+05, 0.998830358793447813E+05, 0.998667901084829064E+05, 0.998530636160492868E+05, - 0.998421138196279935E+05, 0.998399548826702376E+05, 0.998456341634458367E+05, 0.998536660057044792E+05, 0.998634438903502014E+05, - 0.998743637363783346E+05, 0.998858203733583359E+05, 0.998972031892049272E+05, 0.999078909209750127E+05, 0.999149362451545312E+05, - 0.999155853988857416E+05, 0.999144713123037072E+05, 0.999115094947106991E+05, 0.999066084422268032E+05, 0.998996635379296931E+05, - 0.998905505086211051E+05, 0.998791187039132201E+05, 0.998553009292081260E+05, 0.998211706427201134E+05, 0.997864909210314072E+05, - 0.997528267554746853E+05, 0.997217498141473916E+05, 0.996948180668799905E+05, 0.996735491411857802E+05, 0.996593866015884996E+05, - 0.996655234255323448E+05, 0.996793806269131601E+05, 0.997006480667150026E+05, 0.997291101032920706E+05, 0.997645101820020791E+05, - 0.998065302642879251E+05, 0.998547900089741306E+05, 0.999134103376733110E+05, 0.999816545378570445E+05, 0.100052123784172887E+06, - 0.100122995502983205E+06, 0.100192554793170464E+06, 0.100259253657548237E+06, 0.100321770579711141E+06, 0.100379066111299660E+06, - 0.100430565790236928E+06, 0.100476507405646029E+06, 0.100515199549242738E+06, 0.100547257296906639E+06, 0.100573671260601302E+06, - 0.100594920234367688E+06, 0.100611741953639648E+06, 0.100625093360959523E+06, 0.100636085854106641E+06, 0.100648539226327353E+06, - 0.100663110344216606E+06, 0.100678485576473686E+06, 0.100694991774415132E+06, 0.100712835683178113E+06, 0.100732147548005290E+06, - 0.100753127553809449E+06, 0.100775525773403977E+06, 0.100799178062266757E+06, 0.100823896465442915E+06, 0.100848973735924432E+06, - 0.100871627589741343E+06, 0.100896325593451635E+06, 0.100923508440905760E+06, 0.100953444968081341E+06, 0.100987803936626107E+06, - 0.101025452874861629E+06, 0.101064958354120550E+06, 0.101105934719207362E+06, 0.101149656229281260E+06, 0.101195955740066449E+06, - 0.101241312234646321E+06, 0.101284295970940017E+06, 0.101322838039260794E+06, 0.101354503959834561E+06, 0.101381602347716602E+06, - 0.101404011754918669E+06, 0.101421551762267889E+06, 0.101430360992792368E+06, 0.101432922117767157E+06, 0.101431497700586173E+06, - 0.101426925441668209E+06, 0.101419967655507149E+06, 0.101411983040633873E+06, 0.101402716970667971E+06, 0.101392421375849139E+06, - 0.101381472260780953E+06, 0.101370274940234522E+06, 0.101359740662010270E+06, 0.101350634658367329E+06, 0.101341143517682387E+06, - 0.101330923240958698E+06, 0.101319823874219393E+06, 0.101307931163203728E+06, 0.101295590108053555E+06, 0.101283554840952769E+06, - 0.101272503805782646E+06, 0.101264230996134676E+06, 0.101263165987784392E+06, 0.101263248071743699E+06, 0.101263968423840182E+06, - 0.101264949849351571E+06, 0.101265950281725454E+06, 0.101266859267559164E+06, 0.101267688820318188E+06, 0.101269586773692979E+06, - 0.101271200254654817E+06, 0.101270843870590616E+06, 0.101268468005190778E+06, 0.101263583383249803E+06, 0.101255809203046563E+06, - 0.101244849341628564E+06, 0.101230469880693592E+06, 0.101211897835992699E+06, 0.101189677118595791E+06, 0.101163874725058151E+06, - 0.101134452948665217E+06, 0.101101374466219480E+06, 0.101064596222306151E+06, 0.101024065194136114E+06, 0.100976094439065258E+06, - 0.100916143828112647E+06, 0.100853769181501484E+06, 0.100790071236260570E+06, 0.100726087398982490E+06, 0.100662794662010128E+06, - 0.100601113224382003E+06, 0.100541910367744073E+06, 0.100487274737311833E+06, 0.100437683864829785E+06, 0.100392394095480457E+06, - 0.100351867577605750E+06, 0.100962168045125494E+06, 0.100932365352918903E+06, 0.100901110935450168E+06, 0.100868480358099798E+06, - 0.100834547574790442E+06, 0.100796703363587934E+06, 0.100755267960995203E+06, 0.100713570472402876E+06, 0.100671854726096004E+06, - 0.100630308500112806E+06, 0.100589060133053688E+06, 0.100548176434007823E+06, 0.100507661857319457E+06, 0.100467458892467330E+06, - 0.100427449603971385E+06, 0.100387458241177985E+06, 0.100347067293918182E+06, 0.100298654635154177E+06, 0.100250789888946878E+06, - 0.100203094461237808E+06, 0.100156000274838036E+06, 0.100109901773151054E+06, 0.100065158238268661E+06, 0.100022096993949221E+06, - 0.999810174333996401E+05, 0.999421958115488960E+05, 0.999058907435752189E+05, 0.998749313841952826E+05, 0.998464722705311870E+05, - 0.998203417981312523E+05, 0.997966268545406929E+05, 0.997754458911707188E+05, 0.997569500594004494E+05, 0.997413241542494943E+05, - 0.997287873670089612E+05, 0.997195938347852207E+05, 0.997219848697613779E+05, 0.997302647271703609E+05, 0.997413201843605202E+05, - 0.997545532545877795E+05, 0.997693575270145375E+05, 0.997851155398511037E+05, 0.998011953959217790E+05, 0.998169466903843859E+05, - 0.998299082101016102E+05, 0.998356142670790869E+05, 0.998398422284621047E+05, 0.998424522644160897E+05, 0.998432923817324918E+05, - 0.998421955048720556E+05, 0.998389770375031076E+05, 0.998334333807975636E+05, 0.998233671652358898E+05, 0.997961670290865004E+05, - 0.997678973047597101E+05, 0.997399010170866677E+05, 0.997134966342892585E+05, 0.996899556689095043E+05, 0.996704759993049811E+05, - 0.996561506699569145E+05, 0.996500136858785991E+05, 0.996586427100675064E+05, 0.996741311696416087E+05, 0.996962994894855947E+05, - 0.997249142503650510E+05, 0.997596639024193428E+05, 0.998001312580039958E+05, 0.998457643772705051E+05, 0.998968741052847909E+05, - 0.999554058789066621E+05, 0.100014421175045645E+06, 0.100072433938662172E+06, 0.100128122411163247E+06, 0.100180369857232887E+06, - 0.100226565707743983E+06, 0.100267364450542242E+06, 0.100303437234851634E+06, 0.100335667091963755E+06, 0.100364067822408935E+06, - 0.100388352892750874E+06, 0.100408979571248361E+06, 0.100426614584295938E+06, 0.100443740449263758E+06, 0.100461134998395326E+06, - 0.100478174321635088E+06, 0.100495256991003844E+06, 0.100512619944850769E+06, 0.100530318011748270E+06, 0.100548816195507636E+06, - 0.100568537852548383E+06, 0.100588688433695279E+06, 0.100609168368209503E+06, 0.100629814904332350E+06, 0.100650416237038749E+06, - 0.100665634418575515E+06, 0.100681296503981284E+06, 0.100698501345687095E+06, 0.100717920340627403E+06, 0.100740215249176472E+06, - 0.100766890514599916E+06, 0.100796657224606606E+06, 0.100829306693609207E+06, 0.100864641226465828E+06, 0.100904494038338991E+06, - 0.100948883593760926E+06, 0.100993670283464584E+06, 0.101037518284592399E+06, 0.101079215492193092E+06, 0.101115268009655614E+06, - 0.101146790223207165E+06, 0.101174201341284715E+06, 0.101197180680782549E+06, 0.101215405063571248E+06, 0.101223672236876388E+06, - 0.101227039458753206E+06, 0.101226892310118274E+06, 0.101223972224575875E+06, 0.101218953111666357E+06, 0.101212937481870860E+06, - 0.101205841402347578E+06, 0.101198438153766576E+06, 0.101191337677150907E+06, 0.101184775501605473E+06, 0.101178859738651910E+06, - 0.101173861836438504E+06, 0.101169688625135837E+06, 0.101165295165053874E+06, 0.101160720689472480E+06, 0.101156205118519152E+06, - 0.101153904081471745E+06, 0.101157778313312563E+06, 0.101162376363148098E+06, 0.101167695990116554E+06, 0.101174407609201837E+06, - 0.101181289698729292E+06, 0.101187910343826748E+06, 0.101193938755009076E+06, 0.101199145593254492E+06, 0.101206932922006279E+06, - 0.101215167455344184E+06, 0.101221538641997948E+06, 0.101225600948191553E+06, 0.101227025345643400E+06, 0.101225591909201801E+06, - 0.101221179118605258E+06, 0.101213750568578733E+06, 0.101199646966405868E+06, 0.101180697627794187E+06, 0.101158105995225807E+06, - 0.101131732247750042E+06, 0.101101468150223940E+06, 0.101067227518597691E+06, 0.101028937999906033E+06, 0.100986534229694924E+06, - 0.100931637537634888E+06, 0.100870116212888723E+06, 0.100806172230221506E+06, 0.100740814221331588E+06, 0.100675010844437245E+06, - 0.100609686876287946E+06, 0.100545721239012084E+06, 0.100483946382944894E+06, 0.100426130298766730E+06, 0.100372432821891009E+06, - 0.100322757504134090E+06, 0.100277638455664739E+06, 0.101031760825673671E+06, 0.100998271623218010E+06, 0.100963081981794705E+06, - 0.100926251398063658E+06, 0.100882116391194853E+06, 0.100836110949086375E+06, 0.100789196010976768E+06, 0.100741656022242169E+06, - 0.100693739602509639E+06, 0.100645654807320738E+06, 0.100597565425804190E+06, 0.100549588305930272E+06, 0.100501791687992096E+06, - 0.100454194516198477E+06, 0.100406766687836353E+06, 0.100359430189551465E+06, 0.100303106797204193E+06, 0.100246577208372706E+06, - 0.100190531822652643E+06, 0.100135266216653603E+06, 0.100081062875707968E+06, 0.100028192493603376E+06, 0.999769161960119818E+05, - 0.999274886616365693E+05, 0.998801621121565840E+05, 0.998351911400472018E+05, 0.997962094163349393E+05, 0.997640534483473457E+05, - 0.997345240177219384E+05, 0.997076990988948673E+05, 0.996836794307263772E+05, 0.996625896600271371E+05, 0.996445791479565378E+05, - 0.996298224252568762E+05, 0.996185192726470996E+05, 0.996108943913202529E+05, 0.996171044733596500E+05, 0.996274341933858086E+05, - 0.996407368485686020E+05, 0.996564433077199938E+05, 0.996739662819337100E+05, 0.996926995456860750E+05, 0.997120167510192841E+05, - 0.997312700110226870E+05, 0.997492720049924683E+05, 0.997589945357419347E+05, 0.997672950870170171E+05, 0.997740082631510304E+05, - 0.997789569418504107E+05, 0.997819534179343900E+05, 0.997828018434580008E+05, 0.997813025467889238E+05, 0.997761547542830958E+05, - 0.997606903751367063E+05, 0.997380039112137747E+05, 0.997148807783809316E+05, 0.996925793721139198E+05, 0.996723316187614837E+05, - 0.996553186696160265E+05, 0.996426434711866459E+05, 0.996353006212308683E+05, 0.996360089851673401E+05, 0.996493081867637520E+05, - 0.996683800195190997E+05, 0.996929780547397386E+05, 0.997227658669395460E+05, 0.997573001543519495E+05, 0.997960150791931374E+05, - 0.998382096557535260E+05, 0.998830404070649238E+05, 0.999298323121304275E+05, 0.999742523604048474E+05, 0.100016965326181715E+06, - 0.100057253131543956E+06, 0.100094584675305145E+06, 0.100128612542877818E+06, 0.100159162106115866E+06, 0.100186212494174571E+06, - 0.100209869217876141E+06, 0.100230664541801205E+06, 0.100252215827535721E+06, 0.100272507526162837E+06, 0.100291578842935764E+06, - 0.100309849731348106E+06, 0.100327689967233746E+06, 0.100345394170965068E+06, 0.100363163535270942E+06, 0.100381092592034052E+06, - 0.100399259031973241E+06, 0.100417513798931104E+06, 0.100435580822035801E+06, 0.100453091252954211E+06, 0.100469603339999827E+06, - 0.100480151507121773E+06, 0.100489254638568047E+06, 0.100498595808049067E+06, 0.100508951548301586E+06, 0.100521040443233302E+06, - 0.100536087694824993E+06, 0.100554481106296153E+06, 0.100575842199618433E+06, 0.100600284600435130E+06, 0.100627894363922838E+06, - 0.100660998742818352E+06, 0.100699900685942383E+06, 0.100740240979155365E+06, 0.100780773089326132E+06, 0.100820325888548046E+06, - 0.100857002425394050E+06, 0.100889306549680012E+06, 0.100918410465244044E+06, 0.100943855527829830E+06, 0.100965216993375041E+06, - 0.100982104369596826E+06, 0.100988787448417890E+06, 0.100992039290643908E+06, 0.100992851817592629E+06, 0.100992148367721486E+06, - 0.100990754377491627E+06, 0.100989328864528783E+06, 0.100987939282731590E+06, 0.100987019598780156E+06, 0.100986810224360001E+06, - 0.100987461015865600E+06, 0.100989052975663959E+06, 0.100991630597561802E+06, 0.100995163025901697E+06, 0.101001875722349461E+06, - 0.101011088720900429E+06, 0.101021084899088091E+06, 0.101031663037972830E+06, 0.101042638294081626E+06, 0.101053858103835970E+06, - 0.101065218626100279E+06, 0.101076680586933391E+06, 0.101088283485301858E+06, 0.101099874970037970E+06, 0.101113089326713816E+06, - 0.101125428039884195E+06, 0.101136196176455385E+06, 0.101144782354753406E+06, 0.101150661981462021E+06, 0.101153397040916956E+06, - 0.101152632849470392E+06, 0.101148092219151222E+06, 0.101138825885236918E+06, 0.101125297346996245E+06, 0.101107998631323659E+06, - 0.101086896343469081E+06, 0.101061954484055474E+06, 0.101033133620494526E+06, 0.101000389988487950E+06, 0.100963674428856495E+06, - 0.100920035249967157E+06, 0.100864002050084426E+06, 0.100802954127500183E+06, 0.100739491656333426E+06, 0.100674607806506479E+06, - 0.100609142818467881E+06, 0.100543918229119721E+06, 0.100479729438758746E+06, 0.100417340423775575E+06, 0.100357818911458060E+06, - 0.100301549120910859E+06, 0.100249027161521051E+06, 0.100200821670612902E+06, 0.101087517829558172E+06, 0.101052015003826687E+06, - 0.101011788745108162E+06, 0.100964536778963855E+06, 0.100915488137692053E+06, 0.100864943012846241E+06, 0.100813190048196135E+06, - 0.100760500256302723E+06, 0.100707121731364154E+06, 0.100653275174801398E+06, 0.100599150242222226E+06, 0.100544902712618306E+06, - 0.100490652473024573E+06, 0.100436482304513964E+06, 0.100382437448442113E+06, 0.100320280351299210E+06, 0.100257427382579408E+06, - 0.100194846079550756E+06, 0.100132891655021755E+06, 0.100071918796184837E+06, 0.100012281557507449E+06, 0.999543340473443968E+05, - 0.998984318951125897E+05, 0.998449344820776314E+05, 0.997942079153267550E+05, 0.997466460297804297E+05, 0.997094928681285237E+05, - 0.996756279012622545E+05, 0.996450218538222252E+05, 0.996176735384205385E+05, 0.995936103776563396E+05, 0.995728884174646664E+05, - 0.995555917894421727E+05, 0.995418315732738702E+05, 0.995317440033937164E+05, 0.995262628136555868E+05, 0.995329410864949314E+05, - 0.995433141117427585E+05, 0.995568197318211314E+05, 0.995728823939344729E+05, 0.995909116272487881E+05, 0.996102999545491039E+05, - 0.996304204174830811E+05, 0.996506239397997124E+05, 0.996702368021630245E+05, 0.996815718025470851E+05, 0.996899469928969920E+05, - 0.996967323341972806E+05, 0.997018093255459680E+05, 0.997050766826754843E+05, 0.997064543685055542E+05, 0.997058891541211779E+05, - 0.997033620388164272E+05, 0.996988978495463380E+05, 0.996831868676393642E+05, 0.996664226445127570E+05, 0.996504367351514375E+05, - 0.996361908772876632E+05, 0.996245860820844246E+05, 0.996164411729444837E+05, 0.996124708057612588E+05, 0.996132638091558620E+05, - 0.996196649575229239E+05, 0.996367110923675500E+05, 0.996583825556631200E+05, 0.996843326520396949E+05, 0.997128691088688356E+05, - 0.997429147876210773E+05, 0.997758051592909760E+05, 0.998110107603276119E+05, 0.998478942000829556E+05, 0.998857114279977977E+05, - 0.999214491155317955E+05, 0.999550948845939129E+05, 0.999866837454055931E+05, 0.100015951080814193E+06, 0.100042763152220112E+06, - 0.100066833155271277E+06, 0.100088158247781059E+06, 0.100108078185884762E+06, 0.100126927297932227E+06, 0.100144951073682430E+06, - 0.100162306504082269E+06, 0.100179972902585811E+06, 0.100197255514410528E+06, 0.100214513504718459E+06, 0.100231716678680328E+06, - 0.100248516891677820E+06, 0.100264879167597144E+06, 0.100280677931150029E+06, 0.100295703143529230E+06, 0.100309668678237373E+06, - 0.100317822458752169E+06, 0.100323698725186405E+06, 0.100328766123466703E+06, 0.100333617686529382E+06, 0.100338870421945830E+06, - 0.100345146510504768E+06, 0.100353505811859010E+06, 0.100364091412822730E+06, 0.100377219192028511E+06, 0.100393145224109379E+06, - 0.100412076822805961E+06, 0.100436536362016341E+06, 0.100466993027333549E+06, 0.100499128955239808E+06, 0.100531867585847620E+06, - 0.100564210070354224E+06, 0.100595268938737849E+06, 0.100623389505981249E+06, 0.100648875381678285E+06, 0.100671545265182722E+06, - 0.100691215991390258E+06, 0.100707855569253967E+06, 0.100721531568851729E+06, 0.100729765774870320E+06, 0.100736382308921660E+06, - 0.100742049357786149E+06, 0.100747338931632839E+06, 0.100752699996680560E+06, 0.100758437644766876E+06, 0.100764492369211905E+06, - 0.100771174162651805E+06, 0.100778897781122723E+06, 0.100791202238176033E+06, 0.100805304746492911E+06, 0.100820453141876555E+06, - 0.100836553977341420E+06, 0.100853433691068960E+06, 0.100869804352758074E+06, 0.100885565873248357E+06, 0.100901263434718436E+06, - 0.100916755649211860E+06, 0.100931925490762223E+06, 0.100946862129343805E+06, 0.100964994999554750E+06, 0.100982379998277524E+06, - 0.100998599729598267E+06, 0.101013259118967748E+06, 0.101025997621651855E+06, 0.101036183051793079E+06, 0.101042991775159331E+06, - 0.101046219174794693E+06, 0.101045436783694371E+06, 0.101037979396283830E+06, 0.101026389136987622E+06, 0.101011353849770458E+06, - 0.100992765156084381E+06, 0.100970520839387638E+06, 0.100944522980413691E+06, 0.100914676733503889E+06, 0.100880889510173438E+06, - 0.100843070409204898E+06, 0.100794195318855112E+06, 0.100740849916230014E+06, 0.100684368608276331E+06, 0.100625515617689191E+06, - 0.100565057571482292E+06, 0.100503753672499588E+06, 0.100442348146381337E+06, 0.100381564680888332E+06, 0.100322120082476831E+06, - 0.100265427081164002E+06, 0.100211108587006820E+06, 0.100159852906932778E+06, 0.100112309293580329E+06, 0.101124201328911135E+06, - 0.101079108320663814E+06, 0.101031809144729792E+06, 0.100982479818601947E+06, 0.100931296727433786E+06, 0.100878431465452362E+06, - 0.100824045759680885E+06, 0.100768286540631874E+06, 0.100710530566360118E+06, 0.100651851143405918E+06, 0.100592641779612633E+06, - 0.100533088300546049E+06, 0.100473351995987294E+06, 0.100413568226339557E+06, 0.100347374189164038E+06, 0.100280419558277266E+06, - 0.100213466642138825E+06, 0.100146884874704396E+06, 0.100081054126754942E+06, 0.100016363564741026E+06, 0.999532111494706915E+05, - 0.998920037667682045E+05, 0.998331579776468134E+05, 0.997771013708717801E+05, 0.997242744959584961E+05, 0.996794911425569007E+05, - 0.996421673866169731E+05, 0.996083624063458992E+05, 0.995780558571076108E+05, 0.995512438908386830E+05, 0.995279390599935141E+05, - 0.995081697090995876E+05, 0.994919788171798573E+05, 0.994794222509916144E+05, 0.994705663858296175E+05, 0.994666304399983201E+05, - 0.994716729317709396E+05, 0.994803098980725772E+05, 0.994920284915772354E+05, 0.995062941002977459E+05, 0.995225510997954116E+05, - 0.995402235083560226E+05, 0.995587157137078175E+05, 0.995774134724761680E+05, 0.995956854178548674E+05, 0.996082099438724399E+05, - 0.996146714115503564E+05, 0.996198917096476653E+05, 0.996237772972328385E+05, 0.996262556600006501E+05, 0.996272811679797160E+05, - 0.996268420791924145E+05, 0.996249688472863927E+05, 0.996217438673883153E+05, 0.996165665480622556E+05, 0.996053672464558331E+05, - 0.995949919441781822E+05, 0.995861528017038072E+05, 0.995795026742108748E+05, 0.995756196555683418E+05, 0.995749923295157205E+05, - 0.995764918417123117E+05, 0.995811371618628909E+05, 0.995900021812679042E+05, 0.996053443416097725E+05, 0.996253126869847765E+05, - 0.996485392863536254E+05, 0.996747275639752770E+05, 0.997034975235640304E+05, 0.997343816924544808E+05, 0.997668244608898967E+05, - 0.998001857951137499E+05, 0.998337502953590738E+05, 0.998667425003782409E+05, 0.998964382191309269E+05, 0.999219732315580331E+05, - 0.999453769704884326E+05, 0.999669632680838986E+05, 0.999870458961453260E+05, 0.100005916456012012E+06, 0.100023824889774987E+06, - 0.100040963571971195E+06, 0.100057455775243085E+06, 0.100073413986486979E+06, 0.100089335775104671E+06, 0.100104815244426631E+06, - 0.100119703191363587E+06, 0.100134379227022902E+06, 0.100148369375800728E+06, 0.100161370783191393E+06, 0.100173213642796953E+06, - 0.100180378799944810E+06, 0.100185526497069281E+06, 0.100189324284954535E+06, 0.100192153267272603E+06, 0.100194434190503976E+06, - 0.100196610662858875E+06, 0.100198905421094794E+06, 0.100201850991823914E+06, 0.100206163107215340E+06, 0.100212230663632377E+06, - 0.100220378132198122E+06, 0.100230869811071767E+06, 0.100245444302250398E+06, 0.100264473811748554E+06, 0.100285188354245533E+06, - 0.100306907645131752E+06, 0.100328990026887506E+06, 0.100350863943610893E+06, 0.100371839758985952E+06, 0.100391444833452260E+06, - 0.100409831169643890E+06, 0.100426823791286341E+06, 0.100442350551841242E+06, 0.100456434485740057E+06, 0.100469179887128601E+06, - 0.100480095078871280E+06, 0.100490844862516460E+06, 0.100501773469729742E+06, 0.100513473090107072E+06, 0.100529036405637875E+06, - 0.100544944618372494E+06, 0.100561407314039185E+06, 0.100578441255079553E+06, 0.100596158161423402E+06, 0.100614688506316757E+06, - 0.100634037456854698E+06, 0.100654132781311564E+06, 0.100674831301503669E+06, 0.100695930204477670E+06, 0.100717182634869590E+06, - 0.100738316734543623E+06, 0.100757949561458212E+06, 0.100778269263575014E+06, 0.100798138776316147E+06, 0.100817212656416305E+06, - 0.100835135245772617E+06, 0.100851545416907000E+06, 0.100866083297882986E+06, 0.100878398135237148E+06, 0.100888156496614407E+06, - 0.100895050095971907E+06, 0.100897946875170004E+06, 0.100893038607802475E+06, 0.100884438418173842E+06, 0.100872056807847897E+06, - 0.100855733686039923E+06, 0.100836196267254127E+06, 0.100813309503127763E+06, 0.100786948600525633E+06, 0.100756997497101227E+06, - 0.100723347939641535E+06, 0.100681497385685245E+06, 0.100634489632593322E+06, 0.100584469640955329E+06, 0.100531975070484972E+06, - 0.100477580490852386E+06, 0.100421885399875624E+06, 0.100365503956835804E+06, 0.100309056337240749E+06, 0.100253161585176160E+06, - 0.100199112753698049E+06, 0.100147837599931416E+06, 0.100098570404209735E+06, 0.100051904767761502E+06, 0.100008417383464068E+06, - 0.101133829804470908E+06, 0.101086063734912168E+06, 0.101036163378778583E+06, 0.100984272823056410E+06, 0.100930541473297533E+06, - 0.100875120408097937E+06, 0.100818158832696005E+06, 0.100759800682388610E+06, 0.100700181428799915E+06, 0.100639425144117529E+06, - 0.100577641880169904E+06, 0.100514925420599073E+06, 0.100451351465310479E+06, 0.100382775391041228E+06, 0.100313407558045423E+06, - 0.100244124043691409E+06, 0.100175160300200252E+06, 0.100106643005048623E+06, 0.100038955227867787E+06, 0.999724957502307661E+05, - 0.999076781431158888E+05, 0.998449303055831406E+05, 0.997846944474534976E+05, 0.997274274929867825E+05, 0.996741803525597352E+05, - 0.996341923290063423E+05, 0.995977652427823923E+05, 0.995648719529626542E+05, 0.995354913787664409E+05, 0.995096084222995123E+05, - 0.994872134460891248E+05, 0.994683012796486000E+05, 0.994528697284307418E+05, 0.994409175579627627E+05, 0.994324419258456037E+05, - 0.994284685420939932E+05, 0.994314645232595940E+05, 0.994376508028579119E+05, 0.994465880324430618E+05, 0.994578122019961011E+05, - 0.994708370980191394E+05, 0.994851569440643361E+05, 0.995002493657292362E+05, 0.995155788435459253E+05, 0.995306008387735346E+05, - 0.995442855494334071E+05, 0.995482724169068970E+05, 0.995511559961705934E+05, 0.995528872179506288E+05, 0.995534386606523331E+05, - 0.995528106454166118E+05, 0.995510380683528929E+05, 0.995481980155677447E+05, 0.995444181794313772E+05, 0.995389426918443642E+05, - 0.995326299748121528E+05, 0.995248068651720969E+05, 0.995181203502452699E+05, 0.995131485287031392E+05, 0.995104093839186244E+05, - 0.995103487778951967E+05, 0.995133292577804386E+05, 0.995196200330811116E+05, 0.995293885226779821E+05, 0.995426939068978973E+05, - 0.995594831481808505E+05, 0.995804466354603064E+05, 0.996042013257502404E+05, 0.996303970501146687E+05, 0.996586123005633417E+05, - 0.996883528051014437E+05, 0.997188265847352159E+05, 0.997490367113701504E+05, 0.997788526495865081E+05, 0.998078707819837873E+05, - 0.998356993938613014E+05, 0.998619800562695164E+05, 0.998837326032437413E+05, 0.999030588156207523E+05, 0.999213959026974480E+05, - 0.999389528776631778E+05, 0.999559737390779337E+05, 0.999728528505193826E+05, 0.999889548460716323E+05, 0.100004292017804837E+06, - 0.100018822423468373E+06, 0.100032457501698547E+06, 0.100045070251751036E+06, 0.100056503593779649E+06, 0.100066444229329674E+06, - 0.100073267298309525E+06, 0.100078208907556284E+06, 0.100081428306994378E+06, 0.100083145646425299E+06, 0.100084490398295631E+06, - 0.100085214798590619E+06, 0.100085235536889129E+06, 0.100083644141418641E+06, 0.100082296767241191E+06, 0.100081573165770096E+06, - 0.100081814208376789E+06, 0.100083316094140551E+06, 0.100086326553815597E+06, 0.100092077248113128E+06, 0.100100913993150592E+06, - 0.100111107468981296E+06, 0.100122323217253404E+06, 0.100134231875447673E+06, 0.100146529461883110E+06, 0.100158953738958458E+06, - 0.100172103739167927E+06, 0.100185442550333013E+06, 0.100198870033114930E+06, 0.100214743046030431E+06, 0.100230501702414200E+06, - 0.100246186063517438E+06, 0.100261900880765723E+06, 0.100278280962620207E+06, 0.100294975745097370E+06, 0.100311878419328103E+06, - 0.100329065054564679E+06, 0.100346610730169734E+06, 0.100364576981339662E+06, 0.100382997190169379E+06, 0.100401860048637522E+06, - 0.100421460558640218E+06, 0.100441987614432976E+06, 0.100463274519939529E+06, 0.100485156332498926E+06, 0.100507667562079601E+06, - 0.100531755712309474E+06, 0.100555537683995659E+06, 0.100578784151641899E+06, 0.100601239956125326E+06, 0.100622628756313949E+06, - 0.100641873088256354E+06, 0.100658680264014634E+06, 0.100673598187900920E+06, 0.100686312726101605E+06, 0.100696503456104270E+06, - 0.100703849613094353E+06, 0.100704152415214849E+06, 0.100700762505721214E+06, 0.100694332357036590E+06, 0.100684801738842943E+06, - 0.100672137064367969E+06, 0.100656329651135165E+06, 0.100637393206196401E+06, 0.100615360755861184E+06, 0.100590281222544916E+06, - 0.100562215831141861E+06, 0.100526781016220033E+06, 0.100486348156266336E+06, 0.100442798181998849E+06, 0.100397163429546563E+06, - 0.100349807344903311E+06, 0.100301139976506107E+06, 0.100251607747954069E+06, 0.100201684250218939E+06, 0.100151862062679153E+06, - 0.100102645581508201E+06, 0.100056044918004729E+06, 0.100011301942910883E+06, 0.999684520456376777E+05, 0.999279531311431929E+05, - 0.998902646792392770E+05, 0.101126663346454399E+06, 0.101077325354608969E+06, 0.101025975734916894E+06, 0.100972737972671399E+06, - 0.100917744423974829E+06, 0.100861133803490855E+06, 0.100803048766821448E+06, 0.100743633625432005E+06, 0.100683032233185906E+06, - 0.100621386084403202E+06, 0.100558832663878042E+06, 0.100495211427552291E+06, 0.100428081646754872E+06, 0.100360053702616802E+06, - 0.100291421804985934E+06, 0.100222501857581025E+06, 0.100153629396011398E+06, 0.100085157752426705E+06, 0.100017456492403435E+06, - 0.999509101650603116E+05, 0.998859174013813172E+05, 0.998228903882164013E+05, 0.997622547363343474E+05, 0.997044497501409787E+05, - 0.996565808532324445E+05, 0.996171954030033376E+05, 0.995813735590216529E+05, 0.995490780595074320E+05, 0.995202664706442010E+05, - 0.994948916653312772E+05, 0.994731497863732366E+05, 0.994547373765991215E+05, 0.994395024448596523E+05, 0.994273918334258487E+05, - 0.994183417080185318E+05, 0.994131115873192466E+05, 0.994138210062121798E+05, 0.994170868554473127E+05, 0.994225572846895811E+05, - 0.994298923767942179E+05, 0.994385978253560606E+05, 0.994482495116238133E+05, 0.994584440096453618E+05, 0.994687785322086420E+05, - 0.994788546658055129E+05, 0.994882828035313869E+05, 0.994927040708071727E+05, 0.994917547439376503E+05, 0.994895539007886109E+05, - 0.994862075166797877E+05, 0.994818501581585733E+05, 0.994766470759525691E+05, 0.994707963627129502E+05, 0.994645310337857954E+05, - 0.994581208250226337E+05, 0.994518734280974313E+05, 0.994461348017268174E+05, 0.994415182672292285E+05, 0.994388346879257297E+05, - 0.994384357346413162E+05, 0.994406125032009149E+05, 0.994455917032776051E+05, 0.994535286747415666E+05, 0.994645016916688619E+05, - 0.994785078337676387E+05, 0.994954607091662765E+05, 0.995151903074341826E+05, 0.995379744989390892E+05, 0.995645762978403654E+05, - 0.995919660907828365E+05, 0.996199268533732247E+05, 0.996482101418556267E+05, 0.996765332991438627E+05, 0.997045938426658686E+05, - 0.997320840835444978E+05, 0.997587053657859215E+05, 0.997841813092843222E+05, 0.998082694645679585E+05, 0.998307708426059398E+05, - 0.998521847777656949E+05, 0.998731316336951131E+05, 0.998915223579208832E+05, 0.999088069900928822E+05, 0.999250655468217301E+05, - 0.999403321942196199E+05, 0.999545992766920099E+05, 0.999678219791941956E+05, 0.999799234377201792E+05, 0.999908557408674824E+05, - 0.100000288315772239E+06, 0.100007974659642932E+06, 0.100013912274213857E+06, 0.100018152445268570E+06, 0.100020792433534516E+06, - 0.100021965384116600E+06, 0.100021828600707202E+06, 0.100018978825766098E+06, 0.100014638020503815E+06, 0.100010038309740252E+06, - 0.100005576575099418E+06, 0.100001604858675491E+06, 0.999984320892866672E+05, 0.999963266886948113E+05, 0.999958737477183749E+05, - 0.999972975927051302E+05, 0.100000048030566773E+06, 0.100004042344745598E+06, 0.100009194673973179E+06, 0.100015426118827090E+06, - 0.100022673026545686E+06, 0.100031009563329135E+06, 0.100040766570146734E+06, 0.100051217540583049E+06, 0.100062248668533124E+06, - 0.100073786795171531E+06, 0.100085797503990121E+06, 0.100098280610450573E+06, 0.100111262656178049E+06, 0.100125001802413579E+06, - 0.100139645695878644E+06, 0.100154900063508263E+06, 0.100170710309353148E+06, 0.100187004814548171E+06, 0.100203682971120987E+06, - 0.100220602392753455E+06, 0.100237565502663623E+06, 0.100256278549938754E+06, 0.100276900404893633E+06, 0.100298794291387065E+06, - 0.100320557514765664E+06, 0.100342058165774986E+06, 0.100363130678741916E+06, 0.100383577435456726E+06, 0.100403171366828377E+06, - 0.100421659429775435E+06, 0.100438766794516225E+06, 0.100454201546808938E+06, 0.100467659691497232E+06, 0.100478830237807808E+06, - 0.100481024801078907E+06, 0.100479810484167552E+06, 0.100476403382797740E+06, 0.100470673041393165E+06, 0.100462504496619513E+06, - 0.100451800234604845E+06, 0.100438481209722173E+06, 0.100422487058078696E+06, 0.100403775642287073E+06, 0.100382322062990715E+06, - 0.100358117267813446E+06, 0.100327534199358997E+06, 0.100293850879764213E+06, 0.100257806725219358E+06, 0.100219741686727677E+06, - 0.100180023194298759E+06, 0.100139040711945461E+06, 0.100097200477411025E+06, 0.100054920551059535E+06, 0.100012626265403043E+06, - 0.999707461374165723E+05, 0.999303503014407033E+05, 0.998922229704366764E+05, 0.998554721656402544E+05, 0.998204850080980395E+05, - 0.997876409225251264E+05, 0.997573084048583696E+05, 0.101103863341862932E+06, 0.101054198041262367E+06, 0.101002678396138304E+06, - 0.100949414469850730E+06, 0.100894527371675096E+06, 0.100838147558637153E+06, 0.100780413214267071E+06, 0.100721468731159111E+06, - 0.100661463324523051E+06, 0.100600549803942500E+06, 0.100538495641508489E+06, 0.100474499779926511E+06, 0.100409614880186520E+06, - 0.100344074690081019E+06, 0.100278137807477731E+06, 0.100212086086552372E+06, 0.100146223109295490E+06, 0.100080872747272268E+06, - 0.100016377835126099E+06, 0.999530989729176799E+05, 0.998914134690468200E+05, 0.998317144291724107E+05, 0.997744099892116501E+05, - 0.997208338934957865E+05, 0.996799309689324291E+05, 0.996422327801534993E+05, 0.996077247089604498E+05, 0.995763830833266111E+05, - 0.995481752007196337E+05, 0.995230592311468208E+05, 0.995009839760444302E+05, 0.994818884619951277E+05, 0.994657013515687577E+05, - 0.994523401572802686E+05, 0.994417102486785589E+05, 0.994338127166474005E+05, 0.994291184813256987E+05, 0.994266081659517949E+05, - 0.994259833524572168E+05, 0.994269351914163999E+05, 0.994291475057475909E+05, 0.994323001129119220E+05, 0.994360724062380032E+05, - 0.994401472289394151E+05, 0.994442150616938598E+05, 0.994479785254193557E+05, 0.994511571742526139E+05, 0.994472284598653205E+05, - 0.994408965796853736E+05, 0.994339336034472362E+05, 0.994264710020695638E+05, 0.994186660048548511E+05, 0.994107025256855122E+05, - 0.994027916086733312E+05, 0.993951711926945572E+05, 0.993881049497915083E+05, 0.993818799057818542E+05, 0.993768025040628709E+05, - 0.993745371453054540E+05, 0.993758273945832625E+05, 0.993797480709728989E+05, 0.993864179439653672E+05, 0.993959015946626314E+05, - 0.994106666848780587E+05, 0.994280957797027659E+05, 0.994479062249146809E+05, 0.994699024606817256E+05, 0.994938326370272989E+05, - 0.995193970618178137E+05, 0.995462575961586117E+05, 0.995732238058578514E+05, 0.995996836683722795E+05, 0.996264076540508540E+05, - 0.996531520384603791E+05, 0.996796729134591151E+05, 0.997057352581914602E+05, 0.997311214531925361E+05, 0.997565307292698708E+05, - 0.997809628500159452E+05, 0.998041926037547237E+05, 0.998260922842872533E+05, 0.998465616497438023E+05, 0.998655323213428928E+05, - 0.998829702013785281E+05, 0.998988759405013552E+05, 0.999132835855504527E+05, 0.999267531384376343E+05, 0.999401187534305645E+05, - 0.999522829859957856E+05, 0.999629705900948175E+05, 0.999720750719777716E+05, 0.999795225775888684E+05, 0.999852704402040836E+05, - 0.999893033756584045E+05, 0.999916276698245056E+05, 0.999912215328864258E+05, 0.999874978505536856E+05, 0.999827294697511534E+05, - 0.999772668831095216E+05, 0.999714403004270425E+05, 0.999655543840146129E+05, 0.999598844544293243E+05, 0.999546738384171913E+05, - 0.999501503361758805E+05, 0.999464612795733119E+05, 0.999436472754112765E+05, 0.999417478240415512E+05, 0.999407845190346270E+05, - 0.999407674168311496E+05, 0.999417003681598144E+05, 0.999435850419050112E+05, 0.999466778359479795E+05, 0.999509741170870548E+05, - 0.999561184478715149E+05, 0.999620266396879451E+05, 0.999686260435519798E+05, 0.999758509523019893E+05, 0.999836356497705565E+05, - 0.999919049957114039E+05, 0.100000562486864073E+06, 0.100011784952549118E+06, 0.100025750768122278E+06, 0.100039950549839836E+06, - 0.100054145017178846E+06, 0.100068316891848794E+06, 0.100082450146767165E+06, 0.100096523400557431E+06, 0.100110501610887819E+06, - 0.100124326095454249E+06, 0.100137903024072584E+06, 0.100153035210029513E+06, 0.100168028234449826E+06, 0.100182528489386037E+06, - 0.100196311615898419E+06, 0.100209129758123207E+06, 0.100220714305906484E+06, 0.100227674075086179E+06, 0.100228582862959636E+06, - 0.100228182141282334E+06, 0.100226441566948473E+06, 0.100223301716988630E+06, 0.100218680617939594E+06, 0.100212480375930187E+06, - 0.100204593660852275E+06, 0.100193237399701000E+06, 0.100179608999797390E+06, 0.100163806561057383E+06, 0.100145763706322687E+06, - 0.100124166108882637E+06, 0.100097853920290698E+06, 0.100069603397772837E+06, 0.100039598196173276E+06, 0.100008052525304520E+06, - 0.999752085984543955E+05, 0.999413336779185047E+05, 0.999067168729345140E+05, 0.998716658233869821E+05, 0.998365033809807937E+05, - 0.998015643788216548E+05, 0.997673503212209471E+05, 0.997368095318123815E+05, 0.997072417009385681E+05, 0.996789372306682053E+05, - 0.996521942416031088E+05, 0.996273141486202512E+05, 0.996045978845247591E+05, 0.101067589111213412E+06, 0.101018770688517165E+06, - 0.100968154311929655E+06, 0.100916004392167699E+06, 0.100862587963118029E+06, 0.100807829042751429E+06, 0.100751860689524168E+06, - 0.100694824678955032E+06, 0.100636870575220571E+06, 0.100578085861079686E+06, 0.100518387120511878E+06, 0.100457910498338359E+06, - 0.100396827710058526E+06, 0.100335334776766380E+06, 0.100273650785659062E+06, 0.100212016619918053E+06, 0.100150693670614579E+06, - 0.100089962540906286E+06, 0.100030121749858867E+06, 0.999714864397286292E+05, 0.999143870864777564E+05, 0.998591682086720684E+05, - 0.998061870647466858E+05, 0.997614041189860436E+05, 0.997232133410041570E+05, 0.996877601571912237E+05, 0.996550329117300425E+05, - 0.996250097998356068E+05, 0.995976585142769036E+05, 0.995729358349222894E+05, 0.995507871467952355E+05, 0.995311458738776855E+05, - 0.995139328178480646E+05, 0.994990553930397000E+05, 0.994864067510919558E+05, 0.994758647909620777E+05, 0.994662936172032933E+05, - 0.994584116138104437E+05, 0.994520440064580325E+05, 0.994469670430250553E+05, 0.994429511205758317E+05, 0.994397638951787376E+05, - 0.994371735196124209E+05, 0.994349519828108314E+05, 0.994328785098660155E+05, 0.994307429622300406E+05, 0.994283491541375697E+05, - 0.994255179730021191E+05, 0.994164893114872393E+05, 0.994067289084808290E+05, 0.993968888922061742E+05, 0.993871232560968492E+05, - 0.993776052903232921E+05, 0.993685268314349669E+05, 0.993600967438642401E+05, 0.993525384531912714E+05, 0.993461969112091901E+05, - 0.993435709722199681E+05, 0.993430289823759958E+05, 0.993448240458555374E+05, 0.993518125064813066E+05, 0.993620332314667612E+05, - 0.993746322170980275E+05, 0.993895541802843509E+05, 0.994066995366652700E+05, 0.994259271220238734E+05, 0.994470579336317896E+05, - 0.994698797554098419E+05, 0.994941524985713913E+05, 0.995196140617028141E+05, 0.995459864926176379E+05, 0.995729822203312797E+05, - 0.996003101205446874E+05, 0.996273070851956145E+05, 0.996547798040555062E+05, 0.996819738131592894E+05, 0.997085378998868837E+05, - 0.997343278080748278E+05, 0.997592022275180498E+05, 0.997830289890008135E+05, 0.998056904289906088E+05, 0.998270877683784638E+05, - 0.998471443932554248E+05, 0.998658079734391795E+05, 0.998830514038870024E+05, 0.998996025676379795E+05, 0.999153229697452334E+05, - 0.999295566639472963E+05, 0.999422722019988432E+05, 0.999534500054842792E+05, 0.999630795823789667E+05, 0.999711562553596450E+05, - 0.999776774721563124E+05, 0.999826387612595136E+05, 0.999854644320731022E+05, 0.999828794177739328E+05, 0.999789847225893318E+05, - 0.999739838414557307E+05, 0.999680998532223457E+05, 0.999615553821963986E+05, 0.999545658866950980E+05, 0.999473341203756863E+05, - 0.999400456392968772E+05, 0.999327953721481608E+05, 0.999256989141568774E+05, 0.999189700236989156E+05, 0.999127048128768074E+05, - 0.999069798769329791E+05, 0.999018544683639047E+05, 0.998973722234758170E+05, 0.998935621850836178E+05, 0.998904388907014218E+05, - 0.998896448727687675E+05, 0.998900344972452294E+05, 0.998911970826382749E+05, 0.998931396187662176E+05, 0.998958769268335309E+05, - 0.998994275255013781E+05, 0.999038084460577520E+05, 0.999090289824781794E+05, 0.999150833667861443E+05, 0.999217240524284571E+05, - 0.999282473433497362E+05, 0.999348833579850179E+05, 0.999415375242985901E+05, 0.999481154404054105E+05, 0.999545171017064131E+05, - 0.999606302661866066E+05, 0.999663230149861483E+05, 0.999714356178636663E+05, 0.999757718627941504E+05, 0.999790900530105428E+05, - 0.999810939111108019E+05, 0.999819561511524662E+05, 0.999789948862129386E+05, 0.999752827398946683E+05, 0.999708888630344300E+05, - 0.999658466886194801E+05, 0.999601566475907457E+05, 0.999537895884533064E+05, 0.999466907368066168E+05, 0.999387840276392963E+05, - 0.999299766462147236E+05, 0.999201636218782805E+05, 0.999092323322767916E+05, 0.998970667923400615E+05, 0.998831789013588714E+05, - 0.998636939941647142E+05, 0.998431119746374316E+05, 0.998214963412640354E+05, 0.997970862666926550E+05, 0.997712444170942908E+05, - 0.997445906917362154E+05, 0.997173029439411330E+05, 0.996895795051780588E+05, 0.996616375682111830E+05, 0.996337113354519679E+05, - 0.996060500180081726E+05, 0.995789157595469587E+05, 0.995557562522905791E+05, 0.995337048495515774E+05, 0.995126888312002120E+05, - 0.994929130817774712E+05, 0.994745951235418033E+05, 0.994579612022724759E+05, 0.994432427594338078E+05, 0.101021034351216382E+06, - 0.100974523158164724E+06, 0.100926407272977900E+06, 0.100876804093661282E+06, 0.100825841471867636E+06, 0.100773656698396328E+06, - 0.100720395485641522E+06, 0.100666210969990992E+06, 0.100612099345619077E+06, 0.100557249279083626E+06, 0.100501677971650905E+06, - 0.100445572670880414E+06, 0.100389253853780203E+06, 0.100332968905338319E+06, 0.100276665148379936E+06, 0.100220537893264976E+06, - 0.100164799821054621E+06, 0.100109679736971462E+06, 0.100055421257730064E+06, 0.100002281430952105E+06, 0.999505292822571937E+05, - 0.999004442827473104E+05, 0.998530843548639095E+05, 0.998156761219489854E+05, 0.997805278523404413E+05, 0.997476323427424795E+05, - 0.997169731242686539E+05, 0.996885239311042969E+05, 0.996622481616842706E+05, 0.996380983225617529E+05, 0.996160154459489713E+05, - 0.995959284728124476E+05, 0.995777535943772964E+05, 0.995613935458951310E+05, 0.995467368475156691E+05, 0.995336569880241732E+05, - 0.995208266243795515E+05, 0.995087482639954542E+05, 0.994977965334250039E+05, 0.994878249241337762E+05, 0.994786826211323350E+05, - 0.994702168427006691E+05, 0.994622751834644587E+05, 0.994547079083998542E+05, 0.994473701327138842E+05, 0.994401238077413873E+05, - 0.994328394160198222E+05, 0.994254188335577346E+05, 0.994184404922492249E+05, 0.994087127432848210E+05, 0.993987930235803360E+05, - 0.993894574291334138E+05, 0.993808966627234331E+05, 0.993733080854502186E+05, 0.993668924009867187E+05, 0.993618498078672274E+05, - 0.993583756460734730E+05, 0.993566555807828554E+05, 0.993568603838800627E+05, 0.993591403923829785E+05, 0.993636197419046657E+05, - 0.993703904921866488E+05, 0.993811197203903430E+05, 0.993950856599565304E+05, 0.994111457979586703E+05, 0.994291602554974379E+05, - 0.994489675444759632E+05, 0.994703876196585625E+05, 0.994932253351752443E+05, 0.995172741944998997E+05, 0.995426559018634871E+05, - 0.995694776827033347E+05, 0.995970389008766942E+05, 0.996251091056232981E+05, 0.996534496905636333E+05, 0.996818187512539298E+05, - 0.997099760279327893E+05, 0.997374141751707793E+05, 0.997622618739524623E+05, 0.997862435467323085E+05, 0.998092414887019404E+05, - 0.998311505958143825E+05, 0.998518805596518214E+05, 0.998718102890837035E+05, 0.998910750046514877E+05, 0.999090219912788452E+05, - 0.999255559670365765E+05, 0.999405919139345788E+05, 0.999540538378546335E+05, 0.999658730563341524E+05, 0.999759860512857849E+05, - 0.999843319314751134E+05, 0.999908495555851987E+05, 0.999954743712658383E+05, 0.999944404784162907E+05, 0.999915968456238916E+05, - 0.999872439634975599E+05, 0.999816171531630534E+05, 0.999749362615833961E+05, 0.999674042229870247E+05, 0.999592064518093102E+05, - 0.999505109123499715E+05, 0.999414687118180882E+05, 0.999323665105546679E+05, 0.999233975283402833E+05, 0.999144981369005836E+05, - 0.999058003303556034E+05, 0.998974241845954093E+05, 0.998894782591478870E+05, 0.998820595750179200E+05, 0.998752530846157169E+05, - 0.998691305778080132E+05, 0.998637489957377547E+05, 0.998586746844062873E+05, 0.998541772928227729E+05, 0.998502966627068381E+05, - 0.998469966131329420E+05, 0.998442320106148400E+05, 0.998419453691209637E+05, 0.998400626589490130E+05, 0.998384883490106731E+05, - 0.998370997211475333E+05, 0.998357405118142487E+05, 0.998339247931384743E+05, 0.998316580178510631E+05, 0.998293639855545480E+05, - 0.998269017565975373E+05, 0.998241201967542729E+05, 0.998208528853709577E+05, 0.998098081032783375E+05, 0.997954370825381193E+05, - 0.997808296869748592E+05, 0.997662255405725009E+05, 0.997518145513712225E+05, 0.997377288090598740E+05, 0.997240360167264153E+05, - 0.997115902471897134E+05, 0.997002807779587602E+05, 0.996889928911353927E+05, 0.996776906921413611E+05, 0.996663184120892256E+05, - 0.996548031405013462E+05, 0.996430577981460665E+05, 0.996309842516777717E+05, 0.996172720856796950E+05, 0.995989960463366879E+05, - 0.995803026148819772E+05, 0.995612677891255880E+05, 0.995419614978694444E+05, 0.995224517021402135E+05, 0.995028080337064894E+05, - 0.994831049415358284E+05, 0.994634243322594411E+05, 0.994438577049017331E+05, 0.994245077928505052E+05, 0.994054897371244297E+05, - 0.993869318243143207E+05, 0.993690043020055746E+05, 0.993554308490509575E+05, 0.993412332136938494E+05, 0.993276308539287711E+05, - 0.993151162456799066E+05, 0.993038276851009432E+05, 0.992939167429839872E+05, 0.992855451787946949E+05, 0.992788820449725754E+05, - 0.100964847544612581E+06, 0.100921528597807934E+06, 0.100876819617514033E+06, 0.100830819119977881E+06, 0.100783635790840315E+06, - 0.100735387872604493E+06, 0.100686849362626730E+06, 0.100638850722815405E+06, 0.100589987206303587E+06, 0.100540391690949080E+06, - 0.100490207838124057E+06, 0.100439589213655403E+06, 0.100388698427470110E+06, 0.100337706295036201E+06, 0.100286791022897989E+06, - 0.100236137419730803E+06, 0.100185936133379830E+06, 0.100136382913311769E+06, 0.100087677896791603E+06, 0.100040024915916016E+06, - 0.999936308213850425E+05, 0.999487048175969685E+05, 0.999098959263045108E+05, 0.998760905821691704E+05, 0.998440744381323602E+05, - 0.998138388707919803E+05, 0.997853639904371375E+05, 0.997586190608742472E+05, 0.997335630315415328E+05, 0.997101451748205582E+05, - 0.996883058208672010E+05, 0.996679771815481945E+05, 0.996490842541338643E+05, 0.996315457942174835E+05, 0.996152753458579973E+05, - 0.996001823151213321E+05, 0.995855679555827810E+05, 0.995705558364965109E+05, 0.995563634129148850E+05, 0.995429286082849721E+05, - 0.995301928975228802E+05, 0.995181034121451230E+05, 0.995066149374921079E+05, 0.994956917495421949E+05, 0.994853092368055950E+05, - 0.994754552514231473E+05, 0.994661311329740856E+05, 0.994573523487461207E+05, 0.994491486954472930E+05, 0.994415640096655407E+05, - 0.994332401191460376E+05, 0.994242851325149240E+05, 0.994162875697421550E+05, 0.994093942955236271E+05, 0.994037502528714977E+05, - 0.993994957235938200E+05, 0.993967633485402912E+05, 0.993956749460767023E+05, 0.993963381773120200E+05, 0.993988431167032832E+05, - 0.994032587965396087E+05, 0.994096298031491460E+05, 0.994179730111528625E+05, 0.994282745493404218E+05, 0.994404870973938814E+05, - 0.994568186139204772E+05, 0.994754658271223161E+05, 0.994958964449326450E+05, 0.995177045414582390E+05, 0.995407458140571835E+05, - 0.995648609237595665E+05, 0.995898777201360062E+05, 0.996156137473152776E+05, 0.996418789751202567E+05, 0.996684786927591776E+05, - 0.996952164972683240E+05, 0.997218973051197536E+05, 0.997483303132390720E+05, 0.997743318352098577E+05, 0.997997279397391831E+05, - 0.998243568215117266E+05, 0.998484029817739647E+05, 0.998715185643880104E+05, 0.998929709407826740E+05, 0.999121391071011894E+05, - 0.999300598538423073E+05, 0.999466118827012979E+05, 0.999616803026846756E+05, 0.999751558213879034E+05, 0.999869336418048333E+05, - 0.999969120922718139E+05, 0.100004991024896648E+06, 0.100011070025070803E+06, 0.100011361902027944E+06, 0.100009689874259901E+06, - 0.100006354866167210E+06, 0.100001521961853068E+06, 0.999953569047140481E+05, 0.999880229251482233E+05, 0.999796782529097254E+05, - 0.999704742484093149E+05, 0.999605540801449097E+05, 0.999500518713602651E+05, 0.999395620634615480E+05, 0.999293797224061564E+05, - 0.999189780037119199E+05, 0.999084634603603772E+05, 0.998979305732036155E+05, 0.998874607924644370E+05, 0.998771215026191203E+05, - 0.998669648551638238E+05, 0.998570264274643996E+05, 0.998473236800365266E+05, 0.998378541987464268E+05, 0.998280094515223464E+05, - 0.998183015118441253E+05, 0.998087584599398106E+05, 0.997993088922536845E+05, 0.997898632369703118E+05, 0.997803110261358233E+05, - 0.997705176970055909E+05, 0.997603209573400527E+05, 0.997495267616314668E+05, 0.997338504371996823E+05, 0.997144148866953765E+05, - 0.996946194589021616E+05, 0.996748889962201501E+05, 0.996543973099300492E+05, 0.996333799061114987E+05, 0.996120632551793096E+05, - 0.995906575155593600E+05, 0.995693496108486434E+05, 0.995482968337894126E+05, 0.995276211300861032E+05, 0.995074041910853848E+05, - 0.994876834578204434E+05, 0.994684491110481467E+05, 0.994496420937635121E+05, 0.994311531852242333E+05, 0.994128231195840344E+05, - 0.993950629246981553E+05, 0.993796705843183881E+05, 0.993609699415756186E+05, 0.993418055421917088E+05, 0.993226794637357671E+05, - 0.993037059687493893E+05, 0.992849845648908376E+05, 0.992666033190360467E+05, 0.992486420429716236E+05, 0.992311752996093419E+05, - 0.992142751883332967E+05, 0.991980138777397078E+05, 0.991824658634138323E+05, 0.991677099373037345E+05, 0.991538308635238063E+05, - 0.991409207629147422E+05, 0.991303845164175582E+05, 0.991233478553789610E+05, 0.991173123854586884E+05, 0.991122941300806997E+05, - 0.991083274217430298E+05, 0.991054636978437338E+05, 0.991037699911700765E+05, 0.991033272031231463E+05, 0.991042282352598704E+05, - 0.991065760427079076E+05, 0.100899327711180042E+06, 0.100860014589195416E+06, 0.100819531202107522E+06, 0.100777959510744709E+06, - 0.100735390607726556E+06, 0.100694036465613695E+06, 0.100652089405901919E+06, 0.100609367247066592E+06, 0.100565963600471325E+06, - 0.100521982301190656E+06, 0.100477536683349797E+06, 0.100432748853070138E+06, 0.100387748961175384E+06, 0.100342674477306704E+06, - 0.100297669466538631E+06, 0.100252883868987425E+06, 0.100208472782261073E+06, 0.100164595745919316E+06, 0.100121416026401625E+06, - 0.100079099900142377E+06, 0.100037815931840771E+06, 0.999981416469988617E+05, 0.999662389876496309E+05, 0.999356748708466621E+05, - 0.999064575822306797E+05, 0.998785877324428584E+05, 0.998520583580002858E+05, 0.998268551135048328E+05, 0.998029565487271466E+05, - 0.997803344633126544E+05, 0.997589543309666333E+05, 0.997387757839643018E+05, 0.997197531476882141E+05, 0.997018360135869007E+05, - 0.996849698374662257E+05, 0.996690965483438340E+05, 0.996541551512074802E+05, 0.996382689559327409E+05, 0.996225861026435014E+05, - 0.996075569737299666E+05, 0.995931690202676109E+05, 0.995794128974490304E+05, 0.995662834351470083E+05, 0.995537804808199580E+05, - 0.995419095816340414E+05, 0.995306824727639178E+05, 0.995201173394836951E+05, 0.995102388219246932E+05, 0.995010777333177539E+05, - 0.994926704652096669E+05, 0.994850580565927958E+05, 0.994782849081547320E+05, 0.994712945317966660E+05, 0.994652135801002441E+05, - 0.994603804881314572E+05, 0.994568932856863394E+05, 0.994548423780885496E+05, 0.994543085284921108E+05, 0.994553608083860745E+05, - 0.994580545552721160E+05, 0.994624293810699601E+05, 0.994689205148530309E+05, 0.994771599445407046E+05, 0.994871232315969537E+05, - 0.994987933987223369E+05, 0.995121358180468815E+05, 0.995270974554495333E+05, 0.995436065119199775E+05, 0.995623452046183083E+05, - 0.995829609157189843E+05, 0.996045871363499173E+05, 0.996270734208106005E+05, 0.996502628846515872E+05, 0.996739938804089179E+05, - 0.996981017517049913E+05, 0.997224206254554738E+05, 0.997467852001343563E+05, 0.997710324871725461E+05, 0.997951466602976434E+05, - 0.998195365345201863E+05, 0.998432686447168817E+05, 0.998661797675172566E+05, 0.998881192989034753E+05, 0.999089497794278432E+05, - 0.999285470134942298E+05, 0.999467997752335650E+05, 0.999636091025751084E+05, 0.999788871899545629E+05, 0.999925558984901872E+05, - 0.100004544910230834E+06, 0.100014789560105870E+06, 0.100022807416958167E+06, 0.100024265952704969E+06, 0.100023783498597622E+06, - 0.100021339437537274E+06, 0.100017269778783608E+06, 0.100011871918673860E+06, 0.100005243624383627E+06, 0.999974886843563872E+05, - 0.999887143337349553E+05, 0.999790290942598513E+05, 0.999685409989449690E+05, 0.999573561671147618E+05, 0.999457665900857537E+05, - 0.999339297350767738E+05, 0.999216537925987359E+05, 0.999089986755408318E+05, 0.998960156700364460E+05, 0.998827458376240684E+05, - 0.998692184851955972E+05, 0.998554496711306274E+05, 0.998414407220986322E+05, 0.998266607131311466E+05, 0.998100194463602238E+05, - 0.997926225952954846E+05, 0.997741943883323111E+05, 0.997546758201429911E+05, 0.997340957313024119E+05, 0.997124527623238246E+05, - 0.996897658681415196E+05, 0.996660748766462057E+05, 0.996414402768971777E+05, 0.996159421531026164E+05, 0.995896781945527619E+05, - 0.995627607309631567E+05, 0.995353127665240754E+05, 0.995074630135256157E+05, 0.994793399566985754E+05, 0.994514054125879338E+05, - 0.994238487412724935E+05, 0.993966902679466439E+05, 0.993700475395201356E+05, 0.993440177799105440E+05, 0.993186743649216805E+05, - 0.992940638036397431E+05, 0.992702032829608506E+05, 0.992470788181921816E+05, 0.992246440384727030E+05, 0.992011645870204229E+05, - 0.991746701100545615E+05, 0.991489545634662645E+05, 0.991241218039765226E+05, 0.991002500071589602E+05, 0.990773923979805404E+05, - 0.990555784783537238E+05, 0.990348157029355934E+05, 0.990159736965085758E+05, 0.989981835313982592E+05, 0.989814199610305950E+05, - 0.989657585620708269E+05, 0.989512713805230014E+05, 0.989380287548638735E+05, 0.989261010103145527E+05, 0.989155600070171640E+05, - 0.989065271083586849E+05, 0.989035472935256403E+05, 0.989017382893972535E+05, 0.989010885106625501E+05, 0.989015950018414442E+05, - 0.989032643180148880E+05, 0.989061129372854630E+05, 0.989101672753579624E+05, 0.989154633681022387E+05, 0.989220462827519368E+05, - 0.989299693127524224E+05, 0.989392930054068274E+05, 0.100824204136130124E+06, 0.100789629875414903E+06, 0.100754101269738283E+06, - 0.100718965766187423E+06, 0.100683784943369043E+06, 0.100647901733698469E+06, 0.100611367338035154E+06, 0.100574242617115160E+06, - 0.100536597536512694E+06, 0.100498510595931759E+06, 0.100460068244709808E+06, 0.100421364285146075E+06, 0.100382499264969942E+06, - 0.100343579859943900E+06, 0.100304718247249199E+06, 0.100266031469940950E+06, 0.100227640792377366E+06, 0.100189671046138596E+06, - 0.100152249965554060E+06, 0.100115507511560325E+06, 0.100079575182221481E+06, 0.100047602801154819E+06, 0.100019322376832803E+06, - 0.999920409995853261E+05, 0.999657674355637573E+05, 0.999405058915761474E+05, 0.999162559646318405E+05, 0.998930126550737332E+05, - 0.998707664374257292E+05, 0.998495033822863334E+05, 0.998292053217475768E+05, 0.998098500498988724E+05, 0.997914115489896358E+05, - 0.997738602307620895E+05, 0.997571631813267886E+05, 0.997412843967411318E+05, 0.997261849951640761E+05, 0.997116241750995250E+05, - 0.996956516613714484E+05, 0.996802443385057850E+05, 0.996654141346137912E+05, 0.996511746410201595E+05, 0.996375414807133056E+05, - 0.996245325880948803E+05, 0.996121683814974822E+05, 0.996004718105865177E+05, 0.995894682617738144E+05, 0.995791853061816655E+05, - 0.995696522765213740E+05, 0.995608996615122596E+05, 0.995529583091799286E+05, 0.995458584335334599E+05, 0.995396284227406868E+05, - 0.995343367855710967E+05, 0.995305561580702051E+05, 0.995281233336275036E+05, 0.995270277929425938E+05, 0.995273063084702299E+05, - 0.995289897428417025E+05, 0.995321019769720151E+05, 0.995366588694784150E+05, 0.995426672761023801E+05, 0.995501241589093697E+05, - 0.995590158153962548E+05, 0.995693172571642208E+05, 0.995809917664462992E+05, 0.995939906564428093E+05, 0.996082532580851985E+05, - 0.996237071514999261E+05, 0.996402686551040679E+05, 0.996578435789826035E+05, 0.996763282420650648E+05, 0.996956299728876329E+05, - 0.997162410862197139E+05, 0.997372387307632453E+05, 0.997586353656998253E+05, 0.997808433601890720E+05, 0.998030187608370179E+05, - 0.998249872889569233E+05, 0.998465794208683947E+05, 0.998676313277232548E+05, 0.998879856224390824E+05, 0.999074918951320724E+05, - 0.999260070231147402E+05, 0.999433952465451439E+05, 0.999595280060564692E+05, 0.999742835440646595E+05, 0.999875462768208236E+05, - 0.999992059495608264E+05, 0.100009156592205647E+06, 0.100016063172606460E+06, 0.100019024917317467E+06, 0.100020084175617667E+06, - 0.100019327613303438E+06, 0.100016848817808917E+06, 0.100012745044390162E+06, 0.100007114161981110E+06, 0.100000051820447916E+06, - 0.999916488518789411E+05, 0.999819889104085451E+05, 0.999711463483044645E+05, 0.999591843210265215E+05, 0.999461531109617499E+05, - 0.999321525809828890E+05, 0.999172469778668019E+05, 0.999013989306642325E+05, 0.998846455567706289E+05, 0.998670119376398798E+05, - 0.998485130268999492E+05, 0.998291555936072982E+05, 0.998089401641651202E+05, 0.997878629283593327E+05, 0.997659175757975609E+05, - 0.997430970289848337E+05, 0.997193950386116485E+05, 0.996948076057053986E+05, 0.996688019987970183E+05, 0.996412728663371527E+05, - 0.996128531282160839E+05, 0.995835822131826571E+05, 0.995535100083936413E+05, 0.995226963046177698E+05, 0.994912096890770918E+05, - 0.994591258685886423E+05, 0.994265254172218556E+05, 0.993934909557864739E+05, 0.993601037847762636E+05, 0.993264400074980804E+05, - 0.992925661955399555E+05, 0.992585346639741329E+05, 0.992243784382298763E+05, 0.991926785386021656E+05, 0.991631423960881948E+05, - 0.991346701590620942E+05, 0.991043957205902552E+05, 0.990738404866020282E+05, 0.990437385072277393E+05, 0.990142493709584378E+05, - 0.989855195191612147E+05, 0.989576810877346288E+05, 0.989308511084253696E+05, 0.989051310684979690E+05, 0.988806068206827622E+05, - 0.988573488291608082E+05, 0.988354127318868268E+05, 0.988148401948802202E+05, 0.987956600302788138E+05, 0.987778895469693816E+05, - 0.987615361004738952E+05, 0.987465988074585912E+05, 0.987330703896907362E+05, 0.987209391124356771E+05, 0.987108234055703360E+05, - 0.987097019913824042E+05, 0.987103429529451387E+05, 0.987122111650228762E+05, 0.987153073516145814E+05, 0.987196321217762743E+05, - 0.987251875827369804E+05, 0.987319785667343094E+05, 0.987400135082831985E+05, 0.987493050090511242E+05, 0.987598701271371101E+05, - 0.987717304264797713E+05, 0.987849118205066625E+05, 0.987994442421061685E+05, 0.100725315299336173E+06, 0.100698574995327697E+06, - 0.100671977068823689E+06, 0.100644595052366465E+06, 0.100616468093977863E+06, 0.100587642901921921E+06, 0.100558173361375360E+06, - 0.100528120104899528E+06, 0.100497550042423565E+06, 0.100466272904751735E+06, 0.100434015096099785E+06, 0.100401562459773442E+06, - 0.100368989820934105E+06, 0.100336376879503077E+06, 0.100303807689072302E+06, 0.100271370122519947E+06, 0.100239155324566673E+06, - 0.100207257151323618E+06, 0.100175771596705425E+06, 0.100144796205413048E+06, 0.100114429472040734E+06, 0.100088940515445298E+06, - 0.100064277849083956E+06, 0.100040376776062651E+06, 0.100017243413296688E+06, 0.999948816446533019E+05, 0.999732929686431889E+05, - 0.999524763863759727E+05, 0.999324283249947912E+05, 0.999131425911760016E+05, 0.998946103486297798E+05, 0.998768201128693472E+05, - 0.998597577558295598E+05, 0.998434065122163738E+05, 0.998277469787591108E+05, 0.998127570968272776E+05, 0.997984121081719059E+05, - 0.997846844728672440E+05, 0.997711641937448148E+05, 0.997562547182444541E+05, 0.997418715469619347E+05, 0.997280378138771339E+05, - 0.997149197421024874E+05, 0.997024870178837737E+05, 0.996907061322415975E+05, 0.996795848806745926E+05, 0.996691347733205621E+05, - 0.996593714260480774E+05, 0.996503148183509184E+05, 0.996419894088608416E+05, 0.996344241017298482E+05, 0.996276520598402276E+05, - 0.996217103637612599E+05, 0.996166395185360743E+05, 0.996124828137155564E+05, 0.996092855454927922E+05, 0.996072490608482622E+05, - 0.996076113749229989E+05, 0.996091697144805221E+05, 0.996119324075692421E+05, 0.996159015340781625E+05, 0.996210724174448842E+05, - 0.996274331797853811E+05, 0.996349643746027868E+05, 0.996436387104583700E+05, 0.996534208777727908E+05, 0.996642674892599607E+05, - 0.996761271423777071E+05, 0.996889406096304010E+05, 0.997026411596077960E+05, 0.997171550083373149E+05, 0.997324018969322351E+05, - 0.997493713951271493E+05, 0.997669298086039198E+05, 0.997847561118552549E+05, 0.998027246306509041E+05, 0.998207116516734968E+05, - 0.998385964503245486E+05, 0.998562622533936083E+05, 0.998740649961419404E+05, 0.998916906165886030E+05, 0.999087089343172702E+05, - 0.999249770553750277E+05, 0.999403560696216737E+05, 0.999547111717594089E+05, 0.999679116588610341E+05, 0.999798308071318752E+05, - 0.999903456338236865E+05, 0.999993365533926699E+05, 0.100004220125714884E+06, 0.100007207317976179E+06, 0.100008572293640507E+06, - 0.100008322094038289E+06, 0.100006474067698131E+06, 0.100003053654514384E+06, 0.999980922203631635E+05, 0.999916249686873634E+05, - 0.999836889524048456E+05, 0.999743212064066029E+05, 0.999635570180646901E+05, 0.999514283507113723E+05, 0.999379624331032392E+05, - 0.999231805265346338E+05, 0.999068710521996836E+05, 0.998889830637409177E+05, 0.998698844492443604E+05, 0.998496268247692351E+05, - 0.998282550606056902E+05, 0.998058081407207792E+05, 0.997823201056188700E+05, 0.997578210428315797E+05, 0.997323380908236431E+05, - 0.997058964236216998E+05, 0.996785201849737350E+05, 0.996502333423933014E+05, 0.996210604331023060E+05, 0.995910271757503942E+05, - 0.995601609239409008E+05, 0.995275572850741737E+05, 0.994942010526460217E+05, 0.994602086162104097E+05, 0.994256424562004540E+05, - 0.993905674250224547E+05, 0.993550495610398939E+05, 0.993191545857771562E+05, 0.992829460972773086E+05, 0.992464834802344849E+05, - 0.992093627746182028E+05, 0.991704192318807618E+05, 0.991313574404489191E+05, 0.990923405318182195E+05, 0.990535358095906413E+05, - 0.990151121756168286E+05, 0.989772373919561505E+05, 0.989400752255912812E+05, 0.989077617710938066E+05, 0.988763612273478793E+05, - 0.988459508623079601E+05, 0.988166439660097676E+05, 0.987885464355162840E+05, 0.987617561295779306E+05, 0.987363624383705755E+05, - 0.987124460655073344E+05, 0.986900790161369223E+05, 0.986693247818405216E+05, 0.986502387102765642E+05, 0.986328685451310157E+05, - 0.986172551199377485E+05, 0.986034331877511868E+05, 0.985914323674813641E+05, 0.985849022212989948E+05, 0.985815381689221977E+05, - 0.985799833097597439E+05, 0.985801745721993211E+05, 0.985820463347552868E+05, 0.985855324877461535E+05, 0.985905682465279388E+05, - 0.985970917144189152E+05, 0.986050451971537113E+05, 0.986143762739106751E+05, 0.986250386326789885E+05, 0.986369926800004905E+05, - 0.986502059369656636E+05, 0.986646532347960892E+05, 0.986803686823803437E+05, 0.986978893846687570E+05, 0.100614832696455240E+06, - 0.100593867821148029E+06, 0.100572316446986515E+06, 0.100550197550235505E+06, 0.100527535703133908E+06, 0.100504360904461792E+06, - 0.100480708372667563E+06, 0.100456618304392017E+06, 0.100432135601374786E+06, 0.100407309568833982E+06, 0.100382193588466369E+06, - 0.100356844769226343E+06, 0.100331323579001226E+06, 0.100305693460217895E+06, 0.100280020432285120E+06, 0.100254372683605921E+06, - 0.100228820155686772E+06, 0.100203434121630358E+06, 0.100178286761032883E+06, 0.100153450733022924E+06, 0.100130475669895299E+06, - 0.100109956889046269E+06, 0.100089889070985242E+06, 0.100070296914338702E+06, 0.100051202164876013E+06, 0.100032623579079911E+06, - 0.100014576934231576E+06, 0.999970750815462088E+05, 0.999801280379814852E+05, 0.999637431114950741E+05, 0.999479250537698827E+05, - 0.999326762337752152E+05, 0.999179968250171223E+05, 0.999038849989644077E+05, 0.998903371169458405E+05, 0.998773479128125327E+05, - 0.998649106588674185E+05, 0.998530173079915839E+05, 0.998416586055586959E+05, 0.998308241656294995E+05, 0.998183931314519723E+05, - 0.998063026544255990E+05, 0.997946768033270637E+05, 0.997835353574148758E+05, 0.997728988116216497E+05, 0.997627886474906263E+05, - 0.997532275467060972E+05, 0.997442395412217011E+05, 0.997358500950898597E+05, 0.997280861143391958E+05, 0.997209758826208854E+05, - 0.997145489218259900E+05, 0.997088357784521941E+05, 0.997038677381365414E+05, 0.996996764724488748E+05, 0.996962936237215035E+05, - 0.996937503353465436E+05, 0.996920767365576030E+05, 0.996913013921977254E+05, 0.996914507293131610E+05, 0.996938892044791864E+05, - 0.996979235599974199E+05, 0.997029058021154924E+05, 0.997088141832942201E+05, 0.997156214047231770E+05, 0.997232945456081070E+05, - 0.997317950535919081E+05, 0.997416867970129533E+05, 0.997530959050235106E+05, 0.997652059203542885E+05, 0.997779192013086576E+05, - 0.997911354948921798E+05, 0.998047524629107502E+05, 0.998186662279794255E+05, 0.998327719289349043E+05, 0.998469642740837880E+05, - 0.998611380798811879E+05, 0.998751887820599950E+05, 0.998890129059611209E+05, 0.999025084828911640E+05, 0.999155753997843713E+05, - 0.999281156702924636E+05, 0.999400336166881025E+05, 0.999512359536410950E+05, 0.999616317670096760E+05, 0.999711323832548660E+05, - 0.999796511279028782E+05, 0.999849269357346784E+05, 0.999879656837563089E+05, 0.999896251175745128E+05, 0.999900253003605030E+05, - 0.999893361854775139E+05, 0.999873542140159407E+05, 0.999840556297011499E+05, 0.999794245840091753E+05, 0.999734518744631496E+05, - 0.999661337157758971E+05, 0.999574705623641785E+05, 0.999474659997932467E+05, 0.999361257217314414E+05, 0.999234566080410732E+05, - 0.999094659187412326E+05, 0.998941606177814683E+05, 0.998764809352623415E+05, 0.998560560817922524E+05, 0.998343967946635821E+05, - 0.998115510889874568E+05, 0.997875653304692096E+05, 0.997624843255732849E+05, 0.997363514996802405E+05, 0.997092091386610118E+05, - 0.996810986700549984E+05, 0.996520609610099054E+05, 0.996221366113048280E+05, 0.995913662211383053E+05, 0.995597906149207993E+05, - 0.995273916799414146E+05, 0.994941482859833632E+05, 0.994601365478679945E+05, 0.994253058448178053E+05, 0.993891469979643734E+05, - 0.993522589965478983E+05, 0.993147135957212886E+05, 0.992765913082987827E+05, 0.992379812368316198E+05, 0.991989807125657680E+05, - 0.991596947441791563E+05, 0.991202352822574612E+05, 0.990807203086648369E+05, 0.990412727632243623E+05, 0.990020193233719183E+05, - 0.989630890556004597E+05, 0.989246119604841224E+05, 0.988867174357804033E+05, 0.988495326844704396E+05, 0.988131810965392942E+05, - 0.987777806347563455E+05, 0.987434422556348145E+05, 0.987102683970903163E+05, 0.986800386904530314E+05, 0.986539370199152036E+05, - 0.986295226205249346E+05, 0.986068636404624995E+05, 0.985860239517589507E+05, 0.985670631337701197E+05, 0.985500365691113984E+05, - 0.985358556718200416E+05, 0.985278808654735767E+05, 0.985216145256253949E+05, 0.985170549437755544E+05, 0.985141907191163773E+05, - 0.985130023621957516E+05, 0.985134638334888878E+05, 0.985155439987927239E+05, 0.985192079865073320E+05, 0.985244184348827694E+05, - 0.985311366201568162E+05, 0.985393234591571963E+05, 0.985489403823850007E+05, 0.985599500758101349E+05, 0.985723170916025701E+05, - 0.985860083297847013E+05, 0.986009933943283249E+05, 0.986172448285415594E+05, 0.986347382357068564E+05, 0.986534522918489238E+05, - 0.100501068864754794E+06, 0.100484535396120875E+06, 0.100467601980879481E+06, 0.100450280398188552E+06, 0.100432586236747622E+06, - 0.100414538813697291E+06, 0.100396161067221547E+06, 0.100377479424244724E+06, 0.100358523644725865E+06, 0.100339326644139262E+06, - 0.100319924295798162E+06, 0.100300355214719486E+06, 0.100280660524754756E+06, 0.100260883610713514E+06, 0.100241069857193317E+06, - 0.100221266375801104E+06, 0.100201521722408346E+06, 0.100181885606032156E+06, 0.100162408590875246E+06, 0.100143141793000657E+06, - 0.100126731204709198E+06, 0.100111095964644017E+06, 0.100095755686584438E+06, 0.100080729264227775E+06, 0.100066034373636823E+06, - 0.100051687390123538E+06, 0.100037703324969872E+06, 0.100024095780550211E+06, 0.100010876922054129E+06, 0.999980574636844394E+05, - 0.999856466669404908E+05, 0.999736523483940109E+05, 0.999620808942374570E+05, 0.999509372788386972E+05, 0.999402250845782837E+05, - 0.999299465203828877E+05, 0.999201024366045604E+05, 0.999106923342315858E+05, 0.999017143668564822E+05, 0.998931653343625367E+05, - 0.998850406679233711E+05, 0.998765024783978733E+05, 0.998667989571770595E+05, 0.998574263414941233E+05, 0.998484104846885893E+05, - 0.998397772139483568E+05, 0.998315523922983994E+05, 0.998237619509676297E+05, 0.998164318901620281E+05, 0.998095882469221542E+05, - 0.998032570294378238E+05, 0.997974641179290484E+05, 0.997922351329589583E+05, 0.997875952728177945E+05, 0.997835691223818721E+05, - 0.997801804366022552E+05, 0.997774519024890033E+05, 0.997754048841174226E+05, 0.997740591557720181E+05, 0.997734326288465818E+05, - 0.997735410785172280E+05, 0.997747073495277582E+05, 0.997769755457649590E+05, 0.997800038461367949E+05, 0.997839110555756342E+05, - 0.997903666077980015E+05, 0.997975557260811329E+05, 0.998054075409305369E+05, 0.998138481350147340E+05, 0.998228007968337915E+05, - 0.998321862933507946E+05, 0.998419231581400672E+05, 0.998519279910743644E+05, 0.998621157651026879E+05, 0.998724001352771593E+05, - 0.998826937448957033E+05, 0.998929085234460072E+05, 0.999029559709882014E+05, 0.999127474237070273E+05, 0.999221942956127314E+05, - 0.999312082917789958E+05, 0.999397015890797338E+05, 0.999475869811254670E+05, 0.999547779849950166E+05, 0.999611889084034483E+05, - 0.999655508333875332E+05, 0.999687521058104176E+05, 0.999708756209590647E+05, 0.999718892905484245E+05, 0.999717672485314106E+05, - 0.999704891389138356E+05, 0.999680393573227484E+05, 0.999644062616458687E+05, 0.999595813666838658E+05, 0.999535585371076886E+05, - 0.999463331921408535E+05, 0.999379015343325445E+05, 0.999282598136142769E+05, 0.999174036365871580E+05, 0.999053273297332198E+05, - 0.998920233640268561E+05, 0.998774818472951010E+05, 0.998616900896773586E+05, 0.998432094200693391E+05, 0.998215258930813725E+05, - 0.997986442532860819E+05, 0.997746159978670912E+05, 0.997494898657428857E+05, 0.997233122677003994E+05, 0.996961277569055965E+05, - 0.996679795269207534E+05, 0.996389099249155406E+05, 0.996089609684258903E+05, 0.995781748547828611E+05, 0.995465944531801651E+05, - 0.995142637702681968E+05, 0.994812283811399975E+05, 0.994475358185973892E+05, 0.994132359146495874E+05, 0.993783810892878100E+05, - 0.993430265826917603E+05, 0.993072306281462952E+05, 0.992699361805924273E+05, 0.992322369590151648E+05, 0.991942880496349680E+05, - 0.991561790488717525E+05, 0.991180035697510175E+05, 0.990798588542613288E+05, 0.990418452912010980E+05, 0.990040658471643255E+05, - 0.989666254199359537E+05, 0.989296301250896213E+05, 0.988931865279689664E+05, 0.988574008344593603E+05, 0.988223780549877847E+05, - 0.987882211569994834E+05, 0.987550302217251592E+05, 0.987229016213559953E+05, 0.986919272327695508E+05, 0.986621937036891904E+05, - 0.986337817866148835E+05, 0.986067657550310105E+05, 0.985855251179539773E+05, 0.985675277620845591E+05, 0.985515831726142933E+05, - 0.985391751050558669E+05, 0.985310659201639937E+05, 0.985245080408891663E+05, 0.985195088048070465E+05, 0.985160685473306512E+05, - 0.985141813574870466E+05, 0.985138358391387155E+05, 0.985150158641151211E+05, 0.985177013051926042E+05, 0.985218687383599317E+05, - 0.985274921053063881E+05, 0.985345433285448526E+05, 0.985429928730166866E+05, 0.985528102493964543E+05, 0.985639644556170097E+05, - 0.985764243543491611E+05, 0.985901589852987236E+05, 0.986051378122090100E+05, 0.986213309053895937E+05, 0.986387090614195185E+05, - 0.986574141307979880E+05 -}; +#include "grib_gridded_values.h" // array 'values' defined here #define NLON 81 #define NLAT 166 diff --git a/tests/grib_gridded_values.h b/tests/grib_gridded_values.h new file mode 100644 index 000000000..c647a1696 --- /dev/null +++ b/tests/grib_gridded_values.h @@ -0,0 +1,2693 @@ +double values[] = { + 0.101300032966540894E+06, 0.101300537463512766E+06, 0.101300575340236785E+06, 0.101300006392703450E+06, 0.101298681683129777E+06, + 0.101296357626198034E+06, 0.101291429037962458E+06, 0.101285211396584113E+06, 0.101277811769244916E+06, 0.101269604202318660E+06, + 0.101261086325391967E+06, 0.101252536774223816E+06, 0.101244258202072262E+06, 0.101236292863086681E+06, 0.101228818038673067E+06, + 0.101222576320632390E+06, 0.101217951101617422E+06, 0.101215281498123208E+06, 0.101214831830208335E+06, 0.101216756641191008E+06, + 0.101220329473252321E+06, 0.101229814720005656E+06, 0.101242852565120862E+06, 0.101257243179816374E+06, 0.101272242223526715E+06, + 0.101287023899284890E+06, 0.101300727324330161E+06, 0.101312508880994021E+06, 0.101321304787958841E+06, 0.101323045492054458E+06, + 0.101323689235454440E+06, 0.101322654817980932E+06, 0.101318546143449697E+06, 0.101311446435368038E+06, 0.101301582670344171E+06, + 0.101289313645048256E+06, 0.101272976739770951E+06, 0.101254670123119533E+06, 0.101236204711241953E+06, 0.101218525147353255E+06, + 0.101203644914472199E+06, 0.101191859002529978E+06, 0.101183427645969176E+06, 0.101178788732659857E+06, 0.101176248776911350E+06, + 0.101174781987763519E+06, 0.101173755414963452E+06, 0.101172549028196707E+06, 0.101170596810517556E+06, 0.101164899003713479E+06, + 0.101158419589045283E+06, 0.101152491572940358E+06, 0.101147843517789603E+06, 0.101145017464391334E+06, 0.101144350744426047E+06, + 0.101145965622140546E+06, 0.101150160852645960E+06, 0.101156489280060341E+06, 0.101164999288937499E+06, 0.101174680757722846E+06, + 0.101184614700939375E+06, 0.101194476866903220E+06, 0.101203847071805940E+06, 0.101212793693367261E+06, 0.101221210811864396E+06, + 0.101228967667653473E+06, 0.101235941297612240E+06, 0.101241825830798407E+06, 0.101246384813952725E+06, 0.101250233289149895E+06, + 0.101253625288606709E+06, 0.101256829767974210E+06, 0.101260135466684485E+06, 0.101263922730170481E+06, 0.101268258457290780E+06, + 0.101273173871677092E+06, 0.101278603318462468E+06, 0.101284438572224244E+06, 0.101291451901038017E+06, 0.101298825789695678E+06, + 0.101305583597361008E+06, 0.101311198590170257E+06, 0.101313106869633571E+06, 0.101311964918650119E+06, 0.101309609217350633E+06, + 0.101306588009722152E+06, 0.101303789827421686E+06, 0.101303204229508177E+06, 0.101302539808644782E+06, 0.101301748136565366E+06, + 0.101300889588588965E+06, 0.101301524026314495E+06, 0.101302253276609670E+06, 0.101302463210049027E+06, 0.101302292202795681E+06, + 0.101298302559037387E+06, 0.101291449427361382E+06, 0.101283550209983820E+06, 0.101275343284659903E+06, 0.101268451030137920E+06, + 0.101263440167506284E+06, 0.101259681043976845E+06, 0.101257275584439689E+06, 0.101255817294926324E+06, 0.101255329151085723E+06, + 0.101256832423130865E+06, 0.101260699063277454E+06, 0.101270225601657599E+06, 0.101287312191364559E+06, 0.101303455630186116E+06, + 0.101316029699689170E+06, 0.101320758891846766E+06, 0.101311100182774215E+06, 0.101294901290088586E+06, 0.101273081896347416E+06, + 0.101246397937256072E+06, 0.101214175532589943E+06, 0.101180475299171711E+06, 0.101147446887522659E+06, 0.101117364487217361E+06, + 0.101093085915674965E+06, 0.101075700452174933E+06, 0.101066299886712630E+06, 0.101066158368806296E+06, 0.101078251612071312E+06, + 0.101107333429588485E+06, 0.101145577197960345E+06, 0.101190184433163799E+06, 0.101238249723994639E+06, 0.101280682092796589E+06, + 0.101316576899162261E+06, 0.101349617253023622E+06, 0.101379226791601075E+06, 0.101404833281466810E+06, 0.101426608723689307E+06, + 0.101443265324151027E+06, 0.101453984963411596E+06, 0.101458728599400347E+06, 0.101457810163301183E+06, 0.101452773264225369E+06, + 0.101443352159658025E+06, 0.101428700824100233E+06, 0.101409534671443689E+06, 0.101387066094169772E+06, 0.101362901532581192E+06, + 0.101342428907368536E+06, 0.101323657976273273E+06, 0.101307125752964450E+06, 0.101293183514770688E+06, 0.101280868902945120E+06, + 0.101268909632403243E+06, 0.101254864133468844E+06, 0.101241751785266810E+06, 0.101229873732095890E+06, 0.101219507414652238E+06, + 0.101210854622372586E+06, 0.101203998200015136E+06, 0.101202118817604176E+06, 0.101204115282818020E+06, 0.101207394659720041E+06, + 0.101211469101194845E+06, 0.101215801913933246E+06, 0.101219837912576768E+06, 0.101222821880958276E+06, 0.101223619521153145E+06, + 0.101223119359168049E+06, 0.101279933976388784E+06, 0.101280230886902951E+06, 0.101280173829517254E+06, 0.101279628905657766E+06, + 0.101278452724477320E+06, 0.101276500130166445E+06, 0.101273279706602567E+06, 0.101267225127293903E+06, 0.101259879400551043E+06, + 0.101251952874409501E+06, 0.101243674039727790E+06, 0.101235303075196876E+06, 0.101227122345847776E+06, 0.101219423613287974E+06, + 0.101212178882549546E+06, 0.101205696806113177E+06, 0.101200710454399567E+06, 0.101197550054666615E+06, 0.101196424920055710E+06, + 0.101196682426928426E+06, 0.101199196544638864E+06, 0.101204111882830854E+06, 0.101214864879095490E+06, 0.101228568680570461E+06, + 0.101243289081509487E+06, 0.101258220436669624E+06, 0.101272521063369320E+06, 0.101285366950491778E+06, 0.101296012419061328E+06, + 0.101305658540617282E+06, 0.101309682063797125E+06, 0.101310624244857565E+06, 0.101308433795484656E+06, 0.101303210985482059E+06, + 0.101295198335334237E+06, 0.101284767756201632E+06, 0.101272403737592205E+06, 0.101256113788140079E+06, 0.101238847669926457E+06, + 0.101222589159180454E+06, 0.101208629956686913E+06, 0.101197517909479167E+06, 0.101189497449897433E+06, 0.101184456694785782E+06, + 0.101181649500138068E+06, 0.101179750491125887E+06, 0.101178046404878522E+06, 0.101175885037415414E+06, 0.101168022154143066E+06, + 0.101159966065713801E+06, 0.101152331174549618E+06, 0.101145627588820978E+06, 0.101140536375719617E+06, 0.101137554875074289E+06, + 0.101136964384819003E+06, 0.101138821605761070E+06, 0.101143054186604160E+06, 0.101151654753774303E+06, 0.101161075130481171E+06, + 0.101170963288776737E+06, 0.101180942106852366E+06, 0.101190660642090996E+06, 0.101199851697929174E+06, 0.101208579711314771E+06, + 0.101216763897321827E+06, 0.101224252677880388E+06, 0.101230718188980885E+06, 0.101236243573164116E+06, 0.101240451206177866E+06, + 0.101243892699987075E+06, 0.101246988344102370E+06, 0.101250044906442185E+06, 0.101253348298035868E+06, 0.101257374370298217E+06, + 0.101262251561231329E+06, 0.101267895803787687E+06, 0.101275473367753089E+06, 0.101283709026768585E+06, 0.101292283625024313E+06, + 0.101300598737905675E+06, 0.101308093199018083E+06, 0.101314220495369867E+06, 0.101317565250665139E+06, 0.101316383038650820E+06, + 0.101313738332474823E+06, 0.101310203262582130E+06, 0.101306334680532935E+06, 0.101304140173899126E+06, 0.101302185066315011E+06, + 0.101301166929963205E+06, 0.101300627409982437E+06, 0.101301442301666364E+06, 0.101302674870566902E+06, 0.101303021785214194E+06, + 0.101301874610097177E+06, 0.101297234163742920E+06, 0.101289212662159043E+06, 0.101280201810217695E+06, 0.101271153345172788E+06, + 0.101264093160240271E+06, 0.101259964551924568E+06, 0.101257527008254954E+06, 0.101256779297676592E+06, 0.101257083402693010E+06, + 0.101258345876766994E+06, 0.101261741195912517E+06, 0.101267637196925745E+06, 0.101280255542587736E+06, 0.101300219472217796E+06, + 0.101318811431023903E+06, 0.101333064281329105E+06, 0.101337822826176372E+06, 0.101329633927901843E+06, 0.101313842956693508E+06, + 0.101291773913463257E+06, 0.101264248822328038E+06, 0.101231681402834831E+06, 0.101198711256044262E+06, 0.101165944729817566E+06, + 0.101135663129340406E+06, 0.101112149821393570E+06, 0.101094336258872077E+06, 0.101083754934829689E+06, 0.101081962838100400E+06, + 0.101094161177945804E+06, 0.101119463798994111E+06, 0.101153379508463855E+06, 0.101193466772876971E+06, 0.101236864297787688E+06, + 0.101271319749684611E+06, 0.101304810719710440E+06, 0.101336529049048593E+06, 0.101365547226062699E+06, 0.101391403447243065E+06, + 0.101414233987549960E+06, 0.101431699751902197E+06, 0.101443249701215464E+06, 0.101448694379159249E+06, 0.101448342945639379E+06, + 0.101444949497289897E+06, 0.101434983683722516E+06, 0.101420339588228075E+06, 0.101400782009497547E+06, 0.101377357223598548E+06, + 0.101353445824612878E+06, 0.101331105881366500E+06, 0.101310391048972291E+06, 0.101292023316921361E+06, 0.101276408630823629E+06, + 0.101263594338449708E+06, 0.101249134886344415E+06, 0.101234892154251414E+06, 0.101221982151018121E+06, 0.101210641209280395E+06, + 0.101201103409364907E+06, 0.101193542381486463E+06, 0.101189530184913005E+06, 0.101188943141927884E+06, 0.101190369535781749E+06, + 0.101194174658495293E+06, 0.101198877046582638E+06, 0.101203781726436631E+06, 0.101208345081553751E+06, 0.101210641923420510E+06, + 0.101211907924376195E+06, 0.101211894158448660E+06, 0.101261542396602526E+06, 0.101261524602459496E+06, 0.101261271962264684E+06, + 0.101260655467705859E+06, 0.101259535677996173E+06, 0.101257770460092695E+06, 0.101254858567248273E+06, 0.101250130827152869E+06, + 0.101243199529206220E+06, 0.101235660710148513E+06, 0.101227727082598372E+06, 0.101219642017676335E+06, 0.101211669747645647E+06, + 0.101204082204654842E+06, 0.101197142166519814E+06, 0.101190828836761386E+06, 0.101185622952613427E+06, 0.101182084994122983E+06, + 0.101179819644487143E+06, 0.101179386785722192E+06, 0.101181037231546885E+06, 0.101184921544816825E+06, 0.101191071708805684E+06, + 0.101202963344456002E+06, 0.101217214661309525E+06, 0.101232127096539611E+06, 0.101246868435665092E+06, 0.101260623299959872E+06, + 0.101275012912500446E+06, 0.101287927630361359E+06, 0.101297156607966986E+06, 0.101300022279744313E+06, 0.101299658882873831E+06, + 0.101296185125092088E+06, 0.101289860769760111E+06, 0.101281072853932870E+06, 0.101270317685887567E+06, 0.101257849866728764E+06, + 0.101241620969336713E+06, 0.101226620289076629E+06, 0.101213719159152053E+06, 0.101203448100139896E+06, 0.101196030165699893E+06, + 0.101191332050565718E+06, 0.101188825460235021E+06, 0.101186627930786824E+06, 0.101183177496864155E+06, 0.101175055095382006E+06, + 0.101166325451567565E+06, 0.101157506572639366E+06, 0.101149141784503256E+06, 0.101141882059824522E+06, 0.101136611424843984E+06, + 0.101133780517071078E+06, 0.101133612778250375E+06, 0.101137015702474586E+06, 0.101144048000326933E+06, 0.101152946100252506E+06, + 0.101162592544671337E+06, 0.101172594122147348E+06, 0.101182525914593833E+06, 0.101192006688188281E+06, 0.101200731545306888E+06, + 0.101208949653701755E+06, 0.101216776035106115E+06, 0.101223643986761963E+06, 0.101229495275078225E+06, 0.101234397106283810E+06, + 0.101238325186287970E+06, 0.101241245958931366E+06, 0.101243986310471693E+06, 0.101246885079730608E+06, 0.101250239965938381E+06, + 0.101254497783043873E+06, 0.101260948534770170E+06, 0.101268693386766550E+06, 0.101277410860750868E+06, 0.101286673004684562E+06, + 0.101296037156777587E+06, 0.101304973100759889E+06, 0.101312836471203336E+06, 0.101319077100166265E+06, 0.101323200714451756E+06, + 0.101322250124293394E+06, 0.101319426400325508E+06, 0.101315327879672026E+06, 0.101311379409400208E+06, 0.101308929715621984E+06, + 0.101307576201749136E+06, 0.101306752066909641E+06, 0.101306276681202202E+06, 0.101306450951061837E+06, 0.101306928825287003E+06, + 0.101306304370611891E+06, 0.101304071949983219E+06, 0.101298726444911401E+06, 0.101289556844688181E+06, 0.101279573549734007E+06, + 0.101269900918276995E+06, 0.101262737639210711E+06, 0.101259533404357528E+06, 0.101258456904325285E+06, 0.101259373853730853E+06, + 0.101261455254273096E+06, 0.101264486663057716E+06, 0.101269671494430630E+06, 0.101277337091813301E+06, 0.101292476984397377E+06, + 0.101314252890570002E+06, 0.101334243526143560E+06, 0.101349257112687643E+06, 0.101353348220742904E+06, 0.101345316081726181E+06, + 0.101329205683580891E+06, 0.101306196398575121E+06, 0.101276157501052992E+06, 0.101241050683782683E+06, 0.101205878990180805E+06, + 0.101173117425566874E+06, 0.101145231775263543E+06, 0.101124829234029152E+06, 0.101110142836540865E+06, 0.101099009983212847E+06, + 0.101095931793603289E+06, 0.101107937055714152E+06, 0.101129557639286853E+06, 0.101159016947845914E+06, 0.101194290171214365E+06, + 0.101229194191076458E+06, 0.101259884907642350E+06, 0.101290909335772027E+06, 0.101321534960278805E+06, 0.101350933609778935E+06, + 0.101378619763291339E+06, 0.101402515553940961E+06, 0.101421126437325220E+06, 0.101433759893184542E+06, 0.101440081432142906E+06, + 0.101442774222367792E+06, 0.101440175371796868E+06, 0.101430382938397539E+06, 0.101414195446914280E+06, 0.101393183882853962E+06, + 0.101368556280786899E+06, 0.101342857987377705E+06, 0.101318002031737051E+06, 0.101294900480304379E+06, 0.101274304523903862E+06, + 0.101256697091383176E+06, 0.101240541623616038E+06, 0.101225909818463362E+06, 0.101213299349493405E+06, 0.101200928172660904E+06, + 0.101190501742025459E+06, 0.101182213405811461E+06, 0.101176901403817319E+06, 0.101175245583661221E+06, 0.101175762446152599E+06, + 0.101178005333581008E+06, 0.101181392651505157E+06, 0.101186087494527630E+06, 0.101191405412103719E+06, 0.101195091837111089E+06, + 0.101197730891759726E+06, 0.101199364382066880E+06, 0.101199730209935369E+06, 0.101245004040932326E+06, 0.101244559135352756E+06, + 0.101244006361693333E+06, 0.101243220164091719E+06, 0.101242063426875131E+06, 0.101239785127296316E+06, 0.101236357261140554E+06, + 0.101232655165141550E+06, 0.101227802625625860E+06, 0.101220780822386791E+06, 0.101213322053334618E+06, 0.101205654745465290E+06, + 0.101198027406206093E+06, 0.101190695138277268E+06, 0.101183902374283105E+06, 0.101177861446733092E+06, 0.101172715839318174E+06, + 0.101168727915036332E+06, 0.101166083677619172E+06, 0.101165120300427254E+06, 0.101166097664782996E+06, 0.101169176642534818E+06, + 0.101174400762938254E+06, 0.101181681695578300E+06, 0.101194628149370954E+06, 0.101209354172510837E+06, 0.101224384543212596E+06, + 0.101241003377192639E+06, 0.101256971279536912E+06, 0.101271325762838256E+06, 0.101283302907598583E+06, 0.101290837888259193E+06, + 0.101292188600320253E+06, 0.101290316399723524E+06, 0.101285500501916889E+06, 0.101278145707370568E+06, 0.101268063741988299E+06, + 0.101255992666718317E+06, 0.101243630289196284E+06, 0.101230020660095543E+06, 0.101218300352418431E+06, 0.101208996070145775E+06, + 0.101202318103285957E+06, 0.101198115125068754E+06, 0.101195865072430563E+06, 0.101192485973754709E+06, 0.101184883550562605E+06, + 0.101176252043943983E+06, 0.101167064140836461E+06, 0.101157837055866650E+06, 0.101149111932572778E+06, 0.101141425669095363E+06, + 0.101136096494374695E+06, 0.101133772515929886E+06, 0.101136278536261714E+06, 0.101141790910123251E+06, 0.101149565058361550E+06, + 0.101159158826086161E+06, 0.101169280924233710E+06, 0.101179364339541717E+06, 0.101189214375348573E+06, 0.101198419330631325E+06, + 0.101206662421100802E+06, 0.101214110977152406E+06, 0.101221277683224456E+06, 0.101227361193735371E+06, 0.101232391962857888E+06, + 0.101236456240121115E+06, 0.101239696448804534E+06, 0.101242131415364871E+06, 0.101244485321801025E+06, 0.101247206329288369E+06, + 0.101250813340918423E+06, 0.101256254483921584E+06, 0.101263638654577793E+06, 0.101272420586206106E+06, 0.101282081390786785E+06, + 0.101292093147014763E+06, 0.101301886889219619E+06, 0.101311011635127215E+06, 0.101318745388787589E+06, 0.101324552511834278E+06, + 0.101327137099599713E+06, 0.101325798652594996E+06, 0.101322370281172494E+06, 0.101318873214067411E+06, 0.101316033453167009E+06, + 0.101314254241750285E+06, 0.101313290040590538E+06, 0.101312777489808956E+06, 0.101312426972162124E+06, 0.101312077043907979E+06, + 0.101311637613854371E+06, 0.101309930679532728E+06, 0.101306604219150962E+06, 0.101300708574919438E+06, 0.101290667766194849E+06, + 0.101280103453056901E+06, 0.101270238174615952E+06, 0.101263265305097812E+06, 0.101261210282368877E+06, 0.101261635280168994E+06, + 0.101264259503469541E+06, 0.101268188459234763E+06, 0.101273120782915241E+06, 0.101280081032422138E+06, 0.101289326234345950E+06, + 0.101306137507821695E+06, 0.101328331726916280E+06, 0.101348454606262691E+06, 0.101363243724620203E+06, 0.101365228148856142E+06, + 0.101355701191101674E+06, 0.101338137535693226E+06, 0.101313442343172661E+06, 0.101279893686959578E+06, 0.101241766771608411E+06, + 0.101204166019317592E+06, 0.101170013105795253E+06, 0.101142432350644231E+06, 0.101122231791865343E+06, 0.101108816561727523E+06, + 0.101102229721379510E+06, 0.101103813368451665E+06, 0.101116580337189007E+06, 0.101134920647456835E+06, 0.101160141230191730E+06, + 0.101190695983823272E+06, 0.101217581338673946E+06, 0.101244990949544663E+06, 0.101273917316553634E+06, 0.101303572896501239E+06, + 0.101333544453130846E+06, 0.101364877370781323E+06, 0.101391063816659895E+06, 0.101411237101045277E+06, 0.101425278782258334E+06, + 0.101433519934200929E+06, 0.101439158935259431E+06, 0.101436999045160905E+06, 0.101426916105024720E+06, 0.101409617969188068E+06, + 0.101386542831537823E+06, 0.101358099179373283E+06, 0.101329104321193983E+06, 0.101301390131810738E+06, 0.101275584184176812E+06, + 0.101252450915750233E+06, 0.101231887457535791E+06, 0.101212090768716560E+06, 0.101196447068532798E+06, 0.101185068443023629E+06, + 0.101177384135667060E+06, 0.101168309967723544E+06, 0.101161992541140848E+06, 0.101159852630578913E+06, 0.101159796489626082E+06, + 0.101161597602608847E+06, 0.101164838510229980E+06, 0.101168957886595192E+06, 0.101173308450019656E+06, 0.101177043737997461E+06, + 0.101180725542300570E+06, 0.101183638211952741E+06, 0.101185541375514644E+06, 0.101186177771331219E+06, 0.101231389269493171E+06, + 0.101229452023944614E+06, 0.101228492450459045E+06, 0.101227437857730562E+06, 0.101225272919369032E+06, 0.101222115782736248E+06, + 0.101218895852368762E+06, 0.101215584732123752E+06, 0.101212116636056322E+06, 0.101207354097621472E+06, 0.101200521838921966E+06, + 0.101193426713001274E+06, 0.101186304142571476E+06, 0.101179395677309934E+06, 0.101172931379861388E+06, 0.101167151828382484E+06, + 0.101162308500518877E+06, 0.101158300144806009E+06, 0.101155408258388663E+06, 0.101154070184498851E+06, 0.101154559752015484E+06, + 0.101157052466433044E+06, 0.101161607131965604E+06, 0.101168151354609319E+06, 0.101176471448160533E+06, 0.101190446255643255E+06, + 0.101207546249739040E+06, 0.101224869025537133E+06, 0.101241629266362957E+06, 0.101257034534386199E+06, 0.101270300423290071E+06, + 0.101280701804350014E+06, 0.101286032850469506E+06, 0.101285592385854572E+06, 0.101282085195034277E+06, 0.101274697798302746E+06, + 0.101264580591891121E+06, 0.101253728075986262E+06, 0.101242929317346643E+06, 0.101232485866013521E+06, 0.101222025672053554E+06, + 0.101213765521939480E+06, 0.101207908438247250E+06, 0.101204284122239580E+06, 0.101199927839590950E+06, 0.101194734819518329E+06, + 0.101188456889903726E+06, 0.101179666542616309E+06, 0.101170394407501270E+06, 0.101161163472120141E+06, 0.101152520749703152E+06, + 0.101145006252468942E+06, 0.101139495861547286E+06, 0.101140801932908304E+06, 0.101144658005535239E+06, 0.101150950782672968E+06, + 0.101159402010231061E+06, 0.101169516352869221E+06, 0.101180618870833394E+06, 0.101190857796199096E+06, 0.101200641550543587E+06, + 0.101209362327359180E+06, 0.101217130139796180E+06, 0.101224049008589936E+06, 0.101230122753387783E+06, 0.101235212462695199E+06, + 0.101239229954162147E+06, 0.101242277095199534E+06, 0.101244507835626879E+06, 0.101246153185945266E+06, 0.101247135672995661E+06, + 0.101249606832741643E+06, 0.101254017340448758E+06, 0.101260512682501125E+06, 0.101268912159280037E+06, 0.101278581961162170E+06, + 0.101288935630890279E+06, 0.101299344634514127E+06, 0.101309165575948311E+06, 0.101317556887074039E+06, 0.101323172703937016E+06, + 0.101326358447397986E+06, 0.101327232302474091E+06, 0.101325894572504010E+06, 0.101322706535794525E+06, 0.101319932108380584E+06, + 0.101318115839731938E+06, 0.101317374329348502E+06, 0.101316802412196412E+06, 0.101316539167573457E+06, 0.101316220872659469E+06, + 0.101315472541661889E+06, 0.101313988991298058E+06, 0.101311143303248988E+06, 0.101306823565026949E+06, 0.101300909517459571E+06, + 0.101291139156745485E+06, 0.101281432901143096E+06, 0.101272931024738762E+06, 0.101267480423988032E+06, 0.101267406598649904E+06, + 0.101269963384954986E+06, 0.101274800002130170E+06, 0.101281233237463195E+06, 0.101288842618392577E+06, 0.101297886975346977E+06, + 0.101308296387334616E+06, 0.101325624485844790E+06, 0.101346166178142783E+06, 0.101363441252856501E+06, 0.101374801583022883E+06, + 0.101371478339382054E+06, 0.101357965915636902E+06, 0.101337616663800756E+06, 0.101310513973449386E+06, 0.101272307541573202E+06, + 0.101230865550039016E+06, 0.101190791911869368E+06, 0.101155350687670492E+06, 0.101129224427448615E+06, 0.101110583343861392E+06, + 0.101099020700267734E+06, 0.101094724119735372E+06, 0.101099023269690821E+06, 0.101111662707600757E+06, 0.101130628382792580E+06, + 0.101154442701152686E+06, 0.101179514522985817E+06, 0.101201379997560478E+06, 0.101226265787734679E+06, 0.101253796882664625E+06, + 0.101283225572595169E+06, 0.101317124967778669E+06, 0.101350989077608407E+06, 0.101379921717535108E+06, 0.101402381642000008E+06, + 0.101417742462739217E+06, 0.101429901727416946E+06, 0.101436203470310473E+06, 0.101434079341425662E+06, 0.101423164600191842E+06, + 0.101404037685293821E+06, 0.101376818918793375E+06, 0.101344589194113520E+06, 0.101311531147971255E+06, 0.101279820675164505E+06, + 0.101251153362574143E+06, 0.101225285333396270E+06, 0.101199764562447148E+06, 0.101178262360150809E+06, 0.101161772194779478E+06, + 0.101150434481179953E+06, 0.101143909494338062E+06, 0.101141390141577620E+06, 0.101140639767941699E+06, 0.101140632648710569E+06, + 0.101142372620975060E+06, 0.101145663398052158E+06, 0.101150107990777600E+06, 0.101155154940690569E+06, 0.101159369531278891E+06, + 0.101162295247948568E+06, 0.101164893804552295E+06, 0.101168002876310085E+06, 0.101170082535517562E+06, 0.101170879828210964E+06, + 0.101219861459639709E+06, 0.101217353733850920E+06, 0.101214813662341927E+06, 0.101212272616671195E+06, 0.101208980334428372E+06, + 0.101205795685889956E+06, 0.101202734659769427E+06, 0.101199769990954403E+06, 0.101196834984741159E+06, 0.101193828164992272E+06, + 0.101189376363543503E+06, 0.101183028116295318E+06, 0.101176590659241221E+06, 0.101170295511546516E+06, 0.101164459781001147E+06, + 0.101159272837843542E+06, 0.101154626508349247E+06, 0.101150830978481536E+06, 0.101147940393322046E+06, 0.101146374185143752E+06, + 0.101146551350105059E+06, 0.101148666345078062E+06, 0.101152796928674230E+06, 0.101158889620899077E+06, 0.101166802022490039E+06, + 0.101178035305259487E+06, 0.101194860122035752E+06, 0.101212325551695918E+06, 0.101229507831180323E+06, 0.101245588075390231E+06, + 0.101259749204794090E+06, 0.101271227064842373E+06, 0.101279354568716226E+06, 0.101282023041620065E+06, 0.101277735417878983E+06, + 0.101270065940430606E+06, 0.101260942221718724E+06, 0.101251183302667749E+06, 0.101241580790420048E+06, 0.101232817663754860E+06, + 0.101224865544509375E+06, 0.101217678236240463E+06, 0.101212672610467605E+06, 0.101207368061914924E+06, 0.101202142949429748E+06, + 0.101197200360827206E+06, 0.101192321056135959E+06, 0.101185312042045203E+06, 0.101176366919002583E+06, 0.101167575306740793E+06, + 0.101159499887747690E+06, 0.101153693581619635E+06, 0.101151632492099627E+06, 0.101152648343697670E+06, 0.101157198969257923E+06, + 0.101164178808173063E+06, 0.101173247856793882E+06, 0.101183857272265639E+06, 0.101195294072408884E+06, 0.101206439742155373E+06, + 0.101215821840872028E+06, 0.101224223508709707E+06, 0.101231582323487324E+06, 0.101237823030360581E+06, 0.101242874318770337E+06, + 0.101246774089702827E+06, 0.101249620201836733E+06, 0.101251514633922707E+06, 0.101250998739460556E+06, 0.101250350564701104E+06, + 0.101251192192736547E+06, 0.101254126969565099E+06, 0.101259362363834385E+06, 0.101266888172729494E+06, 0.101276372037240624E+06, + 0.101286838617996444E+06, 0.101297573246049607E+06, 0.101307533698699568E+06, 0.101315884770704040E+06, 0.101322262940598855E+06, + 0.101325965760392661E+06, 0.101327074410681467E+06, 0.101325913256045969E+06, 0.101323124870245505E+06, 0.101319702236701676E+06, + 0.101317199019545646E+06, 0.101315951598744505E+06, 0.101315806747022463E+06, 0.101315575437492836E+06, 0.101314907982108765E+06, + 0.101313877512845647E+06, 0.101312479697057366E+06, 0.101309803618787570E+06, 0.101306072028328548E+06, 0.101301517809186698E+06, + 0.101296222398532715E+06, 0.101287978736962512E+06, 0.101280134483104775E+06, 0.101273858730883643E+06, 0.101270559684999607E+06, + 0.101272646114663905E+06, 0.101277445816036910E+06, 0.101284587711525965E+06, 0.101293877343276210E+06, 0.101304839668757166E+06, + 0.101316528257227954E+06, 0.101328366576771165E+06, 0.101345969486117698E+06, 0.101364186088572969E+06, 0.101377148495963469E+06, + 0.101382093829553254E+06, 0.101370766337072331E+06, 0.101349741353763951E+06, 0.101321811510905638E+06, 0.101288468123698593E+06, + 0.101244965303345511E+06, 0.101202004776977919E+06, 0.101162860285996649E+06, 0.101126851606302604E+06, 0.101104372225545885E+06, + 0.101088557676466924E+06, 0.101079807482518576E+06, 0.101078498448923550E+06, 0.101085445131155400E+06, 0.101098827324377111E+06, + 0.101117379276230466E+06, 0.101139770652544976E+06, 0.101160113557297649E+06, 0.101180387504904938E+06, 0.101203886596317709E+06, + 0.101230902181368132E+06, 0.101261803558958476E+06, 0.101300608660476937E+06, 0.101337274184836075E+06, 0.101369125977644289E+06, + 0.101394267041929546E+06, 0.101413158265606093E+06, 0.101427330114929093E+06, 0.101432361057773902E+06, 0.101429910859225725E+06, + 0.101417624134461643E+06, 0.101395314188587567E+06, 0.101362172145086661E+06, 0.101325960646168634E+06, 0.101289070977803320E+06, + 0.101253544677021608E+06, 0.101220938962399465E+06, 0.101189935258524172E+06, 0.101161696612905507E+06, 0.101138721820111517E+06, + 0.101121644349305658E+06, 0.101110649141410599E+06, 0.101105415636551304E+06, 0.101106709372907222E+06, 0.101112684473039320E+06, + 0.101118393699309789E+06, 0.101122164751330070E+06, 0.101127188453840165E+06, 0.101133080620089138E+06, 0.101138746974859983E+06, + 0.101142873479913527E+06, 0.101146389620966002E+06, 0.101149025184660437E+06, 0.101150587859464547E+06, 0.101152755345234560E+06, + 0.101153603260132426E+06, 0.101210525717246186E+06, 0.101207548474999538E+06, 0.101202904596832290E+06, 0.101197951386655157E+06, + 0.101194386519771622E+06, 0.101191122015514105E+06, 0.101188175657561296E+06, 0.101185519945178385E+06, 0.101183085746111174E+06, + 0.101180766773284515E+06, 0.101178424993241424E+06, 0.101174517040993989E+06, 0.101168962341147722E+06, 0.101163714253363345E+06, + 0.101158948557658077E+06, 0.101154261182255184E+06, 0.101149950932639709E+06, 0.101146327181315632E+06, 0.101143687040794233E+06, + 0.101142126337276364E+06, 0.101142152044085655E+06, 0.101144083527112423E+06, 0.101148021171421016E+06, 0.101154000779215450E+06, + 0.101162760282120405E+06, 0.101173711396198050E+06, 0.101186611484798021E+06, 0.101203854792520258E+06, 0.101221108630801245E+06, + 0.101237514909808757E+06, 0.101252212005649548E+06, 0.101264385838287199E+06, 0.101273313773670612E+06, 0.101275991122254636E+06, + 0.101272633847169331E+06, 0.101265839223746094E+06, 0.101257619395513131E+06, 0.101248828329997094E+06, 0.101240269262524962E+06, + 0.101232609922544550E+06, 0.101226305719316471E+06, 0.101221001261636731E+06, 0.101215325578545016E+06, 0.101210148330884782E+06, + 0.101205386910296002E+06, 0.101200913609812837E+06, 0.101196557499459639E+06, 0.101192094621711993E+06, 0.101184939627293686E+06, + 0.101177056092112194E+06, 0.101171384998373789E+06, 0.101168077457142164E+06, 0.101167062491365999E+06, 0.101168742847490139E+06, + 0.101173481015017140E+06, 0.101181062252591364E+06, 0.101190688726292763E+06, 0.101201754487460537E+06, 0.101213053590803727E+06, + 0.101224458950927612E+06, 0.101234613260145692E+06, 0.101242743726390036E+06, 0.101249595831817132E+06, 0.101255046289272010E+06, + 0.101258984767052723E+06, 0.101261363785577109E+06, 0.101261779254400128E+06, 0.101259695740838331E+06, 0.101257723355522670E+06, + 0.101256712782620496E+06, 0.101257390131988577E+06, 0.101260812728128207E+06, 0.101266865110914150E+06, 0.101275356425384583E+06, + 0.101285757165198593E+06, 0.101297005109519319E+06, 0.101307222441895385E+06, 0.101316130802742104E+06, 0.101323131432448601E+06, + 0.101327755554835458E+06, 0.101329091060690815E+06, 0.101327426676222676E+06, 0.101323405755774875E+06, 0.101317808009742424E+06, + 0.101312695092861308E+06, 0.101309644418928467E+06, 0.101307843097245379E+06, 0.101307258014776118E+06, 0.101306396062738830E+06, + 0.101304392989299769E+06, 0.101302318926388383E+06, 0.101300146974100906E+06, 0.101296693003163877E+06, 0.101292171838443071E+06, + 0.101287472873098537E+06, 0.101282787197424317E+06, 0.101276691890622955E+06, 0.101271343380570586E+06, 0.101267971439309680E+06, + 0.101267491024100920E+06, 0.101272069334797809E+06, 0.101279335267968272E+06, 0.101288917788163279E+06, 0.101301241225878053E+06, + 0.101315819189724789E+06, 0.101330320177330534E+06, 0.101343606724499783E+06, 0.101360277666390102E+06, 0.101374651937569957E+06, + 0.101381948044541350E+06, 0.101379139254734604E+06, 0.101357829215456179E+06, 0.101327280040149271E+06, 0.101289941888269532E+06, + 0.101246108522415467E+06, 0.101194796632095546E+06, 0.101146024288208340E+06, 0.101103656741928615E+06, 0.101073141515266252E+06, + 0.101057806173447316E+06, 0.101051682514418280E+06, 0.101049406076037965E+06, 0.101052339673225651E+06, 0.101063115066462298E+06, + 0.101078506068417060E+06, 0.101097590566484258E+06, 0.101118771179471136E+06, 0.101135489318013730E+06, 0.101154758424584812E+06, + 0.101177654242688412E+06, 0.101205061131610448E+06, 0.101242230976538951E+06, 0.101283647903067162E+06, 0.101323242160821901E+06, + 0.101358087742294330E+06, 0.101385937955843910E+06, 0.101409794381458749E+06, 0.101425117131910592E+06, 0.101429997042675925E+06, + 0.101424225668113679E+06, 0.101409012607044147E+06, 0.101378645916584719E+06, 0.101341017521829854E+06, 0.101300635121866770E+06, + 0.101259780015675904E+06, 0.101220490612824302E+06, 0.101183385014229250E+06, 0.101147969487759023E+06, 0.101117685992608021E+06, + 0.101093539937281050E+06, 0.101076195561657238E+06, 0.101065910310074483E+06, 0.101063435753359998E+06, 0.101067804628520898E+06, + 0.101076221687106154E+06, 0.101087269872699864E+06, 0.101098388777976448E+06, 0.101105436139853176E+06, 0.101112874451142532E+06, + 0.101118849015061031E+06, 0.101124113984576659E+06, 0.101128454272832299E+06, 0.101131632912711430E+06, 0.101133440671438293E+06, + 0.101133742258942963E+06, 0.101133420481460824E+06, 0.101203377126110252E+06, 0.101198268613597073E+06, 0.101192518049139719E+06, + 0.101186803252296639E+06, 0.101181813758537333E+06, 0.101178421999043727E+06, 0.101175553435103371E+06, 0.101173179030172672E+06, + 0.101171225754259809E+06, 0.101169580857152410E+06, 0.101168097072006873E+06, 0.101166598871645896E+06, 0.101163936200708034E+06, + 0.101160319529115644E+06, 0.101156350070871646E+06, 0.101152298957045554E+06, 0.101148469397518347E+06, 0.101145174878879858E+06, + 0.101142716121090431E+06, 0.101141356671128422E+06, 0.101141393983984628E+06, 0.101143318014807519E+06, 0.101147349641468565E+06, + 0.101153926105170540E+06, 0.101162646354183598E+06, 0.101173404206242340E+06, 0.101185918183552916E+06, 0.101199863730921250E+06, + 0.101216872253279580E+06, 0.101233295276471807E+06, 0.101248215030952546E+06, 0.101260757021715341E+06, 0.101267495548934719E+06, + 0.101269706371902867E+06, 0.101268204478453976E+06, 0.101262805085999877E+06, 0.101255380826612120E+06, 0.101247430865831397E+06, + 0.101239780825202557E+06, 0.101233090454269026E+06, 0.101227802760140185E+06, 0.101223571816330572E+06, 0.101219066722623626E+06, + 0.101214540599785731E+06, 0.101210406057645538E+06, 0.101206592274863258E+06, 0.101202981532469319E+06, 0.101199400726594919E+06, + 0.101195627874287937E+06, 0.101191227720762778E+06, 0.101187565739316706E+06, 0.101185464827996155E+06, 0.101185511851585936E+06, + 0.101188073018881041E+06, 0.101193228150490002E+06, 0.101201132185450770E+06, 0.101211253103469411E+06, 0.101221691007216708E+06, + 0.101232930515629778E+06, 0.101244622455395234E+06, 0.101256099137093290E+06, 0.101264336488988658E+06, 0.101270613718010951E+06, + 0.101275186944850837E+06, 0.101277911712320536E+06, 0.101275720871891084E+06, 0.101272701050287156E+06, 0.101269530015498065E+06, + 0.101266916775846155E+06, 0.101265667085305176E+06, 0.101266412423480491E+06, 0.101269963618393420E+06, 0.101276824074798991E+06, + 0.101286538984123661E+06, 0.101297754584716895E+06, 0.101309268788473608E+06, 0.101319049570761636E+06, 0.101326688370924327E+06, + 0.101331858743319128E+06, 0.101334118663267698E+06, 0.101332850026087355E+06, 0.101327763563889297E+06, 0.101320054486635490E+06, + 0.101310581963123463E+06, 0.101301464042469088E+06, 0.101296071475081029E+06, 0.101292351628835357E+06, 0.101290169534329834E+06, + 0.101288302766939916E+06, 0.101284014152439850E+06, 0.101279941996829206E+06, 0.101276061598442378E+06, 0.101271538120976256E+06, + 0.101266097326113042E+06, 0.101261239127189925E+06, 0.101257245251898741E+06, 0.101253483641709958E+06, 0.101251125639619684E+06, + 0.101251189762292764E+06, 0.101253695416316186E+06, 0.101260342754598576E+06, 0.101269818597965233E+06, 0.101281786685942599E+06, + 0.101297267888598697E+06, 0.101315752383087500E+06, 0.101333588295053938E+06, 0.101349152940472399E+06, 0.101363783604825469E+06, + 0.101372978867465237E+06, 0.101373889912201208E+06, 0.101361962340075130E+06, 0.101329656482126462E+06, 0.101288577681367635E+06, + 0.101241353955692000E+06, 0.101187015186283301E+06, 0.101128342669573714E+06, 0.101074249019373397E+06, 0.101029162958810339E+06, + 0.101000523612843142E+06, 0.100987089359594960E+06, 0.100984958621042068E+06, 0.100992130612266148E+06, 0.101008448898443559E+06, + 0.101030521667859153E+06, 0.101051007866767963E+06, 0.101071664234935859E+06, 0.101090175915114785E+06, 0.101106549855269026E+06, + 0.101125443846952985E+06, 0.101148128478478480E+06, 0.101176649869573142E+06, 0.101219367480301720E+06, 0.101264169410245595E+06, + 0.101307902998138612E+06, 0.101345704641115881E+06, 0.101377820901637606E+06, 0.101403851472658702E+06, 0.101419708524997433E+06, + 0.101423957150136412E+06, 0.101416125366734399E+06, 0.101392821386149662E+06, 0.101354118286926780E+06, 0.101311952791900418E+06, + 0.101267586958551430E+06, 0.101222923148393995E+06, 0.101179984606825063E+06, 0.101137775123404324E+06, 0.101100052058991307E+06, + 0.101068211877007227E+06, 0.101043182495123227E+06, 0.101025887119877370E+06, 0.101017441028948917E+06, 0.101018646999727091E+06, + 0.101025249625575729E+06, 0.101036067916060245E+06, 0.101049702828005305E+06, 0.101064676552964025E+06, 0.101079565938465035E+06, + 0.101088532594576784E+06, 0.101096312478571519E+06, 0.101102983223382442E+06, 0.101108374984337381E+06, 0.101112280329396730E+06, + 0.101114507038743657E+06, 0.101114428830065517E+06, 0.101111055246130432E+06, 0.101196406538596522E+06, 0.101190461736979341E+06, + 0.101184419171533169E+06, 0.101178438759959274E+06, 0.101172694307587532E+06, 0.101168042459568693E+06, 0.101165224780188713E+06, + 0.101163116738625147E+06, 0.101161640044718297E+06, 0.101160673934197897E+06, 0.101160060130737882E+06, 0.101160308872814785E+06, + 0.101161160328086728E+06, 0.101159852318196237E+06, 0.101156811572228151E+06, 0.101153532829243355E+06, 0.101150328623015521E+06, + 0.101147521674777250E+06, 0.101145421670737880E+06, 0.101144300600728122E+06, 0.101144366524547018E+06, 0.101146453358106490E+06, + 0.101151154760197140E+06, 0.101157852536650826E+06, 0.101166593375939396E+06, 0.101177254193880435E+06, 0.101189538295227583E+06, + 0.101202976381101937E+06, 0.101217143841964367E+06, 0.101233326011591271E+06, 0.101248211830283530E+06, 0.101258376645531374E+06, + 0.101264582921753405E+06, 0.101267070734474910E+06, 0.101266001194085227E+06, 0.101261820132445268E+06, 0.101255225790946322E+06, + 0.101247986960119670E+06, 0.101241132826118715E+06, 0.101235589817356347E+06, 0.101231742691396459E+06, 0.101228190519347510E+06, + 0.101224868811623688E+06, 0.101221346956982394E+06, 0.101217966212733285E+06, 0.101214970532675288E+06, 0.101212299627427041E+06, + 0.101209926653408853E+06, 0.101209182347595939E+06, 0.101208894928154026E+06, 0.101206557077161851E+06, 0.101205653829090777E+06, + 0.101206766501731909E+06, 0.101210234953384323E+06, 0.101216093544594405E+06, 0.101223864474518923E+06, 0.101233270650245788E+06, + 0.101243919236364745E+06, 0.101255411905531102E+06, 0.101267215651558581E+06, 0.101278589053053409E+06, 0.101288326667672663E+06, + 0.101293977254483369E+06, 0.101295988963460462E+06, 0.101293942850610052E+06, 0.101290379977981182E+06, 0.101286211796570817E+06, + 0.101282157951643720E+06, 0.101279101833166642E+06, 0.101277814046354848E+06, 0.101278807487432292E+06, 0.101282938226413549E+06, + 0.101291273361035273E+06, 0.101301583582921769E+06, 0.101312849202165788E+06, 0.101324002651453309E+06, 0.101333489244781522E+06, + 0.101339488921891199E+06, 0.101342369325021820E+06, 0.101341720289730991E+06, 0.101337127319298394E+06, 0.101327791615567519E+06, + 0.101315437423608601E+06, 0.101301282640627105E+06, 0.101286811802460725E+06, 0.101276747879297676E+06, 0.101269331760055575E+06, + 0.101263643990522745E+06, 0.101258989523824217E+06, 0.101251456119543334E+06, 0.101244182196566340E+06, 0.101237348106484831E+06, + 0.101228692607444944E+06, 0.101218585751885927E+06, 0.101210928314959441E+06, 0.101206232353375613E+06, 0.101203871455940549E+06, + 0.101203999533384937E+06, 0.101207475042430247E+06, 0.101214320092416674E+06, 0.101224147807091678E+06, 0.101236699974733609E+06, + 0.101251676274940794E+06, 0.101270825632959895E+06, 0.101293545270099348E+06, 0.101314419599624249E+06, 0.101330994497954525E+06, + 0.101343242305169362E+06, 0.101347429834497641E+06, 0.101341255518135789E+06, 0.101319524205864262E+06, 0.101278200143226626E+06, + 0.101228562906559484E+06, 0.101174212317573372E+06, 0.101112623030610339E+06, 0.101048222350508891E+06, 0.100990099190183420E+06, + 0.100943211786408705E+06, 0.100918044317067266E+06, 0.100907611661432689E+06, 0.100910107183064712E+06, 0.100923917070401818E+06, + 0.100948850301936414E+06, 0.100978281786140433E+06, 0.101008728042257979E+06, 0.101037658211344344E+06, 0.101057364399701371E+06, + 0.101074391235513976E+06, 0.101093594285308805E+06, 0.101116488413099345E+06, 0.101150558690399863E+06, 0.101193914933389984E+06, + 0.101239758121016799E+06, 0.101285323747319708E+06, 0.101327925492475028E+06, 0.101365565138565944E+06, 0.101392573640838629E+06, + 0.101408539383438299E+06, 0.101411604282492801E+06, 0.101400582930128410E+06, 0.101366946069406418E+06, 0.101324287192622069E+06, + 0.101276101666633986E+06, 0.101226619258282910E+06, 0.101178585432356136E+06, 0.101130984262627506E+06, 0.101086307783769356E+06, + 0.101046851053375387E+06, 0.101014063196888950E+06, 0.100988908271188513E+06, 0.100971785835137707E+06, 0.100968245753203373E+06, + 0.100971380696101813E+06, 0.100980060807918417E+06, 0.100993169646215858E+06, 0.101009312468744305E+06, 0.101026966655764860E+06, + 0.101044366184895640E+06, 0.101060339563627815E+06, 0.101071158866529076E+06, 0.101079488812984200E+06, 0.101086153913575283E+06, + 0.101090971172654899E+06, 0.101093525999388585E+06, 0.101092846852564820E+06, 0.101089780957355411E+06, 0.101191123249149765E+06, + 0.101184975896710632E+06, 0.101178781171733193E+06, 0.101172687284701038E+06, 0.101166856628363908E+06, 0.101161463025241668E+06, + 0.101157556719236236E+06, 0.101155715658911155E+06, 0.101154729896713383E+06, 0.101154469238441612E+06, 0.101155775624535832E+06, + 0.101158121462038107E+06, 0.101160042093184384E+06, 0.101161344855236384E+06, 0.101160448275110015E+06, 0.101158071590188309E+06, + 0.101155631532086059E+06, 0.101153465356088433E+06, 0.101151897289994900E+06, 0.101151213659422618E+06, 0.101151737576582789E+06, + 0.101154199170773107E+06, 0.101158985005759008E+06, 0.101165841396522868E+06, 0.101174673234837159E+06, 0.101185340894024586E+06, + 0.101197532040988634E+06, 0.101210762902995120E+06, 0.101224385238204501E+06, 0.101237894404589199E+06, 0.101250772227856185E+06, + 0.101260411029266310E+06, 0.101266591706174368E+06, 0.101269204187456722E+06, 0.101268397182717250E+06, 0.101264588122030676E+06, + 0.101258438511883942E+06, 0.101251623403392019E+06, 0.101246063118456994E+06, 0.101242417800723517E+06, 0.101239166549985050E+06, + 0.101236254306650939E+06, 0.101233631773944420E+06, 0.101231248894982156E+06, 0.101228825720597553E+06, 0.101226772928204024E+06, + 0.101225473798737570E+06, 0.101225516278296083E+06, 0.101226043519455008E+06, 0.101227093486833808E+06, 0.101228289760449348E+06, + 0.101228546951147655E+06, 0.101230707510254171E+06, 0.101235093253586310E+06, 0.101241126677553519E+06, 0.101248645598633651E+06, + 0.101258142018320970E+06, 0.101268933306888299E+06, 0.101280513500391826E+06, 0.101292262732881034E+06, 0.101303355465601169E+06, + 0.101312817264586003E+06, 0.101316400177874268E+06, 0.101315483458758521E+06, 0.101312277984593762E+06, 0.101307698621808959E+06, + 0.101302673951913355E+06, 0.101298053010945936E+06, 0.101294840530663249E+06, 0.101294065839099727E+06, 0.101296783533959431E+06, + 0.101302065639223511E+06, 0.101310033568624291E+06, 0.101320378178744606E+06, 0.101331366932783130E+06, 0.101341800425977897E+06, + 0.101350415611308272E+06, 0.101354800042096002E+06, 0.101354718500839095E+06, 0.101350294315183972E+06, 0.101341487001001398E+06, + 0.101327926160731338E+06, 0.101310260858651716E+06, 0.101290273767883307E+06, 0.101269495556410489E+06, 0.101251846238950835E+06, + 0.101238682635122401E+06, 0.101227174341821534E+06, 0.101213482647208613E+06, 0.101195603009729079E+06, 0.101177872156641286E+06, + 0.101162325618075352E+06, 0.101149982165601716E+06, 0.101139852149278217E+06, 0.101134024565056650E+06, 0.101132753824598782E+06, + 0.101135032680571021E+06, 0.101140084766430024E+06, 0.101148877574289698E+06, 0.101161005262514984E+06, 0.101174747769146576E+06, + 0.101190713232751208E+06, 0.101208811802622309E+06, 0.101231640660711972E+06, 0.101258571723189729E+06, 0.101282336017681446E+06, + 0.101299629439163051E+06, 0.101308040998087759E+06, 0.101305555171365690E+06, 0.101290435343250807E+06, 0.101256519799893256E+06, + 0.101204322883293091E+06, 0.101144321216045384E+06, 0.101080811870748948E+06, 0.101014238668434729E+06, 0.100950513534181708E+06, + 0.100894391363170798E+06, 0.100851829575523923E+06, 0.100832142921501421E+06, 0.100825615789308096E+06, 0.100832955840479583E+06, + 0.100854821405899405E+06, 0.100888239967709887E+06, 0.100925422763286362E+06, 0.100962602314510819E+06, 0.100994687767612981E+06, + 0.101018445383155631E+06, 0.101039638130810010E+06, 0.101060824122542370E+06, 0.101084945514884181E+06, 0.101122354145820311E+06, + 0.101165147778325379E+06, 0.101210847657910417E+06, 0.101256682236652778E+06, 0.101301382158490291E+06, 0.101341411155713809E+06, + 0.101372219111328362E+06, 0.101389231784620119E+06, 0.101390880863434664E+06, 0.101369226261351185E+06, 0.101331834231281726E+06, + 0.101285779545129859E+06, 0.101234345503529141E+06, 0.101180743690781746E+06, 0.101127223607977256E+06, 0.101076620915575957E+06, + 0.101030138146362922E+06, 0.100989582250385356E+06, 0.100956503181212684E+06, 0.100931937764084651E+06, 0.100920299784557195E+06, + 0.100918057371207338E+06, 0.100922770743209869E+06, 0.100933261994784887E+06, 0.100948483778151451E+06, 0.100967026543898348E+06, + 0.100987282070977919E+06, 0.101007276882737569E+06, 0.101025807002176851E+06, 0.101042092544874176E+06, 0.101053732614110791E+06, + 0.101061889868345606E+06, 0.101067702910314212E+06, 0.101070224192290465E+06, 0.101070263142884942E+06, 0.101067836061994312E+06, + 0.101188101877120876E+06, 0.101181904204517952E+06, 0.101175721080675750E+06, 0.101169689701016847E+06, 0.101163962332899173E+06, + 0.101158703372389791E+06, 0.101154083105507743E+06, 0.101151357736191479E+06, 0.101150899044327409E+06, 0.101152824487497259E+06, + 0.101156224838871945E+06, 0.101159507416219887E+06, 0.101162417168140935E+06, 0.101164756494849746E+06, 0.101166400553546104E+06, + 0.101165982684454619E+06, 0.101164433293333408E+06, 0.101163049411835455E+06, 0.101162175585306977E+06, 0.101162128095756125E+06, + 0.101163361425100273E+06, 0.101166227742201969E+06, 0.101170937924715152E+06, 0.101177913034471421E+06, 0.101186917319165936E+06, + 0.101197704545258457E+06, 0.101209946031686050E+06, 0.101223141837685776E+06, 0.101236628019135329E+06, 0.101248564959035430E+06, + 0.101259061289307880E+06, 0.101268404236147617E+06, 0.101274449875235630E+06, 0.101277082514349167E+06, 0.101276437786749404E+06, + 0.101272910152209646E+06, 0.101267124457491314E+06, 0.101260716984134080E+06, 0.101256743164844607E+06, 0.101253604663335806E+06, + 0.101250897345323741E+06, 0.101248591593381454E+06, 0.101246654559015689E+06, 0.101245041613427515E+06, 0.101243680788220503E+06, + 0.101243097273199470E+06, 0.101243781512439353E+06, 0.101244948599458978E+06, 0.101246597302939059E+06, 0.101248747416430124E+06, + 0.101251423906546814E+06, 0.101254153427662954E+06, 0.101257318705204321E+06, 0.101261887373189515E+06, 0.101267979989058746E+06, + 0.101275948774720324E+06, 0.101285713213097159E+06, 0.101296774828760288E+06, 0.101308302668075557E+06, 0.101319850467473152E+06, + 0.101329837083710619E+06, 0.101335921303205963E+06, 0.101339123113933456E+06, 0.101337898637374194E+06, 0.101333773323031986E+06, + 0.101328456667992868E+06, 0.101322897112772887E+06, 0.101317900606162963E+06, 0.101315889108461066E+06, 0.101316599306327043E+06, + 0.101319758730558635E+06, 0.101325424301052059E+06, 0.101333284991047447E+06, 0.101343211873693581E+06, 0.101353644944564134E+06, + 0.101363021317380320E+06, 0.101370049287251401E+06, 0.101372596455484265E+06, 0.101369268865042672E+06, 0.101360883616870342E+06, + 0.101347449435595729E+06, 0.101329133164082014E+06, 0.101305327141900649E+06, 0.101278380398203022E+06, 0.101249743471045615E+06, + 0.101219239546209603E+06, 0.101192352888002861E+06, 0.101165652475197479E+06, 0.101139697586887822E+06, 0.101114494511137265E+06, + 0.101090858686180072E+06, 0.101071576294283674E+06, 0.101057575297732197E+06, 0.101048074783742806E+06, 0.101044336258060692E+06, + 0.101046551193469917E+06, 0.101053556962642004E+06, 0.101063713831673056E+06, 0.101077829626709223E+06, 0.101095071852015652E+06, + 0.101113125151151267E+06, 0.101132720710483336E+06, 0.101154045391176667E+06, 0.101180390285880436E+06, 0.101211142948122884E+06, + 0.101237614514436951E+06, 0.101255726302408526E+06, 0.101259492448119025E+06, 0.101250509056824711E+06, 0.101227395084634161E+06, + 0.101182035261948520E+06, 0.101119630114631931E+06, 0.101050635848782738E+06, 0.100979922793482459E+06, 0.100910697623495973E+06, + 0.100847357213499476E+06, 0.100794166368117731E+06, 0.100758894445481623E+06, 0.100744322296544080E+06, 0.100745120848886974E+06, + 0.100759352059448109E+06, 0.100791294801023934E+06, 0.100833112039419531E+06, 0.100877562571698305E+06, 0.100920779246866339E+06, + 0.100955025798225848E+06, 0.100982525754081420E+06, 0.101006044587505748E+06, 0.101028143007870822E+06, 0.101055611280174300E+06, + 0.101091320427340703E+06, 0.101132355621430252E+06, 0.101176767088174020E+06, 0.101222102616479577E+06, 0.101267504098879013E+06, + 0.101307233300950669E+06, 0.101337730007502250E+06, 0.101356132691262712E+06, 0.101355517504656993E+06, 0.101326703347885734E+06, + 0.101286746249401243E+06, 0.101238373176205030E+06, 0.101184685036191077E+06, 0.101128907484998796E+06, 0.101073391747240559E+06, + 0.101019454525129811E+06, 0.100970871910515343E+06, 0.100929826661987419E+06, 0.100897105571455861E+06, 0.100876831879007659E+06, + 0.100867962906273533E+06, 0.100867330421829305E+06, 0.100873728684090966E+06, 0.100885749735442761E+06, 0.100902849954122852E+06, + 0.100924138951177738E+06, 0.100946961851234868E+06, 0.100969279025770302E+06, 0.100990033557581031E+06, 0.101008477654044342E+06, + 0.101024214908302165E+06, 0.101035732998499894E+06, 0.101041912961714450E+06, 0.101045642366251923E+06, 0.101046792406885972E+06, + 0.101045365333532347E+06, 0.101187355100872199E+06, 0.101181283838042174E+06, 0.101175299671037268E+06, 0.101169529662610788E+06, + 0.101164117431673949E+06, 0.101159220075809775E+06, 0.101155001817589582E+06, 0.101151624022777440E+06, 0.101152497595067340E+06, + 0.101156451659840226E+06, 0.101160648061411019E+06, 0.101164790528929152E+06, 0.101168618147906396E+06, 0.101171926049179310E+06, + 0.101174580360364256E+06, 0.101176526712674633E+06, 0.101176736224529814E+06, 0.101176257363116325E+06, 0.101176166983752380E+06, + 0.101176807287626842E+06, 0.101178681128324213E+06, 0.101182078251181316E+06, 0.101187204570596310E+06, 0.101194163269585537E+06, + 0.101203334524264646E+06, 0.101214364937736551E+06, 0.101226809413448165E+06, 0.101240149829298927E+06, 0.101253261358725853E+06, + 0.101265100089497806E+06, 0.101275120974395875E+06, 0.101282996940042518E+06, 0.101288828111014154E+06, 0.101291420149586207E+06, + 0.101290897222999163E+06, 0.101287639377078289E+06, 0.101283002528089506E+06, 0.101278193857728707E+06, 0.101273020512430914E+06, + 0.101269901051284018E+06, 0.101267678623295869E+06, 0.101265950449211479E+06, 0.101264703039611326E+06, 0.101263900879826906E+06, + 0.101263923607509249E+06, 0.101265004562038375E+06, 0.101266684912193334E+06, 0.101268855296950496E+06, 0.101271506964180182E+06, + 0.101274640173084292E+06, 0.101278241537383161E+06, 0.101282245825992912E+06, 0.101286353240369135E+06, 0.101291355828485597E+06, + 0.101297931619035255E+06, 0.101306253371424813E+06, 0.101316214078965480E+06, 0.101327380285913983E+06, 0.101338920669929619E+06, + 0.101349293450103680E+06, 0.101357122930671496E+06, 0.101362252520088790E+06, 0.101364464771970830E+06, 0.101363785192026829E+06, + 0.101359089181177871E+06, 0.101353368594169064E+06, 0.101348059285105599E+06, 0.101344504609358351E+06, 0.101342802273270747E+06, + 0.101343694674300015E+06, 0.101347186594235303E+06, 0.101353156284255645E+06, 0.101361135003142495E+06, 0.101370388484892959E+06, + 0.101380640458787442E+06, 0.101388946718752617E+06, 0.101393651801589484E+06, 0.101393499019751704E+06, 0.101386884558896083E+06, + 0.101374143979384535E+06, 0.101355609362859250E+06, 0.101331626780358332E+06, 0.101301083582183201E+06, 0.101263353354839783E+06, + 0.101221306897352624E+06, 0.101176993466944725E+06, 0.101136539903244993E+06, 0.101098204242251013E+06, 0.101061761330862719E+06, + 0.101028266665796909E+06, 0.100998589290583972E+06, 0.100975333400938267E+06, 0.100959068131358043E+06, 0.100949766177223195E+06, + 0.100947806353674678E+06, 0.100952626346498961E+06, 0.100962758032929953E+06, 0.100976213788639361E+06, 0.100993663080123253E+06, + 0.101014486892675981E+06, 0.101035822837299012E+06, 0.101058579399157214E+06, 0.101083303211150094E+06, 0.101113186489526008E+06, + 0.101147351565124962E+06, 0.101176652682216401E+06, 0.101196193972918787E+06, 0.101198569776344622E+06, 0.101186160134931008E+06, + 0.101157868126258880E+06, 0.101103141394806822E+06, 0.101031831614193070E+06, 0.100956733996206865E+06, 0.100882403087983286E+06, + 0.100813473138545116E+06, 0.100752516407046714E+06, 0.100703757785565627E+06, 0.100676218536944187E+06, 0.100667431274046598E+06, + 0.100674873519601999E+06, 0.100697658618489222E+06, 0.100739841159568794E+06, 0.100789068474863947E+06, 0.100839720710070338E+06, + 0.100886379550526690E+06, 0.100923029883014446E+06, 0.100953143284320337E+06, 0.100977639241319004E+06, 0.100999128395021136E+06, + 0.101024581691416737E+06, 0.101055845921262473E+06, 0.101093715024692676E+06, 0.101137145750038864E+06, 0.101181709309337297E+06, + 0.101225325474523444E+06, 0.101263559713032722E+06, 0.101292474677031365E+06, 0.101308682549641118E+06, 0.101297475120822361E+06, + 0.101271409211849808E+06, 0.101232040601299872E+06, 0.101182869285470704E+06, 0.101128290980360704E+06, 0.101072929755581790E+06, + 0.101016889073163620E+06, 0.100962491541966170E+06, 0.100912327910715336E+06, 0.100869361400221751E+06, 0.100839775977090918E+06, + 0.100823441492130820E+06, 0.100816113342184137E+06, 0.100817094874734074E+06, 0.100825233759279654E+06, 0.100839074432490510E+06, + 0.100858082771811969E+06, 0.100882174552001874E+06, 0.100906977487573211E+06, 0.100931151837540980E+06, 0.100953671595204651E+06, + 0.100973813441941427E+06, 0.100991208365737388E+06, 0.101004593996319396E+06, 0.101014464426847393E+06, 0.101019840305871679E+06, + 0.101022516216040211E+06, 0.101022479820383916E+06, 0.101189306237606637E+06, 0.101183099563423224E+06, 0.101177524645541649E+06, + 0.101172236435105573E+06, 0.101167371532973528E+06, 0.101163082020276575E+06, 0.101159529060147339E+06, 0.101159316447558173E+06, + 0.101160894564677219E+06, 0.101164348300187223E+06, 0.101169261422140553E+06, 0.101174195290734366E+06, 0.101178879818970003E+06, + 0.101183100812083387E+06, 0.101186714675334646E+06, 0.101189656703835382E+06, 0.101191942124414170E+06, 0.101192917377320977E+06, + 0.101193593575982464E+06, 0.101195069630171711E+06, 0.101197693383898673E+06, 0.101201751769885639E+06, 0.101207449602623747E+06, + 0.101214890679059696E+06, 0.101224061589853489E+06, 0.101235336912347877E+06, 0.101248190104239126E+06, 0.101262427935202722E+06, + 0.101275786221996692E+06, 0.101287697523967043E+06, 0.101297635973110140E+06, 0.101305160473319178E+06, 0.101310051693956630E+06, + 0.101312576731523863E+06, 0.101312178530984005E+06, 0.101309704462442271E+06, 0.101306154021924303E+06, 0.101301740366064056E+06, + 0.101296951709652378E+06, 0.101292269396465854E+06, 0.101290108113855764E+06, 0.101288928548419208E+06, 0.101288387917089291E+06, + 0.101288777866387623E+06, 0.101290116771842790E+06, 0.101292139767421628E+06, 0.101294723268304471E+06, 0.101297795211849851E+06, + 0.101301366709605994E+06, 0.101305420330384557E+06, 0.101309869927812077E+06, 0.101314312823006214E+06, 0.101319116997910372E+06, + 0.101324617109151222E+06, 0.101331532615370001E+06, 0.101340103637168490E+06, 0.101350201834497682E+06, 0.101361344371531173E+06, + 0.101372418886796950E+06, 0.101381948875157381E+06, 0.101388923839096911E+06, 0.101393136106285616E+06, 0.101394429864949576E+06, + 0.101392894622174237E+06, 0.101388710803148075E+06, 0.101383777236252092E+06, 0.101379295952832908E+06, 0.101375940276367168E+06, + 0.101374441230547527E+06, 0.101375326622697306E+06, 0.101379093018278771E+06, 0.101385343361571824E+06, 0.101393971058482173E+06, + 0.101404050563811383E+06, 0.101413309721598285E+06, 0.101419590399406094E+06, 0.101421556394179410E+06, 0.101418021431235960E+06, + 0.101407974515161055E+06, 0.101390537479077990E+06, 0.101366032709315157E+06, 0.101334626683717870E+06, 0.101295933958054040E+06, + 0.101248443893183838E+06, 0.101195557967522065E+06, 0.101139585544601810E+06, 0.101085211343045346E+06, 0.101035266930195139E+06, + 0.100988241812145512E+06, 0.100945367896748721E+06, 0.100910497202633036E+06, 0.100884702886764164E+06, 0.100866517649476897E+06, + 0.100856014684083144E+06, 0.100852787000617667E+06, 0.100856653557479323E+06, 0.100867163372326730E+06, 0.100881111266454434E+06, + 0.100900315195405696E+06, 0.100923976750114074E+06, 0.100948598119614544E+06, 0.100974781704195004E+06, 0.101003202157587060E+06, + 0.101036407590628412E+06, 0.101073193182310031E+06, 0.101104736474453239E+06, 0.101125695287679831E+06, 0.101129453279073452E+06, + 0.101117773581594010E+06, 0.101089185532541305E+06, 0.101034032199054171E+06, 0.100963945545633382E+06, 0.100886699328991119E+06, + 0.100810636627241329E+06, 0.100740715610179395E+06, 0.100679191246166200E+06, 0.100632989251138570E+06, 0.100613781871159343E+06, + 0.100610871530594683E+06, 0.100624379990977119E+06, 0.100656925116010229E+06, 0.100705935141557828E+06, 0.100761070879974053E+06, + 0.100816622699684551E+06, 0.100864793595773081E+06, 0.100902967646118850E+06, 0.100932714749620762E+06, 0.100956310150092322E+06, + 0.100973624358999965E+06, 0.100992241483773090E+06, 0.101016637765204548E+06, 0.101048154107647293E+06, 0.101087466334016062E+06, + 0.101132339254048915E+06, 0.101174823812832328E+06, 0.101210761915469266E+06, 0.101237271423401384E+06, 0.101243002885737078E+06, + 0.101230131791106003E+06, 0.101203940299668466E+06, 0.101166656487591579E+06, 0.101121119041289232E+06, 0.101069073832594047E+06, + 0.101014700223724387E+06, 0.100959265268248433E+06, 0.100905468112225586E+06, 0.100856040902612105E+06, 0.100814460428244129E+06, + 0.100787259237540056E+06, 0.100772005863003345E+06, 0.100765985352267919E+06, 0.100768479113289053E+06, 0.100778366997407138E+06, + 0.100794945598743492E+06, 0.100817620478677374E+06, 0.100842147859125718E+06, 0.100867955315801722E+06, 0.100893394586128459E+06, + 0.100917107047287223E+06, 0.100938380004807230E+06, 0.100955347801049342E+06, 0.100970101009214006E+06, 0.100982904354844184E+06, + 0.100992784717252944E+06, 0.100997426697573173E+06, 0.100999203666720758E+06, 0.101193726602745155E+06, 0.101187754050723946E+06, + 0.101182357442443288E+06, 0.101177791388126643E+06, 0.101173723996436573E+06, 0.101170304719806183E+06, 0.101170612153776412E+06, + 0.101172440371721386E+06, 0.101174837075875621E+06, 0.101177672254314428E+06, 0.101182161160034389E+06, 0.101187828651191783E+06, + 0.101193320301503438E+06, 0.101198410730358519E+06, 0.101202946144533795E+06, 0.101206852558810875E+06, 0.101210007801575470E+06, + 0.101212489910168282E+06, 0.101214469378389869E+06, 0.101216878002924321E+06, 0.101220363461237575E+06, 0.101225214136769951E+06, + 0.101231637580600829E+06, 0.101239741560505950E+06, 0.101249517808410572E+06, 0.101260983023677167E+06, 0.101275957870551239E+06, + 0.101290656294668952E+06, 0.101304333702323362E+06, 0.101316427532517599E+06, 0.101326426428850100E+06, 0.101333915035895625E+06, + 0.101338611708287717E+06, 0.101340492859798338E+06, 0.101340362563395611E+06, 0.101338449476013702E+06, 0.101335257523435517E+06, + 0.101331249861504504E+06, 0.101326886093198918E+06, 0.101322617484757109E+06, 0.101318867500197564E+06, 0.101317900452591755E+06, + 0.101318314786954928E+06, 0.101319723768116164E+06, 0.101321959881412520E+06, 0.101324889048512938E+06, 0.101328347647524672E+06, + 0.101332174840765205E+06, 0.101336616060312401E+06, 0.101341556829236884E+06, 0.101346573413864826E+06, 0.101351603295543347E+06, + 0.101356815104860521E+06, 0.101362438373961399E+06, 0.101369371088361426E+06, 0.101378082295762331E+06, 0.101388314410706720E+06, + 0.101399372327800622E+06, 0.101410061836120745E+06, 0.101419580351030396E+06, 0.101425913537260407E+06, 0.101429293259021812E+06, + 0.101429804412116951E+06, 0.101427672924137820E+06, 0.101424080437455879E+06, 0.101419619212416699E+06, 0.101415230974183942E+06, + 0.101412067965185430E+06, 0.101410791086110883E+06, 0.101411739073867124E+06, 0.101415639705951602E+06, 0.101423312622668134E+06, + 0.101432474045874798E+06, 0.101442051195699867E+06, 0.101450469188552204E+06, 0.101454491373749755E+06, 0.101453440137517347E+06, + 0.101446281387837167E+06, 0.101431595048405667E+06, 0.101408886711617088E+06, 0.101378784184722594E+06, 0.101341184770978914E+06, + 0.101295889547724786E+06, 0.101240328400627433E+06, 0.101177652284460986E+06, 0.101111150684114546E+06, 0.101044053118300144E+06, + 0.100984918740243505E+06, 0.100930374090685815E+06, 0.100881582472409573E+06, 0.100841112633375247E+06, 0.100809768362702191E+06, + 0.100786799243457121E+06, 0.100772143085301912E+06, 0.100764968278141983E+06, 0.100765770745809103E+06, 0.100774102380776618E+06, + 0.100787701814049200E+06, 0.100807502103195773E+06, 0.100832717694658859E+06, 0.100860249536352872E+06, 0.100889852423407749E+06, + 0.100921848628126099E+06, 0.100957861355781963E+06, 0.100996433916241411E+06, 0.101029829562515966E+06, 0.101052485930506547E+06, + 0.101058372937639273E+06, 0.101049548410078569E+06, 0.101024243456762211E+06, 0.100972590760278690E+06, 0.100908281417167527E+06, + 0.100837060983074800E+06, 0.100768161325613342E+06, 0.100704714640766149E+06, 0.100649980401007386E+06, 0.100610226186345069E+06, + 0.100590748020045430E+06, 0.100587436259410169E+06, 0.100600313080586799E+06, 0.100641206195168561E+06, 0.100694783185600594E+06, + 0.100753395339411843E+06, 0.100811221255729251E+06, 0.100860359364136690E+06, 0.100899824043495319E+06, 0.100928315410134717E+06, + 0.100945425133485944E+06, 0.100949685705930868E+06, 0.100959203677864440E+06, 0.100974757114044391E+06, 0.100998131833821230E+06, + 0.101033920715517670E+06, 0.101074219109624129E+06, 0.101114091820176982E+06, 0.101149405994865883E+06, 0.101170348641579942E+06, + 0.101169807298637141E+06, 0.101156298476682292E+06, 0.101130628971099330E+06, 0.101094643437300154E+06, 0.101052492078486888E+06, + 0.101007253119503090E+06, 0.100955907017813224E+06, 0.100902084595712833E+06, 0.100849827379669470E+06, 0.100802083544595851E+06, + 0.100765913220995702E+06, 0.100739572869835451E+06, 0.100723779479156976E+06, 0.100718506421119528E+06, 0.100722320980193326E+06, + 0.100734436110120514E+06, 0.100755329206052033E+06, 0.100779519272158068E+06, 0.100805173540144926E+06, 0.100830784490592530E+06, + 0.100856189170746162E+06, 0.100880432886013805E+06, 0.100899949784039432E+06, 0.100917438620547167E+06, 0.100933522862752710E+06, + 0.100948109352301544E+06, 0.100961044329522949E+06, 0.100971373211325132E+06, 0.100975423948777170E+06, 0.101200152192834488E+06, + 0.101194982325493736E+06, 0.101190103263664205E+06, 0.101186138559247396E+06, 0.101183134221834189E+06, 0.101184216681154692E+06, + 0.101186521041798725E+06, 0.101189436060083317E+06, 0.101192802546943451E+06, 0.101196478796712297E+06, 0.101200354354545649E+06, + 0.101205668611732151E+06, 0.101211929159398627E+06, 0.101217855930562437E+06, 0.101223284560094209E+06, 0.101227968215825720E+06, + 0.101231889676374194E+06, 0.101235394681567603E+06, 0.101238691342655846E+06, 0.101242180145337508E+06, 0.101246637252434826E+06, + 0.101252408136256170E+06, 0.101259706939182157E+06, 0.101268648761024378E+06, 0.101279505402642011E+06, 0.101294343975882977E+06, + 0.101309563533686218E+06, 0.101324641711895500E+06, 0.101338688391072021E+06, 0.101351044389960793E+06, 0.101361207159967045E+06, + 0.101368783445243811E+06, 0.101373529077171552E+06, 0.101374957490127519E+06, 0.101374464042535998E+06, 0.101372814207710297E+06, + 0.101369991240096075E+06, 0.101366429702577938E+06, 0.101362562430391059E+06, 0.101358815668015828E+06, 0.101355589086463762E+06, + 0.101353446673457220E+06, 0.101354379072032898E+06, 0.101356568662050558E+06, 0.101359675232751892E+06, 0.101363521918530183E+06, + 0.101367901119934351E+06, 0.101372596354978567E+06, 0.101377679630817802E+06, 0.101383555064504282E+06, 0.101389214201889146E+06, + 0.101394747283543154E+06, 0.101400304955646759E+06, 0.101406085277459220E+06, 0.101412285840230092E+06, 0.101421118963008921E+06, + 0.101431763041225102E+06, 0.101442507714153820E+06, 0.101452705296310087E+06, 0.101461587946274274E+06, 0.101468308697248838E+06, + 0.101470980618346424E+06, 0.101470729759961876E+06, 0.101468260238464049E+06, 0.101464485269084631E+06, 0.101460142280246233E+06, + 0.101455922507406227E+06, 0.101452998879112638E+06, 0.101452045655453316E+06, 0.101454002525278673E+06, 0.101458795222069632E+06, + 0.101466167386261062E+06, 0.101474834484365027E+06, 0.101483448321051124E+06, 0.101490293297485317E+06, 0.101492761571887779E+06, + 0.101487122913431667E+06, 0.101474656695076628E+06, 0.101456224507296021E+06, 0.101430664509854570E+06, 0.101396241168372988E+06, + 0.101353344458271313E+06, 0.101301873429881321E+06, 0.101240809982906721E+06, 0.101170237649192510E+06, 0.101096056635001150E+06, + 0.101022326149495057E+06, 0.100954494264510751E+06, 0.100892663983306251E+06, 0.100837194485465618E+06, 0.100789854158125687E+06, + 0.100752681688232609E+06, 0.100724050472389747E+06, 0.100703743253736306E+06, 0.100691513151292049E+06, 0.100687489061012806E+06, + 0.100691112445670500E+06, 0.100703488782601926E+06, 0.100723515984008409E+06, 0.100749686437924174E+06, 0.100779862035053753E+06, + 0.100812870466228749E+06, 0.100848356219152789E+06, 0.100886618033728999E+06, 0.100925814700154908E+06, 0.100959913340029161E+06, + 0.100983841408427761E+06, 0.100992708938197888E+06, 0.100988038726636543E+06, 0.100967451749821237E+06, 0.100923773661071609E+06, + 0.100869154347678006E+06, 0.100808293671752166E+06, 0.100749950128448239E+06, 0.100695742144580625E+06, 0.100650055466795442E+06, + 0.100620543751264457E+06, 0.100607774629359716E+06, 0.100609856499218455E+06, 0.100627731512123690E+06, 0.100665827330432643E+06, + 0.100713727303578300E+06, 0.100768972922192886E+06, 0.100825101449405265E+06, 0.100873709631678183E+06, 0.100911910907812446E+06, + 0.100937425920985901E+06, 0.100943826278808614E+06, 0.100938923612846338E+06, 0.100932772703382885E+06, 0.100933209681834254E+06, + 0.100949942917228545E+06, 0.100978390439217677E+06, 0.101012218238497939E+06, 0.101047001443362271E+06, 0.101078030320958118E+06, + 0.101092528178749781E+06, 0.101092763600199483E+06, 0.101079667768304178E+06, 0.101055363093306296E+06, 0.101021923023798488E+06, + 0.100985043918944197E+06, 0.100942576674115116E+06, 0.100896142310934607E+06, 0.100846740359288175E+06, 0.100796745756417309E+06, + 0.100754281013923188E+06, 0.100719661969801513E+06, 0.100694202095497239E+06, 0.100678990016565542E+06, 0.100674159552381345E+06, + 0.100679144362130333E+06, 0.100696517057853678E+06, 0.100718723297862292E+06, 0.100743828966135392E+06, 0.100770038155539907E+06, + 0.100795879753092362E+06, 0.100820314666932885E+06, 0.100840279171251284E+06, 0.100859249879902098E+06, 0.100877455365052447E+06, + 0.100894767625869688E+06, 0.100911051050858092E+06, 0.100926113687447752E+06, 0.100939677540915931E+06, 0.100954098051095163E+06, + 0.101208266074669766E+06, 0.101204147301312958E+06, 0.101200416332034234E+06, 0.101197391022381067E+06, 0.101199181271863577E+06, + 0.101202094479608772E+06, 0.101205718922681015E+06, 0.101209868079757638E+06, 0.101214363087133126E+06, 0.101219049217859545E+06, + 0.101223809934456556E+06, 0.101228578149758148E+06, 0.101234563424877633E+06, 0.101241302361129114E+06, 0.101247428820028508E+06, + 0.101252833705618847E+06, 0.101257741214607289E+06, 0.101262268791874914E+06, 0.101266621965163562E+06, 0.101271104202253337E+06, + 0.101276449761759577E+06, 0.101283261996570189E+06, 0.101291578552841063E+06, 0.101301921001578070E+06, 0.101316864610287244E+06, + 0.101332633397110185E+06, 0.101348565409528048E+06, 0.101363970375545556E+06, 0.101378339950166031E+06, 0.101391005184961628E+06, + 0.101401390238182328E+06, 0.101409118811233842E+06, 0.101412813852507519E+06, 0.101413916622343488E+06, 0.101413648249779086E+06, + 0.101412262363096830E+06, 0.101409843816287481E+06, 0.101406792118611833E+06, 0.101403515263375913E+06, 0.101400419883465394E+06, + 0.101397648089374270E+06, 0.101396200071828469E+06, 0.101396462464251483E+06, 0.101399249041504649E+06, 0.101403242459244415E+06, + 0.101408064521844237E+06, 0.101413460579763079E+06, 0.101419299541355576E+06, 0.101425515902185769E+06, 0.101431872156549493E+06, + 0.101438092345517420E+06, 0.101444082593329236E+06, 0.101449980221889302E+06, 0.101455962961780679E+06, 0.101462741205452243E+06, + 0.101470817291088752E+06, 0.101480892587434573E+06, 0.101491089133211004E+06, 0.101500643428374140E+06, 0.101508817670985038E+06, + 0.101514860224122342E+06, 0.101517434476198061E+06, 0.101516541747761323E+06, 0.101513815068472235E+06, 0.101509904719619197E+06, + 0.101505507654049128E+06, 0.101501313463842132E+06, 0.101498849002981064E+06, 0.101499159934514231E+06, 0.101501693020130377E+06, + 0.101506338552975649E+06, 0.101512651659291208E+06, 0.101520288072555239E+06, 0.101527432009874057E+06, 0.101531192551327069E+06, + 0.101528423709889583E+06, 0.101519435532333911E+06, 0.101504734513441072E+06, 0.101484004484384001E+06, 0.101456280732745858E+06, + 0.101419035179553714E+06, 0.101371837096264266E+06, 0.101315248944149382E+06, 0.101249891741609565E+06, 0.101174205010685138E+06, + 0.101095025216710172E+06, 0.101016603839094241E+06, 0.100942714517862012E+06, 0.100875651961458614E+06, 0.100815206600637175E+06, + 0.100762266129504540E+06, 0.100719792923412402E+06, 0.100688381242510412E+06, 0.100664315202569429E+06, 0.100646899315571907E+06, + 0.100636389190856382E+06, 0.100633921317728295E+06, 0.100640986745192960E+06, 0.100657927960284273E+06, 0.100683603999329847E+06, + 0.100715139361547874E+06, 0.100750464071587950E+06, 0.100789001781336541E+06, 0.100828980626378441E+06, 0.100867904881876937E+06, + 0.100901941917073651E+06, 0.100927518925117751E+06, 0.100941703370720032E+06, 0.100943313763502156E+06, 0.100929483993483183E+06, + 0.100897899422321643E+06, 0.100855144068640948E+06, 0.100806216832129357E+06, 0.100757963881253396E+06, 0.100713882396988687E+06, + 0.100678037239657642E+06, 0.100660578064393208E+06, 0.100655660139403961E+06, 0.100663394611081239E+06, 0.100687757803070126E+06, + 0.100726360544964817E+06, 0.100771737117872792E+06, 0.100819550423355045E+06, 0.100863789606076709E+06, 0.100903960982124961E+06, + 0.100937933974381580E+06, 0.100955929021348216E+06, 0.100950002084778927E+06, 0.100936336168784517E+06, 0.100920611799506456E+06, + 0.100908792443247541E+06, 0.100909956087163751E+06, 0.100924519937428529E+06, 0.100950317855032117E+06, 0.100978637481090613E+06, + 0.101001785171553231E+06, 0.101014600980588948E+06, 0.101015533816949537E+06, 0.101004399554267075E+06, 0.100982402170127083E+06, + 0.100954472767269413E+06, 0.100920498290662959E+06, 0.100881272186000555E+06, 0.100838252143924561E+06, 0.100793001524282852E+06, + 0.100749722238879811E+06, 0.100710007831689465E+06, 0.100676561452258436E+06, 0.100651754156739727E+06, 0.100637016515992684E+06, + 0.100632797680647462E+06, 0.100643122435673547E+06, 0.100662040946369423E+06, 0.100684765371038040E+06, 0.100710073382574032E+06, + 0.100736158886730540E+06, 0.100761558107963079E+06, 0.100780935166741401E+06, 0.100798370121153508E+06, 0.100816555152162895E+06, + 0.100835390903751701E+06, 0.100853847765655024E+06, 0.100871757501481305E+06, 0.100888895778612612E+06, 0.100908175229415137E+06, + 0.100925669047910487E+06, 0.101217702072300162E+06, 0.101214879429494846E+06, 0.101212918203238412E+06, 0.101215072363802130E+06, + 0.101218250672383481E+06, 0.101222522132735277E+06, 0.101227622288938786E+06, 0.101233167267756522E+06, 0.101238956389902218E+06, + 0.101244820309774892E+06, 0.101250635435466815E+06, 0.101256335683556361E+06, 0.101261921151622766E+06, 0.101268342600560762E+06, + 0.101275163933372678E+06, 0.101281497833931266E+06, 0.101287383286156546E+06, 0.101292932525330558E+06, 0.101298347923196663E+06, + 0.101303932128846092E+06, 0.101310090422888767E+06, 0.101317693616226330E+06, 0.101327652607175361E+06, 0.101342480557763687E+06, + 0.101358556451299402E+06, 0.101375279086523937E+06, 0.101391978870831925E+06, 0.101407971443584844E+06, 0.101422613121423448E+06, + 0.101435506823643867E+06, 0.101446124078218185E+06, 0.101452234738676838E+06, 0.101455284023688801E+06, 0.101456737369482420E+06, + 0.101456865445288451E+06, 0.101455916182255954E+06, 0.101454121953738781E+06, 0.101451661773156113E+06, 0.101449081947506013E+06, + 0.101446228059309360E+06, 0.101444208961239303E+06, 0.101443612932188233E+06, 0.101444705011359765E+06, 0.101447541270001515E+06, + 0.101452383501387390E+06, 0.101458282693875270E+06, 0.101464997464114887E+06, 0.101472100710916289E+06, 0.101479273864667499E+06, + 0.101486350419971670E+06, 0.101493152086614995E+06, 0.101499576717366377E+06, 0.101505843270561643E+06, 0.101512436676125639E+06, + 0.101519641676807107E+06, 0.101527434410592061E+06, 0.101535644765811841E+06, 0.101545029301612725E+06, 0.101553754432012545E+06, + 0.101560956040866411E+06, 0.101564550165702050E+06, 0.101566892094339870E+06, 0.101567035078111294E+06, 0.101564167039659485E+06, + 0.101560257949168226E+06, 0.101555969226616333E+06, 0.101552313766367617E+06, 0.101550452021603851E+06, 0.101550963150145908E+06, + 0.101553454481203808E+06, 0.101557594737071355E+06, 0.101562591960326725E+06, 0.101568055832384678E+06, 0.101570018237429336E+06, + 0.101568806715803599E+06, 0.101563796324326468E+06, 0.101553825571776295E+06, 0.101537561122490020E+06, 0.101515230788797810E+06, + 0.101485862600308523E+06, 0.101448189650402157E+06, 0.101397681000099896E+06, 0.101336913516701141E+06, 0.101267241010695536E+06, + 0.101189600658946001E+06, 0.101107785950000631E+06, 0.101027329917614610E+06, 0.100951013494106854E+06, 0.100883020611558357E+06, + 0.100825246076290889E+06, 0.100775271676367163E+06, 0.100732070018118597E+06, 0.100693807828755365E+06, 0.100660471847562090E+06, + 0.100632198820324600E+06, 0.100610336348454613E+06, 0.100597445568148105E+06, 0.100596347705297740E+06, 0.100608739289963560E+06, + 0.100632312399144867E+06, 0.100664180492312080E+06, 0.100701580165578795E+06, 0.100742885809197804E+06, 0.100784251808581277E+06, + 0.100822721504335888E+06, 0.100857114729781009E+06, 0.100884974331454141E+06, 0.100904296005382625E+06, 0.100913525976403209E+06, + 0.100909880311948247E+06, 0.100892635225440783E+06, 0.100865034092500646E+06, 0.100830041776689235E+06, 0.100792635237818962E+06, + 0.100758858691726316E+06, 0.100734424708176390E+06, 0.100726153683192097E+06, 0.100729591906647329E+06, 0.100742469628359380E+06, + 0.100772373108355430E+06, 0.100810039805286127E+06, 0.100850865902025442E+06, 0.100889839249818047E+06, 0.100924291493751982E+06, + 0.100954018166122405E+06, 0.100976020229241141E+06, 0.100977598211779696E+06, 0.100962801120868462E+06, 0.100940325812200113E+06, + 0.100915300637579014E+06, 0.100897607613392654E+06, 0.100888545266499175E+06, 0.100887361365753401E+06, 0.100894417619390835E+06, + 0.100914107950286358E+06, 0.100931864535990011E+06, 0.100942729300749750E+06, 0.100943712413188565E+06, 0.100933999633237443E+06, + 0.100915953837210676E+06, 0.100891962587812566E+06, 0.100861290497928669E+06, 0.100825794229352119E+06, 0.100786805648525173E+06, + 0.100747059949918155E+06, 0.100708052571343884E+06, 0.100670389177752746E+06, 0.100637438856290988E+06, 0.100612791553316754E+06, + 0.100598161054412602E+06, 0.100597616745557592E+06, 0.100608245258248513E+06, 0.100627589752602711E+06, 0.100652501052796259E+06, + 0.100677256390096882E+06, 0.100702485105916334E+06, 0.100721371071945381E+06, 0.100737732280855227E+06, 0.100754743779602475E+06, + 0.100772593580461515E+06, 0.100791374419969914E+06, 0.100810897025248196E+06, 0.100830367089737425E+06, 0.100852737881952431E+06, + 0.100874075837282377E+06, 0.100893534157121714E+06, 0.101228070489269143E+06, 0.101227544665406953E+06, 0.101230349746524807E+06, + 0.101234269851944497E+06, 0.101239184467959683E+06, 0.101244939450664504E+06, 0.101251545017166776E+06, 0.101258662705518451E+06, + 0.101265918196699597E+06, 0.101273125560589353E+06, 0.101280152736103031E+06, 0.101286933875186733E+06, 0.101293407125996848E+06, + 0.101299586824039099E+06, 0.101306376779591956E+06, 0.101313623028716072E+06, 0.101320476967868250E+06, 0.101327043370354135E+06, + 0.101333520713772232E+06, 0.101340211822319048E+06, 0.101347526837547412E+06, 0.101356523012281294E+06, 0.101370533287668499E+06, + 0.101386582740267011E+06, 0.101403758993542797E+06, 0.101421430602220105E+06, 0.101438909393433467E+06, 0.101455505881131437E+06, + 0.101470586854150286E+06, 0.101483635012064580E+06, 0.101492144560654036E+06, 0.101497362403152074E+06, 0.101500801900675287E+06, + 0.101502736875093309E+06, 0.101503413235270535E+06, 0.101503062612840484E+06, 0.101501914512809366E+06, 0.101500206465205003E+06, + 0.101497831592138784E+06, 0.101495767534276791E+06, 0.101494714546066039E+06, 0.101495119352637426E+06, 0.101497237786485115E+06, + 0.101501125674684867E+06, 0.101506644060371764E+06, 0.101514150312748505E+06, 0.101522320784248848E+06, 0.101530563331544297E+06, + 0.101538706294350879E+06, 0.101546559377466736E+06, 0.101553946547580461E+06, 0.101560765945043371E+06, 0.101567653265792658E+06, + 0.101574587210003941E+06, 0.101581752742970988E+06, 0.101589174518686996E+06, 0.101596642355671458E+06, 0.101603818859754785E+06, + 0.101610799838750623E+06, 0.101614811522755466E+06, 0.101617790546373333E+06, 0.101619757440904345E+06, 0.101620562545717650E+06, + 0.101618884459059045E+06, 0.101615191240677028E+06, 0.101611483339551589E+06, 0.101608375965291722E+06, 0.101606589668011176E+06, + 0.101606767311590491E+06, 0.101608967585915860E+06, 0.101612347393029107E+06, 0.101614810665037265E+06, 0.101614446811429036E+06, + 0.101613127583126843E+06, 0.101609516694027276E+06, 0.101602475273863849E+06, 0.101591105455035053E+06, 0.101574139304303288E+06, + 0.101552261616850359E+06, 0.101522964529426812E+06, 0.101483809256113498E+06, 0.101431803333729331E+06, 0.101367984772122625E+06, + 0.101295216781381270E+06, 0.101216180859079337E+06, 0.101134418945842335E+06, 0.101057719484696820E+06, 0.100987761361816083E+06, + 0.100925129407695815E+06, 0.100869076127166059E+06, 0.100819148307903684E+06, 0.100772602660554068E+06, 0.100726367887494707E+06, + 0.100682387602061091E+06, 0.100642046686646194E+06, 0.100608073036628615E+06, 0.100583165331615121E+06, 0.100571567333927058E+06, + 0.100579161681519065E+06, 0.100599831523424771E+06, 0.100631457444745640E+06, 0.100671162741316628E+06, 0.100715517300559659E+06, + 0.100759196447210823E+06, 0.100798644466533326E+06, 0.100834218092755124E+06, 0.100864022068452279E+06, 0.100886844670119492E+06, + 0.100903072952249466E+06, 0.100910324635737983E+06, 0.100907110564502160E+06, 0.100894913649374212E+06, 0.100873485872527890E+06, + 0.100847908218072756E+06, 0.100825028815845202E+06, 0.100812235195442801E+06, 0.100811789392154620E+06, 0.100821477468724654E+06, + 0.100842188280174509E+06, 0.100874882105417564E+06, 0.100910352034741096E+06, 0.100944613694273561E+06, 0.100970573806106200E+06, + 0.100992876564753780E+06, 0.101010256709896377E+06, 0.101017365734439736E+06, 0.101004642180764087E+06, 0.100981216767300502E+06, + 0.100950670557522288E+06, 0.100918693714911191E+06, 0.100893168282002865E+06, 0.100873786774855747E+06, 0.100862092518860401E+06, + 0.100858765389723776E+06, 0.100863848594959985E+06, 0.100872455106490743E+06, 0.100880727391939872E+06, 0.100881060958518239E+06, + 0.100871581642927995E+06, 0.100854982629453050E+06, 0.100833968938175327E+06, 0.100809126941723182E+06, 0.100777926015906574E+06, + 0.100744862813125714E+06, 0.100711030659190204E+06, 0.100674920663551122E+06, 0.100638665812651045E+06, 0.100604613640158801E+06, + 0.100577951755037328E+06, 0.100565299257314167E+06, 0.100564490794773781E+06, 0.100574070775104672E+06, 0.100592267906427369E+06, + 0.100616576592620535E+06, 0.100643954138155808E+06, 0.100661679785274406E+06, 0.100676519993234426E+06, 0.100692101751513052E+06, + 0.100708845098980164E+06, 0.100726890359751837E+06, 0.100746088291053093E+06, 0.100766274118497415E+06, 0.100790485020117267E+06, + 0.100814283052694198E+06, 0.100836998900601233E+06, 0.100857834251143926E+06, 0.101239951294366925E+06, 0.101243511198018721E+06, + 0.101248266604097182E+06, 0.101254120739513630E+06, 0.101260940255995316E+06, 0.101268566543099048E+06, 0.101276830453567702E+06, + 0.101285622454819968E+06, 0.101294523809254446E+06, 0.101303237484829937E+06, 0.101311620976720500E+06, 0.101319644374765689E+06, + 0.101327259549206297E+06, 0.101334480948853117E+06, 0.101341388354789131E+06, 0.101348710884544664E+06, 0.101356521517190282E+06, + 0.101364093945627537E+06, 0.101371621643877312E+06, 0.101379408199202080E+06, 0.101388443315429948E+06, 0.101401687552132498E+06, + 0.101416572004818678E+06, 0.101433189992554107E+06, 0.101451428970825116E+06, 0.101470024045938291E+06, 0.101488255659360628E+06, + 0.101505416028128879E+06, 0.101520868917434069E+06, 0.101531842805264969E+06, 0.101539245769958565E+06, 0.101544605958666289E+06, + 0.101548569302459247E+06, 0.101551134535491103E+06, 0.101552518676128384E+06, 0.101552933361419549E+06, 0.101552598628048305E+06, + 0.101551346091754502E+06, 0.101549620534837697E+06, 0.101548503290274006E+06, 0.101548531268210281E+06, 0.101550086213979870E+06, + 0.101553415865284071E+06, 0.101558574308658994E+06, 0.101566141420655156E+06, 0.101575323430362041E+06, 0.101584790524686381E+06, + 0.101594148506046142E+06, 0.101603272905442951E+06, 0.101611945735174741E+06, 0.101619979003416622E+06, 0.101627204805596586E+06, + 0.101634427668451928E+06, 0.101641404911077247E+06, 0.101648381901037224E+06, 0.101655340222651532E+06, 0.101662034474683896E+06, + 0.101666783103935741E+06, 0.101669591715802919E+06, 0.101672592019255666E+06, 0.101674896474706766E+06, 0.101676486613950226E+06, + 0.101677173545713507E+06, 0.101676735064566892E+06, 0.101674421820609132E+06, 0.101671063643987713E+06, 0.101668202552547300E+06, + 0.101666520557556054E+06, 0.101666348434875123E+06, 0.101667923680669555E+06, 0.101669351667803800E+06, 0.101668978131977754E+06, + 0.101666110028333933E+06, 0.101660538752964931E+06, 0.101654594444694463E+06, 0.101645738692219165E+06, 0.101634351733125281E+06, + 0.101619445806351592E+06, 0.101597486529762551E+06, 0.101566963080607631E+06, 0.101526313623151611E+06, 0.101474414132893216E+06, + 0.101408806070782084E+06, 0.101334676336432865E+06, 0.101255967485764850E+06, 0.101177930379907673E+06, 0.101105923487214692E+06, + 0.101041528067973224E+06, 0.100984421243628807E+06, 0.100931366999700622E+06, 0.100882259035952666E+06, 0.100834318510275116E+06, + 0.100780975023316409E+06, 0.100725029283105585E+06, 0.100672125573187601E+06, 0.100626333648281943E+06, 0.100591108252538659E+06, + 0.100571154519613207E+06, 0.100572764811242494E+06, 0.100590644123334263E+06, 0.100622114840101916E+06, 0.100663170419413218E+06, + 0.100711109304953105E+06, 0.100759450274770090E+06, 0.100803668821019484E+06, 0.100843723009858411E+06, 0.100878065056743988E+06, + 0.100905193898488564E+06, 0.100924238150348683E+06, 0.100935705112497482E+06, 0.100940040808540827E+06, 0.100938611611957211E+06, + 0.100929132041696241E+06, 0.100917754954705204E+06, 0.100905818223427166E+06, 0.100905472653716875E+06, 0.100913513200435162E+06, + 0.100929234171202479E+06, 0.100956672791980032E+06, 0.100989933744260285E+06, 0.101021721049159081E+06, 0.101045261345619481E+06, + 0.101056484086316414E+06, 0.101064376750130497E+06, 0.101068662292293593E+06, 0.101058850049314118E+06, 0.101036734626105259E+06, + 0.101005396099047648E+06, 0.100967551751069492E+06, 0.100930584068150943E+06, 0.100895049839971194E+06, 0.100865689126530953E+06, + 0.100843766391791884E+06, 0.100833519035555830E+06, 0.100830429319700765E+06, 0.100830534716874317E+06, 0.100831218872075027E+06, + 0.100828733033744793E+06, 0.100816736999957517E+06, 0.100801115692818625E+06, 0.100782650624359696E+06, 0.100761638271208169E+06, + 0.100739079948099330E+06, 0.100715508303584225E+06, 0.100685570121976882E+06, 0.100651926936336182E+06, 0.100616808436076797E+06, + 0.100582738088950529E+06, 0.100553609533300842E+06, 0.100536151852068826E+06, 0.100533191840017098E+06, 0.100540563795043839E+06, + 0.100556547268302660E+06, 0.100578647827983019E+06, 0.100597845282151320E+06, 0.100615643951716338E+06, 0.100629644958407152E+06, + 0.100644649717624998E+06, 0.100661314686951257E+06, 0.100679739011681770E+06, 0.100699923738231213E+06, 0.100724000291545439E+06, + 0.100748935934403649E+06, 0.100773460147275109E+06, 0.100796886100017015E+06, 0.100818431742268527E+06, 0.101253250319671861E+06, + 0.101258941275491015E+06, 0.101265825984074268E+06, 0.101273785992740712E+06, 0.101282673338371926E+06, 0.101292322337458594E+06, + 0.101302564811119126E+06, 0.101313249084015886E+06, 0.101324039732978374E+06, 0.101334420443956798E+06, 0.101344441355969844E+06, + 0.101353937804033951E+06, 0.101362853548466621E+06, 0.101371239996888005E+06, 0.101379195223571107E+06, 0.101386868114858662E+06, + 0.101394863418320267E+06, 0.101403421459721620E+06, 0.101411971625535502E+06, 0.101421328676152989E+06, 0.101434052612144369E+06, + 0.101448448578493975E+06, 0.101464428560022046E+06, 0.101481780318751698E+06, 0.101500377161328623E+06, 0.101519861969620310E+06, + 0.101538794301281392E+06, 0.101556432572582416E+06, 0.101569913275213607E+06, 0.101580111679331065E+06, 0.101588077608188687E+06, + 0.101593761388586005E+06, 0.101597743292873696E+06, 0.101601111211300595E+06, 0.101603375473686290E+06, 0.101604722386775393E+06, + 0.101605277974446421E+06, 0.101605137189286179E+06, 0.101604583774228318E+06, 0.101604027662526438E+06, 0.101605032612257637E+06, + 0.101607890648949600E+06, 0.101612610274943596E+06, 0.101620190413487217E+06, 0.101629709918692257E+06, 0.101640274485895483E+06, + 0.101651366271263018E+06, 0.101662017372317307E+06, 0.101672127532921921E+06, 0.101681639836175294E+06, 0.101689695653715113E+06, + 0.101697371401130935E+06, 0.101704816287710346E+06, 0.101711959261812881E+06, 0.101718592829194225E+06, 0.101724976617920722E+06, + 0.101729049321389990E+06, 0.101731107282530153E+06, 0.101732743234520705E+06, 0.101734177642089810E+06, 0.101735792298410903E+06, + 0.101737051523103568E+06, 0.101737813506062157E+06, 0.101737771770358304E+06, 0.101736766611527375E+06, 0.101733998643601444E+06, + 0.101731285447018498E+06, 0.101729657615879667E+06, 0.101729463824108592E+06, 0.101730467776220365E+06, 0.101730634889909721E+06, + 0.101728530424326527E+06, 0.101723478773003560E+06, 0.101715128998538450E+06, 0.101705173881448645E+06, 0.101697065128410613E+06, + 0.101686174729378530E+06, 0.101670746397321127E+06, 0.101648602916028351E+06, 0.101617289856162359E+06, 0.101575677936215157E+06, + 0.101523549414822643E+06, 0.101459384090740117E+06, 0.101385766535040675E+06, 0.101307806220871105E+06, 0.101230532040925333E+06, + 0.101163615695121596E+06, 0.101105144301163149E+06, 0.101053953064553687E+06, 0.101004506092646785E+06, 0.100954394425546445E+06, + 0.100903265851270029E+06, 0.100843568326323351E+06, 0.100779909310060830E+06, 0.100718507897475429E+06, 0.100663227538561507E+06, + 0.100619196470881463E+06, 0.100590878309716514E+06, 0.100585918330994056E+06, 0.100599670235220139E+06, 0.100629367268692309E+06, + 0.100671559948193928E+06, 0.100722625470161831E+06, 0.100775876461740903E+06, 0.100826307692812305E+06, 0.100872731273009820E+06, + 0.100911769660482067E+06, 0.100942401025764135E+06, 0.100964392752327054E+06, 0.100978678374194351E+06, 0.100986716960824007E+06, + 0.100990258819483715E+06, 0.100986859094204920E+06, 0.100984358423690996E+06, 0.100986880945730183E+06, 0.101001308030144719E+06, + 0.101021911204537639E+06, 0.101045314756852677E+06, 0.101079374563270016E+06, 0.101112057664106265E+06, 0.101138492426304845E+06, + 0.101147264582452117E+06, 0.101146181575950890E+06, 0.101139597898295426E+06, 0.101126956426191653E+06, 0.101104207044017559E+06, + 0.101074184746976593E+06, 0.101036351784390296E+06, 0.100994839802225833E+06, 0.100951701131987342E+06, 0.100907802015808338E+06, + 0.100866623322513595E+06, 0.100836261177509557E+06, 0.100817609325104844E+06, 0.100806057949370603E+06, 0.100799101756952587E+06, + 0.100794178922864405E+06, 0.100782586521973222E+06, 0.100770278560914870E+06, 0.100755730874395027E+06, 0.100740174567162278E+06, + 0.100724221891415305E+06, 0.100711960802472036E+06, 0.100695201938734870E+06, 0.100670904548085469E+06, 0.100639130264881242E+06, + 0.100604667725497551E+06, 0.100569533181772116E+06, 0.100538827586813903E+06, 0.100515863557522040E+06, 0.100504283432544311E+06, + 0.100508208880423437E+06, 0.100520846592849106E+06, 0.100533319890499857E+06, 0.100546979620563667E+06, 0.100563406036921282E+06, + 0.100581336883139578E+06, 0.100596479945475046E+06, 0.100613263609396352E+06, 0.100632606505272503E+06, 0.100655737101977575E+06, + 0.100680377627359165E+06, 0.100705693019706334E+06, 0.100730567542817560E+06, 0.100753963268230000E+06, 0.100775475443369112E+06, + 0.101264306669592683E+06, 0.101273005643247234E+06, 0.101282212261941575E+06, 0.101292455230279535E+06, 0.101303569666892407E+06, + 0.101315379627821021E+06, 0.101327713762651794E+06, 0.101340424766245633E+06, 0.101353413011349316E+06, 0.101366215214067837E+06, + 0.101378003241061873E+06, 0.101389048142805594E+06, 0.101399358057326695E+06, 0.101408993909155237E+06, 0.101418071350073515E+06, + 0.101426765747085621E+06, 0.101435320572288721E+06, 0.101444230417056518E+06, 0.101454115342003613E+06, 0.101466281775386233E+06, + 0.101480018815107192E+06, 0.101495370152025978E+06, 0.101512249092142942E+06, 0.101530457200416044E+06, 0.101549717357720714E+06, + 0.101569710093644739E+06, 0.101589282549966229E+06, 0.101605011230739328E+06, 0.101617835360473735E+06, 0.101628768238586897E+06, + 0.101637571031423722E+06, 0.101644166338589697E+06, 0.101648697806602591E+06, 0.101651881208006424E+06, 0.101655220484862148E+06, + 0.101657859335835557E+06, 0.101659761085947117E+06, 0.101661032940759702E+06, 0.101661921699332699E+06, 0.101662809971163108E+06, + 0.101664227024246793E+06, 0.101667989933228542E+06, 0.101675508452427108E+06, 0.101685268933038969E+06, 0.101696374945899413E+06, + 0.101708376350831662E+06, 0.101720741353243910E+06, 0.101732914311869565E+06, 0.101744191311434886E+06, 0.101753679207339199E+06, + 0.101762383198229145E+06, 0.101770484632283566E+06, 0.101778058653469430E+06, 0.101785052189110153E+06, 0.101791286685933344E+06, + 0.101795171487182030E+06, 0.101797156941597103E+06, 0.101798421280143026E+06, 0.101799261614609830E+06, 0.101799803038408485E+06, + 0.101800210895802447E+06, 0.101801683280290250E+06, 0.101802630829050468E+06, 0.101802543397740184E+06, 0.101801482357017914E+06, + 0.101799624587932572E+06, 0.101797066559983883E+06, 0.101795799625004249E+06, 0.101795785922852519E+06, 0.101796374037248344E+06, + 0.101796548441705847E+06, 0.101793091799900605E+06, 0.101786346983049574E+06, 0.101776575607877137E+06, 0.101765049283969143E+06, + 0.101754303368654233E+06, 0.101742481241294314E+06, 0.101726517364683619E+06, 0.101704526213350880E+06, 0.101673251963278643E+06, + 0.101631549642581842E+06, 0.101579630218674371E+06, 0.101517751331919892E+06, 0.101445587957413649E+06, 0.101369276534187840E+06, + 0.101293749197962985E+06, 0.101228845743408630E+06, 0.101175974072217723E+06, 0.101128069068520213E+06, 0.101080672101220363E+06, + 0.101030554297062597E+06, 0.100978255877595599E+06, 0.100917786384446328E+06, 0.100848380590802917E+06, 0.100779685419598463E+06, + 0.100716993576480047E+06, 0.100665449877585226E+06, 0.100628730188585745E+06, 0.100616768912061103E+06, 0.100625017647516172E+06, + 0.100651010955717982E+06, 0.100693983128488617E+06, 0.100748028718061119E+06, 0.100807126354548294E+06, 0.100865743222122503E+06, + 0.100920280263948240E+06, 0.100963697339721592E+06, 0.100996625031755175E+06, 0.101020588466931018E+06, 0.101034801756696354E+06, + 0.101044107550953762E+06, 0.101050001068824189E+06, 0.101053046373654055E+06, 0.101058552912032319E+06, 0.101072171257776601E+06, + 0.101095588999532294E+06, 0.101124462408449937E+06, 0.101159998252541394E+06, 0.101199939829214418E+06, 0.101233511940909040E+06, + 0.101250548981260363E+06, 0.101245238633873159E+06, 0.101231967019851887E+06, 0.101212524735667932E+06, 0.101187116747768814E+06, + 0.101155254569723096E+06, 0.101117728069520774E+06, 0.101075849861174778E+06, 0.101031454770778844E+06, 0.100982633468066182E+06, + 0.100931817382534617E+06, 0.100883044212189372E+06, 0.100842431678571462E+06, 0.100810753030772234E+06, 0.100790307235783985E+06, + 0.100775641660991605E+06, 0.100758065719658363E+06, 0.100742431929372280E+06, 0.100730276589137924E+06, 0.100719950891765460E+06, + 0.100707897196450547E+06, 0.100704034450479885E+06, 0.100696304475012279E+06, 0.100682955042842383E+06, 0.100662970635189646E+06, + 0.100635257255516670E+06, 0.100598919177042175E+06, 0.100561998994079375E+06, 0.100529207116205667E+06, 0.100503120931424841E+06, + 0.100485371253469493E+06, 0.100478084387816067E+06, 0.100480161528695491E+06, 0.100486330170588408E+06, 0.100497656033703854E+06, + 0.100512793940874559E+06, 0.100530267502319883E+06, 0.100548674998529634E+06, 0.100566870164484106E+06, 0.100588713074028346E+06, + 0.100612035752629497E+06, 0.100636570551070865E+06, 0.100661555413946771E+06, 0.100685975940573393E+06, 0.100708805081237850E+06, + 0.100728426698084644E+06, 0.101271996036762896E+06, 0.101284449704480561E+06, 0.101296689346213228E+06, 0.101309400454198360E+06, + 0.101322901055611903E+06, 0.101337001192974072E+06, 0.101351521575208899E+06, 0.101366313393139906E+06, 0.101382034494546009E+06, + 0.101397351776588475E+06, 0.101411443443270473E+06, 0.101424117470686309E+06, 0.101435883616085790E+06, 0.101446811616959909E+06, + 0.101457033181746156E+06, 0.101466747751913790E+06, 0.101476231696805597E+06, 0.101486021283400187E+06, 0.101497396375811921E+06, + 0.101510400207985600E+06, 0.101524923388815208E+06, 0.101540994381505661E+06, 0.101558520228044814E+06, 0.101577305318149651E+06, + 0.101597084529118074E+06, 0.101617572913645636E+06, 0.101635935716414897E+06, 0.101650985317801838E+06, 0.101664666828709975E+06, + 0.101676613583561295E+06, 0.101686531498022989E+06, 0.101694300750966708E+06, 0.101700039232711759E+06, 0.101704155496819658E+06, + 0.101707559871844016E+06, 0.101711706616868032E+06, 0.101715220819953611E+06, 0.101718183769718671E+06, 0.101720797579619655E+06, + 0.101723413797095534E+06, 0.101726548168837966E+06, 0.101732421109602874E+06, 0.101741180387240456E+06, 0.101752626090808626E+06, + 0.101765327683930620E+06, 0.101778794125947126E+06, 0.101792465254962983E+06, 0.101805759257347163E+06, 0.101817578749370528E+06, + 0.101828002210067600E+06, 0.101837310759124710E+06, 0.101845770211075462E+06, 0.101853420566787143E+06, 0.101860181736826940E+06, + 0.101864213062694500E+06, 0.101866574115216965E+06, 0.101867875008511299E+06, 0.101868524705411764E+06, 0.101868825959176160E+06, + 0.101868919433276926E+06, 0.101869678539425964E+06, 0.101870695483190138E+06, 0.101871330785532584E+06, 0.101870979213963699E+06, + 0.101869675931957303E+06, 0.101867574002842535E+06, 0.101865625644742016E+06, 0.101864444239763863E+06, 0.101864129871809724E+06, + 0.101864253411905665E+06, 0.101863863423935647E+06, 0.101861147095331355E+06, 0.101853046503827805E+06, 0.101842469691830149E+06, + 0.101829793173113096E+06, 0.101815148158582204E+06, 0.101801721489973846E+06, 0.101784969966993638E+06, 0.101762516553084497E+06, + 0.101733198141890345E+06, 0.101692387931239413E+06, 0.101641579160683832E+06, 0.101581604629232388E+06, 0.101513447361368249E+06, + 0.101440920474624741E+06, 0.101370696075984946E+06, 0.101305428265875380E+06, 0.101254160309156374E+06, 0.101207383873920160E+06, + 0.101161789898628529E+06, 0.101111489873579616E+06, 0.101058073620173833E+06, 0.100998431410120465E+06, 0.100925178881860134E+06, + 0.100851277940204382E+06, 0.100782887728638991E+06, 0.100724637342850445E+06, 0.100681654247053943E+06, 0.100660743763258797E+06, + 0.100662241191619672E+06, 0.100684600997945701E+06, 0.100726431789378737E+06, 0.100783621753223240E+06, 0.100850165592330639E+06, + 0.100919393459606828E+06, 0.100984663126731160E+06, 0.101035581217426865E+06, 0.101073289555574971E+06, 0.101097883508170984E+06, + 0.101109275635634360E+06, 0.101115535689499287E+06, 0.101120721213043289E+06, 0.101127445332507938E+06, 0.101138555650677066E+06, + 0.101162386128591490E+06, 0.101193764958060041E+06, 0.101229324100487633E+06, 0.101272586038755646E+06, 0.101314017050708091E+06, + 0.101345307647537833E+06, 0.101350681405921583E+06, 0.101336274552223433E+06, 0.101312002659208913E+06, 0.101282108941999220E+06, + 0.101247511268828879E+06, 0.101208775326433519E+06, 0.101166118942493005E+06, 0.101124324087716755E+06, 0.101077097855417393E+06, + 0.101023493736806588E+06, 0.100966370678116829E+06, 0.100910649732596605E+06, 0.100860956183662900E+06, 0.100818859583747035E+06, + 0.100784487610509677E+06, 0.100755633857502806E+06, 0.100730268695456398E+06, 0.100710865638861083E+06, 0.100697679049610029E+06, + 0.100690061794109570E+06, 0.100696089852752222E+06, 0.100696921102593260E+06, 0.100692632540626320E+06, 0.100681762801710865E+06, + 0.100663264802660036E+06, 0.100633791904004815E+06, 0.100597430688150896E+06, 0.100559133196241281E+06, 0.100524051576254133E+06, + 0.100494743325319461E+06, 0.100472843717532320E+06, 0.100453469270866597E+06, 0.100441938855850953E+06, 0.100444602587366870E+06, + 0.100453700278505523E+06, 0.100467703647186674E+06, 0.100484865751373640E+06, 0.100504556800278908E+06, 0.100526747147881411E+06, + 0.100548342492759344E+06, 0.100570928110482331E+06, 0.100594499129673175E+06, 0.100618314768352022E+06, 0.100641358389098648E+06, + 0.100661048545089099E+06, 0.100674922441404182E+06, 0.101277440454925483E+06, 0.101292275045881630E+06, 0.101308217918252703E+06, + 0.101324032641650105E+06, 0.101340083417949048E+06, 0.101356599817204507E+06, 0.101373389242319026E+06, 0.101391680572806275E+06, + 0.101409655246696246E+06, 0.101426966070523806E+06, 0.101443353143514600E+06, 0.101458277199001546E+06, 0.101471528522387307E+06, + 0.101483748681189623E+06, 0.101495083125874895E+06, 0.101505752090554262E+06, 0.101516050089151657E+06, 0.101526815975076141E+06, + 0.101538795327266271E+06, 0.101552338028206417E+06, 0.101567404995926277E+06, 0.101583932457588046E+06, 0.101601812845274559E+06, + 0.101620841504076889E+06, 0.101640749378202716E+06, 0.101659290500403222E+06, 0.101676771795349603E+06, 0.101693884723980591E+06, + 0.101708998663612001E+06, 0.101722276078936207E+06, 0.101733606252533034E+06, 0.101742808520292456E+06, 0.101749958233873534E+06, + 0.101756733187784732E+06, 0.101761976313215302E+06, 0.101765600227458519E+06, 0.101770624962746049E+06, 0.101775587804667244E+06, + 0.101780223730697457E+06, 0.101784845963681015E+06, 0.101792019560120360E+06, 0.101800861910829000E+06, 0.101810238167576026E+06, + 0.101821334626365482E+06, 0.101835649384848730E+06, 0.101850599319270405E+06, 0.101865571025550424E+06, 0.101879726510542314E+06, + 0.101892673462390783E+06, 0.101903975174055988E+06, 0.101913651691837455E+06, 0.101922403262289721E+06, 0.101930066269132934E+06, + 0.101934959838625931E+06, 0.101938013574382479E+06, 0.101939867945920269E+06, 0.101940768404829549E+06, 0.101940976512875422E+06, + 0.101940974808985324E+06, 0.101941915218950715E+06, 0.101942796779357042E+06, 0.101943325071244180E+06, 0.101943321289824438E+06, + 0.101942520685581403E+06, 0.101940795734215877E+06, 0.101938328485986989E+06, 0.101936102913573559E+06, 0.101934189161022412E+06, + 0.101933270983365946E+06, 0.101932726854111810E+06, 0.101931071080041162E+06, 0.101927390375963005E+06, 0.101920782487591568E+06, + 0.101909599976852041E+06, 0.101896034018928112E+06, 0.101880121030327078E+06, 0.101861777722108454E+06, 0.101843441866567693E+06, + 0.101821175828396939E+06, 0.101793162871491804E+06, 0.101756243381197477E+06, 0.101707526053893132E+06, 0.101651390637597418E+06, + 0.101591096250860501E+06, 0.101525066978488496E+06, 0.101457842460151805E+06, 0.101392749867658815E+06, 0.101338205739929384E+06, + 0.101290789521037383E+06, 0.101243732978547458E+06, 0.101191560328100386E+06, 0.101135333560209707E+06, 0.101074991868799916E+06, + 0.101002789603246347E+06, 0.100928035016280875E+06, 0.100857779212484500E+06, 0.100794984785666602E+06, 0.100746221294778152E+06, + 0.100717266126841918E+06, 0.100710869212579069E+06, 0.100726313373954297E+06, 0.100765862955971417E+06, 0.100824009621681325E+06, + 0.100896074483335498E+06, 0.100975156087370415E+06, 0.101050862045185830E+06, 0.101108616996395343E+06, 0.101151397540630162E+06, + 0.101177118649863274E+06, 0.101187234876946401E+06, 0.101192189574432836E+06, 0.101198920872520132E+06, 0.101209271572763842E+06, + 0.101225853188380381E+06, 0.101255763867716960E+06, 0.101292205782835576E+06, 0.101333769433737034E+06, 0.101380487686360808E+06, + 0.101421196585383368E+06, 0.101445943578677994E+06, 0.101442593076884281E+06, 0.101422753739062216E+06, 0.101390520324852318E+06, + 0.101350761888702051E+06, 0.101308120360709363E+06, 0.101265074031475204E+06, 0.101223556150358476E+06, 0.101181059083197164E+06, + 0.101131282154724337E+06, 0.101073985674786556E+06, 0.101009316519365500E+06, 0.100945620806578852E+06, 0.100887564966803198E+06, + 0.100836870701820939E+06, 0.100791306568270127E+06, 0.100748587002241606E+06, 0.100714275195360678E+06, 0.100691096015225994E+06, + 0.100677036214206237E+06, 0.100679656532840978E+06, 0.100689403954963505E+06, 0.100699806241966638E+06, 0.100699758014009334E+06, + 0.100690385161567290E+06, 0.100668712287826143E+06, 0.100636906386880102E+06, 0.100599766534639755E+06, 0.100560426804608782E+06, + 0.100523011227441762E+06, 0.100490487333571364E+06, 0.100458484377625064E+06, 0.100433836484664062E+06, 0.100418321599970062E+06, + 0.100412076649917391E+06, 0.100419080629848453E+06, 0.100432241000389156E+06, 0.100450792482229837E+06, 0.100472305642769512E+06, + 0.100493869619492121E+06, 0.100514430080734746E+06, 0.100535036793476407E+06, 0.100556629184451856E+06, 0.100578314394928922E+06, + 0.100596991295179905E+06, 0.100611500340730694E+06, 0.100623274306907668E+06, 0.101280196625301396E+06, 0.101297364868656936E+06, + 0.101315860426329833E+06, 0.101335437548964052E+06, 0.101354738212366676E+06, 0.101373945822871654E+06, 0.101394704590563779E+06, + 0.101415369573864707E+06, 0.101435547066077095E+06, 0.101454900560777067E+06, 0.101473156717428967E+06, 0.101490111858949429E+06, + 0.101505426648419336E+06, 0.101518896733282789E+06, 0.101531260767964472E+06, 0.101542531309453814E+06, 0.101553164954199878E+06, + 0.101564411925864319E+06, 0.101576767311889984E+06, 0.101590613786174377E+06, 0.101606186426911474E+06, 0.101622949542643095E+06, + 0.101640870734518088E+06, 0.101659778611533140E+06, 0.101677671599300767E+06, 0.101695145189232746E+06, 0.101713022490742442E+06, + 0.101730968458130665E+06, 0.101748633328473559E+06, 0.101764332593418454E+06, 0.101777415582760368E+06, 0.101788327636173344E+06, + 0.101798745459491343E+06, 0.101807854686651277E+06, 0.101815215507054876E+06, 0.101821043040616947E+06, 0.101825884968623417E+06, + 0.101832189148969264E+06, 0.101839168448648401E+06, 0.101848045440598347E+06, 0.101858730804693652E+06, 0.101869959329435806E+06, + 0.101881533268110448E+06, 0.101893454722194554E+06, 0.101906437265534973E+06, 0.101922905509709031E+06, 0.101939197745689977E+06, + 0.101954795923734462E+06, 0.101969009671704334E+06, 0.101981310726737574E+06, 0.101991415766123711E+06, 0.101999594743156573E+06, + 0.102005976491342561E+06, 0.102010334316063047E+06, 0.102013157295944911E+06, 0.102014722383416287E+06, 0.102015313093490025E+06, + 0.102015201185307524E+06, 0.102016512237083880E+06, 0.102017510782104568E+06, 0.102018055903560264E+06, 0.102018084579591843E+06, + 0.102017466339170613E+06, 0.102015842014936527E+06, 0.102013009808558825E+06, 0.102010188377710918E+06, 0.102007504920719613E+06, + 0.102004842449303280E+06, 0.102002010784629019E+06, 0.101999472815438930E+06, 0.101995912864510945E+06, 0.101991527724094442E+06, + 0.101985699759707655E+06, 0.101975812995855114E+06, 0.101961537246313150E+06, 0.101943695019863866E+06, 0.101923033375715851E+06, + 0.101901362121280530E+06, 0.101879075837123033E+06, 0.101852284874085046E+06, 0.101819539147717020E+06, 0.101776999589703846E+06, + 0.101726785900868257E+06, 0.101671557646898407E+06, 0.101612042588822980E+06, 0.101548622762663115E+06, 0.101485284216076703E+06, + 0.101425147441038411E+06, 0.101373420817102917E+06, 0.101321191476503751E+06, 0.101266538752380700E+06, 0.101208938335707280E+06, + 0.101148533319442722E+06, 0.101080582757091557E+06, 0.101007172321080754E+06, 0.100937106866050381E+06, 0.100872650853732252E+06, + 0.100818490092161403E+06, 0.100780581038449120E+06, 0.100763989069985822E+06, 0.100769172528104478E+06, 0.100801781036641652E+06, + 0.100856282722816642E+06, 0.100929221528193739E+06, 0.101013884730459817E+06, 0.101097563707576744E+06, 0.101162534274172547E+06, + 0.101213486478638646E+06, 0.101244516559525029E+06, 0.101257648408437890E+06, 0.101263733502884890E+06, 0.101275510052246449E+06, + 0.101290762661853529E+06, 0.101314197491016195E+06, 0.101347943558257903E+06, 0.101386651316440679E+06, 0.101430443429601510E+06, + 0.101475669896804160E+06, 0.101514950055520574E+06, 0.101531515938051540E+06, 0.101524788957272292E+06, 0.101501664340208648E+06, + 0.101465580088908755E+06, 0.101421732802947983E+06, 0.101374184582676520E+06, 0.101328046898908578E+06, 0.101289807901878230E+06, + 0.101246491413997268E+06, 0.101194778317482283E+06, 0.101131646224091921E+06, 0.101060205833383836E+06, 0.100988174374432070E+06, + 0.100922370979696687E+06, 0.100863854824209222E+06, 0.100809964699915654E+06, 0.100761271524313197E+06, 0.100719104259046479E+06, + 0.100686430395430245E+06, 0.100678847862221184E+06, 0.100683138663107515E+06, 0.100693073794055832E+06, 0.100704133264039236E+06, + 0.100711587564049987E+06, 0.100702838554374641E+06, 0.100679156446423745E+06, 0.100646910483054933E+06, 0.100608627281804467E+06, + 0.100567412671928309E+06, 0.100526528285293534E+06, 0.100483943399388023E+06, 0.100448443665773972E+06, 0.100421899539395425E+06, + 0.100404924203073868E+06, 0.100397063255380912E+06, 0.100397195586259491E+06, 0.100412985650041403E+06, 0.100432834475288488E+06, + 0.100453366207182436E+06, 0.100473356439391355E+06, 0.100491742373035304E+06, 0.100507905429383289E+06, 0.100525814076571885E+06, + 0.100542096974396103E+06, 0.100555812166254138E+06, 0.100567395231908740E+06, 0.100576579149565121E+06, 0.101279908089260382E+06, + 0.101299372851355220E+06, 0.101320345227797603E+06, 0.101342568251312987E+06, 0.101366203167707048E+06, 0.101390159455080997E+06, + 0.101413541104309363E+06, 0.101436670068180945E+06, 0.101459134145086064E+06, 0.101480579621756508E+06, 0.101500717501762701E+06, + 0.101519330301993643E+06, 0.101536279443531355E+06, 0.101551434684382868E+06, 0.101564255195383463E+06, 0.101575422887434994E+06, + 0.101586445548099669E+06, 0.101597902131166629E+06, 0.101610316943178666E+06, 0.101624105975331244E+06, 0.101639540620591506E+06, + 0.101656731770743747E+06, 0.101674690803331439E+06, 0.101691335236531100E+06, 0.101707821449698851E+06, 0.101725245164068649E+06, + 0.101743396815362881E+06, 0.101762005533747782E+06, 0.101780794703432257E+06, 0.101799566956391791E+06, 0.101816729089967106E+06, + 0.101830810115947446E+06, 0.101843847767199652E+06, 0.101855309960108818E+06, 0.101865083082604426E+06, 0.101873349177960990E+06, + 0.101880647099664595E+06, 0.101887932618480903E+06, 0.101897799286328358E+06, 0.101910318475203370E+06, 0.101923741945953618E+06, + 0.101937617512615703E+06, 0.101951634884124011E+06, 0.101965709346062926E+06, 0.101980052214833602E+06, 0.101995075682068244E+06, + 0.102012705906177565E+06, 0.102029916826673259E+06, 0.102045578980748891E+06, 0.102059048316380504E+06, 0.102069947174644665E+06, + 0.102077684357740349E+06, 0.102082147312762972E+06, 0.102086500261915091E+06, 0.102089248935513198E+06, 0.102090698933738371E+06, + 0.102091178364924752E+06, 0.102092701245381337E+06, 0.102093815457381104E+06, 0.102094368575754212E+06, 0.102094331459262947E+06, + 0.102093649378548696E+06, 0.102091495160413397E+06, 0.102088077118329078E+06, 0.102085266715555787E+06, 0.102082068081696532E+06, + 0.102078934857918081E+06, 0.102075562114887900E+06, 0.102070631820974115E+06, 0.102064438122544176E+06, 0.102059414174384161E+06, + 0.102053827822841413E+06, 0.102047097203453392E+06, 0.102038205276517619E+06, 0.102023970080276820E+06, 0.102005255572377879E+06, + 0.101983545280989390E+06, 0.101959239559772468E+06, 0.101934934813177606E+06, 0.101909416211695381E+06, 0.101879530216405619E+06, + 0.101843729384204227E+06, 0.101798771374156902E+06, 0.101749131431232046E+06, 0.101696435747962270E+06, 0.101638597439857098E+06, + 0.101576958615739393E+06, 0.101514239708325505E+06, 0.101456190833159548E+06, 0.101399554349585407E+06, 0.101340424142701784E+06, + 0.101280446676456311E+06, 0.101219442303719290E+06, 0.101155802903883246E+06, 0.101085010925495619E+06, 0.101016127520053677E+06, + 0.100949559692596478E+06, 0.100889898302085116E+06, 0.100844209040313392E+06, 0.100816129681629769E+06, 0.100810501379105452E+06, + 0.100832591111220638E+06, 0.100879523722449056E+06, 0.100948063089510324E+06, 0.101031460853947981E+06, 0.101115973986060417E+06, + 0.101184231818201646E+06, 0.101240245990651732E+06, 0.101276004337181133E+06, 0.101297693264287940E+06, 0.101316108838536718E+06, + 0.101339338207326771E+06, 0.101364838726589573E+06, 0.101398212697034352E+06, 0.101435020262566584E+06, 0.101474120214935858E+06, + 0.101515374742090018E+06, 0.101554913896900893E+06, 0.101585525309637247E+06, 0.101596313029333352E+06, 0.101591763310596391E+06, + 0.101572063905601564E+06, 0.101533915795807872E+06, 0.101488864498615381E+06, 0.101440950048410057E+06, 0.101401964815710235E+06, + 0.101362939393266570E+06, 0.101319118725317487E+06, 0.101264253224874032E+06, 0.101194604583161839E+06, 0.101119529697804493E+06, + 0.101043148821796305E+06, 0.100969817218776385E+06, 0.100904222807714512E+06, 0.100845424566366739E+06, 0.100792297539129795E+06, + 0.100746429506127941E+06, 0.100716119483396033E+06, 0.100699086889567552E+06, 0.100699855109205411E+06, 0.100707310375888119E+06, + 0.100716570575528633E+06, 0.100720007898216936E+06, 0.100714797932772417E+06, 0.100695727134459230E+06, 0.100662985850684985E+06, + 0.100623495462979961E+06, 0.100579571082265902E+06, 0.100528287659914175E+06, 0.100483047690553038E+06, 0.100446858129451386E+06, + 0.100420432087088702E+06, 0.100404117469529898E+06, 0.100397105480157465E+06, 0.100403234638665162E+06, 0.100415020179178769E+06, + 0.100433067114222082E+06, 0.100451452530888302E+06, 0.100468854497717490E+06, 0.100484113018387754E+06, 0.100496513635322510E+06, + 0.100504396642556661E+06, 0.100514796346128511E+06, 0.100524493045942218E+06, 0.100532404153307187E+06, 0.100538289704171490E+06, + 0.101276336252575435E+06, 0.101298080414544456E+06, 0.101321469561098274E+06, 0.101347127563797287E+06, 0.101375017595738012E+06, + 0.101402741686854177E+06, 0.101429372639699533E+06, 0.101455094154428705E+06, 0.101479936738935212E+06, 0.101503527247806051E+06, + 0.101525558424067625E+06, 0.101545795970329476E+06, 0.101564086253569083E+06, 0.101579860400036196E+06, 0.101592656313919491E+06, + 0.101604222243081458E+06, 0.101615370617936293E+06, 0.101626717204329048E+06, 0.101638824013794816E+06, 0.101652144675515985E+06, + 0.101666986413953739E+06, 0.101683491567268982E+06, 0.101699730410034434E+06, 0.101715308981035720E+06, 0.101731361440654102E+06, + 0.101748589449732390E+06, 0.101766824698764540E+06, 0.101785841910313233E+06, 0.101805411629659066E+06, 0.101825381837012450E+06, + 0.101846839764007193E+06, 0.101867081140515147E+06, 0.101882747001865355E+06, 0.101896903928888263E+06, 0.101909362288120537E+06, + 0.101920245934517079E+06, 0.101930058238641242E+06, 0.101941637442764200E+06, 0.101954785426383867E+06, 0.101968215450878924E+06, + 0.101984710778129607E+06, 0.102001549965592465E+06, 0.102018275841846422E+06, 0.102034683222590960E+06, 0.102052401989689286E+06, + 0.102069645673240069E+06, 0.102086007650836211E+06, 0.102103768116502732E+06, 0.102121127630333416E+06, 0.102135973777942898E+06, + 0.102147987937177197E+06, 0.102156601874315427E+06, 0.102161672760610920E+06, 0.102163612354316181E+06, 0.102165768392921964E+06, + 0.102167214431077227E+06, 0.102169260247518920E+06, 0.102170746287005837E+06, 0.102171480626503515E+06, 0.102171269145651808E+06, + 0.102170214520413967E+06, 0.102167256562754847E+06, 0.102162479386098232E+06, 0.102158371150627951E+06, 0.102155244448894475E+06, + 0.102152875264177637E+06, 0.102149492287714515E+06, 0.102145495391175835E+06, 0.102139392366010521E+06, 0.102131234162350753E+06, + 0.102121845495369198E+06, 0.102114444604303775E+06, 0.102106462190456019E+06, 0.102096364075651625E+06, 0.102082958297694466E+06, + 0.102064065966768365E+06, 0.102041420899050965E+06, 0.102016297892142000E+06, 0.101989261194259234E+06, 0.101963193901333740E+06, + 0.101934697827006079E+06, 0.101902018630394974E+06, 0.101863893013675159E+06, 0.101820477410193009E+06, 0.101774528513823985E+06, + 0.101724002882111308E+06, 0.101665763047983230E+06, 0.101603648801794363E+06, 0.101540096977050402E+06, 0.101478947206942044E+06, + 0.101415470097827929E+06, 0.101351609294201058E+06, 0.101289469642166499E+06, 0.101226537327552069E+06, 0.101158605139549531E+06, + 0.101091671283985226E+06, 0.101026501778518956E+06, 0.100963906622713315E+06, 0.100912235109733156E+06, 0.100875156448926034E+06, + 0.100858092199168052E+06, 0.100869196724643829E+06, 0.100906258192389359E+06, 0.100966643545000639E+06, 0.101044871026198045E+06, + 0.101126128294873750E+06, 0.101195519846174895E+06, 0.101255659962385485E+06, 0.101297057174446716E+06, 0.101328131549875659E+06, + 0.101358621176643224E+06, 0.101392239138290606E+06, 0.101427359701943147E+06, 0.101468500213009858E+06, 0.101510703720686288E+06, + 0.101550908563824967E+06, 0.101587166287520682E+06, 0.101619760493459311E+06, 0.101640375989610111E+06, 0.101647164822681414E+06, + 0.101640476796716728E+06, 0.101620225665346763E+06, 0.101589549071868416E+06, 0.101551044697311809E+06, 0.101511563682290900E+06, + 0.101475939268223781E+06, 0.101437438003792078E+06, 0.101392805212183681E+06, 0.101332702985176016E+06, 0.101262976832194923E+06, + 0.101186444126810515E+06, 0.101108333464266703E+06, 0.101034512676034472E+06, 0.100963849818957518E+06, 0.100898562106253885E+06, + 0.100842056459041982E+06, 0.100798749608423153E+06, 0.100767148703609448E+06, 0.100745027122654850E+06, 0.100731425417328996E+06, + 0.100731821012642424E+06, 0.100734592849697350E+06, 0.100733986756515151E+06, 0.100727026999971698E+06, 0.100711618349869153E+06, + 0.100683470368124676E+06, 0.100640250766840603E+06, 0.100586314437398818E+06, 0.100534961959011474E+06, 0.100490642055552060E+06, + 0.100456264076438296E+06, 0.100432289810027520E+06, 0.100419632142970615E+06, 0.100423645734029778E+06, 0.100432024957258123E+06, + 0.100442709528904365E+06, 0.100454138069834065E+06, 0.100469282754753091E+06, 0.100483179206656147E+06, 0.100494317659240289E+06, + 0.100501048475271105E+06, 0.100503737147053136E+06, 0.100502939624753810E+06, 0.100506864511892840E+06, 0.100510205922212830E+06, + 0.100511985008099888E+06, 0.101269395817640194E+06, 0.101293433370600033E+06, 0.101320709064215349E+06, 0.101350720216622271E+06, + 0.101381363474586935E+06, 0.101411901774678990E+06, 0.101441702408660596E+06, 0.101470286272251309E+06, 0.101497612121933402E+06, + 0.101523409436511720E+06, 0.101547349710601979E+06, 0.101569178391354450E+06, 0.101588382552830284E+06, 0.101604424454005639E+06, + 0.101617806496970152E+06, 0.101629009202247544E+06, 0.101639790736640862E+06, 0.101650653799515901E+06, 0.101662034467563892E+06, + 0.101674429962589624E+06, 0.101688184881771667E+06, 0.101701776789907686E+06, 0.101715632368359467E+06, 0.101731005396025357E+06, + 0.101747619021182472E+06, 0.101764475149160600E+06, 0.101782565451806455E+06, 0.101801692572504733E+06, 0.101821649291101741E+06, + 0.101844372908615100E+06, 0.101868013490669473E+06, 0.101890926735153276E+06, 0.101912734436730447E+06, 0.101930521333358061E+06, + 0.101945955049482625E+06, 0.101959618341155976E+06, 0.101973842306752718E+06, 0.101990092943988522E+06, 0.102006492234429417E+06, + 0.102022981199823858E+06, 0.102039845835770568E+06, 0.102059553276874620E+06, 0.102079331788742449E+06, 0.102099902964415654E+06, + 0.102120532959564909E+06, 0.102140448801236460E+06, 0.102159255793075747E+06, 0.102176879448503649E+06, 0.102194365868866342E+06, + 0.102211106097444455E+06, 0.102224803244153038E+06, 0.102234823789642047E+06, 0.102240968923527806E+06, 0.102243570541519104E+06, + 0.102243519688579676E+06, 0.102244750868611838E+06, 0.102246759472131700E+06, 0.102247988131721504E+06, 0.102248209161490959E+06, + 0.102247170632681489E+06, 0.102243247319650705E+06, 0.102236753031268512E+06, 0.102230982493940493E+06, 0.102226187707310237E+06, + 0.102222666096639834E+06, 0.102220567141386651E+06, 0.102219855956292071E+06, 0.102215511479397683E+06, 0.102208434908867741E+06, + 0.102198721169081880E+06, 0.102186789184960857E+06, 0.102174609249495770E+06, 0.102164550205667154E+06, 0.102152502370517235E+06, + 0.102137501608386214E+06, 0.102118919702411848E+06, 0.102095889999392573E+06, 0.102070100404917495E+06, 0.102041997958624415E+06, + 0.102012090612610089E+06, 0.101983710969351829E+06, 0.101953137519082840E+06, 0.101920734120792738E+06, 0.101883717982373681E+06, + 0.101842973734119500E+06, 0.101798428245916861E+06, 0.101747102066966778E+06, 0.101687602338869881E+06, 0.101624664318831565E+06, + 0.101559707946739305E+06, 0.101491658640950249E+06, 0.101420567276357397E+06, 0.101354355882096454E+06, 0.101289435543346961E+06, + 0.101224098024003702E+06, 0.101159952737485408E+06, 0.101097956680038245E+06, 0.101035227047009626E+06, 0.100981546520210177E+06, + 0.100939244847484995E+06, 0.100914786575781181E+06, 0.100915867157493747E+06, 0.100942559164277671E+06, 0.100993021366280096E+06, + 0.101062207385378511E+06, 0.101136754321606641E+06, 0.101205153055716102E+06, 0.101267549676815237E+06, 0.101315566331653798E+06, + 0.101356986952566978E+06, 0.101400109049254897E+06, 0.101444047042664242E+06, 0.101488513133860251E+06, 0.101534593023339607E+06, + 0.101578862893253303E+06, 0.101617989104461085E+06, 0.101651469070145307E+06, 0.101676676962902973E+06, 0.101688426206951568E+06, + 0.101690699198194692E+06, 0.101681585082600272E+06, 0.101660802224054729E+06, 0.101632322368388574E+06, 0.101602214382015110E+06, + 0.101577248018812563E+06, 0.101546577483431887E+06, 0.101509347660459607E+06, 0.101460277851145336E+06, 0.101400695177468675E+06, + 0.101333061941295062E+06, 0.101259893373003069E+06, 0.101185498750814251E+06, 0.101111060613673137E+06, 0.101038806163680754E+06, + 0.100970853556921851E+06, 0.100913205537255504E+06, 0.100868081185120318E+06, 0.100831661076531760E+06, 0.100803490881640522E+06, + 0.100782858759036229E+06, 0.100767010800255986E+06, 0.100760517927946479E+06, 0.100755313595541767E+06, 0.100745011420950410E+06, + 0.100727337942231010E+06, 0.100696437123156371E+06, 0.100650083823098379E+06, 0.100597278983266224E+06, 0.100548413676936747E+06, + 0.100507765427222563E+06, 0.100477948430878227E+06, 0.100463614942480534E+06, 0.100466404104801695E+06, 0.100473340681007379E+06, + 0.100482742216284692E+06, 0.100492637659898319E+06, 0.100501306119762710E+06, 0.100508155310289090E+06, 0.100517896956254641E+06, + 0.100523967020314361E+06, 0.100525551437862276E+06, 0.100522692726944748E+06, 0.100516008939190593E+06, 0.100506617021169775E+06, + 0.100504130401290677E+06, 0.100500855757604397E+06, 0.101259195015618316E+06, 0.101287394131248599E+06, 0.101318624387393094E+06, + 0.101351388311065471E+06, 0.101384848445848693E+06, 0.101418230695586331E+06, 0.101450864090695264E+06, 0.101482215379592511E+06, + 0.101512000328888942E+06, 0.101540081556911420E+06, 0.101565958007626774E+06, 0.101589239793549044E+06, 0.101609354590231524E+06, + 0.101626245425942194E+06, 0.101640116415258730E+06, 0.101651384047841973E+06, 0.101660624537901342E+06, 0.101669864682349900E+06, + 0.101680046518619303E+06, 0.101691016789836227E+06, 0.101701600972581538E+06, 0.101712344116073305E+06, 0.101724596034016693E+06, + 0.101738626214170567E+06, 0.101754578760972465E+06, 0.101772464174383247E+06, 0.101790289256249525E+06, 0.101809225095436283E+06, + 0.101831409086778760E+06, 0.101855713865937665E+06, 0.101880304248738481E+06, 0.101904708267321548E+06, 0.101928659429272666E+06, + 0.101952215895369998E+06, 0.101973129343184191E+06, 0.101990492819853054E+06, 0.102009155453432861E+06, 0.102028626658851339E+06, + 0.102048465714061036E+06, 0.102068480817810836E+06, 0.102088846460710702E+06, 0.102110232566220016E+06, 0.102133295641766570E+06, + 0.102157356921516912E+06, 0.102181314870907911E+06, 0.102204374004590238E+06, 0.102226000444488978E+06, 0.102246017656184413E+06, + 0.102265607213167954E+06, 0.102282589184103534E+06, 0.102298432423255334E+06, 0.102310352702715958E+06, 0.102317999706446251E+06, + 0.102321598850661234E+06, 0.102323515138576258E+06, 0.102323197704490987E+06, 0.102322212878332677E+06, 0.102323063816814887E+06, + 0.102322646091264614E+06, 0.102319439183542258E+06, 0.102312970911412354E+06, 0.102304997794601848E+06, 0.102296841478971372E+06, + 0.102291418130089238E+06, 0.102288360395478667E+06, 0.102288552237265947E+06, 0.102287701703575425E+06, 0.102284538846590702E+06, + 0.102276897495121520E+06, 0.102265740813761135E+06, 0.102252134571836228E+06, 0.102237131022390793E+06, 0.102221272996986561E+06, + 0.102206507054624482E+06, 0.102189132554294789E+06, 0.102168602609417649E+06, 0.102145544389345145E+06, 0.102118566149667124E+06, + 0.102089083952633140E+06, 0.102057798140960163E+06, 0.102026969995698295E+06, 0.101997794023706476E+06, 0.101966743922712252E+06, + 0.101933057167765714E+06, 0.101896592945729586E+06, 0.101857371791885336E+06, 0.101815607416803119E+06, 0.101763023383776948E+06, + 0.101702407436462090E+06, 0.101635116047538351E+06, 0.101562945833011370E+06, 0.101485822606547168E+06, 0.101411005039628857E+06, + 0.101339835091662317E+06, 0.101272689532459044E+06, 0.101210368076346276E+06, 0.101154473004817381E+06, 0.101097829928473817E+06, + 0.101048482059940754E+06, 0.101007048910648111E+06, 0.100979473833055905E+06, 0.100973447727585182E+06, 0.100990584221201716E+06, + 0.101029960997994902E+06, 0.101087951257948895E+06, 0.101153695183268181E+06, 0.101219018003879406E+06, 0.101282293838312820E+06, + 0.101338465984178547E+06, 0.101391368230947162E+06, 0.101446772222011277E+06, 0.101500085973176334E+06, 0.101550853250171887E+06, + 0.101598573456663202E+06, 0.101641988898670184E+06, 0.101679214186169236E+06, 0.101710098564568776E+06, 0.101732780885386266E+06, + 0.101743179226637279E+06, 0.101740055966295447E+06, 0.101722994425650759E+06, 0.101700469255730888E+06, 0.101674123165238838E+06, + 0.101653160060864204E+06, 0.101631596453806415E+06, 0.101607075787893336E+06, 0.101574486424828559E+06, 0.101526976419999381E+06, + 0.101469612332252946E+06, 0.101404225279481514E+06, 0.101336714868594907E+06, 0.101267916935403031E+06, 0.101195492908750399E+06, + 0.101123687793417601E+06, 0.101058751346724224E+06, 0.101000171416406578E+06, 0.100947653236097554E+06, 0.100904324965127365E+06, + 0.100869022485961759E+06, 0.100838631774334179E+06, 0.100814997040174785E+06, 0.100796371893838630E+06, 0.100782994420463059E+06, + 0.100767931078048772E+06, 0.100738709347425858E+06, 0.100699551218149616E+06, 0.100657848886243373E+06, 0.100613930496747955E+06, + 0.100570328091677089E+06, 0.100536417956577148E+06, 0.100522106220241680E+06, 0.100523981788664518E+06, 0.100534576173254580E+06, + 0.100544607428678122E+06, 0.100555100707554739E+06, 0.100564477570051735E+06, 0.100571044680449282E+06, 0.100573984997784108E+06, + 0.100574098036419746E+06, 0.100574969682196417E+06, 0.100570985693230745E+06, 0.100562235725965831E+06, 0.100549403090203457E+06, + 0.100533663303323410E+06, 0.100514985690890928E+06, 0.100501506969102309E+06, 0.101247028543607215E+06, 0.101279000272323727E+06, + 0.101313044900483452E+06, 0.101348706117229129E+06, 0.101385099864543183E+06, 0.101421406335684835E+06, 0.101456908730823867E+06, + 0.101491027169870344E+06, 0.101523346965489472E+06, 0.101553641131603319E+06, 0.101581591041353255E+06, 0.101606456037034135E+06, + 0.101627802489960915E+06, 0.101645553091339185E+06, 0.101659871959589625E+06, 0.101671125963614424E+06, 0.101679833672676948E+06, + 0.101686600287344059E+06, 0.101693249899754504E+06, 0.101700828771449567E+06, 0.101708214676399468E+06, 0.101716786788727914E+06, + 0.101726994188702083E+06, 0.101739189978545895E+06, 0.101753597010140846E+06, 0.101770294478413707E+06, 0.101789229323241438E+06, + 0.101810439881563492E+06, 0.101833551125124432E+06, 0.101857745342370516E+06, 0.101882520275840274E+06, 0.101907489508364233E+06, + 0.101932461599410264E+06, 0.101957552146214075E+06, 0.101983305456973438E+06, 0.102008579834297911E+06, 0.102030494060992147E+06, + 0.102053548115608966E+06, 0.102077104427164624E+06, 0.102100783210934751E+06, 0.102124584361851768E+06, 0.102151618960978216E+06, + 0.102178487299050277E+06, 0.102203837934088209E+06, 0.102231789811787370E+06, 0.102258565924026567E+06, 0.102283435612743153E+06, + 0.102308168911264584E+06, 0.102331519967324959E+06, 0.102351306090243161E+06, 0.102367344163488393E+06, 0.102380956720203612E+06, + 0.102390540926741916E+06, 0.102396561280422888E+06, 0.102399644414793191E+06, 0.102399967479044542E+06, 0.102398097050173761E+06, + 0.102394877934586664E+06, 0.102392579382061362E+06, 0.102387437885771593E+06, 0.102380474134807795E+06, 0.102372089234619867E+06, + 0.102363087167973557E+06, 0.102355720695108947E+06, 0.102355336216227777E+06, 0.102355244528026058E+06, 0.102353863384518510E+06, + 0.102349945815737563E+06, 0.102342442703922468E+06, 0.102329934370864139E+06, 0.102314612359457431E+06, 0.102297370131901000E+06, + 0.102278388120427626E+06, 0.102257491551240819E+06, 0.102236307907230104E+06, 0.102213097347429662E+06, 0.102187800432568954E+06, + 0.102160229919730293E+06, 0.102129097981842890E+06, 0.102096889363146300E+06, 0.102063827052134482E+06, 0.102031184486610946E+06, + 0.101999264622467439E+06, 0.101966221591490219E+06, 0.101931754343580265E+06, 0.101897700536754972E+06, 0.101861993529889558E+06, + 0.101819636716650479E+06, 0.101763615901241341E+06, 0.101697976370488861E+06, 0.101620393736143524E+06, 0.101535102872161384E+06, + 0.101449253069692393E+06, 0.101374420264238244E+06, 0.101306501858255855E+06, 0.101247778577939956E+06, 0.101198381473636808E+06, + 0.101152064836353820E+06, 0.101110344624142366E+06, 0.101075281561938828E+06, 0.101049407554255304E+06, 0.101040768998780331E+06, + 0.101052199471517510E+06, 0.101082392815890635E+06, 0.101129144157533199E+06, 0.101184092780294726E+06, 0.101243772906750455E+06, + 0.101307121999288836E+06, 0.101369991062098430E+06, 0.101433698297000723E+06, 0.101498903828178067E+06, 0.101560474018943947E+06, + 0.101615857050411636E+06, 0.101665138596523073E+06, 0.101705590047241931E+06, 0.101738943786932854E+06, 0.101767114003134644E+06, + 0.101789192730629773E+06, 0.101799147989736230E+06, 0.101794735430608300E+06, 0.101777146397531964E+06, 0.101750372193384130E+06, + 0.101723141667504169E+06, 0.101702833712477848E+06, 0.101682678205011733E+06, 0.101660302359832262E+06, 0.101630633216063026E+06, + 0.101590584748240784E+06, 0.101537939783765964E+06, 0.101477184750419154E+06, 0.101412613988421668E+06, 0.101346432956553763E+06, + 0.101280354991399392E+06, 0.101215950742003886E+06, 0.101152407700542390E+06, 0.101091630971862964E+06, 0.101034381306262483E+06, + 0.100980581565512359E+06, 0.100932607474756849E+06, 0.100894526231033058E+06, 0.100863524006721316E+06, 0.100837940986693153E+06, + 0.100815616712752075E+06, 0.100783831314269482E+06, 0.100747340055464098E+06, 0.100708359519305974E+06, 0.100669700349442544E+06, + 0.100634134123292621E+06, 0.100602055798299742E+06, 0.100591037034284673E+06, 0.100590664657868474E+06, 0.100599127748830913E+06, + 0.100614596189110918E+06, 0.100634150489947802E+06, 0.100646345748706677E+06, 0.100655865724535965E+06, 0.100661116257080008E+06, + 0.100661028163947834E+06, 0.100655523835145024E+06, 0.100646490601253885E+06, 0.100636711851892294E+06, 0.100621894936014534E+06, + 0.100602810704563395E+06, 0.100576368488764041E+06, 0.100548286166395032E+06, 0.100522977180969814E+06, 0.101228903510937074E+06, + 0.101265781795862422E+06, 0.101303509185958625E+06, 0.101342284425688282E+06, 0.101381796177970391E+06, 0.101421170386188518E+06, + 0.101459636817675681E+06, 0.101496562449942183E+06, 0.101531479594885182E+06, 0.101564960000747014E+06, 0.101594803080993937E+06, + 0.101621355790812595E+06, 0.101644027594565501E+06, 0.101662677874236993E+06, 0.101677441926593165E+06, 0.101688651352830973E+06, + 0.101696785059940390E+06, 0.101702406683447451E+06, 0.101704728868073435E+06, 0.101705248359237783E+06, 0.101710033061244059E+06, + 0.101715986265950589E+06, 0.101723653592966657E+06, 0.101733480291010681E+06, 0.101745772459652580E+06, 0.101760677660607515E+06, + 0.101780220410703594E+06, 0.101803075598452182E+06, 0.101826488604444239E+06, 0.101849820362239523E+06, 0.101873892351949500E+06, + 0.101898378960095564E+06, 0.101923130766489805E+06, 0.101948518897807691E+06, 0.101975696258303404E+06, 0.102004061929304342E+06, + 0.102033460145040677E+06, 0.102061651327409054E+06, 0.102089414327740989E+06, 0.102117077133701037E+06, 0.102147883501053424E+06, + 0.102180718015203005E+06, 0.102212493723892243E+06, 0.102242559046992334E+06, 0.102271049350391899E+06, 0.102300915058795246E+06, + 0.102331227250506359E+06, 0.102361003675242988E+06, 0.102387797529886448E+06, 0.102410738749007287E+06, 0.102429543001075872E+06, + 0.102444601309541205E+06, 0.102455934113666241E+06, 0.102463826248762096E+06, 0.102468461440316110E+06, 0.102469870975073049E+06, + 0.102468446450288320E+06, 0.102464798290121791E+06, 0.102458449322550092E+06, 0.102451735051873286E+06, 0.102444849067868476E+06, + 0.102436636367539046E+06, 0.102428988993985171E+06, 0.102425331914020266E+06, 0.102421620005855337E+06, 0.102419560924305013E+06, + 0.102417115927208128E+06, 0.102411283378863518E+06, 0.102401124644854805E+06, 0.102388294546935547E+06, 0.102372130138911380E+06, + 0.102352872703988251E+06, 0.102330900792506814E+06, 0.102305906692453034E+06, 0.102278836660343848E+06, 0.102251891886031619E+06, + 0.102223352000414103E+06, 0.102193067106830058E+06, 0.102161078903831076E+06, 0.102125912821954276E+06, 0.102089510678556544E+06, + 0.102052507421496150E+06, 0.102015228902546209E+06, 0.101978931284532373E+06, 0.101944546111379605E+06, 0.101912474602996255E+06, + 0.101881505541306557E+06, 0.101847220983536259E+06, 0.101796545763435774E+06, 0.101731194445780915E+06, 0.101655521374345393E+06, + 0.101570254785904996E+06, 0.101481522317187802E+06, 0.101401331116195521E+06, 0.101332141668882890E+06, 0.101273993470810659E+06, + 0.101228638656778901E+06, 0.101190604276845741E+06, 0.101158196197344718E+06, 0.101133936056759660E+06, 0.101117981664703751E+06, + 0.101116933850947476E+06, 0.101131399795691948E+06, 0.101160604644423380E+06, 0.101201518443580746E+06, 0.101248903707713456E+06, + 0.101300592974865489E+06, 0.101357214090897702E+06, 0.101418441744321666E+06, 0.101485557443350626E+06, 0.101555445746166064E+06, + 0.101621303501475879E+06, 0.101679228518906544E+06, 0.101728241686716501E+06, 0.101766854072509333E+06, 0.101798436487011495E+06, + 0.101826906634104991E+06, 0.101847291990324695E+06, 0.101856878275200172E+06, 0.101852227620230362E+06, 0.101834698267214306E+06, + 0.101809239675292964E+06, 0.101781969547875371E+06, 0.101755152512939356E+06, 0.101732931589822008E+06, 0.101712653074247995E+06, + 0.101684830999865546E+06, 0.101647239704296619E+06, 0.101599826041378212E+06, 0.101544653396053778E+06, 0.101483464700333992E+06, + 0.101420696082338764E+06, 0.101361355157000173E+06, 0.101303077019503457E+06, 0.101242949922489031E+06, 0.101180470229611776E+06, + 0.101117365765681796E+06, 0.101054059738264114E+06, 0.100995066688862426E+06, 0.100946512981860345E+06, 0.100908291761953325E+06, + 0.100873905402216697E+06, 0.100835045455127693E+06, 0.100798873170272855E+06, 0.100762695696108858E+06, 0.100726025871425081E+06, + 0.100692734909454986E+06, 0.100668902864702948E+06, 0.100663213502720391E+06, 0.100664621390201341E+06, 0.100671374502519597E+06, + 0.100685680453359950E+06, 0.100705798123986984E+06, 0.100728995575579524E+06, 0.100751658112675097E+06, 0.100762519462763623E+06, + 0.100767027529124854E+06, 0.100764553224004907E+06, 0.100755187738630775E+06, 0.100739605979863540E+06, 0.100720551089520799E+06, + 0.100698313533178705E+06, 0.100666865056198847E+06, 0.100634031483894869E+06, 0.100601785153826728E+06, 0.100571987820731039E+06, + 0.101206374045435979E+06, 0.101245886159229500E+06, 0.101288633787391896E+06, 0.101331822184275137E+06, 0.101374720391458119E+06, + 0.101417383823794662E+06, 0.101458981013573735E+06, 0.101498818874093005E+06, 0.101538685205643225E+06, 0.101575422468180957E+06, + 0.101607594064004836E+06, 0.101634787525358639E+06, 0.101658391829702683E+06, 0.101677992927276675E+06, 0.101693216382147584E+06, + 0.101704372381742840E+06, 0.101711917535928253E+06, 0.101714961207000641E+06, 0.101714465004361307E+06, 0.101712311040969114E+06, + 0.101709673671424040E+06, 0.101711218999391320E+06, 0.101715783535561670E+06, 0.101722657082666818E+06, 0.101732238893442816E+06, + 0.101747062236834958E+06, 0.101766365174287086E+06, 0.101787109475394507E+06, 0.101808925705709073E+06, 0.101831553485340701E+06, + 0.101854101136956699E+06, 0.101876977318564983E+06, 0.101900071328279475E+06, 0.101924414875452247E+06, 0.101951462468272264E+06, + 0.101980975232741199E+06, 0.102012836826491402E+06, 0.102047258491401968E+06, 0.102083474297558190E+06, 0.102117469380506620E+06, + 0.102154658530511195E+06, 0.102192659983700083E+06, 0.102229894335694480E+06, 0.102265384438205918E+06, 0.102298947455958070E+06, + 0.102332733340180333E+06, 0.102366161911789881E+06, 0.102400223366988168E+06, 0.102430989231899657E+06, 0.102457385343324306E+06, + 0.102478953671150099E+06, 0.102497140263958892E+06, 0.102511039792962809E+06, 0.102520299291871444E+06, 0.102526846630820248E+06, + 0.102529945588383314E+06, 0.102529752833756676E+06, 0.102527108906249603E+06, 0.102521410242623388E+06, 0.102513405849115865E+06, + 0.102504764193898140E+06, 0.102498120743343170E+06, 0.102494756241843366E+06, 0.102491412904970945E+06, 0.102487349910826408E+06, + 0.102482003045019752E+06, 0.102474975478072651E+06, 0.102465362858837878E+06, 0.102453624922867719E+06, 0.102439388282147716E+06, + 0.102422313370157048E+06, 0.102401857750208626E+06, 0.102377162061003954E+06, 0.102349188460773526E+06, 0.102318424237125233E+06, + 0.102285363297180986E+06, 0.102252385208010586E+06, 0.102218029776633513E+06, 0.102181810380545387E+06, 0.102143591228429039E+06, + 0.102102341867038209E+06, 0.102057770995654748E+06, 0.102012593759546347E+06, 0.101970748503609808E+06, 0.101933725108693834E+06, + 0.101900789684666524E+06, 0.101867979870800904E+06, 0.101834235978935918E+06, 0.101794954568116285E+06, 0.101739484665823096E+06, + 0.101671789500483821E+06, 0.101593418617286006E+06, 0.101506698290483502E+06, 0.101422237896336897E+06, 0.101350833220772416E+06, + 0.101290575286891341E+06, 0.101248402171152557E+06, 0.101218529092999917E+06, 0.101197447450399108E+06, 0.101187612570890138E+06, + 0.101185871864261528E+06, 0.101196499134288402E+06, 0.101218353571942265E+06, 0.101249194623964548E+06, 0.101286372345386742E+06, + 0.101326464875508391E+06, 0.101369986766969960E+06, 0.101419749853660280E+06, 0.101476722498559480E+06, 0.101542829739890207E+06, + 0.101612522924097197E+06, 0.101678721249810798E+06, 0.101737575823144638E+06, 0.101785395492746917E+06, 0.101823368561408701E+06, + 0.101856014056084430E+06, 0.101884313206989173E+06, 0.101903695929922687E+06, 0.101912969317636380E+06, 0.101908832298462992E+06, + 0.101892237038585794E+06, 0.101866203497664581E+06, 0.101837081196005645E+06, 0.101809606048398258E+06, 0.101786840568731568E+06, + 0.101762564033379982E+06, 0.101734680154915579E+06, 0.101696592635540685E+06, 0.101650662453849189E+06, 0.101599162120752633E+06, + 0.101544343001196743E+06, 0.101488647544765059E+06, 0.101433089123172278E+06, 0.101377125096785036E+06, 0.101320042947392227E+06, + 0.101256674805424394E+06, 0.101187987297748215E+06, 0.101120641997896339E+06, 0.101056247927954246E+06, 0.100996331972370142E+06, + 0.100943232428022544E+06, 0.100895353842840079E+06, 0.100852555312220196E+06, 0.100815337064243067E+06, 0.100783799781542155E+06, + 0.100753868748835012E+06, 0.100736637044447663E+06, 0.100730650096307727E+06, 0.100733232093861763E+06, 0.100743913291446443E+06, + 0.100758835470579754E+06, 0.100778259316407013E+06, 0.100802567061591370E+06, 0.100828283762383522E+06, 0.100855135515023372E+06, + 0.100877691529341333E+06, 0.100882602938691591E+06, 0.100878787688210650E+06, 0.100866582130667157E+06, 0.100846949291204379E+06, + 0.100815418882725819E+06, 0.100780247866813195E+06, 0.100745087245795497E+06, 0.100709396490561645E+06, 0.100675020472311327E+06, + 0.100643622948665085E+06, 0.101179250397845899E+06, 0.101221149498052953E+06, 0.101266816356343159E+06, 0.101315335097978430E+06, + 0.101363838550262313E+06, 0.101410108301517408E+06, 0.101455090720967710E+06, 0.101501448789654576E+06, 0.101545139345543692E+06, + 0.101584741389399278E+06, 0.101619452976458153E+06, 0.101648772604086349E+06, 0.101672509578882498E+06, 0.101691865395895249E+06, + 0.101707555892752804E+06, 0.101718643945821881E+06, 0.101724156365132570E+06, 0.101724941937858879E+06, 0.101722568702130273E+06, + 0.101718069834871334E+06, 0.101712578971246767E+06, 0.101707223787895346E+06, 0.101704839789861668E+06, 0.101708104689497137E+06, + 0.101716865742578157E+06, 0.101731053443752840E+06, 0.101746952161869922E+06, 0.101764257279303914E+06, 0.101782706182959490E+06, + 0.101802123848941148E+06, 0.101822482313672357E+06, 0.101842936616784311E+06, 0.101860934973268697E+06, 0.101882854305976114E+06, + 0.101908552344231415E+06, 0.101937813400383588E+06, 0.101970499454458186E+06, 0.102006741063404974E+06, 0.102048298491096837E+06, + 0.102094559383243701E+06, 0.102138864116678858E+06, 0.102182980858368159E+06, 0.102226517702417070E+06, 0.102268076174545422E+06, + 0.102309052474061144E+06, 0.102352381321886001E+06, 0.102391102131696549E+06, 0.102425199358256839E+06, 0.102458541492672259E+06, + 0.102488862618142084E+06, 0.102514290917361213E+06, 0.102535791702452596E+06, 0.102552503476764061E+06, 0.102564543232835902E+06, + 0.102572720164328770E+06, 0.102578198051091356E+06, 0.102580323990135614E+06, 0.102579265394634727E+06, 0.102574962647335808E+06, + 0.102568059504060235E+06, 0.102560319977754334E+06, 0.102556118504191676E+06, 0.102553057067685237E+06, 0.102550069919232395E+06, + 0.102545676460258372E+06, 0.102538438321503912E+06, 0.102526558414006213E+06, 0.102512331043456594E+06, 0.102498934035030790E+06, + 0.102483367837719314E+06, 0.102465528571415576E+06, 0.102444019300123240E+06, 0.102417539855634386E+06, 0.102386941153851396E+06, + 0.102352803854769852E+06, 0.102315908735629360E+06, 0.102276253891919623E+06, 0.102235698643740441E+06, 0.102193754813942534E+06, + 0.102149197092732255E+06, 0.102100466547888893E+06, 0.102048387340808171E+06, 0.101995636407850165E+06, 0.101944784700201388E+06, + 0.101899202783926419E+06, 0.101857839910913841E+06, 0.101822276933475470E+06, 0.101792037001853430E+06, 0.101761456733915693E+06, + 0.101723124817417673E+06, 0.101667540093368385E+06, 0.101602052196997916E+06, 0.101524286713149719E+06, 0.101443448254745468E+06, + 0.101372151184877337E+06, 0.101312547429677303E+06, 0.101270741733953284E+06, 0.101245862300696550E+06, 0.101237403284129323E+06, + 0.101240955267019526E+06, 0.101253727619962054E+06, 0.101276647528408124E+06, 0.101307289777398546E+06, 0.101342096503173772E+06, + 0.101377440256415284E+06, 0.101410859947128090E+06, 0.101445291144028568E+06, 0.101485896954639960E+06, 0.101536034363702740E+06, + 0.101598275532425832E+06, 0.101665271864468625E+06, 0.101730455163620383E+06, 0.101789053839460757E+06, 0.101836451975671342E+06, + 0.101875114449402914E+06, 0.101909841821580325E+06, 0.101937388731349492E+06, 0.101957316621074744E+06, 0.101965726747313485E+06, + 0.101960066223235612E+06, 0.101941333444338321E+06, 0.101914153314528972E+06, 0.101884034639169928E+06, 0.101858023754631969E+06, + 0.101832589987368483E+06, 0.101805510097226972E+06, 0.101772567651719524E+06, 0.101733410070028302E+06, 0.101687946616198518E+06, + 0.101638303259297347E+06, 0.101588584508090702E+06, 0.101540424262528119E+06, 0.101488738611497931E+06, 0.101435260593399056E+06, + 0.101375735107437940E+06, 0.101312542555417007E+06, 0.101246134029601395E+06, 0.101177277643560679E+06, 0.101109587858444022E+06, + 0.101039831433180021E+06, 0.100972865937903305E+06, 0.100917142934489922E+06, 0.100872742649287640E+06, 0.100836992191858386E+06, + 0.100811317083979215E+06, 0.100803167641532855E+06, 0.100798970012812904E+06, 0.100800172827859802E+06, 0.100809159254650964E+06, + 0.100825090132632613E+06, 0.100846063732092007E+06, 0.100868925096583727E+06, 0.100895209549142979E+06, 0.100924583482422255E+06, + 0.100954767114643226E+06, 0.100982762726865476E+06, 0.101000126944911273E+06, 0.100996312696391295E+06, 0.100980278059754797E+06, + 0.100948675007578538E+06, 0.100912131109198177E+06, 0.100873893055713954E+06, 0.100836895686632663E+06, 0.100800840190763440E+06, + 0.100766824999287084E+06, 0.100736390306808840E+06, 0.101147547908848283E+06, 0.101191548413107710E+06, 0.101239813004555443E+06, + 0.101291456639815791E+06, 0.101345618815623297E+06, 0.101399848017628567E+06, 0.101452120246013321E+06, 0.101502531147260263E+06, + 0.101549713655955595E+06, 0.101592520742368200E+06, 0.101630069264663078E+06, 0.101661769202013544E+06, 0.101687336031179409E+06, + 0.101706783718499020E+06, 0.101720752729463624E+06, 0.101730352171304155E+06, 0.101734303682047248E+06, 0.101733803712048772E+06, + 0.101729673880940856E+06, 0.101722933683541196E+06, 0.101714707079396278E+06, 0.101706119415995257E+06, 0.101698183703231305E+06, + 0.101694443401773460E+06, 0.101701997679200067E+06, 0.101711622212974413E+06, 0.101722702839184887E+06, 0.101735051927557608E+06, + 0.101748506288605597E+06, 0.101762966981866150E+06, 0.101778437616403622E+06, 0.101789127619601830E+06, 0.101803967912821841E+06, + 0.101822592115495441E+06, 0.101845777685417066E+06, 0.101873478314957349E+06, 0.101905482242767845E+06, 0.101942888324591171E+06, + 0.101988404530944768E+06, 0.102038702733784274E+06, 0.102092474242398283E+06, 0.102148032734040069E+06, 0.102199248899464394E+06, + 0.102248915596860126E+06, 0.102302591874664358E+06, 0.102352656965704402E+06, 0.102397731646050539E+06, 0.102437448450124619E+06, + 0.102472449474120032E+06, 0.102503421423363616E+06, 0.102532064367287210E+06, 0.102556777288245488E+06, 0.102576671821794167E+06, + 0.102591572855277176E+06, 0.102602228863800672E+06, 0.102612279279788083E+06, 0.102616851593614643E+06, 0.102617893333235930E+06, + 0.102615765691172550E+06, 0.102610441888248854E+06, 0.102607301386114821E+06, 0.102603993592939412E+06, 0.102600663908017392E+06, + 0.102597488187445881E+06, 0.102592493791941044E+06, 0.102582466666192224E+06, 0.102569826273933562E+06, 0.102554713868615829E+06, + 0.102537648672080177E+06, 0.102521039168448478E+06, 0.102503173475915130E+06, 0.102480635537613605E+06, 0.102452652573625455E+06, + 0.102419350874903001E+06, 0.102382346399272821E+06, 0.102341612134553201E+06, 0.102297029075732309E+06, 0.102248948564059086E+06, + 0.102198720030139870E+06, 0.102145758870677353E+06, 0.102088950595530157E+06, 0.102029051584965782E+06, 0.101967199226732264E+06, + 0.101903210271600808E+06, 0.101842958311824055E+06, 0.101794271532633502E+06, 0.101756533651972539E+06, 0.101727257623922851E+06, + 0.101703822910323244E+06, 0.101679786232533574E+06, 0.101644516695705548E+06, 0.101595106427152612E+06, 0.101536504683202511E+06, + 0.101467865301457467E+06, 0.101405006154835806E+06, 0.101354849767181862E+06, 0.101317686662273423E+06, 0.101296595665381508E+06, + 0.101290414819946876E+06, 0.101298257504082198E+06, 0.101319018351106934E+06, 0.101351193190044753E+06, 0.101389882715506814E+06, + 0.101429774758297252E+06, 0.101465327153650665E+06, 0.101493697248690820E+06, 0.101519475777882981E+06, 0.101549278536429629E+06, + 0.101589674862889879E+06, 0.101644437539602266E+06, 0.101707639653092512E+06, 0.101773446880721283E+06, 0.101832627929812195E+06, + 0.101881326017934320E+06, 0.101922991773475122E+06, 0.101958375717528819E+06, 0.101986274837340650E+06, 0.102005491030983016E+06, + 0.102011686815100737E+06, 0.102002038930530602E+06, 0.101979844500374034E+06, 0.101949713592872038E+06, 0.101919794688969385E+06, + 0.101890097820657014E+06, 0.101860915631872151E+06, 0.101828511020572609E+06, 0.101792400720458652E+06, 0.101751700978283421E+06, + 0.101705424659848417E+06, 0.101656344874022790E+06, 0.101609238060088639E+06, 0.101564980684227325E+06, 0.101522208207649019E+06, + 0.101469412985671690E+06, 0.101412347630207965E+06, 0.101351832558558221E+06, 0.101288709894130297E+06, 0.101222062151738224E+06, + 0.101149874038784459E+06, 0.101078002130177440E+06, 0.101009088984990114E+06, 0.100945974661293003E+06, 0.100898762938745946E+06, + 0.100870562536964586E+06, 0.100856855516523385E+06, 0.100855450035140704E+06, 0.100864081929396765E+06, 0.100872263570757554E+06, + 0.100886283473303847E+06, 0.100905686340654982E+06, 0.100926632293872623E+06, 0.100951268783756459E+06, 0.100980364613721176E+06, + 0.101012594678026580E+06, 0.101045448177269616E+06, 0.101076054483113505E+06, 0.101101140326098612E+06, 0.101100763828566429E+06, + 0.101077946327603815E+06, 0.101047158711316821E+06, 0.101011715736067359E+06, 0.100974871631289832E+06, 0.100939265943285602E+06, + 0.100905758734950185E+06, 0.100874978764764266E+06, 0.100855175471442562E+06, 0.101111520792912168E+06, 0.101157325849907211E+06, + 0.101207855335016298E+06, 0.101262234561872421E+06, 0.101320453238625094E+06, 0.101383611932041124E+06, 0.101446021580746979E+06, + 0.101500639373333164E+06, 0.101551782605323038E+06, 0.101598222486408573E+06, 0.101638989420395039E+06, 0.101673403579343765E+06, + 0.101701089807805052E+06, 0.101721974472240297E+06, 0.101735419880771398E+06, 0.101741369945130849E+06, 0.101743897808629612E+06, + 0.101742267006478505E+06, 0.101736494037811004E+06, 0.101727612235604785E+06, 0.101716766590943007E+06, 0.101705114503249541E+06, + 0.101695691907190470E+06, 0.101691082917827283E+06, 0.101688492565094857E+06, 0.101689693834759819E+06, 0.101694319117847946E+06, + 0.101699984888099891E+06, 0.101706624023230441E+06, 0.101714209290037295E+06, 0.101714886189053461E+06, 0.101718477607258348E+06, + 0.101727166805334680E+06, 0.101741942812281210E+06, 0.101762884060961267E+06, 0.101787922016469936E+06, 0.101818124304470504E+06, + 0.101856144652932824E+06, 0.101902274632393572E+06, 0.101955219215111909E+06, 0.102013545239481187E+06, 0.102075989637765349E+06, + 0.102141825734524129E+06, 0.102209412008951840E+06, 0.102271101455590702E+06, 0.102328905451065119E+06, 0.102380997966748007E+06, + 0.102426592472327698E+06, 0.102466679017069036E+06, 0.102502492265674373E+06, 0.102531828163015132E+06, 0.102557693337524877E+06, + 0.102581562159738140E+06, 0.102599817594232780E+06, 0.102617360456048831E+06, 0.102630533755776734E+06, 0.102638413398652745E+06, + 0.102641585059017671E+06, 0.102641643207641609E+06, 0.102639909103140890E+06, 0.102637870663539637E+06, 0.102635390209430159E+06, + 0.102632452553768846E+06, 0.102629055188468876E+06, 0.102622883797323870E+06, 0.102613396703866238E+06, 0.102601167982128070E+06, + 0.102586228500797864E+06, 0.102570641502416736E+06, 0.102554342163336842E+06, 0.102534088219572732E+06, 0.102511041429401579E+06, + 0.102481963706129696E+06, 0.102447121630716501E+06, 0.102407091340582192E+06, 0.102362401740888643E+06, 0.102313427305605088E+06, + 0.102259555941640690E+06, 0.102201038299707958E+06, 0.102138783904224241E+06, 0.102073015852343407E+06, 0.102003417942998523E+06, + 0.101925865118624715E+06, 0.101850155355117560E+06, 0.101780650482480312E+06, 0.101721528392427077E+06, 0.101678592950691062E+06, + 0.101649600593305571E+06, 0.101630406458717945E+06, 0.101617445713840047E+06, 0.101603733747246617E+06, 0.101577149951594518E+06, + 0.101547743780961551E+06, 0.101507738128132827E+06, 0.101462001737325336E+06, 0.101417253659172507E+06, 0.101379673252643261E+06, + 0.101354722198341828E+06, 0.101344083982961922E+06, 0.101350090319994677E+06, 0.101372932240478462E+06, 0.101408874721438551E+06, + 0.101453217513073498E+06, 0.101497802352511892E+06, 0.101536224569247846E+06, 0.101563019361021943E+06, 0.101582620293203203E+06, + 0.101603379870639314E+06, 0.101634664417891821E+06, 0.101681132562699248E+06, 0.101739502773358443E+06, 0.101803164120008223E+06, + 0.101863683127456912E+06, 0.101917393438978630E+06, 0.101963558171047160E+06, 0.101999276960053059E+06, 0.102027732037148526E+06, + 0.102044731025719229E+06, 0.102045431775095058E+06, 0.102030705033808161E+06, 0.102003666856825570E+06, 0.101970343646836016E+06, + 0.101935360181740762E+06, 0.101900669036632447E+06, 0.101865688643875081E+06, 0.101829409780582253E+06, 0.101790176042387873E+06, + 0.101745151599830831E+06, 0.101696472660873420E+06, 0.101648060959889524E+06, 0.101603410369994090E+06, 0.101561835852602439E+06, + 0.101521855998799132E+06, 0.101482037163334768E+06, 0.101431340410975914E+06, 0.101375699870779092E+06, 0.101314779976223654E+06, + 0.101251712502201844E+06, 0.101185784883436660E+06, 0.101116517257030340E+06, 0.101049883113580014E+06, 0.100989563385332454E+06, + 0.100941765093850961E+06, 0.100916306862933794E+06, 0.100906980056579865E+06, 0.100910197269982164E+06, 0.100922958161069488E+06, + 0.100941314458770998E+06, 0.100957519326146881E+06, 0.100976831072572779E+06, 0.100999605735160003E+06, 0.101025582535843947E+06, + 0.101054164787686663E+06, 0.101087890451072817E+06, 0.101122283479534453E+06, 0.101149350938674921E+06, 0.101166873408313593E+06, + 0.101177821152178367E+06, 0.101167655432610394E+06, 0.101141220410113790E+06, 0.101110321588459745E+06, 0.101078361586283063E+06, + 0.101047967121170557E+06, 0.101023734539325480E+06, 0.101008383694813747E+06, 0.100996781521485842E+06, 0.101071681166949435E+06, + 0.101119012263039112E+06, 0.101171496350808069E+06, 0.101230050130927513E+06, 0.101294972556584413E+06, 0.101361718999132645E+06, + 0.101428515451916319E+06, 0.101493595145979649E+06, 0.101550612440880213E+06, 0.101601210858501552E+06, 0.101645666556374214E+06, + 0.101683206121268653E+06, 0.101713363718937704E+06, 0.101736031118329251E+06, 0.101750515944612693E+06, 0.101757053628392736E+06, + 0.101756382807271759E+06, 0.101751079781741602E+06, 0.101743715819909994E+06, 0.101732729519215369E+06, 0.101719316686245147E+06, + 0.101706213959027606E+06, 0.101695984176562313E+06, 0.101686190677071994E+06, 0.101677301261342131E+06, 0.101669511529871947E+06, + 0.101662644903393695E+06, 0.101659294762388396E+06, 0.101657066043437371E+06, 0.101647001805639928E+06, 0.101637372304767356E+06, + 0.101632049251178221E+06, 0.101632583495971994E+06, 0.101640198281276986E+06, 0.101655810259860154E+06, 0.101680028481804649E+06, + 0.101706638821039131E+06, 0.101742286180341995E+06, 0.101788109417502055E+06, 0.101842726554478882E+06, 0.101904504042995715E+06, + 0.101971839066862056E+06, 0.102051325178151485E+06, 0.102132183694597014E+06, 0.102209672996832567E+06, 0.102278148214885616E+06, + 0.102338448224708001E+06, 0.102390873033725249E+06, 0.102438626144456910E+06, 0.102479259552033545E+06, 0.102513206393975473E+06, + 0.102541824188105747E+06, 0.102567198188429233E+06, 0.102591367917437441E+06, 0.102612619776373147E+06, 0.102629292784196412E+06, + 0.102640555112501301E+06, 0.102646561280503796E+06, 0.102650072544106879E+06, 0.102650385076837265E+06, 0.102648623310889074E+06, + 0.102647398290377925E+06, 0.102645017994891765E+06, 0.102642292476577204E+06, 0.102637067835034904E+06, 0.102629000591322547E+06, + 0.102618729003435990E+06, 0.102606585296063713E+06, 0.102594489398555161E+06, 0.102579129366844747E+06, 0.102559288929741029E+06, + 0.102534463674515951E+06, 0.102503683064059122E+06, 0.102467677027648388E+06, 0.102425952698371388E+06, 0.102378489696413220E+06, + 0.102325464394964612E+06, 0.102266592853272959E+06, 0.102201770963158517E+06, 0.102131402230157837E+06, 0.102054746212255937E+06, + 0.101968929014764348E+06, 0.101881350922099227E+06, 0.101796528814235106E+06, 0.101718540575217223E+06, 0.101652169308423996E+06, + 0.101599956132104824E+06, 0.101567900805891448E+06, 0.101551935071902582E+06, 0.101547427861477787E+06, 0.101554419426909473E+06, + 0.101561600978615184E+06, 0.101559452993868224E+06, 0.101543318540946057E+06, 0.101516046490907509E+06, 0.101480708475794294E+06, + 0.101442199752635075E+06, 0.101409794893836297E+06, 0.101389114738180739E+06, 0.101385262237127725E+06, 0.101400028248419621E+06, + 0.101431176088229637E+06, 0.101474781214988048E+06, 0.101522572921117302E+06, 0.101566852249736243E+06, 0.101600450643120159E+06, + 0.101625889986676848E+06, 0.101647907487096571E+06, 0.101675661997654053E+06, 0.101714463575179296E+06, 0.101767306549608373E+06, + 0.101829328954263532E+06, 0.101890507206039634E+06, 0.101946066216170686E+06, 0.101992520848846892E+06, 0.102030925636120199E+06, + 0.102058119932572736E+06, 0.102069397218130180E+06, 0.102063960577488731E+06, 0.102043326123970241E+06, 0.102008553848255615E+06, + 0.101967472871147096E+06, 0.101926394136031289E+06, 0.101886043970172454E+06, 0.101846744426466306E+06, 0.101807275512743188E+06, + 0.101761955344090966E+06, 0.101713799217710359E+06, 0.101665117193273894E+06, 0.101617359026062331E+06, 0.101572592180247302E+06, + 0.101533981842693742E+06, 0.101499194744985522E+06, 0.101466415578573593E+06, 0.101432243614177438E+06, 0.101381882914991351E+06, + 0.101327735566313961E+06, 0.101272085428944469E+06, 0.101216117169049772E+06, 0.101156916040190554E+06, 0.101098197832462072E+06, + 0.101045083251186894E+06, 0.101001341900752319E+06, 0.100969631972021365E+06, 0.100962352822747649E+06, 0.100968513387743296E+06, + 0.100983909597780104E+06, 0.101002878032770619E+06, 0.101021997578890048E+06, 0.101041366902723443E+06, 0.101063829282811043E+06, + 0.101089246526039147E+06, 0.101117245287077734E+06, 0.101145180487582722E+06, 0.101169961535366980E+06, 0.101193870243324593E+06, + 0.101214945572481010E+06, 0.101231265902229890E+06, 0.101240946166576672E+06, 0.101226758959788902E+06, 0.101203801319224774E+06, + 0.101180554692105070E+06, 0.101163284364848339E+06, 0.101153028319845049E+06, 0.101150355172476586E+06, 0.101145580058182692E+06, + 0.101028800627874574E+06, 0.101077428684324259E+06, 0.101134167142638209E+06, 0.101197990565301836E+06, 0.101265722975280849E+06, + 0.101335709112544850E+06, 0.101406209334330430E+06, 0.101475487925550115E+06, 0.101541907493692343E+06, 0.101600856889744842E+06, + 0.101649573257523298E+06, 0.101690733358275495E+06, 0.101724376638615926E+06, 0.101749510141425519E+06, 0.101765791117457280E+06, + 0.101773452578481490E+06, 0.101773114885158633E+06, 0.101765715127990101E+06, 0.101752413867995332E+06, 0.101738692514285227E+06, + 0.101723904619569148E+06, 0.101710227930270819E+06, 0.101695310346281782E+06, 0.101679758838352922E+06, 0.101664029621015856E+06, + 0.101648327607929226E+06, 0.101632507008869143E+06, 0.101615973949263309E+06, 0.101591834033789346E+06, 0.101568495570761865E+06, + 0.101547691859404833E+06, 0.101531530936334253E+06, 0.101521827887484746E+06, 0.101520050854732108E+06, 0.101527313513054993E+06, + 0.101537145982894304E+06, 0.101560590862112396E+06, 0.101599562166824646E+06, 0.101645766826557534E+06, 0.101701752618078797E+06, + 0.101766692067664408E+06, 0.101846710834492522E+06, 0.101935405126349360E+06, 0.102024396175872622E+06, 0.102110867349092339E+06, + 0.102192853218211705E+06, 0.102269413494696259E+06, 0.102330281542130935E+06, 0.102383945506085889E+06, 0.102430199256480380E+06, + 0.102469066393364890E+06, 0.102501583023640342E+06, 0.102532817139689723E+06, 0.102561960069998779E+06, 0.102585754372647149E+06, + 0.102606277240311640E+06, 0.102621561801826407E+06, 0.102631876834385388E+06, 0.102638884194148588E+06, 0.102641934388380745E+06, + 0.102641959420915780E+06, 0.102640521654950935E+06, 0.102639686428696965E+06, 0.102638253506522131E+06, 0.102634465365988304E+06, + 0.102627915114268661E+06, 0.102619787557100746E+06, 0.102613378349844119E+06, 0.102603999870031650E+06, 0.102590631585167415E+06, + 0.102572103225089755E+06, 0.102547313635873026E+06, 0.102516398885249058E+06, 0.102479446900462790E+06, 0.102437237325361522E+06, + 0.102388874413479600E+06, 0.102333718028784861E+06, 0.102271049401030890E+06, 0.102201028861754414E+06, 0.102122663528859397E+06, + 0.102032876851637207E+06, 0.101938463410692304E+06, 0.101842660210214104E+06, 0.101749957344606999E+06, 0.101664764507437576E+06, + 0.101591439187819764E+06, 0.101533919460466379E+06, 0.101494271575071776E+06, 0.101478987993255127E+06, 0.101485263674090980E+06, + 0.101506279443945081E+06, 0.101532941096559764E+06, 0.101553896677561657E+06, 0.101563917085832989E+06, 0.101552692436306723E+06, + 0.101526766068070108E+06, 0.101490572300548680E+06, 0.101454740971174542E+06, 0.101425776324883132E+06, 0.101411062568111098E+06, + 0.101413866812942622E+06, 0.101435131474614493E+06, 0.101474051380900128E+06, 0.101522941427092213E+06, 0.101574152032058948E+06, + 0.101618098831177398E+06, 0.101654170137284003E+06, 0.101684054984246599E+06, 0.101716539075889523E+06, 0.101756604551361495E+06, + 0.101806467761705877E+06, 0.101862424100462653E+06, 0.101918408568819126E+06, 0.101971439624029648E+06, 0.102015800714595636E+06, + 0.102049385208646127E+06, 0.102069908714661666E+06, 0.102076032068515779E+06, 0.102064732659179368E+06, 0.102034093795762514E+06, + 0.101992630086863239E+06, 0.101944780810628261E+06, 0.101894141477159937E+06, 0.101849042057571452E+06, 0.101805808680122878E+06, + 0.101760916109816302E+06, 0.101714291793644923E+06, 0.101666393705850103E+06, 0.101619297696421156E+06, 0.101573598742667251E+06, + 0.101529420471224686E+06, 0.101490381423561645E+06, 0.101460489541744115E+06, 0.101432531917615197E+06, 0.101405679166028422E+06, + 0.101376758400729959E+06, 0.101333014356477448E+06, 0.101288061869102195E+06, 0.101243137897010267E+06, 0.101200014773099698E+06, + 0.101153035601030700E+06, 0.101107255027280131E+06, 0.101068975039667697E+06, 0.101040318598185462E+06, 0.101026239021205620E+06, + 0.101036150724925217E+06, 0.101050786638747362E+06, 0.101066960176317720E+06, 0.101082545023658342E+06, 0.101098187778212945E+06, + 0.101117678130985703E+06, 0.101139021760228803E+06, 0.101155522461091532E+06, 0.101175020122667425E+06, 0.101198265495543150E+06, + 0.101224832562545693E+06, 0.101250329820757150E+06, 0.101272684085133165E+06, 0.101289811161881575E+06, 0.101299701614067628E+06, + 0.101289739336630024E+06, 0.101279678002747503E+06, 0.101273826681569160E+06, 0.101274570526567550E+06, 0.101282465694758634E+06, + 0.101293902962443753E+06, 0.100983835656151976E+06, 0.101036388934372706E+06, 0.101096497142358145E+06, 0.101162397946509547E+06, + 0.101232608232112354E+06, 0.101305480982330599E+06, 0.101379283841868455E+06, 0.101452283197187178E+06, 0.101522834159475562E+06, + 0.101589476875808105E+06, 0.101650386759155634E+06, 0.101696210127681858E+06, 0.101733613430271813E+06, 0.101761832290367092E+06, + 0.101780569821559126E+06, 0.101789961901369534E+06, 0.101790532679209500E+06, 0.101783131653860866E+06, 0.101768849808582265E+06, + 0.101750041068809616E+06, 0.101731803246356489E+06, 0.101713921895166000E+06, 0.101693731889764837E+06, 0.101671835744684708E+06, + 0.101648705771986570E+06, 0.101624585079514640E+06, 0.101599389025969096E+06, 0.101563768387053642E+06, 0.101522704766848532E+06, + 0.101483489785699712E+06, 0.101448687013231232E+06, 0.101419615240213854E+06, 0.101397479525329196E+06, 0.101384028029676760E+06, + 0.101370836998047147E+06, 0.101368370266732833E+06, 0.101383065641375812E+06, 0.101416090998647196E+06, 0.101467290265164353E+06, + 0.101534882313080263E+06, 0.101609445319890510E+06, 0.101699733235880441E+06, 0.101794859855521834E+06, 0.101891101060966321E+06, + 0.101985315130313480E+06, 0.102075076914327306E+06, 0.102159945052938041E+06, 0.102235771297951098E+06, 0.102301477656430769E+06, + 0.102354930558367778E+06, 0.102399782724316072E+06, 0.102438694369211255E+06, 0.102476839111309280E+06, 0.102509751156878236E+06, + 0.102537521783681077E+06, 0.102560895469354815E+06, 0.102580819063130271E+06, 0.102594854584419911E+06, 0.102605160074562926E+06, + 0.102611577337313051E+06, 0.102614486702620023E+06, 0.102617674490494959E+06, 0.102619973525111447E+06, 0.102618324460179618E+06, + 0.102615416266488261E+06, 0.102610851205396946E+06, 0.102607299216665502E+06, 0.102602572628475973E+06, 0.102595515104050908E+06, + 0.102585432283621078E+06, 0.102569550312714797E+06, 0.102546496599273247E+06, 0.102517612581426918E+06, 0.102482362007529839E+06, + 0.102441544642516921E+06, 0.102393921375066857E+06, 0.102338338767732290E+06, 0.102273827698305467E+06, 0.102199580759235032E+06, + 0.102112717239415593E+06, 0.102017541011033652E+06, 0.101917267901995700E+06, 0.101815758981969469E+06, 0.101717854365049221E+06, + 0.101627270343615834E+06, 0.101547308817353100E+06, 0.101483765146806487E+06, 0.101441943712900873E+06, 0.101423999856314156E+06, + 0.101430776328316933E+06, 0.101457783973006139E+06, 0.101497023306538365E+06, 0.101538146597104598E+06, 0.101564980031804182E+06, + 0.101571345079031700E+06, 0.101556555710264554E+06, 0.101527227279379993E+06, 0.101491242458124063E+06, 0.101455431195561541E+06, + 0.101427222639413303E+06, 0.101413952789479707E+06, 0.101420016873493543E+06, 0.101448672726717166E+06, 0.101494479796940665E+06, + 0.101550679225448213E+06, 0.101607025893701604E+06, 0.101659304835337243E+06, 0.101705889950175377E+06, 0.101749787609497245E+06, + 0.101793551387452957E+06, 0.101844793551510127E+06, 0.101899113907290477E+06, 0.101951953582127840E+06, 0.101997167012573933E+06, + 0.102030191525044342E+06, 0.102053787395966574E+06, 0.102064887574337728E+06, 0.102060267944376203E+06, 0.102039749700523636E+06, + 0.102005081906476669E+06, 0.101957654047840246E+06, 0.101904801258523614E+06, 0.101850843726662788E+06, 0.101798946363995929E+06, + 0.101751878064897523E+06, 0.101705939443378287E+06, 0.101659768391705205E+06, 0.101615380159911743E+06, 0.101570783461705709E+06, + 0.101526947551755860E+06, 0.101484787939652975E+06, 0.101445231219594032E+06, 0.101413345817087800E+06, 0.101391047300393111E+06, + 0.101372584877227360E+06, 0.101355566853485740E+06, 0.101335220992961375E+06, 0.101303837716816255E+06, 0.101271525370591757E+06, + 0.101240298133351855E+06, 0.101211003024413338E+06, 0.101175839364889063E+06, 0.101146665774628709E+06, 0.101127801050420749E+06, + 0.101116214564623544E+06, 0.101115217567181709E+06, 0.101124992952320288E+06, 0.101134962605509543E+06, 0.101143290627816998E+06, + 0.101149282865567409E+06, 0.101151001731697805E+06, 0.101160080279956310E+06, 0.101174468885292459E+06, 0.101194158852267166E+06, + 0.101218629627263130E+06, 0.101247610934086246E+06, 0.101278139638903813E+06, 0.101306993640526780E+06, 0.101332857422239162E+06, + 0.101352835922766695E+06, 0.101364854062282961E+06, 0.101366215681609348E+06, 0.101371982657827277E+06, 0.101384204628605657E+06, + 0.101403123567578412E+06, 0.101427293507956012E+06, 0.100939699761507189E+06, 0.100993926545564740E+06, 0.101055617446205957E+06, + 0.101123302505147047E+06, 0.101195700951661318E+06, 0.101271150132425566E+06, 0.101347899405442047E+06, 0.101424189839355866E+06, + 0.101498339603613043E+06, 0.101568835452811982E+06, 0.101636401101424097E+06, 0.101695457584751377E+06, 0.101740082571501800E+06, + 0.101772165987128828E+06, 0.101794061760174460E+06, 0.101805821721959510E+06, 0.101807890769523758E+06, 0.101801052084176001E+06, + 0.101787222143099047E+06, 0.101769333451322513E+06, 0.101746134751190912E+06, 0.101718716143227328E+06, 0.101691356809011646E+06, + 0.101662464249923956E+06, 0.101631298348493656E+06, 0.101598170677190283E+06, 0.101554964683279206E+06, 0.101502331999436428E+06, + 0.101449056042133889E+06, 0.101396847279871756E+06, 0.101347056172201555E+06, 0.101300460882216124E+06, 0.101262584703042259E+06, + 0.101225780265849375E+06, 0.101194459775717551E+06, 0.101179417053502169E+06, 0.101183702376592380E+06, 0.101209076499852017E+06, + 0.101255909037280071E+06, 0.101326640203920455E+06, 0.101424239758254218E+06, 0.101531367651623077E+06, 0.101632910073723979E+06, + 0.101736158570445637E+06, 0.101837656744184424E+06, 0.101936360666710083E+06, 0.102029774479476604E+06, 0.102113550935132720E+06, + 0.102187275245992423E+06, 0.102251742085495353E+06, 0.102308744854441014E+06, 0.102354056548559587E+06, 0.102395496326958368E+06, + 0.102432085609497080E+06, 0.102463450245845990E+06, 0.102489865598489851E+06, 0.102514853262571502E+06, 0.102534082770129738E+06, + 0.102548592777604266E+06, 0.102559883810599669E+06, 0.102568794081739034E+06, 0.102579021392062437E+06, 0.102585007107402751E+06, + 0.102586497457448539E+06, 0.102584376842419224E+06, 0.102580903181294503E+06, 0.102577151681759657E+06, 0.102573827515381417E+06, + 0.102568538059750121E+06, 0.102560561364228692E+06, 0.102548460310359820E+06, 0.102530289426340809E+06, 0.102505861568008157E+06, + 0.102475498063954670E+06, 0.102440643792700503E+06, 0.102396241614374099E+06, 0.102341446243588929E+06, 0.102276649353635905E+06, + 0.102199862029058393E+06, 0.102111863644497949E+06, 0.102014314786398143E+06, 0.101910607455440113E+06, 0.101806306816961252E+06, + 0.101704399917697054E+06, 0.101609603981306922E+06, 0.101526211311625375E+06, 0.101459322473350869E+06, 0.101412795838567283E+06, + 0.101389618525710335E+06, 0.101393845554395113E+06, 0.101424357742906359E+06, 0.101472713797786171E+06, 0.101522607587252613E+06, + 0.101559998357663775E+06, 0.101576743781235520E+06, 0.101573310646049868E+06, 0.101549833954751783E+06, 0.101514456685338067E+06, + 0.101472694191529066E+06, 0.101434208011361596E+06, 0.101406914911600485E+06, 0.101398454904380153E+06, 0.101415253675564527E+06, + 0.101455136695375608E+06, 0.101512719547979839E+06, 0.101577237869349250E+06, 0.101641152022720256E+06, 0.101700396834169049E+06, + 0.101757567947174000E+06, 0.101815111575731135E+06, 0.101874014294397304E+06, 0.101930155420364375E+06, 0.101979578233631371E+06, + 0.102017827567168875E+06, 0.102041453032023797E+06, 0.102049181677356071E+06, 0.102042624564991027E+06, 0.102027458526470917E+06, + 0.101998856271186160E+06, 0.101958763385915998E+06, 0.101909825004560786E+06, 0.101855834630693556E+06, 0.101803471305377156E+06, + 0.101751840395667561E+06, 0.101701669671223848E+06, 0.101657371568089962E+06, 0.101614737302306821E+06, 0.101571808841198203E+06, + 0.101529035182503387E+06, 0.101487836291383923E+06, 0.101448187429775586E+06, 0.101410201287687276E+06, 0.101375725543945955E+06, + 0.101354091334976038E+06, 0.101343701275904139E+06, 0.101337958790157587E+06, 0.101334014323027164E+06, 0.101323058410853802E+06, + 0.101303680281432564E+06, 0.101285071086934273E+06, 0.101269046902558985E+06, 0.101256912292666253E+06, 0.101239485050412128E+06, + 0.101225094542196108E+06, 0.101214114558167246E+06, 0.101206300766355242E+06, 0.101205366180458252E+06, 0.101205376802251209E+06, + 0.101196436467417006E+06, 0.101184014918681118E+06, 0.101170971956995039E+06, 0.101173896703063627E+06, 0.101186778426832985E+06, + 0.101207425966799259E+06, 0.101235075391491133E+06, 0.101268299800364039E+06, 0.101308063493844020E+06, 0.101344788336284473E+06, + 0.101376389450400151E+06, 0.101402378295128001E+06, 0.101423140134659829E+06, 0.101438782026730638E+06, 0.101455746728587110E+06, + 0.101479368387625509E+06, 0.101509546030359561E+06, 0.101546739387306210E+06, 0.100893625093361974E+06, 0.100948455392464501E+06, + 0.101011317645263582E+06, 0.101080913011082172E+06, 0.101155302174425058E+06, 0.101233112731396410E+06, 0.101312551980581891E+06, + 0.101391810121618284E+06, 0.101469643740293817E+06, 0.101547894952444782E+06, 0.101619713078854009E+06, 0.101683304064554628E+06, + 0.101737232999154556E+06, 0.101779617777438179E+06, 0.101805388291197829E+06, 0.101820150398714570E+06, 0.101824280737551730E+06, + 0.101819067925622789E+06, 0.101806980910888844E+06, 0.101787436214918198E+06, 0.101761287349566453E+06, 0.101729423465328233E+06, + 0.101692622608612961E+06, 0.101651573936670728E+06, 0.101611590783753491E+06, 0.101562833006838278E+06, 0.101502364394767414E+06, + 0.101438724936641054E+06, 0.101373805958635741E+06, 0.101309369954324357E+06, 0.101246873385268977E+06, 0.101187267453513661E+06, + 0.101122914968029043E+06, 0.101055428119650373E+06, 0.101008249772026029E+06, 0.100979473982631680E+06, 0.100972177967227311E+06, + 0.100988832853860484E+06, 0.101031262783445170E+06, 0.101112202656024601E+06, 0.101211093846252057E+06, 0.101323155130905317E+06, + 0.101443212391304434E+06, 0.101565274984548159E+06, 0.101675064133449094E+06, 0.101783046764746541E+06, 0.101883427362778093E+06, + 0.101974048605326316E+06, 0.102054089915572622E+06, 0.102123916001737191E+06, 0.102185138506351650E+06, 0.102239277647944138E+06, + 0.102288043635062262E+06, 0.102329848961112002E+06, 0.102365570526105090E+06, 0.102398175565311816E+06, 0.102427118018994763E+06, + 0.102451215888181687E+06, 0.102470889959435211E+06, 0.102487322259304128E+06, 0.102507363262553656E+06, 0.102522539511451090E+06, + 0.102533202617323841E+06, 0.102538447738773189E+06, 0.102539366679125000E+06, 0.102537806325041631E+06, 0.102534134338413278E+06, + 0.102529616480806799E+06, 0.102525504718401397E+06, 0.102520340764588414E+06, 0.102512361946182253E+06, 0.102499685852779818E+06, + 0.102481370178637997E+06, 0.102461804458447645E+06, 0.102433116211535496E+06, 0.102394820498302695E+06, 0.102344806742965229E+06, + 0.102282869771580241E+06, 0.102208190347609911E+06, 0.102122230232017173E+06, 0.102026360478078772E+06, 0.101922376088166435E+06, + 0.101815964790077211E+06, 0.101712553837059808E+06, 0.101615912730210781E+06, 0.101531538428717235E+06, 0.101462015329520931E+06, + 0.101411095529211190E+06, 0.101383553801811446E+06, 0.101387868686696354E+06, 0.101419065450411930E+06, 0.101465197763774107E+06, + 0.101514122624701689E+06, 0.101554157750064871E+06, 0.101577510533460605E+06, 0.101578561408166206E+06, 0.101561717136454608E+06, + 0.101527942832344896E+06, 0.101485492708933743E+06, 0.101442040681691869E+06, 0.101407214730937660E+06, 0.101391475969427891E+06, + 0.101402057936737707E+06, 0.101438129992839313E+06, 0.101494675186752138E+06, 0.101561405991801003E+06, 0.101631832958464947E+06, + 0.101700764128050694E+06, 0.101765471244284083E+06, 0.101829298739144535E+06, 0.101891487805957440E+06, 0.101949649930012936E+06, + 0.101996983260441179E+06, 0.102028825999188412E+06, 0.102041977726062381E+06, 0.102037063043873364E+06, 0.102018484271153007E+06, + 0.101987519813082123E+06, 0.101953322744109144E+06, 0.101911210582393775E+06, 0.101863879485885569E+06, 0.101813868935175255E+06, + 0.101763558865488987E+06, 0.101714781421884982E+06, 0.101669784944327868E+06, 0.101626116114336663E+06, 0.101583855166139518E+06, + 0.101542346971029430E+06, 0.101502633877275308E+06, 0.101464939559164166E+06, 0.101426766367174598E+06, 0.101390458857219390E+06, + 0.101358471458522574E+06, 0.101334112694217969E+06, 0.101328407691393310E+06, 0.101330874497622441E+06, 0.101337110359200757E+06, + 0.101343736678259927E+06, 0.101343244142495707E+06, 0.101341300900043818E+06, 0.101339844172589394E+06, 0.101338724330486657E+06, + 0.101333664918719776E+06, 0.101322891249048946E+06, 0.101311826452015521E+06, 0.101299221594776434E+06, 0.101282571152943405E+06, + 0.101266530780531204E+06, 0.101246643011162712E+06, 0.101224150063358495E+06, 0.101202571591745436E+06, 0.101188612840670292E+06, + 0.101199966484071061E+06, 0.101222097051704724E+06, 0.101260233588647054E+06, 0.101304129252313578E+06, 0.101350161554908336E+06, + 0.101389652624068185E+06, 0.101424551417429771E+06, 0.101454274075586436E+06, 0.101479148917351384E+06, 0.101500388782067501E+06, + 0.101525545796928971E+06, 0.101562513561929518E+06, 0.101606090475506091E+06, 0.101653619386718725E+06, 0.100845507039246062E+06, + 0.100900566753226827E+06, 0.100964147998307293E+06, 0.101035004760987780E+06, 0.101111734714359307E+06, 0.101192123809297234E+06, + 0.101274156352906692E+06, 0.101357605885697238E+06, 0.101443671119726976E+06, 0.101525544557033369E+06, 0.101601182677887831E+06, + 0.101668789681363778E+06, 0.101726898348598319E+06, 0.101774441929614739E+06, 0.101810815552412794E+06, 0.101832035149566495E+06, + 0.101838765440822797E+06, 0.101835596101807649E+06, 0.101823419644672496E+06, 0.101802715728713345E+06, 0.101774151142095492E+06, + 0.101738457612419079E+06, 0.101696295926065533E+06, 0.101648104911459959E+06, 0.101590285842002006E+06, 0.101521209919707282E+06, + 0.101450839575846665E+06, 0.101376697188940336E+06, 0.101300744148618498E+06, 0.101224863840720194E+06, 0.101150697403150189E+06, + 0.101073301607053800E+06, 0.100983235760375988E+06, 0.100901684378507489E+06, 0.100833101972986929E+06, 0.100781373167571786E+06, + 0.100760772506158712E+06, 0.100768040826660945E+06, 0.100819963855216105E+06, 0.100898361962391151E+06, 0.100996401252706506E+06, + 0.101109805590524003E+06, 0.101233684034863138E+06, 0.101362757333502159E+06, 0.101494642793831357E+06, 0.101619684005633680E+06, + 0.101728129058541483E+06, 0.101825059560781054E+06, 0.101910320070122136E+06, 0.101982389350624275E+06, 0.102044412115271698E+06, + 0.102100145695870931E+06, 0.102151182120026933E+06, 0.102199014246850449E+06, 0.102244844616859526E+06, 0.102284509458517772E+06, + 0.102318215421307876E+06, 0.102347902960885476E+06, 0.102373421335254781E+06, 0.102401951332123936E+06, 0.102429181477717284E+06, + 0.102450532016644735E+06, 0.102465997336774948E+06, 0.102475777963121422E+06, 0.102478313815590023E+06, 0.102478110250759957E+06, + 0.102475657036715347E+06, 0.102471918321198871E+06, 0.102469939192222024E+06, 0.102467007436977176E+06, 0.102462490014742158E+06, + 0.102456722431479779E+06, 0.102450737615132341E+06, 0.102440335034919917E+06, 0.102420575011656954E+06, 0.102389812989896382E+06, + 0.102347122683242473E+06, 0.102292275082950306E+06, 0.102224438636867562E+06, 0.102143836217952965E+06, 0.102050866494433591E+06, + 0.101949943411085245E+06, 0.101845736377779569E+06, 0.101742816153747364E+06, 0.101647911129982123E+06, 0.101563216996056130E+06, + 0.101491604823778136E+06, 0.101437861556007003E+06, 0.101412287502927546E+06, 0.101412856551671823E+06, 0.101435247443498505E+06, + 0.101472966599928535E+06, 0.101514519271643498E+06, 0.101550307716508367E+06, 0.101572773831424129E+06, 0.101577300876503461E+06, + 0.101561783761491213E+06, 0.101528832671536744E+06, 0.101487621468217170E+06, 0.101449333621855301E+06, 0.101421572690143163E+06, + 0.101412849368901254E+06, 0.101428815273143569E+06, 0.101468452704213269E+06, 0.101526342258825374E+06, 0.101593070240422909E+06, + 0.101660293633886846E+06, 0.101724359259873541E+06, 0.101785772418607943E+06, 0.101847556062125179E+06, 0.101908363003809383E+06, + 0.101961701914240010E+06, 0.102002429874153109E+06, 0.102025185688122059E+06, 0.102030228237618969E+06, 0.102016392623057240E+06, + 0.101989203583738155E+06, 0.101954215596148948E+06, 0.101916658897302012E+06, 0.101876815696310456E+06, 0.101833071043157586E+06, + 0.101787308476072212E+06, 0.101741539193291770E+06, 0.101697630101558476E+06, 0.101654119182481736E+06, 0.101610960850170581E+06, + 0.101569179414185535E+06, 0.101528773468682877E+06, 0.101490142318063241E+06, 0.101454189911789217E+06, 0.101420537325155994E+06, + 0.101387196165512592E+06, 0.101359208745426033E+06, 0.101338989486127597E+06, 0.101329695327606096E+06, 0.101338867992364074E+06, + 0.101355871810450670E+06, 0.101375430345140587E+06, 0.101394209504973755E+06, 0.101402919751202760E+06, 0.101410688334029808E+06, + 0.101416920285657412E+06, 0.101420489242522977E+06, 0.101413658635510583E+06, 0.101399351916641783E+06, 0.101380364637205465E+06, + 0.101357315413079603E+06, 0.101331383086953632E+06, 0.101302463143222500E+06, 0.101271861027862804E+06, 0.101243797629858222E+06, + 0.101225102912379341E+06, 0.101230895188582799E+06, 0.101260967028080006E+06, 0.101301126414935963E+06, 0.101347821784489817E+06, + 0.101397550525323837E+06, 0.101444003541722705E+06, 0.101480976560253359E+06, 0.101512946357403111E+06, 0.101540212183607568E+06, + 0.101567953884550225E+06, 0.101594468785546575E+06, 0.101637676393726375E+06, 0.101688399693186482E+06, 0.101742930184759069E+06, + 0.100795882153115017E+06, 0.100850797431345025E+06, 0.100914750948998306E+06, 0.100986523708389999E+06, 0.101064741053657359E+06, + 0.101147944583867647E+06, 0.101236474647069423E+06, 0.101327593382317646E+06, 0.101416818345205553E+06, 0.101501970105562199E+06, + 0.101581006340059568E+06, 0.101652107178935606E+06, 0.101713753841424812E+06, 0.101764799350409041E+06, 0.101804529976921447E+06, + 0.101832451081090258E+06, 0.101847567048303332E+06, 0.101846442214230046E+06, 0.101834900151378431E+06, 0.101813744156519519E+06, + 0.101783490044669117E+06, 0.101744750228076155E+06, 0.101698109004179641E+06, 0.101641364118676778E+06, 0.101569583201128436E+06, + 0.101490816574609969E+06, 0.101406531256311253E+06, 0.101319625817001812E+06, 0.101233091961074242E+06, 0.101146347584902731E+06, + 0.101058989124578555E+06, 0.100953964690316512E+06, 0.100852899705475327E+06, 0.100760578698964149E+06, 0.100681685450575751E+06, + 0.100620492778267973E+06, 0.100580496608869158E+06, 0.100579462774121028E+06, 0.100625977088063315E+06, 0.100699672061534206E+06, + 0.100794647180633037E+06, 0.100907249288633233E+06, 0.101033016501104474E+06, 0.101170532820658074E+06, 0.101310202043631813E+06, + 0.101443951517617694E+06, 0.101566665342990047E+06, 0.101674561727816923E+06, 0.101762857707379371E+06, 0.101831050817027455E+06, + 0.101892059674295087E+06, 0.101947353598683054E+06, 0.101998507084363489E+06, 0.102047351014086569E+06, 0.102096770563981801E+06, + 0.102143221374936838E+06, 0.102186890306655871E+06, 0.102228196597294736E+06, 0.102264105567156759E+06, 0.102302445150954794E+06, + 0.102336246787148004E+06, 0.102363781472504663E+06, 0.102384291162903231E+06, 0.102397430622010026E+06, 0.102403312624922473E+06, + 0.102403832627536103E+06, 0.102402612769131738E+06, 0.102401390930183130E+06, 0.102401466546220196E+06, 0.102401874865610895E+06, + 0.102402100027913009E+06, 0.102404524182350739E+06, 0.102408945753433436E+06, 0.102408228479075435E+06, 0.102399207567720179E+06, + 0.102378727543360583E+06, 0.102346081419689654E+06, 0.102300584036716507E+06, 0.102242408524207058E+06, 0.102170172560628038E+06, + 0.102084827969266131E+06, 0.101990466580006148E+06, 0.101891305283198890E+06, 0.101794051647235989E+06, 0.101701758202335564E+06, + 0.101617607399452128E+06, 0.101545673956610553E+06, 0.101493920019806435E+06, 0.101463389589686616E+06, 0.101454707404169429E+06, + 0.101465784796775130E+06, 0.101489404864046577E+06, 0.101519701691131908E+06, 0.101547620610180951E+06, 0.101565576165996550E+06, + 0.101562026624260950E+06, 0.101539419490073633E+06, 0.101508015501831396E+06, 0.101475602714955035E+06, 0.101449209652947975E+06, + 0.101436251410560508E+06, 0.101442877175111498E+06, 0.101471341372345414E+06, 0.101518178052896081E+06, 0.101577355032239313E+06, + 0.101641314782584261E+06, 0.101703564541155953E+06, 0.101762362987943518E+06, 0.101818379277178246E+06, 0.101872714548978096E+06, + 0.101924119264252775E+06, 0.101966776195386803E+06, 0.101995500768842219E+06, 0.102007086660768691E+06, 0.102002030153628395E+06, + 0.101985038462701981E+06, 0.101956611217972633E+06, 0.101924174284332606E+06, 0.101890531345005773E+06, 0.101858684611865552E+06, + 0.101821867670641383E+06, 0.101781442886233301E+06, 0.101738169818174909E+06, 0.101693020445221118E+06, 0.101649533509090848E+06, + 0.101606065252630258E+06, 0.101563356987927487E+06, 0.101522196794781717E+06, 0.101483000104046587E+06, 0.101448492093986119E+06, + 0.101420196255985837E+06, 0.101395294590973572E+06, 0.101373162271020163E+06, 0.101359621762719311E+06, 0.101356933368830039E+06, + 0.101368947980949306E+06, 0.101392192190573551E+06, 0.101417779659041989E+06, 0.101442531040709990E+06, 0.101462476541542521E+06, + 0.101476476704636079E+06, 0.101486973325915984E+06, 0.101492708978460287E+06, 0.101491506327010982E+06, 0.101476163566485891E+06, + 0.101454012045195879E+06, 0.101426588508176050E+06, 0.101395767868210212E+06, 0.101361555520167341E+06, 0.101327388871009054E+06, + 0.101300667576237203E+06, 0.101284994174892112E+06, 0.101283350959747040E+06, 0.101309210052713708E+06, 0.101350688755181967E+06, + 0.101399465772761600E+06, 0.101451857069433157E+06, 0.101504338927611956E+06, 0.101548087731741456E+06, 0.101585173851711908E+06, + 0.101617418107249265E+06, 0.101645918462371425E+06, 0.101672368866688703E+06, 0.101702644054264791E+06, 0.101756834440843944E+06, + 0.101815020493009375E+06, 0.100745394112667054E+06, 0.100799832870823317E+06, 0.100863855953311213E+06, 0.100936251298315474E+06, + 0.101015648499264644E+06, 0.101104654341683374E+06, 0.101200128443110370E+06, 0.101296361142831636E+06, 0.101389195762127056E+06, + 0.101477275829104881E+06, 0.101559295351936235E+06, 0.101633387586243814E+06, 0.101697961740723156E+06, 0.101751772598623953E+06, + 0.101793901427349119E+06, 0.101823866729636080E+06, 0.101841583691637163E+06, 0.101847052782340179E+06, 0.101840097601263231E+06, + 0.101819364884434224E+06, 0.101788292383590582E+06, 0.101747405137351147E+06, 0.101695621343299601E+06, 0.101627436111935327E+06, + 0.101550322384277897E+06, 0.101465476616664964E+06, 0.101374194733789423E+06, 0.101277718928660746E+06, 0.101177047947947533E+06, + 0.101075621770040874E+06, 0.100963507971772880E+06, 0.100850151599165794E+06, 0.100741049456883455E+06, 0.100641201275214524E+06, + 0.100555640521779089E+06, 0.100489164793431541E+06, 0.100453712051746988E+06, 0.100455966233873114E+06, 0.100484341033634380E+06, + 0.100537490332318921E+06, 0.100620003905902136E+06, 0.100729309835612949E+06, 0.100858870023752374E+06, 0.101002649715674357E+06, + 0.101147678361066428E+06, 0.101287802540963821E+06, 0.101417496539417145E+06, 0.101532273896933402E+06, 0.101613683175199098E+06, + 0.101680723164626179E+06, 0.101737444859119263E+06, 0.101791182708811306E+06, 0.101841314940347904E+06, 0.101891796533315224E+06, + 0.101941590080887530E+06, 0.101990059211011772E+06, 0.102037355306302023E+06, 0.102083701488133767E+06, 0.102136891332944331E+06, + 0.102186806386969169E+06, 0.102230479823408270E+06, 0.102264774535572782E+06, 0.102290420308268731E+06, 0.102307702555592783E+06, + 0.102317766904831617E+06, 0.102321662148245741E+06, 0.102321498408406202E+06, 0.102320441248726507E+06, 0.102319523718290511E+06, + 0.102322447750704567E+06, 0.102327503158949214E+06, 0.102340754529364640E+06, 0.102353506384693246E+06, 0.102362358688122375E+06, + 0.102364445626707267E+06, 0.102355674159446760E+06, 0.102335040551811529E+06, 0.102301981999839074E+06, 0.102255676163442389E+06, + 0.102195798314690837E+06, 0.102122639698007450E+06, 0.102039086723219865E+06, 0.101949840960878224E+06, 0.101859938889724974E+06, + 0.101771880315094095E+06, 0.101689691466275064E+06, 0.101619553461018091E+06, 0.101564784382206009E+06, 0.101527063676792590E+06, + 0.101506865347517232E+06, 0.101503522390084341E+06, 0.101512744653858725E+06, 0.101529231308459130E+06, 0.101545937638918578E+06, + 0.101543746232650679E+06, 0.101529149091683401E+06, 0.101505036617385034E+06, 0.101477259643610611E+06, 0.101452985842091570E+06, + 0.101443019818922796E+06, 0.101450005107018835E+06, 0.101477223491849247E+06, 0.101523231314288976E+06, 0.101581629450517838E+06, + 0.101644098508760901E+06, 0.101703051093558723E+06, 0.101755080739197074E+06, 0.101801349748540073E+06, 0.101847343504094184E+06, + 0.101892088842664132E+06, 0.101930776572625342E+06, 0.101959972929516225E+06, 0.101973275480066382E+06, 0.101972016851233420E+06, + 0.101959747868463455E+06, 0.101940685784926434E+06, 0.101919336338791196E+06, 0.101894507185877927E+06, 0.101871113669696017E+06, + 0.101847657889249851E+06, 0.101820887903955852E+06, 0.101784170021964572E+06, 0.101741602583369866E+06, 0.101694747059338464E+06, + 0.101647292622998575E+06, 0.101600773270067424E+06, 0.101554052329806203E+06, 0.101509997350416306E+06, 0.101472107321641699E+06, + 0.101442071551669200E+06, 0.101420240877131699E+06, 0.101406891473258380E+06, 0.101396015807551084E+06, 0.101392164060749914E+06, + 0.101397198621684831E+06, 0.101410725481402653E+06, 0.101436168965154429E+06, 0.101464448461599168E+06, 0.101491134274545591E+06, + 0.101513817760506034E+06, 0.101531534488231206E+06, 0.101544658070101810E+06, 0.101551681755858954E+06, 0.101551216434335554E+06, + 0.101539195357785327E+06, 0.101514919199184893E+06, 0.101483010220912314E+06, 0.101448007466093870E+06, 0.101414858070553688E+06, + 0.101383218898751307E+06, 0.101359262217297684E+06, 0.101346709055278770E+06, 0.101347915439013712E+06, 0.101365119587774912E+06, + 0.101407924765819262E+06, 0.101458658683875430E+06, 0.101515675014729291E+06, 0.101573920518004117E+06, 0.101629788706552135E+06, + 0.101668434413804149E+06, 0.101700504314289530E+06, 0.101727848552964642E+06, 0.101752288382924846E+06, 0.101776226460626523E+06, + 0.101814361167678813E+06, 0.101872139466116685E+06, 0.100694816386903738E+06, 0.100748531064111390E+06, 0.100812413075077391E+06, + 0.100885240325433202E+06, 0.100971984589634725E+06, 0.101066079836500590E+06, 0.101163332246353209E+06, 0.101261519892330936E+06, + 0.101358385768427062E+06, 0.101451421123224791E+06, 0.101536054276749637E+06, 0.101612689419430462E+06, 0.101679641914763270E+06, + 0.101735174644287632E+06, 0.101778750617147758E+06, 0.101810665166487233E+06, 0.101830410029895895E+06, 0.101837810772118624E+06, + 0.101833022665443903E+06, 0.101816510393020842E+06, 0.101787854012666052E+06, 0.101744823421577603E+06, 0.101683938556403096E+06, + 0.101613036597664483E+06, 0.101532884942156001E+06, 0.101444504410039342E+06, 0.101349069651044396E+06, 0.101247781610335631E+06, + 0.101141708506075884E+06, 0.101021202144232695E+06, 0.100894721062327983E+06, 0.100769982600624178E+06, 0.100655427823023274E+06, + 0.100550770964121868E+06, 0.100461477319971644E+06, 0.100396193533225101E+06, 0.100370475160386210E+06, 0.100369362731624045E+06, + 0.100393088104568509E+06, 0.100440996230512974E+06, 0.100511511049115361E+06, 0.100603846780177613E+06, 0.100726574426591877E+06, + 0.100871208402494914E+06, 0.101018016887883554E+06, 0.101160944293748136E+06, 0.101294154343677379E+06, 0.101398406532467285E+06, + 0.101478074072107382E+06, 0.101546049324473512E+06, 0.101603974418745871E+06, 0.101653727077973454E+06, 0.101697954544609078E+06, + 0.101741376690074656E+06, 0.101789988330066262E+06, 0.101838680208411213E+06, 0.101887795803836605E+06, 0.101942598855672841E+06, + 0.102000837418646348E+06, 0.102056277940396962E+06, 0.102106768405713607E+06, 0.102150535774670396E+06, 0.102182996899048041E+06, + 0.102206750157000613E+06, 0.102221201245532342E+06, 0.102228757950974235E+06, 0.102230269318708335E+06, 0.102229908214737996E+06, + 0.102230221444085299E+06, 0.102233117647704858E+06, 0.102243955867660014E+06, 0.102261169827573845E+06, 0.102280623025385154E+06, + 0.102298710646779829E+06, 0.102311720481040116E+06, 0.102316483254606297E+06, 0.102310329085876278E+06, 0.102292054686377145E+06, + 0.102261582445110776E+06, 0.102217278999264774E+06, 0.102159938958497296E+06, 0.102090651836751262E+06, 0.102014420809727890E+06, + 0.101933158619991009E+06, 0.101851325383247095E+06, 0.101773700996606422E+06, 0.101704655579852813E+06, 0.101645470306280142E+06, + 0.101599387487163476E+06, 0.101568762309086727E+06, 0.101551200721109650E+06, 0.101544950055199806E+06, 0.101545234940555893E+06, + 0.101536151271568684E+06, 0.101520957074193793E+06, 0.101499514166347813E+06, 0.101472481430049040E+06, 0.101447481037651174E+06, + 0.101431698928562022E+06, 0.101432519665399988E+06, 0.101455989679772596E+06, 0.101503867701139068E+06, 0.101569707321795955E+06, + 0.101641541183263049E+06, 0.101707359784777087E+06, 0.101760909663319078E+06, 0.101802944092112913E+06, 0.101837429073186562E+06, + 0.101868490058515003E+06, 0.101895999089963501E+06, 0.101921719560774494E+06, 0.101935208629263929E+06, 0.101934734847469299E+06, + 0.101921789770189804E+06, 0.101905337918664198E+06, 0.101889233907825823E+06, 0.101876223533093609E+06, 0.101864529046626514E+06, + 0.101850666495852842E+06, 0.101835575764428810E+06, 0.101815211112956240E+06, 0.101783740571016519E+06, 0.101739678309719806E+06, + 0.101689041718466135E+06, 0.101634899667157661E+06, 0.101583884425190394E+06, 0.101535509776931387E+06, 0.101491128441498251E+06, + 0.101453011421685966E+06, 0.101428708334432333E+06, 0.101415133080661239E+06, 0.101411902195392497E+06, 0.101415741142001993E+06, + 0.101421700628259656E+06, 0.101434916879656914E+06, 0.101454096376128975E+06, 0.101478884585159176E+06, 0.101507961817356219E+06, + 0.101534772926637874E+06, 0.101557090728886120E+06, 0.101574113620330667E+06, 0.101587280909418565E+06, 0.101593317203057959E+06, + 0.101589233196906163E+06, 0.101574814776511601E+06, 0.101547332581751762E+06, 0.101514869284270651E+06, 0.101481998192358122E+06, + 0.101452150550811974E+06, 0.101427572510067519E+06, 0.101409813743047896E+06, 0.101403676308175665E+06, 0.101410943983370715E+06, + 0.101433007929108295E+06, 0.101473704830047689E+06, 0.101528968358056605E+06, 0.101588585098966272E+06, 0.101648865730780017E+06, + 0.101706538485246449E+06, 0.101754905727487509E+06, 0.101785976200502380E+06, 0.101811017148794053E+06, 0.101832089114193281E+06, + 0.101851827047180632E+06, 0.101871848271984418E+06, 0.101914442748880043E+06, 0.100645050821058583E+06, 0.100697921098829320E+06, + 0.100761591261288675E+06, 0.100844244243942405E+06, 0.100934005537327830E+06, 0.101028963380699686E+06, 0.101127123691640561E+06, + 0.101226361187462535E+06, 0.101324505036089657E+06, 0.101419431488063798E+06, 0.101509163971173737E+06, 0.101590063785101636E+06, + 0.101657671467199980E+06, 0.101713396702810118E+06, 0.101758515364488485E+06, 0.101792091325616479E+06, 0.101813481673006056E+06, + 0.101822350253392695E+06, 0.101818668615804971E+06, 0.101802702749391727E+06, 0.101774619027333058E+06, 0.101728109831474241E+06, + 0.101668908134665704E+06, 0.101597584119515159E+06, 0.101516856663981162E+06, 0.101427599824837293E+06, 0.101330896414631075E+06, + 0.101227935201261804E+06, 0.101113372919066416E+06, 0.100989129696766337E+06, 0.100861373889168084E+06, 0.100733678225485171E+06, + 0.100610105917794019E+06, 0.100495004451233079E+06, 0.100402578780181022E+06, 0.100353109983544055E+06, 0.100326440206043859E+06, + 0.100322735531117156E+06, 0.100342802276422299E+06, 0.100386646482634504E+06, 0.100453451962470805E+06, 0.100549574897853177E+06, + 0.100666205550992949E+06, 0.100795807241975184E+06, 0.100931381874395069E+06, 0.101067411193584325E+06, 0.101192762302618430E+06, + 0.101283622761741586E+06, 0.101362350787791220E+06, 0.101430423297678528E+06, 0.101489314399921583E+06, 0.101540641111512159E+06, + 0.101585585061290316E+06, 0.101627410996723280E+06, 0.101667724011934901E+06, 0.101707970653555123E+06, 0.101751269935565215E+06, + 0.101811021944586406E+06, 0.101870809774501089E+06, 0.101928469764575537E+06, 0.101981732364511379E+06, 0.102026310772180412E+06, + 0.102061898497918446E+06, 0.102089845634957077E+06, 0.102110105242362508E+06, 0.102121882127719451E+06, 0.102124061355970684E+06, + 0.102123733324673376E+06, 0.102124546125847337E+06, 0.102129219082775890E+06, 0.102145351303200790E+06, 0.102166260171440692E+06, + 0.102190433845960331E+06, 0.102216291023032318E+06, 0.102242152119835548E+06, 0.102260901292175229E+06, 0.102271019053290802E+06, + 0.102270194336435845E+06, 0.102258376332468251E+06, 0.102232740434276260E+06, 0.102193082447496578E+06, 0.102140339518538545E+06, + 0.102077291761659100E+06, 0.102007943796066291E+06, 0.101934901694509579E+06, 0.101863769251748963E+06, 0.101795867039438526E+06, + 0.101734634917306947E+06, 0.101683465453549536E+06, 0.101643719755611994E+06, 0.101613589850316028E+06, 0.101591266195843433E+06, + 0.101568063676064237E+06, 0.101544190597726789E+06, 0.101518173523634308E+06, 0.101489293133355706E+06, 0.101456969224960791E+06, + 0.101429471204937334E+06, 0.101413477375518429E+06, 0.101417790921687454E+06, 0.101450822395921219E+06, 0.101510233193849519E+06, + 0.101585841462266966E+06, 0.101664438788265412E+06, 0.101733920550829818E+06, 0.101788706066789920E+06, 0.101825829329588349E+06, + 0.101850405636027645E+06, 0.101871083937706790E+06, 0.101887382097668247E+06, 0.101896455049501354E+06, 0.101897289413654769E+06, + 0.101886248870001597E+06, 0.101867415759247539E+06, 0.101847995171556977E+06, 0.101838485076295401E+06, 0.101834100858943464E+06, + 0.101832686427819717E+06, 0.101828063075528247E+06, 0.101816399093795466E+06, 0.101796719243765314E+06, 0.101767216502717842E+06, + 0.101721966250064579E+06, 0.101668953652310433E+06, 0.101611959093829370E+06, 0.101556227036786251E+06, 0.101506414279391960E+06, + 0.101461971390057777E+06, 0.101425468706421860E+06, 0.101404163733341426E+06, 0.101399096476539751E+06, 0.101405522879150667E+06, + 0.101421050121819761E+06, 0.101438689378578158E+06, 0.101460180927881505E+06, 0.101485796004159551E+06, 0.101513713918150577E+06, + 0.101542550860272706E+06, 0.101568068025141562E+06, 0.101588331740948968E+06, 0.101600913455480535E+06, 0.101607630152187616E+06, + 0.101607407012941694E+06, 0.101598607139348926E+06, 0.101581645287700347E+06, 0.101557205094100689E+06, 0.101527626140599372E+06, + 0.101498954813168501E+06, 0.101474478229909684E+06, 0.101456851592814171E+06, 0.101447916547657107E+06, 0.101451532249133510E+06, + 0.101469023039587555E+06, 0.101500095660945575E+06, 0.101543265481331633E+06, 0.101599989966535504E+06, 0.101661394639400824E+06, + 0.101722843298708525E+06, 0.101781217785530855E+06, 0.101833962893083750E+06, 0.101869504665579036E+06, 0.101891006131465809E+06, + 0.101907724224272592E+06, 0.101922174311177543E+06, 0.101935867942354409E+06, 0.101950426065447158E+06, 0.100607098755765037E+06, + 0.100655240281701743E+06, 0.100726600376942501E+06, 0.100809356254825645E+06, 0.100899004634437370E+06, 0.100993829979357848E+06, + 0.101091906852125423E+06, 0.101191172811513417E+06, 0.101289507328918466E+06, 0.101384817108912728E+06, 0.101475128234200398E+06, + 0.101556622026723067E+06, 0.101627508170991190E+06, 0.101685968687809233E+06, 0.101732567539073978E+06, 0.101767665006896481E+06, + 0.101790488350008833E+06, 0.101800548295886649E+06, 0.101797644943693944E+06, 0.101781861361740375E+06, 0.101747873759633774E+06, + 0.101701859594637368E+06, 0.101644745116156497E+06, 0.101577648617696381E+06, 0.101501095515959882E+06, 0.101413668608079461E+06, + 0.101318547892610906E+06, 0.101214143017131020E+06, 0.101099338905386365E+06, 0.100978397278849705E+06, 0.100854041321450713E+06, + 0.100729710648106629E+06, 0.100609462614676057E+06, 0.100497826949930561E+06, 0.100414459388165211E+06, 0.100356511886266162E+06, + 0.100322777395156372E+06, 0.100316042351856522E+06, 0.100332097081535409E+06, 0.100371561029088683E+06, 0.100439298341075264E+06, + 0.100532568922400489E+06, 0.100643002914990837E+06, 0.100765387761929349E+06, 0.100893492581718543E+06, 0.101020399500629603E+06, + 0.101112706098134367E+06, 0.101194570041727216E+06, 0.101269273413618284E+06, 0.101335562528605122E+06, 0.101394060212437602E+06, + 0.101445483977905038E+06, 0.101491335215433006E+06, 0.101533800970901357E+06, 0.101574594133775521E+06, 0.101615314066683874E+06, + 0.101662259781339875E+06, 0.101713149881755875E+06, 0.101764653351764238E+06, 0.101815034877485959E+06, 0.101864609985221337E+06, + 0.101906670614871124E+06, 0.101942016196974146E+06, 0.101970135166829859E+06, 0.101990609169172516E+06, 0.101996950610404732E+06, + 0.101996810049367472E+06, 0.101996317886868128E+06, 0.101998445642552077E+06, 0.102008824591142213E+06, 0.102027635971959302E+06, + 0.102051641514833580E+06, 0.102080850665324571E+06, 0.102117904503131693E+06, 0.102157634194590821E+06, 0.102192504721610734E+06, + 0.102219235460459910E+06, 0.102236777347130861E+06, 0.102242902162718834E+06, 0.102236355155139478E+06, 0.102216651883876315E+06, + 0.102180426444035780E+06, 0.102133083528179093E+06, 0.102077034681391349E+06, 0.102016323324797893E+06, 0.101953628282518228E+06, + 0.101890856388452012E+06, 0.101830915333128054E+06, 0.101779447310396441E+06, 0.101734080624489550E+06, 0.101693870504157734E+06, + 0.101656684022070389E+06, 0.101619340499046710E+06, 0.101584139894536143E+06, 0.101548750508560886E+06, 0.101508927593507731E+06, + 0.101469477866382847E+06, 0.101436805815304979E+06, 0.101415993387059803E+06, 0.101423466131997789E+06, 0.101453632286171531E+06, + 0.101508029375078389E+06, 0.101580823336132147E+06, 0.101656593588021438E+06, 0.101722011470405239E+06, 0.101771508397742451E+06, + 0.101807913013677957E+06, 0.101834964343916130E+06, 0.101850402618856344E+06, 0.101859186985402383E+06, 0.101860587418252151E+06, + 0.101854518941434624E+06, 0.101838720084331697E+06, 0.101819824582356232E+06, 0.101803402458019846E+06, 0.101796893209118367E+06, + 0.101799592648883248E+06, 0.101802452116411427E+06, 0.101801265547130839E+06, 0.101788566176828695E+06, 0.101765879286445153E+06, + 0.101732953696931960E+06, 0.101687950182710265E+06, 0.101633167492824286E+06, 0.101575598313827417E+06, 0.101518917024984054E+06, + 0.101468456845219422E+06, 0.101425013728590406E+06, 0.101390361593186084E+06, 0.101368216911030337E+06, 0.101370279495935785E+06, + 0.101384930299833504E+06, 0.101409208395769369E+06, 0.101438468993645060E+06, 0.101467787546390668E+06, 0.101499453696433935E+06, + 0.101530518538351142E+06, 0.101558938309742618E+06, 0.101581645149348537E+06, 0.101598207551499479E+06, 0.101607649285544889E+06, + 0.101609802844516307E+06, 0.101605573988511765E+06, 0.101593037714059843E+06, 0.101573514674016667E+06, 0.101549196000671189E+06, + 0.101522849664976588E+06, 0.101498330261054754E+06, 0.101479889987571310E+06, 0.101470097853539497E+06, 0.101471225349216998E+06, + 0.101486588535369752E+06, 0.101515334980482352E+06, 0.101556357596876667E+06, 0.101607560846124834E+06, 0.101666443968593783E+06, + 0.101729419441298363E+06, 0.101791387702929569E+06, 0.101848011454613385E+06, 0.101897514583017852E+06, 0.101939642427183790E+06, + 0.101960271009820077E+06, 0.101975158780464568E+06, 0.101986424653725320E+06, 0.101995822513432664E+06, 0.102004992120982162E+06, + 0.100578411052675729E+06, 0.100635318784110554E+06, 0.100702588041198120E+06, 0.100778983082032035E+06, 0.100867372014784603E+06, + 0.100961003291497836E+06, 0.101057944061462069E+06, 0.101156164506401896E+06, 0.101253562485936651E+06, 0.101348041518852056E+06, + 0.101435305736620867E+06, 0.101514565773677881E+06, 0.101585969098869886E+06, 0.101648080408071197E+06, 0.101699676885091831E+06, + 0.101737081890784044E+06, 0.101761287426791518E+06, 0.101772434840921720E+06, 0.101770158786062922E+06, 0.101748537453835859E+06, + 0.101714770053279746E+06, 0.101669742860261249E+06, 0.101614251954373656E+06, 0.101549290791504973E+06, 0.101476027861641691E+06, + 0.101395781087328636E+06, 0.101309332351133024E+06, 0.101208930191804626E+06, 0.101100827344175617E+06, 0.100987036454510526E+06, + 0.100870048278151575E+06, 0.100753131768219901E+06, 0.100640279785382925E+06, 0.100543839073244162E+06, 0.100470119984832578E+06, + 0.100412920571785522E+06, 0.100374418672954038E+06, 0.100356321711452154E+06, 0.100359754832890321E+06, 0.100393037545625295E+06, + 0.100461456665693026E+06, 0.100548040695085903E+06, 0.100649774320544951E+06, 0.100762231735881898E+06, 0.100879810004682629E+06, + 0.100978944107382951E+06, 0.101056139035317683E+06, 0.101129122973660080E+06, 0.101197131809436498E+06, 0.101259400864402109E+06, + 0.101315369721067444E+06, 0.101366567376128267E+06, 0.101413068730518760E+06, 0.101456050767495792E+06, 0.101497394979706776E+06, + 0.101540388547235518E+06, 0.101589723482442452E+06, 0.101639287384227951E+06, 0.101688119127630343E+06, 0.101734881227949692E+06, + 0.101774055633342999E+06, 0.101806176343790416E+06, 0.101833758016756707E+06, 0.101855867301477920E+06, 0.101869669516056863E+06, + 0.101867423844660036E+06, 0.101862185064065459E+06, 0.101857648911106618E+06, 0.101857166947219768E+06, 0.101869453362050233E+06, + 0.101889395994667357E+06, 0.101917145273055416E+06, 0.101952665990595080E+06, 0.102005113066678605E+06, 0.102059201352783610E+06, + 0.102110590092891594E+06, 0.102155134120450733E+06, 0.102189008661845161E+06, 0.102212893719536674E+06, 0.102224794573552019E+06, + 0.102221917283866860E+06, 0.102203717818992911E+06, 0.102173729797711843E+06, 0.102134066117315539E+06, 0.102088155198460590E+06, + 0.102037322504280150E+06, 0.101983804157969324E+06, 0.101930882216981918E+06, 0.101882568835916391E+06, 0.101835848097687121E+06, + 0.101791045975844638E+06, 0.101745969221785286E+06, 0.101701401299452598E+06, 0.101658034247290489E+06, 0.101613792586539625E+06, + 0.101566658381616784E+06, 0.101523107840297394E+06, 0.101485865057037794E+06, 0.101467196461575470E+06, 0.101465231282475186E+06, + 0.101481792269703801E+06, 0.101521171184929379E+06, 0.101584362409188645E+06, 0.101654606382538637E+06, 0.101708085889500013E+06, + 0.101750884319908815E+06, 0.101781151271932016E+06, 0.101802265119226417E+06, 0.101814660749166302E+06, 0.101818059160636913E+06, + 0.101815376584443497E+06, 0.101808025978518664E+06, 0.101796093709958877E+06, 0.101783205967926551E+06, 0.101773519465245452E+06, + 0.101768347262196490E+06, 0.101772318875173907E+06, 0.101774032894583841E+06, 0.101769304008539359E+06, 0.101752736287782580E+06, + 0.101724576811767562E+06, 0.101687606667018787E+06, 0.101642832213384885E+06, 0.101588413046507747E+06, 0.101532052789407389E+06, + 0.101477089478998780E+06, 0.101426937636667906E+06, 0.101383983337104524E+06, 0.101350070067916895E+06, 0.101327894217902314E+06, + 0.101330294767154453E+06, 0.101349863124191863E+06, 0.101379498558547202E+06, 0.101415335536042723E+06, 0.101450570253408456E+06, + 0.101486617503024216E+06, 0.101521790468661828E+06, 0.101553679702050722E+06, 0.101576951634593526E+06, 0.101592599322586801E+06, + 0.101600882539355007E+06, 0.101601982296252419E+06, 0.101593711037322297E+06, 0.101576295595724252E+06, 0.101552760225610255E+06, + 0.101525860012702775E+06, 0.101500304746004782E+06, 0.101482529221745732E+06, 0.101472615361795470E+06, 0.101472486373178777E+06, + 0.101483501295817390E+06, 0.101509279618775763E+06, 0.101549321581216165E+06, 0.101600205319342873E+06, 0.101659295372980385E+06, + 0.101721590076149907E+06, 0.101783337171577281E+06, 0.101842427132610639E+06, 0.101897333754838794E+06, 0.101946395082493676E+06, + 0.101988236942542819E+06, 0.102017526821220177E+06, 0.102031828714653369E+06, 0.102041305631011754E+06, 0.102047936605813040E+06, + 0.102053545022376406E+06, 0.100561618890645521E+06, 0.100618675407796312E+06, 0.100685232428278308E+06, 0.100760148812781379E+06, + 0.100842043992347171E+06, 0.100930626779751663E+06, 0.101025380770443604E+06, 0.101121496737499227E+06, 0.101216863489791329E+06, + 0.101306591907260168E+06, 0.101390820508431876E+06, 0.101469198549494278E+06, 0.101540194252744899E+06, 0.101602382440106187E+06, + 0.101654511301229999E+06, 0.101695567045773627E+06, 0.101724835997739530E+06, 0.101738206502799672E+06, 0.101728469792924647E+06, + 0.101706705766990082E+06, 0.101673943944349550E+06, 0.101630654689779229E+06, 0.101577521269946941E+06, 0.101515423259462186E+06, + 0.101445417400194085E+06, 0.101369301689578249E+06, 0.101289207179891833E+06, 0.101202291357723705E+06, 0.101109840862024794E+06, + 0.101010060536526478E+06, 0.100903624985256116E+06, 0.100797206247763170E+06, 0.100697721229483854E+06, 0.100617879166639119E+06, + 0.100549334862444375E+06, 0.100494554672908853E+06, 0.100455829928310864E+06, 0.100435159192249281E+06, 0.100434140902790139E+06, + 0.100463827743078145E+06, 0.100516682399563157E+06, 0.100588924784875649E+06, 0.100677081454071609E+06, 0.100775641942890885E+06, + 0.100875619518922729E+06, 0.100945870321605689E+06, 0.101013133541299816E+06, 0.101077503451870405E+06, 0.101138697419382283E+06, + 0.101196245970018281E+06, 0.101247478059058092E+06, 0.101295381961911495E+06, 0.101341293286219021E+06, 0.101385520658941925E+06, + 0.101428507369388099E+06, 0.101477628384924552E+06, 0.101527439265766385E+06, 0.101575625370267109E+06, 0.101621502298168052E+06, + 0.101663832962092813E+06, 0.101694866512688139E+06, 0.101720503961646493E+06, 0.101740691340596662E+06, 0.101755087321406769E+06, + 0.101753809082437700E+06, 0.101741526291839808E+06, 0.101728608499199152E+06, 0.101718502985755840E+06, 0.101716703972249219E+06, + 0.101727329002141589E+06, 0.101746865685733879E+06, 0.101776394054624689E+06, 0.101821041668101156E+06, 0.101883903619016666E+06, + 0.101950707313021689E+06, 0.102016579439056790E+06, 0.102074857884153607E+06, 0.102122966684235507E+06, 0.102162229375958646E+06, + 0.102191070936530305E+06, 0.102205291241337400E+06, 0.102205781057829736E+06, 0.102194562190391560E+06, 0.102173148282368042E+06, + 0.102144343637741913E+06, 0.102108830373893230E+06, 0.102068178268037620E+06, 0.102026306869767315E+06, 0.101984352807968040E+06, + 0.101941207962857719E+06, 0.101897306791024865E+06, 0.101851675563811092E+06, 0.101805566459294409E+06, 0.101759497966033654E+06, + 0.101711369603787127E+06, 0.101663340792011426E+06, 0.101619227450208040E+06, 0.101582695699032221E+06, 0.101558695579259147E+06, + 0.101546029798913645E+06, 0.101545588074274448E+06, 0.101567771713567665E+06, 0.101607748589558381E+06, 0.101688531278736336E+06, + 0.101712604992569381E+06, 0.101743096832469848E+06, 0.101760620836449103E+06, 0.101769961191482769E+06, 0.101772822414354494E+06, + 0.101770897529126829E+06, 0.101765958574697099E+06, 0.101759443212774597E+06, 0.101753267088761611E+06, 0.101750523367411457E+06, + 0.101749706624054088E+06, 0.101749678109808025E+06, 0.101749285406108000E+06, 0.101744523322546709E+06, 0.101733022628531995E+06, + 0.101711787295703034E+06, 0.101679008351294804E+06, 0.101639130834085285E+06, 0.101593625025334943E+06, 0.101541393928166348E+06, + 0.101487105460277933E+06, 0.101434417444056598E+06, 0.101385551046964029E+06, 0.101342006161188154E+06, 0.101307140291916905E+06, + 0.101283659047930778E+06, 0.101280818499683781E+06, 0.101302531797972479E+06, 0.101335121595155433E+06, 0.101374651651055479E+06, + 0.101415853089015101E+06, 0.101456337388213346E+06, 0.101495434796083166E+06, 0.101530692665964845E+06, 0.101556780887815577E+06, + 0.101572252524485899E+06, 0.101580348283763422E+06, 0.101581288046389862E+06, 0.101573497525049606E+06, 0.101553231842264839E+06, + 0.101527699101148173E+06, 0.101500366015751919E+06, 0.101475147159402040E+06, 0.101462872833845016E+06, 0.101461553787802579E+06, + 0.101470899121458526E+06, 0.101491574771335596E+06, 0.101526109462851629E+06, 0.101575993595638676E+06, 0.101633539000189689E+06, + 0.101696017474012726E+06, 0.101760468358366721E+06, 0.101823741442191822E+06, 0.101882328042741588E+06, 0.101936367528451112E+06, + 0.101984427337493747E+06, 0.102025414498975340E+06, 0.102058638462272647E+06, 0.102075739484648249E+06, 0.102084208298001584E+06, + 0.102090352048999324E+06, 0.102097473483009948E+06, 0.100548208007167515E+06, 0.100605095427047316E+06, 0.100670706010579946E+06, + 0.100743978438203791E+06, 0.100823629545142438E+06, 0.100908178696427160E+06, 0.100995982580288008E+06, 0.101087314481146692E+06, + 0.101176414116338347E+06, 0.101262458356531424E+06, 0.101344547676157905E+06, 0.101421163164599711E+06, 0.101490796631980134E+06, + 0.101552014265238700E+06, 0.101603518886931997E+06, 0.101644210460807284E+06, 0.101673244462872826E+06, 0.101680735386759538E+06, + 0.101674706326058280E+06, 0.101655388783202914E+06, 0.101624670690422980E+06, 0.101584138623298597E+06, 0.101534372942937815E+06, + 0.101476149074961329E+06, 0.101410568098193849E+06, 0.101343974609530458E+06, 0.101270896963409337E+06, 0.101192137510717424E+06, + 0.101108880683603289E+06, 0.101022724309234283E+06, 0.100935715390839119E+06, 0.100850390680374665E+06, 0.100774745624155403E+06, + 0.100703597598235123E+06, 0.100641200968575649E+06, 0.100589854186508950E+06, 0.100551830710988637E+06, 0.100529267606730675E+06, + 0.100528295556730111E+06, 0.100549682448172025E+06, 0.100589658714417616E+06, 0.100646339245096955E+06, 0.100716647083594595E+06, + 0.100796330849082777E+06, 0.100862509969368170E+06, 0.100921980592583743E+06, 0.100978572070364797E+06, 0.101033342690100937E+06, + 0.101086524659137300E+06, 0.101137201268390738E+06, 0.101183872284207260E+06, 0.101229010938212319E+06, 0.101273109489612165E+06, + 0.101316619892713090E+06, 0.101361395459038307E+06, 0.101412097251747749E+06, 0.101462443230712757E+06, 0.101510984330326377E+06, + 0.101556016862365155E+06, 0.101593723038725308E+06, 0.101622224707454676E+06, 0.101642725690420295E+06, 0.101656123946685548E+06, + 0.101662476115757090E+06, 0.101646779923387396E+06, 0.101626132803217159E+06, 0.101605491482854268E+06, 0.101589147781629013E+06, + 0.101585251139149026E+06, 0.101593208937773641E+06, 0.101612184718608827E+06, 0.101643206312575028E+06, 0.101695818816071987E+06, + 0.101764928221785813E+06, 0.101840193899589591E+06, 0.101916494038259974E+06, 0.101982907500618603E+06, 0.102040970845980133E+06, + 0.102091837845918839E+06, 0.102134078254784647E+06, 0.102164394058369740E+06, 0.102183887971255608E+06, 0.102192909965391460E+06, + 0.102191628213096585E+06, 0.102180725302393228E+06, 0.102161729213580154E+06, 0.102136138522838941E+06, 0.102107142982990175E+06, + 0.102074807010027405E+06, 0.102039103318180598E+06, 0.102000767273371166E+06, 0.101960362993373739E+06, 0.101918302600709168E+06, + 0.101875356744285367E+06, 0.101830760544282428E+06, 0.101787058843222650E+06, 0.101746854946198102E+06, 0.101712081627763269E+06, + 0.101684170852595838E+06, 0.101663959106856215E+06, 0.101652494286064044E+06, 0.101669560085676902E+06, 0.101704444840698343E+06, + 0.101700571875176043E+06, 0.101721535240709272E+06, 0.101745779185469408E+06, 0.101743873285487498E+06, 0.101738112527286779E+06, + 0.101730354652939321E+06, 0.101722249363334777E+06, 0.101714810079808434E+06, 0.101708639567806546E+06, 0.101706113756708350E+06, + 0.101714036658689380E+06, 0.101722369687996295E+06, 0.101728359378835914E+06, 0.101725407412529981E+06, 0.101714092896974922E+06, + 0.101695958827062772E+06, 0.101670373525743838E+06, 0.101635678816692453E+06, 0.101595418488830386E+06, 0.101550830010831283E+06, + 0.101501001127021242E+06, 0.101448446456819016E+06, 0.101396954698346424E+06, 0.101348845039631386E+06, 0.101304062386825870E+06, + 0.101267451987425215E+06, 0.101242193004994537E+06, 0.101233636404356381E+06, 0.101254846780972948E+06, 0.101287816325990920E+06, + 0.101328479900242310E+06, 0.101372263340125617E+06, 0.101414617472293321E+06, 0.101455579958959497E+06, 0.101492853465017077E+06, + 0.101523278594798670E+06, 0.101540885808085994E+06, 0.101551450070809791E+06, 0.101555278183125236E+06, 0.101552538038431827E+06, + 0.101533468414678850E+06, 0.101508500675057512E+06, 0.101482796927905787E+06, 0.101462379842144772E+06, 0.101454892688142470E+06, + 0.101464325466535738E+06, 0.101484135316789325E+06, 0.101513829601535981E+06, 0.101552601163330517E+06, 0.101603687744035284E+06, + 0.101663791684624332E+06, 0.101727767774695865E+06, 0.101792762408730807E+06, 0.101856171640086162E+06, 0.101914393070144404E+06, + 0.101966522189743861E+06, 0.102012469486766611E+06, 0.102051444457628037E+06, 0.102084940153698932E+06, 0.102109046172999864E+06, + 0.102120432478447823E+06, 0.102128404810622902E+06, 0.102134103220031029E+06, 0.100537775584916468E+06, 0.100594064464056602E+06, + 0.100658361556240663E+06, 0.100729672253821584E+06, 0.100806792979668055E+06, 0.100888331818478662E+06, 0.100972640703881028E+06, + 0.101054356923499276E+06, 0.101136218305642746E+06, 0.101218059282136164E+06, 0.101297128938538604E+06, 0.101371075949467442E+06, + 0.101438396724319813E+06, 0.101497631946100053E+06, 0.101547424352719638E+06, 0.101586575081165560E+06, 0.101605344305898223E+06, + 0.101611802560867160E+06, 0.101607062825132700E+06, 0.101591492022024759E+06, 0.101565740711957988E+06, 0.101530433274754861E+06, + 0.101485334233030881E+06, 0.101432291750987933E+06, 0.101377329376169117E+06, 0.101317207789115375E+06, 0.101251671625233779E+06, + 0.101181417558871472E+06, 0.101107498655681804E+06, 0.101031350521440603E+06, 0.100954821051961742E+06, 0.100889588668171375E+06, + 0.100831564213864112E+06, 0.100778330447916189E+06, 0.100731315465427993E+06, 0.100686629349019524E+06, 0.100649847468544394E+06, + 0.100626941602005361E+06, 0.100623247975728824E+06, 0.100634858419738637E+06, 0.100661484011766472E+06, 0.100701891329741135E+06, + 0.100753800334865009E+06, 0.100807541818709986E+06, 0.100848659308669099E+06, 0.100892548219874385E+06, 0.100938268977634565E+06, + 0.100984815257879964E+06, 0.101031244555508310E+06, 0.101077229148432787E+06, 0.101120811543651638E+06, 0.101163080762204729E+06, + 0.101205133328227632E+06, 0.101247555470727515E+06, 0.101295212705033598E+06, 0.101345677435592734E+06, 0.101395414916676789E+06, + 0.101443142113523310E+06, 0.101487391928729412E+06, 0.101523112860496927E+06, 0.101551091220213115E+06, 0.101571202362138647E+06, + 0.101582765233024111E+06, 0.101580576420733298E+06, 0.101559006090641735E+06, 0.101532638260340871E+06, 0.101505636854472148E+06, + 0.101482925905383032E+06, 0.101478221569192814E+06, 0.101483749961331385E+06, 0.101500913638159356E+06, 0.101531272427147036E+06, + 0.101587537367870260E+06, 0.101657752923680528E+06, 0.101735341257440305E+06, 0.101815392189158199E+06, 0.101883415778570139E+06, + 0.101946670918334348E+06, 0.102005217869353437E+06, 0.102057696492837160E+06, 0.102103056512906318E+06, 0.102140317424393026E+06, + 0.102168554530401248E+06, 0.102186118819968382E+06, 0.102192209463688341E+06, 0.102189750578587409E+06, 0.102179864477714669E+06, + 0.102164622014063440E+06, 0.102144222519251431E+06, 0.102119031801210527E+06, 0.102090001778615697E+06, 0.102058500322085427E+06, + 0.102024456224525828E+06, 0.101988984142914618E+06, 0.101952414757101811E+06, 0.101915891308398845E+06, 0.101881589770049075E+06, + 0.101851270386932039E+06, 0.101822396029631869E+06, 0.101797879312661476E+06, 0.101778855518825338E+06, 0.101766764384149530E+06, + 0.101767117846749301E+06, 0.101765125533417420E+06, 0.101764893632733350E+06, 0.101755791518637372E+06, 0.101738415072208983E+06, + 0.101717693412627370E+06, 0.101697849566573597E+06, 0.101679653680022544E+06, 0.101666036116405725E+06, 0.101657802915804903E+06, + 0.101659358381537619E+06, 0.101675042132274451E+06, 0.101690591932105221E+06, 0.101702102691112683E+06, 0.101698890266004499E+06, + 0.101685170063431069E+06, 0.101664399827034271E+06, 0.101636981850683907E+06, 0.101602430202209493E+06, 0.101562887328751778E+06, + 0.101519409569218289E+06, 0.101470958313536248E+06, 0.101419317694792786E+06, 0.101368660117972962E+06, 0.101321145110236859E+06, + 0.101276071087296979E+06, 0.101238240695380387E+06, 0.101211277007847661E+06, 0.101197902530338179E+06, 0.101215581555680212E+06, + 0.101246094621904544E+06, 0.101284825497456564E+06, 0.101328072813235674E+06, 0.101370225701783012E+06, 0.101411514155655474E+06, + 0.101449747457354388E+06, 0.101482930506732373E+06, 0.101505336383574511E+06, 0.101520932260299305E+06, 0.101530875621757339E+06, + 0.101535660531138637E+06, 0.101527586118792417E+06, 0.101509422337400800E+06, 0.101491464951296075E+06, 0.101477501245060659E+06, + 0.101471117495995146E+06, 0.101486007619632292E+06, 0.101510757134502812E+06, 0.101544449952577212E+06, 0.101586055913800505E+06, + 0.101635695535260849E+06, 0.101695729268481853E+06, 0.101758721424995805E+06, 0.101822050355179599E+06, 0.101883639102236455E+06, + 0.101943513401448537E+06, 0.101994845858460889E+06, 0.102039591261445501E+06, 0.102076829661285185E+06, 0.102105964877399136E+06, + 0.102126794141653125E+06, 0.102139212624906431E+06, 0.102146437567661822E+06, 0.102150500772487969E+06, 0.100529766660700814E+06, + 0.100584936771645967E+06, 0.100647449978120101E+06, 0.100716367627817162E+06, 0.100790551176116554E+06, 0.100867761991881081E+06, + 0.100944392016551021E+06, 0.101022283363768598E+06, 0.101100094859150340E+06, 0.101176390860314190E+06, 0.101249683961219664E+06, + 0.101319429056106397E+06, 0.101383533080313195E+06, 0.101439851116198683E+06, 0.101486953091034593E+06, 0.101514035380600777E+06, + 0.101530274350960754E+06, 0.101536503930903316E+06, 0.101532791192708028E+06, 0.101519414459226711E+06, 0.101496896545514726E+06, + 0.101466032997577611E+06, 0.101427914819550628E+06, 0.101386928031759133E+06, 0.101339510051842895E+06, 0.101286534144961479E+06, + 0.101229073267725224E+06, 0.101167697805292846E+06, 0.101103306882333491E+06, 0.101037149535454111E+06, 0.100976699320003900E+06, + 0.100924651148493227E+06, 0.100875357695395811E+06, 0.100829790933326149E+06, 0.100789063316662927E+06, 0.100754382631035871E+06, + 0.100727001544673127E+06, 0.100712812235705482E+06, 0.100707393276471601E+06, 0.100709250582931563E+06, 0.100722573388958059E+06, + 0.100746645734061545E+06, 0.100779895700786001E+06, 0.100804396943602027E+06, 0.100830073367685545E+06, 0.100859556300720957E+06, + 0.100892387870409642E+06, 0.100927975633083144E+06, 0.100965551602012056E+06, 0.101004683619487085E+06, 0.101045330597207460E+06, + 0.101087013008305672E+06, 0.101129446011777312E+06, 0.101173089623770706E+06, 0.101224746709176397E+06, 0.101276086346010212E+06, + 0.101326149198708168E+06, 0.101374129662616979E+06, 0.101418481717269460E+06, 0.101456308681409500E+06, 0.101487100471046055E+06, + 0.101509891159304345E+06, 0.101523887972284254E+06, 0.101519085107067789E+06, 0.101499035636973305E+06, 0.101474107212159681E+06, + 0.101448532598947975E+06, 0.101428087461135481E+06, 0.101420183587270294E+06, 0.101421890388346379E+06, 0.101434924963140438E+06, + 0.101461175739645623E+06, 0.101512942173575240E+06, 0.101576674737662266E+06, 0.101648311032956131E+06, 0.101723489882150840E+06, + 0.101787480132178534E+06, 0.101850028038504926E+06, 0.101910282046108841E+06, 0.101967661149882086E+06, 0.102023524732844948E+06, + 0.102074242265323439E+06, 0.102118210977073832E+06, 0.102152171123111169E+06, 0.102173114540454029E+06, 0.102185669537254769E+06, + 0.102190716001940251E+06, 0.102189608656019511E+06, 0.102183136999173483E+06, 0.102171644521202223E+06, 0.102155743904811548E+06, + 0.102135288964191917E+06, 0.102110694874428111E+06, 0.102083194402445937E+06, 0.102053140888443799E+06, 0.102023029614340878E+06, + 0.101994305634375618E+06, 0.101968130490490352E+06, 0.101944981816832049E+06, 0.101917533305451230E+06, 0.101891792228334729E+06, + 0.101867962161627947E+06, 0.101846942835226117E+06, 0.101828399128989535E+06, 0.101808349218342468E+06, 0.101783185169399527E+06, + 0.101752129728330387E+06, 0.101717730687555537E+06, 0.101682415904166002E+06, 0.101651064189548269E+06, 0.101628214835530569E+06, + 0.101615101470726600E+06, 0.101622078677434256E+06, 0.101640462768905272E+06, 0.101659951220889372E+06, 0.101675418801938606E+06, + 0.101673225878615136E+06, 0.101661928138148622E+06, 0.101642662123728296E+06, 0.101615888022248750E+06, 0.101582080924031965E+06, + 0.101543348953446970E+06, 0.101500631267208417E+06, 0.101452586432289259E+06, 0.101401256146737229E+06, 0.101350655526253569E+06, + 0.101302884790491065E+06, 0.101258041134635379E+06, 0.101219975854280870E+06, 0.101192075948155878E+06, 0.101176911767419486E+06, + 0.101189137340948175E+06, 0.101215695508690798E+06, 0.101250828629981872E+06, 0.101291224981271953E+06, 0.101331080207125036E+06, + 0.101370380504028988E+06, 0.101408081153893057E+06, 0.101442820210735677E+06, 0.101470980944890180E+06, 0.101493569638212546E+06, + 0.101512139169726375E+06, 0.101526611096755121E+06, 0.101532495997983948E+06, 0.101522627542459595E+06, 0.101512420265735462E+06, + 0.101505304745591246E+06, 0.101504334695817597E+06, 0.101519650872094615E+06, 0.101547899391185740E+06, 0.101583965970937570E+06, + 0.101627433236286277E+06, 0.101678082609776582E+06, 0.101737298190423375E+06, 0.101799968663717998E+06, 0.101862212637869627E+06, + 0.101921525254885390E+06, 0.101975615485969174E+06, 0.102022129365600340E+06, 0.102060753757629835E+06, 0.102091435012152549E+06, + 0.102114037703653419E+06, 0.102128864386004381E+06, 0.102136712377933785E+06, 0.102141341896670521E+06, 0.102142376150148193E+06, + 0.100523535976660394E+06, 0.100577052820581303E+06, 0.100637236479140498E+06, 0.100703252727134633E+06, 0.100772552025250538E+06, + 0.100843355148487011E+06, 0.100916200005643404E+06, 0.100989978980367348E+06, 0.101063458978865412E+06, 0.101135313180651341E+06, + 0.101204158192835064E+06, 0.101268596961150513E+06, 0.101327267803054579E+06, 0.101379219393509498E+06, 0.101411658551840825E+06, + 0.101435013304419204E+06, 0.101449723991433348E+06, 0.101455671589434161E+06, 0.101452876078218949E+06, 0.101441532989260799E+06, + 0.101422046210621003E+06, 0.101395056661309005E+06, 0.101365757780455795E+06, 0.101332677387078918E+06, 0.101293673363073496E+06, + 0.101249457127459696E+06, 0.101201011753970408E+06, 0.101149108558075517E+06, 0.101094587629913221E+06, 0.101040779590145175E+06, + 0.100995382496306906E+06, 0.100951579695860622E+06, 0.100909850434587090E+06, 0.100870858422985533E+06, 0.100835419863702089E+06, + 0.100804467614276640E+06, 0.100781685669042199E+06, 0.100767335396187831E+06, 0.100759289879836622E+06, 0.100757866722066232E+06, + 0.100763078005519506E+06, 0.100774506516805646E+06, 0.100786062954307781E+06, 0.100793269206959361E+06, 0.100804822422906916E+06, + 0.100820834091496698E+06, 0.100841255618750598E+06, 0.100865889078778535E+06, 0.100894749198775666E+06, 0.100927416956011424E+06, + 0.100963395796724551E+06, 0.101002315623510774E+06, 0.101043887250100248E+06, 0.101091039191901757E+06, 0.101144066547046401E+06, + 0.101197932497966991E+06, 0.101251195535936524E+06, 0.101302429885710808E+06, 0.101350642114984890E+06, 0.101394018940216731E+06, + 0.101430608604817069E+06, 0.101459057570376521E+06, 0.101478044590623220E+06, 0.101475387865733283E+06, 0.101461856537208994E+06, + 0.101443018892087159E+06, 0.101422586718123261E+06, 0.101406882059484167E+06, 0.101400350668646613E+06, 0.101401136819027641E+06, + 0.101411047287252732E+06, 0.101432998273655045E+06, 0.101475019664207721E+06, 0.101526976345226532E+06, 0.101585936905203198E+06, + 0.101648470322235924E+06, 0.101703644183282871E+06, 0.101759331828263079E+06, 0.101814866055730265E+06, 0.101869901220545507E+06, + 0.101928914084517004E+06, 0.101985712555209233E+06, 0.102038213057230983E+06, 0.102083503006818413E+06, 0.102116318481194263E+06, + 0.102142478770143352E+06, 0.102162510227578357E+06, 0.102176745632176331E+06, 0.102185382260760132E+06, 0.102189351865029588E+06, + 0.102188985060908250E+06, 0.102181978502190381E+06, 0.102166343098074416E+06, 0.102144949217122790E+06, 0.102118539343817305E+06, + 0.102090320241642432E+06, 0.102064949154931208E+06, 0.102041510471142406E+06, 0.102020894051233234E+06, 0.102002076919490239E+06, + 0.101978687982916701E+06, 0.101949947159686926E+06, 0.101920721729201105E+06, 0.101890840787188339E+06, 0.101858502442174227E+06, + 0.101821787050020226E+06, 0.101779170614060145E+06, 0.101731633607835785E+06, 0.101683872606227975E+06, 0.101641706250363815E+06, + 0.101609757163432500E+06, 0.101594408710602715E+06, 0.101599861763739507E+06, 0.101615600568650814E+06, 0.101634792862023707E+06, + 0.101649560822422354E+06, 0.101653324074520948E+06, 0.101647718645786255E+06, 0.101632892509714380E+06, 0.101607498410070068E+06, + 0.101573604987650251E+06, 0.101534332171428061E+06, 0.101490882315485491E+06, 0.101441914985506301E+06, 0.101390598505943577E+06, + 0.101340225499994325E+06, 0.101292893172337470E+06, 0.101249121490931240E+06, 0.101212206615971038E+06, 0.101184803983927792E+06, + 0.101169090523178049E+06, 0.101177216406820677E+06, 0.101199121436619549E+06, 0.101229487274117826E+06, 0.101265433425285810E+06, + 0.101301460838134211E+06, 0.101337546551032807E+06, 0.101373572179327981E+06, 0.101408481747705810E+06, 0.101441269413672373E+06, + 0.101471589979924611E+06, 0.101499094210238720E+06, 0.101523046431578827E+06, 0.101542483002773370E+06, 0.101543831013172356E+06, + 0.101544064378257113E+06, 0.101546276856648081E+06, 0.101553107004487800E+06, 0.101570758226424994E+06, 0.101603899362922981E+06, + 0.101643466171828870E+06, 0.101688020902613556E+06, 0.101736066489577410E+06, 0.101788778651382352E+06, 0.101846229772819366E+06, + 0.101902087545993330E+06, 0.101954243560902876E+06, 0.102000912067655503E+06, 0.102040460468150268E+06, 0.102070397922830496E+06, + 0.102092123176266672E+06, 0.102106027606901625E+06, 0.102112955537274407E+06, 0.102114233430400913E+06, 0.102110160726652859E+06, + 0.102103564706523437E+06, 0.100518689604693471E+06, 0.100570188968489383E+06, 0.100627085580226092E+06, 0.100688425846865008E+06, + 0.100752801664219747E+06, 0.100819711434372482E+06, 0.100888275239485200E+06, 0.100957467842034559E+06, 0.101026141537060103E+06, + 0.101093053338000958E+06, 0.101156896762082222E+06, 0.101216338486683555E+06, 0.101270050228910055E+06, 0.101303959592322863E+06, + 0.101331155104026548E+06, 0.101351367252466414E+06, 0.101364631606699608E+06, 0.101370354947362532E+06, 0.101368511938952593E+06, + 0.101359219879845390E+06, 0.101342770712901329E+06, 0.101323279228074665E+06, 0.101301442257920979E+06, 0.101274216777385765E+06, + 0.101241963101549714E+06, 0.101205245491941663E+06, 0.101164856326946916E+06, 0.101121839477416492E+06, 0.101077512757932636E+06, + 0.101040769978266762E+06, 0.101003816768457153E+06, 0.100967482943484662E+06, 0.100932599047362921E+06, 0.100899538621347674E+06, + 0.100868835073115974E+06, 0.100841822788138859E+06, 0.100822146543393857E+06, 0.100806275342578825E+06, 0.100794425676255967E+06, + 0.100786746583171247E+06, 0.100783223558698664E+06, 0.100783580356914550E+06, 0.100777240593710594E+06, 0.100772797244677698E+06, + 0.100771995893256535E+06, 0.100775628518037935E+06, 0.100784330892865575E+06, 0.100798832415402489E+06, 0.100819830174998613E+06, + 0.100845869940026445E+06, 0.100876821716840641E+06, 0.100912505059014773E+06, 0.100952732377084161E+06, 0.101002888396750073E+06, + 0.101057716858402928E+06, 0.101114463416698447E+06, 0.101171669964558023E+06, 0.101227895955215106E+06, 0.101283382095900626E+06, + 0.101334958226825765E+06, 0.101380444142405948E+06, 0.101418245220739525E+06, 0.101446407440058887E+06, 0.101450870781566424E+06, + 0.101446840525337553E+06, 0.101437171069169228E+06, 0.101424931486162226E+06, 0.101415799787063268E+06, 0.101412071436230064E+06, + 0.101412950725123417E+06, 0.101420014842418866E+06, 0.101435968083775937E+06, 0.101466352271600088E+06, 0.101503661068658505E+06, + 0.101546063702057072E+06, 0.101591631627750539E+06, 0.101633780932880036E+06, 0.101677233535571504E+06, 0.101722001382731454E+06, + 0.101768084603012278E+06, 0.101821697636718192E+06, 0.101876504987276159E+06, 0.101929725277785576E+06, 0.101979436992402916E+06, + 0.102021048948978249E+06, 0.102058738337406423E+06, 0.102093407361196325E+06, 0.102125483850517805E+06, 0.102150396359340550E+06, + 0.102169939569479524E+06, 0.102183985952502859E+06, 0.102191376525420768E+06, 0.102185685603385369E+06, 0.102169450367412603E+06, + 0.102146358644484295E+06, 0.102119842646822071E+06, 0.102094075555721618E+06, 0.102073636097204362E+06, 0.102056299206566269E+06, + 0.102039605800132485E+06, 0.102021374390271580E+06, 0.101998770599080817E+06, 0.101970853166201807E+06, 0.101937971227922506E+06, + 0.101900413338984057E+06, 0.101857321774920129E+06, 0.101808436773914334E+06, 0.101755010517902134E+06, 0.101701108954033160E+06, + 0.101652170013780356E+06, 0.101614009141804403E+06, 0.101594396568573589E+06, 0.101591391668390439E+06, 0.101601222158549106E+06, + 0.101618244864968845E+06, 0.101635666146591233E+06, 0.101645911116270872E+06, 0.101646699642323045E+06, 0.101636431221179548E+06, + 0.101609654908569675E+06, 0.101575048385323738E+06, 0.101534330175456344E+06, 0.101489532139668852E+06, 0.101438185377782967E+06, + 0.101385959560380783E+06, 0.101335194667244825E+06, 0.101287926354806812E+06, 0.101245203663320397E+06, 0.101209646717536321E+06, + 0.101183113534233489E+06, 0.101167399256673903E+06, 0.101173255047212093E+06, 0.101191266867459737E+06, 0.101217555082850216E+06, + 0.101249738922742486E+06, 0.101282540292244405E+06, 0.101316175523455371E+06, 0.101351248733287808E+06, 0.101387035478988051E+06, + 0.101423676548066695E+06, 0.101461316613871037E+06, 0.101497507316982592E+06, 0.101531170814716766E+06, 0.101561263551730270E+06, + 0.101576206116756410E+06, 0.101586714996634080E+06, 0.101597778963160541E+06, 0.101611464789349586E+06, 0.101630169532632644E+06, + 0.101664927306783313E+06, 0.101704113353483583E+06, 0.101746416585083251E+06, 0.101790584390523509E+06, 0.101835630759291264E+06, + 0.101885286326592308E+06, 0.101932452931491775E+06, 0.101975582690834839E+06, 0.102013491689891205E+06, 0.102045391567770363E+06, + 0.102064776694095723E+06, 0.102074647376751818E+06, 0.102077355461506435E+06, 0.102073009372423272E+06, 0.102062037114194260E+06, + 0.102045197475351029E+06, 0.102032862053345467E+06, 0.100516203599419721E+06, 0.100565218916304395E+06, 0.100617260891664730E+06, + 0.100673956912948721E+06, 0.100734470974993252E+06, 0.100796865106346027E+06, 0.100860518975916333E+06, 0.100924514220946570E+06, + 0.100987769915576093E+06, 0.101049106773664753E+06, 0.101107273840837661E+06, 0.101159905161335395E+06, 0.101194545284544540E+06, + 0.101223680392232840E+06, 0.101247089234949191E+06, 0.101264590537126525E+06, 0.101276076890375974E+06, 0.101281552099694847E+06, + 0.101280982310362175E+06, 0.101273943686812767E+06, 0.101262940282394411E+06, 0.101250027136122240E+06, 0.101232503141791327E+06, + 0.101210483653828545E+06, 0.101184228737493526E+06, 0.101154165002910086E+06, 0.101120906752935975E+06, 0.101085276329601198E+06, + 0.101055059197187191E+06, 0.101026747435691374E+06, 0.100998039675420368E+06, 0.100969366867174089E+06, 0.100941239345533730E+06, + 0.100914229378812437E+06, 0.100888324815689179E+06, 0.100866108957016506E+06, 0.100846788167441075E+06, 0.100829635550168416E+06, + 0.100814589974162533E+06, 0.100801624509251793E+06, 0.100790670060632678E+06, 0.100777235449754880E+06, 0.100759761272309115E+06, + 0.100744498201414157E+06, 0.100732510380326974E+06, 0.100724806452672536E+06, 0.100722312648745443E+06, 0.100727124797232929E+06, + 0.100739250727341408E+06, 0.100757924088756554E+06, 0.100783210335334952E+06, 0.100815143464493012E+06, 0.100854893070929611E+06, + 0.100907659832364327E+06, 0.100964923673006793E+06, 0.101024919613124526E+06, 0.101086575092280807E+06, 0.101148693938726588E+06, + 0.101212491181683130E+06, 0.101273236178490639E+06, 0.101328963344270000E+06, 0.101377761563192791E+06, 0.101415272026218052E+06, + 0.101431876200949133E+06, 0.101440210101162083E+06, 0.101442472419936472E+06, 0.101441025799434588E+06, 0.101440273436921474E+06, + 0.101441412028859413E+06, 0.101444242700126299E+06, 0.101450026358596937E+06, 0.101460476599565445E+06, 0.101479171248484825E+06, + 0.101501585380914767E+06, 0.101526832551874162E+06, 0.101554045751632453E+06, 0.101581088175181358E+06, 0.101609436210866566E+06, + 0.101639553558900094E+06, 0.101671699640266219E+06, 0.101712219603055011E+06, 0.101758423241378463E+06, 0.101805738585399682E+06, + 0.101852962314692355E+06, 0.101899310754771403E+06, 0.101946265190960024E+06, 0.101994211955312698E+06, 0.102041986736160048E+06, + 0.102085797585756969E+06, 0.102118247218596109E+06, 0.102143944256965377E+06, 0.102160780837746963E+06, 0.102166943569605079E+06, + 0.102158326056491831E+06, 0.102140886616651740E+06, 0.102119658913957755E+06, 0.102098499930418155E+06, 0.102080904999102844E+06, + 0.102066516422517074E+06, 0.102054504472527260E+06, 0.102039748545332608E+06, 0.102020600907278713E+06, 0.101995196360471018E+06, + 0.101963875490564329E+06, 0.101926792596088359E+06, 0.101883686482137069E+06, 0.101834681537134267E+06, 0.101781342698296125E+06, + 0.101725325815194636E+06, 0.101672635846780700E+06, 0.101631506833831096E+06, 0.101606236395939879E+06, 0.101597475949642787E+06, + 0.101603731801431582E+06, 0.101625616805930535E+06, 0.101646355193644980E+06, 0.101660903200991379E+06, 0.101665697733909154E+06, + 0.101654090491919997E+06, 0.101628201204639379E+06, 0.101592718579965003E+06, 0.101550440364196067E+06, 0.101501865690094695E+06, + 0.101447993110863157E+06, 0.101394085224710812E+06, 0.101342099839650211E+06, 0.101293810362817196E+06, 0.101250946740538144E+06, + 0.101215426073013630E+06, 0.101188872150540003E+06, 0.101172928312290038E+06, 0.101177855232292422E+06, 0.101192799356549629E+06, + 0.101215813274799773E+06, 0.101244944643138500E+06, 0.101275131726042877E+06, 0.101307174081444085E+06, 0.101341749283816956E+06, + 0.101378289914467692E+06, 0.101417332589792815E+06, 0.101459925058367837E+06, 0.101502062670976826E+06, 0.101542401965262659E+06, + 0.101579707707947498E+06, 0.101605443608385016E+06, 0.101624638835457939E+06, 0.101643143897028465E+06, 0.101662631727210814E+06, + 0.101684583160134658E+06, 0.101717073342919160E+06, 0.101753756733753267E+06, 0.101791888041425977E+06, 0.101829704004501327E+06, + 0.101866836453342432E+06, 0.101904943611418348E+06, 0.101941838182645661E+06, 0.101974805182480457E+06, 0.102002312012851093E+06, + 0.102022951004307251E+06, 0.102034588422611414E+06, 0.102035115083442288E+06, 0.102027670824049870E+06, 0.102012988929236992E+06, + 0.101992061827493861E+06, 0.101966142466949459E+06, 0.101941390128694227E+06, 0.100514970796833106E+06, 0.100558835077606142E+06, + 0.100607260398477549E+06, 0.100659655071357542E+06, 0.100715265417817398E+06, 0.100773178786940116E+06, 0.100832331209467477E+06, + 0.100890717506978282E+06, 0.100947860531606886E+06, 0.101002917974898708E+06, 0.101052195859970219E+06, 0.101086008388641625E+06, + 0.101115273930014009E+06, 0.101139857117029198E+06, 0.101159622269959131E+06, 0.101174458955507551E+06, 0.101184310219007501E+06, + 0.101189203551941042E+06, 0.101189284643897758E+06, 0.101186114007991724E+06, 0.101181270068826241E+06, 0.101171908271853448E+06, + 0.101158297091944536E+06, 0.101141013465808763E+06, 0.101120226925708761E+06, 0.101096239397641839E+06, 0.101069503529764173E+06, + 0.101044711943530012E+06, 0.101023498931715556E+06, 0.101001656961748697E+06, 0.100979308414565210E+06, 0.100956646567351941E+06, + 0.100933930245713549E+06, 0.100911474196776457E+06, 0.100891471408871366E+06, 0.100874184642035718E+06, 0.100856582877880370E+06, + 0.100838800023023141E+06, 0.100821055717833835E+06, 0.100804211342234223E+06, 0.100787393558680691E+06, 0.100761008720101294E+06, + 0.100734732500141792E+06, 0.100710174312875781E+06, 0.100688451173672947E+06, 0.100670708926784253E+06, 0.100658093134885828E+06, + 0.100653547542059678E+06, 0.100656000772829168E+06, 0.100665921580032358E+06, 0.100683713857153736E+06, 0.100709718860814537E+06, + 0.100748801228508208E+06, 0.100801823503565058E+06, 0.100861225414351109E+06, 0.100925234962917515E+06, 0.100992162379509042E+06, + 0.101061180367843728E+06, 0.101132825200904612E+06, 0.101202551905614309E+06, 0.101268249128093084E+06, 0.101327796560415067E+06, + 0.101375435871056281E+06, 0.101404641442907785E+06, 0.101425758115715638E+06, 0.101440394650381306E+06, 0.101450217422559756E+06, + 0.101458727822546076E+06, 0.101466619611513932E+06, 0.101473463661342525E+06, 0.101480183000528341E+06, 0.101487645084924108E+06, + 0.101498004691627488E+06, 0.101508871394480026E+06, 0.101520205876727661E+06, 0.101532083912951843E+06, 0.101544647478942308E+06, + 0.101558096380653675E+06, 0.101573050568899664E+06, 0.101590428478391070E+06, 0.101613972514299414E+06, 0.101648920007989669E+06, + 0.101687381188284504E+06, 0.101728410452743919E+06, 0.101771447499673959E+06, 0.101823102602039115E+06, 0.101880173737650490E+06, + 0.101939952057504197E+06, 0.101998671132745076E+06, 0.102047778748635392E+06, 0.102081283700837084E+06, 0.102104626314851310E+06, + 0.102117132803555040E+06, 0.102118423258010647E+06, 0.102110210033883151E+06, 0.102097574911021075E+06, 0.102084451243621195E+06, + 0.102073635202554215E+06, 0.102064362043080371E+06, 0.102055076068754133E+06, 0.102042482878204013E+06, 0.102025288372749041E+06, + 0.102001685111197468E+06, 0.101971967159961292E+06, 0.101935955157193923E+06, 0.101893991729276575E+06, 0.101846831752592378E+06, + 0.101795519670136433E+06, 0.101743547706146055E+06, 0.101695867126943878E+06, 0.101657509946900449E+06, 0.101633507015335563E+06, + 0.101630312812292759E+06, 0.101646392192630388E+06, 0.101668889131485266E+06, 0.101690704618882228E+06, 0.101706951776862203E+06, + 0.101710803657395867E+06, 0.101698215938497582E+06, 0.101672792047461742E+06, 0.101636565396570542E+06, 0.101592796399993240E+06, + 0.101539557371443312E+06, 0.101482505549964961E+06, 0.101424993232468783E+06, 0.101369854642081831E+06, 0.101318588912198626E+06, + 0.101273234899637857E+06, 0.101235886605930398E+06, 0.101207937266056106E+06, 0.101192654572110885E+06, 0.101195023201913122E+06, + 0.101207165308628755E+06, 0.101227217799392965E+06, 0.101253372828479289E+06, 0.101281097568006837E+06, 0.101311856149601605E+06, + 0.101345648585710995E+06, 0.101381904947258168E+06, 0.101421272631944972E+06, 0.101465042995991040E+06, 0.101508835313142772E+06, + 0.101551196503329018E+06, 0.101590747790927970E+06, 0.101621682377021876E+06, 0.101645776231220763E+06, 0.101668026172758953E+06, + 0.101689491310640093E+06, 0.101711039834481373E+06, 0.101739312046503386E+06, 0.101772112447843610E+06, 0.101804858575323728E+06, + 0.101836540790179512E+06, 0.101866167898941654E+06, 0.101895518959796798E+06, 0.101925181845865300E+06, 0.101950074886373186E+06, + 0.101969061543749413E+06, 0.101981139844382837E+06, 0.101985462621642117E+06, 0.101977051366888656E+06, 0.101959701573010476E+06, + 0.101935377351789808E+06, 0.101905526341066099E+06, 0.101871781260336036E+06, 0.101835950124052295E+06, 0.100513581366792612E+06, + 0.100554019513422492E+06, 0.100598330045055409E+06, 0.100645982440550681E+06, 0.100696296648474527E+06, 0.100748444268485124E+06, + 0.100801453596632928E+06, 0.100854218792530621E+06, 0.100905513420273754E+06, 0.100949903492433834E+06, 0.100981652101286920E+06, + 0.101009573882022771E+06, 0.101033642379315977E+06, 0.101053802681678295E+06, 0.101069990410599494E+06, 0.101082152783372076E+06, + 0.101090271780979238E+06, 0.101094389439540580E+06, 0.101095654589873608E+06, 0.101096426446181518E+06, 0.101093666576257223E+06, + 0.101087429979991794E+06, 0.101077885304853742E+06, 0.101065339866105438E+06, 0.101050264366095507E+06, 0.101032061623940666E+06, + 0.101012844290179608E+06, 0.100996964302313558E+06, 0.100980770382518007E+06, 0.100964167390490678E+06, 0.100947108284160218E+06, + 0.100929597010366851E+06, 0.100911688070060860E+06, 0.100893582156858451E+06, 0.100881499094758808E+06, 0.100868335774262508E+06, + 0.100853829088449522E+06, 0.100837798044627038E+06, 0.100820106254778977E+06, 0.100800619132333683E+06, 0.100775042434612522E+06, + 0.100741873481754403E+06, 0.100707732498585203E+06, 0.100674198173852987E+06, 0.100642873485934600E+06, 0.100616787946543613E+06, + 0.100595574493244218E+06, 0.100580853452354946E+06, 0.100573369371954352E+06, 0.100573991194533155E+06, 0.100583507950136642E+06, + 0.100602650207284896E+06, 0.100640744734742359E+06, 0.100692244893923940E+06, 0.100751760770043053E+06, 0.100817532941637197E+06, + 0.100887787830291069E+06, 0.100962050144272376E+06, 0.101039744081827113E+06, 0.101116778936214221E+06, 0.101190892544115282E+06, + 0.101259778024939151E+06, 0.101317175633898092E+06, 0.101357978697233921E+06, 0.101390994520218446E+06, 0.101417406025828648E+06, + 0.101438439369066997E+06, 0.101456877295130529E+06, 0.101473268310223793E+06, 0.101486701484946811E+06, 0.101497860785624449E+06, + 0.101507276039524368E+06, 0.101514237723266677E+06, 0.101518949933443597E+06, 0.101522085026395580E+06, 0.101524243387710812E+06, + 0.101525990459469860E+06, 0.101528194232853784E+06, 0.101531700114421837E+06, 0.101537410817429205E+06, 0.101546492305229593E+06, + 0.101567903398293696E+06, 0.101597046994887613E+06, 0.101630996885802393E+06, 0.101669578744430226E+06, 0.101714590729228381E+06, + 0.101773403370424989E+06, 0.101836874445576148E+06, 0.101900881795697991E+06, 0.101960687121667026E+06, 0.102008686461021774E+06, + 0.102037960319300764E+06, 0.102056196723826288E+06, 0.102065273055902842E+06, 0.102066914347914004E+06, 0.102063547681288721E+06, + 0.102059509493393372E+06, 0.102055314339710254E+06, 0.102050951292832178E+06, 0.102044111461623615E+06, 0.102032193928193665E+06, + 0.102014558041099997E+06, 0.101990243188425869E+06, 0.101960364538554975E+06, 0.101925773749474116E+06, 0.101887402236031689E+06, + 0.101845900309227552E+06, 0.101802685936693102E+06, 0.101760172705529054E+06, 0.101722211673123806E+06, 0.101698120911338105E+06, + 0.101693242621827798E+06, 0.101701200555816351E+06, 0.101719376001235738E+06, 0.101743123574903206E+06, 0.101765016750218143E+06, + 0.101780249253377129E+06, 0.101783141086790420E+06, 0.101773015434274668E+06, 0.101749944711398595E+06, 0.101715364981995837E+06, + 0.101666832632786492E+06, 0.101609705385936162E+06, 0.101549151532732372E+06, 0.101488088183680564E+06, 0.101428826013168145E+06, + 0.101371975824192647E+06, 0.101321130368394268E+06, 0.101278514950626632E+06, 0.101245823084732416E+06, 0.101229713571326531E+06, + 0.101228252523962350E+06, 0.101236240082679593E+06, 0.101252202249213733E+06, 0.101274554004038626E+06, 0.101299571284751277E+06, + 0.101328619250470016E+06, 0.101360846988672172E+06, 0.101395461438518367E+06, 0.101432766703864487E+06, 0.101473307204623023E+06, + 0.101514010222445781E+06, 0.101553562190150420E+06, 0.101590717887284656E+06, 0.101621853851409600E+06, 0.101647543893485548E+06, + 0.101671058814602424E+06, 0.101693056210828203E+06, 0.101714129349830531E+06, 0.101738767714405170E+06, 0.101767638107703999E+06, + 0.101795424880191335E+06, 0.101821375190827370E+06, 0.101844797381800585E+06, 0.101865803928462847E+06, 0.101887241456978605E+06, + 0.101903742329332832E+06, 0.101914505259923375E+06, 0.101918870822307275E+06, 0.101916337996088478E+06, 0.101901784739594950E+06, + 0.101874548045828633E+06, 0.101841292001167923E+06, 0.101803678665118787E+06, 0.101762946401782145E+06, 0.101720412831625683E+06, + 0.100515408142486602E+06, 0.100551771547175376E+06, 0.100591372710722571E+06, 0.100633738189236901E+06, 0.100678255595108407E+06, + 0.100724173138854574E+06, 0.100770602351690526E+06, 0.100816524184232330E+06, 0.100854077383907817E+06, 0.100882309305546267E+06, + 0.100908312612091744E+06, 0.100931760805658370E+06, 0.100951200960303162E+06, 0.100967005250871938E+06, 0.100979637398817140E+06, + 0.100989094128378885E+06, 0.100995390483498064E+06, 0.100999335048962457E+06, 0.101003623776222332E+06, 0.101005037852830981E+06, + 0.101003566011062838E+06, 0.100999260214490059E+06, 0.100992254677997669E+06, 0.100982785569327156E+06, 0.100971211282625562E+06, + 0.100958033151982832E+06, 0.100947713227353204E+06, 0.100936845226361344E+06, 0.100925586455398079E+06, 0.100913386427886144E+06, + 0.100900970885727584E+06, 0.100888200173575184E+06, 0.100874969576689109E+06, 0.100865322504112410E+06, 0.100857431942648880E+06, + 0.100848190571948653E+06, 0.100837041611588123E+06, 0.100823522652975458E+06, 0.100807245058683751E+06, 0.100787869439158167E+06, + 0.100757391684316404E+06, 0.100722719302699363E+06, 0.100685949398277124E+06, 0.100648508643416208E+06, 0.100611886678086536E+06, + 0.100577601709138020E+06, 0.100546746024841152E+06, 0.100520863816718731E+06, 0.100501704292206879E+06, 0.100490795320886566E+06, + 0.100489573337377500E+06, 0.100499397978964334E+06, 0.100534016438231076E+06, 0.100580634795179663E+06, 0.100636771821988543E+06, + 0.100700900349775504E+06, 0.100771475161532377E+06, 0.100847971681032548E+06, 0.100928796704597553E+06, 0.101010401416626322E+06, + 0.101090599925904797E+06, 0.101167170271662733E+06, 0.101233921628300508E+06, 0.101285179817018958E+06, 0.101329796645055787E+06, + 0.101368459516926756E+06, 0.101402063972120028E+06, 0.101431554233350747E+06, 0.101457605089509292E+06, 0.101479887700559731E+06, + 0.101498521383338972E+06, 0.101513550784224833E+06, 0.101523174827992611E+06, 0.101527475564510401E+06, 0.101528428909431837E+06, + 0.101526914423630384E+06, 0.101523962459723334E+06, 0.101520309815973524E+06, 0.101516483972158181E+06, 0.101514002315449485E+06, + 0.101514722417862809E+06, 0.101522283068780089E+06, 0.101544056083037300E+06, 0.101571190634249404E+06, 0.101603956939872005E+06, + 0.101642017592925840E+06, 0.101688020789515867E+06, 0.101748771464749283E+06, 0.101810913304749745E+06, 0.101870419614457860E+06, + 0.101923449267402393E+06, 0.101967012984100948E+06, 0.101994050943781331E+06, 0.102011245751808630E+06, 0.102022174558490107E+06, + 0.102029125315834375E+06, 0.102033037791472336E+06, 0.102034394101747268E+06, 0.102032647951692605E+06, 0.102026060860393205E+06, + 0.102014286206869132E+06, 0.101997287902874697E+06, 0.101973908129249903E+06, 0.101945685744995091E+06, 0.101913755487835835E+06, + 0.101879518050633123E+06, 0.101845462413359521E+06, 0.101814438244852194E+06, 0.101787626131292665E+06, 0.101769079269016060E+06, + 0.101760662506367516E+06, 0.101763690025728793E+06, 0.101778245812273221E+06, 0.101800769364128020E+06, 0.101825464810029356E+06, + 0.101849318133198423E+06, 0.101866690516569448E+06, 0.101874423097137915E+06, 0.101868322033511577E+06, 0.101847631400323429E+06, + 0.101809657617465651E+06, 0.101759023134988529E+06, 0.101701048933469734E+06, 0.101638831844116052E+06, 0.101574555754104877E+06, + 0.101509980617449197E+06, 0.101449449533488441E+06, 0.101394594035173650E+06, 0.101347377713062888E+06, 0.101309681379202666E+06, + 0.101289625678805663E+06, 0.101280310168622382E+06, 0.101280601256181355E+06, 0.101289183040688731E+06, 0.101304405647058535E+06, + 0.101324688438220604E+06, 0.101349563357044477E+06, 0.101377976699525767E+06, 0.101409028339016470E+06, 0.101442179995567261E+06, + 0.101476777887449236E+06, 0.101511738303380160E+06, 0.101546126683052818E+06, 0.101579196765551533E+06, 0.101607991498285395E+06, + 0.101632611269017507E+06, 0.101655502605639515E+06, 0.101677080810846644E+06, 0.101697768628730599E+06, 0.101719316740837268E+06, + 0.101742656846947124E+06, 0.101764837611636452E+06, 0.101785178883928776E+06, 0.101802942432164040E+06, 0.101817351144786313E+06, + 0.101829733328404807E+06, 0.101837655847121932E+06, 0.101840093420000965E+06, 0.101836302876360205E+06, 0.101825658934804160E+06, + 0.101806477102295394E+06, 0.101772591154458947E+06, 0.101732979877375386E+06, 0.101689114392674877E+06, 0.101642472350711148E+06, + 0.101594527408217124E+06, 0.100521483098622790E+06, 0.100553034374379175E+06, 0.100587237837357708E+06, 0.100623674982973011E+06, + 0.100661797732431733E+06, 0.100700926585977664E+06, 0.100740251364819997E+06, 0.100769102422238415E+06, 0.100792034055430398E+06, + 0.100813412935669796E+06, 0.100833061354508041E+06, 0.100850766087262135E+06, 0.100866291971468818E+06, 0.100879397215573350E+06, + 0.100889850447447578E+06, 0.100896874983048474E+06, 0.100901879624732552E+06, 0.100908045012513743E+06, 0.100911845008177756E+06, + 0.100913263133695262E+06, 0.100912309117336132E+06, 0.100909033352763217E+06, 0.100903541829518552E+06, 0.100896011438153932E+06, + 0.100886705535507586E+06, 0.100878478741165993E+06, 0.100870518698868997E+06, 0.100862258577488697E+06, 0.100853850267061993E+06, + 0.100845456536039332E+06, 0.100837262111476593E+06, 0.100829483975533818E+06, 0.100823560640713331E+06, 0.100821677296257287E+06, + 0.100817550375560750E+06, 0.100812145039498006E+06, 0.100804659355862575E+06, 0.100794378660273913E+06, 0.100780665915676014E+06, + 0.100760028631593887E+06, 0.100729776405452620E+06, 0.100695664007384359E+06, 0.100658676701707998E+06, 0.100619966898071216E+06, + 0.100580820672301052E+06, 0.100542567168908456E+06, 0.100504377972890885E+06, 0.100469914337100665E+06, 0.100440979221872039E+06, + 0.100419342752137061E+06, 0.100406745142411062E+06, 0.100406705150974245E+06, 0.100432011566503701E+06, 0.100468676779983842E+06, + 0.100515495509657252E+06, 0.100571181275147042E+06, 0.100634390994595859E+06, 0.100706784795550964E+06, 0.100786680087649889E+06, + 0.100869494529497810E+06, 0.100952905038971541E+06, 0.101034572199124057E+06, 0.101109749894571214E+06, 0.101172314783061069E+06, + 0.101229755518492922E+06, 0.101282350507230105E+06, 0.101330323821815167E+06, 0.101373763209774886E+06, 0.101412160049147336E+06, + 0.101445520624250392E+06, 0.101474055469030995E+06, 0.101497872459806793E+06, 0.101516095634979050E+06, 0.101525003393313920E+06, + 0.101529087732478598E+06, 0.101529555701643461E+06, 0.101527554535439689E+06, 0.101523924716972469E+06, 0.101519184588702949E+06, + 0.101515359052858228E+06, 0.101513419431477203E+06, 0.101515061119696038E+06, 0.101524365504439338E+06, 0.101545492952323460E+06, + 0.101572260216870665E+06, 0.101604062662735640E+06, 0.101640454999672467E+06, 0.101681140705924787E+06, 0.101736471342456469E+06, + 0.101791820815604107E+06, 0.101843025813835338E+06, 0.101888338055426750E+06, 0.101926497388645425E+06, 0.101956523951729410E+06, + 0.101977389503551763E+06, 0.101992863624521677E+06, 0.102004636055621828E+06, 0.102012873990628723E+06, 0.102016923944167502E+06, + 0.102015589894533594E+06, 0.102008242524494635E+06, 0.101994805733422399E+06, 0.101975527326879805E+06, 0.101951699623577006E+06, + 0.101924648595227743E+06, 0.101896134378200717E+06, 0.101868181223228035E+06, 0.101842690796364026E+06, 0.101823518800336897E+06, + 0.101810966006917995E+06, 0.101810361562174381E+06, 0.101819625326231835E+06, 0.101837655873780983E+06, 0.101862056783833701E+06, + 0.101890848697784473E+06, 0.101919025148523811E+06, 0.101942604878219718E+06, 0.101953732079914320E+06, 0.101952348959737385E+06, + 0.101930393928014251E+06, 0.101894531594142769E+06, 0.101847206824460780E+06, 0.101792255748977870E+06, 0.101731720782488774E+06, + 0.101667410578914118E+06, 0.101601955467176056E+06, 0.101538353512944566E+06, 0.101479206063803722E+06, 0.101426875382686587E+06, + 0.101386679687780139E+06, 0.101358881267937715E+06, 0.101340978693972764E+06, 0.101332100373616413E+06, 0.101331377677835859E+06, + 0.101337757250038121E+06, 0.101350176595795769E+06, 0.101367529237839539E+06, 0.101388710034061514E+06, 0.101412656335492444E+06, + 0.101438146564572395E+06, 0.101465030990242507E+06, 0.101492743759273944E+06, 0.101520528048576030E+06, 0.101547656089289187E+06, + 0.101573646733203917E+06, 0.101598176409242311E+06, 0.101621015547307805E+06, 0.101642090999262466E+06, 0.101661344187207244E+06, + 0.101680048117579805E+06, 0.101700060142799775E+06, 0.101717676267340707E+06, 0.101732293239297534E+06, 0.101743299867593101E+06, + 0.101750084174098316E+06, 0.101754164408332057E+06, 0.101753815772929738E+06, 0.101747787368181351E+06, 0.101735699407228763E+06, + 0.101717273900884597E+06, 0.101692348035134710E+06, 0.101654861811602153E+06, 0.101610673295375120E+06, 0.101562751614357956E+06, + 0.101512638519625150E+06, 0.101461813597627668E+06, 0.100533318325900138E+06, 0.100559018706234609E+06, 0.100586667516233734E+06, + 0.100616430509356855E+06, 0.100647457772304173E+06, 0.100679140607943787E+06, 0.100698527261697847E+06, 0.100715798167830915E+06, + 0.100731931694921790E+06, 0.100746896633405166E+06, 0.100760616569955790E+06, 0.100772979417731243E+06, 0.100783848302944942E+06, + 0.100793073809534399E+06, 0.100800507571478287E+06, 0.100806483772806212E+06, 0.100813801762586605E+06, 0.100819127022868051E+06, + 0.100822124828140237E+06, 0.100822902466370797E+06, 0.100821716855826366E+06, 0.100818621189554789E+06, 0.100813702346186765E+06, + 0.100807092657524059E+06, 0.100799795563032545E+06, 0.100792638500522866E+06, 0.100785284309503724E+06, 0.100777874398839282E+06, + 0.100770527259340961E+06, 0.100763347669699418E+06, 0.100756435329570639E+06, 0.100749892793592095E+06, 0.100749373875165576E+06, + 0.100750222933888348E+06, 0.100750603463785985E+06, 0.100749864242144642E+06, 0.100747320689053289E+06, 0.100742256076426071E+06, + 0.100733920852957395E+06, 0.100715113795294979E+06, 0.100689064952966379E+06, 0.100657845711542803E+06, 0.100623250918292935E+06, + 0.100586038000497676E+06, 0.100547134348203457E+06, 0.100506028825088957E+06, 0.100462291432826620E+06, 0.100421048783818245E+06, + 0.100384122683633468E+06, 0.100353368412380165E+06, 0.100330670880394246E+06, 0.100321776442990944E+06, 0.100334624094787185E+06, + 0.100358437666044687E+06, 0.100392488442372807E+06, 0.100435977221972600E+06, 0.100488073955800399E+06, 0.100552415559277870E+06, + 0.100627255810881121E+06, 0.100707092289738357E+06, 0.100789756856378794E+06, 0.100873101113792349E+06, 0.100954216801293107E+06, + 0.101025863759345229E+06, 0.101094584610272868E+06, 0.101160235498342692E+06, 0.101222606811297053E+06, 0.101281370962640489E+06, + 0.101332163642811851E+06, 0.101376972618262807E+06, 0.101416728366496085E+06, 0.101451473910749541E+06, 0.101480959555488313E+06, + 0.101500381551832834E+06, 0.101512210195641775E+06, 0.101519514244373393E+06, 0.101523444803633465E+06, 0.101525155563451161E+06, + 0.101524617344664759E+06, 0.101522395272590235E+06, 0.101521151212846860E+06, 0.101522340865174643E+06, 0.101527072168721963E+06, + 0.101537882062393008E+06, 0.101559080181885220E+06, 0.101584526114373686E+06, 0.101614244538571933E+06, 0.101647894372795839E+06, + 0.101684681982032082E+06, 0.101726895995367770E+06, 0.101774312937747018E+06, 0.101818830342195433E+06, 0.101858335228138851E+06, + 0.101893176738273338E+06, 0.101922949034176403E+06, 0.101947508183230893E+06, 0.101967684274917294E+06, 0.101983202615811271E+06, + 0.101993442131563672E+06, 0.101998812147038072E+06, 0.101998613039324773E+06, 0.101992329378160532E+06, 0.101980249760691964E+06, + 0.101962626054339082E+06, 0.101940465078019130E+06, 0.101915907622174098E+06, 0.101890478407916715E+06, 0.101866977689826570E+06, + 0.101849754719304707E+06, 0.101837665745559920E+06, 0.101833602586389810E+06, 0.101841599729967784E+06, 0.101859775477370218E+06, + 0.101886984424902446E+06, 0.101919867690970117E+06, 0.101951746477934430E+06, 0.101978482983373731E+06, 0.101993393892969194E+06, + 0.101991412250034802E+06, 0.101974123414601141E+06, 0.101945239434022718E+06, 0.101905684392780662E+06, 0.101856949799144815E+06, + 0.101801731134592686E+06, 0.101742504741481811E+06, 0.101681038790539489E+06, 0.101619356067038418E+06, 0.101559380452289755E+06, + 0.101505641285490463E+06, 0.101461701752299428E+06, 0.101426005705293821E+06, 0.101398896334048623E+06, 0.101380282180095601E+06, + 0.101369836995025384E+06, 0.101367277170112575E+06, 0.101370986941406809E+06, 0.101379906423074499E+06, 0.101392831033495459E+06, + 0.101408554312665205E+06, 0.101424869582900283E+06, 0.101443182567207696E+06, 0.101462968409184250E+06, 0.101483671134433898E+06, + 0.101504732894123474E+06, 0.101527421913474638E+06, 0.101550095820920280E+06, 0.101571562110317216E+06, 0.101591355780169426E+06, + 0.101609078015251362E+06, 0.101625097194956237E+06, 0.101640337310256451E+06, 0.101652605117688974E+06, 0.101661397415208048E+06, + 0.101666225004107662E+06, 0.101666619975683658E+06, 0.101662556408727090E+06, 0.101653580628123964E+06, 0.101639218203126409E+06, + 0.101619381357809092E+06, 0.101594063768788052E+06, 0.101563351510846944E+06, 0.101523851133020638E+06, 0.101476807405962056E+06, + 0.101426978369828445E+06, 0.101375797428347505E+06, 0.101324598573980998E+06, 0.100551530203326562E+06, 0.100571727120900570E+06, + 0.100593051779557791E+06, 0.100614868997312486E+06, 0.100634144763448072E+06, 0.100645833089619511E+06, 0.100657235284227281E+06, + 0.100667686387769805E+06, 0.100677292913672762E+06, 0.100686112073701530E+06, 0.100694158258119947E+06, 0.100701410586929007E+06, + 0.100707821531117806E+06, 0.100713326592793543E+06, 0.100718292448464927E+06, 0.100725135313074701E+06, 0.100730736036059810E+06, + 0.100734776949494801E+06, 0.100736983079004160E+06, 0.100737142689159882E+06, 0.100735125062421313E+06, 0.100730895453973062E+06, + 0.100724936089312163E+06, 0.100718101716589372E+06, 0.100710128659467940E+06, 0.100701978143640532E+06, 0.100693854728853868E+06, + 0.100685917546278361E+06, 0.100678288281938949E+06, 0.100671058793584918E+06, 0.100664298277410649E+06, 0.100660712381595760E+06, + 0.100661723426356752E+06, 0.100663150264819735E+06, 0.100664393149270531E+06, 0.100664799968549007E+06, 0.100663672287188572E+06, + 0.100660269896986065E+06, 0.100653054372944243E+06, 0.100638919308817800E+06, 0.100620188598009743E+06, 0.100597036492593310E+06, + 0.100569788712949841E+06, 0.100538901380231502E+06, 0.100504939031211514E+06, 0.100464616545740675E+06, 0.100420082357890147E+06, + 0.100376069547844643E+06, 0.100334560389268605E+06, 0.100297550195584583E+06, 0.100267038173233668E+06, 0.100249183652606138E+06, + 0.100248031291493899E+06, 0.100256756900526307E+06, 0.100275250996069168E+06, 0.100303318888992886E+06, 0.100340733860613560E+06, + 0.100392668457859341E+06, 0.100458197469974984E+06, 0.100530344725997711E+06, 0.100607247564767138E+06, 0.100687079608666914E+06, + 0.100768076831136714E+06, 0.100845286817167653E+06, 0.100921915425536106E+06, 0.100997896081585553E+06, 0.101072548063258917E+06, + 0.101144965887108527E+06, 0.101210711249507964E+06, 0.101267759563819229E+06, 0.101319932991058231E+06, 0.101367121820533270E+06, + 0.101409115377035181E+06, 0.101445063624758288E+06, 0.101467868269852072E+06, 0.101485221941439115E+06, 0.101498187544558168E+06, + 0.101507881316604296E+06, 0.101515310949875333E+06, 0.101519599975213365E+06, 0.101522106701145909E+06, 0.101524851878856789E+06, + 0.101529230085351330E+06, 0.101536191323789782E+06, 0.101546697524065807E+06, 0.101566224388216360E+06, 0.101589918902257763E+06, + 0.101616845515287452E+06, 0.101647215589828833E+06, 0.101680341115790361E+06, 0.101715366089036543E+06, 0.101752316168779886E+06, + 0.101791176678952732E+06, 0.101827052748008107E+06, 0.101859044996505589E+06, 0.101887670526199319E+06, 0.101913122414070647E+06, + 0.101934463666524054E+06, 0.101952632860506710E+06, 0.101966700037415663E+06, 0.101975525710702976E+06, 0.101978461989723088E+06, + 0.101975173899271627E+06, 0.101964823473388897E+06, 0.101947665044748559E+06, 0.101926227690128857E+06, 0.101900561072349257E+06, + 0.101874251008341424E+06, 0.101851830347918643E+06, 0.101836189738381829E+06, 0.101828888260193082E+06, 0.101835000054969831E+06, + 0.101851733006117443E+06, 0.101877232568018531E+06, 0.101909510086827300E+06, 0.101940989073697696E+06, 0.101965528537313672E+06, + 0.101979608526400712E+06, 0.101982970036656799E+06, 0.101975240583827399E+06, 0.101955388827734365E+06, 0.101924654892196661E+06, + 0.101887578699447098E+06, 0.101842186561714494E+06, 0.101789317463778367E+06, 0.101732832688802417E+06, 0.101675288481823532E+06, + 0.101619263688587671E+06, 0.101568048094496247E+06, 0.101521062700628769E+06, 0.101479654154784279E+06, 0.101445221739311222E+06, + 0.101418076416901371E+06, 0.101399045923829544E+06, 0.101387018859001342E+06, 0.101381135963448469E+06, 0.101380650007871780E+06, + 0.101384722424981679E+06, 0.101391720295262028E+06, 0.101400396876228624E+06, 0.101411346068523795E+06, 0.101424155121034681E+06, + 0.101438457710905030E+06, 0.101453929199892154E+06, 0.101472913422971527E+06, 0.101492074099173711E+06, 0.101510560767898467E+06, + 0.101527744434993336E+06, 0.101543054611759319E+06, 0.101555675557276962E+06, 0.101564929191696821E+06, 0.101571016898623420E+06, + 0.101573544015567939E+06, 0.101572121672385867E+06, 0.101566370463087485E+06, 0.101554662308102721E+06, 0.101536629786898047E+06, + 0.101513803810128695E+06, 0.101486361735486105E+06, 0.101454563654390658E+06, 0.101418767627698660E+06, 0.101378013088347099E+06, + 0.101330707820646552E+06, 0.101282264555356756E+06, 0.101234028760920090E+06, 0.101187294700704195E+06, 0.100576965529563255E+06, + 0.100591678218711211E+06, 0.100607008383076420E+06, 0.100616323103987481E+06, 0.100620258552074985E+06, 0.100623651287353903E+06, + 0.100626463751429124E+06, 0.100628648078344573E+06, 0.100631378331016531E+06, 0.100634129163284262E+06, 0.100636562070289394E+06, + 0.100638738873227092E+06, 0.100640693964837556E+06, 0.100643049230926015E+06, 0.100648185229669587E+06, 0.100652678597624064E+06, + 0.100656261255894686E+06, 0.100658660860211399E+06, 0.100659622834889029E+06, 0.100658930196984991E+06, 0.100656421096238220E+06, + 0.100652004015325234E+06, 0.100645400203396595E+06, 0.100634943591599571E+06, 0.100623790772243461E+06, 0.100612166299320219E+06, + 0.100600323220825783E+06, 0.100589367539107639E+06, 0.100580442279124138E+06, 0.100572243324848969E+06, 0.100564857703730217E+06, + 0.100563322531964557E+06, 0.100563065402201857E+06, 0.100563607762748041E+06, 0.100564433779967017E+06, 0.100564965723689515E+06, + 0.100564572517680892E+06, 0.100562577288210698E+06, 0.100558128795487573E+06, 0.100550306656448985E+06, 0.100538784205606309E+06, + 0.100523395229331582E+06, 0.100504107960399502E+06, 0.100481009310527326E+06, 0.100454286649172413E+06, 0.100417998848613410E+06, + 0.100377654481256992E+06, 0.100336323265197076E+06, 0.100295695643989733E+06, 0.100257502669341542E+06, 0.100223497751048752E+06, + 0.100198365893325012E+06, 0.100183895883056030E+06, 0.100176748173119719E+06, 0.100177409781642637E+06, 0.100186348863375271E+06, + 0.100204071706916817E+06, 0.100236974921233719E+06, 0.100288202283773542E+06, 0.100347584962604393E+06, 0.100413567810885099E+06, + 0.100484685800612540E+06, 0.100559609376774941E+06, 0.100637786676389092E+06, 0.100719143709254829E+06, 0.100802573207076450E+06, + 0.100886953694736978E+06, 0.100970981281993736E+06, 0.101053137277853224E+06, 0.101122114850514685E+06, 0.101186021991939982E+06, + 0.101244880734986247E+06, 0.101298842483030225E+06, 0.101347976726965513E+06, 0.101388865316328054E+06, 0.101417494561782441E+06, + 0.101441011237599363E+06, 0.101460308434203442E+06, 0.101476142058636950E+06, 0.101489111828680267E+06, 0.101498177707129027E+06, + 0.101504275218907074E+06, 0.101509888353816961E+06, 0.101516205429889771E+06, 0.101524373025953057E+06, 0.101535544403108914E+06, + 0.101550771587497264E+06, 0.101572228401773711E+06, 0.101596922610232752E+06, 0.101624267341491490E+06, 0.101653892197854148E+06, + 0.101685371964174541E+06, 0.101717744368668005E+06, 0.101749825128001146E+06, 0.101781782699506482E+06, 0.101812709382600748E+06, + 0.101841353313321029E+06, 0.101867900490832937E+06, 0.101893188014203624E+06, 0.101915193984979924E+06, 0.101933169418903170E+06, + 0.101945970442238802E+06, 0.101952233644425200E+06, 0.101949989638197949E+06, 0.101938812116678397E+06, 0.101921309771955755E+06, + 0.101897306204910492E+06, 0.101870511994013577E+06, 0.101845727987357284E+06, 0.101827162893394896E+06, 0.101815741469126820E+06, + 0.101815347936997394E+06, 0.101829035456973521E+06, 0.101849227052658054E+06, 0.101873947210599901E+06, 0.101900166979187969E+06, + 0.101922501433547208E+06, 0.101938537730062933E+06, 0.101945622505927895E+06, 0.101943220759731354E+06, 0.101933233593028053E+06, + 0.101913480508279812E+06, 0.101884226864883196E+06, 0.101847880125950556E+06, 0.101805028700279145E+06, 0.101757073613196655E+06, + 0.101706590973509752E+06, 0.101656335498895467E+06, 0.101607292592687139E+06, 0.101560626743744360E+06, 0.101517500638364392E+06, + 0.101478925847553910E+06, 0.101446343700160927E+06, 0.101419879250754559E+06, 0.101398958955256283E+06, 0.101383710029623602E+06, + 0.101374588904196891E+06, 0.101370168865842439E+06, 0.101369105684779628E+06, 0.101370929669406774E+06, 0.101375271898136503E+06, + 0.101381760968333765E+06, 0.101390061699633865E+06, 0.101400585700279218E+06, 0.101414338736935577E+06, 0.101428328122293344E+06, + 0.101441772517097343E+06, 0.101453941211612226E+06, 0.101464150240094372E+06, 0.101470694861331591E+06, 0.101472993001670693E+06, + 0.101472098749250043E+06, 0.101467692245319617E+06, 0.101459459863983502E+06, 0.101447099986294808E+06, 0.101428337148487699E+06, + 0.101402273058774066E+06, 0.101372210423711062E+06, 0.101338601145403256E+06, 0.101301942982120236E+06, 0.101262793506100817E+06, + 0.101221677786233748E+06, 0.101176731503889008E+06, 0.101131973913656722E+06, 0.101088479543089110E+06, 0.101047269615024925E+06, + 0.100610222449967056E+06, 0.100619368346169198E+06, 0.100619051340248508E+06, 0.100617580194349401E+06, 0.100615500249746110E+06, + 0.100612844510783863E+06, 0.100609637715591729E+06, 0.100605899629696811E+06, 0.100601648181252385E+06, 0.100596902436962919E+06, + 0.100591685422206356E+06, 0.100587098052459361E+06, 0.100585436102778738E+06, 0.100587603438895458E+06, 0.100589520780671664E+06, + 0.100591027689952418E+06, 0.100591916118502122E+06, 0.100591952568608729E+06, 0.100590898493088505E+06, 0.100588528847269830E+06, + 0.100584648718839380E+06, 0.100579107975368854E+06, 0.100568181408087505E+06, 0.100556028233350124E+06, 0.100543329111321902E+06, + 0.100530292741429832E+06, 0.100517138305172819E+06, 0.100504104046550317E+06, 0.100491454262540399E+06, 0.100479484740824249E+06, + 0.100470155044772182E+06, 0.100463687256117119E+06, 0.100458896797118272E+06, 0.100455620879032227E+06, 0.100454260984570079E+06, + 0.100454114005490293E+06, 0.100453954401208190E+06, 0.100453246548017763E+06, 0.100453544534649671E+06, 0.100451784335522374E+06, + 0.100447402272511725E+06, 0.100439945313556469E+06, 0.100429058870933281E+06, 0.100414474145118424E+06, 0.100395971880822995E+06, + 0.100364627363950829E+06, 0.100330069619100730E+06, 0.100293517928604648E+06, 0.100256250274621154E+06, 0.100219578502905337E+06, + 0.100184821369736295E+06, 0.100153602788173128E+06, 0.100126759271301082E+06, 0.100104736505522000E+06, 0.100088530813236051E+06, + 0.100079174170628597E+06, 0.100077782208942881E+06, 0.100089384583247156E+06, 0.100124675759422840E+06, 0.100169171328412835E+06, + 0.100221720050477204E+06, 0.100281293603445694E+06, 0.100347032197583365E+06, 0.100419381954596480E+06, 0.100501100689285435E+06, + 0.100587123759395632E+06, 0.100676265830202465E+06, 0.100767041531711700E+06, 0.100857717751965523E+06, 0.100942425402787208E+06, + 0.101015252626361835E+06, 0.101084506455799405E+06, 0.101149930187516162E+06, 0.101211031351648766E+06, 0.101267093811678642E+06, + 0.101313485842090842E+06, 0.101347864445685816E+06, 0.101377348186801406E+06, 0.101401563075397265E+06, 0.101421152746379506E+06, + 0.101436703379514453E+06, 0.101448418323353719E+06, 0.101455739244278491E+06, 0.101461288984514365E+06, 0.101466634842994637E+06, + 0.101474204912937290E+06, 0.101485236375258624E+06, 0.101500599693197641E+06, 0.101519974341673922E+06, 0.101542425947491516E+06, + 0.101567705013514729E+06, 0.101595287754062447E+06, 0.101623559085342917E+06, 0.101653300863473152E+06, 0.101684268370484802E+06, + 0.101715396578327011E+06, 0.101746648790418796E+06, 0.101778157009654227E+06, 0.101810294427225992E+06, 0.101840186138904261E+06, + 0.101866664724512098E+06, 0.101888829801923304E+06, 0.101904365840783910E+06, 0.101910875981687976E+06, 0.101907623411986046E+06, + 0.101897747215346535E+06, 0.101880196785050444E+06, 0.101858268156208374E+06, 0.101836776997478300E+06, 0.101819952813389187E+06, + 0.101808320250000223E+06, 0.101803197426602317E+06, 0.101808609816872282E+06, 0.101820932164050100E+06, 0.101835981686293468E+06, + 0.101853975694054869E+06, 0.101871402202830723E+06, 0.101884750589340591E+06, 0.101893763845945417E+06, 0.101896316342375110E+06, + 0.101891679490974697E+06, 0.101879011465031377E+06, 0.101858040507289596E+06, 0.101829415896828315E+06, 0.101794099063775866E+06, + 0.101754870334758903E+06, 0.101712830221134776E+06, 0.101668524343052632E+06, 0.101623305627111258E+06, 0.101578731565899987E+06, + 0.101536822594720084E+06, 0.101498255706646247E+06, 0.101464056159653454E+06, 0.101434228357694403E+06, 0.101408947230003760E+06, + 0.101388258426133107E+06, 0.101372054750796451E+06, 0.101360489212098575E+06, 0.101352621134682369E+06, 0.101347535522944934E+06, + 0.101344862604306050E+06, 0.101344225484927229E+06, 0.101345820651379589E+06, 0.101351700849621455E+06, 0.101359530806993411E+06, + 0.101367464680662029E+06, 0.101374791985950258E+06, 0.101380818284913359E+06, 0.101384869714943547E+06, 0.101384236152984289E+06, + 0.101379411934677875E+06, 0.101371434785651902E+06, 0.101360085004396402E+06, 0.101345137105284986E+06, 0.101326366500254488E+06, + 0.101300808610161446E+06, 0.101267227431123814E+06, 0.101230448890002648E+06, 0.101191134568648122E+06, 0.101149957676138991E+06, + 0.101107616865909265E+06, 0.101064847159165423E+06, 0.101022580301005539E+06, 0.100981724783641272E+06, 0.100943032631428388E+06, + 0.100907229742725089E+06, 0.100647986354424997E+06, 0.100642715659511494E+06, 0.100636609969385099E+06, 0.100629766959429631E+06, + 0.100622273153360293E+06, 0.100614207409999959E+06, 0.100605644320867577E+06, 0.100596657511128040E+06, 0.100587322839384142E+06, + 0.100577721494929676E+06, 0.100567942994422949E+06, 0.100559032457675799E+06, 0.100552977775159990E+06, 0.100548029023239913E+06, + 0.100543925649759869E+06, 0.100540775676255420E+06, 0.100537926202230563E+06, 0.100534526225857189E+06, 0.100530349204130558E+06, + 0.100525160024924175E+06, 0.100518730289664294E+06, 0.100507262057308282E+06, 0.100493351445575739E+06, 0.100478812420309798E+06, + 0.100463863563753723E+06, 0.100448706735957079E+06, 0.100433537133342616E+06, 0.100418551953121700E+06, 0.100403957667064577E+06, + 0.100390113818734360E+06, 0.100378283224859435E+06, 0.100368019408275955E+06, 0.100359348113145898E+06, 0.100352231413445901E+06, + 0.100346572462762793E+06, 0.100342221388570266E+06, 0.100338982151060118E+06, 0.100338392782828159E+06, 0.100341188152017450E+06, + 0.100343374795880460E+06, 0.100344284175602748E+06, 0.100343279804720136E+06, 0.100339754195549598E+06, 0.100333123950383713E+06, + 0.100321286971674039E+06, 0.100297287465905509E+06, 0.100269835508128133E+06, 0.100239714419667638E+06, 0.100207741409672206E+06, + 0.100174751447097195E+06, 0.100141579771693956E+06, 0.100106755441371904E+06, 0.100069912900784475E+06, 0.100035704844720982E+06, + 0.100005528642180579E+06, 0.999808555037528422E+05, 0.999632723451110069E+05, 0.999545236439836153E+05, 0.999736658577992639E+05, + 0.100003353333015431E+06, 0.100042064117430200E+06, 0.100089071041598727E+06, 0.100143778848621456E+06, 0.100205754250853075E+06, + 0.100280664932831889E+06, 0.100364704219084786E+06, 0.100454126970714191E+06, 0.100547163719590288E+06, 0.100641885410501171E+06, + 0.100736224731986324E+06, 0.100821668363604142E+06, 0.100899090295081827E+06, 0.100973330050358534E+06, 0.101044570047650093E+06, + 0.101111101684352281E+06, 0.101171922832138123E+06, 0.101223284014747289E+06, 0.101260000146915598E+06, 0.101290169362142216E+06, + 0.101314373328620830E+06, 0.101333177003506280E+06, 0.101345070024148474E+06, 0.101353392220116293E+06, 0.101359052838648713E+06, + 0.101363820978951000E+06, 0.101369812488926094E+06, 0.101377607762478350E+06, 0.101388432240829963E+06, 0.101403721097234418E+06, + 0.101423686495689355E+06, 0.101447911692908267E+06, 0.101474956233570803E+06, 0.101501708578459278E+06, 0.101530416403443902E+06, + 0.101560731988182699E+06, 0.101592331907465996E+06, 0.101625384375889567E+06, 0.101660463766652349E+06, 0.101696287937694025E+06, + 0.101731505165402195E+06, 0.101765373671168942E+06, 0.101795889760683582E+06, 0.101821575901139222E+06, 0.101839426770240534E+06, + 0.101848304582011391E+06, 0.101850674932157766E+06, 0.101845563338820590E+06, 0.101833662450669886E+06, 0.101819729736987734E+06, + 0.101806525676924168E+06, 0.101796235624030873E+06, 0.101788878921415002E+06, 0.101786474628160606E+06, 0.101791411418041462E+06, + 0.101799155363379643E+06, 0.101808395203049906E+06, 0.101819645577764153E+06, 0.101830409662230682E+06, 0.101837554446248556E+06, + 0.101839744105951162E+06, 0.101836170755967585E+06, 0.101826399135349377E+06, 0.101810169058729633E+06, 0.101787697095879019E+06, + 0.101760376393189144E+06, 0.101728853043894385E+06, 0.101693851935638726E+06, 0.101656211520082943E+06, 0.101616790158213262E+06, + 0.101576704560053928E+06, 0.101537500986694940E+06, 0.101500335696260430E+06, 0.101465878362827381E+06, 0.101434840756723977E+06, + 0.101408292472182264E+06, 0.101385653681886775E+06, 0.101367773762272278E+06, 0.101355060936308873E+06, 0.101344865614149967E+06, + 0.101336866601978196E+06, 0.101330803221953858E+06, 0.101326445157375012E+06, 0.101323705025865274E+06, 0.101323151766299212E+06, + 0.101323317919074820E+06, 0.101323609309034800E+06, 0.101323383998279736E+06, 0.101321968519799790E+06, 0.101318674829698095E+06, + 0.101309557473271183E+06, 0.101297255318789845E+06, 0.101282004506700381E+06, 0.101263593826286131E+06, 0.101241822534985287E+06, + 0.101216505434514431E+06, 0.101183763113335532E+06, 0.101143062284304673E+06, 0.101099958082106066E+06, 0.101055260378077917E+06, + 0.101009770107324861E+06, 0.100964289722992879E+06, 0.100919631222605836E+06, 0.100878395229792455E+06, 0.100840230418695966E+06, + 0.100804814065610379E+06, 0.100772660269162792E+06, 0.100687581879727732E+06, 0.100677327145079587E+06, 0.100666160693170401E+06, + 0.100654207341057889E+06, 0.100641583937123549E+06, 0.100628402623918475E+06, 0.100614774045043421E+06, 0.100600810488184259E+06, + 0.100586628958508634E+06, 0.100572354178803900E+06, 0.100558377265734845E+06, 0.100545518784321612E+06, 0.100533722529582723E+06, + 0.100522910171807918E+06, 0.100512931196078469E+06, 0.100503576020145658E+06, 0.100494590303307457E+06, 0.100485690264560879E+06, + 0.100476578798775605E+06, 0.100466962148914608E+06, 0.100453831814755409E+06, 0.100437250927331042E+06, 0.100419883924672962E+06, + 0.100402010894887906E+06, 0.100383869790613491E+06, 0.100365667294769126E+06, 0.100347588515499185E+06, 0.100329805497802925E+06, + 0.100312484547517117E+06, 0.100295677938969020E+06, 0.100279971482571520E+06, 0.100265646792895117E+06, 0.100252835911466231E+06, + 0.100241624480511469E+06, 0.100232054881627162E+06, 0.100224130808306480E+06, 0.100217823206996967E+06, 0.100218259667894425E+06, + 0.100221888558547784E+06, 0.100225662634090608E+06, 0.100228894178654795E+06, 0.100230909476646018E+06, 0.100231046622607246E+06, + 0.100228652435841679E+06, 0.100220736457496634E+06, 0.100203006988572233E+06, 0.100182026084597936E+06, 0.100158298000477531E+06, + 0.100132350369893451E+06, 0.100104715520267695E+06, 0.100075909358704739E+06, 0.100043124770855982E+06, 0.100002028989072438E+06, + 0.999616642547620577E+05, 0.999236877809293510E+05, 0.998898266920593742E+05, 0.998618945050216280E+05, 0.998418030619178171E+05, + 0.998423833568641858E+05, 0.998594396345241257E+05, 0.998857662121956964E+05, 0.999209046169008070E+05, 0.999644862724064005E+05, + 0.100016242187354641E+06, 0.100077317810256820E+06, 0.100156061627195784E+06, 0.100241897409154641E+06, 0.100332874470688155E+06, + 0.100428637026128985E+06, 0.100526117084385623E+06, 0.100622332108951261E+06, 0.100709061724389190E+06, 0.100788527255290071E+06, + 0.100863969991383987E+06, 0.100934619610214693E+06, 0.100999507530848088E+06, 0.101057589879684849E+06, 0.101107912118639942E+06, + 0.101140898046464674E+06, 0.101165194334426677E+06, 0.101183324487668549E+06, 0.101196455912974372E+06, 0.101205787756098696E+06, + 0.101212555660780359E+06, 0.101217307428240179E+06, 0.101221221076374510E+06, 0.101226815969850082E+06, 0.101235775469520071E+06, + 0.101249089517923203E+06, 0.101267499119154090E+06, 0.101290114155802439E+06, 0.101316108973235343E+06, 0.101344864351232871E+06, + 0.101376027068939133E+06, 0.101409318557868275E+06, 0.101444185441017980E+06, 0.101479505555003896E+06, 0.101516882009007721E+06, + 0.101555258888103534E+06, 0.101593997928136538E+06, 0.101632899844262269E+06, 0.101670115604274892E+06, 0.101703897209036979E+06, + 0.101731821696663668E+06, 0.101752696747597220E+06, 0.101767805557897402E+06, 0.101776451771069726E+06, 0.101776669469582252E+06, + 0.101773409436917937E+06, 0.101768516316242836E+06, 0.101762622025664066E+06, 0.101757375988241824E+06, 0.101753826825127559E+06, + 0.101753403149395934E+06, 0.101756975828023817E+06, 0.101760728893977721E+06, 0.101764213695991348E+06, 0.101767251659026326E+06, + 0.101770663081707637E+06, 0.101770424123169345E+06, 0.101766072271416459E+06, 0.101755995409002455E+06, 0.101740345666592038E+06, + 0.101721298174118318E+06, 0.101699043646416510E+06, 0.101673714396835901E+06, 0.101645709970302123E+06, 0.101615709217670097E+06, + 0.101584438818864903E+06, 0.101549071157331651E+06, 0.101514367930820241E+06, 0.101481015481659371E+06, 0.101449616141240651E+06, + 0.101420749509000205E+06, 0.101394921878986992E+06, 0.101373676775729036E+06, 0.101359486676981818E+06, 0.101347304837422518E+06, + 0.101336841360518913E+06, 0.101328023341265842E+06, 0.101320386045212057E+06, 0.101313764510643596E+06, 0.101308434768293082E+06, + 0.101303621069785135E+06, 0.101298777855350723E+06, 0.101293531204510582E+06, 0.101287470834921696E+06, 0.101280152845400124E+06, + 0.101270201669037211E+06, 0.101254701725787949E+06, 0.101236553755882080E+06, 0.101215630660361639E+06, 0.101191802985207483E+06, + 0.101164939977834394E+06, 0.101134911067020425E+06, 0.101095221983884170E+06, 0.101047509096163092E+06, 0.100998010357585692E+06, + 0.100947641730482603E+06, 0.100897282218335793E+06, 0.100847785377602457E+06, 0.100799988650482410E+06, 0.100756067172860465E+06, + 0.100716404949108095E+06, 0.100680394601797932E+06, 0.100648426393021538E+06, 0.100745881471474568E+06, 0.100728142553068014E+06, + 0.100709625290291020E+06, 0.100690810595279676E+06, 0.100673015913888710E+06, 0.100654662696282932E+06, 0.100635883098483231E+06, + 0.100616812156066226E+06, 0.100597590570947941E+06, 0.100577923093225269E+06, 0.100558481382763435E+06, 0.100539763749561054E+06, + 0.100521848971490384E+06, 0.100504736841997088E+06, 0.100488356281683067E+06, 0.100472574428834167E+06, 0.100457206575664590E+06, + 0.100442026795809623E+06, 0.100426779086875598E+06, 0.100408173847290411E+06, 0.100384737995668649E+06, 0.100361938241868149E+06, + 0.100339809752568588E+06, 0.100318341944825661E+06, 0.100297490120403570E+06, 0.100277187624826533E+06, 0.100256847285368276E+06, + 0.100235365725066120E+06, 0.100214436988323068E+06, 0.100194015395758135E+06, 0.100174603679756343E+06, 0.100156451770575964E+06, + 0.100139783864459299E+06, 0.100124799136242582E+06, 0.100111674036540222E+06, 0.100100566149749706E+06, 0.100091646133474802E+06, + 0.100094268080595342E+06, 0.100098360646490051E+06, 0.100103245417476035E+06, 0.100108251398645036E+06, 0.100112713737688697E+06, + 0.100115972074298101E+06, 0.100117368468727698E+06, 0.100113713047268437E+06, 0.100102264314479005E+06, 0.100088001440509222E+06, + 0.100071163974188516E+06, 0.100051996036882978E+06, 0.100030726477270320E+06, 0.100007546295320470E+06, 0.999807647979038738E+05, + 0.999391989552558807E+05, 0.998969708781520749E+05, 0.998557810370234511E+05, 0.998173700956349639E+05, 0.997835138413437380E+05, + 0.997560107381300622E+05, 0.997399269866001996E+05, 0.997470920864752261E+05, 0.997634292598558095E+05, 0.997888964555621351E+05, + 0.998253139512354246E+05, 0.998703081483062851E+05, 0.999237330223304161E+05, 0.999900673422841937E+05, 0.100071098592214898E+06, + 0.100157786095159157E+06, 0.100248141148947368E+06, 0.100340095617225234E+06, 0.100431568456538211E+06, 0.100520552982271765E+06, + 0.100601957172444119E+06, 0.100676277857242458E+06, 0.100746000837763233E+06, 0.100808736668317229E+06, 0.100864485886548777E+06, + 0.100912656357667453E+06, 0.100952804425252194E+06, 0.100983458937089512E+06, 0.101002905816960556E+06, 0.101017076739301760E+06, + 0.101025919304932366E+06, 0.101031319629252597E+06, 0.101035629307633033E+06, 0.101040244934609727E+06, 0.101046393155694794E+06, + 0.101055516125687020E+06, 0.101070906234944094E+06, 0.101089614225348079E+06, 0.101111577432790844E+06, 0.101136727145279292E+06, + 0.101164845396941935E+06, 0.101195505773623969E+06, 0.101228307857940395E+06, 0.101262885478130513E+06, 0.101298695011647855E+06, + 0.101336323186784808E+06, 0.101375617863355365E+06, 0.101416132308550543E+06, 0.101458486694783467E+06, 0.101500186893265898E+06, + 0.101539835500673144E+06, 0.101576113752189529E+06, 0.101608148989054069E+06, 0.101635731083729115E+06, 0.101658502412969741E+06, + 0.101672883340000117E+06, 0.101682956248776158E+06, 0.101690136156231834E+06, 0.101694729692935623E+06, 0.101695555850151519E+06, + 0.101694985210699713E+06, 0.101693812129123311E+06, 0.101693039728607808E+06, 0.101693715283905956E+06, 0.101692868849250488E+06, + 0.101690508890417783E+06, 0.101685212790082718E+06, 0.101676311144040446E+06, 0.101666676329463662E+06, 0.101655232931092047E+06, + 0.101641717109236590E+06, 0.101625993005500495E+06, 0.101608164735537764E+06, 0.101588188219044227E+06, 0.101565919017002117E+06, + 0.101541334705616158E+06, 0.101515224870468810E+06, 0.101488328834034881E+06, 0.101461275807381404E+06, 0.101434883687913665E+06, + 0.101409484965064941E+06, 0.101385820779280519E+06, 0.101366650582102375E+06, 0.101354446840173172E+06, 0.101343919272935833E+06, + 0.101334580534699839E+06, 0.101326051033725802E+06, 0.101318025772555571E+06, 0.101310244905231491E+06, 0.101303240884958926E+06, + 0.101296508440228543E+06, 0.101288703571071324E+06, 0.101279586340018883E+06, 0.101269869694777401E+06, 0.101258981910571456E+06, + 0.101246361574452327E+06, 0.101230052909366845E+06, 0.101210205538298207E+06, 0.101187520180750522E+06, 0.101161911206820834E+06, + 0.101133290201435040E+06, 0.101101563145659631E+06, 0.101066628653128937E+06, 0.101019252959455625E+06, 0.100965746706630394E+06, + 0.100910740992734136E+06, 0.100855238817428384E+06, 0.100800186778776610E+06, 0.100746485895287333E+06, 0.100695000750680716E+06, + 0.100647864656014091E+06, 0.100605793755290593E+06, 0.100567897173808713E+06, 0.100534547818198989E+06, 0.100814127595255733E+06, + 0.100792022069682134E+06, 0.100768906676945466E+06, 0.100744859019167008E+06, 0.100719947172904969E+06, 0.100694229203288138E+06, + 0.100667752842392147E+06, 0.100641747076966523E+06, 0.100616187623394333E+06, 0.100590421603492592E+06, 0.100564843816162116E+06, + 0.100539661442132914E+06, 0.100515003622905657E+06, 0.100490925990557327E+06, 0.100467416019604236E+06, 0.100444399107853926E+06, + 0.100421745278230635E+06, 0.100399276378565366E+06, 0.100374479059296529E+06, 0.100342341387721070E+06, 0.100310819294281551E+06, + 0.100280122297496389E+06, 0.100250406051737154E+06, 0.100221779328347242E+06, 0.100194311780137796E+06, 0.100168042299398876E+06, + 0.100142987772136228E+06, 0.100119152028053810E+06, 0.100096071569344102E+06, 0.100074127372371906E+06, 0.100053458844250679E+06, + 0.100034145590099070E+06, 0.100016303683140140E+06, 0.100000086204841966E+06, 0.999856841527353536E+05, 0.999733278135488799E+05, + 0.999663531822283549E+05, 0.999693777575280983E+05, 0.999741959503276157E+05, 0.999802590538802469E+05, 0.999870378916889313E+05, + 0.999938949144795042E+05, 0.100000191518739506E+06, 0.100005286991947069E+06, 0.100006317487418550E+06, 0.100001195017387858E+06, + 0.999937624881289375E+05, 0.999840228227615153E+05, 0.999719630030743720E+05, 0.999577541117163637E+05, 0.999414190489595931E+05, + 0.999227353126357775E+05, 0.998873066933161899E+05, 0.998482442672230973E+05, 0.998092392179712187E+05, 0.997720171343442780E+05, + 0.997383602763239178E+05, 0.997100954593149654E+05, 0.996890738866330212E+05, 0.996865348971301573E+05, 0.996979284283922898E+05, + 0.997178025858917244E+05, 0.997459381653020537E+05, 0.997821174181933602E+05, 0.998261113921440992E+05, 0.998776597193271737E+05, + 0.999420283421857603E+05, 0.100017917957394646E+06, 0.100097878242084247E+06, 0.100179897231054711E+06, 0.100262024118021669E+06, + 0.100342632647495484E+06, 0.100419763744213284E+06, 0.100491241165072570E+06, 0.100554990596539108E+06, 0.100613108372608185E+06, + 0.100664964935558615E+06, 0.100710050488669251E+06, 0.100748062257432917E+06, 0.100778981129089982E+06, 0.100801136588479072E+06, + 0.100816775933362136E+06, 0.100825979191023362E+06, 0.100833035761093313E+06, 0.100839384072879693E+06, 0.100846373089390050E+06, + 0.100857951736503237E+06, 0.100872302980121356E+06, 0.100888680627202251E+06, 0.100907092306334001E+06, 0.100927501559027049E+06, + 0.100950662310288419E+06, 0.100977294658870305E+06, 0.101006277386327682E+06, 0.101036971461367139E+06, 0.101068254496147259E+06, + 0.101099848827670517E+06, 0.101133511540723193E+06, 0.101169399010245761E+06, 0.101207870174907031E+06, 0.101248846664781042E+06, + 0.101290872607848010E+06, 0.101333141189654139E+06, 0.101375246051365641E+06, 0.101416446476650075E+06, 0.101455302158143284E+06, + 0.101490839830927347E+06, 0.101520107656443550E+06, 0.101543517742126453E+06, 0.101563037513223637E+06, 0.101578855351202437E+06, + 0.101589294440855650E+06, 0.101594084692158984E+06, 0.101595811485579121E+06, 0.101594522898840631E+06, 0.101587783852875349E+06, + 0.101580434348492054E+06, 0.101571251185715577E+06, 0.101560523496472335E+06, 0.101548552694418337E+06, 0.101535867827232971E+06, + 0.101525413599061823E+06, 0.101514059084604145E+06, 0.101501599931887249E+06, 0.101487982453526070E+06, 0.101472687979190014E+06, + 0.101455256212675624E+06, 0.101436599458446668E+06, 0.101417421871714148E+06, 0.101397941747779230E+06, 0.101378563636379375E+06, + 0.101359842874464084E+06, 0.101342462840995518E+06, 0.101332246224379633E+06, 0.101325840252083945E+06, 0.101320103689658979E+06, + 0.101314877253089740E+06, 0.101310111834561045E+06, 0.101305378666758857E+06, 0.101300345803243748E+06, 0.101295776170531011E+06, + 0.101292199871251156E+06, 0.101287082936946317E+06, 0.101280060941132921E+06, 0.101270852280511215E+06, 0.101259228389922413E+06, + 0.101244988802512118E+06, 0.101227740446083306E+06, 0.101206586899449845E+06, 0.101182271497207475E+06, 0.101154765725986566E+06, + 0.101124017218970926E+06, 0.101089948851124151E+06, 0.101052459983455323E+06, 0.101011429271982197E+06, 0.100955245737388075E+06, + 0.100896292883737755E+06, 0.100836289133349041E+06, 0.100776402552628671E+06, 0.100717117782225978E+06, 0.100659365283430379E+06, + 0.100604025319315682E+06, 0.100553449734939946E+06, 0.100508407522918642E+06, 0.100467703215460322E+06, 0.100431774319843782E+06, + 0.100887777028820332E+06, 0.100861720047367722E+06, 0.100834436753951144E+06, 0.100806009321876336E+06, 0.100776515387351727E+06, + 0.100746027719175327E+06, 0.100714128174464058E+06, 0.100678835400336873E+06, 0.100643940658424166E+06, 0.100609599439615049E+06, + 0.100575890439937211E+06, 0.100542814645689868E+06, 0.100510647118237335E+06, 0.100478852228419142E+06, 0.100447427441828680E+06, + 0.100416345678542421E+06, 0.100385524391706378E+06, 0.100353710114660586E+06, 0.100313330006065604E+06, 0.100273215809488320E+06, + 0.100233726851702537E+06, 0.100195172710990315E+06, 0.100157816918484707E+06, 0.100121881575408392E+06, 0.100087552777137244E+06, + 0.100054986731522251E+06, 0.100024316458513829E+06, 0.999958188555688102E+05, 0.999694587498323526E+05, 0.999449162204764725E+05, + 0.999222572991156194E+05, 0.999015841003048117E+05, 0.998830358793447813E+05, 0.998667901084829064E+05, 0.998530636160492868E+05, + 0.998421138196279935E+05, 0.998399548826702376E+05, 0.998456341634458367E+05, 0.998536660057044792E+05, 0.998634438903502014E+05, + 0.998743637363783346E+05, 0.998858203733583359E+05, 0.998972031892049272E+05, 0.999078909209750127E+05, 0.999149362451545312E+05, + 0.999155853988857416E+05, 0.999144713123037072E+05, 0.999115094947106991E+05, 0.999066084422268032E+05, 0.998996635379296931E+05, + 0.998905505086211051E+05, 0.998791187039132201E+05, 0.998553009292081260E+05, 0.998211706427201134E+05, 0.997864909210314072E+05, + 0.997528267554746853E+05, 0.997217498141473916E+05, 0.996948180668799905E+05, 0.996735491411857802E+05, 0.996593866015884996E+05, + 0.996655234255323448E+05, 0.996793806269131601E+05, 0.997006480667150026E+05, 0.997291101032920706E+05, 0.997645101820020791E+05, + 0.998065302642879251E+05, 0.998547900089741306E+05, 0.999134103376733110E+05, 0.999816545378570445E+05, 0.100052123784172887E+06, + 0.100122995502983205E+06, 0.100192554793170464E+06, 0.100259253657548237E+06, 0.100321770579711141E+06, 0.100379066111299660E+06, + 0.100430565790236928E+06, 0.100476507405646029E+06, 0.100515199549242738E+06, 0.100547257296906639E+06, 0.100573671260601302E+06, + 0.100594920234367688E+06, 0.100611741953639648E+06, 0.100625093360959523E+06, 0.100636085854106641E+06, 0.100648539226327353E+06, + 0.100663110344216606E+06, 0.100678485576473686E+06, 0.100694991774415132E+06, 0.100712835683178113E+06, 0.100732147548005290E+06, + 0.100753127553809449E+06, 0.100775525773403977E+06, 0.100799178062266757E+06, 0.100823896465442915E+06, 0.100848973735924432E+06, + 0.100871627589741343E+06, 0.100896325593451635E+06, 0.100923508440905760E+06, 0.100953444968081341E+06, 0.100987803936626107E+06, + 0.101025452874861629E+06, 0.101064958354120550E+06, 0.101105934719207362E+06, 0.101149656229281260E+06, 0.101195955740066449E+06, + 0.101241312234646321E+06, 0.101284295970940017E+06, 0.101322838039260794E+06, 0.101354503959834561E+06, 0.101381602347716602E+06, + 0.101404011754918669E+06, 0.101421551762267889E+06, 0.101430360992792368E+06, 0.101432922117767157E+06, 0.101431497700586173E+06, + 0.101426925441668209E+06, 0.101419967655507149E+06, 0.101411983040633873E+06, 0.101402716970667971E+06, 0.101392421375849139E+06, + 0.101381472260780953E+06, 0.101370274940234522E+06, 0.101359740662010270E+06, 0.101350634658367329E+06, 0.101341143517682387E+06, + 0.101330923240958698E+06, 0.101319823874219393E+06, 0.101307931163203728E+06, 0.101295590108053555E+06, 0.101283554840952769E+06, + 0.101272503805782646E+06, 0.101264230996134676E+06, 0.101263165987784392E+06, 0.101263248071743699E+06, 0.101263968423840182E+06, + 0.101264949849351571E+06, 0.101265950281725454E+06, 0.101266859267559164E+06, 0.101267688820318188E+06, 0.101269586773692979E+06, + 0.101271200254654817E+06, 0.101270843870590616E+06, 0.101268468005190778E+06, 0.101263583383249803E+06, 0.101255809203046563E+06, + 0.101244849341628564E+06, 0.101230469880693592E+06, 0.101211897835992699E+06, 0.101189677118595791E+06, 0.101163874725058151E+06, + 0.101134452948665217E+06, 0.101101374466219480E+06, 0.101064596222306151E+06, 0.101024065194136114E+06, 0.100976094439065258E+06, + 0.100916143828112647E+06, 0.100853769181501484E+06, 0.100790071236260570E+06, 0.100726087398982490E+06, 0.100662794662010128E+06, + 0.100601113224382003E+06, 0.100541910367744073E+06, 0.100487274737311833E+06, 0.100437683864829785E+06, 0.100392394095480457E+06, + 0.100351867577605750E+06, 0.100962168045125494E+06, 0.100932365352918903E+06, 0.100901110935450168E+06, 0.100868480358099798E+06, + 0.100834547574790442E+06, 0.100796703363587934E+06, 0.100755267960995203E+06, 0.100713570472402876E+06, 0.100671854726096004E+06, + 0.100630308500112806E+06, 0.100589060133053688E+06, 0.100548176434007823E+06, 0.100507661857319457E+06, 0.100467458892467330E+06, + 0.100427449603971385E+06, 0.100387458241177985E+06, 0.100347067293918182E+06, 0.100298654635154177E+06, 0.100250789888946878E+06, + 0.100203094461237808E+06, 0.100156000274838036E+06, 0.100109901773151054E+06, 0.100065158238268661E+06, 0.100022096993949221E+06, + 0.999810174333996401E+05, 0.999421958115488960E+05, 0.999058907435752189E+05, 0.998749313841952826E+05, 0.998464722705311870E+05, + 0.998203417981312523E+05, 0.997966268545406929E+05, 0.997754458911707188E+05, 0.997569500594004494E+05, 0.997413241542494943E+05, + 0.997287873670089612E+05, 0.997195938347852207E+05, 0.997219848697613779E+05, 0.997302647271703609E+05, 0.997413201843605202E+05, + 0.997545532545877795E+05, 0.997693575270145375E+05, 0.997851155398511037E+05, 0.998011953959217790E+05, 0.998169466903843859E+05, + 0.998299082101016102E+05, 0.998356142670790869E+05, 0.998398422284621047E+05, 0.998424522644160897E+05, 0.998432923817324918E+05, + 0.998421955048720556E+05, 0.998389770375031076E+05, 0.998334333807975636E+05, 0.998233671652358898E+05, 0.997961670290865004E+05, + 0.997678973047597101E+05, 0.997399010170866677E+05, 0.997134966342892585E+05, 0.996899556689095043E+05, 0.996704759993049811E+05, + 0.996561506699569145E+05, 0.996500136858785991E+05, 0.996586427100675064E+05, 0.996741311696416087E+05, 0.996962994894855947E+05, + 0.997249142503650510E+05, 0.997596639024193428E+05, 0.998001312580039958E+05, 0.998457643772705051E+05, 0.998968741052847909E+05, + 0.999554058789066621E+05, 0.100014421175045645E+06, 0.100072433938662172E+06, 0.100128122411163247E+06, 0.100180369857232887E+06, + 0.100226565707743983E+06, 0.100267364450542242E+06, 0.100303437234851634E+06, 0.100335667091963755E+06, 0.100364067822408935E+06, + 0.100388352892750874E+06, 0.100408979571248361E+06, 0.100426614584295938E+06, 0.100443740449263758E+06, 0.100461134998395326E+06, + 0.100478174321635088E+06, 0.100495256991003844E+06, 0.100512619944850769E+06, 0.100530318011748270E+06, 0.100548816195507636E+06, + 0.100568537852548383E+06, 0.100588688433695279E+06, 0.100609168368209503E+06, 0.100629814904332350E+06, 0.100650416237038749E+06, + 0.100665634418575515E+06, 0.100681296503981284E+06, 0.100698501345687095E+06, 0.100717920340627403E+06, 0.100740215249176472E+06, + 0.100766890514599916E+06, 0.100796657224606606E+06, 0.100829306693609207E+06, 0.100864641226465828E+06, 0.100904494038338991E+06, + 0.100948883593760926E+06, 0.100993670283464584E+06, 0.101037518284592399E+06, 0.101079215492193092E+06, 0.101115268009655614E+06, + 0.101146790223207165E+06, 0.101174201341284715E+06, 0.101197180680782549E+06, 0.101215405063571248E+06, 0.101223672236876388E+06, + 0.101227039458753206E+06, 0.101226892310118274E+06, 0.101223972224575875E+06, 0.101218953111666357E+06, 0.101212937481870860E+06, + 0.101205841402347578E+06, 0.101198438153766576E+06, 0.101191337677150907E+06, 0.101184775501605473E+06, 0.101178859738651910E+06, + 0.101173861836438504E+06, 0.101169688625135837E+06, 0.101165295165053874E+06, 0.101160720689472480E+06, 0.101156205118519152E+06, + 0.101153904081471745E+06, 0.101157778313312563E+06, 0.101162376363148098E+06, 0.101167695990116554E+06, 0.101174407609201837E+06, + 0.101181289698729292E+06, 0.101187910343826748E+06, 0.101193938755009076E+06, 0.101199145593254492E+06, 0.101206932922006279E+06, + 0.101215167455344184E+06, 0.101221538641997948E+06, 0.101225600948191553E+06, 0.101227025345643400E+06, 0.101225591909201801E+06, + 0.101221179118605258E+06, 0.101213750568578733E+06, 0.101199646966405868E+06, 0.101180697627794187E+06, 0.101158105995225807E+06, + 0.101131732247750042E+06, 0.101101468150223940E+06, 0.101067227518597691E+06, 0.101028937999906033E+06, 0.100986534229694924E+06, + 0.100931637537634888E+06, 0.100870116212888723E+06, 0.100806172230221506E+06, 0.100740814221331588E+06, 0.100675010844437245E+06, + 0.100609686876287946E+06, 0.100545721239012084E+06, 0.100483946382944894E+06, 0.100426130298766730E+06, 0.100372432821891009E+06, + 0.100322757504134090E+06, 0.100277638455664739E+06, 0.101031760825673671E+06, 0.100998271623218010E+06, 0.100963081981794705E+06, + 0.100926251398063658E+06, 0.100882116391194853E+06, 0.100836110949086375E+06, 0.100789196010976768E+06, 0.100741656022242169E+06, + 0.100693739602509639E+06, 0.100645654807320738E+06, 0.100597565425804190E+06, 0.100549588305930272E+06, 0.100501791687992096E+06, + 0.100454194516198477E+06, 0.100406766687836353E+06, 0.100359430189551465E+06, 0.100303106797204193E+06, 0.100246577208372706E+06, + 0.100190531822652643E+06, 0.100135266216653603E+06, 0.100081062875707968E+06, 0.100028192493603376E+06, 0.999769161960119818E+05, + 0.999274886616365693E+05, 0.998801621121565840E+05, 0.998351911400472018E+05, 0.997962094163349393E+05, 0.997640534483473457E+05, + 0.997345240177219384E+05, 0.997076990988948673E+05, 0.996836794307263772E+05, 0.996625896600271371E+05, 0.996445791479565378E+05, + 0.996298224252568762E+05, 0.996185192726470996E+05, 0.996108943913202529E+05, 0.996171044733596500E+05, 0.996274341933858086E+05, + 0.996407368485686020E+05, 0.996564433077199938E+05, 0.996739662819337100E+05, 0.996926995456860750E+05, 0.997120167510192841E+05, + 0.997312700110226870E+05, 0.997492720049924683E+05, 0.997589945357419347E+05, 0.997672950870170171E+05, 0.997740082631510304E+05, + 0.997789569418504107E+05, 0.997819534179343900E+05, 0.997828018434580008E+05, 0.997813025467889238E+05, 0.997761547542830958E+05, + 0.997606903751367063E+05, 0.997380039112137747E+05, 0.997148807783809316E+05, 0.996925793721139198E+05, 0.996723316187614837E+05, + 0.996553186696160265E+05, 0.996426434711866459E+05, 0.996353006212308683E+05, 0.996360089851673401E+05, 0.996493081867637520E+05, + 0.996683800195190997E+05, 0.996929780547397386E+05, 0.997227658669395460E+05, 0.997573001543519495E+05, 0.997960150791931374E+05, + 0.998382096557535260E+05, 0.998830404070649238E+05, 0.999298323121304275E+05, 0.999742523604048474E+05, 0.100016965326181715E+06, + 0.100057253131543956E+06, 0.100094584675305145E+06, 0.100128612542877818E+06, 0.100159162106115866E+06, 0.100186212494174571E+06, + 0.100209869217876141E+06, 0.100230664541801205E+06, 0.100252215827535721E+06, 0.100272507526162837E+06, 0.100291578842935764E+06, + 0.100309849731348106E+06, 0.100327689967233746E+06, 0.100345394170965068E+06, 0.100363163535270942E+06, 0.100381092592034052E+06, + 0.100399259031973241E+06, 0.100417513798931104E+06, 0.100435580822035801E+06, 0.100453091252954211E+06, 0.100469603339999827E+06, + 0.100480151507121773E+06, 0.100489254638568047E+06, 0.100498595808049067E+06, 0.100508951548301586E+06, 0.100521040443233302E+06, + 0.100536087694824993E+06, 0.100554481106296153E+06, 0.100575842199618433E+06, 0.100600284600435130E+06, 0.100627894363922838E+06, + 0.100660998742818352E+06, 0.100699900685942383E+06, 0.100740240979155365E+06, 0.100780773089326132E+06, 0.100820325888548046E+06, + 0.100857002425394050E+06, 0.100889306549680012E+06, 0.100918410465244044E+06, 0.100943855527829830E+06, 0.100965216993375041E+06, + 0.100982104369596826E+06, 0.100988787448417890E+06, 0.100992039290643908E+06, 0.100992851817592629E+06, 0.100992148367721486E+06, + 0.100990754377491627E+06, 0.100989328864528783E+06, 0.100987939282731590E+06, 0.100987019598780156E+06, 0.100986810224360001E+06, + 0.100987461015865600E+06, 0.100989052975663959E+06, 0.100991630597561802E+06, 0.100995163025901697E+06, 0.101001875722349461E+06, + 0.101011088720900429E+06, 0.101021084899088091E+06, 0.101031663037972830E+06, 0.101042638294081626E+06, 0.101053858103835970E+06, + 0.101065218626100279E+06, 0.101076680586933391E+06, 0.101088283485301858E+06, 0.101099874970037970E+06, 0.101113089326713816E+06, + 0.101125428039884195E+06, 0.101136196176455385E+06, 0.101144782354753406E+06, 0.101150661981462021E+06, 0.101153397040916956E+06, + 0.101152632849470392E+06, 0.101148092219151222E+06, 0.101138825885236918E+06, 0.101125297346996245E+06, 0.101107998631323659E+06, + 0.101086896343469081E+06, 0.101061954484055474E+06, 0.101033133620494526E+06, 0.101000389988487950E+06, 0.100963674428856495E+06, + 0.100920035249967157E+06, 0.100864002050084426E+06, 0.100802954127500183E+06, 0.100739491656333426E+06, 0.100674607806506479E+06, + 0.100609142818467881E+06, 0.100543918229119721E+06, 0.100479729438758746E+06, 0.100417340423775575E+06, 0.100357818911458060E+06, + 0.100301549120910859E+06, 0.100249027161521051E+06, 0.100200821670612902E+06, 0.101087517829558172E+06, 0.101052015003826687E+06, + 0.101011788745108162E+06, 0.100964536778963855E+06, 0.100915488137692053E+06, 0.100864943012846241E+06, 0.100813190048196135E+06, + 0.100760500256302723E+06, 0.100707121731364154E+06, 0.100653275174801398E+06, 0.100599150242222226E+06, 0.100544902712618306E+06, + 0.100490652473024573E+06, 0.100436482304513964E+06, 0.100382437448442113E+06, 0.100320280351299210E+06, 0.100257427382579408E+06, + 0.100194846079550756E+06, 0.100132891655021755E+06, 0.100071918796184837E+06, 0.100012281557507449E+06, 0.999543340473443968E+05, + 0.998984318951125897E+05, 0.998449344820776314E+05, 0.997942079153267550E+05, 0.997466460297804297E+05, 0.997094928681285237E+05, + 0.996756279012622545E+05, 0.996450218538222252E+05, 0.996176735384205385E+05, 0.995936103776563396E+05, 0.995728884174646664E+05, + 0.995555917894421727E+05, 0.995418315732738702E+05, 0.995317440033937164E+05, 0.995262628136555868E+05, 0.995329410864949314E+05, + 0.995433141117427585E+05, 0.995568197318211314E+05, 0.995728823939344729E+05, 0.995909116272487881E+05, 0.996102999545491039E+05, + 0.996304204174830811E+05, 0.996506239397997124E+05, 0.996702368021630245E+05, 0.996815718025470851E+05, 0.996899469928969920E+05, + 0.996967323341972806E+05, 0.997018093255459680E+05, 0.997050766826754843E+05, 0.997064543685055542E+05, 0.997058891541211779E+05, + 0.997033620388164272E+05, 0.996988978495463380E+05, 0.996831868676393642E+05, 0.996664226445127570E+05, 0.996504367351514375E+05, + 0.996361908772876632E+05, 0.996245860820844246E+05, 0.996164411729444837E+05, 0.996124708057612588E+05, 0.996132638091558620E+05, + 0.996196649575229239E+05, 0.996367110923675500E+05, 0.996583825556631200E+05, 0.996843326520396949E+05, 0.997128691088688356E+05, + 0.997429147876210773E+05, 0.997758051592909760E+05, 0.998110107603276119E+05, 0.998478942000829556E+05, 0.998857114279977977E+05, + 0.999214491155317955E+05, 0.999550948845939129E+05, 0.999866837454055931E+05, 0.100015951080814193E+06, 0.100042763152220112E+06, + 0.100066833155271277E+06, 0.100088158247781059E+06, 0.100108078185884762E+06, 0.100126927297932227E+06, 0.100144951073682430E+06, + 0.100162306504082269E+06, 0.100179972902585811E+06, 0.100197255514410528E+06, 0.100214513504718459E+06, 0.100231716678680328E+06, + 0.100248516891677820E+06, 0.100264879167597144E+06, 0.100280677931150029E+06, 0.100295703143529230E+06, 0.100309668678237373E+06, + 0.100317822458752169E+06, 0.100323698725186405E+06, 0.100328766123466703E+06, 0.100333617686529382E+06, 0.100338870421945830E+06, + 0.100345146510504768E+06, 0.100353505811859010E+06, 0.100364091412822730E+06, 0.100377219192028511E+06, 0.100393145224109379E+06, + 0.100412076822805961E+06, 0.100436536362016341E+06, 0.100466993027333549E+06, 0.100499128955239808E+06, 0.100531867585847620E+06, + 0.100564210070354224E+06, 0.100595268938737849E+06, 0.100623389505981249E+06, 0.100648875381678285E+06, 0.100671545265182722E+06, + 0.100691215991390258E+06, 0.100707855569253967E+06, 0.100721531568851729E+06, 0.100729765774870320E+06, 0.100736382308921660E+06, + 0.100742049357786149E+06, 0.100747338931632839E+06, 0.100752699996680560E+06, 0.100758437644766876E+06, 0.100764492369211905E+06, + 0.100771174162651805E+06, 0.100778897781122723E+06, 0.100791202238176033E+06, 0.100805304746492911E+06, 0.100820453141876555E+06, + 0.100836553977341420E+06, 0.100853433691068960E+06, 0.100869804352758074E+06, 0.100885565873248357E+06, 0.100901263434718436E+06, + 0.100916755649211860E+06, 0.100931925490762223E+06, 0.100946862129343805E+06, 0.100964994999554750E+06, 0.100982379998277524E+06, + 0.100998599729598267E+06, 0.101013259118967748E+06, 0.101025997621651855E+06, 0.101036183051793079E+06, 0.101042991775159331E+06, + 0.101046219174794693E+06, 0.101045436783694371E+06, 0.101037979396283830E+06, 0.101026389136987622E+06, 0.101011353849770458E+06, + 0.100992765156084381E+06, 0.100970520839387638E+06, 0.100944522980413691E+06, 0.100914676733503889E+06, 0.100880889510173438E+06, + 0.100843070409204898E+06, 0.100794195318855112E+06, 0.100740849916230014E+06, 0.100684368608276331E+06, 0.100625515617689191E+06, + 0.100565057571482292E+06, 0.100503753672499588E+06, 0.100442348146381337E+06, 0.100381564680888332E+06, 0.100322120082476831E+06, + 0.100265427081164002E+06, 0.100211108587006820E+06, 0.100159852906932778E+06, 0.100112309293580329E+06, 0.101124201328911135E+06, + 0.101079108320663814E+06, 0.101031809144729792E+06, 0.100982479818601947E+06, 0.100931296727433786E+06, 0.100878431465452362E+06, + 0.100824045759680885E+06, 0.100768286540631874E+06, 0.100710530566360118E+06, 0.100651851143405918E+06, 0.100592641779612633E+06, + 0.100533088300546049E+06, 0.100473351995987294E+06, 0.100413568226339557E+06, 0.100347374189164038E+06, 0.100280419558277266E+06, + 0.100213466642138825E+06, 0.100146884874704396E+06, 0.100081054126754942E+06, 0.100016363564741026E+06, 0.999532111494706915E+05, + 0.998920037667682045E+05, 0.998331579776468134E+05, 0.997771013708717801E+05, 0.997242744959584961E+05, 0.996794911425569007E+05, + 0.996421673866169731E+05, 0.996083624063458992E+05, 0.995780558571076108E+05, 0.995512438908386830E+05, 0.995279390599935141E+05, + 0.995081697090995876E+05, 0.994919788171798573E+05, 0.994794222509916144E+05, 0.994705663858296175E+05, 0.994666304399983201E+05, + 0.994716729317709396E+05, 0.994803098980725772E+05, 0.994920284915772354E+05, 0.995062941002977459E+05, 0.995225510997954116E+05, + 0.995402235083560226E+05, 0.995587157137078175E+05, 0.995774134724761680E+05, 0.995956854178548674E+05, 0.996082099438724399E+05, + 0.996146714115503564E+05, 0.996198917096476653E+05, 0.996237772972328385E+05, 0.996262556600006501E+05, 0.996272811679797160E+05, + 0.996268420791924145E+05, 0.996249688472863927E+05, 0.996217438673883153E+05, 0.996165665480622556E+05, 0.996053672464558331E+05, + 0.995949919441781822E+05, 0.995861528017038072E+05, 0.995795026742108748E+05, 0.995756196555683418E+05, 0.995749923295157205E+05, + 0.995764918417123117E+05, 0.995811371618628909E+05, 0.995900021812679042E+05, 0.996053443416097725E+05, 0.996253126869847765E+05, + 0.996485392863536254E+05, 0.996747275639752770E+05, 0.997034975235640304E+05, 0.997343816924544808E+05, 0.997668244608898967E+05, + 0.998001857951137499E+05, 0.998337502953590738E+05, 0.998667425003782409E+05, 0.998964382191309269E+05, 0.999219732315580331E+05, + 0.999453769704884326E+05, 0.999669632680838986E+05, 0.999870458961453260E+05, 0.100005916456012012E+06, 0.100023824889774987E+06, + 0.100040963571971195E+06, 0.100057455775243085E+06, 0.100073413986486979E+06, 0.100089335775104671E+06, 0.100104815244426631E+06, + 0.100119703191363587E+06, 0.100134379227022902E+06, 0.100148369375800728E+06, 0.100161370783191393E+06, 0.100173213642796953E+06, + 0.100180378799944810E+06, 0.100185526497069281E+06, 0.100189324284954535E+06, 0.100192153267272603E+06, 0.100194434190503976E+06, + 0.100196610662858875E+06, 0.100198905421094794E+06, 0.100201850991823914E+06, 0.100206163107215340E+06, 0.100212230663632377E+06, + 0.100220378132198122E+06, 0.100230869811071767E+06, 0.100245444302250398E+06, 0.100264473811748554E+06, 0.100285188354245533E+06, + 0.100306907645131752E+06, 0.100328990026887506E+06, 0.100350863943610893E+06, 0.100371839758985952E+06, 0.100391444833452260E+06, + 0.100409831169643890E+06, 0.100426823791286341E+06, 0.100442350551841242E+06, 0.100456434485740057E+06, 0.100469179887128601E+06, + 0.100480095078871280E+06, 0.100490844862516460E+06, 0.100501773469729742E+06, 0.100513473090107072E+06, 0.100529036405637875E+06, + 0.100544944618372494E+06, 0.100561407314039185E+06, 0.100578441255079553E+06, 0.100596158161423402E+06, 0.100614688506316757E+06, + 0.100634037456854698E+06, 0.100654132781311564E+06, 0.100674831301503669E+06, 0.100695930204477670E+06, 0.100717182634869590E+06, + 0.100738316734543623E+06, 0.100757949561458212E+06, 0.100778269263575014E+06, 0.100798138776316147E+06, 0.100817212656416305E+06, + 0.100835135245772617E+06, 0.100851545416907000E+06, 0.100866083297882986E+06, 0.100878398135237148E+06, 0.100888156496614407E+06, + 0.100895050095971907E+06, 0.100897946875170004E+06, 0.100893038607802475E+06, 0.100884438418173842E+06, 0.100872056807847897E+06, + 0.100855733686039923E+06, 0.100836196267254127E+06, 0.100813309503127763E+06, 0.100786948600525633E+06, 0.100756997497101227E+06, + 0.100723347939641535E+06, 0.100681497385685245E+06, 0.100634489632593322E+06, 0.100584469640955329E+06, 0.100531975070484972E+06, + 0.100477580490852386E+06, 0.100421885399875624E+06, 0.100365503956835804E+06, 0.100309056337240749E+06, 0.100253161585176160E+06, + 0.100199112753698049E+06, 0.100147837599931416E+06, 0.100098570404209735E+06, 0.100051904767761502E+06, 0.100008417383464068E+06, + 0.101133829804470908E+06, 0.101086063734912168E+06, 0.101036163378778583E+06, 0.100984272823056410E+06, 0.100930541473297533E+06, + 0.100875120408097937E+06, 0.100818158832696005E+06, 0.100759800682388610E+06, 0.100700181428799915E+06, 0.100639425144117529E+06, + 0.100577641880169904E+06, 0.100514925420599073E+06, 0.100451351465310479E+06, 0.100382775391041228E+06, 0.100313407558045423E+06, + 0.100244124043691409E+06, 0.100175160300200252E+06, 0.100106643005048623E+06, 0.100038955227867787E+06, 0.999724957502307661E+05, + 0.999076781431158888E+05, 0.998449303055831406E+05, 0.997846944474534976E+05, 0.997274274929867825E+05, 0.996741803525597352E+05, + 0.996341923290063423E+05, 0.995977652427823923E+05, 0.995648719529626542E+05, 0.995354913787664409E+05, 0.995096084222995123E+05, + 0.994872134460891248E+05, 0.994683012796486000E+05, 0.994528697284307418E+05, 0.994409175579627627E+05, 0.994324419258456037E+05, + 0.994284685420939932E+05, 0.994314645232595940E+05, 0.994376508028579119E+05, 0.994465880324430618E+05, 0.994578122019961011E+05, + 0.994708370980191394E+05, 0.994851569440643361E+05, 0.995002493657292362E+05, 0.995155788435459253E+05, 0.995306008387735346E+05, + 0.995442855494334071E+05, 0.995482724169068970E+05, 0.995511559961705934E+05, 0.995528872179506288E+05, 0.995534386606523331E+05, + 0.995528106454166118E+05, 0.995510380683528929E+05, 0.995481980155677447E+05, 0.995444181794313772E+05, 0.995389426918443642E+05, + 0.995326299748121528E+05, 0.995248068651720969E+05, 0.995181203502452699E+05, 0.995131485287031392E+05, 0.995104093839186244E+05, + 0.995103487778951967E+05, 0.995133292577804386E+05, 0.995196200330811116E+05, 0.995293885226779821E+05, 0.995426939068978973E+05, + 0.995594831481808505E+05, 0.995804466354603064E+05, 0.996042013257502404E+05, 0.996303970501146687E+05, 0.996586123005633417E+05, + 0.996883528051014437E+05, 0.997188265847352159E+05, 0.997490367113701504E+05, 0.997788526495865081E+05, 0.998078707819837873E+05, + 0.998356993938613014E+05, 0.998619800562695164E+05, 0.998837326032437413E+05, 0.999030588156207523E+05, 0.999213959026974480E+05, + 0.999389528776631778E+05, 0.999559737390779337E+05, 0.999728528505193826E+05, 0.999889548460716323E+05, 0.100004292017804837E+06, + 0.100018822423468373E+06, 0.100032457501698547E+06, 0.100045070251751036E+06, 0.100056503593779649E+06, 0.100066444229329674E+06, + 0.100073267298309525E+06, 0.100078208907556284E+06, 0.100081428306994378E+06, 0.100083145646425299E+06, 0.100084490398295631E+06, + 0.100085214798590619E+06, 0.100085235536889129E+06, 0.100083644141418641E+06, 0.100082296767241191E+06, 0.100081573165770096E+06, + 0.100081814208376789E+06, 0.100083316094140551E+06, 0.100086326553815597E+06, 0.100092077248113128E+06, 0.100100913993150592E+06, + 0.100111107468981296E+06, 0.100122323217253404E+06, 0.100134231875447673E+06, 0.100146529461883110E+06, 0.100158953738958458E+06, + 0.100172103739167927E+06, 0.100185442550333013E+06, 0.100198870033114930E+06, 0.100214743046030431E+06, 0.100230501702414200E+06, + 0.100246186063517438E+06, 0.100261900880765723E+06, 0.100278280962620207E+06, 0.100294975745097370E+06, 0.100311878419328103E+06, + 0.100329065054564679E+06, 0.100346610730169734E+06, 0.100364576981339662E+06, 0.100382997190169379E+06, 0.100401860048637522E+06, + 0.100421460558640218E+06, 0.100441987614432976E+06, 0.100463274519939529E+06, 0.100485156332498926E+06, 0.100507667562079601E+06, + 0.100531755712309474E+06, 0.100555537683995659E+06, 0.100578784151641899E+06, 0.100601239956125326E+06, 0.100622628756313949E+06, + 0.100641873088256354E+06, 0.100658680264014634E+06, 0.100673598187900920E+06, 0.100686312726101605E+06, 0.100696503456104270E+06, + 0.100703849613094353E+06, 0.100704152415214849E+06, 0.100700762505721214E+06, 0.100694332357036590E+06, 0.100684801738842943E+06, + 0.100672137064367969E+06, 0.100656329651135165E+06, 0.100637393206196401E+06, 0.100615360755861184E+06, 0.100590281222544916E+06, + 0.100562215831141861E+06, 0.100526781016220033E+06, 0.100486348156266336E+06, 0.100442798181998849E+06, 0.100397163429546563E+06, + 0.100349807344903311E+06, 0.100301139976506107E+06, 0.100251607747954069E+06, 0.100201684250218939E+06, 0.100151862062679153E+06, + 0.100102645581508201E+06, 0.100056044918004729E+06, 0.100011301942910883E+06, 0.999684520456376777E+05, 0.999279531311431929E+05, + 0.998902646792392770E+05, 0.101126663346454399E+06, 0.101077325354608969E+06, 0.101025975734916894E+06, 0.100972737972671399E+06, + 0.100917744423974829E+06, 0.100861133803490855E+06, 0.100803048766821448E+06, 0.100743633625432005E+06, 0.100683032233185906E+06, + 0.100621386084403202E+06, 0.100558832663878042E+06, 0.100495211427552291E+06, 0.100428081646754872E+06, 0.100360053702616802E+06, + 0.100291421804985934E+06, 0.100222501857581025E+06, 0.100153629396011398E+06, 0.100085157752426705E+06, 0.100017456492403435E+06, + 0.999509101650603116E+05, 0.998859174013813172E+05, 0.998228903882164013E+05, 0.997622547363343474E+05, 0.997044497501409787E+05, + 0.996565808532324445E+05, 0.996171954030033376E+05, 0.995813735590216529E+05, 0.995490780595074320E+05, 0.995202664706442010E+05, + 0.994948916653312772E+05, 0.994731497863732366E+05, 0.994547373765991215E+05, 0.994395024448596523E+05, 0.994273918334258487E+05, + 0.994183417080185318E+05, 0.994131115873192466E+05, 0.994138210062121798E+05, 0.994170868554473127E+05, 0.994225572846895811E+05, + 0.994298923767942179E+05, 0.994385978253560606E+05, 0.994482495116238133E+05, 0.994584440096453618E+05, 0.994687785322086420E+05, + 0.994788546658055129E+05, 0.994882828035313869E+05, 0.994927040708071727E+05, 0.994917547439376503E+05, 0.994895539007886109E+05, + 0.994862075166797877E+05, 0.994818501581585733E+05, 0.994766470759525691E+05, 0.994707963627129502E+05, 0.994645310337857954E+05, + 0.994581208250226337E+05, 0.994518734280974313E+05, 0.994461348017268174E+05, 0.994415182672292285E+05, 0.994388346879257297E+05, + 0.994384357346413162E+05, 0.994406125032009149E+05, 0.994455917032776051E+05, 0.994535286747415666E+05, 0.994645016916688619E+05, + 0.994785078337676387E+05, 0.994954607091662765E+05, 0.995151903074341826E+05, 0.995379744989390892E+05, 0.995645762978403654E+05, + 0.995919660907828365E+05, 0.996199268533732247E+05, 0.996482101418556267E+05, 0.996765332991438627E+05, 0.997045938426658686E+05, + 0.997320840835444978E+05, 0.997587053657859215E+05, 0.997841813092843222E+05, 0.998082694645679585E+05, 0.998307708426059398E+05, + 0.998521847777656949E+05, 0.998731316336951131E+05, 0.998915223579208832E+05, 0.999088069900928822E+05, 0.999250655468217301E+05, + 0.999403321942196199E+05, 0.999545992766920099E+05, 0.999678219791941956E+05, 0.999799234377201792E+05, 0.999908557408674824E+05, + 0.100000288315772239E+06, 0.100007974659642932E+06, 0.100013912274213857E+06, 0.100018152445268570E+06, 0.100020792433534516E+06, + 0.100021965384116600E+06, 0.100021828600707202E+06, 0.100018978825766098E+06, 0.100014638020503815E+06, 0.100010038309740252E+06, + 0.100005576575099418E+06, 0.100001604858675491E+06, 0.999984320892866672E+05, 0.999963266886948113E+05, 0.999958737477183749E+05, + 0.999972975927051302E+05, 0.100000048030566773E+06, 0.100004042344745598E+06, 0.100009194673973179E+06, 0.100015426118827090E+06, + 0.100022673026545686E+06, 0.100031009563329135E+06, 0.100040766570146734E+06, 0.100051217540583049E+06, 0.100062248668533124E+06, + 0.100073786795171531E+06, 0.100085797503990121E+06, 0.100098280610450573E+06, 0.100111262656178049E+06, 0.100125001802413579E+06, + 0.100139645695878644E+06, 0.100154900063508263E+06, 0.100170710309353148E+06, 0.100187004814548171E+06, 0.100203682971120987E+06, + 0.100220602392753455E+06, 0.100237565502663623E+06, 0.100256278549938754E+06, 0.100276900404893633E+06, 0.100298794291387065E+06, + 0.100320557514765664E+06, 0.100342058165774986E+06, 0.100363130678741916E+06, 0.100383577435456726E+06, 0.100403171366828377E+06, + 0.100421659429775435E+06, 0.100438766794516225E+06, 0.100454201546808938E+06, 0.100467659691497232E+06, 0.100478830237807808E+06, + 0.100481024801078907E+06, 0.100479810484167552E+06, 0.100476403382797740E+06, 0.100470673041393165E+06, 0.100462504496619513E+06, + 0.100451800234604845E+06, 0.100438481209722173E+06, 0.100422487058078696E+06, 0.100403775642287073E+06, 0.100382322062990715E+06, + 0.100358117267813446E+06, 0.100327534199358997E+06, 0.100293850879764213E+06, 0.100257806725219358E+06, 0.100219741686727677E+06, + 0.100180023194298759E+06, 0.100139040711945461E+06, 0.100097200477411025E+06, 0.100054920551059535E+06, 0.100012626265403043E+06, + 0.999707461374165723E+05, 0.999303503014407033E+05, 0.998922229704366764E+05, 0.998554721656402544E+05, 0.998204850080980395E+05, + 0.997876409225251264E+05, 0.997573084048583696E+05, 0.101103863341862932E+06, 0.101054198041262367E+06, 0.101002678396138304E+06, + 0.100949414469850730E+06, 0.100894527371675096E+06, 0.100838147558637153E+06, 0.100780413214267071E+06, 0.100721468731159111E+06, + 0.100661463324523051E+06, 0.100600549803942500E+06, 0.100538495641508489E+06, 0.100474499779926511E+06, 0.100409614880186520E+06, + 0.100344074690081019E+06, 0.100278137807477731E+06, 0.100212086086552372E+06, 0.100146223109295490E+06, 0.100080872747272268E+06, + 0.100016377835126099E+06, 0.999530989729176799E+05, 0.998914134690468200E+05, 0.998317144291724107E+05, 0.997744099892116501E+05, + 0.997208338934957865E+05, 0.996799309689324291E+05, 0.996422327801534993E+05, 0.996077247089604498E+05, 0.995763830833266111E+05, + 0.995481752007196337E+05, 0.995230592311468208E+05, 0.995009839760444302E+05, 0.994818884619951277E+05, 0.994657013515687577E+05, + 0.994523401572802686E+05, 0.994417102486785589E+05, 0.994338127166474005E+05, 0.994291184813256987E+05, 0.994266081659517949E+05, + 0.994259833524572168E+05, 0.994269351914163999E+05, 0.994291475057475909E+05, 0.994323001129119220E+05, 0.994360724062380032E+05, + 0.994401472289394151E+05, 0.994442150616938598E+05, 0.994479785254193557E+05, 0.994511571742526139E+05, 0.994472284598653205E+05, + 0.994408965796853736E+05, 0.994339336034472362E+05, 0.994264710020695638E+05, 0.994186660048548511E+05, 0.994107025256855122E+05, + 0.994027916086733312E+05, 0.993951711926945572E+05, 0.993881049497915083E+05, 0.993818799057818542E+05, 0.993768025040628709E+05, + 0.993745371453054540E+05, 0.993758273945832625E+05, 0.993797480709728989E+05, 0.993864179439653672E+05, 0.993959015946626314E+05, + 0.994106666848780587E+05, 0.994280957797027659E+05, 0.994479062249146809E+05, 0.994699024606817256E+05, 0.994938326370272989E+05, + 0.995193970618178137E+05, 0.995462575961586117E+05, 0.995732238058578514E+05, 0.995996836683722795E+05, 0.996264076540508540E+05, + 0.996531520384603791E+05, 0.996796729134591151E+05, 0.997057352581914602E+05, 0.997311214531925361E+05, 0.997565307292698708E+05, + 0.997809628500159452E+05, 0.998041926037547237E+05, 0.998260922842872533E+05, 0.998465616497438023E+05, 0.998655323213428928E+05, + 0.998829702013785281E+05, 0.998988759405013552E+05, 0.999132835855504527E+05, 0.999267531384376343E+05, 0.999401187534305645E+05, + 0.999522829859957856E+05, 0.999629705900948175E+05, 0.999720750719777716E+05, 0.999795225775888684E+05, 0.999852704402040836E+05, + 0.999893033756584045E+05, 0.999916276698245056E+05, 0.999912215328864258E+05, 0.999874978505536856E+05, 0.999827294697511534E+05, + 0.999772668831095216E+05, 0.999714403004270425E+05, 0.999655543840146129E+05, 0.999598844544293243E+05, 0.999546738384171913E+05, + 0.999501503361758805E+05, 0.999464612795733119E+05, 0.999436472754112765E+05, 0.999417478240415512E+05, 0.999407845190346270E+05, + 0.999407674168311496E+05, 0.999417003681598144E+05, 0.999435850419050112E+05, 0.999466778359479795E+05, 0.999509741170870548E+05, + 0.999561184478715149E+05, 0.999620266396879451E+05, 0.999686260435519798E+05, 0.999758509523019893E+05, 0.999836356497705565E+05, + 0.999919049957114039E+05, 0.100000562486864073E+06, 0.100011784952549118E+06, 0.100025750768122278E+06, 0.100039950549839836E+06, + 0.100054145017178846E+06, 0.100068316891848794E+06, 0.100082450146767165E+06, 0.100096523400557431E+06, 0.100110501610887819E+06, + 0.100124326095454249E+06, 0.100137903024072584E+06, 0.100153035210029513E+06, 0.100168028234449826E+06, 0.100182528489386037E+06, + 0.100196311615898419E+06, 0.100209129758123207E+06, 0.100220714305906484E+06, 0.100227674075086179E+06, 0.100228582862959636E+06, + 0.100228182141282334E+06, 0.100226441566948473E+06, 0.100223301716988630E+06, 0.100218680617939594E+06, 0.100212480375930187E+06, + 0.100204593660852275E+06, 0.100193237399701000E+06, 0.100179608999797390E+06, 0.100163806561057383E+06, 0.100145763706322687E+06, + 0.100124166108882637E+06, 0.100097853920290698E+06, 0.100069603397772837E+06, 0.100039598196173276E+06, 0.100008052525304520E+06, + 0.999752085984543955E+05, 0.999413336779185047E+05, 0.999067168729345140E+05, 0.998716658233869821E+05, 0.998365033809807937E+05, + 0.998015643788216548E+05, 0.997673503212209471E+05, 0.997368095318123815E+05, 0.997072417009385681E+05, 0.996789372306682053E+05, + 0.996521942416031088E+05, 0.996273141486202512E+05, 0.996045978845247591E+05, 0.101067589111213412E+06, 0.101018770688517165E+06, + 0.100968154311929655E+06, 0.100916004392167699E+06, 0.100862587963118029E+06, 0.100807829042751429E+06, 0.100751860689524168E+06, + 0.100694824678955032E+06, 0.100636870575220571E+06, 0.100578085861079686E+06, 0.100518387120511878E+06, 0.100457910498338359E+06, + 0.100396827710058526E+06, 0.100335334776766380E+06, 0.100273650785659062E+06, 0.100212016619918053E+06, 0.100150693670614579E+06, + 0.100089962540906286E+06, 0.100030121749858867E+06, 0.999714864397286292E+05, 0.999143870864777564E+05, 0.998591682086720684E+05, + 0.998061870647466858E+05, 0.997614041189860436E+05, 0.997232133410041570E+05, 0.996877601571912237E+05, 0.996550329117300425E+05, + 0.996250097998356068E+05, 0.995976585142769036E+05, 0.995729358349222894E+05, 0.995507871467952355E+05, 0.995311458738776855E+05, + 0.995139328178480646E+05, 0.994990553930397000E+05, 0.994864067510919558E+05, 0.994758647909620777E+05, 0.994662936172032933E+05, + 0.994584116138104437E+05, 0.994520440064580325E+05, 0.994469670430250553E+05, 0.994429511205758317E+05, 0.994397638951787376E+05, + 0.994371735196124209E+05, 0.994349519828108314E+05, 0.994328785098660155E+05, 0.994307429622300406E+05, 0.994283491541375697E+05, + 0.994255179730021191E+05, 0.994164893114872393E+05, 0.994067289084808290E+05, 0.993968888922061742E+05, 0.993871232560968492E+05, + 0.993776052903232921E+05, 0.993685268314349669E+05, 0.993600967438642401E+05, 0.993525384531912714E+05, 0.993461969112091901E+05, + 0.993435709722199681E+05, 0.993430289823759958E+05, 0.993448240458555374E+05, 0.993518125064813066E+05, 0.993620332314667612E+05, + 0.993746322170980275E+05, 0.993895541802843509E+05, 0.994066995366652700E+05, 0.994259271220238734E+05, 0.994470579336317896E+05, + 0.994698797554098419E+05, 0.994941524985713913E+05, 0.995196140617028141E+05, 0.995459864926176379E+05, 0.995729822203312797E+05, + 0.996003101205446874E+05, 0.996273070851956145E+05, 0.996547798040555062E+05, 0.996819738131592894E+05, 0.997085378998868837E+05, + 0.997343278080748278E+05, 0.997592022275180498E+05, 0.997830289890008135E+05, 0.998056904289906088E+05, 0.998270877683784638E+05, + 0.998471443932554248E+05, 0.998658079734391795E+05, 0.998830514038870024E+05, 0.998996025676379795E+05, 0.999153229697452334E+05, + 0.999295566639472963E+05, 0.999422722019988432E+05, 0.999534500054842792E+05, 0.999630795823789667E+05, 0.999711562553596450E+05, + 0.999776774721563124E+05, 0.999826387612595136E+05, 0.999854644320731022E+05, 0.999828794177739328E+05, 0.999789847225893318E+05, + 0.999739838414557307E+05, 0.999680998532223457E+05, 0.999615553821963986E+05, 0.999545658866950980E+05, 0.999473341203756863E+05, + 0.999400456392968772E+05, 0.999327953721481608E+05, 0.999256989141568774E+05, 0.999189700236989156E+05, 0.999127048128768074E+05, + 0.999069798769329791E+05, 0.999018544683639047E+05, 0.998973722234758170E+05, 0.998935621850836178E+05, 0.998904388907014218E+05, + 0.998896448727687675E+05, 0.998900344972452294E+05, 0.998911970826382749E+05, 0.998931396187662176E+05, 0.998958769268335309E+05, + 0.998994275255013781E+05, 0.999038084460577520E+05, 0.999090289824781794E+05, 0.999150833667861443E+05, 0.999217240524284571E+05, + 0.999282473433497362E+05, 0.999348833579850179E+05, 0.999415375242985901E+05, 0.999481154404054105E+05, 0.999545171017064131E+05, + 0.999606302661866066E+05, 0.999663230149861483E+05, 0.999714356178636663E+05, 0.999757718627941504E+05, 0.999790900530105428E+05, + 0.999810939111108019E+05, 0.999819561511524662E+05, 0.999789948862129386E+05, 0.999752827398946683E+05, 0.999708888630344300E+05, + 0.999658466886194801E+05, 0.999601566475907457E+05, 0.999537895884533064E+05, 0.999466907368066168E+05, 0.999387840276392963E+05, + 0.999299766462147236E+05, 0.999201636218782805E+05, 0.999092323322767916E+05, 0.998970667923400615E+05, 0.998831789013588714E+05, + 0.998636939941647142E+05, 0.998431119746374316E+05, 0.998214963412640354E+05, 0.997970862666926550E+05, 0.997712444170942908E+05, + 0.997445906917362154E+05, 0.997173029439411330E+05, 0.996895795051780588E+05, 0.996616375682111830E+05, 0.996337113354519679E+05, + 0.996060500180081726E+05, 0.995789157595469587E+05, 0.995557562522905791E+05, 0.995337048495515774E+05, 0.995126888312002120E+05, + 0.994929130817774712E+05, 0.994745951235418033E+05, 0.994579612022724759E+05, 0.994432427594338078E+05, 0.101021034351216382E+06, + 0.100974523158164724E+06, 0.100926407272977900E+06, 0.100876804093661282E+06, 0.100825841471867636E+06, 0.100773656698396328E+06, + 0.100720395485641522E+06, 0.100666210969990992E+06, 0.100612099345619077E+06, 0.100557249279083626E+06, 0.100501677971650905E+06, + 0.100445572670880414E+06, 0.100389253853780203E+06, 0.100332968905338319E+06, 0.100276665148379936E+06, 0.100220537893264976E+06, + 0.100164799821054621E+06, 0.100109679736971462E+06, 0.100055421257730064E+06, 0.100002281430952105E+06, 0.999505292822571937E+05, + 0.999004442827473104E+05, 0.998530843548639095E+05, 0.998156761219489854E+05, 0.997805278523404413E+05, 0.997476323427424795E+05, + 0.997169731242686539E+05, 0.996885239311042969E+05, 0.996622481616842706E+05, 0.996380983225617529E+05, 0.996160154459489713E+05, + 0.995959284728124476E+05, 0.995777535943772964E+05, 0.995613935458951310E+05, 0.995467368475156691E+05, 0.995336569880241732E+05, + 0.995208266243795515E+05, 0.995087482639954542E+05, 0.994977965334250039E+05, 0.994878249241337762E+05, 0.994786826211323350E+05, + 0.994702168427006691E+05, 0.994622751834644587E+05, 0.994547079083998542E+05, 0.994473701327138842E+05, 0.994401238077413873E+05, + 0.994328394160198222E+05, 0.994254188335577346E+05, 0.994184404922492249E+05, 0.994087127432848210E+05, 0.993987930235803360E+05, + 0.993894574291334138E+05, 0.993808966627234331E+05, 0.993733080854502186E+05, 0.993668924009867187E+05, 0.993618498078672274E+05, + 0.993583756460734730E+05, 0.993566555807828554E+05, 0.993568603838800627E+05, 0.993591403923829785E+05, 0.993636197419046657E+05, + 0.993703904921866488E+05, 0.993811197203903430E+05, 0.993950856599565304E+05, 0.994111457979586703E+05, 0.994291602554974379E+05, + 0.994489675444759632E+05, 0.994703876196585625E+05, 0.994932253351752443E+05, 0.995172741944998997E+05, 0.995426559018634871E+05, + 0.995694776827033347E+05, 0.995970389008766942E+05, 0.996251091056232981E+05, 0.996534496905636333E+05, 0.996818187512539298E+05, + 0.997099760279327893E+05, 0.997374141751707793E+05, 0.997622618739524623E+05, 0.997862435467323085E+05, 0.998092414887019404E+05, + 0.998311505958143825E+05, 0.998518805596518214E+05, 0.998718102890837035E+05, 0.998910750046514877E+05, 0.999090219912788452E+05, + 0.999255559670365765E+05, 0.999405919139345788E+05, 0.999540538378546335E+05, 0.999658730563341524E+05, 0.999759860512857849E+05, + 0.999843319314751134E+05, 0.999908495555851987E+05, 0.999954743712658383E+05, 0.999944404784162907E+05, 0.999915968456238916E+05, + 0.999872439634975599E+05, 0.999816171531630534E+05, 0.999749362615833961E+05, 0.999674042229870247E+05, 0.999592064518093102E+05, + 0.999505109123499715E+05, 0.999414687118180882E+05, 0.999323665105546679E+05, 0.999233975283402833E+05, 0.999144981369005836E+05, + 0.999058003303556034E+05, 0.998974241845954093E+05, 0.998894782591478870E+05, 0.998820595750179200E+05, 0.998752530846157169E+05, + 0.998691305778080132E+05, 0.998637489957377547E+05, 0.998586746844062873E+05, 0.998541772928227729E+05, 0.998502966627068381E+05, + 0.998469966131329420E+05, 0.998442320106148400E+05, 0.998419453691209637E+05, 0.998400626589490130E+05, 0.998384883490106731E+05, + 0.998370997211475333E+05, 0.998357405118142487E+05, 0.998339247931384743E+05, 0.998316580178510631E+05, 0.998293639855545480E+05, + 0.998269017565975373E+05, 0.998241201967542729E+05, 0.998208528853709577E+05, 0.998098081032783375E+05, 0.997954370825381193E+05, + 0.997808296869748592E+05, 0.997662255405725009E+05, 0.997518145513712225E+05, 0.997377288090598740E+05, 0.997240360167264153E+05, + 0.997115902471897134E+05, 0.997002807779587602E+05, 0.996889928911353927E+05, 0.996776906921413611E+05, 0.996663184120892256E+05, + 0.996548031405013462E+05, 0.996430577981460665E+05, 0.996309842516777717E+05, 0.996172720856796950E+05, 0.995989960463366879E+05, + 0.995803026148819772E+05, 0.995612677891255880E+05, 0.995419614978694444E+05, 0.995224517021402135E+05, 0.995028080337064894E+05, + 0.994831049415358284E+05, 0.994634243322594411E+05, 0.994438577049017331E+05, 0.994245077928505052E+05, 0.994054897371244297E+05, + 0.993869318243143207E+05, 0.993690043020055746E+05, 0.993554308490509575E+05, 0.993412332136938494E+05, 0.993276308539287711E+05, + 0.993151162456799066E+05, 0.993038276851009432E+05, 0.992939167429839872E+05, 0.992855451787946949E+05, 0.992788820449725754E+05, + 0.100964847544612581E+06, 0.100921528597807934E+06, 0.100876819617514033E+06, 0.100830819119977881E+06, 0.100783635790840315E+06, + 0.100735387872604493E+06, 0.100686849362626730E+06, 0.100638850722815405E+06, 0.100589987206303587E+06, 0.100540391690949080E+06, + 0.100490207838124057E+06, 0.100439589213655403E+06, 0.100388698427470110E+06, 0.100337706295036201E+06, 0.100286791022897989E+06, + 0.100236137419730803E+06, 0.100185936133379830E+06, 0.100136382913311769E+06, 0.100087677896791603E+06, 0.100040024915916016E+06, + 0.999936308213850425E+05, 0.999487048175969685E+05, 0.999098959263045108E+05, 0.998760905821691704E+05, 0.998440744381323602E+05, + 0.998138388707919803E+05, 0.997853639904371375E+05, 0.997586190608742472E+05, 0.997335630315415328E+05, 0.997101451748205582E+05, + 0.996883058208672010E+05, 0.996679771815481945E+05, 0.996490842541338643E+05, 0.996315457942174835E+05, 0.996152753458579973E+05, + 0.996001823151213321E+05, 0.995855679555827810E+05, 0.995705558364965109E+05, 0.995563634129148850E+05, 0.995429286082849721E+05, + 0.995301928975228802E+05, 0.995181034121451230E+05, 0.995066149374921079E+05, 0.994956917495421949E+05, 0.994853092368055950E+05, + 0.994754552514231473E+05, 0.994661311329740856E+05, 0.994573523487461207E+05, 0.994491486954472930E+05, 0.994415640096655407E+05, + 0.994332401191460376E+05, 0.994242851325149240E+05, 0.994162875697421550E+05, 0.994093942955236271E+05, 0.994037502528714977E+05, + 0.993994957235938200E+05, 0.993967633485402912E+05, 0.993956749460767023E+05, 0.993963381773120200E+05, 0.993988431167032832E+05, + 0.994032587965396087E+05, 0.994096298031491460E+05, 0.994179730111528625E+05, 0.994282745493404218E+05, 0.994404870973938814E+05, + 0.994568186139204772E+05, 0.994754658271223161E+05, 0.994958964449326450E+05, 0.995177045414582390E+05, 0.995407458140571835E+05, + 0.995648609237595665E+05, 0.995898777201360062E+05, 0.996156137473152776E+05, 0.996418789751202567E+05, 0.996684786927591776E+05, + 0.996952164972683240E+05, 0.997218973051197536E+05, 0.997483303132390720E+05, 0.997743318352098577E+05, 0.997997279397391831E+05, + 0.998243568215117266E+05, 0.998484029817739647E+05, 0.998715185643880104E+05, 0.998929709407826740E+05, 0.999121391071011894E+05, + 0.999300598538423073E+05, 0.999466118827012979E+05, 0.999616803026846756E+05, 0.999751558213879034E+05, 0.999869336418048333E+05, + 0.999969120922718139E+05, 0.100004991024896648E+06, 0.100011070025070803E+06, 0.100011361902027944E+06, 0.100009689874259901E+06, + 0.100006354866167210E+06, 0.100001521961853068E+06, 0.999953569047140481E+05, 0.999880229251482233E+05, 0.999796782529097254E+05, + 0.999704742484093149E+05, 0.999605540801449097E+05, 0.999500518713602651E+05, 0.999395620634615480E+05, 0.999293797224061564E+05, + 0.999189780037119199E+05, 0.999084634603603772E+05, 0.998979305732036155E+05, 0.998874607924644370E+05, 0.998771215026191203E+05, + 0.998669648551638238E+05, 0.998570264274643996E+05, 0.998473236800365266E+05, 0.998378541987464268E+05, 0.998280094515223464E+05, + 0.998183015118441253E+05, 0.998087584599398106E+05, 0.997993088922536845E+05, 0.997898632369703118E+05, 0.997803110261358233E+05, + 0.997705176970055909E+05, 0.997603209573400527E+05, 0.997495267616314668E+05, 0.997338504371996823E+05, 0.997144148866953765E+05, + 0.996946194589021616E+05, 0.996748889962201501E+05, 0.996543973099300492E+05, 0.996333799061114987E+05, 0.996120632551793096E+05, + 0.995906575155593600E+05, 0.995693496108486434E+05, 0.995482968337894126E+05, 0.995276211300861032E+05, 0.995074041910853848E+05, + 0.994876834578204434E+05, 0.994684491110481467E+05, 0.994496420937635121E+05, 0.994311531852242333E+05, 0.994128231195840344E+05, + 0.993950629246981553E+05, 0.993796705843183881E+05, 0.993609699415756186E+05, 0.993418055421917088E+05, 0.993226794637357671E+05, + 0.993037059687493893E+05, 0.992849845648908376E+05, 0.992666033190360467E+05, 0.992486420429716236E+05, 0.992311752996093419E+05, + 0.992142751883332967E+05, 0.991980138777397078E+05, 0.991824658634138323E+05, 0.991677099373037345E+05, 0.991538308635238063E+05, + 0.991409207629147422E+05, 0.991303845164175582E+05, 0.991233478553789610E+05, 0.991173123854586884E+05, 0.991122941300806997E+05, + 0.991083274217430298E+05, 0.991054636978437338E+05, 0.991037699911700765E+05, 0.991033272031231463E+05, 0.991042282352598704E+05, + 0.991065760427079076E+05, 0.100899327711180042E+06, 0.100860014589195416E+06, 0.100819531202107522E+06, 0.100777959510744709E+06, + 0.100735390607726556E+06, 0.100694036465613695E+06, 0.100652089405901919E+06, 0.100609367247066592E+06, 0.100565963600471325E+06, + 0.100521982301190656E+06, 0.100477536683349797E+06, 0.100432748853070138E+06, 0.100387748961175384E+06, 0.100342674477306704E+06, + 0.100297669466538631E+06, 0.100252883868987425E+06, 0.100208472782261073E+06, 0.100164595745919316E+06, 0.100121416026401625E+06, + 0.100079099900142377E+06, 0.100037815931840771E+06, 0.999981416469988617E+05, 0.999662389876496309E+05, 0.999356748708466621E+05, + 0.999064575822306797E+05, 0.998785877324428584E+05, 0.998520583580002858E+05, 0.998268551135048328E+05, 0.998029565487271466E+05, + 0.997803344633126544E+05, 0.997589543309666333E+05, 0.997387757839643018E+05, 0.997197531476882141E+05, 0.997018360135869007E+05, + 0.996849698374662257E+05, 0.996690965483438340E+05, 0.996541551512074802E+05, 0.996382689559327409E+05, 0.996225861026435014E+05, + 0.996075569737299666E+05, 0.995931690202676109E+05, 0.995794128974490304E+05, 0.995662834351470083E+05, 0.995537804808199580E+05, + 0.995419095816340414E+05, 0.995306824727639178E+05, 0.995201173394836951E+05, 0.995102388219246932E+05, 0.995010777333177539E+05, + 0.994926704652096669E+05, 0.994850580565927958E+05, 0.994782849081547320E+05, 0.994712945317966660E+05, 0.994652135801002441E+05, + 0.994603804881314572E+05, 0.994568932856863394E+05, 0.994548423780885496E+05, 0.994543085284921108E+05, 0.994553608083860745E+05, + 0.994580545552721160E+05, 0.994624293810699601E+05, 0.994689205148530309E+05, 0.994771599445407046E+05, 0.994871232315969537E+05, + 0.994987933987223369E+05, 0.995121358180468815E+05, 0.995270974554495333E+05, 0.995436065119199775E+05, 0.995623452046183083E+05, + 0.995829609157189843E+05, 0.996045871363499173E+05, 0.996270734208106005E+05, 0.996502628846515872E+05, 0.996739938804089179E+05, + 0.996981017517049913E+05, 0.997224206254554738E+05, 0.997467852001343563E+05, 0.997710324871725461E+05, 0.997951466602976434E+05, + 0.998195365345201863E+05, 0.998432686447168817E+05, 0.998661797675172566E+05, 0.998881192989034753E+05, 0.999089497794278432E+05, + 0.999285470134942298E+05, 0.999467997752335650E+05, 0.999636091025751084E+05, 0.999788871899545629E+05, 0.999925558984901872E+05, + 0.100004544910230834E+06, 0.100014789560105870E+06, 0.100022807416958167E+06, 0.100024265952704969E+06, 0.100023783498597622E+06, + 0.100021339437537274E+06, 0.100017269778783608E+06, 0.100011871918673860E+06, 0.100005243624383627E+06, 0.999974886843563872E+05, + 0.999887143337349553E+05, 0.999790290942598513E+05, 0.999685409989449690E+05, 0.999573561671147618E+05, 0.999457665900857537E+05, + 0.999339297350767738E+05, 0.999216537925987359E+05, 0.999089986755408318E+05, 0.998960156700364460E+05, 0.998827458376240684E+05, + 0.998692184851955972E+05, 0.998554496711306274E+05, 0.998414407220986322E+05, 0.998266607131311466E+05, 0.998100194463602238E+05, + 0.997926225952954846E+05, 0.997741943883323111E+05, 0.997546758201429911E+05, 0.997340957313024119E+05, 0.997124527623238246E+05, + 0.996897658681415196E+05, 0.996660748766462057E+05, 0.996414402768971777E+05, 0.996159421531026164E+05, 0.995896781945527619E+05, + 0.995627607309631567E+05, 0.995353127665240754E+05, 0.995074630135256157E+05, 0.994793399566985754E+05, 0.994514054125879338E+05, + 0.994238487412724935E+05, 0.993966902679466439E+05, 0.993700475395201356E+05, 0.993440177799105440E+05, 0.993186743649216805E+05, + 0.992940638036397431E+05, 0.992702032829608506E+05, 0.992470788181921816E+05, 0.992246440384727030E+05, 0.992011645870204229E+05, + 0.991746701100545615E+05, 0.991489545634662645E+05, 0.991241218039765226E+05, 0.991002500071589602E+05, 0.990773923979805404E+05, + 0.990555784783537238E+05, 0.990348157029355934E+05, 0.990159736965085758E+05, 0.989981835313982592E+05, 0.989814199610305950E+05, + 0.989657585620708269E+05, 0.989512713805230014E+05, 0.989380287548638735E+05, 0.989261010103145527E+05, 0.989155600070171640E+05, + 0.989065271083586849E+05, 0.989035472935256403E+05, 0.989017382893972535E+05, 0.989010885106625501E+05, 0.989015950018414442E+05, + 0.989032643180148880E+05, 0.989061129372854630E+05, 0.989101672753579624E+05, 0.989154633681022387E+05, 0.989220462827519368E+05, + 0.989299693127524224E+05, 0.989392930054068274E+05, 0.100824204136130124E+06, 0.100789629875414903E+06, 0.100754101269738283E+06, + 0.100718965766187423E+06, 0.100683784943369043E+06, 0.100647901733698469E+06, 0.100611367338035154E+06, 0.100574242617115160E+06, + 0.100536597536512694E+06, 0.100498510595931759E+06, 0.100460068244709808E+06, 0.100421364285146075E+06, 0.100382499264969942E+06, + 0.100343579859943900E+06, 0.100304718247249199E+06, 0.100266031469940950E+06, 0.100227640792377366E+06, 0.100189671046138596E+06, + 0.100152249965554060E+06, 0.100115507511560325E+06, 0.100079575182221481E+06, 0.100047602801154819E+06, 0.100019322376832803E+06, + 0.999920409995853261E+05, 0.999657674355637573E+05, 0.999405058915761474E+05, 0.999162559646318405E+05, 0.998930126550737332E+05, + 0.998707664374257292E+05, 0.998495033822863334E+05, 0.998292053217475768E+05, 0.998098500498988724E+05, 0.997914115489896358E+05, + 0.997738602307620895E+05, 0.997571631813267886E+05, 0.997412843967411318E+05, 0.997261849951640761E+05, 0.997116241750995250E+05, + 0.996956516613714484E+05, 0.996802443385057850E+05, 0.996654141346137912E+05, 0.996511746410201595E+05, 0.996375414807133056E+05, + 0.996245325880948803E+05, 0.996121683814974822E+05, 0.996004718105865177E+05, 0.995894682617738144E+05, 0.995791853061816655E+05, + 0.995696522765213740E+05, 0.995608996615122596E+05, 0.995529583091799286E+05, 0.995458584335334599E+05, 0.995396284227406868E+05, + 0.995343367855710967E+05, 0.995305561580702051E+05, 0.995281233336275036E+05, 0.995270277929425938E+05, 0.995273063084702299E+05, + 0.995289897428417025E+05, 0.995321019769720151E+05, 0.995366588694784150E+05, 0.995426672761023801E+05, 0.995501241589093697E+05, + 0.995590158153962548E+05, 0.995693172571642208E+05, 0.995809917664462992E+05, 0.995939906564428093E+05, 0.996082532580851985E+05, + 0.996237071514999261E+05, 0.996402686551040679E+05, 0.996578435789826035E+05, 0.996763282420650648E+05, 0.996956299728876329E+05, + 0.997162410862197139E+05, 0.997372387307632453E+05, 0.997586353656998253E+05, 0.997808433601890720E+05, 0.998030187608370179E+05, + 0.998249872889569233E+05, 0.998465794208683947E+05, 0.998676313277232548E+05, 0.998879856224390824E+05, 0.999074918951320724E+05, + 0.999260070231147402E+05, 0.999433952465451439E+05, 0.999595280060564692E+05, 0.999742835440646595E+05, 0.999875462768208236E+05, + 0.999992059495608264E+05, 0.100009156592205647E+06, 0.100016063172606460E+06, 0.100019024917317467E+06, 0.100020084175617667E+06, + 0.100019327613303438E+06, 0.100016848817808917E+06, 0.100012745044390162E+06, 0.100007114161981110E+06, 0.100000051820447916E+06, + 0.999916488518789411E+05, 0.999819889104085451E+05, 0.999711463483044645E+05, 0.999591843210265215E+05, 0.999461531109617499E+05, + 0.999321525809828890E+05, 0.999172469778668019E+05, 0.999013989306642325E+05, 0.998846455567706289E+05, 0.998670119376398798E+05, + 0.998485130268999492E+05, 0.998291555936072982E+05, 0.998089401641651202E+05, 0.997878629283593327E+05, 0.997659175757975609E+05, + 0.997430970289848337E+05, 0.997193950386116485E+05, 0.996948076057053986E+05, 0.996688019987970183E+05, 0.996412728663371527E+05, + 0.996128531282160839E+05, 0.995835822131826571E+05, 0.995535100083936413E+05, 0.995226963046177698E+05, 0.994912096890770918E+05, + 0.994591258685886423E+05, 0.994265254172218556E+05, 0.993934909557864739E+05, 0.993601037847762636E+05, 0.993264400074980804E+05, + 0.992925661955399555E+05, 0.992585346639741329E+05, 0.992243784382298763E+05, 0.991926785386021656E+05, 0.991631423960881948E+05, + 0.991346701590620942E+05, 0.991043957205902552E+05, 0.990738404866020282E+05, 0.990437385072277393E+05, 0.990142493709584378E+05, + 0.989855195191612147E+05, 0.989576810877346288E+05, 0.989308511084253696E+05, 0.989051310684979690E+05, 0.988806068206827622E+05, + 0.988573488291608082E+05, 0.988354127318868268E+05, 0.988148401948802202E+05, 0.987956600302788138E+05, 0.987778895469693816E+05, + 0.987615361004738952E+05, 0.987465988074585912E+05, 0.987330703896907362E+05, 0.987209391124356771E+05, 0.987108234055703360E+05, + 0.987097019913824042E+05, 0.987103429529451387E+05, 0.987122111650228762E+05, 0.987153073516145814E+05, 0.987196321217762743E+05, + 0.987251875827369804E+05, 0.987319785667343094E+05, 0.987400135082831985E+05, 0.987493050090511242E+05, 0.987598701271371101E+05, + 0.987717304264797713E+05, 0.987849118205066625E+05, 0.987994442421061685E+05, 0.100725315299336173E+06, 0.100698574995327697E+06, + 0.100671977068823689E+06, 0.100644595052366465E+06, 0.100616468093977863E+06, 0.100587642901921921E+06, 0.100558173361375360E+06, + 0.100528120104899528E+06, 0.100497550042423565E+06, 0.100466272904751735E+06, 0.100434015096099785E+06, 0.100401562459773442E+06, + 0.100368989820934105E+06, 0.100336376879503077E+06, 0.100303807689072302E+06, 0.100271370122519947E+06, 0.100239155324566673E+06, + 0.100207257151323618E+06, 0.100175771596705425E+06, 0.100144796205413048E+06, 0.100114429472040734E+06, 0.100088940515445298E+06, + 0.100064277849083956E+06, 0.100040376776062651E+06, 0.100017243413296688E+06, 0.999948816446533019E+05, 0.999732929686431889E+05, + 0.999524763863759727E+05, 0.999324283249947912E+05, 0.999131425911760016E+05, 0.998946103486297798E+05, 0.998768201128693472E+05, + 0.998597577558295598E+05, 0.998434065122163738E+05, 0.998277469787591108E+05, 0.998127570968272776E+05, 0.997984121081719059E+05, + 0.997846844728672440E+05, 0.997711641937448148E+05, 0.997562547182444541E+05, 0.997418715469619347E+05, 0.997280378138771339E+05, + 0.997149197421024874E+05, 0.997024870178837737E+05, 0.996907061322415975E+05, 0.996795848806745926E+05, 0.996691347733205621E+05, + 0.996593714260480774E+05, 0.996503148183509184E+05, 0.996419894088608416E+05, 0.996344241017298482E+05, 0.996276520598402276E+05, + 0.996217103637612599E+05, 0.996166395185360743E+05, 0.996124828137155564E+05, 0.996092855454927922E+05, 0.996072490608482622E+05, + 0.996076113749229989E+05, 0.996091697144805221E+05, 0.996119324075692421E+05, 0.996159015340781625E+05, 0.996210724174448842E+05, + 0.996274331797853811E+05, 0.996349643746027868E+05, 0.996436387104583700E+05, 0.996534208777727908E+05, 0.996642674892599607E+05, + 0.996761271423777071E+05, 0.996889406096304010E+05, 0.997026411596077960E+05, 0.997171550083373149E+05, 0.997324018969322351E+05, + 0.997493713951271493E+05, 0.997669298086039198E+05, 0.997847561118552549E+05, 0.998027246306509041E+05, 0.998207116516734968E+05, + 0.998385964503245486E+05, 0.998562622533936083E+05, 0.998740649961419404E+05, 0.998916906165886030E+05, 0.999087089343172702E+05, + 0.999249770553750277E+05, 0.999403560696216737E+05, 0.999547111717594089E+05, 0.999679116588610341E+05, 0.999798308071318752E+05, + 0.999903456338236865E+05, 0.999993365533926699E+05, 0.100004220125714884E+06, 0.100007207317976179E+06, 0.100008572293640507E+06, + 0.100008322094038289E+06, 0.100006474067698131E+06, 0.100003053654514384E+06, 0.999980922203631635E+05, 0.999916249686873634E+05, + 0.999836889524048456E+05, 0.999743212064066029E+05, 0.999635570180646901E+05, 0.999514283507113723E+05, 0.999379624331032392E+05, + 0.999231805265346338E+05, 0.999068710521996836E+05, 0.998889830637409177E+05, 0.998698844492443604E+05, 0.998496268247692351E+05, + 0.998282550606056902E+05, 0.998058081407207792E+05, 0.997823201056188700E+05, 0.997578210428315797E+05, 0.997323380908236431E+05, + 0.997058964236216998E+05, 0.996785201849737350E+05, 0.996502333423933014E+05, 0.996210604331023060E+05, 0.995910271757503942E+05, + 0.995601609239409008E+05, 0.995275572850741737E+05, 0.994942010526460217E+05, 0.994602086162104097E+05, 0.994256424562004540E+05, + 0.993905674250224547E+05, 0.993550495610398939E+05, 0.993191545857771562E+05, 0.992829460972773086E+05, 0.992464834802344849E+05, + 0.992093627746182028E+05, 0.991704192318807618E+05, 0.991313574404489191E+05, 0.990923405318182195E+05, 0.990535358095906413E+05, + 0.990151121756168286E+05, 0.989772373919561505E+05, 0.989400752255912812E+05, 0.989077617710938066E+05, 0.988763612273478793E+05, + 0.988459508623079601E+05, 0.988166439660097676E+05, 0.987885464355162840E+05, 0.987617561295779306E+05, 0.987363624383705755E+05, + 0.987124460655073344E+05, 0.986900790161369223E+05, 0.986693247818405216E+05, 0.986502387102765642E+05, 0.986328685451310157E+05, + 0.986172551199377485E+05, 0.986034331877511868E+05, 0.985914323674813641E+05, 0.985849022212989948E+05, 0.985815381689221977E+05, + 0.985799833097597439E+05, 0.985801745721993211E+05, 0.985820463347552868E+05, 0.985855324877461535E+05, 0.985905682465279388E+05, + 0.985970917144189152E+05, 0.986050451971537113E+05, 0.986143762739106751E+05, 0.986250386326789885E+05, 0.986369926800004905E+05, + 0.986502059369656636E+05, 0.986646532347960892E+05, 0.986803686823803437E+05, 0.986978893846687570E+05, 0.100614832696455240E+06, + 0.100593867821148029E+06, 0.100572316446986515E+06, 0.100550197550235505E+06, 0.100527535703133908E+06, 0.100504360904461792E+06, + 0.100480708372667563E+06, 0.100456618304392017E+06, 0.100432135601374786E+06, 0.100407309568833982E+06, 0.100382193588466369E+06, + 0.100356844769226343E+06, 0.100331323579001226E+06, 0.100305693460217895E+06, 0.100280020432285120E+06, 0.100254372683605921E+06, + 0.100228820155686772E+06, 0.100203434121630358E+06, 0.100178286761032883E+06, 0.100153450733022924E+06, 0.100130475669895299E+06, + 0.100109956889046269E+06, 0.100089889070985242E+06, 0.100070296914338702E+06, 0.100051202164876013E+06, 0.100032623579079911E+06, + 0.100014576934231576E+06, 0.999970750815462088E+05, 0.999801280379814852E+05, 0.999637431114950741E+05, 0.999479250537698827E+05, + 0.999326762337752152E+05, 0.999179968250171223E+05, 0.999038849989644077E+05, 0.998903371169458405E+05, 0.998773479128125327E+05, + 0.998649106588674185E+05, 0.998530173079915839E+05, 0.998416586055586959E+05, 0.998308241656294995E+05, 0.998183931314519723E+05, + 0.998063026544255990E+05, 0.997946768033270637E+05, 0.997835353574148758E+05, 0.997728988116216497E+05, 0.997627886474906263E+05, + 0.997532275467060972E+05, 0.997442395412217011E+05, 0.997358500950898597E+05, 0.997280861143391958E+05, 0.997209758826208854E+05, + 0.997145489218259900E+05, 0.997088357784521941E+05, 0.997038677381365414E+05, 0.996996764724488748E+05, 0.996962936237215035E+05, + 0.996937503353465436E+05, 0.996920767365576030E+05, 0.996913013921977254E+05, 0.996914507293131610E+05, 0.996938892044791864E+05, + 0.996979235599974199E+05, 0.997029058021154924E+05, 0.997088141832942201E+05, 0.997156214047231770E+05, 0.997232945456081070E+05, + 0.997317950535919081E+05, 0.997416867970129533E+05, 0.997530959050235106E+05, 0.997652059203542885E+05, 0.997779192013086576E+05, + 0.997911354948921798E+05, 0.998047524629107502E+05, 0.998186662279794255E+05, 0.998327719289349043E+05, 0.998469642740837880E+05, + 0.998611380798811879E+05, 0.998751887820599950E+05, 0.998890129059611209E+05, 0.999025084828911640E+05, 0.999155753997843713E+05, + 0.999281156702924636E+05, 0.999400336166881025E+05, 0.999512359536410950E+05, 0.999616317670096760E+05, 0.999711323832548660E+05, + 0.999796511279028782E+05, 0.999849269357346784E+05, 0.999879656837563089E+05, 0.999896251175745128E+05, 0.999900253003605030E+05, + 0.999893361854775139E+05, 0.999873542140159407E+05, 0.999840556297011499E+05, 0.999794245840091753E+05, 0.999734518744631496E+05, + 0.999661337157758971E+05, 0.999574705623641785E+05, 0.999474659997932467E+05, 0.999361257217314414E+05, 0.999234566080410732E+05, + 0.999094659187412326E+05, 0.998941606177814683E+05, 0.998764809352623415E+05, 0.998560560817922524E+05, 0.998343967946635821E+05, + 0.998115510889874568E+05, 0.997875653304692096E+05, 0.997624843255732849E+05, 0.997363514996802405E+05, 0.997092091386610118E+05, + 0.996810986700549984E+05, 0.996520609610099054E+05, 0.996221366113048280E+05, 0.995913662211383053E+05, 0.995597906149207993E+05, + 0.995273916799414146E+05, 0.994941482859833632E+05, 0.994601365478679945E+05, 0.994253058448178053E+05, 0.993891469979643734E+05, + 0.993522589965478983E+05, 0.993147135957212886E+05, 0.992765913082987827E+05, 0.992379812368316198E+05, 0.991989807125657680E+05, + 0.991596947441791563E+05, 0.991202352822574612E+05, 0.990807203086648369E+05, 0.990412727632243623E+05, 0.990020193233719183E+05, + 0.989630890556004597E+05, 0.989246119604841224E+05, 0.988867174357804033E+05, 0.988495326844704396E+05, 0.988131810965392942E+05, + 0.987777806347563455E+05, 0.987434422556348145E+05, 0.987102683970903163E+05, 0.986800386904530314E+05, 0.986539370199152036E+05, + 0.986295226205249346E+05, 0.986068636404624995E+05, 0.985860239517589507E+05, 0.985670631337701197E+05, 0.985500365691113984E+05, + 0.985358556718200416E+05, 0.985278808654735767E+05, 0.985216145256253949E+05, 0.985170549437755544E+05, 0.985141907191163773E+05, + 0.985130023621957516E+05, 0.985134638334888878E+05, 0.985155439987927239E+05, 0.985192079865073320E+05, 0.985244184348827694E+05, + 0.985311366201568162E+05, 0.985393234591571963E+05, 0.985489403823850007E+05, 0.985599500758101349E+05, 0.985723170916025701E+05, + 0.985860083297847013E+05, 0.986009933943283249E+05, 0.986172448285415594E+05, 0.986347382357068564E+05, 0.986534522918489238E+05, + 0.100501068864754794E+06, 0.100484535396120875E+06, 0.100467601980879481E+06, 0.100450280398188552E+06, 0.100432586236747622E+06, + 0.100414538813697291E+06, 0.100396161067221547E+06, 0.100377479424244724E+06, 0.100358523644725865E+06, 0.100339326644139262E+06, + 0.100319924295798162E+06, 0.100300355214719486E+06, 0.100280660524754756E+06, 0.100260883610713514E+06, 0.100241069857193317E+06, + 0.100221266375801104E+06, 0.100201521722408346E+06, 0.100181885606032156E+06, 0.100162408590875246E+06, 0.100143141793000657E+06, + 0.100126731204709198E+06, 0.100111095964644017E+06, 0.100095755686584438E+06, 0.100080729264227775E+06, 0.100066034373636823E+06, + 0.100051687390123538E+06, 0.100037703324969872E+06, 0.100024095780550211E+06, 0.100010876922054129E+06, 0.999980574636844394E+05, + 0.999856466669404908E+05, 0.999736523483940109E+05, 0.999620808942374570E+05, 0.999509372788386972E+05, 0.999402250845782837E+05, + 0.999299465203828877E+05, 0.999201024366045604E+05, 0.999106923342315858E+05, 0.999017143668564822E+05, 0.998931653343625367E+05, + 0.998850406679233711E+05, 0.998765024783978733E+05, 0.998667989571770595E+05, 0.998574263414941233E+05, 0.998484104846885893E+05, + 0.998397772139483568E+05, 0.998315523922983994E+05, 0.998237619509676297E+05, 0.998164318901620281E+05, 0.998095882469221542E+05, + 0.998032570294378238E+05, 0.997974641179290484E+05, 0.997922351329589583E+05, 0.997875952728177945E+05, 0.997835691223818721E+05, + 0.997801804366022552E+05, 0.997774519024890033E+05, 0.997754048841174226E+05, 0.997740591557720181E+05, 0.997734326288465818E+05, + 0.997735410785172280E+05, 0.997747073495277582E+05, 0.997769755457649590E+05, 0.997800038461367949E+05, 0.997839110555756342E+05, + 0.997903666077980015E+05, 0.997975557260811329E+05, 0.998054075409305369E+05, 0.998138481350147340E+05, 0.998228007968337915E+05, + 0.998321862933507946E+05, 0.998419231581400672E+05, 0.998519279910743644E+05, 0.998621157651026879E+05, 0.998724001352771593E+05, + 0.998826937448957033E+05, 0.998929085234460072E+05, 0.999029559709882014E+05, 0.999127474237070273E+05, 0.999221942956127314E+05, + 0.999312082917789958E+05, 0.999397015890797338E+05, 0.999475869811254670E+05, 0.999547779849950166E+05, 0.999611889084034483E+05, + 0.999655508333875332E+05, 0.999687521058104176E+05, 0.999708756209590647E+05, 0.999718892905484245E+05, 0.999717672485314106E+05, + 0.999704891389138356E+05, 0.999680393573227484E+05, 0.999644062616458687E+05, 0.999595813666838658E+05, 0.999535585371076886E+05, + 0.999463331921408535E+05, 0.999379015343325445E+05, 0.999282598136142769E+05, 0.999174036365871580E+05, 0.999053273297332198E+05, + 0.998920233640268561E+05, 0.998774818472951010E+05, 0.998616900896773586E+05, 0.998432094200693391E+05, 0.998215258930813725E+05, + 0.997986442532860819E+05, 0.997746159978670912E+05, 0.997494898657428857E+05, 0.997233122677003994E+05, 0.996961277569055965E+05, + 0.996679795269207534E+05, 0.996389099249155406E+05, 0.996089609684258903E+05, 0.995781748547828611E+05, 0.995465944531801651E+05, + 0.995142637702681968E+05, 0.994812283811399975E+05, 0.994475358185973892E+05, 0.994132359146495874E+05, 0.993783810892878100E+05, + 0.993430265826917603E+05, 0.993072306281462952E+05, 0.992699361805924273E+05, 0.992322369590151648E+05, 0.991942880496349680E+05, + 0.991561790488717525E+05, 0.991180035697510175E+05, 0.990798588542613288E+05, 0.990418452912010980E+05, 0.990040658471643255E+05, + 0.989666254199359537E+05, 0.989296301250896213E+05, 0.988931865279689664E+05, 0.988574008344593603E+05, 0.988223780549877847E+05, + 0.987882211569994834E+05, 0.987550302217251592E+05, 0.987229016213559953E+05, 0.986919272327695508E+05, 0.986621937036891904E+05, + 0.986337817866148835E+05, 0.986067657550310105E+05, 0.985855251179539773E+05, 0.985675277620845591E+05, 0.985515831726142933E+05, + 0.985391751050558669E+05, 0.985310659201639937E+05, 0.985245080408891663E+05, 0.985195088048070465E+05, 0.985160685473306512E+05, + 0.985141813574870466E+05, 0.985138358391387155E+05, 0.985150158641151211E+05, 0.985177013051926042E+05, 0.985218687383599317E+05, + 0.985274921053063881E+05, 0.985345433285448526E+05, 0.985429928730166866E+05, 0.985528102493964543E+05, 0.985639644556170097E+05, + 0.985764243543491611E+05, 0.985901589852987236E+05, 0.986051378122090100E+05, 0.986213309053895937E+05, 0.986387090614195185E+05, + 0.986574141307979880E+05 +}; + diff --git a/tests/grib_optimize_scaling.cc b/tests/grib_optimize_scaling.cc index fac0fdb62..09e66aec2 100644 --- a/tests/grib_optimize_scaling.cc +++ b/tests/grib_optimize_scaling.cc @@ -16,2699 +16,7 @@ * Test that second order packing gives the same result as simple packing with optimizeScaleFactor=1 * philippe.marguinaud@meteo.fr, 2016/02 */ - -static double values[] = { - 0.101300032966540894E+06, 0.101300537463512766E+06, 0.101300575340236785E+06, 0.101300006392703450E+06, 0.101298681683129777E+06, - 0.101296357626198034E+06, 0.101291429037962458E+06, 0.101285211396584113E+06, 0.101277811769244916E+06, 0.101269604202318660E+06, - 0.101261086325391967E+06, 0.101252536774223816E+06, 0.101244258202072262E+06, 0.101236292863086681E+06, 0.101228818038673067E+06, - 0.101222576320632390E+06, 0.101217951101617422E+06, 0.101215281498123208E+06, 0.101214831830208335E+06, 0.101216756641191008E+06, - 0.101220329473252321E+06, 0.101229814720005656E+06, 0.101242852565120862E+06, 0.101257243179816374E+06, 0.101272242223526715E+06, - 0.101287023899284890E+06, 0.101300727324330161E+06, 0.101312508880994021E+06, 0.101321304787958841E+06, 0.101323045492054458E+06, - 0.101323689235454440E+06, 0.101322654817980932E+06, 0.101318546143449697E+06, 0.101311446435368038E+06, 0.101301582670344171E+06, - 0.101289313645048256E+06, 0.101272976739770951E+06, 0.101254670123119533E+06, 0.101236204711241953E+06, 0.101218525147353255E+06, - 0.101203644914472199E+06, 0.101191859002529978E+06, 0.101183427645969176E+06, 0.101178788732659857E+06, 0.101176248776911350E+06, - 0.101174781987763519E+06, 0.101173755414963452E+06, 0.101172549028196707E+06, 0.101170596810517556E+06, 0.101164899003713479E+06, - 0.101158419589045283E+06, 0.101152491572940358E+06, 0.101147843517789603E+06, 0.101145017464391334E+06, 0.101144350744426047E+06, - 0.101145965622140546E+06, 0.101150160852645960E+06, 0.101156489280060341E+06, 0.101164999288937499E+06, 0.101174680757722846E+06, - 0.101184614700939375E+06, 0.101194476866903220E+06, 0.101203847071805940E+06, 0.101212793693367261E+06, 0.101221210811864396E+06, - 0.101228967667653473E+06, 0.101235941297612240E+06, 0.101241825830798407E+06, 0.101246384813952725E+06, 0.101250233289149895E+06, - 0.101253625288606709E+06, 0.101256829767974210E+06, 0.101260135466684485E+06, 0.101263922730170481E+06, 0.101268258457290780E+06, - 0.101273173871677092E+06, 0.101278603318462468E+06, 0.101284438572224244E+06, 0.101291451901038017E+06, 0.101298825789695678E+06, - 0.101305583597361008E+06, 0.101311198590170257E+06, 0.101313106869633571E+06, 0.101311964918650119E+06, 0.101309609217350633E+06, - 0.101306588009722152E+06, 0.101303789827421686E+06, 0.101303204229508177E+06, 0.101302539808644782E+06, 0.101301748136565366E+06, - 0.101300889588588965E+06, 0.101301524026314495E+06, 0.101302253276609670E+06, 0.101302463210049027E+06, 0.101302292202795681E+06, - 0.101298302559037387E+06, 0.101291449427361382E+06, 0.101283550209983820E+06, 0.101275343284659903E+06, 0.101268451030137920E+06, - 0.101263440167506284E+06, 0.101259681043976845E+06, 0.101257275584439689E+06, 0.101255817294926324E+06, 0.101255329151085723E+06, - 0.101256832423130865E+06, 0.101260699063277454E+06, 0.101270225601657599E+06, 0.101287312191364559E+06, 0.101303455630186116E+06, - 0.101316029699689170E+06, 0.101320758891846766E+06, 0.101311100182774215E+06, 0.101294901290088586E+06, 0.101273081896347416E+06, - 0.101246397937256072E+06, 0.101214175532589943E+06, 0.101180475299171711E+06, 0.101147446887522659E+06, 0.101117364487217361E+06, - 0.101093085915674965E+06, 0.101075700452174933E+06, 0.101066299886712630E+06, 0.101066158368806296E+06, 0.101078251612071312E+06, - 0.101107333429588485E+06, 0.101145577197960345E+06, 0.101190184433163799E+06, 0.101238249723994639E+06, 0.101280682092796589E+06, - 0.101316576899162261E+06, 0.101349617253023622E+06, 0.101379226791601075E+06, 0.101404833281466810E+06, 0.101426608723689307E+06, - 0.101443265324151027E+06, 0.101453984963411596E+06, 0.101458728599400347E+06, 0.101457810163301183E+06, 0.101452773264225369E+06, - 0.101443352159658025E+06, 0.101428700824100233E+06, 0.101409534671443689E+06, 0.101387066094169772E+06, 0.101362901532581192E+06, - 0.101342428907368536E+06, 0.101323657976273273E+06, 0.101307125752964450E+06, 0.101293183514770688E+06, 0.101280868902945120E+06, - 0.101268909632403243E+06, 0.101254864133468844E+06, 0.101241751785266810E+06, 0.101229873732095890E+06, 0.101219507414652238E+06, - 0.101210854622372586E+06, 0.101203998200015136E+06, 0.101202118817604176E+06, 0.101204115282818020E+06, 0.101207394659720041E+06, - 0.101211469101194845E+06, 0.101215801913933246E+06, 0.101219837912576768E+06, 0.101222821880958276E+06, 0.101223619521153145E+06, - 0.101223119359168049E+06, 0.101279933976388784E+06, 0.101280230886902951E+06, 0.101280173829517254E+06, 0.101279628905657766E+06, - 0.101278452724477320E+06, 0.101276500130166445E+06, 0.101273279706602567E+06, 0.101267225127293903E+06, 0.101259879400551043E+06, - 0.101251952874409501E+06, 0.101243674039727790E+06, 0.101235303075196876E+06, 0.101227122345847776E+06, 0.101219423613287974E+06, - 0.101212178882549546E+06, 0.101205696806113177E+06, 0.101200710454399567E+06, 0.101197550054666615E+06, 0.101196424920055710E+06, - 0.101196682426928426E+06, 0.101199196544638864E+06, 0.101204111882830854E+06, 0.101214864879095490E+06, 0.101228568680570461E+06, - 0.101243289081509487E+06, 0.101258220436669624E+06, 0.101272521063369320E+06, 0.101285366950491778E+06, 0.101296012419061328E+06, - 0.101305658540617282E+06, 0.101309682063797125E+06, 0.101310624244857565E+06, 0.101308433795484656E+06, 0.101303210985482059E+06, - 0.101295198335334237E+06, 0.101284767756201632E+06, 0.101272403737592205E+06, 0.101256113788140079E+06, 0.101238847669926457E+06, - 0.101222589159180454E+06, 0.101208629956686913E+06, 0.101197517909479167E+06, 0.101189497449897433E+06, 0.101184456694785782E+06, - 0.101181649500138068E+06, 0.101179750491125887E+06, 0.101178046404878522E+06, 0.101175885037415414E+06, 0.101168022154143066E+06, - 0.101159966065713801E+06, 0.101152331174549618E+06, 0.101145627588820978E+06, 0.101140536375719617E+06, 0.101137554875074289E+06, - 0.101136964384819003E+06, 0.101138821605761070E+06, 0.101143054186604160E+06, 0.101151654753774303E+06, 0.101161075130481171E+06, - 0.101170963288776737E+06, 0.101180942106852366E+06, 0.101190660642090996E+06, 0.101199851697929174E+06, 0.101208579711314771E+06, - 0.101216763897321827E+06, 0.101224252677880388E+06, 0.101230718188980885E+06, 0.101236243573164116E+06, 0.101240451206177866E+06, - 0.101243892699987075E+06, 0.101246988344102370E+06, 0.101250044906442185E+06, 0.101253348298035868E+06, 0.101257374370298217E+06, - 0.101262251561231329E+06, 0.101267895803787687E+06, 0.101275473367753089E+06, 0.101283709026768585E+06, 0.101292283625024313E+06, - 0.101300598737905675E+06, 0.101308093199018083E+06, 0.101314220495369867E+06, 0.101317565250665139E+06, 0.101316383038650820E+06, - 0.101313738332474823E+06, 0.101310203262582130E+06, 0.101306334680532935E+06, 0.101304140173899126E+06, 0.101302185066315011E+06, - 0.101301166929963205E+06, 0.101300627409982437E+06, 0.101301442301666364E+06, 0.101302674870566902E+06, 0.101303021785214194E+06, - 0.101301874610097177E+06, 0.101297234163742920E+06, 0.101289212662159043E+06, 0.101280201810217695E+06, 0.101271153345172788E+06, - 0.101264093160240271E+06, 0.101259964551924568E+06, 0.101257527008254954E+06, 0.101256779297676592E+06, 0.101257083402693010E+06, - 0.101258345876766994E+06, 0.101261741195912517E+06, 0.101267637196925745E+06, 0.101280255542587736E+06, 0.101300219472217796E+06, - 0.101318811431023903E+06, 0.101333064281329105E+06, 0.101337822826176372E+06, 0.101329633927901843E+06, 0.101313842956693508E+06, - 0.101291773913463257E+06, 0.101264248822328038E+06, 0.101231681402834831E+06, 0.101198711256044262E+06, 0.101165944729817566E+06, - 0.101135663129340406E+06, 0.101112149821393570E+06, 0.101094336258872077E+06, 0.101083754934829689E+06, 0.101081962838100400E+06, - 0.101094161177945804E+06, 0.101119463798994111E+06, 0.101153379508463855E+06, 0.101193466772876971E+06, 0.101236864297787688E+06, - 0.101271319749684611E+06, 0.101304810719710440E+06, 0.101336529049048593E+06, 0.101365547226062699E+06, 0.101391403447243065E+06, - 0.101414233987549960E+06, 0.101431699751902197E+06, 0.101443249701215464E+06, 0.101448694379159249E+06, 0.101448342945639379E+06, - 0.101444949497289897E+06, 0.101434983683722516E+06, 0.101420339588228075E+06, 0.101400782009497547E+06, 0.101377357223598548E+06, - 0.101353445824612878E+06, 0.101331105881366500E+06, 0.101310391048972291E+06, 0.101292023316921361E+06, 0.101276408630823629E+06, - 0.101263594338449708E+06, 0.101249134886344415E+06, 0.101234892154251414E+06, 0.101221982151018121E+06, 0.101210641209280395E+06, - 0.101201103409364907E+06, 0.101193542381486463E+06, 0.101189530184913005E+06, 0.101188943141927884E+06, 0.101190369535781749E+06, - 0.101194174658495293E+06, 0.101198877046582638E+06, 0.101203781726436631E+06, 0.101208345081553751E+06, 0.101210641923420510E+06, - 0.101211907924376195E+06, 0.101211894158448660E+06, 0.101261542396602526E+06, 0.101261524602459496E+06, 0.101261271962264684E+06, - 0.101260655467705859E+06, 0.101259535677996173E+06, 0.101257770460092695E+06, 0.101254858567248273E+06, 0.101250130827152869E+06, - 0.101243199529206220E+06, 0.101235660710148513E+06, 0.101227727082598372E+06, 0.101219642017676335E+06, 0.101211669747645647E+06, - 0.101204082204654842E+06, 0.101197142166519814E+06, 0.101190828836761386E+06, 0.101185622952613427E+06, 0.101182084994122983E+06, - 0.101179819644487143E+06, 0.101179386785722192E+06, 0.101181037231546885E+06, 0.101184921544816825E+06, 0.101191071708805684E+06, - 0.101202963344456002E+06, 0.101217214661309525E+06, 0.101232127096539611E+06, 0.101246868435665092E+06, 0.101260623299959872E+06, - 0.101275012912500446E+06, 0.101287927630361359E+06, 0.101297156607966986E+06, 0.101300022279744313E+06, 0.101299658882873831E+06, - 0.101296185125092088E+06, 0.101289860769760111E+06, 0.101281072853932870E+06, 0.101270317685887567E+06, 0.101257849866728764E+06, - 0.101241620969336713E+06, 0.101226620289076629E+06, 0.101213719159152053E+06, 0.101203448100139896E+06, 0.101196030165699893E+06, - 0.101191332050565718E+06, 0.101188825460235021E+06, 0.101186627930786824E+06, 0.101183177496864155E+06, 0.101175055095382006E+06, - 0.101166325451567565E+06, 0.101157506572639366E+06, 0.101149141784503256E+06, 0.101141882059824522E+06, 0.101136611424843984E+06, - 0.101133780517071078E+06, 0.101133612778250375E+06, 0.101137015702474586E+06, 0.101144048000326933E+06, 0.101152946100252506E+06, - 0.101162592544671337E+06, 0.101172594122147348E+06, 0.101182525914593833E+06, 0.101192006688188281E+06, 0.101200731545306888E+06, - 0.101208949653701755E+06, 0.101216776035106115E+06, 0.101223643986761963E+06, 0.101229495275078225E+06, 0.101234397106283810E+06, - 0.101238325186287970E+06, 0.101241245958931366E+06, 0.101243986310471693E+06, 0.101246885079730608E+06, 0.101250239965938381E+06, - 0.101254497783043873E+06, 0.101260948534770170E+06, 0.101268693386766550E+06, 0.101277410860750868E+06, 0.101286673004684562E+06, - 0.101296037156777587E+06, 0.101304973100759889E+06, 0.101312836471203336E+06, 0.101319077100166265E+06, 0.101323200714451756E+06, - 0.101322250124293394E+06, 0.101319426400325508E+06, 0.101315327879672026E+06, 0.101311379409400208E+06, 0.101308929715621984E+06, - 0.101307576201749136E+06, 0.101306752066909641E+06, 0.101306276681202202E+06, 0.101306450951061837E+06, 0.101306928825287003E+06, - 0.101306304370611891E+06, 0.101304071949983219E+06, 0.101298726444911401E+06, 0.101289556844688181E+06, 0.101279573549734007E+06, - 0.101269900918276995E+06, 0.101262737639210711E+06, 0.101259533404357528E+06, 0.101258456904325285E+06, 0.101259373853730853E+06, - 0.101261455254273096E+06, 0.101264486663057716E+06, 0.101269671494430630E+06, 0.101277337091813301E+06, 0.101292476984397377E+06, - 0.101314252890570002E+06, 0.101334243526143560E+06, 0.101349257112687643E+06, 0.101353348220742904E+06, 0.101345316081726181E+06, - 0.101329205683580891E+06, 0.101306196398575121E+06, 0.101276157501052992E+06, 0.101241050683782683E+06, 0.101205878990180805E+06, - 0.101173117425566874E+06, 0.101145231775263543E+06, 0.101124829234029152E+06, 0.101110142836540865E+06, 0.101099009983212847E+06, - 0.101095931793603289E+06, 0.101107937055714152E+06, 0.101129557639286853E+06, 0.101159016947845914E+06, 0.101194290171214365E+06, - 0.101229194191076458E+06, 0.101259884907642350E+06, 0.101290909335772027E+06, 0.101321534960278805E+06, 0.101350933609778935E+06, - 0.101378619763291339E+06, 0.101402515553940961E+06, 0.101421126437325220E+06, 0.101433759893184542E+06, 0.101440081432142906E+06, - 0.101442774222367792E+06, 0.101440175371796868E+06, 0.101430382938397539E+06, 0.101414195446914280E+06, 0.101393183882853962E+06, - 0.101368556280786899E+06, 0.101342857987377705E+06, 0.101318002031737051E+06, 0.101294900480304379E+06, 0.101274304523903862E+06, - 0.101256697091383176E+06, 0.101240541623616038E+06, 0.101225909818463362E+06, 0.101213299349493405E+06, 0.101200928172660904E+06, - 0.101190501742025459E+06, 0.101182213405811461E+06, 0.101176901403817319E+06, 0.101175245583661221E+06, 0.101175762446152599E+06, - 0.101178005333581008E+06, 0.101181392651505157E+06, 0.101186087494527630E+06, 0.101191405412103719E+06, 0.101195091837111089E+06, - 0.101197730891759726E+06, 0.101199364382066880E+06, 0.101199730209935369E+06, 0.101245004040932326E+06, 0.101244559135352756E+06, - 0.101244006361693333E+06, 0.101243220164091719E+06, 0.101242063426875131E+06, 0.101239785127296316E+06, 0.101236357261140554E+06, - 0.101232655165141550E+06, 0.101227802625625860E+06, 0.101220780822386791E+06, 0.101213322053334618E+06, 0.101205654745465290E+06, - 0.101198027406206093E+06, 0.101190695138277268E+06, 0.101183902374283105E+06, 0.101177861446733092E+06, 0.101172715839318174E+06, - 0.101168727915036332E+06, 0.101166083677619172E+06, 0.101165120300427254E+06, 0.101166097664782996E+06, 0.101169176642534818E+06, - 0.101174400762938254E+06, 0.101181681695578300E+06, 0.101194628149370954E+06, 0.101209354172510837E+06, 0.101224384543212596E+06, - 0.101241003377192639E+06, 0.101256971279536912E+06, 0.101271325762838256E+06, 0.101283302907598583E+06, 0.101290837888259193E+06, - 0.101292188600320253E+06, 0.101290316399723524E+06, 0.101285500501916889E+06, 0.101278145707370568E+06, 0.101268063741988299E+06, - 0.101255992666718317E+06, 0.101243630289196284E+06, 0.101230020660095543E+06, 0.101218300352418431E+06, 0.101208996070145775E+06, - 0.101202318103285957E+06, 0.101198115125068754E+06, 0.101195865072430563E+06, 0.101192485973754709E+06, 0.101184883550562605E+06, - 0.101176252043943983E+06, 0.101167064140836461E+06, 0.101157837055866650E+06, 0.101149111932572778E+06, 0.101141425669095363E+06, - 0.101136096494374695E+06, 0.101133772515929886E+06, 0.101136278536261714E+06, 0.101141790910123251E+06, 0.101149565058361550E+06, - 0.101159158826086161E+06, 0.101169280924233710E+06, 0.101179364339541717E+06, 0.101189214375348573E+06, 0.101198419330631325E+06, - 0.101206662421100802E+06, 0.101214110977152406E+06, 0.101221277683224456E+06, 0.101227361193735371E+06, 0.101232391962857888E+06, - 0.101236456240121115E+06, 0.101239696448804534E+06, 0.101242131415364871E+06, 0.101244485321801025E+06, 0.101247206329288369E+06, - 0.101250813340918423E+06, 0.101256254483921584E+06, 0.101263638654577793E+06, 0.101272420586206106E+06, 0.101282081390786785E+06, - 0.101292093147014763E+06, 0.101301886889219619E+06, 0.101311011635127215E+06, 0.101318745388787589E+06, 0.101324552511834278E+06, - 0.101327137099599713E+06, 0.101325798652594996E+06, 0.101322370281172494E+06, 0.101318873214067411E+06, 0.101316033453167009E+06, - 0.101314254241750285E+06, 0.101313290040590538E+06, 0.101312777489808956E+06, 0.101312426972162124E+06, 0.101312077043907979E+06, - 0.101311637613854371E+06, 0.101309930679532728E+06, 0.101306604219150962E+06, 0.101300708574919438E+06, 0.101290667766194849E+06, - 0.101280103453056901E+06, 0.101270238174615952E+06, 0.101263265305097812E+06, 0.101261210282368877E+06, 0.101261635280168994E+06, - 0.101264259503469541E+06, 0.101268188459234763E+06, 0.101273120782915241E+06, 0.101280081032422138E+06, 0.101289326234345950E+06, - 0.101306137507821695E+06, 0.101328331726916280E+06, 0.101348454606262691E+06, 0.101363243724620203E+06, 0.101365228148856142E+06, - 0.101355701191101674E+06, 0.101338137535693226E+06, 0.101313442343172661E+06, 0.101279893686959578E+06, 0.101241766771608411E+06, - 0.101204166019317592E+06, 0.101170013105795253E+06, 0.101142432350644231E+06, 0.101122231791865343E+06, 0.101108816561727523E+06, - 0.101102229721379510E+06, 0.101103813368451665E+06, 0.101116580337189007E+06, 0.101134920647456835E+06, 0.101160141230191730E+06, - 0.101190695983823272E+06, 0.101217581338673946E+06, 0.101244990949544663E+06, 0.101273917316553634E+06, 0.101303572896501239E+06, - 0.101333544453130846E+06, 0.101364877370781323E+06, 0.101391063816659895E+06, 0.101411237101045277E+06, 0.101425278782258334E+06, - 0.101433519934200929E+06, 0.101439158935259431E+06, 0.101436999045160905E+06, 0.101426916105024720E+06, 0.101409617969188068E+06, - 0.101386542831537823E+06, 0.101358099179373283E+06, 0.101329104321193983E+06, 0.101301390131810738E+06, 0.101275584184176812E+06, - 0.101252450915750233E+06, 0.101231887457535791E+06, 0.101212090768716560E+06, 0.101196447068532798E+06, 0.101185068443023629E+06, - 0.101177384135667060E+06, 0.101168309967723544E+06, 0.101161992541140848E+06, 0.101159852630578913E+06, 0.101159796489626082E+06, - 0.101161597602608847E+06, 0.101164838510229980E+06, 0.101168957886595192E+06, 0.101173308450019656E+06, 0.101177043737997461E+06, - 0.101180725542300570E+06, 0.101183638211952741E+06, 0.101185541375514644E+06, 0.101186177771331219E+06, 0.101231389269493171E+06, - 0.101229452023944614E+06, 0.101228492450459045E+06, 0.101227437857730562E+06, 0.101225272919369032E+06, 0.101222115782736248E+06, - 0.101218895852368762E+06, 0.101215584732123752E+06, 0.101212116636056322E+06, 0.101207354097621472E+06, 0.101200521838921966E+06, - 0.101193426713001274E+06, 0.101186304142571476E+06, 0.101179395677309934E+06, 0.101172931379861388E+06, 0.101167151828382484E+06, - 0.101162308500518877E+06, 0.101158300144806009E+06, 0.101155408258388663E+06, 0.101154070184498851E+06, 0.101154559752015484E+06, - 0.101157052466433044E+06, 0.101161607131965604E+06, 0.101168151354609319E+06, 0.101176471448160533E+06, 0.101190446255643255E+06, - 0.101207546249739040E+06, 0.101224869025537133E+06, 0.101241629266362957E+06, 0.101257034534386199E+06, 0.101270300423290071E+06, - 0.101280701804350014E+06, 0.101286032850469506E+06, 0.101285592385854572E+06, 0.101282085195034277E+06, 0.101274697798302746E+06, - 0.101264580591891121E+06, 0.101253728075986262E+06, 0.101242929317346643E+06, 0.101232485866013521E+06, 0.101222025672053554E+06, - 0.101213765521939480E+06, 0.101207908438247250E+06, 0.101204284122239580E+06, 0.101199927839590950E+06, 0.101194734819518329E+06, - 0.101188456889903726E+06, 0.101179666542616309E+06, 0.101170394407501270E+06, 0.101161163472120141E+06, 0.101152520749703152E+06, - 0.101145006252468942E+06, 0.101139495861547286E+06, 0.101140801932908304E+06, 0.101144658005535239E+06, 0.101150950782672968E+06, - 0.101159402010231061E+06, 0.101169516352869221E+06, 0.101180618870833394E+06, 0.101190857796199096E+06, 0.101200641550543587E+06, - 0.101209362327359180E+06, 0.101217130139796180E+06, 0.101224049008589936E+06, 0.101230122753387783E+06, 0.101235212462695199E+06, - 0.101239229954162147E+06, 0.101242277095199534E+06, 0.101244507835626879E+06, 0.101246153185945266E+06, 0.101247135672995661E+06, - 0.101249606832741643E+06, 0.101254017340448758E+06, 0.101260512682501125E+06, 0.101268912159280037E+06, 0.101278581961162170E+06, - 0.101288935630890279E+06, 0.101299344634514127E+06, 0.101309165575948311E+06, 0.101317556887074039E+06, 0.101323172703937016E+06, - 0.101326358447397986E+06, 0.101327232302474091E+06, 0.101325894572504010E+06, 0.101322706535794525E+06, 0.101319932108380584E+06, - 0.101318115839731938E+06, 0.101317374329348502E+06, 0.101316802412196412E+06, 0.101316539167573457E+06, 0.101316220872659469E+06, - 0.101315472541661889E+06, 0.101313988991298058E+06, 0.101311143303248988E+06, 0.101306823565026949E+06, 0.101300909517459571E+06, - 0.101291139156745485E+06, 0.101281432901143096E+06, 0.101272931024738762E+06, 0.101267480423988032E+06, 0.101267406598649904E+06, - 0.101269963384954986E+06, 0.101274800002130170E+06, 0.101281233237463195E+06, 0.101288842618392577E+06, 0.101297886975346977E+06, - 0.101308296387334616E+06, 0.101325624485844790E+06, 0.101346166178142783E+06, 0.101363441252856501E+06, 0.101374801583022883E+06, - 0.101371478339382054E+06, 0.101357965915636902E+06, 0.101337616663800756E+06, 0.101310513973449386E+06, 0.101272307541573202E+06, - 0.101230865550039016E+06, 0.101190791911869368E+06, 0.101155350687670492E+06, 0.101129224427448615E+06, 0.101110583343861392E+06, - 0.101099020700267734E+06, 0.101094724119735372E+06, 0.101099023269690821E+06, 0.101111662707600757E+06, 0.101130628382792580E+06, - 0.101154442701152686E+06, 0.101179514522985817E+06, 0.101201379997560478E+06, 0.101226265787734679E+06, 0.101253796882664625E+06, - 0.101283225572595169E+06, 0.101317124967778669E+06, 0.101350989077608407E+06, 0.101379921717535108E+06, 0.101402381642000008E+06, - 0.101417742462739217E+06, 0.101429901727416946E+06, 0.101436203470310473E+06, 0.101434079341425662E+06, 0.101423164600191842E+06, - 0.101404037685293821E+06, 0.101376818918793375E+06, 0.101344589194113520E+06, 0.101311531147971255E+06, 0.101279820675164505E+06, - 0.101251153362574143E+06, 0.101225285333396270E+06, 0.101199764562447148E+06, 0.101178262360150809E+06, 0.101161772194779478E+06, - 0.101150434481179953E+06, 0.101143909494338062E+06, 0.101141390141577620E+06, 0.101140639767941699E+06, 0.101140632648710569E+06, - 0.101142372620975060E+06, 0.101145663398052158E+06, 0.101150107990777600E+06, 0.101155154940690569E+06, 0.101159369531278891E+06, - 0.101162295247948568E+06, 0.101164893804552295E+06, 0.101168002876310085E+06, 0.101170082535517562E+06, 0.101170879828210964E+06, - 0.101219861459639709E+06, 0.101217353733850920E+06, 0.101214813662341927E+06, 0.101212272616671195E+06, 0.101208980334428372E+06, - 0.101205795685889956E+06, 0.101202734659769427E+06, 0.101199769990954403E+06, 0.101196834984741159E+06, 0.101193828164992272E+06, - 0.101189376363543503E+06, 0.101183028116295318E+06, 0.101176590659241221E+06, 0.101170295511546516E+06, 0.101164459781001147E+06, - 0.101159272837843542E+06, 0.101154626508349247E+06, 0.101150830978481536E+06, 0.101147940393322046E+06, 0.101146374185143752E+06, - 0.101146551350105059E+06, 0.101148666345078062E+06, 0.101152796928674230E+06, 0.101158889620899077E+06, 0.101166802022490039E+06, - 0.101178035305259487E+06, 0.101194860122035752E+06, 0.101212325551695918E+06, 0.101229507831180323E+06, 0.101245588075390231E+06, - 0.101259749204794090E+06, 0.101271227064842373E+06, 0.101279354568716226E+06, 0.101282023041620065E+06, 0.101277735417878983E+06, - 0.101270065940430606E+06, 0.101260942221718724E+06, 0.101251183302667749E+06, 0.101241580790420048E+06, 0.101232817663754860E+06, - 0.101224865544509375E+06, 0.101217678236240463E+06, 0.101212672610467605E+06, 0.101207368061914924E+06, 0.101202142949429748E+06, - 0.101197200360827206E+06, 0.101192321056135959E+06, 0.101185312042045203E+06, 0.101176366919002583E+06, 0.101167575306740793E+06, - 0.101159499887747690E+06, 0.101153693581619635E+06, 0.101151632492099627E+06, 0.101152648343697670E+06, 0.101157198969257923E+06, - 0.101164178808173063E+06, 0.101173247856793882E+06, 0.101183857272265639E+06, 0.101195294072408884E+06, 0.101206439742155373E+06, - 0.101215821840872028E+06, 0.101224223508709707E+06, 0.101231582323487324E+06, 0.101237823030360581E+06, 0.101242874318770337E+06, - 0.101246774089702827E+06, 0.101249620201836733E+06, 0.101251514633922707E+06, 0.101250998739460556E+06, 0.101250350564701104E+06, - 0.101251192192736547E+06, 0.101254126969565099E+06, 0.101259362363834385E+06, 0.101266888172729494E+06, 0.101276372037240624E+06, - 0.101286838617996444E+06, 0.101297573246049607E+06, 0.101307533698699568E+06, 0.101315884770704040E+06, 0.101322262940598855E+06, - 0.101325965760392661E+06, 0.101327074410681467E+06, 0.101325913256045969E+06, 0.101323124870245505E+06, 0.101319702236701676E+06, - 0.101317199019545646E+06, 0.101315951598744505E+06, 0.101315806747022463E+06, 0.101315575437492836E+06, 0.101314907982108765E+06, - 0.101313877512845647E+06, 0.101312479697057366E+06, 0.101309803618787570E+06, 0.101306072028328548E+06, 0.101301517809186698E+06, - 0.101296222398532715E+06, 0.101287978736962512E+06, 0.101280134483104775E+06, 0.101273858730883643E+06, 0.101270559684999607E+06, - 0.101272646114663905E+06, 0.101277445816036910E+06, 0.101284587711525965E+06, 0.101293877343276210E+06, 0.101304839668757166E+06, - 0.101316528257227954E+06, 0.101328366576771165E+06, 0.101345969486117698E+06, 0.101364186088572969E+06, 0.101377148495963469E+06, - 0.101382093829553254E+06, 0.101370766337072331E+06, 0.101349741353763951E+06, 0.101321811510905638E+06, 0.101288468123698593E+06, - 0.101244965303345511E+06, 0.101202004776977919E+06, 0.101162860285996649E+06, 0.101126851606302604E+06, 0.101104372225545885E+06, - 0.101088557676466924E+06, 0.101079807482518576E+06, 0.101078498448923550E+06, 0.101085445131155400E+06, 0.101098827324377111E+06, - 0.101117379276230466E+06, 0.101139770652544976E+06, 0.101160113557297649E+06, 0.101180387504904938E+06, 0.101203886596317709E+06, - 0.101230902181368132E+06, 0.101261803558958476E+06, 0.101300608660476937E+06, 0.101337274184836075E+06, 0.101369125977644289E+06, - 0.101394267041929546E+06, 0.101413158265606093E+06, 0.101427330114929093E+06, 0.101432361057773902E+06, 0.101429910859225725E+06, - 0.101417624134461643E+06, 0.101395314188587567E+06, 0.101362172145086661E+06, 0.101325960646168634E+06, 0.101289070977803320E+06, - 0.101253544677021608E+06, 0.101220938962399465E+06, 0.101189935258524172E+06, 0.101161696612905507E+06, 0.101138721820111517E+06, - 0.101121644349305658E+06, 0.101110649141410599E+06, 0.101105415636551304E+06, 0.101106709372907222E+06, 0.101112684473039320E+06, - 0.101118393699309789E+06, 0.101122164751330070E+06, 0.101127188453840165E+06, 0.101133080620089138E+06, 0.101138746974859983E+06, - 0.101142873479913527E+06, 0.101146389620966002E+06, 0.101149025184660437E+06, 0.101150587859464547E+06, 0.101152755345234560E+06, - 0.101153603260132426E+06, 0.101210525717246186E+06, 0.101207548474999538E+06, 0.101202904596832290E+06, 0.101197951386655157E+06, - 0.101194386519771622E+06, 0.101191122015514105E+06, 0.101188175657561296E+06, 0.101185519945178385E+06, 0.101183085746111174E+06, - 0.101180766773284515E+06, 0.101178424993241424E+06, 0.101174517040993989E+06, 0.101168962341147722E+06, 0.101163714253363345E+06, - 0.101158948557658077E+06, 0.101154261182255184E+06, 0.101149950932639709E+06, 0.101146327181315632E+06, 0.101143687040794233E+06, - 0.101142126337276364E+06, 0.101142152044085655E+06, 0.101144083527112423E+06, 0.101148021171421016E+06, 0.101154000779215450E+06, - 0.101162760282120405E+06, 0.101173711396198050E+06, 0.101186611484798021E+06, 0.101203854792520258E+06, 0.101221108630801245E+06, - 0.101237514909808757E+06, 0.101252212005649548E+06, 0.101264385838287199E+06, 0.101273313773670612E+06, 0.101275991122254636E+06, - 0.101272633847169331E+06, 0.101265839223746094E+06, 0.101257619395513131E+06, 0.101248828329997094E+06, 0.101240269262524962E+06, - 0.101232609922544550E+06, 0.101226305719316471E+06, 0.101221001261636731E+06, 0.101215325578545016E+06, 0.101210148330884782E+06, - 0.101205386910296002E+06, 0.101200913609812837E+06, 0.101196557499459639E+06, 0.101192094621711993E+06, 0.101184939627293686E+06, - 0.101177056092112194E+06, 0.101171384998373789E+06, 0.101168077457142164E+06, 0.101167062491365999E+06, 0.101168742847490139E+06, - 0.101173481015017140E+06, 0.101181062252591364E+06, 0.101190688726292763E+06, 0.101201754487460537E+06, 0.101213053590803727E+06, - 0.101224458950927612E+06, 0.101234613260145692E+06, 0.101242743726390036E+06, 0.101249595831817132E+06, 0.101255046289272010E+06, - 0.101258984767052723E+06, 0.101261363785577109E+06, 0.101261779254400128E+06, 0.101259695740838331E+06, 0.101257723355522670E+06, - 0.101256712782620496E+06, 0.101257390131988577E+06, 0.101260812728128207E+06, 0.101266865110914150E+06, 0.101275356425384583E+06, - 0.101285757165198593E+06, 0.101297005109519319E+06, 0.101307222441895385E+06, 0.101316130802742104E+06, 0.101323131432448601E+06, - 0.101327755554835458E+06, 0.101329091060690815E+06, 0.101327426676222676E+06, 0.101323405755774875E+06, 0.101317808009742424E+06, - 0.101312695092861308E+06, 0.101309644418928467E+06, 0.101307843097245379E+06, 0.101307258014776118E+06, 0.101306396062738830E+06, - 0.101304392989299769E+06, 0.101302318926388383E+06, 0.101300146974100906E+06, 0.101296693003163877E+06, 0.101292171838443071E+06, - 0.101287472873098537E+06, 0.101282787197424317E+06, 0.101276691890622955E+06, 0.101271343380570586E+06, 0.101267971439309680E+06, - 0.101267491024100920E+06, 0.101272069334797809E+06, 0.101279335267968272E+06, 0.101288917788163279E+06, 0.101301241225878053E+06, - 0.101315819189724789E+06, 0.101330320177330534E+06, 0.101343606724499783E+06, 0.101360277666390102E+06, 0.101374651937569957E+06, - 0.101381948044541350E+06, 0.101379139254734604E+06, 0.101357829215456179E+06, 0.101327280040149271E+06, 0.101289941888269532E+06, - 0.101246108522415467E+06, 0.101194796632095546E+06, 0.101146024288208340E+06, 0.101103656741928615E+06, 0.101073141515266252E+06, - 0.101057806173447316E+06, 0.101051682514418280E+06, 0.101049406076037965E+06, 0.101052339673225651E+06, 0.101063115066462298E+06, - 0.101078506068417060E+06, 0.101097590566484258E+06, 0.101118771179471136E+06, 0.101135489318013730E+06, 0.101154758424584812E+06, - 0.101177654242688412E+06, 0.101205061131610448E+06, 0.101242230976538951E+06, 0.101283647903067162E+06, 0.101323242160821901E+06, - 0.101358087742294330E+06, 0.101385937955843910E+06, 0.101409794381458749E+06, 0.101425117131910592E+06, 0.101429997042675925E+06, - 0.101424225668113679E+06, 0.101409012607044147E+06, 0.101378645916584719E+06, 0.101341017521829854E+06, 0.101300635121866770E+06, - 0.101259780015675904E+06, 0.101220490612824302E+06, 0.101183385014229250E+06, 0.101147969487759023E+06, 0.101117685992608021E+06, - 0.101093539937281050E+06, 0.101076195561657238E+06, 0.101065910310074483E+06, 0.101063435753359998E+06, 0.101067804628520898E+06, - 0.101076221687106154E+06, 0.101087269872699864E+06, 0.101098388777976448E+06, 0.101105436139853176E+06, 0.101112874451142532E+06, - 0.101118849015061031E+06, 0.101124113984576659E+06, 0.101128454272832299E+06, 0.101131632912711430E+06, 0.101133440671438293E+06, - 0.101133742258942963E+06, 0.101133420481460824E+06, 0.101203377126110252E+06, 0.101198268613597073E+06, 0.101192518049139719E+06, - 0.101186803252296639E+06, 0.101181813758537333E+06, 0.101178421999043727E+06, 0.101175553435103371E+06, 0.101173179030172672E+06, - 0.101171225754259809E+06, 0.101169580857152410E+06, 0.101168097072006873E+06, 0.101166598871645896E+06, 0.101163936200708034E+06, - 0.101160319529115644E+06, 0.101156350070871646E+06, 0.101152298957045554E+06, 0.101148469397518347E+06, 0.101145174878879858E+06, - 0.101142716121090431E+06, 0.101141356671128422E+06, 0.101141393983984628E+06, 0.101143318014807519E+06, 0.101147349641468565E+06, - 0.101153926105170540E+06, 0.101162646354183598E+06, 0.101173404206242340E+06, 0.101185918183552916E+06, 0.101199863730921250E+06, - 0.101216872253279580E+06, 0.101233295276471807E+06, 0.101248215030952546E+06, 0.101260757021715341E+06, 0.101267495548934719E+06, - 0.101269706371902867E+06, 0.101268204478453976E+06, 0.101262805085999877E+06, 0.101255380826612120E+06, 0.101247430865831397E+06, - 0.101239780825202557E+06, 0.101233090454269026E+06, 0.101227802760140185E+06, 0.101223571816330572E+06, 0.101219066722623626E+06, - 0.101214540599785731E+06, 0.101210406057645538E+06, 0.101206592274863258E+06, 0.101202981532469319E+06, 0.101199400726594919E+06, - 0.101195627874287937E+06, 0.101191227720762778E+06, 0.101187565739316706E+06, 0.101185464827996155E+06, 0.101185511851585936E+06, - 0.101188073018881041E+06, 0.101193228150490002E+06, 0.101201132185450770E+06, 0.101211253103469411E+06, 0.101221691007216708E+06, - 0.101232930515629778E+06, 0.101244622455395234E+06, 0.101256099137093290E+06, 0.101264336488988658E+06, 0.101270613718010951E+06, - 0.101275186944850837E+06, 0.101277911712320536E+06, 0.101275720871891084E+06, 0.101272701050287156E+06, 0.101269530015498065E+06, - 0.101266916775846155E+06, 0.101265667085305176E+06, 0.101266412423480491E+06, 0.101269963618393420E+06, 0.101276824074798991E+06, - 0.101286538984123661E+06, 0.101297754584716895E+06, 0.101309268788473608E+06, 0.101319049570761636E+06, 0.101326688370924327E+06, - 0.101331858743319128E+06, 0.101334118663267698E+06, 0.101332850026087355E+06, 0.101327763563889297E+06, 0.101320054486635490E+06, - 0.101310581963123463E+06, 0.101301464042469088E+06, 0.101296071475081029E+06, 0.101292351628835357E+06, 0.101290169534329834E+06, - 0.101288302766939916E+06, 0.101284014152439850E+06, 0.101279941996829206E+06, 0.101276061598442378E+06, 0.101271538120976256E+06, - 0.101266097326113042E+06, 0.101261239127189925E+06, 0.101257245251898741E+06, 0.101253483641709958E+06, 0.101251125639619684E+06, - 0.101251189762292764E+06, 0.101253695416316186E+06, 0.101260342754598576E+06, 0.101269818597965233E+06, 0.101281786685942599E+06, - 0.101297267888598697E+06, 0.101315752383087500E+06, 0.101333588295053938E+06, 0.101349152940472399E+06, 0.101363783604825469E+06, - 0.101372978867465237E+06, 0.101373889912201208E+06, 0.101361962340075130E+06, 0.101329656482126462E+06, 0.101288577681367635E+06, - 0.101241353955692000E+06, 0.101187015186283301E+06, 0.101128342669573714E+06, 0.101074249019373397E+06, 0.101029162958810339E+06, - 0.101000523612843142E+06, 0.100987089359594960E+06, 0.100984958621042068E+06, 0.100992130612266148E+06, 0.101008448898443559E+06, - 0.101030521667859153E+06, 0.101051007866767963E+06, 0.101071664234935859E+06, 0.101090175915114785E+06, 0.101106549855269026E+06, - 0.101125443846952985E+06, 0.101148128478478480E+06, 0.101176649869573142E+06, 0.101219367480301720E+06, 0.101264169410245595E+06, - 0.101307902998138612E+06, 0.101345704641115881E+06, 0.101377820901637606E+06, 0.101403851472658702E+06, 0.101419708524997433E+06, - 0.101423957150136412E+06, 0.101416125366734399E+06, 0.101392821386149662E+06, 0.101354118286926780E+06, 0.101311952791900418E+06, - 0.101267586958551430E+06, 0.101222923148393995E+06, 0.101179984606825063E+06, 0.101137775123404324E+06, 0.101100052058991307E+06, - 0.101068211877007227E+06, 0.101043182495123227E+06, 0.101025887119877370E+06, 0.101017441028948917E+06, 0.101018646999727091E+06, - 0.101025249625575729E+06, 0.101036067916060245E+06, 0.101049702828005305E+06, 0.101064676552964025E+06, 0.101079565938465035E+06, - 0.101088532594576784E+06, 0.101096312478571519E+06, 0.101102983223382442E+06, 0.101108374984337381E+06, 0.101112280329396730E+06, - 0.101114507038743657E+06, 0.101114428830065517E+06, 0.101111055246130432E+06, 0.101196406538596522E+06, 0.101190461736979341E+06, - 0.101184419171533169E+06, 0.101178438759959274E+06, 0.101172694307587532E+06, 0.101168042459568693E+06, 0.101165224780188713E+06, - 0.101163116738625147E+06, 0.101161640044718297E+06, 0.101160673934197897E+06, 0.101160060130737882E+06, 0.101160308872814785E+06, - 0.101161160328086728E+06, 0.101159852318196237E+06, 0.101156811572228151E+06, 0.101153532829243355E+06, 0.101150328623015521E+06, - 0.101147521674777250E+06, 0.101145421670737880E+06, 0.101144300600728122E+06, 0.101144366524547018E+06, 0.101146453358106490E+06, - 0.101151154760197140E+06, 0.101157852536650826E+06, 0.101166593375939396E+06, 0.101177254193880435E+06, 0.101189538295227583E+06, - 0.101202976381101937E+06, 0.101217143841964367E+06, 0.101233326011591271E+06, 0.101248211830283530E+06, 0.101258376645531374E+06, - 0.101264582921753405E+06, 0.101267070734474910E+06, 0.101266001194085227E+06, 0.101261820132445268E+06, 0.101255225790946322E+06, - 0.101247986960119670E+06, 0.101241132826118715E+06, 0.101235589817356347E+06, 0.101231742691396459E+06, 0.101228190519347510E+06, - 0.101224868811623688E+06, 0.101221346956982394E+06, 0.101217966212733285E+06, 0.101214970532675288E+06, 0.101212299627427041E+06, - 0.101209926653408853E+06, 0.101209182347595939E+06, 0.101208894928154026E+06, 0.101206557077161851E+06, 0.101205653829090777E+06, - 0.101206766501731909E+06, 0.101210234953384323E+06, 0.101216093544594405E+06, 0.101223864474518923E+06, 0.101233270650245788E+06, - 0.101243919236364745E+06, 0.101255411905531102E+06, 0.101267215651558581E+06, 0.101278589053053409E+06, 0.101288326667672663E+06, - 0.101293977254483369E+06, 0.101295988963460462E+06, 0.101293942850610052E+06, 0.101290379977981182E+06, 0.101286211796570817E+06, - 0.101282157951643720E+06, 0.101279101833166642E+06, 0.101277814046354848E+06, 0.101278807487432292E+06, 0.101282938226413549E+06, - 0.101291273361035273E+06, 0.101301583582921769E+06, 0.101312849202165788E+06, 0.101324002651453309E+06, 0.101333489244781522E+06, - 0.101339488921891199E+06, 0.101342369325021820E+06, 0.101341720289730991E+06, 0.101337127319298394E+06, 0.101327791615567519E+06, - 0.101315437423608601E+06, 0.101301282640627105E+06, 0.101286811802460725E+06, 0.101276747879297676E+06, 0.101269331760055575E+06, - 0.101263643990522745E+06, 0.101258989523824217E+06, 0.101251456119543334E+06, 0.101244182196566340E+06, 0.101237348106484831E+06, - 0.101228692607444944E+06, 0.101218585751885927E+06, 0.101210928314959441E+06, 0.101206232353375613E+06, 0.101203871455940549E+06, - 0.101203999533384937E+06, 0.101207475042430247E+06, 0.101214320092416674E+06, 0.101224147807091678E+06, 0.101236699974733609E+06, - 0.101251676274940794E+06, 0.101270825632959895E+06, 0.101293545270099348E+06, 0.101314419599624249E+06, 0.101330994497954525E+06, - 0.101343242305169362E+06, 0.101347429834497641E+06, 0.101341255518135789E+06, 0.101319524205864262E+06, 0.101278200143226626E+06, - 0.101228562906559484E+06, 0.101174212317573372E+06, 0.101112623030610339E+06, 0.101048222350508891E+06, 0.100990099190183420E+06, - 0.100943211786408705E+06, 0.100918044317067266E+06, 0.100907611661432689E+06, 0.100910107183064712E+06, 0.100923917070401818E+06, - 0.100948850301936414E+06, 0.100978281786140433E+06, 0.101008728042257979E+06, 0.101037658211344344E+06, 0.101057364399701371E+06, - 0.101074391235513976E+06, 0.101093594285308805E+06, 0.101116488413099345E+06, 0.101150558690399863E+06, 0.101193914933389984E+06, - 0.101239758121016799E+06, 0.101285323747319708E+06, 0.101327925492475028E+06, 0.101365565138565944E+06, 0.101392573640838629E+06, - 0.101408539383438299E+06, 0.101411604282492801E+06, 0.101400582930128410E+06, 0.101366946069406418E+06, 0.101324287192622069E+06, - 0.101276101666633986E+06, 0.101226619258282910E+06, 0.101178585432356136E+06, 0.101130984262627506E+06, 0.101086307783769356E+06, - 0.101046851053375387E+06, 0.101014063196888950E+06, 0.100988908271188513E+06, 0.100971785835137707E+06, 0.100968245753203373E+06, - 0.100971380696101813E+06, 0.100980060807918417E+06, 0.100993169646215858E+06, 0.101009312468744305E+06, 0.101026966655764860E+06, - 0.101044366184895640E+06, 0.101060339563627815E+06, 0.101071158866529076E+06, 0.101079488812984200E+06, 0.101086153913575283E+06, - 0.101090971172654899E+06, 0.101093525999388585E+06, 0.101092846852564820E+06, 0.101089780957355411E+06, 0.101191123249149765E+06, - 0.101184975896710632E+06, 0.101178781171733193E+06, 0.101172687284701038E+06, 0.101166856628363908E+06, 0.101161463025241668E+06, - 0.101157556719236236E+06, 0.101155715658911155E+06, 0.101154729896713383E+06, 0.101154469238441612E+06, 0.101155775624535832E+06, - 0.101158121462038107E+06, 0.101160042093184384E+06, 0.101161344855236384E+06, 0.101160448275110015E+06, 0.101158071590188309E+06, - 0.101155631532086059E+06, 0.101153465356088433E+06, 0.101151897289994900E+06, 0.101151213659422618E+06, 0.101151737576582789E+06, - 0.101154199170773107E+06, 0.101158985005759008E+06, 0.101165841396522868E+06, 0.101174673234837159E+06, 0.101185340894024586E+06, - 0.101197532040988634E+06, 0.101210762902995120E+06, 0.101224385238204501E+06, 0.101237894404589199E+06, 0.101250772227856185E+06, - 0.101260411029266310E+06, 0.101266591706174368E+06, 0.101269204187456722E+06, 0.101268397182717250E+06, 0.101264588122030676E+06, - 0.101258438511883942E+06, 0.101251623403392019E+06, 0.101246063118456994E+06, 0.101242417800723517E+06, 0.101239166549985050E+06, - 0.101236254306650939E+06, 0.101233631773944420E+06, 0.101231248894982156E+06, 0.101228825720597553E+06, 0.101226772928204024E+06, - 0.101225473798737570E+06, 0.101225516278296083E+06, 0.101226043519455008E+06, 0.101227093486833808E+06, 0.101228289760449348E+06, - 0.101228546951147655E+06, 0.101230707510254171E+06, 0.101235093253586310E+06, 0.101241126677553519E+06, 0.101248645598633651E+06, - 0.101258142018320970E+06, 0.101268933306888299E+06, 0.101280513500391826E+06, 0.101292262732881034E+06, 0.101303355465601169E+06, - 0.101312817264586003E+06, 0.101316400177874268E+06, 0.101315483458758521E+06, 0.101312277984593762E+06, 0.101307698621808959E+06, - 0.101302673951913355E+06, 0.101298053010945936E+06, 0.101294840530663249E+06, 0.101294065839099727E+06, 0.101296783533959431E+06, - 0.101302065639223511E+06, 0.101310033568624291E+06, 0.101320378178744606E+06, 0.101331366932783130E+06, 0.101341800425977897E+06, - 0.101350415611308272E+06, 0.101354800042096002E+06, 0.101354718500839095E+06, 0.101350294315183972E+06, 0.101341487001001398E+06, - 0.101327926160731338E+06, 0.101310260858651716E+06, 0.101290273767883307E+06, 0.101269495556410489E+06, 0.101251846238950835E+06, - 0.101238682635122401E+06, 0.101227174341821534E+06, 0.101213482647208613E+06, 0.101195603009729079E+06, 0.101177872156641286E+06, - 0.101162325618075352E+06, 0.101149982165601716E+06, 0.101139852149278217E+06, 0.101134024565056650E+06, 0.101132753824598782E+06, - 0.101135032680571021E+06, 0.101140084766430024E+06, 0.101148877574289698E+06, 0.101161005262514984E+06, 0.101174747769146576E+06, - 0.101190713232751208E+06, 0.101208811802622309E+06, 0.101231640660711972E+06, 0.101258571723189729E+06, 0.101282336017681446E+06, - 0.101299629439163051E+06, 0.101308040998087759E+06, 0.101305555171365690E+06, 0.101290435343250807E+06, 0.101256519799893256E+06, - 0.101204322883293091E+06, 0.101144321216045384E+06, 0.101080811870748948E+06, 0.101014238668434729E+06, 0.100950513534181708E+06, - 0.100894391363170798E+06, 0.100851829575523923E+06, 0.100832142921501421E+06, 0.100825615789308096E+06, 0.100832955840479583E+06, - 0.100854821405899405E+06, 0.100888239967709887E+06, 0.100925422763286362E+06, 0.100962602314510819E+06, 0.100994687767612981E+06, - 0.101018445383155631E+06, 0.101039638130810010E+06, 0.101060824122542370E+06, 0.101084945514884181E+06, 0.101122354145820311E+06, - 0.101165147778325379E+06, 0.101210847657910417E+06, 0.101256682236652778E+06, 0.101301382158490291E+06, 0.101341411155713809E+06, - 0.101372219111328362E+06, 0.101389231784620119E+06, 0.101390880863434664E+06, 0.101369226261351185E+06, 0.101331834231281726E+06, - 0.101285779545129859E+06, 0.101234345503529141E+06, 0.101180743690781746E+06, 0.101127223607977256E+06, 0.101076620915575957E+06, - 0.101030138146362922E+06, 0.100989582250385356E+06, 0.100956503181212684E+06, 0.100931937764084651E+06, 0.100920299784557195E+06, - 0.100918057371207338E+06, 0.100922770743209869E+06, 0.100933261994784887E+06, 0.100948483778151451E+06, 0.100967026543898348E+06, - 0.100987282070977919E+06, 0.101007276882737569E+06, 0.101025807002176851E+06, 0.101042092544874176E+06, 0.101053732614110791E+06, - 0.101061889868345606E+06, 0.101067702910314212E+06, 0.101070224192290465E+06, 0.101070263142884942E+06, 0.101067836061994312E+06, - 0.101188101877120876E+06, 0.101181904204517952E+06, 0.101175721080675750E+06, 0.101169689701016847E+06, 0.101163962332899173E+06, - 0.101158703372389791E+06, 0.101154083105507743E+06, 0.101151357736191479E+06, 0.101150899044327409E+06, 0.101152824487497259E+06, - 0.101156224838871945E+06, 0.101159507416219887E+06, 0.101162417168140935E+06, 0.101164756494849746E+06, 0.101166400553546104E+06, - 0.101165982684454619E+06, 0.101164433293333408E+06, 0.101163049411835455E+06, 0.101162175585306977E+06, 0.101162128095756125E+06, - 0.101163361425100273E+06, 0.101166227742201969E+06, 0.101170937924715152E+06, 0.101177913034471421E+06, 0.101186917319165936E+06, - 0.101197704545258457E+06, 0.101209946031686050E+06, 0.101223141837685776E+06, 0.101236628019135329E+06, 0.101248564959035430E+06, - 0.101259061289307880E+06, 0.101268404236147617E+06, 0.101274449875235630E+06, 0.101277082514349167E+06, 0.101276437786749404E+06, - 0.101272910152209646E+06, 0.101267124457491314E+06, 0.101260716984134080E+06, 0.101256743164844607E+06, 0.101253604663335806E+06, - 0.101250897345323741E+06, 0.101248591593381454E+06, 0.101246654559015689E+06, 0.101245041613427515E+06, 0.101243680788220503E+06, - 0.101243097273199470E+06, 0.101243781512439353E+06, 0.101244948599458978E+06, 0.101246597302939059E+06, 0.101248747416430124E+06, - 0.101251423906546814E+06, 0.101254153427662954E+06, 0.101257318705204321E+06, 0.101261887373189515E+06, 0.101267979989058746E+06, - 0.101275948774720324E+06, 0.101285713213097159E+06, 0.101296774828760288E+06, 0.101308302668075557E+06, 0.101319850467473152E+06, - 0.101329837083710619E+06, 0.101335921303205963E+06, 0.101339123113933456E+06, 0.101337898637374194E+06, 0.101333773323031986E+06, - 0.101328456667992868E+06, 0.101322897112772887E+06, 0.101317900606162963E+06, 0.101315889108461066E+06, 0.101316599306327043E+06, - 0.101319758730558635E+06, 0.101325424301052059E+06, 0.101333284991047447E+06, 0.101343211873693581E+06, 0.101353644944564134E+06, - 0.101363021317380320E+06, 0.101370049287251401E+06, 0.101372596455484265E+06, 0.101369268865042672E+06, 0.101360883616870342E+06, - 0.101347449435595729E+06, 0.101329133164082014E+06, 0.101305327141900649E+06, 0.101278380398203022E+06, 0.101249743471045615E+06, - 0.101219239546209603E+06, 0.101192352888002861E+06, 0.101165652475197479E+06, 0.101139697586887822E+06, 0.101114494511137265E+06, - 0.101090858686180072E+06, 0.101071576294283674E+06, 0.101057575297732197E+06, 0.101048074783742806E+06, 0.101044336258060692E+06, - 0.101046551193469917E+06, 0.101053556962642004E+06, 0.101063713831673056E+06, 0.101077829626709223E+06, 0.101095071852015652E+06, - 0.101113125151151267E+06, 0.101132720710483336E+06, 0.101154045391176667E+06, 0.101180390285880436E+06, 0.101211142948122884E+06, - 0.101237614514436951E+06, 0.101255726302408526E+06, 0.101259492448119025E+06, 0.101250509056824711E+06, 0.101227395084634161E+06, - 0.101182035261948520E+06, 0.101119630114631931E+06, 0.101050635848782738E+06, 0.100979922793482459E+06, 0.100910697623495973E+06, - 0.100847357213499476E+06, 0.100794166368117731E+06, 0.100758894445481623E+06, 0.100744322296544080E+06, 0.100745120848886974E+06, - 0.100759352059448109E+06, 0.100791294801023934E+06, 0.100833112039419531E+06, 0.100877562571698305E+06, 0.100920779246866339E+06, - 0.100955025798225848E+06, 0.100982525754081420E+06, 0.101006044587505748E+06, 0.101028143007870822E+06, 0.101055611280174300E+06, - 0.101091320427340703E+06, 0.101132355621430252E+06, 0.101176767088174020E+06, 0.101222102616479577E+06, 0.101267504098879013E+06, - 0.101307233300950669E+06, 0.101337730007502250E+06, 0.101356132691262712E+06, 0.101355517504656993E+06, 0.101326703347885734E+06, - 0.101286746249401243E+06, 0.101238373176205030E+06, 0.101184685036191077E+06, 0.101128907484998796E+06, 0.101073391747240559E+06, - 0.101019454525129811E+06, 0.100970871910515343E+06, 0.100929826661987419E+06, 0.100897105571455861E+06, 0.100876831879007659E+06, - 0.100867962906273533E+06, 0.100867330421829305E+06, 0.100873728684090966E+06, 0.100885749735442761E+06, 0.100902849954122852E+06, - 0.100924138951177738E+06, 0.100946961851234868E+06, 0.100969279025770302E+06, 0.100990033557581031E+06, 0.101008477654044342E+06, - 0.101024214908302165E+06, 0.101035732998499894E+06, 0.101041912961714450E+06, 0.101045642366251923E+06, 0.101046792406885972E+06, - 0.101045365333532347E+06, 0.101187355100872199E+06, 0.101181283838042174E+06, 0.101175299671037268E+06, 0.101169529662610788E+06, - 0.101164117431673949E+06, 0.101159220075809775E+06, 0.101155001817589582E+06, 0.101151624022777440E+06, 0.101152497595067340E+06, - 0.101156451659840226E+06, 0.101160648061411019E+06, 0.101164790528929152E+06, 0.101168618147906396E+06, 0.101171926049179310E+06, - 0.101174580360364256E+06, 0.101176526712674633E+06, 0.101176736224529814E+06, 0.101176257363116325E+06, 0.101176166983752380E+06, - 0.101176807287626842E+06, 0.101178681128324213E+06, 0.101182078251181316E+06, 0.101187204570596310E+06, 0.101194163269585537E+06, - 0.101203334524264646E+06, 0.101214364937736551E+06, 0.101226809413448165E+06, 0.101240149829298927E+06, 0.101253261358725853E+06, - 0.101265100089497806E+06, 0.101275120974395875E+06, 0.101282996940042518E+06, 0.101288828111014154E+06, 0.101291420149586207E+06, - 0.101290897222999163E+06, 0.101287639377078289E+06, 0.101283002528089506E+06, 0.101278193857728707E+06, 0.101273020512430914E+06, - 0.101269901051284018E+06, 0.101267678623295869E+06, 0.101265950449211479E+06, 0.101264703039611326E+06, 0.101263900879826906E+06, - 0.101263923607509249E+06, 0.101265004562038375E+06, 0.101266684912193334E+06, 0.101268855296950496E+06, 0.101271506964180182E+06, - 0.101274640173084292E+06, 0.101278241537383161E+06, 0.101282245825992912E+06, 0.101286353240369135E+06, 0.101291355828485597E+06, - 0.101297931619035255E+06, 0.101306253371424813E+06, 0.101316214078965480E+06, 0.101327380285913983E+06, 0.101338920669929619E+06, - 0.101349293450103680E+06, 0.101357122930671496E+06, 0.101362252520088790E+06, 0.101364464771970830E+06, 0.101363785192026829E+06, - 0.101359089181177871E+06, 0.101353368594169064E+06, 0.101348059285105599E+06, 0.101344504609358351E+06, 0.101342802273270747E+06, - 0.101343694674300015E+06, 0.101347186594235303E+06, 0.101353156284255645E+06, 0.101361135003142495E+06, 0.101370388484892959E+06, - 0.101380640458787442E+06, 0.101388946718752617E+06, 0.101393651801589484E+06, 0.101393499019751704E+06, 0.101386884558896083E+06, - 0.101374143979384535E+06, 0.101355609362859250E+06, 0.101331626780358332E+06, 0.101301083582183201E+06, 0.101263353354839783E+06, - 0.101221306897352624E+06, 0.101176993466944725E+06, 0.101136539903244993E+06, 0.101098204242251013E+06, 0.101061761330862719E+06, - 0.101028266665796909E+06, 0.100998589290583972E+06, 0.100975333400938267E+06, 0.100959068131358043E+06, 0.100949766177223195E+06, - 0.100947806353674678E+06, 0.100952626346498961E+06, 0.100962758032929953E+06, 0.100976213788639361E+06, 0.100993663080123253E+06, - 0.101014486892675981E+06, 0.101035822837299012E+06, 0.101058579399157214E+06, 0.101083303211150094E+06, 0.101113186489526008E+06, - 0.101147351565124962E+06, 0.101176652682216401E+06, 0.101196193972918787E+06, 0.101198569776344622E+06, 0.101186160134931008E+06, - 0.101157868126258880E+06, 0.101103141394806822E+06, 0.101031831614193070E+06, 0.100956733996206865E+06, 0.100882403087983286E+06, - 0.100813473138545116E+06, 0.100752516407046714E+06, 0.100703757785565627E+06, 0.100676218536944187E+06, 0.100667431274046598E+06, - 0.100674873519601999E+06, 0.100697658618489222E+06, 0.100739841159568794E+06, 0.100789068474863947E+06, 0.100839720710070338E+06, - 0.100886379550526690E+06, 0.100923029883014446E+06, 0.100953143284320337E+06, 0.100977639241319004E+06, 0.100999128395021136E+06, - 0.101024581691416737E+06, 0.101055845921262473E+06, 0.101093715024692676E+06, 0.101137145750038864E+06, 0.101181709309337297E+06, - 0.101225325474523444E+06, 0.101263559713032722E+06, 0.101292474677031365E+06, 0.101308682549641118E+06, 0.101297475120822361E+06, - 0.101271409211849808E+06, 0.101232040601299872E+06, 0.101182869285470704E+06, 0.101128290980360704E+06, 0.101072929755581790E+06, - 0.101016889073163620E+06, 0.100962491541966170E+06, 0.100912327910715336E+06, 0.100869361400221751E+06, 0.100839775977090918E+06, - 0.100823441492130820E+06, 0.100816113342184137E+06, 0.100817094874734074E+06, 0.100825233759279654E+06, 0.100839074432490510E+06, - 0.100858082771811969E+06, 0.100882174552001874E+06, 0.100906977487573211E+06, 0.100931151837540980E+06, 0.100953671595204651E+06, - 0.100973813441941427E+06, 0.100991208365737388E+06, 0.101004593996319396E+06, 0.101014464426847393E+06, 0.101019840305871679E+06, - 0.101022516216040211E+06, 0.101022479820383916E+06, 0.101189306237606637E+06, 0.101183099563423224E+06, 0.101177524645541649E+06, - 0.101172236435105573E+06, 0.101167371532973528E+06, 0.101163082020276575E+06, 0.101159529060147339E+06, 0.101159316447558173E+06, - 0.101160894564677219E+06, 0.101164348300187223E+06, 0.101169261422140553E+06, 0.101174195290734366E+06, 0.101178879818970003E+06, - 0.101183100812083387E+06, 0.101186714675334646E+06, 0.101189656703835382E+06, 0.101191942124414170E+06, 0.101192917377320977E+06, - 0.101193593575982464E+06, 0.101195069630171711E+06, 0.101197693383898673E+06, 0.101201751769885639E+06, 0.101207449602623747E+06, - 0.101214890679059696E+06, 0.101224061589853489E+06, 0.101235336912347877E+06, 0.101248190104239126E+06, 0.101262427935202722E+06, - 0.101275786221996692E+06, 0.101287697523967043E+06, 0.101297635973110140E+06, 0.101305160473319178E+06, 0.101310051693956630E+06, - 0.101312576731523863E+06, 0.101312178530984005E+06, 0.101309704462442271E+06, 0.101306154021924303E+06, 0.101301740366064056E+06, - 0.101296951709652378E+06, 0.101292269396465854E+06, 0.101290108113855764E+06, 0.101288928548419208E+06, 0.101288387917089291E+06, - 0.101288777866387623E+06, 0.101290116771842790E+06, 0.101292139767421628E+06, 0.101294723268304471E+06, 0.101297795211849851E+06, - 0.101301366709605994E+06, 0.101305420330384557E+06, 0.101309869927812077E+06, 0.101314312823006214E+06, 0.101319116997910372E+06, - 0.101324617109151222E+06, 0.101331532615370001E+06, 0.101340103637168490E+06, 0.101350201834497682E+06, 0.101361344371531173E+06, - 0.101372418886796950E+06, 0.101381948875157381E+06, 0.101388923839096911E+06, 0.101393136106285616E+06, 0.101394429864949576E+06, - 0.101392894622174237E+06, 0.101388710803148075E+06, 0.101383777236252092E+06, 0.101379295952832908E+06, 0.101375940276367168E+06, - 0.101374441230547527E+06, 0.101375326622697306E+06, 0.101379093018278771E+06, 0.101385343361571824E+06, 0.101393971058482173E+06, - 0.101404050563811383E+06, 0.101413309721598285E+06, 0.101419590399406094E+06, 0.101421556394179410E+06, 0.101418021431235960E+06, - 0.101407974515161055E+06, 0.101390537479077990E+06, 0.101366032709315157E+06, 0.101334626683717870E+06, 0.101295933958054040E+06, - 0.101248443893183838E+06, 0.101195557967522065E+06, 0.101139585544601810E+06, 0.101085211343045346E+06, 0.101035266930195139E+06, - 0.100988241812145512E+06, 0.100945367896748721E+06, 0.100910497202633036E+06, 0.100884702886764164E+06, 0.100866517649476897E+06, - 0.100856014684083144E+06, 0.100852787000617667E+06, 0.100856653557479323E+06, 0.100867163372326730E+06, 0.100881111266454434E+06, - 0.100900315195405696E+06, 0.100923976750114074E+06, 0.100948598119614544E+06, 0.100974781704195004E+06, 0.101003202157587060E+06, - 0.101036407590628412E+06, 0.101073193182310031E+06, 0.101104736474453239E+06, 0.101125695287679831E+06, 0.101129453279073452E+06, - 0.101117773581594010E+06, 0.101089185532541305E+06, 0.101034032199054171E+06, 0.100963945545633382E+06, 0.100886699328991119E+06, - 0.100810636627241329E+06, 0.100740715610179395E+06, 0.100679191246166200E+06, 0.100632989251138570E+06, 0.100613781871159343E+06, - 0.100610871530594683E+06, 0.100624379990977119E+06, 0.100656925116010229E+06, 0.100705935141557828E+06, 0.100761070879974053E+06, - 0.100816622699684551E+06, 0.100864793595773081E+06, 0.100902967646118850E+06, 0.100932714749620762E+06, 0.100956310150092322E+06, - 0.100973624358999965E+06, 0.100992241483773090E+06, 0.101016637765204548E+06, 0.101048154107647293E+06, 0.101087466334016062E+06, - 0.101132339254048915E+06, 0.101174823812832328E+06, 0.101210761915469266E+06, 0.101237271423401384E+06, 0.101243002885737078E+06, - 0.101230131791106003E+06, 0.101203940299668466E+06, 0.101166656487591579E+06, 0.101121119041289232E+06, 0.101069073832594047E+06, - 0.101014700223724387E+06, 0.100959265268248433E+06, 0.100905468112225586E+06, 0.100856040902612105E+06, 0.100814460428244129E+06, - 0.100787259237540056E+06, 0.100772005863003345E+06, 0.100765985352267919E+06, 0.100768479113289053E+06, 0.100778366997407138E+06, - 0.100794945598743492E+06, 0.100817620478677374E+06, 0.100842147859125718E+06, 0.100867955315801722E+06, 0.100893394586128459E+06, - 0.100917107047287223E+06, 0.100938380004807230E+06, 0.100955347801049342E+06, 0.100970101009214006E+06, 0.100982904354844184E+06, - 0.100992784717252944E+06, 0.100997426697573173E+06, 0.100999203666720758E+06, 0.101193726602745155E+06, 0.101187754050723946E+06, - 0.101182357442443288E+06, 0.101177791388126643E+06, 0.101173723996436573E+06, 0.101170304719806183E+06, 0.101170612153776412E+06, - 0.101172440371721386E+06, 0.101174837075875621E+06, 0.101177672254314428E+06, 0.101182161160034389E+06, 0.101187828651191783E+06, - 0.101193320301503438E+06, 0.101198410730358519E+06, 0.101202946144533795E+06, 0.101206852558810875E+06, 0.101210007801575470E+06, - 0.101212489910168282E+06, 0.101214469378389869E+06, 0.101216878002924321E+06, 0.101220363461237575E+06, 0.101225214136769951E+06, - 0.101231637580600829E+06, 0.101239741560505950E+06, 0.101249517808410572E+06, 0.101260983023677167E+06, 0.101275957870551239E+06, - 0.101290656294668952E+06, 0.101304333702323362E+06, 0.101316427532517599E+06, 0.101326426428850100E+06, 0.101333915035895625E+06, - 0.101338611708287717E+06, 0.101340492859798338E+06, 0.101340362563395611E+06, 0.101338449476013702E+06, 0.101335257523435517E+06, - 0.101331249861504504E+06, 0.101326886093198918E+06, 0.101322617484757109E+06, 0.101318867500197564E+06, 0.101317900452591755E+06, - 0.101318314786954928E+06, 0.101319723768116164E+06, 0.101321959881412520E+06, 0.101324889048512938E+06, 0.101328347647524672E+06, - 0.101332174840765205E+06, 0.101336616060312401E+06, 0.101341556829236884E+06, 0.101346573413864826E+06, 0.101351603295543347E+06, - 0.101356815104860521E+06, 0.101362438373961399E+06, 0.101369371088361426E+06, 0.101378082295762331E+06, 0.101388314410706720E+06, - 0.101399372327800622E+06, 0.101410061836120745E+06, 0.101419580351030396E+06, 0.101425913537260407E+06, 0.101429293259021812E+06, - 0.101429804412116951E+06, 0.101427672924137820E+06, 0.101424080437455879E+06, 0.101419619212416699E+06, 0.101415230974183942E+06, - 0.101412067965185430E+06, 0.101410791086110883E+06, 0.101411739073867124E+06, 0.101415639705951602E+06, 0.101423312622668134E+06, - 0.101432474045874798E+06, 0.101442051195699867E+06, 0.101450469188552204E+06, 0.101454491373749755E+06, 0.101453440137517347E+06, - 0.101446281387837167E+06, 0.101431595048405667E+06, 0.101408886711617088E+06, 0.101378784184722594E+06, 0.101341184770978914E+06, - 0.101295889547724786E+06, 0.101240328400627433E+06, 0.101177652284460986E+06, 0.101111150684114546E+06, 0.101044053118300144E+06, - 0.100984918740243505E+06, 0.100930374090685815E+06, 0.100881582472409573E+06, 0.100841112633375247E+06, 0.100809768362702191E+06, - 0.100786799243457121E+06, 0.100772143085301912E+06, 0.100764968278141983E+06, 0.100765770745809103E+06, 0.100774102380776618E+06, - 0.100787701814049200E+06, 0.100807502103195773E+06, 0.100832717694658859E+06, 0.100860249536352872E+06, 0.100889852423407749E+06, - 0.100921848628126099E+06, 0.100957861355781963E+06, 0.100996433916241411E+06, 0.101029829562515966E+06, 0.101052485930506547E+06, - 0.101058372937639273E+06, 0.101049548410078569E+06, 0.101024243456762211E+06, 0.100972590760278690E+06, 0.100908281417167527E+06, - 0.100837060983074800E+06, 0.100768161325613342E+06, 0.100704714640766149E+06, 0.100649980401007386E+06, 0.100610226186345069E+06, - 0.100590748020045430E+06, 0.100587436259410169E+06, 0.100600313080586799E+06, 0.100641206195168561E+06, 0.100694783185600594E+06, - 0.100753395339411843E+06, 0.100811221255729251E+06, 0.100860359364136690E+06, 0.100899824043495319E+06, 0.100928315410134717E+06, - 0.100945425133485944E+06, 0.100949685705930868E+06, 0.100959203677864440E+06, 0.100974757114044391E+06, 0.100998131833821230E+06, - 0.101033920715517670E+06, 0.101074219109624129E+06, 0.101114091820176982E+06, 0.101149405994865883E+06, 0.101170348641579942E+06, - 0.101169807298637141E+06, 0.101156298476682292E+06, 0.101130628971099330E+06, 0.101094643437300154E+06, 0.101052492078486888E+06, - 0.101007253119503090E+06, 0.100955907017813224E+06, 0.100902084595712833E+06, 0.100849827379669470E+06, 0.100802083544595851E+06, - 0.100765913220995702E+06, 0.100739572869835451E+06, 0.100723779479156976E+06, 0.100718506421119528E+06, 0.100722320980193326E+06, - 0.100734436110120514E+06, 0.100755329206052033E+06, 0.100779519272158068E+06, 0.100805173540144926E+06, 0.100830784490592530E+06, - 0.100856189170746162E+06, 0.100880432886013805E+06, 0.100899949784039432E+06, 0.100917438620547167E+06, 0.100933522862752710E+06, - 0.100948109352301544E+06, 0.100961044329522949E+06, 0.100971373211325132E+06, 0.100975423948777170E+06, 0.101200152192834488E+06, - 0.101194982325493736E+06, 0.101190103263664205E+06, 0.101186138559247396E+06, 0.101183134221834189E+06, 0.101184216681154692E+06, - 0.101186521041798725E+06, 0.101189436060083317E+06, 0.101192802546943451E+06, 0.101196478796712297E+06, 0.101200354354545649E+06, - 0.101205668611732151E+06, 0.101211929159398627E+06, 0.101217855930562437E+06, 0.101223284560094209E+06, 0.101227968215825720E+06, - 0.101231889676374194E+06, 0.101235394681567603E+06, 0.101238691342655846E+06, 0.101242180145337508E+06, 0.101246637252434826E+06, - 0.101252408136256170E+06, 0.101259706939182157E+06, 0.101268648761024378E+06, 0.101279505402642011E+06, 0.101294343975882977E+06, - 0.101309563533686218E+06, 0.101324641711895500E+06, 0.101338688391072021E+06, 0.101351044389960793E+06, 0.101361207159967045E+06, - 0.101368783445243811E+06, 0.101373529077171552E+06, 0.101374957490127519E+06, 0.101374464042535998E+06, 0.101372814207710297E+06, - 0.101369991240096075E+06, 0.101366429702577938E+06, 0.101362562430391059E+06, 0.101358815668015828E+06, 0.101355589086463762E+06, - 0.101353446673457220E+06, 0.101354379072032898E+06, 0.101356568662050558E+06, 0.101359675232751892E+06, 0.101363521918530183E+06, - 0.101367901119934351E+06, 0.101372596354978567E+06, 0.101377679630817802E+06, 0.101383555064504282E+06, 0.101389214201889146E+06, - 0.101394747283543154E+06, 0.101400304955646759E+06, 0.101406085277459220E+06, 0.101412285840230092E+06, 0.101421118963008921E+06, - 0.101431763041225102E+06, 0.101442507714153820E+06, 0.101452705296310087E+06, 0.101461587946274274E+06, 0.101468308697248838E+06, - 0.101470980618346424E+06, 0.101470729759961876E+06, 0.101468260238464049E+06, 0.101464485269084631E+06, 0.101460142280246233E+06, - 0.101455922507406227E+06, 0.101452998879112638E+06, 0.101452045655453316E+06, 0.101454002525278673E+06, 0.101458795222069632E+06, - 0.101466167386261062E+06, 0.101474834484365027E+06, 0.101483448321051124E+06, 0.101490293297485317E+06, 0.101492761571887779E+06, - 0.101487122913431667E+06, 0.101474656695076628E+06, 0.101456224507296021E+06, 0.101430664509854570E+06, 0.101396241168372988E+06, - 0.101353344458271313E+06, 0.101301873429881321E+06, 0.101240809982906721E+06, 0.101170237649192510E+06, 0.101096056635001150E+06, - 0.101022326149495057E+06, 0.100954494264510751E+06, 0.100892663983306251E+06, 0.100837194485465618E+06, 0.100789854158125687E+06, - 0.100752681688232609E+06, 0.100724050472389747E+06, 0.100703743253736306E+06, 0.100691513151292049E+06, 0.100687489061012806E+06, - 0.100691112445670500E+06, 0.100703488782601926E+06, 0.100723515984008409E+06, 0.100749686437924174E+06, 0.100779862035053753E+06, - 0.100812870466228749E+06, 0.100848356219152789E+06, 0.100886618033728999E+06, 0.100925814700154908E+06, 0.100959913340029161E+06, - 0.100983841408427761E+06, 0.100992708938197888E+06, 0.100988038726636543E+06, 0.100967451749821237E+06, 0.100923773661071609E+06, - 0.100869154347678006E+06, 0.100808293671752166E+06, 0.100749950128448239E+06, 0.100695742144580625E+06, 0.100650055466795442E+06, - 0.100620543751264457E+06, 0.100607774629359716E+06, 0.100609856499218455E+06, 0.100627731512123690E+06, 0.100665827330432643E+06, - 0.100713727303578300E+06, 0.100768972922192886E+06, 0.100825101449405265E+06, 0.100873709631678183E+06, 0.100911910907812446E+06, - 0.100937425920985901E+06, 0.100943826278808614E+06, 0.100938923612846338E+06, 0.100932772703382885E+06, 0.100933209681834254E+06, - 0.100949942917228545E+06, 0.100978390439217677E+06, 0.101012218238497939E+06, 0.101047001443362271E+06, 0.101078030320958118E+06, - 0.101092528178749781E+06, 0.101092763600199483E+06, 0.101079667768304178E+06, 0.101055363093306296E+06, 0.101021923023798488E+06, - 0.100985043918944197E+06, 0.100942576674115116E+06, 0.100896142310934607E+06, 0.100846740359288175E+06, 0.100796745756417309E+06, - 0.100754281013923188E+06, 0.100719661969801513E+06, 0.100694202095497239E+06, 0.100678990016565542E+06, 0.100674159552381345E+06, - 0.100679144362130333E+06, 0.100696517057853678E+06, 0.100718723297862292E+06, 0.100743828966135392E+06, 0.100770038155539907E+06, - 0.100795879753092362E+06, 0.100820314666932885E+06, 0.100840279171251284E+06, 0.100859249879902098E+06, 0.100877455365052447E+06, - 0.100894767625869688E+06, 0.100911051050858092E+06, 0.100926113687447752E+06, 0.100939677540915931E+06, 0.100954098051095163E+06, - 0.101208266074669766E+06, 0.101204147301312958E+06, 0.101200416332034234E+06, 0.101197391022381067E+06, 0.101199181271863577E+06, - 0.101202094479608772E+06, 0.101205718922681015E+06, 0.101209868079757638E+06, 0.101214363087133126E+06, 0.101219049217859545E+06, - 0.101223809934456556E+06, 0.101228578149758148E+06, 0.101234563424877633E+06, 0.101241302361129114E+06, 0.101247428820028508E+06, - 0.101252833705618847E+06, 0.101257741214607289E+06, 0.101262268791874914E+06, 0.101266621965163562E+06, 0.101271104202253337E+06, - 0.101276449761759577E+06, 0.101283261996570189E+06, 0.101291578552841063E+06, 0.101301921001578070E+06, 0.101316864610287244E+06, - 0.101332633397110185E+06, 0.101348565409528048E+06, 0.101363970375545556E+06, 0.101378339950166031E+06, 0.101391005184961628E+06, - 0.101401390238182328E+06, 0.101409118811233842E+06, 0.101412813852507519E+06, 0.101413916622343488E+06, 0.101413648249779086E+06, - 0.101412262363096830E+06, 0.101409843816287481E+06, 0.101406792118611833E+06, 0.101403515263375913E+06, 0.101400419883465394E+06, - 0.101397648089374270E+06, 0.101396200071828469E+06, 0.101396462464251483E+06, 0.101399249041504649E+06, 0.101403242459244415E+06, - 0.101408064521844237E+06, 0.101413460579763079E+06, 0.101419299541355576E+06, 0.101425515902185769E+06, 0.101431872156549493E+06, - 0.101438092345517420E+06, 0.101444082593329236E+06, 0.101449980221889302E+06, 0.101455962961780679E+06, 0.101462741205452243E+06, - 0.101470817291088752E+06, 0.101480892587434573E+06, 0.101491089133211004E+06, 0.101500643428374140E+06, 0.101508817670985038E+06, - 0.101514860224122342E+06, 0.101517434476198061E+06, 0.101516541747761323E+06, 0.101513815068472235E+06, 0.101509904719619197E+06, - 0.101505507654049128E+06, 0.101501313463842132E+06, 0.101498849002981064E+06, 0.101499159934514231E+06, 0.101501693020130377E+06, - 0.101506338552975649E+06, 0.101512651659291208E+06, 0.101520288072555239E+06, 0.101527432009874057E+06, 0.101531192551327069E+06, - 0.101528423709889583E+06, 0.101519435532333911E+06, 0.101504734513441072E+06, 0.101484004484384001E+06, 0.101456280732745858E+06, - 0.101419035179553714E+06, 0.101371837096264266E+06, 0.101315248944149382E+06, 0.101249891741609565E+06, 0.101174205010685138E+06, - 0.101095025216710172E+06, 0.101016603839094241E+06, 0.100942714517862012E+06, 0.100875651961458614E+06, 0.100815206600637175E+06, - 0.100762266129504540E+06, 0.100719792923412402E+06, 0.100688381242510412E+06, 0.100664315202569429E+06, 0.100646899315571907E+06, - 0.100636389190856382E+06, 0.100633921317728295E+06, 0.100640986745192960E+06, 0.100657927960284273E+06, 0.100683603999329847E+06, - 0.100715139361547874E+06, 0.100750464071587950E+06, 0.100789001781336541E+06, 0.100828980626378441E+06, 0.100867904881876937E+06, - 0.100901941917073651E+06, 0.100927518925117751E+06, 0.100941703370720032E+06, 0.100943313763502156E+06, 0.100929483993483183E+06, - 0.100897899422321643E+06, 0.100855144068640948E+06, 0.100806216832129357E+06, 0.100757963881253396E+06, 0.100713882396988687E+06, - 0.100678037239657642E+06, 0.100660578064393208E+06, 0.100655660139403961E+06, 0.100663394611081239E+06, 0.100687757803070126E+06, - 0.100726360544964817E+06, 0.100771737117872792E+06, 0.100819550423355045E+06, 0.100863789606076709E+06, 0.100903960982124961E+06, - 0.100937933974381580E+06, 0.100955929021348216E+06, 0.100950002084778927E+06, 0.100936336168784517E+06, 0.100920611799506456E+06, - 0.100908792443247541E+06, 0.100909956087163751E+06, 0.100924519937428529E+06, 0.100950317855032117E+06, 0.100978637481090613E+06, - 0.101001785171553231E+06, 0.101014600980588948E+06, 0.101015533816949537E+06, 0.101004399554267075E+06, 0.100982402170127083E+06, - 0.100954472767269413E+06, 0.100920498290662959E+06, 0.100881272186000555E+06, 0.100838252143924561E+06, 0.100793001524282852E+06, - 0.100749722238879811E+06, 0.100710007831689465E+06, 0.100676561452258436E+06, 0.100651754156739727E+06, 0.100637016515992684E+06, - 0.100632797680647462E+06, 0.100643122435673547E+06, 0.100662040946369423E+06, 0.100684765371038040E+06, 0.100710073382574032E+06, - 0.100736158886730540E+06, 0.100761558107963079E+06, 0.100780935166741401E+06, 0.100798370121153508E+06, 0.100816555152162895E+06, - 0.100835390903751701E+06, 0.100853847765655024E+06, 0.100871757501481305E+06, 0.100888895778612612E+06, 0.100908175229415137E+06, - 0.100925669047910487E+06, 0.101217702072300162E+06, 0.101214879429494846E+06, 0.101212918203238412E+06, 0.101215072363802130E+06, - 0.101218250672383481E+06, 0.101222522132735277E+06, 0.101227622288938786E+06, 0.101233167267756522E+06, 0.101238956389902218E+06, - 0.101244820309774892E+06, 0.101250635435466815E+06, 0.101256335683556361E+06, 0.101261921151622766E+06, 0.101268342600560762E+06, - 0.101275163933372678E+06, 0.101281497833931266E+06, 0.101287383286156546E+06, 0.101292932525330558E+06, 0.101298347923196663E+06, - 0.101303932128846092E+06, 0.101310090422888767E+06, 0.101317693616226330E+06, 0.101327652607175361E+06, 0.101342480557763687E+06, - 0.101358556451299402E+06, 0.101375279086523937E+06, 0.101391978870831925E+06, 0.101407971443584844E+06, 0.101422613121423448E+06, - 0.101435506823643867E+06, 0.101446124078218185E+06, 0.101452234738676838E+06, 0.101455284023688801E+06, 0.101456737369482420E+06, - 0.101456865445288451E+06, 0.101455916182255954E+06, 0.101454121953738781E+06, 0.101451661773156113E+06, 0.101449081947506013E+06, - 0.101446228059309360E+06, 0.101444208961239303E+06, 0.101443612932188233E+06, 0.101444705011359765E+06, 0.101447541270001515E+06, - 0.101452383501387390E+06, 0.101458282693875270E+06, 0.101464997464114887E+06, 0.101472100710916289E+06, 0.101479273864667499E+06, - 0.101486350419971670E+06, 0.101493152086614995E+06, 0.101499576717366377E+06, 0.101505843270561643E+06, 0.101512436676125639E+06, - 0.101519641676807107E+06, 0.101527434410592061E+06, 0.101535644765811841E+06, 0.101545029301612725E+06, 0.101553754432012545E+06, - 0.101560956040866411E+06, 0.101564550165702050E+06, 0.101566892094339870E+06, 0.101567035078111294E+06, 0.101564167039659485E+06, - 0.101560257949168226E+06, 0.101555969226616333E+06, 0.101552313766367617E+06, 0.101550452021603851E+06, 0.101550963150145908E+06, - 0.101553454481203808E+06, 0.101557594737071355E+06, 0.101562591960326725E+06, 0.101568055832384678E+06, 0.101570018237429336E+06, - 0.101568806715803599E+06, 0.101563796324326468E+06, 0.101553825571776295E+06, 0.101537561122490020E+06, 0.101515230788797810E+06, - 0.101485862600308523E+06, 0.101448189650402157E+06, 0.101397681000099896E+06, 0.101336913516701141E+06, 0.101267241010695536E+06, - 0.101189600658946001E+06, 0.101107785950000631E+06, 0.101027329917614610E+06, 0.100951013494106854E+06, 0.100883020611558357E+06, - 0.100825246076290889E+06, 0.100775271676367163E+06, 0.100732070018118597E+06, 0.100693807828755365E+06, 0.100660471847562090E+06, - 0.100632198820324600E+06, 0.100610336348454613E+06, 0.100597445568148105E+06, 0.100596347705297740E+06, 0.100608739289963560E+06, - 0.100632312399144867E+06, 0.100664180492312080E+06, 0.100701580165578795E+06, 0.100742885809197804E+06, 0.100784251808581277E+06, - 0.100822721504335888E+06, 0.100857114729781009E+06, 0.100884974331454141E+06, 0.100904296005382625E+06, 0.100913525976403209E+06, - 0.100909880311948247E+06, 0.100892635225440783E+06, 0.100865034092500646E+06, 0.100830041776689235E+06, 0.100792635237818962E+06, - 0.100758858691726316E+06, 0.100734424708176390E+06, 0.100726153683192097E+06, 0.100729591906647329E+06, 0.100742469628359380E+06, - 0.100772373108355430E+06, 0.100810039805286127E+06, 0.100850865902025442E+06, 0.100889839249818047E+06, 0.100924291493751982E+06, - 0.100954018166122405E+06, 0.100976020229241141E+06, 0.100977598211779696E+06, 0.100962801120868462E+06, 0.100940325812200113E+06, - 0.100915300637579014E+06, 0.100897607613392654E+06, 0.100888545266499175E+06, 0.100887361365753401E+06, 0.100894417619390835E+06, - 0.100914107950286358E+06, 0.100931864535990011E+06, 0.100942729300749750E+06, 0.100943712413188565E+06, 0.100933999633237443E+06, - 0.100915953837210676E+06, 0.100891962587812566E+06, 0.100861290497928669E+06, 0.100825794229352119E+06, 0.100786805648525173E+06, - 0.100747059949918155E+06, 0.100708052571343884E+06, 0.100670389177752746E+06, 0.100637438856290988E+06, 0.100612791553316754E+06, - 0.100598161054412602E+06, 0.100597616745557592E+06, 0.100608245258248513E+06, 0.100627589752602711E+06, 0.100652501052796259E+06, - 0.100677256390096882E+06, 0.100702485105916334E+06, 0.100721371071945381E+06, 0.100737732280855227E+06, 0.100754743779602475E+06, - 0.100772593580461515E+06, 0.100791374419969914E+06, 0.100810897025248196E+06, 0.100830367089737425E+06, 0.100852737881952431E+06, - 0.100874075837282377E+06, 0.100893534157121714E+06, 0.101228070489269143E+06, 0.101227544665406953E+06, 0.101230349746524807E+06, - 0.101234269851944497E+06, 0.101239184467959683E+06, 0.101244939450664504E+06, 0.101251545017166776E+06, 0.101258662705518451E+06, - 0.101265918196699597E+06, 0.101273125560589353E+06, 0.101280152736103031E+06, 0.101286933875186733E+06, 0.101293407125996848E+06, - 0.101299586824039099E+06, 0.101306376779591956E+06, 0.101313623028716072E+06, 0.101320476967868250E+06, 0.101327043370354135E+06, - 0.101333520713772232E+06, 0.101340211822319048E+06, 0.101347526837547412E+06, 0.101356523012281294E+06, 0.101370533287668499E+06, - 0.101386582740267011E+06, 0.101403758993542797E+06, 0.101421430602220105E+06, 0.101438909393433467E+06, 0.101455505881131437E+06, - 0.101470586854150286E+06, 0.101483635012064580E+06, 0.101492144560654036E+06, 0.101497362403152074E+06, 0.101500801900675287E+06, - 0.101502736875093309E+06, 0.101503413235270535E+06, 0.101503062612840484E+06, 0.101501914512809366E+06, 0.101500206465205003E+06, - 0.101497831592138784E+06, 0.101495767534276791E+06, 0.101494714546066039E+06, 0.101495119352637426E+06, 0.101497237786485115E+06, - 0.101501125674684867E+06, 0.101506644060371764E+06, 0.101514150312748505E+06, 0.101522320784248848E+06, 0.101530563331544297E+06, - 0.101538706294350879E+06, 0.101546559377466736E+06, 0.101553946547580461E+06, 0.101560765945043371E+06, 0.101567653265792658E+06, - 0.101574587210003941E+06, 0.101581752742970988E+06, 0.101589174518686996E+06, 0.101596642355671458E+06, 0.101603818859754785E+06, - 0.101610799838750623E+06, 0.101614811522755466E+06, 0.101617790546373333E+06, 0.101619757440904345E+06, 0.101620562545717650E+06, - 0.101618884459059045E+06, 0.101615191240677028E+06, 0.101611483339551589E+06, 0.101608375965291722E+06, 0.101606589668011176E+06, - 0.101606767311590491E+06, 0.101608967585915860E+06, 0.101612347393029107E+06, 0.101614810665037265E+06, 0.101614446811429036E+06, - 0.101613127583126843E+06, 0.101609516694027276E+06, 0.101602475273863849E+06, 0.101591105455035053E+06, 0.101574139304303288E+06, - 0.101552261616850359E+06, 0.101522964529426812E+06, 0.101483809256113498E+06, 0.101431803333729331E+06, 0.101367984772122625E+06, - 0.101295216781381270E+06, 0.101216180859079337E+06, 0.101134418945842335E+06, 0.101057719484696820E+06, 0.100987761361816083E+06, - 0.100925129407695815E+06, 0.100869076127166059E+06, 0.100819148307903684E+06, 0.100772602660554068E+06, 0.100726367887494707E+06, - 0.100682387602061091E+06, 0.100642046686646194E+06, 0.100608073036628615E+06, 0.100583165331615121E+06, 0.100571567333927058E+06, - 0.100579161681519065E+06, 0.100599831523424771E+06, 0.100631457444745640E+06, 0.100671162741316628E+06, 0.100715517300559659E+06, - 0.100759196447210823E+06, 0.100798644466533326E+06, 0.100834218092755124E+06, 0.100864022068452279E+06, 0.100886844670119492E+06, - 0.100903072952249466E+06, 0.100910324635737983E+06, 0.100907110564502160E+06, 0.100894913649374212E+06, 0.100873485872527890E+06, - 0.100847908218072756E+06, 0.100825028815845202E+06, 0.100812235195442801E+06, 0.100811789392154620E+06, 0.100821477468724654E+06, - 0.100842188280174509E+06, 0.100874882105417564E+06, 0.100910352034741096E+06, 0.100944613694273561E+06, 0.100970573806106200E+06, - 0.100992876564753780E+06, 0.101010256709896377E+06, 0.101017365734439736E+06, 0.101004642180764087E+06, 0.100981216767300502E+06, - 0.100950670557522288E+06, 0.100918693714911191E+06, 0.100893168282002865E+06, 0.100873786774855747E+06, 0.100862092518860401E+06, - 0.100858765389723776E+06, 0.100863848594959985E+06, 0.100872455106490743E+06, 0.100880727391939872E+06, 0.100881060958518239E+06, - 0.100871581642927995E+06, 0.100854982629453050E+06, 0.100833968938175327E+06, 0.100809126941723182E+06, 0.100777926015906574E+06, - 0.100744862813125714E+06, 0.100711030659190204E+06, 0.100674920663551122E+06, 0.100638665812651045E+06, 0.100604613640158801E+06, - 0.100577951755037328E+06, 0.100565299257314167E+06, 0.100564490794773781E+06, 0.100574070775104672E+06, 0.100592267906427369E+06, - 0.100616576592620535E+06, 0.100643954138155808E+06, 0.100661679785274406E+06, 0.100676519993234426E+06, 0.100692101751513052E+06, - 0.100708845098980164E+06, 0.100726890359751837E+06, 0.100746088291053093E+06, 0.100766274118497415E+06, 0.100790485020117267E+06, - 0.100814283052694198E+06, 0.100836998900601233E+06, 0.100857834251143926E+06, 0.101239951294366925E+06, 0.101243511198018721E+06, - 0.101248266604097182E+06, 0.101254120739513630E+06, 0.101260940255995316E+06, 0.101268566543099048E+06, 0.101276830453567702E+06, - 0.101285622454819968E+06, 0.101294523809254446E+06, 0.101303237484829937E+06, 0.101311620976720500E+06, 0.101319644374765689E+06, - 0.101327259549206297E+06, 0.101334480948853117E+06, 0.101341388354789131E+06, 0.101348710884544664E+06, 0.101356521517190282E+06, - 0.101364093945627537E+06, 0.101371621643877312E+06, 0.101379408199202080E+06, 0.101388443315429948E+06, 0.101401687552132498E+06, - 0.101416572004818678E+06, 0.101433189992554107E+06, 0.101451428970825116E+06, 0.101470024045938291E+06, 0.101488255659360628E+06, - 0.101505416028128879E+06, 0.101520868917434069E+06, 0.101531842805264969E+06, 0.101539245769958565E+06, 0.101544605958666289E+06, - 0.101548569302459247E+06, 0.101551134535491103E+06, 0.101552518676128384E+06, 0.101552933361419549E+06, 0.101552598628048305E+06, - 0.101551346091754502E+06, 0.101549620534837697E+06, 0.101548503290274006E+06, 0.101548531268210281E+06, 0.101550086213979870E+06, - 0.101553415865284071E+06, 0.101558574308658994E+06, 0.101566141420655156E+06, 0.101575323430362041E+06, 0.101584790524686381E+06, - 0.101594148506046142E+06, 0.101603272905442951E+06, 0.101611945735174741E+06, 0.101619979003416622E+06, 0.101627204805596586E+06, - 0.101634427668451928E+06, 0.101641404911077247E+06, 0.101648381901037224E+06, 0.101655340222651532E+06, 0.101662034474683896E+06, - 0.101666783103935741E+06, 0.101669591715802919E+06, 0.101672592019255666E+06, 0.101674896474706766E+06, 0.101676486613950226E+06, - 0.101677173545713507E+06, 0.101676735064566892E+06, 0.101674421820609132E+06, 0.101671063643987713E+06, 0.101668202552547300E+06, - 0.101666520557556054E+06, 0.101666348434875123E+06, 0.101667923680669555E+06, 0.101669351667803800E+06, 0.101668978131977754E+06, - 0.101666110028333933E+06, 0.101660538752964931E+06, 0.101654594444694463E+06, 0.101645738692219165E+06, 0.101634351733125281E+06, - 0.101619445806351592E+06, 0.101597486529762551E+06, 0.101566963080607631E+06, 0.101526313623151611E+06, 0.101474414132893216E+06, - 0.101408806070782084E+06, 0.101334676336432865E+06, 0.101255967485764850E+06, 0.101177930379907673E+06, 0.101105923487214692E+06, - 0.101041528067973224E+06, 0.100984421243628807E+06, 0.100931366999700622E+06, 0.100882259035952666E+06, 0.100834318510275116E+06, - 0.100780975023316409E+06, 0.100725029283105585E+06, 0.100672125573187601E+06, 0.100626333648281943E+06, 0.100591108252538659E+06, - 0.100571154519613207E+06, 0.100572764811242494E+06, 0.100590644123334263E+06, 0.100622114840101916E+06, 0.100663170419413218E+06, - 0.100711109304953105E+06, 0.100759450274770090E+06, 0.100803668821019484E+06, 0.100843723009858411E+06, 0.100878065056743988E+06, - 0.100905193898488564E+06, 0.100924238150348683E+06, 0.100935705112497482E+06, 0.100940040808540827E+06, 0.100938611611957211E+06, - 0.100929132041696241E+06, 0.100917754954705204E+06, 0.100905818223427166E+06, 0.100905472653716875E+06, 0.100913513200435162E+06, - 0.100929234171202479E+06, 0.100956672791980032E+06, 0.100989933744260285E+06, 0.101021721049159081E+06, 0.101045261345619481E+06, - 0.101056484086316414E+06, 0.101064376750130497E+06, 0.101068662292293593E+06, 0.101058850049314118E+06, 0.101036734626105259E+06, - 0.101005396099047648E+06, 0.100967551751069492E+06, 0.100930584068150943E+06, 0.100895049839971194E+06, 0.100865689126530953E+06, - 0.100843766391791884E+06, 0.100833519035555830E+06, 0.100830429319700765E+06, 0.100830534716874317E+06, 0.100831218872075027E+06, - 0.100828733033744793E+06, 0.100816736999957517E+06, 0.100801115692818625E+06, 0.100782650624359696E+06, 0.100761638271208169E+06, - 0.100739079948099330E+06, 0.100715508303584225E+06, 0.100685570121976882E+06, 0.100651926936336182E+06, 0.100616808436076797E+06, - 0.100582738088950529E+06, 0.100553609533300842E+06, 0.100536151852068826E+06, 0.100533191840017098E+06, 0.100540563795043839E+06, - 0.100556547268302660E+06, 0.100578647827983019E+06, 0.100597845282151320E+06, 0.100615643951716338E+06, 0.100629644958407152E+06, - 0.100644649717624998E+06, 0.100661314686951257E+06, 0.100679739011681770E+06, 0.100699923738231213E+06, 0.100724000291545439E+06, - 0.100748935934403649E+06, 0.100773460147275109E+06, 0.100796886100017015E+06, 0.100818431742268527E+06, 0.101253250319671861E+06, - 0.101258941275491015E+06, 0.101265825984074268E+06, 0.101273785992740712E+06, 0.101282673338371926E+06, 0.101292322337458594E+06, - 0.101302564811119126E+06, 0.101313249084015886E+06, 0.101324039732978374E+06, 0.101334420443956798E+06, 0.101344441355969844E+06, - 0.101353937804033951E+06, 0.101362853548466621E+06, 0.101371239996888005E+06, 0.101379195223571107E+06, 0.101386868114858662E+06, - 0.101394863418320267E+06, 0.101403421459721620E+06, 0.101411971625535502E+06, 0.101421328676152989E+06, 0.101434052612144369E+06, - 0.101448448578493975E+06, 0.101464428560022046E+06, 0.101481780318751698E+06, 0.101500377161328623E+06, 0.101519861969620310E+06, - 0.101538794301281392E+06, 0.101556432572582416E+06, 0.101569913275213607E+06, 0.101580111679331065E+06, 0.101588077608188687E+06, - 0.101593761388586005E+06, 0.101597743292873696E+06, 0.101601111211300595E+06, 0.101603375473686290E+06, 0.101604722386775393E+06, - 0.101605277974446421E+06, 0.101605137189286179E+06, 0.101604583774228318E+06, 0.101604027662526438E+06, 0.101605032612257637E+06, - 0.101607890648949600E+06, 0.101612610274943596E+06, 0.101620190413487217E+06, 0.101629709918692257E+06, 0.101640274485895483E+06, - 0.101651366271263018E+06, 0.101662017372317307E+06, 0.101672127532921921E+06, 0.101681639836175294E+06, 0.101689695653715113E+06, - 0.101697371401130935E+06, 0.101704816287710346E+06, 0.101711959261812881E+06, 0.101718592829194225E+06, 0.101724976617920722E+06, - 0.101729049321389990E+06, 0.101731107282530153E+06, 0.101732743234520705E+06, 0.101734177642089810E+06, 0.101735792298410903E+06, - 0.101737051523103568E+06, 0.101737813506062157E+06, 0.101737771770358304E+06, 0.101736766611527375E+06, 0.101733998643601444E+06, - 0.101731285447018498E+06, 0.101729657615879667E+06, 0.101729463824108592E+06, 0.101730467776220365E+06, 0.101730634889909721E+06, - 0.101728530424326527E+06, 0.101723478773003560E+06, 0.101715128998538450E+06, 0.101705173881448645E+06, 0.101697065128410613E+06, - 0.101686174729378530E+06, 0.101670746397321127E+06, 0.101648602916028351E+06, 0.101617289856162359E+06, 0.101575677936215157E+06, - 0.101523549414822643E+06, 0.101459384090740117E+06, 0.101385766535040675E+06, 0.101307806220871105E+06, 0.101230532040925333E+06, - 0.101163615695121596E+06, 0.101105144301163149E+06, 0.101053953064553687E+06, 0.101004506092646785E+06, 0.100954394425546445E+06, - 0.100903265851270029E+06, 0.100843568326323351E+06, 0.100779909310060830E+06, 0.100718507897475429E+06, 0.100663227538561507E+06, - 0.100619196470881463E+06, 0.100590878309716514E+06, 0.100585918330994056E+06, 0.100599670235220139E+06, 0.100629367268692309E+06, - 0.100671559948193928E+06, 0.100722625470161831E+06, 0.100775876461740903E+06, 0.100826307692812305E+06, 0.100872731273009820E+06, - 0.100911769660482067E+06, 0.100942401025764135E+06, 0.100964392752327054E+06, 0.100978678374194351E+06, 0.100986716960824007E+06, - 0.100990258819483715E+06, 0.100986859094204920E+06, 0.100984358423690996E+06, 0.100986880945730183E+06, 0.101001308030144719E+06, - 0.101021911204537639E+06, 0.101045314756852677E+06, 0.101079374563270016E+06, 0.101112057664106265E+06, 0.101138492426304845E+06, - 0.101147264582452117E+06, 0.101146181575950890E+06, 0.101139597898295426E+06, 0.101126956426191653E+06, 0.101104207044017559E+06, - 0.101074184746976593E+06, 0.101036351784390296E+06, 0.100994839802225833E+06, 0.100951701131987342E+06, 0.100907802015808338E+06, - 0.100866623322513595E+06, 0.100836261177509557E+06, 0.100817609325104844E+06, 0.100806057949370603E+06, 0.100799101756952587E+06, - 0.100794178922864405E+06, 0.100782586521973222E+06, 0.100770278560914870E+06, 0.100755730874395027E+06, 0.100740174567162278E+06, - 0.100724221891415305E+06, 0.100711960802472036E+06, 0.100695201938734870E+06, 0.100670904548085469E+06, 0.100639130264881242E+06, - 0.100604667725497551E+06, 0.100569533181772116E+06, 0.100538827586813903E+06, 0.100515863557522040E+06, 0.100504283432544311E+06, - 0.100508208880423437E+06, 0.100520846592849106E+06, 0.100533319890499857E+06, 0.100546979620563667E+06, 0.100563406036921282E+06, - 0.100581336883139578E+06, 0.100596479945475046E+06, 0.100613263609396352E+06, 0.100632606505272503E+06, 0.100655737101977575E+06, - 0.100680377627359165E+06, 0.100705693019706334E+06, 0.100730567542817560E+06, 0.100753963268230000E+06, 0.100775475443369112E+06, - 0.101264306669592683E+06, 0.101273005643247234E+06, 0.101282212261941575E+06, 0.101292455230279535E+06, 0.101303569666892407E+06, - 0.101315379627821021E+06, 0.101327713762651794E+06, 0.101340424766245633E+06, 0.101353413011349316E+06, 0.101366215214067837E+06, - 0.101378003241061873E+06, 0.101389048142805594E+06, 0.101399358057326695E+06, 0.101408993909155237E+06, 0.101418071350073515E+06, - 0.101426765747085621E+06, 0.101435320572288721E+06, 0.101444230417056518E+06, 0.101454115342003613E+06, 0.101466281775386233E+06, - 0.101480018815107192E+06, 0.101495370152025978E+06, 0.101512249092142942E+06, 0.101530457200416044E+06, 0.101549717357720714E+06, - 0.101569710093644739E+06, 0.101589282549966229E+06, 0.101605011230739328E+06, 0.101617835360473735E+06, 0.101628768238586897E+06, - 0.101637571031423722E+06, 0.101644166338589697E+06, 0.101648697806602591E+06, 0.101651881208006424E+06, 0.101655220484862148E+06, - 0.101657859335835557E+06, 0.101659761085947117E+06, 0.101661032940759702E+06, 0.101661921699332699E+06, 0.101662809971163108E+06, - 0.101664227024246793E+06, 0.101667989933228542E+06, 0.101675508452427108E+06, 0.101685268933038969E+06, 0.101696374945899413E+06, - 0.101708376350831662E+06, 0.101720741353243910E+06, 0.101732914311869565E+06, 0.101744191311434886E+06, 0.101753679207339199E+06, - 0.101762383198229145E+06, 0.101770484632283566E+06, 0.101778058653469430E+06, 0.101785052189110153E+06, 0.101791286685933344E+06, - 0.101795171487182030E+06, 0.101797156941597103E+06, 0.101798421280143026E+06, 0.101799261614609830E+06, 0.101799803038408485E+06, - 0.101800210895802447E+06, 0.101801683280290250E+06, 0.101802630829050468E+06, 0.101802543397740184E+06, 0.101801482357017914E+06, - 0.101799624587932572E+06, 0.101797066559983883E+06, 0.101795799625004249E+06, 0.101795785922852519E+06, 0.101796374037248344E+06, - 0.101796548441705847E+06, 0.101793091799900605E+06, 0.101786346983049574E+06, 0.101776575607877137E+06, 0.101765049283969143E+06, - 0.101754303368654233E+06, 0.101742481241294314E+06, 0.101726517364683619E+06, 0.101704526213350880E+06, 0.101673251963278643E+06, - 0.101631549642581842E+06, 0.101579630218674371E+06, 0.101517751331919892E+06, 0.101445587957413649E+06, 0.101369276534187840E+06, - 0.101293749197962985E+06, 0.101228845743408630E+06, 0.101175974072217723E+06, 0.101128069068520213E+06, 0.101080672101220363E+06, - 0.101030554297062597E+06, 0.100978255877595599E+06, 0.100917786384446328E+06, 0.100848380590802917E+06, 0.100779685419598463E+06, - 0.100716993576480047E+06, 0.100665449877585226E+06, 0.100628730188585745E+06, 0.100616768912061103E+06, 0.100625017647516172E+06, - 0.100651010955717982E+06, 0.100693983128488617E+06, 0.100748028718061119E+06, 0.100807126354548294E+06, 0.100865743222122503E+06, - 0.100920280263948240E+06, 0.100963697339721592E+06, 0.100996625031755175E+06, 0.101020588466931018E+06, 0.101034801756696354E+06, - 0.101044107550953762E+06, 0.101050001068824189E+06, 0.101053046373654055E+06, 0.101058552912032319E+06, 0.101072171257776601E+06, - 0.101095588999532294E+06, 0.101124462408449937E+06, 0.101159998252541394E+06, 0.101199939829214418E+06, 0.101233511940909040E+06, - 0.101250548981260363E+06, 0.101245238633873159E+06, 0.101231967019851887E+06, 0.101212524735667932E+06, 0.101187116747768814E+06, - 0.101155254569723096E+06, 0.101117728069520774E+06, 0.101075849861174778E+06, 0.101031454770778844E+06, 0.100982633468066182E+06, - 0.100931817382534617E+06, 0.100883044212189372E+06, 0.100842431678571462E+06, 0.100810753030772234E+06, 0.100790307235783985E+06, - 0.100775641660991605E+06, 0.100758065719658363E+06, 0.100742431929372280E+06, 0.100730276589137924E+06, 0.100719950891765460E+06, - 0.100707897196450547E+06, 0.100704034450479885E+06, 0.100696304475012279E+06, 0.100682955042842383E+06, 0.100662970635189646E+06, - 0.100635257255516670E+06, 0.100598919177042175E+06, 0.100561998994079375E+06, 0.100529207116205667E+06, 0.100503120931424841E+06, - 0.100485371253469493E+06, 0.100478084387816067E+06, 0.100480161528695491E+06, 0.100486330170588408E+06, 0.100497656033703854E+06, - 0.100512793940874559E+06, 0.100530267502319883E+06, 0.100548674998529634E+06, 0.100566870164484106E+06, 0.100588713074028346E+06, - 0.100612035752629497E+06, 0.100636570551070865E+06, 0.100661555413946771E+06, 0.100685975940573393E+06, 0.100708805081237850E+06, - 0.100728426698084644E+06, 0.101271996036762896E+06, 0.101284449704480561E+06, 0.101296689346213228E+06, 0.101309400454198360E+06, - 0.101322901055611903E+06, 0.101337001192974072E+06, 0.101351521575208899E+06, 0.101366313393139906E+06, 0.101382034494546009E+06, - 0.101397351776588475E+06, 0.101411443443270473E+06, 0.101424117470686309E+06, 0.101435883616085790E+06, 0.101446811616959909E+06, - 0.101457033181746156E+06, 0.101466747751913790E+06, 0.101476231696805597E+06, 0.101486021283400187E+06, 0.101497396375811921E+06, - 0.101510400207985600E+06, 0.101524923388815208E+06, 0.101540994381505661E+06, 0.101558520228044814E+06, 0.101577305318149651E+06, - 0.101597084529118074E+06, 0.101617572913645636E+06, 0.101635935716414897E+06, 0.101650985317801838E+06, 0.101664666828709975E+06, - 0.101676613583561295E+06, 0.101686531498022989E+06, 0.101694300750966708E+06, 0.101700039232711759E+06, 0.101704155496819658E+06, - 0.101707559871844016E+06, 0.101711706616868032E+06, 0.101715220819953611E+06, 0.101718183769718671E+06, 0.101720797579619655E+06, - 0.101723413797095534E+06, 0.101726548168837966E+06, 0.101732421109602874E+06, 0.101741180387240456E+06, 0.101752626090808626E+06, - 0.101765327683930620E+06, 0.101778794125947126E+06, 0.101792465254962983E+06, 0.101805759257347163E+06, 0.101817578749370528E+06, - 0.101828002210067600E+06, 0.101837310759124710E+06, 0.101845770211075462E+06, 0.101853420566787143E+06, 0.101860181736826940E+06, - 0.101864213062694500E+06, 0.101866574115216965E+06, 0.101867875008511299E+06, 0.101868524705411764E+06, 0.101868825959176160E+06, - 0.101868919433276926E+06, 0.101869678539425964E+06, 0.101870695483190138E+06, 0.101871330785532584E+06, 0.101870979213963699E+06, - 0.101869675931957303E+06, 0.101867574002842535E+06, 0.101865625644742016E+06, 0.101864444239763863E+06, 0.101864129871809724E+06, - 0.101864253411905665E+06, 0.101863863423935647E+06, 0.101861147095331355E+06, 0.101853046503827805E+06, 0.101842469691830149E+06, - 0.101829793173113096E+06, 0.101815148158582204E+06, 0.101801721489973846E+06, 0.101784969966993638E+06, 0.101762516553084497E+06, - 0.101733198141890345E+06, 0.101692387931239413E+06, 0.101641579160683832E+06, 0.101581604629232388E+06, 0.101513447361368249E+06, - 0.101440920474624741E+06, 0.101370696075984946E+06, 0.101305428265875380E+06, 0.101254160309156374E+06, 0.101207383873920160E+06, - 0.101161789898628529E+06, 0.101111489873579616E+06, 0.101058073620173833E+06, 0.100998431410120465E+06, 0.100925178881860134E+06, - 0.100851277940204382E+06, 0.100782887728638991E+06, 0.100724637342850445E+06, 0.100681654247053943E+06, 0.100660743763258797E+06, - 0.100662241191619672E+06, 0.100684600997945701E+06, 0.100726431789378737E+06, 0.100783621753223240E+06, 0.100850165592330639E+06, - 0.100919393459606828E+06, 0.100984663126731160E+06, 0.101035581217426865E+06, 0.101073289555574971E+06, 0.101097883508170984E+06, - 0.101109275635634360E+06, 0.101115535689499287E+06, 0.101120721213043289E+06, 0.101127445332507938E+06, 0.101138555650677066E+06, - 0.101162386128591490E+06, 0.101193764958060041E+06, 0.101229324100487633E+06, 0.101272586038755646E+06, 0.101314017050708091E+06, - 0.101345307647537833E+06, 0.101350681405921583E+06, 0.101336274552223433E+06, 0.101312002659208913E+06, 0.101282108941999220E+06, - 0.101247511268828879E+06, 0.101208775326433519E+06, 0.101166118942493005E+06, 0.101124324087716755E+06, 0.101077097855417393E+06, - 0.101023493736806588E+06, 0.100966370678116829E+06, 0.100910649732596605E+06, 0.100860956183662900E+06, 0.100818859583747035E+06, - 0.100784487610509677E+06, 0.100755633857502806E+06, 0.100730268695456398E+06, 0.100710865638861083E+06, 0.100697679049610029E+06, - 0.100690061794109570E+06, 0.100696089852752222E+06, 0.100696921102593260E+06, 0.100692632540626320E+06, 0.100681762801710865E+06, - 0.100663264802660036E+06, 0.100633791904004815E+06, 0.100597430688150896E+06, 0.100559133196241281E+06, 0.100524051576254133E+06, - 0.100494743325319461E+06, 0.100472843717532320E+06, 0.100453469270866597E+06, 0.100441938855850953E+06, 0.100444602587366870E+06, - 0.100453700278505523E+06, 0.100467703647186674E+06, 0.100484865751373640E+06, 0.100504556800278908E+06, 0.100526747147881411E+06, - 0.100548342492759344E+06, 0.100570928110482331E+06, 0.100594499129673175E+06, 0.100618314768352022E+06, 0.100641358389098648E+06, - 0.100661048545089099E+06, 0.100674922441404182E+06, 0.101277440454925483E+06, 0.101292275045881630E+06, 0.101308217918252703E+06, - 0.101324032641650105E+06, 0.101340083417949048E+06, 0.101356599817204507E+06, 0.101373389242319026E+06, 0.101391680572806275E+06, - 0.101409655246696246E+06, 0.101426966070523806E+06, 0.101443353143514600E+06, 0.101458277199001546E+06, 0.101471528522387307E+06, - 0.101483748681189623E+06, 0.101495083125874895E+06, 0.101505752090554262E+06, 0.101516050089151657E+06, 0.101526815975076141E+06, - 0.101538795327266271E+06, 0.101552338028206417E+06, 0.101567404995926277E+06, 0.101583932457588046E+06, 0.101601812845274559E+06, - 0.101620841504076889E+06, 0.101640749378202716E+06, 0.101659290500403222E+06, 0.101676771795349603E+06, 0.101693884723980591E+06, - 0.101708998663612001E+06, 0.101722276078936207E+06, 0.101733606252533034E+06, 0.101742808520292456E+06, 0.101749958233873534E+06, - 0.101756733187784732E+06, 0.101761976313215302E+06, 0.101765600227458519E+06, 0.101770624962746049E+06, 0.101775587804667244E+06, - 0.101780223730697457E+06, 0.101784845963681015E+06, 0.101792019560120360E+06, 0.101800861910829000E+06, 0.101810238167576026E+06, - 0.101821334626365482E+06, 0.101835649384848730E+06, 0.101850599319270405E+06, 0.101865571025550424E+06, 0.101879726510542314E+06, - 0.101892673462390783E+06, 0.101903975174055988E+06, 0.101913651691837455E+06, 0.101922403262289721E+06, 0.101930066269132934E+06, - 0.101934959838625931E+06, 0.101938013574382479E+06, 0.101939867945920269E+06, 0.101940768404829549E+06, 0.101940976512875422E+06, - 0.101940974808985324E+06, 0.101941915218950715E+06, 0.101942796779357042E+06, 0.101943325071244180E+06, 0.101943321289824438E+06, - 0.101942520685581403E+06, 0.101940795734215877E+06, 0.101938328485986989E+06, 0.101936102913573559E+06, 0.101934189161022412E+06, - 0.101933270983365946E+06, 0.101932726854111810E+06, 0.101931071080041162E+06, 0.101927390375963005E+06, 0.101920782487591568E+06, - 0.101909599976852041E+06, 0.101896034018928112E+06, 0.101880121030327078E+06, 0.101861777722108454E+06, 0.101843441866567693E+06, - 0.101821175828396939E+06, 0.101793162871491804E+06, 0.101756243381197477E+06, 0.101707526053893132E+06, 0.101651390637597418E+06, - 0.101591096250860501E+06, 0.101525066978488496E+06, 0.101457842460151805E+06, 0.101392749867658815E+06, 0.101338205739929384E+06, - 0.101290789521037383E+06, 0.101243732978547458E+06, 0.101191560328100386E+06, 0.101135333560209707E+06, 0.101074991868799916E+06, - 0.101002789603246347E+06, 0.100928035016280875E+06, 0.100857779212484500E+06, 0.100794984785666602E+06, 0.100746221294778152E+06, - 0.100717266126841918E+06, 0.100710869212579069E+06, 0.100726313373954297E+06, 0.100765862955971417E+06, 0.100824009621681325E+06, - 0.100896074483335498E+06, 0.100975156087370415E+06, 0.101050862045185830E+06, 0.101108616996395343E+06, 0.101151397540630162E+06, - 0.101177118649863274E+06, 0.101187234876946401E+06, 0.101192189574432836E+06, 0.101198920872520132E+06, 0.101209271572763842E+06, - 0.101225853188380381E+06, 0.101255763867716960E+06, 0.101292205782835576E+06, 0.101333769433737034E+06, 0.101380487686360808E+06, - 0.101421196585383368E+06, 0.101445943578677994E+06, 0.101442593076884281E+06, 0.101422753739062216E+06, 0.101390520324852318E+06, - 0.101350761888702051E+06, 0.101308120360709363E+06, 0.101265074031475204E+06, 0.101223556150358476E+06, 0.101181059083197164E+06, - 0.101131282154724337E+06, 0.101073985674786556E+06, 0.101009316519365500E+06, 0.100945620806578852E+06, 0.100887564966803198E+06, - 0.100836870701820939E+06, 0.100791306568270127E+06, 0.100748587002241606E+06, 0.100714275195360678E+06, 0.100691096015225994E+06, - 0.100677036214206237E+06, 0.100679656532840978E+06, 0.100689403954963505E+06, 0.100699806241966638E+06, 0.100699758014009334E+06, - 0.100690385161567290E+06, 0.100668712287826143E+06, 0.100636906386880102E+06, 0.100599766534639755E+06, 0.100560426804608782E+06, - 0.100523011227441762E+06, 0.100490487333571364E+06, 0.100458484377625064E+06, 0.100433836484664062E+06, 0.100418321599970062E+06, - 0.100412076649917391E+06, 0.100419080629848453E+06, 0.100432241000389156E+06, 0.100450792482229837E+06, 0.100472305642769512E+06, - 0.100493869619492121E+06, 0.100514430080734746E+06, 0.100535036793476407E+06, 0.100556629184451856E+06, 0.100578314394928922E+06, - 0.100596991295179905E+06, 0.100611500340730694E+06, 0.100623274306907668E+06, 0.101280196625301396E+06, 0.101297364868656936E+06, - 0.101315860426329833E+06, 0.101335437548964052E+06, 0.101354738212366676E+06, 0.101373945822871654E+06, 0.101394704590563779E+06, - 0.101415369573864707E+06, 0.101435547066077095E+06, 0.101454900560777067E+06, 0.101473156717428967E+06, 0.101490111858949429E+06, - 0.101505426648419336E+06, 0.101518896733282789E+06, 0.101531260767964472E+06, 0.101542531309453814E+06, 0.101553164954199878E+06, - 0.101564411925864319E+06, 0.101576767311889984E+06, 0.101590613786174377E+06, 0.101606186426911474E+06, 0.101622949542643095E+06, - 0.101640870734518088E+06, 0.101659778611533140E+06, 0.101677671599300767E+06, 0.101695145189232746E+06, 0.101713022490742442E+06, - 0.101730968458130665E+06, 0.101748633328473559E+06, 0.101764332593418454E+06, 0.101777415582760368E+06, 0.101788327636173344E+06, - 0.101798745459491343E+06, 0.101807854686651277E+06, 0.101815215507054876E+06, 0.101821043040616947E+06, 0.101825884968623417E+06, - 0.101832189148969264E+06, 0.101839168448648401E+06, 0.101848045440598347E+06, 0.101858730804693652E+06, 0.101869959329435806E+06, - 0.101881533268110448E+06, 0.101893454722194554E+06, 0.101906437265534973E+06, 0.101922905509709031E+06, 0.101939197745689977E+06, - 0.101954795923734462E+06, 0.101969009671704334E+06, 0.101981310726737574E+06, 0.101991415766123711E+06, 0.101999594743156573E+06, - 0.102005976491342561E+06, 0.102010334316063047E+06, 0.102013157295944911E+06, 0.102014722383416287E+06, 0.102015313093490025E+06, - 0.102015201185307524E+06, 0.102016512237083880E+06, 0.102017510782104568E+06, 0.102018055903560264E+06, 0.102018084579591843E+06, - 0.102017466339170613E+06, 0.102015842014936527E+06, 0.102013009808558825E+06, 0.102010188377710918E+06, 0.102007504920719613E+06, - 0.102004842449303280E+06, 0.102002010784629019E+06, 0.101999472815438930E+06, 0.101995912864510945E+06, 0.101991527724094442E+06, - 0.101985699759707655E+06, 0.101975812995855114E+06, 0.101961537246313150E+06, 0.101943695019863866E+06, 0.101923033375715851E+06, - 0.101901362121280530E+06, 0.101879075837123033E+06, 0.101852284874085046E+06, 0.101819539147717020E+06, 0.101776999589703846E+06, - 0.101726785900868257E+06, 0.101671557646898407E+06, 0.101612042588822980E+06, 0.101548622762663115E+06, 0.101485284216076703E+06, - 0.101425147441038411E+06, 0.101373420817102917E+06, 0.101321191476503751E+06, 0.101266538752380700E+06, 0.101208938335707280E+06, - 0.101148533319442722E+06, 0.101080582757091557E+06, 0.101007172321080754E+06, 0.100937106866050381E+06, 0.100872650853732252E+06, - 0.100818490092161403E+06, 0.100780581038449120E+06, 0.100763989069985822E+06, 0.100769172528104478E+06, 0.100801781036641652E+06, - 0.100856282722816642E+06, 0.100929221528193739E+06, 0.101013884730459817E+06, 0.101097563707576744E+06, 0.101162534274172547E+06, - 0.101213486478638646E+06, 0.101244516559525029E+06, 0.101257648408437890E+06, 0.101263733502884890E+06, 0.101275510052246449E+06, - 0.101290762661853529E+06, 0.101314197491016195E+06, 0.101347943558257903E+06, 0.101386651316440679E+06, 0.101430443429601510E+06, - 0.101475669896804160E+06, 0.101514950055520574E+06, 0.101531515938051540E+06, 0.101524788957272292E+06, 0.101501664340208648E+06, - 0.101465580088908755E+06, 0.101421732802947983E+06, 0.101374184582676520E+06, 0.101328046898908578E+06, 0.101289807901878230E+06, - 0.101246491413997268E+06, 0.101194778317482283E+06, 0.101131646224091921E+06, 0.101060205833383836E+06, 0.100988174374432070E+06, - 0.100922370979696687E+06, 0.100863854824209222E+06, 0.100809964699915654E+06, 0.100761271524313197E+06, 0.100719104259046479E+06, - 0.100686430395430245E+06, 0.100678847862221184E+06, 0.100683138663107515E+06, 0.100693073794055832E+06, 0.100704133264039236E+06, - 0.100711587564049987E+06, 0.100702838554374641E+06, 0.100679156446423745E+06, 0.100646910483054933E+06, 0.100608627281804467E+06, - 0.100567412671928309E+06, 0.100526528285293534E+06, 0.100483943399388023E+06, 0.100448443665773972E+06, 0.100421899539395425E+06, - 0.100404924203073868E+06, 0.100397063255380912E+06, 0.100397195586259491E+06, 0.100412985650041403E+06, 0.100432834475288488E+06, - 0.100453366207182436E+06, 0.100473356439391355E+06, 0.100491742373035304E+06, 0.100507905429383289E+06, 0.100525814076571885E+06, - 0.100542096974396103E+06, 0.100555812166254138E+06, 0.100567395231908740E+06, 0.100576579149565121E+06, 0.101279908089260382E+06, - 0.101299372851355220E+06, 0.101320345227797603E+06, 0.101342568251312987E+06, 0.101366203167707048E+06, 0.101390159455080997E+06, - 0.101413541104309363E+06, 0.101436670068180945E+06, 0.101459134145086064E+06, 0.101480579621756508E+06, 0.101500717501762701E+06, - 0.101519330301993643E+06, 0.101536279443531355E+06, 0.101551434684382868E+06, 0.101564255195383463E+06, 0.101575422887434994E+06, - 0.101586445548099669E+06, 0.101597902131166629E+06, 0.101610316943178666E+06, 0.101624105975331244E+06, 0.101639540620591506E+06, - 0.101656731770743747E+06, 0.101674690803331439E+06, 0.101691335236531100E+06, 0.101707821449698851E+06, 0.101725245164068649E+06, - 0.101743396815362881E+06, 0.101762005533747782E+06, 0.101780794703432257E+06, 0.101799566956391791E+06, 0.101816729089967106E+06, - 0.101830810115947446E+06, 0.101843847767199652E+06, 0.101855309960108818E+06, 0.101865083082604426E+06, 0.101873349177960990E+06, - 0.101880647099664595E+06, 0.101887932618480903E+06, 0.101897799286328358E+06, 0.101910318475203370E+06, 0.101923741945953618E+06, - 0.101937617512615703E+06, 0.101951634884124011E+06, 0.101965709346062926E+06, 0.101980052214833602E+06, 0.101995075682068244E+06, - 0.102012705906177565E+06, 0.102029916826673259E+06, 0.102045578980748891E+06, 0.102059048316380504E+06, 0.102069947174644665E+06, - 0.102077684357740349E+06, 0.102082147312762972E+06, 0.102086500261915091E+06, 0.102089248935513198E+06, 0.102090698933738371E+06, - 0.102091178364924752E+06, 0.102092701245381337E+06, 0.102093815457381104E+06, 0.102094368575754212E+06, 0.102094331459262947E+06, - 0.102093649378548696E+06, 0.102091495160413397E+06, 0.102088077118329078E+06, 0.102085266715555787E+06, 0.102082068081696532E+06, - 0.102078934857918081E+06, 0.102075562114887900E+06, 0.102070631820974115E+06, 0.102064438122544176E+06, 0.102059414174384161E+06, - 0.102053827822841413E+06, 0.102047097203453392E+06, 0.102038205276517619E+06, 0.102023970080276820E+06, 0.102005255572377879E+06, - 0.101983545280989390E+06, 0.101959239559772468E+06, 0.101934934813177606E+06, 0.101909416211695381E+06, 0.101879530216405619E+06, - 0.101843729384204227E+06, 0.101798771374156902E+06, 0.101749131431232046E+06, 0.101696435747962270E+06, 0.101638597439857098E+06, - 0.101576958615739393E+06, 0.101514239708325505E+06, 0.101456190833159548E+06, 0.101399554349585407E+06, 0.101340424142701784E+06, - 0.101280446676456311E+06, 0.101219442303719290E+06, 0.101155802903883246E+06, 0.101085010925495619E+06, 0.101016127520053677E+06, - 0.100949559692596478E+06, 0.100889898302085116E+06, 0.100844209040313392E+06, 0.100816129681629769E+06, 0.100810501379105452E+06, - 0.100832591111220638E+06, 0.100879523722449056E+06, 0.100948063089510324E+06, 0.101031460853947981E+06, 0.101115973986060417E+06, - 0.101184231818201646E+06, 0.101240245990651732E+06, 0.101276004337181133E+06, 0.101297693264287940E+06, 0.101316108838536718E+06, - 0.101339338207326771E+06, 0.101364838726589573E+06, 0.101398212697034352E+06, 0.101435020262566584E+06, 0.101474120214935858E+06, - 0.101515374742090018E+06, 0.101554913896900893E+06, 0.101585525309637247E+06, 0.101596313029333352E+06, 0.101591763310596391E+06, - 0.101572063905601564E+06, 0.101533915795807872E+06, 0.101488864498615381E+06, 0.101440950048410057E+06, 0.101401964815710235E+06, - 0.101362939393266570E+06, 0.101319118725317487E+06, 0.101264253224874032E+06, 0.101194604583161839E+06, 0.101119529697804493E+06, - 0.101043148821796305E+06, 0.100969817218776385E+06, 0.100904222807714512E+06, 0.100845424566366739E+06, 0.100792297539129795E+06, - 0.100746429506127941E+06, 0.100716119483396033E+06, 0.100699086889567552E+06, 0.100699855109205411E+06, 0.100707310375888119E+06, - 0.100716570575528633E+06, 0.100720007898216936E+06, 0.100714797932772417E+06, 0.100695727134459230E+06, 0.100662985850684985E+06, - 0.100623495462979961E+06, 0.100579571082265902E+06, 0.100528287659914175E+06, 0.100483047690553038E+06, 0.100446858129451386E+06, - 0.100420432087088702E+06, 0.100404117469529898E+06, 0.100397105480157465E+06, 0.100403234638665162E+06, 0.100415020179178769E+06, - 0.100433067114222082E+06, 0.100451452530888302E+06, 0.100468854497717490E+06, 0.100484113018387754E+06, 0.100496513635322510E+06, - 0.100504396642556661E+06, 0.100514796346128511E+06, 0.100524493045942218E+06, 0.100532404153307187E+06, 0.100538289704171490E+06, - 0.101276336252575435E+06, 0.101298080414544456E+06, 0.101321469561098274E+06, 0.101347127563797287E+06, 0.101375017595738012E+06, - 0.101402741686854177E+06, 0.101429372639699533E+06, 0.101455094154428705E+06, 0.101479936738935212E+06, 0.101503527247806051E+06, - 0.101525558424067625E+06, 0.101545795970329476E+06, 0.101564086253569083E+06, 0.101579860400036196E+06, 0.101592656313919491E+06, - 0.101604222243081458E+06, 0.101615370617936293E+06, 0.101626717204329048E+06, 0.101638824013794816E+06, 0.101652144675515985E+06, - 0.101666986413953739E+06, 0.101683491567268982E+06, 0.101699730410034434E+06, 0.101715308981035720E+06, 0.101731361440654102E+06, - 0.101748589449732390E+06, 0.101766824698764540E+06, 0.101785841910313233E+06, 0.101805411629659066E+06, 0.101825381837012450E+06, - 0.101846839764007193E+06, 0.101867081140515147E+06, 0.101882747001865355E+06, 0.101896903928888263E+06, 0.101909362288120537E+06, - 0.101920245934517079E+06, 0.101930058238641242E+06, 0.101941637442764200E+06, 0.101954785426383867E+06, 0.101968215450878924E+06, - 0.101984710778129607E+06, 0.102001549965592465E+06, 0.102018275841846422E+06, 0.102034683222590960E+06, 0.102052401989689286E+06, - 0.102069645673240069E+06, 0.102086007650836211E+06, 0.102103768116502732E+06, 0.102121127630333416E+06, 0.102135973777942898E+06, - 0.102147987937177197E+06, 0.102156601874315427E+06, 0.102161672760610920E+06, 0.102163612354316181E+06, 0.102165768392921964E+06, - 0.102167214431077227E+06, 0.102169260247518920E+06, 0.102170746287005837E+06, 0.102171480626503515E+06, 0.102171269145651808E+06, - 0.102170214520413967E+06, 0.102167256562754847E+06, 0.102162479386098232E+06, 0.102158371150627951E+06, 0.102155244448894475E+06, - 0.102152875264177637E+06, 0.102149492287714515E+06, 0.102145495391175835E+06, 0.102139392366010521E+06, 0.102131234162350753E+06, - 0.102121845495369198E+06, 0.102114444604303775E+06, 0.102106462190456019E+06, 0.102096364075651625E+06, 0.102082958297694466E+06, - 0.102064065966768365E+06, 0.102041420899050965E+06, 0.102016297892142000E+06, 0.101989261194259234E+06, 0.101963193901333740E+06, - 0.101934697827006079E+06, 0.101902018630394974E+06, 0.101863893013675159E+06, 0.101820477410193009E+06, 0.101774528513823985E+06, - 0.101724002882111308E+06, 0.101665763047983230E+06, 0.101603648801794363E+06, 0.101540096977050402E+06, 0.101478947206942044E+06, - 0.101415470097827929E+06, 0.101351609294201058E+06, 0.101289469642166499E+06, 0.101226537327552069E+06, 0.101158605139549531E+06, - 0.101091671283985226E+06, 0.101026501778518956E+06, 0.100963906622713315E+06, 0.100912235109733156E+06, 0.100875156448926034E+06, - 0.100858092199168052E+06, 0.100869196724643829E+06, 0.100906258192389359E+06, 0.100966643545000639E+06, 0.101044871026198045E+06, - 0.101126128294873750E+06, 0.101195519846174895E+06, 0.101255659962385485E+06, 0.101297057174446716E+06, 0.101328131549875659E+06, - 0.101358621176643224E+06, 0.101392239138290606E+06, 0.101427359701943147E+06, 0.101468500213009858E+06, 0.101510703720686288E+06, - 0.101550908563824967E+06, 0.101587166287520682E+06, 0.101619760493459311E+06, 0.101640375989610111E+06, 0.101647164822681414E+06, - 0.101640476796716728E+06, 0.101620225665346763E+06, 0.101589549071868416E+06, 0.101551044697311809E+06, 0.101511563682290900E+06, - 0.101475939268223781E+06, 0.101437438003792078E+06, 0.101392805212183681E+06, 0.101332702985176016E+06, 0.101262976832194923E+06, - 0.101186444126810515E+06, 0.101108333464266703E+06, 0.101034512676034472E+06, 0.100963849818957518E+06, 0.100898562106253885E+06, - 0.100842056459041982E+06, 0.100798749608423153E+06, 0.100767148703609448E+06, 0.100745027122654850E+06, 0.100731425417328996E+06, - 0.100731821012642424E+06, 0.100734592849697350E+06, 0.100733986756515151E+06, 0.100727026999971698E+06, 0.100711618349869153E+06, - 0.100683470368124676E+06, 0.100640250766840603E+06, 0.100586314437398818E+06, 0.100534961959011474E+06, 0.100490642055552060E+06, - 0.100456264076438296E+06, 0.100432289810027520E+06, 0.100419632142970615E+06, 0.100423645734029778E+06, 0.100432024957258123E+06, - 0.100442709528904365E+06, 0.100454138069834065E+06, 0.100469282754753091E+06, 0.100483179206656147E+06, 0.100494317659240289E+06, - 0.100501048475271105E+06, 0.100503737147053136E+06, 0.100502939624753810E+06, 0.100506864511892840E+06, 0.100510205922212830E+06, - 0.100511985008099888E+06, 0.101269395817640194E+06, 0.101293433370600033E+06, 0.101320709064215349E+06, 0.101350720216622271E+06, - 0.101381363474586935E+06, 0.101411901774678990E+06, 0.101441702408660596E+06, 0.101470286272251309E+06, 0.101497612121933402E+06, - 0.101523409436511720E+06, 0.101547349710601979E+06, 0.101569178391354450E+06, 0.101588382552830284E+06, 0.101604424454005639E+06, - 0.101617806496970152E+06, 0.101629009202247544E+06, 0.101639790736640862E+06, 0.101650653799515901E+06, 0.101662034467563892E+06, - 0.101674429962589624E+06, 0.101688184881771667E+06, 0.101701776789907686E+06, 0.101715632368359467E+06, 0.101731005396025357E+06, - 0.101747619021182472E+06, 0.101764475149160600E+06, 0.101782565451806455E+06, 0.101801692572504733E+06, 0.101821649291101741E+06, - 0.101844372908615100E+06, 0.101868013490669473E+06, 0.101890926735153276E+06, 0.101912734436730447E+06, 0.101930521333358061E+06, - 0.101945955049482625E+06, 0.101959618341155976E+06, 0.101973842306752718E+06, 0.101990092943988522E+06, 0.102006492234429417E+06, - 0.102022981199823858E+06, 0.102039845835770568E+06, 0.102059553276874620E+06, 0.102079331788742449E+06, 0.102099902964415654E+06, - 0.102120532959564909E+06, 0.102140448801236460E+06, 0.102159255793075747E+06, 0.102176879448503649E+06, 0.102194365868866342E+06, - 0.102211106097444455E+06, 0.102224803244153038E+06, 0.102234823789642047E+06, 0.102240968923527806E+06, 0.102243570541519104E+06, - 0.102243519688579676E+06, 0.102244750868611838E+06, 0.102246759472131700E+06, 0.102247988131721504E+06, 0.102248209161490959E+06, - 0.102247170632681489E+06, 0.102243247319650705E+06, 0.102236753031268512E+06, 0.102230982493940493E+06, 0.102226187707310237E+06, - 0.102222666096639834E+06, 0.102220567141386651E+06, 0.102219855956292071E+06, 0.102215511479397683E+06, 0.102208434908867741E+06, - 0.102198721169081880E+06, 0.102186789184960857E+06, 0.102174609249495770E+06, 0.102164550205667154E+06, 0.102152502370517235E+06, - 0.102137501608386214E+06, 0.102118919702411848E+06, 0.102095889999392573E+06, 0.102070100404917495E+06, 0.102041997958624415E+06, - 0.102012090612610089E+06, 0.101983710969351829E+06, 0.101953137519082840E+06, 0.101920734120792738E+06, 0.101883717982373681E+06, - 0.101842973734119500E+06, 0.101798428245916861E+06, 0.101747102066966778E+06, 0.101687602338869881E+06, 0.101624664318831565E+06, - 0.101559707946739305E+06, 0.101491658640950249E+06, 0.101420567276357397E+06, 0.101354355882096454E+06, 0.101289435543346961E+06, - 0.101224098024003702E+06, 0.101159952737485408E+06, 0.101097956680038245E+06, 0.101035227047009626E+06, 0.100981546520210177E+06, - 0.100939244847484995E+06, 0.100914786575781181E+06, 0.100915867157493747E+06, 0.100942559164277671E+06, 0.100993021366280096E+06, - 0.101062207385378511E+06, 0.101136754321606641E+06, 0.101205153055716102E+06, 0.101267549676815237E+06, 0.101315566331653798E+06, - 0.101356986952566978E+06, 0.101400109049254897E+06, 0.101444047042664242E+06, 0.101488513133860251E+06, 0.101534593023339607E+06, - 0.101578862893253303E+06, 0.101617989104461085E+06, 0.101651469070145307E+06, 0.101676676962902973E+06, 0.101688426206951568E+06, - 0.101690699198194692E+06, 0.101681585082600272E+06, 0.101660802224054729E+06, 0.101632322368388574E+06, 0.101602214382015110E+06, - 0.101577248018812563E+06, 0.101546577483431887E+06, 0.101509347660459607E+06, 0.101460277851145336E+06, 0.101400695177468675E+06, - 0.101333061941295062E+06, 0.101259893373003069E+06, 0.101185498750814251E+06, 0.101111060613673137E+06, 0.101038806163680754E+06, - 0.100970853556921851E+06, 0.100913205537255504E+06, 0.100868081185120318E+06, 0.100831661076531760E+06, 0.100803490881640522E+06, - 0.100782858759036229E+06, 0.100767010800255986E+06, 0.100760517927946479E+06, 0.100755313595541767E+06, 0.100745011420950410E+06, - 0.100727337942231010E+06, 0.100696437123156371E+06, 0.100650083823098379E+06, 0.100597278983266224E+06, 0.100548413676936747E+06, - 0.100507765427222563E+06, 0.100477948430878227E+06, 0.100463614942480534E+06, 0.100466404104801695E+06, 0.100473340681007379E+06, - 0.100482742216284692E+06, 0.100492637659898319E+06, 0.100501306119762710E+06, 0.100508155310289090E+06, 0.100517896956254641E+06, - 0.100523967020314361E+06, 0.100525551437862276E+06, 0.100522692726944748E+06, 0.100516008939190593E+06, 0.100506617021169775E+06, - 0.100504130401290677E+06, 0.100500855757604397E+06, 0.101259195015618316E+06, 0.101287394131248599E+06, 0.101318624387393094E+06, - 0.101351388311065471E+06, 0.101384848445848693E+06, 0.101418230695586331E+06, 0.101450864090695264E+06, 0.101482215379592511E+06, - 0.101512000328888942E+06, 0.101540081556911420E+06, 0.101565958007626774E+06, 0.101589239793549044E+06, 0.101609354590231524E+06, - 0.101626245425942194E+06, 0.101640116415258730E+06, 0.101651384047841973E+06, 0.101660624537901342E+06, 0.101669864682349900E+06, - 0.101680046518619303E+06, 0.101691016789836227E+06, 0.101701600972581538E+06, 0.101712344116073305E+06, 0.101724596034016693E+06, - 0.101738626214170567E+06, 0.101754578760972465E+06, 0.101772464174383247E+06, 0.101790289256249525E+06, 0.101809225095436283E+06, - 0.101831409086778760E+06, 0.101855713865937665E+06, 0.101880304248738481E+06, 0.101904708267321548E+06, 0.101928659429272666E+06, - 0.101952215895369998E+06, 0.101973129343184191E+06, 0.101990492819853054E+06, 0.102009155453432861E+06, 0.102028626658851339E+06, - 0.102048465714061036E+06, 0.102068480817810836E+06, 0.102088846460710702E+06, 0.102110232566220016E+06, 0.102133295641766570E+06, - 0.102157356921516912E+06, 0.102181314870907911E+06, 0.102204374004590238E+06, 0.102226000444488978E+06, 0.102246017656184413E+06, - 0.102265607213167954E+06, 0.102282589184103534E+06, 0.102298432423255334E+06, 0.102310352702715958E+06, 0.102317999706446251E+06, - 0.102321598850661234E+06, 0.102323515138576258E+06, 0.102323197704490987E+06, 0.102322212878332677E+06, 0.102323063816814887E+06, - 0.102322646091264614E+06, 0.102319439183542258E+06, 0.102312970911412354E+06, 0.102304997794601848E+06, 0.102296841478971372E+06, - 0.102291418130089238E+06, 0.102288360395478667E+06, 0.102288552237265947E+06, 0.102287701703575425E+06, 0.102284538846590702E+06, - 0.102276897495121520E+06, 0.102265740813761135E+06, 0.102252134571836228E+06, 0.102237131022390793E+06, 0.102221272996986561E+06, - 0.102206507054624482E+06, 0.102189132554294789E+06, 0.102168602609417649E+06, 0.102145544389345145E+06, 0.102118566149667124E+06, - 0.102089083952633140E+06, 0.102057798140960163E+06, 0.102026969995698295E+06, 0.101997794023706476E+06, 0.101966743922712252E+06, - 0.101933057167765714E+06, 0.101896592945729586E+06, 0.101857371791885336E+06, 0.101815607416803119E+06, 0.101763023383776948E+06, - 0.101702407436462090E+06, 0.101635116047538351E+06, 0.101562945833011370E+06, 0.101485822606547168E+06, 0.101411005039628857E+06, - 0.101339835091662317E+06, 0.101272689532459044E+06, 0.101210368076346276E+06, 0.101154473004817381E+06, 0.101097829928473817E+06, - 0.101048482059940754E+06, 0.101007048910648111E+06, 0.100979473833055905E+06, 0.100973447727585182E+06, 0.100990584221201716E+06, - 0.101029960997994902E+06, 0.101087951257948895E+06, 0.101153695183268181E+06, 0.101219018003879406E+06, 0.101282293838312820E+06, - 0.101338465984178547E+06, 0.101391368230947162E+06, 0.101446772222011277E+06, 0.101500085973176334E+06, 0.101550853250171887E+06, - 0.101598573456663202E+06, 0.101641988898670184E+06, 0.101679214186169236E+06, 0.101710098564568776E+06, 0.101732780885386266E+06, - 0.101743179226637279E+06, 0.101740055966295447E+06, 0.101722994425650759E+06, 0.101700469255730888E+06, 0.101674123165238838E+06, - 0.101653160060864204E+06, 0.101631596453806415E+06, 0.101607075787893336E+06, 0.101574486424828559E+06, 0.101526976419999381E+06, - 0.101469612332252946E+06, 0.101404225279481514E+06, 0.101336714868594907E+06, 0.101267916935403031E+06, 0.101195492908750399E+06, - 0.101123687793417601E+06, 0.101058751346724224E+06, 0.101000171416406578E+06, 0.100947653236097554E+06, 0.100904324965127365E+06, - 0.100869022485961759E+06, 0.100838631774334179E+06, 0.100814997040174785E+06, 0.100796371893838630E+06, 0.100782994420463059E+06, - 0.100767931078048772E+06, 0.100738709347425858E+06, 0.100699551218149616E+06, 0.100657848886243373E+06, 0.100613930496747955E+06, - 0.100570328091677089E+06, 0.100536417956577148E+06, 0.100522106220241680E+06, 0.100523981788664518E+06, 0.100534576173254580E+06, - 0.100544607428678122E+06, 0.100555100707554739E+06, 0.100564477570051735E+06, 0.100571044680449282E+06, 0.100573984997784108E+06, - 0.100574098036419746E+06, 0.100574969682196417E+06, 0.100570985693230745E+06, 0.100562235725965831E+06, 0.100549403090203457E+06, - 0.100533663303323410E+06, 0.100514985690890928E+06, 0.100501506969102309E+06, 0.101247028543607215E+06, 0.101279000272323727E+06, - 0.101313044900483452E+06, 0.101348706117229129E+06, 0.101385099864543183E+06, 0.101421406335684835E+06, 0.101456908730823867E+06, - 0.101491027169870344E+06, 0.101523346965489472E+06, 0.101553641131603319E+06, 0.101581591041353255E+06, 0.101606456037034135E+06, - 0.101627802489960915E+06, 0.101645553091339185E+06, 0.101659871959589625E+06, 0.101671125963614424E+06, 0.101679833672676948E+06, - 0.101686600287344059E+06, 0.101693249899754504E+06, 0.101700828771449567E+06, 0.101708214676399468E+06, 0.101716786788727914E+06, - 0.101726994188702083E+06, 0.101739189978545895E+06, 0.101753597010140846E+06, 0.101770294478413707E+06, 0.101789229323241438E+06, - 0.101810439881563492E+06, 0.101833551125124432E+06, 0.101857745342370516E+06, 0.101882520275840274E+06, 0.101907489508364233E+06, - 0.101932461599410264E+06, 0.101957552146214075E+06, 0.101983305456973438E+06, 0.102008579834297911E+06, 0.102030494060992147E+06, - 0.102053548115608966E+06, 0.102077104427164624E+06, 0.102100783210934751E+06, 0.102124584361851768E+06, 0.102151618960978216E+06, - 0.102178487299050277E+06, 0.102203837934088209E+06, 0.102231789811787370E+06, 0.102258565924026567E+06, 0.102283435612743153E+06, - 0.102308168911264584E+06, 0.102331519967324959E+06, 0.102351306090243161E+06, 0.102367344163488393E+06, 0.102380956720203612E+06, - 0.102390540926741916E+06, 0.102396561280422888E+06, 0.102399644414793191E+06, 0.102399967479044542E+06, 0.102398097050173761E+06, - 0.102394877934586664E+06, 0.102392579382061362E+06, 0.102387437885771593E+06, 0.102380474134807795E+06, 0.102372089234619867E+06, - 0.102363087167973557E+06, 0.102355720695108947E+06, 0.102355336216227777E+06, 0.102355244528026058E+06, 0.102353863384518510E+06, - 0.102349945815737563E+06, 0.102342442703922468E+06, 0.102329934370864139E+06, 0.102314612359457431E+06, 0.102297370131901000E+06, - 0.102278388120427626E+06, 0.102257491551240819E+06, 0.102236307907230104E+06, 0.102213097347429662E+06, 0.102187800432568954E+06, - 0.102160229919730293E+06, 0.102129097981842890E+06, 0.102096889363146300E+06, 0.102063827052134482E+06, 0.102031184486610946E+06, - 0.101999264622467439E+06, 0.101966221591490219E+06, 0.101931754343580265E+06, 0.101897700536754972E+06, 0.101861993529889558E+06, - 0.101819636716650479E+06, 0.101763615901241341E+06, 0.101697976370488861E+06, 0.101620393736143524E+06, 0.101535102872161384E+06, - 0.101449253069692393E+06, 0.101374420264238244E+06, 0.101306501858255855E+06, 0.101247778577939956E+06, 0.101198381473636808E+06, - 0.101152064836353820E+06, 0.101110344624142366E+06, 0.101075281561938828E+06, 0.101049407554255304E+06, 0.101040768998780331E+06, - 0.101052199471517510E+06, 0.101082392815890635E+06, 0.101129144157533199E+06, 0.101184092780294726E+06, 0.101243772906750455E+06, - 0.101307121999288836E+06, 0.101369991062098430E+06, 0.101433698297000723E+06, 0.101498903828178067E+06, 0.101560474018943947E+06, - 0.101615857050411636E+06, 0.101665138596523073E+06, 0.101705590047241931E+06, 0.101738943786932854E+06, 0.101767114003134644E+06, - 0.101789192730629773E+06, 0.101799147989736230E+06, 0.101794735430608300E+06, 0.101777146397531964E+06, 0.101750372193384130E+06, - 0.101723141667504169E+06, 0.101702833712477848E+06, 0.101682678205011733E+06, 0.101660302359832262E+06, 0.101630633216063026E+06, - 0.101590584748240784E+06, 0.101537939783765964E+06, 0.101477184750419154E+06, 0.101412613988421668E+06, 0.101346432956553763E+06, - 0.101280354991399392E+06, 0.101215950742003886E+06, 0.101152407700542390E+06, 0.101091630971862964E+06, 0.101034381306262483E+06, - 0.100980581565512359E+06, 0.100932607474756849E+06, 0.100894526231033058E+06, 0.100863524006721316E+06, 0.100837940986693153E+06, - 0.100815616712752075E+06, 0.100783831314269482E+06, 0.100747340055464098E+06, 0.100708359519305974E+06, 0.100669700349442544E+06, - 0.100634134123292621E+06, 0.100602055798299742E+06, 0.100591037034284673E+06, 0.100590664657868474E+06, 0.100599127748830913E+06, - 0.100614596189110918E+06, 0.100634150489947802E+06, 0.100646345748706677E+06, 0.100655865724535965E+06, 0.100661116257080008E+06, - 0.100661028163947834E+06, 0.100655523835145024E+06, 0.100646490601253885E+06, 0.100636711851892294E+06, 0.100621894936014534E+06, - 0.100602810704563395E+06, 0.100576368488764041E+06, 0.100548286166395032E+06, 0.100522977180969814E+06, 0.101228903510937074E+06, - 0.101265781795862422E+06, 0.101303509185958625E+06, 0.101342284425688282E+06, 0.101381796177970391E+06, 0.101421170386188518E+06, - 0.101459636817675681E+06, 0.101496562449942183E+06, 0.101531479594885182E+06, 0.101564960000747014E+06, 0.101594803080993937E+06, - 0.101621355790812595E+06, 0.101644027594565501E+06, 0.101662677874236993E+06, 0.101677441926593165E+06, 0.101688651352830973E+06, - 0.101696785059940390E+06, 0.101702406683447451E+06, 0.101704728868073435E+06, 0.101705248359237783E+06, 0.101710033061244059E+06, - 0.101715986265950589E+06, 0.101723653592966657E+06, 0.101733480291010681E+06, 0.101745772459652580E+06, 0.101760677660607515E+06, - 0.101780220410703594E+06, 0.101803075598452182E+06, 0.101826488604444239E+06, 0.101849820362239523E+06, 0.101873892351949500E+06, - 0.101898378960095564E+06, 0.101923130766489805E+06, 0.101948518897807691E+06, 0.101975696258303404E+06, 0.102004061929304342E+06, - 0.102033460145040677E+06, 0.102061651327409054E+06, 0.102089414327740989E+06, 0.102117077133701037E+06, 0.102147883501053424E+06, - 0.102180718015203005E+06, 0.102212493723892243E+06, 0.102242559046992334E+06, 0.102271049350391899E+06, 0.102300915058795246E+06, - 0.102331227250506359E+06, 0.102361003675242988E+06, 0.102387797529886448E+06, 0.102410738749007287E+06, 0.102429543001075872E+06, - 0.102444601309541205E+06, 0.102455934113666241E+06, 0.102463826248762096E+06, 0.102468461440316110E+06, 0.102469870975073049E+06, - 0.102468446450288320E+06, 0.102464798290121791E+06, 0.102458449322550092E+06, 0.102451735051873286E+06, 0.102444849067868476E+06, - 0.102436636367539046E+06, 0.102428988993985171E+06, 0.102425331914020266E+06, 0.102421620005855337E+06, 0.102419560924305013E+06, - 0.102417115927208128E+06, 0.102411283378863518E+06, 0.102401124644854805E+06, 0.102388294546935547E+06, 0.102372130138911380E+06, - 0.102352872703988251E+06, 0.102330900792506814E+06, 0.102305906692453034E+06, 0.102278836660343848E+06, 0.102251891886031619E+06, - 0.102223352000414103E+06, 0.102193067106830058E+06, 0.102161078903831076E+06, 0.102125912821954276E+06, 0.102089510678556544E+06, - 0.102052507421496150E+06, 0.102015228902546209E+06, 0.101978931284532373E+06, 0.101944546111379605E+06, 0.101912474602996255E+06, - 0.101881505541306557E+06, 0.101847220983536259E+06, 0.101796545763435774E+06, 0.101731194445780915E+06, 0.101655521374345393E+06, - 0.101570254785904996E+06, 0.101481522317187802E+06, 0.101401331116195521E+06, 0.101332141668882890E+06, 0.101273993470810659E+06, - 0.101228638656778901E+06, 0.101190604276845741E+06, 0.101158196197344718E+06, 0.101133936056759660E+06, 0.101117981664703751E+06, - 0.101116933850947476E+06, 0.101131399795691948E+06, 0.101160604644423380E+06, 0.101201518443580746E+06, 0.101248903707713456E+06, - 0.101300592974865489E+06, 0.101357214090897702E+06, 0.101418441744321666E+06, 0.101485557443350626E+06, 0.101555445746166064E+06, - 0.101621303501475879E+06, 0.101679228518906544E+06, 0.101728241686716501E+06, 0.101766854072509333E+06, 0.101798436487011495E+06, - 0.101826906634104991E+06, 0.101847291990324695E+06, 0.101856878275200172E+06, 0.101852227620230362E+06, 0.101834698267214306E+06, - 0.101809239675292964E+06, 0.101781969547875371E+06, 0.101755152512939356E+06, 0.101732931589822008E+06, 0.101712653074247995E+06, - 0.101684830999865546E+06, 0.101647239704296619E+06, 0.101599826041378212E+06, 0.101544653396053778E+06, 0.101483464700333992E+06, - 0.101420696082338764E+06, 0.101361355157000173E+06, 0.101303077019503457E+06, 0.101242949922489031E+06, 0.101180470229611776E+06, - 0.101117365765681796E+06, 0.101054059738264114E+06, 0.100995066688862426E+06, 0.100946512981860345E+06, 0.100908291761953325E+06, - 0.100873905402216697E+06, 0.100835045455127693E+06, 0.100798873170272855E+06, 0.100762695696108858E+06, 0.100726025871425081E+06, - 0.100692734909454986E+06, 0.100668902864702948E+06, 0.100663213502720391E+06, 0.100664621390201341E+06, 0.100671374502519597E+06, - 0.100685680453359950E+06, 0.100705798123986984E+06, 0.100728995575579524E+06, 0.100751658112675097E+06, 0.100762519462763623E+06, - 0.100767027529124854E+06, 0.100764553224004907E+06, 0.100755187738630775E+06, 0.100739605979863540E+06, 0.100720551089520799E+06, - 0.100698313533178705E+06, 0.100666865056198847E+06, 0.100634031483894869E+06, 0.100601785153826728E+06, 0.100571987820731039E+06, - 0.101206374045435979E+06, 0.101245886159229500E+06, 0.101288633787391896E+06, 0.101331822184275137E+06, 0.101374720391458119E+06, - 0.101417383823794662E+06, 0.101458981013573735E+06, 0.101498818874093005E+06, 0.101538685205643225E+06, 0.101575422468180957E+06, - 0.101607594064004836E+06, 0.101634787525358639E+06, 0.101658391829702683E+06, 0.101677992927276675E+06, 0.101693216382147584E+06, - 0.101704372381742840E+06, 0.101711917535928253E+06, 0.101714961207000641E+06, 0.101714465004361307E+06, 0.101712311040969114E+06, - 0.101709673671424040E+06, 0.101711218999391320E+06, 0.101715783535561670E+06, 0.101722657082666818E+06, 0.101732238893442816E+06, - 0.101747062236834958E+06, 0.101766365174287086E+06, 0.101787109475394507E+06, 0.101808925705709073E+06, 0.101831553485340701E+06, - 0.101854101136956699E+06, 0.101876977318564983E+06, 0.101900071328279475E+06, 0.101924414875452247E+06, 0.101951462468272264E+06, - 0.101980975232741199E+06, 0.102012836826491402E+06, 0.102047258491401968E+06, 0.102083474297558190E+06, 0.102117469380506620E+06, - 0.102154658530511195E+06, 0.102192659983700083E+06, 0.102229894335694480E+06, 0.102265384438205918E+06, 0.102298947455958070E+06, - 0.102332733340180333E+06, 0.102366161911789881E+06, 0.102400223366988168E+06, 0.102430989231899657E+06, 0.102457385343324306E+06, - 0.102478953671150099E+06, 0.102497140263958892E+06, 0.102511039792962809E+06, 0.102520299291871444E+06, 0.102526846630820248E+06, - 0.102529945588383314E+06, 0.102529752833756676E+06, 0.102527108906249603E+06, 0.102521410242623388E+06, 0.102513405849115865E+06, - 0.102504764193898140E+06, 0.102498120743343170E+06, 0.102494756241843366E+06, 0.102491412904970945E+06, 0.102487349910826408E+06, - 0.102482003045019752E+06, 0.102474975478072651E+06, 0.102465362858837878E+06, 0.102453624922867719E+06, 0.102439388282147716E+06, - 0.102422313370157048E+06, 0.102401857750208626E+06, 0.102377162061003954E+06, 0.102349188460773526E+06, 0.102318424237125233E+06, - 0.102285363297180986E+06, 0.102252385208010586E+06, 0.102218029776633513E+06, 0.102181810380545387E+06, 0.102143591228429039E+06, - 0.102102341867038209E+06, 0.102057770995654748E+06, 0.102012593759546347E+06, 0.101970748503609808E+06, 0.101933725108693834E+06, - 0.101900789684666524E+06, 0.101867979870800904E+06, 0.101834235978935918E+06, 0.101794954568116285E+06, 0.101739484665823096E+06, - 0.101671789500483821E+06, 0.101593418617286006E+06, 0.101506698290483502E+06, 0.101422237896336897E+06, 0.101350833220772416E+06, - 0.101290575286891341E+06, 0.101248402171152557E+06, 0.101218529092999917E+06, 0.101197447450399108E+06, 0.101187612570890138E+06, - 0.101185871864261528E+06, 0.101196499134288402E+06, 0.101218353571942265E+06, 0.101249194623964548E+06, 0.101286372345386742E+06, - 0.101326464875508391E+06, 0.101369986766969960E+06, 0.101419749853660280E+06, 0.101476722498559480E+06, 0.101542829739890207E+06, - 0.101612522924097197E+06, 0.101678721249810798E+06, 0.101737575823144638E+06, 0.101785395492746917E+06, 0.101823368561408701E+06, - 0.101856014056084430E+06, 0.101884313206989173E+06, 0.101903695929922687E+06, 0.101912969317636380E+06, 0.101908832298462992E+06, - 0.101892237038585794E+06, 0.101866203497664581E+06, 0.101837081196005645E+06, 0.101809606048398258E+06, 0.101786840568731568E+06, - 0.101762564033379982E+06, 0.101734680154915579E+06, 0.101696592635540685E+06, 0.101650662453849189E+06, 0.101599162120752633E+06, - 0.101544343001196743E+06, 0.101488647544765059E+06, 0.101433089123172278E+06, 0.101377125096785036E+06, 0.101320042947392227E+06, - 0.101256674805424394E+06, 0.101187987297748215E+06, 0.101120641997896339E+06, 0.101056247927954246E+06, 0.100996331972370142E+06, - 0.100943232428022544E+06, 0.100895353842840079E+06, 0.100852555312220196E+06, 0.100815337064243067E+06, 0.100783799781542155E+06, - 0.100753868748835012E+06, 0.100736637044447663E+06, 0.100730650096307727E+06, 0.100733232093861763E+06, 0.100743913291446443E+06, - 0.100758835470579754E+06, 0.100778259316407013E+06, 0.100802567061591370E+06, 0.100828283762383522E+06, 0.100855135515023372E+06, - 0.100877691529341333E+06, 0.100882602938691591E+06, 0.100878787688210650E+06, 0.100866582130667157E+06, 0.100846949291204379E+06, - 0.100815418882725819E+06, 0.100780247866813195E+06, 0.100745087245795497E+06, 0.100709396490561645E+06, 0.100675020472311327E+06, - 0.100643622948665085E+06, 0.101179250397845899E+06, 0.101221149498052953E+06, 0.101266816356343159E+06, 0.101315335097978430E+06, - 0.101363838550262313E+06, 0.101410108301517408E+06, 0.101455090720967710E+06, 0.101501448789654576E+06, 0.101545139345543692E+06, - 0.101584741389399278E+06, 0.101619452976458153E+06, 0.101648772604086349E+06, 0.101672509578882498E+06, 0.101691865395895249E+06, - 0.101707555892752804E+06, 0.101718643945821881E+06, 0.101724156365132570E+06, 0.101724941937858879E+06, 0.101722568702130273E+06, - 0.101718069834871334E+06, 0.101712578971246767E+06, 0.101707223787895346E+06, 0.101704839789861668E+06, 0.101708104689497137E+06, - 0.101716865742578157E+06, 0.101731053443752840E+06, 0.101746952161869922E+06, 0.101764257279303914E+06, 0.101782706182959490E+06, - 0.101802123848941148E+06, 0.101822482313672357E+06, 0.101842936616784311E+06, 0.101860934973268697E+06, 0.101882854305976114E+06, - 0.101908552344231415E+06, 0.101937813400383588E+06, 0.101970499454458186E+06, 0.102006741063404974E+06, 0.102048298491096837E+06, - 0.102094559383243701E+06, 0.102138864116678858E+06, 0.102182980858368159E+06, 0.102226517702417070E+06, 0.102268076174545422E+06, - 0.102309052474061144E+06, 0.102352381321886001E+06, 0.102391102131696549E+06, 0.102425199358256839E+06, 0.102458541492672259E+06, - 0.102488862618142084E+06, 0.102514290917361213E+06, 0.102535791702452596E+06, 0.102552503476764061E+06, 0.102564543232835902E+06, - 0.102572720164328770E+06, 0.102578198051091356E+06, 0.102580323990135614E+06, 0.102579265394634727E+06, 0.102574962647335808E+06, - 0.102568059504060235E+06, 0.102560319977754334E+06, 0.102556118504191676E+06, 0.102553057067685237E+06, 0.102550069919232395E+06, - 0.102545676460258372E+06, 0.102538438321503912E+06, 0.102526558414006213E+06, 0.102512331043456594E+06, 0.102498934035030790E+06, - 0.102483367837719314E+06, 0.102465528571415576E+06, 0.102444019300123240E+06, 0.102417539855634386E+06, 0.102386941153851396E+06, - 0.102352803854769852E+06, 0.102315908735629360E+06, 0.102276253891919623E+06, 0.102235698643740441E+06, 0.102193754813942534E+06, - 0.102149197092732255E+06, 0.102100466547888893E+06, 0.102048387340808171E+06, 0.101995636407850165E+06, 0.101944784700201388E+06, - 0.101899202783926419E+06, 0.101857839910913841E+06, 0.101822276933475470E+06, 0.101792037001853430E+06, 0.101761456733915693E+06, - 0.101723124817417673E+06, 0.101667540093368385E+06, 0.101602052196997916E+06, 0.101524286713149719E+06, 0.101443448254745468E+06, - 0.101372151184877337E+06, 0.101312547429677303E+06, 0.101270741733953284E+06, 0.101245862300696550E+06, 0.101237403284129323E+06, - 0.101240955267019526E+06, 0.101253727619962054E+06, 0.101276647528408124E+06, 0.101307289777398546E+06, 0.101342096503173772E+06, - 0.101377440256415284E+06, 0.101410859947128090E+06, 0.101445291144028568E+06, 0.101485896954639960E+06, 0.101536034363702740E+06, - 0.101598275532425832E+06, 0.101665271864468625E+06, 0.101730455163620383E+06, 0.101789053839460757E+06, 0.101836451975671342E+06, - 0.101875114449402914E+06, 0.101909841821580325E+06, 0.101937388731349492E+06, 0.101957316621074744E+06, 0.101965726747313485E+06, - 0.101960066223235612E+06, 0.101941333444338321E+06, 0.101914153314528972E+06, 0.101884034639169928E+06, 0.101858023754631969E+06, - 0.101832589987368483E+06, 0.101805510097226972E+06, 0.101772567651719524E+06, 0.101733410070028302E+06, 0.101687946616198518E+06, - 0.101638303259297347E+06, 0.101588584508090702E+06, 0.101540424262528119E+06, 0.101488738611497931E+06, 0.101435260593399056E+06, - 0.101375735107437940E+06, 0.101312542555417007E+06, 0.101246134029601395E+06, 0.101177277643560679E+06, 0.101109587858444022E+06, - 0.101039831433180021E+06, 0.100972865937903305E+06, 0.100917142934489922E+06, 0.100872742649287640E+06, 0.100836992191858386E+06, - 0.100811317083979215E+06, 0.100803167641532855E+06, 0.100798970012812904E+06, 0.100800172827859802E+06, 0.100809159254650964E+06, - 0.100825090132632613E+06, 0.100846063732092007E+06, 0.100868925096583727E+06, 0.100895209549142979E+06, 0.100924583482422255E+06, - 0.100954767114643226E+06, 0.100982762726865476E+06, 0.101000126944911273E+06, 0.100996312696391295E+06, 0.100980278059754797E+06, - 0.100948675007578538E+06, 0.100912131109198177E+06, 0.100873893055713954E+06, 0.100836895686632663E+06, 0.100800840190763440E+06, - 0.100766824999287084E+06, 0.100736390306808840E+06, 0.101147547908848283E+06, 0.101191548413107710E+06, 0.101239813004555443E+06, - 0.101291456639815791E+06, 0.101345618815623297E+06, 0.101399848017628567E+06, 0.101452120246013321E+06, 0.101502531147260263E+06, - 0.101549713655955595E+06, 0.101592520742368200E+06, 0.101630069264663078E+06, 0.101661769202013544E+06, 0.101687336031179409E+06, - 0.101706783718499020E+06, 0.101720752729463624E+06, 0.101730352171304155E+06, 0.101734303682047248E+06, 0.101733803712048772E+06, - 0.101729673880940856E+06, 0.101722933683541196E+06, 0.101714707079396278E+06, 0.101706119415995257E+06, 0.101698183703231305E+06, - 0.101694443401773460E+06, 0.101701997679200067E+06, 0.101711622212974413E+06, 0.101722702839184887E+06, 0.101735051927557608E+06, - 0.101748506288605597E+06, 0.101762966981866150E+06, 0.101778437616403622E+06, 0.101789127619601830E+06, 0.101803967912821841E+06, - 0.101822592115495441E+06, 0.101845777685417066E+06, 0.101873478314957349E+06, 0.101905482242767845E+06, 0.101942888324591171E+06, - 0.101988404530944768E+06, 0.102038702733784274E+06, 0.102092474242398283E+06, 0.102148032734040069E+06, 0.102199248899464394E+06, - 0.102248915596860126E+06, 0.102302591874664358E+06, 0.102352656965704402E+06, 0.102397731646050539E+06, 0.102437448450124619E+06, - 0.102472449474120032E+06, 0.102503421423363616E+06, 0.102532064367287210E+06, 0.102556777288245488E+06, 0.102576671821794167E+06, - 0.102591572855277176E+06, 0.102602228863800672E+06, 0.102612279279788083E+06, 0.102616851593614643E+06, 0.102617893333235930E+06, - 0.102615765691172550E+06, 0.102610441888248854E+06, 0.102607301386114821E+06, 0.102603993592939412E+06, 0.102600663908017392E+06, - 0.102597488187445881E+06, 0.102592493791941044E+06, 0.102582466666192224E+06, 0.102569826273933562E+06, 0.102554713868615829E+06, - 0.102537648672080177E+06, 0.102521039168448478E+06, 0.102503173475915130E+06, 0.102480635537613605E+06, 0.102452652573625455E+06, - 0.102419350874903001E+06, 0.102382346399272821E+06, 0.102341612134553201E+06, 0.102297029075732309E+06, 0.102248948564059086E+06, - 0.102198720030139870E+06, 0.102145758870677353E+06, 0.102088950595530157E+06, 0.102029051584965782E+06, 0.101967199226732264E+06, - 0.101903210271600808E+06, 0.101842958311824055E+06, 0.101794271532633502E+06, 0.101756533651972539E+06, 0.101727257623922851E+06, - 0.101703822910323244E+06, 0.101679786232533574E+06, 0.101644516695705548E+06, 0.101595106427152612E+06, 0.101536504683202511E+06, - 0.101467865301457467E+06, 0.101405006154835806E+06, 0.101354849767181862E+06, 0.101317686662273423E+06, 0.101296595665381508E+06, - 0.101290414819946876E+06, 0.101298257504082198E+06, 0.101319018351106934E+06, 0.101351193190044753E+06, 0.101389882715506814E+06, - 0.101429774758297252E+06, 0.101465327153650665E+06, 0.101493697248690820E+06, 0.101519475777882981E+06, 0.101549278536429629E+06, - 0.101589674862889879E+06, 0.101644437539602266E+06, 0.101707639653092512E+06, 0.101773446880721283E+06, 0.101832627929812195E+06, - 0.101881326017934320E+06, 0.101922991773475122E+06, 0.101958375717528819E+06, 0.101986274837340650E+06, 0.102005491030983016E+06, - 0.102011686815100737E+06, 0.102002038930530602E+06, 0.101979844500374034E+06, 0.101949713592872038E+06, 0.101919794688969385E+06, - 0.101890097820657014E+06, 0.101860915631872151E+06, 0.101828511020572609E+06, 0.101792400720458652E+06, 0.101751700978283421E+06, - 0.101705424659848417E+06, 0.101656344874022790E+06, 0.101609238060088639E+06, 0.101564980684227325E+06, 0.101522208207649019E+06, - 0.101469412985671690E+06, 0.101412347630207965E+06, 0.101351832558558221E+06, 0.101288709894130297E+06, 0.101222062151738224E+06, - 0.101149874038784459E+06, 0.101078002130177440E+06, 0.101009088984990114E+06, 0.100945974661293003E+06, 0.100898762938745946E+06, - 0.100870562536964586E+06, 0.100856855516523385E+06, 0.100855450035140704E+06, 0.100864081929396765E+06, 0.100872263570757554E+06, - 0.100886283473303847E+06, 0.100905686340654982E+06, 0.100926632293872623E+06, 0.100951268783756459E+06, 0.100980364613721176E+06, - 0.101012594678026580E+06, 0.101045448177269616E+06, 0.101076054483113505E+06, 0.101101140326098612E+06, 0.101100763828566429E+06, - 0.101077946327603815E+06, 0.101047158711316821E+06, 0.101011715736067359E+06, 0.100974871631289832E+06, 0.100939265943285602E+06, - 0.100905758734950185E+06, 0.100874978764764266E+06, 0.100855175471442562E+06, 0.101111520792912168E+06, 0.101157325849907211E+06, - 0.101207855335016298E+06, 0.101262234561872421E+06, 0.101320453238625094E+06, 0.101383611932041124E+06, 0.101446021580746979E+06, - 0.101500639373333164E+06, 0.101551782605323038E+06, 0.101598222486408573E+06, 0.101638989420395039E+06, 0.101673403579343765E+06, - 0.101701089807805052E+06, 0.101721974472240297E+06, 0.101735419880771398E+06, 0.101741369945130849E+06, 0.101743897808629612E+06, - 0.101742267006478505E+06, 0.101736494037811004E+06, 0.101727612235604785E+06, 0.101716766590943007E+06, 0.101705114503249541E+06, - 0.101695691907190470E+06, 0.101691082917827283E+06, 0.101688492565094857E+06, 0.101689693834759819E+06, 0.101694319117847946E+06, - 0.101699984888099891E+06, 0.101706624023230441E+06, 0.101714209290037295E+06, 0.101714886189053461E+06, 0.101718477607258348E+06, - 0.101727166805334680E+06, 0.101741942812281210E+06, 0.101762884060961267E+06, 0.101787922016469936E+06, 0.101818124304470504E+06, - 0.101856144652932824E+06, 0.101902274632393572E+06, 0.101955219215111909E+06, 0.102013545239481187E+06, 0.102075989637765349E+06, - 0.102141825734524129E+06, 0.102209412008951840E+06, 0.102271101455590702E+06, 0.102328905451065119E+06, 0.102380997966748007E+06, - 0.102426592472327698E+06, 0.102466679017069036E+06, 0.102502492265674373E+06, 0.102531828163015132E+06, 0.102557693337524877E+06, - 0.102581562159738140E+06, 0.102599817594232780E+06, 0.102617360456048831E+06, 0.102630533755776734E+06, 0.102638413398652745E+06, - 0.102641585059017671E+06, 0.102641643207641609E+06, 0.102639909103140890E+06, 0.102637870663539637E+06, 0.102635390209430159E+06, - 0.102632452553768846E+06, 0.102629055188468876E+06, 0.102622883797323870E+06, 0.102613396703866238E+06, 0.102601167982128070E+06, - 0.102586228500797864E+06, 0.102570641502416736E+06, 0.102554342163336842E+06, 0.102534088219572732E+06, 0.102511041429401579E+06, - 0.102481963706129696E+06, 0.102447121630716501E+06, 0.102407091340582192E+06, 0.102362401740888643E+06, 0.102313427305605088E+06, - 0.102259555941640690E+06, 0.102201038299707958E+06, 0.102138783904224241E+06, 0.102073015852343407E+06, 0.102003417942998523E+06, - 0.101925865118624715E+06, 0.101850155355117560E+06, 0.101780650482480312E+06, 0.101721528392427077E+06, 0.101678592950691062E+06, - 0.101649600593305571E+06, 0.101630406458717945E+06, 0.101617445713840047E+06, 0.101603733747246617E+06, 0.101577149951594518E+06, - 0.101547743780961551E+06, 0.101507738128132827E+06, 0.101462001737325336E+06, 0.101417253659172507E+06, 0.101379673252643261E+06, - 0.101354722198341828E+06, 0.101344083982961922E+06, 0.101350090319994677E+06, 0.101372932240478462E+06, 0.101408874721438551E+06, - 0.101453217513073498E+06, 0.101497802352511892E+06, 0.101536224569247846E+06, 0.101563019361021943E+06, 0.101582620293203203E+06, - 0.101603379870639314E+06, 0.101634664417891821E+06, 0.101681132562699248E+06, 0.101739502773358443E+06, 0.101803164120008223E+06, - 0.101863683127456912E+06, 0.101917393438978630E+06, 0.101963558171047160E+06, 0.101999276960053059E+06, 0.102027732037148526E+06, - 0.102044731025719229E+06, 0.102045431775095058E+06, 0.102030705033808161E+06, 0.102003666856825570E+06, 0.101970343646836016E+06, - 0.101935360181740762E+06, 0.101900669036632447E+06, 0.101865688643875081E+06, 0.101829409780582253E+06, 0.101790176042387873E+06, - 0.101745151599830831E+06, 0.101696472660873420E+06, 0.101648060959889524E+06, 0.101603410369994090E+06, 0.101561835852602439E+06, - 0.101521855998799132E+06, 0.101482037163334768E+06, 0.101431340410975914E+06, 0.101375699870779092E+06, 0.101314779976223654E+06, - 0.101251712502201844E+06, 0.101185784883436660E+06, 0.101116517257030340E+06, 0.101049883113580014E+06, 0.100989563385332454E+06, - 0.100941765093850961E+06, 0.100916306862933794E+06, 0.100906980056579865E+06, 0.100910197269982164E+06, 0.100922958161069488E+06, - 0.100941314458770998E+06, 0.100957519326146881E+06, 0.100976831072572779E+06, 0.100999605735160003E+06, 0.101025582535843947E+06, - 0.101054164787686663E+06, 0.101087890451072817E+06, 0.101122283479534453E+06, 0.101149350938674921E+06, 0.101166873408313593E+06, - 0.101177821152178367E+06, 0.101167655432610394E+06, 0.101141220410113790E+06, 0.101110321588459745E+06, 0.101078361586283063E+06, - 0.101047967121170557E+06, 0.101023734539325480E+06, 0.101008383694813747E+06, 0.100996781521485842E+06, 0.101071681166949435E+06, - 0.101119012263039112E+06, 0.101171496350808069E+06, 0.101230050130927513E+06, 0.101294972556584413E+06, 0.101361718999132645E+06, - 0.101428515451916319E+06, 0.101493595145979649E+06, 0.101550612440880213E+06, 0.101601210858501552E+06, 0.101645666556374214E+06, - 0.101683206121268653E+06, 0.101713363718937704E+06, 0.101736031118329251E+06, 0.101750515944612693E+06, 0.101757053628392736E+06, - 0.101756382807271759E+06, 0.101751079781741602E+06, 0.101743715819909994E+06, 0.101732729519215369E+06, 0.101719316686245147E+06, - 0.101706213959027606E+06, 0.101695984176562313E+06, 0.101686190677071994E+06, 0.101677301261342131E+06, 0.101669511529871947E+06, - 0.101662644903393695E+06, 0.101659294762388396E+06, 0.101657066043437371E+06, 0.101647001805639928E+06, 0.101637372304767356E+06, - 0.101632049251178221E+06, 0.101632583495971994E+06, 0.101640198281276986E+06, 0.101655810259860154E+06, 0.101680028481804649E+06, - 0.101706638821039131E+06, 0.101742286180341995E+06, 0.101788109417502055E+06, 0.101842726554478882E+06, 0.101904504042995715E+06, - 0.101971839066862056E+06, 0.102051325178151485E+06, 0.102132183694597014E+06, 0.102209672996832567E+06, 0.102278148214885616E+06, - 0.102338448224708001E+06, 0.102390873033725249E+06, 0.102438626144456910E+06, 0.102479259552033545E+06, 0.102513206393975473E+06, - 0.102541824188105747E+06, 0.102567198188429233E+06, 0.102591367917437441E+06, 0.102612619776373147E+06, 0.102629292784196412E+06, - 0.102640555112501301E+06, 0.102646561280503796E+06, 0.102650072544106879E+06, 0.102650385076837265E+06, 0.102648623310889074E+06, - 0.102647398290377925E+06, 0.102645017994891765E+06, 0.102642292476577204E+06, 0.102637067835034904E+06, 0.102629000591322547E+06, - 0.102618729003435990E+06, 0.102606585296063713E+06, 0.102594489398555161E+06, 0.102579129366844747E+06, 0.102559288929741029E+06, - 0.102534463674515951E+06, 0.102503683064059122E+06, 0.102467677027648388E+06, 0.102425952698371388E+06, 0.102378489696413220E+06, - 0.102325464394964612E+06, 0.102266592853272959E+06, 0.102201770963158517E+06, 0.102131402230157837E+06, 0.102054746212255937E+06, - 0.101968929014764348E+06, 0.101881350922099227E+06, 0.101796528814235106E+06, 0.101718540575217223E+06, 0.101652169308423996E+06, - 0.101599956132104824E+06, 0.101567900805891448E+06, 0.101551935071902582E+06, 0.101547427861477787E+06, 0.101554419426909473E+06, - 0.101561600978615184E+06, 0.101559452993868224E+06, 0.101543318540946057E+06, 0.101516046490907509E+06, 0.101480708475794294E+06, - 0.101442199752635075E+06, 0.101409794893836297E+06, 0.101389114738180739E+06, 0.101385262237127725E+06, 0.101400028248419621E+06, - 0.101431176088229637E+06, 0.101474781214988048E+06, 0.101522572921117302E+06, 0.101566852249736243E+06, 0.101600450643120159E+06, - 0.101625889986676848E+06, 0.101647907487096571E+06, 0.101675661997654053E+06, 0.101714463575179296E+06, 0.101767306549608373E+06, - 0.101829328954263532E+06, 0.101890507206039634E+06, 0.101946066216170686E+06, 0.101992520848846892E+06, 0.102030925636120199E+06, - 0.102058119932572736E+06, 0.102069397218130180E+06, 0.102063960577488731E+06, 0.102043326123970241E+06, 0.102008553848255615E+06, - 0.101967472871147096E+06, 0.101926394136031289E+06, 0.101886043970172454E+06, 0.101846744426466306E+06, 0.101807275512743188E+06, - 0.101761955344090966E+06, 0.101713799217710359E+06, 0.101665117193273894E+06, 0.101617359026062331E+06, 0.101572592180247302E+06, - 0.101533981842693742E+06, 0.101499194744985522E+06, 0.101466415578573593E+06, 0.101432243614177438E+06, 0.101381882914991351E+06, - 0.101327735566313961E+06, 0.101272085428944469E+06, 0.101216117169049772E+06, 0.101156916040190554E+06, 0.101098197832462072E+06, - 0.101045083251186894E+06, 0.101001341900752319E+06, 0.100969631972021365E+06, 0.100962352822747649E+06, 0.100968513387743296E+06, - 0.100983909597780104E+06, 0.101002878032770619E+06, 0.101021997578890048E+06, 0.101041366902723443E+06, 0.101063829282811043E+06, - 0.101089246526039147E+06, 0.101117245287077734E+06, 0.101145180487582722E+06, 0.101169961535366980E+06, 0.101193870243324593E+06, - 0.101214945572481010E+06, 0.101231265902229890E+06, 0.101240946166576672E+06, 0.101226758959788902E+06, 0.101203801319224774E+06, - 0.101180554692105070E+06, 0.101163284364848339E+06, 0.101153028319845049E+06, 0.101150355172476586E+06, 0.101145580058182692E+06, - 0.101028800627874574E+06, 0.101077428684324259E+06, 0.101134167142638209E+06, 0.101197990565301836E+06, 0.101265722975280849E+06, - 0.101335709112544850E+06, 0.101406209334330430E+06, 0.101475487925550115E+06, 0.101541907493692343E+06, 0.101600856889744842E+06, - 0.101649573257523298E+06, 0.101690733358275495E+06, 0.101724376638615926E+06, 0.101749510141425519E+06, 0.101765791117457280E+06, - 0.101773452578481490E+06, 0.101773114885158633E+06, 0.101765715127990101E+06, 0.101752413867995332E+06, 0.101738692514285227E+06, - 0.101723904619569148E+06, 0.101710227930270819E+06, 0.101695310346281782E+06, 0.101679758838352922E+06, 0.101664029621015856E+06, - 0.101648327607929226E+06, 0.101632507008869143E+06, 0.101615973949263309E+06, 0.101591834033789346E+06, 0.101568495570761865E+06, - 0.101547691859404833E+06, 0.101531530936334253E+06, 0.101521827887484746E+06, 0.101520050854732108E+06, 0.101527313513054993E+06, - 0.101537145982894304E+06, 0.101560590862112396E+06, 0.101599562166824646E+06, 0.101645766826557534E+06, 0.101701752618078797E+06, - 0.101766692067664408E+06, 0.101846710834492522E+06, 0.101935405126349360E+06, 0.102024396175872622E+06, 0.102110867349092339E+06, - 0.102192853218211705E+06, 0.102269413494696259E+06, 0.102330281542130935E+06, 0.102383945506085889E+06, 0.102430199256480380E+06, - 0.102469066393364890E+06, 0.102501583023640342E+06, 0.102532817139689723E+06, 0.102561960069998779E+06, 0.102585754372647149E+06, - 0.102606277240311640E+06, 0.102621561801826407E+06, 0.102631876834385388E+06, 0.102638884194148588E+06, 0.102641934388380745E+06, - 0.102641959420915780E+06, 0.102640521654950935E+06, 0.102639686428696965E+06, 0.102638253506522131E+06, 0.102634465365988304E+06, - 0.102627915114268661E+06, 0.102619787557100746E+06, 0.102613378349844119E+06, 0.102603999870031650E+06, 0.102590631585167415E+06, - 0.102572103225089755E+06, 0.102547313635873026E+06, 0.102516398885249058E+06, 0.102479446900462790E+06, 0.102437237325361522E+06, - 0.102388874413479600E+06, 0.102333718028784861E+06, 0.102271049401030890E+06, 0.102201028861754414E+06, 0.102122663528859397E+06, - 0.102032876851637207E+06, 0.101938463410692304E+06, 0.101842660210214104E+06, 0.101749957344606999E+06, 0.101664764507437576E+06, - 0.101591439187819764E+06, 0.101533919460466379E+06, 0.101494271575071776E+06, 0.101478987993255127E+06, 0.101485263674090980E+06, - 0.101506279443945081E+06, 0.101532941096559764E+06, 0.101553896677561657E+06, 0.101563917085832989E+06, 0.101552692436306723E+06, - 0.101526766068070108E+06, 0.101490572300548680E+06, 0.101454740971174542E+06, 0.101425776324883132E+06, 0.101411062568111098E+06, - 0.101413866812942622E+06, 0.101435131474614493E+06, 0.101474051380900128E+06, 0.101522941427092213E+06, 0.101574152032058948E+06, - 0.101618098831177398E+06, 0.101654170137284003E+06, 0.101684054984246599E+06, 0.101716539075889523E+06, 0.101756604551361495E+06, - 0.101806467761705877E+06, 0.101862424100462653E+06, 0.101918408568819126E+06, 0.101971439624029648E+06, 0.102015800714595636E+06, - 0.102049385208646127E+06, 0.102069908714661666E+06, 0.102076032068515779E+06, 0.102064732659179368E+06, 0.102034093795762514E+06, - 0.101992630086863239E+06, 0.101944780810628261E+06, 0.101894141477159937E+06, 0.101849042057571452E+06, 0.101805808680122878E+06, - 0.101760916109816302E+06, 0.101714291793644923E+06, 0.101666393705850103E+06, 0.101619297696421156E+06, 0.101573598742667251E+06, - 0.101529420471224686E+06, 0.101490381423561645E+06, 0.101460489541744115E+06, 0.101432531917615197E+06, 0.101405679166028422E+06, - 0.101376758400729959E+06, 0.101333014356477448E+06, 0.101288061869102195E+06, 0.101243137897010267E+06, 0.101200014773099698E+06, - 0.101153035601030700E+06, 0.101107255027280131E+06, 0.101068975039667697E+06, 0.101040318598185462E+06, 0.101026239021205620E+06, - 0.101036150724925217E+06, 0.101050786638747362E+06, 0.101066960176317720E+06, 0.101082545023658342E+06, 0.101098187778212945E+06, - 0.101117678130985703E+06, 0.101139021760228803E+06, 0.101155522461091532E+06, 0.101175020122667425E+06, 0.101198265495543150E+06, - 0.101224832562545693E+06, 0.101250329820757150E+06, 0.101272684085133165E+06, 0.101289811161881575E+06, 0.101299701614067628E+06, - 0.101289739336630024E+06, 0.101279678002747503E+06, 0.101273826681569160E+06, 0.101274570526567550E+06, 0.101282465694758634E+06, - 0.101293902962443753E+06, 0.100983835656151976E+06, 0.101036388934372706E+06, 0.101096497142358145E+06, 0.101162397946509547E+06, - 0.101232608232112354E+06, 0.101305480982330599E+06, 0.101379283841868455E+06, 0.101452283197187178E+06, 0.101522834159475562E+06, - 0.101589476875808105E+06, 0.101650386759155634E+06, 0.101696210127681858E+06, 0.101733613430271813E+06, 0.101761832290367092E+06, - 0.101780569821559126E+06, 0.101789961901369534E+06, 0.101790532679209500E+06, 0.101783131653860866E+06, 0.101768849808582265E+06, - 0.101750041068809616E+06, 0.101731803246356489E+06, 0.101713921895166000E+06, 0.101693731889764837E+06, 0.101671835744684708E+06, - 0.101648705771986570E+06, 0.101624585079514640E+06, 0.101599389025969096E+06, 0.101563768387053642E+06, 0.101522704766848532E+06, - 0.101483489785699712E+06, 0.101448687013231232E+06, 0.101419615240213854E+06, 0.101397479525329196E+06, 0.101384028029676760E+06, - 0.101370836998047147E+06, 0.101368370266732833E+06, 0.101383065641375812E+06, 0.101416090998647196E+06, 0.101467290265164353E+06, - 0.101534882313080263E+06, 0.101609445319890510E+06, 0.101699733235880441E+06, 0.101794859855521834E+06, 0.101891101060966321E+06, - 0.101985315130313480E+06, 0.102075076914327306E+06, 0.102159945052938041E+06, 0.102235771297951098E+06, 0.102301477656430769E+06, - 0.102354930558367778E+06, 0.102399782724316072E+06, 0.102438694369211255E+06, 0.102476839111309280E+06, 0.102509751156878236E+06, - 0.102537521783681077E+06, 0.102560895469354815E+06, 0.102580819063130271E+06, 0.102594854584419911E+06, 0.102605160074562926E+06, - 0.102611577337313051E+06, 0.102614486702620023E+06, 0.102617674490494959E+06, 0.102619973525111447E+06, 0.102618324460179618E+06, - 0.102615416266488261E+06, 0.102610851205396946E+06, 0.102607299216665502E+06, 0.102602572628475973E+06, 0.102595515104050908E+06, - 0.102585432283621078E+06, 0.102569550312714797E+06, 0.102546496599273247E+06, 0.102517612581426918E+06, 0.102482362007529839E+06, - 0.102441544642516921E+06, 0.102393921375066857E+06, 0.102338338767732290E+06, 0.102273827698305467E+06, 0.102199580759235032E+06, - 0.102112717239415593E+06, 0.102017541011033652E+06, 0.101917267901995700E+06, 0.101815758981969469E+06, 0.101717854365049221E+06, - 0.101627270343615834E+06, 0.101547308817353100E+06, 0.101483765146806487E+06, 0.101441943712900873E+06, 0.101423999856314156E+06, - 0.101430776328316933E+06, 0.101457783973006139E+06, 0.101497023306538365E+06, 0.101538146597104598E+06, 0.101564980031804182E+06, - 0.101571345079031700E+06, 0.101556555710264554E+06, 0.101527227279379993E+06, 0.101491242458124063E+06, 0.101455431195561541E+06, - 0.101427222639413303E+06, 0.101413952789479707E+06, 0.101420016873493543E+06, 0.101448672726717166E+06, 0.101494479796940665E+06, - 0.101550679225448213E+06, 0.101607025893701604E+06, 0.101659304835337243E+06, 0.101705889950175377E+06, 0.101749787609497245E+06, - 0.101793551387452957E+06, 0.101844793551510127E+06, 0.101899113907290477E+06, 0.101951953582127840E+06, 0.101997167012573933E+06, - 0.102030191525044342E+06, 0.102053787395966574E+06, 0.102064887574337728E+06, 0.102060267944376203E+06, 0.102039749700523636E+06, - 0.102005081906476669E+06, 0.101957654047840246E+06, 0.101904801258523614E+06, 0.101850843726662788E+06, 0.101798946363995929E+06, - 0.101751878064897523E+06, 0.101705939443378287E+06, 0.101659768391705205E+06, 0.101615380159911743E+06, 0.101570783461705709E+06, - 0.101526947551755860E+06, 0.101484787939652975E+06, 0.101445231219594032E+06, 0.101413345817087800E+06, 0.101391047300393111E+06, - 0.101372584877227360E+06, 0.101355566853485740E+06, 0.101335220992961375E+06, 0.101303837716816255E+06, 0.101271525370591757E+06, - 0.101240298133351855E+06, 0.101211003024413338E+06, 0.101175839364889063E+06, 0.101146665774628709E+06, 0.101127801050420749E+06, - 0.101116214564623544E+06, 0.101115217567181709E+06, 0.101124992952320288E+06, 0.101134962605509543E+06, 0.101143290627816998E+06, - 0.101149282865567409E+06, 0.101151001731697805E+06, 0.101160080279956310E+06, 0.101174468885292459E+06, 0.101194158852267166E+06, - 0.101218629627263130E+06, 0.101247610934086246E+06, 0.101278139638903813E+06, 0.101306993640526780E+06, 0.101332857422239162E+06, - 0.101352835922766695E+06, 0.101364854062282961E+06, 0.101366215681609348E+06, 0.101371982657827277E+06, 0.101384204628605657E+06, - 0.101403123567578412E+06, 0.101427293507956012E+06, 0.100939699761507189E+06, 0.100993926545564740E+06, 0.101055617446205957E+06, - 0.101123302505147047E+06, 0.101195700951661318E+06, 0.101271150132425566E+06, 0.101347899405442047E+06, 0.101424189839355866E+06, - 0.101498339603613043E+06, 0.101568835452811982E+06, 0.101636401101424097E+06, 0.101695457584751377E+06, 0.101740082571501800E+06, - 0.101772165987128828E+06, 0.101794061760174460E+06, 0.101805821721959510E+06, 0.101807890769523758E+06, 0.101801052084176001E+06, - 0.101787222143099047E+06, 0.101769333451322513E+06, 0.101746134751190912E+06, 0.101718716143227328E+06, 0.101691356809011646E+06, - 0.101662464249923956E+06, 0.101631298348493656E+06, 0.101598170677190283E+06, 0.101554964683279206E+06, 0.101502331999436428E+06, - 0.101449056042133889E+06, 0.101396847279871756E+06, 0.101347056172201555E+06, 0.101300460882216124E+06, 0.101262584703042259E+06, - 0.101225780265849375E+06, 0.101194459775717551E+06, 0.101179417053502169E+06, 0.101183702376592380E+06, 0.101209076499852017E+06, - 0.101255909037280071E+06, 0.101326640203920455E+06, 0.101424239758254218E+06, 0.101531367651623077E+06, 0.101632910073723979E+06, - 0.101736158570445637E+06, 0.101837656744184424E+06, 0.101936360666710083E+06, 0.102029774479476604E+06, 0.102113550935132720E+06, - 0.102187275245992423E+06, 0.102251742085495353E+06, 0.102308744854441014E+06, 0.102354056548559587E+06, 0.102395496326958368E+06, - 0.102432085609497080E+06, 0.102463450245845990E+06, 0.102489865598489851E+06, 0.102514853262571502E+06, 0.102534082770129738E+06, - 0.102548592777604266E+06, 0.102559883810599669E+06, 0.102568794081739034E+06, 0.102579021392062437E+06, 0.102585007107402751E+06, - 0.102586497457448539E+06, 0.102584376842419224E+06, 0.102580903181294503E+06, 0.102577151681759657E+06, 0.102573827515381417E+06, - 0.102568538059750121E+06, 0.102560561364228692E+06, 0.102548460310359820E+06, 0.102530289426340809E+06, 0.102505861568008157E+06, - 0.102475498063954670E+06, 0.102440643792700503E+06, 0.102396241614374099E+06, 0.102341446243588929E+06, 0.102276649353635905E+06, - 0.102199862029058393E+06, 0.102111863644497949E+06, 0.102014314786398143E+06, 0.101910607455440113E+06, 0.101806306816961252E+06, - 0.101704399917697054E+06, 0.101609603981306922E+06, 0.101526211311625375E+06, 0.101459322473350869E+06, 0.101412795838567283E+06, - 0.101389618525710335E+06, 0.101393845554395113E+06, 0.101424357742906359E+06, 0.101472713797786171E+06, 0.101522607587252613E+06, - 0.101559998357663775E+06, 0.101576743781235520E+06, 0.101573310646049868E+06, 0.101549833954751783E+06, 0.101514456685338067E+06, - 0.101472694191529066E+06, 0.101434208011361596E+06, 0.101406914911600485E+06, 0.101398454904380153E+06, 0.101415253675564527E+06, - 0.101455136695375608E+06, 0.101512719547979839E+06, 0.101577237869349250E+06, 0.101641152022720256E+06, 0.101700396834169049E+06, - 0.101757567947174000E+06, 0.101815111575731135E+06, 0.101874014294397304E+06, 0.101930155420364375E+06, 0.101979578233631371E+06, - 0.102017827567168875E+06, 0.102041453032023797E+06, 0.102049181677356071E+06, 0.102042624564991027E+06, 0.102027458526470917E+06, - 0.101998856271186160E+06, 0.101958763385915998E+06, 0.101909825004560786E+06, 0.101855834630693556E+06, 0.101803471305377156E+06, - 0.101751840395667561E+06, 0.101701669671223848E+06, 0.101657371568089962E+06, 0.101614737302306821E+06, 0.101571808841198203E+06, - 0.101529035182503387E+06, 0.101487836291383923E+06, 0.101448187429775586E+06, 0.101410201287687276E+06, 0.101375725543945955E+06, - 0.101354091334976038E+06, 0.101343701275904139E+06, 0.101337958790157587E+06, 0.101334014323027164E+06, 0.101323058410853802E+06, - 0.101303680281432564E+06, 0.101285071086934273E+06, 0.101269046902558985E+06, 0.101256912292666253E+06, 0.101239485050412128E+06, - 0.101225094542196108E+06, 0.101214114558167246E+06, 0.101206300766355242E+06, 0.101205366180458252E+06, 0.101205376802251209E+06, - 0.101196436467417006E+06, 0.101184014918681118E+06, 0.101170971956995039E+06, 0.101173896703063627E+06, 0.101186778426832985E+06, - 0.101207425966799259E+06, 0.101235075391491133E+06, 0.101268299800364039E+06, 0.101308063493844020E+06, 0.101344788336284473E+06, - 0.101376389450400151E+06, 0.101402378295128001E+06, 0.101423140134659829E+06, 0.101438782026730638E+06, 0.101455746728587110E+06, - 0.101479368387625509E+06, 0.101509546030359561E+06, 0.101546739387306210E+06, 0.100893625093361974E+06, 0.100948455392464501E+06, - 0.101011317645263582E+06, 0.101080913011082172E+06, 0.101155302174425058E+06, 0.101233112731396410E+06, 0.101312551980581891E+06, - 0.101391810121618284E+06, 0.101469643740293817E+06, 0.101547894952444782E+06, 0.101619713078854009E+06, 0.101683304064554628E+06, - 0.101737232999154556E+06, 0.101779617777438179E+06, 0.101805388291197829E+06, 0.101820150398714570E+06, 0.101824280737551730E+06, - 0.101819067925622789E+06, 0.101806980910888844E+06, 0.101787436214918198E+06, 0.101761287349566453E+06, 0.101729423465328233E+06, - 0.101692622608612961E+06, 0.101651573936670728E+06, 0.101611590783753491E+06, 0.101562833006838278E+06, 0.101502364394767414E+06, - 0.101438724936641054E+06, 0.101373805958635741E+06, 0.101309369954324357E+06, 0.101246873385268977E+06, 0.101187267453513661E+06, - 0.101122914968029043E+06, 0.101055428119650373E+06, 0.101008249772026029E+06, 0.100979473982631680E+06, 0.100972177967227311E+06, - 0.100988832853860484E+06, 0.101031262783445170E+06, 0.101112202656024601E+06, 0.101211093846252057E+06, 0.101323155130905317E+06, - 0.101443212391304434E+06, 0.101565274984548159E+06, 0.101675064133449094E+06, 0.101783046764746541E+06, 0.101883427362778093E+06, - 0.101974048605326316E+06, 0.102054089915572622E+06, 0.102123916001737191E+06, 0.102185138506351650E+06, 0.102239277647944138E+06, - 0.102288043635062262E+06, 0.102329848961112002E+06, 0.102365570526105090E+06, 0.102398175565311816E+06, 0.102427118018994763E+06, - 0.102451215888181687E+06, 0.102470889959435211E+06, 0.102487322259304128E+06, 0.102507363262553656E+06, 0.102522539511451090E+06, - 0.102533202617323841E+06, 0.102538447738773189E+06, 0.102539366679125000E+06, 0.102537806325041631E+06, 0.102534134338413278E+06, - 0.102529616480806799E+06, 0.102525504718401397E+06, 0.102520340764588414E+06, 0.102512361946182253E+06, 0.102499685852779818E+06, - 0.102481370178637997E+06, 0.102461804458447645E+06, 0.102433116211535496E+06, 0.102394820498302695E+06, 0.102344806742965229E+06, - 0.102282869771580241E+06, 0.102208190347609911E+06, 0.102122230232017173E+06, 0.102026360478078772E+06, 0.101922376088166435E+06, - 0.101815964790077211E+06, 0.101712553837059808E+06, 0.101615912730210781E+06, 0.101531538428717235E+06, 0.101462015329520931E+06, - 0.101411095529211190E+06, 0.101383553801811446E+06, 0.101387868686696354E+06, 0.101419065450411930E+06, 0.101465197763774107E+06, - 0.101514122624701689E+06, 0.101554157750064871E+06, 0.101577510533460605E+06, 0.101578561408166206E+06, 0.101561717136454608E+06, - 0.101527942832344896E+06, 0.101485492708933743E+06, 0.101442040681691869E+06, 0.101407214730937660E+06, 0.101391475969427891E+06, - 0.101402057936737707E+06, 0.101438129992839313E+06, 0.101494675186752138E+06, 0.101561405991801003E+06, 0.101631832958464947E+06, - 0.101700764128050694E+06, 0.101765471244284083E+06, 0.101829298739144535E+06, 0.101891487805957440E+06, 0.101949649930012936E+06, - 0.101996983260441179E+06, 0.102028825999188412E+06, 0.102041977726062381E+06, 0.102037063043873364E+06, 0.102018484271153007E+06, - 0.101987519813082123E+06, 0.101953322744109144E+06, 0.101911210582393775E+06, 0.101863879485885569E+06, 0.101813868935175255E+06, - 0.101763558865488987E+06, 0.101714781421884982E+06, 0.101669784944327868E+06, 0.101626116114336663E+06, 0.101583855166139518E+06, - 0.101542346971029430E+06, 0.101502633877275308E+06, 0.101464939559164166E+06, 0.101426766367174598E+06, 0.101390458857219390E+06, - 0.101358471458522574E+06, 0.101334112694217969E+06, 0.101328407691393310E+06, 0.101330874497622441E+06, 0.101337110359200757E+06, - 0.101343736678259927E+06, 0.101343244142495707E+06, 0.101341300900043818E+06, 0.101339844172589394E+06, 0.101338724330486657E+06, - 0.101333664918719776E+06, 0.101322891249048946E+06, 0.101311826452015521E+06, 0.101299221594776434E+06, 0.101282571152943405E+06, - 0.101266530780531204E+06, 0.101246643011162712E+06, 0.101224150063358495E+06, 0.101202571591745436E+06, 0.101188612840670292E+06, - 0.101199966484071061E+06, 0.101222097051704724E+06, 0.101260233588647054E+06, 0.101304129252313578E+06, 0.101350161554908336E+06, - 0.101389652624068185E+06, 0.101424551417429771E+06, 0.101454274075586436E+06, 0.101479148917351384E+06, 0.101500388782067501E+06, - 0.101525545796928971E+06, 0.101562513561929518E+06, 0.101606090475506091E+06, 0.101653619386718725E+06, 0.100845507039246062E+06, - 0.100900566753226827E+06, 0.100964147998307293E+06, 0.101035004760987780E+06, 0.101111734714359307E+06, 0.101192123809297234E+06, - 0.101274156352906692E+06, 0.101357605885697238E+06, 0.101443671119726976E+06, 0.101525544557033369E+06, 0.101601182677887831E+06, - 0.101668789681363778E+06, 0.101726898348598319E+06, 0.101774441929614739E+06, 0.101810815552412794E+06, 0.101832035149566495E+06, - 0.101838765440822797E+06, 0.101835596101807649E+06, 0.101823419644672496E+06, 0.101802715728713345E+06, 0.101774151142095492E+06, - 0.101738457612419079E+06, 0.101696295926065533E+06, 0.101648104911459959E+06, 0.101590285842002006E+06, 0.101521209919707282E+06, - 0.101450839575846665E+06, 0.101376697188940336E+06, 0.101300744148618498E+06, 0.101224863840720194E+06, 0.101150697403150189E+06, - 0.101073301607053800E+06, 0.100983235760375988E+06, 0.100901684378507489E+06, 0.100833101972986929E+06, 0.100781373167571786E+06, - 0.100760772506158712E+06, 0.100768040826660945E+06, 0.100819963855216105E+06, 0.100898361962391151E+06, 0.100996401252706506E+06, - 0.101109805590524003E+06, 0.101233684034863138E+06, 0.101362757333502159E+06, 0.101494642793831357E+06, 0.101619684005633680E+06, - 0.101728129058541483E+06, 0.101825059560781054E+06, 0.101910320070122136E+06, 0.101982389350624275E+06, 0.102044412115271698E+06, - 0.102100145695870931E+06, 0.102151182120026933E+06, 0.102199014246850449E+06, 0.102244844616859526E+06, 0.102284509458517772E+06, - 0.102318215421307876E+06, 0.102347902960885476E+06, 0.102373421335254781E+06, 0.102401951332123936E+06, 0.102429181477717284E+06, - 0.102450532016644735E+06, 0.102465997336774948E+06, 0.102475777963121422E+06, 0.102478313815590023E+06, 0.102478110250759957E+06, - 0.102475657036715347E+06, 0.102471918321198871E+06, 0.102469939192222024E+06, 0.102467007436977176E+06, 0.102462490014742158E+06, - 0.102456722431479779E+06, 0.102450737615132341E+06, 0.102440335034919917E+06, 0.102420575011656954E+06, 0.102389812989896382E+06, - 0.102347122683242473E+06, 0.102292275082950306E+06, 0.102224438636867562E+06, 0.102143836217952965E+06, 0.102050866494433591E+06, - 0.101949943411085245E+06, 0.101845736377779569E+06, 0.101742816153747364E+06, 0.101647911129982123E+06, 0.101563216996056130E+06, - 0.101491604823778136E+06, 0.101437861556007003E+06, 0.101412287502927546E+06, 0.101412856551671823E+06, 0.101435247443498505E+06, - 0.101472966599928535E+06, 0.101514519271643498E+06, 0.101550307716508367E+06, 0.101572773831424129E+06, 0.101577300876503461E+06, - 0.101561783761491213E+06, 0.101528832671536744E+06, 0.101487621468217170E+06, 0.101449333621855301E+06, 0.101421572690143163E+06, - 0.101412849368901254E+06, 0.101428815273143569E+06, 0.101468452704213269E+06, 0.101526342258825374E+06, 0.101593070240422909E+06, - 0.101660293633886846E+06, 0.101724359259873541E+06, 0.101785772418607943E+06, 0.101847556062125179E+06, 0.101908363003809383E+06, - 0.101961701914240010E+06, 0.102002429874153109E+06, 0.102025185688122059E+06, 0.102030228237618969E+06, 0.102016392623057240E+06, - 0.101989203583738155E+06, 0.101954215596148948E+06, 0.101916658897302012E+06, 0.101876815696310456E+06, 0.101833071043157586E+06, - 0.101787308476072212E+06, 0.101741539193291770E+06, 0.101697630101558476E+06, 0.101654119182481736E+06, 0.101610960850170581E+06, - 0.101569179414185535E+06, 0.101528773468682877E+06, 0.101490142318063241E+06, 0.101454189911789217E+06, 0.101420537325155994E+06, - 0.101387196165512592E+06, 0.101359208745426033E+06, 0.101338989486127597E+06, 0.101329695327606096E+06, 0.101338867992364074E+06, - 0.101355871810450670E+06, 0.101375430345140587E+06, 0.101394209504973755E+06, 0.101402919751202760E+06, 0.101410688334029808E+06, - 0.101416920285657412E+06, 0.101420489242522977E+06, 0.101413658635510583E+06, 0.101399351916641783E+06, 0.101380364637205465E+06, - 0.101357315413079603E+06, 0.101331383086953632E+06, 0.101302463143222500E+06, 0.101271861027862804E+06, 0.101243797629858222E+06, - 0.101225102912379341E+06, 0.101230895188582799E+06, 0.101260967028080006E+06, 0.101301126414935963E+06, 0.101347821784489817E+06, - 0.101397550525323837E+06, 0.101444003541722705E+06, 0.101480976560253359E+06, 0.101512946357403111E+06, 0.101540212183607568E+06, - 0.101567953884550225E+06, 0.101594468785546575E+06, 0.101637676393726375E+06, 0.101688399693186482E+06, 0.101742930184759069E+06, - 0.100795882153115017E+06, 0.100850797431345025E+06, 0.100914750948998306E+06, 0.100986523708389999E+06, 0.101064741053657359E+06, - 0.101147944583867647E+06, 0.101236474647069423E+06, 0.101327593382317646E+06, 0.101416818345205553E+06, 0.101501970105562199E+06, - 0.101581006340059568E+06, 0.101652107178935606E+06, 0.101713753841424812E+06, 0.101764799350409041E+06, 0.101804529976921447E+06, - 0.101832451081090258E+06, 0.101847567048303332E+06, 0.101846442214230046E+06, 0.101834900151378431E+06, 0.101813744156519519E+06, - 0.101783490044669117E+06, 0.101744750228076155E+06, 0.101698109004179641E+06, 0.101641364118676778E+06, 0.101569583201128436E+06, - 0.101490816574609969E+06, 0.101406531256311253E+06, 0.101319625817001812E+06, 0.101233091961074242E+06, 0.101146347584902731E+06, - 0.101058989124578555E+06, 0.100953964690316512E+06, 0.100852899705475327E+06, 0.100760578698964149E+06, 0.100681685450575751E+06, - 0.100620492778267973E+06, 0.100580496608869158E+06, 0.100579462774121028E+06, 0.100625977088063315E+06, 0.100699672061534206E+06, - 0.100794647180633037E+06, 0.100907249288633233E+06, 0.101033016501104474E+06, 0.101170532820658074E+06, 0.101310202043631813E+06, - 0.101443951517617694E+06, 0.101566665342990047E+06, 0.101674561727816923E+06, 0.101762857707379371E+06, 0.101831050817027455E+06, - 0.101892059674295087E+06, 0.101947353598683054E+06, 0.101998507084363489E+06, 0.102047351014086569E+06, 0.102096770563981801E+06, - 0.102143221374936838E+06, 0.102186890306655871E+06, 0.102228196597294736E+06, 0.102264105567156759E+06, 0.102302445150954794E+06, - 0.102336246787148004E+06, 0.102363781472504663E+06, 0.102384291162903231E+06, 0.102397430622010026E+06, 0.102403312624922473E+06, - 0.102403832627536103E+06, 0.102402612769131738E+06, 0.102401390930183130E+06, 0.102401466546220196E+06, 0.102401874865610895E+06, - 0.102402100027913009E+06, 0.102404524182350739E+06, 0.102408945753433436E+06, 0.102408228479075435E+06, 0.102399207567720179E+06, - 0.102378727543360583E+06, 0.102346081419689654E+06, 0.102300584036716507E+06, 0.102242408524207058E+06, 0.102170172560628038E+06, - 0.102084827969266131E+06, 0.101990466580006148E+06, 0.101891305283198890E+06, 0.101794051647235989E+06, 0.101701758202335564E+06, - 0.101617607399452128E+06, 0.101545673956610553E+06, 0.101493920019806435E+06, 0.101463389589686616E+06, 0.101454707404169429E+06, - 0.101465784796775130E+06, 0.101489404864046577E+06, 0.101519701691131908E+06, 0.101547620610180951E+06, 0.101565576165996550E+06, - 0.101562026624260950E+06, 0.101539419490073633E+06, 0.101508015501831396E+06, 0.101475602714955035E+06, 0.101449209652947975E+06, - 0.101436251410560508E+06, 0.101442877175111498E+06, 0.101471341372345414E+06, 0.101518178052896081E+06, 0.101577355032239313E+06, - 0.101641314782584261E+06, 0.101703564541155953E+06, 0.101762362987943518E+06, 0.101818379277178246E+06, 0.101872714548978096E+06, - 0.101924119264252775E+06, 0.101966776195386803E+06, 0.101995500768842219E+06, 0.102007086660768691E+06, 0.102002030153628395E+06, - 0.101985038462701981E+06, 0.101956611217972633E+06, 0.101924174284332606E+06, 0.101890531345005773E+06, 0.101858684611865552E+06, - 0.101821867670641383E+06, 0.101781442886233301E+06, 0.101738169818174909E+06, 0.101693020445221118E+06, 0.101649533509090848E+06, - 0.101606065252630258E+06, 0.101563356987927487E+06, 0.101522196794781717E+06, 0.101483000104046587E+06, 0.101448492093986119E+06, - 0.101420196255985837E+06, 0.101395294590973572E+06, 0.101373162271020163E+06, 0.101359621762719311E+06, 0.101356933368830039E+06, - 0.101368947980949306E+06, 0.101392192190573551E+06, 0.101417779659041989E+06, 0.101442531040709990E+06, 0.101462476541542521E+06, - 0.101476476704636079E+06, 0.101486973325915984E+06, 0.101492708978460287E+06, 0.101491506327010982E+06, 0.101476163566485891E+06, - 0.101454012045195879E+06, 0.101426588508176050E+06, 0.101395767868210212E+06, 0.101361555520167341E+06, 0.101327388871009054E+06, - 0.101300667576237203E+06, 0.101284994174892112E+06, 0.101283350959747040E+06, 0.101309210052713708E+06, 0.101350688755181967E+06, - 0.101399465772761600E+06, 0.101451857069433157E+06, 0.101504338927611956E+06, 0.101548087731741456E+06, 0.101585173851711908E+06, - 0.101617418107249265E+06, 0.101645918462371425E+06, 0.101672368866688703E+06, 0.101702644054264791E+06, 0.101756834440843944E+06, - 0.101815020493009375E+06, 0.100745394112667054E+06, 0.100799832870823317E+06, 0.100863855953311213E+06, 0.100936251298315474E+06, - 0.101015648499264644E+06, 0.101104654341683374E+06, 0.101200128443110370E+06, 0.101296361142831636E+06, 0.101389195762127056E+06, - 0.101477275829104881E+06, 0.101559295351936235E+06, 0.101633387586243814E+06, 0.101697961740723156E+06, 0.101751772598623953E+06, - 0.101793901427349119E+06, 0.101823866729636080E+06, 0.101841583691637163E+06, 0.101847052782340179E+06, 0.101840097601263231E+06, - 0.101819364884434224E+06, 0.101788292383590582E+06, 0.101747405137351147E+06, 0.101695621343299601E+06, 0.101627436111935327E+06, - 0.101550322384277897E+06, 0.101465476616664964E+06, 0.101374194733789423E+06, 0.101277718928660746E+06, 0.101177047947947533E+06, - 0.101075621770040874E+06, 0.100963507971772880E+06, 0.100850151599165794E+06, 0.100741049456883455E+06, 0.100641201275214524E+06, - 0.100555640521779089E+06, 0.100489164793431541E+06, 0.100453712051746988E+06, 0.100455966233873114E+06, 0.100484341033634380E+06, - 0.100537490332318921E+06, 0.100620003905902136E+06, 0.100729309835612949E+06, 0.100858870023752374E+06, 0.101002649715674357E+06, - 0.101147678361066428E+06, 0.101287802540963821E+06, 0.101417496539417145E+06, 0.101532273896933402E+06, 0.101613683175199098E+06, - 0.101680723164626179E+06, 0.101737444859119263E+06, 0.101791182708811306E+06, 0.101841314940347904E+06, 0.101891796533315224E+06, - 0.101941590080887530E+06, 0.101990059211011772E+06, 0.102037355306302023E+06, 0.102083701488133767E+06, 0.102136891332944331E+06, - 0.102186806386969169E+06, 0.102230479823408270E+06, 0.102264774535572782E+06, 0.102290420308268731E+06, 0.102307702555592783E+06, - 0.102317766904831617E+06, 0.102321662148245741E+06, 0.102321498408406202E+06, 0.102320441248726507E+06, 0.102319523718290511E+06, - 0.102322447750704567E+06, 0.102327503158949214E+06, 0.102340754529364640E+06, 0.102353506384693246E+06, 0.102362358688122375E+06, - 0.102364445626707267E+06, 0.102355674159446760E+06, 0.102335040551811529E+06, 0.102301981999839074E+06, 0.102255676163442389E+06, - 0.102195798314690837E+06, 0.102122639698007450E+06, 0.102039086723219865E+06, 0.101949840960878224E+06, 0.101859938889724974E+06, - 0.101771880315094095E+06, 0.101689691466275064E+06, 0.101619553461018091E+06, 0.101564784382206009E+06, 0.101527063676792590E+06, - 0.101506865347517232E+06, 0.101503522390084341E+06, 0.101512744653858725E+06, 0.101529231308459130E+06, 0.101545937638918578E+06, - 0.101543746232650679E+06, 0.101529149091683401E+06, 0.101505036617385034E+06, 0.101477259643610611E+06, 0.101452985842091570E+06, - 0.101443019818922796E+06, 0.101450005107018835E+06, 0.101477223491849247E+06, 0.101523231314288976E+06, 0.101581629450517838E+06, - 0.101644098508760901E+06, 0.101703051093558723E+06, 0.101755080739197074E+06, 0.101801349748540073E+06, 0.101847343504094184E+06, - 0.101892088842664132E+06, 0.101930776572625342E+06, 0.101959972929516225E+06, 0.101973275480066382E+06, 0.101972016851233420E+06, - 0.101959747868463455E+06, 0.101940685784926434E+06, 0.101919336338791196E+06, 0.101894507185877927E+06, 0.101871113669696017E+06, - 0.101847657889249851E+06, 0.101820887903955852E+06, 0.101784170021964572E+06, 0.101741602583369866E+06, 0.101694747059338464E+06, - 0.101647292622998575E+06, 0.101600773270067424E+06, 0.101554052329806203E+06, 0.101509997350416306E+06, 0.101472107321641699E+06, - 0.101442071551669200E+06, 0.101420240877131699E+06, 0.101406891473258380E+06, 0.101396015807551084E+06, 0.101392164060749914E+06, - 0.101397198621684831E+06, 0.101410725481402653E+06, 0.101436168965154429E+06, 0.101464448461599168E+06, 0.101491134274545591E+06, - 0.101513817760506034E+06, 0.101531534488231206E+06, 0.101544658070101810E+06, 0.101551681755858954E+06, 0.101551216434335554E+06, - 0.101539195357785327E+06, 0.101514919199184893E+06, 0.101483010220912314E+06, 0.101448007466093870E+06, 0.101414858070553688E+06, - 0.101383218898751307E+06, 0.101359262217297684E+06, 0.101346709055278770E+06, 0.101347915439013712E+06, 0.101365119587774912E+06, - 0.101407924765819262E+06, 0.101458658683875430E+06, 0.101515675014729291E+06, 0.101573920518004117E+06, 0.101629788706552135E+06, - 0.101668434413804149E+06, 0.101700504314289530E+06, 0.101727848552964642E+06, 0.101752288382924846E+06, 0.101776226460626523E+06, - 0.101814361167678813E+06, 0.101872139466116685E+06, 0.100694816386903738E+06, 0.100748531064111390E+06, 0.100812413075077391E+06, - 0.100885240325433202E+06, 0.100971984589634725E+06, 0.101066079836500590E+06, 0.101163332246353209E+06, 0.101261519892330936E+06, - 0.101358385768427062E+06, 0.101451421123224791E+06, 0.101536054276749637E+06, 0.101612689419430462E+06, 0.101679641914763270E+06, - 0.101735174644287632E+06, 0.101778750617147758E+06, 0.101810665166487233E+06, 0.101830410029895895E+06, 0.101837810772118624E+06, - 0.101833022665443903E+06, 0.101816510393020842E+06, 0.101787854012666052E+06, 0.101744823421577603E+06, 0.101683938556403096E+06, - 0.101613036597664483E+06, 0.101532884942156001E+06, 0.101444504410039342E+06, 0.101349069651044396E+06, 0.101247781610335631E+06, - 0.101141708506075884E+06, 0.101021202144232695E+06, 0.100894721062327983E+06, 0.100769982600624178E+06, 0.100655427823023274E+06, - 0.100550770964121868E+06, 0.100461477319971644E+06, 0.100396193533225101E+06, 0.100370475160386210E+06, 0.100369362731624045E+06, - 0.100393088104568509E+06, 0.100440996230512974E+06, 0.100511511049115361E+06, 0.100603846780177613E+06, 0.100726574426591877E+06, - 0.100871208402494914E+06, 0.101018016887883554E+06, 0.101160944293748136E+06, 0.101294154343677379E+06, 0.101398406532467285E+06, - 0.101478074072107382E+06, 0.101546049324473512E+06, 0.101603974418745871E+06, 0.101653727077973454E+06, 0.101697954544609078E+06, - 0.101741376690074656E+06, 0.101789988330066262E+06, 0.101838680208411213E+06, 0.101887795803836605E+06, 0.101942598855672841E+06, - 0.102000837418646348E+06, 0.102056277940396962E+06, 0.102106768405713607E+06, 0.102150535774670396E+06, 0.102182996899048041E+06, - 0.102206750157000613E+06, 0.102221201245532342E+06, 0.102228757950974235E+06, 0.102230269318708335E+06, 0.102229908214737996E+06, - 0.102230221444085299E+06, 0.102233117647704858E+06, 0.102243955867660014E+06, 0.102261169827573845E+06, 0.102280623025385154E+06, - 0.102298710646779829E+06, 0.102311720481040116E+06, 0.102316483254606297E+06, 0.102310329085876278E+06, 0.102292054686377145E+06, - 0.102261582445110776E+06, 0.102217278999264774E+06, 0.102159938958497296E+06, 0.102090651836751262E+06, 0.102014420809727890E+06, - 0.101933158619991009E+06, 0.101851325383247095E+06, 0.101773700996606422E+06, 0.101704655579852813E+06, 0.101645470306280142E+06, - 0.101599387487163476E+06, 0.101568762309086727E+06, 0.101551200721109650E+06, 0.101544950055199806E+06, 0.101545234940555893E+06, - 0.101536151271568684E+06, 0.101520957074193793E+06, 0.101499514166347813E+06, 0.101472481430049040E+06, 0.101447481037651174E+06, - 0.101431698928562022E+06, 0.101432519665399988E+06, 0.101455989679772596E+06, 0.101503867701139068E+06, 0.101569707321795955E+06, - 0.101641541183263049E+06, 0.101707359784777087E+06, 0.101760909663319078E+06, 0.101802944092112913E+06, 0.101837429073186562E+06, - 0.101868490058515003E+06, 0.101895999089963501E+06, 0.101921719560774494E+06, 0.101935208629263929E+06, 0.101934734847469299E+06, - 0.101921789770189804E+06, 0.101905337918664198E+06, 0.101889233907825823E+06, 0.101876223533093609E+06, 0.101864529046626514E+06, - 0.101850666495852842E+06, 0.101835575764428810E+06, 0.101815211112956240E+06, 0.101783740571016519E+06, 0.101739678309719806E+06, - 0.101689041718466135E+06, 0.101634899667157661E+06, 0.101583884425190394E+06, 0.101535509776931387E+06, 0.101491128441498251E+06, - 0.101453011421685966E+06, 0.101428708334432333E+06, 0.101415133080661239E+06, 0.101411902195392497E+06, 0.101415741142001993E+06, - 0.101421700628259656E+06, 0.101434916879656914E+06, 0.101454096376128975E+06, 0.101478884585159176E+06, 0.101507961817356219E+06, - 0.101534772926637874E+06, 0.101557090728886120E+06, 0.101574113620330667E+06, 0.101587280909418565E+06, 0.101593317203057959E+06, - 0.101589233196906163E+06, 0.101574814776511601E+06, 0.101547332581751762E+06, 0.101514869284270651E+06, 0.101481998192358122E+06, - 0.101452150550811974E+06, 0.101427572510067519E+06, 0.101409813743047896E+06, 0.101403676308175665E+06, 0.101410943983370715E+06, - 0.101433007929108295E+06, 0.101473704830047689E+06, 0.101528968358056605E+06, 0.101588585098966272E+06, 0.101648865730780017E+06, - 0.101706538485246449E+06, 0.101754905727487509E+06, 0.101785976200502380E+06, 0.101811017148794053E+06, 0.101832089114193281E+06, - 0.101851827047180632E+06, 0.101871848271984418E+06, 0.101914442748880043E+06, 0.100645050821058583E+06, 0.100697921098829320E+06, - 0.100761591261288675E+06, 0.100844244243942405E+06, 0.100934005537327830E+06, 0.101028963380699686E+06, 0.101127123691640561E+06, - 0.101226361187462535E+06, 0.101324505036089657E+06, 0.101419431488063798E+06, 0.101509163971173737E+06, 0.101590063785101636E+06, - 0.101657671467199980E+06, 0.101713396702810118E+06, 0.101758515364488485E+06, 0.101792091325616479E+06, 0.101813481673006056E+06, - 0.101822350253392695E+06, 0.101818668615804971E+06, 0.101802702749391727E+06, 0.101774619027333058E+06, 0.101728109831474241E+06, - 0.101668908134665704E+06, 0.101597584119515159E+06, 0.101516856663981162E+06, 0.101427599824837293E+06, 0.101330896414631075E+06, - 0.101227935201261804E+06, 0.101113372919066416E+06, 0.100989129696766337E+06, 0.100861373889168084E+06, 0.100733678225485171E+06, - 0.100610105917794019E+06, 0.100495004451233079E+06, 0.100402578780181022E+06, 0.100353109983544055E+06, 0.100326440206043859E+06, - 0.100322735531117156E+06, 0.100342802276422299E+06, 0.100386646482634504E+06, 0.100453451962470805E+06, 0.100549574897853177E+06, - 0.100666205550992949E+06, 0.100795807241975184E+06, 0.100931381874395069E+06, 0.101067411193584325E+06, 0.101192762302618430E+06, - 0.101283622761741586E+06, 0.101362350787791220E+06, 0.101430423297678528E+06, 0.101489314399921583E+06, 0.101540641111512159E+06, - 0.101585585061290316E+06, 0.101627410996723280E+06, 0.101667724011934901E+06, 0.101707970653555123E+06, 0.101751269935565215E+06, - 0.101811021944586406E+06, 0.101870809774501089E+06, 0.101928469764575537E+06, 0.101981732364511379E+06, 0.102026310772180412E+06, - 0.102061898497918446E+06, 0.102089845634957077E+06, 0.102110105242362508E+06, 0.102121882127719451E+06, 0.102124061355970684E+06, - 0.102123733324673376E+06, 0.102124546125847337E+06, 0.102129219082775890E+06, 0.102145351303200790E+06, 0.102166260171440692E+06, - 0.102190433845960331E+06, 0.102216291023032318E+06, 0.102242152119835548E+06, 0.102260901292175229E+06, 0.102271019053290802E+06, - 0.102270194336435845E+06, 0.102258376332468251E+06, 0.102232740434276260E+06, 0.102193082447496578E+06, 0.102140339518538545E+06, - 0.102077291761659100E+06, 0.102007943796066291E+06, 0.101934901694509579E+06, 0.101863769251748963E+06, 0.101795867039438526E+06, - 0.101734634917306947E+06, 0.101683465453549536E+06, 0.101643719755611994E+06, 0.101613589850316028E+06, 0.101591266195843433E+06, - 0.101568063676064237E+06, 0.101544190597726789E+06, 0.101518173523634308E+06, 0.101489293133355706E+06, 0.101456969224960791E+06, - 0.101429471204937334E+06, 0.101413477375518429E+06, 0.101417790921687454E+06, 0.101450822395921219E+06, 0.101510233193849519E+06, - 0.101585841462266966E+06, 0.101664438788265412E+06, 0.101733920550829818E+06, 0.101788706066789920E+06, 0.101825829329588349E+06, - 0.101850405636027645E+06, 0.101871083937706790E+06, 0.101887382097668247E+06, 0.101896455049501354E+06, 0.101897289413654769E+06, - 0.101886248870001597E+06, 0.101867415759247539E+06, 0.101847995171556977E+06, 0.101838485076295401E+06, 0.101834100858943464E+06, - 0.101832686427819717E+06, 0.101828063075528247E+06, 0.101816399093795466E+06, 0.101796719243765314E+06, 0.101767216502717842E+06, - 0.101721966250064579E+06, 0.101668953652310433E+06, 0.101611959093829370E+06, 0.101556227036786251E+06, 0.101506414279391960E+06, - 0.101461971390057777E+06, 0.101425468706421860E+06, 0.101404163733341426E+06, 0.101399096476539751E+06, 0.101405522879150667E+06, - 0.101421050121819761E+06, 0.101438689378578158E+06, 0.101460180927881505E+06, 0.101485796004159551E+06, 0.101513713918150577E+06, - 0.101542550860272706E+06, 0.101568068025141562E+06, 0.101588331740948968E+06, 0.101600913455480535E+06, 0.101607630152187616E+06, - 0.101607407012941694E+06, 0.101598607139348926E+06, 0.101581645287700347E+06, 0.101557205094100689E+06, 0.101527626140599372E+06, - 0.101498954813168501E+06, 0.101474478229909684E+06, 0.101456851592814171E+06, 0.101447916547657107E+06, 0.101451532249133510E+06, - 0.101469023039587555E+06, 0.101500095660945575E+06, 0.101543265481331633E+06, 0.101599989966535504E+06, 0.101661394639400824E+06, - 0.101722843298708525E+06, 0.101781217785530855E+06, 0.101833962893083750E+06, 0.101869504665579036E+06, 0.101891006131465809E+06, - 0.101907724224272592E+06, 0.101922174311177543E+06, 0.101935867942354409E+06, 0.101950426065447158E+06, 0.100607098755765037E+06, - 0.100655240281701743E+06, 0.100726600376942501E+06, 0.100809356254825645E+06, 0.100899004634437370E+06, 0.100993829979357848E+06, - 0.101091906852125423E+06, 0.101191172811513417E+06, 0.101289507328918466E+06, 0.101384817108912728E+06, 0.101475128234200398E+06, - 0.101556622026723067E+06, 0.101627508170991190E+06, 0.101685968687809233E+06, 0.101732567539073978E+06, 0.101767665006896481E+06, - 0.101790488350008833E+06, 0.101800548295886649E+06, 0.101797644943693944E+06, 0.101781861361740375E+06, 0.101747873759633774E+06, - 0.101701859594637368E+06, 0.101644745116156497E+06, 0.101577648617696381E+06, 0.101501095515959882E+06, 0.101413668608079461E+06, - 0.101318547892610906E+06, 0.101214143017131020E+06, 0.101099338905386365E+06, 0.100978397278849705E+06, 0.100854041321450713E+06, - 0.100729710648106629E+06, 0.100609462614676057E+06, 0.100497826949930561E+06, 0.100414459388165211E+06, 0.100356511886266162E+06, - 0.100322777395156372E+06, 0.100316042351856522E+06, 0.100332097081535409E+06, 0.100371561029088683E+06, 0.100439298341075264E+06, - 0.100532568922400489E+06, 0.100643002914990837E+06, 0.100765387761929349E+06, 0.100893492581718543E+06, 0.101020399500629603E+06, - 0.101112706098134367E+06, 0.101194570041727216E+06, 0.101269273413618284E+06, 0.101335562528605122E+06, 0.101394060212437602E+06, - 0.101445483977905038E+06, 0.101491335215433006E+06, 0.101533800970901357E+06, 0.101574594133775521E+06, 0.101615314066683874E+06, - 0.101662259781339875E+06, 0.101713149881755875E+06, 0.101764653351764238E+06, 0.101815034877485959E+06, 0.101864609985221337E+06, - 0.101906670614871124E+06, 0.101942016196974146E+06, 0.101970135166829859E+06, 0.101990609169172516E+06, 0.101996950610404732E+06, - 0.101996810049367472E+06, 0.101996317886868128E+06, 0.101998445642552077E+06, 0.102008824591142213E+06, 0.102027635971959302E+06, - 0.102051641514833580E+06, 0.102080850665324571E+06, 0.102117904503131693E+06, 0.102157634194590821E+06, 0.102192504721610734E+06, - 0.102219235460459910E+06, 0.102236777347130861E+06, 0.102242902162718834E+06, 0.102236355155139478E+06, 0.102216651883876315E+06, - 0.102180426444035780E+06, 0.102133083528179093E+06, 0.102077034681391349E+06, 0.102016323324797893E+06, 0.101953628282518228E+06, - 0.101890856388452012E+06, 0.101830915333128054E+06, 0.101779447310396441E+06, 0.101734080624489550E+06, 0.101693870504157734E+06, - 0.101656684022070389E+06, 0.101619340499046710E+06, 0.101584139894536143E+06, 0.101548750508560886E+06, 0.101508927593507731E+06, - 0.101469477866382847E+06, 0.101436805815304979E+06, 0.101415993387059803E+06, 0.101423466131997789E+06, 0.101453632286171531E+06, - 0.101508029375078389E+06, 0.101580823336132147E+06, 0.101656593588021438E+06, 0.101722011470405239E+06, 0.101771508397742451E+06, - 0.101807913013677957E+06, 0.101834964343916130E+06, 0.101850402618856344E+06, 0.101859186985402383E+06, 0.101860587418252151E+06, - 0.101854518941434624E+06, 0.101838720084331697E+06, 0.101819824582356232E+06, 0.101803402458019846E+06, 0.101796893209118367E+06, - 0.101799592648883248E+06, 0.101802452116411427E+06, 0.101801265547130839E+06, 0.101788566176828695E+06, 0.101765879286445153E+06, - 0.101732953696931960E+06, 0.101687950182710265E+06, 0.101633167492824286E+06, 0.101575598313827417E+06, 0.101518917024984054E+06, - 0.101468456845219422E+06, 0.101425013728590406E+06, 0.101390361593186084E+06, 0.101368216911030337E+06, 0.101370279495935785E+06, - 0.101384930299833504E+06, 0.101409208395769369E+06, 0.101438468993645060E+06, 0.101467787546390668E+06, 0.101499453696433935E+06, - 0.101530518538351142E+06, 0.101558938309742618E+06, 0.101581645149348537E+06, 0.101598207551499479E+06, 0.101607649285544889E+06, - 0.101609802844516307E+06, 0.101605573988511765E+06, 0.101593037714059843E+06, 0.101573514674016667E+06, 0.101549196000671189E+06, - 0.101522849664976588E+06, 0.101498330261054754E+06, 0.101479889987571310E+06, 0.101470097853539497E+06, 0.101471225349216998E+06, - 0.101486588535369752E+06, 0.101515334980482352E+06, 0.101556357596876667E+06, 0.101607560846124834E+06, 0.101666443968593783E+06, - 0.101729419441298363E+06, 0.101791387702929569E+06, 0.101848011454613385E+06, 0.101897514583017852E+06, 0.101939642427183790E+06, - 0.101960271009820077E+06, 0.101975158780464568E+06, 0.101986424653725320E+06, 0.101995822513432664E+06, 0.102004992120982162E+06, - 0.100578411052675729E+06, 0.100635318784110554E+06, 0.100702588041198120E+06, 0.100778983082032035E+06, 0.100867372014784603E+06, - 0.100961003291497836E+06, 0.101057944061462069E+06, 0.101156164506401896E+06, 0.101253562485936651E+06, 0.101348041518852056E+06, - 0.101435305736620867E+06, 0.101514565773677881E+06, 0.101585969098869886E+06, 0.101648080408071197E+06, 0.101699676885091831E+06, - 0.101737081890784044E+06, 0.101761287426791518E+06, 0.101772434840921720E+06, 0.101770158786062922E+06, 0.101748537453835859E+06, - 0.101714770053279746E+06, 0.101669742860261249E+06, 0.101614251954373656E+06, 0.101549290791504973E+06, 0.101476027861641691E+06, - 0.101395781087328636E+06, 0.101309332351133024E+06, 0.101208930191804626E+06, 0.101100827344175617E+06, 0.100987036454510526E+06, - 0.100870048278151575E+06, 0.100753131768219901E+06, 0.100640279785382925E+06, 0.100543839073244162E+06, 0.100470119984832578E+06, - 0.100412920571785522E+06, 0.100374418672954038E+06, 0.100356321711452154E+06, 0.100359754832890321E+06, 0.100393037545625295E+06, - 0.100461456665693026E+06, 0.100548040695085903E+06, 0.100649774320544951E+06, 0.100762231735881898E+06, 0.100879810004682629E+06, - 0.100978944107382951E+06, 0.101056139035317683E+06, 0.101129122973660080E+06, 0.101197131809436498E+06, 0.101259400864402109E+06, - 0.101315369721067444E+06, 0.101366567376128267E+06, 0.101413068730518760E+06, 0.101456050767495792E+06, 0.101497394979706776E+06, - 0.101540388547235518E+06, 0.101589723482442452E+06, 0.101639287384227951E+06, 0.101688119127630343E+06, 0.101734881227949692E+06, - 0.101774055633342999E+06, 0.101806176343790416E+06, 0.101833758016756707E+06, 0.101855867301477920E+06, 0.101869669516056863E+06, - 0.101867423844660036E+06, 0.101862185064065459E+06, 0.101857648911106618E+06, 0.101857166947219768E+06, 0.101869453362050233E+06, - 0.101889395994667357E+06, 0.101917145273055416E+06, 0.101952665990595080E+06, 0.102005113066678605E+06, 0.102059201352783610E+06, - 0.102110590092891594E+06, 0.102155134120450733E+06, 0.102189008661845161E+06, 0.102212893719536674E+06, 0.102224794573552019E+06, - 0.102221917283866860E+06, 0.102203717818992911E+06, 0.102173729797711843E+06, 0.102134066117315539E+06, 0.102088155198460590E+06, - 0.102037322504280150E+06, 0.101983804157969324E+06, 0.101930882216981918E+06, 0.101882568835916391E+06, 0.101835848097687121E+06, - 0.101791045975844638E+06, 0.101745969221785286E+06, 0.101701401299452598E+06, 0.101658034247290489E+06, 0.101613792586539625E+06, - 0.101566658381616784E+06, 0.101523107840297394E+06, 0.101485865057037794E+06, 0.101467196461575470E+06, 0.101465231282475186E+06, - 0.101481792269703801E+06, 0.101521171184929379E+06, 0.101584362409188645E+06, 0.101654606382538637E+06, 0.101708085889500013E+06, - 0.101750884319908815E+06, 0.101781151271932016E+06, 0.101802265119226417E+06, 0.101814660749166302E+06, 0.101818059160636913E+06, - 0.101815376584443497E+06, 0.101808025978518664E+06, 0.101796093709958877E+06, 0.101783205967926551E+06, 0.101773519465245452E+06, - 0.101768347262196490E+06, 0.101772318875173907E+06, 0.101774032894583841E+06, 0.101769304008539359E+06, 0.101752736287782580E+06, - 0.101724576811767562E+06, 0.101687606667018787E+06, 0.101642832213384885E+06, 0.101588413046507747E+06, 0.101532052789407389E+06, - 0.101477089478998780E+06, 0.101426937636667906E+06, 0.101383983337104524E+06, 0.101350070067916895E+06, 0.101327894217902314E+06, - 0.101330294767154453E+06, 0.101349863124191863E+06, 0.101379498558547202E+06, 0.101415335536042723E+06, 0.101450570253408456E+06, - 0.101486617503024216E+06, 0.101521790468661828E+06, 0.101553679702050722E+06, 0.101576951634593526E+06, 0.101592599322586801E+06, - 0.101600882539355007E+06, 0.101601982296252419E+06, 0.101593711037322297E+06, 0.101576295595724252E+06, 0.101552760225610255E+06, - 0.101525860012702775E+06, 0.101500304746004782E+06, 0.101482529221745732E+06, 0.101472615361795470E+06, 0.101472486373178777E+06, - 0.101483501295817390E+06, 0.101509279618775763E+06, 0.101549321581216165E+06, 0.101600205319342873E+06, 0.101659295372980385E+06, - 0.101721590076149907E+06, 0.101783337171577281E+06, 0.101842427132610639E+06, 0.101897333754838794E+06, 0.101946395082493676E+06, - 0.101988236942542819E+06, 0.102017526821220177E+06, 0.102031828714653369E+06, 0.102041305631011754E+06, 0.102047936605813040E+06, - 0.102053545022376406E+06, 0.100561618890645521E+06, 0.100618675407796312E+06, 0.100685232428278308E+06, 0.100760148812781379E+06, - 0.100842043992347171E+06, 0.100930626779751663E+06, 0.101025380770443604E+06, 0.101121496737499227E+06, 0.101216863489791329E+06, - 0.101306591907260168E+06, 0.101390820508431876E+06, 0.101469198549494278E+06, 0.101540194252744899E+06, 0.101602382440106187E+06, - 0.101654511301229999E+06, 0.101695567045773627E+06, 0.101724835997739530E+06, 0.101738206502799672E+06, 0.101728469792924647E+06, - 0.101706705766990082E+06, 0.101673943944349550E+06, 0.101630654689779229E+06, 0.101577521269946941E+06, 0.101515423259462186E+06, - 0.101445417400194085E+06, 0.101369301689578249E+06, 0.101289207179891833E+06, 0.101202291357723705E+06, 0.101109840862024794E+06, - 0.101010060536526478E+06, 0.100903624985256116E+06, 0.100797206247763170E+06, 0.100697721229483854E+06, 0.100617879166639119E+06, - 0.100549334862444375E+06, 0.100494554672908853E+06, 0.100455829928310864E+06, 0.100435159192249281E+06, 0.100434140902790139E+06, - 0.100463827743078145E+06, 0.100516682399563157E+06, 0.100588924784875649E+06, 0.100677081454071609E+06, 0.100775641942890885E+06, - 0.100875619518922729E+06, 0.100945870321605689E+06, 0.101013133541299816E+06, 0.101077503451870405E+06, 0.101138697419382283E+06, - 0.101196245970018281E+06, 0.101247478059058092E+06, 0.101295381961911495E+06, 0.101341293286219021E+06, 0.101385520658941925E+06, - 0.101428507369388099E+06, 0.101477628384924552E+06, 0.101527439265766385E+06, 0.101575625370267109E+06, 0.101621502298168052E+06, - 0.101663832962092813E+06, 0.101694866512688139E+06, 0.101720503961646493E+06, 0.101740691340596662E+06, 0.101755087321406769E+06, - 0.101753809082437700E+06, 0.101741526291839808E+06, 0.101728608499199152E+06, 0.101718502985755840E+06, 0.101716703972249219E+06, - 0.101727329002141589E+06, 0.101746865685733879E+06, 0.101776394054624689E+06, 0.101821041668101156E+06, 0.101883903619016666E+06, - 0.101950707313021689E+06, 0.102016579439056790E+06, 0.102074857884153607E+06, 0.102122966684235507E+06, 0.102162229375958646E+06, - 0.102191070936530305E+06, 0.102205291241337400E+06, 0.102205781057829736E+06, 0.102194562190391560E+06, 0.102173148282368042E+06, - 0.102144343637741913E+06, 0.102108830373893230E+06, 0.102068178268037620E+06, 0.102026306869767315E+06, 0.101984352807968040E+06, - 0.101941207962857719E+06, 0.101897306791024865E+06, 0.101851675563811092E+06, 0.101805566459294409E+06, 0.101759497966033654E+06, - 0.101711369603787127E+06, 0.101663340792011426E+06, 0.101619227450208040E+06, 0.101582695699032221E+06, 0.101558695579259147E+06, - 0.101546029798913645E+06, 0.101545588074274448E+06, 0.101567771713567665E+06, 0.101607748589558381E+06, 0.101688531278736336E+06, - 0.101712604992569381E+06, 0.101743096832469848E+06, 0.101760620836449103E+06, 0.101769961191482769E+06, 0.101772822414354494E+06, - 0.101770897529126829E+06, 0.101765958574697099E+06, 0.101759443212774597E+06, 0.101753267088761611E+06, 0.101750523367411457E+06, - 0.101749706624054088E+06, 0.101749678109808025E+06, 0.101749285406108000E+06, 0.101744523322546709E+06, 0.101733022628531995E+06, - 0.101711787295703034E+06, 0.101679008351294804E+06, 0.101639130834085285E+06, 0.101593625025334943E+06, 0.101541393928166348E+06, - 0.101487105460277933E+06, 0.101434417444056598E+06, 0.101385551046964029E+06, 0.101342006161188154E+06, 0.101307140291916905E+06, - 0.101283659047930778E+06, 0.101280818499683781E+06, 0.101302531797972479E+06, 0.101335121595155433E+06, 0.101374651651055479E+06, - 0.101415853089015101E+06, 0.101456337388213346E+06, 0.101495434796083166E+06, 0.101530692665964845E+06, 0.101556780887815577E+06, - 0.101572252524485899E+06, 0.101580348283763422E+06, 0.101581288046389862E+06, 0.101573497525049606E+06, 0.101553231842264839E+06, - 0.101527699101148173E+06, 0.101500366015751919E+06, 0.101475147159402040E+06, 0.101462872833845016E+06, 0.101461553787802579E+06, - 0.101470899121458526E+06, 0.101491574771335596E+06, 0.101526109462851629E+06, 0.101575993595638676E+06, 0.101633539000189689E+06, - 0.101696017474012726E+06, 0.101760468358366721E+06, 0.101823741442191822E+06, 0.101882328042741588E+06, 0.101936367528451112E+06, - 0.101984427337493747E+06, 0.102025414498975340E+06, 0.102058638462272647E+06, 0.102075739484648249E+06, 0.102084208298001584E+06, - 0.102090352048999324E+06, 0.102097473483009948E+06, 0.100548208007167515E+06, 0.100605095427047316E+06, 0.100670706010579946E+06, - 0.100743978438203791E+06, 0.100823629545142438E+06, 0.100908178696427160E+06, 0.100995982580288008E+06, 0.101087314481146692E+06, - 0.101176414116338347E+06, 0.101262458356531424E+06, 0.101344547676157905E+06, 0.101421163164599711E+06, 0.101490796631980134E+06, - 0.101552014265238700E+06, 0.101603518886931997E+06, 0.101644210460807284E+06, 0.101673244462872826E+06, 0.101680735386759538E+06, - 0.101674706326058280E+06, 0.101655388783202914E+06, 0.101624670690422980E+06, 0.101584138623298597E+06, 0.101534372942937815E+06, - 0.101476149074961329E+06, 0.101410568098193849E+06, 0.101343974609530458E+06, 0.101270896963409337E+06, 0.101192137510717424E+06, - 0.101108880683603289E+06, 0.101022724309234283E+06, 0.100935715390839119E+06, 0.100850390680374665E+06, 0.100774745624155403E+06, - 0.100703597598235123E+06, 0.100641200968575649E+06, 0.100589854186508950E+06, 0.100551830710988637E+06, 0.100529267606730675E+06, - 0.100528295556730111E+06, 0.100549682448172025E+06, 0.100589658714417616E+06, 0.100646339245096955E+06, 0.100716647083594595E+06, - 0.100796330849082777E+06, 0.100862509969368170E+06, 0.100921980592583743E+06, 0.100978572070364797E+06, 0.101033342690100937E+06, - 0.101086524659137300E+06, 0.101137201268390738E+06, 0.101183872284207260E+06, 0.101229010938212319E+06, 0.101273109489612165E+06, - 0.101316619892713090E+06, 0.101361395459038307E+06, 0.101412097251747749E+06, 0.101462443230712757E+06, 0.101510984330326377E+06, - 0.101556016862365155E+06, 0.101593723038725308E+06, 0.101622224707454676E+06, 0.101642725690420295E+06, 0.101656123946685548E+06, - 0.101662476115757090E+06, 0.101646779923387396E+06, 0.101626132803217159E+06, 0.101605491482854268E+06, 0.101589147781629013E+06, - 0.101585251139149026E+06, 0.101593208937773641E+06, 0.101612184718608827E+06, 0.101643206312575028E+06, 0.101695818816071987E+06, - 0.101764928221785813E+06, 0.101840193899589591E+06, 0.101916494038259974E+06, 0.101982907500618603E+06, 0.102040970845980133E+06, - 0.102091837845918839E+06, 0.102134078254784647E+06, 0.102164394058369740E+06, 0.102183887971255608E+06, 0.102192909965391460E+06, - 0.102191628213096585E+06, 0.102180725302393228E+06, 0.102161729213580154E+06, 0.102136138522838941E+06, 0.102107142982990175E+06, - 0.102074807010027405E+06, 0.102039103318180598E+06, 0.102000767273371166E+06, 0.101960362993373739E+06, 0.101918302600709168E+06, - 0.101875356744285367E+06, 0.101830760544282428E+06, 0.101787058843222650E+06, 0.101746854946198102E+06, 0.101712081627763269E+06, - 0.101684170852595838E+06, 0.101663959106856215E+06, 0.101652494286064044E+06, 0.101669560085676902E+06, 0.101704444840698343E+06, - 0.101700571875176043E+06, 0.101721535240709272E+06, 0.101745779185469408E+06, 0.101743873285487498E+06, 0.101738112527286779E+06, - 0.101730354652939321E+06, 0.101722249363334777E+06, 0.101714810079808434E+06, 0.101708639567806546E+06, 0.101706113756708350E+06, - 0.101714036658689380E+06, 0.101722369687996295E+06, 0.101728359378835914E+06, 0.101725407412529981E+06, 0.101714092896974922E+06, - 0.101695958827062772E+06, 0.101670373525743838E+06, 0.101635678816692453E+06, 0.101595418488830386E+06, 0.101550830010831283E+06, - 0.101501001127021242E+06, 0.101448446456819016E+06, 0.101396954698346424E+06, 0.101348845039631386E+06, 0.101304062386825870E+06, - 0.101267451987425215E+06, 0.101242193004994537E+06, 0.101233636404356381E+06, 0.101254846780972948E+06, 0.101287816325990920E+06, - 0.101328479900242310E+06, 0.101372263340125617E+06, 0.101414617472293321E+06, 0.101455579958959497E+06, 0.101492853465017077E+06, - 0.101523278594798670E+06, 0.101540885808085994E+06, 0.101551450070809791E+06, 0.101555278183125236E+06, 0.101552538038431827E+06, - 0.101533468414678850E+06, 0.101508500675057512E+06, 0.101482796927905787E+06, 0.101462379842144772E+06, 0.101454892688142470E+06, - 0.101464325466535738E+06, 0.101484135316789325E+06, 0.101513829601535981E+06, 0.101552601163330517E+06, 0.101603687744035284E+06, - 0.101663791684624332E+06, 0.101727767774695865E+06, 0.101792762408730807E+06, 0.101856171640086162E+06, 0.101914393070144404E+06, - 0.101966522189743861E+06, 0.102012469486766611E+06, 0.102051444457628037E+06, 0.102084940153698932E+06, 0.102109046172999864E+06, - 0.102120432478447823E+06, 0.102128404810622902E+06, 0.102134103220031029E+06, 0.100537775584916468E+06, 0.100594064464056602E+06, - 0.100658361556240663E+06, 0.100729672253821584E+06, 0.100806792979668055E+06, 0.100888331818478662E+06, 0.100972640703881028E+06, - 0.101054356923499276E+06, 0.101136218305642746E+06, 0.101218059282136164E+06, 0.101297128938538604E+06, 0.101371075949467442E+06, - 0.101438396724319813E+06, 0.101497631946100053E+06, 0.101547424352719638E+06, 0.101586575081165560E+06, 0.101605344305898223E+06, - 0.101611802560867160E+06, 0.101607062825132700E+06, 0.101591492022024759E+06, 0.101565740711957988E+06, 0.101530433274754861E+06, - 0.101485334233030881E+06, 0.101432291750987933E+06, 0.101377329376169117E+06, 0.101317207789115375E+06, 0.101251671625233779E+06, - 0.101181417558871472E+06, 0.101107498655681804E+06, 0.101031350521440603E+06, 0.100954821051961742E+06, 0.100889588668171375E+06, - 0.100831564213864112E+06, 0.100778330447916189E+06, 0.100731315465427993E+06, 0.100686629349019524E+06, 0.100649847468544394E+06, - 0.100626941602005361E+06, 0.100623247975728824E+06, 0.100634858419738637E+06, 0.100661484011766472E+06, 0.100701891329741135E+06, - 0.100753800334865009E+06, 0.100807541818709986E+06, 0.100848659308669099E+06, 0.100892548219874385E+06, 0.100938268977634565E+06, - 0.100984815257879964E+06, 0.101031244555508310E+06, 0.101077229148432787E+06, 0.101120811543651638E+06, 0.101163080762204729E+06, - 0.101205133328227632E+06, 0.101247555470727515E+06, 0.101295212705033598E+06, 0.101345677435592734E+06, 0.101395414916676789E+06, - 0.101443142113523310E+06, 0.101487391928729412E+06, 0.101523112860496927E+06, 0.101551091220213115E+06, 0.101571202362138647E+06, - 0.101582765233024111E+06, 0.101580576420733298E+06, 0.101559006090641735E+06, 0.101532638260340871E+06, 0.101505636854472148E+06, - 0.101482925905383032E+06, 0.101478221569192814E+06, 0.101483749961331385E+06, 0.101500913638159356E+06, 0.101531272427147036E+06, - 0.101587537367870260E+06, 0.101657752923680528E+06, 0.101735341257440305E+06, 0.101815392189158199E+06, 0.101883415778570139E+06, - 0.101946670918334348E+06, 0.102005217869353437E+06, 0.102057696492837160E+06, 0.102103056512906318E+06, 0.102140317424393026E+06, - 0.102168554530401248E+06, 0.102186118819968382E+06, 0.102192209463688341E+06, 0.102189750578587409E+06, 0.102179864477714669E+06, - 0.102164622014063440E+06, 0.102144222519251431E+06, 0.102119031801210527E+06, 0.102090001778615697E+06, 0.102058500322085427E+06, - 0.102024456224525828E+06, 0.101988984142914618E+06, 0.101952414757101811E+06, 0.101915891308398845E+06, 0.101881589770049075E+06, - 0.101851270386932039E+06, 0.101822396029631869E+06, 0.101797879312661476E+06, 0.101778855518825338E+06, 0.101766764384149530E+06, - 0.101767117846749301E+06, 0.101765125533417420E+06, 0.101764893632733350E+06, 0.101755791518637372E+06, 0.101738415072208983E+06, - 0.101717693412627370E+06, 0.101697849566573597E+06, 0.101679653680022544E+06, 0.101666036116405725E+06, 0.101657802915804903E+06, - 0.101659358381537619E+06, 0.101675042132274451E+06, 0.101690591932105221E+06, 0.101702102691112683E+06, 0.101698890266004499E+06, - 0.101685170063431069E+06, 0.101664399827034271E+06, 0.101636981850683907E+06, 0.101602430202209493E+06, 0.101562887328751778E+06, - 0.101519409569218289E+06, 0.101470958313536248E+06, 0.101419317694792786E+06, 0.101368660117972962E+06, 0.101321145110236859E+06, - 0.101276071087296979E+06, 0.101238240695380387E+06, 0.101211277007847661E+06, 0.101197902530338179E+06, 0.101215581555680212E+06, - 0.101246094621904544E+06, 0.101284825497456564E+06, 0.101328072813235674E+06, 0.101370225701783012E+06, 0.101411514155655474E+06, - 0.101449747457354388E+06, 0.101482930506732373E+06, 0.101505336383574511E+06, 0.101520932260299305E+06, 0.101530875621757339E+06, - 0.101535660531138637E+06, 0.101527586118792417E+06, 0.101509422337400800E+06, 0.101491464951296075E+06, 0.101477501245060659E+06, - 0.101471117495995146E+06, 0.101486007619632292E+06, 0.101510757134502812E+06, 0.101544449952577212E+06, 0.101586055913800505E+06, - 0.101635695535260849E+06, 0.101695729268481853E+06, 0.101758721424995805E+06, 0.101822050355179599E+06, 0.101883639102236455E+06, - 0.101943513401448537E+06, 0.101994845858460889E+06, 0.102039591261445501E+06, 0.102076829661285185E+06, 0.102105964877399136E+06, - 0.102126794141653125E+06, 0.102139212624906431E+06, 0.102146437567661822E+06, 0.102150500772487969E+06, 0.100529766660700814E+06, - 0.100584936771645967E+06, 0.100647449978120101E+06, 0.100716367627817162E+06, 0.100790551176116554E+06, 0.100867761991881081E+06, - 0.100944392016551021E+06, 0.101022283363768598E+06, 0.101100094859150340E+06, 0.101176390860314190E+06, 0.101249683961219664E+06, - 0.101319429056106397E+06, 0.101383533080313195E+06, 0.101439851116198683E+06, 0.101486953091034593E+06, 0.101514035380600777E+06, - 0.101530274350960754E+06, 0.101536503930903316E+06, 0.101532791192708028E+06, 0.101519414459226711E+06, 0.101496896545514726E+06, - 0.101466032997577611E+06, 0.101427914819550628E+06, 0.101386928031759133E+06, 0.101339510051842895E+06, 0.101286534144961479E+06, - 0.101229073267725224E+06, 0.101167697805292846E+06, 0.101103306882333491E+06, 0.101037149535454111E+06, 0.100976699320003900E+06, - 0.100924651148493227E+06, 0.100875357695395811E+06, 0.100829790933326149E+06, 0.100789063316662927E+06, 0.100754382631035871E+06, - 0.100727001544673127E+06, 0.100712812235705482E+06, 0.100707393276471601E+06, 0.100709250582931563E+06, 0.100722573388958059E+06, - 0.100746645734061545E+06, 0.100779895700786001E+06, 0.100804396943602027E+06, 0.100830073367685545E+06, 0.100859556300720957E+06, - 0.100892387870409642E+06, 0.100927975633083144E+06, 0.100965551602012056E+06, 0.101004683619487085E+06, 0.101045330597207460E+06, - 0.101087013008305672E+06, 0.101129446011777312E+06, 0.101173089623770706E+06, 0.101224746709176397E+06, 0.101276086346010212E+06, - 0.101326149198708168E+06, 0.101374129662616979E+06, 0.101418481717269460E+06, 0.101456308681409500E+06, 0.101487100471046055E+06, - 0.101509891159304345E+06, 0.101523887972284254E+06, 0.101519085107067789E+06, 0.101499035636973305E+06, 0.101474107212159681E+06, - 0.101448532598947975E+06, 0.101428087461135481E+06, 0.101420183587270294E+06, 0.101421890388346379E+06, 0.101434924963140438E+06, - 0.101461175739645623E+06, 0.101512942173575240E+06, 0.101576674737662266E+06, 0.101648311032956131E+06, 0.101723489882150840E+06, - 0.101787480132178534E+06, 0.101850028038504926E+06, 0.101910282046108841E+06, 0.101967661149882086E+06, 0.102023524732844948E+06, - 0.102074242265323439E+06, 0.102118210977073832E+06, 0.102152171123111169E+06, 0.102173114540454029E+06, 0.102185669537254769E+06, - 0.102190716001940251E+06, 0.102189608656019511E+06, 0.102183136999173483E+06, 0.102171644521202223E+06, 0.102155743904811548E+06, - 0.102135288964191917E+06, 0.102110694874428111E+06, 0.102083194402445937E+06, 0.102053140888443799E+06, 0.102023029614340878E+06, - 0.101994305634375618E+06, 0.101968130490490352E+06, 0.101944981816832049E+06, 0.101917533305451230E+06, 0.101891792228334729E+06, - 0.101867962161627947E+06, 0.101846942835226117E+06, 0.101828399128989535E+06, 0.101808349218342468E+06, 0.101783185169399527E+06, - 0.101752129728330387E+06, 0.101717730687555537E+06, 0.101682415904166002E+06, 0.101651064189548269E+06, 0.101628214835530569E+06, - 0.101615101470726600E+06, 0.101622078677434256E+06, 0.101640462768905272E+06, 0.101659951220889372E+06, 0.101675418801938606E+06, - 0.101673225878615136E+06, 0.101661928138148622E+06, 0.101642662123728296E+06, 0.101615888022248750E+06, 0.101582080924031965E+06, - 0.101543348953446970E+06, 0.101500631267208417E+06, 0.101452586432289259E+06, 0.101401256146737229E+06, 0.101350655526253569E+06, - 0.101302884790491065E+06, 0.101258041134635379E+06, 0.101219975854280870E+06, 0.101192075948155878E+06, 0.101176911767419486E+06, - 0.101189137340948175E+06, 0.101215695508690798E+06, 0.101250828629981872E+06, 0.101291224981271953E+06, 0.101331080207125036E+06, - 0.101370380504028988E+06, 0.101408081153893057E+06, 0.101442820210735677E+06, 0.101470980944890180E+06, 0.101493569638212546E+06, - 0.101512139169726375E+06, 0.101526611096755121E+06, 0.101532495997983948E+06, 0.101522627542459595E+06, 0.101512420265735462E+06, - 0.101505304745591246E+06, 0.101504334695817597E+06, 0.101519650872094615E+06, 0.101547899391185740E+06, 0.101583965970937570E+06, - 0.101627433236286277E+06, 0.101678082609776582E+06, 0.101737298190423375E+06, 0.101799968663717998E+06, 0.101862212637869627E+06, - 0.101921525254885390E+06, 0.101975615485969174E+06, 0.102022129365600340E+06, 0.102060753757629835E+06, 0.102091435012152549E+06, - 0.102114037703653419E+06, 0.102128864386004381E+06, 0.102136712377933785E+06, 0.102141341896670521E+06, 0.102142376150148193E+06, - 0.100523535976660394E+06, 0.100577052820581303E+06, 0.100637236479140498E+06, 0.100703252727134633E+06, 0.100772552025250538E+06, - 0.100843355148487011E+06, 0.100916200005643404E+06, 0.100989978980367348E+06, 0.101063458978865412E+06, 0.101135313180651341E+06, - 0.101204158192835064E+06, 0.101268596961150513E+06, 0.101327267803054579E+06, 0.101379219393509498E+06, 0.101411658551840825E+06, - 0.101435013304419204E+06, 0.101449723991433348E+06, 0.101455671589434161E+06, 0.101452876078218949E+06, 0.101441532989260799E+06, - 0.101422046210621003E+06, 0.101395056661309005E+06, 0.101365757780455795E+06, 0.101332677387078918E+06, 0.101293673363073496E+06, - 0.101249457127459696E+06, 0.101201011753970408E+06, 0.101149108558075517E+06, 0.101094587629913221E+06, 0.101040779590145175E+06, - 0.100995382496306906E+06, 0.100951579695860622E+06, 0.100909850434587090E+06, 0.100870858422985533E+06, 0.100835419863702089E+06, - 0.100804467614276640E+06, 0.100781685669042199E+06, 0.100767335396187831E+06, 0.100759289879836622E+06, 0.100757866722066232E+06, - 0.100763078005519506E+06, 0.100774506516805646E+06, 0.100786062954307781E+06, 0.100793269206959361E+06, 0.100804822422906916E+06, - 0.100820834091496698E+06, 0.100841255618750598E+06, 0.100865889078778535E+06, 0.100894749198775666E+06, 0.100927416956011424E+06, - 0.100963395796724551E+06, 0.101002315623510774E+06, 0.101043887250100248E+06, 0.101091039191901757E+06, 0.101144066547046401E+06, - 0.101197932497966991E+06, 0.101251195535936524E+06, 0.101302429885710808E+06, 0.101350642114984890E+06, 0.101394018940216731E+06, - 0.101430608604817069E+06, 0.101459057570376521E+06, 0.101478044590623220E+06, 0.101475387865733283E+06, 0.101461856537208994E+06, - 0.101443018892087159E+06, 0.101422586718123261E+06, 0.101406882059484167E+06, 0.101400350668646613E+06, 0.101401136819027641E+06, - 0.101411047287252732E+06, 0.101432998273655045E+06, 0.101475019664207721E+06, 0.101526976345226532E+06, 0.101585936905203198E+06, - 0.101648470322235924E+06, 0.101703644183282871E+06, 0.101759331828263079E+06, 0.101814866055730265E+06, 0.101869901220545507E+06, - 0.101928914084517004E+06, 0.101985712555209233E+06, 0.102038213057230983E+06, 0.102083503006818413E+06, 0.102116318481194263E+06, - 0.102142478770143352E+06, 0.102162510227578357E+06, 0.102176745632176331E+06, 0.102185382260760132E+06, 0.102189351865029588E+06, - 0.102188985060908250E+06, 0.102181978502190381E+06, 0.102166343098074416E+06, 0.102144949217122790E+06, 0.102118539343817305E+06, - 0.102090320241642432E+06, 0.102064949154931208E+06, 0.102041510471142406E+06, 0.102020894051233234E+06, 0.102002076919490239E+06, - 0.101978687982916701E+06, 0.101949947159686926E+06, 0.101920721729201105E+06, 0.101890840787188339E+06, 0.101858502442174227E+06, - 0.101821787050020226E+06, 0.101779170614060145E+06, 0.101731633607835785E+06, 0.101683872606227975E+06, 0.101641706250363815E+06, - 0.101609757163432500E+06, 0.101594408710602715E+06, 0.101599861763739507E+06, 0.101615600568650814E+06, 0.101634792862023707E+06, - 0.101649560822422354E+06, 0.101653324074520948E+06, 0.101647718645786255E+06, 0.101632892509714380E+06, 0.101607498410070068E+06, - 0.101573604987650251E+06, 0.101534332171428061E+06, 0.101490882315485491E+06, 0.101441914985506301E+06, 0.101390598505943577E+06, - 0.101340225499994325E+06, 0.101292893172337470E+06, 0.101249121490931240E+06, 0.101212206615971038E+06, 0.101184803983927792E+06, - 0.101169090523178049E+06, 0.101177216406820677E+06, 0.101199121436619549E+06, 0.101229487274117826E+06, 0.101265433425285810E+06, - 0.101301460838134211E+06, 0.101337546551032807E+06, 0.101373572179327981E+06, 0.101408481747705810E+06, 0.101441269413672373E+06, - 0.101471589979924611E+06, 0.101499094210238720E+06, 0.101523046431578827E+06, 0.101542483002773370E+06, 0.101543831013172356E+06, - 0.101544064378257113E+06, 0.101546276856648081E+06, 0.101553107004487800E+06, 0.101570758226424994E+06, 0.101603899362922981E+06, - 0.101643466171828870E+06, 0.101688020902613556E+06, 0.101736066489577410E+06, 0.101788778651382352E+06, 0.101846229772819366E+06, - 0.101902087545993330E+06, 0.101954243560902876E+06, 0.102000912067655503E+06, 0.102040460468150268E+06, 0.102070397922830496E+06, - 0.102092123176266672E+06, 0.102106027606901625E+06, 0.102112955537274407E+06, 0.102114233430400913E+06, 0.102110160726652859E+06, - 0.102103564706523437E+06, 0.100518689604693471E+06, 0.100570188968489383E+06, 0.100627085580226092E+06, 0.100688425846865008E+06, - 0.100752801664219747E+06, 0.100819711434372482E+06, 0.100888275239485200E+06, 0.100957467842034559E+06, 0.101026141537060103E+06, - 0.101093053338000958E+06, 0.101156896762082222E+06, 0.101216338486683555E+06, 0.101270050228910055E+06, 0.101303959592322863E+06, - 0.101331155104026548E+06, 0.101351367252466414E+06, 0.101364631606699608E+06, 0.101370354947362532E+06, 0.101368511938952593E+06, - 0.101359219879845390E+06, 0.101342770712901329E+06, 0.101323279228074665E+06, 0.101301442257920979E+06, 0.101274216777385765E+06, - 0.101241963101549714E+06, 0.101205245491941663E+06, 0.101164856326946916E+06, 0.101121839477416492E+06, 0.101077512757932636E+06, - 0.101040769978266762E+06, 0.101003816768457153E+06, 0.100967482943484662E+06, 0.100932599047362921E+06, 0.100899538621347674E+06, - 0.100868835073115974E+06, 0.100841822788138859E+06, 0.100822146543393857E+06, 0.100806275342578825E+06, 0.100794425676255967E+06, - 0.100786746583171247E+06, 0.100783223558698664E+06, 0.100783580356914550E+06, 0.100777240593710594E+06, 0.100772797244677698E+06, - 0.100771995893256535E+06, 0.100775628518037935E+06, 0.100784330892865575E+06, 0.100798832415402489E+06, 0.100819830174998613E+06, - 0.100845869940026445E+06, 0.100876821716840641E+06, 0.100912505059014773E+06, 0.100952732377084161E+06, 0.101002888396750073E+06, - 0.101057716858402928E+06, 0.101114463416698447E+06, 0.101171669964558023E+06, 0.101227895955215106E+06, 0.101283382095900626E+06, - 0.101334958226825765E+06, 0.101380444142405948E+06, 0.101418245220739525E+06, 0.101446407440058887E+06, 0.101450870781566424E+06, - 0.101446840525337553E+06, 0.101437171069169228E+06, 0.101424931486162226E+06, 0.101415799787063268E+06, 0.101412071436230064E+06, - 0.101412950725123417E+06, 0.101420014842418866E+06, 0.101435968083775937E+06, 0.101466352271600088E+06, 0.101503661068658505E+06, - 0.101546063702057072E+06, 0.101591631627750539E+06, 0.101633780932880036E+06, 0.101677233535571504E+06, 0.101722001382731454E+06, - 0.101768084603012278E+06, 0.101821697636718192E+06, 0.101876504987276159E+06, 0.101929725277785576E+06, 0.101979436992402916E+06, - 0.102021048948978249E+06, 0.102058738337406423E+06, 0.102093407361196325E+06, 0.102125483850517805E+06, 0.102150396359340550E+06, - 0.102169939569479524E+06, 0.102183985952502859E+06, 0.102191376525420768E+06, 0.102185685603385369E+06, 0.102169450367412603E+06, - 0.102146358644484295E+06, 0.102119842646822071E+06, 0.102094075555721618E+06, 0.102073636097204362E+06, 0.102056299206566269E+06, - 0.102039605800132485E+06, 0.102021374390271580E+06, 0.101998770599080817E+06, 0.101970853166201807E+06, 0.101937971227922506E+06, - 0.101900413338984057E+06, 0.101857321774920129E+06, 0.101808436773914334E+06, 0.101755010517902134E+06, 0.101701108954033160E+06, - 0.101652170013780356E+06, 0.101614009141804403E+06, 0.101594396568573589E+06, 0.101591391668390439E+06, 0.101601222158549106E+06, - 0.101618244864968845E+06, 0.101635666146591233E+06, 0.101645911116270872E+06, 0.101646699642323045E+06, 0.101636431221179548E+06, - 0.101609654908569675E+06, 0.101575048385323738E+06, 0.101534330175456344E+06, 0.101489532139668852E+06, 0.101438185377782967E+06, - 0.101385959560380783E+06, 0.101335194667244825E+06, 0.101287926354806812E+06, 0.101245203663320397E+06, 0.101209646717536321E+06, - 0.101183113534233489E+06, 0.101167399256673903E+06, 0.101173255047212093E+06, 0.101191266867459737E+06, 0.101217555082850216E+06, - 0.101249738922742486E+06, 0.101282540292244405E+06, 0.101316175523455371E+06, 0.101351248733287808E+06, 0.101387035478988051E+06, - 0.101423676548066695E+06, 0.101461316613871037E+06, 0.101497507316982592E+06, 0.101531170814716766E+06, 0.101561263551730270E+06, - 0.101576206116756410E+06, 0.101586714996634080E+06, 0.101597778963160541E+06, 0.101611464789349586E+06, 0.101630169532632644E+06, - 0.101664927306783313E+06, 0.101704113353483583E+06, 0.101746416585083251E+06, 0.101790584390523509E+06, 0.101835630759291264E+06, - 0.101885286326592308E+06, 0.101932452931491775E+06, 0.101975582690834839E+06, 0.102013491689891205E+06, 0.102045391567770363E+06, - 0.102064776694095723E+06, 0.102074647376751818E+06, 0.102077355461506435E+06, 0.102073009372423272E+06, 0.102062037114194260E+06, - 0.102045197475351029E+06, 0.102032862053345467E+06, 0.100516203599419721E+06, 0.100565218916304395E+06, 0.100617260891664730E+06, - 0.100673956912948721E+06, 0.100734470974993252E+06, 0.100796865106346027E+06, 0.100860518975916333E+06, 0.100924514220946570E+06, - 0.100987769915576093E+06, 0.101049106773664753E+06, 0.101107273840837661E+06, 0.101159905161335395E+06, 0.101194545284544540E+06, - 0.101223680392232840E+06, 0.101247089234949191E+06, 0.101264590537126525E+06, 0.101276076890375974E+06, 0.101281552099694847E+06, - 0.101280982310362175E+06, 0.101273943686812767E+06, 0.101262940282394411E+06, 0.101250027136122240E+06, 0.101232503141791327E+06, - 0.101210483653828545E+06, 0.101184228737493526E+06, 0.101154165002910086E+06, 0.101120906752935975E+06, 0.101085276329601198E+06, - 0.101055059197187191E+06, 0.101026747435691374E+06, 0.100998039675420368E+06, 0.100969366867174089E+06, 0.100941239345533730E+06, - 0.100914229378812437E+06, 0.100888324815689179E+06, 0.100866108957016506E+06, 0.100846788167441075E+06, 0.100829635550168416E+06, - 0.100814589974162533E+06, 0.100801624509251793E+06, 0.100790670060632678E+06, 0.100777235449754880E+06, 0.100759761272309115E+06, - 0.100744498201414157E+06, 0.100732510380326974E+06, 0.100724806452672536E+06, 0.100722312648745443E+06, 0.100727124797232929E+06, - 0.100739250727341408E+06, 0.100757924088756554E+06, 0.100783210335334952E+06, 0.100815143464493012E+06, 0.100854893070929611E+06, - 0.100907659832364327E+06, 0.100964923673006793E+06, 0.101024919613124526E+06, 0.101086575092280807E+06, 0.101148693938726588E+06, - 0.101212491181683130E+06, 0.101273236178490639E+06, 0.101328963344270000E+06, 0.101377761563192791E+06, 0.101415272026218052E+06, - 0.101431876200949133E+06, 0.101440210101162083E+06, 0.101442472419936472E+06, 0.101441025799434588E+06, 0.101440273436921474E+06, - 0.101441412028859413E+06, 0.101444242700126299E+06, 0.101450026358596937E+06, 0.101460476599565445E+06, 0.101479171248484825E+06, - 0.101501585380914767E+06, 0.101526832551874162E+06, 0.101554045751632453E+06, 0.101581088175181358E+06, 0.101609436210866566E+06, - 0.101639553558900094E+06, 0.101671699640266219E+06, 0.101712219603055011E+06, 0.101758423241378463E+06, 0.101805738585399682E+06, - 0.101852962314692355E+06, 0.101899310754771403E+06, 0.101946265190960024E+06, 0.101994211955312698E+06, 0.102041986736160048E+06, - 0.102085797585756969E+06, 0.102118247218596109E+06, 0.102143944256965377E+06, 0.102160780837746963E+06, 0.102166943569605079E+06, - 0.102158326056491831E+06, 0.102140886616651740E+06, 0.102119658913957755E+06, 0.102098499930418155E+06, 0.102080904999102844E+06, - 0.102066516422517074E+06, 0.102054504472527260E+06, 0.102039748545332608E+06, 0.102020600907278713E+06, 0.101995196360471018E+06, - 0.101963875490564329E+06, 0.101926792596088359E+06, 0.101883686482137069E+06, 0.101834681537134267E+06, 0.101781342698296125E+06, - 0.101725325815194636E+06, 0.101672635846780700E+06, 0.101631506833831096E+06, 0.101606236395939879E+06, 0.101597475949642787E+06, - 0.101603731801431582E+06, 0.101625616805930535E+06, 0.101646355193644980E+06, 0.101660903200991379E+06, 0.101665697733909154E+06, - 0.101654090491919997E+06, 0.101628201204639379E+06, 0.101592718579965003E+06, 0.101550440364196067E+06, 0.101501865690094695E+06, - 0.101447993110863157E+06, 0.101394085224710812E+06, 0.101342099839650211E+06, 0.101293810362817196E+06, 0.101250946740538144E+06, - 0.101215426073013630E+06, 0.101188872150540003E+06, 0.101172928312290038E+06, 0.101177855232292422E+06, 0.101192799356549629E+06, - 0.101215813274799773E+06, 0.101244944643138500E+06, 0.101275131726042877E+06, 0.101307174081444085E+06, 0.101341749283816956E+06, - 0.101378289914467692E+06, 0.101417332589792815E+06, 0.101459925058367837E+06, 0.101502062670976826E+06, 0.101542401965262659E+06, - 0.101579707707947498E+06, 0.101605443608385016E+06, 0.101624638835457939E+06, 0.101643143897028465E+06, 0.101662631727210814E+06, - 0.101684583160134658E+06, 0.101717073342919160E+06, 0.101753756733753267E+06, 0.101791888041425977E+06, 0.101829704004501327E+06, - 0.101866836453342432E+06, 0.101904943611418348E+06, 0.101941838182645661E+06, 0.101974805182480457E+06, 0.102002312012851093E+06, - 0.102022951004307251E+06, 0.102034588422611414E+06, 0.102035115083442288E+06, 0.102027670824049870E+06, 0.102012988929236992E+06, - 0.101992061827493861E+06, 0.101966142466949459E+06, 0.101941390128694227E+06, 0.100514970796833106E+06, 0.100558835077606142E+06, - 0.100607260398477549E+06, 0.100659655071357542E+06, 0.100715265417817398E+06, 0.100773178786940116E+06, 0.100832331209467477E+06, - 0.100890717506978282E+06, 0.100947860531606886E+06, 0.101002917974898708E+06, 0.101052195859970219E+06, 0.101086008388641625E+06, - 0.101115273930014009E+06, 0.101139857117029198E+06, 0.101159622269959131E+06, 0.101174458955507551E+06, 0.101184310219007501E+06, - 0.101189203551941042E+06, 0.101189284643897758E+06, 0.101186114007991724E+06, 0.101181270068826241E+06, 0.101171908271853448E+06, - 0.101158297091944536E+06, 0.101141013465808763E+06, 0.101120226925708761E+06, 0.101096239397641839E+06, 0.101069503529764173E+06, - 0.101044711943530012E+06, 0.101023498931715556E+06, 0.101001656961748697E+06, 0.100979308414565210E+06, 0.100956646567351941E+06, - 0.100933930245713549E+06, 0.100911474196776457E+06, 0.100891471408871366E+06, 0.100874184642035718E+06, 0.100856582877880370E+06, - 0.100838800023023141E+06, 0.100821055717833835E+06, 0.100804211342234223E+06, 0.100787393558680691E+06, 0.100761008720101294E+06, - 0.100734732500141792E+06, 0.100710174312875781E+06, 0.100688451173672947E+06, 0.100670708926784253E+06, 0.100658093134885828E+06, - 0.100653547542059678E+06, 0.100656000772829168E+06, 0.100665921580032358E+06, 0.100683713857153736E+06, 0.100709718860814537E+06, - 0.100748801228508208E+06, 0.100801823503565058E+06, 0.100861225414351109E+06, 0.100925234962917515E+06, 0.100992162379509042E+06, - 0.101061180367843728E+06, 0.101132825200904612E+06, 0.101202551905614309E+06, 0.101268249128093084E+06, 0.101327796560415067E+06, - 0.101375435871056281E+06, 0.101404641442907785E+06, 0.101425758115715638E+06, 0.101440394650381306E+06, 0.101450217422559756E+06, - 0.101458727822546076E+06, 0.101466619611513932E+06, 0.101473463661342525E+06, 0.101480183000528341E+06, 0.101487645084924108E+06, - 0.101498004691627488E+06, 0.101508871394480026E+06, 0.101520205876727661E+06, 0.101532083912951843E+06, 0.101544647478942308E+06, - 0.101558096380653675E+06, 0.101573050568899664E+06, 0.101590428478391070E+06, 0.101613972514299414E+06, 0.101648920007989669E+06, - 0.101687381188284504E+06, 0.101728410452743919E+06, 0.101771447499673959E+06, 0.101823102602039115E+06, 0.101880173737650490E+06, - 0.101939952057504197E+06, 0.101998671132745076E+06, 0.102047778748635392E+06, 0.102081283700837084E+06, 0.102104626314851310E+06, - 0.102117132803555040E+06, 0.102118423258010647E+06, 0.102110210033883151E+06, 0.102097574911021075E+06, 0.102084451243621195E+06, - 0.102073635202554215E+06, 0.102064362043080371E+06, 0.102055076068754133E+06, 0.102042482878204013E+06, 0.102025288372749041E+06, - 0.102001685111197468E+06, 0.101971967159961292E+06, 0.101935955157193923E+06, 0.101893991729276575E+06, 0.101846831752592378E+06, - 0.101795519670136433E+06, 0.101743547706146055E+06, 0.101695867126943878E+06, 0.101657509946900449E+06, 0.101633507015335563E+06, - 0.101630312812292759E+06, 0.101646392192630388E+06, 0.101668889131485266E+06, 0.101690704618882228E+06, 0.101706951776862203E+06, - 0.101710803657395867E+06, 0.101698215938497582E+06, 0.101672792047461742E+06, 0.101636565396570542E+06, 0.101592796399993240E+06, - 0.101539557371443312E+06, 0.101482505549964961E+06, 0.101424993232468783E+06, 0.101369854642081831E+06, 0.101318588912198626E+06, - 0.101273234899637857E+06, 0.101235886605930398E+06, 0.101207937266056106E+06, 0.101192654572110885E+06, 0.101195023201913122E+06, - 0.101207165308628755E+06, 0.101227217799392965E+06, 0.101253372828479289E+06, 0.101281097568006837E+06, 0.101311856149601605E+06, - 0.101345648585710995E+06, 0.101381904947258168E+06, 0.101421272631944972E+06, 0.101465042995991040E+06, 0.101508835313142772E+06, - 0.101551196503329018E+06, 0.101590747790927970E+06, 0.101621682377021876E+06, 0.101645776231220763E+06, 0.101668026172758953E+06, - 0.101689491310640093E+06, 0.101711039834481373E+06, 0.101739312046503386E+06, 0.101772112447843610E+06, 0.101804858575323728E+06, - 0.101836540790179512E+06, 0.101866167898941654E+06, 0.101895518959796798E+06, 0.101925181845865300E+06, 0.101950074886373186E+06, - 0.101969061543749413E+06, 0.101981139844382837E+06, 0.101985462621642117E+06, 0.101977051366888656E+06, 0.101959701573010476E+06, - 0.101935377351789808E+06, 0.101905526341066099E+06, 0.101871781260336036E+06, 0.101835950124052295E+06, 0.100513581366792612E+06, - 0.100554019513422492E+06, 0.100598330045055409E+06, 0.100645982440550681E+06, 0.100696296648474527E+06, 0.100748444268485124E+06, - 0.100801453596632928E+06, 0.100854218792530621E+06, 0.100905513420273754E+06, 0.100949903492433834E+06, 0.100981652101286920E+06, - 0.101009573882022771E+06, 0.101033642379315977E+06, 0.101053802681678295E+06, 0.101069990410599494E+06, 0.101082152783372076E+06, - 0.101090271780979238E+06, 0.101094389439540580E+06, 0.101095654589873608E+06, 0.101096426446181518E+06, 0.101093666576257223E+06, - 0.101087429979991794E+06, 0.101077885304853742E+06, 0.101065339866105438E+06, 0.101050264366095507E+06, 0.101032061623940666E+06, - 0.101012844290179608E+06, 0.100996964302313558E+06, 0.100980770382518007E+06, 0.100964167390490678E+06, 0.100947108284160218E+06, - 0.100929597010366851E+06, 0.100911688070060860E+06, 0.100893582156858451E+06, 0.100881499094758808E+06, 0.100868335774262508E+06, - 0.100853829088449522E+06, 0.100837798044627038E+06, 0.100820106254778977E+06, 0.100800619132333683E+06, 0.100775042434612522E+06, - 0.100741873481754403E+06, 0.100707732498585203E+06, 0.100674198173852987E+06, 0.100642873485934600E+06, 0.100616787946543613E+06, - 0.100595574493244218E+06, 0.100580853452354946E+06, 0.100573369371954352E+06, 0.100573991194533155E+06, 0.100583507950136642E+06, - 0.100602650207284896E+06, 0.100640744734742359E+06, 0.100692244893923940E+06, 0.100751760770043053E+06, 0.100817532941637197E+06, - 0.100887787830291069E+06, 0.100962050144272376E+06, 0.101039744081827113E+06, 0.101116778936214221E+06, 0.101190892544115282E+06, - 0.101259778024939151E+06, 0.101317175633898092E+06, 0.101357978697233921E+06, 0.101390994520218446E+06, 0.101417406025828648E+06, - 0.101438439369066997E+06, 0.101456877295130529E+06, 0.101473268310223793E+06, 0.101486701484946811E+06, 0.101497860785624449E+06, - 0.101507276039524368E+06, 0.101514237723266677E+06, 0.101518949933443597E+06, 0.101522085026395580E+06, 0.101524243387710812E+06, - 0.101525990459469860E+06, 0.101528194232853784E+06, 0.101531700114421837E+06, 0.101537410817429205E+06, 0.101546492305229593E+06, - 0.101567903398293696E+06, 0.101597046994887613E+06, 0.101630996885802393E+06, 0.101669578744430226E+06, 0.101714590729228381E+06, - 0.101773403370424989E+06, 0.101836874445576148E+06, 0.101900881795697991E+06, 0.101960687121667026E+06, 0.102008686461021774E+06, - 0.102037960319300764E+06, 0.102056196723826288E+06, 0.102065273055902842E+06, 0.102066914347914004E+06, 0.102063547681288721E+06, - 0.102059509493393372E+06, 0.102055314339710254E+06, 0.102050951292832178E+06, 0.102044111461623615E+06, 0.102032193928193665E+06, - 0.102014558041099997E+06, 0.101990243188425869E+06, 0.101960364538554975E+06, 0.101925773749474116E+06, 0.101887402236031689E+06, - 0.101845900309227552E+06, 0.101802685936693102E+06, 0.101760172705529054E+06, 0.101722211673123806E+06, 0.101698120911338105E+06, - 0.101693242621827798E+06, 0.101701200555816351E+06, 0.101719376001235738E+06, 0.101743123574903206E+06, 0.101765016750218143E+06, - 0.101780249253377129E+06, 0.101783141086790420E+06, 0.101773015434274668E+06, 0.101749944711398595E+06, 0.101715364981995837E+06, - 0.101666832632786492E+06, 0.101609705385936162E+06, 0.101549151532732372E+06, 0.101488088183680564E+06, 0.101428826013168145E+06, - 0.101371975824192647E+06, 0.101321130368394268E+06, 0.101278514950626632E+06, 0.101245823084732416E+06, 0.101229713571326531E+06, - 0.101228252523962350E+06, 0.101236240082679593E+06, 0.101252202249213733E+06, 0.101274554004038626E+06, 0.101299571284751277E+06, - 0.101328619250470016E+06, 0.101360846988672172E+06, 0.101395461438518367E+06, 0.101432766703864487E+06, 0.101473307204623023E+06, - 0.101514010222445781E+06, 0.101553562190150420E+06, 0.101590717887284656E+06, 0.101621853851409600E+06, 0.101647543893485548E+06, - 0.101671058814602424E+06, 0.101693056210828203E+06, 0.101714129349830531E+06, 0.101738767714405170E+06, 0.101767638107703999E+06, - 0.101795424880191335E+06, 0.101821375190827370E+06, 0.101844797381800585E+06, 0.101865803928462847E+06, 0.101887241456978605E+06, - 0.101903742329332832E+06, 0.101914505259923375E+06, 0.101918870822307275E+06, 0.101916337996088478E+06, 0.101901784739594950E+06, - 0.101874548045828633E+06, 0.101841292001167923E+06, 0.101803678665118787E+06, 0.101762946401782145E+06, 0.101720412831625683E+06, - 0.100515408142486602E+06, 0.100551771547175376E+06, 0.100591372710722571E+06, 0.100633738189236901E+06, 0.100678255595108407E+06, - 0.100724173138854574E+06, 0.100770602351690526E+06, 0.100816524184232330E+06, 0.100854077383907817E+06, 0.100882309305546267E+06, - 0.100908312612091744E+06, 0.100931760805658370E+06, 0.100951200960303162E+06, 0.100967005250871938E+06, 0.100979637398817140E+06, - 0.100989094128378885E+06, 0.100995390483498064E+06, 0.100999335048962457E+06, 0.101003623776222332E+06, 0.101005037852830981E+06, - 0.101003566011062838E+06, 0.100999260214490059E+06, 0.100992254677997669E+06, 0.100982785569327156E+06, 0.100971211282625562E+06, - 0.100958033151982832E+06, 0.100947713227353204E+06, 0.100936845226361344E+06, 0.100925586455398079E+06, 0.100913386427886144E+06, - 0.100900970885727584E+06, 0.100888200173575184E+06, 0.100874969576689109E+06, 0.100865322504112410E+06, 0.100857431942648880E+06, - 0.100848190571948653E+06, 0.100837041611588123E+06, 0.100823522652975458E+06, 0.100807245058683751E+06, 0.100787869439158167E+06, - 0.100757391684316404E+06, 0.100722719302699363E+06, 0.100685949398277124E+06, 0.100648508643416208E+06, 0.100611886678086536E+06, - 0.100577601709138020E+06, 0.100546746024841152E+06, 0.100520863816718731E+06, 0.100501704292206879E+06, 0.100490795320886566E+06, - 0.100489573337377500E+06, 0.100499397978964334E+06, 0.100534016438231076E+06, 0.100580634795179663E+06, 0.100636771821988543E+06, - 0.100700900349775504E+06, 0.100771475161532377E+06, 0.100847971681032548E+06, 0.100928796704597553E+06, 0.101010401416626322E+06, - 0.101090599925904797E+06, 0.101167170271662733E+06, 0.101233921628300508E+06, 0.101285179817018958E+06, 0.101329796645055787E+06, - 0.101368459516926756E+06, 0.101402063972120028E+06, 0.101431554233350747E+06, 0.101457605089509292E+06, 0.101479887700559731E+06, - 0.101498521383338972E+06, 0.101513550784224833E+06, 0.101523174827992611E+06, 0.101527475564510401E+06, 0.101528428909431837E+06, - 0.101526914423630384E+06, 0.101523962459723334E+06, 0.101520309815973524E+06, 0.101516483972158181E+06, 0.101514002315449485E+06, - 0.101514722417862809E+06, 0.101522283068780089E+06, 0.101544056083037300E+06, 0.101571190634249404E+06, 0.101603956939872005E+06, - 0.101642017592925840E+06, 0.101688020789515867E+06, 0.101748771464749283E+06, 0.101810913304749745E+06, 0.101870419614457860E+06, - 0.101923449267402393E+06, 0.101967012984100948E+06, 0.101994050943781331E+06, 0.102011245751808630E+06, 0.102022174558490107E+06, - 0.102029125315834375E+06, 0.102033037791472336E+06, 0.102034394101747268E+06, 0.102032647951692605E+06, 0.102026060860393205E+06, - 0.102014286206869132E+06, 0.101997287902874697E+06, 0.101973908129249903E+06, 0.101945685744995091E+06, 0.101913755487835835E+06, - 0.101879518050633123E+06, 0.101845462413359521E+06, 0.101814438244852194E+06, 0.101787626131292665E+06, 0.101769079269016060E+06, - 0.101760662506367516E+06, 0.101763690025728793E+06, 0.101778245812273221E+06, 0.101800769364128020E+06, 0.101825464810029356E+06, - 0.101849318133198423E+06, 0.101866690516569448E+06, 0.101874423097137915E+06, 0.101868322033511577E+06, 0.101847631400323429E+06, - 0.101809657617465651E+06, 0.101759023134988529E+06, 0.101701048933469734E+06, 0.101638831844116052E+06, 0.101574555754104877E+06, - 0.101509980617449197E+06, 0.101449449533488441E+06, 0.101394594035173650E+06, 0.101347377713062888E+06, 0.101309681379202666E+06, - 0.101289625678805663E+06, 0.101280310168622382E+06, 0.101280601256181355E+06, 0.101289183040688731E+06, 0.101304405647058535E+06, - 0.101324688438220604E+06, 0.101349563357044477E+06, 0.101377976699525767E+06, 0.101409028339016470E+06, 0.101442179995567261E+06, - 0.101476777887449236E+06, 0.101511738303380160E+06, 0.101546126683052818E+06, 0.101579196765551533E+06, 0.101607991498285395E+06, - 0.101632611269017507E+06, 0.101655502605639515E+06, 0.101677080810846644E+06, 0.101697768628730599E+06, 0.101719316740837268E+06, - 0.101742656846947124E+06, 0.101764837611636452E+06, 0.101785178883928776E+06, 0.101802942432164040E+06, 0.101817351144786313E+06, - 0.101829733328404807E+06, 0.101837655847121932E+06, 0.101840093420000965E+06, 0.101836302876360205E+06, 0.101825658934804160E+06, - 0.101806477102295394E+06, 0.101772591154458947E+06, 0.101732979877375386E+06, 0.101689114392674877E+06, 0.101642472350711148E+06, - 0.101594527408217124E+06, 0.100521483098622790E+06, 0.100553034374379175E+06, 0.100587237837357708E+06, 0.100623674982973011E+06, - 0.100661797732431733E+06, 0.100700926585977664E+06, 0.100740251364819997E+06, 0.100769102422238415E+06, 0.100792034055430398E+06, - 0.100813412935669796E+06, 0.100833061354508041E+06, 0.100850766087262135E+06, 0.100866291971468818E+06, 0.100879397215573350E+06, - 0.100889850447447578E+06, 0.100896874983048474E+06, 0.100901879624732552E+06, 0.100908045012513743E+06, 0.100911845008177756E+06, - 0.100913263133695262E+06, 0.100912309117336132E+06, 0.100909033352763217E+06, 0.100903541829518552E+06, 0.100896011438153932E+06, - 0.100886705535507586E+06, 0.100878478741165993E+06, 0.100870518698868997E+06, 0.100862258577488697E+06, 0.100853850267061993E+06, - 0.100845456536039332E+06, 0.100837262111476593E+06, 0.100829483975533818E+06, 0.100823560640713331E+06, 0.100821677296257287E+06, - 0.100817550375560750E+06, 0.100812145039498006E+06, 0.100804659355862575E+06, 0.100794378660273913E+06, 0.100780665915676014E+06, - 0.100760028631593887E+06, 0.100729776405452620E+06, 0.100695664007384359E+06, 0.100658676701707998E+06, 0.100619966898071216E+06, - 0.100580820672301052E+06, 0.100542567168908456E+06, 0.100504377972890885E+06, 0.100469914337100665E+06, 0.100440979221872039E+06, - 0.100419342752137061E+06, 0.100406745142411062E+06, 0.100406705150974245E+06, 0.100432011566503701E+06, 0.100468676779983842E+06, - 0.100515495509657252E+06, 0.100571181275147042E+06, 0.100634390994595859E+06, 0.100706784795550964E+06, 0.100786680087649889E+06, - 0.100869494529497810E+06, 0.100952905038971541E+06, 0.101034572199124057E+06, 0.101109749894571214E+06, 0.101172314783061069E+06, - 0.101229755518492922E+06, 0.101282350507230105E+06, 0.101330323821815167E+06, 0.101373763209774886E+06, 0.101412160049147336E+06, - 0.101445520624250392E+06, 0.101474055469030995E+06, 0.101497872459806793E+06, 0.101516095634979050E+06, 0.101525003393313920E+06, - 0.101529087732478598E+06, 0.101529555701643461E+06, 0.101527554535439689E+06, 0.101523924716972469E+06, 0.101519184588702949E+06, - 0.101515359052858228E+06, 0.101513419431477203E+06, 0.101515061119696038E+06, 0.101524365504439338E+06, 0.101545492952323460E+06, - 0.101572260216870665E+06, 0.101604062662735640E+06, 0.101640454999672467E+06, 0.101681140705924787E+06, 0.101736471342456469E+06, - 0.101791820815604107E+06, 0.101843025813835338E+06, 0.101888338055426750E+06, 0.101926497388645425E+06, 0.101956523951729410E+06, - 0.101977389503551763E+06, 0.101992863624521677E+06, 0.102004636055621828E+06, 0.102012873990628723E+06, 0.102016923944167502E+06, - 0.102015589894533594E+06, 0.102008242524494635E+06, 0.101994805733422399E+06, 0.101975527326879805E+06, 0.101951699623577006E+06, - 0.101924648595227743E+06, 0.101896134378200717E+06, 0.101868181223228035E+06, 0.101842690796364026E+06, 0.101823518800336897E+06, - 0.101810966006917995E+06, 0.101810361562174381E+06, 0.101819625326231835E+06, 0.101837655873780983E+06, 0.101862056783833701E+06, - 0.101890848697784473E+06, 0.101919025148523811E+06, 0.101942604878219718E+06, 0.101953732079914320E+06, 0.101952348959737385E+06, - 0.101930393928014251E+06, 0.101894531594142769E+06, 0.101847206824460780E+06, 0.101792255748977870E+06, 0.101731720782488774E+06, - 0.101667410578914118E+06, 0.101601955467176056E+06, 0.101538353512944566E+06, 0.101479206063803722E+06, 0.101426875382686587E+06, - 0.101386679687780139E+06, 0.101358881267937715E+06, 0.101340978693972764E+06, 0.101332100373616413E+06, 0.101331377677835859E+06, - 0.101337757250038121E+06, 0.101350176595795769E+06, 0.101367529237839539E+06, 0.101388710034061514E+06, 0.101412656335492444E+06, - 0.101438146564572395E+06, 0.101465030990242507E+06, 0.101492743759273944E+06, 0.101520528048576030E+06, 0.101547656089289187E+06, - 0.101573646733203917E+06, 0.101598176409242311E+06, 0.101621015547307805E+06, 0.101642090999262466E+06, 0.101661344187207244E+06, - 0.101680048117579805E+06, 0.101700060142799775E+06, 0.101717676267340707E+06, 0.101732293239297534E+06, 0.101743299867593101E+06, - 0.101750084174098316E+06, 0.101754164408332057E+06, 0.101753815772929738E+06, 0.101747787368181351E+06, 0.101735699407228763E+06, - 0.101717273900884597E+06, 0.101692348035134710E+06, 0.101654861811602153E+06, 0.101610673295375120E+06, 0.101562751614357956E+06, - 0.101512638519625150E+06, 0.101461813597627668E+06, 0.100533318325900138E+06, 0.100559018706234609E+06, 0.100586667516233734E+06, - 0.100616430509356855E+06, 0.100647457772304173E+06, 0.100679140607943787E+06, 0.100698527261697847E+06, 0.100715798167830915E+06, - 0.100731931694921790E+06, 0.100746896633405166E+06, 0.100760616569955790E+06, 0.100772979417731243E+06, 0.100783848302944942E+06, - 0.100793073809534399E+06, 0.100800507571478287E+06, 0.100806483772806212E+06, 0.100813801762586605E+06, 0.100819127022868051E+06, - 0.100822124828140237E+06, 0.100822902466370797E+06, 0.100821716855826366E+06, 0.100818621189554789E+06, 0.100813702346186765E+06, - 0.100807092657524059E+06, 0.100799795563032545E+06, 0.100792638500522866E+06, 0.100785284309503724E+06, 0.100777874398839282E+06, - 0.100770527259340961E+06, 0.100763347669699418E+06, 0.100756435329570639E+06, 0.100749892793592095E+06, 0.100749373875165576E+06, - 0.100750222933888348E+06, 0.100750603463785985E+06, 0.100749864242144642E+06, 0.100747320689053289E+06, 0.100742256076426071E+06, - 0.100733920852957395E+06, 0.100715113795294979E+06, 0.100689064952966379E+06, 0.100657845711542803E+06, 0.100623250918292935E+06, - 0.100586038000497676E+06, 0.100547134348203457E+06, 0.100506028825088957E+06, 0.100462291432826620E+06, 0.100421048783818245E+06, - 0.100384122683633468E+06, 0.100353368412380165E+06, 0.100330670880394246E+06, 0.100321776442990944E+06, 0.100334624094787185E+06, - 0.100358437666044687E+06, 0.100392488442372807E+06, 0.100435977221972600E+06, 0.100488073955800399E+06, 0.100552415559277870E+06, - 0.100627255810881121E+06, 0.100707092289738357E+06, 0.100789756856378794E+06, 0.100873101113792349E+06, 0.100954216801293107E+06, - 0.101025863759345229E+06, 0.101094584610272868E+06, 0.101160235498342692E+06, 0.101222606811297053E+06, 0.101281370962640489E+06, - 0.101332163642811851E+06, 0.101376972618262807E+06, 0.101416728366496085E+06, 0.101451473910749541E+06, 0.101480959555488313E+06, - 0.101500381551832834E+06, 0.101512210195641775E+06, 0.101519514244373393E+06, 0.101523444803633465E+06, 0.101525155563451161E+06, - 0.101524617344664759E+06, 0.101522395272590235E+06, 0.101521151212846860E+06, 0.101522340865174643E+06, 0.101527072168721963E+06, - 0.101537882062393008E+06, 0.101559080181885220E+06, 0.101584526114373686E+06, 0.101614244538571933E+06, 0.101647894372795839E+06, - 0.101684681982032082E+06, 0.101726895995367770E+06, 0.101774312937747018E+06, 0.101818830342195433E+06, 0.101858335228138851E+06, - 0.101893176738273338E+06, 0.101922949034176403E+06, 0.101947508183230893E+06, 0.101967684274917294E+06, 0.101983202615811271E+06, - 0.101993442131563672E+06, 0.101998812147038072E+06, 0.101998613039324773E+06, 0.101992329378160532E+06, 0.101980249760691964E+06, - 0.101962626054339082E+06, 0.101940465078019130E+06, 0.101915907622174098E+06, 0.101890478407916715E+06, 0.101866977689826570E+06, - 0.101849754719304707E+06, 0.101837665745559920E+06, 0.101833602586389810E+06, 0.101841599729967784E+06, 0.101859775477370218E+06, - 0.101886984424902446E+06, 0.101919867690970117E+06, 0.101951746477934430E+06, 0.101978482983373731E+06, 0.101993393892969194E+06, - 0.101991412250034802E+06, 0.101974123414601141E+06, 0.101945239434022718E+06, 0.101905684392780662E+06, 0.101856949799144815E+06, - 0.101801731134592686E+06, 0.101742504741481811E+06, 0.101681038790539489E+06, 0.101619356067038418E+06, 0.101559380452289755E+06, - 0.101505641285490463E+06, 0.101461701752299428E+06, 0.101426005705293821E+06, 0.101398896334048623E+06, 0.101380282180095601E+06, - 0.101369836995025384E+06, 0.101367277170112575E+06, 0.101370986941406809E+06, 0.101379906423074499E+06, 0.101392831033495459E+06, - 0.101408554312665205E+06, 0.101424869582900283E+06, 0.101443182567207696E+06, 0.101462968409184250E+06, 0.101483671134433898E+06, - 0.101504732894123474E+06, 0.101527421913474638E+06, 0.101550095820920280E+06, 0.101571562110317216E+06, 0.101591355780169426E+06, - 0.101609078015251362E+06, 0.101625097194956237E+06, 0.101640337310256451E+06, 0.101652605117688974E+06, 0.101661397415208048E+06, - 0.101666225004107662E+06, 0.101666619975683658E+06, 0.101662556408727090E+06, 0.101653580628123964E+06, 0.101639218203126409E+06, - 0.101619381357809092E+06, 0.101594063768788052E+06, 0.101563351510846944E+06, 0.101523851133020638E+06, 0.101476807405962056E+06, - 0.101426978369828445E+06, 0.101375797428347505E+06, 0.101324598573980998E+06, 0.100551530203326562E+06, 0.100571727120900570E+06, - 0.100593051779557791E+06, 0.100614868997312486E+06, 0.100634144763448072E+06, 0.100645833089619511E+06, 0.100657235284227281E+06, - 0.100667686387769805E+06, 0.100677292913672762E+06, 0.100686112073701530E+06, 0.100694158258119947E+06, 0.100701410586929007E+06, - 0.100707821531117806E+06, 0.100713326592793543E+06, 0.100718292448464927E+06, 0.100725135313074701E+06, 0.100730736036059810E+06, - 0.100734776949494801E+06, 0.100736983079004160E+06, 0.100737142689159882E+06, 0.100735125062421313E+06, 0.100730895453973062E+06, - 0.100724936089312163E+06, 0.100718101716589372E+06, 0.100710128659467940E+06, 0.100701978143640532E+06, 0.100693854728853868E+06, - 0.100685917546278361E+06, 0.100678288281938949E+06, 0.100671058793584918E+06, 0.100664298277410649E+06, 0.100660712381595760E+06, - 0.100661723426356752E+06, 0.100663150264819735E+06, 0.100664393149270531E+06, 0.100664799968549007E+06, 0.100663672287188572E+06, - 0.100660269896986065E+06, 0.100653054372944243E+06, 0.100638919308817800E+06, 0.100620188598009743E+06, 0.100597036492593310E+06, - 0.100569788712949841E+06, 0.100538901380231502E+06, 0.100504939031211514E+06, 0.100464616545740675E+06, 0.100420082357890147E+06, - 0.100376069547844643E+06, 0.100334560389268605E+06, 0.100297550195584583E+06, 0.100267038173233668E+06, 0.100249183652606138E+06, - 0.100248031291493899E+06, 0.100256756900526307E+06, 0.100275250996069168E+06, 0.100303318888992886E+06, 0.100340733860613560E+06, - 0.100392668457859341E+06, 0.100458197469974984E+06, 0.100530344725997711E+06, 0.100607247564767138E+06, 0.100687079608666914E+06, - 0.100768076831136714E+06, 0.100845286817167653E+06, 0.100921915425536106E+06, 0.100997896081585553E+06, 0.101072548063258917E+06, - 0.101144965887108527E+06, 0.101210711249507964E+06, 0.101267759563819229E+06, 0.101319932991058231E+06, 0.101367121820533270E+06, - 0.101409115377035181E+06, 0.101445063624758288E+06, 0.101467868269852072E+06, 0.101485221941439115E+06, 0.101498187544558168E+06, - 0.101507881316604296E+06, 0.101515310949875333E+06, 0.101519599975213365E+06, 0.101522106701145909E+06, 0.101524851878856789E+06, - 0.101529230085351330E+06, 0.101536191323789782E+06, 0.101546697524065807E+06, 0.101566224388216360E+06, 0.101589918902257763E+06, - 0.101616845515287452E+06, 0.101647215589828833E+06, 0.101680341115790361E+06, 0.101715366089036543E+06, 0.101752316168779886E+06, - 0.101791176678952732E+06, 0.101827052748008107E+06, 0.101859044996505589E+06, 0.101887670526199319E+06, 0.101913122414070647E+06, - 0.101934463666524054E+06, 0.101952632860506710E+06, 0.101966700037415663E+06, 0.101975525710702976E+06, 0.101978461989723088E+06, - 0.101975173899271627E+06, 0.101964823473388897E+06, 0.101947665044748559E+06, 0.101926227690128857E+06, 0.101900561072349257E+06, - 0.101874251008341424E+06, 0.101851830347918643E+06, 0.101836189738381829E+06, 0.101828888260193082E+06, 0.101835000054969831E+06, - 0.101851733006117443E+06, 0.101877232568018531E+06, 0.101909510086827300E+06, 0.101940989073697696E+06, 0.101965528537313672E+06, - 0.101979608526400712E+06, 0.101982970036656799E+06, 0.101975240583827399E+06, 0.101955388827734365E+06, 0.101924654892196661E+06, - 0.101887578699447098E+06, 0.101842186561714494E+06, 0.101789317463778367E+06, 0.101732832688802417E+06, 0.101675288481823532E+06, - 0.101619263688587671E+06, 0.101568048094496247E+06, 0.101521062700628769E+06, 0.101479654154784279E+06, 0.101445221739311222E+06, - 0.101418076416901371E+06, 0.101399045923829544E+06, 0.101387018859001342E+06, 0.101381135963448469E+06, 0.101380650007871780E+06, - 0.101384722424981679E+06, 0.101391720295262028E+06, 0.101400396876228624E+06, 0.101411346068523795E+06, 0.101424155121034681E+06, - 0.101438457710905030E+06, 0.101453929199892154E+06, 0.101472913422971527E+06, 0.101492074099173711E+06, 0.101510560767898467E+06, - 0.101527744434993336E+06, 0.101543054611759319E+06, 0.101555675557276962E+06, 0.101564929191696821E+06, 0.101571016898623420E+06, - 0.101573544015567939E+06, 0.101572121672385867E+06, 0.101566370463087485E+06, 0.101554662308102721E+06, 0.101536629786898047E+06, - 0.101513803810128695E+06, 0.101486361735486105E+06, 0.101454563654390658E+06, 0.101418767627698660E+06, 0.101378013088347099E+06, - 0.101330707820646552E+06, 0.101282264555356756E+06, 0.101234028760920090E+06, 0.101187294700704195E+06, 0.100576965529563255E+06, - 0.100591678218711211E+06, 0.100607008383076420E+06, 0.100616323103987481E+06, 0.100620258552074985E+06, 0.100623651287353903E+06, - 0.100626463751429124E+06, 0.100628648078344573E+06, 0.100631378331016531E+06, 0.100634129163284262E+06, 0.100636562070289394E+06, - 0.100638738873227092E+06, 0.100640693964837556E+06, 0.100643049230926015E+06, 0.100648185229669587E+06, 0.100652678597624064E+06, - 0.100656261255894686E+06, 0.100658660860211399E+06, 0.100659622834889029E+06, 0.100658930196984991E+06, 0.100656421096238220E+06, - 0.100652004015325234E+06, 0.100645400203396595E+06, 0.100634943591599571E+06, 0.100623790772243461E+06, 0.100612166299320219E+06, - 0.100600323220825783E+06, 0.100589367539107639E+06, 0.100580442279124138E+06, 0.100572243324848969E+06, 0.100564857703730217E+06, - 0.100563322531964557E+06, 0.100563065402201857E+06, 0.100563607762748041E+06, 0.100564433779967017E+06, 0.100564965723689515E+06, - 0.100564572517680892E+06, 0.100562577288210698E+06, 0.100558128795487573E+06, 0.100550306656448985E+06, 0.100538784205606309E+06, - 0.100523395229331582E+06, 0.100504107960399502E+06, 0.100481009310527326E+06, 0.100454286649172413E+06, 0.100417998848613410E+06, - 0.100377654481256992E+06, 0.100336323265197076E+06, 0.100295695643989733E+06, 0.100257502669341542E+06, 0.100223497751048752E+06, - 0.100198365893325012E+06, 0.100183895883056030E+06, 0.100176748173119719E+06, 0.100177409781642637E+06, 0.100186348863375271E+06, - 0.100204071706916817E+06, 0.100236974921233719E+06, 0.100288202283773542E+06, 0.100347584962604393E+06, 0.100413567810885099E+06, - 0.100484685800612540E+06, 0.100559609376774941E+06, 0.100637786676389092E+06, 0.100719143709254829E+06, 0.100802573207076450E+06, - 0.100886953694736978E+06, 0.100970981281993736E+06, 0.101053137277853224E+06, 0.101122114850514685E+06, 0.101186021991939982E+06, - 0.101244880734986247E+06, 0.101298842483030225E+06, 0.101347976726965513E+06, 0.101388865316328054E+06, 0.101417494561782441E+06, - 0.101441011237599363E+06, 0.101460308434203442E+06, 0.101476142058636950E+06, 0.101489111828680267E+06, 0.101498177707129027E+06, - 0.101504275218907074E+06, 0.101509888353816961E+06, 0.101516205429889771E+06, 0.101524373025953057E+06, 0.101535544403108914E+06, - 0.101550771587497264E+06, 0.101572228401773711E+06, 0.101596922610232752E+06, 0.101624267341491490E+06, 0.101653892197854148E+06, - 0.101685371964174541E+06, 0.101717744368668005E+06, 0.101749825128001146E+06, 0.101781782699506482E+06, 0.101812709382600748E+06, - 0.101841353313321029E+06, 0.101867900490832937E+06, 0.101893188014203624E+06, 0.101915193984979924E+06, 0.101933169418903170E+06, - 0.101945970442238802E+06, 0.101952233644425200E+06, 0.101949989638197949E+06, 0.101938812116678397E+06, 0.101921309771955755E+06, - 0.101897306204910492E+06, 0.101870511994013577E+06, 0.101845727987357284E+06, 0.101827162893394896E+06, 0.101815741469126820E+06, - 0.101815347936997394E+06, 0.101829035456973521E+06, 0.101849227052658054E+06, 0.101873947210599901E+06, 0.101900166979187969E+06, - 0.101922501433547208E+06, 0.101938537730062933E+06, 0.101945622505927895E+06, 0.101943220759731354E+06, 0.101933233593028053E+06, - 0.101913480508279812E+06, 0.101884226864883196E+06, 0.101847880125950556E+06, 0.101805028700279145E+06, 0.101757073613196655E+06, - 0.101706590973509752E+06, 0.101656335498895467E+06, 0.101607292592687139E+06, 0.101560626743744360E+06, 0.101517500638364392E+06, - 0.101478925847553910E+06, 0.101446343700160927E+06, 0.101419879250754559E+06, 0.101398958955256283E+06, 0.101383710029623602E+06, - 0.101374588904196891E+06, 0.101370168865842439E+06, 0.101369105684779628E+06, 0.101370929669406774E+06, 0.101375271898136503E+06, - 0.101381760968333765E+06, 0.101390061699633865E+06, 0.101400585700279218E+06, 0.101414338736935577E+06, 0.101428328122293344E+06, - 0.101441772517097343E+06, 0.101453941211612226E+06, 0.101464150240094372E+06, 0.101470694861331591E+06, 0.101472993001670693E+06, - 0.101472098749250043E+06, 0.101467692245319617E+06, 0.101459459863983502E+06, 0.101447099986294808E+06, 0.101428337148487699E+06, - 0.101402273058774066E+06, 0.101372210423711062E+06, 0.101338601145403256E+06, 0.101301942982120236E+06, 0.101262793506100817E+06, - 0.101221677786233748E+06, 0.101176731503889008E+06, 0.101131973913656722E+06, 0.101088479543089110E+06, 0.101047269615024925E+06, - 0.100610222449967056E+06, 0.100619368346169198E+06, 0.100619051340248508E+06, 0.100617580194349401E+06, 0.100615500249746110E+06, - 0.100612844510783863E+06, 0.100609637715591729E+06, 0.100605899629696811E+06, 0.100601648181252385E+06, 0.100596902436962919E+06, - 0.100591685422206356E+06, 0.100587098052459361E+06, 0.100585436102778738E+06, 0.100587603438895458E+06, 0.100589520780671664E+06, - 0.100591027689952418E+06, 0.100591916118502122E+06, 0.100591952568608729E+06, 0.100590898493088505E+06, 0.100588528847269830E+06, - 0.100584648718839380E+06, 0.100579107975368854E+06, 0.100568181408087505E+06, 0.100556028233350124E+06, 0.100543329111321902E+06, - 0.100530292741429832E+06, 0.100517138305172819E+06, 0.100504104046550317E+06, 0.100491454262540399E+06, 0.100479484740824249E+06, - 0.100470155044772182E+06, 0.100463687256117119E+06, 0.100458896797118272E+06, 0.100455620879032227E+06, 0.100454260984570079E+06, - 0.100454114005490293E+06, 0.100453954401208190E+06, 0.100453246548017763E+06, 0.100453544534649671E+06, 0.100451784335522374E+06, - 0.100447402272511725E+06, 0.100439945313556469E+06, 0.100429058870933281E+06, 0.100414474145118424E+06, 0.100395971880822995E+06, - 0.100364627363950829E+06, 0.100330069619100730E+06, 0.100293517928604648E+06, 0.100256250274621154E+06, 0.100219578502905337E+06, - 0.100184821369736295E+06, 0.100153602788173128E+06, 0.100126759271301082E+06, 0.100104736505522000E+06, 0.100088530813236051E+06, - 0.100079174170628597E+06, 0.100077782208942881E+06, 0.100089384583247156E+06, 0.100124675759422840E+06, 0.100169171328412835E+06, - 0.100221720050477204E+06, 0.100281293603445694E+06, 0.100347032197583365E+06, 0.100419381954596480E+06, 0.100501100689285435E+06, - 0.100587123759395632E+06, 0.100676265830202465E+06, 0.100767041531711700E+06, 0.100857717751965523E+06, 0.100942425402787208E+06, - 0.101015252626361835E+06, 0.101084506455799405E+06, 0.101149930187516162E+06, 0.101211031351648766E+06, 0.101267093811678642E+06, - 0.101313485842090842E+06, 0.101347864445685816E+06, 0.101377348186801406E+06, 0.101401563075397265E+06, 0.101421152746379506E+06, - 0.101436703379514453E+06, 0.101448418323353719E+06, 0.101455739244278491E+06, 0.101461288984514365E+06, 0.101466634842994637E+06, - 0.101474204912937290E+06, 0.101485236375258624E+06, 0.101500599693197641E+06, 0.101519974341673922E+06, 0.101542425947491516E+06, - 0.101567705013514729E+06, 0.101595287754062447E+06, 0.101623559085342917E+06, 0.101653300863473152E+06, 0.101684268370484802E+06, - 0.101715396578327011E+06, 0.101746648790418796E+06, 0.101778157009654227E+06, 0.101810294427225992E+06, 0.101840186138904261E+06, - 0.101866664724512098E+06, 0.101888829801923304E+06, 0.101904365840783910E+06, 0.101910875981687976E+06, 0.101907623411986046E+06, - 0.101897747215346535E+06, 0.101880196785050444E+06, 0.101858268156208374E+06, 0.101836776997478300E+06, 0.101819952813389187E+06, - 0.101808320250000223E+06, 0.101803197426602317E+06, 0.101808609816872282E+06, 0.101820932164050100E+06, 0.101835981686293468E+06, - 0.101853975694054869E+06, 0.101871402202830723E+06, 0.101884750589340591E+06, 0.101893763845945417E+06, 0.101896316342375110E+06, - 0.101891679490974697E+06, 0.101879011465031377E+06, 0.101858040507289596E+06, 0.101829415896828315E+06, 0.101794099063775866E+06, - 0.101754870334758903E+06, 0.101712830221134776E+06, 0.101668524343052632E+06, 0.101623305627111258E+06, 0.101578731565899987E+06, - 0.101536822594720084E+06, 0.101498255706646247E+06, 0.101464056159653454E+06, 0.101434228357694403E+06, 0.101408947230003760E+06, - 0.101388258426133107E+06, 0.101372054750796451E+06, 0.101360489212098575E+06, 0.101352621134682369E+06, 0.101347535522944934E+06, - 0.101344862604306050E+06, 0.101344225484927229E+06, 0.101345820651379589E+06, 0.101351700849621455E+06, 0.101359530806993411E+06, - 0.101367464680662029E+06, 0.101374791985950258E+06, 0.101380818284913359E+06, 0.101384869714943547E+06, 0.101384236152984289E+06, - 0.101379411934677875E+06, 0.101371434785651902E+06, 0.101360085004396402E+06, 0.101345137105284986E+06, 0.101326366500254488E+06, - 0.101300808610161446E+06, 0.101267227431123814E+06, 0.101230448890002648E+06, 0.101191134568648122E+06, 0.101149957676138991E+06, - 0.101107616865909265E+06, 0.101064847159165423E+06, 0.101022580301005539E+06, 0.100981724783641272E+06, 0.100943032631428388E+06, - 0.100907229742725089E+06, 0.100647986354424997E+06, 0.100642715659511494E+06, 0.100636609969385099E+06, 0.100629766959429631E+06, - 0.100622273153360293E+06, 0.100614207409999959E+06, 0.100605644320867577E+06, 0.100596657511128040E+06, 0.100587322839384142E+06, - 0.100577721494929676E+06, 0.100567942994422949E+06, 0.100559032457675799E+06, 0.100552977775159990E+06, 0.100548029023239913E+06, - 0.100543925649759869E+06, 0.100540775676255420E+06, 0.100537926202230563E+06, 0.100534526225857189E+06, 0.100530349204130558E+06, - 0.100525160024924175E+06, 0.100518730289664294E+06, 0.100507262057308282E+06, 0.100493351445575739E+06, 0.100478812420309798E+06, - 0.100463863563753723E+06, 0.100448706735957079E+06, 0.100433537133342616E+06, 0.100418551953121700E+06, 0.100403957667064577E+06, - 0.100390113818734360E+06, 0.100378283224859435E+06, 0.100368019408275955E+06, 0.100359348113145898E+06, 0.100352231413445901E+06, - 0.100346572462762793E+06, 0.100342221388570266E+06, 0.100338982151060118E+06, 0.100338392782828159E+06, 0.100341188152017450E+06, - 0.100343374795880460E+06, 0.100344284175602748E+06, 0.100343279804720136E+06, 0.100339754195549598E+06, 0.100333123950383713E+06, - 0.100321286971674039E+06, 0.100297287465905509E+06, 0.100269835508128133E+06, 0.100239714419667638E+06, 0.100207741409672206E+06, - 0.100174751447097195E+06, 0.100141579771693956E+06, 0.100106755441371904E+06, 0.100069912900784475E+06, 0.100035704844720982E+06, - 0.100005528642180579E+06, 0.999808555037528422E+05, 0.999632723451110069E+05, 0.999545236439836153E+05, 0.999736658577992639E+05, - 0.100003353333015431E+06, 0.100042064117430200E+06, 0.100089071041598727E+06, 0.100143778848621456E+06, 0.100205754250853075E+06, - 0.100280664932831889E+06, 0.100364704219084786E+06, 0.100454126970714191E+06, 0.100547163719590288E+06, 0.100641885410501171E+06, - 0.100736224731986324E+06, 0.100821668363604142E+06, 0.100899090295081827E+06, 0.100973330050358534E+06, 0.101044570047650093E+06, - 0.101111101684352281E+06, 0.101171922832138123E+06, 0.101223284014747289E+06, 0.101260000146915598E+06, 0.101290169362142216E+06, - 0.101314373328620830E+06, 0.101333177003506280E+06, 0.101345070024148474E+06, 0.101353392220116293E+06, 0.101359052838648713E+06, - 0.101363820978951000E+06, 0.101369812488926094E+06, 0.101377607762478350E+06, 0.101388432240829963E+06, 0.101403721097234418E+06, - 0.101423686495689355E+06, 0.101447911692908267E+06, 0.101474956233570803E+06, 0.101501708578459278E+06, 0.101530416403443902E+06, - 0.101560731988182699E+06, 0.101592331907465996E+06, 0.101625384375889567E+06, 0.101660463766652349E+06, 0.101696287937694025E+06, - 0.101731505165402195E+06, 0.101765373671168942E+06, 0.101795889760683582E+06, 0.101821575901139222E+06, 0.101839426770240534E+06, - 0.101848304582011391E+06, 0.101850674932157766E+06, 0.101845563338820590E+06, 0.101833662450669886E+06, 0.101819729736987734E+06, - 0.101806525676924168E+06, 0.101796235624030873E+06, 0.101788878921415002E+06, 0.101786474628160606E+06, 0.101791411418041462E+06, - 0.101799155363379643E+06, 0.101808395203049906E+06, 0.101819645577764153E+06, 0.101830409662230682E+06, 0.101837554446248556E+06, - 0.101839744105951162E+06, 0.101836170755967585E+06, 0.101826399135349377E+06, 0.101810169058729633E+06, 0.101787697095879019E+06, - 0.101760376393189144E+06, 0.101728853043894385E+06, 0.101693851935638726E+06, 0.101656211520082943E+06, 0.101616790158213262E+06, - 0.101576704560053928E+06, 0.101537500986694940E+06, 0.101500335696260430E+06, 0.101465878362827381E+06, 0.101434840756723977E+06, - 0.101408292472182264E+06, 0.101385653681886775E+06, 0.101367773762272278E+06, 0.101355060936308873E+06, 0.101344865614149967E+06, - 0.101336866601978196E+06, 0.101330803221953858E+06, 0.101326445157375012E+06, 0.101323705025865274E+06, 0.101323151766299212E+06, - 0.101323317919074820E+06, 0.101323609309034800E+06, 0.101323383998279736E+06, 0.101321968519799790E+06, 0.101318674829698095E+06, - 0.101309557473271183E+06, 0.101297255318789845E+06, 0.101282004506700381E+06, 0.101263593826286131E+06, 0.101241822534985287E+06, - 0.101216505434514431E+06, 0.101183763113335532E+06, 0.101143062284304673E+06, 0.101099958082106066E+06, 0.101055260378077917E+06, - 0.101009770107324861E+06, 0.100964289722992879E+06, 0.100919631222605836E+06, 0.100878395229792455E+06, 0.100840230418695966E+06, - 0.100804814065610379E+06, 0.100772660269162792E+06, 0.100687581879727732E+06, 0.100677327145079587E+06, 0.100666160693170401E+06, - 0.100654207341057889E+06, 0.100641583937123549E+06, 0.100628402623918475E+06, 0.100614774045043421E+06, 0.100600810488184259E+06, - 0.100586628958508634E+06, 0.100572354178803900E+06, 0.100558377265734845E+06, 0.100545518784321612E+06, 0.100533722529582723E+06, - 0.100522910171807918E+06, 0.100512931196078469E+06, 0.100503576020145658E+06, 0.100494590303307457E+06, 0.100485690264560879E+06, - 0.100476578798775605E+06, 0.100466962148914608E+06, 0.100453831814755409E+06, 0.100437250927331042E+06, 0.100419883924672962E+06, - 0.100402010894887906E+06, 0.100383869790613491E+06, 0.100365667294769126E+06, 0.100347588515499185E+06, 0.100329805497802925E+06, - 0.100312484547517117E+06, 0.100295677938969020E+06, 0.100279971482571520E+06, 0.100265646792895117E+06, 0.100252835911466231E+06, - 0.100241624480511469E+06, 0.100232054881627162E+06, 0.100224130808306480E+06, 0.100217823206996967E+06, 0.100218259667894425E+06, - 0.100221888558547784E+06, 0.100225662634090608E+06, 0.100228894178654795E+06, 0.100230909476646018E+06, 0.100231046622607246E+06, - 0.100228652435841679E+06, 0.100220736457496634E+06, 0.100203006988572233E+06, 0.100182026084597936E+06, 0.100158298000477531E+06, - 0.100132350369893451E+06, 0.100104715520267695E+06, 0.100075909358704739E+06, 0.100043124770855982E+06, 0.100002028989072438E+06, - 0.999616642547620577E+05, 0.999236877809293510E+05, 0.998898266920593742E+05, 0.998618945050216280E+05, 0.998418030619178171E+05, - 0.998423833568641858E+05, 0.998594396345241257E+05, 0.998857662121956964E+05, 0.999209046169008070E+05, 0.999644862724064005E+05, - 0.100016242187354641E+06, 0.100077317810256820E+06, 0.100156061627195784E+06, 0.100241897409154641E+06, 0.100332874470688155E+06, - 0.100428637026128985E+06, 0.100526117084385623E+06, 0.100622332108951261E+06, 0.100709061724389190E+06, 0.100788527255290071E+06, - 0.100863969991383987E+06, 0.100934619610214693E+06, 0.100999507530848088E+06, 0.101057589879684849E+06, 0.101107912118639942E+06, - 0.101140898046464674E+06, 0.101165194334426677E+06, 0.101183324487668549E+06, 0.101196455912974372E+06, 0.101205787756098696E+06, - 0.101212555660780359E+06, 0.101217307428240179E+06, 0.101221221076374510E+06, 0.101226815969850082E+06, 0.101235775469520071E+06, - 0.101249089517923203E+06, 0.101267499119154090E+06, 0.101290114155802439E+06, 0.101316108973235343E+06, 0.101344864351232871E+06, - 0.101376027068939133E+06, 0.101409318557868275E+06, 0.101444185441017980E+06, 0.101479505555003896E+06, 0.101516882009007721E+06, - 0.101555258888103534E+06, 0.101593997928136538E+06, 0.101632899844262269E+06, 0.101670115604274892E+06, 0.101703897209036979E+06, - 0.101731821696663668E+06, 0.101752696747597220E+06, 0.101767805557897402E+06, 0.101776451771069726E+06, 0.101776669469582252E+06, - 0.101773409436917937E+06, 0.101768516316242836E+06, 0.101762622025664066E+06, 0.101757375988241824E+06, 0.101753826825127559E+06, - 0.101753403149395934E+06, 0.101756975828023817E+06, 0.101760728893977721E+06, 0.101764213695991348E+06, 0.101767251659026326E+06, - 0.101770663081707637E+06, 0.101770424123169345E+06, 0.101766072271416459E+06, 0.101755995409002455E+06, 0.101740345666592038E+06, - 0.101721298174118318E+06, 0.101699043646416510E+06, 0.101673714396835901E+06, 0.101645709970302123E+06, 0.101615709217670097E+06, - 0.101584438818864903E+06, 0.101549071157331651E+06, 0.101514367930820241E+06, 0.101481015481659371E+06, 0.101449616141240651E+06, - 0.101420749509000205E+06, 0.101394921878986992E+06, 0.101373676775729036E+06, 0.101359486676981818E+06, 0.101347304837422518E+06, - 0.101336841360518913E+06, 0.101328023341265842E+06, 0.101320386045212057E+06, 0.101313764510643596E+06, 0.101308434768293082E+06, - 0.101303621069785135E+06, 0.101298777855350723E+06, 0.101293531204510582E+06, 0.101287470834921696E+06, 0.101280152845400124E+06, - 0.101270201669037211E+06, 0.101254701725787949E+06, 0.101236553755882080E+06, 0.101215630660361639E+06, 0.101191802985207483E+06, - 0.101164939977834394E+06, 0.101134911067020425E+06, 0.101095221983884170E+06, 0.101047509096163092E+06, 0.100998010357585692E+06, - 0.100947641730482603E+06, 0.100897282218335793E+06, 0.100847785377602457E+06, 0.100799988650482410E+06, 0.100756067172860465E+06, - 0.100716404949108095E+06, 0.100680394601797932E+06, 0.100648426393021538E+06, 0.100745881471474568E+06, 0.100728142553068014E+06, - 0.100709625290291020E+06, 0.100690810595279676E+06, 0.100673015913888710E+06, 0.100654662696282932E+06, 0.100635883098483231E+06, - 0.100616812156066226E+06, 0.100597590570947941E+06, 0.100577923093225269E+06, 0.100558481382763435E+06, 0.100539763749561054E+06, - 0.100521848971490384E+06, 0.100504736841997088E+06, 0.100488356281683067E+06, 0.100472574428834167E+06, 0.100457206575664590E+06, - 0.100442026795809623E+06, 0.100426779086875598E+06, 0.100408173847290411E+06, 0.100384737995668649E+06, 0.100361938241868149E+06, - 0.100339809752568588E+06, 0.100318341944825661E+06, 0.100297490120403570E+06, 0.100277187624826533E+06, 0.100256847285368276E+06, - 0.100235365725066120E+06, 0.100214436988323068E+06, 0.100194015395758135E+06, 0.100174603679756343E+06, 0.100156451770575964E+06, - 0.100139783864459299E+06, 0.100124799136242582E+06, 0.100111674036540222E+06, 0.100100566149749706E+06, 0.100091646133474802E+06, - 0.100094268080595342E+06, 0.100098360646490051E+06, 0.100103245417476035E+06, 0.100108251398645036E+06, 0.100112713737688697E+06, - 0.100115972074298101E+06, 0.100117368468727698E+06, 0.100113713047268437E+06, 0.100102264314479005E+06, 0.100088001440509222E+06, - 0.100071163974188516E+06, 0.100051996036882978E+06, 0.100030726477270320E+06, 0.100007546295320470E+06, 0.999807647979038738E+05, - 0.999391989552558807E+05, 0.998969708781520749E+05, 0.998557810370234511E+05, 0.998173700956349639E+05, 0.997835138413437380E+05, - 0.997560107381300622E+05, 0.997399269866001996E+05, 0.997470920864752261E+05, 0.997634292598558095E+05, 0.997888964555621351E+05, - 0.998253139512354246E+05, 0.998703081483062851E+05, 0.999237330223304161E+05, 0.999900673422841937E+05, 0.100071098592214898E+06, - 0.100157786095159157E+06, 0.100248141148947368E+06, 0.100340095617225234E+06, 0.100431568456538211E+06, 0.100520552982271765E+06, - 0.100601957172444119E+06, 0.100676277857242458E+06, 0.100746000837763233E+06, 0.100808736668317229E+06, 0.100864485886548777E+06, - 0.100912656357667453E+06, 0.100952804425252194E+06, 0.100983458937089512E+06, 0.101002905816960556E+06, 0.101017076739301760E+06, - 0.101025919304932366E+06, 0.101031319629252597E+06, 0.101035629307633033E+06, 0.101040244934609727E+06, 0.101046393155694794E+06, - 0.101055516125687020E+06, 0.101070906234944094E+06, 0.101089614225348079E+06, 0.101111577432790844E+06, 0.101136727145279292E+06, - 0.101164845396941935E+06, 0.101195505773623969E+06, 0.101228307857940395E+06, 0.101262885478130513E+06, 0.101298695011647855E+06, - 0.101336323186784808E+06, 0.101375617863355365E+06, 0.101416132308550543E+06, 0.101458486694783467E+06, 0.101500186893265898E+06, - 0.101539835500673144E+06, 0.101576113752189529E+06, 0.101608148989054069E+06, 0.101635731083729115E+06, 0.101658502412969741E+06, - 0.101672883340000117E+06, 0.101682956248776158E+06, 0.101690136156231834E+06, 0.101694729692935623E+06, 0.101695555850151519E+06, - 0.101694985210699713E+06, 0.101693812129123311E+06, 0.101693039728607808E+06, 0.101693715283905956E+06, 0.101692868849250488E+06, - 0.101690508890417783E+06, 0.101685212790082718E+06, 0.101676311144040446E+06, 0.101666676329463662E+06, 0.101655232931092047E+06, - 0.101641717109236590E+06, 0.101625993005500495E+06, 0.101608164735537764E+06, 0.101588188219044227E+06, 0.101565919017002117E+06, - 0.101541334705616158E+06, 0.101515224870468810E+06, 0.101488328834034881E+06, 0.101461275807381404E+06, 0.101434883687913665E+06, - 0.101409484965064941E+06, 0.101385820779280519E+06, 0.101366650582102375E+06, 0.101354446840173172E+06, 0.101343919272935833E+06, - 0.101334580534699839E+06, 0.101326051033725802E+06, 0.101318025772555571E+06, 0.101310244905231491E+06, 0.101303240884958926E+06, - 0.101296508440228543E+06, 0.101288703571071324E+06, 0.101279586340018883E+06, 0.101269869694777401E+06, 0.101258981910571456E+06, - 0.101246361574452327E+06, 0.101230052909366845E+06, 0.101210205538298207E+06, 0.101187520180750522E+06, 0.101161911206820834E+06, - 0.101133290201435040E+06, 0.101101563145659631E+06, 0.101066628653128937E+06, 0.101019252959455625E+06, 0.100965746706630394E+06, - 0.100910740992734136E+06, 0.100855238817428384E+06, 0.100800186778776610E+06, 0.100746485895287333E+06, 0.100695000750680716E+06, - 0.100647864656014091E+06, 0.100605793755290593E+06, 0.100567897173808713E+06, 0.100534547818198989E+06, 0.100814127595255733E+06, - 0.100792022069682134E+06, 0.100768906676945466E+06, 0.100744859019167008E+06, 0.100719947172904969E+06, 0.100694229203288138E+06, - 0.100667752842392147E+06, 0.100641747076966523E+06, 0.100616187623394333E+06, 0.100590421603492592E+06, 0.100564843816162116E+06, - 0.100539661442132914E+06, 0.100515003622905657E+06, 0.100490925990557327E+06, 0.100467416019604236E+06, 0.100444399107853926E+06, - 0.100421745278230635E+06, 0.100399276378565366E+06, 0.100374479059296529E+06, 0.100342341387721070E+06, 0.100310819294281551E+06, - 0.100280122297496389E+06, 0.100250406051737154E+06, 0.100221779328347242E+06, 0.100194311780137796E+06, 0.100168042299398876E+06, - 0.100142987772136228E+06, 0.100119152028053810E+06, 0.100096071569344102E+06, 0.100074127372371906E+06, 0.100053458844250679E+06, - 0.100034145590099070E+06, 0.100016303683140140E+06, 0.100000086204841966E+06, 0.999856841527353536E+05, 0.999733278135488799E+05, - 0.999663531822283549E+05, 0.999693777575280983E+05, 0.999741959503276157E+05, 0.999802590538802469E+05, 0.999870378916889313E+05, - 0.999938949144795042E+05, 0.100000191518739506E+06, 0.100005286991947069E+06, 0.100006317487418550E+06, 0.100001195017387858E+06, - 0.999937624881289375E+05, 0.999840228227615153E+05, 0.999719630030743720E+05, 0.999577541117163637E+05, 0.999414190489595931E+05, - 0.999227353126357775E+05, 0.998873066933161899E+05, 0.998482442672230973E+05, 0.998092392179712187E+05, 0.997720171343442780E+05, - 0.997383602763239178E+05, 0.997100954593149654E+05, 0.996890738866330212E+05, 0.996865348971301573E+05, 0.996979284283922898E+05, - 0.997178025858917244E+05, 0.997459381653020537E+05, 0.997821174181933602E+05, 0.998261113921440992E+05, 0.998776597193271737E+05, - 0.999420283421857603E+05, 0.100017917957394646E+06, 0.100097878242084247E+06, 0.100179897231054711E+06, 0.100262024118021669E+06, - 0.100342632647495484E+06, 0.100419763744213284E+06, 0.100491241165072570E+06, 0.100554990596539108E+06, 0.100613108372608185E+06, - 0.100664964935558615E+06, 0.100710050488669251E+06, 0.100748062257432917E+06, 0.100778981129089982E+06, 0.100801136588479072E+06, - 0.100816775933362136E+06, 0.100825979191023362E+06, 0.100833035761093313E+06, 0.100839384072879693E+06, 0.100846373089390050E+06, - 0.100857951736503237E+06, 0.100872302980121356E+06, 0.100888680627202251E+06, 0.100907092306334001E+06, 0.100927501559027049E+06, - 0.100950662310288419E+06, 0.100977294658870305E+06, 0.101006277386327682E+06, 0.101036971461367139E+06, 0.101068254496147259E+06, - 0.101099848827670517E+06, 0.101133511540723193E+06, 0.101169399010245761E+06, 0.101207870174907031E+06, 0.101248846664781042E+06, - 0.101290872607848010E+06, 0.101333141189654139E+06, 0.101375246051365641E+06, 0.101416446476650075E+06, 0.101455302158143284E+06, - 0.101490839830927347E+06, 0.101520107656443550E+06, 0.101543517742126453E+06, 0.101563037513223637E+06, 0.101578855351202437E+06, - 0.101589294440855650E+06, 0.101594084692158984E+06, 0.101595811485579121E+06, 0.101594522898840631E+06, 0.101587783852875349E+06, - 0.101580434348492054E+06, 0.101571251185715577E+06, 0.101560523496472335E+06, 0.101548552694418337E+06, 0.101535867827232971E+06, - 0.101525413599061823E+06, 0.101514059084604145E+06, 0.101501599931887249E+06, 0.101487982453526070E+06, 0.101472687979190014E+06, - 0.101455256212675624E+06, 0.101436599458446668E+06, 0.101417421871714148E+06, 0.101397941747779230E+06, 0.101378563636379375E+06, - 0.101359842874464084E+06, 0.101342462840995518E+06, 0.101332246224379633E+06, 0.101325840252083945E+06, 0.101320103689658979E+06, - 0.101314877253089740E+06, 0.101310111834561045E+06, 0.101305378666758857E+06, 0.101300345803243748E+06, 0.101295776170531011E+06, - 0.101292199871251156E+06, 0.101287082936946317E+06, 0.101280060941132921E+06, 0.101270852280511215E+06, 0.101259228389922413E+06, - 0.101244988802512118E+06, 0.101227740446083306E+06, 0.101206586899449845E+06, 0.101182271497207475E+06, 0.101154765725986566E+06, - 0.101124017218970926E+06, 0.101089948851124151E+06, 0.101052459983455323E+06, 0.101011429271982197E+06, 0.100955245737388075E+06, - 0.100896292883737755E+06, 0.100836289133349041E+06, 0.100776402552628671E+06, 0.100717117782225978E+06, 0.100659365283430379E+06, - 0.100604025319315682E+06, 0.100553449734939946E+06, 0.100508407522918642E+06, 0.100467703215460322E+06, 0.100431774319843782E+06, - 0.100887777028820332E+06, 0.100861720047367722E+06, 0.100834436753951144E+06, 0.100806009321876336E+06, 0.100776515387351727E+06, - 0.100746027719175327E+06, 0.100714128174464058E+06, 0.100678835400336873E+06, 0.100643940658424166E+06, 0.100609599439615049E+06, - 0.100575890439937211E+06, 0.100542814645689868E+06, 0.100510647118237335E+06, 0.100478852228419142E+06, 0.100447427441828680E+06, - 0.100416345678542421E+06, 0.100385524391706378E+06, 0.100353710114660586E+06, 0.100313330006065604E+06, 0.100273215809488320E+06, - 0.100233726851702537E+06, 0.100195172710990315E+06, 0.100157816918484707E+06, 0.100121881575408392E+06, 0.100087552777137244E+06, - 0.100054986731522251E+06, 0.100024316458513829E+06, 0.999958188555688102E+05, 0.999694587498323526E+05, 0.999449162204764725E+05, - 0.999222572991156194E+05, 0.999015841003048117E+05, 0.998830358793447813E+05, 0.998667901084829064E+05, 0.998530636160492868E+05, - 0.998421138196279935E+05, 0.998399548826702376E+05, 0.998456341634458367E+05, 0.998536660057044792E+05, 0.998634438903502014E+05, - 0.998743637363783346E+05, 0.998858203733583359E+05, 0.998972031892049272E+05, 0.999078909209750127E+05, 0.999149362451545312E+05, - 0.999155853988857416E+05, 0.999144713123037072E+05, 0.999115094947106991E+05, 0.999066084422268032E+05, 0.998996635379296931E+05, - 0.998905505086211051E+05, 0.998791187039132201E+05, 0.998553009292081260E+05, 0.998211706427201134E+05, 0.997864909210314072E+05, - 0.997528267554746853E+05, 0.997217498141473916E+05, 0.996948180668799905E+05, 0.996735491411857802E+05, 0.996593866015884996E+05, - 0.996655234255323448E+05, 0.996793806269131601E+05, 0.997006480667150026E+05, 0.997291101032920706E+05, 0.997645101820020791E+05, - 0.998065302642879251E+05, 0.998547900089741306E+05, 0.999134103376733110E+05, 0.999816545378570445E+05, 0.100052123784172887E+06, - 0.100122995502983205E+06, 0.100192554793170464E+06, 0.100259253657548237E+06, 0.100321770579711141E+06, 0.100379066111299660E+06, - 0.100430565790236928E+06, 0.100476507405646029E+06, 0.100515199549242738E+06, 0.100547257296906639E+06, 0.100573671260601302E+06, - 0.100594920234367688E+06, 0.100611741953639648E+06, 0.100625093360959523E+06, 0.100636085854106641E+06, 0.100648539226327353E+06, - 0.100663110344216606E+06, 0.100678485576473686E+06, 0.100694991774415132E+06, 0.100712835683178113E+06, 0.100732147548005290E+06, - 0.100753127553809449E+06, 0.100775525773403977E+06, 0.100799178062266757E+06, 0.100823896465442915E+06, 0.100848973735924432E+06, - 0.100871627589741343E+06, 0.100896325593451635E+06, 0.100923508440905760E+06, 0.100953444968081341E+06, 0.100987803936626107E+06, - 0.101025452874861629E+06, 0.101064958354120550E+06, 0.101105934719207362E+06, 0.101149656229281260E+06, 0.101195955740066449E+06, - 0.101241312234646321E+06, 0.101284295970940017E+06, 0.101322838039260794E+06, 0.101354503959834561E+06, 0.101381602347716602E+06, - 0.101404011754918669E+06, 0.101421551762267889E+06, 0.101430360992792368E+06, 0.101432922117767157E+06, 0.101431497700586173E+06, - 0.101426925441668209E+06, 0.101419967655507149E+06, 0.101411983040633873E+06, 0.101402716970667971E+06, 0.101392421375849139E+06, - 0.101381472260780953E+06, 0.101370274940234522E+06, 0.101359740662010270E+06, 0.101350634658367329E+06, 0.101341143517682387E+06, - 0.101330923240958698E+06, 0.101319823874219393E+06, 0.101307931163203728E+06, 0.101295590108053555E+06, 0.101283554840952769E+06, - 0.101272503805782646E+06, 0.101264230996134676E+06, 0.101263165987784392E+06, 0.101263248071743699E+06, 0.101263968423840182E+06, - 0.101264949849351571E+06, 0.101265950281725454E+06, 0.101266859267559164E+06, 0.101267688820318188E+06, 0.101269586773692979E+06, - 0.101271200254654817E+06, 0.101270843870590616E+06, 0.101268468005190778E+06, 0.101263583383249803E+06, 0.101255809203046563E+06, - 0.101244849341628564E+06, 0.101230469880693592E+06, 0.101211897835992699E+06, 0.101189677118595791E+06, 0.101163874725058151E+06, - 0.101134452948665217E+06, 0.101101374466219480E+06, 0.101064596222306151E+06, 0.101024065194136114E+06, 0.100976094439065258E+06, - 0.100916143828112647E+06, 0.100853769181501484E+06, 0.100790071236260570E+06, 0.100726087398982490E+06, 0.100662794662010128E+06, - 0.100601113224382003E+06, 0.100541910367744073E+06, 0.100487274737311833E+06, 0.100437683864829785E+06, 0.100392394095480457E+06, - 0.100351867577605750E+06, 0.100962168045125494E+06, 0.100932365352918903E+06, 0.100901110935450168E+06, 0.100868480358099798E+06, - 0.100834547574790442E+06, 0.100796703363587934E+06, 0.100755267960995203E+06, 0.100713570472402876E+06, 0.100671854726096004E+06, - 0.100630308500112806E+06, 0.100589060133053688E+06, 0.100548176434007823E+06, 0.100507661857319457E+06, 0.100467458892467330E+06, - 0.100427449603971385E+06, 0.100387458241177985E+06, 0.100347067293918182E+06, 0.100298654635154177E+06, 0.100250789888946878E+06, - 0.100203094461237808E+06, 0.100156000274838036E+06, 0.100109901773151054E+06, 0.100065158238268661E+06, 0.100022096993949221E+06, - 0.999810174333996401E+05, 0.999421958115488960E+05, 0.999058907435752189E+05, 0.998749313841952826E+05, 0.998464722705311870E+05, - 0.998203417981312523E+05, 0.997966268545406929E+05, 0.997754458911707188E+05, 0.997569500594004494E+05, 0.997413241542494943E+05, - 0.997287873670089612E+05, 0.997195938347852207E+05, 0.997219848697613779E+05, 0.997302647271703609E+05, 0.997413201843605202E+05, - 0.997545532545877795E+05, 0.997693575270145375E+05, 0.997851155398511037E+05, 0.998011953959217790E+05, 0.998169466903843859E+05, - 0.998299082101016102E+05, 0.998356142670790869E+05, 0.998398422284621047E+05, 0.998424522644160897E+05, 0.998432923817324918E+05, - 0.998421955048720556E+05, 0.998389770375031076E+05, 0.998334333807975636E+05, 0.998233671652358898E+05, 0.997961670290865004E+05, - 0.997678973047597101E+05, 0.997399010170866677E+05, 0.997134966342892585E+05, 0.996899556689095043E+05, 0.996704759993049811E+05, - 0.996561506699569145E+05, 0.996500136858785991E+05, 0.996586427100675064E+05, 0.996741311696416087E+05, 0.996962994894855947E+05, - 0.997249142503650510E+05, 0.997596639024193428E+05, 0.998001312580039958E+05, 0.998457643772705051E+05, 0.998968741052847909E+05, - 0.999554058789066621E+05, 0.100014421175045645E+06, 0.100072433938662172E+06, 0.100128122411163247E+06, 0.100180369857232887E+06, - 0.100226565707743983E+06, 0.100267364450542242E+06, 0.100303437234851634E+06, 0.100335667091963755E+06, 0.100364067822408935E+06, - 0.100388352892750874E+06, 0.100408979571248361E+06, 0.100426614584295938E+06, 0.100443740449263758E+06, 0.100461134998395326E+06, - 0.100478174321635088E+06, 0.100495256991003844E+06, 0.100512619944850769E+06, 0.100530318011748270E+06, 0.100548816195507636E+06, - 0.100568537852548383E+06, 0.100588688433695279E+06, 0.100609168368209503E+06, 0.100629814904332350E+06, 0.100650416237038749E+06, - 0.100665634418575515E+06, 0.100681296503981284E+06, 0.100698501345687095E+06, 0.100717920340627403E+06, 0.100740215249176472E+06, - 0.100766890514599916E+06, 0.100796657224606606E+06, 0.100829306693609207E+06, 0.100864641226465828E+06, 0.100904494038338991E+06, - 0.100948883593760926E+06, 0.100993670283464584E+06, 0.101037518284592399E+06, 0.101079215492193092E+06, 0.101115268009655614E+06, - 0.101146790223207165E+06, 0.101174201341284715E+06, 0.101197180680782549E+06, 0.101215405063571248E+06, 0.101223672236876388E+06, - 0.101227039458753206E+06, 0.101226892310118274E+06, 0.101223972224575875E+06, 0.101218953111666357E+06, 0.101212937481870860E+06, - 0.101205841402347578E+06, 0.101198438153766576E+06, 0.101191337677150907E+06, 0.101184775501605473E+06, 0.101178859738651910E+06, - 0.101173861836438504E+06, 0.101169688625135837E+06, 0.101165295165053874E+06, 0.101160720689472480E+06, 0.101156205118519152E+06, - 0.101153904081471745E+06, 0.101157778313312563E+06, 0.101162376363148098E+06, 0.101167695990116554E+06, 0.101174407609201837E+06, - 0.101181289698729292E+06, 0.101187910343826748E+06, 0.101193938755009076E+06, 0.101199145593254492E+06, 0.101206932922006279E+06, - 0.101215167455344184E+06, 0.101221538641997948E+06, 0.101225600948191553E+06, 0.101227025345643400E+06, 0.101225591909201801E+06, - 0.101221179118605258E+06, 0.101213750568578733E+06, 0.101199646966405868E+06, 0.101180697627794187E+06, 0.101158105995225807E+06, - 0.101131732247750042E+06, 0.101101468150223940E+06, 0.101067227518597691E+06, 0.101028937999906033E+06, 0.100986534229694924E+06, - 0.100931637537634888E+06, 0.100870116212888723E+06, 0.100806172230221506E+06, 0.100740814221331588E+06, 0.100675010844437245E+06, - 0.100609686876287946E+06, 0.100545721239012084E+06, 0.100483946382944894E+06, 0.100426130298766730E+06, 0.100372432821891009E+06, - 0.100322757504134090E+06, 0.100277638455664739E+06, 0.101031760825673671E+06, 0.100998271623218010E+06, 0.100963081981794705E+06, - 0.100926251398063658E+06, 0.100882116391194853E+06, 0.100836110949086375E+06, 0.100789196010976768E+06, 0.100741656022242169E+06, - 0.100693739602509639E+06, 0.100645654807320738E+06, 0.100597565425804190E+06, 0.100549588305930272E+06, 0.100501791687992096E+06, - 0.100454194516198477E+06, 0.100406766687836353E+06, 0.100359430189551465E+06, 0.100303106797204193E+06, 0.100246577208372706E+06, - 0.100190531822652643E+06, 0.100135266216653603E+06, 0.100081062875707968E+06, 0.100028192493603376E+06, 0.999769161960119818E+05, - 0.999274886616365693E+05, 0.998801621121565840E+05, 0.998351911400472018E+05, 0.997962094163349393E+05, 0.997640534483473457E+05, - 0.997345240177219384E+05, 0.997076990988948673E+05, 0.996836794307263772E+05, 0.996625896600271371E+05, 0.996445791479565378E+05, - 0.996298224252568762E+05, 0.996185192726470996E+05, 0.996108943913202529E+05, 0.996171044733596500E+05, 0.996274341933858086E+05, - 0.996407368485686020E+05, 0.996564433077199938E+05, 0.996739662819337100E+05, 0.996926995456860750E+05, 0.997120167510192841E+05, - 0.997312700110226870E+05, 0.997492720049924683E+05, 0.997589945357419347E+05, 0.997672950870170171E+05, 0.997740082631510304E+05, - 0.997789569418504107E+05, 0.997819534179343900E+05, 0.997828018434580008E+05, 0.997813025467889238E+05, 0.997761547542830958E+05, - 0.997606903751367063E+05, 0.997380039112137747E+05, 0.997148807783809316E+05, 0.996925793721139198E+05, 0.996723316187614837E+05, - 0.996553186696160265E+05, 0.996426434711866459E+05, 0.996353006212308683E+05, 0.996360089851673401E+05, 0.996493081867637520E+05, - 0.996683800195190997E+05, 0.996929780547397386E+05, 0.997227658669395460E+05, 0.997573001543519495E+05, 0.997960150791931374E+05, - 0.998382096557535260E+05, 0.998830404070649238E+05, 0.999298323121304275E+05, 0.999742523604048474E+05, 0.100016965326181715E+06, - 0.100057253131543956E+06, 0.100094584675305145E+06, 0.100128612542877818E+06, 0.100159162106115866E+06, 0.100186212494174571E+06, - 0.100209869217876141E+06, 0.100230664541801205E+06, 0.100252215827535721E+06, 0.100272507526162837E+06, 0.100291578842935764E+06, - 0.100309849731348106E+06, 0.100327689967233746E+06, 0.100345394170965068E+06, 0.100363163535270942E+06, 0.100381092592034052E+06, - 0.100399259031973241E+06, 0.100417513798931104E+06, 0.100435580822035801E+06, 0.100453091252954211E+06, 0.100469603339999827E+06, - 0.100480151507121773E+06, 0.100489254638568047E+06, 0.100498595808049067E+06, 0.100508951548301586E+06, 0.100521040443233302E+06, - 0.100536087694824993E+06, 0.100554481106296153E+06, 0.100575842199618433E+06, 0.100600284600435130E+06, 0.100627894363922838E+06, - 0.100660998742818352E+06, 0.100699900685942383E+06, 0.100740240979155365E+06, 0.100780773089326132E+06, 0.100820325888548046E+06, - 0.100857002425394050E+06, 0.100889306549680012E+06, 0.100918410465244044E+06, 0.100943855527829830E+06, 0.100965216993375041E+06, - 0.100982104369596826E+06, 0.100988787448417890E+06, 0.100992039290643908E+06, 0.100992851817592629E+06, 0.100992148367721486E+06, - 0.100990754377491627E+06, 0.100989328864528783E+06, 0.100987939282731590E+06, 0.100987019598780156E+06, 0.100986810224360001E+06, - 0.100987461015865600E+06, 0.100989052975663959E+06, 0.100991630597561802E+06, 0.100995163025901697E+06, 0.101001875722349461E+06, - 0.101011088720900429E+06, 0.101021084899088091E+06, 0.101031663037972830E+06, 0.101042638294081626E+06, 0.101053858103835970E+06, - 0.101065218626100279E+06, 0.101076680586933391E+06, 0.101088283485301858E+06, 0.101099874970037970E+06, 0.101113089326713816E+06, - 0.101125428039884195E+06, 0.101136196176455385E+06, 0.101144782354753406E+06, 0.101150661981462021E+06, 0.101153397040916956E+06, - 0.101152632849470392E+06, 0.101148092219151222E+06, 0.101138825885236918E+06, 0.101125297346996245E+06, 0.101107998631323659E+06, - 0.101086896343469081E+06, 0.101061954484055474E+06, 0.101033133620494526E+06, 0.101000389988487950E+06, 0.100963674428856495E+06, - 0.100920035249967157E+06, 0.100864002050084426E+06, 0.100802954127500183E+06, 0.100739491656333426E+06, 0.100674607806506479E+06, - 0.100609142818467881E+06, 0.100543918229119721E+06, 0.100479729438758746E+06, 0.100417340423775575E+06, 0.100357818911458060E+06, - 0.100301549120910859E+06, 0.100249027161521051E+06, 0.100200821670612902E+06, 0.101087517829558172E+06, 0.101052015003826687E+06, - 0.101011788745108162E+06, 0.100964536778963855E+06, 0.100915488137692053E+06, 0.100864943012846241E+06, 0.100813190048196135E+06, - 0.100760500256302723E+06, 0.100707121731364154E+06, 0.100653275174801398E+06, 0.100599150242222226E+06, 0.100544902712618306E+06, - 0.100490652473024573E+06, 0.100436482304513964E+06, 0.100382437448442113E+06, 0.100320280351299210E+06, 0.100257427382579408E+06, - 0.100194846079550756E+06, 0.100132891655021755E+06, 0.100071918796184837E+06, 0.100012281557507449E+06, 0.999543340473443968E+05, - 0.998984318951125897E+05, 0.998449344820776314E+05, 0.997942079153267550E+05, 0.997466460297804297E+05, 0.997094928681285237E+05, - 0.996756279012622545E+05, 0.996450218538222252E+05, 0.996176735384205385E+05, 0.995936103776563396E+05, 0.995728884174646664E+05, - 0.995555917894421727E+05, 0.995418315732738702E+05, 0.995317440033937164E+05, 0.995262628136555868E+05, 0.995329410864949314E+05, - 0.995433141117427585E+05, 0.995568197318211314E+05, 0.995728823939344729E+05, 0.995909116272487881E+05, 0.996102999545491039E+05, - 0.996304204174830811E+05, 0.996506239397997124E+05, 0.996702368021630245E+05, 0.996815718025470851E+05, 0.996899469928969920E+05, - 0.996967323341972806E+05, 0.997018093255459680E+05, 0.997050766826754843E+05, 0.997064543685055542E+05, 0.997058891541211779E+05, - 0.997033620388164272E+05, 0.996988978495463380E+05, 0.996831868676393642E+05, 0.996664226445127570E+05, 0.996504367351514375E+05, - 0.996361908772876632E+05, 0.996245860820844246E+05, 0.996164411729444837E+05, 0.996124708057612588E+05, 0.996132638091558620E+05, - 0.996196649575229239E+05, 0.996367110923675500E+05, 0.996583825556631200E+05, 0.996843326520396949E+05, 0.997128691088688356E+05, - 0.997429147876210773E+05, 0.997758051592909760E+05, 0.998110107603276119E+05, 0.998478942000829556E+05, 0.998857114279977977E+05, - 0.999214491155317955E+05, 0.999550948845939129E+05, 0.999866837454055931E+05, 0.100015951080814193E+06, 0.100042763152220112E+06, - 0.100066833155271277E+06, 0.100088158247781059E+06, 0.100108078185884762E+06, 0.100126927297932227E+06, 0.100144951073682430E+06, - 0.100162306504082269E+06, 0.100179972902585811E+06, 0.100197255514410528E+06, 0.100214513504718459E+06, 0.100231716678680328E+06, - 0.100248516891677820E+06, 0.100264879167597144E+06, 0.100280677931150029E+06, 0.100295703143529230E+06, 0.100309668678237373E+06, - 0.100317822458752169E+06, 0.100323698725186405E+06, 0.100328766123466703E+06, 0.100333617686529382E+06, 0.100338870421945830E+06, - 0.100345146510504768E+06, 0.100353505811859010E+06, 0.100364091412822730E+06, 0.100377219192028511E+06, 0.100393145224109379E+06, - 0.100412076822805961E+06, 0.100436536362016341E+06, 0.100466993027333549E+06, 0.100499128955239808E+06, 0.100531867585847620E+06, - 0.100564210070354224E+06, 0.100595268938737849E+06, 0.100623389505981249E+06, 0.100648875381678285E+06, 0.100671545265182722E+06, - 0.100691215991390258E+06, 0.100707855569253967E+06, 0.100721531568851729E+06, 0.100729765774870320E+06, 0.100736382308921660E+06, - 0.100742049357786149E+06, 0.100747338931632839E+06, 0.100752699996680560E+06, 0.100758437644766876E+06, 0.100764492369211905E+06, - 0.100771174162651805E+06, 0.100778897781122723E+06, 0.100791202238176033E+06, 0.100805304746492911E+06, 0.100820453141876555E+06, - 0.100836553977341420E+06, 0.100853433691068960E+06, 0.100869804352758074E+06, 0.100885565873248357E+06, 0.100901263434718436E+06, - 0.100916755649211860E+06, 0.100931925490762223E+06, 0.100946862129343805E+06, 0.100964994999554750E+06, 0.100982379998277524E+06, - 0.100998599729598267E+06, 0.101013259118967748E+06, 0.101025997621651855E+06, 0.101036183051793079E+06, 0.101042991775159331E+06, - 0.101046219174794693E+06, 0.101045436783694371E+06, 0.101037979396283830E+06, 0.101026389136987622E+06, 0.101011353849770458E+06, - 0.100992765156084381E+06, 0.100970520839387638E+06, 0.100944522980413691E+06, 0.100914676733503889E+06, 0.100880889510173438E+06, - 0.100843070409204898E+06, 0.100794195318855112E+06, 0.100740849916230014E+06, 0.100684368608276331E+06, 0.100625515617689191E+06, - 0.100565057571482292E+06, 0.100503753672499588E+06, 0.100442348146381337E+06, 0.100381564680888332E+06, 0.100322120082476831E+06, - 0.100265427081164002E+06, 0.100211108587006820E+06, 0.100159852906932778E+06, 0.100112309293580329E+06, 0.101124201328911135E+06, - 0.101079108320663814E+06, 0.101031809144729792E+06, 0.100982479818601947E+06, 0.100931296727433786E+06, 0.100878431465452362E+06, - 0.100824045759680885E+06, 0.100768286540631874E+06, 0.100710530566360118E+06, 0.100651851143405918E+06, 0.100592641779612633E+06, - 0.100533088300546049E+06, 0.100473351995987294E+06, 0.100413568226339557E+06, 0.100347374189164038E+06, 0.100280419558277266E+06, - 0.100213466642138825E+06, 0.100146884874704396E+06, 0.100081054126754942E+06, 0.100016363564741026E+06, 0.999532111494706915E+05, - 0.998920037667682045E+05, 0.998331579776468134E+05, 0.997771013708717801E+05, 0.997242744959584961E+05, 0.996794911425569007E+05, - 0.996421673866169731E+05, 0.996083624063458992E+05, 0.995780558571076108E+05, 0.995512438908386830E+05, 0.995279390599935141E+05, - 0.995081697090995876E+05, 0.994919788171798573E+05, 0.994794222509916144E+05, 0.994705663858296175E+05, 0.994666304399983201E+05, - 0.994716729317709396E+05, 0.994803098980725772E+05, 0.994920284915772354E+05, 0.995062941002977459E+05, 0.995225510997954116E+05, - 0.995402235083560226E+05, 0.995587157137078175E+05, 0.995774134724761680E+05, 0.995956854178548674E+05, 0.996082099438724399E+05, - 0.996146714115503564E+05, 0.996198917096476653E+05, 0.996237772972328385E+05, 0.996262556600006501E+05, 0.996272811679797160E+05, - 0.996268420791924145E+05, 0.996249688472863927E+05, 0.996217438673883153E+05, 0.996165665480622556E+05, 0.996053672464558331E+05, - 0.995949919441781822E+05, 0.995861528017038072E+05, 0.995795026742108748E+05, 0.995756196555683418E+05, 0.995749923295157205E+05, - 0.995764918417123117E+05, 0.995811371618628909E+05, 0.995900021812679042E+05, 0.996053443416097725E+05, 0.996253126869847765E+05, - 0.996485392863536254E+05, 0.996747275639752770E+05, 0.997034975235640304E+05, 0.997343816924544808E+05, 0.997668244608898967E+05, - 0.998001857951137499E+05, 0.998337502953590738E+05, 0.998667425003782409E+05, 0.998964382191309269E+05, 0.999219732315580331E+05, - 0.999453769704884326E+05, 0.999669632680838986E+05, 0.999870458961453260E+05, 0.100005916456012012E+06, 0.100023824889774987E+06, - 0.100040963571971195E+06, 0.100057455775243085E+06, 0.100073413986486979E+06, 0.100089335775104671E+06, 0.100104815244426631E+06, - 0.100119703191363587E+06, 0.100134379227022902E+06, 0.100148369375800728E+06, 0.100161370783191393E+06, 0.100173213642796953E+06, - 0.100180378799944810E+06, 0.100185526497069281E+06, 0.100189324284954535E+06, 0.100192153267272603E+06, 0.100194434190503976E+06, - 0.100196610662858875E+06, 0.100198905421094794E+06, 0.100201850991823914E+06, 0.100206163107215340E+06, 0.100212230663632377E+06, - 0.100220378132198122E+06, 0.100230869811071767E+06, 0.100245444302250398E+06, 0.100264473811748554E+06, 0.100285188354245533E+06, - 0.100306907645131752E+06, 0.100328990026887506E+06, 0.100350863943610893E+06, 0.100371839758985952E+06, 0.100391444833452260E+06, - 0.100409831169643890E+06, 0.100426823791286341E+06, 0.100442350551841242E+06, 0.100456434485740057E+06, 0.100469179887128601E+06, - 0.100480095078871280E+06, 0.100490844862516460E+06, 0.100501773469729742E+06, 0.100513473090107072E+06, 0.100529036405637875E+06, - 0.100544944618372494E+06, 0.100561407314039185E+06, 0.100578441255079553E+06, 0.100596158161423402E+06, 0.100614688506316757E+06, - 0.100634037456854698E+06, 0.100654132781311564E+06, 0.100674831301503669E+06, 0.100695930204477670E+06, 0.100717182634869590E+06, - 0.100738316734543623E+06, 0.100757949561458212E+06, 0.100778269263575014E+06, 0.100798138776316147E+06, 0.100817212656416305E+06, - 0.100835135245772617E+06, 0.100851545416907000E+06, 0.100866083297882986E+06, 0.100878398135237148E+06, 0.100888156496614407E+06, - 0.100895050095971907E+06, 0.100897946875170004E+06, 0.100893038607802475E+06, 0.100884438418173842E+06, 0.100872056807847897E+06, - 0.100855733686039923E+06, 0.100836196267254127E+06, 0.100813309503127763E+06, 0.100786948600525633E+06, 0.100756997497101227E+06, - 0.100723347939641535E+06, 0.100681497385685245E+06, 0.100634489632593322E+06, 0.100584469640955329E+06, 0.100531975070484972E+06, - 0.100477580490852386E+06, 0.100421885399875624E+06, 0.100365503956835804E+06, 0.100309056337240749E+06, 0.100253161585176160E+06, - 0.100199112753698049E+06, 0.100147837599931416E+06, 0.100098570404209735E+06, 0.100051904767761502E+06, 0.100008417383464068E+06, - 0.101133829804470908E+06, 0.101086063734912168E+06, 0.101036163378778583E+06, 0.100984272823056410E+06, 0.100930541473297533E+06, - 0.100875120408097937E+06, 0.100818158832696005E+06, 0.100759800682388610E+06, 0.100700181428799915E+06, 0.100639425144117529E+06, - 0.100577641880169904E+06, 0.100514925420599073E+06, 0.100451351465310479E+06, 0.100382775391041228E+06, 0.100313407558045423E+06, - 0.100244124043691409E+06, 0.100175160300200252E+06, 0.100106643005048623E+06, 0.100038955227867787E+06, 0.999724957502307661E+05, - 0.999076781431158888E+05, 0.998449303055831406E+05, 0.997846944474534976E+05, 0.997274274929867825E+05, 0.996741803525597352E+05, - 0.996341923290063423E+05, 0.995977652427823923E+05, 0.995648719529626542E+05, 0.995354913787664409E+05, 0.995096084222995123E+05, - 0.994872134460891248E+05, 0.994683012796486000E+05, 0.994528697284307418E+05, 0.994409175579627627E+05, 0.994324419258456037E+05, - 0.994284685420939932E+05, 0.994314645232595940E+05, 0.994376508028579119E+05, 0.994465880324430618E+05, 0.994578122019961011E+05, - 0.994708370980191394E+05, 0.994851569440643361E+05, 0.995002493657292362E+05, 0.995155788435459253E+05, 0.995306008387735346E+05, - 0.995442855494334071E+05, 0.995482724169068970E+05, 0.995511559961705934E+05, 0.995528872179506288E+05, 0.995534386606523331E+05, - 0.995528106454166118E+05, 0.995510380683528929E+05, 0.995481980155677447E+05, 0.995444181794313772E+05, 0.995389426918443642E+05, - 0.995326299748121528E+05, 0.995248068651720969E+05, 0.995181203502452699E+05, 0.995131485287031392E+05, 0.995104093839186244E+05, - 0.995103487778951967E+05, 0.995133292577804386E+05, 0.995196200330811116E+05, 0.995293885226779821E+05, 0.995426939068978973E+05, - 0.995594831481808505E+05, 0.995804466354603064E+05, 0.996042013257502404E+05, 0.996303970501146687E+05, 0.996586123005633417E+05, - 0.996883528051014437E+05, 0.997188265847352159E+05, 0.997490367113701504E+05, 0.997788526495865081E+05, 0.998078707819837873E+05, - 0.998356993938613014E+05, 0.998619800562695164E+05, 0.998837326032437413E+05, 0.999030588156207523E+05, 0.999213959026974480E+05, - 0.999389528776631778E+05, 0.999559737390779337E+05, 0.999728528505193826E+05, 0.999889548460716323E+05, 0.100004292017804837E+06, - 0.100018822423468373E+06, 0.100032457501698547E+06, 0.100045070251751036E+06, 0.100056503593779649E+06, 0.100066444229329674E+06, - 0.100073267298309525E+06, 0.100078208907556284E+06, 0.100081428306994378E+06, 0.100083145646425299E+06, 0.100084490398295631E+06, - 0.100085214798590619E+06, 0.100085235536889129E+06, 0.100083644141418641E+06, 0.100082296767241191E+06, 0.100081573165770096E+06, - 0.100081814208376789E+06, 0.100083316094140551E+06, 0.100086326553815597E+06, 0.100092077248113128E+06, 0.100100913993150592E+06, - 0.100111107468981296E+06, 0.100122323217253404E+06, 0.100134231875447673E+06, 0.100146529461883110E+06, 0.100158953738958458E+06, - 0.100172103739167927E+06, 0.100185442550333013E+06, 0.100198870033114930E+06, 0.100214743046030431E+06, 0.100230501702414200E+06, - 0.100246186063517438E+06, 0.100261900880765723E+06, 0.100278280962620207E+06, 0.100294975745097370E+06, 0.100311878419328103E+06, - 0.100329065054564679E+06, 0.100346610730169734E+06, 0.100364576981339662E+06, 0.100382997190169379E+06, 0.100401860048637522E+06, - 0.100421460558640218E+06, 0.100441987614432976E+06, 0.100463274519939529E+06, 0.100485156332498926E+06, 0.100507667562079601E+06, - 0.100531755712309474E+06, 0.100555537683995659E+06, 0.100578784151641899E+06, 0.100601239956125326E+06, 0.100622628756313949E+06, - 0.100641873088256354E+06, 0.100658680264014634E+06, 0.100673598187900920E+06, 0.100686312726101605E+06, 0.100696503456104270E+06, - 0.100703849613094353E+06, 0.100704152415214849E+06, 0.100700762505721214E+06, 0.100694332357036590E+06, 0.100684801738842943E+06, - 0.100672137064367969E+06, 0.100656329651135165E+06, 0.100637393206196401E+06, 0.100615360755861184E+06, 0.100590281222544916E+06, - 0.100562215831141861E+06, 0.100526781016220033E+06, 0.100486348156266336E+06, 0.100442798181998849E+06, 0.100397163429546563E+06, - 0.100349807344903311E+06, 0.100301139976506107E+06, 0.100251607747954069E+06, 0.100201684250218939E+06, 0.100151862062679153E+06, - 0.100102645581508201E+06, 0.100056044918004729E+06, 0.100011301942910883E+06, 0.999684520456376777E+05, 0.999279531311431929E+05, - 0.998902646792392770E+05, 0.101126663346454399E+06, 0.101077325354608969E+06, 0.101025975734916894E+06, 0.100972737972671399E+06, - 0.100917744423974829E+06, 0.100861133803490855E+06, 0.100803048766821448E+06, 0.100743633625432005E+06, 0.100683032233185906E+06, - 0.100621386084403202E+06, 0.100558832663878042E+06, 0.100495211427552291E+06, 0.100428081646754872E+06, 0.100360053702616802E+06, - 0.100291421804985934E+06, 0.100222501857581025E+06, 0.100153629396011398E+06, 0.100085157752426705E+06, 0.100017456492403435E+06, - 0.999509101650603116E+05, 0.998859174013813172E+05, 0.998228903882164013E+05, 0.997622547363343474E+05, 0.997044497501409787E+05, - 0.996565808532324445E+05, 0.996171954030033376E+05, 0.995813735590216529E+05, 0.995490780595074320E+05, 0.995202664706442010E+05, - 0.994948916653312772E+05, 0.994731497863732366E+05, 0.994547373765991215E+05, 0.994395024448596523E+05, 0.994273918334258487E+05, - 0.994183417080185318E+05, 0.994131115873192466E+05, 0.994138210062121798E+05, 0.994170868554473127E+05, 0.994225572846895811E+05, - 0.994298923767942179E+05, 0.994385978253560606E+05, 0.994482495116238133E+05, 0.994584440096453618E+05, 0.994687785322086420E+05, - 0.994788546658055129E+05, 0.994882828035313869E+05, 0.994927040708071727E+05, 0.994917547439376503E+05, 0.994895539007886109E+05, - 0.994862075166797877E+05, 0.994818501581585733E+05, 0.994766470759525691E+05, 0.994707963627129502E+05, 0.994645310337857954E+05, - 0.994581208250226337E+05, 0.994518734280974313E+05, 0.994461348017268174E+05, 0.994415182672292285E+05, 0.994388346879257297E+05, - 0.994384357346413162E+05, 0.994406125032009149E+05, 0.994455917032776051E+05, 0.994535286747415666E+05, 0.994645016916688619E+05, - 0.994785078337676387E+05, 0.994954607091662765E+05, 0.995151903074341826E+05, 0.995379744989390892E+05, 0.995645762978403654E+05, - 0.995919660907828365E+05, 0.996199268533732247E+05, 0.996482101418556267E+05, 0.996765332991438627E+05, 0.997045938426658686E+05, - 0.997320840835444978E+05, 0.997587053657859215E+05, 0.997841813092843222E+05, 0.998082694645679585E+05, 0.998307708426059398E+05, - 0.998521847777656949E+05, 0.998731316336951131E+05, 0.998915223579208832E+05, 0.999088069900928822E+05, 0.999250655468217301E+05, - 0.999403321942196199E+05, 0.999545992766920099E+05, 0.999678219791941956E+05, 0.999799234377201792E+05, 0.999908557408674824E+05, - 0.100000288315772239E+06, 0.100007974659642932E+06, 0.100013912274213857E+06, 0.100018152445268570E+06, 0.100020792433534516E+06, - 0.100021965384116600E+06, 0.100021828600707202E+06, 0.100018978825766098E+06, 0.100014638020503815E+06, 0.100010038309740252E+06, - 0.100005576575099418E+06, 0.100001604858675491E+06, 0.999984320892866672E+05, 0.999963266886948113E+05, 0.999958737477183749E+05, - 0.999972975927051302E+05, 0.100000048030566773E+06, 0.100004042344745598E+06, 0.100009194673973179E+06, 0.100015426118827090E+06, - 0.100022673026545686E+06, 0.100031009563329135E+06, 0.100040766570146734E+06, 0.100051217540583049E+06, 0.100062248668533124E+06, - 0.100073786795171531E+06, 0.100085797503990121E+06, 0.100098280610450573E+06, 0.100111262656178049E+06, 0.100125001802413579E+06, - 0.100139645695878644E+06, 0.100154900063508263E+06, 0.100170710309353148E+06, 0.100187004814548171E+06, 0.100203682971120987E+06, - 0.100220602392753455E+06, 0.100237565502663623E+06, 0.100256278549938754E+06, 0.100276900404893633E+06, 0.100298794291387065E+06, - 0.100320557514765664E+06, 0.100342058165774986E+06, 0.100363130678741916E+06, 0.100383577435456726E+06, 0.100403171366828377E+06, - 0.100421659429775435E+06, 0.100438766794516225E+06, 0.100454201546808938E+06, 0.100467659691497232E+06, 0.100478830237807808E+06, - 0.100481024801078907E+06, 0.100479810484167552E+06, 0.100476403382797740E+06, 0.100470673041393165E+06, 0.100462504496619513E+06, - 0.100451800234604845E+06, 0.100438481209722173E+06, 0.100422487058078696E+06, 0.100403775642287073E+06, 0.100382322062990715E+06, - 0.100358117267813446E+06, 0.100327534199358997E+06, 0.100293850879764213E+06, 0.100257806725219358E+06, 0.100219741686727677E+06, - 0.100180023194298759E+06, 0.100139040711945461E+06, 0.100097200477411025E+06, 0.100054920551059535E+06, 0.100012626265403043E+06, - 0.999707461374165723E+05, 0.999303503014407033E+05, 0.998922229704366764E+05, 0.998554721656402544E+05, 0.998204850080980395E+05, - 0.997876409225251264E+05, 0.997573084048583696E+05, 0.101103863341862932E+06, 0.101054198041262367E+06, 0.101002678396138304E+06, - 0.100949414469850730E+06, 0.100894527371675096E+06, 0.100838147558637153E+06, 0.100780413214267071E+06, 0.100721468731159111E+06, - 0.100661463324523051E+06, 0.100600549803942500E+06, 0.100538495641508489E+06, 0.100474499779926511E+06, 0.100409614880186520E+06, - 0.100344074690081019E+06, 0.100278137807477731E+06, 0.100212086086552372E+06, 0.100146223109295490E+06, 0.100080872747272268E+06, - 0.100016377835126099E+06, 0.999530989729176799E+05, 0.998914134690468200E+05, 0.998317144291724107E+05, 0.997744099892116501E+05, - 0.997208338934957865E+05, 0.996799309689324291E+05, 0.996422327801534993E+05, 0.996077247089604498E+05, 0.995763830833266111E+05, - 0.995481752007196337E+05, 0.995230592311468208E+05, 0.995009839760444302E+05, 0.994818884619951277E+05, 0.994657013515687577E+05, - 0.994523401572802686E+05, 0.994417102486785589E+05, 0.994338127166474005E+05, 0.994291184813256987E+05, 0.994266081659517949E+05, - 0.994259833524572168E+05, 0.994269351914163999E+05, 0.994291475057475909E+05, 0.994323001129119220E+05, 0.994360724062380032E+05, - 0.994401472289394151E+05, 0.994442150616938598E+05, 0.994479785254193557E+05, 0.994511571742526139E+05, 0.994472284598653205E+05, - 0.994408965796853736E+05, 0.994339336034472362E+05, 0.994264710020695638E+05, 0.994186660048548511E+05, 0.994107025256855122E+05, - 0.994027916086733312E+05, 0.993951711926945572E+05, 0.993881049497915083E+05, 0.993818799057818542E+05, 0.993768025040628709E+05, - 0.993745371453054540E+05, 0.993758273945832625E+05, 0.993797480709728989E+05, 0.993864179439653672E+05, 0.993959015946626314E+05, - 0.994106666848780587E+05, 0.994280957797027659E+05, 0.994479062249146809E+05, 0.994699024606817256E+05, 0.994938326370272989E+05, - 0.995193970618178137E+05, 0.995462575961586117E+05, 0.995732238058578514E+05, 0.995996836683722795E+05, 0.996264076540508540E+05, - 0.996531520384603791E+05, 0.996796729134591151E+05, 0.997057352581914602E+05, 0.997311214531925361E+05, 0.997565307292698708E+05, - 0.997809628500159452E+05, 0.998041926037547237E+05, 0.998260922842872533E+05, 0.998465616497438023E+05, 0.998655323213428928E+05, - 0.998829702013785281E+05, 0.998988759405013552E+05, 0.999132835855504527E+05, 0.999267531384376343E+05, 0.999401187534305645E+05, - 0.999522829859957856E+05, 0.999629705900948175E+05, 0.999720750719777716E+05, 0.999795225775888684E+05, 0.999852704402040836E+05, - 0.999893033756584045E+05, 0.999916276698245056E+05, 0.999912215328864258E+05, 0.999874978505536856E+05, 0.999827294697511534E+05, - 0.999772668831095216E+05, 0.999714403004270425E+05, 0.999655543840146129E+05, 0.999598844544293243E+05, 0.999546738384171913E+05, - 0.999501503361758805E+05, 0.999464612795733119E+05, 0.999436472754112765E+05, 0.999417478240415512E+05, 0.999407845190346270E+05, - 0.999407674168311496E+05, 0.999417003681598144E+05, 0.999435850419050112E+05, 0.999466778359479795E+05, 0.999509741170870548E+05, - 0.999561184478715149E+05, 0.999620266396879451E+05, 0.999686260435519798E+05, 0.999758509523019893E+05, 0.999836356497705565E+05, - 0.999919049957114039E+05, 0.100000562486864073E+06, 0.100011784952549118E+06, 0.100025750768122278E+06, 0.100039950549839836E+06, - 0.100054145017178846E+06, 0.100068316891848794E+06, 0.100082450146767165E+06, 0.100096523400557431E+06, 0.100110501610887819E+06, - 0.100124326095454249E+06, 0.100137903024072584E+06, 0.100153035210029513E+06, 0.100168028234449826E+06, 0.100182528489386037E+06, - 0.100196311615898419E+06, 0.100209129758123207E+06, 0.100220714305906484E+06, 0.100227674075086179E+06, 0.100228582862959636E+06, - 0.100228182141282334E+06, 0.100226441566948473E+06, 0.100223301716988630E+06, 0.100218680617939594E+06, 0.100212480375930187E+06, - 0.100204593660852275E+06, 0.100193237399701000E+06, 0.100179608999797390E+06, 0.100163806561057383E+06, 0.100145763706322687E+06, - 0.100124166108882637E+06, 0.100097853920290698E+06, 0.100069603397772837E+06, 0.100039598196173276E+06, 0.100008052525304520E+06, - 0.999752085984543955E+05, 0.999413336779185047E+05, 0.999067168729345140E+05, 0.998716658233869821E+05, 0.998365033809807937E+05, - 0.998015643788216548E+05, 0.997673503212209471E+05, 0.997368095318123815E+05, 0.997072417009385681E+05, 0.996789372306682053E+05, - 0.996521942416031088E+05, 0.996273141486202512E+05, 0.996045978845247591E+05, 0.101067589111213412E+06, 0.101018770688517165E+06, - 0.100968154311929655E+06, 0.100916004392167699E+06, 0.100862587963118029E+06, 0.100807829042751429E+06, 0.100751860689524168E+06, - 0.100694824678955032E+06, 0.100636870575220571E+06, 0.100578085861079686E+06, 0.100518387120511878E+06, 0.100457910498338359E+06, - 0.100396827710058526E+06, 0.100335334776766380E+06, 0.100273650785659062E+06, 0.100212016619918053E+06, 0.100150693670614579E+06, - 0.100089962540906286E+06, 0.100030121749858867E+06, 0.999714864397286292E+05, 0.999143870864777564E+05, 0.998591682086720684E+05, - 0.998061870647466858E+05, 0.997614041189860436E+05, 0.997232133410041570E+05, 0.996877601571912237E+05, 0.996550329117300425E+05, - 0.996250097998356068E+05, 0.995976585142769036E+05, 0.995729358349222894E+05, 0.995507871467952355E+05, 0.995311458738776855E+05, - 0.995139328178480646E+05, 0.994990553930397000E+05, 0.994864067510919558E+05, 0.994758647909620777E+05, 0.994662936172032933E+05, - 0.994584116138104437E+05, 0.994520440064580325E+05, 0.994469670430250553E+05, 0.994429511205758317E+05, 0.994397638951787376E+05, - 0.994371735196124209E+05, 0.994349519828108314E+05, 0.994328785098660155E+05, 0.994307429622300406E+05, 0.994283491541375697E+05, - 0.994255179730021191E+05, 0.994164893114872393E+05, 0.994067289084808290E+05, 0.993968888922061742E+05, 0.993871232560968492E+05, - 0.993776052903232921E+05, 0.993685268314349669E+05, 0.993600967438642401E+05, 0.993525384531912714E+05, 0.993461969112091901E+05, - 0.993435709722199681E+05, 0.993430289823759958E+05, 0.993448240458555374E+05, 0.993518125064813066E+05, 0.993620332314667612E+05, - 0.993746322170980275E+05, 0.993895541802843509E+05, 0.994066995366652700E+05, 0.994259271220238734E+05, 0.994470579336317896E+05, - 0.994698797554098419E+05, 0.994941524985713913E+05, 0.995196140617028141E+05, 0.995459864926176379E+05, 0.995729822203312797E+05, - 0.996003101205446874E+05, 0.996273070851956145E+05, 0.996547798040555062E+05, 0.996819738131592894E+05, 0.997085378998868837E+05, - 0.997343278080748278E+05, 0.997592022275180498E+05, 0.997830289890008135E+05, 0.998056904289906088E+05, 0.998270877683784638E+05, - 0.998471443932554248E+05, 0.998658079734391795E+05, 0.998830514038870024E+05, 0.998996025676379795E+05, 0.999153229697452334E+05, - 0.999295566639472963E+05, 0.999422722019988432E+05, 0.999534500054842792E+05, 0.999630795823789667E+05, 0.999711562553596450E+05, - 0.999776774721563124E+05, 0.999826387612595136E+05, 0.999854644320731022E+05, 0.999828794177739328E+05, 0.999789847225893318E+05, - 0.999739838414557307E+05, 0.999680998532223457E+05, 0.999615553821963986E+05, 0.999545658866950980E+05, 0.999473341203756863E+05, - 0.999400456392968772E+05, 0.999327953721481608E+05, 0.999256989141568774E+05, 0.999189700236989156E+05, 0.999127048128768074E+05, - 0.999069798769329791E+05, 0.999018544683639047E+05, 0.998973722234758170E+05, 0.998935621850836178E+05, 0.998904388907014218E+05, - 0.998896448727687675E+05, 0.998900344972452294E+05, 0.998911970826382749E+05, 0.998931396187662176E+05, 0.998958769268335309E+05, - 0.998994275255013781E+05, 0.999038084460577520E+05, 0.999090289824781794E+05, 0.999150833667861443E+05, 0.999217240524284571E+05, - 0.999282473433497362E+05, 0.999348833579850179E+05, 0.999415375242985901E+05, 0.999481154404054105E+05, 0.999545171017064131E+05, - 0.999606302661866066E+05, 0.999663230149861483E+05, 0.999714356178636663E+05, 0.999757718627941504E+05, 0.999790900530105428E+05, - 0.999810939111108019E+05, 0.999819561511524662E+05, 0.999789948862129386E+05, 0.999752827398946683E+05, 0.999708888630344300E+05, - 0.999658466886194801E+05, 0.999601566475907457E+05, 0.999537895884533064E+05, 0.999466907368066168E+05, 0.999387840276392963E+05, - 0.999299766462147236E+05, 0.999201636218782805E+05, 0.999092323322767916E+05, 0.998970667923400615E+05, 0.998831789013588714E+05, - 0.998636939941647142E+05, 0.998431119746374316E+05, 0.998214963412640354E+05, 0.997970862666926550E+05, 0.997712444170942908E+05, - 0.997445906917362154E+05, 0.997173029439411330E+05, 0.996895795051780588E+05, 0.996616375682111830E+05, 0.996337113354519679E+05, - 0.996060500180081726E+05, 0.995789157595469587E+05, 0.995557562522905791E+05, 0.995337048495515774E+05, 0.995126888312002120E+05, - 0.994929130817774712E+05, 0.994745951235418033E+05, 0.994579612022724759E+05, 0.994432427594338078E+05, 0.101021034351216382E+06, - 0.100974523158164724E+06, 0.100926407272977900E+06, 0.100876804093661282E+06, 0.100825841471867636E+06, 0.100773656698396328E+06, - 0.100720395485641522E+06, 0.100666210969990992E+06, 0.100612099345619077E+06, 0.100557249279083626E+06, 0.100501677971650905E+06, - 0.100445572670880414E+06, 0.100389253853780203E+06, 0.100332968905338319E+06, 0.100276665148379936E+06, 0.100220537893264976E+06, - 0.100164799821054621E+06, 0.100109679736971462E+06, 0.100055421257730064E+06, 0.100002281430952105E+06, 0.999505292822571937E+05, - 0.999004442827473104E+05, 0.998530843548639095E+05, 0.998156761219489854E+05, 0.997805278523404413E+05, 0.997476323427424795E+05, - 0.997169731242686539E+05, 0.996885239311042969E+05, 0.996622481616842706E+05, 0.996380983225617529E+05, 0.996160154459489713E+05, - 0.995959284728124476E+05, 0.995777535943772964E+05, 0.995613935458951310E+05, 0.995467368475156691E+05, 0.995336569880241732E+05, - 0.995208266243795515E+05, 0.995087482639954542E+05, 0.994977965334250039E+05, 0.994878249241337762E+05, 0.994786826211323350E+05, - 0.994702168427006691E+05, 0.994622751834644587E+05, 0.994547079083998542E+05, 0.994473701327138842E+05, 0.994401238077413873E+05, - 0.994328394160198222E+05, 0.994254188335577346E+05, 0.994184404922492249E+05, 0.994087127432848210E+05, 0.993987930235803360E+05, - 0.993894574291334138E+05, 0.993808966627234331E+05, 0.993733080854502186E+05, 0.993668924009867187E+05, 0.993618498078672274E+05, - 0.993583756460734730E+05, 0.993566555807828554E+05, 0.993568603838800627E+05, 0.993591403923829785E+05, 0.993636197419046657E+05, - 0.993703904921866488E+05, 0.993811197203903430E+05, 0.993950856599565304E+05, 0.994111457979586703E+05, 0.994291602554974379E+05, - 0.994489675444759632E+05, 0.994703876196585625E+05, 0.994932253351752443E+05, 0.995172741944998997E+05, 0.995426559018634871E+05, - 0.995694776827033347E+05, 0.995970389008766942E+05, 0.996251091056232981E+05, 0.996534496905636333E+05, 0.996818187512539298E+05, - 0.997099760279327893E+05, 0.997374141751707793E+05, 0.997622618739524623E+05, 0.997862435467323085E+05, 0.998092414887019404E+05, - 0.998311505958143825E+05, 0.998518805596518214E+05, 0.998718102890837035E+05, 0.998910750046514877E+05, 0.999090219912788452E+05, - 0.999255559670365765E+05, 0.999405919139345788E+05, 0.999540538378546335E+05, 0.999658730563341524E+05, 0.999759860512857849E+05, - 0.999843319314751134E+05, 0.999908495555851987E+05, 0.999954743712658383E+05, 0.999944404784162907E+05, 0.999915968456238916E+05, - 0.999872439634975599E+05, 0.999816171531630534E+05, 0.999749362615833961E+05, 0.999674042229870247E+05, 0.999592064518093102E+05, - 0.999505109123499715E+05, 0.999414687118180882E+05, 0.999323665105546679E+05, 0.999233975283402833E+05, 0.999144981369005836E+05, - 0.999058003303556034E+05, 0.998974241845954093E+05, 0.998894782591478870E+05, 0.998820595750179200E+05, 0.998752530846157169E+05, - 0.998691305778080132E+05, 0.998637489957377547E+05, 0.998586746844062873E+05, 0.998541772928227729E+05, 0.998502966627068381E+05, - 0.998469966131329420E+05, 0.998442320106148400E+05, 0.998419453691209637E+05, 0.998400626589490130E+05, 0.998384883490106731E+05, - 0.998370997211475333E+05, 0.998357405118142487E+05, 0.998339247931384743E+05, 0.998316580178510631E+05, 0.998293639855545480E+05, - 0.998269017565975373E+05, 0.998241201967542729E+05, 0.998208528853709577E+05, 0.998098081032783375E+05, 0.997954370825381193E+05, - 0.997808296869748592E+05, 0.997662255405725009E+05, 0.997518145513712225E+05, 0.997377288090598740E+05, 0.997240360167264153E+05, - 0.997115902471897134E+05, 0.997002807779587602E+05, 0.996889928911353927E+05, 0.996776906921413611E+05, 0.996663184120892256E+05, - 0.996548031405013462E+05, 0.996430577981460665E+05, 0.996309842516777717E+05, 0.996172720856796950E+05, 0.995989960463366879E+05, - 0.995803026148819772E+05, 0.995612677891255880E+05, 0.995419614978694444E+05, 0.995224517021402135E+05, 0.995028080337064894E+05, - 0.994831049415358284E+05, 0.994634243322594411E+05, 0.994438577049017331E+05, 0.994245077928505052E+05, 0.994054897371244297E+05, - 0.993869318243143207E+05, 0.993690043020055746E+05, 0.993554308490509575E+05, 0.993412332136938494E+05, 0.993276308539287711E+05, - 0.993151162456799066E+05, 0.993038276851009432E+05, 0.992939167429839872E+05, 0.992855451787946949E+05, 0.992788820449725754E+05, - 0.100964847544612581E+06, 0.100921528597807934E+06, 0.100876819617514033E+06, 0.100830819119977881E+06, 0.100783635790840315E+06, - 0.100735387872604493E+06, 0.100686849362626730E+06, 0.100638850722815405E+06, 0.100589987206303587E+06, 0.100540391690949080E+06, - 0.100490207838124057E+06, 0.100439589213655403E+06, 0.100388698427470110E+06, 0.100337706295036201E+06, 0.100286791022897989E+06, - 0.100236137419730803E+06, 0.100185936133379830E+06, 0.100136382913311769E+06, 0.100087677896791603E+06, 0.100040024915916016E+06, - 0.999936308213850425E+05, 0.999487048175969685E+05, 0.999098959263045108E+05, 0.998760905821691704E+05, 0.998440744381323602E+05, - 0.998138388707919803E+05, 0.997853639904371375E+05, 0.997586190608742472E+05, 0.997335630315415328E+05, 0.997101451748205582E+05, - 0.996883058208672010E+05, 0.996679771815481945E+05, 0.996490842541338643E+05, 0.996315457942174835E+05, 0.996152753458579973E+05, - 0.996001823151213321E+05, 0.995855679555827810E+05, 0.995705558364965109E+05, 0.995563634129148850E+05, 0.995429286082849721E+05, - 0.995301928975228802E+05, 0.995181034121451230E+05, 0.995066149374921079E+05, 0.994956917495421949E+05, 0.994853092368055950E+05, - 0.994754552514231473E+05, 0.994661311329740856E+05, 0.994573523487461207E+05, 0.994491486954472930E+05, 0.994415640096655407E+05, - 0.994332401191460376E+05, 0.994242851325149240E+05, 0.994162875697421550E+05, 0.994093942955236271E+05, 0.994037502528714977E+05, - 0.993994957235938200E+05, 0.993967633485402912E+05, 0.993956749460767023E+05, 0.993963381773120200E+05, 0.993988431167032832E+05, - 0.994032587965396087E+05, 0.994096298031491460E+05, 0.994179730111528625E+05, 0.994282745493404218E+05, 0.994404870973938814E+05, - 0.994568186139204772E+05, 0.994754658271223161E+05, 0.994958964449326450E+05, 0.995177045414582390E+05, 0.995407458140571835E+05, - 0.995648609237595665E+05, 0.995898777201360062E+05, 0.996156137473152776E+05, 0.996418789751202567E+05, 0.996684786927591776E+05, - 0.996952164972683240E+05, 0.997218973051197536E+05, 0.997483303132390720E+05, 0.997743318352098577E+05, 0.997997279397391831E+05, - 0.998243568215117266E+05, 0.998484029817739647E+05, 0.998715185643880104E+05, 0.998929709407826740E+05, 0.999121391071011894E+05, - 0.999300598538423073E+05, 0.999466118827012979E+05, 0.999616803026846756E+05, 0.999751558213879034E+05, 0.999869336418048333E+05, - 0.999969120922718139E+05, 0.100004991024896648E+06, 0.100011070025070803E+06, 0.100011361902027944E+06, 0.100009689874259901E+06, - 0.100006354866167210E+06, 0.100001521961853068E+06, 0.999953569047140481E+05, 0.999880229251482233E+05, 0.999796782529097254E+05, - 0.999704742484093149E+05, 0.999605540801449097E+05, 0.999500518713602651E+05, 0.999395620634615480E+05, 0.999293797224061564E+05, - 0.999189780037119199E+05, 0.999084634603603772E+05, 0.998979305732036155E+05, 0.998874607924644370E+05, 0.998771215026191203E+05, - 0.998669648551638238E+05, 0.998570264274643996E+05, 0.998473236800365266E+05, 0.998378541987464268E+05, 0.998280094515223464E+05, - 0.998183015118441253E+05, 0.998087584599398106E+05, 0.997993088922536845E+05, 0.997898632369703118E+05, 0.997803110261358233E+05, - 0.997705176970055909E+05, 0.997603209573400527E+05, 0.997495267616314668E+05, 0.997338504371996823E+05, 0.997144148866953765E+05, - 0.996946194589021616E+05, 0.996748889962201501E+05, 0.996543973099300492E+05, 0.996333799061114987E+05, 0.996120632551793096E+05, - 0.995906575155593600E+05, 0.995693496108486434E+05, 0.995482968337894126E+05, 0.995276211300861032E+05, 0.995074041910853848E+05, - 0.994876834578204434E+05, 0.994684491110481467E+05, 0.994496420937635121E+05, 0.994311531852242333E+05, 0.994128231195840344E+05, - 0.993950629246981553E+05, 0.993796705843183881E+05, 0.993609699415756186E+05, 0.993418055421917088E+05, 0.993226794637357671E+05, - 0.993037059687493893E+05, 0.992849845648908376E+05, 0.992666033190360467E+05, 0.992486420429716236E+05, 0.992311752996093419E+05, - 0.992142751883332967E+05, 0.991980138777397078E+05, 0.991824658634138323E+05, 0.991677099373037345E+05, 0.991538308635238063E+05, - 0.991409207629147422E+05, 0.991303845164175582E+05, 0.991233478553789610E+05, 0.991173123854586884E+05, 0.991122941300806997E+05, - 0.991083274217430298E+05, 0.991054636978437338E+05, 0.991037699911700765E+05, 0.991033272031231463E+05, 0.991042282352598704E+05, - 0.991065760427079076E+05, 0.100899327711180042E+06, 0.100860014589195416E+06, 0.100819531202107522E+06, 0.100777959510744709E+06, - 0.100735390607726556E+06, 0.100694036465613695E+06, 0.100652089405901919E+06, 0.100609367247066592E+06, 0.100565963600471325E+06, - 0.100521982301190656E+06, 0.100477536683349797E+06, 0.100432748853070138E+06, 0.100387748961175384E+06, 0.100342674477306704E+06, - 0.100297669466538631E+06, 0.100252883868987425E+06, 0.100208472782261073E+06, 0.100164595745919316E+06, 0.100121416026401625E+06, - 0.100079099900142377E+06, 0.100037815931840771E+06, 0.999981416469988617E+05, 0.999662389876496309E+05, 0.999356748708466621E+05, - 0.999064575822306797E+05, 0.998785877324428584E+05, 0.998520583580002858E+05, 0.998268551135048328E+05, 0.998029565487271466E+05, - 0.997803344633126544E+05, 0.997589543309666333E+05, 0.997387757839643018E+05, 0.997197531476882141E+05, 0.997018360135869007E+05, - 0.996849698374662257E+05, 0.996690965483438340E+05, 0.996541551512074802E+05, 0.996382689559327409E+05, 0.996225861026435014E+05, - 0.996075569737299666E+05, 0.995931690202676109E+05, 0.995794128974490304E+05, 0.995662834351470083E+05, 0.995537804808199580E+05, - 0.995419095816340414E+05, 0.995306824727639178E+05, 0.995201173394836951E+05, 0.995102388219246932E+05, 0.995010777333177539E+05, - 0.994926704652096669E+05, 0.994850580565927958E+05, 0.994782849081547320E+05, 0.994712945317966660E+05, 0.994652135801002441E+05, - 0.994603804881314572E+05, 0.994568932856863394E+05, 0.994548423780885496E+05, 0.994543085284921108E+05, 0.994553608083860745E+05, - 0.994580545552721160E+05, 0.994624293810699601E+05, 0.994689205148530309E+05, 0.994771599445407046E+05, 0.994871232315969537E+05, - 0.994987933987223369E+05, 0.995121358180468815E+05, 0.995270974554495333E+05, 0.995436065119199775E+05, 0.995623452046183083E+05, - 0.995829609157189843E+05, 0.996045871363499173E+05, 0.996270734208106005E+05, 0.996502628846515872E+05, 0.996739938804089179E+05, - 0.996981017517049913E+05, 0.997224206254554738E+05, 0.997467852001343563E+05, 0.997710324871725461E+05, 0.997951466602976434E+05, - 0.998195365345201863E+05, 0.998432686447168817E+05, 0.998661797675172566E+05, 0.998881192989034753E+05, 0.999089497794278432E+05, - 0.999285470134942298E+05, 0.999467997752335650E+05, 0.999636091025751084E+05, 0.999788871899545629E+05, 0.999925558984901872E+05, - 0.100004544910230834E+06, 0.100014789560105870E+06, 0.100022807416958167E+06, 0.100024265952704969E+06, 0.100023783498597622E+06, - 0.100021339437537274E+06, 0.100017269778783608E+06, 0.100011871918673860E+06, 0.100005243624383627E+06, 0.999974886843563872E+05, - 0.999887143337349553E+05, 0.999790290942598513E+05, 0.999685409989449690E+05, 0.999573561671147618E+05, 0.999457665900857537E+05, - 0.999339297350767738E+05, 0.999216537925987359E+05, 0.999089986755408318E+05, 0.998960156700364460E+05, 0.998827458376240684E+05, - 0.998692184851955972E+05, 0.998554496711306274E+05, 0.998414407220986322E+05, 0.998266607131311466E+05, 0.998100194463602238E+05, - 0.997926225952954846E+05, 0.997741943883323111E+05, 0.997546758201429911E+05, 0.997340957313024119E+05, 0.997124527623238246E+05, - 0.996897658681415196E+05, 0.996660748766462057E+05, 0.996414402768971777E+05, 0.996159421531026164E+05, 0.995896781945527619E+05, - 0.995627607309631567E+05, 0.995353127665240754E+05, 0.995074630135256157E+05, 0.994793399566985754E+05, 0.994514054125879338E+05, - 0.994238487412724935E+05, 0.993966902679466439E+05, 0.993700475395201356E+05, 0.993440177799105440E+05, 0.993186743649216805E+05, - 0.992940638036397431E+05, 0.992702032829608506E+05, 0.992470788181921816E+05, 0.992246440384727030E+05, 0.992011645870204229E+05, - 0.991746701100545615E+05, 0.991489545634662645E+05, 0.991241218039765226E+05, 0.991002500071589602E+05, 0.990773923979805404E+05, - 0.990555784783537238E+05, 0.990348157029355934E+05, 0.990159736965085758E+05, 0.989981835313982592E+05, 0.989814199610305950E+05, - 0.989657585620708269E+05, 0.989512713805230014E+05, 0.989380287548638735E+05, 0.989261010103145527E+05, 0.989155600070171640E+05, - 0.989065271083586849E+05, 0.989035472935256403E+05, 0.989017382893972535E+05, 0.989010885106625501E+05, 0.989015950018414442E+05, - 0.989032643180148880E+05, 0.989061129372854630E+05, 0.989101672753579624E+05, 0.989154633681022387E+05, 0.989220462827519368E+05, - 0.989299693127524224E+05, 0.989392930054068274E+05, 0.100824204136130124E+06, 0.100789629875414903E+06, 0.100754101269738283E+06, - 0.100718965766187423E+06, 0.100683784943369043E+06, 0.100647901733698469E+06, 0.100611367338035154E+06, 0.100574242617115160E+06, - 0.100536597536512694E+06, 0.100498510595931759E+06, 0.100460068244709808E+06, 0.100421364285146075E+06, 0.100382499264969942E+06, - 0.100343579859943900E+06, 0.100304718247249199E+06, 0.100266031469940950E+06, 0.100227640792377366E+06, 0.100189671046138596E+06, - 0.100152249965554060E+06, 0.100115507511560325E+06, 0.100079575182221481E+06, 0.100047602801154819E+06, 0.100019322376832803E+06, - 0.999920409995853261E+05, 0.999657674355637573E+05, 0.999405058915761474E+05, 0.999162559646318405E+05, 0.998930126550737332E+05, - 0.998707664374257292E+05, 0.998495033822863334E+05, 0.998292053217475768E+05, 0.998098500498988724E+05, 0.997914115489896358E+05, - 0.997738602307620895E+05, 0.997571631813267886E+05, 0.997412843967411318E+05, 0.997261849951640761E+05, 0.997116241750995250E+05, - 0.996956516613714484E+05, 0.996802443385057850E+05, 0.996654141346137912E+05, 0.996511746410201595E+05, 0.996375414807133056E+05, - 0.996245325880948803E+05, 0.996121683814974822E+05, 0.996004718105865177E+05, 0.995894682617738144E+05, 0.995791853061816655E+05, - 0.995696522765213740E+05, 0.995608996615122596E+05, 0.995529583091799286E+05, 0.995458584335334599E+05, 0.995396284227406868E+05, - 0.995343367855710967E+05, 0.995305561580702051E+05, 0.995281233336275036E+05, 0.995270277929425938E+05, 0.995273063084702299E+05, - 0.995289897428417025E+05, 0.995321019769720151E+05, 0.995366588694784150E+05, 0.995426672761023801E+05, 0.995501241589093697E+05, - 0.995590158153962548E+05, 0.995693172571642208E+05, 0.995809917664462992E+05, 0.995939906564428093E+05, 0.996082532580851985E+05, - 0.996237071514999261E+05, 0.996402686551040679E+05, 0.996578435789826035E+05, 0.996763282420650648E+05, 0.996956299728876329E+05, - 0.997162410862197139E+05, 0.997372387307632453E+05, 0.997586353656998253E+05, 0.997808433601890720E+05, 0.998030187608370179E+05, - 0.998249872889569233E+05, 0.998465794208683947E+05, 0.998676313277232548E+05, 0.998879856224390824E+05, 0.999074918951320724E+05, - 0.999260070231147402E+05, 0.999433952465451439E+05, 0.999595280060564692E+05, 0.999742835440646595E+05, 0.999875462768208236E+05, - 0.999992059495608264E+05, 0.100009156592205647E+06, 0.100016063172606460E+06, 0.100019024917317467E+06, 0.100020084175617667E+06, - 0.100019327613303438E+06, 0.100016848817808917E+06, 0.100012745044390162E+06, 0.100007114161981110E+06, 0.100000051820447916E+06, - 0.999916488518789411E+05, 0.999819889104085451E+05, 0.999711463483044645E+05, 0.999591843210265215E+05, 0.999461531109617499E+05, - 0.999321525809828890E+05, 0.999172469778668019E+05, 0.999013989306642325E+05, 0.998846455567706289E+05, 0.998670119376398798E+05, - 0.998485130268999492E+05, 0.998291555936072982E+05, 0.998089401641651202E+05, 0.997878629283593327E+05, 0.997659175757975609E+05, - 0.997430970289848337E+05, 0.997193950386116485E+05, 0.996948076057053986E+05, 0.996688019987970183E+05, 0.996412728663371527E+05, - 0.996128531282160839E+05, 0.995835822131826571E+05, 0.995535100083936413E+05, 0.995226963046177698E+05, 0.994912096890770918E+05, - 0.994591258685886423E+05, 0.994265254172218556E+05, 0.993934909557864739E+05, 0.993601037847762636E+05, 0.993264400074980804E+05, - 0.992925661955399555E+05, 0.992585346639741329E+05, 0.992243784382298763E+05, 0.991926785386021656E+05, 0.991631423960881948E+05, - 0.991346701590620942E+05, 0.991043957205902552E+05, 0.990738404866020282E+05, 0.990437385072277393E+05, 0.990142493709584378E+05, - 0.989855195191612147E+05, 0.989576810877346288E+05, 0.989308511084253696E+05, 0.989051310684979690E+05, 0.988806068206827622E+05, - 0.988573488291608082E+05, 0.988354127318868268E+05, 0.988148401948802202E+05, 0.987956600302788138E+05, 0.987778895469693816E+05, - 0.987615361004738952E+05, 0.987465988074585912E+05, 0.987330703896907362E+05, 0.987209391124356771E+05, 0.987108234055703360E+05, - 0.987097019913824042E+05, 0.987103429529451387E+05, 0.987122111650228762E+05, 0.987153073516145814E+05, 0.987196321217762743E+05, - 0.987251875827369804E+05, 0.987319785667343094E+05, 0.987400135082831985E+05, 0.987493050090511242E+05, 0.987598701271371101E+05, - 0.987717304264797713E+05, 0.987849118205066625E+05, 0.987994442421061685E+05, 0.100725315299336173E+06, 0.100698574995327697E+06, - 0.100671977068823689E+06, 0.100644595052366465E+06, 0.100616468093977863E+06, 0.100587642901921921E+06, 0.100558173361375360E+06, - 0.100528120104899528E+06, 0.100497550042423565E+06, 0.100466272904751735E+06, 0.100434015096099785E+06, 0.100401562459773442E+06, - 0.100368989820934105E+06, 0.100336376879503077E+06, 0.100303807689072302E+06, 0.100271370122519947E+06, 0.100239155324566673E+06, - 0.100207257151323618E+06, 0.100175771596705425E+06, 0.100144796205413048E+06, 0.100114429472040734E+06, 0.100088940515445298E+06, - 0.100064277849083956E+06, 0.100040376776062651E+06, 0.100017243413296688E+06, 0.999948816446533019E+05, 0.999732929686431889E+05, - 0.999524763863759727E+05, 0.999324283249947912E+05, 0.999131425911760016E+05, 0.998946103486297798E+05, 0.998768201128693472E+05, - 0.998597577558295598E+05, 0.998434065122163738E+05, 0.998277469787591108E+05, 0.998127570968272776E+05, 0.997984121081719059E+05, - 0.997846844728672440E+05, 0.997711641937448148E+05, 0.997562547182444541E+05, 0.997418715469619347E+05, 0.997280378138771339E+05, - 0.997149197421024874E+05, 0.997024870178837737E+05, 0.996907061322415975E+05, 0.996795848806745926E+05, 0.996691347733205621E+05, - 0.996593714260480774E+05, 0.996503148183509184E+05, 0.996419894088608416E+05, 0.996344241017298482E+05, 0.996276520598402276E+05, - 0.996217103637612599E+05, 0.996166395185360743E+05, 0.996124828137155564E+05, 0.996092855454927922E+05, 0.996072490608482622E+05, - 0.996076113749229989E+05, 0.996091697144805221E+05, 0.996119324075692421E+05, 0.996159015340781625E+05, 0.996210724174448842E+05, - 0.996274331797853811E+05, 0.996349643746027868E+05, 0.996436387104583700E+05, 0.996534208777727908E+05, 0.996642674892599607E+05, - 0.996761271423777071E+05, 0.996889406096304010E+05, 0.997026411596077960E+05, 0.997171550083373149E+05, 0.997324018969322351E+05, - 0.997493713951271493E+05, 0.997669298086039198E+05, 0.997847561118552549E+05, 0.998027246306509041E+05, 0.998207116516734968E+05, - 0.998385964503245486E+05, 0.998562622533936083E+05, 0.998740649961419404E+05, 0.998916906165886030E+05, 0.999087089343172702E+05, - 0.999249770553750277E+05, 0.999403560696216737E+05, 0.999547111717594089E+05, 0.999679116588610341E+05, 0.999798308071318752E+05, - 0.999903456338236865E+05, 0.999993365533926699E+05, 0.100004220125714884E+06, 0.100007207317976179E+06, 0.100008572293640507E+06, - 0.100008322094038289E+06, 0.100006474067698131E+06, 0.100003053654514384E+06, 0.999980922203631635E+05, 0.999916249686873634E+05, - 0.999836889524048456E+05, 0.999743212064066029E+05, 0.999635570180646901E+05, 0.999514283507113723E+05, 0.999379624331032392E+05, - 0.999231805265346338E+05, 0.999068710521996836E+05, 0.998889830637409177E+05, 0.998698844492443604E+05, 0.998496268247692351E+05, - 0.998282550606056902E+05, 0.998058081407207792E+05, 0.997823201056188700E+05, 0.997578210428315797E+05, 0.997323380908236431E+05, - 0.997058964236216998E+05, 0.996785201849737350E+05, 0.996502333423933014E+05, 0.996210604331023060E+05, 0.995910271757503942E+05, - 0.995601609239409008E+05, 0.995275572850741737E+05, 0.994942010526460217E+05, 0.994602086162104097E+05, 0.994256424562004540E+05, - 0.993905674250224547E+05, 0.993550495610398939E+05, 0.993191545857771562E+05, 0.992829460972773086E+05, 0.992464834802344849E+05, - 0.992093627746182028E+05, 0.991704192318807618E+05, 0.991313574404489191E+05, 0.990923405318182195E+05, 0.990535358095906413E+05, - 0.990151121756168286E+05, 0.989772373919561505E+05, 0.989400752255912812E+05, 0.989077617710938066E+05, 0.988763612273478793E+05, - 0.988459508623079601E+05, 0.988166439660097676E+05, 0.987885464355162840E+05, 0.987617561295779306E+05, 0.987363624383705755E+05, - 0.987124460655073344E+05, 0.986900790161369223E+05, 0.986693247818405216E+05, 0.986502387102765642E+05, 0.986328685451310157E+05, - 0.986172551199377485E+05, 0.986034331877511868E+05, 0.985914323674813641E+05, 0.985849022212989948E+05, 0.985815381689221977E+05, - 0.985799833097597439E+05, 0.985801745721993211E+05, 0.985820463347552868E+05, 0.985855324877461535E+05, 0.985905682465279388E+05, - 0.985970917144189152E+05, 0.986050451971537113E+05, 0.986143762739106751E+05, 0.986250386326789885E+05, 0.986369926800004905E+05, - 0.986502059369656636E+05, 0.986646532347960892E+05, 0.986803686823803437E+05, 0.986978893846687570E+05, 0.100614832696455240E+06, - 0.100593867821148029E+06, 0.100572316446986515E+06, 0.100550197550235505E+06, 0.100527535703133908E+06, 0.100504360904461792E+06, - 0.100480708372667563E+06, 0.100456618304392017E+06, 0.100432135601374786E+06, 0.100407309568833982E+06, 0.100382193588466369E+06, - 0.100356844769226343E+06, 0.100331323579001226E+06, 0.100305693460217895E+06, 0.100280020432285120E+06, 0.100254372683605921E+06, - 0.100228820155686772E+06, 0.100203434121630358E+06, 0.100178286761032883E+06, 0.100153450733022924E+06, 0.100130475669895299E+06, - 0.100109956889046269E+06, 0.100089889070985242E+06, 0.100070296914338702E+06, 0.100051202164876013E+06, 0.100032623579079911E+06, - 0.100014576934231576E+06, 0.999970750815462088E+05, 0.999801280379814852E+05, 0.999637431114950741E+05, 0.999479250537698827E+05, - 0.999326762337752152E+05, 0.999179968250171223E+05, 0.999038849989644077E+05, 0.998903371169458405E+05, 0.998773479128125327E+05, - 0.998649106588674185E+05, 0.998530173079915839E+05, 0.998416586055586959E+05, 0.998308241656294995E+05, 0.998183931314519723E+05, - 0.998063026544255990E+05, 0.997946768033270637E+05, 0.997835353574148758E+05, 0.997728988116216497E+05, 0.997627886474906263E+05, - 0.997532275467060972E+05, 0.997442395412217011E+05, 0.997358500950898597E+05, 0.997280861143391958E+05, 0.997209758826208854E+05, - 0.997145489218259900E+05, 0.997088357784521941E+05, 0.997038677381365414E+05, 0.996996764724488748E+05, 0.996962936237215035E+05, - 0.996937503353465436E+05, 0.996920767365576030E+05, 0.996913013921977254E+05, 0.996914507293131610E+05, 0.996938892044791864E+05, - 0.996979235599974199E+05, 0.997029058021154924E+05, 0.997088141832942201E+05, 0.997156214047231770E+05, 0.997232945456081070E+05, - 0.997317950535919081E+05, 0.997416867970129533E+05, 0.997530959050235106E+05, 0.997652059203542885E+05, 0.997779192013086576E+05, - 0.997911354948921798E+05, 0.998047524629107502E+05, 0.998186662279794255E+05, 0.998327719289349043E+05, 0.998469642740837880E+05, - 0.998611380798811879E+05, 0.998751887820599950E+05, 0.998890129059611209E+05, 0.999025084828911640E+05, 0.999155753997843713E+05, - 0.999281156702924636E+05, 0.999400336166881025E+05, 0.999512359536410950E+05, 0.999616317670096760E+05, 0.999711323832548660E+05, - 0.999796511279028782E+05, 0.999849269357346784E+05, 0.999879656837563089E+05, 0.999896251175745128E+05, 0.999900253003605030E+05, - 0.999893361854775139E+05, 0.999873542140159407E+05, 0.999840556297011499E+05, 0.999794245840091753E+05, 0.999734518744631496E+05, - 0.999661337157758971E+05, 0.999574705623641785E+05, 0.999474659997932467E+05, 0.999361257217314414E+05, 0.999234566080410732E+05, - 0.999094659187412326E+05, 0.998941606177814683E+05, 0.998764809352623415E+05, 0.998560560817922524E+05, 0.998343967946635821E+05, - 0.998115510889874568E+05, 0.997875653304692096E+05, 0.997624843255732849E+05, 0.997363514996802405E+05, 0.997092091386610118E+05, - 0.996810986700549984E+05, 0.996520609610099054E+05, 0.996221366113048280E+05, 0.995913662211383053E+05, 0.995597906149207993E+05, - 0.995273916799414146E+05, 0.994941482859833632E+05, 0.994601365478679945E+05, 0.994253058448178053E+05, 0.993891469979643734E+05, - 0.993522589965478983E+05, 0.993147135957212886E+05, 0.992765913082987827E+05, 0.992379812368316198E+05, 0.991989807125657680E+05, - 0.991596947441791563E+05, 0.991202352822574612E+05, 0.990807203086648369E+05, 0.990412727632243623E+05, 0.990020193233719183E+05, - 0.989630890556004597E+05, 0.989246119604841224E+05, 0.988867174357804033E+05, 0.988495326844704396E+05, 0.988131810965392942E+05, - 0.987777806347563455E+05, 0.987434422556348145E+05, 0.987102683970903163E+05, 0.986800386904530314E+05, 0.986539370199152036E+05, - 0.986295226205249346E+05, 0.986068636404624995E+05, 0.985860239517589507E+05, 0.985670631337701197E+05, 0.985500365691113984E+05, - 0.985358556718200416E+05, 0.985278808654735767E+05, 0.985216145256253949E+05, 0.985170549437755544E+05, 0.985141907191163773E+05, - 0.985130023621957516E+05, 0.985134638334888878E+05, 0.985155439987927239E+05, 0.985192079865073320E+05, 0.985244184348827694E+05, - 0.985311366201568162E+05, 0.985393234591571963E+05, 0.985489403823850007E+05, 0.985599500758101349E+05, 0.985723170916025701E+05, - 0.985860083297847013E+05, 0.986009933943283249E+05, 0.986172448285415594E+05, 0.986347382357068564E+05, 0.986534522918489238E+05, - 0.100501068864754794E+06, 0.100484535396120875E+06, 0.100467601980879481E+06, 0.100450280398188552E+06, 0.100432586236747622E+06, - 0.100414538813697291E+06, 0.100396161067221547E+06, 0.100377479424244724E+06, 0.100358523644725865E+06, 0.100339326644139262E+06, - 0.100319924295798162E+06, 0.100300355214719486E+06, 0.100280660524754756E+06, 0.100260883610713514E+06, 0.100241069857193317E+06, - 0.100221266375801104E+06, 0.100201521722408346E+06, 0.100181885606032156E+06, 0.100162408590875246E+06, 0.100143141793000657E+06, - 0.100126731204709198E+06, 0.100111095964644017E+06, 0.100095755686584438E+06, 0.100080729264227775E+06, 0.100066034373636823E+06, - 0.100051687390123538E+06, 0.100037703324969872E+06, 0.100024095780550211E+06, 0.100010876922054129E+06, 0.999980574636844394E+05, - 0.999856466669404908E+05, 0.999736523483940109E+05, 0.999620808942374570E+05, 0.999509372788386972E+05, 0.999402250845782837E+05, - 0.999299465203828877E+05, 0.999201024366045604E+05, 0.999106923342315858E+05, 0.999017143668564822E+05, 0.998931653343625367E+05, - 0.998850406679233711E+05, 0.998765024783978733E+05, 0.998667989571770595E+05, 0.998574263414941233E+05, 0.998484104846885893E+05, - 0.998397772139483568E+05, 0.998315523922983994E+05, 0.998237619509676297E+05, 0.998164318901620281E+05, 0.998095882469221542E+05, - 0.998032570294378238E+05, 0.997974641179290484E+05, 0.997922351329589583E+05, 0.997875952728177945E+05, 0.997835691223818721E+05, - 0.997801804366022552E+05, 0.997774519024890033E+05, 0.997754048841174226E+05, 0.997740591557720181E+05, 0.997734326288465818E+05, - 0.997735410785172280E+05, 0.997747073495277582E+05, 0.997769755457649590E+05, 0.997800038461367949E+05, 0.997839110555756342E+05, - 0.997903666077980015E+05, 0.997975557260811329E+05, 0.998054075409305369E+05, 0.998138481350147340E+05, 0.998228007968337915E+05, - 0.998321862933507946E+05, 0.998419231581400672E+05, 0.998519279910743644E+05, 0.998621157651026879E+05, 0.998724001352771593E+05, - 0.998826937448957033E+05, 0.998929085234460072E+05, 0.999029559709882014E+05, 0.999127474237070273E+05, 0.999221942956127314E+05, - 0.999312082917789958E+05, 0.999397015890797338E+05, 0.999475869811254670E+05, 0.999547779849950166E+05, 0.999611889084034483E+05, - 0.999655508333875332E+05, 0.999687521058104176E+05, 0.999708756209590647E+05, 0.999718892905484245E+05, 0.999717672485314106E+05, - 0.999704891389138356E+05, 0.999680393573227484E+05, 0.999644062616458687E+05, 0.999595813666838658E+05, 0.999535585371076886E+05, - 0.999463331921408535E+05, 0.999379015343325445E+05, 0.999282598136142769E+05, 0.999174036365871580E+05, 0.999053273297332198E+05, - 0.998920233640268561E+05, 0.998774818472951010E+05, 0.998616900896773586E+05, 0.998432094200693391E+05, 0.998215258930813725E+05, - 0.997986442532860819E+05, 0.997746159978670912E+05, 0.997494898657428857E+05, 0.997233122677003994E+05, 0.996961277569055965E+05, - 0.996679795269207534E+05, 0.996389099249155406E+05, 0.996089609684258903E+05, 0.995781748547828611E+05, 0.995465944531801651E+05, - 0.995142637702681968E+05, 0.994812283811399975E+05, 0.994475358185973892E+05, 0.994132359146495874E+05, 0.993783810892878100E+05, - 0.993430265826917603E+05, 0.993072306281462952E+05, 0.992699361805924273E+05, 0.992322369590151648E+05, 0.991942880496349680E+05, - 0.991561790488717525E+05, 0.991180035697510175E+05, 0.990798588542613288E+05, 0.990418452912010980E+05, 0.990040658471643255E+05, - 0.989666254199359537E+05, 0.989296301250896213E+05, 0.988931865279689664E+05, 0.988574008344593603E+05, 0.988223780549877847E+05, - 0.987882211569994834E+05, 0.987550302217251592E+05, 0.987229016213559953E+05, 0.986919272327695508E+05, 0.986621937036891904E+05, - 0.986337817866148835E+05, 0.986067657550310105E+05, 0.985855251179539773E+05, 0.985675277620845591E+05, 0.985515831726142933E+05, - 0.985391751050558669E+05, 0.985310659201639937E+05, 0.985245080408891663E+05, 0.985195088048070465E+05, 0.985160685473306512E+05, - 0.985141813574870466E+05, 0.985138358391387155E+05, 0.985150158641151211E+05, 0.985177013051926042E+05, 0.985218687383599317E+05, - 0.985274921053063881E+05, 0.985345433285448526E+05, 0.985429928730166866E+05, 0.985528102493964543E+05, 0.985639644556170097E+05, - 0.985764243543491611E+05, 0.985901589852987236E+05, 0.986051378122090100E+05, 0.986213309053895937E+05, 0.986387090614195185E+05, - 0.986574141307979880E+05 -}; +#include "grib_gridded_values.h" // array 'values' defined here #define NLON 81 #define NLAT 166 @@ -2718,7 +26,7 @@ static void encode_decode(double* zval, const char* packingType, const int bitsP size_t len, slen; grib_handle* h; - /*printf("encode_decode: packingType=%s bitsPerValue=%d opt=%d\n", packingType, bitsPerValue, ioptimizeScaleFactor);*/ + printf("encode_decode: packingType=%s bitsPerValue=%d opt=%d\n", packingType, bitsPerValue, ioptimizeScaleFactor); GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "regular_ll_pl_grib2")) == NULL), 0); GRIB_CHECK(grib_set_long(h, "Ni", NLON), 0); GRIB_CHECK(grib_set_long(h, "Nj", NLAT), 0); @@ -2762,7 +70,7 @@ int main(int argc, char* argv[]) zerr = calc_error(zval_simple, zval_second); if (zerr > 0.) { - printf("Second order packing does not reproduce simple packing with optimizeScaleFactor=1\n"); + fprintf(stderr, "Error: Second order packing does not reproduce simple packing with optimizeScaleFactor=1\n"); return 1; } } @@ -2781,7 +89,7 @@ int main(int argc, char* argv[]) printf(" %30d %30.9e %30.9e %g\n", bitsPerValue[ibitsPerValue], zerr[0], zerr[1], ratio); if ((ratio < 1.90) || (ratio > 2.00)) { - printf("Packing error too big: optimizeScaleFactor appears to be broken (zerr[0]/zerr[1]=%g)\n", ratio); + fprintf(stderr, "Error: Packing error too big: optimizeScaleFactor appears to be broken (zerr[0]/zerr[1]=%g)\n", ratio); return 1; } } diff --git a/tests/grib_packing_order.cc b/tests/grib_packing_order.cc index 4fe8d2df8..89a96ff61 100644 --- a/tests/grib_packing_order.cc +++ b/tests/grib_packing_order.cc @@ -12,24769 +12,24769 @@ /* Values taken from an actual IFS forecast run for paramId=133 (Specific humidity) */ const double values[] = { -0.0000026822,0.0000026803,0.0000026786,0.0000026773,0.0000026768, -0.0000026771,0.0000026783,0.0000026801,0.0000026820,0.0000026840, -0.0000026855,0.0000026868,0.0000026873,0.0000026877,0.0000026878, -0.0000026879,0.0000026877,0.0000026870,0.0000026858,0.0000026842, -0.0000026811,0.0000026776,0.0000026744,0.0000026715,0.0000026693, -0.0000026687,0.0000026698,0.0000026731,0.0000026779,0.0000026830, -0.0000026875,0.0000026908,0.0000026930,0.0000026942,0.0000026942, -0.0000026937,0.0000026937,0.0000026941,0.0000026948,0.0000026952, -0.0000026944,0.0000026921,0.0000026887,0.0000026849,0.0000026757, -0.0000026721,0.0000026690,0.0000026660,0.0000026632,0.0000026609, -0.0000026604,0.0000026623,0.0000026678,0.0000026758,0.0000026836, -0.0000026895,0.0000026938,0.0000026969,0.0000026989,0.0000027001, -0.0000027005,0.0000026998,0.0000026989,0.0000026987,0.0000026998, -0.0000027014,0.0000027019,0.0000027000,0.0000026956,0.0000026903, -0.0000026849,0.0000026799,0.0000026679,0.0000026643,0.0000026613, -0.0000026586,0.0000026563,0.0000026544,0.0000026529,0.0000026527, -0.0000026549,0.0000026622,0.0000026726,0.0000026817,0.0000026875, -0.0000026913,0.0000026943,0.0000026974,0.0000027001,0.0000027021, -0.0000027036,0.0000027041,0.0000027032,0.0000027022,0.0000027024, -0.0000027046,0.0000027069,0.0000027067,0.0000027031,0.0000026966, -0.0000026888,0.0000026818,0.0000026764,0.0000026719,0.0000026610, -0.0000026573,0.0000026540,0.0000026509,0.0000026482,0.0000026462, -0.0000026454,0.0000026453,0.0000026457,0.0000026480,0.0000026564, -0.0000026686,0.0000026779,0.0000026829,0.0000026861,0.0000026898, -0.0000026943,0.0000026983,0.0000027009,0.0000027024,0.0000027040, -0.0000027054,0.0000027055,0.0000027046,0.0000027038,0.0000027049, -0.0000027083,0.0000027104,0.0000027090,0.0000027033,0.0000026949, -0.0000026860,0.0000026787,0.0000026733,0.0000026691,0.0000026650, -0.0000026572,0.0000026543,0.0000026512,0.0000026480,0.0000026448, -0.0000026414,0.0000026382,0.0000026373,0.0000026381,0.0000026394, -0.0000026423,0.0000026511,0.0000026641,0.0000026738,0.0000026778, -0.0000026813,0.0000026870,0.0000026935,0.0000026979,0.0000027003, -0.0000027023,0.0000027042,0.0000027056,0.0000027061,0.0000027060, -0.0000027055,0.0000027046,0.0000027042,0.0000027063,0.0000027102, -0.0000027114,0.0000027086,0.0000027012,0.0000026919,0.0000026834, -0.0000026773,0.0000026726,0.0000026685,0.0000026646,0.0000026608, -0.0000026563,0.0000026542,0.0000026520,0.0000026493,0.0000026461, -0.0000026425,0.0000026387,0.0000026347,0.0000026319,0.0000026319, -0.0000026340,0.0000026381,0.0000026470,0.0000026601,0.0000026701, -0.0000026735,0.0000026776,0.0000026858,0.0000026939,0.0000026975, -0.0000026982,0.0000027013,0.0000027063,0.0000027099,0.0000027111, -0.0000027107,0.0000027090,0.0000027071,0.0000027053,0.0000027039, -0.0000027041,0.0000027069,0.0000027103,0.0000027100,0.0000027052, -0.0000026973,0.0000026885,0.0000026815,0.0000026770,0.0000026732, -0.0000026693,0.0000026655,0.0000026620,0.0000026590,0.0000026591, -0.0000026583,0.0000026564,0.0000026535,0.0000026500,0.0000026463, -0.0000026430,0.0000026396,0.0000026349,0.0000026299,0.0000026277, -0.0000026296,0.0000026345,0.0000026433,0.0000026568,0.0000026678, -0.0000026703,0.0000026741,0.0000026843,0.0000026932,0.0000026952, -0.0000026951,0.0000026980,0.0000027049,0.0000027104,0.0000027131, -0.0000027143,0.0000027145,0.0000027135,0.0000027114,0.0000027085, -0.0000027046,0.0000027024,0.0000027032,0.0000027066,0.0000027085, -0.0000027060,0.0000026998,0.0000026920,0.0000026845,0.0000026798, -0.0000026772,0.0000026745,0.0000026710,0.0000026673,0.0000026637, -0.0000026611,0.0000026597,0.0000026679,0.0000026675,0.0000026654, -0.0000026622,0.0000026576,0.0000026521,0.0000026478,0.0000026446, -0.0000026421,0.0000026384,0.0000026322,0.0000026264,0.0000026262, -0.0000026313,0.0000026400,0.0000026533,0.0000026662,0.0000026690, -0.0000026714,0.0000026820,0.0000026916,0.0000026939,0.0000026922, -0.0000026942,0.0000027014,0.0000027068,0.0000027092,0.0000027103, -0.0000027111,0.0000027118,0.0000027123,0.0000027122,0.0000027113, -0.0000027080,0.0000027030,0.0000027001,0.0000027011,0.0000027042, -0.0000027044,0.0000027002,0.0000026939,0.0000026866,0.0000026805, -0.0000026783,0.0000026780,0.0000026767,0.0000026738,0.0000026698, -0.0000026660,0.0000026644,0.0000026647,0.0000026666,0.0000026800, -0.0000026800,0.0000026790,0.0000026765,0.0000026716,0.0000026655, -0.0000026586,0.0000026520,0.0000026471,0.0000026444,0.0000026415, -0.0000026364,0.0000026291,0.0000026249,0.0000026282,0.0000026370, -0.0000026497,0.0000026646,0.0000026695,0.0000026702,0.0000026795, -0.0000026891,0.0000026927,0.0000026917,0.0000026910,0.0000026970, -0.0000027037,0.0000027062,0.0000027071,0.0000027076,0.0000027076, -0.0000027080,0.0000027080,0.0000027075,0.0000027078,0.0000027076, -0.0000027051,0.0000027007,0.0000026977,0.0000026984,0.0000027001, -0.0000026987,0.0000026937,0.0000026878,0.0000026816,0.0000026768, -0.0000026761,0.0000026776,0.0000026779,0.0000026765,0.0000026730, -0.0000026692,0.0000026679,0.0000026700,0.0000026743,0.0000026781, -0.0000026915,0.0000026923,0.0000026921,0.0000026906,0.0000026872, -0.0000026824,0.0000026760,0.0000026685,0.0000026603,0.0000026530, -0.0000026477,0.0000026440,0.0000026402,0.0000026337,0.0000026270, -0.0000026264,0.0000026340,0.0000026458,0.0000026620,0.0000026706, -0.0000026705,0.0000026769,0.0000026856,0.0000026902,0.0000026918, -0.0000026899,0.0000026921,0.0000026998,0.0000027050,0.0000027074, -0.0000027091,0.0000027106,0.0000027117,0.0000027121,0.0000027108, -0.0000027076,0.0000027050,0.0000027022,0.0000027010,0.0000027001, -0.0000026978,0.0000026959,0.0000026957,0.0000026951,0.0000026923, -0.0000026877,0.0000026824,0.0000026767,0.0000026730,0.0000026733, -0.0000026758,0.0000026776,0.0000026778,0.0000026760,0.0000026732, -0.0000026725,0.0000026752,0.0000026805,0.0000026858,0.0000026896, -0.0000026979,0.0000026985,0.0000026987,0.0000026976,0.0000026960, -0.0000026930,0.0000026897,0.0000026857,0.0000026800,0.0000026721, -0.0000026629,0.0000026542,0.0000026479,0.0000026440,0.0000026391, -0.0000026321,0.0000026275,0.0000026315,0.0000026424,0.0000026581, -0.0000026713,0.0000026724,0.0000026757,0.0000026822,0.0000026862, -0.0000026902,0.0000026907,0.0000026895,0.0000026943,0.0000027019, -0.0000027074,0.0000027116,0.0000027153,0.0000027197,0.0000027244, -0.0000027268,0.0000027257,0.0000027213,0.0000027151,0.0000027072, -0.0000026998,0.0000026954,0.0000026941,0.0000026940,0.0000026934, -0.0000026921,0.0000026895,0.0000026862,0.0000026830,0.0000026786, -0.0000026733,0.0000026708,0.0000026714,0.0000026739,0.0000026762, -0.0000026777,0.0000026776,0.0000026766,0.0000026772,0.0000026808, -0.0000026861,0.0000026911,0.0000026947,0.0000026969,0.0000027016, -0.0000027028,0.0000027038,0.0000027033,0.0000027022,0.0000026998, -0.0000026976,0.0000026956,0.0000026932,0.0000026895,0.0000026831, -0.0000026741,0.0000026640,0.0000026546,0.0000026488,0.0000026446, -0.0000026385,0.0000026317,0.0000026305,0.0000026391,0.0000026536, -0.0000026700,0.0000026746,0.0000026763,0.0000026809,0.0000026832, -0.0000026871,0.0000026911,0.0000026914,0.0000026920,0.0000026981, -0.0000027052,0.0000027115,0.0000027170,0.0000027228,0.0000027303, -0.0000027379,0.0000027414,0.0000027411,0.0000027376,0.0000027323, -0.0000027250,0.0000027146,0.0000027028,0.0000026935,0.0000026894, -0.0000026891,0.0000026897,0.0000026882,0.0000026849,0.0000026818, -0.0000026795,0.0000026755,0.0000026708,0.0000026693,0.0000026709, -0.0000026733,0.0000026753,0.0000026769,0.0000026778,0.0000026785, -0.0000026808,0.0000026858,0.0000026911,0.0000026952,0.0000026978, -0.0000026993,0.0000027005,0.0000027085,0.0000027106,0.0000027122, -0.0000027122,0.0000027115,0.0000027097,0.0000027078,0.0000027055, -0.0000027025,0.0000026991,0.0000026951,0.0000026904,0.0000026840, -0.0000026748,0.0000026631,0.0000026545,0.0000026502,0.0000026446, -0.0000026377,0.0000026326,0.0000026360,0.0000026490,0.0000026661, -0.0000026758,0.0000026767,0.0000026806,0.0000026816,0.0000026840, -0.0000026884,0.0000026934,0.0000026947,0.0000026968,0.0000027028, -0.0000027100,0.0000027168,0.0000027223,0.0000027288,0.0000027376, -0.0000027459,0.0000027493,0.0000027489,0.0000027463,0.0000027428, -0.0000027382,0.0000027319,0.0000027230,0.0000027106,0.0000026972, -0.0000026879,0.0000026847,0.0000026852,0.0000026846,0.0000026821, -0.0000026794,0.0000026766,0.0000026723,0.0000026684,0.0000026682, -0.0000026712,0.0000026741,0.0000026755,0.0000026765,0.0000026774, -0.0000026789,0.0000026826,0.0000026889,0.0000026951,0.0000026990, -0.0000027011,0.0000027028,0.0000027046,0.0000027066,0.0000027150, -0.0000027159,0.0000027169,0.0000027172,0.0000027171,0.0000027166, -0.0000027165,0.0000027163,0.0000027147,0.0000027114,0.0000027060, -0.0000026999,0.0000026951,0.0000026912,0.0000026843,0.0000026721, -0.0000026604,0.0000026553,0.0000026505,0.0000026440,0.0000026378, -0.0000026355,0.0000026445,0.0000026605,0.0000026749,0.0000026778, -0.0000026796,0.0000026810,0.0000026819,0.0000026849,0.0000026906, -0.0000026972,0.0000026989,0.0000027019,0.0000027073,0.0000027143, -0.0000027211,0.0000027261,0.0000027318,0.0000027401,0.0000027485, -0.0000027516,0.0000027509,0.0000027483,0.0000027455,0.0000027423, -0.0000027383,0.0000027343,0.0000027285,0.0000027187,0.0000027051, -0.0000026913,0.0000026834,0.0000026812,0.0000026812,0.0000026805, -0.0000026786,0.0000026745,0.0000026691,0.0000026661,0.0000026669, -0.0000026712,0.0000026746,0.0000026760,0.0000026763,0.0000026766, -0.0000026783,0.0000026827,0.0000026898,0.0000026973,0.0000027026, -0.0000027052,0.0000027073,0.0000027099,0.0000027125,0.0000027140, -0.0000027162,0.0000027154,0.0000027163,0.0000027173,0.0000027180, -0.0000027185,0.0000027191,0.0000027199,0.0000027207,0.0000027207, -0.0000027189,0.0000027142,0.0000027065,0.0000026994,0.0000026955, -0.0000026914,0.0000026810,0.0000026664,0.0000026590,0.0000026560, -0.0000026501,0.0000026441,0.0000026389,0.0000026413,0.0000026540, -0.0000026702,0.0000026785,0.0000026789,0.0000026804,0.0000026802, -0.0000026830,0.0000026868,0.0000026937,0.0000027001,0.0000027029, -0.0000027066,0.0000027111,0.0000027168,0.0000027226,0.0000027271, -0.0000027319,0.0000027392,0.0000027476,0.0000027514,0.0000027508, -0.0000027479,0.0000027449,0.0000027420,0.0000027389,0.0000027359, -0.0000027323,0.0000027283,0.0000027225,0.0000027128,0.0000026988, -0.0000026858,0.0000026800,0.0000026795,0.0000026798,0.0000026787, -0.0000026735,0.0000026665,0.0000026634,0.0000026650,0.0000026700, -0.0000026742,0.0000026762,0.0000026764,0.0000026764,0.0000026775, -0.0000026819,0.0000026900,0.0000026995,0.0000027069,0.0000027106, -0.0000027123,0.0000027147,0.0000027175,0.0000027189,0.0000027178, -0.0000027134,0.0000027134,0.0000027168,0.0000027211,0.0000027242, -0.0000027258,0.0000027270,0.0000027273,0.0000027264,0.0000027248, -0.0000027228,0.0000027215,0.0000027197,0.0000027140,0.0000027050, -0.0000026982,0.0000026955,0.0000026891,0.0000026735,0.0000026613, -0.0000026596,0.0000026559,0.0000026498,0.0000026437,0.0000026411, -0.0000026477,0.0000026631,0.0000026758,0.0000026790,0.0000026790, -0.0000026794,0.0000026802,0.0000026850,0.0000026893,0.0000026961, -0.0000027015,0.0000027063,0.0000027113,0.0000027148,0.0000027179, -0.0000027213,0.0000027249,0.0000027286,0.0000027346,0.0000027433, -0.0000027491,0.0000027494,0.0000027467,0.0000027434,0.0000027405, -0.0000027380,0.0000027353,0.0000027317,0.0000027281,0.0000027250, -0.0000027221,0.0000027173,0.0000027074,0.0000026932,0.0000026826, -0.0000026802,0.0000026803,0.0000026791,0.0000026728,0.0000026646, -0.0000026611,0.0000026625,0.0000026681,0.0000026730,0.0000026756, -0.0000026764,0.0000026767,0.0000026778,0.0000026822,0.0000026908, -0.0000027017,0.0000027109,0.0000027161,0.0000027178,0.0000027191, -0.0000027209,0.0000027215,0.0000027202,0.0000027168,0.0000027139, -0.0000027190,0.0000027251,0.0000027282,0.0000027304,0.0000027314, -0.0000027333,0.0000027361,0.0000027371,0.0000027369,0.0000027336, -0.0000027276,0.0000027223,0.0000027207,0.0000027194,0.0000027124, -0.0000027021,0.0000026971,0.0000026945,0.0000026823,0.0000026645, -0.0000026600,0.0000026600,0.0000026558,0.0000026484,0.0000026442, -0.0000026440,0.0000026551,0.0000026696,0.0000026776,0.0000026778, -0.0000026781,0.0000026775,0.0000026810,0.0000026871,0.0000026921, -0.0000026971,0.0000027019,0.0000027088,0.0000027153,0.0000027178, -0.0000027178,0.0000027177,0.0000027190,0.0000027216,0.0000027264, -0.0000027346,0.0000027425,0.0000027452,0.0000027442,0.0000027415, -0.0000027391,0.0000027371,0.0000027349,0.0000027319,0.0000027281, -0.0000027244,0.0000027215,0.0000027198,0.0000027181,0.0000027131, -0.0000027020,0.0000026898,0.0000026837,0.0000026824,0.0000026796, -0.0000026720,0.0000026633,0.0000026593,0.0000026604,0.0000026655, -0.0000026708,0.0000026741,0.0000026760,0.0000026774,0.0000026799, -0.0000026854,0.0000026942,0.0000027044,0.0000027134,0.0000027194, -0.0000027226,0.0000027242,0.0000027248,0.0000027240,0.0000027214, -0.0000027175,0.0000027140,0.0000027242,0.0000027270,0.0000027232, -0.0000027170,0.0000027134,0.0000027128,0.0000027150,0.0000027200, -0.0000027265,0.0000027333,0.0000027395,0.0000027409,0.0000027361, -0.0000027272,0.0000027209,0.0000027208,0.0000027186,0.0000027088, -0.0000026985,0.0000026965,0.0000026909,0.0000026720,0.0000026595, -0.0000026605,0.0000026611,0.0000026538,0.0000026479,0.0000026449, -0.0000026480,0.0000026623,0.0000026732,0.0000026768,0.0000026757, -0.0000026757,0.0000026762,0.0000026822,0.0000026895,0.0000026946, -0.0000026976,0.0000027021,0.0000027104,0.0000027172,0.0000027190, -0.0000027169,0.0000027137,0.0000027119,0.0000027123,0.0000027151, -0.0000027217,0.0000027306,0.0000027372,0.0000027386,0.0000027371, -0.0000027356,0.0000027347,0.0000027333,0.0000027310,0.0000027287, -0.0000027261,0.0000027228,0.0000027195,0.0000027172,0.0000027163, -0.0000027147,0.0000027088,0.0000026985,0.0000026899,0.0000026852, -0.0000026801,0.0000026714,0.0000026625,0.0000026585,0.0000026594, -0.0000026631,0.0000026671,0.0000026707,0.0000026745,0.0000026787, -0.0000026838,0.0000026908,0.0000026999,0.0000027089,0.0000027157, -0.0000027203,0.0000027245,0.0000027280,0.0000027287,0.0000027267, -0.0000027230,0.0000027182,0.0000027152,0.0000027173,0.0000027240, -0.0000027081,0.0000026941,0.0000026867,0.0000026856,0.0000026868, -0.0000026898,0.0000026936,0.0000026982,0.0000027044,0.0000027138, -0.0000027258,0.0000027368,0.0000027405,0.0000027363,0.0000027256, -0.0000027203,0.0000027206,0.0000027158,0.0000027030,0.0000026966, -0.0000026966,0.0000026834,0.0000026622,0.0000026590,0.0000026629, -0.0000026613,0.0000026524,0.0000026478,0.0000026460,0.0000026539, -0.0000026675,0.0000026744,0.0000026753,0.0000026732,0.0000026734, -0.0000026756,0.0000026834,0.0000026918,0.0000026963,0.0000026983, -0.0000027027,0.0000027106,0.0000027166,0.0000027176,0.0000027151, -0.0000027107,0.0000027062,0.0000027033,0.0000027032,0.0000027070, -0.0000027144,0.0000027236,0.0000027301,0.0000027313,0.0000027302, -0.0000027300,0.0000027298,0.0000027283,0.0000027269,0.0000027263, -0.0000027251,0.0000027223,0.0000027185,0.0000027153,0.0000027143, -0.0000027142,0.0000027120,0.0000027053,0.0000026965,0.0000026888, -0.0000026809,0.0000026711,0.0000026625,0.0000026592,0.0000026601, -0.0000026624,0.0000026641,0.0000026672,0.0000026731,0.0000026806, -0.0000026886,0.0000026968,0.0000027055,0.0000027135,0.0000027190, -0.0000027218,0.0000027248,0.0000027290,0.0000027313,0.0000027297, -0.0000027254,0.0000027195,0.0000027164,0.0000027218,0.0000027292, -0.0000026955,0.0000026794,0.0000026751,0.0000026765,0.0000026793, -0.0000026829,0.0000026866,0.0000026895,0.0000026914,0.0000026921, -0.0000026914,0.0000026949,0.0000027042,0.0000027198,0.0000027354, -0.0000027407,0.0000027343,0.0000027225,0.0000027190,0.0000027196, -0.0000027103,0.0000026985,0.0000026982,0.0000026947,0.0000026722, -0.0000026592,0.0000026610,0.0000026664,0.0000026606,0.0000026517, -0.0000026479,0.0000026483,0.0000026600,0.0000026703,0.0000026743, -0.0000026734,0.0000026705,0.0000026716,0.0000026752,0.0000026844, -0.0000026932,0.0000026973,0.0000026994,0.0000027038,0.0000027099, -0.0000027134,0.0000027135,0.0000027116,0.0000027083,0.0000027035, -0.0000026980,0.0000026937,0.0000026931,0.0000026962,0.0000027051, -0.0000027165,0.0000027240,0.0000027259,0.0000027261,0.0000027262, -0.0000027254,0.0000027239,0.0000027239,0.0000027248,0.0000027242, -0.0000027213,0.0000027173,0.0000027138,0.0000027126,0.0000027126, -0.0000027118,0.0000027086,0.0000027016,0.0000026923,0.0000026820, -0.0000026713,0.0000026634,0.0000026614,0.0000026626,0.0000026636, -0.0000026638,0.0000026657,0.0000026726,0.0000026830,0.0000026934, -0.0000027024,0.0000027104,0.0000027174,0.0000027221,0.0000027243, -0.0000027259,0.0000027288,0.0000027316,0.0000027318,0.0000027288, -0.0000027228,0.0000027195,0.0000027260,0.0000027312,0.0000027190, -0.0000026760,0.0000026746,0.0000026747,0.0000026760,0.0000026776, -0.0000026808,0.0000026848,0.0000026888,0.0000026918,0.0000026925, -0.0000026915,0.0000026895,0.0000026879,0.0000026899,0.0000027005, -0.0000027191,0.0000027367,0.0000027394,0.0000027298,0.0000027186, -0.0000027191,0.0000027162,0.0000027039,0.0000026983,0.0000027012, -0.0000026864,0.0000026641,0.0000026589,0.0000026656,0.0000026689, -0.0000026592,0.0000026513,0.0000026477,0.0000026512,0.0000026642, -0.0000026718,0.0000026740,0.0000026711,0.0000026679,0.0000026700, -0.0000026751,0.0000026849,0.0000026932,0.0000026976,0.0000027006, -0.0000027052,0.0000027091,0.0000027099,0.0000027085,0.0000027067, -0.0000027048,0.0000027016,0.0000026964,0.0000026896,0.0000026833, -0.0000026808,0.0000026849,0.0000026972,0.0000027116,0.0000027208, -0.0000027237,0.0000027242,0.0000027237,0.0000027222,0.0000027215, -0.0000027224,0.0000027228,0.0000027215,0.0000027185,0.0000027149, -0.0000027119,0.0000027105,0.0000027101,0.0000027100,0.0000027088, -0.0000027040,0.0000026945,0.0000026826,0.0000026717,0.0000026654, -0.0000026646,0.0000026660,0.0000026661,0.0000026649,0.0000026663, -0.0000026737,0.0000026856,0.0000026973,0.0000027067,0.0000027145, -0.0000027208,0.0000027251,0.0000027272,0.0000027283,0.0000027297, -0.0000027312,0.0000027320,0.0000027313,0.0000027273,0.0000027247, -0.0000027296,0.0000027317,0.0000027154,0.0000026894,0.0000026752, -0.0000026751,0.0000026742,0.0000026744,0.0000026760,0.0000026784, -0.0000026815,0.0000026844,0.0000026881,0.0000026910,0.0000026923, -0.0000026916,0.0000026896,0.0000026865,0.0000026851,0.0000026886, -0.0000027016,0.0000027223,0.0000027382,0.0000027377,0.0000027239, -0.0000027172,0.0000027180,0.0000027117,0.0000027002,0.0000027019, -0.0000026984,0.0000026749,0.0000026613,0.0000026613,0.0000026706, -0.0000026694,0.0000026577,0.0000026504,0.0000026484,0.0000026551, -0.0000026673,0.0000026726,0.0000026731,0.0000026694,0.0000026659, -0.0000026688,0.0000026746,0.0000026841,0.0000026918,0.0000026971, -0.0000027017,0.0000027062,0.0000027083,0.0000027072,0.0000027044, -0.0000027020,0.0000027001,0.0000026977,0.0000026938,0.0000026879, -0.0000026806,0.0000026733,0.0000026709,0.0000026768,0.0000026930, -0.0000027106,0.0000027205,0.0000027227,0.0000027225,0.0000027214, -0.0000027203,0.0000027205,0.0000027206,0.0000027192,0.0000027163, -0.0000027131,0.0000027106,0.0000027089,0.0000027080,0.0000027076, -0.0000027077,0.0000027075,0.0000027034,0.0000026941,0.0000026823, -0.0000026724,0.0000026678,0.0000026682,0.0000026693,0.0000026685, -0.0000026677,0.0000026691,0.0000026764,0.0000026879,0.0000026991, -0.0000027082,0.0000027161,0.0000027226,0.0000027271,0.0000027295, -0.0000027310,0.0000027321,0.0000027324,0.0000027323,0.0000027323, -0.0000027301,0.0000027283,0.0000027329,0.0000027349,0.0000027176, -0.0000026893,0.0000026761,0.0000026753,0.0000026763,0.0000026791, -0.0000026822,0.0000026846,0.0000026861,0.0000026865,0.0000026859, -0.0000026854,0.0000026862,0.0000026882,0.0000026903,0.0000026911, -0.0000026900,0.0000026871,0.0000026842,0.0000026834,0.0000026901, -0.0000027061,0.0000027270,0.0000027390,0.0000027330,0.0000027185, -0.0000027169,0.0000027174,0.0000027072,0.0000027010,0.0000027041, -0.0000026888,0.0000026681,0.0000026608,0.0000026659,0.0000026744, -0.0000026682,0.0000026567,0.0000026511,0.0000026515,0.0000026604, -0.0000026703,0.0000026732,0.0000026724,0.0000026680,0.0000026643, -0.0000026673,0.0000026730,0.0000026820,0.0000026897,0.0000026958, -0.0000027016,0.0000027057,0.0000027068,0.0000027049,0.0000027015, -0.0000026985,0.0000026962,0.0000026936,0.0000026901,0.0000026851, -0.0000026793,0.0000026732,0.0000026674,0.0000026664,0.0000026745, -0.0000026936,0.0000027122,0.0000027207,0.0000027212,0.0000027200, -0.0000027188,0.0000027187,0.0000027193,0.0000027180,0.0000027147, -0.0000027107,0.0000027074,0.0000027052,0.0000027044,0.0000027044, -0.0000027047,0.0000027052,0.0000027048,0.0000027007,0.0000026920, -0.0000026814,0.0000026730,0.0000026702,0.0000026712,0.0000026719, -0.0000026704,0.0000026699,0.0000026729,0.0000026794,0.0000026885, -0.0000026979,0.0000027063,0.0000027145,0.0000027219,0.0000027277, -0.0000027311,0.0000027331,0.0000027343,0.0000027346,0.0000027342, -0.0000027336,0.0000027315,0.0000027296,0.0000027347,0.0000027396, -0.0000027240,0.0000026941,0.0000026778,0.0000026760,0.0000026804, -0.0000026864,0.0000026920,0.0000026956,0.0000026980,0.0000027004, -0.0000027019,0.0000027001,0.0000026947,0.0000026882,0.0000026852, -0.0000026853,0.0000026881,0.0000026911,0.0000026923,0.0000026892, -0.0000026846,0.0000026831,0.0000026848,0.0000026944,0.0000027129, -0.0000027323,0.0000027380,0.0000027264,0.0000027155,0.0000027189, -0.0000027154,0.0000027034,0.0000027044,0.0000027011,0.0000026801, -0.0000026649,0.0000026628,0.0000026716,0.0000026764,0.0000026669, -0.0000026579,0.0000026549,0.0000026571,0.0000026661,0.0000026739, -0.0000026749,0.0000026716,0.0000026668,0.0000026632,0.0000026654, -0.0000026711,0.0000026790,0.0000026870,0.0000026935,0.0000026996, -0.0000027029,0.0000027035,0.0000027014,0.0000026979,0.0000026950, -0.0000026930,0.0000026909,0.0000026881,0.0000026839,0.0000026785, -0.0000026732,0.0000026692,0.0000026665,0.0000026669,0.0000026767, -0.0000026965,0.0000027143,0.0000027199,0.0000027189,0.0000027168, -0.0000027161,0.0000027171,0.0000027174,0.0000027154,0.0000027111, -0.0000027068,0.0000027029,0.0000027001,0.0000026987,0.0000026989, -0.0000026999,0.0000027007,0.0000026998,0.0000026955,0.0000026882, -0.0000026799,0.0000026732,0.0000026714,0.0000026732,0.0000026736, -0.0000026719,0.0000026723,0.0000026764,0.0000026821,0.0000026880, -0.0000026947,0.0000027023,0.0000027109,0.0000027195,0.0000027265, -0.0000027315,0.0000027343,0.0000027358,0.0000027365,0.0000027367, -0.0000027366,0.0000027336,0.0000027296,0.0000027331,0.0000027400, -0.0000027324,0.0000027034,0.0000026819,0.0000026769,0.0000026771, -0.0000026910,0.0000026930,0.0000026938,0.0000026957,0.0000026992, -0.0000027045,0.0000027105,0.0000027137,0.0000027119,0.0000027033, -0.0000026920,0.0000026851,0.0000026848,0.0000026883,0.0000026932, -0.0000026954,0.0000026934,0.0000026882,0.0000026845,0.0000026849, -0.0000026893,0.0000027021,0.0000027214,0.0000027375,0.0000027368, -0.0000027193,0.0000027178,0.0000027203,0.0000027114,0.0000027041, -0.0000027065,0.0000026938,0.0000026735,0.0000026644,0.0000026668, -0.0000026758,0.0000026764,0.0000026674,0.0000026621,0.0000026614, -0.0000026645,0.0000026723,0.0000026780,0.0000026770,0.0000026705, -0.0000026658,0.0000026627,0.0000026647,0.0000026694,0.0000026759, -0.0000026840,0.0000026906,0.0000026962,0.0000026984,0.0000026983, -0.0000026958,0.0000026919,0.0000026890,0.0000026876,0.0000026867, -0.0000026853,0.0000026829,0.0000026794,0.0000026751,0.0000026712, -0.0000026693,0.0000026689,0.0000026702,0.0000026802,0.0000026998, -0.0000027158,0.0000027191,0.0000027161,0.0000027138,0.0000027141, -0.0000027161,0.0000027164,0.0000027138,0.0000027095,0.0000027047, -0.0000027000,0.0000026960,0.0000026932,0.0000026921,0.0000026927, -0.0000026934,0.0000026926,0.0000026891,0.0000026839,0.0000026778, -0.0000026731,0.0000026728,0.0000026751,0.0000026753,0.0000026736, -0.0000026749,0.0000026794,0.0000026838,0.0000026874,0.0000026921, -0.0000026985,0.0000027065,0.0000027157,0.0000027236,0.0000027294, -0.0000027338,0.0000027366,0.0000027378,0.0000027387,0.0000027396, -0.0000027377,0.0000027312,0.0000027303,0.0000027388,0.0000027378, -0.0000027147,0.0000026895,0.0000026810,0.0000026813,0.0000026853, -0.0000026920,0.0000026885,0.0000026876,0.0000026899,0.0000026948, -0.0000027019,0.0000027100,0.0000027168,0.0000027203,0.0000027186, -0.0000027101,0.0000026972,0.0000026874,0.0000026854,0.0000026888, -0.0000026944,0.0000026980,0.0000026983,0.0000026941,0.0000026895, -0.0000026882,0.0000026901,0.0000026971,0.0000027124,0.0000027307, -0.0000027407,0.0000027304,0.0000027166,0.0000027211,0.0000027196, -0.0000027077,0.0000027068,0.0000027040,0.0000026863,0.0000026688, -0.0000026661,0.0000026713,0.0000026783,0.0000026775,0.0000026711, -0.0000026698,0.0000026709,0.0000026737,0.0000026789,0.0000026826, -0.0000026799,0.0000026710,0.0000026657,0.0000026634,0.0000026649, -0.0000026682,0.0000026729,0.0000026808,0.0000026878,0.0000026921, -0.0000026932,0.0000026925,0.0000026892,0.0000026844,0.0000026809, -0.0000026799,0.0000026803,0.0000026800,0.0000026786,0.0000026774, -0.0000026762,0.0000026748,0.0000026733,0.0000026730,0.0000026732, -0.0000026745,0.0000026839,0.0000027024,0.0000027156,0.0000027166, -0.0000027129,0.0000027111,0.0000027132,0.0000027160,0.0000027157, -0.0000027127,0.0000027087,0.0000027035,0.0000026974,0.0000026919, -0.0000026878,0.0000026853,0.0000026846,0.0000026849,0.0000026847, -0.0000026834,0.0000026801,0.0000026751,0.0000026727,0.0000026740, -0.0000026767,0.0000026765,0.0000026758,0.0000026784,0.0000026831, -0.0000026861,0.0000026877,0.0000026907,0.0000026962,0.0000027031, -0.0000027108,0.0000027188,0.0000027254,0.0000027306,0.0000027351, -0.0000027385,0.0000027402,0.0000027415,0.0000027408,0.0000027348, -0.0000027299,0.0000027358,0.0000027409,0.0000027258,0.0000026996, -0.0000026878,0.0000026879,0.0000026908,0.0000026935,0.0000026881, -0.0000026831,0.0000026822,0.0000026854,0.0000026913,0.0000026985, -0.0000027066,0.0000027144,0.0000027203,0.0000027226,0.0000027224, -0.0000027150,0.0000027014,0.0000026891,0.0000026857,0.0000026888, -0.0000026950,0.0000027004,0.0000027026,0.0000027007,0.0000026967, -0.0000026942,0.0000026936,0.0000026977,0.0000027071,0.0000027227, -0.0000027394,0.0000027411,0.0000027211,0.0000027197,0.0000027234, -0.0000027167,0.0000027069,0.0000027086,0.0000026985,0.0000026794, -0.0000026671,0.0000026697,0.0000026757,0.0000026805,0.0000026801, -0.0000026778,0.0000026793,0.0000026819,0.0000026835,0.0000026860, -0.0000026878,0.0000026842,0.0000026744,0.0000026670,0.0000026647, -0.0000026657,0.0000026673,0.0000026703,0.0000026773,0.0000026849, -0.0000026884,0.0000026890,0.0000026877,0.0000026840,0.0000026787, -0.0000026744,0.0000026734,0.0000026745,0.0000026752,0.0000026744, -0.0000026738,0.0000026737,0.0000026747,0.0000026764,0.0000026777, -0.0000026783,0.0000026777,0.0000026783,0.0000026869,0.0000027040, -0.0000027149,0.0000027140,0.0000027102,0.0000027101,0.0000027138, -0.0000027161,0.0000027151,0.0000027123,0.0000027076,0.0000027005, -0.0000026926,0.0000026866,0.0000026829,0.0000026801,0.0000026785, -0.0000026785,0.0000026791,0.0000026789,0.0000026760,0.0000026724, -0.0000026722,0.0000026756,0.0000026780,0.0000026774,0.0000026771, -0.0000026815,0.0000026875,0.0000026906,0.0000026914,0.0000026927, -0.0000026961,0.0000027015,0.0000027076,0.0000027138,0.0000027205, -0.0000027265,0.0000027320,0.0000027370,0.0000027407,0.0000027426, -0.0000027422,0.0000027375,0.0000027308,0.0000027336,0.0000027411, -0.0000027359,0.0000027110,0.0000026940,0.0000026934,0.0000026974, -0.0000026994,0.0000026954,0.0000026845,0.0000026801,0.0000026802, -0.0000026838,0.0000026891,0.0000026947,0.0000027011,0.0000027080, -0.0000027145,0.0000027203,0.0000027247,0.0000027260,0.0000027196, -0.0000027047,0.0000026905,0.0000026868,0.0000026903,0.0000026959, -0.0000027017,0.0000027051,0.0000027059,0.0000027031,0.0000027002, -0.0000026988,0.0000026995,0.0000027053,0.0000027175,0.0000027335, -0.0000027440,0.0000027328,0.0000027184,0.0000027240,0.0000027244, -0.0000027135,0.0000027097,0.0000027064,0.0000026936,0.0000026732, -0.0000026684,0.0000026739,0.0000026785,0.0000026824,0.0000026847, -0.0000026863,0.0000026899,0.0000026923,0.0000026932,0.0000026943, -0.0000026937,0.0000026897,0.0000026802,0.0000026703,0.0000026660, -0.0000026669,0.0000026668,0.0000026680,0.0000026734,0.0000026818, -0.0000026859,0.0000026859,0.0000026842,0.0000026810,0.0000026761, -0.0000026714,0.0000026699,0.0000026707,0.0000026723,0.0000026729, -0.0000026732,0.0000026731,0.0000026734,0.0000026753,0.0000026791, -0.0000026824,0.0000026833,0.0000026814,0.0000026813,0.0000026889, -0.0000027044,0.0000027132,0.0000027116,0.0000027090,0.0000027105, -0.0000027150,0.0000027170,0.0000027158,0.0000027124,0.0000027051, -0.0000026949,0.0000026862,0.0000026813,0.0000026787,0.0000026764, -0.0000026745,0.0000026740,0.0000026742,0.0000026735,0.0000026713, -0.0000026703,0.0000026731,0.0000026776,0.0000026795,0.0000026784, -0.0000026786,0.0000026837,0.0000026910,0.0000026959,0.0000026981, -0.0000026998,0.0000027014,0.0000027037,0.0000027072,0.0000027114, -0.0000027161,0.0000027217,0.0000027277,0.0000027335,0.0000027384, -0.0000027416,0.0000027420,0.0000027380,0.0000027311,0.0000027310, -0.0000027409,0.0000027439,0.0000027251,0.0000027022,0.0000026969, -0.0000027014,0.0000027053,0.0000027029,0.0000026935,0.0000026825, -0.0000026798,0.0000026799,0.0000026822,0.0000026851,0.0000026884, -0.0000026925,0.0000026980,0.0000027045,0.0000027120,0.0000027207, -0.0000027285,0.0000027314,0.0000027249,0.0000027090,0.0000026948, -0.0000026911,0.0000026931,0.0000026968,0.0000027016,0.0000027058, -0.0000027072,0.0000027063,0.0000027046,0.0000027040,0.0000027032, -0.0000027063,0.0000027150,0.0000027276,0.0000027432,0.0000027432, -0.0000027223,0.0000027232,0.0000027273,0.0000027236,0.0000027116, -0.0000027099,0.0000027028,0.0000026875,0.0000026697,0.0000026704, -0.0000026775,0.0000026806,0.0000026847,0.0000026899,0.0000026954, -0.0000027003,0.0000027025,0.0000027031,0.0000027024,0.0000027004, -0.0000026960,0.0000026872,0.0000026757,0.0000026684,0.0000026680, -0.0000026675,0.0000026665,0.0000026697,0.0000026784,0.0000026840, -0.0000026831,0.0000026807,0.0000026781,0.0000026742,0.0000026700, -0.0000026682,0.0000026682,0.0000026695,0.0000026718,0.0000026744, -0.0000026761,0.0000026766,0.0000026765,0.0000026778,0.0000026817, -0.0000026862,0.0000026873,0.0000026842,0.0000026829,0.0000026896, -0.0000027039,0.0000027109,0.0000027096,0.0000027084,0.0000027117, -0.0000027167,0.0000027184,0.0000027173,0.0000027122,0.0000027011, -0.0000026883,0.0000026802,0.0000026766,0.0000026742,0.0000026719, -0.0000026700,0.0000026691,0.0000026690,0.0000026689,0.0000026692, -0.0000026714,0.0000026764,0.0000026804,0.0000026808,0.0000026795, -0.0000026808,0.0000026864,0.0000026936,0.0000026992,0.0000027032, -0.0000027066,0.0000027089,0.0000027092,0.0000027093,0.0000027109, -0.0000027139,0.0000027175,0.0000027216,0.0000027266,0.0000027320, -0.0000027365,0.0000027383,0.0000027364,0.0000027305,0.0000027281, -0.0000027367,0.0000027467,0.0000027402,0.0000027151,0.0000027005, -0.0000027023,0.0000027099,0.0000027111,0.0000027026,0.0000026906, -0.0000026825,0.0000026800,0.0000026790,0.0000026783,0.0000026788, -0.0000026813,0.0000026856,0.0000026905,0.0000026957,0.0000027019, -0.0000027105,0.0000027221,0.0000027331,0.0000027373,0.0000027311, -0.0000027149,0.0000027013,0.0000026969,0.0000026963,0.0000026972, -0.0000026994,0.0000027032,0.0000027062,0.0000027067,0.0000027071, -0.0000027083,0.0000027077,0.0000027078,0.0000027143,0.0000027238, -0.0000027386,0.0000027459,0.0000027332,0.0000027216,0.0000027283, -0.0000027296,0.0000027185,0.0000027109,0.0000027073,0.0000027003, -0.0000026805,0.0000026684,0.0000026742,0.0000026806,0.0000026829, -0.0000026872,0.0000026948,0.0000027037,0.0000027100,0.0000027129, -0.0000027124,0.0000027104,0.0000027075,0.0000027023,0.0000026946, -0.0000026830,0.0000026727,0.0000026695,0.0000026691,0.0000026667, -0.0000026673,0.0000026746,0.0000026816,0.0000026806,0.0000026771, -0.0000026737,0.0000026703,0.0000026671,0.0000026659,0.0000026660, -0.0000026668,0.0000026691,0.0000026733,0.0000026781,0.0000026811, -0.0000026822,0.0000026812,0.0000026810,0.0000026840,0.0000026891, -0.0000026907,0.0000026862,0.0000026823,0.0000026890,0.0000027029, -0.0000027092,0.0000027084,0.0000027084,0.0000027127,0.0000027185, -0.0000027207,0.0000027193,0.0000027115,0.0000026964,0.0000026822, -0.0000026751,0.0000026723,0.0000026700,0.0000026681,0.0000026670, -0.0000026669,0.0000026677,0.0000026693,0.0000026728,0.0000026776, -0.0000026820,0.0000026838,0.0000026835,0.0000026833,0.0000026858, -0.0000026908,0.0000026959,0.0000026998,0.0000027036,0.0000027077, -0.0000027113,0.0000027131,0.0000027128,0.0000027117,0.0000027120, -0.0000027138,0.0000027160,0.0000027187,0.0000027222,0.0000027262, -0.0000027297,0.0000027306,0.0000027283,0.0000027262,0.0000027316, -0.0000027455,0.0000027498,0.0000027330,0.0000027102,0.0000027036, -0.0000027092,0.0000027157,0.0000027133,0.0000027014,0.0000026894, -0.0000026836,0.0000026804,0.0000026764,0.0000026731,0.0000026744, -0.0000026794,0.0000026856,0.0000026915,0.0000026959,0.0000026986, -0.0000027026,0.0000027100,0.0000027237,0.0000027375,0.0000027430, -0.0000027364,0.0000027207,0.0000027075,0.0000027017,0.0000026986, -0.0000026960,0.0000026952,0.0000026982,0.0000027030,0.0000027057, -0.0000027083,0.0000027113,0.0000027113,0.0000027099,0.0000027145, -0.0000027222,0.0000027341,0.0000027457,0.0000027435,0.0000027237, -0.0000027274,0.0000027306,0.0000027278,0.0000027137,0.0000027088, -0.0000027048,0.0000026963,0.0000026751,0.0000026705,0.0000026780, -0.0000026833,0.0000026856,0.0000026900,0.0000026985,0.0000027092, -0.0000027183,0.0000027222,0.0000027214,0.0000027189,0.0000027144, -0.0000027087,0.0000027021,0.0000026917,0.0000026787,0.0000026714, -0.0000026703,0.0000026683,0.0000026663,0.0000026709,0.0000026788, -0.0000026795,0.0000026751,0.0000026696,0.0000026650,0.0000026614, -0.0000026606,0.0000026621,0.0000026640,0.0000026664,0.0000026703, -0.0000026763,0.0000026822,0.0000026859,0.0000026869,0.0000026851, -0.0000026837,0.0000026869,0.0000026925,0.0000026939,0.0000026874, -0.0000026814,0.0000026882,0.0000027021,0.0000027084,0.0000027078, -0.0000027084,0.0000027136,0.0000027200,0.0000027228,0.0000027210, -0.0000027105,0.0000026918,0.0000026771,0.0000026714,0.0000026700, -0.0000026691,0.0000026682,0.0000026684,0.0000026697,0.0000026725, -0.0000026767,0.0000026815,0.0000026854,0.0000026873,0.0000026877, -0.0000026881,0.0000026902,0.0000026939,0.0000026972,0.0000026989, -0.0000027001,0.0000027022,0.0000027057,0.0000027095,0.0000027125, -0.0000027142,0.0000027139,0.0000027125,0.0000027112,0.0000027106, -0.0000027111,0.0000027129,0.0000027153,0.0000027180,0.0000027207, -0.0000027222,0.0000027226,0.0000027271,0.0000027405,0.0000027521, -0.0000027481,0.0000027265,0.0000027088,0.0000027074,0.0000027157, -0.0000027205,0.0000027144,0.0000027010,0.0000026897,0.0000026847, -0.0000026802,0.0000026739,0.0000026707,0.0000026744,0.0000026833, -0.0000026925,0.0000026997,0.0000027035,0.0000027040,0.0000027035, -0.0000027052,0.0000027124,0.0000027274,0.0000027428,0.0000027475, -0.0000027399,0.0000027246,0.0000027123,0.0000027049,0.0000026988, -0.0000026930,0.0000026900,0.0000026928,0.0000026989,0.0000027034, -0.0000027075,0.0000027120,0.0000027134,0.0000027118,0.0000027147, -0.0000027223,0.0000027313,0.0000027436,0.0000027470,0.0000027321, -0.0000027243,0.0000027311,0.0000027310,0.0000027212,0.0000027098, -0.0000027057,0.0000027040,0.0000026903,0.0000026724,0.0000026725, -0.0000026809,0.0000026858,0.0000026882,0.0000026931,0.0000027012, -0.0000027129,0.0000027230,0.0000027285,0.0000027292,0.0000027268, -0.0000027216,0.0000027152,0.0000027088,0.0000026998,0.0000026866, -0.0000026748,0.0000026711,0.0000026698,0.0000026671,0.0000026683, -0.0000026756,0.0000026792,0.0000026752,0.0000026689,0.0000026625, -0.0000026570,0.0000026552,0.0000026567,0.0000026600,0.0000026637, -0.0000026677,0.0000026730,0.0000026798,0.0000026856,0.0000026891, -0.0000026900,0.0000026885,0.0000026875,0.0000026907,0.0000026963, -0.0000026966,0.0000026880,0.0000026806,0.0000026869,0.0000027010, -0.0000027080,0.0000027077,0.0000027083,0.0000027139,0.0000027212, -0.0000027249,0.0000027228,0.0000027091,0.0000026876,0.0000026736, -0.0000026704,0.0000026706,0.0000026719,0.0000026731,0.0000026749, -0.0000026779,0.0000026820,0.0000026861,0.0000026888,0.0000026901, -0.0000026907,0.0000026918,0.0000026942,0.0000026977,0.0000027007, -0.0000027020,0.0000027019,0.0000027011,0.0000027012,0.0000027029, -0.0000027062,0.0000027100,0.0000027129,0.0000027139,0.0000027134, -0.0000027113,0.0000027087,0.0000027067,0.0000027063,0.0000027075, -0.0000027093,0.0000027115,0.0000027140,0.0000027169,0.0000027220, -0.0000027338,0.0000027498,0.0000027554,0.0000027435,0.0000027225, -0.0000027100,0.0000027122,0.0000027212,0.0000027242,0.0000027159, -0.0000027019,0.0000026907,0.0000026854,0.0000026799,0.0000026729, -0.0000026712,0.0000026782,0.0000026901,0.0000027009,0.0000027085, -0.0000027123,0.0000027127,0.0000027111,0.0000027093,0.0000027095, -0.0000027171,0.0000027341,0.0000027484,0.0000027496,0.0000027401, -0.0000027260,0.0000027146,0.0000027052,0.0000026968,0.0000026893, -0.0000026859,0.0000026886,0.0000026944,0.0000026998,0.0000027054, -0.0000027111,0.0000027138,0.0000027135,0.0000027157,0.0000027230, -0.0000027302,0.0000027419,0.0000027468,0.0000027420,0.0000027234, -0.0000027298,0.0000027311,0.0000027294,0.0000027147,0.0000027058, -0.0000027045,0.0000027027,0.0000026838,0.0000026717,0.0000026747, -0.0000026825,0.0000026882,0.0000026925,0.0000026964,0.0000027038, -0.0000027146,0.0000027244,0.0000027301,0.0000027328,0.0000027322, -0.0000027280,0.0000027211,0.0000027139,0.0000027060,0.0000026948, -0.0000026804,0.0000026716,0.0000026704,0.0000026695,0.0000026681, -0.0000026721,0.0000026775,0.0000026768,0.0000026721,0.0000026654, -0.0000026591,0.0000026556,0.0000026558,0.0000026587,0.0000026622, -0.0000026660,0.0000026698,0.0000026755,0.0000026822,0.0000026876, -0.0000026902,0.0000026913,0.0000026911,0.0000026912,0.0000026951, -0.0000027009,0.0000026995,0.0000026885,0.0000026804,0.0000026856, -0.0000026996,0.0000027075,0.0000027073,0.0000027076,0.0000027138, -0.0000027222,0.0000027268,0.0000027242,0.0000027074,0.0000026840, -0.0000026715,0.0000026708,0.0000026743,0.0000026780,0.0000026808, -0.0000026833,0.0000026863,0.0000026897,0.0000026918,0.0000026925, -0.0000026928,0.0000026941,0.0000026967,0.0000027000,0.0000027024, -0.0000027034,0.0000027032,0.0000027021,0.0000027009,0.0000027003, -0.0000027007,0.0000027027,0.0000027064,0.0000027101,0.0000027123, -0.0000027128,0.0000027116,0.0000027092,0.0000027065,0.0000027048, -0.0000027045,0.0000027052,0.0000027067,0.0000027089,0.0000027122, -0.0000027178,0.0000027280,0.0000027437,0.0000027555,0.0000027535, -0.0000027383,0.0000027204,0.0000027130,0.0000027161,0.0000027247, -0.0000027264,0.0000027176,0.0000027035,0.0000026919,0.0000026862, -0.0000026806,0.0000026737,0.0000026731,0.0000026831,0.0000026966, -0.0000027067,0.0000027131,0.0000027171,0.0000027191,0.0000027188, -0.0000027157,0.0000027125,0.0000027127,0.0000027234,0.0000027419, -0.0000027517,0.0000027491,0.0000027371,0.0000027248,0.0000027137, -0.0000027030,0.0000026940,0.0000026866,0.0000026832,0.0000026855, -0.0000026902,0.0000026968,0.0000027040,0.0000027101,0.0000027136, -0.0000027147,0.0000027179,0.0000027243,0.0000027301,0.0000027412, -0.0000027464,0.0000027474,0.0000027275,0.0000027258,0.0000027311, -0.0000027308,0.0000027236,0.0000027090,0.0000027037,0.0000027052, -0.0000026987,0.0000026783,0.0000026723,0.0000026769,0.0000026842, -0.0000026916,0.0000026967,0.0000027005,0.0000027072,0.0000027157, -0.0000027236,0.0000027293,0.0000027326,0.0000027336,0.0000027313, -0.0000027253,0.0000027177,0.0000027100,0.0000027009,0.0000026875, -0.0000026744,0.0000026702,0.0000026710,0.0000026695,0.0000026697, -0.0000026744,0.0000026770,0.0000026757,0.0000026715,0.0000026662, -0.0000026622,0.0000026617,0.0000026630,0.0000026648,0.0000026668, -0.0000026691,0.0000026721,0.0000026770,0.0000026833,0.0000026877, -0.0000026899,0.0000026917,0.0000026934,0.0000026951,0.0000027001, -0.0000027054,0.0000027022,0.0000026897,0.0000026799,0.0000026830, -0.0000026971,0.0000027058,0.0000027063,0.0000027071,0.0000027137, -0.0000027231,0.0000027282,0.0000027250,0.0000027059,0.0000026813, -0.0000026703,0.0000026723,0.0000026786,0.0000026840,0.0000026872, -0.0000026893,0.0000026912,0.0000026927,0.0000026935,0.0000026940, -0.0000026950,0.0000026972,0.0000027001,0.0000027028,0.0000027043, -0.0000027043,0.0000027028,0.0000027005,0.0000026985,0.0000026975, -0.0000026977,0.0000026990,0.0000027016,0.0000027052,0.0000027084, -0.0000027102,0.0000027104,0.0000027092,0.0000027072,0.0000027054, -0.0000027049,0.0000027052,0.0000027060,0.0000027078,0.0000027111, -0.0000027166,0.0000027256,0.0000027389,0.0000027516,0.0000027558, -0.0000027491,0.0000027337,0.0000027192,0.0000027141,0.0000027177, -0.0000027262,0.0000027282,0.0000027200,0.0000027060,0.0000026933, -0.0000026877,0.0000026830,0.0000026765,0.0000026758,0.0000026868, -0.0000027014,0.0000027103,0.0000027147,0.0000027181,0.0000027207, -0.0000027219,0.0000027207,0.0000027161,0.0000027125,0.0000027150, -0.0000027304,0.0000027488,0.0000027530,0.0000027443,0.0000027319, -0.0000027218,0.0000027109,0.0000027003,0.0000026918,0.0000026847, -0.0000026814,0.0000026831,0.0000026874,0.0000026950,0.0000027037, -0.0000027096,0.0000027129,0.0000027156,0.0000027214,0.0000027267, -0.0000027308,0.0000027418,0.0000027469,0.0000027484,0.0000027342, -0.0000027216,0.0000027301,0.0000027295,0.0000027294,0.0000027164, -0.0000027045,0.0000027038,0.0000027050,0.0000026927,0.0000026751, -0.0000026737,0.0000026791,0.0000026866,0.0000026952,0.0000027001, -0.0000027043,0.0000027099,0.0000027164,0.0000027224,0.0000027268, -0.0000027300,0.0000027320,0.0000027308,0.0000027264,0.0000027195, -0.0000027119,0.0000027046,0.0000026948,0.0000026807,0.0000026708, -0.0000026706,0.0000026714,0.0000026702,0.0000026714,0.0000026747, -0.0000026760,0.0000026739,0.0000026703,0.0000026676,0.0000026675, -0.0000026696,0.0000026718,0.0000026727,0.0000026725,0.0000026726, -0.0000026738,0.0000026777,0.0000026833,0.0000026866,0.0000026886, -0.0000026921,0.0000026963,0.0000027000,0.0000027051,0.0000027088, -0.0000027048,0.0000026919,0.0000026806,0.0000026812,0.0000026933, -0.0000027040,0.0000027060,0.0000027069,0.0000027135,0.0000027233, -0.0000027286,0.0000027253,0.0000027054,0.0000026798,0.0000026694, -0.0000026728,0.0000026808,0.0000026870,0.0000026902,0.0000026916, -0.0000026925,0.0000026931,0.0000026934,0.0000026935,0.0000026938, -0.0000026944,0.0000026953,0.0000026963,0.0000026973,0.0000026980, -0.0000026982,0.0000026979,0.0000026969,0.0000026958,0.0000026956, -0.0000026962,0.0000026980,0.0000027009,0.0000027044,0.0000027070, -0.0000027083,0.0000027085,0.0000027073,0.0000027060,0.0000027060, -0.0000027074,0.0000027092,0.0000027114,0.0000027147,0.0000027199, -0.0000027276,0.0000027379,0.0000027485,0.0000027542,0.0000027531, -0.0000027434,0.0000027299,0.0000027185,0.0000027140,0.0000027173, -0.0000027261,0.0000027295,0.0000027239,0.0000027103,0.0000026960, -0.0000026902,0.0000026864,0.0000026817,0.0000026796,0.0000026884, -0.0000027037,0.0000027133,0.0000027168,0.0000027186,0.0000027200, -0.0000027216,0.0000027219,0.0000027194,0.0000027138,0.0000027111, -0.0000027185,0.0000027383,0.0000027526,0.0000027503,0.0000027375, -0.0000027269,0.0000027181,0.0000027074,0.0000026978,0.0000026902, -0.0000026836,0.0000026800,0.0000026814,0.0000026863,0.0000026944, -0.0000027034,0.0000027089,0.0000027123,0.0000027169,0.0000027249, -0.0000027295,0.0000027326,0.0000027436,0.0000027482,0.0000027484, -0.0000027401,0.0000027203,0.0000027262,0.0000027291,0.0000027292, -0.0000027245,0.0000027097,0.0000027019,0.0000027054,0.0000027036, -0.0000026868,0.0000026738,0.0000026751,0.0000026818,0.0000026897, -0.0000026968,0.0000027025,0.0000027066,0.0000027113,0.0000027163, -0.0000027206,0.0000027235,0.0000027259,0.0000027279,0.0000027278, -0.0000027242,0.0000027183,0.0000027117,0.0000027059,0.0000026995, -0.0000026888,0.0000026750,0.0000026698,0.0000026711,0.0000026718, -0.0000026709,0.0000026718,0.0000026728,0.0000026717,0.0000026690, -0.0000026676,0.0000026686,0.0000026717,0.0000026759,0.0000026795, -0.0000026803,0.0000026784,0.0000026760,0.0000026753,0.0000026780, -0.0000026826,0.0000026846,0.0000026870,0.0000026928,0.0000026997, -0.0000027053,0.0000027102,0.0000027120,0.0000027084,0.0000026966, -0.0000026840,0.0000026812,0.0000026889,0.0000027010,0.0000027061, -0.0000027074,0.0000027129,0.0000027223,0.0000027278,0.0000027252, -0.0000027064,0.0000026803,0.0000026680,0.0000026702,0.0000026787, -0.0000026862,0.0000026900,0.0000026913,0.0000026914,0.0000026912, -0.0000026909,0.0000026903,0.0000026897,0.0000026892,0.0000026889, -0.0000026882,0.0000026871,0.0000026859,0.0000026850,0.0000026850, -0.0000026857,0.0000026872,0.0000026893,0.0000026916,0.0000026943, -0.0000026973,0.0000027005,0.0000027032,0.0000027050,0.0000027059, -0.0000027063,0.0000027064,0.0000027072,0.0000027094,0.0000027131, -0.0000027175,0.0000027224,0.0000027279,0.0000027343,0.0000027416, -0.0000027487,0.0000027533,0.0000027531,0.0000027472,0.0000027374, -0.0000027273,0.0000027180,0.0000027133,0.0000027154,0.0000027252, -0.0000027311,0.0000027285,0.0000027163,0.0000027007,0.0000026948, -0.0000026907,0.0000026881,0.0000026842,0.0000026884,0.0000027031, -0.0000027149,0.0000027191,0.0000027196,0.0000027193,0.0000027198, -0.0000027209,0.0000027207,0.0000027174,0.0000027120,0.0000027115, -0.0000027242,0.0000027461,0.0000027535,0.0000027442,0.0000027312, -0.0000027224,0.0000027135,0.0000027036,0.0000026953,0.0000026888, -0.0000026823,0.0000026789,0.0000026813,0.0000026877,0.0000026954, -0.0000027030,0.0000027077,0.0000027119,0.0000027189,0.0000027279, -0.0000027315,0.0000027356,0.0000027467,0.0000027493,0.0000027481, -0.0000027432,0.0000027208,0.0000027209,0.0000027294,0.0000027272, -0.0000027283,0.0000027168,0.0000027033,0.0000027020,0.0000027064, -0.0000027002,0.0000026815,0.0000026729,0.0000026776,0.0000026859, -0.0000026923,0.0000026984,0.0000027032,0.0000027073,0.0000027112, -0.0000027149,0.0000027176,0.0000027186,0.0000027198,0.0000027214, -0.0000027218,0.0000027193,0.0000027144,0.0000027092,0.0000027044, -0.0000027007,0.0000026951,0.0000026825,0.0000026706,0.0000026680, -0.0000026710,0.0000026714,0.0000026705,0.0000026699,0.0000026684, -0.0000026673,0.0000026676,0.0000026698,0.0000026727,0.0000026764, -0.0000026811,0.0000026856,0.0000026868,0.0000026831,0.0000026779, -0.0000026754,0.0000026779,0.0000026813,0.0000026821,0.0000026863, -0.0000026947,0.0000027034,0.0000027112,0.0000027154,0.0000027162, -0.0000027129,0.0000027036,0.0000026906,0.0000026830,0.0000026865, -0.0000026973,0.0000027053,0.0000027074,0.0000027115,0.0000027198, -0.0000027258,0.0000027249,0.0000027098,0.0000026845,0.0000026671, -0.0000026642,0.0000026689,0.0000026746,0.0000026773,0.0000026769, -0.0000026749,0.0000026726,0.0000026707,0.0000026694,0.0000026688, -0.0000026691,0.0000026702,0.0000026716,0.0000026730,0.0000026739, -0.0000026746,0.0000026750,0.0000026753,0.0000026758,0.0000026769, -0.0000026792,0.0000026826,0.0000026868,0.0000026913,0.0000026955, -0.0000026988,0.0000027013,0.0000027034,0.0000027058,0.0000027085, -0.0000027117,0.0000027157,0.0000027214,0.0000027292,0.0000027375, -0.0000027441,0.0000027485,0.0000027516,0.0000027529,0.0000027521, -0.0000027474,0.0000027399,0.0000027332,0.0000027267,0.0000027182, -0.0000027116,0.0000027133,0.0000027235,0.0000027327,0.0000027325, -0.0000027233,0.0000027077,0.0000027023,0.0000026959,0.0000026946, -0.0000026905,0.0000026889,0.0000026990,0.0000027132,0.0000027202, -0.0000027207,0.0000027196,0.0000027185,0.0000027186,0.0000027195, -0.0000027193,0.0000027159,0.0000027113,0.0000027136,0.0000027323, -0.0000027513,0.0000027508,0.0000027377,0.0000027259,0.0000027174, -0.0000027087,0.0000027004,0.0000026935,0.0000026872,0.0000026805, -0.0000026786,0.0000026830,0.0000026911,0.0000026975,0.0000027025, -0.0000027065,0.0000027125,0.0000027217,0.0000027297,0.0000027324, -0.0000027397,0.0000027505,0.0000027503,0.0000027473,0.0000027438, -0.0000027211,0.0000027160,0.0000027283,0.0000027261,0.0000027288, -0.0000027236,0.0000027086,0.0000027003,0.0000027047,0.0000027055, -0.0000026957,0.0000026780,0.0000026744,0.0000026822,0.0000026905, -0.0000026955,0.0000026993,0.0000027028,0.0000027063,0.0000027099, -0.0000027126,0.0000027137,0.0000027125,0.0000027116,0.0000027121, -0.0000027131,0.0000027123,0.0000027085,0.0000027043,0.0000027011, -0.0000026991,0.0000026966,0.0000026900,0.0000026762,0.0000026667, -0.0000026670,0.0000026698,0.0000026701,0.0000026696,0.0000026693, -0.0000026704,0.0000026733,0.0000026760,0.0000026781,0.0000026795, -0.0000026814,0.0000026857,0.0000026912,0.0000026915,0.0000026858, -0.0000026779,0.0000026750,0.0000026774,0.0000026794,0.0000026803, -0.0000026869,0.0000026966,0.0000027074,0.0000027174,0.0000027207, -0.0000027201,0.0000027178,0.0000027125,0.0000027018,0.0000026901, -0.0000026870,0.0000026928,0.0000027021,0.0000027065,0.0000027097, -0.0000027163,0.0000027228,0.0000027233,0.0000027142,0.0000026932, -0.0000026723,0.0000026629,0.0000026606,0.0000026597,0.0000026588, -0.0000026572,0.0000026555,0.0000026548,0.0000026558,0.0000026580, -0.0000026608,0.0000026636,0.0000026662,0.0000026684,0.0000026701, -0.0000026711,0.0000026718,0.0000026727,0.0000026735,0.0000026737, -0.0000026737,0.0000026740,0.0000026751,0.0000026778,0.0000026814, -0.0000026859,0.0000026908,0.0000026956,0.0000027001,0.0000027047, -0.0000027092,0.0000027138,0.0000027184,0.0000027243,0.0000027330, -0.0000027433,0.0000027513,0.0000027546,0.0000027544,0.0000027520, -0.0000027487,0.0000027439,0.0000027388,0.0000027349,0.0000027323, -0.0000027275,0.0000027188,0.0000027115,0.0000027118,0.0000027207, -0.0000027318,0.0000027353,0.0000027306,0.0000027174,0.0000027127, -0.0000027018,0.0000027004,0.0000026985,0.0000026937,0.0000026950, -0.0000027072,0.0000027182,0.0000027210,0.0000027204,0.0000027187, -0.0000027176,0.0000027176,0.0000027184,0.0000027187,0.0000027155, -0.0000027117,0.0000027189,0.0000027395,0.0000027517,0.0000027468, -0.0000027324,0.0000027212,0.0000027130,0.0000027057,0.0000026995, -0.0000026933,0.0000026859,0.0000026794,0.0000026790,0.0000026858, -0.0000026943,0.0000026990,0.0000027019,0.0000027061,0.0000027151, -0.0000027252,0.0000027301,0.0000027334,0.0000027448,0.0000027536, -0.0000027507,0.0000027459,0.0000027430,0.0000027210,0.0000027108, -0.0000027250,0.0000027260,0.0000027261,0.0000027278,0.0000027150, -0.0000027010,0.0000026990,0.0000027056,0.0000027038,0.0000026919, -0.0000026767,0.0000026772,0.0000026877,0.0000026950,0.0000026984, -0.0000027002,0.0000027025,0.0000027058,0.0000027093,0.0000027115, -0.0000027112,0.0000027070,0.0000027031,0.0000027011,0.0000027021, -0.0000027030,0.0000027010,0.0000026978,0.0000026955,0.0000026945, -0.0000026949,0.0000026934,0.0000026843,0.0000026712,0.0000026645, -0.0000026656,0.0000026683,0.0000026708,0.0000026740,0.0000026784, -0.0000026826,0.0000026847,0.0000026855,0.0000026857,0.0000026854, -0.0000026864,0.0000026909,0.0000026962,0.0000026950,0.0000026859, -0.0000026764,0.0000026736,0.0000026764,0.0000026769,0.0000026798, -0.0000026881,0.0000026982,0.0000027112,0.0000027229,0.0000027259, -0.0000027247,0.0000027235,0.0000027223,0.0000027158,0.0000027027, -0.0000026912,0.0000026903,0.0000026976,0.0000027044,0.0000027076, -0.0000027120,0.0000027182,0.0000027207,0.0000027163,0.0000027032, -0.0000026865,0.0000026746,0.0000026680,0.0000026649,0.0000026642, -0.0000026645,0.0000026657,0.0000026677,0.0000026702,0.0000026731, -0.0000026756,0.0000026775,0.0000026791,0.0000026805,0.0000026813, -0.0000026813,0.0000026808,0.0000026804,0.0000026804,0.0000026810, -0.0000026816,0.0000026819,0.0000026817,0.0000026816,0.0000026817, -0.0000026837,0.0000026872,0.0000026916,0.0000026969,0.0000027029, -0.0000027088,0.0000027138,0.0000027189,0.0000027259,0.0000027356, -0.0000027458,0.0000027533,0.0000027554,0.0000027547,0.0000027502, -0.0000027442,0.0000027391,0.0000027363,0.0000027355,0.0000027349, -0.0000027332,0.0000027273,0.0000027183,0.0000027116,0.0000027113, -0.0000027180,0.0000027297,0.0000027372,0.0000027364,0.0000027279, -0.0000027252,0.0000027113,0.0000027064,0.0000027054,0.0000027015, -0.0000026973,0.0000027002,0.0000027115,0.0000027193,0.0000027205, -0.0000027198,0.0000027185,0.0000027174,0.0000027173,0.0000027183, -0.0000027191,0.0000027164,0.0000027138,0.0000027247,0.0000027458, -0.0000027523,0.0000027424,0.0000027283,0.0000027181,0.0000027110, -0.0000027048,0.0000026996,0.0000026932,0.0000026847,0.0000026791, -0.0000026803,0.0000026891,0.0000026966,0.0000026991,0.0000027011, -0.0000027079,0.0000027203,0.0000027282,0.0000027301,0.0000027368, -0.0000027505,0.0000027553,0.0000027495,0.0000027443,0.0000027409, -0.0000027195,0.0000027069,0.0000027206,0.0000027260,0.0000027230, -0.0000027294,0.0000027209,0.0000027046,0.0000026964,0.0000027002, -0.0000027050,0.0000027029,0.0000026895,0.0000026778,0.0000026822, -0.0000026929,0.0000026988,0.0000027010,0.0000027017,0.0000027037, -0.0000027076,0.0000027115,0.0000027133,0.0000027113,0.0000027048, -0.0000026971,0.0000026913,0.0000026896,0.0000026915,0.0000026920, -0.0000026907,0.0000026886,0.0000026877,0.0000026892,0.0000026916, -0.0000026890,0.0000026794,0.0000026688,0.0000026639,0.0000026653, -0.0000026707,0.0000026778,0.0000026849,0.0000026897,0.0000026910, -0.0000026909,0.0000026904,0.0000026900,0.0000026902,0.0000026917, -0.0000026962,0.0000026999,0.0000026961,0.0000026834,0.0000026734, -0.0000026725,0.0000026745,0.0000026747,0.0000026803,0.0000026891, -0.0000026994,0.0000027139,0.0000027267,0.0000027318,0.0000027310, -0.0000027305,0.0000027309,0.0000027287,0.0000027188,0.0000027037, -0.0000026934,0.0000026941,0.0000027002,0.0000027044,0.0000027070, -0.0000027117,0.0000027156,0.0000027141,0.0000027081,0.0000026993, -0.0000026910,0.0000026856,0.0000026832,0.0000026826,0.0000026826, -0.0000026827,0.0000026832,0.0000026836,0.0000026839,0.0000026840, -0.0000026838,0.0000026836,0.0000026836,0.0000026835,0.0000026833, -0.0000026829,0.0000026823,0.0000026815,0.0000026810,0.0000026813, -0.0000026824,0.0000026847,0.0000026871,0.0000026888,0.0000026896, -0.0000026908,0.0000026929,0.0000026963,0.0000027010,0.0000027065, -0.0000027115,0.0000027162,0.0000027231,0.0000027340,0.0000027455, -0.0000027527,0.0000027544,0.0000027523,0.0000027465,0.0000027397, -0.0000027353,0.0000027342,0.0000027354,0.0000027365,0.0000027358, -0.0000027318,0.0000027249,0.0000027171,0.0000027118,0.0000027115, -0.0000027167,0.0000027279,0.0000027374,0.0000027398,0.0000027368, -0.0000027377,0.0000027242,0.0000027143,0.0000027113,0.0000027091, -0.0000027043,0.0000027004,0.0000027033,0.0000027134,0.0000027200, -0.0000027210,0.0000027206,0.0000027196,0.0000027181,0.0000027173, -0.0000027184,0.0000027200,0.0000027175,0.0000027166,0.0000027304, -0.0000027490,0.0000027494,0.0000027390,0.0000027260,0.0000027172, -0.0000027107,0.0000027045,0.0000027004,0.0000026938,0.0000026844, -0.0000026793,0.0000026832,0.0000026931,0.0000026979,0.0000026979, -0.0000027013,0.0000027129,0.0000027258,0.0000027294,0.0000027317, -0.0000027430,0.0000027544,0.0000027552,0.0000027471,0.0000027430, -0.0000027375,0.0000027167,0.0000027046,0.0000027172,0.0000027267, -0.0000027215,0.0000027283,0.0000027268,0.0000027099,0.0000026960, -0.0000026930,0.0000027003,0.0000027048,0.0000027025,0.0000026900, -0.0000026819,0.0000026873,0.0000026966,0.0000027014,0.0000027032, -0.0000027044,0.0000027072,0.0000027121,0.0000027166,0.0000027182, -0.0000027152,0.0000027061,0.0000026943,0.0000026845,0.0000026792, -0.0000026797,0.0000026817,0.0000026827,0.0000026819,0.0000026807, -0.0000026815,0.0000026849,0.0000026871,0.0000026842,0.0000026770, -0.0000026688,0.0000026661,0.0000026699,0.0000026780,0.0000026864, -0.0000026917,0.0000026935,0.0000026933,0.0000026927,0.0000026923, -0.0000026932,0.0000026944,0.0000026959,0.0000027005,0.0000027029, -0.0000026935,0.0000026786,0.0000026703,0.0000026706,0.0000026710, -0.0000026729,0.0000026809,0.0000026894,0.0000027000,0.0000027151, -0.0000027291,0.0000027366,0.0000027381,0.0000027379,0.0000027383, -0.0000027383,0.0000027338,0.0000027216,0.0000027046,0.0000026947, -0.0000026947,0.0000026991,0.0000027017,0.0000027039,0.0000027065, -0.0000027069,0.0000027052,0.0000027003,0.0000026951,0.0000026907, -0.0000026880,0.0000026865,0.0000026856,0.0000026852,0.0000026852, -0.0000026854,0.0000026854,0.0000026852,0.0000026845,0.0000026834, -0.0000026821,0.0000026805,0.0000026789,0.0000026775,0.0000026766, -0.0000026767,0.0000026774,0.0000026778,0.0000026783,0.0000026793, -0.0000026813,0.0000026842,0.0000026875,0.0000026901,0.0000026927, -0.0000026954,0.0000026985,0.0000027026,0.0000027069,0.0000027112, -0.0000027175,0.0000027278,0.0000027401,0.0000027494,0.0000027519, -0.0000027501,0.0000027442,0.0000027367,0.0000027324,0.0000027325, -0.0000027343,0.0000027356,0.0000027350,0.0000027323,0.0000027284, -0.0000027236,0.0000027185,0.0000027150,0.0000027143,0.0000027182, -0.0000027279,0.0000027378,0.0000027432,0.0000027439,0.0000027469, -0.0000027374,0.0000027251,0.0000027183,0.0000027151,0.0000027123, -0.0000027074,0.0000027033,0.0000027059,0.0000027150,0.0000027210, -0.0000027223,0.0000027221,0.0000027206,0.0000027185,0.0000027175, -0.0000027196,0.0000027216,0.0000027190,0.0000027202,0.0000027350, -0.0000027485,0.0000027484,0.0000027373,0.0000027261,0.0000027189, -0.0000027118,0.0000027051,0.0000027023,0.0000026949,0.0000026844, -0.0000026813,0.0000026873,0.0000026976,0.0000026989,0.0000026969, -0.0000027034,0.0000027190,0.0000027283,0.0000027289,0.0000027345, -0.0000027487,0.0000027553,0.0000027519,0.0000027439,0.0000027415, -0.0000027330,0.0000027128,0.0000027030,0.0000027142,0.0000027271, -0.0000027213,0.0000027256,0.0000027298,0.0000027155,0.0000026987, -0.0000026900,0.0000026918,0.0000027008,0.0000027069,0.0000027053, -0.0000026941,0.0000026867,0.0000026911,0.0000026983,0.0000027024, -0.0000027042,0.0000027065,0.0000027105,0.0000027163,0.0000027213, -0.0000027231,0.0000027196,0.0000027098,0.0000026954,0.0000026814, -0.0000026728,0.0000026705,0.0000026720,0.0000026748,0.0000026761, -0.0000026752,0.0000026744,0.0000026762,0.0000026798,0.0000026823, -0.0000026803,0.0000026759,0.0000026717,0.0000026717,0.0000026776, -0.0000026848,0.0000026909,0.0000026936,0.0000026938,0.0000026934, -0.0000026932,0.0000026941,0.0000026959,0.0000026970,0.0000026994, -0.0000027053,0.0000027027,0.0000026874,0.0000026729,0.0000026677, -0.0000026677,0.0000026672,0.0000026718,0.0000026806,0.0000026889, -0.0000026996,0.0000027146,0.0000027300,0.0000027404,0.0000027444, -0.0000027440,0.0000027433,0.0000027442,0.0000027442,0.0000027390, -0.0000027227,0.0000027022,0.0000026920,0.0000026918,0.0000026950, -0.0000026960,0.0000026961,0.0000026957,0.0000026941,0.0000026908, -0.0000026863,0.0000026822,0.0000026788,0.0000026760,0.0000026740, -0.0000026731,0.0000026737,0.0000026757,0.0000026783,0.0000026808, -0.0000026826,0.0000026834,0.0000026835,0.0000026836,0.0000026831, -0.0000026826,0.0000026821,0.0000026806,0.0000026778,0.0000026756, -0.0000026751,0.0000026763,0.0000026786,0.0000026810,0.0000026839, -0.0000026866,0.0000026884,0.0000026907,0.0000026933,0.0000026962, -0.0000026995,0.0000027035,0.0000027094,0.0000027189,0.0000027315, -0.0000027425,0.0000027478,0.0000027475,0.0000027434,0.0000027364, -0.0000027311,0.0000027306,0.0000027325,0.0000027333,0.0000027319, -0.0000027299,0.0000027289,0.0000027282,0.0000027273,0.0000027257, -0.0000027242,0.0000027238,0.0000027261,0.0000027320,0.0000027391, -0.0000027444,0.0000027478,0.0000027526,0.0000027487,0.0000027371, -0.0000027269,0.0000027215,0.0000027187,0.0000027161,0.0000027110, -0.0000027067,0.0000027087,0.0000027169,0.0000027224,0.0000027234, -0.0000027226,0.0000027211,0.0000027195,0.0000027194,0.0000027217, -0.0000027236,0.0000027215,0.0000027235,0.0000027385,0.0000027498, -0.0000027480,0.0000027379,0.0000027292,0.0000027224,0.0000027135, -0.0000027069,0.0000027046,0.0000026960,0.0000026847,0.0000026838, -0.0000026921,0.0000027014,0.0000026995,0.0000026975,0.0000027076, -0.0000027234,0.0000027276,0.0000027283,0.0000027384,0.0000027507, -0.0000027527,0.0000027462,0.0000027406,0.0000027386,0.0000027270, -0.0000027083,0.0000027014,0.0000027114,0.0000027268,0.0000027218, -0.0000027215,0.0000027308,0.0000027220,0.0000027029,0.0000026898, -0.0000026858,0.0000026923,0.0000027047,0.0000027128,0.0000027113, -0.0000026994,0.0000026908,0.0000026939,0.0000026989,0.0000027019, -0.0000027035,0.0000027065,0.0000027118,0.0000027182,0.0000027233, -0.0000027257,0.0000027225,0.0000027130,0.0000026983,0.0000026826, -0.0000026702,0.0000026652,0.0000026654,0.0000026688,0.0000026719, -0.0000026719,0.0000026700,0.0000026695,0.0000026714,0.0000026749, -0.0000026777,0.0000026776,0.0000026764,0.0000026760,0.0000026790, -0.0000026836,0.0000026888,0.0000026928,0.0000026937,0.0000026935, -0.0000026936,0.0000026945,0.0000026958,0.0000026974,0.0000026988, -0.0000027036,0.0000027075,0.0000026971,0.0000026799,0.0000026680, -0.0000026645,0.0000026630,0.0000026632,0.0000026705,0.0000026792, -0.0000026875,0.0000026985,0.0000027132,0.0000027296,0.0000027420, -0.0000027471,0.0000027471,0.0000027462,0.0000027469,0.0000027500, -0.0000027500,0.0000027407,0.0000027195,0.0000026980,0.0000026880, -0.0000026854,0.0000026856,0.0000026852,0.0000026836,0.0000026806, -0.0000026761,0.0000026712,0.0000026668,0.0000026634,0.0000026613, -0.0000026606,0.0000026614,0.0000026637,0.0000026663,0.0000026682, -0.0000026691,0.0000026698,0.0000026706,0.0000026714,0.0000026718, -0.0000026718,0.0000026721,0.0000026737,0.0000026767,0.0000026806, -0.0000026843,0.0000026855,0.0000026834,0.0000026806,0.0000026799, -0.0000026819,0.0000026856,0.0000026894,0.0000026914,0.0000026923, -0.0000026933,0.0000026947,0.0000026969,0.0000027008,0.0000027083, -0.0000027198,0.0000027323,0.0000027408,0.0000027431,0.0000027419, -0.0000027369,0.0000027309,0.0000027288,0.0000027303,0.0000027318, -0.0000027308,0.0000027287,0.0000027291,0.0000027313,0.0000027342, -0.0000027362,0.0000027372,0.0000027377,0.0000027382,0.0000027392, -0.0000027412,0.0000027434,0.0000027456,0.0000027494,0.0000027573, -0.0000027570,0.0000027478,0.0000027360,0.0000027289,0.0000027251, -0.0000027227,0.0000027200,0.0000027148,0.0000027098,0.0000027116, -0.0000027193,0.0000027238,0.0000027242,0.0000027235,0.0000027223, -0.0000027216,0.0000027212,0.0000027238,0.0000027258,0.0000027234, -0.0000027256,0.0000027411,0.0000027506,0.0000027483,0.0000027405, -0.0000027337,0.0000027257,0.0000027148,0.0000027089,0.0000027065, -0.0000026969,0.0000026862,0.0000026861,0.0000026969,0.0000027037, -0.0000026990,0.0000026983,0.0000027129,0.0000027257,0.0000027264, -0.0000027298,0.0000027413,0.0000027485,0.0000027466,0.0000027403, -0.0000027378,0.0000027339,0.0000027198,0.0000027038,0.0000026997, -0.0000027082,0.0000027260,0.0000027239,0.0000027187,0.0000027276, -0.0000027274,0.0000027085,0.0000026920,0.0000026838,0.0000026842, -0.0000026967,0.0000027124,0.0000027200,0.0000027170,0.0000027044, -0.0000026955,0.0000026962,0.0000026989,0.0000027005,0.0000027015, -0.0000027051,0.0000027114,0.0000027183,0.0000027240,0.0000027250, -0.0000027222,0.0000027134,0.0000027001,0.0000026851,0.0000026713, -0.0000026631,0.0000026622,0.0000026659,0.0000026700,0.0000026707, -0.0000026688,0.0000026672,0.0000026663,0.0000026670,0.0000026697, -0.0000026733,0.0000026755,0.0000026768,0.0000026798,0.0000026836, -0.0000026878,0.0000026921,0.0000026935,0.0000026932,0.0000026934, -0.0000026946,0.0000026958,0.0000026969,0.0000026983,0.0000027014, -0.0000027083,0.0000027057,0.0000026889,0.0000026728,0.0000026634, -0.0000026605,0.0000026569,0.0000026600,0.0000026685,0.0000026764, -0.0000026851,0.0000026960,0.0000027105,0.0000027273,0.0000027408, -0.0000027467,0.0000027466,0.0000027460,0.0000027471,0.0000027515, -0.0000027558,0.0000027536,0.0000027398,0.0000027175,0.0000026966, -0.0000026834,0.0000026801,0.0000026787,0.0000026766,0.0000026743, -0.0000026713,0.0000026691,0.0000026721,0.0000026751,0.0000026762, -0.0000026736,0.0000026675,0.0000026633,0.0000026614,0.0000026608, -0.0000026609,0.0000026615,0.0000026619,0.0000026623,0.0000026622, -0.0000026620,0.0000026618,0.0000026615,0.0000026610,0.0000026602, -0.0000026612,0.0000026664,0.0000026760,0.0000026858,0.0000026896, -0.0000026883,0.0000026853,0.0000026864,0.0000026915,0.0000026963, -0.0000026991,0.0000026994,0.0000026987,0.0000026994,0.0000027030, -0.0000027105,0.0000027207,0.0000027304,0.0000027366,0.0000027381, -0.0000027366,0.0000027319,0.0000027271,0.0000027267,0.0000027298, -0.0000027315,0.0000027306,0.0000027304,0.0000027336,0.0000027388, -0.0000027436,0.0000027472,0.0000027498,0.0000027516,0.0000027525, -0.0000027523,0.0000027512,0.0000027504,0.0000027504,0.0000027528, -0.0000027628,0.0000027628,0.0000027557,0.0000027446,0.0000027365, -0.0000027319,0.0000027287,0.0000027260,0.0000027230,0.0000027180, -0.0000027133,0.0000027152,0.0000027222,0.0000027258,0.0000027256, -0.0000027241,0.0000027232,0.0000027223,0.0000027225,0.0000027258, -0.0000027273,0.0000027238,0.0000027266,0.0000027425,0.0000027509, -0.0000027495,0.0000027438,0.0000027377,0.0000027272,0.0000027150, -0.0000027101,0.0000027076,0.0000026978,0.0000026881,0.0000026887, -0.0000027008,0.0000027040,0.0000026984,0.0000027008,0.0000027183, -0.0000027268,0.0000027269,0.0000027331,0.0000027422,0.0000027441, -0.0000027388,0.0000027357,0.0000027354,0.0000027284,0.0000027136, -0.0000027001,0.0000026979,0.0000027044,0.0000027239,0.0000027265, -0.0000027169,0.0000027225,0.0000027287,0.0000027153,0.0000026962, -0.0000026846,0.0000026801,0.0000026871,0.0000027055,0.0000027202, -0.0000027257,0.0000027216,0.0000027106,0.0000027011,0.0000026983, -0.0000026991,0.0000026992,0.0000027004,0.0000027045,0.0000027108, -0.0000027176,0.0000027221,0.0000027223,0.0000027186,0.0000027111, -0.0000027008,0.0000026892,0.0000026765,0.0000026663,0.0000026634, -0.0000026667,0.0000026707,0.0000026721,0.0000026706,0.0000026682, -0.0000026661,0.0000026641,0.0000026632,0.0000026654,0.0000026692, -0.0000026721,0.0000026755,0.0000026806,0.0000026861,0.0000026908, -0.0000026927,0.0000026920,0.0000026918,0.0000026936,0.0000026960, -0.0000026968,0.0000026977,0.0000027000,0.0000027066,0.0000027108, -0.0000026978,0.0000026803,0.0000026666,0.0000026599,0.0000026551, -0.0000026521,0.0000026574,0.0000026647,0.0000026717,0.0000026806, -0.0000026919,0.0000027066,0.0000027236,0.0000027371,0.0000027425, -0.0000027427,0.0000027420,0.0000027434,0.0000027488,0.0000027556, -0.0000027571,0.0000027528,0.0000027397,0.0000027214,0.0000027047, -0.0000026958,0.0000026932,0.0000026943,0.0000026975,0.0000027026, -0.0000027090,0.0000027147,0.0000027183,0.0000027200,0.0000027199, -0.0000027167,0.0000027086,0.0000026944,0.0000026777,0.0000026652, -0.0000026609,0.0000026607,0.0000026612,0.0000026616,0.0000026626, -0.0000026642,0.0000026651,0.0000026643,0.0000026624,0.0000026602, -0.0000026583,0.0000026576,0.0000026604,0.0000026723,0.0000026884, -0.0000026960,0.0000026942,0.0000026904,0.0000026921,0.0000026981, -0.0000027036,0.0000027051,0.0000027044,0.0000027044,0.0000027073, -0.0000027134,0.0000027205,0.0000027267,0.0000027310,0.0000027327, -0.0000027319,0.0000027283,0.0000027245,0.0000027248,0.0000027292, -0.0000027329,0.0000027339,0.0000027363,0.0000027420,0.0000027488, -0.0000027549,0.0000027603,0.0000027647,0.0000027675,0.0000027685, -0.0000027672,0.0000027647,0.0000027622,0.0000027606,0.0000027606, -0.0000027672,0.0000027657,0.0000027600,0.0000027512,0.0000027432, -0.0000027381,0.0000027348,0.0000027317,0.0000027282,0.0000027258, -0.0000027214,0.0000027175,0.0000027196,0.0000027253,0.0000027266, -0.0000027255,0.0000027234,0.0000027227,0.0000027223,0.0000027237, -0.0000027276,0.0000027285,0.0000027244,0.0000027277,0.0000027441, -0.0000027514,0.0000027511,0.0000027472,0.0000027402,0.0000027267, -0.0000027142,0.0000027107,0.0000027089,0.0000026992,0.0000026900, -0.0000026923,0.0000027038,0.0000027045,0.0000026982,0.0000027047, -0.0000027231,0.0000027278,0.0000027285,0.0000027364,0.0000027417, -0.0000027392,0.0000027331,0.0000027327,0.0000027322,0.0000027237, -0.0000027093,0.0000026975,0.0000026959,0.0000027004,0.0000027198, -0.0000027277,0.0000027179,0.0000027166,0.0000027263,0.0000027230, -0.0000027034,0.0000026877,0.0000026801,0.0000026809,0.0000026943, -0.0000027134,0.0000027256,0.0000027295,0.0000027267,0.0000027182, -0.0000027079,0.0000027017,0.0000026993,0.0000026990,0.0000027007, -0.0000027048,0.0000027103,0.0000027155,0.0000027181,0.0000027173, -0.0000027140,0.0000027095,0.0000027035,0.0000026953,0.0000026843, -0.0000026729,0.0000026673,0.0000026679,0.0000026717,0.0000026749, -0.0000026750,0.0000026731,0.0000026705,0.0000026670,0.0000026628, -0.0000026613,0.0000026621,0.0000026648,0.0000026679,0.0000026733, -0.0000026805,0.0000026867,0.0000026898,0.0000026895,0.0000026887, -0.0000026904,0.0000026956,0.0000026973,0.0000026966,0.0000026987, -0.0000027041,0.0000027118,0.0000027062,0.0000026881,0.0000026732, -0.0000026621,0.0000026569,0.0000026496,0.0000026487,0.0000026541, -0.0000026592,0.0000026649,0.0000026739,0.0000026862,0.0000027017, -0.0000027181,0.0000027296,0.0000027337,0.0000027334,0.0000027324, -0.0000027341,0.0000027401,0.0000027476,0.0000027527,0.0000027528, -0.0000027512,0.0000027435,0.0000027349,0.0000027297,0.0000027281, -0.0000027278,0.0000027272,0.0000027233,0.0000027164,0.0000027130, -0.0000027081,0.0000027067,0.0000027092,0.0000027160,0.0000027237, -0.0000027267,0.0000027228,0.0000027131,0.0000027046,0.0000027018, -0.0000027036,0.0000027094,0.0000027163,0.0000027241,0.0000027295, -0.0000027309,0.0000027270,0.0000027140,0.0000026936,0.0000026735, -0.0000026611,0.0000026576,0.0000026628,0.0000026783,0.0000026964, -0.0000027029,0.0000026981,0.0000026943,0.0000026969,0.0000027029, -0.0000027057,0.0000027057,0.0000027055,0.0000027078,0.0000027121, -0.0000027167,0.0000027207,0.0000027242,0.0000027264,0.0000027269, -0.0000027250,0.0000027221,0.0000027223,0.0000027278,0.0000027344, -0.0000027389,0.0000027439,0.0000027512,0.0000027582,0.0000027641, -0.0000027697,0.0000027740,0.0000027762,0.0000027769,0.0000027758, -0.0000027740,0.0000027721,0.0000027699,0.0000027681,0.0000027673, -0.0000027654,0.0000027610,0.0000027547,0.0000027484,0.0000027439, -0.0000027409,0.0000027374,0.0000027330,0.0000027307,0.0000027299, -0.0000027262,0.0000027219,0.0000027233,0.0000027269,0.0000027268, -0.0000027244,0.0000027224,0.0000027217,0.0000027220,0.0000027244, -0.0000027290,0.0000027298,0.0000027255,0.0000027292,0.0000027460, -0.0000027531,0.0000027530,0.0000027499,0.0000027404,0.0000027249, -0.0000027137,0.0000027120,0.0000027112,0.0000027015,0.0000026925, -0.0000026959,0.0000027062,0.0000027050,0.0000026992,0.0000027100, -0.0000027265,0.0000027285,0.0000027307,0.0000027387,0.0000027404, -0.0000027348,0.0000027309,0.0000027312,0.0000027294,0.0000027200, -0.0000027070,0.0000026965,0.0000026945,0.0000026975,0.0000027147, -0.0000027287,0.0000027212,0.0000027129,0.0000027206,0.0000027258, -0.0000027134,0.0000026943,0.0000026830,0.0000026797,0.0000026853, -0.0000027006,0.0000027182,0.0000027291,0.0000027326,0.0000027315, -0.0000027252,0.0000027151,0.0000027066,0.0000027019,0.0000027009, -0.0000027023,0.0000027060,0.0000027094,0.0000027124,0.0000027128, -0.0000027115,0.0000027106,0.0000027101,0.0000027080,0.0000027025, -0.0000026933,0.0000026820,0.0000026728,0.0000026689,0.0000026713, -0.0000026758,0.0000026783,0.0000026788,0.0000026772,0.0000026740, -0.0000026687,0.0000026632,0.0000026602,0.0000026602,0.0000026616, -0.0000026658,0.0000026726,0.0000026794,0.0000026838,0.0000026850, -0.0000026850,0.0000026869,0.0000026934,0.0000026974,0.0000026955, -0.0000026966,0.0000027014,0.0000027113,0.0000027132,0.0000026957, -0.0000026802,0.0000026670,0.0000026599,0.0000026524,0.0000026455, -0.0000026471,0.0000026513,0.0000026537,0.0000026578,0.0000026663, -0.0000026793,0.0000026952,0.0000027097,0.0000027184,0.0000027208, -0.0000027201,0.0000027195,0.0000027216,0.0000027269,0.0000027330, -0.0000027382,0.0000027422,0.0000027439,0.0000027428,0.0000027391, -0.0000027351,0.0000027304,0.0000027222,0.0000027128,0.0000027024, -0.0000026928,0.0000026855,0.0000026808,0.0000026786,0.0000026785, -0.0000026811,0.0000026900,0.0000027054,0.0000027199,0.0000027273, -0.0000027304,0.0000027314,0.0000027322,0.0000027328,0.0000027325, -0.0000027323,0.0000027327,0.0000027342,0.0000027372,0.0000027410, -0.0000027435,0.0000027374,0.0000027180,0.0000026858,0.0000026637, -0.0000026603,0.0000026700,0.0000026888,0.0000027050,0.0000027070, -0.0000027000,0.0000026968,0.0000026993,0.0000027028,0.0000027039, -0.0000027042,0.0000027056,0.0000027083,0.0000027109,0.0000027138, -0.0000027170,0.0000027197,0.0000027215,0.0000027213,0.0000027194, -0.0000027194,0.0000027255,0.0000027355,0.0000027438,0.0000027508, -0.0000027582,0.0000027639,0.0000027676,0.0000027709,0.0000027737, -0.0000027753,0.0000027759,0.0000027753,0.0000027742,0.0000027728, -0.0000027709,0.0000027689,0.0000027654,0.0000027640,0.0000027611, -0.0000027565,0.0000027522,0.0000027490,0.0000027463,0.0000027429, -0.0000027393,0.0000027365,0.0000027357,0.0000027354,0.0000027300, -0.0000027243,0.0000027250,0.0000027274,0.0000027267,0.0000027231, -0.0000027207,0.0000027194,0.0000027196,0.0000027233,0.0000027296, -0.0000027310,0.0000027265,0.0000027308,0.0000027485,0.0000027550, -0.0000027551,0.0000027514,0.0000027390,0.0000027234,0.0000027149, -0.0000027149,0.0000027148,0.0000027046,0.0000026959,0.0000026996, -0.0000027092,0.0000027060,0.0000027026,0.0000027155,0.0000027286, -0.0000027297,0.0000027326,0.0000027391,0.0000027383,0.0000027315, -0.0000027308,0.0000027316,0.0000027281,0.0000027180,0.0000027062, -0.0000026966,0.0000026940,0.0000026955,0.0000027088,0.0000027272, -0.0000027260,0.0000027141,0.0000027135,0.0000027232,0.0000027216, -0.0000027048,0.0000026893,0.0000026826,0.0000026822,0.0000026896, -0.0000027044,0.0000027206,0.0000027310,0.0000027349,0.0000027353, -0.0000027311,0.0000027229,0.0000027144,0.0000027088,0.0000027068, -0.0000027074,0.0000027092,0.0000027106,0.0000027103,0.0000027087, -0.0000027086,0.0000027104,0.0000027124,0.0000027128,0.0000027092, -0.0000027020,0.0000026923,0.0000026808,0.0000026718,0.0000026704, -0.0000026735,0.0000026782,0.0000026815,0.0000026833,0.0000026824, -0.0000026784,0.0000026716,0.0000026654,0.0000026615,0.0000026605, -0.0000026630,0.0000026676,0.0000026735,0.0000026778,0.0000026804, -0.0000026822,0.0000026846,0.0000026905,0.0000026960,0.0000026942, -0.0000026940,0.0000026988,0.0000027080,0.0000027162,0.0000027035, -0.0000026863,0.0000026737,0.0000026634,0.0000026574,0.0000026483, -0.0000026449,0.0000026478,0.0000026503,0.0000026506,0.0000026527, -0.0000026602,0.0000026731,0.0000026880,0.0000026999,0.0000027062, -0.0000027077,0.0000027076,0.0000027081,0.0000027113,0.0000027157, -0.0000027193,0.0000027215,0.0000027226,0.0000027228,0.0000027219, -0.0000027191,0.0000027136,0.0000027060,0.0000026975,0.0000026891, -0.0000026813,0.0000026747,0.0000026695,0.0000026655,0.0000026627, -0.0000026618,0.0000026629,0.0000026669,0.0000026738,0.0000026833, -0.0000026934,0.0000027012,0.0000027034,0.0000027015,0.0000026970, -0.0000026914,0.0000026862,0.0000026837,0.0000026840,0.0000026883, -0.0000026971,0.0000027103,0.0000027253,0.0000027379,0.0000027388, -0.0000027179,0.0000026806,0.0000026624,0.0000026657,0.0000026821, -0.0000027007,0.0000027111,0.0000027083,0.0000027003,0.0000026982, -0.0000026996,0.0000027017,0.0000027033,0.0000027049,0.0000027067, -0.0000027082,0.0000027100,0.0000027122,0.0000027148,0.0000027174, -0.0000027185,0.0000027178,0.0000027178,0.0000027243,0.0000027364, -0.0000027473,0.0000027552,0.0000027618,0.0000027654,0.0000027666, -0.0000027673,0.0000027691,0.0000027709,0.0000027719,0.0000027718, -0.0000027710,0.0000027698,0.0000027682,0.0000027666,0.0000027654, -0.0000027654,0.0000027638,0.0000027600,0.0000027558,0.0000027531, -0.0000027505,0.0000027479,0.0000027460,0.0000027437,0.0000027416, -0.0000027417,0.0000027394,0.0000027305,0.0000027247,0.0000027267, -0.0000027287,0.0000027251,0.0000027204,0.0000027167,0.0000027149, -0.0000027160,0.0000027214,0.0000027294,0.0000027307,0.0000027266, -0.0000027329,0.0000027515,0.0000027572,0.0000027570,0.0000027511, -0.0000027371,0.0000027235,0.0000027182,0.0000027188,0.0000027177, -0.0000027080,0.0000026997,0.0000027032,0.0000027118,0.0000027079, -0.0000027069,0.0000027207,0.0000027307,0.0000027310,0.0000027340, -0.0000027386,0.0000027352,0.0000027288,0.0000027307,0.0000027329, -0.0000027281,0.0000027179,0.0000027065,0.0000026973,0.0000026942, -0.0000026941,0.0000027022,0.0000027239,0.0000027290,0.0000027199, -0.0000027116,0.0000027173,0.0000027239,0.0000027171,0.0000026998, -0.0000026886,0.0000026829,0.0000026841,0.0000026916,0.0000027063, -0.0000027217,0.0000027320,0.0000027362,0.0000027372,0.0000027352, -0.0000027295,0.0000027230,0.0000027178,0.0000027154,0.0000027148, -0.0000027147,0.0000027136,0.0000027112,0.0000027097,0.0000027098, -0.0000027121,0.0000027156,0.0000027172,0.0000027150,0.0000027100, -0.0000027026,0.0000026909,0.0000026782,0.0000026715,0.0000026707, -0.0000026744,0.0000026799,0.0000026849,0.0000026880,0.0000026877, -0.0000026833,0.0000026760,0.0000026694,0.0000026655,0.0000026650, -0.0000026681,0.0000026727,0.0000026764,0.0000026792,0.0000026818, -0.0000026834,0.0000026884,0.0000026939,0.0000026928,0.0000026911, -0.0000026959,0.0000027045,0.0000027162,0.0000027110,0.0000026923, -0.0000026797,0.0000026679,0.0000026617,0.0000026542,0.0000026462, -0.0000026460,0.0000026495,0.0000026502,0.0000026491,0.0000026507, -0.0000026578,0.0000026698,0.0000026825,0.0000026916,0.0000026960, -0.0000026975,0.0000026986,0.0000027010,0.0000027054,0.0000027101, -0.0000027127,0.0000027121,0.0000027099,0.0000027078,0.0000027053, -0.0000027017,0.0000026970,0.0000026913,0.0000026853,0.0000026795, -0.0000026742,0.0000026691,0.0000026643,0.0000026599,0.0000026556, -0.0000026521,0.0000026513,0.0000026533,0.0000026590,0.0000026647, -0.0000026685,0.0000026707,0.0000026711,0.0000026698,0.0000026681, -0.0000026673,0.0000026679,0.0000026700,0.0000026732,0.0000026762, -0.0000026783,0.0000026803,0.0000026840,0.0000026957,0.0000027173, -0.0000027367,0.0000027326,0.0000027020,0.0000026694,0.0000026651, -0.0000026777,0.0000026946,0.0000027094,0.0000027130,0.0000027078, -0.0000027018,0.0000027001,0.0000027011,0.0000027039,0.0000027067, -0.0000027082,0.0000027094,0.0000027108,0.0000027125,0.0000027149, -0.0000027173,0.0000027185,0.0000027182,0.0000027186,0.0000027250, -0.0000027376,0.0000027496,0.0000027579,0.0000027631,0.0000027651, -0.0000027642,0.0000027641,0.0000027659,0.0000027675,0.0000027685, -0.0000027693,0.0000027698,0.0000027693,0.0000027676,0.0000027660, -0.0000027656,0.0000027663,0.0000027660,0.0000027639,0.0000027608, -0.0000027581,0.0000027551,0.0000027526,0.0000027519,0.0000027506, -0.0000027483,0.0000027471,0.0000027462,0.0000027389,0.0000027267, -0.0000027242,0.0000027279,0.0000027272,0.0000027218,0.0000027159, -0.0000027111,0.0000027103,0.0000027124,0.0000027189,0.0000027280, -0.0000027298,0.0000027262,0.0000027360,0.0000027544,0.0000027587, -0.0000027576,0.0000027494,0.0000027356,0.0000027244,0.0000027210, -0.0000027215,0.0000027198,0.0000027113,0.0000027033,0.0000027064, -0.0000027138,0.0000027102,0.0000027108,0.0000027251,0.0000027329, -0.0000027327,0.0000027355,0.0000027381,0.0000027323,0.0000027262, -0.0000027300,0.0000027336,0.0000027282,0.0000027181,0.0000027072, -0.0000026980,0.0000026945,0.0000026927,0.0000026962,0.0000027182, -0.0000027316,0.0000027278,0.0000027151,0.0000027127,0.0000027208, -0.0000027236,0.0000027134,0.0000026985,0.0000026881,0.0000026836, -0.0000026854,0.0000026935,0.0000027075,0.0000027212,0.0000027303, -0.0000027349,0.0000027369,0.0000027351,0.0000027314,0.0000027263, -0.0000027217,0.0000027186,0.0000027169,0.0000027161,0.0000027154, -0.0000027150,0.0000027152,0.0000027151,0.0000027159,0.0000027191, -0.0000027217,0.0000027212,0.0000027177,0.0000027121,0.0000027022, -0.0000026889,0.0000026775,0.0000026711,0.0000026704,0.0000026745, -0.0000026811,0.0000026875,0.0000026913,0.0000026930,0.0000026887, -0.0000026814,0.0000026753,0.0000026723,0.0000026731,0.0000026760, -0.0000026796,0.0000026816,0.0000026836,0.0000026832,0.0000026867, -0.0000026917,0.0000026910,0.0000026882,0.0000026926,0.0000027010, -0.0000027141,0.0000027168,0.0000026991,0.0000026842,0.0000026728, -0.0000026649,0.0000026595,0.0000026507,0.0000026456,0.0000026475, -0.0000026502,0.0000026495,0.0000026487,0.0000026513,0.0000026589, -0.0000026696,0.0000026798,0.0000026867,0.0000026897,0.0000026909, -0.0000026921,0.0000026951,0.0000027002,0.0000027056,0.0000027087, -0.0000027082,0.0000027057,0.0000027027,0.0000026989,0.0000026939, -0.0000026881,0.0000026823,0.0000026765,0.0000026702,0.0000026629, -0.0000026556,0.0000026495,0.0000026453,0.0000026427,0.0000026409, -0.0000026396,0.0000026402,0.0000026448,0.0000026523,0.0000026583, -0.0000026620,0.0000026642,0.0000026654,0.0000026662,0.0000026686, -0.0000026730,0.0000026780,0.0000026822,0.0000026850,0.0000026862, -0.0000026863,0.0000026853,0.0000026831,0.0000026843,0.0000026973, -0.0000027239,0.0000027366,0.0000027173,0.0000026804,0.0000026677, -0.0000026753,0.0000026893,0.0000027040,0.0000027140,0.0000027143, -0.0000027102,0.0000027063,0.0000027054,0.0000027078,0.0000027109, -0.0000027127,0.0000027136,0.0000027145,0.0000027163,0.0000027190, -0.0000027210,0.0000027216,0.0000027212,0.0000027216,0.0000027274, -0.0000027392,0.0000027514,0.0000027592,0.0000027627,0.0000027635, -0.0000027620,0.0000027622,0.0000027643,0.0000027659,0.0000027669, -0.0000027682,0.0000027693,0.0000027692,0.0000027677,0.0000027661, -0.0000027621,0.0000027643,0.0000027654,0.0000027646,0.0000027636, -0.0000027618,0.0000027590,0.0000027563,0.0000027556,0.0000027549, -0.0000027528,0.0000027514,0.0000027508,0.0000027464,0.0000027338, -0.0000027239,0.0000027256,0.0000027290,0.0000027252,0.0000027182, -0.0000027108,0.0000027053,0.0000027046,0.0000027079,0.0000027166, -0.0000027271,0.0000027285,0.0000027270,0.0000027407,0.0000027567, -0.0000027597,0.0000027572,0.0000027471,0.0000027342,0.0000027249, -0.0000027225,0.0000027231,0.0000027215,0.0000027146,0.0000027069, -0.0000027092,0.0000027154,0.0000027127,0.0000027145,0.0000027289, -0.0000027349,0.0000027348,0.0000027370,0.0000027380,0.0000027300, -0.0000027242,0.0000027294,0.0000027336,0.0000027285,0.0000027186, -0.0000027078,0.0000026989,0.0000026945,0.0000026918,0.0000026923, -0.0000027102,0.0000027299,0.0000027327,0.0000027228,0.0000027138, -0.0000027157,0.0000027226,0.0000027212,0.0000027108,0.0000026974, -0.0000026879,0.0000026845,0.0000026873,0.0000026955,0.0000027074, -0.0000027179,0.0000027246,0.0000027294,0.0000027311,0.0000027300, -0.0000027268,0.0000027220,0.0000027176,0.0000027146,0.0000027131, -0.0000027130,0.0000027147,0.0000027182,0.0000027224,0.0000027232, -0.0000027216,0.0000027231,0.0000027269,0.0000027278,0.0000027253, -0.0000027210,0.0000027129,0.0000027005,0.0000026871,0.0000026760, -0.0000026706,0.0000026705,0.0000026749,0.0000026820,0.0000026896, -0.0000026958,0.0000026983,0.0000026942,0.0000026877,0.0000026824, -0.0000026804,0.0000026812,0.0000026844,0.0000026851,0.0000026855, -0.0000026842,0.0000026857,0.0000026895,0.0000026889,0.0000026855, -0.0000026889,0.0000026979,0.0000027104,0.0000027197,0.0000027068, -0.0000026886,0.0000026767,0.0000026677,0.0000026629,0.0000026562, -0.0000026472,0.0000026447,0.0000026468,0.0000026475,0.0000026461, -0.0000026470,0.0000026524,0.0000026608,0.0000026704,0.0000026792, -0.0000026848,0.0000026863,0.0000026858,0.0000026853,0.0000026868, -0.0000026907,0.0000026953,0.0000026982,0.0000026983,0.0000026961, -0.0000026923,0.0000026871,0.0000026811,0.0000026752,0.0000026684, -0.0000026603,0.0000026517,0.0000026448,0.0000026404,0.0000026379, -0.0000026350,0.0000026313,0.0000026284,0.0000026270,0.0000026271, -0.0000026298,0.0000026356,0.0000026432,0.0000026506,0.0000026564, -0.0000026604,0.0000026635,0.0000026670,0.0000026721,0.0000026784, -0.0000026847,0.0000026902,0.0000026940,0.0000026959,0.0000026959, -0.0000026933,0.0000026878,0.0000026829,0.0000026875,0.0000027129, -0.0000027346,0.0000027274,0.0000026921,0.0000026713,0.0000026744, -0.0000026858,0.0000026972,0.0000027099,0.0000027173,0.0000027182, -0.0000027162,0.0000027148,0.0000027154,0.0000027171,0.0000027190, -0.0000027197,0.0000027196,0.0000027209,0.0000027238,0.0000027266, -0.0000027272,0.0000027261,0.0000027260,0.0000027307,0.0000027410, -0.0000027523,0.0000027593,0.0000027615,0.0000027613,0.0000027601, -0.0000027606,0.0000027627,0.0000027649,0.0000027663,0.0000027668, -0.0000027664,0.0000027649,0.0000027627,0.0000027614,0.0000027531, -0.0000027543,0.0000027573,0.0000027605,0.0000027625,0.0000027621, -0.0000027604,0.0000027579,0.0000027571,0.0000027564,0.0000027547, -0.0000027535,0.0000027535,0.0000027511,0.0000027409,0.0000027263, -0.0000027232,0.0000027300,0.0000027300,0.0000027234,0.0000027142, -0.0000027036,0.0000026981,0.0000026982,0.0000027039,0.0000027148, -0.0000027264,0.0000027275,0.0000027288,0.0000027463,0.0000027596, -0.0000027610,0.0000027559,0.0000027445,0.0000027325,0.0000027247, -0.0000027236,0.0000027241,0.0000027229,0.0000027177,0.0000027102, -0.0000027118,0.0000027165,0.0000027147,0.0000027173,0.0000027321, -0.0000027365,0.0000027363,0.0000027376,0.0000027377,0.0000027280, -0.0000027231,0.0000027296,0.0000027332,0.0000027285,0.0000027194, -0.0000027087,0.0000026991,0.0000026936,0.0000026907,0.0000026905, -0.0000027026,0.0000027258,0.0000027363,0.0000027314,0.0000027207, -0.0000027154,0.0000027181,0.0000027216,0.0000027187,0.0000027090, -0.0000026971,0.0000026889,0.0000026862,0.0000026893,0.0000026967, -0.0000027060,0.0000027127,0.0000027169,0.0000027200,0.0000027209, -0.0000027200,0.0000027173,0.0000027134,0.0000027103,0.0000027082, -0.0000027081,0.0000027102,0.0000027139,0.0000027204,0.0000027284, -0.0000027313,0.0000027285,0.0000027274,0.0000027312,0.0000027338, -0.0000027326,0.0000027287,0.0000027213,0.0000027099,0.0000026967, -0.0000026847,0.0000026759,0.0000026714,0.0000026724,0.0000026759, -0.0000026823,0.0000026910,0.0000026987,0.0000027003,0.0000026979, -0.0000026934,0.0000026891,0.0000026874,0.0000026885,0.0000026878, -0.0000026868,0.0000026854,0.0000026853,0.0000026873,0.0000026867, -0.0000026829,0.0000026853,0.0000026950,0.0000027071,0.0000027197, -0.0000027141,0.0000026947,0.0000026797,0.0000026698,0.0000026642, -0.0000026599,0.0000026511,0.0000026428,0.0000026413,0.0000026417, -0.0000026398,0.0000026389,0.0000026430,0.0000026508,0.0000026597, -0.0000026695,0.0000026785,0.0000026834,0.0000026836,0.0000026810, -0.0000026783,0.0000026772,0.0000026783,0.0000026805,0.0000026817, -0.0000026813,0.0000026795,0.0000026760,0.0000026709,0.0000026646, -0.0000026572,0.0000026498,0.0000026446,0.0000026438,0.0000026456, -0.0000026494,0.0000026502,0.0000026466,0.0000026393,0.0000026301, -0.0000026223,0.0000026177,0.0000026174,0.0000026205,0.0000026258, -0.0000026312,0.0000026353,0.0000026382,0.0000026409,0.0000026444, -0.0000026502,0.0000026584,0.0000026677,0.0000026774,0.0000026872, -0.0000026954,0.0000027003,0.0000027014,0.0000026989,0.0000026921, -0.0000026834,0.0000026837,0.0000027054,0.0000027337,0.0000027335, -0.0000027030,0.0000026758,0.0000026751,0.0000026844,0.0000026925, -0.0000027024,0.0000027137,0.0000027205,0.0000027236,0.0000027246, -0.0000027250,0.0000027259,0.0000027268,0.0000027269,0.0000027261, -0.0000027255,0.0000027268,0.0000027305,0.0000027328,0.0000027321, -0.0000027314,0.0000027341,0.0000027421,0.0000027515,0.0000027579, -0.0000027597,0.0000027595,0.0000027589,0.0000027595,0.0000027615, -0.0000027641,0.0000027658,0.0000027659,0.0000027643,0.0000027610, -0.0000027570,0.0000027540,0.0000027483,0.0000027461,0.0000027454, -0.0000027478,0.0000027530,0.0000027576,0.0000027590,0.0000027578, -0.0000027575,0.0000027573,0.0000027559,0.0000027549,0.0000027546, -0.0000027526,0.0000027453,0.0000027317,0.0000027234,0.0000027295, -0.0000027350,0.0000027304,0.0000027207,0.0000027069,0.0000026973, -0.0000026966,0.0000026975,0.0000027016,0.0000027136,0.0000027261, -0.0000027269,0.0000027326,0.0000027525,0.0000027626,0.0000027619, -0.0000027537,0.0000027417,0.0000027303,0.0000027249,0.0000027248, -0.0000027248,0.0000027242,0.0000027204,0.0000027130,0.0000027130, -0.0000027170,0.0000027160,0.0000027195,0.0000027343,0.0000027378, -0.0000027373,0.0000027380,0.0000027371,0.0000027265,0.0000027229, -0.0000027305,0.0000027330,0.0000027275,0.0000027201,0.0000027096, -0.0000026985,0.0000026920,0.0000026890,0.0000026888,0.0000026976, -0.0000027204,0.0000027361,0.0000027370,0.0000027299,0.0000027204, -0.0000027159,0.0000027179,0.0000027201,0.0000027185,0.0000027086, -0.0000026990,0.0000026920,0.0000026889,0.0000026910,0.0000026971, -0.0000027037,0.0000027074,0.0000027095,0.0000027111,0.0000027121, -0.0000027117,0.0000027102,0.0000027085,0.0000027069,0.0000027069, -0.0000027091,0.0000027125,0.0000027166,0.0000027233,0.0000027319, -0.0000027374,0.0000027351,0.0000027309,0.0000027340,0.0000027387, -0.0000027387,0.0000027343,0.0000027268,0.0000027165,0.0000027051, -0.0000026946,0.0000026853,0.0000026778,0.0000026740,0.0000026741, -0.0000026762,0.0000026813,0.0000026898,0.0000026972,0.0000027001, -0.0000026998,0.0000026970,0.0000026944,0.0000026928,0.0000026903, -0.0000026883,0.0000026866,0.0000026852,0.0000026853,0.0000026841, -0.0000026803,0.0000026819,0.0000026921,0.0000027041,0.0000027191, -0.0000027198,0.0000027024,0.0000026837,0.0000026712,0.0000026642, -0.0000026607,0.0000026545,0.0000026443,0.0000026377,0.0000026359, -0.0000026332,0.0000026298,0.0000026313,0.0000026379,0.0000026459, -0.0000026549,0.0000026656,0.0000026751,0.0000026797,0.0000026795, -0.0000026765,0.0000026727,0.0000026700,0.0000026691,0.0000026689, -0.0000026683,0.0000026674,0.0000026654,0.0000026609,0.0000026543, -0.0000026482,0.0000026460,0.0000026487,0.0000026578,0.0000026696, -0.0000026782,0.0000026815,0.0000026811,0.0000026747,0.0000026633, -0.0000026487,0.0000026334,0.0000026208,0.0000026141,0.0000026129, -0.0000026149,0.0000026186,0.0000026209,0.0000026222,0.0000026237, -0.0000026268,0.0000026320,0.0000026393,0.0000026481,0.0000026586, -0.0000026709,0.0000026842,0.0000026959,0.0000027031,0.0000027042, -0.0000027008,0.0000026930,0.0000026831,0.0000026817,0.0000027021, -0.0000027320,0.0000027376,0.0000027099,0.0000026794,0.0000026751, -0.0000026848,0.0000026922,0.0000026978,0.0000027055,0.0000027133, -0.0000027204,0.0000027258,0.0000027313,0.0000027352,0.0000027359, -0.0000027354,0.0000027332,0.0000027300,0.0000027288,0.0000027315, -0.0000027353,0.0000027374,0.0000027371,0.0000027380,0.0000027428, -0.0000027501,0.0000027559,0.0000027583,0.0000027585,0.0000027582, -0.0000027589,0.0000027613,0.0000027639,0.0000027657,0.0000027658, -0.0000027638,0.0000027598,0.0000027552,0.0000027513,0.0000027474, -0.0000027439,0.0000027406,0.0000027386,0.0000027403,0.0000027455, -0.0000027508,0.0000027537,0.0000027556,0.0000027568,0.0000027563, -0.0000027549,0.0000027536,0.0000027515,0.0000027464,0.0000027350, -0.0000027238,0.0000027288,0.0000027396,0.0000027384,0.0000027285, -0.0000027132,0.0000027025,0.0000027044,0.0000027069,0.0000027007, -0.0000027001,0.0000027134,0.0000027254,0.0000027266,0.0000027381, -0.0000027587,0.0000027648,0.0000027608,0.0000027508,0.0000027379, -0.0000027284,0.0000027261,0.0000027263,0.0000027255,0.0000027256, -0.0000027225,0.0000027150,0.0000027133,0.0000027163,0.0000027165, -0.0000027210,0.0000027358,0.0000027389,0.0000027382,0.0000027386, -0.0000027369,0.0000027255,0.0000027230,0.0000027314,0.0000027325, -0.0000027262,0.0000027200,0.0000027092,0.0000026970,0.0000026900, -0.0000026872,0.0000026875,0.0000026946,0.0000027159,0.0000027337, -0.0000027396,0.0000027374,0.0000027289,0.0000027189,0.0000027142, -0.0000027171,0.0000027207,0.0000027194,0.0000027111,0.0000027030, -0.0000026961,0.0000026923,0.0000026939,0.0000026974,0.0000027015, -0.0000027031,0.0000027042,0.0000027067,0.0000027087,0.0000027094, -0.0000027091,0.0000027082,0.0000027080,0.0000027106,0.0000027151, -0.0000027192,0.0000027238,0.0000027283,0.0000027351,0.0000027411, -0.0000027400,0.0000027336,0.0000027360,0.0000027425,0.0000027426, -0.0000027377,0.0000027307,0.0000027217,0.0000027118,0.0000027029, -0.0000026944,0.0000026859,0.0000026794,0.0000026767,0.0000026754, -0.0000026748,0.0000026773,0.0000026836,0.0000026908,0.0000026966, -0.0000026992,0.0000026991,0.0000026969,0.0000026934,0.0000026902, -0.0000026876,0.0000026851,0.0000026837,0.0000026819,0.0000026780, -0.0000026790,0.0000026894,0.0000027016,0.0000027159,0.0000027228, -0.0000027104,0.0000026904,0.0000026735,0.0000026636,0.0000026591, -0.0000026560,0.0000026476,0.0000026385,0.0000026336,0.0000026301, -0.0000026256,0.0000026243,0.0000026291,0.0000026361,0.0000026426, -0.0000026511,0.0000026615,0.0000026698,0.0000026734,0.0000026732, -0.0000026706,0.0000026670,0.0000026641,0.0000026623,0.0000026606, -0.0000026586,0.0000026562,0.0000026530,0.0000026486,0.0000026471, -0.0000026519,0.0000026652,0.0000026789,0.0000026876,0.0000026897, -0.0000026881,0.0000026864,0.0000026863,0.0000026868,0.0000026832, -0.0000026721,0.0000026544,0.0000026364,0.0000026233,0.0000026163, -0.0000026151,0.0000026171,0.0000026193,0.0000026209,0.0000026231, -0.0000026263,0.0000026301,0.0000026343,0.0000026392,0.0000026465, -0.0000026573,0.0000026715,0.0000026865,0.0000026989,0.0000027056, -0.0000027054,0.0000027006,0.0000026925,0.0000026832,0.0000026815, -0.0000027004,0.0000027309,0.0000027396,0.0000027156,0.0000026829, -0.0000026749,0.0000026842,0.0000026947,0.0000026998,0.0000027031, -0.0000027068,0.0000027114,0.0000027173,0.0000027254,0.0000027338, -0.0000027393,0.0000027418,0.0000027401,0.0000027354,0.0000027315, -0.0000027312,0.0000027347,0.0000027395,0.0000027420,0.0000027427, -0.0000027448,0.0000027493,0.0000027542,0.0000027574,0.0000027586, -0.0000027582,0.0000027590,0.0000027615,0.0000027640,0.0000027659, -0.0000027666,0.0000027645,0.0000027599,0.0000027548,0.0000027506, -0.0000027459,0.0000027432,0.0000027407,0.0000027376,0.0000027360, -0.0000027363,0.0000027393,0.0000027433,0.0000027482,0.0000027524, -0.0000027538,0.0000027528,0.0000027509,0.0000027485,0.0000027454, -0.0000027373,0.0000027261,0.0000027287,0.0000027434,0.0000027455, -0.0000027357,0.0000027204,0.0000027095,0.0000027143,0.0000027233, -0.0000027181,0.0000027023,0.0000026991,0.0000027147,0.0000027254, -0.0000027281,0.0000027465,0.0000027637,0.0000027654,0.0000027589, -0.0000027470,0.0000027338,0.0000027281,0.0000027283,0.0000027279, -0.0000027270,0.0000027272,0.0000027247,0.0000027173,0.0000027134, -0.0000027149,0.0000027162,0.0000027217,0.0000027365,0.0000027397, -0.0000027390,0.0000027394,0.0000027374,0.0000027253,0.0000027229, -0.0000027317,0.0000027319,0.0000027254,0.0000027191,0.0000027066, -0.0000026939,0.0000026877,0.0000026854,0.0000026862,0.0000026928, -0.0000027133,0.0000027311,0.0000027398,0.0000027419,0.0000027372, -0.0000027267,0.0000027150,0.0000027124,0.0000027175,0.0000027212, -0.0000027212,0.0000027155,0.0000027075,0.0000027007,0.0000026966, -0.0000026956,0.0000026974,0.0000026996,0.0000027002,0.0000027024, -0.0000027064,0.0000027093,0.0000027108,0.0000027108,0.0000027112, -0.0000027130,0.0000027169,0.0000027216,0.0000027273,0.0000027332, -0.0000027358,0.0000027380,0.0000027423,0.0000027418,0.0000027354, -0.0000027373,0.0000027443,0.0000027445,0.0000027397,0.0000027331, -0.0000027242,0.0000027147,0.0000027065,0.0000026989,0.0000026910, -0.0000026838,0.0000026796,0.0000026767,0.0000026731,0.0000026698, -0.0000026691,0.0000026733,0.0000026815,0.0000026914,0.0000026987, -0.0000026993,0.0000026964,0.0000026925,0.0000026885,0.0000026850, -0.0000026827,0.0000026803,0.0000026765,0.0000026774,0.0000026874, -0.0000026995,0.0000027128,0.0000027230,0.0000027171,0.0000026990, -0.0000026786,0.0000026643,0.0000026573,0.0000026553,0.0000026510, -0.0000026425,0.0000026353,0.0000026306,0.0000026265,0.0000026246, -0.0000026280,0.0000026356,0.0000026416,0.0000026469,0.0000026545, -0.0000026637,0.0000026686,0.0000026696,0.0000026690,0.0000026661, -0.0000026624,0.0000026596,0.0000026578,0.0000026565,0.0000026548, -0.0000026534,0.0000026527,0.0000026585,0.0000026695,0.0000026825, -0.0000026888,0.0000026877,0.0000026830,0.0000026776,0.0000026744, -0.0000026726,0.0000026728,0.0000026763,0.0000026813,0.0000026823, -0.0000026737,0.0000026563,0.0000026394,0.0000026294,0.0000026259, -0.0000026260,0.0000026274,0.0000026290,0.0000026308,0.0000026326, -0.0000026342,0.0000026356,0.0000026376,0.0000026419,0.0000026500, -0.0000026625,0.0000026778,0.0000026924,0.0000027028,0.0000027067, -0.0000027052,0.0000026997,0.0000026919,0.0000026827,0.0000026817, -0.0000027011,0.0000027309,0.0000027404,0.0000027203,0.0000026879, -0.0000026758,0.0000026831,0.0000026956,0.0000027026,0.0000027059, -0.0000027081,0.0000027108,0.0000027145,0.0000027191,0.0000027245, -0.0000027316,0.0000027390,0.0000027416,0.0000027398,0.0000027347, -0.0000027311,0.0000027328,0.0000027386,0.0000027443,0.0000027472, -0.0000027484,0.0000027499,0.0000027531,0.0000027569,0.0000027589, -0.0000027593,0.0000027601,0.0000027623,0.0000027654,0.0000027682, -0.0000027689,0.0000027657,0.0000027597,0.0000027537,0.0000027490, -0.0000027414,0.0000027401,0.0000027401,0.0000027394,0.0000027377, -0.0000027354,0.0000027333,0.0000027334,0.0000027372,0.0000027430, -0.0000027471,0.0000027479,0.0000027469,0.0000027451,0.0000027434, -0.0000027389,0.0000027300,0.0000027303,0.0000027447,0.0000027499, -0.0000027414,0.0000027264,0.0000027154,0.0000027214,0.0000027349, -0.0000027344,0.0000027217,0.0000027012,0.0000027000,0.0000027174, -0.0000027258,0.0000027335,0.0000027555,0.0000027666,0.0000027657, -0.0000027566,0.0000027418,0.0000027307,0.0000027294,0.0000027304, -0.0000027303,0.0000027299,0.0000027297,0.0000027273,0.0000027197, -0.0000027137,0.0000027132,0.0000027151,0.0000027214,0.0000027363, -0.0000027401,0.0000027392,0.0000027395,0.0000027378,0.0000027260, -0.0000027224,0.0000027317,0.0000027314,0.0000027251,0.0000027178, -0.0000027030,0.0000026900,0.0000026851,0.0000026835,0.0000026854, -0.0000026935,0.0000027132,0.0000027297,0.0000027393,0.0000027442, -0.0000027430,0.0000027349,0.0000027212,0.0000027113,0.0000027120, -0.0000027177,0.0000027220,0.0000027244,0.0000027201,0.0000027122, -0.0000027053,0.0000027001,0.0000026971,0.0000026975,0.0000026985, -0.0000026999,0.0000027034,0.0000027078,0.0000027115,0.0000027136, -0.0000027147,0.0000027168,0.0000027193,0.0000027226,0.0000027272, -0.0000027346,0.0000027422,0.0000027433,0.0000027400,0.0000027408, -0.0000027412,0.0000027362,0.0000027379,0.0000027448,0.0000027450, -0.0000027404,0.0000027320,0.0000027225,0.0000027141,0.0000027076, -0.0000027019,0.0000026950,0.0000026866,0.0000026795,0.0000026750, -0.0000026716,0.0000026674,0.0000026624,0.0000026602,0.0000026635, -0.0000026755,0.0000026911,0.0000026991,0.0000026982,0.0000026946, -0.0000026895,0.0000026853,0.0000026824,0.0000026790,0.0000026755, -0.0000026763,0.0000026861,0.0000026978,0.0000027104,0.0000027227, -0.0000027212,0.0000027075,0.0000026868,0.0000026674,0.0000026575, -0.0000026543,0.0000026533,0.0000026478,0.0000026399,0.0000026344, -0.0000026317,0.0000026313,0.0000026347,0.0000026430,0.0000026515, -0.0000026570,0.0000026629,0.0000026700,0.0000026756,0.0000026774, -0.0000026766,0.0000026737,0.0000026700,0.0000026668,0.0000026652, -0.0000026651,0.0000026658,0.0000026677,0.0000026724,0.0000026805, -0.0000026881,0.0000026908,0.0000026885,0.0000026825,0.0000026762, -0.0000026737,0.0000026732,0.0000026718,0.0000026693,0.0000026666, -0.0000026665,0.0000026708,0.0000026779,0.0000026806,0.0000026735, -0.0000026586,0.0000026456,0.0000026395,0.0000026384,0.0000026383, -0.0000026382,0.0000026382,0.0000026388,0.0000026393,0.0000026394, -0.0000026394,0.0000026412,0.0000026471,0.0000026574,0.0000026716, -0.0000026864,0.0000026982,0.0000027051,0.0000027065,0.0000027043, -0.0000026994,0.0000026917,0.0000026830,0.0000026832,0.0000027035, -0.0000027327,0.0000027418,0.0000027262,0.0000026966,0.0000026808, -0.0000026838,0.0000026922,0.0000026994,0.0000027036,0.0000027070, -0.0000027109,0.0000027153,0.0000027186,0.0000027205,0.0000027226, -0.0000027270,0.0000027335,0.0000027379,0.0000027361,0.0000027325, -0.0000027319,0.0000027363,0.0000027437,0.0000027496,0.0000027520, -0.0000027528,0.0000027542,0.0000027573,0.0000027599,0.0000027614, -0.0000027628,0.0000027652,0.0000027686,0.0000027713,0.0000027709, -0.0000027663,0.0000027590,0.0000027514,0.0000027450,0.0000027356, -0.0000027347,0.0000027369,0.0000027390,0.0000027394,0.0000027376, -0.0000027326,0.0000027281,0.0000027281,0.0000027327,0.0000027380, -0.0000027407,0.0000027413,0.0000027411,0.0000027417,0.0000027407, -0.0000027334,0.0000027313,0.0000027454,0.0000027528,0.0000027457, -0.0000027310,0.0000027200,0.0000027268,0.0000027419,0.0000027425, -0.0000027378,0.0000027205,0.0000027002,0.0000027022,0.0000027206, -0.0000027274,0.0000027418,0.0000027636,0.0000027694,0.0000027654, -0.0000027520,0.0000027357,0.0000027293,0.0000027307,0.0000027334, -0.0000027345,0.0000027344,0.0000027335,0.0000027303,0.0000027229, -0.0000027149,0.0000027124,0.0000027134,0.0000027199,0.0000027350, -0.0000027399,0.0000027388,0.0000027387,0.0000027374,0.0000027267, -0.0000027215,0.0000027317,0.0000027307,0.0000027248,0.0000027164, -0.0000027000,0.0000026876,0.0000026828,0.0000026820,0.0000026860, -0.0000026973,0.0000027159,0.0000027298,0.0000027384,0.0000027452, -0.0000027464,0.0000027407,0.0000027287,0.0000027154,0.0000027090, -0.0000027134,0.0000027177,0.0000027226,0.0000027271,0.0000027246, -0.0000027176,0.0000027098,0.0000027029,0.0000026984,0.0000026979, -0.0000026992,0.0000027021,0.0000027059,0.0000027106,0.0000027156, -0.0000027189,0.0000027216,0.0000027243,0.0000027262,0.0000027284, -0.0000027324,0.0000027403,0.0000027483,0.0000027482,0.0000027400, -0.0000027376,0.0000027395,0.0000027358,0.0000027374,0.0000027443, -0.0000027446,0.0000027382,0.0000027281,0.0000027205,0.0000027166, -0.0000027141,0.0000027104,0.0000027035,0.0000026922,0.0000026797, -0.0000026716,0.0000026674,0.0000026643,0.0000026607,0.0000026567, -0.0000026539,0.0000026597,0.0000026768,0.0000026945,0.0000026986, -0.0000026961,0.0000026911,0.0000026863,0.0000026826,0.0000026778, -0.0000026743,0.0000026756,0.0000026853,0.0000026961,0.0000027083, -0.0000027209,0.0000027228,0.0000027140,0.0000026965,0.0000026740, -0.0000026598,0.0000026544,0.0000026547,0.0000026531,0.0000026459, -0.0000026407,0.0000026403,0.0000026424,0.0000026455,0.0000026521, -0.0000026620,0.0000026707,0.0000026780,0.0000026864,0.0000026945, -0.0000026991,0.0000027000,0.0000026979,0.0000026948,0.0000026916, -0.0000026897,0.0000026902,0.0000026925,0.0000026955,0.0000026980, -0.0000026996,0.0000026986,0.0000026927,0.0000026846,0.0000026787, -0.0000026759,0.0000026766,0.0000026792,0.0000026805,0.0000026792, -0.0000026744,0.0000026686,0.0000026654,0.0000026657,0.0000026708, -0.0000026779,0.0000026800,0.0000026740,0.0000026633,0.0000026540, -0.0000026496,0.0000026487,0.0000026483,0.0000026478,0.0000026470, -0.0000026456,0.0000026437,0.0000026426,0.0000026429,0.0000026468, -0.0000026556,0.0000026682,0.0000026820,0.0000026938,0.0000027018, -0.0000027053,0.0000027051,0.0000027038,0.0000026994,0.0000026909, -0.0000026822,0.0000026843,0.0000027065,0.0000027354,0.0000027441, -0.0000027329,0.0000027091,0.0000026923,0.0000026897,0.0000026928, -0.0000026957,0.0000026980,0.0000027005,0.0000027034,0.0000027068, -0.0000027105,0.0000027141,0.0000027165,0.0000027173,0.0000027195, -0.0000027248,0.0000027309,0.0000027320,0.0000027322,0.0000027347, -0.0000027410,0.0000027479,0.0000027520,0.0000027549,0.0000027572, -0.0000027606,0.0000027634,0.0000027650,0.0000027663,0.0000027682, -0.0000027706,0.0000027715,0.0000027694,0.0000027640,0.0000027562, -0.0000027475,0.0000027397,0.0000027316,0.0000027314,0.0000027329, -0.0000027352,0.0000027372,0.0000027365,0.0000027321,0.0000027259, -0.0000027231,0.0000027241,0.0000027281,0.0000027316,0.0000027345, -0.0000027370,0.0000027405,0.0000027410,0.0000027349,0.0000027327, -0.0000027463,0.0000027543,0.0000027481,0.0000027333,0.0000027237, -0.0000027313,0.0000027461,0.0000027476,0.0000027468,0.0000027386, -0.0000027171,0.0000026979,0.0000027051,0.0000027231,0.0000027312, -0.0000027525,0.0000027704,0.0000027714,0.0000027631,0.0000027448, -0.0000027306,0.0000027292,0.0000027334,0.0000027382,0.0000027403, -0.0000027402,0.0000027389,0.0000027347,0.0000027272,0.0000027179, -0.0000027120,0.0000027113,0.0000027173,0.0000027326,0.0000027391, -0.0000027383,0.0000027376,0.0000027363,0.0000027265,0.0000027200, -0.0000027306,0.0000027296,0.0000027242,0.0000027152,0.0000026978, -0.0000026870,0.0000026819,0.0000026817,0.0000026877,0.0000027037, -0.0000027215,0.0000027312,0.0000027378,0.0000027457,0.0000027491, -0.0000027449,0.0000027346,0.0000027218,0.0000027103,0.0000027092, -0.0000027140,0.0000027169,0.0000027223,0.0000027278,0.0000027289, -0.0000027232,0.0000027143,0.0000027061,0.0000027009,0.0000027002, -0.0000027028,0.0000027065,0.0000027109,0.0000027174,0.0000027236, -0.0000027277,0.0000027313,0.0000027337,0.0000027347,0.0000027347, -0.0000027370,0.0000027441,0.0000027510,0.0000027497,0.0000027384, -0.0000027337,0.0000027370,0.0000027349,0.0000027369,0.0000027437, -0.0000027428,0.0000027339,0.0000027264,0.0000027252,0.0000027265, -0.0000027259,0.0000027217,0.0000027134,0.0000026999,0.0000026844, -0.0000026723,0.0000026648,0.0000026604,0.0000026587,0.0000026558, -0.0000026519,0.0000026508,0.0000026617,0.0000026836,0.0000026970, -0.0000026971,0.0000026931,0.0000026879,0.0000026831,0.0000026771, -0.0000026731,0.0000026748,0.0000026842,0.0000026941,0.0000027059, -0.0000027178,0.0000027226,0.0000027177,0.0000027050,0.0000026839, -0.0000026656,0.0000026567,0.0000026563,0.0000026575,0.0000026524, -0.0000026476,0.0000026498,0.0000026543,0.0000026561,0.0000026586, -0.0000026664,0.0000026767,0.0000026850,0.0000026932,0.0000027022, -0.0000027108,0.0000027169,0.0000027190,0.0000027180,0.0000027154, -0.0000027127,0.0000027116,0.0000027124,0.0000027124,0.0000027108, -0.0000027047,0.0000026978,0.0000026886,0.0000026811,0.0000026779, -0.0000026779,0.0000026801,0.0000026834,0.0000026865,0.0000026876, -0.0000026861,0.0000026801,0.0000026720,0.0000026664,0.0000026654, -0.0000026677,0.0000026739,0.0000026796,0.0000026810,0.0000026767, -0.0000026690,0.0000026612,0.0000026562,0.0000026539,0.0000026524, -0.0000026501,0.0000026470,0.0000026442,0.0000026432,0.0000026447, -0.0000026496,0.0000026573,0.0000026674,0.0000026787,0.0000026892, -0.0000026973,0.0000027025,0.0000027047,0.0000027052,0.0000027044, -0.0000026989,0.0000026883,0.0000026805,0.0000026848,0.0000027102, -0.0000027386,0.0000027469,0.0000027410,0.0000027257,0.0000027117, -0.0000027059,0.0000027052,0.0000027054,0.0000027064,0.0000027074, -0.0000027076,0.0000027076,0.0000027058,0.0000027035,0.0000027040, -0.0000027060,0.0000027073,0.0000027097,0.0000027157,0.0000027251, -0.0000027322,0.0000027350,0.0000027377,0.0000027425,0.0000027482, -0.0000027534,0.0000027575,0.0000027615,0.0000027641,0.0000027651, -0.0000027659,0.0000027668,0.0000027678,0.0000027671,0.0000027634, -0.0000027577,0.0000027501,0.0000027413,0.0000027343,0.0000027316, -0.0000027310,0.0000027286,0.0000027272,0.0000027283,0.0000027290, -0.0000027274,0.0000027236,0.0000027196,0.0000027179,0.0000027189, -0.0000027223,0.0000027274,0.0000027328,0.0000027383,0.0000027406, -0.0000027359,0.0000027340,0.0000027475,0.0000027557,0.0000027492, -0.0000027346,0.0000027271,0.0000027363,0.0000027468,0.0000027470, -0.0000027479,0.0000027471,0.0000027366,0.0000027100,0.0000026941, -0.0000027103,0.0000027253,0.0000027383,0.0000027629,0.0000027739, -0.0000027725,0.0000027573,0.0000027365,0.0000027284,0.0000027307, -0.0000027382,0.0000027451,0.0000027480,0.0000027480,0.0000027464, -0.0000027412,0.0000027326,0.0000027220,0.0000027130,0.0000027105, -0.0000027140,0.0000027289,0.0000027377,0.0000027379,0.0000027362, -0.0000027339,0.0000027252,0.0000027179,0.0000027291,0.0000027286, -0.0000027233,0.0000027146,0.0000026963,0.0000026867,0.0000026819, -0.0000026828,0.0000026915,0.0000027109,0.0000027274,0.0000027325, -0.0000027378,0.0000027464,0.0000027510,0.0000027480,0.0000027389, -0.0000027269,0.0000027139,0.0000027070,0.0000027086,0.0000027129, -0.0000027144,0.0000027198,0.0000027290,0.0000027324,0.0000027274, -0.0000027191,0.0000027117,0.0000027071,0.0000027071,0.0000027101, -0.0000027144,0.0000027209,0.0000027283,0.0000027338,0.0000027381, -0.0000027412,0.0000027430,0.0000027424,0.0000027406,0.0000027410, -0.0000027457,0.0000027510,0.0000027491,0.0000027357,0.0000027296, -0.0000027345,0.0000027341,0.0000027365,0.0000027416,0.0000027388, -0.0000027320,0.0000027319,0.0000027363,0.0000027374,0.0000027339, -0.0000027277,0.0000027180,0.0000027047,0.0000026907,0.0000026785, -0.0000026686,0.0000026618,0.0000026575,0.0000026540,0.0000026506, -0.0000026478,0.0000026513,0.0000026692,0.0000026912,0.0000026975, -0.0000026950,0.0000026897,0.0000026839,0.0000026770,0.0000026724, -0.0000026736,0.0000026824,0.0000026912,0.0000027028,0.0000027145, -0.0000027209,0.0000027193,0.0000027104,0.0000026940,0.0000026748, -0.0000026630,0.0000026595,0.0000026608,0.0000026579,0.0000026550, -0.0000026590,0.0000026649,0.0000026648,0.0000026629,0.0000026663, -0.0000026746,0.0000026822,0.0000026867,0.0000026925,0.0000027004, -0.0000027093,0.0000027158,0.0000027180,0.0000027175,0.0000027152, -0.0000027124,0.0000027111,0.0000027100,0.0000027062,0.0000027000, -0.0000026919,0.0000026846,0.0000026803,0.0000026791,0.0000026802, -0.0000026827,0.0000026861,0.0000026899,0.0000026928,0.0000026931, -0.0000026897,0.0000026819,0.0000026728,0.0000026671,0.0000026661, -0.0000026679,0.0000026729,0.0000026786,0.0000026822,0.0000026825, -0.0000026789,0.0000026710,0.0000026627,0.0000026571,0.0000026535, -0.0000026500,0.0000026467,0.0000026449,0.0000026458,0.0000026494, -0.0000026549,0.0000026610,0.0000026676,0.0000026751,0.0000026835, -0.0000026913,0.0000026974,0.0000027019,0.0000027053,0.0000027063, -0.0000027050,0.0000026966,0.0000026843,0.0000026783,0.0000026865, -0.0000027147,0.0000027415,0.0000027489,0.0000027482,0.0000027429, -0.0000027367,0.0000027336,0.0000027333,0.0000027343,0.0000027359, -0.0000027367,0.0000027360,0.0000027324,0.0000027237,0.0000027108, -0.0000026996,0.0000026930,0.0000026936,0.0000026963,0.0000027012, -0.0000027111,0.0000027237,0.0000027325,0.0000027361,0.0000027388, -0.0000027431,0.0000027483,0.0000027538,0.0000027580,0.0000027601, -0.0000027604,0.0000027607,0.0000027614,0.0000027613,0.0000027591, -0.0000027545,0.0000027482,0.0000027404,0.0000027338,0.0000027315, -0.0000027316,0.0000027271,0.0000027189,0.0000027133,0.0000027128, -0.0000027151,0.0000027166,0.0000027160,0.0000027145,0.0000027125, -0.0000027122,0.0000027152,0.0000027214,0.0000027286,0.0000027357, -0.0000027395,0.0000027357,0.0000027359,0.0000027504,0.0000027580, -0.0000027504,0.0000027366,0.0000027333,0.0000027441,0.0000027471, -0.0000027438,0.0000027446,0.0000027469,0.0000027462,0.0000027309, -0.0000027010,0.0000026953,0.0000027163,0.0000027289,0.0000027487, -0.0000027721,0.0000027778,0.0000027702,0.0000027481,0.0000027300, -0.0000027284,0.0000027349,0.0000027459,0.0000027551,0.0000027583, -0.0000027577,0.0000027546,0.0000027481,0.0000027383,0.0000027267, -0.0000027157,0.0000027101,0.0000027109,0.0000027244,0.0000027358, -0.0000027368,0.0000027346,0.0000027310,0.0000027231,0.0000027153, -0.0000027272,0.0000027286,0.0000027224,0.0000027143,0.0000026964, -0.0000026866,0.0000026814,0.0000026843,0.0000026966,0.0000027175, -0.0000027310,0.0000027331,0.0000027386,0.0000027481,0.0000027522, -0.0000027497,0.0000027415,0.0000027296,0.0000027170,0.0000027081, -0.0000027042,0.0000027059,0.0000027097,0.0000027112,0.0000027173, -0.0000027270,0.0000027307,0.0000027274,0.0000027224,0.0000027175, -0.0000027150,0.0000027156,0.0000027194,0.0000027252,0.0000027320, -0.0000027378,0.0000027419,0.0000027452,0.0000027479,0.0000027484, -0.0000027467,0.0000027444,0.0000027430,0.0000027451,0.0000027501, -0.0000027476,0.0000027324,0.0000027268,0.0000027329,0.0000027329, -0.0000027350,0.0000027388,0.0000027363,0.0000027357,0.0000027427, -0.0000027458,0.0000027419,0.0000027356,0.0000027295,0.0000027200, -0.0000027080,0.0000026970,0.0000026868,0.0000026773,0.0000026690, -0.0000026612,0.0000026540,0.0000026492,0.0000026469,0.0000026465, -0.0000026566,0.0000026818,0.0000026976,0.0000026965,0.0000026913, -0.0000026849,0.0000026773,0.0000026714,0.0000026721,0.0000026798, -0.0000026875,0.0000026982,0.0000027105,0.0000027186,0.0000027195, -0.0000027133,0.0000027015,0.0000026848,0.0000026715,0.0000026641, -0.0000026636,0.0000026622,0.0000026620,0.0000026684,0.0000026737, -0.0000026726,0.0000026676,0.0000026661,0.0000026694,0.0000026722, -0.0000026714,0.0000026720,0.0000026769,0.0000026856,0.0000026942, -0.0000026995,0.0000027014,0.0000027016,0.0000027000,0.0000026983, -0.0000026974,0.0000026958,0.0000026923,0.0000026880,0.0000026844, -0.0000026821,0.0000026822,0.0000026839,0.0000026863,0.0000026892, -0.0000026930,0.0000026965,0.0000026974,0.0000026952,0.0000026893, -0.0000026809,0.0000026726,0.0000026679,0.0000026676,0.0000026704, -0.0000026749,0.0000026794,0.0000026828,0.0000026843,0.0000026824, -0.0000026749,0.0000026653,0.0000026579,0.0000026529,0.0000026497, -0.0000026491,0.0000026506,0.0000026537,0.0000026571,0.0000026603, -0.0000026634,0.0000026668,0.0000026708,0.0000026766,0.0000026840, -0.0000026910,0.0000026974,0.0000027036,0.0000027074,0.0000027081, -0.0000027037,0.0000026916,0.0000026795,0.0000026766,0.0000026889, -0.0000027183,0.0000027434,0.0000027517,0.0000027526,0.0000027530, -0.0000027530,0.0000027527,0.0000027518,0.0000027503,0.0000027484, -0.0000027465,0.0000027458,0.0000027452,0.0000027412,0.0000027314, -0.0000027150,0.0000026968,0.0000026858,0.0000026845,0.0000026907, -0.0000026997,0.0000027098,0.0000027204,0.0000027292,0.0000027353, -0.0000027393,0.0000027425,0.0000027475,0.0000027516,0.0000027537, -0.0000027545,0.0000027550,0.0000027542,0.0000027511,0.0000027463, -0.0000027404,0.0000027345,0.0000027312,0.0000027314,0.0000027326, -0.0000027200,0.0000027109,0.0000027029,0.0000026988,0.0000026988, -0.0000027019,0.0000027048,0.0000027065,0.0000027068,0.0000027065, -0.0000027073,0.0000027107,0.0000027172,0.0000027261,0.0000027346, -0.0000027380,0.0000027352,0.0000027388,0.0000027560,0.0000027616, -0.0000027522,0.0000027418,0.0000027445,0.0000027539,0.0000027493, -0.0000027437,0.0000027438,0.0000027448,0.0000027451,0.0000027430, -0.0000027219,0.0000026942,0.0000026990,0.0000027218,0.0000027350, -0.0000027609,0.0000027796,0.0000027799,0.0000027634,0.0000027384, -0.0000027280,0.0000027308,0.0000027422,0.0000027573,0.0000027673, -0.0000027689,0.0000027650,0.0000027589,0.0000027514,0.0000027421, -0.0000027309,0.0000027191,0.0000027099,0.0000027086,0.0000027200, -0.0000027326,0.0000027345,0.0000027327,0.0000027280,0.0000027206, -0.0000027130,0.0000027250,0.0000027295,0.0000027220,0.0000027147, -0.0000026983,0.0000026876,0.0000026814,0.0000026864,0.0000027018, -0.0000027228,0.0000027321,0.0000027338,0.0000027409,0.0000027501, -0.0000027528,0.0000027505,0.0000027430,0.0000027317,0.0000027193, -0.0000027099,0.0000027032,0.0000026994,0.0000027016,0.0000027060, -0.0000027092,0.0000027148,0.0000027208,0.0000027239,0.0000027237, -0.0000027214,0.0000027197,0.0000027193,0.0000027220,0.0000027273, -0.0000027333,0.0000027390,0.0000027425,0.0000027456,0.0000027492, -0.0000027513,0.0000027504,0.0000027479,0.0000027453,0.0000027426, -0.0000027440,0.0000027493,0.0000027453,0.0000027295,0.0000027250, -0.0000027306,0.0000027308,0.0000027330,0.0000027366,0.0000027371, -0.0000027433,0.0000027515,0.0000027498,0.0000027418,0.0000027367, -0.0000027334,0.0000027263,0.0000027163,0.0000027062,0.0000026960, -0.0000026861,0.0000026771,0.0000026683,0.0000026586,0.0000026503, -0.0000026464,0.0000026449,0.0000026489,0.0000026718,0.0000026968, -0.0000026982,0.0000026929,0.0000026862,0.0000026780,0.0000026707, -0.0000026705,0.0000026769,0.0000026837,0.0000026926,0.0000027051, -0.0000027147,0.0000027184,0.0000027148,0.0000027056,0.0000026929, -0.0000026803,0.0000026693,0.0000026656,0.0000026651,0.0000026684, -0.0000026774,0.0000026822,0.0000026799,0.0000026735,0.0000026682, -0.0000026643,0.0000026603,0.0000026556,0.0000026537,0.0000026576, -0.0000026662,0.0000026761,0.0000026838,0.0000026876,0.0000026893, -0.0000026903,0.0000026911,0.0000026916,0.0000026919,0.0000026916, -0.0000026894,0.0000026878,0.0000026867,0.0000026867,0.0000026881, -0.0000026903,0.0000026931,0.0000026965,0.0000026991,0.0000026994, -0.0000026974,0.0000026937,0.0000026880,0.0000026806,0.0000026738, -0.0000026702,0.0000026705,0.0000026740,0.0000026784,0.0000026821, -0.0000026841,0.0000026844,0.0000026810,0.0000026731,0.0000026640, -0.0000026568,0.0000026533,0.0000026538,0.0000026569,0.0000026602, -0.0000026622,0.0000026631,0.0000026632,0.0000026637,0.0000026650, -0.0000026668,0.0000026700,0.0000026764,0.0000026847,0.0000026930, -0.0000027015,0.0000027076,0.0000027097,0.0000027084,0.0000026992, -0.0000026849,0.0000026752,0.0000026756,0.0000026907,0.0000027201, -0.0000027442,0.0000027522,0.0000027531,0.0000027533,0.0000027533, -0.0000027515,0.0000027478,0.0000027426,0.0000027374,0.0000027344, -0.0000027345,0.0000027365,0.0000027381,0.0000027359,0.0000027292, -0.0000027146,0.0000026955,0.0000026844,0.0000026829,0.0000026897, -0.0000026989,0.0000027069,0.0000027150,0.0000027231,0.0000027295, -0.0000027345,0.0000027399,0.0000027437,0.0000027456,0.0000027462, -0.0000027450,0.0000027406,0.0000027339,0.0000027286,0.0000027268, -0.0000027281,0.0000027306,0.0000027306,0.0000027277,0.0000027053, -0.0000027007,0.0000026979,0.0000026964,0.0000026965,0.0000026981, -0.0000027014,0.0000027033,0.0000027038,0.0000027041,0.0000027054, -0.0000027096,0.0000027163,0.0000027263,0.0000027353,0.0000027367, -0.0000027340,0.0000027440,0.0000027622,0.0000027637,0.0000027541, -0.0000027496,0.0000027583,0.0000027638,0.0000027528,0.0000027466, -0.0000027488,0.0000027481,0.0000027438,0.0000027423,0.0000027377, -0.0000027115,0.0000026900,0.0000027066,0.0000027271,0.0000027450, -0.0000027721,0.0000027832,0.0000027782,0.0000027537,0.0000027318, -0.0000027288,0.0000027363,0.0000027533,0.0000027710,0.0000027772, -0.0000027738,0.0000027651,0.0000027570,0.0000027496,0.0000027419, -0.0000027336,0.0000027227,0.0000027120,0.0000027081,0.0000027162, -0.0000027289,0.0000027311,0.0000027302,0.0000027252,0.0000027184, -0.0000027114,0.0000027221,0.0000027308,0.0000027225,0.0000027161, -0.0000027012,0.0000026897,0.0000026821,0.0000026886,0.0000027062, -0.0000027267,0.0000027335,0.0000027348,0.0000027436,0.0000027524, -0.0000027535,0.0000027504,0.0000027432,0.0000027338,0.0000027219, -0.0000027111,0.0000027038,0.0000026971,0.0000026925,0.0000026955, -0.0000027012,0.0000027067,0.0000027118,0.0000027156,0.0000027181, -0.0000027189,0.0000027190,0.0000027196,0.0000027219,0.0000027270, -0.0000027332,0.0000027390,0.0000027427,0.0000027450,0.0000027494, -0.0000027535,0.0000027541,0.0000027511,0.0000027474,0.0000027437, -0.0000027409,0.0000027432,0.0000027486,0.0000027431,0.0000027271, -0.0000027224,0.0000027274,0.0000027285,0.0000027317,0.0000027363, -0.0000027398,0.0000027496,0.0000027551,0.0000027497,0.0000027418, -0.0000027399,0.0000027398,0.0000027368,0.0000027295,0.0000027191, -0.0000027073,0.0000026952,0.0000026839,0.0000026745,0.0000026654, -0.0000026553,0.0000026471,0.0000026444,0.0000026460,0.0000026641, -0.0000026940,0.0000027000,0.0000026948,0.0000026882,0.0000026798, -0.0000026709,0.0000026694,0.0000026748,0.0000026813,0.0000026883, -0.0000026991,0.0000027098,0.0000027163,0.0000027152,0.0000027076, -0.0000026976,0.0000026870,0.0000026743,0.0000026666,0.0000026668, -0.0000026739,0.0000026855,0.0000026901,0.0000026872,0.0000026806, -0.0000026725,0.0000026618,0.0000026518,0.0000026452,0.0000026439, -0.0000026498,0.0000026585,0.0000026684,0.0000026777,0.0000026833, -0.0000026859,0.0000026879,0.0000026901,0.0000026928,0.0000026947, -0.0000026954,0.0000026953,0.0000026943,0.0000026929,0.0000026919, -0.0000026920,0.0000026936,0.0000026965,0.0000027000,0.0000027020, -0.0000027007,0.0000026976,0.0000026949,0.0000026923,0.0000026877, -0.0000026815,0.0000026760,0.0000026731,0.0000026736,0.0000026771, -0.0000026813,0.0000026841,0.0000026843,0.0000026813,0.0000026751, -0.0000026682,0.0000026630,0.0000026606,0.0000026616,0.0000026642, -0.0000026663,0.0000026671,0.0000026667,0.0000026657,0.0000026642, -0.0000026631,0.0000026628,0.0000026634,0.0000026648,0.0000026695, -0.0000026784,0.0000026891,0.0000027000,0.0000027086,0.0000027126, -0.0000027122,0.0000027060,0.0000026927,0.0000026791,0.0000026727, -0.0000026750,0.0000026914,0.0000027187,0.0000027407,0.0000027490, -0.0000027492,0.0000027466,0.0000027420,0.0000027343,0.0000027230, -0.0000027101,0.0000026998,0.0000026954,0.0000026961,0.0000027006, -0.0000027089,0.0000027189,0.0000027250,0.0000027225,0.0000027134, -0.0000026984,0.0000026855,0.0000026829,0.0000026888,0.0000026982, -0.0000027058,0.0000027112,0.0000027159,0.0000027208,0.0000027256, -0.0000027288,0.0000027305,0.0000027312,0.0000027297,0.0000027264, -0.0000027238,0.0000027241,0.0000027259,0.0000027261,0.0000027233, -0.0000027175,0.0000027112,0.0000027133,0.0000027125,0.0000027118, -0.0000027115,0.0000027103,0.0000027089,0.0000027089,0.0000027087, -0.0000027079,0.0000027066,0.0000027071,0.0000027114,0.0000027191, -0.0000027292,0.0000027362,0.0000027349,0.0000027340,0.0000027509, -0.0000027657,0.0000027636,0.0000027557,0.0000027593,0.0000027721, -0.0000027698,0.0000027580,0.0000027529,0.0000027567,0.0000027586, -0.0000027519,0.0000027415,0.0000027401,0.0000027308,0.0000026998, -0.0000026909,0.0000027160,0.0000027336,0.0000027576,0.0000027818, -0.0000027862,0.0000027723,0.0000027435,0.0000027300,0.0000027320, -0.0000027450,0.0000027673,0.0000027820,0.0000027815,0.0000027714, -0.0000027601,0.0000027519,0.0000027449,0.0000027394,0.0000027341, -0.0000027255,0.0000027146,0.0000027080,0.0000027133,0.0000027252, -0.0000027272,0.0000027270,0.0000027225,0.0000027170,0.0000027104, -0.0000027188,0.0000027316,0.0000027233,0.0000027178,0.0000027045, -0.0000026930,0.0000026841,0.0000026894,0.0000027083,0.0000027290, -0.0000027351,0.0000027366,0.0000027459,0.0000027547,0.0000027551, -0.0000027509,0.0000027429,0.0000027339,0.0000027235,0.0000027120, -0.0000027045,0.0000026982,0.0000026904,0.0000026872,0.0000026896, -0.0000026950,0.0000027022,0.0000027074,0.0000027114,0.0000027138, -0.0000027160,0.0000027182,0.0000027219,0.0000027273,0.0000027336, -0.0000027399,0.0000027439,0.0000027455,0.0000027489,0.0000027542, -0.0000027568,0.0000027554,0.0000027512,0.0000027463,0.0000027405, -0.0000027388,0.0000027429,0.0000027478,0.0000027412,0.0000027242, -0.0000027188,0.0000027235,0.0000027266,0.0000027310,0.0000027360, -0.0000027420,0.0000027524,0.0000027558,0.0000027491,0.0000027426, -0.0000027428,0.0000027458,0.0000027474,0.0000027433,0.0000027330, -0.0000027198,0.0000027059,0.0000026916,0.0000026797,0.0000026702, -0.0000026606,0.0000026504,0.0000026449,0.0000026461,0.0000026606, -0.0000026907,0.0000027018,0.0000026972,0.0000026909,0.0000026822, -0.0000026717,0.0000026689,0.0000026734,0.0000026806,0.0000026868, -0.0000026944,0.0000027039,0.0000027125,0.0000027145,0.0000027083, -0.0000026995,0.0000026909,0.0000026784,0.0000026673,0.0000026677, -0.0000026782,0.0000026920,0.0000026966,0.0000026938,0.0000026881, -0.0000026792,0.0000026631,0.0000026474,0.0000026413,0.0000026418, -0.0000026479,0.0000026571,0.0000026660,0.0000026748,0.0000026810, -0.0000026841,0.0000026865,0.0000026895,0.0000026935,0.0000026974, -0.0000027003,0.0000027016,0.0000027013,0.0000026997,0.0000026973, -0.0000026958,0.0000026962,0.0000026991,0.0000027028,0.0000027041, -0.0000027017,0.0000026972,0.0000026943,0.0000026934,0.0000026916, -0.0000026873,0.0000026819,0.0000026775,0.0000026754,0.0000026761, -0.0000026794,0.0000026829,0.0000026841,0.0000026819,0.0000026756, -0.0000026696,0.0000026673,0.0000026686,0.0000026713,0.0000026725, -0.0000026717,0.0000026701,0.0000026691,0.0000026679,0.0000026660, -0.0000026636,0.0000026619,0.0000026615,0.0000026615,0.0000026619, -0.0000026653,0.0000026739,0.0000026860,0.0000026993,0.0000027102, -0.0000027156,0.0000027160,0.0000027113,0.0000026999,0.0000026858, -0.0000026750,0.0000026720,0.0000026761,0.0000026908,0.0000027115, -0.0000027274,0.0000027325,0.0000027304,0.0000027216,0.0000027081, -0.0000026921,0.0000026774,0.0000026678,0.0000026641,0.0000026643, -0.0000026660,0.0000026689,0.0000026745,0.0000026852,0.0000027003, -0.0000027143,0.0000027181,0.0000027136,0.0000027014,0.0000026899, -0.0000026876,0.0000026905,0.0000026985,0.0000027060,0.0000027113, -0.0000027154,0.0000027186,0.0000027216,0.0000027242,0.0000027259, -0.0000027262,0.0000027244,0.0000027214,0.0000027184,0.0000027157, -0.0000027134,0.0000027124,0.0000027135,0.0000027128,0.0000027243, -0.0000027226,0.0000027214,0.0000027211,0.0000027223,0.0000027230, -0.0000027224,0.0000027200,0.0000027167,0.0000027140,0.0000027135, -0.0000027164,0.0000027238,0.0000027334,0.0000027372,0.0000027337, -0.0000027380,0.0000027576,0.0000027668,0.0000027621,0.0000027590, -0.0000027691,0.0000027783,0.0000027708,0.0000027617,0.0000027597, -0.0000027648,0.0000027707,0.0000027674,0.0000027532,0.0000027401, -0.0000027377,0.0000027217,0.0000026927,0.0000026966,0.0000027243, -0.0000027421,0.0000027706,0.0000027887,0.0000027871,0.0000027636, -0.0000027363,0.0000027309,0.0000027373,0.0000027561,0.0000027786, -0.0000027856,0.0000027789,0.0000027654,0.0000027556,0.0000027488, -0.0000027417,0.0000027370,0.0000027332,0.0000027271,0.0000027170, -0.0000027089,0.0000027122,0.0000027219,0.0000027229,0.0000027230, -0.0000027200,0.0000027160,0.0000027099,0.0000027150,0.0000027323, -0.0000027252,0.0000027198,0.0000027086,0.0000026960,0.0000026859, -0.0000026886,0.0000027075,0.0000027294,0.0000027366,0.0000027378, -0.0000027463,0.0000027547,0.0000027563,0.0000027529,0.0000027445, -0.0000027344,0.0000027242,0.0000027132,0.0000027047,0.0000026981, -0.0000026909,0.0000026855,0.0000026846,0.0000026866,0.0000026922, -0.0000026975,0.0000027016,0.0000027051,0.0000027092,0.0000027137, -0.0000027194,0.0000027260,0.0000027329,0.0000027398,0.0000027446, -0.0000027459,0.0000027472,0.0000027517,0.0000027560,0.0000027563, -0.0000027540,0.0000027505,0.0000027436,0.0000027373,0.0000027378, -0.0000027428,0.0000027469,0.0000027385,0.0000027208,0.0000027146, -0.0000027188,0.0000027239,0.0000027284,0.0000027328,0.0000027412, -0.0000027529,0.0000027555,0.0000027488,0.0000027429,0.0000027437, -0.0000027497,0.0000027556,0.0000027547,0.0000027457,0.0000027322, -0.0000027173,0.0000027020,0.0000026872,0.0000026743,0.0000026640, -0.0000026549,0.0000026479,0.0000026486,0.0000026612,0.0000026882, -0.0000027030,0.0000026996,0.0000026934,0.0000026843,0.0000026727, -0.0000026694,0.0000026734,0.0000026814,0.0000026876,0.0000026923, -0.0000026986,0.0000027074,0.0000027123,0.0000027083,0.0000026999, -0.0000026922,0.0000026814,0.0000026690,0.0000026685,0.0000026813, -0.0000026965,0.0000027011,0.0000026986,0.0000026943,0.0000026869, -0.0000026686,0.0000026476,0.0000026407,0.0000026422,0.0000026501, -0.0000026604,0.0000026678,0.0000026738,0.0000026800,0.0000026836, -0.0000026855,0.0000026880,0.0000026921,0.0000026975,0.0000027028, -0.0000027067,0.0000027077,0.0000027059,0.0000027021,0.0000026988, -0.0000026982,0.0000027011,0.0000027053,0.0000027065,0.0000027026, -0.0000026964,0.0000026925,0.0000026920,0.0000026918,0.0000026898, -0.0000026860,0.0000026819,0.0000026785,0.0000026772,0.0000026781, -0.0000026805,0.0000026816,0.0000026808,0.0000026774,0.0000026735, -0.0000026724,0.0000026750,0.0000026792,0.0000026806,0.0000026776, -0.0000026732,0.0000026698,0.0000026681,0.0000026668,0.0000026650, -0.0000026630,0.0000026621,0.0000026625,0.0000026627,0.0000026627, -0.0000026648,0.0000026721,0.0000026842,0.0000026985,0.0000027107, -0.0000027173,0.0000027188,0.0000027159,0.0000027068,0.0000026936, -0.0000026809,0.0000026737,0.0000026732,0.0000026780,0.0000026876, -0.0000026984,0.0000027044,0.0000027030,0.0000026944,0.0000026819, -0.0000026701,0.0000026620,0.0000026590,0.0000026593,0.0000026599, -0.0000026598,0.0000026602,0.0000026608,0.0000026609,0.0000026636, -0.0000026721,0.0000026877,0.0000027049,0.0000027131,0.0000027140, -0.0000027079,0.0000027004,0.0000026955,0.0000026971,0.0000027006, -0.0000027056,0.0000027106,0.0000027141,0.0000027173,0.0000027190, -0.0000027191,0.0000027176,0.0000027148,0.0000027125,0.0000027125, -0.0000027149,0.0000027195,0.0000027233,0.0000027253,0.0000027253, -0.0000027214,0.0000027193,0.0000027175,0.0000027164,0.0000027175, -0.0000027223,0.0000027267,0.0000027285,0.0000027261,0.0000027228, -0.0000027216,0.0000027239,0.0000027313,0.0000027366,0.0000027345, -0.0000027326,0.0000027460,0.0000027628,0.0000027653,0.0000027588, -0.0000027619,0.0000027751,0.0000027764,0.0000027654,0.0000027611, -0.0000027625,0.0000027689,0.0000027790,0.0000027816,0.0000027723, -0.0000027511,0.0000027382,0.0000027341,0.0000027121,0.0000026886, -0.0000027055,0.0000027316,0.0000027534,0.0000027817,0.0000027930, -0.0000027847,0.0000027542,0.0000027327,0.0000027332,0.0000027440, -0.0000027658,0.0000027839,0.0000027851,0.0000027732,0.0000027609, -0.0000027550,0.0000027496,0.0000027419,0.0000027363,0.0000027325, -0.0000027279,0.0000027196,0.0000027113,0.0000027123,0.0000027191, -0.0000027183,0.0000027182,0.0000027179,0.0000027149,0.0000027092, -0.0000027115,0.0000027326,0.0000027279,0.0000027231,0.0000027133, -0.0000026992,0.0000026875,0.0000026868,0.0000027037,0.0000027279, -0.0000027377,0.0000027384,0.0000027459,0.0000027534,0.0000027563, -0.0000027542,0.0000027480,0.0000027378,0.0000027264,0.0000027154, -0.0000027058,0.0000026967,0.0000026891,0.0000026843,0.0000026840, -0.0000026863,0.0000026898,0.0000026937,0.0000026962,0.0000026983, -0.0000027021,0.0000027066,0.0000027127,0.0000027204,0.0000027278, -0.0000027357,0.0000027422,0.0000027443,0.0000027437,0.0000027461, -0.0000027508,0.0000027524,0.0000027518,0.0000027510,0.0000027478, -0.0000027404,0.0000027361,0.0000027376,0.0000027429,0.0000027455, -0.0000027350,0.0000027175,0.0000027102,0.0000027135,0.0000027187, -0.0000027216,0.0000027250,0.0000027354,0.0000027495,0.0000027544, -0.0000027491,0.0000027429,0.0000027434,0.0000027512,0.0000027601, -0.0000027621,0.0000027559,0.0000027430,0.0000027279,0.0000027133, -0.0000026976,0.0000026810,0.0000026673,0.0000026592,0.0000026534, -0.0000026534,0.0000026641,0.0000026870,0.0000027032,0.0000027012, -0.0000026954,0.0000026855,0.0000026736,0.0000026713,0.0000026755, -0.0000026835,0.0000026898,0.0000026922,0.0000026950,0.0000027025, -0.0000027089,0.0000027074,0.0000026996,0.0000026917,0.0000026828, -0.0000026711,0.0000026699,0.0000026834,0.0000026988,0.0000027032, -0.0000027011,0.0000026984,0.0000026934,0.0000026766,0.0000026519, -0.0000026411,0.0000026433,0.0000026523,0.0000026630,0.0000026705, -0.0000026753,0.0000026801,0.0000026847,0.0000026876,0.0000026895, -0.0000026926,0.0000026979,0.0000027046,0.0000027106,0.0000027130, -0.0000027111,0.0000027054,0.0000027010,0.0000027000,0.0000027029, -0.0000027074,0.0000027086,0.0000027039,0.0000026959,0.0000026904, -0.0000026890,0.0000026889,0.0000026884,0.0000026866,0.0000026843, -0.0000026815,0.0000026790,0.0000026782,0.0000026787,0.0000026792, -0.0000026789,0.0000026783,0.0000026779,0.0000026794,0.0000026823, -0.0000026844,0.0000026843,0.0000026815,0.0000026768,0.0000026724, -0.0000026694,0.0000026682,0.0000026676,0.0000026667,0.0000026659, -0.0000026663,0.0000026678,0.0000026687,0.0000026679,0.0000026683, -0.0000026738,0.0000026846,0.0000026978,0.0000027100,0.0000027173, -0.0000027196,0.0000027185,0.0000027120,0.0000027010,0.0000026889, -0.0000026795,0.0000026761,0.0000026769,0.0000026804,0.0000026840, -0.0000026857,0.0000026837,0.0000026772,0.0000026699,0.0000026648, -0.0000026620,0.0000026607,0.0000026608,0.0000026594,0.0000026563, -0.0000026548,0.0000026557,0.0000026579,0.0000026574,0.0000026560, -0.0000026563,0.0000026630,0.0000026779,0.0000026966,0.0000027112, -0.0000027166,0.0000027160,0.0000027137,0.0000027121,0.0000027114, -0.0000027122,0.0000027137,0.0000027146,0.0000027165,0.0000027181, -0.0000027199,0.0000027217,0.0000027230,0.0000027236,0.0000027242, -0.0000027257,0.0000027270,0.0000027265,0.0000027265,0.0000027238, -0.0000027131,0.0000027129,0.0000027124,0.0000027106,0.0000027092, -0.0000027118,0.0000027190,0.0000027271,0.0000027300,0.0000027295, -0.0000027299,0.0000027330,0.0000027358,0.0000027337,0.0000027302, -0.0000027370,0.0000027546,0.0000027637,0.0000027605,0.0000027563, -0.0000027651,0.0000027747,0.0000027653,0.0000027541,0.0000027522, -0.0000027561,0.0000027643,0.0000027768,0.0000027888,0.0000027885, -0.0000027721,0.0000027477,0.0000027369,0.0000027299,0.0000027023, -0.0000026888,0.0000027160,0.0000027390,0.0000027661,0.0000027911, -0.0000027964,0.0000027795,0.0000027464,0.0000027340,0.0000027372, -0.0000027503,0.0000027731,0.0000027858,0.0000027824,0.0000027679, -0.0000027601,0.0000027576,0.0000027517,0.0000027433,0.0000027367, -0.0000027322,0.0000027282,0.0000027216,0.0000027136,0.0000027130, -0.0000027166,0.0000027137,0.0000027132,0.0000027159,0.0000027137, -0.0000027082,0.0000027092,0.0000027327,0.0000027314,0.0000027262, -0.0000027186,0.0000027027,0.0000026900,0.0000026848,0.0000026974, -0.0000027226,0.0000027377,0.0000027385,0.0000027444,0.0000027516, -0.0000027547,0.0000027538,0.0000027502,0.0000027425,0.0000027317, -0.0000027207,0.0000027096,0.0000026981,0.0000026882,0.0000026815, -0.0000026810,0.0000026856,0.0000026900,0.0000026949,0.0000026981, -0.0000026998,0.0000027022,0.0000027049,0.0000027089,0.0000027148, -0.0000027214,0.0000027288,0.0000027364,0.0000027401,0.0000027394, -0.0000027397,0.0000027436,0.0000027463,0.0000027465,0.0000027460, -0.0000027467,0.0000027449,0.0000027385,0.0000027354,0.0000027373, -0.0000027422,0.0000027431,0.0000027314,0.0000027150,0.0000027073, -0.0000027087,0.0000027113,0.0000027117,0.0000027137,0.0000027245, -0.0000027414,0.0000027513,0.0000027493,0.0000027439,0.0000027432, -0.0000027501,0.0000027606,0.0000027654,0.0000027620,0.0000027508, -0.0000027365,0.0000027230,0.0000027085,0.0000026905,0.0000026728, -0.0000026632,0.0000026600,0.0000026594,0.0000026677,0.0000026863, -0.0000027025,0.0000027015,0.0000026961,0.0000026858,0.0000026754, -0.0000026748,0.0000026796,0.0000026861,0.0000026916,0.0000026931, -0.0000026934,0.0000026989,0.0000027056,0.0000027055,0.0000026991, -0.0000026906,0.0000026829,0.0000026739,0.0000026728,0.0000026849, -0.0000026995,0.0000027033,0.0000027018,0.0000026996,0.0000026978, -0.0000026851,0.0000026595,0.0000026422,0.0000026439,0.0000026533, -0.0000026630,0.0000026697,0.0000026755,0.0000026813,0.0000026866, -0.0000026910,0.0000026939,0.0000026964,0.0000027004,0.0000027063, -0.0000027131,0.0000027169,0.0000027152,0.0000027085,0.0000027024, -0.0000027013,0.0000027051,0.0000027099,0.0000027109,0.0000027060, -0.0000026968,0.0000026892,0.0000026858,0.0000026847,0.0000026842, -0.0000026838,0.0000026836,0.0000026828,0.0000026810,0.0000026794, -0.0000026785,0.0000026778,0.0000026775,0.0000026787,0.0000026815, -0.0000026853,0.0000026884,0.0000026891,0.0000026867,0.0000026819, -0.0000026774,0.0000026747,0.0000026736,0.0000026735,0.0000026733, -0.0000026728,0.0000026721,0.0000026716,0.0000026724,0.0000026750, -0.0000026770,0.0000026763,0.0000026750,0.0000026777,0.0000026862, -0.0000026972,0.0000027080,0.0000027149,0.0000027180,0.0000027180, -0.0000027141,0.0000027058,0.0000026959,0.0000026873,0.0000026820, -0.0000026807,0.0000026816,0.0000026831,0.0000026834,0.0000026809, -0.0000026762,0.0000026716,0.0000026675,0.0000026650,0.0000026628, -0.0000026587,0.0000026506,0.0000026429,0.0000026407,0.0000026418, -0.0000026455,0.0000026483,0.0000026502,0.0000026510,0.0000026508, -0.0000026513,0.0000026565,0.0000026697,0.0000026884,0.0000027062, -0.0000027176,0.0000027224,0.0000027265,0.0000027289,0.0000027300, -0.0000027302,0.0000027297,0.0000027303,0.0000027315,0.0000027321, -0.0000027317,0.0000027295,0.0000027264,0.0000027244,0.0000027206, -0.0000027178,0.0000027158,0.0000027145,0.0000027136,0.0000027085, -0.0000027089,0.0000027086,0.0000027072,0.0000027053,0.0000027047, -0.0000027077,0.0000027152,0.0000027236,0.0000027288,0.0000027308, -0.0000027317,0.0000027288,0.0000027262,0.0000027309,0.0000027464, -0.0000027605,0.0000027613,0.0000027536,0.0000027546,0.0000027664, -0.0000027661,0.0000027495,0.0000027393,0.0000027394,0.0000027448, -0.0000027526,0.0000027645,0.0000027830,0.0000027956,0.0000027908, -0.0000027685,0.0000027446,0.0000027376,0.0000027255,0.0000026943, -0.0000026947,0.0000027250,0.0000027477,0.0000027778,0.0000027978, -0.0000027972,0.0000027724,0.0000027410,0.0000027360,0.0000027414, -0.0000027560,0.0000027784,0.0000027870,0.0000027786,0.0000027648, -0.0000027618,0.0000027593,0.0000027518,0.0000027434,0.0000027364, -0.0000027314,0.0000027272,0.0000027217,0.0000027145,0.0000027130, -0.0000027138,0.0000027091,0.0000027096,0.0000027143,0.0000027130, -0.0000027076,0.0000027086,0.0000027331,0.0000027341,0.0000027283, -0.0000027239,0.0000027070,0.0000026933,0.0000026838,0.0000026902, -0.0000027136,0.0000027346,0.0000027376,0.0000027407,0.0000027480, -0.0000027514,0.0000027506,0.0000027490,0.0000027446,0.0000027368, -0.0000027277,0.0000027177,0.0000027058,0.0000026926,0.0000026831, -0.0000026795,0.0000026813,0.0000026853,0.0000026907,0.0000026978, -0.0000027034,0.0000027076,0.0000027109,0.0000027122,0.0000027145, -0.0000027187,0.0000027240,0.0000027301,0.0000027343,0.0000027343, -0.0000027339,0.0000027363,0.0000027392,0.0000027406,0.0000027400, -0.0000027397,0.0000027423,0.0000027425,0.0000027376,0.0000027346, -0.0000027363,0.0000027406,0.0000027396,0.0000027281,0.0000027145, -0.0000027073,0.0000027058,0.0000027046,0.0000027026,0.0000027029, -0.0000027119,0.0000027289,0.0000027437,0.0000027482,0.0000027458, -0.0000027436,0.0000027474,0.0000027586,0.0000027657,0.0000027640, -0.0000027547,0.0000027416,0.0000027294,0.0000027176,0.0000027007, -0.0000026806,0.0000026683,0.0000026662,0.0000026657,0.0000026710, -0.0000026857,0.0000027013,0.0000027013,0.0000026960,0.0000026855, -0.0000026776,0.0000026798,0.0000026844,0.0000026884,0.0000026925, -0.0000026936,0.0000026929,0.0000026969,0.0000027034,0.0000027040, -0.0000026989,0.0000026902,0.0000026828,0.0000026773,0.0000026769, -0.0000026861,0.0000026982,0.0000027027,0.0000027012,0.0000026990, -0.0000026990,0.0000026925,0.0000026688,0.0000026466,0.0000026439, -0.0000026519,0.0000026606,0.0000026667,0.0000026729,0.0000026817, -0.0000026894,0.0000026946,0.0000026986,0.0000027012,0.0000027035, -0.0000027073,0.0000027131,0.0000027179,0.0000027172,0.0000027104, -0.0000027035,0.0000027024,0.0000027072,0.0000027134,0.0000027149, -0.0000027095,0.0000026991,0.0000026892,0.0000026833,0.0000026807, -0.0000026793,0.0000026789,0.0000026796,0.0000026811,0.0000026812, -0.0000026801,0.0000026792,0.0000026776,0.0000026764,0.0000026777, -0.0000026823,0.0000026879,0.0000026917,0.0000026914,0.0000026870, -0.0000026808,0.0000026767,0.0000026768,0.0000026790,0.0000026816, -0.0000026825,0.0000026816,0.0000026796,0.0000026775,0.0000026764, -0.0000026769,0.0000026800,0.0000026836,0.0000026846,0.0000026830, -0.0000026832,0.0000026886,0.0000026972,0.0000027056,0.0000027111, -0.0000027134,0.0000027139,0.0000027118,0.0000027063,0.0000026990, -0.0000026922,0.0000026875,0.0000026852,0.0000026849,0.0000026858, -0.0000026856,0.0000026832,0.0000026797,0.0000026763,0.0000026725, -0.0000026666,0.0000026595,0.0000026499,0.0000026394,0.0000026328, -0.0000026328,0.0000026366,0.0000026400,0.0000026420,0.0000026437, -0.0000026461,0.0000026487,0.0000026505,0.0000026508,0.0000026516, -0.0000026555,0.0000026660,0.0000026817,0.0000026980,0.0000027120, -0.0000027227,0.0000027295,0.0000027326,0.0000027327,0.0000027322, -0.0000027305,0.0000027280,0.0000027241,0.0000027187,0.0000027121, -0.0000027055,0.0000027008,0.0000026993,0.0000027003,0.0000027027, -0.0000027052,0.0000027072,0.0000027078,0.0000027073,0.0000027059, -0.0000027043,0.0000027031,0.0000027015,0.0000027008,0.0000027027, -0.0000027079,0.0000027139,0.0000027175,0.0000027184,0.0000027193, -0.0000027251,0.0000027378,0.0000027530,0.0000027590,0.0000027538, -0.0000027475,0.0000027546,0.0000027618,0.0000027493,0.0000027332, -0.0000027280,0.0000027315,0.0000027386,0.0000027452,0.0000027528, -0.0000027675,0.0000027910,0.0000028007,0.0000027882,0.0000027632, -0.0000027440,0.0000027392,0.0000027198,0.0000026920,0.0000027023, -0.0000027323,0.0000027573,0.0000027872,0.0000028004,0.0000027954, -0.0000027648,0.0000027386,0.0000027384,0.0000027456,0.0000027605, -0.0000027817,0.0000027859,0.0000027744,0.0000027639,0.0000027632, -0.0000027584,0.0000027496,0.0000027418,0.0000027347,0.0000027294, -0.0000027250,0.0000027196,0.0000027131,0.0000027114,0.0000027100, -0.0000027050,0.0000027083,0.0000027139,0.0000027130,0.0000027076, -0.0000027093,0.0000027340,0.0000027355,0.0000027297,0.0000027278, -0.0000027122,0.0000026965,0.0000026854,0.0000026840,0.0000027030, -0.0000027274,0.0000027358,0.0000027360,0.0000027420,0.0000027466, -0.0000027464,0.0000027449,0.0000027431,0.0000027389,0.0000027333, -0.0000027262,0.0000027164,0.0000027047,0.0000026944,0.0000026876, -0.0000026836,0.0000026836,0.0000026839,0.0000026886,0.0000026977, -0.0000027073,0.0000027143,0.0000027189,0.0000027203,0.0000027216, -0.0000027232,0.0000027263,0.0000027295,0.0000027297,0.0000027285, -0.0000027298,0.0000027324,0.0000027344,0.0000027342,0.0000027321, -0.0000027333,0.0000027390,0.0000027417,0.0000027367,0.0000027328, -0.0000027345,0.0000027376,0.0000027355,0.0000027253,0.0000027156, -0.0000027093,0.0000027055,0.0000027024,0.0000026989,0.0000026985, -0.0000027036,0.0000027160,0.0000027330,0.0000027454,0.0000027471, -0.0000027438,0.0000027449,0.0000027554,0.0000027643,0.0000027633, -0.0000027548,0.0000027427,0.0000027319,0.0000027237,0.0000027100, -0.0000026900,0.0000026748,0.0000026718,0.0000026717,0.0000026740, -0.0000026847,0.0000026993,0.0000027003,0.0000026947,0.0000026848, -0.0000026807,0.0000026853,0.0000026887,0.0000026900,0.0000026922, -0.0000026930,0.0000026922,0.0000026957,0.0000027027,0.0000027044, -0.0000027003,0.0000026920,0.0000026843,0.0000026810,0.0000026816, -0.0000026870,0.0000026955,0.0000027005,0.0000026995,0.0000026972, -0.0000026982,0.0000026966,0.0000026787,0.0000026521,0.0000026436, -0.0000026487,0.0000026570,0.0000026626,0.0000026692,0.0000026799, -0.0000026907,0.0000026975,0.0000027017,0.0000027052,0.0000027064, -0.0000027075,0.0000027113,0.0000027159,0.0000027166,0.0000027108, -0.0000027044,0.0000027035,0.0000027090,0.0000027162,0.0000027187, -0.0000027150,0.0000027039,0.0000026910,0.0000026814,0.0000026761, -0.0000026739,0.0000026728,0.0000026732,0.0000026760,0.0000026788, -0.0000026792,0.0000026786,0.0000026776,0.0000026757,0.0000026758, -0.0000026797,0.0000026855,0.0000026891,0.0000026890,0.0000026849, -0.0000026801,0.0000026785,0.0000026808,0.0000026853,0.0000026893, -0.0000026909,0.0000026901,0.0000026876,0.0000026840,0.0000026801, -0.0000026780,0.0000026781,0.0000026813,0.0000026862,0.0000026895, -0.0000026895,0.0000026888,0.0000026912,0.0000026975,0.0000027040, -0.0000027079,0.0000027084,0.0000027079,0.0000027054,0.0000027011, -0.0000026963,0.0000026920,0.0000026884,0.0000026857,0.0000026848, -0.0000026857,0.0000026865,0.0000026845,0.0000026811,0.0000026778, -0.0000026727,0.0000026635,0.0000026519,0.0000026407,0.0000026321, -0.0000026299,0.0000026338,0.0000026402,0.0000026457,0.0000026485, -0.0000026498,0.0000026508,0.0000026517,0.0000026527,0.0000026538, -0.0000026554,0.0000026568,0.0000026581,0.0000026619,0.0000026683, -0.0000026779,0.0000026888,0.0000026977,0.0000027033,0.0000027059, -0.0000027062,0.0000027043,0.0000027011,0.0000026977,0.0000026944, -0.0000026913,0.0000026884,0.0000026868,0.0000026880,0.0000026920, -0.0000026964,0.0000027008,0.0000027044,0.0000027068,0.0000027082, -0.0000027062,0.0000027036,0.0000027014,0.0000026997,0.0000026976, -0.0000026955,0.0000026954,0.0000026975,0.0000027021,0.0000027076, -0.0000027128,0.0000027196,0.0000027309,0.0000027453,0.0000027530, -0.0000027511,0.0000027434,0.0000027441,0.0000027530,0.0000027490, -0.0000027304,0.0000027213,0.0000027232,0.0000027297,0.0000027368, -0.0000027422,0.0000027473,0.0000027550,0.0000027749,0.0000028008, -0.0000028011,0.0000027824,0.0000027585,0.0000027461,0.0000027398, -0.0000027109,0.0000026881,0.0000027115,0.0000027390,0.0000027670, -0.0000027941,0.0000028029,0.0000027918,0.0000027582,0.0000027395, -0.0000027419,0.0000027493,0.0000027634,0.0000027831,0.0000027839, -0.0000027705,0.0000027640,0.0000027627,0.0000027558,0.0000027470, -0.0000027397,0.0000027324,0.0000027268,0.0000027219,0.0000027159, -0.0000027099,0.0000027082,0.0000027057,0.0000027027,0.0000027090, -0.0000027149,0.0000027136,0.0000027081,0.0000027108,0.0000027355, -0.0000027363,0.0000027303,0.0000027298,0.0000027178,0.0000026991, -0.0000026890,0.0000026804,0.0000026932,0.0000027168,0.0000027322, -0.0000027326,0.0000027345,0.0000027389,0.0000027400,0.0000027387, -0.0000027384,0.0000027371,0.0000027347,0.0000027313,0.0000027247, -0.0000027155,0.0000027074,0.0000027022,0.0000026976,0.0000026934, -0.0000026888,0.0000026863,0.0000026899,0.0000026977,0.0000027068, -0.0000027161,0.0000027224,0.0000027256,0.0000027251,0.0000027253, -0.0000027273,0.0000027272,0.0000027252,0.0000027247,0.0000027266, -0.0000027287,0.0000027288,0.0000027260,0.0000027244,0.0000027284, -0.0000027381,0.0000027415,0.0000027349,0.0000027299,0.0000027311, -0.0000027333,0.0000027305,0.0000027223,0.0000027160,0.0000027114, -0.0000027072,0.0000027034,0.0000027010,0.0000027006,0.0000027023, -0.0000027089,0.0000027256,0.0000027426,0.0000027472,0.0000027436, -0.0000027431,0.0000027524,0.0000027615,0.0000027605,0.0000027526, -0.0000027413,0.0000027318,0.0000027268,0.0000027176,0.0000026995, -0.0000026820,0.0000026769,0.0000026768,0.0000026765,0.0000026835, -0.0000026966,0.0000026984,0.0000026923,0.0000026848,0.0000026846, -0.0000026904,0.0000026919,0.0000026910,0.0000026914,0.0000026915, -0.0000026911,0.0000026946,0.0000027020,0.0000027056,0.0000027037, -0.0000026965,0.0000026885,0.0000026856,0.0000026858,0.0000026880, -0.0000026923,0.0000026967,0.0000026970,0.0000026948,0.0000026957, -0.0000026974,0.0000026869,0.0000026604,0.0000026427,0.0000026445, -0.0000026523,0.0000026581,0.0000026651,0.0000026770,0.0000026891, -0.0000026974,0.0000027030,0.0000027069,0.0000027087,0.0000027077, -0.0000027091,0.0000027131,0.0000027142,0.0000027098,0.0000027047, -0.0000027046,0.0000027103,0.0000027185,0.0000027231,0.0000027205, -0.0000027108,0.0000026960,0.0000026815,0.0000026719,0.0000026678, -0.0000026666,0.0000026661,0.0000026680,0.0000026730,0.0000026761, -0.0000026765,0.0000026765,0.0000026756,0.0000026746,0.0000026762, -0.0000026809,0.0000026842,0.0000026841,0.0000026826,0.0000026823, -0.0000026839,0.0000026877,0.0000026922,0.0000026954,0.0000026956, -0.0000026943,0.0000026914,0.0000026879,0.0000026839,0.0000026800, -0.0000026776,0.0000026778,0.0000026808,0.0000026862,0.0000026915, -0.0000026937,0.0000026935,0.0000026944,0.0000026983,0.0000027031, -0.0000027057,0.0000027054,0.0000027028,0.0000026986,0.0000026936, -0.0000026897,0.0000026867,0.0000026835,0.0000026801,0.0000026785, -0.0000026794,0.0000026812,0.0000026802,0.0000026768,0.0000026731, -0.0000026673,0.0000026565,0.0000026438,0.0000026340,0.0000026299, -0.0000026316,0.0000026393,0.0000026497,0.0000026580,0.0000026631, -0.0000026655,0.0000026664,0.0000026666,0.0000026659,0.0000026642, -0.0000026631,0.0000026631,0.0000026641,0.0000026656,0.0000026679, -0.0000026713,0.0000026776,0.0000026817,0.0000026841,0.0000026855, -0.0000026856,0.0000026844,0.0000026824,0.0000026810,0.0000026811, -0.0000026824,0.0000026839,0.0000026853,0.0000026873,0.0000026923, -0.0000026978,0.0000027026,0.0000027060,0.0000027078,0.0000027086, -0.0000027098,0.0000027053,0.0000027015,0.0000026985,0.0000026957, -0.0000026925,0.0000026909,0.0000026917,0.0000026953,0.0000027003, -0.0000027057,0.0000027126,0.0000027235,0.0000027360,0.0000027442, -0.0000027435,0.0000027373,0.0000027360,0.0000027443,0.0000027466, -0.0000027307,0.0000027168,0.0000027160,0.0000027218,0.0000027301, -0.0000027373,0.0000027418,0.0000027448,0.0000027477,0.0000027585, -0.0000027868,0.0000028052,0.0000027967,0.0000027755,0.0000027558, -0.0000027497,0.0000027388,0.0000027025,0.0000026919,0.0000027196, -0.0000027462,0.0000027755,0.0000027986,0.0000028028,0.0000027874, -0.0000027533,0.0000027407,0.0000027457,0.0000027522,0.0000027649, -0.0000027825,0.0000027821,0.0000027672,0.0000027636,0.0000027609, -0.0000027531,0.0000027450,0.0000027379,0.0000027306,0.0000027241, -0.0000027177,0.0000027108,0.0000027061,0.0000027046,0.0000027023, -0.0000027021,0.0000027123,0.0000027169,0.0000027146,0.0000027084, -0.0000027145,0.0000027383,0.0000027366,0.0000027301,0.0000027304, -0.0000027230,0.0000027019,0.0000026920,0.0000026794,0.0000026849, -0.0000027057,0.0000027239,0.0000027302,0.0000027295,0.0000027306, -0.0000027311,0.0000027304,0.0000027310,0.0000027313,0.0000027312, -0.0000027315,0.0000027288,0.0000027236,0.0000027175,0.0000027132, -0.0000027101,0.0000027079,0.0000027033,0.0000026986,0.0000026956, -0.0000026962,0.0000026994,0.0000027055,0.0000027138,0.0000027209, -0.0000027237,0.0000027233,0.0000027238,0.0000027233,0.0000027207, -0.0000027185,0.0000027186,0.0000027204,0.0000027218,0.0000027207, -0.0000027182,0.0000027187,0.0000027264,0.0000027389,0.0000027410, -0.0000027320,0.0000027253,0.0000027259,0.0000027269,0.0000027246, -0.0000027188,0.0000027147,0.0000027114,0.0000027079,0.0000027058, -0.0000027055,0.0000027054,0.0000027050,0.0000027103,0.0000027249, -0.0000027410,0.0000027465,0.0000027430,0.0000027421,0.0000027502, -0.0000027575,0.0000027560,0.0000027482,0.0000027384,0.0000027306, -0.0000027280,0.0000027230,0.0000027078,0.0000026892,0.0000026815, -0.0000026810,0.0000026784,0.0000026822,0.0000026935,0.0000026958, -0.0000026896,0.0000026847,0.0000026883,0.0000026939,0.0000026940, -0.0000026917,0.0000026906,0.0000026902,0.0000026906,0.0000026941, -0.0000027003,0.0000027058,0.0000027062,0.0000027015,0.0000026942, -0.0000026904,0.0000026898,0.0000026898,0.0000026905,0.0000026925, -0.0000026937,0.0000026931,0.0000026934,0.0000026963,0.0000026924, -0.0000026705,0.0000026466,0.0000026409,0.0000026471,0.0000026538, -0.0000026616,0.0000026737,0.0000026860,0.0000026946,0.0000027017, -0.0000027069,0.0000027094,0.0000027086,0.0000027079,0.0000027102, -0.0000027111,0.0000027078,0.0000027044,0.0000027051,0.0000027111, -0.0000027197,0.0000027255,0.0000027253,0.0000027177,0.0000027030, -0.0000026853,0.0000026700,0.0000026620,0.0000026604,0.0000026598, -0.0000026599,0.0000026644,0.0000026707,0.0000026732,0.0000026735, -0.0000026742,0.0000026743,0.0000026746,0.0000026775,0.0000026815, -0.0000026835,0.0000026838,0.0000026855,0.0000026896,0.0000026942, -0.0000026963,0.0000026968,0.0000026963,0.0000026941,0.0000026910, -0.0000026881,0.0000026855,0.0000026828,0.0000026798,0.0000026780, -0.0000026782,0.0000026810,0.0000026863,0.0000026926,0.0000026968, -0.0000026977,0.0000026981,0.0000027003,0.0000027035,0.0000027051, -0.0000027037,0.0000026999,0.0000026948,0.0000026897,0.0000026857, -0.0000026827,0.0000026787,0.0000026733,0.0000026695,0.0000026693, -0.0000026704,0.0000026699,0.0000026676,0.0000026650,0.0000026603, -0.0000026508,0.0000026392,0.0000026317,0.0000026303,0.0000026342, -0.0000026444,0.0000026574,0.0000026681,0.0000026750,0.0000026792, -0.0000026817,0.0000026832,0.0000026833,0.0000026816,0.0000026782, -0.0000026746,0.0000026722,0.0000026716,0.0000026732,0.0000026770, -0.0000026819,0.0000026857,0.0000026871,0.0000026869,0.0000026858, -0.0000026843,0.0000026830,0.0000026826,0.0000026845,0.0000026889, -0.0000026943,0.0000026992,0.0000027033,0.0000027077,0.0000027124, -0.0000027164,0.0000027191,0.0000027198,0.0000027179,0.0000027141, -0.0000027135,0.0000027061,0.0000027013,0.0000026978,0.0000026943, -0.0000026904,0.0000026883,0.0000026891,0.0000026930,0.0000026990, -0.0000027065,0.0000027159,0.0000027261,0.0000027334,0.0000027333, -0.0000027282,0.0000027271,0.0000027363,0.0000027425,0.0000027313, -0.0000027159,0.0000027123,0.0000027152,0.0000027220,0.0000027299, -0.0000027369,0.0000027417,0.0000027439,0.0000027439,0.0000027469, -0.0000027681,0.0000027998,0.0000028033,0.0000027890,0.0000027687, -0.0000027570,0.0000027535,0.0000027342,0.0000026958,0.0000026967, -0.0000027262,0.0000027534,0.0000027823,0.0000028010,0.0000028015, -0.0000027830,0.0000027502,0.0000027430,0.0000027488,0.0000027538, -0.0000027651,0.0000027821,0.0000027786,0.0000027647,0.0000027626, -0.0000027585,0.0000027512,0.0000027439,0.0000027369,0.0000027294, -0.0000027214,0.0000027131,0.0000027061,0.0000027030,0.0000027023, -0.0000027010,0.0000027053,0.0000027174,0.0000027191,0.0000027152, -0.0000027091,0.0000027219,0.0000027422,0.0000027367,0.0000027299, -0.0000027308,0.0000027270,0.0000027050,0.0000026931,0.0000026803, -0.0000026788,0.0000026958,0.0000027117,0.0000027247,0.0000027274, -0.0000027264,0.0000027246,0.0000027230,0.0000027237,0.0000027236, -0.0000027235,0.0000027259,0.0000027276,0.0000027259,0.0000027229, -0.0000027210,0.0000027180,0.0000027161,0.0000027129,0.0000027092, -0.0000027072,0.0000027068,0.0000027055,0.0000027052,0.0000027074, -0.0000027113,0.0000027141,0.0000027157,0.0000027160,0.0000027149, -0.0000027122,0.0000027092,0.0000027072,0.0000027072,0.0000027093, -0.0000027105,0.0000027112,0.0000027128,0.0000027166,0.0000027274, -0.0000027399,0.0000027394,0.0000027274,0.0000027194,0.0000027190, -0.0000027194,0.0000027177,0.0000027143,0.0000027122,0.0000027097, -0.0000027071,0.0000027064,0.0000027071,0.0000027079,0.0000027103, -0.0000027166,0.0000027284,0.0000027411,0.0000027454,0.0000027416, -0.0000027408,0.0000027483,0.0000027531,0.0000027503,0.0000027431, -0.0000027355,0.0000027298,0.0000027286,0.0000027264,0.0000027145, -0.0000026957,0.0000026852,0.0000026840,0.0000026797,0.0000026806, -0.0000026903,0.0000026932,0.0000026875,0.0000026847,0.0000026907, -0.0000026957,0.0000026950,0.0000026923,0.0000026905,0.0000026898, -0.0000026910,0.0000026948,0.0000026985,0.0000027028,0.0000027054, -0.0000027033,0.0000026982,0.0000026946,0.0000026937,0.0000026927, -0.0000026910,0.0000026900,0.0000026904,0.0000026918,0.0000026928, -0.0000026955,0.0000026958,0.0000026816,0.0000026549,0.0000026406, -0.0000026427,0.0000026504,0.0000026593,0.0000026714,0.0000026828, -0.0000026914,0.0000026991,0.0000027061,0.0000027094,0.0000027096, -0.0000027082,0.0000027090,0.0000027089,0.0000027058,0.0000027040, -0.0000027052,0.0000027112,0.0000027204,0.0000027275,0.0000027287, -0.0000027235,0.0000027105,0.0000026917,0.0000026722,0.0000026584, -0.0000026539,0.0000026536,0.0000026534,0.0000026553,0.0000026622, -0.0000026684,0.0000026693,0.0000026695,0.0000026713,0.0000026735, -0.0000026762,0.0000026798,0.0000026826,0.0000026846,0.0000026871, -0.0000026904,0.0000026934,0.0000026947,0.0000026943,0.0000026926, -0.0000026897,0.0000026864,0.0000026842,0.0000026837,0.0000026838, -0.0000026833,0.0000026822,0.0000026811,0.0000026814,0.0000026839, -0.0000026886,0.0000026946,0.0000026997,0.0000027018,0.0000027021, -0.0000027033,0.0000027053,0.0000027063,0.0000027046,0.0000026998, -0.0000026940,0.0000026890,0.0000026856,0.0000026824,0.0000026771, -0.0000026700,0.0000026641,0.0000026612,0.0000026606,0.0000026599, -0.0000026590,0.0000026583,0.0000026553,0.0000026475,0.0000026378, -0.0000026322,0.0000026321,0.0000026372,0.0000026479,0.0000026616, -0.0000026734,0.0000026817,0.0000026882,0.0000026933,0.0000026966, -0.0000026978,0.0000026971,0.0000026944,0.0000026903,0.0000026865, -0.0000026842,0.0000026842,0.0000026863,0.0000026899,0.0000026931, -0.0000026946,0.0000026945,0.0000026933,0.0000026917,0.0000026904, -0.0000026909,0.0000026941,0.0000027008,0.0000027084,0.0000027152, -0.0000027203,0.0000027243,0.0000027283,0.0000027319,0.0000027343, -0.0000027356,0.0000027348,0.0000027301,0.0000027223,0.0000027220, -0.0000027123,0.0000027058,0.0000027019,0.0000026987,0.0000026956, -0.0000026935,0.0000026934,0.0000026963,0.0000027032,0.0000027120, -0.0000027196,0.0000027235,0.0000027224,0.0000027192,0.0000027198, -0.0000027303,0.0000027387,0.0000027317,0.0000027166,0.0000027108, -0.0000027129,0.0000027180,0.0000027243,0.0000027303,0.0000027356, -0.0000027393,0.0000027412,0.0000027410,0.0000027418,0.0000027546, -0.0000027851,0.0000028021,0.0000027957,0.0000027798,0.0000027651, -0.0000027597,0.0000027552,0.0000027281,0.0000026929,0.0000027025, -0.0000027320,0.0000027603,0.0000027872,0.0000028009,0.0000028000, -0.0000027795,0.0000027492,0.0000027452,0.0000027503,0.0000027536, -0.0000027648,0.0000027819,0.0000027743,0.0000027622,0.0000027610, -0.0000027569,0.0000027502,0.0000027438,0.0000027370,0.0000027283, -0.0000027187,0.0000027090,0.0000027032,0.0000027018,0.0000027017, -0.0000027026,0.0000027133,0.0000027225,0.0000027210,0.0000027144, -0.0000027114,0.0000027317,0.0000027448,0.0000027363,0.0000027299, -0.0000027308,0.0000027290,0.0000027079,0.0000026930,0.0000026822, -0.0000026749,0.0000026873,0.0000027012,0.0000027142,0.0000027236, -0.0000027248,0.0000027232,0.0000027205,0.0000027200,0.0000027190, -0.0000027163,0.0000027166,0.0000027194,0.0000027211,0.0000027218, -0.0000027226,0.0000027221,0.0000027218,0.0000027188,0.0000027152, -0.0000027126,0.0000027126,0.0000027137,0.0000027139,0.0000027132, -0.0000027123,0.0000027111,0.0000027088,0.0000027090,0.0000027078, -0.0000027048,0.0000027018,0.0000026985,0.0000026958,0.0000026957, -0.0000026964,0.0000026979,0.0000027027,0.0000027102,0.0000027182, -0.0000027291,0.0000027391,0.0000027361,0.0000027220,0.0000027126, -0.0000027118,0.0000027117,0.0000027108,0.0000027100,0.0000027097, -0.0000027084,0.0000027065,0.0000027056,0.0000027060,0.0000027088, -0.0000027147,0.0000027231,0.0000027332,0.0000027424,0.0000027439, -0.0000027387,0.0000027391,0.0000027464,0.0000027489,0.0000027444, -0.0000027385,0.0000027335,0.0000027299,0.0000027292,0.0000027285, -0.0000027196,0.0000027012,0.0000026884,0.0000026866,0.0000026808, -0.0000026789,0.0000026874,0.0000026912,0.0000026865,0.0000026850, -0.0000026913,0.0000026959,0.0000026955,0.0000026932,0.0000026912, -0.0000026906,0.0000026924,0.0000026967,0.0000026987,0.0000026994, -0.0000027012,0.0000027013,0.0000026986,0.0000026968,0.0000026968, -0.0000026956,0.0000026929,0.0000026902,0.0000026890,0.0000026912, -0.0000026939,0.0000026970,0.0000026987,0.0000026926,0.0000026692, -0.0000026462,0.0000026413,0.0000026476,0.0000026580,0.0000026708, -0.0000026809,0.0000026884,0.0000026968,0.0000027044,0.0000027094, -0.0000027104,0.0000027094,0.0000027092,0.0000027080,0.0000027047, -0.0000027033,0.0000027048,0.0000027105,0.0000027200,0.0000027288, -0.0000027317,0.0000027279,0.0000027168,0.0000026994,0.0000026783, -0.0000026593,0.0000026488,0.0000026467,0.0000026468,0.0000026474, -0.0000026518,0.0000026601,0.0000026652,0.0000026651,0.0000026647, -0.0000026669,0.0000026712,0.0000026759,0.0000026793,0.0000026806, -0.0000026820,0.0000026847,0.0000026873,0.0000026885,0.0000026882, -0.0000026871,0.0000026852,0.0000026825,0.0000026797,0.0000026791, -0.0000026806,0.0000026829,0.0000026849,0.0000026861,0.0000026863, -0.0000026866,0.0000026887,0.0000026929,0.0000026982,0.0000027034, -0.0000027063,0.0000027067,0.0000027073,0.0000027086,0.0000027094, -0.0000027076,0.0000027023,0.0000026952,0.0000026889,0.0000026849, -0.0000026813,0.0000026756,0.0000026685,0.0000026625,0.0000026586, -0.0000026559,0.0000026543,0.0000026542,0.0000026550,0.0000026535, -0.0000026470,0.0000026383,0.0000026336,0.0000026339,0.0000026391, -0.0000026493,0.0000026623,0.0000026738,0.0000026823,0.0000026900, -0.0000026979,0.0000027043,0.0000027083,0.0000027097,0.0000027084, -0.0000027056,0.0000027017,0.0000026981,0.0000026965,0.0000026973, -0.0000026996,0.0000027019,0.0000027030,0.0000027026,0.0000027010, -0.0000026991,0.0000026975,0.0000026972,0.0000026994,0.0000027047, -0.0000027114,0.0000027173,0.0000027221,0.0000027272,0.0000027328, -0.0000027381,0.0000027422,0.0000027444,0.0000027449,0.0000027439, -0.0000027397,0.0000027320,0.0000027352,0.0000027276,0.0000027213, -0.0000027168,0.0000027138,0.0000027121,0.0000027118,0.0000027127, -0.0000027144,0.0000027166,0.0000027185,0.0000027190,0.0000027170, -0.0000027146,0.0000027184,0.0000027317,0.0000027400,0.0000027333, -0.0000027192,0.0000027127,0.0000027134,0.0000027179,0.0000027240, -0.0000027290,0.0000027321,0.0000027344,0.0000027357,0.0000027368, -0.0000027386,0.0000027414,0.0000027518,0.0000027735,0.0000027952, -0.0000027961,0.0000027862,0.0000027709,0.0000027652,0.0000027626, -0.0000027557,0.0000027191,0.0000026883,0.0000027088,0.0000027379, -0.0000027663,0.0000027897,0.0000027996,0.0000027983,0.0000027770, -0.0000027498,0.0000027463,0.0000027496,0.0000027519,0.0000027643, -0.0000027798,0.0000027685,0.0000027597,0.0000027595,0.0000027563, -0.0000027502,0.0000027453,0.0000027383,0.0000027275,0.0000027165, -0.0000027065,0.0000027021,0.0000027026,0.0000027036,0.0000027100, -0.0000027229,0.0000027260,0.0000027219,0.0000027129,0.0000027172, -0.0000027413,0.0000027450,0.0000027346,0.0000027298,0.0000027306, -0.0000027293,0.0000027086,0.0000026914,0.0000026831,0.0000026730, -0.0000026804,0.0000026947,0.0000027037,0.0000027151,0.0000027209, -0.0000027219,0.0000027199,0.0000027191,0.0000027181,0.0000027134, -0.0000027098,0.0000027101,0.0000027120,0.0000027140,0.0000027163, -0.0000027181,0.0000027203,0.0000027200,0.0000027190,0.0000027168, -0.0000027149,0.0000027152,0.0000027169,0.0000027186,0.0000027194, -0.0000027176,0.0000027131,0.0000027090,0.0000027066,0.0000027027, -0.0000026990,0.0000026954,0.0000026912,0.0000026887,0.0000026875, -0.0000026864,0.0000026884,0.0000026971,0.0000027107,0.0000027208, -0.0000027294,0.0000027362,0.0000027315,0.0000027162,0.0000027060, -0.0000027052,0.0000027051,0.0000027056,0.0000027072,0.0000027085, -0.0000027081,0.0000027062,0.0000027042,0.0000027044,0.0000027090, -0.0000027178,0.0000027283,0.0000027378,0.0000027434,0.0000027408, -0.0000027355,0.0000027375,0.0000027443,0.0000027445,0.0000027391, -0.0000027348,0.0000027322,0.0000027305,0.0000027297,0.0000027292, -0.0000027227,0.0000027061,0.0000026922,0.0000026889,0.0000026829, -0.0000026780,0.0000026847,0.0000026900,0.0000026865,0.0000026849, -0.0000026902,0.0000026953,0.0000026956,0.0000026946,0.0000026934, -0.0000026930,0.0000026949,0.0000026993,0.0000027013,0.0000026994, -0.0000026977,0.0000026973,0.0000026965,0.0000026968,0.0000026980, -0.0000026973,0.0000026947,0.0000026925,0.0000026909,0.0000026921, -0.0000026961,0.0000027000,0.0000027030,0.0000027017,0.0000026868, -0.0000026612,0.0000026465,0.0000026478,0.0000026578,0.0000026714, -0.0000026809,0.0000026865,0.0000026944,0.0000027020,0.0000027074, -0.0000027105,0.0000027108,0.0000027106,0.0000027088,0.0000027050, -0.0000027032,0.0000027043,0.0000027089,0.0000027183,0.0000027285, -0.0000027339,0.0000027316,0.0000027219,0.0000027060,0.0000026861, -0.0000026652,0.0000026488,0.0000026410,0.0000026397,0.0000026408, -0.0000026431,0.0000026490,0.0000026567,0.0000026610,0.0000026612, -0.0000026607,0.0000026627,0.0000026669,0.0000026706,0.0000026719, -0.0000026725,0.0000026746,0.0000026778,0.0000026807,0.0000026828, -0.0000026836,0.0000026830,0.0000026811,0.0000026781,0.0000026749, -0.0000026740,0.0000026756,0.0000026791,0.0000026834,0.0000026876, -0.0000026904,0.0000026918,0.0000026935,0.0000026972,0.0000027024, -0.0000027073,0.0000027103,0.0000027114,0.0000027120,0.0000027129, -0.0000027129,0.0000027110,0.0000027052,0.0000026971,0.0000026894, -0.0000026832,0.0000026788,0.0000026741,0.0000026686,0.0000026637, -0.0000026599,0.0000026565,0.0000026535,0.0000026525,0.0000026534, -0.0000026530,0.0000026481,0.0000026407,0.0000026361,0.0000026362, -0.0000026408,0.0000026494,0.0000026606,0.0000026711,0.0000026799, -0.0000026880,0.0000026958,0.0000027028,0.0000027090,0.0000027145, -0.0000027177,0.0000027171,0.0000027144,0.0000027104,0.0000027068, -0.0000027055,0.0000027062,0.0000027076,0.0000027081,0.0000027071, -0.0000027055,0.0000027037,0.0000027020,0.0000027014,0.0000027022, -0.0000027053,0.0000027095,0.0000027134,0.0000027173,0.0000027212, -0.0000027268,0.0000027339,0.0000027414,0.0000027468,0.0000027491, -0.0000027491,0.0000027478,0.0000027456,0.0000027417,0.0000027454, -0.0000027434,0.0000027409,0.0000027385,0.0000027369,0.0000027363, -0.0000027364,0.0000027363,0.0000027354,0.0000027336,0.0000027301, -0.0000027251,0.0000027240,0.0000027322,0.0000027442,0.0000027456, -0.0000027345,0.0000027207,0.0000027139,0.0000027144,0.0000027186, -0.0000027248,0.0000027302,0.0000027331,0.0000027342,0.0000027350, -0.0000027364,0.0000027389,0.0000027432,0.0000027491,0.0000027586, -0.0000027723,0.0000027847,0.0000027911,0.0000027863,0.0000027745, -0.0000027675,0.0000027673,0.0000027654,0.0000027530,0.0000027083, -0.0000026893,0.0000027143,0.0000027436,0.0000027708,0.0000027900, -0.0000027977,0.0000027957,0.0000027758,0.0000027515,0.0000027465, -0.0000027475,0.0000027494,0.0000027639,0.0000027761,0.0000027628, -0.0000027577,0.0000027588,0.0000027558,0.0000027508,0.0000027481, -0.0000027405,0.0000027279,0.0000027160,0.0000027068,0.0000027042, -0.0000027062,0.0000027098,0.0000027212,0.0000027297,0.0000027282, -0.0000027203,0.0000027128,0.0000027280,0.0000027471,0.0000027437, -0.0000027324,0.0000027290,0.0000027300,0.0000027287,0.0000027059, -0.0000026884,0.0000026826,0.0000026717,0.0000026750,0.0000026901, -0.0000026974,0.0000027052,0.0000027135,0.0000027177,0.0000027173, -0.0000027178,0.0000027173,0.0000027122,0.0000027072,0.0000027056, -0.0000027059,0.0000027067,0.0000027071,0.0000027074,0.0000027101, -0.0000027127,0.0000027158,0.0000027174,0.0000027162,0.0000027155, -0.0000027164,0.0000027181,0.0000027199,0.0000027214,0.0000027209, -0.0000027173,0.0000027124,0.0000027066,0.0000027001,0.0000026941, -0.0000026893,0.0000026861,0.0000026843,0.0000026826,0.0000026814, -0.0000026836,0.0000026948,0.0000027113,0.0000027214,0.0000027269, -0.0000027316,0.0000027266,0.0000027108,0.0000027003,0.0000026998, -0.0000027005,0.0000027028,0.0000027059,0.0000027074,0.0000027073, -0.0000027053,0.0000027034,0.0000027043,0.0000027098,0.0000027202, -0.0000027324,0.0000027413,0.0000027423,0.0000027363,0.0000027320, -0.0000027359,0.0000027415,0.0000027401,0.0000027349,0.0000027320, -0.0000027318,0.0000027315,0.0000027299,0.0000027292,0.0000027248, -0.0000027106,0.0000026964,0.0000026918,0.0000026861,0.0000026785, -0.0000026822,0.0000026888,0.0000026865,0.0000026836,0.0000026868, -0.0000026928,0.0000026956,0.0000026968,0.0000026971,0.0000026969, -0.0000026982,0.0000027019,0.0000027047,0.0000027029,0.0000026981, -0.0000026948,0.0000026937,0.0000026953,0.0000026980,0.0000026979, -0.0000026960,0.0000026952,0.0000026946,0.0000026950,0.0000026982, -0.0000027025,0.0000027059,0.0000027069,0.0000027019,0.0000026825, -0.0000026612,0.0000026549,0.0000026602,0.0000026729,0.0000026821, -0.0000026862,0.0000026925,0.0000026996,0.0000027043,0.0000027084, -0.0000027115,0.0000027128,0.0000027115,0.0000027073,0.0000027046, -0.0000027046,0.0000027069,0.0000027150,0.0000027264,0.0000027338, -0.0000027338,0.0000027261,0.0000027115,0.0000026935,0.0000026733, -0.0000026543,0.0000026408,0.0000026351,0.0000026348,0.0000026376, -0.0000026416,0.0000026470,0.0000026527,0.0000026566,0.0000026578, -0.0000026581,0.0000026595,0.0000026620,0.0000026636,0.0000026641, -0.0000026659,0.0000026691,0.0000026731,0.0000026771,0.0000026803, -0.0000026820,0.0000026823,0.0000026804,0.0000026760,0.0000026707, -0.0000026674,0.0000026680,0.0000026717,0.0000026776,0.0000026848, -0.0000026912,0.0000026954,0.0000026977,0.0000027006,0.0000027056, -0.0000027108,0.0000027142,0.0000027157,0.0000027165,0.0000027172, -0.0000027169,0.0000027145,0.0000027083,0.0000026993,0.0000026906, -0.0000026837,0.0000026785,0.0000026748,0.0000026716,0.0000026674, -0.0000026630,0.0000026588,0.0000026556,0.0000026541,0.0000026538, -0.0000026530,0.0000026496,0.0000026439,0.0000026396,0.0000026393, -0.0000026424,0.0000026483,0.0000026570,0.0000026675,0.0000026785, -0.0000026893,0.0000026979,0.0000027029,0.0000027062,0.0000027108, -0.0000027170,0.0000027221,0.0000027225,0.0000027207,0.0000027164, -0.0000027126,0.0000027110,0.0000027105,0.0000027098,0.0000027085, -0.0000027076,0.0000027069,0.0000027055,0.0000027039,0.0000027035, -0.0000027048,0.0000027072,0.0000027099,0.0000027124,0.0000027150, -0.0000027189,0.0000027253,0.0000027336,0.0000027420,0.0000027487, -0.0000027524,0.0000027529,0.0000027514,0.0000027489,0.0000027469, -0.0000027534,0.0000027533,0.0000027536,0.0000027541,0.0000027551, -0.0000027566,0.0000027580,0.0000027579,0.0000027534,0.0000027460, -0.0000027420,0.0000027447,0.0000027534,0.0000027565,0.0000027481, -0.0000027331,0.0000027212,0.0000027161,0.0000027163,0.0000027204, -0.0000027270,0.0000027329,0.0000027360,0.0000027376,0.0000027395, -0.0000027430,0.0000027478,0.0000027523,0.0000027567,0.0000027609, -0.0000027663,0.0000027728,0.0000027792,0.0000027829,0.0000027821, -0.0000027738,0.0000027663,0.0000027680,0.0000027690,0.0000027676, -0.0000027462,0.0000026981,0.0000026934,0.0000027194,0.0000027492, -0.0000027738,0.0000027884,0.0000027948,0.0000027932,0.0000027755, -0.0000027538,0.0000027464,0.0000027447,0.0000027469,0.0000027638, -0.0000027712,0.0000027581,0.0000027561,0.0000027583,0.0000027545, -0.0000027519,0.0000027517,0.0000027435,0.0000027300,0.0000027178, -0.0000027094,0.0000027088,0.0000027130,0.0000027203,0.0000027306, -0.0000027327,0.0000027274,0.0000027163,0.0000027170,0.0000027399, -0.0000027474,0.0000027391,0.0000027302,0.0000027278,0.0000027301, -0.0000027251,0.0000026992,0.0000026841,0.0000026808,0.0000026702, -0.0000026707,0.0000026861,0.0000026948,0.0000026985,0.0000027059, -0.0000027118,0.0000027134,0.0000027154,0.0000027154,0.0000027097, -0.0000027046,0.0000027030,0.0000027027,0.0000027023,0.0000027009, -0.0000026985,0.0000026983,0.0000027005,0.0000027050,0.0000027102, -0.0000027122,0.0000027133,0.0000027152,0.0000027169,0.0000027176, -0.0000027190,0.0000027210,0.0000027214,0.0000027196,0.0000027154, -0.0000027073,0.0000026968,0.0000026877,0.0000026833,0.0000026810, -0.0000026801,0.0000026803,0.0000026801,0.0000026826,0.0000026933, -0.0000027095,0.0000027193,0.0000027222,0.0000027257,0.0000027216, -0.0000027067,0.0000026959,0.0000026953,0.0000026978,0.0000027017, -0.0000027046,0.0000027055,0.0000027052,0.0000027036,0.0000027032, -0.0000027051,0.0000027113,0.0000027232,0.0000027359,0.0000027418, -0.0000027388,0.0000027309,0.0000027287,0.0000027346,0.0000027388, -0.0000027365,0.0000027314,0.0000027295,0.0000027318,0.0000027331, -0.0000027303,0.0000027288,0.0000027262,0.0000027149,0.0000027011, -0.0000026955,0.0000026903,0.0000026797,0.0000026801,0.0000026875, -0.0000026858,0.0000026809,0.0000026818,0.0000026886,0.0000026953, -0.0000026997,0.0000027017,0.0000027023,0.0000027029,0.0000027045, -0.0000027070,0.0000027070,0.0000027021,0.0000026959,0.0000026929, -0.0000026939,0.0000026974,0.0000026984,0.0000026973,0.0000026970, -0.0000026974,0.0000026977,0.0000026997,0.0000027028,0.0000027057, -0.0000027081,0.0000027091,0.0000027008,0.0000026825,0.0000026678, -0.0000026667,0.0000026752,0.0000026834,0.0000026870,0.0000026919, -0.0000026980,0.0000027012,0.0000027044,0.0000027096,0.0000027144, -0.0000027159,0.0000027123,0.0000027081,0.0000027053,0.0000027053, -0.0000027106,0.0000027220,0.0000027318,0.0000027340,0.0000027281, -0.0000027152,0.0000026992,0.0000026816,0.0000026633,0.0000026468, -0.0000026355,0.0000026319,0.0000026336,0.0000026379,0.0000026424, -0.0000026466,0.0000026502,0.0000026526,0.0000026533,0.0000026534, -0.0000026540,0.0000026549,0.0000026557,0.0000026574,0.0000026605, -0.0000026652,0.0000026710,0.0000026769,0.0000026824,0.0000026863, -0.0000026874,0.0000026848,0.0000026781,0.0000026700,0.0000026638, -0.0000026630,0.0000026656,0.0000026714,0.0000026793,0.0000026887, -0.0000026967,0.0000027013,0.0000027040,0.0000027081,0.0000027137, -0.0000027180,0.0000027194,0.0000027198,0.0000027201,0.0000027198, -0.0000027176,0.0000027121,0.0000027035,0.0000026943,0.0000026872, -0.0000026827,0.0000026795,0.0000026764,0.0000026723,0.0000026665, -0.0000026608,0.0000026572,0.0000026560,0.0000026555,0.0000026538, -0.0000026506,0.0000026467,0.0000026433,0.0000026430,0.0000026444, -0.0000026475,0.0000026530,0.0000026638,0.0000026799,0.0000026966, -0.0000027086,0.0000027141,0.0000027144,0.0000027130,0.0000027135, -0.0000027176,0.0000027228,0.0000027251,0.0000027244,0.0000027207, -0.0000027164,0.0000027130,0.0000027105,0.0000027092,0.0000027092, -0.0000027100,0.0000027102,0.0000027090,0.0000027075,0.0000027065, -0.0000027066,0.0000027074,0.0000027086,0.0000027102,0.0000027125, -0.0000027167,0.0000027231,0.0000027309,0.0000027393,0.0000027473, -0.0000027530,0.0000027566,0.0000027570,0.0000027557,0.0000027541, -0.0000027635,0.0000027656,0.0000027674,0.0000027688,0.0000027693, -0.0000027682,0.0000027650,0.0000027613,0.0000027606,0.0000027646, -0.0000027701,0.0000027683,0.0000027571,0.0000027418,0.0000027290, -0.0000027222,0.0000027200,0.0000027223,0.0000027271,0.0000027323, -0.0000027370,0.0000027407,0.0000027439,0.0000027471,0.0000027512, -0.0000027559,0.0000027599,0.0000027625,0.0000027634,0.0000027637, -0.0000027659,0.0000027700,0.0000027743,0.0000027757,0.0000027748, -0.0000027701,0.0000027645,0.0000027658,0.0000027692,0.0000027703, -0.0000027680,0.0000027359,0.0000026937,0.0000026983,0.0000027240, -0.0000027540,0.0000027753,0.0000027856,0.0000027909,0.0000027904, -0.0000027748,0.0000027567,0.0000027475,0.0000027431,0.0000027450, -0.0000027636,0.0000027661,0.0000027540,0.0000027552,0.0000027573, -0.0000027527,0.0000027535,0.0000027556,0.0000027473,0.0000027337, -0.0000027209,0.0000027145,0.0000027160,0.0000027223,0.0000027300, -0.0000027347,0.0000027330,0.0000027225,0.0000027147,0.0000027277, -0.0000027456,0.0000027436,0.0000027338,0.0000027287,0.0000027275, -0.0000027300,0.0000027171,0.0000026901,0.0000026805,0.0000026783, -0.0000026676,0.0000026682,0.0000026838,0.0000026939,0.0000026952, -0.0000027004,0.0000027064,0.0000027094,0.0000027121,0.0000027119, -0.0000027051,0.0000026997,0.0000026993,0.0000027001,0.0000027001, -0.0000026981,0.0000026939,0.0000026902,0.0000026906,0.0000026940, -0.0000027004,0.0000027053,0.0000027080,0.0000027114,0.0000027145, -0.0000027158,0.0000027165,0.0000027175,0.0000027189,0.0000027200, -0.0000027191,0.0000027154,0.0000027058,0.0000026921,0.0000026824, -0.0000026776,0.0000026758,0.0000026767,0.0000026791,0.0000026807, -0.0000026829,0.0000026910,0.0000027060,0.0000027154,0.0000027165, -0.0000027191,0.0000027168,0.0000027041,0.0000026927,0.0000026922, -0.0000026963,0.0000027003,0.0000027024,0.0000027029,0.0000027021, -0.0000027014,0.0000027030,0.0000027068,0.0000027141,0.0000027263, -0.0000027377,0.0000027401,0.0000027335,0.0000027257,0.0000027264, -0.0000027331,0.0000027364,0.0000027336,0.0000027283,0.0000027274, -0.0000027324,0.0000027348,0.0000027311,0.0000027286,0.0000027273, -0.0000027191,0.0000027067,0.0000027001,0.0000026952,0.0000026835, -0.0000026786,0.0000026849,0.0000026845,0.0000026773,0.0000026759, -0.0000026832,0.0000026943,0.0000027028,0.0000027067,0.0000027084, -0.0000027089,0.0000027084,0.0000027088,0.0000027090,0.0000027063, -0.0000027005,0.0000026954,0.0000026947,0.0000026978,0.0000026998, -0.0000026991,0.0000026985,0.0000026989,0.0000026995,0.0000027008, -0.0000027024,0.0000027035,0.0000027055,0.0000027089,0.0000027089, -0.0000026998,0.0000026852,0.0000026770,0.0000026788,0.0000026837, -0.0000026869,0.0000026915,0.0000026973,0.0000026993,0.0000027001, -0.0000027051,0.0000027130,0.0000027186,0.0000027185,0.0000027145, -0.0000027084,0.0000027042,0.0000027067,0.0000027161,0.0000027272, -0.0000027314,0.0000027281,0.0000027173,0.0000027032,0.0000026880, -0.0000026721,0.0000026564,0.0000026422,0.0000026330,0.0000026316, -0.0000026357,0.0000026409,0.0000026452,0.0000026482,0.0000026503, -0.0000026505,0.0000026498,0.0000026489,0.0000026489,0.0000026494, -0.0000026509,0.0000026544,0.0000026602,0.0000026677,0.0000026768, -0.0000026860,0.0000026933,0.0000026971,0.0000026970,0.0000026921, -0.0000026825,0.0000026718,0.0000026642,0.0000026623,0.0000026646, -0.0000026690,0.0000026754,0.0000026848,0.0000026958,0.0000027037, -0.0000027076,0.0000027108,0.0000027159,0.0000027209,0.0000027219, -0.0000027213,0.0000027213,0.0000027214,0.0000027199,0.0000027153, -0.0000027076,0.0000026992,0.0000026921,0.0000026879,0.0000026855, -0.0000026825,0.0000026777,0.0000026712,0.0000026640,0.0000026589, -0.0000026572,0.0000026571,0.0000026558,0.0000026528,0.0000026494, -0.0000026475,0.0000026471,0.0000026472,0.0000026475,0.0000026505, -0.0000026620,0.0000026824,0.0000027033,0.0000027175,0.0000027250, -0.0000027272,0.0000027255,0.0000027208,0.0000027173,0.0000027174, -0.0000027203,0.0000027238,0.0000027239,0.0000027208,0.0000027172, -0.0000027139,0.0000027122,0.0000027122,0.0000027129,0.0000027136, -0.0000027137,0.0000027130,0.0000027113,0.0000027101,0.0000027097, -0.0000027094,0.0000027088,0.0000027083,0.0000027093,0.0000027130, -0.0000027188,0.0000027249,0.0000027313,0.0000027383,0.0000027456, -0.0000027524,0.0000027567,0.0000027588,0.0000027613,0.0000027550, -0.0000027586,0.0000027618,0.0000027650,0.0000027688,0.0000027732, -0.0000027777,0.0000027813,0.0000027819,0.0000027766,0.0000027637, -0.0000027469,0.0000027326,0.0000027252,0.0000027237,0.0000027264, -0.0000027315,0.0000027368,0.0000027409,0.0000027439,0.0000027474, -0.0000027520,0.0000027571,0.0000027610,0.0000027628,0.0000027635, -0.0000027643,0.0000027663,0.0000027680,0.0000027673,0.0000027664, -0.0000027677,0.0000027699,0.0000027700,0.0000027673,0.0000027639, -0.0000027613,0.0000027635,0.0000027676,0.0000027700,0.0000027723, -0.0000027646,0.0000027221,0.0000026889,0.0000027045,0.0000027292, -0.0000027580,0.0000027750,0.0000027818,0.0000027866,0.0000027856, -0.0000027731,0.0000027590,0.0000027489,0.0000027418,0.0000027439, -0.0000027631,0.0000027598,0.0000027507,0.0000027553,0.0000027555, -0.0000027515,0.0000027567,0.0000027598,0.0000027516,0.0000027376, -0.0000027254,0.0000027215,0.0000027247,0.0000027304,0.0000027353, -0.0000027357,0.0000027285,0.0000027162,0.0000027193,0.0000027388, -0.0000027446,0.0000027374,0.0000027302,0.0000027285,0.0000027287, -0.0000027271,0.0000027046,0.0000026821,0.0000026784,0.0000026744, -0.0000026647,0.0000026677,0.0000026842,0.0000026932,0.0000026932, -0.0000026966,0.0000027022,0.0000027056,0.0000027086,0.0000027071, -0.0000026991,0.0000026945,0.0000026955,0.0000026986,0.0000026999, -0.0000026991,0.0000026952,0.0000026903,0.0000026891,0.0000026915, -0.0000026975,0.0000027038,0.0000027065,0.0000027088,0.0000027118, -0.0000027136,0.0000027147,0.0000027150,0.0000027160,0.0000027166, -0.0000027166,0.0000027162,0.0000027124,0.0000027012,0.0000026872, -0.0000026774,0.0000026723,0.0000026715,0.0000026742,0.0000026789, -0.0000026820,0.0000026828,0.0000026893,0.0000027030,0.0000027112, -0.0000027113,0.0000027131,0.0000027131,0.0000027025,0.0000026909, -0.0000026903,0.0000026950,0.0000026981,0.0000026998,0.0000026996, -0.0000026983,0.0000026995,0.0000027042,0.0000027095,0.0000027166, -0.0000027283,0.0000027371,0.0000027361,0.0000027273,0.0000027219, -0.0000027242,0.0000027310,0.0000027339,0.0000027309,0.0000027257, -0.0000027265,0.0000027339,0.0000027369,0.0000027322,0.0000027286, -0.0000027283,0.0000027233,0.0000027128,0.0000027049,0.0000027003, -0.0000026895,0.0000026788,0.0000026810,0.0000026824,0.0000026744, -0.0000026702,0.0000026775,0.0000026924,0.0000027054,0.0000027117, -0.0000027142,0.0000027152,0.0000027141,0.0000027120,0.0000027104, -0.0000027088,0.0000027055,0.0000027012,0.0000026994,0.0000027013, -0.0000027036,0.0000027031,0.0000027015,0.0000027015,0.0000027025, -0.0000027035,0.0000027041,0.0000027031,0.0000027022,0.0000027044, -0.0000027077,0.0000027061,0.0000026975,0.0000026870,0.0000026829, -0.0000026839,0.0000026857,0.0000026899,0.0000026963,0.0000026987, -0.0000026975,0.0000026998,0.0000027083,0.0000027186,0.0000027223, -0.0000027213,0.0000027146,0.0000027062,0.0000027047,0.0000027110, -0.0000027211,0.0000027274,0.0000027253,0.0000027170,0.0000027060, -0.0000026932,0.0000026786,0.0000026643,0.0000026510,0.0000026391, -0.0000026326,0.0000026342,0.0000026401,0.0000026457,0.0000026498, -0.0000026521,0.0000026531,0.0000026528,0.0000026514,0.0000026503, -0.0000026500,0.0000026512,0.0000026547,0.0000026613,0.0000026708, -0.0000026819,0.0000026927,0.0000027008,0.0000027051,0.0000027057, -0.0000027032,0.0000026964,0.0000026852,0.0000026731,0.0000026657, -0.0000026647,0.0000026670,0.0000026706,0.0000026748,0.0000026829, -0.0000026942,0.0000027041,0.0000027098,0.0000027131,0.0000027174, -0.0000027220,0.0000027230,0.0000027214,0.0000027204,0.0000027206, -0.0000027203,0.0000027168,0.0000027097,0.0000027018,0.0000026959, -0.0000026920,0.0000026900,0.0000026883,0.0000026849,0.0000026793, -0.0000026719,0.0000026651,0.0000026612,0.0000026596,0.0000026580, -0.0000026551,0.0000026524,0.0000026511,0.0000026513,0.0000026516, -0.0000026510,0.0000026519,0.0000026629,0.0000026847,0.0000027063, -0.0000027199,0.0000027269,0.0000027311,0.0000027328,0.0000027312, -0.0000027264,0.0000027209,0.0000027167,0.0000027155,0.0000027172, -0.0000027180,0.0000027177,0.0000027167,0.0000027170,0.0000027186, -0.0000027198,0.0000027196,0.0000027187,0.0000027175,0.0000027149, -0.0000027121,0.0000027114,0.0000027124,0.0000027129,0.0000027118, -0.0000027098,0.0000027094,0.0000027111,0.0000027142,0.0000027180, -0.0000027225,0.0000027281,0.0000027342,0.0000027401,0.0000027444, -0.0000027477,0.0000027512,0.0000027576,0.0000027636,0.0000027693, -0.0000027746,0.0000027786,0.0000027794,0.0000027769,0.0000027691, -0.0000027562,0.0000027428,0.0000027338,0.0000027297,0.0000027298, -0.0000027324,0.0000027362,0.0000027405,0.0000027447,0.0000027482, -0.0000027519,0.0000027562,0.0000027610,0.0000027657,0.0000027690, -0.0000027709,0.0000027727,0.0000027754,0.0000027782,0.0000027814, -0.0000027842,0.0000027842,0.0000027813,0.0000027776,0.0000027748, -0.0000027712,0.0000027657,0.0000027609,0.0000027591,0.0000027613, -0.0000027664,0.0000027678,0.0000027713,0.0000027745,0.0000027550, -0.0000027067,0.0000026898,0.0000027100,0.0000027345,0.0000027609, -0.0000027731,0.0000027782,0.0000027818,0.0000027795,0.0000027695, -0.0000027591,0.0000027487,0.0000027397,0.0000027447,0.0000027628, -0.0000027539,0.0000027495,0.0000027546,0.0000027524,0.0000027525, -0.0000027623,0.0000027640,0.0000027556,0.0000027415,0.0000027308, -0.0000027285,0.0000027313,0.0000027347,0.0000027367,0.0000027331, -0.0000027201,0.0000027145,0.0000027292,0.0000027417,0.0000027390, -0.0000027318,0.0000027296,0.0000027301,0.0000027293,0.0000027180, -0.0000026906,0.0000026772,0.0000026757,0.0000026696,0.0000026629, -0.0000026702,0.0000026861,0.0000026920,0.0000026912,0.0000026944, -0.0000026990,0.0000027024,0.0000027047,0.0000027010,0.0000026933, -0.0000026914,0.0000026946,0.0000027005,0.0000027057,0.0000027064, -0.0000027049,0.0000027008,0.0000026983,0.0000026983,0.0000027014, -0.0000027059,0.0000027083,0.0000027095,0.0000027111,0.0000027121, -0.0000027131,0.0000027136,0.0000027145,0.0000027140,0.0000027122, -0.0000027115,0.0000027114,0.0000027062,0.0000026939,0.0000026807, -0.0000026723,0.0000026680,0.0000026684,0.0000026730,0.0000026795, -0.0000026828,0.0000026842,0.0000026902,0.0000027017,0.0000027074, -0.0000027060,0.0000027085,0.0000027108,0.0000027016,0.0000026894, -0.0000026886,0.0000026931,0.0000026956,0.0000026963,0.0000026952, -0.0000026947,0.0000026994,0.0000027068,0.0000027118,0.0000027181, -0.0000027288,0.0000027346,0.0000027306,0.0000027216,0.0000027186, -0.0000027218,0.0000027284,0.0000027311,0.0000027281,0.0000027241, -0.0000027272,0.0000027363,0.0000027393,0.0000027332,0.0000027285, -0.0000027290,0.0000027272,0.0000027186,0.0000027094,0.0000027050, -0.0000026966,0.0000026820,0.0000026776,0.0000026790,0.0000026728, -0.0000026664,0.0000026710,0.0000026884,0.0000027063,0.0000027160, -0.0000027196,0.0000027210,0.0000027204,0.0000027175,0.0000027138, -0.0000027113,0.0000027092,0.0000027069,0.0000027058,0.0000027070, -0.0000027090,0.0000027088,0.0000027070,0.0000027063,0.0000027072, -0.0000027083,0.0000027087,0.0000027070,0.0000027035,0.0000027021, -0.0000027033,0.0000027045,0.0000027014,0.0000026929,0.0000026855, -0.0000026834,0.0000026838,0.0000026870,0.0000026940,0.0000026989, -0.0000026976,0.0000026965,0.0000027018,0.0000027145,0.0000027240, -0.0000027254,0.0000027209,0.0000027109,0.0000027063,0.0000027090, -0.0000027164,0.0000027226,0.0000027215,0.0000027141,0.0000027062, -0.0000026977,0.0000026853,0.0000026710,0.0000026582,0.0000026465, -0.0000026377,0.0000026356,0.0000026392,0.0000026452,0.0000026505, -0.0000026549,0.0000026581,0.0000026595,0.0000026593,0.0000026586, -0.0000026589,0.0000026609,0.0000026648,0.0000026709,0.0000026798, -0.0000026903,0.0000027003,0.0000027071,0.0000027100,0.0000027102, -0.0000027085,0.0000027044,0.0000026968,0.0000026852,0.0000026728, -0.0000026661,0.0000026668,0.0000026705,0.0000026748,0.0000026783, -0.0000026842,0.0000026937,0.0000027030,0.0000027092,0.0000027130, -0.0000027168,0.0000027209,0.0000027220,0.0000027203,0.0000027180, -0.0000027180,0.0000027185,0.0000027163,0.0000027100,0.0000027027, -0.0000026982,0.0000026963,0.0000026950,0.0000026937,0.0000026922, -0.0000026884,0.0000026817,0.0000026744,0.0000026691,0.0000026665, -0.0000026640,0.0000026602,0.0000026567,0.0000026553,0.0000026556, -0.0000026561,0.0000026562,0.0000026582,0.0000026677,0.0000026854, -0.0000027035,0.0000027162,0.0000027237,0.0000027283,0.0000027317, -0.0000027333,0.0000027324,0.0000027283,0.0000027216,0.0000027143, -0.0000027101,0.0000027088,0.0000027094,0.0000027114,0.0000027146, -0.0000027186,0.0000027231,0.0000027253,0.0000027252,0.0000027235, -0.0000027197,0.0000027146,0.0000027103,0.0000027093,0.0000027114, -0.0000027131,0.0000027139,0.0000027140,0.0000027147,0.0000027163, -0.0000027185,0.0000027207,0.0000027237,0.0000027283,0.0000027337, -0.0000027389,0.0000027432,0.0000027471,0.0000027518,0.0000027451, -0.0000027478,0.0000027501,0.0000027504,0.0000027482,0.0000027434, -0.0000027372,0.0000027321,0.0000027304,0.0000027322,0.0000027364, -0.0000027401,0.0000027425,0.0000027443,0.0000027469,0.0000027513, -0.0000027568,0.0000027621,0.0000027664,0.0000027694,0.0000027715, -0.0000027741,0.0000027785,0.0000027840,0.0000027888,0.0000027911, -0.0000027918,0.0000027927,0.0000027953,0.0000027966,0.0000027962, -0.0000027946,0.0000027901,0.0000027830,0.0000027730,0.0000027638, -0.0000027603,0.0000027609,0.0000027650,0.0000027666,0.0000027684, -0.0000027746,0.0000027728,0.0000027389,0.0000026940,0.0000026941, -0.0000027145,0.0000027397,0.0000027620,0.0000027700,0.0000027748, -0.0000027759,0.0000027721,0.0000027650,0.0000027564,0.0000027470, -0.0000027379,0.0000027480,0.0000027612,0.0000027497,0.0000027487, -0.0000027524,0.0000027505,0.0000027578,0.0000027684,0.0000027680, -0.0000027590,0.0000027451,0.0000027352,0.0000027326,0.0000027336, -0.0000027357,0.0000027352,0.0000027252,0.0000027140,0.0000027205, -0.0000027370,0.0000027390,0.0000027324,0.0000027297,0.0000027316, -0.0000027317,0.0000027251,0.0000027025,0.0000026801,0.0000026754, -0.0000026730,0.0000026653,0.0000026641,0.0000026751,0.0000026875, -0.0000026896,0.0000026895,0.0000026934,0.0000026967,0.0000026993, -0.0000026992,0.0000026941,0.0000026896,0.0000026914,0.0000026986, -0.0000027093,0.0000027180,0.0000027204,0.0000027179,0.0000027119, -0.0000027063,0.0000027036,0.0000027035,0.0000027051,0.0000027078, -0.0000027084,0.0000027088,0.0000027096,0.0000027105,0.0000027104, -0.0000027105,0.0000027102,0.0000027082,0.0000027067,0.0000027063, -0.0000027037,0.0000026948,0.0000026830,0.0000026736,0.0000026677, -0.0000026652,0.0000026671,0.0000026737,0.0000026809,0.0000026848, -0.0000026869,0.0000026922,0.0000027007,0.0000027030,0.0000027010, -0.0000027055,0.0000027099,0.0000027010,0.0000026877,0.0000026865, -0.0000026909,0.0000026922,0.0000026918,0.0000026909,0.0000026932, -0.0000027015,0.0000027096,0.0000027128,0.0000027185,0.0000027281, -0.0000027312,0.0000027244,0.0000027169,0.0000027156,0.0000027192, -0.0000027255,0.0000027280,0.0000027255,0.0000027234,0.0000027292, -0.0000027394,0.0000027416,0.0000027341,0.0000027284,0.0000027294, -0.0000027298,0.0000027234,0.0000027140,0.0000027090,0.0000027036, -0.0000026888,0.0000026767,0.0000026746,0.0000026712,0.0000026635, -0.0000026641,0.0000026811,0.0000027037,0.0000027185,0.0000027245, -0.0000027265,0.0000027266,0.0000027244,0.0000027204,0.0000027165, -0.0000027135,0.0000027118,0.0000027114,0.0000027124,0.0000027140, -0.0000027145,0.0000027132,0.0000027115,0.0000027115,0.0000027123, -0.0000027129,0.0000027121,0.0000027086,0.0000027047,0.0000027025, -0.0000027019,0.0000027003,0.0000026948,0.0000026871,0.0000026819, -0.0000026813,0.0000026837,0.0000026902,0.0000026975,0.0000026993, -0.0000026966,0.0000026972,0.0000027080,0.0000027219,0.0000027284, -0.0000027262,0.0000027167,0.0000027089,0.0000027097,0.0000027145, -0.0000027186,0.0000027180,0.0000027114,0.0000027047,0.0000026999, -0.0000026915,0.0000026781,0.0000026648,0.0000026534,0.0000026441, -0.0000026398,0.0000026408,0.0000026452,0.0000026502,0.0000026554, -0.0000026603,0.0000026641,0.0000026666,0.0000026683,0.0000026704, -0.0000026740,0.0000026787,0.0000026837,0.0000026896,0.0000026973, -0.0000027055,0.0000027118,0.0000027142,0.0000027131,0.0000027107, -0.0000027084,0.0000027046,0.0000026972,0.0000026854,0.0000026726, -0.0000026657,0.0000026673,0.0000026734,0.0000026791,0.0000026837, -0.0000026881,0.0000026948,0.0000027017,0.0000027068,0.0000027101, -0.0000027129,0.0000027164,0.0000027187,0.0000027172,0.0000027138, -0.0000027131,0.0000027143,0.0000027134,0.0000027084,0.0000027021, -0.0000026988,0.0000026988,0.0000026991,0.0000026985,0.0000026973, -0.0000026950,0.0000026897,0.0000026828,0.0000026779,0.0000026760, -0.0000026742,0.0000026704,0.0000026657,0.0000026629,0.0000026626, -0.0000026633,0.0000026646,0.0000026678,0.0000026745,0.0000026852, -0.0000026971,0.0000027086,0.0000027183,0.0000027240,0.0000027266, -0.0000027291,0.0000027309,0.0000027302,0.0000027263,0.0000027189, -0.0000027106,0.0000027057,0.0000027033,0.0000027035,0.0000027057, -0.0000027103,0.0000027165,0.0000027224,0.0000027260,0.0000027272, -0.0000027258,0.0000027206,0.0000027136,0.0000027074,0.0000027048, -0.0000027057,0.0000027075,0.0000027092,0.0000027114,0.0000027142, -0.0000027171,0.0000027196,0.0000027214,0.0000027238,0.0000027266, -0.0000027299,0.0000027331,0.0000027364,0.0000027396,0.0000027423, -0.0000027126,0.0000027134,0.0000027154,0.0000027182,0.0000027213, -0.0000027245,0.0000027283,0.0000027325,0.0000027368,0.0000027401, -0.0000027430,0.0000027467,0.0000027515,0.0000027570,0.0000027621, -0.0000027664,0.0000027701,0.0000027733,0.0000027756,0.0000027773, -0.0000027789,0.0000027816,0.0000027855,0.0000027893,0.0000027906, -0.0000027903,0.0000027893,0.0000027887,0.0000027898,0.0000027922, -0.0000027945,0.0000027953,0.0000027947,0.0000027907,0.0000027824, -0.0000027726,0.0000027660,0.0000027629,0.0000027624,0.0000027652, -0.0000027661,0.0000027714,0.0000027779,0.0000027629,0.0000027186, -0.0000026877,0.0000027002,0.0000027185,0.0000027439,0.0000027607, -0.0000027672,0.0000027705,0.0000027688,0.0000027641,0.0000027585, -0.0000027526,0.0000027440,0.0000027375,0.0000027528,0.0000027581, -0.0000027474,0.0000027485,0.0000027496,0.0000027513,0.0000027658, -0.0000027733,0.0000027711,0.0000027613,0.0000027466,0.0000027360, -0.0000027328,0.0000027333,0.0000027344,0.0000027287,0.0000027157, -0.0000027150,0.0000027301,0.0000027369,0.0000027331,0.0000027278, -0.0000027306,0.0000027341,0.0000027296,0.0000027130,0.0000026874, -0.0000026764,0.0000026743,0.0000026695,0.0000026648,0.0000026691, -0.0000026810,0.0000026873,0.0000026876,0.0000026894,0.0000026930, -0.0000026949,0.0000026946,0.0000026924,0.0000026888,0.0000026891, -0.0000026964,0.0000027085,0.0000027207,0.0000027272,0.0000027266, -0.0000027216,0.0000027132,0.0000027046,0.0000026994,0.0000026970, -0.0000026973,0.0000026992,0.0000027011,0.0000027020,0.0000027027, -0.0000027041,0.0000027045,0.0000027042,0.0000027038,0.0000027028, -0.0000027017,0.0000027004,0.0000026971,0.0000026902,0.0000026813, -0.0000026734,0.0000026680,0.0000026646,0.0000026645,0.0000026692, -0.0000026770,0.0000026838,0.0000026872,0.0000026894,0.0000026944, -0.0000026992,0.0000026986,0.0000026979,0.0000027051,0.0000027096, -0.0000026990,0.0000026850,0.0000026839,0.0000026878,0.0000026879, -0.0000026872,0.0000026881,0.0000026943,0.0000027050,0.0000027109, -0.0000027123,0.0000027182,0.0000027266,0.0000027263,0.0000027180, -0.0000027120,0.0000027119,0.0000027160,0.0000027222,0.0000027252, -0.0000027240,0.0000027242,0.0000027323,0.0000027429,0.0000027440, -0.0000027352,0.0000027282,0.0000027290,0.0000027308,0.0000027274, -0.0000027190,0.0000027127,0.0000027088,0.0000026977,0.0000026798, -0.0000026709,0.0000026684,0.0000026616,0.0000026582,0.0000026708, -0.0000026964,0.0000027177,0.0000027281,0.0000027324,0.0000027332, -0.0000027320,0.0000027295,0.0000027259,0.0000027215,0.0000027182, -0.0000027169,0.0000027173,0.0000027186,0.0000027193,0.0000027183, -0.0000027154,0.0000027130,0.0000027131,0.0000027137,0.0000027137, -0.0000027114,0.0000027086,0.0000027055,0.0000027029,0.0000027001, -0.0000026948,0.0000026878,0.0000026813,0.0000026792,0.0000026805, -0.0000026860,0.0000026940,0.0000026994,0.0000026992,0.0000026964, -0.0000027023,0.0000027175,0.0000027288,0.0000027303,0.0000027226, -0.0000027136,0.0000027118,0.0000027147,0.0000027169,0.0000027149, -0.0000027092,0.0000027040,0.0000027016,0.0000026971,0.0000026856, -0.0000026714,0.0000026597,0.0000026502,0.0000026450,0.0000026453, -0.0000026484,0.0000026520,0.0000026562,0.0000026618,0.0000026677, -0.0000026730,0.0000026777,0.0000026822,0.0000026866,0.0000026907, -0.0000026939,0.0000026968,0.0000027005,0.0000027063,0.0000027125, -0.0000027163,0.0000027165,0.0000027138,0.0000027106,0.0000027083, -0.0000027056,0.0000026992,0.0000026875,0.0000026743,0.0000026671, -0.0000026691,0.0000026761,0.0000026832,0.0000026887,0.0000026931, -0.0000026974,0.0000027018,0.0000027046,0.0000027055,0.0000027061, -0.0000027080,0.0000027106,0.0000027110,0.0000027087,0.0000027071, -0.0000027077,0.0000027075,0.0000027037,0.0000026985,0.0000026964, -0.0000026977,0.0000026996,0.0000026999,0.0000026989,0.0000026969, -0.0000026932,0.0000026881,0.0000026840,0.0000026832,0.0000026839, -0.0000026826,0.0000026787,0.0000026752,0.0000026741,0.0000026747, -0.0000026760,0.0000026781,0.0000026809,0.0000026846,0.0000026905, -0.0000027000,0.0000027113,0.0000027189,0.0000027206,0.0000027216, -0.0000027246,0.0000027267,0.0000027260,0.0000027219,0.0000027146, -0.0000027084,0.0000027047,0.0000027032,0.0000027035,0.0000027059, -0.0000027098,0.0000027142,0.0000027186,0.0000027224,0.0000027247, -0.0000027244,0.0000027206,0.0000027141,0.0000027072,0.0000027029, -0.0000027013,0.0000027012,0.0000027019,0.0000027035,0.0000027059, -0.0000027085,0.0000027098,0.0000027098,0.0000027092,0.0000027090, -0.0000027092,0.0000027098,0.0000027109,0.0000027118,0.0000027123, -0.0000027167,0.0000027173,0.0000027188,0.0000027212,0.0000027242, -0.0000027272,0.0000027299,0.0000027339,0.0000027405,0.0000027487, -0.0000027563,0.0000027620,0.0000027663,0.0000027695,0.0000027722, -0.0000027746,0.0000027764,0.0000027782,0.0000027787,0.0000027775, -0.0000027758,0.0000027751,0.0000027755,0.0000027773,0.0000027793, -0.0000027798,0.0000027790,0.0000027776,0.0000027770,0.0000027782, -0.0000027818,0.0000027849,0.0000027869,0.0000027866,0.0000027825, -0.0000027757,0.0000027691,0.0000027647,0.0000027608,0.0000027610, -0.0000027637,0.0000027677,0.0000027772,0.0000027751,0.0000027446, -0.0000026989,0.0000026881,0.0000027057,0.0000027226,0.0000027462, -0.0000027589,0.0000027644,0.0000027654,0.0000027615,0.0000027561, -0.0000027512,0.0000027478,0.0000027404,0.0000027386,0.0000027564, -0.0000027543,0.0000027452,0.0000027474,0.0000027471,0.0000027563, -0.0000027735,0.0000027765,0.0000027728,0.0000027610,0.0000027441, -0.0000027333,0.0000027311,0.0000027324,0.0000027291,0.0000027184, -0.0000027131,0.0000027238,0.0000027347,0.0000027330,0.0000027273, -0.0000027270,0.0000027336,0.0000027342,0.0000027216,0.0000026972, -0.0000026798,0.0000026763,0.0000026726,0.0000026675,0.0000026682, -0.0000026767,0.0000026852,0.0000026865,0.0000026879,0.0000026911, -0.0000026925,0.0000026910,0.0000026883,0.0000026868,0.0000026871, -0.0000026920,0.0000027053,0.0000027176,0.0000027244,0.0000027271, -0.0000027258,0.0000027192,0.0000027102,0.0000027007,0.0000026934, -0.0000026896,0.0000026896,0.0000026908,0.0000026933,0.0000026943, -0.0000026943,0.0000026959,0.0000026976,0.0000026975,0.0000026962, -0.0000026951,0.0000026935,0.0000026917,0.0000026891,0.0000026843, -0.0000026780,0.0000026722,0.0000026682,0.0000026659,0.0000026651, -0.0000026682,0.0000026744,0.0000026818,0.0000026864,0.0000026887, -0.0000026919,0.0000026964,0.0000026975,0.0000026958,0.0000026973, -0.0000027063,0.0000027090,0.0000026949,0.0000026817,0.0000026821, -0.0000026845,0.0000026838,0.0000026843,0.0000026883,0.0000026982, -0.0000027087,0.0000027107,0.0000027108,0.0000027172,0.0000027228, -0.0000027193,0.0000027102,0.0000027058,0.0000027064,0.0000027117, -0.0000027188,0.0000027229,0.0000027235,0.0000027263,0.0000027359, -0.0000027460,0.0000027465,0.0000027372,0.0000027286,0.0000027283, -0.0000027310,0.0000027302,0.0000027239,0.0000027165,0.0000027121, -0.0000027053,0.0000026887,0.0000026719,0.0000026653,0.0000026604, -0.0000026551,0.0000026607,0.0000026841,0.0000027116,0.0000027289, -0.0000027373,0.0000027391,0.0000027386,0.0000027379,0.0000027366, -0.0000027326,0.0000027275,0.0000027241,0.0000027230,0.0000027233, -0.0000027230,0.0000027210,0.0000027168,0.0000027123,0.0000027099, -0.0000027096,0.0000027100,0.0000027095,0.0000027086,0.0000027075, -0.0000027057,0.0000027026,0.0000026975,0.0000026902,0.0000026831, -0.0000026787,0.0000026781,0.0000026818,0.0000026892,0.0000026973, -0.0000027009,0.0000026991,0.0000026990,0.0000027118,0.0000027270, -0.0000027319,0.0000027279,0.0000027191,0.0000027156,0.0000027161, -0.0000027172,0.0000027137,0.0000027072,0.0000027040,0.0000027035, -0.0000027027,0.0000026948,0.0000026795,0.0000026654,0.0000026556, -0.0000026492,0.0000026489,0.0000026530,0.0000026574,0.0000026611, -0.0000026658,0.0000026723,0.0000026792,0.0000026850,0.0000026899, -0.0000026940,0.0000026972,0.0000026995,0.0000027012,0.0000027033, -0.0000027066,0.0000027120,0.0000027173,0.0000027200,0.0000027191, -0.0000027155,0.0000027111,0.0000027084,0.0000027063,0.0000027008, -0.0000026897,0.0000026773,0.0000026707,0.0000026732,0.0000026804, -0.0000026872,0.0000026925,0.0000026973,0.0000027009,0.0000027032, -0.0000027041,0.0000027030,0.0000027004,0.0000026987,0.0000026992, -0.0000027003,0.0000027004,0.0000027001,0.0000027003,0.0000027004, -0.0000026984,0.0000026948,0.0000026936,0.0000026952,0.0000026975, -0.0000026982,0.0000026977,0.0000026967,0.0000026943,0.0000026904, -0.0000026869,0.0000026867,0.0000026896,0.0000026920,0.0000026911, -0.0000026887,0.0000026879,0.0000026881,0.0000026876,0.0000026861, -0.0000026845,0.0000026840,0.0000026863,0.0000026936,0.0000027054, -0.0000027139,0.0000027154,0.0000027152,0.0000027179,0.0000027221, -0.0000027238,0.0000027224,0.0000027180,0.0000027128,0.0000027097, -0.0000027080,0.0000027077,0.0000027088,0.0000027110,0.0000027131, -0.0000027153,0.0000027174,0.0000027184,0.0000027195,0.0000027197, -0.0000027182,0.0000027150,0.0000027108,0.0000027074,0.0000027061, -0.0000027061,0.0000027073,0.0000027093,0.0000027121,0.0000027149, -0.0000027161,0.0000027156,0.0000027145,0.0000027139,0.0000027143, -0.0000027151,0.0000027160,0.0000027165,0.0000027166,0.0000027310, -0.0000027301,0.0000027297,0.0000027302,0.0000027326,0.0000027379, -0.0000027456,0.0000027535,0.0000027593,0.0000027622,0.0000027642, -0.0000027671,0.0000027711,0.0000027746,0.0000027767,0.0000027761, -0.0000027733,0.0000027692,0.0000027646,0.0000027612,0.0000027598, -0.0000027606,0.0000027634,0.0000027678,0.0000027717,0.0000027734, -0.0000027721,0.0000027692,0.0000027660,0.0000027645,0.0000027660, -0.0000027692,0.0000027713,0.0000027728,0.0000027723,0.0000027696, -0.0000027657,0.0000027618,0.0000027574,0.0000027559,0.0000027591, -0.0000027645,0.0000027737,0.0000027799,0.0000027637,0.0000027226, -0.0000026898,0.0000026931,0.0000027099,0.0000027269,0.0000027474, -0.0000027570,0.0000027609,0.0000027599,0.0000027545,0.0000027481, -0.0000027444,0.0000027428,0.0000027364,0.0000027418,0.0000027589, -0.0000027495,0.0000027439,0.0000027448,0.0000027462,0.0000027639, -0.0000027789,0.0000027789,0.0000027725,0.0000027570,0.0000027384, -0.0000027287,0.0000027289,0.0000027290,0.0000027198,0.0000027121, -0.0000027189,0.0000027325,0.0000027338,0.0000027277,0.0000027242, -0.0000027297,0.0000027352,0.0000027294,0.0000027080,0.0000026860, -0.0000026789,0.0000026758,0.0000026713,0.0000026696,0.0000026754, -0.0000026836,0.0000026870,0.0000026878,0.0000026910,0.0000026925, -0.0000026899,0.0000026863,0.0000026847,0.0000026854,0.0000026897, -0.0000026994,0.0000027110,0.0000027186,0.0000027232,0.0000027242, -0.0000027223,0.0000027175,0.0000027109,0.0000027027,0.0000026948, -0.0000026901,0.0000026894,0.0000026891,0.0000026889,0.0000026884, -0.0000026866,0.0000026871,0.0000026890,0.0000026903,0.0000026904, -0.0000026893,0.0000026877,0.0000026853,0.0000026830,0.0000026801, -0.0000026764,0.0000026732,0.0000026698,0.0000026685,0.0000026689, -0.0000026721,0.0000026768,0.0000026822,0.0000026858,0.0000026874, -0.0000026899,0.0000026945,0.0000026975,0.0000026962,0.0000026950, -0.0000026993,0.0000027089,0.0000027069,0.0000026896,0.0000026802, -0.0000026816,0.0000026822,0.0000026819,0.0000026844,0.0000026913, -0.0000027034,0.0000027106,0.0000027091,0.0000027096,0.0000027154, -0.0000027171,0.0000027099,0.0000027005,0.0000026979,0.0000027005, -0.0000027075,0.0000027154,0.0000027205,0.0000027232,0.0000027288, -0.0000027392,0.0000027483,0.0000027489,0.0000027402,0.0000027304, -0.0000027279,0.0000027300,0.0000027309,0.0000027275,0.0000027206, -0.0000027147,0.0000027100,0.0000026991,0.0000026796,0.0000026652, -0.0000026593,0.0000026546,0.0000026544,0.0000026702,0.0000026992, -0.0000027253,0.0000027391,0.0000027422,0.0000027416,0.0000027410, -0.0000027421,0.0000027405,0.0000027359,0.0000027315,0.0000027288, -0.0000027272,0.0000027253,0.0000027215,0.0000027159,0.0000027095, -0.0000027050,0.0000027037,0.0000027039,0.0000027042,0.0000027047, -0.0000027058,0.0000027067,0.0000027060,0.0000027021,0.0000026952, -0.0000026872,0.0000026809,0.0000026779,0.0000026785,0.0000026839, -0.0000026925,0.0000027008,0.0000027026,0.0000026991,0.0000027056, -0.0000027226,0.0000027331,0.0000027317,0.0000027246,0.0000027198, -0.0000027187,0.0000027185,0.0000027147,0.0000027067,0.0000027033, -0.0000027054,0.0000027072,0.0000027043,0.0000026911,0.0000026737, -0.0000026606,0.0000026533,0.0000026513,0.0000026557,0.0000026630, -0.0000026686,0.0000026732,0.0000026783,0.0000026840,0.0000026894, -0.0000026938,0.0000026973,0.0000027001,0.0000027024,0.0000027048, -0.0000027072,0.0000027099,0.0000027134,0.0000027188,0.0000027235, -0.0000027250,0.0000027231,0.0000027172,0.0000027106,0.0000027064, -0.0000027043,0.0000026998,0.0000026898,0.0000026780,0.0000026731, -0.0000026766,0.0000026852,0.0000026919,0.0000026963,0.0000027002, -0.0000027036,0.0000027046,0.0000027044,0.0000027026,0.0000026984, -0.0000026930,0.0000026896,0.0000026887,0.0000026893,0.0000026910, -0.0000026922,0.0000026927,0.0000026925,0.0000026912,0.0000026904, -0.0000026917,0.0000026943,0.0000026957,0.0000026957,0.0000026955, -0.0000026948,0.0000026925,0.0000026899,0.0000026893,0.0000026925, -0.0000026976,0.0000026997,0.0000026987,0.0000026975,0.0000026975, -0.0000026959,0.0000026909,0.0000026855,0.0000026834,0.0000026848, -0.0000026907,0.0000027017,0.0000027106,0.0000027119,0.0000027106, -0.0000027130,0.0000027188,0.0000027231,0.0000027234,0.0000027213, -0.0000027182,0.0000027168,0.0000027160,0.0000027157,0.0000027160, -0.0000027171,0.0000027180,0.0000027187,0.0000027191,0.0000027186, -0.0000027178,0.0000027169,0.0000027159,0.0000027147,0.0000027129, -0.0000027106,0.0000027097,0.0000027111,0.0000027145,0.0000027186, -0.0000027225,0.0000027265,0.0000027296,0.0000027308,0.0000027308, -0.0000027308,0.0000027313,0.0000027320,0.0000027327,0.0000027331, -0.0000027329,0.0000027321,0.0000027515,0.0000027544,0.0000027577, -0.0000027606,0.0000027627,0.0000027639,0.0000027648,0.0000027657, -0.0000027679,0.0000027707,0.0000027723,0.0000027723,0.0000027714, -0.0000027702,0.0000027686,0.0000027655,0.0000027607,0.0000027550, -0.0000027510,0.0000027507,0.0000027537,0.0000027573,0.0000027620, -0.0000027667,0.0000027693,0.0000027692,0.0000027645,0.0000027581, -0.0000027524,0.0000027483,0.0000027476,0.0000027496,0.0000027512, -0.0000027523,0.0000027527,0.0000027524,0.0000027521,0.0000027511, -0.0000027499,0.0000027501,0.0000027533,0.0000027603,0.0000027703, -0.0000027797,0.0000027752,0.0000027449,0.0000027019,0.0000026858, -0.0000027002,0.0000027136,0.0000027318,0.0000027478,0.0000027551, -0.0000027567,0.0000027538,0.0000027474,0.0000027410,0.0000027387, -0.0000027378,0.0000027342,0.0000027482,0.0000027576,0.0000027453, -0.0000027421,0.0000027415,0.0000027491,0.0000027714,0.0000027811, -0.0000027797,0.0000027695,0.0000027503,0.0000027314,0.0000027246, -0.0000027255,0.0000027216,0.0000027121,0.0000027142,0.0000027292, -0.0000027348,0.0000027304,0.0000027237,0.0000027252,0.0000027333, -0.0000027342,0.0000027188,0.0000026946,0.0000026826,0.0000026795, -0.0000026752,0.0000026732,0.0000026761,0.0000026831,0.0000026883, -0.0000026895,0.0000026921,0.0000026935,0.0000026916,0.0000026877, -0.0000026852,0.0000026859,0.0000026898,0.0000026964,0.0000027032, -0.0000027097,0.0000027147,0.0000027179,0.0000027190,0.0000027183, -0.0000027163,0.0000027129,0.0000027068,0.0000026995,0.0000026940, -0.0000026920,0.0000026903,0.0000026889,0.0000026870,0.0000026847, -0.0000026832,0.0000026838,0.0000026859,0.0000026889,0.0000026893, -0.0000026886,0.0000026867,0.0000026838,0.0000026811,0.0000026793, -0.0000026781,0.0000026770,0.0000026765,0.0000026767,0.0000026789, -0.0000026824,0.0000026856,0.0000026868,0.0000026865,0.0000026874, -0.0000026915,0.0000026966,0.0000026975,0.0000026954,0.0000026957, -0.0000027034,0.0000027104,0.0000027028,0.0000026854,0.0000026800, -0.0000026817,0.0000026812,0.0000026823,0.0000026864,0.0000026965, -0.0000027081,0.0000027106,0.0000027074,0.0000027086,0.0000027122, -0.0000027100,0.0000026998,0.0000026919,0.0000026918,0.0000026969, -0.0000027047,0.0000027125,0.0000027178,0.0000027228,0.0000027309, -0.0000027417,0.0000027499,0.0000027510,0.0000027439,0.0000027339, -0.0000027287,0.0000027287,0.0000027301,0.0000027289,0.0000027240, -0.0000027178,0.0000027129,0.0000027071,0.0000026915,0.0000026709, -0.0000026596,0.0000026551,0.0000026533,0.0000026597,0.0000026833, -0.0000027147,0.0000027370,0.0000027427,0.0000027415,0.0000027397, -0.0000027412,0.0000027417,0.0000027386,0.0000027351,0.0000027322, -0.0000027294,0.0000027260,0.0000027211,0.0000027150,0.0000027082, -0.0000027028,0.0000027006,0.0000027003,0.0000027006,0.0000027010, -0.0000027023,0.0000027051,0.0000027069,0.0000027059,0.0000027010, -0.0000026932,0.0000026854,0.0000026801,0.0000026777,0.0000026795, -0.0000026862,0.0000026964,0.0000027045,0.0000027021,0.0000027013, -0.0000027149,0.0000027311,0.0000027348,0.0000027291,0.0000027240, -0.0000027218,0.0000027204,0.0000027173,0.0000027088,0.0000027033, -0.0000027066,0.0000027126,0.0000027133,0.0000027047,0.0000026869, -0.0000026686,0.0000026572,0.0000026537,0.0000026570,0.0000026662, -0.0000026750,0.0000026814,0.0000026858,0.0000026893,0.0000026932, -0.0000026964,0.0000026987,0.0000027010,0.0000027040,0.0000027081, -0.0000027127,0.0000027163,0.0000027190,0.0000027216,0.0000027255, -0.0000027280,0.0000027277,0.0000027230,0.0000027147,0.0000027065, -0.0000027019,0.0000027006,0.0000026975,0.0000026885,0.0000026768, -0.0000026727,0.0000026770,0.0000026879,0.0000026962,0.0000027002, -0.0000027030,0.0000027053,0.0000027060,0.0000027048,0.0000027024, -0.0000026979,0.0000026915,0.0000026858,0.0000026818,0.0000026795, -0.0000026799,0.0000026812,0.0000026823,0.0000026833,0.0000026842, -0.0000026853,0.0000026872,0.0000026896,0.0000026917,0.0000026925, -0.0000026930,0.0000026932,0.0000026925,0.0000026910,0.0000026905, -0.0000026930,0.0000026981,0.0000027029,0.0000027041,0.0000027021, -0.0000027003,0.0000026983,0.0000026927,0.0000026852,0.0000026821, -0.0000026842,0.0000026909,0.0000027010,0.0000027096,0.0000027106, -0.0000027079,0.0000027100,0.0000027171,0.0000027240,0.0000027270, -0.0000027265,0.0000027254,0.0000027261,0.0000027274,0.0000027276, -0.0000027276,0.0000027275,0.0000027279,0.0000027287,0.0000027293, -0.0000027285,0.0000027257,0.0000027222,0.0000027196,0.0000027170, -0.0000027143,0.0000027118,0.0000027093,0.0000027083,0.0000027106, -0.0000027162,0.0000027225,0.0000027278,0.0000027319,0.0000027352, -0.0000027368,0.0000027379,0.0000027394,0.0000027409,0.0000027423, -0.0000027439,0.0000027457,0.0000027473,0.0000027491,0.0000027816, -0.0000027811,0.0000027794,0.0000027774,0.0000027762,0.0000027766, -0.0000027785,0.0000027803,0.0000027795,0.0000027746,0.0000027683, -0.0000027641,0.0000027629,0.0000027628,0.0000027620,0.0000027585, -0.0000027529,0.0000027481,0.0000027467,0.0000027492,0.0000027534, -0.0000027572,0.0000027606,0.0000027633,0.0000027631,0.0000027585, -0.0000027517,0.0000027439,0.0000027382,0.0000027340,0.0000027313, -0.0000027307,0.0000027310,0.0000027308,0.0000027309,0.0000027318, -0.0000027344,0.0000027370,0.0000027393,0.0000027429,0.0000027481, -0.0000027551,0.0000027674,0.0000027797,0.0000027817,0.0000027628, -0.0000027231,0.0000026904,0.0000026913,0.0000027062,0.0000027196, -0.0000027361,0.0000027477,0.0000027518,0.0000027512,0.0000027466, -0.0000027400,0.0000027349,0.0000027343,0.0000027331,0.0000027352, -0.0000027547,0.0000027540,0.0000027418,0.0000027391,0.0000027392, -0.0000027552,0.0000027769,0.0000027819,0.0000027783,0.0000027637, -0.0000027419,0.0000027245,0.0000027201,0.0000027194,0.0000027129, -0.0000027118,0.0000027245,0.0000027355,0.0000027336,0.0000027269, -0.0000027228,0.0000027291,0.0000027338,0.0000027266,0.0000027049, -0.0000026873,0.0000026837,0.0000026810,0.0000026776,0.0000026777, -0.0000026834,0.0000026894,0.0000026924,0.0000026943,0.0000026961, -0.0000026947,0.0000026924,0.0000026900,0.0000026899,0.0000026925, -0.0000026964,0.0000026991,0.0000027017,0.0000027043,0.0000027069, -0.0000027094,0.0000027124,0.0000027141,0.0000027143,0.0000027131, -0.0000027094,0.0000027042,0.0000026997,0.0000026975,0.0000026957, -0.0000026939,0.0000026915,0.0000026896,0.0000026870,0.0000026852, -0.0000026858,0.0000026889,0.0000026917,0.0000026926,0.0000026930, -0.0000026925,0.0000026909,0.0000026903,0.0000026911,0.0000026910, -0.0000026896,0.0000026880,0.0000026878,0.0000026888,0.0000026894, -0.0000026884,0.0000026860,0.0000026849,0.0000026881,0.0000026943, -0.0000026980,0.0000026969,0.0000026954,0.0000026988,0.0000027076, -0.0000027102,0.0000026980,0.0000026831,0.0000026808,0.0000026816, -0.0000026815,0.0000026836,0.0000026904,0.0000027028,0.0000027104, -0.0000027090,0.0000027063,0.0000027080,0.0000027091,0.0000027030, -0.0000026928,0.0000026883,0.0000026904,0.0000026964,0.0000027037, -0.0000027101,0.0000027152,0.0000027219,0.0000027321,0.0000027433, -0.0000027510,0.0000027523,0.0000027469,0.0000027382,0.0000027313, -0.0000027284,0.0000027282,0.0000027281,0.0000027258,0.0000027213, -0.0000027161,0.0000027119,0.0000027026,0.0000026822,0.0000026632, -0.0000026559,0.0000026545,0.0000026553,0.0000026691,0.0000026990, -0.0000027292,0.0000027423,0.0000027404,0.0000027364,0.0000027374, -0.0000027394,0.0000027382,0.0000027355,0.0000027331,0.0000027304, -0.0000027267,0.0000027216,0.0000027157,0.0000027094,0.0000027036, -0.0000027005,0.0000026995,0.0000026993,0.0000026994,0.0000026998, -0.0000027023,0.0000027059,0.0000027068,0.0000027043,0.0000026987, -0.0000026907,0.0000026835,0.0000026787,0.0000026774,0.0000026801, -0.0000026891,0.0000027019,0.0000027061,0.0000027014,0.0000027066, -0.0000027238,0.0000027353,0.0000027331,0.0000027275,0.0000027241, -0.0000027218,0.0000027199,0.0000027127,0.0000027045,0.0000027062, -0.0000027154,0.0000027199,0.0000027175,0.0000027043,0.0000026833, -0.0000026642,0.0000026559,0.0000026580,0.0000026679,0.0000026794, -0.0000026878,0.0000026930,0.0000026954,0.0000026968,0.0000026989, -0.0000027013,0.0000027039,0.0000027073,0.0000027114,0.0000027153, -0.0000027186,0.0000027209,0.0000027231,0.0000027256,0.0000027280, -0.0000027282,0.0000027252,0.0000027184,0.0000027096,0.0000027024, -0.0000026996,0.0000026996,0.0000026980,0.0000026896,0.0000026774, -0.0000026721,0.0000026763,0.0000026884,0.0000026983,0.0000027030, -0.0000027053,0.0000027073,0.0000027079,0.0000027064,0.0000027024, -0.0000026977,0.0000026917,0.0000026855,0.0000026801,0.0000026761, -0.0000026740,0.0000026730,0.0000026724,0.0000026730,0.0000026744, -0.0000026760,0.0000026778,0.0000026799,0.0000026824,0.0000026842, -0.0000026854,0.0000026861,0.0000026860,0.0000026853,0.0000026855, -0.0000026880,0.0000026929,0.0000026987,0.0000027023,0.0000027025, -0.0000027005,0.0000026974,0.0000026925,0.0000026859,0.0000026827, -0.0000026842,0.0000026913,0.0000027019,0.0000027115,0.0000027128, -0.0000027092,0.0000027095,0.0000027169,0.0000027262,0.0000027319, -0.0000027336,0.0000027338,0.0000027354,0.0000027391,0.0000027413, -0.0000027415,0.0000027409,0.0000027407,0.0000027416,0.0000027430, -0.0000027431,0.0000027413,0.0000027379,0.0000027338,0.0000027304, -0.0000027267,0.0000027224,0.0000027182,0.0000027151,0.0000027137, -0.0000027162,0.0000027221,0.0000027284,0.0000027337,0.0000027380, -0.0000027416,0.0000027453,0.0000027496,0.0000027550,0.0000027605, -0.0000027661,0.0000027713,0.0000027758,0.0000027792,0.0000027811, -0.0000027961,0.0000027973,0.0000027982,0.0000027984,0.0000027974, -0.0000027939,0.0000027872,0.0000027784,0.0000027693,0.0000027631, -0.0000027607,0.0000027604,0.0000027605,0.0000027596,0.0000027569, -0.0000027516,0.0000027460,0.0000027434,0.0000027447,0.0000027481, -0.0000027505,0.0000027513,0.0000027524,0.0000027533,0.0000027522, -0.0000027481,0.0000027419,0.0000027364,0.0000027322,0.0000027287, -0.0000027249,0.0000027217,0.0000027197,0.0000027181,0.0000027173, -0.0000027193,0.0000027230,0.0000027269,0.0000027313,0.0000027369, -0.0000027439,0.0000027521,0.0000027640,0.0000027779,0.0000027835, -0.0000027744,0.0000027436,0.0000027055,0.0000026900,0.0000026995, -0.0000027123,0.0000027260,0.0000027388,0.0000027459,0.0000027469, -0.0000027439,0.0000027380,0.0000027324,0.0000027299,0.0000027310, -0.0000027301,0.0000027399,0.0000027579,0.0000027482,0.0000027390, -0.0000027361,0.0000027402,0.0000027628,0.0000027800,0.0000027817, -0.0000027741,0.0000027560,0.0000027333,0.0000027182,0.0000027141, -0.0000027112,0.0000027095,0.0000027203,0.0000027349,0.0000027365, -0.0000027310,0.0000027244,0.0000027262,0.0000027325,0.0000027305, -0.0000027144,0.0000026944,0.0000026869,0.0000026865,0.0000026836, -0.0000026814,0.0000026841,0.0000026900,0.0000026942,0.0000026972, -0.0000026990,0.0000026993,0.0000026993,0.0000026996,0.0000026989, -0.0000026994,0.0000027001,0.0000026991,0.0000026979,0.0000026980, -0.0000026973,0.0000026971,0.0000027011,0.0000027075,0.0000027124, -0.0000027144,0.0000027156,0.0000027148,0.0000027133,0.0000027132, -0.0000027139,0.0000027126,0.0000027097,0.0000027058,0.0000027022, -0.0000026981,0.0000026932,0.0000026916,0.0000026927,0.0000026952, -0.0000026973,0.0000027010,0.0000027050,0.0000027063,0.0000027061, -0.0000027066,0.0000027060,0.0000027027,0.0000026985,0.0000026959, -0.0000026942,0.0000026917,0.0000026892,0.0000026851,0.0000026824, -0.0000026849,0.0000026920,0.0000026978,0.0000026984,0.0000026962, -0.0000026966,0.0000027031,0.0000027108,0.0000027086,0.0000026941, -0.0000026824,0.0000026813,0.0000026815,0.0000026822,0.0000026862, -0.0000026967,0.0000027083,0.0000027107,0.0000027074,0.0000027065, -0.0000027084,0.0000027070,0.0000026988,0.0000026904,0.0000026884, -0.0000026920,0.0000026980,0.0000027043,0.0000027092,0.0000027136, -0.0000027210,0.0000027324,0.0000027441,0.0000027513,0.0000027525, -0.0000027488,0.0000027417,0.0000027348,0.0000027294,0.0000027267, -0.0000027262,0.0000027257,0.0000027241,0.0000027201,0.0000027155, -0.0000027099,0.0000026950,0.0000026723,0.0000026584,0.0000026563, -0.0000026560,0.0000026605,0.0000026821,0.0000027156,0.0000027374, -0.0000027388,0.0000027338,0.0000027341,0.0000027373,0.0000027374, -0.0000027354,0.0000027334,0.0000027308,0.0000027269,0.0000027221, -0.0000027163,0.0000027103,0.0000027042,0.0000026999,0.0000026983, -0.0000026979,0.0000026980,0.0000026984,0.0000026999,0.0000027031, -0.0000027059,0.0000027054,0.0000027011,0.0000026943,0.0000026865, -0.0000026801,0.0000026760,0.0000026755,0.0000026811,0.0000026941, -0.0000027061,0.0000027051,0.0000027019,0.0000027129,0.0000027305, -0.0000027350,0.0000027306,0.0000027262,0.0000027225,0.0000027207, -0.0000027167,0.0000027081,0.0000027054,0.0000027141,0.0000027235, -0.0000027254,0.0000027200,0.0000027031,0.0000026799,0.0000026614, -0.0000026589,0.0000026677,0.0000026816,0.0000026922,0.0000026986, -0.0000027011,0.0000027010,0.0000027017,0.0000027054,0.0000027094, -0.0000027116,0.0000027129,0.0000027147,0.0000027168,0.0000027185, -0.0000027194,0.0000027212,0.0000027247,0.0000027268,0.0000027262, -0.0000027222,0.0000027153,0.0000027079,0.0000027025,0.0000027011, -0.0000027019,0.0000027014,0.0000026943,0.0000026819,0.0000026741, -0.0000026779,0.0000026899,0.0000026999,0.0000027043,0.0000027067, -0.0000027090,0.0000027101,0.0000027091,0.0000027046,0.0000026980, -0.0000026913,0.0000026854,0.0000026808,0.0000026781,0.0000026758, -0.0000026735,0.0000026721,0.0000026715,0.0000026717,0.0000026722, -0.0000026723,0.0000026719,0.0000026722,0.0000026737,0.0000026750, -0.0000026756,0.0000026758,0.0000026758,0.0000026761,0.0000026785, -0.0000026838,0.0000026905,0.0000026962,0.0000026996,0.0000027004, -0.0000026989,0.0000026946,0.0000026886,0.0000026853,0.0000026865, -0.0000026922,0.0000027026,0.0000027151,0.0000027188,0.0000027138, -0.0000027121,0.0000027184,0.0000027276,0.0000027349,0.0000027389, -0.0000027406,0.0000027427,0.0000027469,0.0000027508,0.0000027522, -0.0000027524,0.0000027526,0.0000027531,0.0000027536,0.0000027533, -0.0000027520,0.0000027497,0.0000027465,0.0000027425,0.0000027392, -0.0000027358,0.0000027318,0.0000027276,0.0000027243,0.0000027233, -0.0000027273,0.0000027342,0.0000027422,0.0000027494,0.0000027552, -0.0000027595,0.0000027639,0.0000027684,0.0000027726,0.0000027768, -0.0000027813,0.0000027857,0.0000027894,0.0000027923,0.0000027944, -0.0000028119,0.0000028108,0.0000028080,0.0000028033,0.0000027959, -0.0000027855,0.0000027744,0.0000027668,0.0000027637,0.0000027627, -0.0000027606,0.0000027573,0.0000027547,0.0000027533,0.0000027499, -0.0000027436,0.0000027390,0.0000027388,0.0000027417,0.0000027441, -0.0000027437,0.0000027426,0.0000027444,0.0000027473,0.0000027485, -0.0000027468,0.0000027420,0.0000027367,0.0000027322,0.0000027282, -0.0000027240,0.0000027200,0.0000027174,0.0000027161,0.0000027161, -0.0000027182,0.0000027215,0.0000027249,0.0000027283,0.0000027333, -0.0000027409,0.0000027507,0.0000027634,0.0000027777,0.0000027851, -0.0000027815,0.0000027597,0.0000027236,0.0000026966,0.0000026958, -0.0000027073,0.0000027180,0.0000027311,0.0000027397,0.0000027424, -0.0000027404,0.0000027347,0.0000027292,0.0000027264,0.0000027276, -0.0000027285,0.0000027298,0.0000027482,0.0000027568,0.0000027431, -0.0000027358,0.0000027333,0.0000027450,0.0000027699,0.0000027806, -0.0000027796,0.0000027683,0.0000027478,0.0000027256,0.0000027116, -0.0000027065,0.0000027059,0.0000027154,0.0000027327,0.0000027384, -0.0000027344,0.0000027278,0.0000027254,0.0000027308,0.0000027312, -0.0000027209,0.0000027019,0.0000026904,0.0000026891,0.0000026895, -0.0000026857,0.0000026858,0.0000026909,0.0000026947,0.0000026972, -0.0000027009,0.0000027034,0.0000027058,0.0000027089,0.0000027100, -0.0000027088,0.0000027075,0.0000027049,0.0000027002,0.0000026964, -0.0000026936,0.0000026903,0.0000026896,0.0000026966,0.0000027061, -0.0000027143,0.0000027207,0.0000027261,0.0000027293,0.0000027316, -0.0000027345,0.0000027367,0.0000027354,0.0000027312,0.0000027260, -0.0000027203,0.0000027142,0.0000027086,0.0000027051,0.0000027043, -0.0000027054,0.0000027072,0.0000027112,0.0000027171,0.0000027204, -0.0000027200,0.0000027181,0.0000027152,0.0000027105,0.0000027053, -0.0000027006,0.0000026970,0.0000026931,0.0000026881,0.0000026823, -0.0000026791,0.0000026818,0.0000026900,0.0000026979,0.0000026995, -0.0000026973,0.0000026966,0.0000027005,0.0000027083,0.0000027132, -0.0000027073,0.0000026921,0.0000026822,0.0000026812,0.0000026818, -0.0000026837,0.0000026910,0.0000027038,0.0000027106,0.0000027092, -0.0000027075,0.0000027085,0.0000027099,0.0000027069,0.0000026980, -0.0000026911,0.0000026912,0.0000026954,0.0000027005,0.0000027054, -0.0000027093,0.0000027131,0.0000027204,0.0000027318,0.0000027436, -0.0000027508,0.0000027524,0.0000027497,0.0000027439,0.0000027377, -0.0000027315,0.0000027263,0.0000027240,0.0000027240,0.0000027246, -0.0000027238,0.0000027194,0.0000027141,0.0000027048,0.0000026847, -0.0000026647,0.0000026582,0.0000026577,0.0000026577,0.0000026687, -0.0000026989,0.0000027278,0.0000027354,0.0000027326,0.0000027322, -0.0000027362,0.0000027370,0.0000027352,0.0000027331,0.0000027300, -0.0000027253,0.0000027201,0.0000027146,0.0000027090,0.0000027032, -0.0000026989,0.0000026968,0.0000026962,0.0000026966,0.0000026975, -0.0000026987,0.0000027008,0.0000027037,0.0000027048,0.0000027026, -0.0000026967,0.0000026889,0.0000026816,0.0000026760,0.0000026734, -0.0000026748,0.0000026836,0.0000027000,0.0000027087,0.0000027038, -0.0000027030,0.0000027192,0.0000027328,0.0000027323,0.0000027283, -0.0000027230,0.0000027198,0.0000027183,0.0000027123,0.0000027072, -0.0000027116,0.0000027221,0.0000027292,0.0000027297,0.0000027207, -0.0000027012,0.0000026763,0.0000026614,0.0000026652,0.0000026802, -0.0000026933,0.0000027009,0.0000027049,0.0000027051,0.0000027051, -0.0000027083,0.0000027138,0.0000027175,0.0000027184,0.0000027181, -0.0000027173,0.0000027168,0.0000027165,0.0000027168,0.0000027190, -0.0000027224,0.0000027252,0.0000027258,0.0000027231,0.0000027172, -0.0000027103,0.0000027051,0.0000027036,0.0000027049,0.0000027053, -0.0000026996,0.0000026884,0.0000026804,0.0000026834,0.0000026952, -0.0000027048,0.0000027075,0.0000027082,0.0000027102,0.0000027120, -0.0000027117,0.0000027079,0.0000027010,0.0000026935,0.0000026876, -0.0000026840,0.0000026829,0.0000026826,0.0000026809,0.0000026782, -0.0000026767,0.0000026758,0.0000026754,0.0000026744,0.0000026730, -0.0000026717,0.0000026710,0.0000026707,0.0000026703,0.0000026702, -0.0000026704,0.0000026710,0.0000026730,0.0000026778,0.0000026848, -0.0000026918,0.0000026972,0.0000027008,0.0000027020,0.0000026994, -0.0000026942,0.0000026909,0.0000026914,0.0000026948,0.0000027031, -0.0000027162,0.0000027235,0.0000027210,0.0000027194,0.0000027238, -0.0000027299,0.0000027353,0.0000027395,0.0000027424,0.0000027450, -0.0000027490,0.0000027542,0.0000027572,0.0000027588,0.0000027600, -0.0000027604,0.0000027603,0.0000027608,0.0000027612,0.0000027606, -0.0000027588,0.0000027560,0.0000027529,0.0000027507,0.0000027483, -0.0000027452,0.0000027418,0.0000027401,0.0000027414,0.0000027462, -0.0000027520,0.0000027570,0.0000027605,0.0000027633,0.0000027664, -0.0000027713,0.0000027782,0.0000027853,0.0000027922,0.0000027987, -0.0000028044,0.0000028087,0.0000028111,0.0000028120,0.0000028017, -0.0000027975,0.0000027927,0.0000027872,0.0000027819,0.0000027763, -0.0000027723,0.0000027709,0.0000027700,0.0000027650,0.0000027565, -0.0000027494,0.0000027473,0.0000027464,0.0000027419,0.0000027350, -0.0000027321,0.0000027336,0.0000027373,0.0000027395,0.0000027402, -0.0000027416,0.0000027455,0.0000027497,0.0000027516,0.0000027505, -0.0000027453,0.0000027384,0.0000027333,0.0000027293,0.0000027252, -0.0000027209,0.0000027180,0.0000027182,0.0000027212,0.0000027249, -0.0000027279,0.0000027296,0.0000027306,0.0000027333,0.0000027399, -0.0000027505,0.0000027647,0.0000027792,0.0000027866,0.0000027854, -0.0000027709,0.0000027403,0.0000027102,0.0000026991,0.0000027033, -0.0000027122,0.0000027228,0.0000027337,0.0000027379,0.0000027370, -0.0000027320,0.0000027260,0.0000027230,0.0000027237,0.0000027270, -0.0000027271,0.0000027345,0.0000027545,0.0000027517,0.0000027391, -0.0000027317,0.0000027322,0.0000027525,0.0000027750,0.0000027801, -0.0000027763,0.0000027620,0.0000027402,0.0000027182,0.0000027038, -0.0000027008,0.0000027088,0.0000027285,0.0000027402,0.0000027375, -0.0000027309,0.0000027267,0.0000027295,0.0000027324,0.0000027248, -0.0000027083,0.0000026940,0.0000026915,0.0000026927,0.0000026920, -0.0000026884,0.0000026909,0.0000026947,0.0000026962,0.0000026990, -0.0000027037,0.0000027101,0.0000027165,0.0000027198,0.0000027191, -0.0000027159,0.0000027118,0.0000027062,0.0000026985,0.0000026914, -0.0000026869,0.0000026860,0.0000026884,0.0000026971,0.0000027111, -0.0000027248,0.0000027360,0.0000027443,0.0000027482,0.0000027504, -0.0000027524,0.0000027538,0.0000027524,0.0000027483,0.0000027429, -0.0000027370,0.0000027306,0.0000027247,0.0000027199,0.0000027175, -0.0000027169,0.0000027176,0.0000027203,0.0000027243,0.0000027268, -0.0000027262,0.0000027231,0.0000027183,0.0000027131,0.0000027080, -0.0000027028,0.0000026978,0.0000026919,0.0000026851,0.0000026780, -0.0000026747,0.0000026780,0.0000026879,0.0000026973,0.0000026997, -0.0000026982,0.0000026972,0.0000027004,0.0000027067,0.0000027145, -0.0000027168,0.0000027073,0.0000026915,0.0000026819,0.0000026814, -0.0000026829,0.0000026868,0.0000026977,0.0000027084,0.0000027099, -0.0000027084,0.0000027095,0.0000027125,0.0000027135,0.0000027086, -0.0000026997,0.0000026941,0.0000026943,0.0000026975,0.0000027018, -0.0000027057,0.0000027088,0.0000027125,0.0000027194,0.0000027302, -0.0000027419,0.0000027498,0.0000027521,0.0000027506,0.0000027457, -0.0000027403,0.0000027343,0.0000027275,0.0000027226,0.0000027214, -0.0000027233,0.0000027251,0.0000027230,0.0000027174,0.0000027104, -0.0000026965,0.0000026754,0.0000026620,0.0000026591,0.0000026581, -0.0000026614,0.0000026829,0.0000027147,0.0000027309,0.0000027312, -0.0000027307,0.0000027347,0.0000027355,0.0000027329,0.0000027299, -0.0000027266,0.0000027218,0.0000027167,0.0000027123,0.0000027080, -0.0000027035,0.0000026996,0.0000026978,0.0000026972,0.0000026975, -0.0000026981,0.0000026984,0.0000026994,0.0000027017,0.0000027037, -0.0000027034,0.0000026998,0.0000026932,0.0000026854,0.0000026785, -0.0000026731,0.0000026715,0.0000026745,0.0000026880,0.0000027063, -0.0000027104,0.0000027026,0.0000027063,0.0000027235,0.0000027318, -0.0000027293,0.0000027246,0.0000027186,0.0000027173,0.0000027152, -0.0000027097,0.0000027105,0.0000027189,0.0000027280,0.0000027327, -0.0000027313,0.0000027204,0.0000026985,0.0000026735,0.0000026645, -0.0000026748,0.0000026914,0.0000027003,0.0000027045,0.0000027063, -0.0000027068,0.0000027093,0.0000027150,0.0000027205,0.0000027236, -0.0000027240,0.0000027225,0.0000027203,0.0000027181,0.0000027171, -0.0000027176,0.0000027197,0.0000027228,0.0000027259,0.0000027276, -0.0000027267,0.0000027220,0.0000027150,0.0000027089,0.0000027065, -0.0000027075,0.0000027081,0.0000027033,0.0000026937,0.0000026864, -0.0000026898,0.0000027027,0.0000027133,0.0000027150,0.0000027137, -0.0000027130,0.0000027137,0.0000027137,0.0000027114,0.0000027064, -0.0000027003,0.0000026955,0.0000026925,0.0000026912,0.0000026909, -0.0000026894,0.0000026869,0.0000026842,0.0000026827,0.0000026817, -0.0000026807,0.0000026792,0.0000026775,0.0000026758,0.0000026735, -0.0000026710,0.0000026694,0.0000026687,0.0000026694,0.0000026714, -0.0000026759,0.0000026821,0.0000026888,0.0000026949,0.0000027006, -0.0000027043,0.0000027044,0.0000027011,0.0000026982,0.0000026986, -0.0000027006,0.0000027060,0.0000027180,0.0000027271,0.0000027271, -0.0000027276,0.0000027325,0.0000027358,0.0000027365,0.0000027378, -0.0000027403,0.0000027429,0.0000027467,0.0000027524,0.0000027578, -0.0000027611,0.0000027631,0.0000027651,0.0000027676,0.0000027706, -0.0000027724,0.0000027718,0.0000027693,0.0000027666,0.0000027645, -0.0000027629,0.0000027618,0.0000027605,0.0000027579,0.0000027546, -0.0000027519,0.0000027512,0.0000027521,0.0000027550,0.0000027605, -0.0000027691,0.0000027793,0.0000027877,0.0000027933,0.0000027982, -0.0000028018,0.0000028043,0.0000028063,0.0000028074,0.0000028081, -0.0000028075,0.0000028052,0.0000027848,0.0000027830,0.0000027826, -0.0000027826,0.0000027828,0.0000027833,0.0000027838,0.0000027824, -0.0000027754,0.0000027635,0.0000027507,0.0000027432,0.0000027411, -0.0000027387,0.0000027330,0.0000027270,0.0000027255,0.0000027285, -0.0000027340,0.0000027390,0.0000027431,0.0000027476,0.0000027523, -0.0000027557,0.0000027569,0.0000027559,0.0000027514,0.0000027449, -0.0000027405,0.0000027372,0.0000027328,0.0000027277,0.0000027242, -0.0000027250,0.0000027300,0.0000027358,0.0000027392,0.0000027396, -0.0000027384,0.0000027377,0.0000027415,0.0000027516,0.0000027669, -0.0000027818,0.0000027879,0.0000027872,0.0000027779,0.0000027529, -0.0000027226,0.0000027037,0.0000027025,0.0000027095,0.0000027160, -0.0000027252,0.0000027321,0.0000027327,0.0000027294,0.0000027242, -0.0000027204,0.0000027199,0.0000027242,0.0000027270,0.0000027280, -0.0000027433,0.0000027563,0.0000027454,0.0000027352,0.0000027277, -0.0000027356,0.0000027612,0.0000027786,0.0000027799,0.0000027721, -0.0000027556,0.0000027324,0.0000027096,0.0000026982,0.0000027016, -0.0000027212,0.0000027402,0.0000027419,0.0000027341,0.0000027275, -0.0000027287,0.0000027325,0.0000027293,0.0000027136,0.0000026968, -0.0000026916,0.0000026944,0.0000026966,0.0000026946,0.0000026926, -0.0000026942,0.0000026948,0.0000026964,0.0000027004,0.0000027083, -0.0000027204,0.0000027287,0.0000027298,0.0000027263,0.0000027201, -0.0000027122,0.0000027025,0.0000026914,0.0000026839,0.0000026836, -0.0000026867,0.0000026949,0.0000027081,0.0000027258,0.0000027427, -0.0000027535,0.0000027585,0.0000027596,0.0000027588,0.0000027584, -0.0000027585,0.0000027571,0.0000027537,0.0000027488,0.0000027441, -0.0000027382,0.0000027315,0.0000027257,0.0000027213,0.0000027194, -0.0000027191,0.0000027209,0.0000027238,0.0000027256,0.0000027250, -0.0000027223,0.0000027182,0.0000027131,0.0000027077,0.0000027019, -0.0000026956,0.0000026878,0.0000026797,0.0000026728,0.0000026705, -0.0000026747,0.0000026847,0.0000026949,0.0000026984,0.0000026978, -0.0000026978,0.0000027018,0.0000027075,0.0000027144,0.0000027212, -0.0000027202,0.0000027081,0.0000026908,0.0000026819,0.0000026821, -0.0000026848,0.0000026924,0.0000027040,0.0000027090,0.0000027084, -0.0000027091,0.0000027130,0.0000027171,0.0000027166,0.0000027099, -0.0000027010,0.0000026955,0.0000026946,0.0000026967,0.0000027003, -0.0000027038,0.0000027067,0.0000027108,0.0000027178,0.0000027281, -0.0000027398,0.0000027489,0.0000027526,0.0000027521,0.0000027479, -0.0000027431,0.0000027380,0.0000027306,0.0000027230,0.0000027190, -0.0000027201,0.0000027239,0.0000027245,0.0000027209,0.0000027138, -0.0000027047,0.0000026884,0.0000026704,0.0000026619,0.0000026593, -0.0000026589,0.0000026708,0.0000026994,0.0000027233,0.0000027284, -0.0000027288,0.0000027319,0.0000027321,0.0000027283,0.0000027252, -0.0000027226,0.0000027182,0.0000027142,0.0000027120,0.0000027101, -0.0000027069,0.0000027037,0.0000027023,0.0000027026,0.0000027039, -0.0000027047,0.0000027033,0.0000027007,0.0000026999,0.0000027011, -0.0000027022,0.0000027011,0.0000026971,0.0000026913,0.0000026845, -0.0000026773,0.0000026714,0.0000026698,0.0000026758,0.0000026949, -0.0000027113,0.0000027102,0.0000027027,0.0000027096,0.0000027255, -0.0000027292,0.0000027258,0.0000027187,0.0000027145,0.0000027151, -0.0000027123,0.0000027107,0.0000027159,0.0000027247,0.0000027319, -0.0000027346,0.0000027316,0.0000027190,0.0000026955,0.0000026728, -0.0000026696,0.0000026849,0.0000026988,0.0000027030,0.0000027049, -0.0000027060,0.0000027077,0.0000027119,0.0000027180,0.0000027234, -0.0000027262,0.0000027263,0.0000027247,0.0000027225,0.0000027209, -0.0000027205,0.0000027213,0.0000027230,0.0000027254,0.0000027286, -0.0000027311,0.0000027309,0.0000027267,0.0000027200,0.0000027140, -0.0000027110,0.0000027111,0.0000027109,0.0000027065,0.0000026979, -0.0000026913,0.0000026945,0.0000027083,0.0000027213,0.0000027248, -0.0000027230,0.0000027199,0.0000027180,0.0000027163,0.0000027145, -0.0000027118,0.0000027079,0.0000027049,0.0000027042,0.0000027048, -0.0000027056,0.0000027049,0.0000027027,0.0000026993,0.0000026963, -0.0000026940,0.0000026918,0.0000026903,0.0000026893,0.0000026881, -0.0000026854,0.0000026815,0.0000026778,0.0000026750,0.0000026738, -0.0000026754,0.0000026792,0.0000026841,0.0000026893,0.0000026946, -0.0000027009,0.0000027072,0.0000027104,0.0000027097,0.0000027073, -0.0000027065,0.0000027070,0.0000027112,0.0000027211,0.0000027299, -0.0000027320,0.0000027348,0.0000027410,0.0000027436,0.0000027408, -0.0000027377,0.0000027375,0.0000027397,0.0000027435,0.0000027487, -0.0000027549,0.0000027596,0.0000027634,0.0000027690,0.0000027760, -0.0000027803,0.0000027805,0.0000027768,0.0000027723,0.0000027692, -0.0000027678,0.0000027678,0.0000027681,0.0000027683,0.0000027673, -0.0000027633,0.0000027575,0.0000027525,0.0000027516,0.0000027560, -0.0000027696,0.0000027844,0.0000027951,0.0000028009,0.0000028028, -0.0000028028,0.0000028025,0.0000028024,0.0000028014,0.0000027993, -0.0000027966,0.0000027940,0.0000027909,0.0000027877,0.0000027788, -0.0000027808,0.0000027837,0.0000027879,0.0000027922,0.0000027946, -0.0000027946,0.0000027898,0.0000027779,0.0000027624,0.0000027487, -0.0000027400,0.0000027354,0.0000027311,0.0000027253,0.0000027201, -0.0000027188,0.0000027224,0.0000027311,0.0000027412,0.0000027494, -0.0000027551,0.0000027587,0.0000027613,0.0000027634,0.0000027638, -0.0000027613,0.0000027564,0.0000027523,0.0000027494,0.0000027448, -0.0000027388,0.0000027346,0.0000027356,0.0000027418,0.0000027491, -0.0000027532,0.0000027536,0.0000027510,0.0000027473,0.0000027470, -0.0000027544,0.0000027695,0.0000027842,0.0000027895,0.0000027885, -0.0000027820,0.0000027619,0.0000027342,0.0000027130,0.0000027056, -0.0000027085,0.0000027143,0.0000027189,0.0000027245,0.0000027273, -0.0000027263,0.0000027229,0.0000027187,0.0000027172,0.0000027206, -0.0000027262,0.0000027277,0.0000027330,0.0000027516,0.0000027519, -0.0000027404,0.0000027294,0.0000027251,0.0000027430,0.0000027700, -0.0000027802,0.0000027780,0.0000027669,0.0000027480,0.0000027228, -0.0000027020,0.0000026973,0.0000027116,0.0000027357,0.0000027441, -0.0000027391,0.0000027293,0.0000027273,0.0000027322,0.0000027320, -0.0000027209,0.0000027009,0.0000026902,0.0000026923,0.0000026975, -0.0000026998,0.0000026994,0.0000026986,0.0000026955,0.0000026934, -0.0000026962,0.0000027033,0.0000027163,0.0000027314,0.0000027380, -0.0000027373,0.0000027313,0.0000027212,0.0000027089,0.0000026939, -0.0000026820,0.0000026799,0.0000026851,0.0000026958,0.0000027120, -0.0000027298,0.0000027452,0.0000027570,0.0000027619,0.0000027629, -0.0000027621,0.0000027600,0.0000027588,0.0000027581,0.0000027572, -0.0000027544,0.0000027505,0.0000027462,0.0000027413,0.0000027341, -0.0000027267,0.0000027207,0.0000027166,0.0000027146,0.0000027152, -0.0000027184,0.0000027197,0.0000027192,0.0000027174,0.0000027146, -0.0000027106,0.0000027048,0.0000026975,0.0000026897,0.0000026808, -0.0000026732,0.0000026688,0.0000026684,0.0000026723,0.0000026816, -0.0000026905,0.0000026946,0.0000026952,0.0000026973,0.0000027033, -0.0000027103,0.0000027157,0.0000027224,0.0000027265,0.0000027227, -0.0000027077,0.0000026889,0.0000026824,0.0000026834,0.0000026887, -0.0000026994,0.0000027070,0.0000027082,0.0000027086,0.0000027122, -0.0000027177,0.0000027205,0.0000027172,0.0000027087,0.0000026996, -0.0000026935,0.0000026913,0.0000026923,0.0000026958,0.0000026993, -0.0000027028,0.0000027080,0.0000027159,0.0000027267,0.0000027390, -0.0000027490,0.0000027537,0.0000027535,0.0000027501,0.0000027458, -0.0000027416,0.0000027350,0.0000027260,0.0000027186,0.0000027168, -0.0000027200,0.0000027240,0.0000027236,0.0000027171,0.0000027094, -0.0000026996,0.0000026828,0.0000026678,0.0000026614,0.0000026595, -0.0000026637,0.0000026850,0.0000027114,0.0000027235,0.0000027258, -0.0000027281,0.0000027274,0.0000027234,0.0000027216,0.0000027203, -0.0000027168,0.0000027143,0.0000027144,0.0000027142,0.0000027115, -0.0000027078,0.0000027059,0.0000027067,0.0000027102,0.0000027138, -0.0000027141,0.0000027101,0.0000027040,0.0000027000,0.0000026989, -0.0000026991,0.0000026979,0.0000026949,0.0000026907,0.0000026852, -0.0000026775,0.0000026703,0.0000026691,0.0000026803,0.0000027028, -0.0000027154,0.0000027100,0.0000027030,0.0000027122,0.0000027255, -0.0000027270,0.0000027204,0.0000027120,0.0000027117,0.0000027131, -0.0000027118,0.0000027138,0.0000027210,0.0000027289,0.0000027341, -0.0000027348,0.0000027295,0.0000027162,0.0000026932,0.0000026753, -0.0000026780,0.0000026938,0.0000027029,0.0000027044,0.0000027052, -0.0000027061,0.0000027086,0.0000027140,0.0000027199,0.0000027240, -0.0000027255,0.0000027249,0.0000027232,0.0000027220,0.0000027219, -0.0000027224,0.0000027242,0.0000027265,0.0000027295,0.0000027332, -0.0000027357,0.0000027352,0.0000027317,0.0000027261,0.0000027206, -0.0000027175,0.0000027161,0.0000027144,0.0000027104,0.0000027032, -0.0000026972,0.0000026991,0.0000027120,0.0000027269,0.0000027331, -0.0000027324,0.0000027293,0.0000027262,0.0000027231,0.0000027203, -0.0000027178,0.0000027148,0.0000027126,0.0000027130,0.0000027158, -0.0000027190,0.0000027204,0.0000027194,0.0000027166,0.0000027120, -0.0000027078,0.0000027030,0.0000026989,0.0000026966,0.0000026950, -0.0000026921,0.0000026872,0.0000026830,0.0000026820,0.0000026838, -0.0000026876,0.0000026926,0.0000026974,0.0000027011,0.0000027041, -0.0000027085,0.0000027145,0.0000027194,0.0000027205,0.0000027180, -0.0000027142,0.0000027131,0.0000027173,0.0000027258,0.0000027323, -0.0000027354,0.0000027410,0.0000027481,0.0000027503,0.0000027470, -0.0000027409,0.0000027372,0.0000027376,0.0000027412,0.0000027459, -0.0000027503,0.0000027555,0.0000027619,0.0000027717,0.0000027821, -0.0000027864,0.0000027835,0.0000027772,0.0000027719,0.0000027703, -0.0000027704,0.0000027710,0.0000027714,0.0000027712,0.0000027691, -0.0000027655,0.0000027606,0.0000027578,0.0000027606,0.0000027705, -0.0000027829,0.0000027939,0.0000028015,0.0000028054,0.0000028060, -0.0000028037,0.0000027991,0.0000027933,0.0000027888,0.0000027853, -0.0000027826,0.0000027805,0.0000027787,0.0000027778,0.0000027779, -0.0000027754,0.0000027802,0.0000027865,0.0000027934,0.0000027989, -0.0000028007,0.0000027992,0.0000027921,0.0000027799,0.0000027645, -0.0000027501,0.0000027396,0.0000027319,0.0000027262,0.0000027208, -0.0000027145,0.0000027108,0.0000027140,0.0000027263,0.0000027420, -0.0000027537,0.0000027598,0.0000027627,0.0000027655,0.0000027691, -0.0000027719,0.0000027714,0.0000027670,0.0000027611,0.0000027563, -0.0000027508,0.0000027446,0.0000027406,0.0000027420,0.0000027492, -0.0000027583,0.0000027648,0.0000027666,0.0000027648,0.0000027600, -0.0000027568,0.0000027601,0.0000027721,0.0000027851,0.0000027905, -0.0000027900,0.0000027840,0.0000027683,0.0000027437,0.0000027227, -0.0000027107,0.0000027089,0.0000027138,0.0000027189,0.0000027214, -0.0000027228,0.0000027228,0.0000027210,0.0000027175,0.0000027147, -0.0000027166,0.0000027239,0.0000027287,0.0000027290,0.0000027418, -0.0000027533,0.0000027451,0.0000027353,0.0000027231,0.0000027275, -0.0000027547,0.0000027771,0.0000027801,0.0000027738,0.0000027595, -0.0000027377,0.0000027136,0.0000027005,0.0000027046,0.0000027273, -0.0000027439,0.0000027433,0.0000027333,0.0000027258,0.0000027297, -0.0000027335,0.0000027270,0.0000027089,0.0000026907,0.0000026881, -0.0000026934,0.0000026987,0.0000027028,0.0000027052,0.0000027035, -0.0000026977,0.0000026947,0.0000026977,0.0000027094,0.0000027261, -0.0000027395,0.0000027432,0.0000027400,0.0000027323,0.0000027201, -0.0000027035,0.0000026844,0.0000026758,0.0000026803,0.0000026929, -0.0000027123,0.0000027343,0.0000027512,0.0000027592,0.0000027629, -0.0000027636,0.0000027626,0.0000027614,0.0000027607,0.0000027603, -0.0000027606,0.0000027604,0.0000027599,0.0000027580,0.0000027546, -0.0000027496,0.0000027416,0.0000027321,0.0000027230,0.0000027157, -0.0000027111,0.0000027093,0.0000027115,0.0000027131,0.0000027127, -0.0000027109,0.0000027091,0.0000027056,0.0000026994,0.0000026908, -0.0000026820,0.0000026732,0.0000026680,0.0000026674,0.0000026680, -0.0000026721,0.0000026795,0.0000026863,0.0000026901,0.0000026923, -0.0000026954,0.0000027042,0.0000027137,0.0000027190,0.0000027238, -0.0000027293,0.0000027305,0.0000027233,0.0000027041,0.0000026863, -0.0000026828,0.0000026861,0.0000026950,0.0000027049,0.0000027076, -0.0000027076,0.0000027107,0.0000027168,0.0000027214,0.0000027212, -0.0000027151,0.0000027049,0.0000026950,0.0000026878,0.0000026853, -0.0000026864,0.0000026899,0.0000026933,0.0000026975,0.0000027040, -0.0000027134,0.0000027256,0.0000027390,0.0000027497,0.0000027549, -0.0000027548,0.0000027518,0.0000027476,0.0000027442,0.0000027393, -0.0000027305,0.0000027205,0.0000027145,0.0000027151,0.0000027205, -0.0000027235,0.0000027203,0.0000027131,0.0000027064,0.0000026953, -0.0000026776,0.0000026653,0.0000026611,0.0000026616,0.0000026742, -0.0000026976,0.0000027151,0.0000027213,0.0000027239,0.0000027223, -0.0000027187,0.0000027189,0.0000027191,0.0000027172,0.0000027169, -0.0000027179,0.0000027175,0.0000027138,0.0000027084,0.0000027049, -0.0000027057,0.0000027104,0.0000027162,0.0000027203,0.0000027202, -0.0000027150,0.0000027065,0.0000026992,0.0000026954,0.0000026944, -0.0000026936,0.0000026920,0.0000026895,0.0000026853,0.0000026771, -0.0000026691,0.0000026695,0.0000026870,0.0000027100,0.0000027167, -0.0000027086,0.0000027038,0.0000027136,0.0000027244,0.0000027239, -0.0000027132,0.0000027073,0.0000027100,0.0000027127,0.0000027134, -0.0000027178,0.0000027256,0.0000027320,0.0000027345,0.0000027331, -0.0000027258,0.0000027122,0.0000026926,0.0000026803,0.0000026858, -0.0000027001,0.0000027070,0.0000027082,0.0000027087,0.0000027101, -0.0000027141,0.0000027198,0.0000027248,0.0000027272,0.0000027269, -0.0000027237,0.0000027196,0.0000027181,0.0000027190,0.0000027218, -0.0000027252,0.0000027295,0.0000027349,0.0000027392,0.0000027408, -0.0000027401,0.0000027378,0.0000027336,0.0000027285,0.0000027234, -0.0000027203,0.0000027181,0.0000027153,0.0000027102,0.0000027051, -0.0000027063,0.0000027178,0.0000027329,0.0000027410,0.0000027416, -0.0000027391,0.0000027362,0.0000027335,0.0000027314,0.0000027298, -0.0000027280,0.0000027268,0.0000027282,0.0000027325,0.0000027379, -0.0000027420,0.0000027427,0.0000027409,0.0000027372,0.0000027324, -0.0000027267,0.0000027204,0.0000027149,0.0000027098,0.0000027038, -0.0000026962,0.0000026886,0.0000026853,0.0000026865,0.0000026928, -0.0000027014,0.0000027097,0.0000027156,0.0000027187,0.0000027209, -0.0000027242,0.0000027278,0.0000027291,0.0000027266,0.0000027223, -0.0000027212,0.0000027254,0.0000027312,0.0000027347,0.0000027381, -0.0000027455,0.0000027532,0.0000027551,0.0000027526,0.0000027476, -0.0000027419,0.0000027383,0.0000027391,0.0000027430,0.0000027469, -0.0000027516,0.0000027601,0.0000027730,0.0000027843,0.0000027873, -0.0000027834,0.0000027761,0.0000027737,0.0000027741,0.0000027746, -0.0000027731,0.0000027708,0.0000027689,0.0000027675,0.0000027665, -0.0000027670,0.0000027718,0.0000027795,0.0000027866,0.0000027914, -0.0000027962,0.0000028016,0.0000028048,0.0000028047,0.0000028001, -0.0000027926,0.0000027849,0.0000027787,0.0000027749,0.0000027725, -0.0000027707,0.0000027700,0.0000027698,0.0000027705,0.0000027723, -0.0000027719,0.0000027787,0.0000027873,0.0000027958,0.0000028016, -0.0000028030,0.0000027996,0.0000027919,0.0000027807,0.0000027675, -0.0000027537,0.0000027412,0.0000027316,0.0000027249,0.0000027189, -0.0000027108,0.0000027028,0.0000027040,0.0000027191,0.0000027395, -0.0000027536,0.0000027605,0.0000027647,0.0000027681,0.0000027712, -0.0000027743,0.0000027758,0.0000027739,0.0000027681,0.0000027612, -0.0000027537,0.0000027466,0.0000027425,0.0000027433,0.0000027495, -0.0000027591,0.0000027679,0.0000027742,0.0000027762,0.0000027741, -0.0000027695,0.0000027688,0.0000027748,0.0000027847,0.0000027909, -0.0000027916,0.0000027863,0.0000027729,0.0000027516,0.0000027320, -0.0000027194,0.0000027133,0.0000027139,0.0000027190,0.0000027232, -0.0000027236,0.0000027225,0.0000027198,0.0000027162,0.0000027127, -0.0000027122,0.0000027198,0.0000027285,0.0000027294,0.0000027337, -0.0000027493,0.0000027483,0.0000027395,0.0000027277,0.0000027194, -0.0000027371,0.0000027671,0.0000027793,0.0000027778,0.0000027661, -0.0000027487,0.0000027272,0.0000027092,0.0000027051,0.0000027198, -0.0000027395,0.0000027441,0.0000027385,0.0000027274,0.0000027267, -0.0000027318,0.0000027299,0.0000027173,0.0000026967,0.0000026864, -0.0000026878,0.0000026933,0.0000026994,0.0000027057,0.0000027085, -0.0000027066,0.0000027024,0.0000027001,0.0000027054,0.0000027205, -0.0000027348,0.0000027422,0.0000027441,0.0000027392,0.0000027306, -0.0000027177,0.0000026977,0.0000026774,0.0000026738,0.0000026859, -0.0000027069,0.0000027310,0.0000027508,0.0000027619,0.0000027650, -0.0000027657,0.0000027649,0.0000027632,0.0000027629,0.0000027649, -0.0000027685,0.0000027726,0.0000027749,0.0000027759,0.0000027746, -0.0000027714,0.0000027656,0.0000027570,0.0000027453,0.0000027325, -0.0000027214,0.0000027133,0.0000027084,0.0000027078,0.0000027082, -0.0000027072,0.0000027049,0.0000027031,0.0000027000,0.0000026936, -0.0000026855,0.0000026773,0.0000026698,0.0000026665,0.0000026673, -0.0000026696,0.0000026729,0.0000026786,0.0000026835,0.0000026866, -0.0000026903,0.0000026955,0.0000027056,0.0000027168,0.0000027234, -0.0000027270,0.0000027313,0.0000027341,0.0000027322,0.0000027191, -0.0000026971,0.0000026846,0.0000026845,0.0000026915,0.0000027019, -0.0000027073,0.0000027067,0.0000027081,0.0000027141,0.0000027206, -0.0000027225,0.0000027192,0.0000027100,0.0000026982,0.0000026877, -0.0000026814,0.0000026804,0.0000026832,0.0000026865,0.0000026898, -0.0000026943,0.0000027010,0.0000027106,0.0000027233,0.0000027376, -0.0000027498,0.0000027559,0.0000027563,0.0000027534,0.0000027488, -0.0000027455,0.0000027425,0.0000027351,0.0000027238,0.0000027141, -0.0000027114,0.0000027148,0.0000027201,0.0000027210,0.0000027170, -0.0000027106,0.0000027039,0.0000026899,0.0000026725,0.0000026636, -0.0000026624,0.0000026680,0.0000026846,0.0000027032,0.0000027137, -0.0000027189,0.0000027176,0.0000027136,0.0000027149,0.0000027173, -0.0000027177,0.0000027197,0.0000027210,0.0000027189,0.0000027141, -0.0000027083,0.0000027040,0.0000027040,0.0000027082,0.0000027146, -0.0000027206,0.0000027237,0.0000027226,0.0000027164,0.0000027071, -0.0000026978,0.0000026909,0.0000026885,0.0000026888,0.0000026890, -0.0000026876,0.0000026827,0.0000026744,0.0000026677,0.0000026729, -0.0000026943,0.0000027146,0.0000027173,0.0000027065,0.0000027040, -0.0000027133,0.0000027223,0.0000027187,0.0000027060,0.0000027032, -0.0000027095,0.0000027146,0.0000027167,0.0000027222,0.0000027299, -0.0000027341,0.0000027339,0.0000027295,0.0000027203,0.0000027082, -0.0000026938,0.0000026858,0.0000026908,0.0000027030,0.0000027113, -0.0000027137,0.0000027139,0.0000027155,0.0000027196,0.0000027237, -0.0000027266,0.0000027283,0.0000027282,0.0000027247,0.0000027185, -0.0000027139,0.0000027140,0.0000027181,0.0000027240,0.0000027318, -0.0000027404,0.0000027454,0.0000027457,0.0000027448,0.0000027441, -0.0000027412,0.0000027355,0.0000027284,0.0000027233,0.0000027220, -0.0000027213,0.0000027183,0.0000027150,0.0000027164,0.0000027264, -0.0000027402,0.0000027487,0.0000027500,0.0000027485,0.0000027454, -0.0000027430,0.0000027425,0.0000027432,0.0000027438,0.0000027445, -0.0000027473,0.0000027527,0.0000027592,0.0000027644,0.0000027665, -0.0000027659,0.0000027634,0.0000027599,0.0000027565,0.0000027523, -0.0000027475,0.0000027410,0.0000027312,0.0000027187,0.0000027059, -0.0000026968,0.0000026937,0.0000026971,0.0000027057,0.0000027150, -0.0000027224,0.0000027268,0.0000027291,0.0000027308,0.0000027331, -0.0000027347,0.0000027345,0.0000027331,0.0000027332,0.0000027352, -0.0000027365,0.0000027375,0.0000027419,0.0000027498,0.0000027560, -0.0000027575,0.0000027566,0.0000027539,0.0000027493,0.0000027430, -0.0000027388,0.0000027403,0.0000027451,0.0000027515,0.0000027607, -0.0000027730,0.0000027828,0.0000027849,0.0000027804,0.0000027760, -0.0000027767,0.0000027794,0.0000027792,0.0000027752,0.0000027716, -0.0000027698,0.0000027691,0.0000027701,0.0000027757,0.0000027843, -0.0000027915,0.0000027948,0.0000027964,0.0000027988,0.0000028021, -0.0000028039,0.0000028021,0.0000027952,0.0000027864,0.0000027796, -0.0000027758,0.0000027735,0.0000027715,0.0000027693,0.0000027669, -0.0000027652,0.0000027642,0.0000027646,0.0000027673,0.0000027707, -0.0000027784,0.0000027872,0.0000027950,0.0000027996,0.0000028002, -0.0000027963,0.0000027886,0.0000027792,0.0000027692,0.0000027582, -0.0000027466,0.0000027355,0.0000027263,0.0000027185,0.0000027079, -0.0000026962,0.0000026946,0.0000027099,0.0000027335,0.0000027502, -0.0000027587,0.0000027640,0.0000027679,0.0000027703,0.0000027730, -0.0000027765,0.0000027783,0.0000027767,0.0000027716,0.0000027645, -0.0000027567,0.0000027510,0.0000027499,0.0000027533,0.0000027598, -0.0000027670,0.0000027740,0.0000027805,0.0000027842,0.0000027832, -0.0000027798,0.0000027793,0.0000027836,0.0000027893,0.0000027920, -0.0000027891,0.0000027784,0.0000027599,0.0000027407,0.0000027285, -0.0000027221,0.0000027192,0.0000027196,0.0000027231,0.0000027259, -0.0000027254,0.0000027217,0.0000027162,0.0000027112,0.0000027090, -0.0000027141,0.0000027257,0.0000027305,0.0000027301,0.0000027421, -0.0000027494,0.0000027409,0.0000027336,0.0000027189,0.0000027219, -0.0000027518,0.0000027751,0.0000027785,0.0000027698,0.0000027543, -0.0000027377,0.0000027212,0.0000027117,0.0000027170,0.0000027350, -0.0000027437,0.0000027413,0.0000027315,0.0000027257,0.0000027301, -0.0000027308,0.0000027225,0.0000027053,0.0000026875,0.0000026847, -0.0000026867,0.0000026912,0.0000026990,0.0000027071,0.0000027097, -0.0000027093,0.0000027083,0.0000027097,0.0000027207,0.0000027341, -0.0000027400,0.0000027412,0.0000027411,0.0000027362,0.0000027281, -0.0000027141,0.0000026925,0.0000026745,0.0000026758,0.0000026959, -0.0000027234,0.0000027446,0.0000027569,0.0000027637,0.0000027676, -0.0000027689,0.0000027681,0.0000027670,0.0000027691,0.0000027754, -0.0000027836,0.0000027895,0.0000027913,0.0000027902,0.0000027868, -0.0000027829,0.0000027771,0.0000027688,0.0000027577,0.0000027447, -0.0000027315,0.0000027205,0.0000027126,0.0000027079,0.0000027063, -0.0000027045,0.0000027009,0.0000026985,0.0000026961,0.0000026911, -0.0000026849,0.0000026782,0.0000026717,0.0000026684,0.0000026692, -0.0000026716,0.0000026744,0.0000026788,0.0000026826,0.0000026854, -0.0000026896,0.0000026970,0.0000027084,0.0000027200,0.0000027276, -0.0000027314,0.0000027342,0.0000027365,0.0000027361,0.0000027293, -0.0000027104,0.0000026901,0.0000026849,0.0000026886,0.0000026983, -0.0000027056,0.0000027061,0.0000027056,0.0000027097,0.0000027168, -0.0000027214,0.0000027208,0.0000027133,0.0000027015,0.0000026895, -0.0000026814,0.0000026792,0.0000026809,0.0000026852,0.0000026886, -0.0000026915,0.0000026958,0.0000027016,0.0000027103,0.0000027211, -0.0000027342,0.0000027470,0.0000027552,0.0000027569,0.0000027547, -0.0000027499,0.0000027461,0.0000027441,0.0000027388,0.0000027280, -0.0000027160,0.0000027092,0.0000027092,0.0000027146,0.0000027192, -0.0000027195,0.0000027151,0.0000027087,0.0000027003,0.0000026840, -0.0000026686,0.0000026638,0.0000026653,0.0000026750,0.0000026905, -0.0000027031,0.0000027120,0.0000027138,0.0000027088,0.0000027089, -0.0000027135,0.0000027170,0.0000027210,0.0000027225,0.0000027199, -0.0000027154,0.0000027106,0.0000027060,0.0000027050,0.0000027078, -0.0000027134,0.0000027205,0.0000027259,0.0000027272,0.0000027237, -0.0000027156,0.0000027054,0.0000026951,0.0000026868,0.0000026831, -0.0000026839,0.0000026845,0.0000026826,0.0000026772,0.0000026695, -0.0000026668,0.0000026771,0.0000027003,0.0000027162,0.0000027145, -0.0000027039,0.0000027024,0.0000027112,0.0000027191,0.0000027128, -0.0000027008,0.0000027011,0.0000027113,0.0000027178,0.0000027210, -0.0000027266,0.0000027336,0.0000027356,0.0000027329,0.0000027255, -0.0000027156,0.0000027053,0.0000026959,0.0000026907,0.0000026931, -0.0000027013,0.0000027098,0.0000027142,0.0000027150,0.0000027167, -0.0000027189,0.0000027197,0.0000027202,0.0000027217,0.0000027242, -0.0000027247,0.0000027204,0.0000027136,0.0000027106,0.0000027131, -0.0000027211,0.0000027332,0.0000027452,0.0000027509,0.0000027503, -0.0000027492,0.0000027493,0.0000027471,0.0000027407,0.0000027326, -0.0000027274,0.0000027265,0.0000027273,0.0000027261,0.0000027244, -0.0000027262,0.0000027341,0.0000027453,0.0000027534,0.0000027555, -0.0000027543,0.0000027508,0.0000027477,0.0000027471,0.0000027487, -0.0000027503,0.0000027521,0.0000027552,0.0000027597,0.0000027645, -0.0000027682,0.0000027696,0.0000027689,0.0000027668,0.0000027643, -0.0000027616,0.0000027597,0.0000027589,0.0000027581,0.0000027546, -0.0000027467,0.0000027351,0.0000027224,0.0000027135,0.0000027115, -0.0000027158,0.0000027233,0.0000027308,0.0000027357,0.0000027380, -0.0000027401,0.0000027423,0.0000027444,0.0000027453,0.0000027451, -0.0000027444,0.0000027435,0.0000027425,0.0000027430,0.0000027474, -0.0000027538,0.0000027579,0.0000027590,0.0000027589,0.0000027579, -0.0000027549,0.0000027503,0.0000027460,0.0000027452,0.0000027496, -0.0000027573,0.0000027654,0.0000027731,0.0000027782,0.0000027788, -0.0000027754,0.0000027746,0.0000027792,0.0000027833,0.0000027825, -0.0000027794,0.0000027769,0.0000027750,0.0000027740,0.0000027757, -0.0000027814,0.0000027888,0.0000027943,0.0000027979,0.0000028011, -0.0000028033,0.0000028038,0.0000028024,0.0000027983,0.0000027913, -0.0000027836,0.0000027777,0.0000027744,0.0000027730,0.0000027719, -0.0000027702,0.0000027681,0.0000027665,0.0000027654,0.0000027645, -0.0000027642,0.0000027658,0.0000027749,0.0000027811,0.0000027870, -0.0000027914,0.0000027933,0.0000027928,0.0000027898,0.0000027843, -0.0000027780,0.0000027717,0.0000027652,0.0000027562,0.0000027439, -0.0000027311,0.0000027200,0.0000027069,0.0000026922,0.0000026877, -0.0000027013,0.0000027254,0.0000027439,0.0000027536,0.0000027597, -0.0000027642,0.0000027665,0.0000027692,0.0000027747,0.0000027804, -0.0000027827,0.0000027820,0.0000027781,0.0000027723,0.0000027669, -0.0000027648,0.0000027658,0.0000027698,0.0000027742,0.0000027776, -0.0000027808,0.0000027850,0.0000027884,0.0000027884,0.0000027855, -0.0000027840,0.0000027865,0.0000027897,0.0000027904,0.0000027840, -0.0000027698,0.0000027517,0.0000027377,0.0000027311,0.0000027281, -0.0000027261,0.0000027257,0.0000027269,0.0000027272,0.0000027250, -0.0000027192,0.0000027122,0.0000027080,0.0000027099,0.0000027208, -0.0000027301,0.0000027294,0.0000027351,0.0000027476,0.0000027423, -0.0000027356,0.0000027242,0.0000027147,0.0000027335,0.0000027650, -0.0000027761,0.0000027715,0.0000027565,0.0000027425,0.0000027310, -0.0000027205,0.0000027205,0.0000027326,0.0000027435,0.0000027425, -0.0000027344,0.0000027274,0.0000027286,0.0000027310,0.0000027252, -0.0000027118,0.0000026931,0.0000026822,0.0000026820,0.0000026833, -0.0000026881,0.0000026975,0.0000027050,0.0000027092,0.0000027122, -0.0000027146,0.0000027226,0.0000027373,0.0000027440,0.0000027428, -0.0000027395,0.0000027358,0.0000027320,0.0000027261,0.0000027106, -0.0000026887,0.0000026755,0.0000026816,0.0000027077,0.0000027356, -0.0000027506,0.0000027569,0.0000027629,0.0000027686,0.0000027713, -0.0000027725,0.0000027749,0.0000027806,0.0000027889,0.0000027962, -0.0000027996,0.0000027992,0.0000027962,0.0000027914,0.0000027857, -0.0000027797,0.0000027719,0.0000027625,0.0000027520,0.0000027404, -0.0000027297,0.0000027213,0.0000027143,0.0000027095,0.0000027067, -0.0000027021,0.0000026983,0.0000026962,0.0000026924,0.0000026877, -0.0000026823,0.0000026768,0.0000026728,0.0000026726,0.0000026744, -0.0000026767,0.0000026803,0.0000026838,0.0000026868,0.0000026917, -0.0000026998,0.0000027112,0.0000027227,0.0000027308,0.0000027355, -0.0000027379,0.0000027389,0.0000027381,0.0000027345,0.0000027214, -0.0000026998,0.0000026872,0.0000026870,0.0000026948,0.0000027033, -0.0000027051,0.0000027041,0.0000027056,0.0000027113,0.0000027178, -0.0000027193,0.0000027146,0.0000027038,0.0000026923,0.0000026849, -0.0000026811,0.0000026820,0.0000026863,0.0000026912,0.0000026945, -0.0000026974,0.0000027015,0.0000027069,0.0000027138,0.0000027220, -0.0000027315,0.0000027419,0.0000027508,0.0000027549,0.0000027545, -0.0000027501,0.0000027463,0.0000027447,0.0000027412,0.0000027320, -0.0000027193,0.0000027091,0.0000027059,0.0000027090,0.0000027150, -0.0000027191,0.0000027191,0.0000027138,0.0000027062,0.0000026955, -0.0000026785,0.0000026657,0.0000026633,0.0000026691,0.0000026800, -0.0000026915,0.0000027027,0.0000027099,0.0000027064,0.0000027032, -0.0000027069,0.0000027132,0.0000027195,0.0000027221,0.0000027207, -0.0000027175,0.0000027144,0.0000027099,0.0000027074,0.0000027084, -0.0000027129,0.0000027201,0.0000027275,0.0000027313,0.0000027309, -0.0000027249,0.0000027137,0.0000027018,0.0000026918,0.0000026835, -0.0000026780,0.0000026774,0.0000026776,0.0000026747,0.0000026691, -0.0000026635,0.0000026650,0.0000026820,0.0000027043,0.0000027152, -0.0000027105,0.0000027006,0.0000026996,0.0000027077,0.0000027151, -0.0000027079,0.0000026969,0.0000027007,0.0000027134,0.0000027214, -0.0000027255,0.0000027306,0.0000027369,0.0000027379,0.0000027323, -0.0000027232,0.0000027131,0.0000027043,0.0000026978,0.0000026943, -0.0000026945,0.0000026978,0.0000027025,0.0000027060,0.0000027084, -0.0000027108,0.0000027129,0.0000027137,0.0000027132,0.0000027134, -0.0000027171,0.0000027224,0.0000027234,0.0000027171,0.0000027091, -0.0000027082,0.0000027172,0.0000027340,0.0000027493,0.0000027554, -0.0000027542,0.0000027525,0.0000027525,0.0000027502,0.0000027440, -0.0000027371,0.0000027328,0.0000027320,0.0000027319,0.0000027316, -0.0000027313,0.0000027331,0.0000027381,0.0000027463,0.0000027539, -0.0000027566,0.0000027560,0.0000027535,0.0000027503,0.0000027487, -0.0000027494,0.0000027507,0.0000027524,0.0000027555,0.0000027597, -0.0000027639,0.0000027668,0.0000027677,0.0000027665,0.0000027641, -0.0000027611,0.0000027580,0.0000027556,0.0000027553,0.0000027564, -0.0000027561,0.0000027521,0.0000027470,0.0000027418,0.0000027378, -0.0000027371,0.0000027385,0.0000027421,0.0000027472,0.0000027514, -0.0000027534,0.0000027538,0.0000027550,0.0000027564,0.0000027565, -0.0000027552,0.0000027536,0.0000027525,0.0000027523,0.0000027526, -0.0000027539,0.0000027563,0.0000027590,0.0000027605,0.0000027611, -0.0000027617,0.0000027620,0.0000027620,0.0000027620,0.0000027622, -0.0000027638,0.0000027674,0.0000027714,0.0000027736,0.0000027741, -0.0000027718,0.0000027696,0.0000027719,0.0000027792,0.0000027839, -0.0000027836,0.0000027833,0.0000027840,0.0000027822,0.0000027792, -0.0000027793,0.0000027826,0.0000027870,0.0000027923,0.0000027991, -0.0000028054,0.0000028086,0.0000028074,0.0000028022,0.0000027955, -0.0000027900,0.0000027862,0.0000027829,0.0000027798,0.0000027772, -0.0000027751,0.0000027730,0.0000027710,0.0000027696,0.0000027694, -0.0000027694,0.0000027690,0.0000027688,0.0000027703,0.0000027820, -0.0000027863,0.0000027881,0.0000027879,0.0000027875,0.0000027868, -0.0000027857,0.0000027837,0.0000027809,0.0000027781,0.0000027747, -0.0000027673,0.0000027536,0.0000027376,0.0000027240,0.0000027093, -0.0000026912,0.0000026838,0.0000026946,0.0000027183,0.0000027370, -0.0000027466,0.0000027520,0.0000027562,0.0000027593,0.0000027628, -0.0000027689,0.0000027765,0.0000027817,0.0000027840,0.0000027833, -0.0000027808,0.0000027775,0.0000027758,0.0000027763,0.0000027796, -0.0000027847,0.0000027891,0.0000027901,0.0000027890,0.0000027885, -0.0000027893,0.0000027890,0.0000027860,0.0000027847,0.0000027867, -0.0000027889,0.0000027871,0.0000027787,0.0000027647,0.0000027498, -0.0000027401,0.0000027359,0.0000027340,0.0000027323,0.0000027313, -0.0000027307,0.0000027288,0.0000027241,0.0000027161,0.0000027094, -0.0000027083,0.0000027165,0.0000027280,0.0000027298,0.0000027305, -0.0000027442,0.0000027452,0.0000027352,0.0000027289,0.0000027140, -0.0000027180,0.0000027495,0.0000027705,0.0000027707,0.0000027576, -0.0000027432,0.0000027358,0.0000027290,0.0000027264,0.0000027340, -0.0000027430,0.0000027439,0.0000027364,0.0000027285,0.0000027282, -0.0000027305,0.0000027271,0.0000027161,0.0000026989,0.0000026830, -0.0000026783,0.0000026779,0.0000026790,0.0000026847,0.0000026943, -0.0000027017,0.0000027088,0.0000027161,0.0000027243,0.0000027368, -0.0000027475,0.0000027471,0.0000027440,0.0000027391,0.0000027322, -0.0000027283,0.0000027228,0.0000027071,0.0000026864,0.0000026781, -0.0000026891,0.0000027173,0.0000027403,0.0000027503,0.0000027558, -0.0000027611,0.0000027673,0.0000027716,0.0000027759,0.0000027830, -0.0000027915,0.0000027988,0.0000028031,0.0000028053,0.0000028045, -0.0000028008,0.0000027960,0.0000027893,0.0000027815,0.0000027726, -0.0000027638,0.0000027546,0.0000027456,0.0000027375,0.0000027313, -0.0000027257,0.0000027198,0.0000027157,0.0000027106,0.0000027048, -0.0000027010,0.0000026983,0.0000026937,0.0000026881,0.0000026826, -0.0000026781,0.0000026768,0.0000026779,0.0000026801,0.0000026832, -0.0000026866,0.0000026902,0.0000026957,0.0000027035,0.0000027134, -0.0000027239,0.0000027322,0.0000027380,0.0000027410,0.0000027414, -0.0000027394,0.0000027364,0.0000027283,0.0000027102,0.0000026923, -0.0000026885,0.0000026928,0.0000027014,0.0000027047,0.0000027029, -0.0000027028,0.0000027060,0.0000027118,0.0000027158,0.0000027137, -0.0000027051,0.0000026951,0.0000026886,0.0000026861,0.0000026861, -0.0000026885,0.0000026933,0.0000026979,0.0000027011,0.0000027045, -0.0000027094,0.0000027152,0.0000027214,0.0000027272,0.0000027326, -0.0000027383,0.0000027443,0.0000027492,0.0000027505,0.0000027485, -0.0000027460,0.0000027451,0.0000027429,0.0000027355,0.0000027235, -0.0000027118,0.0000027058,0.0000027055,0.0000027096,0.0000027153, -0.0000027193,0.0000027187,0.0000027111,0.0000027016,0.0000026898, -0.0000026737,0.0000026636,0.0000026648,0.0000026720,0.0000026807, -0.0000026908,0.0000027027,0.0000027052,0.0000027008,0.0000027004, -0.0000027054,0.0000027128,0.0000027183,0.0000027188,0.0000027177, -0.0000027164,0.0000027128,0.0000027096,0.0000027093,0.0000027124, -0.0000027181,0.0000027252,0.0000027310,0.0000027334,0.0000027323, -0.0000027246,0.0000027108,0.0000026972,0.0000026883,0.0000026806, -0.0000026730,0.0000026700,0.0000026689,0.0000026659,0.0000026610, -0.0000026588,0.0000026663,0.0000026874,0.0000027066,0.0000027124, -0.0000027062,0.0000026969,0.0000026959,0.0000027035,0.0000027119, -0.0000027041,0.0000026939,0.0000027013,0.0000027151,0.0000027241, -0.0000027297,0.0000027346,0.0000027397,0.0000027397,0.0000027330, -0.0000027233,0.0000027136,0.0000027055,0.0000027001,0.0000026970, -0.0000026958,0.0000026965,0.0000026973,0.0000026982,0.0000026995, -0.0000027014,0.0000027034,0.0000027049,0.0000027063,0.0000027080, -0.0000027128,0.0000027212,0.0000027261,0.0000027219,0.0000027097, -0.0000027049,0.0000027135,0.0000027344,0.0000027526,0.0000027586, -0.0000027570,0.0000027544,0.0000027537,0.0000027512,0.0000027464, -0.0000027416,0.0000027388,0.0000027375,0.0000027361,0.0000027347, -0.0000027349,0.0000027361,0.0000027387,0.0000027442,0.0000027508, -0.0000027548,0.0000027563,0.0000027565,0.0000027550,0.0000027528, -0.0000027525,0.0000027536,0.0000027553,0.0000027586,0.0000027626, -0.0000027657,0.0000027676,0.0000027683,0.0000027671,0.0000027643, -0.0000027605,0.0000027554,0.0000027509,0.0000027494,0.0000027507, -0.0000027510,0.0000027483,0.0000027442,0.0000027420,0.0000027440, -0.0000027509,0.0000027584,0.0000027652,0.0000027716,0.0000027762, -0.0000027782,0.0000027777,0.0000027757,0.0000027745,0.0000027729, -0.0000027702,0.0000027672,0.0000027657,0.0000027648,0.0000027631, -0.0000027604,0.0000027588,0.0000027594,0.0000027620,0.0000027650, -0.0000027690,0.0000027743,0.0000027786,0.0000027808,0.0000027808, -0.0000027792,0.0000027775,0.0000027759,0.0000027735,0.0000027701, -0.0000027658,0.0000027642,0.0000027692,0.0000027778,0.0000027821, -0.0000027826,0.0000027855,0.0000027888,0.0000027881,0.0000027843, -0.0000027811,0.0000027808,0.0000027829,0.0000027887,0.0000027988, -0.0000028096,0.0000028153,0.0000028145,0.0000028086,0.0000028003, -0.0000027939,0.0000027906,0.0000027888,0.0000027868,0.0000027840, -0.0000027808,0.0000027781,0.0000027767,0.0000027770,0.0000027780, -0.0000027781,0.0000027769,0.0000027752,0.0000027748,0.0000027771, -0.0000027897,0.0000027914,0.0000027903,0.0000027880,0.0000027863, -0.0000027857,0.0000027861,0.0000027868,0.0000027870,0.0000027865, -0.0000027836,0.0000027759,0.0000027614,0.0000027438,0.0000027294, -0.0000027148,0.0000026952,0.0000026842,0.0000026909,0.0000027131, -0.0000027313,0.0000027399,0.0000027434,0.0000027458,0.0000027484, -0.0000027526,0.0000027586,0.0000027652,0.0000027715,0.0000027773, -0.0000027805,0.0000027813,0.0000027799,0.0000027785,0.0000027792, -0.0000027829,0.0000027875,0.0000027932,0.0000027981,0.0000027993, -0.0000027969,0.0000027929,0.0000027899,0.0000027867,0.0000027829, -0.0000027815,0.0000027831,0.0000027842,0.0000027814,0.0000027734, -0.0000027617,0.0000027504,0.0000027426,0.0000027392,0.0000027380, -0.0000027370,0.0000027363,0.0000027348,0.0000027306,0.0000027221, -0.0000027131,0.0000027093,0.0000027145,0.0000027255,0.0000027295, -0.0000027276,0.0000027387,0.0000027475,0.0000027368,0.0000027303, -0.0000027186,0.0000027107,0.0000027312,0.0000027601,0.0000027667, -0.0000027577,0.0000027427,0.0000027361,0.0000027338,0.0000027321, -0.0000027375,0.0000027444,0.0000027448,0.0000027388,0.0000027305, -0.0000027287,0.0000027302,0.0000027284,0.0000027197,0.0000027038, -0.0000026861,0.0000026755,0.0000026737,0.0000026736,0.0000026760, -0.0000026822,0.0000026915,0.0000027004,0.0000027104,0.0000027233, -0.0000027361,0.0000027463,0.0000027492,0.0000027468,0.0000027448, -0.0000027405,0.0000027327,0.0000027271,0.0000027188,0.0000027032, -0.0000026857,0.0000026820,0.0000026965,0.0000027220,0.0000027395, -0.0000027481,0.0000027538,0.0000027581,0.0000027627,0.0000027679, -0.0000027762,0.0000027874,0.0000027975,0.0000028045,0.0000028088, -0.0000028115,0.0000028113,0.0000028076,0.0000028030,0.0000027962, -0.0000027870,0.0000027770,0.0000027672,0.0000027579,0.0000027500, -0.0000027435,0.0000027391,0.0000027360,0.0000027314,0.0000027272, -0.0000027225,0.0000027162,0.0000027111,0.0000027079,0.0000027030, -0.0000026957,0.0000026888,0.0000026838,0.0000026817,0.0000026825, -0.0000026846,0.0000026873,0.0000026909,0.0000026953,0.0000027008, -0.0000027079,0.0000027159,0.0000027244,0.0000027324,0.0000027387, -0.0000027428,0.0000027432,0.0000027407,0.0000027367,0.0000027313, -0.0000027184,0.0000026993,0.0000026898,0.0000026928,0.0000027005, -0.0000027051,0.0000027038,0.0000027010,0.0000027022,0.0000027060, -0.0000027101,0.0000027110,0.0000027059,0.0000026975,0.0000026917, -0.0000026902,0.0000026908,0.0000026923,0.0000026957,0.0000027006, -0.0000027047,0.0000027079,0.0000027121,0.0000027177,0.0000027240, -0.0000027300,0.0000027341,0.0000027365,0.0000027379,0.0000027394, -0.0000027414,0.0000027427,0.0000027433,0.0000027442,0.0000027453, -0.0000027445,0.0000027385,0.0000027279,0.0000027163,0.0000027078, -0.0000027046,0.0000027052,0.0000027094,0.0000027148,0.0000027185, -0.0000027161,0.0000027066,0.0000026960,0.0000026844,0.0000026702, -0.0000026630,0.0000026656,0.0000026721,0.0000026786,0.0000026907, -0.0000027022,0.0000027027,0.0000026986,0.0000026979,0.0000027016, -0.0000027081,0.0000027118,0.0000027125,0.0000027130,0.0000027122, -0.0000027105,0.0000027106,0.0000027132,0.0000027172,0.0000027219, -0.0000027266,0.0000027299,0.0000027313,0.0000027299,0.0000027232, -0.0000027083,0.0000026930,0.0000026851,0.0000026784,0.0000026696, -0.0000026633,0.0000026607,0.0000026585,0.0000026555,0.0000026571, -0.0000026714,0.0000026924,0.0000027074,0.0000027098,0.0000027015, -0.0000026935,0.0000026926,0.0000026994,0.0000027091,0.0000027015, -0.0000026938,0.0000027018,0.0000027155,0.0000027263,0.0000027344, -0.0000027394,0.0000027422,0.0000027411,0.0000027348,0.0000027258, -0.0000027167,0.0000027091,0.0000027039,0.0000027010,0.0000026993, -0.0000026985,0.0000026978,0.0000026979,0.0000026992,0.0000027014, -0.0000027033,0.0000027046,0.0000027057,0.0000027076,0.0000027121, -0.0000027212,0.0000027296,0.0000027258,0.0000027110,0.0000027033, -0.0000027109,0.0000027355,0.0000027553,0.0000027605,0.0000027590, -0.0000027557,0.0000027543,0.0000027523,0.0000027494,0.0000027466, -0.0000027446,0.0000027428,0.0000027405,0.0000027380,0.0000027363, -0.0000027364,0.0000027368,0.0000027392,0.0000027445,0.0000027507, -0.0000027565,0.0000027609,0.0000027616,0.0000027589,0.0000027560, -0.0000027554,0.0000027567,0.0000027598,0.0000027642,0.0000027678, -0.0000027703,0.0000027716,0.0000027709,0.0000027684,0.0000027643, -0.0000027583,0.0000027521,0.0000027480,0.0000027469,0.0000027472, -0.0000027454,0.0000027420,0.0000027400,0.0000027415,0.0000027499, -0.0000027607,0.0000027717,0.0000027826,0.0000027918,0.0000027973, -0.0000027989,0.0000027977,0.0000027939,0.0000027902,0.0000027864, -0.0000027823,0.0000027785,0.0000027753,0.0000027710,0.0000027655, -0.0000027613,0.0000027606,0.0000027647,0.0000027728,0.0000027818, -0.0000027887,0.0000027925,0.0000027933,0.0000027918,0.0000027885, -0.0000027835,0.0000027775,0.0000027723,0.0000027663,0.0000027622, -0.0000027620,0.0000027680,0.0000027766,0.0000027794,0.0000027802, -0.0000027857,0.0000027909,0.0000027910,0.0000027878,0.0000027833, -0.0000027786,0.0000027784,0.0000027852,0.0000027982,0.0000028128, -0.0000028225,0.0000028232,0.0000028161,0.0000028059,0.0000027964, -0.0000027901,0.0000027869,0.0000027854,0.0000027849,0.0000027845, -0.0000027835,0.0000027826,0.0000027836,0.0000027866,0.0000027892, -0.0000027886,0.0000027857,0.0000027829,0.0000027828,0.0000027858, -0.0000027957,0.0000027951,0.0000027934,0.0000027918,0.0000027909, -0.0000027907,0.0000027913,0.0000027924,0.0000027927,0.0000027918, -0.0000027882,0.0000027804,0.0000027666,0.0000027494,0.0000027355, -0.0000027228,0.0000027055,0.0000026919,0.0000026947,0.0000027116, -0.0000027281,0.0000027359,0.0000027384,0.0000027388,0.0000027395, -0.0000027420,0.0000027466,0.0000027515,0.0000027566,0.0000027628, -0.0000027689,0.0000027733,0.0000027753,0.0000027758,0.0000027770, -0.0000027810,0.0000027863,0.0000027915,0.0000027972,0.0000028019, -0.0000028034,0.0000028021,0.0000027979,0.0000027913,0.0000027834, -0.0000027768,0.0000027740,0.0000027751,0.0000027757,0.0000027729, -0.0000027669,0.0000027590,0.0000027512,0.0000027457,0.0000027434, -0.0000027427,0.0000027421,0.0000027413,0.0000027381,0.0000027301, -0.0000027188,0.0000027119,0.0000027139,0.0000027247,0.0000027296, -0.0000027252,0.0000027318,0.0000027476,0.0000027419,0.0000027306, -0.0000027231,0.0000027095,0.0000027152,0.0000027459,0.0000027606, -0.0000027561,0.0000027425,0.0000027340,0.0000027340,0.0000027356, -0.0000027413,0.0000027476,0.0000027467,0.0000027399,0.0000027323, -0.0000027300,0.0000027311,0.0000027295,0.0000027230,0.0000027092, -0.0000026899,0.0000026761,0.0000026713,0.0000026699,0.0000026709, -0.0000026751,0.0000026817,0.0000026915,0.0000027024,0.0000027169, -0.0000027326,0.0000027430,0.0000027477,0.0000027464,0.0000027447, -0.0000027448,0.0000027431,0.0000027371,0.0000027294,0.0000027172, -0.0000026998,0.0000026861,0.0000026868,0.0000027024,0.0000027225, -0.0000027360,0.0000027442,0.0000027507,0.0000027541,0.0000027565, -0.0000027617,0.0000027728,0.0000027863,0.0000027979,0.0000028063, -0.0000028125,0.0000028162,0.0000028164,0.0000028136,0.0000028093, -0.0000028030,0.0000027948,0.0000027842,0.0000027734,0.0000027648, -0.0000027572,0.0000027503,0.0000027465,0.0000027440,0.0000027400, -0.0000027361,0.0000027326,0.0000027273,0.0000027221,0.0000027184, -0.0000027135,0.0000027054,0.0000026965,0.0000026902,0.0000026876, -0.0000026880,0.0000026902,0.0000026930,0.0000026968,0.0000027020, -0.0000027077,0.0000027138,0.0000027200,0.0000027264,0.0000027331, -0.0000027393,0.0000027436,0.0000027444,0.0000027416,0.0000027366, -0.0000027319,0.0000027237,0.0000027070,0.0000026936,0.0000026925, -0.0000027008,0.0000027061,0.0000027062,0.0000027027,0.0000027005, -0.0000027022,0.0000027053,0.0000027075,0.0000027062,0.0000027001, -0.0000026941,0.0000026922,0.0000026933,0.0000026957,0.0000026993, -0.0000027044,0.0000027094,0.0000027132,0.0000027170,0.0000027220, -0.0000027279,0.0000027336,0.0000027379,0.0000027400,0.0000027400, -0.0000027384,0.0000027365,0.0000027354,0.0000027355,0.0000027373, -0.0000027412,0.0000027450,0.0000027457,0.0000027411,0.0000027318, -0.0000027214,0.0000027127,0.0000027064,0.0000027034,0.0000027039, -0.0000027078,0.0000027125,0.0000027156,0.0000027125,0.0000027021, -0.0000026908,0.0000026793,0.0000026669,0.0000026620,0.0000026650, -0.0000026693,0.0000026767,0.0000026925,0.0000027042,0.0000027023, -0.0000026970,0.0000026945,0.0000026959,0.0000026997,0.0000027022, -0.0000027031,0.0000027045,0.0000027056,0.0000027085,0.0000027130, -0.0000027172,0.0000027214,0.0000027243,0.0000027256,0.0000027248, -0.0000027246,0.0000027254,0.0000027215,0.0000027069,0.0000026906, -0.0000026826,0.0000026775,0.0000026682,0.0000026596,0.0000026556, -0.0000026541,0.0000026540,0.0000026610,0.0000026778,0.0000026959, -0.0000027064,0.0000027065,0.0000026984,0.0000026915,0.0000026890, -0.0000026955,0.0000027061,0.0000027006,0.0000026942,0.0000027017, -0.0000027146,0.0000027271,0.0000027378,0.0000027443,0.0000027452, -0.0000027433,0.0000027375,0.0000027296,0.0000027217,0.0000027150, -0.0000027104,0.0000027083,0.0000027075,0.0000027071,0.0000027068, -0.0000027074,0.0000027089,0.0000027102,0.0000027104,0.0000027098, -0.0000027099,0.0000027112,0.0000027147,0.0000027227,0.0000027313, -0.0000027280,0.0000027111,0.0000027015,0.0000027106,0.0000027378, -0.0000027574,0.0000027620,0.0000027611,0.0000027579,0.0000027565, -0.0000027557,0.0000027543,0.0000027525,0.0000027505,0.0000027480, -0.0000027454,0.0000027415,0.0000027364,0.0000027336,0.0000027322, -0.0000027330,0.0000027384,0.0000027474,0.0000027577,0.0000027653, -0.0000027668,0.0000027631,0.0000027567,0.0000027537,0.0000027554, -0.0000027608,0.0000027684,0.0000027753,0.0000027792,0.0000027796, -0.0000027772,0.0000027729,0.0000027681,0.0000027622,0.0000027555, -0.0000027498,0.0000027465,0.0000027457,0.0000027448,0.0000027426, -0.0000027404,0.0000027411,0.0000027481,0.0000027585,0.0000027694, -0.0000027813,0.0000027927,0.0000028013,0.0000028059,0.0000028069, -0.0000028049,0.0000027994,0.0000027943,0.0000027903,0.0000027861, -0.0000027818,0.0000027766,0.0000027704,0.0000027651,0.0000027648, -0.0000027722,0.0000027843,0.0000027946,0.0000027993,0.0000027992, -0.0000027967,0.0000027942,0.0000027915,0.0000027865,0.0000027782, -0.0000027697,0.0000027637,0.0000027610,0.0000027624,0.0000027691, -0.0000027756,0.0000027769,0.0000027778,0.0000027844,0.0000027905, -0.0000027913,0.0000027893,0.0000027846,0.0000027784,0.0000027766, -0.0000027826,0.0000027980,0.0000028147,0.0000028254,0.0000028265, -0.0000028184,0.0000028055,0.0000027926,0.0000027826,0.0000027761, -0.0000027737,0.0000027743,0.0000027774,0.0000027821,0.0000027863, -0.0000027901,0.0000027942,0.0000027981,0.0000027991,0.0000027969, -0.0000027936,0.0000027924,0.0000027933,0.0000027950,0.0000028008, -0.0000028005,0.0000028004,0.0000028001,0.0000027994,0.0000027984, -0.0000027972,0.0000027957,0.0000027946,0.0000027925,0.0000027895, -0.0000027826,0.0000027696,0.0000027535,0.0000027408,0.0000027306, -0.0000027172,0.0000027052,0.0000027045,0.0000027145,0.0000027263, -0.0000027337,0.0000027381,0.0000027389,0.0000027382,0.0000027386, -0.0000027410,0.0000027448,0.0000027495,0.0000027542,0.0000027581, -0.0000027607,0.0000027633,0.0000027665,0.0000027703,0.0000027753, -0.0000027816,0.0000027878,0.0000027938,0.0000027995,0.0000028035, -0.0000028053,0.0000028051,0.0000028016,0.0000027933,0.0000027817, -0.0000027717,0.0000027666,0.0000027663,0.0000027664,0.0000027645, -0.0000027618,0.0000027590,0.0000027558,0.0000027534,0.0000027524, -0.0000027510,0.0000027488,0.0000027453,0.0000027385,0.0000027272, -0.0000027169,0.0000027155,0.0000027243,0.0000027310,0.0000027253, -0.0000027243,0.0000027432,0.0000027479,0.0000027338,0.0000027257, -0.0000027127,0.0000027070,0.0000027281,0.0000027517,0.0000027525, -0.0000027426,0.0000027319,0.0000027306,0.0000027346,0.0000027431, -0.0000027510,0.0000027500,0.0000027411,0.0000027324,0.0000027308, -0.0000027322,0.0000027310,0.0000027255,0.0000027151,0.0000026965, -0.0000026783,0.0000026721,0.0000026705,0.0000026687,0.0000026711, -0.0000026765,0.0000026850,0.0000026969,0.0000027105,0.0000027262, -0.0000027377,0.0000027421,0.0000027434,0.0000027410,0.0000027414, -0.0000027440,0.0000027449,0.0000027422,0.0000027344,0.0000027190, -0.0000026996,0.0000026881,0.0000026912,0.0000027069,0.0000027211, -0.0000027308,0.0000027391,0.0000027462,0.0000027490,0.0000027501, -0.0000027549,0.0000027670,0.0000027822,0.0000027944,0.0000028030, -0.0000028101,0.0000028154,0.0000028170,0.0000028152,0.0000028115, -0.0000028056,0.0000027979,0.0000027888,0.0000027792,0.0000027717, -0.0000027657,0.0000027598,0.0000027556,0.0000027526,0.0000027483, -0.0000027441,0.0000027410,0.0000027369,0.0000027324,0.0000027280, -0.0000027232,0.0000027156,0.0000027057,0.0000026971,0.0000026932, -0.0000026932,0.0000026961,0.0000027000,0.0000027044,0.0000027098, -0.0000027156,0.0000027210,0.0000027258,0.0000027305,0.0000027354, -0.0000027407,0.0000027448,0.0000027457,0.0000027429,0.0000027373, -0.0000027320,0.0000027261,0.0000027133,0.0000026982,0.0000026943, -0.0000027003,0.0000027077,0.0000027089,0.0000027068,0.0000027034, -0.0000027017,0.0000027025,0.0000027053,0.0000027064,0.0000027029, -0.0000026965,0.0000026932,0.0000026937,0.0000026970,0.0000027017, -0.0000027078,0.0000027141,0.0000027194,0.0000027245,0.0000027301, -0.0000027359,0.0000027404,0.0000027430,0.0000027437,0.0000027428, -0.0000027404,0.0000027372,0.0000027338,0.0000027319,0.0000027319, -0.0000027345,0.0000027398,0.0000027446,0.0000027465,0.0000027431, -0.0000027348,0.0000027260,0.0000027189,0.0000027122,0.0000027053, -0.0000027010,0.0000027013,0.0000027047,0.0000027088,0.0000027123, -0.0000027098,0.0000026982,0.0000026851,0.0000026747,0.0000026650, -0.0000026602,0.0000026622,0.0000026654,0.0000026765,0.0000026962, -0.0000027074,0.0000027045,0.0000026972,0.0000026923,0.0000026897, -0.0000026909,0.0000026921,0.0000026937,0.0000026956,0.0000026992, -0.0000027055,0.0000027126,0.0000027189,0.0000027235,0.0000027250, -0.0000027226,0.0000027175,0.0000027165,0.0000027194,0.0000027186, -0.0000027080,0.0000026922,0.0000026831,0.0000026780,0.0000026696, -0.0000026602,0.0000026543,0.0000026530,0.0000026553,0.0000026663, -0.0000026831,0.0000026973,0.0000027049,0.0000027052,0.0000026988, -0.0000026914,0.0000026874,0.0000026916,0.0000027032,0.0000027011, -0.0000026953,0.0000027013,0.0000027124,0.0000027255,0.0000027392, -0.0000027485,0.0000027502,0.0000027473,0.0000027412,0.0000027341, -0.0000027273,0.0000027212,0.0000027176,0.0000027169,0.0000027170, -0.0000027165,0.0000027154,0.0000027149,0.0000027151,0.0000027151, -0.0000027144,0.0000027135,0.0000027135,0.0000027153,0.0000027189, -0.0000027257,0.0000027331,0.0000027285,0.0000027099,0.0000027010, -0.0000027131,0.0000027415,0.0000027596,0.0000027643,0.0000027646, -0.0000027627,0.0000027612,0.0000027610,0.0000027600,0.0000027580, -0.0000027553,0.0000027519,0.0000027485,0.0000027429,0.0000027346, -0.0000027278,0.0000027260,0.0000027269,0.0000027329,0.0000027442, -0.0000027576,0.0000027670,0.0000027686,0.0000027639,0.0000027553, -0.0000027520,0.0000027571,0.0000027700,0.0000027839,0.0000027948, -0.0000027998,0.0000027993,0.0000027947,0.0000027873,0.0000027780, -0.0000027682,0.0000027584,0.0000027500,0.0000027446,0.0000027425, -0.0000027423,0.0000027418,0.0000027407,0.0000027412,0.0000027473, -0.0000027579,0.0000027682,0.0000027795,0.0000027913,0.0000028005, -0.0000028065,0.0000028094,0.0000028092,0.0000028048,0.0000027977, -0.0000027927,0.0000027891,0.0000027852,0.0000027807,0.0000027761, -0.0000027739,0.0000027758,0.0000027840,0.0000027945,0.0000028013, -0.0000028026,0.0000028007,0.0000027975,0.0000027938,0.0000027905, -0.0000027855,0.0000027776,0.0000027689,0.0000027635,0.0000027629, -0.0000027673,0.0000027732,0.0000027757,0.0000027742,0.0000027763, -0.0000027831,0.0000027878,0.0000027886,0.0000027874,0.0000027834, -0.0000027780,0.0000027764,0.0000027812,0.0000027962,0.0000028136, -0.0000028242,0.0000028252,0.0000028164,0.0000028016,0.0000027872, -0.0000027747,0.0000027650,0.0000027601,0.0000027602,0.0000027644, -0.0000027716,0.0000027808,0.0000027907,0.0000028000,0.0000028058, -0.0000028073,0.0000028055,0.0000028027,0.0000028019,0.0000028026, -0.0000028025,0.0000028015,0.0000028087,0.0000028083,0.0000028076, -0.0000028067,0.0000028051,0.0000028019,0.0000027984,0.0000027950, -0.0000027928,0.0000027918,0.0000027890,0.0000027823,0.0000027705, -0.0000027565,0.0000027459,0.0000027388,0.0000027306,0.0000027225, -0.0000027200,0.0000027233,0.0000027288,0.0000027346,0.0000027406, -0.0000027443,0.0000027444,0.0000027442,0.0000027460,0.0000027490, -0.0000027527,0.0000027568,0.0000027593,0.0000027594,0.0000027583, -0.0000027592,0.0000027625,0.0000027660,0.0000027717,0.0000027786, -0.0000027861,0.0000027936,0.0000028001,0.0000028051,0.0000028076, -0.0000028077,0.0000028038,0.0000027944,0.0000027810,0.0000027693, -0.0000027623,0.0000027603,0.0000027601,0.0000027600,0.0000027603, -0.0000027606,0.0000027609,0.0000027610,0.0000027607,0.0000027579, -0.0000027532,0.0000027468,0.0000027372,0.0000027259,0.0000027207, -0.0000027251,0.0000027317,0.0000027271,0.0000027201,0.0000027348, -0.0000027494,0.0000027402,0.0000027287,0.0000027172,0.0000027049, -0.0000027129,0.0000027381,0.0000027457,0.0000027410,0.0000027315, -0.0000027261,0.0000027298,0.0000027412,0.0000027530,0.0000027540, -0.0000027441,0.0000027323,0.0000027297,0.0000027327,0.0000027329, -0.0000027287,0.0000027201,0.0000027051,0.0000026856,0.0000026742, -0.0000026732,0.0000026725,0.0000026715,0.0000026751,0.0000026825, -0.0000026945,0.0000027092,0.0000027226,0.0000027325,0.0000027361, -0.0000027360,0.0000027365,0.0000027352,0.0000027383,0.0000027428, -0.0000027449,0.0000027442,0.0000027383,0.0000027233,0.0000027023, -0.0000026909,0.0000026953,0.0000027104,0.0000027195,0.0000027252, -0.0000027331,0.0000027409,0.0000027428,0.0000027432,0.0000027485, -0.0000027613,0.0000027775,0.0000027887,0.0000027947,0.0000027997, -0.0000028048,0.0000028082,0.0000028086,0.0000028076,0.0000028047, -0.0000027977,0.0000027888,0.0000027808,0.0000027754,0.0000027725, -0.0000027690,0.0000027656,0.0000027621,0.0000027574,0.0000027530, -0.0000027500,0.0000027460,0.0000027416,0.0000027368,0.0000027317, -0.0000027251,0.0000027160,0.0000027059,0.0000026993,0.0000026985, -0.0000027017,0.0000027070,0.0000027123,0.0000027175,0.0000027228, -0.0000027273,0.0000027311,0.0000027344,0.0000027377,0.0000027418, -0.0000027458,0.0000027471,0.0000027448,0.0000027395,0.0000027335, -0.0000027278,0.0000027177,0.0000027027,0.0000026950,0.0000026997, -0.0000027082,0.0000027119,0.0000027114,0.0000027089,0.0000027063, -0.0000027050,0.0000027056,0.0000027076,0.0000027059,0.0000026995, -0.0000026941,0.0000026939,0.0000026971,0.0000027023,0.0000027088, -0.0000027162,0.0000027239,0.0000027318,0.0000027399,0.0000027466, -0.0000027501,0.0000027503,0.0000027480,0.0000027447,0.0000027419, -0.0000027385,0.0000027351,0.0000027323,0.0000027313,0.0000027326, -0.0000027361,0.0000027415,0.0000027462,0.0000027478,0.0000027446, -0.0000027371,0.0000027299,0.0000027250,0.0000027197,0.0000027115, -0.0000027026,0.0000026975,0.0000026976,0.0000027008,0.0000027054, -0.0000027103,0.0000027070,0.0000026924,0.0000026794,0.0000026718, -0.0000026625,0.0000026584,0.0000026588,0.0000026633,0.0000026790, -0.0000027015,0.0000027123,0.0000027080,0.0000026986,0.0000026908, -0.0000026872,0.0000026853,0.0000026861,0.0000026876,0.0000026897, -0.0000026943,0.0000027008,0.0000027082,0.0000027160,0.0000027222, -0.0000027230,0.0000027180,0.0000027099,0.0000027075,0.0000027120, -0.0000027170,0.0000027128,0.0000026985,0.0000026861,0.0000026799, -0.0000026732,0.0000026644,0.0000026571,0.0000026541,0.0000026586, -0.0000026715,0.0000026874,0.0000026989,0.0000027068,0.0000027092, -0.0000027024,0.0000026932,0.0000026865,0.0000026888,0.0000027004, -0.0000027007,0.0000026965,0.0000027004,0.0000027096,0.0000027212, -0.0000027362,0.0000027498,0.0000027551,0.0000027528,0.0000027468, -0.0000027400,0.0000027329,0.0000027262,0.0000027221,0.0000027212, -0.0000027214,0.0000027211,0.0000027202,0.0000027193,0.0000027189, -0.0000027190,0.0000027188,0.0000027177,0.0000027171,0.0000027188, -0.0000027225,0.0000027287,0.0000027335,0.0000027272,0.0000027074, -0.0000026997,0.0000027183,0.0000027471,0.0000027633,0.0000027681, -0.0000027693,0.0000027681,0.0000027656,0.0000027647,0.0000027625, -0.0000027598,0.0000027565,0.0000027527,0.0000027487,0.0000027418, -0.0000027317,0.0000027234,0.0000027211,0.0000027219,0.0000027280, -0.0000027401,0.0000027552,0.0000027659,0.0000027674,0.0000027616, -0.0000027544,0.0000027553,0.0000027691,0.0000027884,0.0000028006, -0.0000028079,0.0000028101,0.0000028097,0.0000028081,0.0000028050, -0.0000027976,0.0000027855,0.0000027711,0.0000027565,0.0000027458, -0.0000027396,0.0000027367,0.0000027355,0.0000027353,0.0000027372, -0.0000027439,0.0000027546,0.0000027655,0.0000027770,0.0000027889, -0.0000027990,0.0000028056,0.0000028096,0.0000028110,0.0000028085, -0.0000028017,0.0000027944,0.0000027905,0.0000027881,0.0000027863, -0.0000027856,0.0000027861,0.0000027890,0.0000027936,0.0000027980, -0.0000028010,0.0000028017,0.0000028003,0.0000027967,0.0000027918, -0.0000027873,0.0000027831,0.0000027779,0.0000027725,0.0000027683, -0.0000027700,0.0000027758,0.0000027786,0.0000027764,0.0000027734, -0.0000027766,0.0000027843,0.0000027869,0.0000027858,0.0000027842, -0.0000027809,0.0000027766,0.0000027754,0.0000027810,0.0000027945, -0.0000028106,0.0000028207,0.0000028230,0.0000028162,0.0000028020, -0.0000027850,0.0000027702,0.0000027570,0.0000027488,0.0000027478, -0.0000027522,0.0000027604,0.0000027711,0.0000027844,0.0000027991, -0.0000028102,0.0000028126,0.0000028112,0.0000028087,0.0000028087, -0.0000028099,0.0000028104,0.0000028092,0.0000028086,0.0000028157, -0.0000028129,0.0000028107,0.0000028092,0.0000028065,0.0000028019, -0.0000027969,0.0000027938,0.0000027930,0.0000027915,0.0000027881, -0.0000027815,0.0000027714,0.0000027604,0.0000027528,0.0000027489, -0.0000027459,0.0000027429,0.0000027413,0.0000027414,0.0000027427, -0.0000027461,0.0000027521,0.0000027577,0.0000027593,0.0000027585, -0.0000027585,0.0000027599,0.0000027624,0.0000027654,0.0000027674, -0.0000027673,0.0000027650,0.0000027638,0.0000027641,0.0000027647, -0.0000027654,0.0000027680,0.0000027730,0.0000027814,0.0000027898, -0.0000027979,0.0000028050,0.0000028093,0.0000028105,0.0000028076, -0.0000027970,0.0000027818,0.0000027689,0.0000027612,0.0000027586, -0.0000027579,0.0000027579,0.0000027590,0.0000027604,0.0000027620, -0.0000027632,0.0000027628,0.0000027595,0.0000027541,0.0000027469, -0.0000027376,0.0000027298,0.0000027294,0.0000027329,0.0000027289, -0.0000027188,0.0000027265,0.0000027461,0.0000027452,0.0000027336, -0.0000027228,0.0000027066,0.0000027039,0.0000027239,0.0000027378, -0.0000027366,0.0000027314,0.0000027231,0.0000027226,0.0000027352, -0.0000027517,0.0000027562,0.0000027484,0.0000027342,0.0000027286, -0.0000027313,0.0000027333,0.0000027314,0.0000027255,0.0000027138, -0.0000026969,0.0000026817,0.0000026783,0.0000026796,0.0000026799, -0.0000026809,0.0000026860,0.0000026955,0.0000027086,0.0000027218, -0.0000027305,0.0000027329,0.0000027310,0.0000027297,0.0000027296, -0.0000027306,0.0000027357,0.0000027414,0.0000027441,0.0000027440, -0.0000027398,0.0000027264,0.0000027069,0.0000026952,0.0000026997, -0.0000027128,0.0000027176,0.0000027198,0.0000027264,0.0000027344, -0.0000027355,0.0000027366,0.0000027433,0.0000027572,0.0000027732, -0.0000027828,0.0000027857,0.0000027870,0.0000027892,0.0000027919, -0.0000027934,0.0000027948,0.0000027970,0.0000027949,0.0000027876, -0.0000027792,0.0000027746,0.0000027746,0.0000027753,0.0000027737, -0.0000027714,0.0000027663,0.0000027613,0.0000027585,0.0000027551, -0.0000027504,0.0000027456,0.0000027409,0.0000027349,0.0000027273, -0.0000027179,0.0000027096,0.0000027067,0.0000027091,0.0000027150, -0.0000027206,0.0000027251,0.0000027288,0.0000027317,0.0000027342, -0.0000027363,0.0000027383,0.0000027412,0.0000027452,0.0000027475, -0.0000027464,0.0000027419,0.0000027359,0.0000027297,0.0000027211, -0.0000027076,0.0000026975,0.0000026979,0.0000027072,0.0000027140, -0.0000027153,0.0000027146,0.0000027129,0.0000027115,0.0000027115, -0.0000027123,0.0000027104,0.0000027034,0.0000026959,0.0000026937, -0.0000026965,0.0000027017,0.0000027083,0.0000027162,0.0000027258, -0.0000027370,0.0000027481,0.0000027562,0.0000027590,0.0000027570, -0.0000027524,0.0000027473,0.0000027434,0.0000027406,0.0000027385, -0.0000027368,0.0000027366,0.0000027379,0.0000027409,0.0000027449, -0.0000027487,0.0000027508,0.0000027503,0.0000027462,0.0000027398, -0.0000027342,0.0000027308,0.0000027269,0.0000027193,0.0000027083, -0.0000026980,0.0000026930,0.0000026942,0.0000026984,0.0000027039, -0.0000027078,0.0000027011,0.0000026849,0.0000026748,0.0000026689, -0.0000026611,0.0000026570,0.0000026568,0.0000026636,0.0000026835, -0.0000027070,0.0000027163,0.0000027113,0.0000027017,0.0000026931, -0.0000026876,0.0000026852,0.0000026860,0.0000026873,0.0000026903, -0.0000026928,0.0000026975,0.0000027043,0.0000027123,0.0000027185, -0.0000027189,0.0000027123,0.0000027017,0.0000026978,0.0000027049, -0.0000027176,0.0000027189,0.0000027063,0.0000026912,0.0000026829, -0.0000026772,0.0000026701,0.0000026627,0.0000026591,0.0000026644, -0.0000026787,0.0000026931,0.0000027037,0.0000027137,0.0000027151, -0.0000027067,0.0000026957,0.0000026881,0.0000026882,0.0000026968, -0.0000027003,0.0000026973,0.0000026991,0.0000027065,0.0000027161, -0.0000027299,0.0000027457,0.0000027555,0.0000027563,0.0000027531, -0.0000027477,0.0000027403,0.0000027324,0.0000027265,0.0000027236, -0.0000027230,0.0000027237,0.0000027253,0.0000027270,0.0000027283, -0.0000027291,0.0000027290,0.0000027264,0.0000027232,0.0000027228, -0.0000027256,0.0000027309,0.0000027334,0.0000027246,0.0000027050, -0.0000027025,0.0000027267,0.0000027545,0.0000027684,0.0000027723, -0.0000027726,0.0000027703,0.0000027663,0.0000027635,0.0000027604, -0.0000027568,0.0000027536,0.0000027502,0.0000027462,0.0000027402, -0.0000027311,0.0000027235,0.0000027193,0.0000027191,0.0000027237, -0.0000027357,0.0000027516,0.0000027625,0.0000027633,0.0000027592, -0.0000027589,0.0000027683,0.0000027842,0.0000027959,0.0000027995, -0.0000027993,0.0000027987,0.0000027993,0.0000028018,0.0000028040, -0.0000028046,0.0000028017,0.0000027948,0.0000027814,0.0000027652, -0.0000027505,0.0000027397,0.0000027333,0.0000027297,0.0000027290, -0.0000027346,0.0000027457,0.0000027584,0.0000027709,0.0000027838, -0.0000027951,0.0000028033,0.0000028083,0.0000028110,0.0000028109, -0.0000028066,0.0000027999,0.0000027947,0.0000027932,0.0000027935, -0.0000027950,0.0000027960,0.0000027958,0.0000027955,0.0000027961, -0.0000027978,0.0000027994,0.0000027986,0.0000027951,0.0000027898, -0.0000027858,0.0000027836,0.0000027813,0.0000027801,0.0000027802, -0.0000027821,0.0000027839,0.0000027826,0.0000027772,0.0000027747, -0.0000027793,0.0000027856,0.0000027871,0.0000027852,0.0000027824, -0.0000027786,0.0000027749,0.0000027747,0.0000027805,0.0000027931, -0.0000028078,0.0000028176,0.0000028200,0.0000028171,0.0000028062, -0.0000027909,0.0000027741,0.0000027594,0.0000027461,0.0000027394, -0.0000027414,0.0000027496,0.0000027601,0.0000027738,0.0000027920, -0.0000028087,0.0000028156,0.0000028141,0.0000028116,0.0000028117, -0.0000028141,0.0000028159,0.0000028168,0.0000028174,0.0000028174, -0.0000028170,0.0000028135,0.0000028117,0.0000028102,0.0000028073, -0.0000028028,0.0000027988,0.0000027970,0.0000027952,0.0000027915, -0.0000027861,0.0000027792,0.0000027717,0.0000027656,0.0000027623, -0.0000027614,0.0000027619,0.0000027633,0.0000027646,0.0000027647, -0.0000027641,0.0000027647,0.0000027676,0.0000027689,0.0000027681, -0.0000027641,0.0000027610,0.0000027610,0.0000027634,0.0000027667, -0.0000027696,0.0000027707,0.0000027701,0.0000027702,0.0000027710, -0.0000027719,0.0000027718,0.0000027702,0.0000027685,0.0000027703, -0.0000027746,0.0000027814,0.0000027904,0.0000028004,0.0000028090, -0.0000028127,0.0000028112,0.0000028006,0.0000027854,0.0000027726, -0.0000027640,0.0000027592,0.0000027567,0.0000027564,0.0000027576, -0.0000027592,0.0000027606,0.0000027616,0.0000027614,0.0000027590, -0.0000027553,0.0000027496,0.0000027432,0.0000027384,0.0000027353, -0.0000027294,0.0000027191,0.0000027216,0.0000027406,0.0000027455, -0.0000027372,0.0000027288,0.0000027130,0.0000027001,0.0000027105, -0.0000027303,0.0000027320,0.0000027292,0.0000027228,0.0000027165, -0.0000027261,0.0000027467,0.0000027564,0.0000027518,0.0000027375, -0.0000027293,0.0000027302,0.0000027323,0.0000027318,0.0000027292, -0.0000027223,0.0000027097,0.0000026947,0.0000026865,0.0000026882, -0.0000026910,0.0000026937,0.0000026968,0.0000027023,0.0000027107, -0.0000027204,0.0000027278,0.0000027308,0.0000027294,0.0000027266, -0.0000027264,0.0000027265,0.0000027288,0.0000027330,0.0000027386, -0.0000027420,0.0000027435,0.0000027395,0.0000027283,0.0000027102, -0.0000027001,0.0000027056,0.0000027146,0.0000027148,0.0000027143, -0.0000027199,0.0000027265,0.0000027276,0.0000027306,0.0000027400, -0.0000027544,0.0000027686,0.0000027764,0.0000027779,0.0000027761, -0.0000027749,0.0000027760,0.0000027769,0.0000027778,0.0000027816, -0.0000027845,0.0000027838,0.0000027785,0.0000027727,0.0000027722, -0.0000027758,0.0000027784,0.0000027780,0.0000027742,0.0000027686, -0.0000027649,0.0000027624,0.0000027588,0.0000027549,0.0000027516, -0.0000027469,0.0000027408,0.0000027332,0.0000027248,0.0000027196, -0.0000027198,0.0000027252,0.0000027305,0.0000027335,0.0000027351, -0.0000027353,0.0000027358,0.0000027370,0.0000027381,0.0000027401, -0.0000027436,0.0000027465,0.0000027468,0.0000027436,0.0000027382, -0.0000027317,0.0000027237,0.0000027118,0.0000027000,0.0000026976, -0.0000027045,0.0000027137,0.0000027185,0.0000027197,0.0000027196, -0.0000027187,0.0000027186,0.0000027194,0.0000027177,0.0000027095, -0.0000026997,0.0000026944,0.0000026950,0.0000026998,0.0000027071, -0.0000027160,0.0000027268,0.0000027398,0.0000027529,0.0000027618, -0.0000027641,0.0000027609,0.0000027558,0.0000027512,0.0000027480, -0.0000027469,0.0000027473,0.0000027480,0.0000027488,0.0000027501, -0.0000027521,0.0000027547,0.0000027570,0.0000027577,0.0000027566, -0.0000027537,0.0000027489,0.0000027436,0.0000027394,0.0000027361, -0.0000027319,0.0000027249,0.0000027143,0.0000027015,0.0000026919, -0.0000026898,0.0000026933,0.0000026976,0.0000027015,0.0000027023, -0.0000026925,0.0000026773,0.0000026705,0.0000026673,0.0000026606, -0.0000026565,0.0000026577,0.0000026672,0.0000026889,0.0000027111, -0.0000027171,0.0000027130,0.0000027043,0.0000026959,0.0000026904, -0.0000026894,0.0000026908,0.0000026921,0.0000026928,0.0000026947, -0.0000026985,0.0000027038,0.0000027097,0.0000027138,0.0000027134, -0.0000027052,0.0000026934,0.0000026898,0.0000027004,0.0000027194, -0.0000027261,0.0000027146,0.0000026970,0.0000026862,0.0000026803, -0.0000026753,0.0000026696,0.0000026678,0.0000026744,0.0000026884, -0.0000027006,0.0000027115,0.0000027201,0.0000027201,0.0000027094, -0.0000026983,0.0000026904,0.0000026881,0.0000026928,0.0000026976, -0.0000026967,0.0000026974,0.0000027037,0.0000027131,0.0000027240, -0.0000027367,0.0000027484,0.0000027549,0.0000027560,0.0000027540, -0.0000027487,0.0000027418,0.0000027359,0.0000027324,0.0000027310, -0.0000027313,0.0000027331,0.0000027358,0.0000027384,0.0000027399, -0.0000027394,0.0000027354,0.0000027298,0.0000027272,0.0000027282, -0.0000027323,0.0000027335,0.0000027208,0.0000027044,0.0000027099, -0.0000027376,0.0000027623,0.0000027723,0.0000027734,0.0000027721, -0.0000027679,0.0000027623,0.0000027573,0.0000027537,0.0000027508, -0.0000027491,0.0000027477,0.0000027454,0.0000027414,0.0000027341, -0.0000027268,0.0000027209,0.0000027181,0.0000027203,0.0000027316, -0.0000027470,0.0000027571,0.0000027597,0.0000027618,0.0000027700, -0.0000027791,0.0000027854,0.0000027870,0.0000027868,0.0000027858, -0.0000027856,0.0000027869,0.0000027882,0.0000027902,0.0000027934, -0.0000027971,0.0000027992,0.0000027959,0.0000027875,0.0000027761, -0.0000027632,0.0000027500,0.0000027382,0.0000027310,0.0000027309, -0.0000027376,0.0000027504,0.0000027639,0.0000027778,0.0000027907, -0.0000028010,0.0000028085,0.0000028125,0.0000028130,0.0000028112, -0.0000028060,0.0000028002,0.0000027966,0.0000027962,0.0000027962, -0.0000027958,0.0000027935,0.0000027916,0.0000027924,0.0000027951, -0.0000027974,0.0000027973,0.0000027941,0.0000027895,0.0000027870, -0.0000027876,0.0000027899,0.0000027923,0.0000027947,0.0000027937, -0.0000027888,0.0000027828,0.0000027799,0.0000027809,0.0000027854, -0.0000027877,0.0000027872,0.0000027854,0.0000027829,0.0000027784, -0.0000027745,0.0000027740,0.0000027785,0.0000027891,0.0000028019, -0.0000028120,0.0000028156,0.0000028135,0.0000028065,0.0000027962, -0.0000027851,0.0000027730,0.0000027595,0.0000027448,0.0000027375, -0.0000027415,0.0000027511,0.0000027627,0.0000027805,0.0000028019, -0.0000028146,0.0000028160,0.0000028127,0.0000028120,0.0000028141, -0.0000028184,0.0000028226,0.0000028250,0.0000028248,0.0000028214, -0.0000028157,0.0000028135,0.0000028125,0.0000028113,0.0000028098, -0.0000028075,0.0000028065,0.0000028045,0.0000027996,0.0000027918, -0.0000027833,0.0000027764,0.0000027725,0.0000027716,0.0000027727, -0.0000027746,0.0000027765,0.0000027788,0.0000027804,0.0000027795, -0.0000027762,0.0000027726,0.0000027700,0.0000027668,0.0000027624, -0.0000027574,0.0000027554,0.0000027580,0.0000027628,0.0000027667, -0.0000027687,0.0000027698,0.0000027702,0.0000027703,0.0000027712, -0.0000027733,0.0000027764,0.0000027792,0.0000027786,0.0000027759, -0.0000027733,0.0000027713,0.0000027716,0.0000027789,0.0000027914, -0.0000028046,0.0000028121,0.0000028109,0.0000028019,0.0000027900, -0.0000027787,0.0000027685,0.0000027606,0.0000027564,0.0000027563, -0.0000027575,0.0000027585,0.0000027595,0.0000027608,0.0000027614, -0.0000027611,0.0000027597,0.0000027560,0.0000027492,0.0000027400, -0.0000027293,0.0000027184,0.0000027194,0.0000027368,0.0000027438, -0.0000027376,0.0000027324,0.0000027207,0.0000027027,0.0000027006, -0.0000027196,0.0000027293,0.0000027276,0.0000027232,0.0000027141, -0.0000027165,0.0000027379,0.0000027545,0.0000027537,0.0000027405, -0.0000027304,0.0000027304,0.0000027322,0.0000027317,0.0000027308, -0.0000027281,0.0000027211,0.0000027101,0.0000027013,0.0000027006, -0.0000027037,0.0000027073,0.0000027107,0.0000027136,0.0000027174, -0.0000027221,0.0000027263,0.0000027283,0.0000027284,0.0000027272, -0.0000027262,0.0000027271,0.0000027274,0.0000027290,0.0000027315, -0.0000027360,0.0000027404,0.0000027417,0.0000027382,0.0000027274, -0.0000027113,0.0000027047,0.0000027120,0.0000027159,0.0000027113, -0.0000027084,0.0000027141,0.0000027182,0.0000027198,0.0000027257, -0.0000027382,0.0000027530,0.0000027653,0.0000027713,0.0000027720, -0.0000027691,0.0000027654,0.0000027644,0.0000027641,0.0000027640, -0.0000027663,0.0000027691,0.0000027717,0.0000027737,0.0000027724, -0.0000027703,0.0000027717,0.0000027764,0.0000027799,0.0000027793, -0.0000027753,0.0000027707,0.0000027677,0.0000027659,0.0000027642, -0.0000027626,0.0000027604,0.0000027565,0.0000027512,0.0000027434, -0.0000027357,0.0000027331,0.0000027361,0.0000027404,0.0000027420, -0.0000027409,0.0000027385,0.0000027372,0.0000027376,0.0000027386, -0.0000027403,0.0000027431,0.0000027459,0.0000027464,0.0000027442, -0.0000027398,0.0000027339,0.0000027263,0.0000027156,0.0000027032, -0.0000026971,0.0000027014,0.0000027110,0.0000027193,0.0000027240, -0.0000027258,0.0000027257,0.0000027255,0.0000027261,0.0000027247, -0.0000027171,0.0000027062,0.0000026974,0.0000026947,0.0000026971, -0.0000027051,0.0000027161,0.0000027280,0.0000027412,0.0000027547, -0.0000027637,0.0000027648,0.0000027623,0.0000027583,0.0000027554, -0.0000027553,0.0000027567,0.0000027587,0.0000027609,0.0000027622, -0.0000027626,0.0000027625,0.0000027628,0.0000027640,0.0000027646, -0.0000027637,0.0000027611,0.0000027572,0.0000027521,0.0000027471, -0.0000027426,0.0000027381,0.0000027329,0.0000027259,0.0000027163, -0.0000027036,0.0000026923,0.0000026886,0.0000026907,0.0000026941, -0.0000026956,0.0000026975,0.0000026959,0.0000026836,0.0000026699, -0.0000026675,0.0000026671,0.0000026625,0.0000026592,0.0000026618, -0.0000026724,0.0000026943,0.0000027132,0.0000027167,0.0000027126, -0.0000027038,0.0000026959,0.0000026925,0.0000026937,0.0000026959, -0.0000026966,0.0000026965,0.0000026981,0.0000027014,0.0000027046, -0.0000027074,0.0000027081,0.0000027057,0.0000026969,0.0000026868, -0.0000026842,0.0000026982,0.0000027210,0.0000027313,0.0000027213, -0.0000027023,0.0000026889,0.0000026823,0.0000026783,0.0000026752, -0.0000026764,0.0000026853,0.0000026969,0.0000027072,0.0000027165, -0.0000027229,0.0000027218,0.0000027112,0.0000026998,0.0000026920, -0.0000026877,0.0000026889,0.0000026929,0.0000026939,0.0000026949, -0.0000027020,0.0000027122,0.0000027200,0.0000027267,0.0000027352, -0.0000027449,0.0000027528,0.0000027545,0.0000027531,0.0000027494, -0.0000027461,0.0000027439,0.0000027426,0.0000027418,0.0000027420, -0.0000027436,0.0000027464,0.0000027480,0.0000027469,0.0000027414, -0.0000027346,0.0000027303,0.0000027300,0.0000027329,0.0000027317, -0.0000027170,0.0000027060,0.0000027193,0.0000027490,0.0000027678, -0.0000027725,0.0000027716,0.0000027684,0.0000027631,0.0000027564, -0.0000027508,0.0000027475,0.0000027469,0.0000027477,0.0000027482, -0.0000027475,0.0000027449,0.0000027394,0.0000027325,0.0000027254, -0.0000027187,0.0000027191,0.0000027286,0.0000027427,0.0000027532, -0.0000027621,0.0000027722,0.0000027789,0.0000027783,0.0000027755, -0.0000027781,0.0000027823,0.0000027846,0.0000027859,0.0000027874, -0.0000027882,0.0000027873,0.0000027866,0.0000027875,0.0000027886, -0.0000027870,0.0000027843,0.0000027800,0.0000027754,0.0000027686, -0.0000027590,0.0000027491,0.0000027423,0.0000027421,0.0000027487, -0.0000027589,0.0000027703,0.0000027825,0.0000027940,0.0000028036, -0.0000028104,0.0000028130,0.0000028113,0.0000028067,0.0000028003, -0.0000027946,0.0000027909,0.0000027886,0.0000027865,0.0000027854, -0.0000027862,0.0000027896,0.0000027941,0.0000027970,0.0000027966, -0.0000027940,0.0000027907,0.0000027896,0.0000027937,0.0000028007, -0.0000028058,0.0000028059,0.0000027992,0.0000027895,0.0000027831, -0.0000027846,0.0000027910,0.0000027952,0.0000027938,0.0000027898, -0.0000027865,0.0000027838,0.0000027804,0.0000027764,0.0000027750, -0.0000027779,0.0000027860,0.0000027957,0.0000028031,0.0000028071, -0.0000028062,0.0000028025,0.0000027972,0.0000027915,0.0000027852, -0.0000027764,0.0000027624,0.0000027460,0.0000027406,0.0000027454, -0.0000027550,0.0000027693,0.0000027912,0.0000028101,0.0000028158, -0.0000028140,0.0000028111,0.0000028122,0.0000028178,0.0000028248, -0.0000028297,0.0000028298,0.0000028264,0.0000028207,0.0000028131, -0.0000028123,0.0000028118,0.0000028107,0.0000028096,0.0000028103, -0.0000028110,0.0000028099,0.0000028041,0.0000027941,0.0000027839, -0.0000027771,0.0000027757,0.0000027775,0.0000027813,0.0000027851, -0.0000027870,0.0000027871,0.0000027860,0.0000027827,0.0000027771, -0.0000027707,0.0000027643,0.0000027584,0.0000027547,0.0000027529, -0.0000027540,0.0000027597,0.0000027659,0.0000027696,0.0000027699, -0.0000027694,0.0000027691,0.0000027690,0.0000027696,0.0000027708, -0.0000027736,0.0000027788,0.0000027833,0.0000027839,0.0000027830, -0.0000027780,0.0000027712,0.0000027676,0.0000027696,0.0000027810, -0.0000027960,0.0000028054,0.0000028058,0.0000028001,0.0000027927, -0.0000027826,0.0000027710,0.0000027615,0.0000027575,0.0000027577, -0.0000027580,0.0000027581,0.0000027592,0.0000027613,0.0000027634, -0.0000027651,0.0000027645,0.0000027576,0.0000027452,0.0000027290, -0.0000027173,0.0000027191,0.0000027360,0.0000027437,0.0000027363, -0.0000027319,0.0000027264,0.0000027095,0.0000026969,0.0000027067, -0.0000027251,0.0000027279,0.0000027252,0.0000027154,0.0000027112, -0.0000027274,0.0000027493,0.0000027535,0.0000027430,0.0000027317, -0.0000027312,0.0000027330,0.0000027325,0.0000027322,0.0000027317, -0.0000027290,0.0000027229,0.0000027164,0.0000027152,0.0000027178, -0.0000027207,0.0000027225,0.0000027233,0.0000027240,0.0000027252, -0.0000027270,0.0000027280,0.0000027287,0.0000027296,0.0000027312, -0.0000027318,0.0000027323,0.0000027316,0.0000027312,0.0000027322, -0.0000027354,0.0000027398,0.0000027406,0.0000027360,0.0000027243, -0.0000027104,0.0000027089,0.0000027177,0.0000027173,0.0000027074, -0.0000027029,0.0000027091,0.0000027107,0.0000027132,0.0000027231, -0.0000027376,0.0000027523,0.0000027627,0.0000027671,0.0000027679, -0.0000027661,0.0000027624,0.0000027595,0.0000027571,0.0000027553, -0.0000027557,0.0000027576,0.0000027584,0.0000027616,0.0000027669, -0.0000027695,0.0000027694,0.0000027703,0.0000027757,0.0000027793, -0.0000027790,0.0000027762,0.0000027728,0.0000027715,0.0000027717, -0.0000027720,0.0000027722,0.0000027711,0.0000027683,0.0000027621, -0.0000027529,0.0000027467,0.0000027469,0.0000027493,0.0000027492, -0.0000027456,0.0000027404,0.0000027378,0.0000027375,0.0000027392, -0.0000027416,0.0000027443,0.0000027465,0.0000027464,0.0000027441, -0.0000027403,0.0000027354,0.0000027283,0.0000027187,0.0000027069, -0.0000026984,0.0000026987,0.0000027070,0.0000027177,0.0000027266, -0.0000027313,0.0000027322,0.0000027320,0.0000027323,0.0000027307, -0.0000027238,0.0000027127,0.0000027019,0.0000026960,0.0000026961, -0.0000027033,0.0000027166,0.0000027298,0.0000027420,0.0000027542, -0.0000027632,0.0000027648,0.0000027621,0.0000027599,0.0000027596, -0.0000027619,0.0000027652,0.0000027683,0.0000027706,0.0000027718, -0.0000027712,0.0000027693,0.0000027673,0.0000027663,0.0000027666, -0.0000027668,0.0000027649,0.0000027623,0.0000027582,0.0000027524, -0.0000027462,0.0000027404,0.0000027347,0.0000027290,0.0000027225, -0.0000027138,0.0000027029,0.0000026932,0.0000026897,0.0000026913, -0.0000026933,0.0000026924,0.0000026928,0.0000026945,0.0000026890, -0.0000026737,0.0000026639,0.0000026662,0.0000026689,0.0000026668, -0.0000026647,0.0000026672,0.0000026797,0.0000027000,0.0000027140, -0.0000027150,0.0000027095,0.0000027005,0.0000026940,0.0000026934, -0.0000026959,0.0000026980,0.0000026986,0.0000026983,0.0000027002, -0.0000027033,0.0000027044,0.0000027037,0.0000027009,0.0000026965, -0.0000026897,0.0000026831,0.0000026824,0.0000026975,0.0000027213, -0.0000027322,0.0000027245,0.0000027055,0.0000026909,0.0000026835, -0.0000026799,0.0000026794,0.0000026838,0.0000026923,0.0000027015, -0.0000027103,0.0000027190,0.0000027234,0.0000027217,0.0000027128, -0.0000027010,0.0000026928,0.0000026876,0.0000026858,0.0000026871, -0.0000026888,0.0000026916,0.0000026999,0.0000027098,0.0000027168, -0.0000027195,0.0000027221,0.0000027294,0.0000027403,0.0000027478, -0.0000027512,0.0000027515,0.0000027519,0.0000027519,0.0000027514, -0.0000027496,0.0000027481,0.0000027487,0.0000027514,0.0000027532, -0.0000027517,0.0000027455,0.0000027379,0.0000027321,0.0000027308, -0.0000027328,0.0000027283,0.0000027131,0.0000027091,0.0000027317, -0.0000027588,0.0000027692,0.0000027693,0.0000027678,0.0000027654, -0.0000027600,0.0000027528,0.0000027473,0.0000027450,0.0000027462, -0.0000027492,0.0000027517,0.0000027528,0.0000027526,0.0000027505, -0.0000027458,0.0000027398,0.0000027316,0.0000027285,0.0000027340, -0.0000027466,0.0000027600,0.0000027739,0.0000027804,0.0000027752, -0.0000027667,0.0000027677,0.0000027778,0.0000027878,0.0000027921, -0.0000027944,0.0000027974,0.0000027985,0.0000027974,0.0000027953, -0.0000027936,0.0000027911,0.0000027853,0.0000027774,0.0000027708, -0.0000027668,0.0000027645,0.0000027618,0.0000027583,0.0000027553, -0.0000027538,0.0000027551,0.0000027598,0.0000027656,0.0000027727, -0.0000027809,0.0000027899,0.0000027983,0.0000028037,0.0000028044, -0.0000028001,0.0000027935,0.0000027862,0.0000027808,0.0000027773, -0.0000027762,0.0000027781,0.0000027828,0.0000027882,0.0000027937, -0.0000027969,0.0000027964,0.0000027941,0.0000027923,0.0000027932, -0.0000028000,0.0000028094,0.0000028139,0.0000028100,0.0000027998, -0.0000027900,0.0000027880,0.0000027941,0.0000028019,0.0000028052, -0.0000028028,0.0000027963,0.0000027899,0.0000027856,0.0000027828, -0.0000027806,0.0000027795,0.0000027812,0.0000027868,0.0000027936, -0.0000027978,0.0000027987,0.0000027986,0.0000027969,0.0000027954, -0.0000027926,0.0000027888,0.0000027843,0.0000027767,0.0000027615, -0.0000027464,0.0000027436,0.0000027505,0.0000027622,0.0000027807, -0.0000028017,0.0000028134,0.0000028146,0.0000028124,0.0000028117, -0.0000028156,0.0000028238,0.0000028302,0.0000028317,0.0000028292, -0.0000028228,0.0000028164,0.0000028083,0.0000028083,0.0000028082, -0.0000028072,0.0000028069,0.0000028089,0.0000028109,0.0000028105, -0.0000028065,0.0000027990,0.0000027907,0.0000027854,0.0000027845, -0.0000027871,0.0000027908,0.0000027934,0.0000027935,0.0000027918, -0.0000027885,0.0000027841,0.0000027784,0.0000027717,0.0000027650, -0.0000027597,0.0000027551,0.0000027524,0.0000027523,0.0000027565, -0.0000027623,0.0000027652,0.0000027649,0.0000027637,0.0000027631, -0.0000027638,0.0000027658,0.0000027682,0.0000027698,0.0000027729, -0.0000027785,0.0000027824,0.0000027825,0.0000027810,0.0000027770, -0.0000027719,0.0000027689,0.0000027700,0.0000027769,0.0000027858, -0.0000027930,0.0000027955,0.0000027954,0.0000027906,0.0000027809, -0.0000027699,0.0000027610,0.0000027581,0.0000027578,0.0000027575, -0.0000027579,0.0000027599,0.0000027628,0.0000027654,0.0000027662, -0.0000027611,0.0000027477,0.0000027291,0.0000027175,0.0000027203, -0.0000027372,0.0000027451,0.0000027371,0.0000027298,0.0000027278, -0.0000027158,0.0000026988,0.0000026973,0.0000027153,0.0000027279, -0.0000027283,0.0000027198,0.0000027100,0.0000027179,0.0000027416, -0.0000027513,0.0000027452,0.0000027335,0.0000027315,0.0000027344, -0.0000027341,0.0000027338,0.0000027349,0.0000027343,0.0000027309, -0.0000027263,0.0000027239,0.0000027257,0.0000027285,0.0000027292, -0.0000027275,0.0000027264,0.0000027260,0.0000027271,0.0000027291, -0.0000027308,0.0000027334,0.0000027370,0.0000027398,0.0000027397, -0.0000027382,0.0000027361,0.0000027347,0.0000027344,0.0000027366, -0.0000027404,0.0000027401,0.0000027326,0.0000027194,0.0000027097, -0.0000027137,0.0000027215,0.0000027169,0.0000027035,0.0000026987, -0.0000027040,0.0000027037,0.0000027080,0.0000027209,0.0000027364, -0.0000027503,0.0000027586,0.0000027621,0.0000027645,0.0000027654, -0.0000027635,0.0000027607,0.0000027568,0.0000027523,0.0000027501, -0.0000027517,0.0000027525,0.0000027530,0.0000027561,0.0000027625, -0.0000027684,0.0000027683,0.0000027696,0.0000027735,0.0000027776, -0.0000027790,0.0000027776,0.0000027762,0.0000027774,0.0000027788, -0.0000027803,0.0000027809,0.0000027804,0.0000027769,0.0000027685, -0.0000027604,0.0000027581,0.0000027583,0.0000027564,0.0000027504, -0.0000027423,0.0000027372,0.0000027366,0.0000027390,0.0000027429, -0.0000027462,0.0000027478,0.0000027464,0.0000027431,0.0000027396, -0.0000027354,0.0000027290,0.0000027204,0.0000027099,0.0000027002, -0.0000026978,0.0000027030,0.0000027147,0.0000027272,0.0000027351, -0.0000027376,0.0000027378,0.0000027375,0.0000027346,0.0000027283, -0.0000027173,0.0000027062,0.0000026980,0.0000026963,0.0000027035, -0.0000027187,0.0000027329,0.0000027431,0.0000027530,0.0000027613, -0.0000027636,0.0000027618,0.0000027607,0.0000027627,0.0000027671, -0.0000027718,0.0000027758,0.0000027788,0.0000027805,0.0000027803, -0.0000027778,0.0000027740,0.0000027708,0.0000027686,0.0000027676, -0.0000027664,0.0000027636,0.0000027592,0.0000027536,0.0000027467, -0.0000027397,0.0000027336,0.0000027283,0.0000027230,0.0000027176, -0.0000027109,0.0000027031,0.0000026973,0.0000026954,0.0000026956, -0.0000026943,0.0000026908,0.0000026891,0.0000026903,0.0000026895, -0.0000026797,0.0000026648,0.0000026604,0.0000026659,0.0000026706, -0.0000026731,0.0000026726,0.0000026761,0.0000026889,0.0000027050, -0.0000027126,0.0000027116,0.0000027039,0.0000026960,0.0000026929, -0.0000026941,0.0000026961,0.0000026974,0.0000026972,0.0000026975, -0.0000027006,0.0000027034,0.0000027022,0.0000026975,0.0000026922, -0.0000026893,0.0000026866,0.0000026828,0.0000026833,0.0000026973, -0.0000027198,0.0000027315,0.0000027251,0.0000027065,0.0000026917, -0.0000026847,0.0000026818,0.0000026826,0.0000026884,0.0000026958, -0.0000027028,0.0000027106,0.0000027187,0.0000027223,0.0000027220, -0.0000027147,0.0000027024,0.0000026931,0.0000026879,0.0000026844, -0.0000026826,0.0000026836,0.0000026881,0.0000026952,0.0000027043, -0.0000027121,0.0000027150,0.0000027145,0.0000027164,0.0000027241, -0.0000027332,0.0000027411,0.0000027476,0.0000027526,0.0000027564, -0.0000027572,0.0000027552,0.0000027524,0.0000027517,0.0000027543, -0.0000027563,0.0000027546,0.0000027482,0.0000027399,0.0000027329, -0.0000027315,0.0000027323,0.0000027242,0.0000027110,0.0000027168, -0.0000027451,0.0000027650,0.0000027666,0.0000027653,0.0000027662, -0.0000027650,0.0000027589,0.0000027513,0.0000027466,0.0000027462, -0.0000027492,0.0000027554,0.0000027616,0.0000027666,0.0000027711, -0.0000027738,0.0000027722,0.0000027673,0.0000027596,0.0000027533, -0.0000027563,0.0000027664,0.0000027776,0.0000027834,0.0000027772, -0.0000027620,0.0000027580,0.0000027690,0.0000027865,0.0000027978, -0.0000028019,0.0000028031,0.0000028044,0.0000028046,0.0000028034, -0.0000028025,0.0000028026,0.0000028012,0.0000027964,0.0000027891, -0.0000027814,0.0000027733,0.0000027657,0.0000027579,0.0000027521, -0.0000027503,0.0000027522,0.0000027557,0.0000027604,0.0000027644, -0.0000027676,0.0000027709,0.0000027760,0.0000027830,0.0000027896, -0.0000027925,0.0000027909,0.0000027844,0.0000027768,0.0000027712, -0.0000027698,0.0000027708,0.0000027749,0.0000027812,0.0000027879, -0.0000027927,0.0000027951,0.0000027954,0.0000027939,0.0000027938, -0.0000027976,0.0000028058,0.0000028137,0.0000028150,0.0000028083, -0.0000027987,0.0000027943,0.0000027970,0.0000028042,0.0000028106, -0.0000028133,0.0000028113,0.0000028039,0.0000027951,0.0000027897, -0.0000027879,0.0000027872,0.0000027870,0.0000027881,0.0000027913, -0.0000027950,0.0000027971,0.0000027964,0.0000027934,0.0000027912, -0.0000027898,0.0000027894,0.0000027879,0.0000027859,0.0000027836, -0.0000027756,0.0000027590,0.0000027468,0.0000027474,0.0000027570, -0.0000027734,0.0000027930,0.0000028078,0.0000028134,0.0000028129, -0.0000028120,0.0000028148,0.0000028217,0.0000028282,0.0000028310, -0.0000028297,0.0000028242,0.0000028166,0.0000028107,0.0000028024, -0.0000028031,0.0000028035,0.0000028029,0.0000028040,0.0000028059, -0.0000028074,0.0000028074,0.0000028061,0.0000028041,0.0000028022, -0.0000028014,0.0000028016,0.0000028029,0.0000028045,0.0000028046, -0.0000028030,0.0000027998,0.0000027961,0.0000027927,0.0000027888, -0.0000027828,0.0000027744,0.0000027643,0.0000027527,0.0000027417, -0.0000027374,0.0000027396,0.0000027464,0.0000027522,0.0000027561, -0.0000027573,0.0000027579,0.0000027595,0.0000027629,0.0000027664, -0.0000027674,0.0000027675,0.0000027701,0.0000027752,0.0000027773, -0.0000027756,0.0000027724,0.0000027701,0.0000027704,0.0000027735, -0.0000027782,0.0000027806,0.0000027807,0.0000027804,0.0000027819, -0.0000027844,0.0000027818,0.0000027740,0.0000027648,0.0000027581, -0.0000027559,0.0000027552,0.0000027556,0.0000027573,0.0000027595, -0.0000027610,0.0000027611,0.0000027562,0.0000027441,0.0000027285, -0.0000027190,0.0000027226,0.0000027395,0.0000027480,0.0000027405, -0.0000027306,0.0000027276,0.0000027196,0.0000027031,0.0000026934, -0.0000027035,0.0000027223,0.0000027293,0.0000027251,0.0000027126, -0.0000027131,0.0000027327,0.0000027483,0.0000027464,0.0000027360, -0.0000027323,0.0000027356,0.0000027367,0.0000027365,0.0000027382, -0.0000027387,0.0000027356,0.0000027312,0.0000027278,0.0000027272, -0.0000027290,0.0000027303,0.0000027298,0.0000027275,0.0000027261, -0.0000027266,0.0000027287,0.0000027318,0.0000027352,0.0000027398, -0.0000027443,0.0000027463,0.0000027442,0.0000027415,0.0000027400, -0.0000027389,0.0000027373,0.0000027389,0.0000027417,0.0000027387, -0.0000027271,0.0000027136,0.0000027108,0.0000027206,0.0000027237, -0.0000027142,0.0000026995,0.0000026959,0.0000026985,0.0000026975, -0.0000027031,0.0000027172,0.0000027333,0.0000027458,0.0000027527, -0.0000027572,0.0000027625,0.0000027662,0.0000027670,0.0000027653, -0.0000027608,0.0000027551,0.0000027508,0.0000027507,0.0000027515, -0.0000027515,0.0000027508,0.0000027525,0.0000027614,0.0000027687, -0.0000027691,0.0000027693,0.0000027720,0.0000027769,0.0000027798, -0.0000027802,0.0000027823,0.0000027845,0.0000027859,0.0000027865, -0.0000027867,0.0000027856,0.0000027799,0.0000027722,0.0000027683, -0.0000027670,0.0000027641,0.0000027567,0.0000027464,0.0000027388, -0.0000027365,0.0000027384,0.0000027433,0.0000027472,0.0000027480, -0.0000027461,0.0000027416,0.0000027377,0.0000027340,0.0000027281, -0.0000027203,0.0000027114,0.0000027017,0.0000026965,0.0000026995, -0.0000027108,0.0000027258,0.0000027365,0.0000027404,0.0000027416, -0.0000027416,0.0000027383,0.0000027303,0.0000027194,0.0000027089, -0.0000027005,0.0000026975,0.0000027051,0.0000027221,0.0000027377, -0.0000027460,0.0000027524,0.0000027595,0.0000027623,0.0000027614, -0.0000027613,0.0000027651,0.0000027713,0.0000027774,0.0000027829, -0.0000027876,0.0000027906,0.0000027910,0.0000027887,0.0000027839, -0.0000027785,0.0000027743,0.0000027705,0.0000027670,0.0000027633, -0.0000027582,0.0000027522,0.0000027459,0.0000027394,0.0000027335, -0.0000027295,0.0000027256,0.0000027209,0.0000027167,0.0000027129, -0.0000027093,0.0000027067,0.0000027043,0.0000027010,0.0000026956, -0.0000026899,0.0000026870,0.0000026868,0.0000026868,0.0000026824, -0.0000026699,0.0000026587,0.0000026579,0.0000026664,0.0000026752, -0.0000026790,0.0000026798,0.0000026855,0.0000026971,0.0000027069, -0.0000027086,0.0000027034,0.0000026960,0.0000026915,0.0000026918, -0.0000026926,0.0000026931,0.0000026932,0.0000026933,0.0000026960, -0.0000027010,0.0000027020,0.0000026968,0.0000026894,0.0000026864, -0.0000026881,0.0000026877,0.0000026845,0.0000026855,0.0000026973, -0.0000027170,0.0000027285,0.0000027234,0.0000027062,0.0000026919, -0.0000026864,0.0000026846,0.0000026858,0.0000026913,0.0000026978, -0.0000027030,0.0000027104,0.0000027176,0.0000027219,0.0000027233, -0.0000027177,0.0000027049,0.0000026938,0.0000026884,0.0000026845, -0.0000026811,0.0000026814,0.0000026847,0.0000026888,0.0000026955, -0.0000027038,0.0000027098,0.0000027108,0.0000027100,0.0000027130, -0.0000027196,0.0000027282,0.0000027384,0.0000027491,0.0000027575, -0.0000027607,0.0000027593,0.0000027555,0.0000027541,0.0000027567, -0.0000027584,0.0000027562,0.0000027493,0.0000027405,0.0000027333, -0.0000027324,0.0000027315,0.0000027201,0.0000027136,0.0000027292, -0.0000027571,0.0000027664,0.0000027640,0.0000027644,0.0000027663, -0.0000027649,0.0000027588,0.0000027530,0.0000027523,0.0000027548, -0.0000027604,0.0000027701,0.0000027795,0.0000027865,0.0000027914, -0.0000027935,0.0000027920,0.0000027860,0.0000027786,0.0000027736, -0.0000027762,0.0000027827,0.0000027854,0.0000027784,0.0000027610, -0.0000027503,0.0000027585,0.0000027798,0.0000027984,0.0000028068, -0.0000028072,0.0000028050,0.0000028039,0.0000028022,0.0000027995, -0.0000027981,0.0000027982,0.0000027970,0.0000027944,0.0000027911, -0.0000027892,0.0000027870,0.0000027825,0.0000027744,0.0000027624, -0.0000027508,0.0000027444,0.0000027439,0.0000027492,0.0000027579, -0.0000027642,0.0000027670,0.0000027692,0.0000027736,0.0000027790, -0.0000027827,0.0000027829,0.0000027787,0.0000027719,0.0000027664, -0.0000027657,0.0000027693,0.0000027753,0.0000027824,0.0000027874, -0.0000027902,0.0000027920,0.0000027925,0.0000027925,0.0000027941, -0.0000028008,0.0000028097,0.0000028144,0.0000028114,0.0000028031, -0.0000027977,0.0000027999,0.0000028067,0.0000028126,0.0000028166, -0.0000028185,0.0000028171,0.0000028099,0.0000028011,0.0000027961, -0.0000027950,0.0000027948,0.0000027943,0.0000027949,0.0000027967, -0.0000027982,0.0000027984,0.0000027968,0.0000027932,0.0000027886, -0.0000027864,0.0000027859,0.0000027857,0.0000027854,0.0000027861, -0.0000027847,0.0000027727,0.0000027558,0.0000027488,0.0000027528, -0.0000027675,0.0000027870,0.0000028024,0.0000028104,0.0000028122, -0.0000028123,0.0000028148,0.0000028204,0.0000028254,0.0000028282, -0.0000028277,0.0000028236,0.0000028169,0.0000028095,0.0000028041, -0.0000027971,0.0000027985,0.0000027994,0.0000028003,0.0000028019, -0.0000028034,0.0000028041,0.0000028041,0.0000028051,0.0000028076, -0.0000028114,0.0000028146,0.0000028166,0.0000028179,0.0000028182, -0.0000028174,0.0000028150,0.0000028112,0.0000028072,0.0000028023, -0.0000027977,0.0000027901,0.0000027761,0.0000027558,0.0000027341, -0.0000027191,0.0000027158,0.0000027243,0.0000027359,0.0000027473, -0.0000027558,0.0000027607,0.0000027635,0.0000027659,0.0000027689, -0.0000027712,0.0000027708,0.0000027686,0.0000027685,0.0000027719, -0.0000027748,0.0000027735,0.0000027687,0.0000027634,0.0000027624, -0.0000027672,0.0000027769,0.0000027857,0.0000027883,0.0000027836, -0.0000027759,0.0000027714,0.0000027685,0.0000027652,0.0000027596, -0.0000027535,0.0000027489,0.0000027467,0.0000027466,0.0000027479, -0.0000027497,0.0000027501,0.0000027480,0.0000027439,0.0000027365, -0.0000027285,0.0000027236,0.0000027278,0.0000027420,0.0000027494, -0.0000027431,0.0000027338,0.0000027297,0.0000027221,0.0000027072, -0.0000026914,0.0000026942,0.0000027136,0.0000027280,0.0000027289, -0.0000027179,0.0000027131,0.0000027269,0.0000027437,0.0000027459, -0.0000027378,0.0000027336,0.0000027367,0.0000027394,0.0000027400, -0.0000027418,0.0000027425,0.0000027399,0.0000027346,0.0000027297, -0.0000027274,0.0000027284,0.0000027303,0.0000027306,0.0000027288, -0.0000027261,0.0000027254,0.0000027270,0.0000027294,0.0000027332, -0.0000027378,0.0000027432,0.0000027467,0.0000027468,0.0000027445, -0.0000027440,0.0000027445,0.0000027423,0.0000027403,0.0000027418, -0.0000027426,0.0000027346,0.0000027195,0.0000027103,0.0000027159, -0.0000027264,0.0000027232,0.0000027098,0.0000026963,0.0000026934, -0.0000026924,0.0000026913,0.0000026971,0.0000027113,0.0000027287, -0.0000027409,0.0000027480,0.0000027552,0.0000027634,0.0000027696, -0.0000027721,0.0000027713,0.0000027676,0.0000027631,0.0000027597, -0.0000027574,0.0000027548,0.0000027523,0.0000027507,0.0000027492, -0.0000027533,0.0000027647,0.0000027720,0.0000027714,0.0000027698, -0.0000027721,0.0000027772,0.0000027815,0.0000027862,0.0000027904, -0.0000027924,0.0000027925,0.0000027914,0.0000027907,0.0000027872, -0.0000027806,0.0000027760,0.0000027741,0.0000027709,0.0000027638, -0.0000027528,0.0000027432,0.0000027387,0.0000027387,0.0000027426, -0.0000027463,0.0000027475,0.0000027449,0.0000027397,0.0000027351, -0.0000027314,0.0000027262,0.0000027189,0.0000027106,0.0000027014, -0.0000026952,0.0000026969,0.0000027072,0.0000027227,0.0000027349, -0.0000027399,0.0000027419,0.0000027427,0.0000027395,0.0000027307, -0.0000027193,0.0000027097,0.0000027026,0.0000027002,0.0000027084, -0.0000027265,0.0000027426,0.0000027495,0.0000027537,0.0000027593, -0.0000027622,0.0000027616,0.0000027618,0.0000027665,0.0000027743, -0.0000027818,0.0000027886,0.0000027947,0.0000027985,0.0000027990, -0.0000027950,0.0000027907,0.0000027845,0.0000027789,0.0000027740, -0.0000027687,0.0000027631,0.0000027585,0.0000027531,0.0000027482, -0.0000027431,0.0000027383,0.0000027344,0.0000027317,0.0000027292, -0.0000027263,0.0000027236,0.0000027216,0.0000027195,0.0000027160, -0.0000027108,0.0000027039,0.0000026964,0.0000026902,0.0000026870, -0.0000026857,0.0000026845,0.0000026817,0.0000026733,0.0000026613, -0.0000026543,0.0000026576,0.0000026680,0.0000026767,0.0000026810, -0.0000026850,0.0000026918,0.0000026994,0.0000027017,0.0000026982, -0.0000026920,0.0000026880,0.0000026873,0.0000026874,0.0000026871, -0.0000026874,0.0000026881,0.0000026911,0.0000026975,0.0000027010, -0.0000026974,0.0000026889,0.0000026844,0.0000026875,0.0000026912, -0.0000026893,0.0000026861,0.0000026874,0.0000026967,0.0000027129, -0.0000027235,0.0000027203,0.0000027055,0.0000026928,0.0000026885, -0.0000026874,0.0000026882,0.0000026930,0.0000026987,0.0000027032, -0.0000027095,0.0000027165,0.0000027225,0.0000027257,0.0000027220, -0.0000027096,0.0000026966,0.0000026896,0.0000026855,0.0000026830, -0.0000026836,0.0000026846,0.0000026842,0.0000026862,0.0000026924, -0.0000027001,0.0000027054,0.0000027074,0.0000027094,0.0000027127, -0.0000027196,0.0000027310,0.0000027453,0.0000027577,0.0000027631, -0.0000027616,0.0000027572,0.0000027557,0.0000027588,0.0000027603, -0.0000027562,0.0000027489,0.0000027399,0.0000027338,0.0000027331, -0.0000027289,0.0000027170,0.0000027185,0.0000027439,0.0000027649, -0.0000027659,0.0000027631,0.0000027650,0.0000027668,0.0000027661, -0.0000027650,0.0000027656,0.0000027677,0.0000027715,0.0000027773, -0.0000027851,0.0000027921,0.0000027958,0.0000027980,0.0000027991, -0.0000027968,0.0000027893,0.0000027810,0.0000027770,0.0000027781, -0.0000027817,0.0000027779,0.0000027613,0.0000027461,0.0000027483, -0.0000027686,0.0000027928,0.0000028077,0.0000028105,0.0000028081, -0.0000028045,0.0000028014,0.0000027971,0.0000027910,0.0000027868, -0.0000027845,0.0000027828,0.0000027813,0.0000027818,0.0000027847, -0.0000027873,0.0000027867,0.0000027832,0.0000027761,0.0000027673, -0.0000027576,0.0000027470,0.0000027404,0.0000027414,0.0000027478, -0.0000027558,0.0000027636,0.0000027700,0.0000027744,0.0000027771, -0.0000027776,0.0000027755,0.0000027708,0.0000027668,0.0000027658, -0.0000027681,0.0000027743,0.0000027813,0.0000027859,0.0000027879, -0.0000027881,0.0000027879,0.0000027886,0.0000027914,0.0000027998, -0.0000028099,0.0000028125,0.0000028066,0.0000027976,0.0000027964, -0.0000028038,0.0000028132,0.0000028187,0.0000028210,0.0000028221, -0.0000028202,0.0000028136,0.0000028063,0.0000028026,0.0000028021, -0.0000028017,0.0000028010,0.0000028011,0.0000028024,0.0000028033, -0.0000028027,0.0000028003,0.0000027969,0.0000027933,0.0000027893, -0.0000027862,0.0000027842,0.0000027839,0.0000027860,0.0000027883, -0.0000027829,0.0000027666,0.0000027543,0.0000027528,0.0000027621, -0.0000027818,0.0000027999,0.0000028095,0.0000028122,0.0000028124, -0.0000028147,0.0000028191,0.0000028227,0.0000028242,0.0000028235, -0.0000028202,0.0000028146,0.0000028082,0.0000028019,0.0000027977, -0.0000027911,0.0000027937,0.0000027959,0.0000027989,0.0000028014, -0.0000028028,0.0000028030,0.0000028033,0.0000028053,0.0000028102, -0.0000028161,0.0000028203,0.0000028222,0.0000028226,0.0000028230, -0.0000028223,0.0000028204,0.0000028159,0.0000028087,0.0000028006, -0.0000027915,0.0000027787,0.0000027590,0.0000027340,0.0000027136, -0.0000027069,0.0000027106,0.0000027228,0.0000027379,0.0000027518, -0.0000027630,0.0000027710,0.0000027760,0.0000027786,0.0000027799, -0.0000027804,0.0000027791,0.0000027768,0.0000027755,0.0000027771, -0.0000027799,0.0000027793,0.0000027741,0.0000027657,0.0000027593, -0.0000027593,0.0000027659,0.0000027773,0.0000027880,0.0000027923, -0.0000027902,0.0000027815,0.0000027695,0.0000027579,0.0000027489, -0.0000027396,0.0000027339,0.0000027294,0.0000027278,0.0000027287, -0.0000027302,0.0000027314,0.0000027319,0.0000027319,0.0000027331, -0.0000027323,0.0000027317,0.0000027356,0.0000027450,0.0000027495, -0.0000027439,0.0000027363,0.0000027330,0.0000027262,0.0000027116, -0.0000026929,0.0000026875,0.0000027041,0.0000027233,0.0000027290, -0.0000027217,0.0000027148,0.0000027240,0.0000027405,0.0000027451, -0.0000027385,0.0000027344,0.0000027380,0.0000027417,0.0000027432, -0.0000027453,0.0000027465,0.0000027443,0.0000027389,0.0000027327, -0.0000027284,0.0000027272,0.0000027287,0.0000027307,0.0000027299, -0.0000027275,0.0000027253,0.0000027259,0.0000027285,0.0000027321, -0.0000027368,0.0000027418,0.0000027454,0.0000027458,0.0000027439, -0.0000027437,0.0000027470,0.0000027473,0.0000027440,0.0000027424, -0.0000027438,0.0000027409,0.0000027266,0.0000027125,0.0000027122, -0.0000027240,0.0000027280,0.0000027195,0.0000027050,0.0000026948, -0.0000026897,0.0000026853,0.0000026839,0.0000026910,0.0000027078, -0.0000027262,0.0000027389,0.0000027463,0.0000027553,0.0000027664, -0.0000027744,0.0000027786,0.0000027794,0.0000027772,0.0000027735, -0.0000027721,0.0000027709,0.0000027650,0.0000027560,0.0000027520, -0.0000027505,0.0000027515,0.0000027595,0.0000027707,0.0000027753, -0.0000027732,0.0000027711,0.0000027733,0.0000027785,0.0000027867, -0.0000027953,0.0000028003,0.0000028010,0.0000027989,0.0000027970, -0.0000027935,0.0000027866,0.0000027809,0.0000027783,0.0000027760, -0.0000027705,0.0000027607,0.0000027499,0.0000027421,0.0000027396, -0.0000027409,0.0000027439,0.0000027449,0.0000027425,0.0000027375, -0.0000027326,0.0000027284,0.0000027233,0.0000027161,0.0000027079, -0.0000026995,0.0000026935,0.0000026951,0.0000027051,0.0000027194, -0.0000027314,0.0000027374,0.0000027400,0.0000027411,0.0000027379, -0.0000027291,0.0000027184,0.0000027101,0.0000027053,0.0000027036, -0.0000027128,0.0000027311,0.0000027469,0.0000027526,0.0000027550, -0.0000027601,0.0000027634,0.0000027624,0.0000027626,0.0000027674, -0.0000027756,0.0000027841,0.0000027919,0.0000027985,0.0000028021, -0.0000028012,0.0000027977,0.0000027912,0.0000027849,0.0000027797, -0.0000027749,0.0000027699,0.0000027646,0.0000027596,0.0000027567, -0.0000027535,0.0000027507,0.0000027483,0.0000027459,0.0000027438, -0.0000027422,0.0000027403,0.0000027374,0.0000027340,0.0000027302, -0.0000027254,0.0000027193,0.0000027121,0.0000027048,0.0000026977, -0.0000026929,0.0000026901,0.0000026873,0.0000026840,0.0000026799, -0.0000026740,0.0000026645,0.0000026560,0.0000026548,0.0000026607, -0.0000026698,0.0000026773,0.0000026819,0.0000026865,0.0000026915, -0.0000026933,0.0000026909,0.0000026869,0.0000026834,0.0000026810, -0.0000026800,0.0000026797,0.0000026808,0.0000026827,0.0000026868, -0.0000026949,0.0000027008,0.0000026983,0.0000026892,0.0000026837, -0.0000026868,0.0000026930,0.0000026926,0.0000026882,0.0000026865, -0.0000026880,0.0000026952,0.0000027080,0.0000027173,0.0000027161, -0.0000027058,0.0000026952,0.0000026905,0.0000026891,0.0000026895, -0.0000026933,0.0000026978,0.0000027024,0.0000027078,0.0000027150, -0.0000027228,0.0000027271,0.0000027262,0.0000027160,0.0000027025, -0.0000026926,0.0000026876,0.0000026872,0.0000026879,0.0000026866, -0.0000026831,0.0000026804,0.0000026809,0.0000026859,0.0000026931, -0.0000027009,0.0000027069,0.0000027102,0.0000027155,0.0000027267, -0.0000027421,0.0000027559,0.0000027629,0.0000027621,0.0000027580, -0.0000027574,0.0000027604,0.0000027600,0.0000027549,0.0000027475, -0.0000027390,0.0000027342,0.0000027329,0.0000027246,0.0000027165, -0.0000027296,0.0000027566,0.0000027674,0.0000027650,0.0000027646, -0.0000027677,0.0000027717,0.0000027768,0.0000027811,0.0000027836, -0.0000027839,0.0000027834,0.0000027851,0.0000027893,0.0000027955, -0.0000028005,0.0000028038,0.0000028046,0.0000028010,0.0000027922, -0.0000027818,0.0000027767,0.0000027742,0.0000027729,0.0000027641, -0.0000027506,0.0000027455,0.0000027571,0.0000027819,0.0000028025, -0.0000028107,0.0000028113,0.0000028084,0.0000028038,0.0000027969, -0.0000027881,0.0000027788,0.0000027722,0.0000027681,0.0000027653, -0.0000027626,0.0000027626,0.0000027666,0.0000027720,0.0000027764, -0.0000027777,0.0000027761,0.0000027713,0.0000027678,0.0000027637, -0.0000027565,0.0000027465,0.0000027407,0.0000027404,0.0000027465, -0.0000027570,0.0000027666,0.0000027723,0.0000027746,0.0000027740, -0.0000027712,0.0000027677,0.0000027666,0.0000027684,0.0000027721, -0.0000027774,0.0000027820,0.0000027838,0.0000027839,0.0000027833, -0.0000027833,0.0000027863,0.0000027947,0.0000028052,0.0000028080, -0.0000028023,0.0000027945,0.0000027955,0.0000028056,0.0000028158, -0.0000028219,0.0000028246,0.0000028250,0.0000028225,0.0000028166, -0.0000028110,0.0000028086,0.0000028084,0.0000028088,0.0000028089, -0.0000028085,0.0000028084,0.0000028090,0.0000028087,0.0000028066, -0.0000028030,0.0000027988,0.0000027947,0.0000027900,0.0000027853, -0.0000027824,0.0000027845,0.0000027899,0.0000027881,0.0000027753, -0.0000027612,0.0000027558,0.0000027599,0.0000027764,0.0000027966, -0.0000028096,0.0000028135,0.0000028136,0.0000028157,0.0000028193, -0.0000028210,0.0000028208,0.0000028194,0.0000028158,0.0000028103, -0.0000028042,0.0000027983,0.0000027930,0.0000027904,0.0000027832, -0.0000027881,0.0000027927,0.0000027973,0.0000028008,0.0000028024, -0.0000028027,0.0000028035,0.0000028059,0.0000028110,0.0000028170, -0.0000028207,0.0000028219,0.0000028219,0.0000028217,0.0000028206, -0.0000028173,0.0000028097,0.0000027981,0.0000027846,0.0000027700, -0.0000027535,0.0000027351,0.0000027185,0.0000027095,0.0000027095, -0.0000027171,0.0000027301,0.0000027441,0.0000027566,0.0000027671, -0.0000027764,0.0000027838,0.0000027875,0.0000027884,0.0000027886, -0.0000027877,0.0000027854,0.0000027834,0.0000027834,0.0000027853, -0.0000027856,0.0000027824,0.0000027739,0.0000027639,0.0000027589, -0.0000027602,0.0000027675,0.0000027774,0.0000027857,0.0000027907, -0.0000027918,0.0000027880,0.0000027765,0.0000027594,0.0000027418, -0.0000027270,0.0000027161,0.0000027088,0.0000027071,0.0000027100, -0.0000027145,0.0000027205,0.0000027269,0.0000027350,0.0000027423, -0.0000027455,0.0000027462,0.0000027471,0.0000027477,0.0000027434, -0.0000027379,0.0000027359,0.0000027304,0.0000027173,0.0000026976, -0.0000026839,0.0000026935,0.0000027164,0.0000027264,0.0000027234, -0.0000027171,0.0000027226,0.0000027381,0.0000027448,0.0000027403, -0.0000027352,0.0000027388,0.0000027442,0.0000027462,0.0000027486, -0.0000027503,0.0000027491,0.0000027438,0.0000027367,0.0000027304, -0.0000027276,0.0000027279,0.0000027303,0.0000027325,0.0000027322, -0.0000027301,0.0000027293,0.0000027309,0.0000027339,0.0000027384, -0.0000027434,0.0000027478,0.0000027488,0.0000027462,0.0000027431, -0.0000027453,0.0000027488,0.0000027485,0.0000027442,0.0000027430, -0.0000027422,0.0000027340,0.0000027178,0.0000027111,0.0000027200, -0.0000027295,0.0000027262,0.0000027143,0.0000027024,0.0000026931, -0.0000026833,0.0000026771,0.0000026780,0.0000026902,0.0000027099, -0.0000027281,0.0000027381,0.0000027450,0.0000027549,0.0000027678, -0.0000027776,0.0000027840,0.0000027881,0.0000027881,0.0000027848, -0.0000027835,0.0000027839,0.0000027778,0.0000027634,0.0000027550, -0.0000027533,0.0000027551,0.0000027590,0.0000027668,0.0000027756, -0.0000027779,0.0000027746,0.0000027732,0.0000027753,0.0000027835, -0.0000027963,0.0000028063,0.0000028096,0.0000028086,0.0000028062, -0.0000028019,0.0000027931,0.0000027846,0.0000027809,0.0000027794, -0.0000027759,0.0000027679,0.0000027569,0.0000027461,0.0000027397, -0.0000027389,0.0000027401,0.0000027405,0.0000027387,0.0000027347, -0.0000027301,0.0000027254,0.0000027194,0.0000027114,0.0000027033, -0.0000026968,0.0000026941,0.0000026957,0.0000027056,0.0000027184, -0.0000027288,0.0000027347,0.0000027378,0.0000027387,0.0000027357, -0.0000027276,0.0000027183,0.0000027117,0.0000027081,0.0000027085, -0.0000027177,0.0000027352,0.0000027500,0.0000027552,0.0000027567, -0.0000027611,0.0000027646,0.0000027639,0.0000027628,0.0000027672, -0.0000027753,0.0000027834,0.0000027918,0.0000027991,0.0000028018, -0.0000028012,0.0000027959,0.0000027890,0.0000027825,0.0000027777, -0.0000027738,0.0000027702,0.0000027673,0.0000027636,0.0000027615, -0.0000027616,0.0000027621,0.0000027623,0.0000027619,0.0000027605, -0.0000027584,0.0000027557,0.0000027516,0.0000027457,0.0000027392, -0.0000027329,0.0000027266,0.0000027202,0.0000027139,0.0000027076, -0.0000027024,0.0000026987,0.0000026957,0.0000026914,0.0000026854, -0.0000026787,0.0000026726,0.0000026660,0.0000026601,0.0000026582, -0.0000026611,0.0000026679,0.0000026752,0.0000026796,0.0000026822, -0.0000026846,0.0000026857,0.0000026850,0.0000026829,0.0000026793, -0.0000026741,0.0000026709,0.0000026710,0.0000026738,0.0000026777, -0.0000026845,0.0000026949,0.0000027021,0.0000026997,0.0000026895, -0.0000026833,0.0000026868,0.0000026945,0.0000026947,0.0000026896, -0.0000026857,0.0000026855,0.0000026872,0.0000026934,0.0000027042, -0.0000027121,0.0000027129,0.0000027075,0.0000026982,0.0000026915, -0.0000026893,0.0000026895,0.0000026917,0.0000026954,0.0000026998, -0.0000027055,0.0000027127,0.0000027211,0.0000027270,0.0000027267, -0.0000027214,0.0000027103,0.0000026987,0.0000026920,0.0000026914, -0.0000026918,0.0000026900,0.0000026852,0.0000026790,0.0000026740, -0.0000026725,0.0000026762,0.0000026864,0.0000026976,0.0000027050, -0.0000027123,0.0000027244,0.0000027397,0.0000027532,0.0000027608, -0.0000027609,0.0000027577,0.0000027587,0.0000027614,0.0000027586, -0.0000027525,0.0000027460,0.0000027380,0.0000027340,0.0000027304, -0.0000027201,0.0000027200,0.0000027440,0.0000027654,0.0000027676, -0.0000027661,0.0000027693,0.0000027763,0.0000027854,0.0000027926, -0.0000027930,0.0000027904,0.0000027875,0.0000027871,0.0000027895, -0.0000027956,0.0000028037,0.0000028101,0.0000028118,0.0000028104, -0.0000028050,0.0000027958,0.0000027847,0.0000027782,0.0000027744, -0.0000027684,0.0000027604,0.0000027544,0.0000027563,0.0000027714, -0.0000027932,0.0000028068,0.0000028103,0.0000028101,0.0000028063, -0.0000027995,0.0000027915,0.0000027836,0.0000027765,0.0000027709, -0.0000027657,0.0000027606,0.0000027556,0.0000027535,0.0000027546, -0.0000027578,0.0000027599,0.0000027594,0.0000027576,0.0000027579, -0.0000027616,0.0000027645,0.0000027669,0.0000027648,0.0000027584, -0.0000027502,0.0000027438,0.0000027462,0.0000027526,0.0000027603, -0.0000027661,0.0000027689,0.0000027689,0.0000027670,0.0000027656, -0.0000027664,0.0000027692,0.0000027727,0.0000027757,0.0000027772, -0.0000027774,0.0000027775,0.0000027777,0.0000027801,0.0000027879, -0.0000027985,0.0000028023,0.0000027977,0.0000027927,0.0000027952, -0.0000028052,0.0000028152,0.0000028209,0.0000028246,0.0000028258, -0.0000028245,0.0000028202,0.0000028162,0.0000028148,0.0000028149, -0.0000028156,0.0000028166,0.0000028171,0.0000028170,0.0000028171, -0.0000028165,0.0000028137,0.0000028097,0.0000028053,0.0000028005, -0.0000027959,0.0000027905,0.0000027843,0.0000027835,0.0000027901, -0.0000027920,0.0000027812,0.0000027681,0.0000027609,0.0000027627, -0.0000027752,0.0000027937,0.0000028089,0.0000028152,0.0000028155, -0.0000028172,0.0000028207,0.0000028218,0.0000028207,0.0000028183, -0.0000028138,0.0000028072,0.0000027996,0.0000027926,0.0000027863, -0.0000027816,0.0000027806,0.0000027752,0.0000027822,0.0000027886, -0.0000027940,0.0000027977,0.0000027992,0.0000027999,0.0000028012, -0.0000028039,0.0000028084,0.0000028141,0.0000028180,0.0000028187, -0.0000028175,0.0000028150,0.0000028110,0.0000028040,0.0000027933, -0.0000027792,0.0000027633,0.0000027473,0.0000027339,0.0000027252, -0.0000027189,0.0000027163,0.0000027181,0.0000027243,0.0000027340, -0.0000027457,0.0000027571,0.0000027675,0.0000027784,0.0000027893, -0.0000027969,0.0000027998,0.0000028002,0.0000027989,0.0000027953, -0.0000027906,0.0000027876,0.0000027873,0.0000027876,0.0000027856, -0.0000027790,0.0000027688,0.0000027605,0.0000027583,0.0000027627, -0.0000027715,0.0000027803,0.0000027862,0.0000027889,0.0000027894, -0.0000027870,0.0000027803,0.0000027688,0.0000027509,0.0000027321, -0.0000027164,0.0000027075,0.0000027074,0.0000027120,0.0000027188, -0.0000027292,0.0000027425,0.0000027545,0.0000027595,0.0000027560, -0.0000027488,0.0000027451,0.0000027417,0.0000027385,0.0000027381, -0.0000027344,0.0000027230,0.0000027040,0.0000026838,0.0000026841, -0.0000027072,0.0000027254,0.0000027239,0.0000027164,0.0000027208, -0.0000027365,0.0000027461,0.0000027433,0.0000027372,0.0000027397, -0.0000027461,0.0000027491,0.0000027515,0.0000027535,0.0000027527, -0.0000027482,0.0000027403,0.0000027329,0.0000027293,0.0000027305, -0.0000027344,0.0000027383,0.0000027395,0.0000027370,0.0000027337, -0.0000027326,0.0000027335,0.0000027356,0.0000027402,0.0000027453, -0.0000027496,0.0000027503,0.0000027476,0.0000027457,0.0000027485, -0.0000027517,0.0000027501,0.0000027445,0.0000027414,0.0000027357, -0.0000027239,0.0000027136,0.0000027163,0.0000027278,0.0000027297, -0.0000027227,0.0000027121,0.0000027020,0.0000026887,0.0000026750, -0.0000026712,0.0000026785,0.0000026959,0.0000027148,0.0000027281, -0.0000027353,0.0000027409,0.0000027515,0.0000027659,0.0000027776, -0.0000027862,0.0000027941,0.0000027968,0.0000027944,0.0000027920, -0.0000027923,0.0000027872,0.0000027719,0.0000027602,0.0000027576, -0.0000027604,0.0000027633,0.0000027661,0.0000027733,0.0000027798, -0.0000027792,0.0000027765,0.0000027758,0.0000027803,0.0000027934, -0.0000028081,0.0000028158,0.0000028169,0.0000028156,0.0000028116, -0.0000028012,0.0000027891,0.0000027832,0.0000027823,0.0000027800, -0.0000027731,0.0000027622,0.0000027496,0.0000027400,0.0000027366, -0.0000027361,0.0000027357,0.0000027343,0.0000027313,0.0000027271, -0.0000027222,0.0000027150,0.0000027058,0.0000026984,0.0000026956, -0.0000026958,0.0000027009,0.0000027110,0.0000027223,0.0000027308, -0.0000027357,0.0000027385,0.0000027395,0.0000027364,0.0000027288, -0.0000027203,0.0000027149,0.0000027124,0.0000027140,0.0000027230, -0.0000027386,0.0000027517,0.0000027567,0.0000027584,0.0000027625, -0.0000027659,0.0000027654,0.0000027638,0.0000027659,0.0000027730, -0.0000027809,0.0000027893,0.0000027974,0.0000028010,0.0000027996, -0.0000027930,0.0000027856,0.0000027798,0.0000027757,0.0000027730, -0.0000027717,0.0000027708,0.0000027711,0.0000027720,0.0000027735, -0.0000027762,0.0000027781,0.0000027789,0.0000027778,0.0000027748, -0.0000027703,0.0000027642,0.0000027567,0.0000027483,0.0000027404, -0.0000027343,0.0000027296,0.0000027254,0.0000027214,0.0000027169, -0.0000027119,0.0000027070,0.0000027020,0.0000026957,0.0000026875, -0.0000026785,0.0000026712,0.0000026657,0.0000026620,0.0000026615, -0.0000026649,0.0000026716,0.0000026778,0.0000026809,0.0000026811, -0.0000026807,0.0000026802,0.0000026799,0.0000026784,0.0000026731, -0.0000026651,0.0000026602,0.0000026621,0.0000026672,0.0000026751, -0.0000026865,0.0000026988,0.0000027052,0.0000027010,0.0000026894, -0.0000026829,0.0000026876,0.0000026962,0.0000026959,0.0000026900, -0.0000026846,0.0000026836,0.0000026843,0.0000026865,0.0000026938, -0.0000027038,0.0000027107,0.0000027127,0.0000027096,0.0000027003, -0.0000026911,0.0000026875,0.0000026875,0.0000026882,0.0000026906, -0.0000026950,0.0000027016,0.0000027089,0.0000027168,0.0000027230, -0.0000027252,0.0000027225,0.0000027164,0.0000027073,0.0000027000, -0.0000026968,0.0000026955,0.0000026933,0.0000026884,0.0000026812, -0.0000026727,0.0000026668,0.0000026653,0.0000026705,0.0000026814, -0.0000026930,0.0000027065,0.0000027223,0.0000027372,0.0000027494, -0.0000027573,0.0000027585,0.0000027575,0.0000027602,0.0000027611, -0.0000027555,0.0000027503,0.0000027450,0.0000027372,0.0000027326, -0.0000027260,0.0000027181,0.0000027295,0.0000027577,0.0000027700, -0.0000027678,0.0000027700,0.0000027795,0.0000027911,0.0000027988, -0.0000027986,0.0000027938,0.0000027899,0.0000027902,0.0000027938, -0.0000027989,0.0000028055,0.0000028121,0.0000028165,0.0000028154, -0.0000028110,0.0000028054,0.0000027989,0.0000027910,0.0000027840, -0.0000027790,0.0000027719,0.0000027673,0.0000027663,0.0000027701, -0.0000027845,0.0000027996,0.0000028071,0.0000028079,0.0000028057, -0.0000028013,0.0000027974,0.0000027932,0.0000027891,0.0000027838, -0.0000027768,0.0000027700,0.0000027637,0.0000027574,0.0000027529, -0.0000027525,0.0000027544,0.0000027554,0.0000027525,0.0000027469, -0.0000027423,0.0000027413,0.0000027467,0.0000027572,0.0000027659, -0.0000027699,0.0000027698,0.0000027670,0.0000027622,0.0000027585, -0.0000027566,0.0000027588,0.0000027599,0.0000027604,0.0000027605, -0.0000027594,0.0000027589,0.0000027601,0.0000027629,0.0000027662, -0.0000027684,0.0000027700,0.0000027715,0.0000027722,0.0000027737, -0.0000027802,0.0000027905,0.0000027960,0.0000027938,0.0000027906, -0.0000027939,0.0000028027,0.0000028108,0.0000028168,0.0000028212, -0.0000028243,0.0000028248,0.0000028231,0.0000028203,0.0000028183, -0.0000028177,0.0000028182,0.0000028199,0.0000028214,0.0000028221, -0.0000028226,0.0000028227,0.0000028207,0.0000028159,0.0000028103, -0.0000028053,0.0000028010,0.0000027955,0.0000027879,0.0000027863, -0.0000027914,0.0000027929,0.0000027849,0.0000027741,0.0000027672, -0.0000027674,0.0000027783,0.0000027937,0.0000028081,0.0000028163, -0.0000028184,0.0000028199,0.0000028230,0.0000028242,0.0000028232, -0.0000028212,0.0000028168,0.0000028088,0.0000027990,0.0000027891, -0.0000027798,0.0000027724,0.0000027686,0.0000027694,0.0000027686, -0.0000027768,0.0000027838,0.0000027885,0.0000027911,0.0000027925, -0.0000027935,0.0000027950,0.0000027968,0.0000027994,0.0000028040, -0.0000028082,0.0000028090,0.0000028067,0.0000028015,0.0000027946, -0.0000027863,0.0000027757,0.0000027631,0.0000027513,0.0000027406, -0.0000027332,0.0000027288,0.0000027253,0.0000027225,0.0000027223, -0.0000027272,0.0000027373,0.0000027499,0.0000027626,0.0000027742, -0.0000027851,0.0000027965,0.0000028064,0.0000028116,0.0000028127, -0.0000028109,0.0000028062,0.0000028001,0.0000027957,0.0000027944, -0.0000027943,0.0000027931,0.0000027877,0.0000027778,0.0000027663, -0.0000027588,0.0000027591,0.0000027655,0.0000027742,0.0000027825, -0.0000027872,0.0000027886,0.0000027868,0.0000027821,0.0000027762, -0.0000027678,0.0000027561,0.0000027429,0.0000027314,0.0000027252, -0.0000027258,0.0000027311,0.0000027394,0.0000027510,0.0000027606, -0.0000027643,0.0000027608,0.0000027524,0.0000027451,0.0000027402, -0.0000027379,0.0000027393,0.0000027376,0.0000027280,0.0000027113, -0.0000026877,0.0000026783,0.0000026958,0.0000027207,0.0000027251, -0.0000027154,0.0000027168,0.0000027331,0.0000027468,0.0000027474, -0.0000027414,0.0000027414,0.0000027480,0.0000027517,0.0000027538, -0.0000027558,0.0000027551,0.0000027507,0.0000027431,0.0000027362, -0.0000027337,0.0000027369,0.0000027426,0.0000027459,0.0000027450, -0.0000027407,0.0000027342,0.0000027292,0.0000027283,0.0000027296, -0.0000027330,0.0000027382,0.0000027441,0.0000027486,0.0000027499, -0.0000027482,0.0000027487,0.0000027531,0.0000027551,0.0000027515, -0.0000027443,0.0000027374,0.0000027271,0.0000027174,0.0000027155, -0.0000027228,0.0000027285,0.0000027265,0.0000027213,0.0000027138, -0.0000027012,0.0000026828,0.0000026709,0.0000026721,0.0000026857, -0.0000027028,0.0000027157,0.0000027236,0.0000027277,0.0000027333, -0.0000027447,0.0000027612,0.0000027755,0.0000027862,0.0000027963, -0.0000028013,0.0000028000,0.0000027965,0.0000027953,0.0000027900, -0.0000027762,0.0000027652,0.0000027629,0.0000027663,0.0000027691, -0.0000027691,0.0000027725,0.0000027797,0.0000027820,0.0000027807, -0.0000027801,0.0000027814,0.0000027904,0.0000028060,0.0000028181, -0.0000028227,0.0000028231,0.0000028201,0.0000028094,0.0000027947, -0.0000027856,0.0000027843,0.0000027824,0.0000027755,0.0000027644, -0.0000027517,0.0000027409,0.0000027351,0.0000027326,0.0000027310, -0.0000027294,0.0000027274,0.0000027241,0.0000027186,0.0000027101, -0.0000027011,0.0000026967,0.0000026964,0.0000027025,0.0000027119, -0.0000027228,0.0000027324,0.0000027391,0.0000027427,0.0000027442, -0.0000027442,0.0000027409,0.0000027334,0.0000027252,0.0000027198, -0.0000027180,0.0000027198,0.0000027275,0.0000027406,0.0000027520, -0.0000027573,0.0000027597,0.0000027636,0.0000027675,0.0000027671, -0.0000027648,0.0000027652,0.0000027697,0.0000027767,0.0000027855, -0.0000027948,0.0000027993,0.0000027981,0.0000027905,0.0000027817, -0.0000027763,0.0000027742,0.0000027739,0.0000027749,0.0000027776, -0.0000027815,0.0000027853,0.0000027881,0.0000027899,0.0000027916, -0.0000027915,0.0000027901,0.0000027869,0.0000027802,0.0000027731, -0.0000027645,0.0000027559,0.0000027475,0.0000027403,0.0000027359, -0.0000027336,0.0000027322,0.0000027307,0.0000027281,0.0000027232, -0.0000027163,0.0000027083,0.0000026991,0.0000026884,0.0000026775, -0.0000026691,0.0000026631,0.0000026600,0.0000026603,0.0000026648, -0.0000026727,0.0000026792,0.0000026809,0.0000026791,0.0000026753, -0.0000026721,0.0000026708,0.0000026689,0.0000026631,0.0000026547, -0.0000026503,0.0000026560,0.0000026651,0.0000026783,0.0000026941, -0.0000027062,0.0000027087,0.0000027012,0.0000026887,0.0000026833, -0.0000026894,0.0000026978,0.0000026964,0.0000026888,0.0000026833, -0.0000026825,0.0000026837,0.0000026849,0.0000026894,0.0000026982, -0.0000027074,0.0000027126,0.0000027134,0.0000027105,0.0000027014, -0.0000026912,0.0000026859,0.0000026840,0.0000026837,0.0000026844, -0.0000026881,0.0000026949,0.0000027021,0.0000027091,0.0000027149, -0.0000027189,0.0000027209,0.0000027200,0.0000027159,0.0000027101, -0.0000027048,0.0000027007,0.0000026964,0.0000026910,0.0000026839, -0.0000026758,0.0000026683,0.0000026634,0.0000026629,0.0000026691, -0.0000026813,0.0000026986,0.0000027169,0.0000027318,0.0000027447, -0.0000027544,0.0000027566,0.0000027579,0.0000027613,0.0000027590, -0.0000027523,0.0000027492,0.0000027443,0.0000027365,0.0000027298, -0.0000027207,0.0000027188,0.0000027424,0.0000027676,0.0000027705, -0.0000027692,0.0000027792,0.0000027936,0.0000028010,0.0000028010, -0.0000027962,0.0000027931,0.0000027938,0.0000027962,0.0000028014, -0.0000028077,0.0000028138,0.0000028185,0.0000028202,0.0000028161, -0.0000028095,0.0000028044,0.0000028012,0.0000027970,0.0000027903, -0.0000027851,0.0000027800,0.0000027764,0.0000027772,0.0000027840, -0.0000027943,0.0000028017,0.0000028052,0.0000028033,0.0000028001, -0.0000028004,0.0000028020,0.0000028003,0.0000027960,0.0000027913, -0.0000027876,0.0000027847,0.0000027811,0.0000027753,0.0000027683, -0.0000027641,0.0000027630,0.0000027619,0.0000027563,0.0000027482, -0.0000027401,0.0000027340,0.0000027334,0.0000027391,0.0000027492, -0.0000027613,0.0000027708,0.0000027771,0.0000027802,0.0000027797, -0.0000027764,0.0000027715,0.0000027668,0.0000027615,0.0000027577, -0.0000027544,0.0000027517,0.0000027504,0.0000027513,0.0000027546, -0.0000027587,0.0000027621,0.0000027653,0.0000027676,0.0000027698, -0.0000027755,0.0000027848,0.0000027909,0.0000027906,0.0000027889, -0.0000027921,0.0000027997,0.0000028051,0.0000028092,0.0000028148, -0.0000028200,0.0000028218,0.0000028213,0.0000028193,0.0000028169, -0.0000028152,0.0000028150,0.0000028167,0.0000028197,0.0000028224, -0.0000028239,0.0000028239,0.0000028223,0.0000028179,0.0000028128, -0.0000028086,0.0000028046,0.0000027988,0.0000027917,0.0000027917, -0.0000027955,0.0000027934,0.0000027863,0.0000027790,0.0000027738, -0.0000027756,0.0000027845,0.0000027971,0.0000028092,0.0000028172, -0.0000028200,0.0000028222,0.0000028253,0.0000028269,0.0000028268, -0.0000028253,0.0000028220,0.0000028149,0.0000028045,0.0000027922, -0.0000027790,0.0000027670,0.0000027594,0.0000027576,0.0000027609, -0.0000027640,0.0000027723,0.0000027787,0.0000027824,0.0000027845, -0.0000027858,0.0000027864,0.0000027868,0.0000027871,0.0000027880, -0.0000027912,0.0000027958,0.0000027977,0.0000027957,0.0000027902, -0.0000027840,0.0000027785,0.0000027707,0.0000027615,0.0000027535, -0.0000027464,0.0000027401,0.0000027341,0.0000027284,0.0000027254, -0.0000027273,0.0000027355,0.0000027488,0.0000027624,0.0000027736, -0.0000027827,0.0000027901,0.0000027986,0.0000028079,0.0000028150, -0.0000028175,0.0000028169,0.0000028129,0.0000028075,0.0000028039, -0.0000028033,0.0000028041,0.0000028039,0.0000028010,0.0000027935, -0.0000027822,0.0000027707,0.0000027647,0.0000027655,0.0000027709, -0.0000027777,0.0000027830,0.0000027856,0.0000027858,0.0000027831, -0.0000027776,0.0000027696,0.0000027592,0.0000027479,0.0000027372, -0.0000027304,0.0000027302,0.0000027345,0.0000027402,0.0000027467, -0.0000027543,0.0000027599,0.0000027604,0.0000027568,0.0000027496, -0.0000027416,0.0000027383,0.0000027407,0.0000027402,0.0000027318, -0.0000027178,0.0000026941,0.0000026769,0.0000026849,0.0000027124, -0.0000027252,0.0000027152,0.0000027115,0.0000027268,0.0000027452, -0.0000027505,0.0000027465,0.0000027446,0.0000027497,0.0000027539, -0.0000027558,0.0000027572,0.0000027561,0.0000027513,0.0000027453, -0.0000027408,0.0000027411,0.0000027456,0.0000027512,0.0000027534, -0.0000027503,0.0000027433,0.0000027350,0.0000027277,0.0000027242, -0.0000027250,0.0000027290,0.0000027342,0.0000027399,0.0000027459, -0.0000027502,0.0000027498,0.0000027493,0.0000027537,0.0000027576, -0.0000027570,0.0000027512,0.0000027430,0.0000027334,0.0000027224, -0.0000027184,0.0000027209,0.0000027242,0.0000027250,0.0000027240, -0.0000027218,0.0000027150,0.0000026984,0.0000026805,0.0000026737, -0.0000026799,0.0000026918,0.0000027030,0.0000027108,0.0000027149, -0.0000027175,0.0000027245,0.0000027373,0.0000027550,0.0000027720, -0.0000027847,0.0000027958,0.0000028022,0.0000028016,0.0000027968, -0.0000027936,0.0000027873,0.0000027743,0.0000027667,0.0000027675, -0.0000027721,0.0000027751,0.0000027742,0.0000027751,0.0000027808, -0.0000027844,0.0000027839,0.0000027846,0.0000027863,0.0000027911, -0.0000028037,0.0000028178,0.0000028261,0.0000028283,0.0000028265, -0.0000028160,0.0000028004,0.0000027886,0.0000027855,0.0000027826, -0.0000027747,0.0000027637,0.0000027522,0.0000027426,0.0000027358, -0.0000027309,0.0000027269,0.0000027240,0.0000027225,0.0000027203, -0.0000027152,0.0000027073,0.0000026991,0.0000026970,0.0000027022, -0.0000027129,0.0000027257,0.0000027369,0.0000027449,0.0000027496, -0.0000027514,0.0000027513,0.0000027496,0.0000027452,0.0000027384, -0.0000027310,0.0000027262,0.0000027248,0.0000027259,0.0000027316, -0.0000027418,0.0000027516,0.0000027575,0.0000027607,0.0000027640, -0.0000027677,0.0000027688,0.0000027668,0.0000027658,0.0000027677, -0.0000027721,0.0000027804,0.0000027912,0.0000027973,0.0000027969, -0.0000027888,0.0000027787,0.0000027727,0.0000027721,0.0000027751, -0.0000027797,0.0000027846,0.0000027898,0.0000027938,0.0000027969, -0.0000027975,0.0000027957,0.0000027957,0.0000027935,0.0000027901, -0.0000027849,0.0000027771,0.0000027682,0.0000027596,0.0000027518, -0.0000027440,0.0000027373,0.0000027339,0.0000027336,0.0000027338, -0.0000027343,0.0000027338,0.0000027306,0.0000027239,0.0000027143, -0.0000027026,0.0000026893,0.0000026762,0.0000026665,0.0000026597, -0.0000026560,0.0000026559,0.0000026597,0.0000026662,0.0000026709, -0.0000026714,0.0000026680,0.0000026622,0.0000026576,0.0000026564, -0.0000026558,0.0000026530,0.0000026501,0.0000026486,0.0000026563, -0.0000026709,0.0000026883,0.0000027041,0.0000027120,0.0000027102, -0.0000026997,0.0000026882,0.0000026856,0.0000026926,0.0000026981, -0.0000026943,0.0000026859,0.0000026819,0.0000026824,0.0000026844, -0.0000026863,0.0000026891,0.0000026953,0.0000027036,0.0000027106, -0.0000027133,0.0000027131,0.0000027095,0.0000027021,0.0000026927, -0.0000026852,0.0000026814,0.0000026799,0.0000026794,0.0000026815, -0.0000026866,0.0000026929,0.0000026991,0.0000027051,0.0000027117, -0.0000027180,0.0000027207,0.0000027214,0.0000027192,0.0000027142, -0.0000027077,0.0000027006,0.0000026933,0.0000026864,0.0000026802, -0.0000026736,0.0000026666,0.0000026643,0.0000026668,0.0000026761, -0.0000026929,0.0000027110,0.0000027261,0.0000027412,0.0000027525, -0.0000027558,0.0000027588,0.0000027610,0.0000027558,0.0000027505, -0.0000027494,0.0000027436,0.0000027349,0.0000027263,0.0000027180, -0.0000027263,0.0000027569,0.0000027735,0.0000027704,0.0000027746, -0.0000027918,0.0000028025,0.0000028013,0.0000027972,0.0000027949, -0.0000027955,0.0000027980,0.0000028022,0.0000028090,0.0000028178, -0.0000028230,0.0000028239,0.0000028212,0.0000028152,0.0000028081, -0.0000028038,0.0000028027,0.0000028001,0.0000027940,0.0000027892, -0.0000027859,0.0000027841,0.0000027893,0.0000027958,0.0000027998, -0.0000028024,0.0000028016,0.0000027978,0.0000027995,0.0000028059, -0.0000028082,0.0000028054,0.0000028032,0.0000028033,0.0000028050, -0.0000028058,0.0000028031,0.0000027962,0.0000027868,0.0000027803, -0.0000027777,0.0000027769,0.0000027716,0.0000027616,0.0000027492, -0.0000027382,0.0000027340,0.0000027354,0.0000027398,0.0000027469, -0.0000027568,0.0000027676,0.0000027779,0.0000027842,0.0000027868, -0.0000027861,0.0000027824,0.0000027771,0.0000027698,0.0000027627, -0.0000027563,0.0000027510,0.0000027489,0.0000027497,0.0000027535, -0.0000027577,0.0000027614,0.0000027645,0.0000027677,0.0000027742, -0.0000027826,0.0000027878,0.0000027885,0.0000027888,0.0000027925, -0.0000027992,0.0000028031,0.0000028037,0.0000028075,0.0000028142, -0.0000028177,0.0000028170,0.0000028143,0.0000028126,0.0000028125, -0.0000028134,0.0000028149,0.0000028168,0.0000028193,0.0000028216, -0.0000028221,0.0000028201,0.0000028159,0.0000028128,0.0000028111, -0.0000028085,0.0000028029,0.0000027966,0.0000027985,0.0000028019, -0.0000027974,0.0000027901,0.0000027840,0.0000027815,0.0000027850, -0.0000027940,0.0000028031,0.0000028131,0.0000028200,0.0000028221, -0.0000028237,0.0000028266,0.0000028279,0.0000028280,0.0000028277, -0.0000028256,0.0000028201,0.0000028117,0.0000028008,0.0000027869, -0.0000027714,0.0000027585,0.0000027521,0.0000027516,0.0000027561, -0.0000027621,0.0000027691,0.0000027743,0.0000027777,0.0000027800, -0.0000027810,0.0000027808,0.0000027803,0.0000027803,0.0000027813, -0.0000027844,0.0000027893,0.0000027928,0.0000027924,0.0000027890, -0.0000027844,0.0000027793,0.0000027738,0.0000027680,0.0000027613, -0.0000027530,0.0000027443,0.0000027374,0.0000027337,0.0000027341, -0.0000027392,0.0000027496,0.0000027633,0.0000027758,0.0000027845, -0.0000027902,0.0000027945,0.0000027988,0.0000028056,0.0000028129, -0.0000028175,0.0000028184,0.0000028161,0.0000028118,0.0000028086, -0.0000028082,0.0000028093,0.0000028108,0.0000028101,0.0000028058, -0.0000027974,0.0000027867,0.0000027785,0.0000027762,0.0000027791, -0.0000027842,0.0000027873,0.0000027875,0.0000027858,0.0000027831, -0.0000027799,0.0000027743,0.0000027649,0.0000027520,0.0000027377, -0.0000027258,0.0000027204,0.0000027208,0.0000027256,0.0000027316, -0.0000027398,0.0000027505,0.0000027582,0.0000027601,0.0000027558, -0.0000027466,0.0000027411,0.0000027418,0.0000027417,0.0000027347, -0.0000027229,0.0000027009,0.0000026776,0.0000026777,0.0000027019, -0.0000027229,0.0000027179,0.0000027065,0.0000027183,0.0000027403, -0.0000027517,0.0000027505,0.0000027476,0.0000027514,0.0000027555, -0.0000027570,0.0000027577,0.0000027565,0.0000027519,0.0000027469, -0.0000027469,0.0000027502,0.0000027549,0.0000027588,0.0000027599, -0.0000027569,0.0000027502,0.0000027418,0.0000027333,0.0000027267, -0.0000027246,0.0000027273,0.0000027332,0.0000027396,0.0000027452, -0.0000027504,0.0000027520,0.0000027503,0.0000027533,0.0000027583, -0.0000027598,0.0000027563,0.0000027501,0.0000027420,0.0000027318, -0.0000027234,0.0000027225,0.0000027227,0.0000027215,0.0000027225, -0.0000027229,0.0000027218,0.0000027134,0.0000026974,0.0000026849, -0.0000026821,0.0000026853,0.0000026900,0.0000026959,0.0000027014, -0.0000027056,0.0000027094,0.0000027177,0.0000027313,0.0000027482, -0.0000027662,0.0000027813,0.0000027938,0.0000028010,0.0000028009, -0.0000027951,0.0000027883,0.0000027793,0.0000027686,0.0000027658, -0.0000027703,0.0000027771,0.0000027804,0.0000027803,0.0000027815, -0.0000027857,0.0000027885,0.0000027877,0.0000027886,0.0000027920, -0.0000027953,0.0000028038,0.0000028172,0.0000028278,0.0000028317, -0.0000028308,0.0000028215,0.0000028054,0.0000027920,0.0000027866, -0.0000027816,0.0000027723,0.0000027614,0.0000027517,0.0000027441, -0.0000027382,0.0000027316,0.0000027243,0.0000027186,0.0000027171, -0.0000027161,0.0000027125,0.0000027065,0.0000027021,0.0000027032, -0.0000027110,0.0000027233,0.0000027360,0.0000027462,0.0000027520, -0.0000027548,0.0000027550,0.0000027541,0.0000027515,0.0000027471, -0.0000027415,0.0000027365,0.0000027334,0.0000027322,0.0000027321, -0.0000027354,0.0000027430,0.0000027514,0.0000027575,0.0000027614, -0.0000027643,0.0000027672,0.0000027694,0.0000027696,0.0000027689, -0.0000027685,0.0000027693,0.0000027750,0.0000027858,0.0000027948, -0.0000027956,0.0000027879,0.0000027768,0.0000027705,0.0000027705, -0.0000027754,0.0000027826,0.0000027881,0.0000027922,0.0000027945, -0.0000027957,0.0000027960,0.0000027948,0.0000027926,0.0000027903, -0.0000027880,0.0000027845,0.0000027788,0.0000027718,0.0000027650, -0.0000027574,0.0000027503,0.0000027425,0.0000027355,0.0000027318, -0.0000027318,0.0000027325,0.0000027331,0.0000027333,0.0000027320, -0.0000027270,0.0000027186,0.0000027068,0.0000026927,0.0000026786, -0.0000026676,0.0000026600,0.0000026559,0.0000026547,0.0000026551, -0.0000026563,0.0000026565,0.0000026547,0.0000026509,0.0000026473, -0.0000026448,0.0000026455,0.0000026504,0.0000026517,0.0000026545, -0.0000026592,0.0000026689,0.0000026844,0.0000027001,0.0000027104, -0.0000027122,0.0000027063,0.0000026961,0.0000026894,0.0000026911, -0.0000026970,0.0000026978,0.0000026905,0.0000026822,0.0000026802, -0.0000026826,0.0000026861,0.0000026883,0.0000026899,0.0000026928, -0.0000026983,0.0000027043,0.0000027083,0.0000027098,0.0000027092, -0.0000027062,0.0000026998,0.0000026915,0.0000026838,0.0000026794, -0.0000026773,0.0000026765,0.0000026771,0.0000026800,0.0000026847, -0.0000026907,0.0000026984,0.0000027078,0.0000027154,0.0000027198, -0.0000027226,0.0000027240,0.0000027219,0.0000027157,0.0000027071, -0.0000026980,0.0000026905,0.0000026849,0.0000026795,0.0000026733, -0.0000026703,0.0000026707,0.0000026769,0.0000026906,0.0000027069, -0.0000027232,0.0000027404,0.0000027520,0.0000027563,0.0000027603, -0.0000027600,0.0000027534,0.0000027511,0.0000027512,0.0000027433, -0.0000027323,0.0000027228,0.0000027200,0.0000027373,0.0000027678, -0.0000027751,0.0000027725,0.0000027845,0.0000028011,0.0000028031, -0.0000027967,0.0000027942,0.0000027951,0.0000027971,0.0000028020, -0.0000028111,0.0000028196,0.0000028273,0.0000028294,0.0000028262, -0.0000028195,0.0000028128,0.0000028064,0.0000028030,0.0000028021, -0.0000027996,0.0000027946,0.0000027909,0.0000027906,0.0000027938, -0.0000028005,0.0000028038,0.0000028038,0.0000028024,0.0000027980, -0.0000027972,0.0000028046,0.0000028119,0.0000028124,0.0000028103, -0.0000028117,0.0000028152,0.0000028192,0.0000028208,0.0000028179, -0.0000028096,0.0000027987,0.0000027902,0.0000027861,0.0000027837, -0.0000027792,0.0000027736,0.0000027659,0.0000027550,0.0000027446, -0.0000027402,0.0000027409,0.0000027439,0.0000027484,0.0000027552, -0.0000027638,0.0000027731,0.0000027808,0.0000027840,0.0000027833, -0.0000027803,0.0000027775,0.0000027726,0.0000027672,0.0000027605, -0.0000027546,0.0000027527,0.0000027541,0.0000027577,0.0000027617, -0.0000027653,0.0000027693,0.0000027753,0.0000027818,0.0000027855, -0.0000027867,0.0000027889,0.0000027947,0.0000028022,0.0000028057, -0.0000028048,0.0000028044,0.0000028081,0.0000028130,0.0000028145, -0.0000028130,0.0000028120,0.0000028126,0.0000028143,0.0000028160, -0.0000028178,0.0000028192,0.0000028206,0.0000028203,0.0000028164, -0.0000028122,0.0000028114,0.0000028123,0.0000028121,0.0000028075, -0.0000028031,0.0000028062,0.0000028071,0.0000028024,0.0000027956, -0.0000027902,0.0000027909,0.0000027979,0.0000028051,0.0000028125, -0.0000028198,0.0000028249,0.0000028261,0.0000028267,0.0000028281, -0.0000028282,0.0000028276,0.0000028271,0.0000028259,0.0000028223, -0.0000028164,0.0000028082,0.0000027974,0.0000027834,0.0000027689, -0.0000027570,0.0000027513,0.0000027514,0.0000027555,0.0000027612, -0.0000027659,0.0000027698,0.0000027731,0.0000027758,0.0000027771, -0.0000027769,0.0000027765,0.0000027772,0.0000027794,0.0000027829, -0.0000027872,0.0000027906,0.0000027913,0.0000027900,0.0000027873, -0.0000027844,0.0000027806,0.0000027758,0.0000027679,0.0000027577, -0.0000027481,0.0000027428,0.0000027425,0.0000027462,0.0000027531, -0.0000027633,0.0000027761,0.0000027879,0.0000027956,0.0000027995, -0.0000028012,0.0000028024,0.0000028047,0.0000028098,0.0000028150, -0.0000028177,0.0000028172,0.0000028137,0.0000028098,0.0000028077, -0.0000028076,0.0000028098,0.0000028117,0.0000028111,0.0000028064, -0.0000027983,0.0000027900,0.0000027858,0.0000027871,0.0000027927, -0.0000027978,0.0000027992,0.0000027969,0.0000027927,0.0000027878, -0.0000027815,0.0000027726,0.0000027609,0.0000027471,0.0000027332, -0.0000027225,0.0000027181,0.0000027184,0.0000027236,0.0000027324, -0.0000027448,0.0000027573,0.0000027631,0.0000027612,0.0000027533, -0.0000027459,0.0000027432,0.0000027419,0.0000027367,0.0000027269, -0.0000027068,0.0000026818,0.0000026749,0.0000026929,0.0000027186, -0.0000027199,0.0000027044,0.0000027082,0.0000027319,0.0000027500, -0.0000027534,0.0000027508,0.0000027527,0.0000027565,0.0000027575, -0.0000027579,0.0000027563,0.0000027529,0.0000027506,0.0000027528, -0.0000027590,0.0000027637,0.0000027660,0.0000027670,0.0000027657, -0.0000027609,0.0000027526,0.0000027427,0.0000027338,0.0000027282, -0.0000027277,0.0000027325,0.0000027403,0.0000027473,0.0000027526, -0.0000027546,0.0000027517,0.0000027515,0.0000027564,0.0000027592, -0.0000027586,0.0000027549,0.0000027501,0.0000027417,0.0000027330, -0.0000027277,0.0000027250,0.0000027207,0.0000027194,0.0000027211, -0.0000027217,0.0000027198,0.0000027125,0.0000027026,0.0000026939, -0.0000026875,0.0000026839,0.0000026824,0.0000026862,0.0000026930, -0.0000026990,0.0000027048,0.0000027140,0.0000027267,0.0000027419, -0.0000027586,0.0000027760,0.0000027904,0.0000027990,0.0000027993, -0.0000027930,0.0000027822,0.0000027690,0.0000027597,0.0000027636, -0.0000027727,0.0000027808,0.0000027854,0.0000027885,0.0000027918, -0.0000027945,0.0000027954,0.0000027937,0.0000027942,0.0000027985, -0.0000028015,0.0000028066,0.0000028178,0.0000028287,0.0000028334, -0.0000028332,0.0000028248,0.0000028088,0.0000027948,0.0000027876, -0.0000027805,0.0000027699,0.0000027591,0.0000027510,0.0000027454, -0.0000027405,0.0000027333,0.0000027228,0.0000027141,0.0000027124, -0.0000027128,0.0000027114,0.0000027088,0.0000027082,0.0000027127, -0.0000027205,0.0000027300,0.0000027392,0.0000027464,0.0000027518, -0.0000027537,0.0000027540,0.0000027530,0.0000027508,0.0000027476, -0.0000027440,0.0000027419,0.0000027407,0.0000027396,0.0000027384, -0.0000027391,0.0000027440,0.0000027514,0.0000027574,0.0000027613, -0.0000027639,0.0000027666,0.0000027699,0.0000027725,0.0000027732, -0.0000027715,0.0000027690,0.0000027708,0.0000027799,0.0000027900, -0.0000027934,0.0000027875,0.0000027763,0.0000027689,0.0000027693, -0.0000027751,0.0000027824,0.0000027870,0.0000027895,0.0000027903, -0.0000027904,0.0000027903,0.0000027902,0.0000027902,0.0000027897, -0.0000027874,0.0000027853,0.0000027822,0.0000027780,0.0000027733, -0.0000027687,0.0000027635,0.0000027569,0.0000027489,0.0000027410, -0.0000027356,0.0000027338,0.0000027333,0.0000027326,0.0000027321, -0.0000027309,0.0000027271,0.0000027200,0.0000027102,0.0000026985, -0.0000026861,0.0000026755,0.0000026674,0.0000026623,0.0000026590, -0.0000026556,0.0000026522,0.0000026480,0.0000026462,0.0000026445, -0.0000026433,0.0000026459,0.0000026496,0.0000026566,0.0000026640, -0.0000026708,0.0000026782,0.0000026870,0.0000026975,0.0000027072, -0.0000027108,0.0000027074,0.0000027003,0.0000026950,0.0000026936, -0.0000026984,0.0000027012,0.0000026962,0.0000026863,0.0000026794, -0.0000026792,0.0000026825,0.0000026863,0.0000026885,0.0000026892, -0.0000026900,0.0000026939,0.0000027002,0.0000027047,0.0000027080, -0.0000027091,0.0000027080,0.0000027033,0.0000026961,0.0000026878, -0.0000026807,0.0000026754,0.0000026732,0.0000026730,0.0000026738, -0.0000026759,0.0000026801,0.0000026876,0.0000026982,0.0000027087, -0.0000027150,0.0000027186,0.0000027221,0.0000027252,0.0000027262, -0.0000027228,0.0000027155,0.0000027060,0.0000026967,0.0000026893, -0.0000026837,0.0000026784,0.0000026757,0.0000026753,0.0000026797, -0.0000026906,0.0000027055,0.0000027240,0.0000027432,0.0000027542, -0.0000027595,0.0000027630,0.0000027593,0.0000027525,0.0000027533, -0.0000027530,0.0000027430,0.0000027296,0.0000027203,0.0000027238, -0.0000027504,0.0000027744,0.0000027756,0.0000027772,0.0000027947, -0.0000028034,0.0000027982,0.0000027929,0.0000027923,0.0000027954, -0.0000028009,0.0000028106,0.0000028215,0.0000028278,0.0000028307, -0.0000028308,0.0000028250,0.0000028171,0.0000028102,0.0000028044, -0.0000028008,0.0000027980,0.0000027943,0.0000027910,0.0000027911, -0.0000027962,0.0000028024,0.0000028066,0.0000028083,0.0000028062, -0.0000028008,0.0000027979,0.0000028008,0.0000028083,0.0000028132, -0.0000028144,0.0000028158,0.0000028206,0.0000028245,0.0000028271, -0.0000028266,0.0000028212,0.0000028102,0.0000027974,0.0000027868, -0.0000027820,0.0000027811,0.0000027795,0.0000027759,0.0000027709, -0.0000027679,0.0000027637,0.0000027570,0.0000027515,0.0000027471, -0.0000027470,0.0000027501,0.0000027558,0.0000027619,0.0000027679, -0.0000027726,0.0000027742,0.0000027740,0.0000027740,0.0000027731, -0.0000027687,0.0000027623,0.0000027556,0.0000027530,0.0000027539, -0.0000027573,0.0000027620,0.0000027670,0.0000027719,0.0000027764, -0.0000027799,0.0000027820,0.0000027840,0.0000027886,0.0000027968, -0.0000028057,0.0000028097,0.0000028081,0.0000028040,0.0000028034, -0.0000028080,0.0000028136,0.0000028159,0.0000028151,0.0000028151, -0.0000028169,0.0000028196,0.0000028226,0.0000028242,0.0000028238, -0.0000028202,0.0000028138,0.0000028097,0.0000028101,0.0000028135, -0.0000028145,0.0000028115,0.0000028100,0.0000028133,0.0000028125, -0.0000028078,0.0000028018,0.0000027970,0.0000028008,0.0000028102, -0.0000028176,0.0000028236,0.0000028297,0.0000028318,0.0000028319, -0.0000028318,0.0000028308,0.0000028286,0.0000028260,0.0000028243, -0.0000028232,0.0000028209,0.0000028171,0.0000028123,0.0000028053, -0.0000027948,0.0000027831,0.0000027707,0.0000027606,0.0000027551, -0.0000027543,0.0000027568,0.0000027607,0.0000027623,0.0000027650, -0.0000027688,0.0000027721,0.0000027741,0.0000027750,0.0000027755, -0.0000027766,0.0000027785,0.0000027808,0.0000027831,0.0000027850, -0.0000027866,0.0000027886,0.0000027904,0.0000027912,0.0000027897, -0.0000027848,0.0000027760,0.0000027654,0.0000027558,0.0000027496, -0.0000027485,0.0000027527,0.0000027615,0.0000027736,0.0000027871, -0.0000027990,0.0000028067,0.0000028099,0.0000028096,0.0000028075, -0.0000028064,0.0000028078,0.0000028121,0.0000028164,0.0000028180, -0.0000028169,0.0000028130,0.0000028089,0.0000028056,0.0000028055, -0.0000028085,0.0000028107,0.0000028102,0.0000028054,0.0000027982, -0.0000027922,0.0000027908,0.0000027944,0.0000028001,0.0000028047, -0.0000028064,0.0000028060,0.0000028039,0.0000027990,0.0000027888, -0.0000027741,0.0000027579,0.0000027436,0.0000027324,0.0000027254, -0.0000027234,0.0000027264,0.0000027351,0.0000027475,0.0000027597, -0.0000027669,0.0000027656,0.0000027583,0.0000027500,0.0000027437, -0.0000027403,0.0000027377,0.0000027297,0.0000027106,0.0000026858, -0.0000026758,0.0000026860,0.0000027129,0.0000027227,0.0000027064, -0.0000027003,0.0000027210,0.0000027449,0.0000027548,0.0000027535, -0.0000027537,0.0000027572,0.0000027573,0.0000027573,0.0000027559, -0.0000027537,0.0000027547,0.0000027597,0.0000027662,0.0000027716, -0.0000027741,0.0000027760,0.0000027768,0.0000027741,0.0000027665, -0.0000027550,0.0000027427,0.0000027334,0.0000027298,0.0000027314, -0.0000027391,0.0000027491,0.0000027569,0.0000027595,0.0000027557, -0.0000027496,0.0000027521,0.0000027572,0.0000027589,0.0000027583, -0.0000027559,0.0000027506,0.0000027423,0.0000027365,0.0000027311, -0.0000027237,0.0000027180,0.0000027174,0.0000027191,0.0000027197, -0.0000027186,0.0000027156,0.0000027086,0.0000026973,0.0000026870, -0.0000026799,0.0000026771,0.0000026807,0.0000026886,0.0000026967, -0.0000027038,0.0000027129,0.0000027234,0.0000027356,0.0000027512, -0.0000027693,0.0000027861,0.0000027965,0.0000027975,0.0000027912, -0.0000027775,0.0000027603,0.0000027525,0.0000027617,0.0000027765, -0.0000027851,0.0000027926,0.0000028002,0.0000028056,0.0000028070, -0.0000028049,0.0000028024,0.0000028029,0.0000028072,0.0000028098, -0.0000028119,0.0000028197,0.0000028293,0.0000028339,0.0000028344, -0.0000028268,0.0000028109,0.0000027961,0.0000027879,0.0000027796, -0.0000027683,0.0000027583,0.0000027515,0.0000027473,0.0000027426, -0.0000027344,0.0000027215,0.0000027105,0.0000027090,0.0000027116, -0.0000027126,0.0000027133,0.0000027158,0.0000027204,0.0000027252, -0.0000027300,0.0000027363,0.0000027420,0.0000027479,0.0000027523, -0.0000027534,0.0000027528,0.0000027512,0.0000027494,0.0000027476, -0.0000027471,0.0000027469,0.0000027455,0.0000027433,0.0000027425, -0.0000027452,0.0000027508,0.0000027567,0.0000027609,0.0000027633, -0.0000027658,0.0000027703,0.0000027751,0.0000027771,0.0000027746, -0.0000027689,0.0000027672,0.0000027740,0.0000027849,0.0000027899, -0.0000027868,0.0000027764,0.0000027681,0.0000027683,0.0000027746, -0.0000027811,0.0000027839,0.0000027847,0.0000027849,0.0000027855, -0.0000027863,0.0000027881,0.0000027904,0.0000027920,0.0000027920, -0.0000027903,0.0000027872,0.0000027840,0.0000027810,0.0000027781, -0.0000027748,0.0000027707,0.0000027651,0.0000027580,0.0000027505, -0.0000027445,0.0000027411,0.0000027393,0.0000027370,0.0000027342, -0.0000027316,0.0000027275,0.0000027208,0.0000027127,0.0000027042, -0.0000026951,0.0000026868,0.0000026794,0.0000026732,0.0000026679, -0.0000026624,0.0000026567,0.0000026528,0.0000026518,0.0000026536, -0.0000026576,0.0000026627,0.0000026683,0.0000026747,0.0000026818, -0.0000026887,0.0000026944,0.0000026990,0.0000027036,0.0000027069, -0.0000027066,0.0000027019,0.0000026974,0.0000026963,0.0000027001, -0.0000027040,0.0000027022,0.0000026930,0.0000026828,0.0000026785, -0.0000026792,0.0000026822,0.0000026848,0.0000026865,0.0000026887, -0.0000026906,0.0000026955,0.0000027034,0.0000027113,0.0000027172, -0.0000027200,0.0000027195,0.0000027150,0.0000027074,0.0000026982, -0.0000026881,0.0000026787,0.0000026720,0.0000026684,0.0000026687, -0.0000026702,0.0000026727,0.0000026783,0.0000026892,0.0000027021, -0.0000027122,0.0000027173,0.0000027198,0.0000027228,0.0000027255, -0.0000027271,0.0000027265,0.0000027216,0.0000027127,0.0000027016, -0.0000026916,0.0000026849,0.0000026810,0.0000026794,0.0000026790, -0.0000026823,0.0000026918,0.0000027073,0.0000027289,0.0000027481, -0.0000027581,0.0000027642,0.0000027649,0.0000027575,0.0000027538, -0.0000027570,0.0000027544,0.0000027420,0.0000027275,0.0000027200, -0.0000027308,0.0000027619,0.0000027776,0.0000027770,0.0000027854, -0.0000028003,0.0000028004,0.0000027927,0.0000027903,0.0000027923, -0.0000027987,0.0000028092,0.0000028195,0.0000028260,0.0000028294, -0.0000028291,0.0000028282,0.0000028228,0.0000028151,0.0000028075, -0.0000028010,0.0000027951,0.0000027896,0.0000027861,0.0000027871, -0.0000027930,0.0000028010,0.0000028069,0.0000028095,0.0000028097, -0.0000028048,0.0000028003,0.0000028007,0.0000028044,0.0000028092, -0.0000028141,0.0000028188,0.0000028230,0.0000028262,0.0000028264, -0.0000028249,0.0000028223,0.0000028168,0.0000028069,0.0000027947, -0.0000027827,0.0000027734,0.0000027676,0.0000027679,0.0000027723, -0.0000027736,0.0000027720,0.0000027717,0.0000027728,0.0000027719, -0.0000027649,0.0000027559,0.0000027501,0.0000027505,0.0000027553, -0.0000027606,0.0000027641,0.0000027654,0.0000027663,0.0000027683, -0.0000027697,0.0000027675,0.0000027609,0.0000027532,0.0000027489, -0.0000027488,0.0000027513,0.0000027558,0.0000027617,0.0000027679, -0.0000027732,0.0000027764,0.0000027782,0.0000027810,0.0000027872, -0.0000027973,0.0000028069,0.0000028110,0.0000028100,0.0000028061, -0.0000028036,0.0000028062,0.0000028137,0.0000028197,0.0000028208, -0.0000028209,0.0000028229,0.0000028267,0.0000028297,0.0000028299, -0.0000028264,0.0000028194,0.0000028128,0.0000028099,0.0000028111, -0.0000028142,0.0000028150,0.0000028132,0.0000028149,0.0000028193, -0.0000028176,0.0000028128,0.0000028071,0.0000028034,0.0000028095, -0.0000028195,0.0000028272,0.0000028345,0.0000028394,0.0000028400, -0.0000028388,0.0000028382,0.0000028360,0.0000028307,0.0000028254, -0.0000028218,0.0000028195,0.0000028172,0.0000028144,0.0000028118, -0.0000028083,0.0000028024,0.0000027947,0.0000027856,0.0000027759, -0.0000027677,0.0000027621,0.0000027599,0.0000027597,0.0000027630, -0.0000027613,0.0000027620,0.0000027650,0.0000027687,0.0000027714, -0.0000027735,0.0000027750,0.0000027759,0.0000027760,0.0000027756, -0.0000027755,0.0000027763,0.0000027796,0.0000027865,0.0000027944, -0.0000027990,0.0000027986,0.0000027940,0.0000027863,0.0000027771, -0.0000027666,0.0000027566,0.0000027515,0.0000027539,0.0000027637, -0.0000027772,0.0000027917,0.0000028051,0.0000028148,0.0000028188, -0.0000028179,0.0000028131,0.0000028075,0.0000028044,0.0000028058, -0.0000028102,0.0000028152,0.0000028170,0.0000028157,0.0000028123, -0.0000028077,0.0000028050,0.0000028068,0.0000028110,0.0000028131, -0.0000028121,0.0000028070,0.0000027992,0.0000027938,0.0000027942, -0.0000027985,0.0000028032,0.0000028068,0.0000028092,0.0000028105, -0.0000028108,0.0000028062,0.0000027941,0.0000027764,0.0000027574, -0.0000027416,0.0000027316,0.0000027282,0.0000027301,0.0000027389, -0.0000027514,0.0000027626,0.0000027680,0.0000027666,0.0000027588, -0.0000027492,0.0000027418,0.0000027386,0.0000027384,0.0000027321, -0.0000027124,0.0000026882,0.0000026776,0.0000026824,0.0000027066, -0.0000027232,0.0000027100,0.0000026957,0.0000027097,0.0000027366, -0.0000027531,0.0000027552,0.0000027543,0.0000027571,0.0000027569, -0.0000027556,0.0000027552,0.0000027549,0.0000027577,0.0000027653, -0.0000027725,0.0000027767,0.0000027805,0.0000027846,0.0000027879, -0.0000027884,0.0000027829,0.0000027717,0.0000027567,0.0000027421, -0.0000027325,0.0000027304,0.0000027356,0.0000027472,0.0000027596, -0.0000027666,0.0000027639,0.0000027533,0.0000027478,0.0000027524, -0.0000027574,0.0000027607,0.0000027617,0.0000027583,0.0000027505, -0.0000027441,0.0000027404,0.0000027323,0.0000027215,0.0000027155, -0.0000027142,0.0000027161,0.0000027183,0.0000027198,0.0000027177, -0.0000027086,0.0000026949,0.0000026837,0.0000026777,0.0000026764, -0.0000026803,0.0000026885,0.0000026978,0.0000027061,0.0000027141, -0.0000027222,0.0000027309,0.0000027443,0.0000027636,0.0000027817, -0.0000027939,0.0000027970,0.0000027909,0.0000027756,0.0000027559, -0.0000027514,0.0000027654,0.0000027823,0.0000027929,0.0000028043, -0.0000028153,0.0000028211,0.0000028213,0.0000028174,0.0000028137, -0.0000028140,0.0000028171,0.0000028187,0.0000028187,0.0000028228, -0.0000028299,0.0000028333,0.0000028340,0.0000028278,0.0000028120, -0.0000027962,0.0000027871,0.0000027787,0.0000027680,0.0000027588, -0.0000027536,0.0000027500,0.0000027450,0.0000027347,0.0000027190, -0.0000027079,0.0000027077,0.0000027116,0.0000027158,0.0000027189, -0.0000027214,0.0000027226,0.0000027238,0.0000027255,0.0000027309, -0.0000027383,0.0000027466,0.0000027540,0.0000027567,0.0000027560, -0.0000027539,0.0000027519,0.0000027508,0.0000027508,0.0000027508, -0.0000027498,0.0000027476,0.0000027461,0.0000027469,0.0000027506, -0.0000027556,0.0000027604,0.0000027637,0.0000027661,0.0000027707, -0.0000027768,0.0000027799,0.0000027765,0.0000027679,0.0000027629, -0.0000027673,0.0000027787,0.0000027869,0.0000027858,0.0000027771, -0.0000027684,0.0000027678,0.0000027741,0.0000027798,0.0000027808, -0.0000027796,0.0000027800,0.0000027821,0.0000027846,0.0000027871, -0.0000027907,0.0000027941,0.0000027954,0.0000027947,0.0000027918, -0.0000027875,0.0000027835,0.0000027808,0.0000027782,0.0000027749, -0.0000027707,0.0000027657,0.0000027602,0.0000027546,0.0000027513, -0.0000027487,0.0000027469,0.0000027442,0.0000027402,0.0000027359, -0.0000027307,0.0000027239,0.0000027170,0.0000027106,0.0000027038, -0.0000026971,0.0000026903,0.0000026839,0.0000026787,0.0000026744, -0.0000026713,0.0000026701,0.0000026718,0.0000026762,0.0000026817, -0.0000026859,0.0000026883,0.0000026906,0.0000026941,0.0000026982, -0.0000027016,0.0000027032,0.0000027037,0.0000027039,0.0000027021, -0.0000026998,0.0000026982,0.0000027005,0.0000027048,0.0000027050, -0.0000026991,0.0000026895,0.0000026815,0.0000026789,0.0000026794, -0.0000026812,0.0000026833,0.0000026861,0.0000026909,0.0000026973, -0.0000027058,0.0000027162,0.0000027256,0.0000027319,0.0000027345, -0.0000027340,0.0000027300,0.0000027226,0.0000027131,0.0000027024, -0.0000026908,0.0000026800,0.0000026722,0.0000026695,0.0000026694, -0.0000026701,0.0000026728,0.0000026797,0.0000026923,0.0000027054, -0.0000027155,0.0000027213,0.0000027242,0.0000027259,0.0000027268, -0.0000027272,0.0000027261,0.0000027223,0.0000027137,0.0000027016, -0.0000026909,0.0000026849,0.0000026827,0.0000026820,0.0000026821, -0.0000026856,0.0000026950,0.0000027132,0.0000027368,0.0000027542, -0.0000027641,0.0000027682,0.0000027642,0.0000027561,0.0000027575, -0.0000027623,0.0000027561,0.0000027401,0.0000027256,0.0000027226, -0.0000027410,0.0000027696,0.0000027775,0.0000027802,0.0000027937, -0.0000028006,0.0000027946,0.0000027884,0.0000027892,0.0000027962, -0.0000028067,0.0000028165,0.0000028226,0.0000028257,0.0000028265, -0.0000028250,0.0000028246,0.0000028213,0.0000028128,0.0000028027, -0.0000027938,0.0000027863,0.0000027825,0.0000027829,0.0000027883, -0.0000027961,0.0000028047,0.0000028110,0.0000028115,0.0000028096, -0.0000028050,0.0000028037,0.0000028059,0.0000028099,0.0000028153, -0.0000028214,0.0000028249,0.0000028249,0.0000028213,0.0000028186, -0.0000028190,0.0000028205,0.0000028185,0.0000028111,0.0000027995, -0.0000027877,0.0000027769,0.0000027677,0.0000027618,0.0000027619, -0.0000027694,0.0000027767,0.0000027775,0.0000027769,0.0000027812, -0.0000027814,0.0000027759,0.0000027662,0.0000027568,0.0000027532, -0.0000027534,0.0000027557,0.0000027583,0.0000027614,0.0000027651, -0.0000027672,0.0000027662,0.0000027600,0.0000027528,0.0000027494, -0.0000027492,0.0000027498,0.0000027520,0.0000027563,0.0000027625, -0.0000027689,0.0000027737,0.0000027772,0.0000027816,0.0000027878, -0.0000027956,0.0000028031,0.0000028082,0.0000028100,0.0000028097, -0.0000028097,0.0000028125,0.0000028189,0.0000028262,0.0000028296, -0.0000028302,0.0000028313,0.0000028323,0.0000028321,0.0000028291, -0.0000028228,0.0000028157,0.0000028121,0.0000028129,0.0000028154, -0.0000028154,0.0000028137,0.0000028132,0.0000028182,0.0000028229, -0.0000028215,0.0000028172,0.0000028109,0.0000028097,0.0000028171, -0.0000028262,0.0000028327,0.0000028408,0.0000028452,0.0000028460, -0.0000028461,0.0000028448,0.0000028414,0.0000028362,0.0000028296, -0.0000028237,0.0000028190,0.0000028152,0.0000028116,0.0000028086, -0.0000028066,0.0000028034,0.0000027986,0.0000027949,0.0000027900, -0.0000027834,0.0000027768,0.0000027712,0.0000027675,0.0000027652, -0.0000027709,0.0000027658,0.0000027627,0.0000027630,0.0000027652, -0.0000027675,0.0000027701,0.0000027727,0.0000027735,0.0000027722, -0.0000027696,0.0000027683,0.0000027694,0.0000027746,0.0000027847, -0.0000027961,0.0000028035,0.0000028042,0.0000028019,0.0000027981, -0.0000027916,0.0000027804,0.0000027661,0.0000027556,0.0000027537, -0.0000027610,0.0000027736,0.0000027881,0.0000028033,0.0000028159, -0.0000028229,0.0000028235,0.0000028180,0.0000028086,0.0000027995, -0.0000027946,0.0000027960,0.0000028009,0.0000028058,0.0000028087, -0.0000028092,0.0000028072,0.0000028046,0.0000028051,0.0000028097, -0.0000028150,0.0000028175,0.0000028166,0.0000028099,0.0000028015, -0.0000027978,0.0000027986,0.0000028017,0.0000028043,0.0000028062, -0.0000028082,0.0000028102,0.0000028103,0.0000028051,0.0000027938, -0.0000027785,0.0000027611,0.0000027451,0.0000027345,0.0000027322, -0.0000027380,0.0000027499,0.0000027604,0.0000027633,0.0000027592, -0.0000027505,0.0000027417,0.0000027369,0.0000027378,0.0000027409, -0.0000027353,0.0000027133,0.0000026891,0.0000026778,0.0000026816, -0.0000027014,0.0000027228,0.0000027154,0.0000026931,0.0000026994, -0.0000027268,0.0000027487,0.0000027552,0.0000027548,0.0000027563, -0.0000027564,0.0000027539,0.0000027535,0.0000027551,0.0000027597, -0.0000027686,0.0000027765,0.0000027800,0.0000027828,0.0000027889, -0.0000027958,0.0000027994,0.0000027976,0.0000027892,0.0000027753, -0.0000027585,0.0000027426,0.0000027330,0.0000027330,0.0000027421, -0.0000027571,0.0000027706,0.0000027737,0.0000027642,0.0000027500, -0.0000027480,0.0000027537,0.0000027605,0.0000027662,0.0000027665, -0.0000027590,0.0000027501,0.0000027462,0.0000027427,0.0000027326, -0.0000027212,0.0000027136,0.0000027108,0.0000027130,0.0000027169, -0.0000027202,0.0000027175,0.0000027059,0.0000026914,0.0000026818, -0.0000026781,0.0000026785,0.0000026847,0.0000026946,0.0000027044, -0.0000027119,0.0000027182,0.0000027231,0.0000027285,0.0000027388, -0.0000027583,0.0000027781,0.0000027914,0.0000027964,0.0000027919, -0.0000027764,0.0000027580,0.0000027570,0.0000027730,0.0000027910, -0.0000028054,0.0000028196,0.0000028312,0.0000028359,0.0000028354, -0.0000028311,0.0000028263,0.0000028251,0.0000028257,0.0000028258, -0.0000028248,0.0000028266,0.0000028309,0.0000028331,0.0000028335, -0.0000028282,0.0000028129,0.0000027957,0.0000027851,0.0000027776, -0.0000027687,0.0000027614,0.0000027565,0.0000027542,0.0000027485, -0.0000027353,0.0000027166,0.0000027049,0.0000027061,0.0000027136, -0.0000027200,0.0000027236,0.0000027235,0.0000027212,0.0000027187, -0.0000027197,0.0000027267,0.0000027381,0.0000027498,0.0000027588, -0.0000027620,0.0000027609,0.0000027580,0.0000027556,0.0000027547, -0.0000027547,0.0000027549,0.0000027546,0.0000027532,0.0000027512, -0.0000027503,0.0000027520,0.0000027559,0.0000027604,0.0000027647, -0.0000027682,0.0000027720,0.0000027770,0.0000027796,0.0000027762, -0.0000027653,0.0000027582,0.0000027609,0.0000027718,0.0000027817, -0.0000027839,0.0000027771,0.0000027689,0.0000027682,0.0000027744, -0.0000027793,0.0000027788,0.0000027759,0.0000027756,0.0000027785, -0.0000027823,0.0000027853,0.0000027883,0.0000027922,0.0000027951, -0.0000027957,0.0000027940,0.0000027900,0.0000027846,0.0000027796, -0.0000027758,0.0000027725,0.0000027683,0.0000027632,0.0000027578, -0.0000027535,0.0000027512,0.0000027504,0.0000027504,0.0000027500, -0.0000027491,0.0000027458,0.0000027409,0.0000027350,0.0000027281, -0.0000027218,0.0000027163,0.0000027103,0.0000027042,0.0000026978, -0.0000026920,0.0000026886,0.0000026875,0.0000026884,0.0000026905, -0.0000026938,0.0000026980,0.0000027011,0.0000027018,0.0000027000, -0.0000026982,0.0000026985,0.0000027008,0.0000027034,0.0000027046, -0.0000027042,0.0000027030,0.0000027019,0.0000027004,0.0000027007, -0.0000027025,0.0000027041,0.0000027011,0.0000026943,0.0000026879, -0.0000026834,0.0000026809,0.0000026798,0.0000026804,0.0000026833, -0.0000026901,0.0000026994,0.0000027088,0.0000027178,0.0000027273, -0.0000027361,0.0000027417,0.0000027431,0.0000027415,0.0000027377, -0.0000027316,0.0000027232,0.0000027132,0.0000027024,0.0000026920, -0.0000026842,0.0000026804,0.0000026791,0.0000026781,0.0000026770, -0.0000026787,0.0000026858,0.0000026971,0.0000027083,0.0000027182, -0.0000027256,0.0000027298,0.0000027311,0.0000027301,0.0000027275, -0.0000027242,0.0000027187,0.0000027090,0.0000026974,0.0000026891, -0.0000026853,0.0000026843,0.0000026831,0.0000026840,0.0000026895, -0.0000027021,0.0000027240,0.0000027470,0.0000027622,0.0000027696, -0.0000027689,0.0000027609,0.0000027569,0.0000027634,0.0000027669, -0.0000027561,0.0000027381,0.0000027253,0.0000027289,0.0000027530, -0.0000027734,0.0000027780,0.0000027869,0.0000027998,0.0000028001, -0.0000027904,0.0000027872,0.0000027933,0.0000028057,0.0000028142, -0.0000028190,0.0000028212,0.0000028218,0.0000028214,0.0000028208, -0.0000028210,0.0000028188,0.0000028087,0.0000027960,0.0000027869, -0.0000027834,0.0000027845,0.0000027879,0.0000027927,0.0000028002, -0.0000028100,0.0000028161,0.0000028164,0.0000028153,0.0000028143, -0.0000028155,0.0000028187,0.0000028223,0.0000028256,0.0000028267, -0.0000028234,0.0000028176,0.0000028124,0.0000028124,0.0000028172, -0.0000028216,0.0000028220,0.0000028166,0.0000028069,0.0000027962, -0.0000027844,0.0000027735,0.0000027659,0.0000027625,0.0000027636, -0.0000027736,0.0000027820,0.0000027821,0.0000027824,0.0000027847, -0.0000027862,0.0000027826,0.0000027751,0.0000027661,0.0000027566, -0.0000027506,0.0000027504,0.0000027540,0.0000027602,0.0000027645, -0.0000027645,0.0000027592,0.0000027520,0.0000027491,0.0000027503, -0.0000027530,0.0000027554,0.0000027587,0.0000027641,0.0000027702, -0.0000027758,0.0000027801,0.0000027847,0.0000027893,0.0000027934, -0.0000027974,0.0000028019,0.0000028082,0.0000028148,0.0000028215, -0.0000028269,0.0000028304,0.0000028342,0.0000028372,0.0000028370, -0.0000028345,0.0000028304,0.0000028253,0.0000028206,0.0000028174, -0.0000028151,0.0000028154,0.0000028184,0.0000028205,0.0000028179, -0.0000028127,0.0000028126,0.0000028196,0.0000028239,0.0000028232, -0.0000028192,0.0000028122,0.0000028119,0.0000028209,0.0000028302, -0.0000028355,0.0000028418,0.0000028466,0.0000028484,0.0000028503, -0.0000028499,0.0000028469,0.0000028411,0.0000028359,0.0000028305, -0.0000028246,0.0000028183,0.0000028127,0.0000028083,0.0000028042, -0.0000028006,0.0000027979,0.0000027964,0.0000027959,0.0000027945, -0.0000027911,0.0000027868,0.0000027819,0.0000027781,0.0000027751, -0.0000027837,0.0000027771,0.0000027707,0.0000027666,0.0000027652, -0.0000027655,0.0000027674,0.0000027705,0.0000027720,0.0000027706, -0.0000027675,0.0000027657,0.0000027670,0.0000027716,0.0000027808, -0.0000027928,0.0000028025,0.0000028063,0.0000028073,0.0000028074, -0.0000028045,0.0000027954,0.0000027801,0.0000027638,0.0000027554, -0.0000027576,0.0000027668,0.0000027793,0.0000027939,0.0000028091, -0.0000028207,0.0000028241,0.0000028214,0.0000028120,0.0000028000, -0.0000027893,0.0000027840,0.0000027853,0.0000027895,0.0000027942, -0.0000027986,0.0000028001,0.0000027994,0.0000027989,0.0000028018, -0.0000028087,0.0000028154,0.0000028184,0.0000028171,0.0000028114, -0.0000028057,0.0000028036,0.0000028034,0.0000028035,0.0000028037, -0.0000028041,0.0000028053,0.0000028061,0.0000028043,0.0000027985, -0.0000027912,0.0000027826,0.0000027700,0.0000027550,0.0000027452, -0.0000027448,0.0000027515,0.0000027587,0.0000027585,0.0000027502, -0.0000027393,0.0000027323,0.0000027317,0.0000027379,0.0000027454, -0.0000027403,0.0000027161,0.0000026909,0.0000026803,0.0000026830, -0.0000026992,0.0000027208,0.0000027189,0.0000026957,0.0000026914, -0.0000027159,0.0000027424,0.0000027544,0.0000027548,0.0000027551, -0.0000027560,0.0000027528,0.0000027511,0.0000027536,0.0000027598, -0.0000027696,0.0000027779,0.0000027811,0.0000027829,0.0000027882, -0.0000027973,0.0000028047,0.0000028067,0.0000028017,0.0000027904, -0.0000027759,0.0000027596,0.0000027446,0.0000027369,0.0000027386, -0.0000027507,0.0000027684,0.0000027809,0.0000027783,0.0000027623, -0.0000027484,0.0000027494,0.0000027574,0.0000027670,0.0000027721, -0.0000027689,0.0000027574,0.0000027498,0.0000027483,0.0000027443, -0.0000027341,0.0000027226,0.0000027129,0.0000027091,0.0000027113, -0.0000027166,0.0000027200,0.0000027173,0.0000027051,0.0000026917, -0.0000026830,0.0000026799,0.0000026825,0.0000026917,0.0000027035, -0.0000027136,0.0000027203,0.0000027243,0.0000027261,0.0000027283, -0.0000027355,0.0000027535,0.0000027751,0.0000027901,0.0000027961, -0.0000027935,0.0000027794,0.0000027636,0.0000027658,0.0000027833, -0.0000028026,0.0000028203,0.0000028347,0.0000028446,0.0000028482, -0.0000028476,0.0000028428,0.0000028369,0.0000028334,0.0000028316, -0.0000028301,0.0000028289,0.0000028301,0.0000028329,0.0000028340, -0.0000028338,0.0000028287,0.0000028138,0.0000027948,0.0000027820, -0.0000027756,0.0000027700,0.0000027647,0.0000027617,0.0000027593, -0.0000027529,0.0000027369,0.0000027159,0.0000027054,0.0000027061, -0.0000027164,0.0000027244,0.0000027269,0.0000027244,0.0000027189, -0.0000027150,0.0000027171,0.0000027260,0.0000027399,0.0000027538, -0.0000027643,0.0000027692,0.0000027691,0.0000027666,0.0000027641, -0.0000027631,0.0000027630,0.0000027625,0.0000027614,0.0000027597, -0.0000027571,0.0000027550,0.0000027554,0.0000027586,0.0000027621, -0.0000027656,0.0000027696,0.0000027740,0.0000027774,0.0000027779, -0.0000027722,0.0000027608,0.0000027531,0.0000027557,0.0000027652, -0.0000027764,0.0000027808,0.0000027759,0.0000027676,0.0000027673, -0.0000027751,0.0000027810,0.0000027797,0.0000027748,0.0000027723, -0.0000027737,0.0000027772,0.0000027810,0.0000027847,0.0000027891, -0.0000027936,0.0000027958,0.0000027951,0.0000027919,0.0000027862, -0.0000027792,0.0000027725,0.0000027670,0.0000027624,0.0000027574, -0.0000027517,0.0000027466,0.0000027433,0.0000027424,0.0000027434, -0.0000027455,0.0000027471,0.0000027482,0.0000027469,0.0000027423, -0.0000027372,0.0000027309,0.0000027247,0.0000027186,0.0000027122, -0.0000027065,0.0000027014,0.0000026975,0.0000026964,0.0000026987, -0.0000027026,0.0000027061,0.0000027085,0.0000027100,0.0000027102, -0.0000027080,0.0000027038,0.0000027005,0.0000026996,0.0000027016, -0.0000027046,0.0000027065,0.0000027071,0.0000027063,0.0000027048, -0.0000027040,0.0000027026,0.0000027012,0.0000026996,0.0000026960, -0.0000026917,0.0000026891,0.0000026869,0.0000026836,0.0000026805, -0.0000026810,0.0000026872,0.0000026980,0.0000027092,0.0000027185, -0.0000027254,0.0000027321,0.0000027394,0.0000027453,0.0000027472, -0.0000027461,0.0000027430,0.0000027387,0.0000027324,0.0000027240, -0.0000027143,0.0000027044,0.0000026963,0.0000026923,0.0000026914, -0.0000026910,0.0000026900,0.0000026896,0.0000026913,0.0000026965, -0.0000027044,0.0000027132,0.0000027222,0.0000027295,0.0000027339, -0.0000027349,0.0000027322,0.0000027268,0.0000027202,0.0000027121, -0.0000027022,0.0000026937,0.0000026895,0.0000026872,0.0000026841, -0.0000026831,0.0000026869,0.0000026966,0.0000027154,0.0000027395, -0.0000027590,0.0000027703,0.0000027722,0.0000027648,0.0000027561, -0.0000027597,0.0000027705,0.0000027697,0.0000027545,0.0000027361, -0.0000027268,0.0000027372,0.0000027623,0.0000027753,0.0000027811, -0.0000027943,0.0000028022,0.0000027982,0.0000027891,0.0000027894, -0.0000028018,0.0000028129,0.0000028168,0.0000028185,0.0000028188, -0.0000028175,0.0000028162,0.0000028165,0.0000028170,0.0000028147, -0.0000028049,0.0000027930,0.0000027869,0.0000027882,0.0000027925, -0.0000027953,0.0000027983,0.0000028041,0.0000028137,0.0000028208, -0.0000028238,0.0000028246,0.0000028253,0.0000028264,0.0000028274, -0.0000028272,0.0000028261,0.0000028218,0.0000028151,0.0000028105, -0.0000028085,0.0000028097,0.0000028162,0.0000028228,0.0000028258, -0.0000028229,0.0000028156,0.0000028060,0.0000027955,0.0000027842, -0.0000027744,0.0000027682,0.0000027650,0.0000027672,0.0000027780, -0.0000027863,0.0000027876,0.0000027875,0.0000027896,0.0000027917, -0.0000027893,0.0000027828,0.0000027744,0.0000027633,0.0000027525, -0.0000027500,0.0000027543,0.0000027605,0.0000027623,0.0000027594, -0.0000027537,0.0000027505,0.0000027519,0.0000027551,0.0000027590, -0.0000027635,0.0000027684,0.0000027744,0.0000027794,0.0000027831, -0.0000027858,0.0000027888,0.0000027918,0.0000027948,0.0000027996, -0.0000028083,0.0000028208,0.0000028323,0.0000028392,0.0000028421, -0.0000028424,0.0000028408,0.0000028361,0.0000028282,0.0000028216, -0.0000028184,0.0000028173,0.0000028182,0.0000028203,0.0000028228, -0.0000028246,0.0000028237,0.0000028190,0.0000028130,0.0000028131, -0.0000028203,0.0000028238,0.0000028237,0.0000028193,0.0000028123, -0.0000028127,0.0000028210,0.0000028285,0.0000028338,0.0000028393, -0.0000028430,0.0000028472,0.0000028512,0.0000028528,0.0000028507, -0.0000028472,0.0000028417,0.0000028365,0.0000028309,0.0000028247, -0.0000028176,0.0000028109,0.0000028053,0.0000027997,0.0000027953, -0.0000027936,0.0000027953,0.0000027979,0.0000027990,0.0000027980, -0.0000027961,0.0000027936,0.0000027910,0.0000027883,0.0000027957, -0.0000027894,0.0000027823,0.0000027763,0.0000027723,0.0000027703, -0.0000027699,0.0000027711,0.0000027726,0.0000027720,0.0000027697, -0.0000027680,0.0000027680,0.0000027703,0.0000027751,0.0000027841, -0.0000027950,0.0000028031,0.0000028077,0.0000028102,0.0000028107, -0.0000028065,0.0000027948,0.0000027784,0.0000027647,0.0000027607, -0.0000027639,0.0000027727,0.0000027843,0.0000027994,0.0000028143, -0.0000028230,0.0000028242,0.0000028188,0.0000028080,0.0000027951, -0.0000027847,0.0000027813,0.0000027828,0.0000027870,0.0000027925, -0.0000027961,0.0000027964,0.0000027947,0.0000027942,0.0000027971, -0.0000028037,0.0000028101,0.0000028132,0.0000028129,0.0000028113, -0.0000028111,0.0000028106,0.0000028074,0.0000028032,0.0000028009, -0.0000028009,0.0000028010,0.0000027994,0.0000027956,0.0000027932, -0.0000027924,0.0000027886,0.0000027787,0.0000027677,0.0000027633, -0.0000027640,0.0000027649,0.0000027592,0.0000027478,0.0000027362, -0.0000027301,0.0000027310,0.0000027400,0.0000027490,0.0000027438, -0.0000027199,0.0000026964,0.0000026860,0.0000026873,0.0000026995, -0.0000027205,0.0000027239,0.0000027005,0.0000026883,0.0000027053, -0.0000027342,0.0000027515,0.0000027537,0.0000027531,0.0000027545, -0.0000027526,0.0000027487,0.0000027501,0.0000027573,0.0000027681, -0.0000027778,0.0000027814,0.0000027819,0.0000027855,0.0000027939, -0.0000028033,0.0000028086,0.0000028082,0.0000028005,0.0000027880, -0.0000027745,0.0000027609,0.0000027480,0.0000027416,0.0000027452, -0.0000027609,0.0000027798,0.0000027879,0.0000027802,0.0000027609, -0.0000027501,0.0000027519,0.0000027628,0.0000027739,0.0000027764, -0.0000027684,0.0000027556,0.0000027498,0.0000027505,0.0000027468, -0.0000027371,0.0000027262,0.0000027159,0.0000027117,0.0000027129, -0.0000027183,0.0000027211,0.0000027172,0.0000027064,0.0000026954, -0.0000026870,0.0000026835,0.0000026875,0.0000026977,0.0000027101, -0.0000027212,0.0000027285,0.0000027313,0.0000027311,0.0000027310, -0.0000027348,0.0000027496,0.0000027714,0.0000027881,0.0000027968, -0.0000027958,0.0000027829,0.0000027699,0.0000027748,0.0000027941, -0.0000028154,0.0000028342,0.0000028472,0.0000028548,0.0000028577, -0.0000028568,0.0000028517,0.0000028448,0.0000028393,0.0000028358, -0.0000028334,0.0000028327,0.0000028340,0.0000028367,0.0000028374, -0.0000028361,0.0000028300,0.0000028144,0.0000027935,0.0000027783, -0.0000027729,0.0000027715,0.0000027691,0.0000027680,0.0000027652, -0.0000027568,0.0000027393,0.0000027172,0.0000027067,0.0000027087, -0.0000027201,0.0000027282,0.0000027292,0.0000027249,0.0000027195, -0.0000027163,0.0000027189,0.0000027283,0.0000027430,0.0000027587, -0.0000027719,0.0000027799,0.0000027824,0.0000027811,0.0000027775, -0.0000027750,0.0000027735,0.0000027710,0.0000027676,0.0000027633, -0.0000027601,0.0000027579,0.0000027588,0.0000027626,0.0000027659, -0.0000027675,0.0000027695,0.0000027730,0.0000027760,0.0000027746, -0.0000027660,0.0000027540,0.0000027476,0.0000027510,0.0000027608, -0.0000027716,0.0000027764,0.0000027735,0.0000027654,0.0000027649, -0.0000027732,0.0000027820,0.0000027823,0.0000027776,0.0000027722, -0.0000027704,0.0000027711,0.0000027744,0.0000027801,0.0000027865, -0.0000027933,0.0000027974,0.0000027971,0.0000027934,0.0000027859, -0.0000027767,0.0000027676,0.0000027599,0.0000027541,0.0000027497, -0.0000027455,0.0000027408,0.0000027367,0.0000027345,0.0000027343, -0.0000027355,0.0000027380,0.0000027405,0.0000027418,0.0000027420, -0.0000027395,0.0000027357,0.0000027306,0.0000027246,0.0000027184, -0.0000027116,0.0000027062,0.0000027023,0.0000027005,0.0000027011, -0.0000027051,0.0000027103,0.0000027129,0.0000027123,0.0000027123, -0.0000027112,0.0000027085,0.0000027045,0.0000027011,0.0000027001, -0.0000027018,0.0000027056,0.0000027091,0.0000027112,0.0000027115, -0.0000027098,0.0000027071,0.0000027043,0.0000027012,0.0000026978, -0.0000026946,0.0000026922,0.0000026914,0.0000026899,0.0000026862, -0.0000026833,0.0000026862,0.0000026950,0.0000027063,0.0000027155, -0.0000027224,0.0000027279,0.0000027331,0.0000027394,0.0000027464, -0.0000027512,0.0000027525,0.0000027518,0.0000027496,0.0000027453, -0.0000027382,0.0000027293,0.0000027197,0.0000027112,0.0000027058, -0.0000027033,0.0000027021,0.0000027016,0.0000027014,0.0000027024, -0.0000027048,0.0000027091,0.0000027150,0.0000027215,0.0000027273, -0.0000027317,0.0000027346,0.0000027348,0.0000027306,0.0000027230, -0.0000027147,0.0000027055,0.0000026969,0.0000026922,0.0000026887, -0.0000026847,0.0000026828,0.0000026858,0.0000026933,0.0000027102, -0.0000027349,0.0000027574,0.0000027698,0.0000027720,0.0000027669, -0.0000027567,0.0000027545,0.0000027664,0.0000027756,0.0000027689, -0.0000027502,0.0000027330,0.0000027299,0.0000027471,0.0000027675, -0.0000027775,0.0000027888,0.0000028005,0.0000028026,0.0000027968, -0.0000027912,0.0000027980,0.0000028093,0.0000028149,0.0000028171, -0.0000028183,0.0000028170,0.0000028138,0.0000028117,0.0000028123, -0.0000028134,0.0000028118,0.0000028044,0.0000027954,0.0000027922, -0.0000027951,0.0000027979,0.0000027978,0.0000027987,0.0000028028, -0.0000028101,0.0000028173,0.0000028210,0.0000028222,0.0000028220, -0.0000028218,0.0000028214,0.0000028201,0.0000028175,0.0000028134, -0.0000028099,0.0000028069,0.0000028063,0.0000028102,0.0000028188, -0.0000028272,0.0000028299,0.0000028281,0.0000028218,0.0000028141, -0.0000028055,0.0000027967,0.0000027880,0.0000027782,0.0000027701, -0.0000027669,0.0000027697,0.0000027814,0.0000027911,0.0000027929, -0.0000027937,0.0000027974,0.0000027988,0.0000027958,0.0000027892, -0.0000027806,0.0000027693,0.0000027589,0.0000027557,0.0000027590, -0.0000027623,0.0000027616,0.0000027579,0.0000027560,0.0000027575, -0.0000027616,0.0000027663,0.0000027713,0.0000027767,0.0000027815, -0.0000027854,0.0000027883,0.0000027899,0.0000027911,0.0000027934, -0.0000027971,0.0000028035,0.0000028136,0.0000028253,0.0000028367, -0.0000028444,0.0000028474,0.0000028462,0.0000028406,0.0000028328, -0.0000028261,0.0000028221,0.0000028209,0.0000028221,0.0000028251, -0.0000028285,0.0000028288,0.0000028275,0.0000028235,0.0000028184, -0.0000028150,0.0000028168,0.0000028221,0.0000028242,0.0000028237, -0.0000028188,0.0000028105,0.0000028107,0.0000028181,0.0000028253, -0.0000028290,0.0000028334,0.0000028364,0.0000028405,0.0000028477, -0.0000028522,0.0000028530,0.0000028513,0.0000028479,0.0000028423, -0.0000028362,0.0000028296,0.0000028225,0.0000028150,0.0000028083, -0.0000028018,0.0000027957,0.0000027917,0.0000027912,0.0000027941, -0.0000027985,0.0000028019,0.0000028031,0.0000028032,0.0000028031, -0.0000028022,0.0000027999,0.0000028025,0.0000027977,0.0000027923, -0.0000027871,0.0000027826,0.0000027795,0.0000027780,0.0000027775, -0.0000027775,0.0000027771,0.0000027759,0.0000027744,0.0000027734, -0.0000027728,0.0000027727,0.0000027750,0.0000027824,0.0000027923, -0.0000028007,0.0000028062,0.0000028094,0.0000028090,0.0000028030, -0.0000027918,0.0000027787,0.0000027702,0.0000027688,0.0000027727, -0.0000027815,0.0000027942,0.0000028085,0.0000028202,0.0000028258, -0.0000028244,0.0000028167,0.0000028053,0.0000027931,0.0000027860, -0.0000027845,0.0000027864,0.0000027926,0.0000027985,0.0000028007, -0.0000027989,0.0000027955,0.0000027939,0.0000027953,0.0000027998, -0.0000028044,0.0000028064,0.0000028078,0.0000028115,0.0000028155, -0.0000028153,0.0000028087,0.0000028008,0.0000027967,0.0000027960, -0.0000027949,0.0000027932,0.0000027931,0.0000027947,0.0000027953, -0.0000027916,0.0000027845,0.0000027790,0.0000027772,0.0000027738, -0.0000027646,0.0000027514,0.0000027403,0.0000027342,0.0000027345, -0.0000027427,0.0000027492,0.0000027441,0.0000027231,0.0000027031, -0.0000026939,0.0000026939,0.0000027020,0.0000027193,0.0000027246, -0.0000027047,0.0000026872,0.0000026955,0.0000027248,0.0000027472, -0.0000027529,0.0000027507,0.0000027511,0.0000027517,0.0000027474, -0.0000027458,0.0000027523,0.0000027643,0.0000027762,0.0000027824, -0.0000027826,0.0000027839,0.0000027894,0.0000027987,0.0000028062, -0.0000028093,0.0000028058,0.0000027965,0.0000027854,0.0000027744, -0.0000027631,0.0000027516,0.0000027464,0.0000027533,0.0000027721, -0.0000027891,0.0000027923,0.0000027807,0.0000027609,0.0000027526, -0.0000027561,0.0000027688,0.0000027785,0.0000027777,0.0000027660, -0.0000027520,0.0000027480,0.0000027517,0.0000027499,0.0000027420, -0.0000027336,0.0000027255,0.0000027181,0.0000027165,0.0000027189, -0.0000027201,0.0000027164,0.0000027098,0.0000027019,0.0000026939, -0.0000026901,0.0000026922,0.0000027013,0.0000027141,0.0000027264, -0.0000027350,0.0000027379,0.0000027378,0.0000027372,0.0000027383, -0.0000027480,0.0000027678,0.0000027860,0.0000027967,0.0000027978, -0.0000027866,0.0000027758,0.0000027840,0.0000028041,0.0000028269, -0.0000028459,0.0000028576,0.0000028637,0.0000028662,0.0000028656, -0.0000028608,0.0000028536,0.0000028472,0.0000028423,0.0000028397, -0.0000028395,0.0000028411,0.0000028434,0.0000028434,0.0000028405, -0.0000028317,0.0000028143,0.0000027914,0.0000027743,0.0000027702, -0.0000027722,0.0000027737,0.0000027740,0.0000027703,0.0000027604, -0.0000027430,0.0000027223,0.0000027109,0.0000027130,0.0000027245, -0.0000027320,0.0000027320,0.0000027277,0.0000027228,0.0000027205, -0.0000027234,0.0000027336,0.0000027503,0.0000027686,0.0000027838, -0.0000027937,0.0000027972,0.0000027950,0.0000027893,0.0000027840, -0.0000027804,0.0000027756,0.0000027697,0.0000027632,0.0000027581, -0.0000027568,0.0000027598,0.0000027656,0.0000027698,0.0000027703, -0.0000027693,0.0000027701,0.0000027709,0.0000027678,0.0000027589, -0.0000027475,0.0000027422,0.0000027469,0.0000027576,0.0000027682, -0.0000027728,0.0000027699,0.0000027621,0.0000027606,0.0000027694, -0.0000027800,0.0000027833,0.0000027808,0.0000027752,0.0000027703, -0.0000027687,0.0000027701,0.0000027760,0.0000027848,0.0000027932, -0.0000027981,0.0000027981,0.0000027930,0.0000027836,0.0000027723, -0.0000027613,0.0000027524,0.0000027464,0.0000027425,0.0000027402, -0.0000027379,0.0000027344,0.0000027313,0.0000027299,0.0000027300, -0.0000027311,0.0000027328,0.0000027339,0.0000027342,0.0000027336, -0.0000027321,0.0000027296,0.0000027260,0.0000027206,0.0000027143, -0.0000027077,0.0000027030,0.0000027002,0.0000026995,0.0000027005, -0.0000027046,0.0000027092,0.0000027107,0.0000027094,0.0000027076, -0.0000027064,0.0000027047,0.0000027021,0.0000026998,0.0000026992, -0.0000027013,0.0000027064,0.0000027118,0.0000027153,0.0000027160, -0.0000027141,0.0000027106,0.0000027071,0.0000027040,0.0000027007, -0.0000026967,0.0000026940,0.0000026928,0.0000026919,0.0000026903, -0.0000026905,0.0000026953,0.0000027037,0.0000027116,0.0000027173, -0.0000027225,0.0000027281,0.0000027332,0.0000027388,0.0000027468, -0.0000027553,0.0000027603,0.0000027615,0.0000027609,0.0000027578, -0.0000027515,0.0000027426,0.0000027328,0.0000027238,0.0000027181, -0.0000027158,0.0000027149,0.0000027134,0.0000027117,0.0000027110, -0.0000027125,0.0000027155,0.0000027203,0.0000027251,0.0000027280, -0.0000027290,0.0000027301,0.0000027311,0.0000027296,0.0000027244, -0.0000027177,0.0000027092,0.0000027000,0.0000026940,0.0000026893, -0.0000026840,0.0000026820,0.0000026848,0.0000026916,0.0000027078, -0.0000027331,0.0000027576,0.0000027710,0.0000027729,0.0000027682, -0.0000027579,0.0000027526,0.0000027596,0.0000027750,0.0000027772, -0.0000027636,0.0000027450,0.0000027315,0.0000027369,0.0000027567, -0.0000027705,0.0000027826,0.0000027975,0.0000028044,0.0000028034, -0.0000027971,0.0000027967,0.0000028055,0.0000028118,0.0000028148, -0.0000028183,0.0000028194,0.0000028157,0.0000028099,0.0000028069, -0.0000028080,0.0000028101,0.0000028102,0.0000028063,0.0000028001, -0.0000027974,0.0000027968,0.0000027949,0.0000027908,0.0000027885, -0.0000027884,0.0000027914,0.0000027962,0.0000028005,0.0000028038, -0.0000028046,0.0000028057,0.0000028080,0.0000028099,0.0000028102, -0.0000028086,0.0000028067,0.0000028060,0.0000028093,0.0000028157, -0.0000028218,0.0000028289,0.0000028303,0.0000028287,0.0000028247, -0.0000028192,0.0000028127,0.0000028069,0.0000028010,0.0000027924, -0.0000027810,0.0000027708,0.0000027670,0.0000027699,0.0000027826, -0.0000027934,0.0000027969,0.0000028007,0.0000028059,0.0000028058, -0.0000028011,0.0000027944,0.0000027851,0.0000027758,0.0000027696, -0.0000027674,0.0000027674,0.0000027664,0.0000027648,0.0000027652, -0.0000027680,0.0000027717,0.0000027759,0.0000027809,0.0000027872, -0.0000027934,0.0000027970,0.0000027994,0.0000028018,0.0000028035, -0.0000028054,0.0000028085,0.0000028132,0.0000028200,0.0000028277, -0.0000028350,0.0000028409,0.0000028445,0.0000028458,0.0000028439, -0.0000028387,0.0000028328,0.0000028288,0.0000028283,0.0000028290, -0.0000028301,0.0000028307,0.0000028293,0.0000028255,0.0000028202, -0.0000028167,0.0000028172,0.0000028222,0.0000028260,0.0000028255, -0.0000028241,0.0000028176,0.0000028076,0.0000028067,0.0000028129, -0.0000028190,0.0000028217,0.0000028251,0.0000028275,0.0000028312, -0.0000028392,0.0000028475,0.0000028521,0.0000028533,0.0000028521, -0.0000028477,0.0000028411,0.0000028331,0.0000028252,0.0000028176, -0.0000028108,0.0000028053,0.0000027997,0.0000027940,0.0000027900, -0.0000027891,0.0000027917,0.0000027965,0.0000028013,0.0000028041, -0.0000028056,0.0000028068,0.0000028072,0.0000028059,0.0000028039, -0.0000028017,0.0000027992,0.0000027957,0.0000027912,0.0000027870, -0.0000027849,0.0000027847,0.0000027851,0.0000027857,0.0000027863, -0.0000027864,0.0000027856,0.0000027831,0.0000027787,0.0000027747, -0.0000027756,0.0000027803,0.0000027878,0.0000027947,0.0000028002, -0.0000028032,0.0000028021,0.0000027966,0.0000027880,0.0000027802, -0.0000027776,0.0000027791,0.0000027849,0.0000027944,0.0000028058, -0.0000028172,0.0000028255,0.0000028275,0.0000028228,0.0000028141, -0.0000028040,0.0000027962,0.0000027931,0.0000027946,0.0000027997, -0.0000028054,0.0000028089,0.0000028078,0.0000028038,0.0000027988, -0.0000027954,0.0000027969,0.0000028003,0.0000028028,0.0000028045, -0.0000028080,0.0000028133,0.0000028171,0.0000028154,0.0000028069, -0.0000027962,0.0000027907,0.0000027901,0.0000027916,0.0000027940, -0.0000027963,0.0000027973,0.0000027960,0.0000027917,0.0000027865, -0.0000027826,0.0000027772,0.0000027673,0.0000027553,0.0000027456, -0.0000027402,0.0000027403,0.0000027460,0.0000027501,0.0000027436, -0.0000027266,0.0000027105,0.0000027018,0.0000027012,0.0000027074, -0.0000027209,0.0000027287,0.0000027107,0.0000026875,0.0000026896, -0.0000027143,0.0000027403,0.0000027510,0.0000027485,0.0000027461, -0.0000027488,0.0000027472,0.0000027434,0.0000027464,0.0000027585, -0.0000027730,0.0000027827,0.0000027845,0.0000027840,0.0000027873, -0.0000027937,0.0000028015,0.0000028062,0.0000028060,0.0000028003, -0.0000027925,0.0000027845,0.0000027763,0.0000027664,0.0000027561, -0.0000027531,0.0000027634,0.0000027824,0.0000027954,0.0000027945, -0.0000027806,0.0000027634,0.0000027574,0.0000027623,0.0000027739, -0.0000027789,0.0000027758,0.0000027623,0.0000027481,0.0000027457, -0.0000027517,0.0000027527,0.0000027472,0.0000027418,0.0000027339, -0.0000027246,0.0000027178,0.0000027168,0.0000027181,0.0000027174, -0.0000027148,0.0000027107,0.0000027037,0.0000026982,0.0000026983, -0.0000027054,0.0000027179,0.0000027312,0.0000027408,0.0000027443, -0.0000027459,0.0000027466,0.0000027465,0.0000027507,0.0000027663, -0.0000027854,0.0000027982,0.0000028006,0.0000027907,0.0000027826, -0.0000027925,0.0000028129,0.0000028367,0.0000028559,0.0000028675, -0.0000028728,0.0000028754,0.0000028759,0.0000028725,0.0000028663, -0.0000028599,0.0000028540,0.0000028508,0.0000028511,0.0000028521, -0.0000028530,0.0000028508,0.0000028442,0.0000028328,0.0000028128, -0.0000027884,0.0000027707,0.0000027688,0.0000027735,0.0000027784, -0.0000027788,0.0000027733,0.0000027624,0.0000027462,0.0000027292, -0.0000027186,0.0000027199,0.0000027297,0.0000027367,0.0000027365, -0.0000027325,0.0000027280,0.0000027266,0.0000027319,0.0000027457, -0.0000027653,0.0000027847,0.0000027979,0.0000028043,0.0000028061, -0.0000028026,0.0000027960,0.0000027884,0.0000027824,0.0000027765, -0.0000027685,0.0000027597,0.0000027536,0.0000027534,0.0000027588, -0.0000027660,0.0000027708,0.0000027711,0.0000027686,0.0000027661, -0.0000027641,0.0000027596,0.0000027517,0.0000027438,0.0000027407, -0.0000027435,0.0000027542,0.0000027645,0.0000027683,0.0000027649, -0.0000027578,0.0000027567,0.0000027651,0.0000027763,0.0000027814, -0.0000027808,0.0000027767,0.0000027715,0.0000027692,0.0000027702, -0.0000027764,0.0000027853,0.0000027927,0.0000027962,0.0000027948, -0.0000027888,0.0000027793,0.0000027687,0.0000027584,0.0000027503, -0.0000027461,0.0000027428,0.0000027410,0.0000027401,0.0000027384, -0.0000027349,0.0000027313,0.0000027300,0.0000027299,0.0000027306, -0.0000027315,0.0000027301,0.0000027283,0.0000027264,0.0000027246, -0.0000027224,0.0000027192,0.0000027137,0.0000027078,0.0000027024, -0.0000026986,0.0000026964,0.0000026954,0.0000026960,0.0000026988, -0.0000027018,0.0000027020,0.0000026999,0.0000026978,0.0000026973, -0.0000026974,0.0000026977,0.0000026980,0.0000026991,0.0000027022, -0.0000027076,0.0000027136,0.0000027168,0.0000027175,0.0000027165, -0.0000027138,0.0000027111,0.0000027081,0.0000027042,0.0000026999, -0.0000026962,0.0000026952,0.0000026960,0.0000026972,0.0000026995, -0.0000027044,0.0000027100,0.0000027137,0.0000027172,0.0000027223, -0.0000027282,0.0000027334,0.0000027390,0.0000027480,0.0000027593, -0.0000027667,0.0000027681,0.0000027670,0.0000027645,0.0000027595, -0.0000027520,0.0000027426,0.0000027328,0.0000027250,0.0000027223, -0.0000027229,0.0000027233,0.0000027219,0.0000027191,0.0000027177, -0.0000027187,0.0000027216,0.0000027250,0.0000027272,0.0000027254, -0.0000027236,0.0000027238,0.0000027236,0.0000027220,0.0000027188, -0.0000027123,0.0000027029,0.0000026950,0.0000026882,0.0000026823, -0.0000026812,0.0000026839,0.0000026909,0.0000027076,0.0000027333, -0.0000027579,0.0000027714,0.0000027732,0.0000027682,0.0000027583, -0.0000027505,0.0000027537,0.0000027684,0.0000027791,0.0000027731, -0.0000027560,0.0000027383,0.0000027342,0.0000027469,0.0000027628, -0.0000027749,0.0000027914,0.0000028047,0.0000028064,0.0000028028, -0.0000028003,0.0000028048,0.0000028098,0.0000028116,0.0000028151, -0.0000028205,0.0000028215,0.0000028149,0.0000028064,0.0000028021, -0.0000028031,0.0000028059,0.0000028076,0.0000028068,0.0000028031, -0.0000027991,0.0000027932,0.0000027863,0.0000027794,0.0000027750, -0.0000027725,0.0000027728,0.0000027757,0.0000027800,0.0000027845, -0.0000027882,0.0000027924,0.0000027972,0.0000028015,0.0000028047, -0.0000028065,0.0000028087,0.0000028122,0.0000028173,0.0000028204, -0.0000028224,0.0000028244,0.0000028241,0.0000028211,0.0000028193, -0.0000028182,0.0000028156,0.0000028134,0.0000028099,0.0000028041, -0.0000027958,0.0000027844,0.0000027730,0.0000027671,0.0000027682, -0.0000027814,0.0000027945,0.0000028009,0.0000028081,0.0000028120, -0.0000028105,0.0000028055,0.0000027990,0.0000027900,0.0000027850, -0.0000027821,0.0000027803,0.0000027791,0.0000027779,0.0000027773, -0.0000027795,0.0000027836,0.0000027879,0.0000027925,0.0000027988, -0.0000028062,0.0000028119,0.0000028147,0.0000028174,0.0000028200, -0.0000028214,0.0000028219,0.0000028225,0.0000028249,0.0000028285, -0.0000028334,0.0000028385,0.0000028429,0.0000028465,0.0000028475, -0.0000028459,0.0000028423,0.0000028383,0.0000028355,0.0000028336, -0.0000028310,0.0000028284,0.0000028244,0.0000028197,0.0000028159, -0.0000028154,0.0000028185,0.0000028262,0.0000028308,0.0000028289, -0.0000028260,0.0000028194,0.0000028064,0.0000028018,0.0000028064, -0.0000028124,0.0000028136,0.0000028139,0.0000028161,0.0000028191, -0.0000028272,0.0000028379,0.0000028467,0.0000028524,0.0000028541, -0.0000028525,0.0000028464,0.0000028381,0.0000028285,0.0000028206, -0.0000028144,0.0000028093,0.0000028053,0.0000028008,0.0000027952, -0.0000027905,0.0000027889,0.0000027905,0.0000027941,0.0000027982, -0.0000028014,0.0000028037,0.0000028056,0.0000028067,0.0000028060, -0.0000028028,0.0000028016,0.0000028010,0.0000028007,0.0000027983, -0.0000027939,0.0000027901,0.0000027892,0.0000027905,0.0000027928, -0.0000027960,0.0000027994,0.0000028017,0.0000028010,0.0000027957, -0.0000027879,0.0000027819,0.0000027794,0.0000027807,0.0000027831, -0.0000027876,0.0000027919,0.0000027939,0.0000027922,0.0000027881, -0.0000027830,0.0000027810,0.0000027836,0.0000027898,0.0000027989, -0.0000028090,0.0000028194,0.0000028283,0.0000028328,0.0000028314, -0.0000028248,0.0000028157,0.0000028081,0.0000028066,0.0000028090, -0.0000028135,0.0000028170,0.0000028188,0.0000028173,0.0000028127, -0.0000028058,0.0000027994,0.0000027974,0.0000028002,0.0000028039, -0.0000028070,0.0000028088,0.0000028104,0.0000028132,0.0000028155, -0.0000028129,0.0000028005,0.0000027879,0.0000027847,0.0000027891, -0.0000027954,0.0000027989,0.0000027990,0.0000027969,0.0000027932, -0.0000027882,0.0000027828,0.0000027764,0.0000027684,0.0000027595, -0.0000027513,0.0000027461,0.0000027459,0.0000027500,0.0000027520, -0.0000027451,0.0000027311,0.0000027173,0.0000027090,0.0000027086, -0.0000027135,0.0000027230,0.0000027291,0.0000027143,0.0000026908, -0.0000026869,0.0000027051,0.0000027316,0.0000027481,0.0000027480, -0.0000027416,0.0000027420,0.0000027444,0.0000027417,0.0000027421, -0.0000027516,0.0000027670,0.0000027799,0.0000027847,0.0000027842, -0.0000027853,0.0000027896,0.0000027959,0.0000028014,0.0000028034, -0.0000028005,0.0000027952,0.0000027904,0.0000027859,0.0000027798, -0.0000027703,0.0000027610,0.0000027610,0.0000027736,0.0000027903, -0.0000027986,0.0000027953,0.0000027808,0.0000027675,0.0000027641, -0.0000027695,0.0000027770,0.0000027784,0.0000027712,0.0000027579, -0.0000027448,0.0000027433,0.0000027499,0.0000027528,0.0000027491, -0.0000027446,0.0000027375,0.0000027274,0.0000027179,0.0000027153, -0.0000027180,0.0000027205,0.0000027214,0.0000027200,0.0000027141, -0.0000027076,0.0000027064,0.0000027117,0.0000027230,0.0000027366, -0.0000027463,0.0000027499,0.0000027533,0.0000027566,0.0000027561, -0.0000027561,0.0000027669,0.0000027863,0.0000028010,0.0000028044, -0.0000027966,0.0000027908,0.0000028008,0.0000028205,0.0000028453, -0.0000028654,0.0000028771,0.0000028822,0.0000028849,0.0000028863, -0.0000028848,0.0000028801,0.0000028748,0.0000028685,0.0000028645, -0.0000028647,0.0000028648,0.0000028627,0.0000028570,0.0000028474, -0.0000028316,0.0000028095,0.0000027849,0.0000027680,0.0000027675, -0.0000027747,0.0000027811,0.0000027809,0.0000027743,0.0000027624, -0.0000027483,0.0000027349,0.0000027269,0.0000027279,0.0000027352, -0.0000027417,0.0000027417,0.0000027382,0.0000027346,0.0000027365, -0.0000027473,0.0000027652,0.0000027847,0.0000028004,0.0000028083, -0.0000028102,0.0000028085,0.0000028059,0.0000027989,0.0000027905, -0.0000027830,0.0000027755,0.0000027669,0.0000027567,0.0000027497, -0.0000027494,0.0000027552,0.0000027627,0.0000027678,0.0000027680, -0.0000027654,0.0000027622,0.0000027594,0.0000027553,0.0000027489, -0.0000027427,0.0000027409,0.0000027433,0.0000027513,0.0000027593, -0.0000027623,0.0000027582,0.0000027530,0.0000027536,0.0000027613, -0.0000027720,0.0000027775,0.0000027777,0.0000027751,0.0000027717, -0.0000027698,0.0000027728,0.0000027794,0.0000027870,0.0000027914, -0.0000027925,0.0000027893,0.0000027834,0.0000027758,0.0000027682, -0.0000027611,0.0000027547,0.0000027517,0.0000027511,0.0000027513, -0.0000027508,0.0000027488,0.0000027454,0.0000027406,0.0000027362, -0.0000027345,0.0000027341,0.0000027337,0.0000027326,0.0000027297, -0.0000027262,0.0000027236,0.0000027211,0.0000027182,0.0000027136, -0.0000027075,0.0000027018,0.0000026973,0.0000026943,0.0000026923, -0.0000026909,0.0000026904,0.0000026911,0.0000026921,0.0000026914, -0.0000026894,0.0000026881,0.0000026895,0.0000026927,0.0000026963, -0.0000026995,0.0000027016,0.0000027040,0.0000027069,0.0000027102, -0.0000027132,0.0000027154,0.0000027164,0.0000027155,0.0000027138, -0.0000027115,0.0000027079,0.0000027042,0.0000027017,0.0000027016, -0.0000027037,0.0000027054,0.0000027067,0.0000027095,0.0000027132, -0.0000027155,0.0000027180,0.0000027232,0.0000027288,0.0000027339, -0.0000027407,0.0000027509,0.0000027625,0.0000027695,0.0000027699, -0.0000027674,0.0000027650,0.0000027620,0.0000027572,0.0000027502, -0.0000027411,0.0000027313,0.0000027251,0.0000027243,0.0000027260, -0.0000027266,0.0000027244,0.0000027205,0.0000027189,0.0000027191, -0.0000027200,0.0000027203,0.0000027176,0.0000027151,0.0000027151, -0.0000027169,0.0000027187,0.0000027188,0.0000027144,0.0000027048, -0.0000026943,0.0000026857,0.0000026800,0.0000026792,0.0000026829, -0.0000026923,0.0000027110,0.0000027361,0.0000027584,0.0000027702, -0.0000027722,0.0000027676,0.0000027571,0.0000027496,0.0000027501, -0.0000027612,0.0000027761,0.0000027778,0.0000027656,0.0000027477, -0.0000027349,0.0000027400,0.0000027554,0.0000027675,0.0000027832, -0.0000028002,0.0000028076,0.0000028067,0.0000028028,0.0000028049, -0.0000028104,0.0000028107,0.0000028118,0.0000028172,0.0000028228, -0.0000028240,0.0000028162,0.0000028054,0.0000027994,0.0000027992, -0.0000028009,0.0000028034,0.0000028046,0.0000028029,0.0000027975, -0.0000027896,0.0000027824,0.0000027769,0.0000027735,0.0000027712, -0.0000027702,0.0000027711,0.0000027732,0.0000027761,0.0000027805, -0.0000027864,0.0000027922,0.0000027987,0.0000028053,0.0000028117, -0.0000028177,0.0000028203,0.0000028203,0.0000028163,0.0000028127, -0.0000028082,0.0000028055,0.0000028022,0.0000028001,0.0000028001, -0.0000028035,0.0000028074,0.0000028100,0.0000028089,0.0000028057, -0.0000027983,0.0000027891,0.0000027772,0.0000027669,0.0000027669, -0.0000027779,0.0000027945,0.0000028051,0.0000028130,0.0000028152, -0.0000028135,0.0000028101,0.0000028047,0.0000028000,0.0000027975, -0.0000027953,0.0000027946,0.0000027952,0.0000027960,0.0000027955, -0.0000027961,0.0000027980,0.0000028019,0.0000028082,0.0000028158, -0.0000028222,0.0000028262,0.0000028274,0.0000028287,0.0000028296, -0.0000028294,0.0000028274,0.0000028265,0.0000028292,0.0000028368, -0.0000028455,0.0000028499,0.0000028498,0.0000028482,0.0000028478, -0.0000028482,0.0000028477,0.0000028439,0.0000028378,0.0000028315, -0.0000028249,0.0000028198,0.0000028153,0.0000028137,0.0000028143, -0.0000028191,0.0000028273,0.0000028338,0.0000028335,0.0000028289, -0.0000028235,0.0000028105,0.0000027996,0.0000027992,0.0000028050, -0.0000028070,0.0000028051,0.0000028036,0.0000028053,0.0000028115, -0.0000028235,0.0000028361,0.0000028462,0.0000028528,0.0000028543, -0.0000028521,0.0000028449,0.0000028361,0.0000028266,0.0000028196, -0.0000028146,0.0000028118,0.0000028088,0.0000028053,0.0000027999, -0.0000027952,0.0000027933,0.0000027942,0.0000027960,0.0000027981, -0.0000027999,0.0000028015,0.0000028031,0.0000028041,0.0000028036, -0.0000028003,0.0000027999,0.0000028007,0.0000028021,0.0000028029, -0.0000028014,0.0000027973,0.0000027943,0.0000027949,0.0000027972, -0.0000028006,0.0000028058,0.0000028116,0.0000028150,0.0000028145, -0.0000028095,0.0000028019,0.0000027939,0.0000027871,0.0000027828, -0.0000027823,0.0000027847,0.0000027879,0.0000027877,0.0000027852, -0.0000027821,0.0000027808,0.0000027837,0.0000027918,0.0000028026, -0.0000028142,0.0000028258,0.0000028356,0.0000028417,0.0000028425, -0.0000028376,0.0000028277,0.0000028178,0.0000028152,0.0000028183, -0.0000028242,0.0000028269,0.0000028269,0.0000028248,0.0000028205, -0.0000028129,0.0000028036,0.0000027982,0.0000028007,0.0000028068, -0.0000028128,0.0000028142,0.0000028116,0.0000028092,0.0000028113, -0.0000028133,0.0000028050,0.0000027884,0.0000027806,0.0000027845, -0.0000027949,0.0000028016,0.0000028012,0.0000027961,0.0000027892, -0.0000027834,0.0000027792,0.0000027754,0.0000027707,0.0000027648, -0.0000027582,0.0000027535,0.0000027532,0.0000027560,0.0000027566, -0.0000027505,0.0000027380,0.0000027234,0.0000027141,0.0000027145, -0.0000027201,0.0000027266,0.0000027299,0.0000027176,0.0000026948, -0.0000026863,0.0000026982,0.0000027222,0.0000027431,0.0000027492, -0.0000027421,0.0000027369,0.0000027387,0.0000027400,0.0000027397, -0.0000027456,0.0000027592,0.0000027736,0.0000027820,0.0000027831, -0.0000027828,0.0000027858,0.0000027895,0.0000027950,0.0000027987, -0.0000027986,0.0000027947,0.0000027919,0.0000027909,0.0000027891, -0.0000027833,0.0000027735,0.0000027661,0.0000027685,0.0000027817, -0.0000027957,0.0000028006,0.0000027958,0.0000027836,0.0000027742, -0.0000027728,0.0000027759,0.0000027775,0.0000027744,0.0000027659, -0.0000027545,0.0000027439,0.0000027423,0.0000027465,0.0000027477, -0.0000027446,0.0000027406,0.0000027351,0.0000027259,0.0000027186, -0.0000027180,0.0000027204,0.0000027252,0.0000027286,0.0000027283, -0.0000027235,0.0000027162,0.0000027141,0.0000027203,0.0000027315, -0.0000027439,0.0000027520,0.0000027554,0.0000027604,0.0000027662, -0.0000027657,0.0000027627,0.0000027691,0.0000027870,0.0000028033, -0.0000028086,0.0000028029,0.0000027996,0.0000028086,0.0000028272, -0.0000028535,0.0000028744,0.0000028853,0.0000028902,0.0000028930, -0.0000028946,0.0000028941,0.0000028911,0.0000028868,0.0000028808, -0.0000028757,0.0000028751,0.0000028739,0.0000028691,0.0000028605, -0.0000028471,0.0000028274,0.0000028044,0.0000027817,0.0000027677, -0.0000027675,0.0000027757,0.0000027815,0.0000027810,0.0000027728, -0.0000027613,0.0000027503,0.0000027411,0.0000027356,0.0000027355, -0.0000027399,0.0000027456,0.0000027462,0.0000027448,0.0000027449, -0.0000027523,0.0000027681,0.0000027858,0.0000027999,0.0000028094, -0.0000028131,0.0000028125,0.0000028102,0.0000028068,0.0000027996, -0.0000027906,0.0000027829,0.0000027754,0.0000027658,0.0000027555, -0.0000027474,0.0000027455,0.0000027495,0.0000027564,0.0000027616, -0.0000027632,0.0000027625,0.0000027622,0.0000027608,0.0000027584, -0.0000027532,0.0000027471,0.0000027438,0.0000027446,0.0000027497, -0.0000027547,0.0000027548,0.0000027506,0.0000027476,0.0000027505, -0.0000027588,0.0000027680,0.0000027726,0.0000027727,0.0000027712, -0.0000027702,0.0000027717,0.0000027764,0.0000027831,0.0000027880, -0.0000027893,0.0000027870,0.0000027833,0.0000027797,0.0000027759, -0.0000027723,0.0000027688,0.0000027649,0.0000027626,0.0000027628, -0.0000027641,0.0000027646,0.0000027633,0.0000027592,0.0000027533, -0.0000027472,0.0000027425,0.0000027404,0.0000027397,0.0000027381, -0.0000027354,0.0000027312,0.0000027269,0.0000027240,0.0000027214, -0.0000027170,0.0000027107,0.0000027035,0.0000026973,0.0000026929, -0.0000026898,0.0000026881,0.0000026869,0.0000026861,0.0000026857, -0.0000026853,0.0000026847,0.0000026840,0.0000026840,0.0000026870, -0.0000026930,0.0000026987,0.0000027024,0.0000027024,0.0000027003, -0.0000026987,0.0000027000,0.0000027049,0.0000027106,0.0000027154, -0.0000027172,0.0000027176,0.0000027174,0.0000027158,0.0000027135, -0.0000027118,0.0000027109,0.0000027110,0.0000027106,0.0000027098, -0.0000027110,0.0000027150,0.0000027187,0.0000027214,0.0000027257, -0.0000027312,0.0000027366,0.0000027440,0.0000027540,0.0000027635, -0.0000027679,0.0000027670,0.0000027643,0.0000027631,0.0000027628, -0.0000027611,0.0000027564,0.0000027490,0.0000027395,0.0000027299, -0.0000027248,0.0000027250,0.0000027265,0.0000027253,0.0000027203, -0.0000027149,0.0000027123,0.0000027104,0.0000027082,0.0000027065, -0.0000027056,0.0000027072,0.0000027117,0.0000027170,0.0000027191, -0.0000027161,0.0000027055,0.0000026919,0.0000026821,0.0000026779, -0.0000026771,0.0000026815,0.0000026954,0.0000027175,0.0000027415, -0.0000027595,0.0000027684,0.0000027700,0.0000027656,0.0000027551, -0.0000027485,0.0000027494,0.0000027569,0.0000027702,0.0000027766, -0.0000027711,0.0000027560,0.0000027395,0.0000027376,0.0000027493, -0.0000027617,0.0000027753,0.0000027948,0.0000028061,0.0000028077, -0.0000028060,0.0000028047,0.0000028101,0.0000028127,0.0000028107, -0.0000028130,0.0000028192,0.0000028257,0.0000028276,0.0000028208, -0.0000028086,0.0000028020,0.0000028012,0.0000028020,0.0000028051, -0.0000028090,0.0000028094,0.0000028069,0.0000028022,0.0000027981, -0.0000027952,0.0000027914,0.0000027893,0.0000027877,0.0000027871, -0.0000027869,0.0000027868,0.0000027892,0.0000027943,0.0000027991, -0.0000028058,0.0000028144,0.0000028200,0.0000028229,0.0000028188, -0.0000028122,0.0000028029,0.0000027972,0.0000027938,0.0000027937, -0.0000027927,0.0000027905,0.0000027877,0.0000027863,0.0000027886, -0.0000027919,0.0000027968,0.0000028027,0.0000028038,0.0000028000, -0.0000027924,0.0000027815,0.0000027696,0.0000027649,0.0000027737, -0.0000027932,0.0000028077,0.0000028159,0.0000028196,0.0000028204, -0.0000028191,0.0000028145,0.0000028114,0.0000028097,0.0000028093, -0.0000028110,0.0000028150,0.0000028174,0.0000028159,0.0000028121, -0.0000028097,0.0000028120,0.0000028180,0.0000028236,0.0000028267, -0.0000028271,0.0000028267,0.0000028278,0.0000028294,0.0000028308, -0.0000028329,0.0000028379,0.0000028446,0.0000028499,0.0000028534, -0.0000028537,0.0000028527,0.0000028526,0.0000028541,0.0000028550, -0.0000028529,0.0000028466,0.0000028377,0.0000028288,0.0000028209, -0.0000028158,0.0000028142,0.0000028150,0.0000028188,0.0000028263, -0.0000028335,0.0000028364,0.0000028336,0.0000028279,0.0000028189, -0.0000028042,0.0000027959,0.0000027962,0.0000028003,0.0000028005, -0.0000027969,0.0000027940,0.0000027965,0.0000028054,0.0000028196, -0.0000028341,0.0000028456,0.0000028528,0.0000028539,0.0000028515, -0.0000028443,0.0000028357,0.0000028267,0.0000028201,0.0000028165, -0.0000028153,0.0000028133,0.0000028100,0.0000028047,0.0000028007, -0.0000027993,0.0000027994,0.0000028001,0.0000028004,0.0000028002, -0.0000028003,0.0000028009,0.0000028012,0.0000028010,0.0000027964, -0.0000027971,0.0000027995,0.0000028027,0.0000028057,0.0000028065, -0.0000028041,0.0000028005,0.0000028001,0.0000028015,0.0000028037, -0.0000028077,0.0000028138,0.0000028200,0.0000028238,0.0000028244, -0.0000028219,0.0000028152,0.0000028048,0.0000027941,0.0000027867, -0.0000027853,0.0000027881,0.0000027895,0.0000027880,0.0000027848, -0.0000027832,0.0000027858,0.0000027945,0.0000028059,0.0000028184, -0.0000028311,0.0000028418,0.0000028482,0.0000028496,0.0000028469, -0.0000028379,0.0000028269,0.0000028207,0.0000028223,0.0000028281, -0.0000028304,0.0000028288,0.0000028260,0.0000028235,0.0000028184, -0.0000028091,0.0000028011,0.0000028011,0.0000028088,0.0000028180, -0.0000028207,0.0000028149,0.0000028074,0.0000028063,0.0000028096, -0.0000028058,0.0000027903,0.0000027776,0.0000027796,0.0000027918, -0.0000028020,0.0000028032,0.0000027952,0.0000027835,0.0000027760, -0.0000027747,0.0000027750,0.0000027737,0.0000027700,0.0000027656, -0.0000027628,0.0000027631,0.0000027648,0.0000027643,0.0000027589, -0.0000027458,0.0000027281,0.0000027170,0.0000027189,0.0000027258, -0.0000027308,0.0000027318,0.0000027203,0.0000026987,0.0000026885, -0.0000026938,0.0000027135,0.0000027354,0.0000027485,0.0000027461, -0.0000027361,0.0000027327,0.0000027359,0.0000027386,0.0000027420, -0.0000027514,0.0000027647,0.0000027752,0.0000027792,0.0000027790, -0.0000027800,0.0000027827,0.0000027863,0.0000027918,0.0000027944, -0.0000027923,0.0000027902,0.0000027915,0.0000027937,0.0000027922, -0.0000027852,0.0000027754,0.0000027703,0.0000027738,0.0000027870, -0.0000027998,0.0000028040,0.0000027987,0.0000027884,0.0000027815, -0.0000027804,0.0000027808,0.0000027780,0.0000027709,0.0000027620, -0.0000027533,0.0000027458,0.0000027426,0.0000027417,0.0000027389, -0.0000027349,0.0000027311,0.0000027279,0.0000027239,0.0000027225, -0.0000027240,0.0000027258,0.0000027302,0.0000027353,0.0000027363, -0.0000027326,0.0000027260,0.0000027239,0.0000027305,0.0000027423, -0.0000027525,0.0000027587,0.0000027621,0.0000027676,0.0000027752, -0.0000027751,0.0000027709,0.0000027732,0.0000027877,0.0000028048, -0.0000028113,0.0000028080,0.0000028073,0.0000028154,0.0000028331, -0.0000028609,0.0000028820,0.0000028912,0.0000028958,0.0000028987, -0.0000029001,0.0000028998,0.0000028975,0.0000028937,0.0000028878, -0.0000028818,0.0000028794,0.0000028770,0.0000028706,0.0000028589, -0.0000028418,0.0000028204,0.0000027986,0.0000027796,0.0000027695, -0.0000027697,0.0000027769,0.0000027810,0.0000027783,0.0000027691, -0.0000027592,0.0000027528,0.0000027475,0.0000027440,0.0000027422, -0.0000027437,0.0000027479,0.0000027502,0.0000027533,0.0000027601, -0.0000027723,0.0000027877,0.0000028002,0.0000028074,0.0000028122, -0.0000028142,0.0000028136,0.0000028118,0.0000028069,0.0000027984, -0.0000027891,0.0000027816,0.0000027748,0.0000027658,0.0000027551, -0.0000027469,0.0000027442,0.0000027456,0.0000027501,0.0000027558, -0.0000027603,0.0000027626,0.0000027649,0.0000027669,0.0000027670, -0.0000027633,0.0000027558,0.0000027489,0.0000027454,0.0000027468, -0.0000027489,0.0000027471,0.0000027431,0.0000027428,0.0000027489, -0.0000027577,0.0000027648,0.0000027676,0.0000027673,0.0000027673, -0.0000027691,0.0000027731,0.0000027789,0.0000027845,0.0000027869, -0.0000027862,0.0000027833,0.0000027799,0.0000027791,0.0000027786, -0.0000027794,0.0000027793,0.0000027778,0.0000027756,0.0000027744, -0.0000027743,0.0000027745,0.0000027740,0.0000027723,0.0000027675, -0.0000027606,0.0000027538,0.0000027485,0.0000027449,0.0000027431, -0.0000027409,0.0000027377,0.0000027330,0.0000027282,0.0000027249, -0.0000027218,0.0000027164,0.0000027094,0.0000027020,0.0000026954, -0.0000026905,0.0000026877,0.0000026868,0.0000026860,0.0000026857, -0.0000026850,0.0000026841,0.0000026837,0.0000026835,0.0000026841, -0.0000026876,0.0000026936,0.0000026989,0.0000027004,0.0000026966, -0.0000026904,0.0000026883,0.0000026928,0.0000027014,0.0000027119, -0.0000027192,0.0000027234,0.0000027257,0.0000027272,0.0000027269, -0.0000027244,0.0000027208,0.0000027169,0.0000027143,0.0000027122, -0.0000027113,0.0000027132,0.0000027184,0.0000027242,0.0000027282, -0.0000027317,0.0000027367,0.0000027424,0.0000027485,0.0000027553, -0.0000027613,0.0000027636,0.0000027623,0.0000027607,0.0000027619, -0.0000027646,0.0000027662,0.0000027635,0.0000027569,0.0000027484, -0.0000027376,0.0000027277,0.0000027232,0.0000027231,0.0000027214, -0.0000027149,0.0000027069,0.0000027021,0.0000027000,0.0000026973, -0.0000026957,0.0000026973,0.0000027015,0.0000027083,0.0000027161, -0.0000027193,0.0000027158,0.0000027035,0.0000026887,0.0000026792, -0.0000026759,0.0000026760,0.0000026824,0.0000027009,0.0000027260, -0.0000027469,0.0000027592,0.0000027657,0.0000027675,0.0000027619, -0.0000027519,0.0000027487,0.0000027522,0.0000027575,0.0000027669, -0.0000027751,0.0000027730,0.0000027620,0.0000027465,0.0000027388, -0.0000027462,0.0000027573,0.0000027686,0.0000027874,0.0000028049, -0.0000028088,0.0000028070,0.0000028055,0.0000028076,0.0000028129, -0.0000028130,0.0000028118,0.0000028151,0.0000028226,0.0000028296, -0.0000028340,0.0000028321,0.0000028214,0.0000028151,0.0000028150, -0.0000028181,0.0000028248,0.0000028317,0.0000028308,0.0000028265, -0.0000028169,0.0000028056,0.0000027962,0.0000027895,0.0000027862, -0.0000027871,0.0000027901,0.0000027926,0.0000027938,0.0000027966, -0.0000028011,0.0000028060,0.0000028104,0.0000028158,0.0000028184, -0.0000028166,0.0000028076,0.0000027996,0.0000027938,0.0000027923, -0.0000027921,0.0000027925,0.0000027932,0.0000027927,0.0000027898, -0.0000027844,0.0000027803,0.0000027761,0.0000027743,0.0000027810, -0.0000027915,0.0000027991,0.0000028003,0.0000027948,0.0000027861, -0.0000027756,0.0000027684,0.0000027726,0.0000027929,0.0000028121, -0.0000028219,0.0000028264,0.0000028299,0.0000028288,0.0000028239, -0.0000028205,0.0000028202,0.0000028218,0.0000028271,0.0000028325, -0.0000028349,0.0000028323,0.0000028262,0.0000028223,0.0000028224, -0.0000028244,0.0000028267,0.0000028262,0.0000028265,0.0000028278, -0.0000028336,0.0000028398,0.0000028447,0.0000028464,0.0000028474, -0.0000028495,0.0000028541,0.0000028592,0.0000028620,0.0000028636, -0.0000028645,0.0000028643,0.0000028623,0.0000028585,0.0000028521, -0.0000028427,0.0000028325,0.0000028232,0.0000028178,0.0000028172, -0.0000028188,0.0000028234,0.0000028301,0.0000028355,0.0000028373, -0.0000028338,0.0000028268,0.0000028157,0.0000028009,0.0000027925, -0.0000027916,0.0000027941,0.0000027943,0.0000027912,0.0000027885, -0.0000027912,0.0000028008,0.0000028159,0.0000028311,0.0000028436, -0.0000028506,0.0000028514,0.0000028492,0.0000028428,0.0000028344, -0.0000028253,0.0000028185,0.0000028157,0.0000028152,0.0000028141, -0.0000028107,0.0000028056,0.0000028017,0.0000028003,0.0000028005, -0.0000028007,0.0000027997,0.0000027981,0.0000027970,0.0000027968, -0.0000027970,0.0000027971,0.0000027946,0.0000027953,0.0000027985, -0.0000028028,0.0000028067,0.0000028085,0.0000028078,0.0000028048, -0.0000028030,0.0000028033,0.0000028055,0.0000028091,0.0000028143, -0.0000028206,0.0000028267,0.0000028307,0.0000028324,0.0000028299, -0.0000028215,0.0000028096,0.0000027986,0.0000027923,0.0000027915, -0.0000027931,0.0000027936,0.0000027924,0.0000027910,0.0000027925, -0.0000027993,0.0000028095,0.0000028211,0.0000028333,0.0000028438, -0.0000028512,0.0000028543,0.0000028528,0.0000028457,0.0000028358, -0.0000028290,0.0000028285,0.0000028322,0.0000028333,0.0000028297, -0.0000028244,0.0000028213,0.0000028192,0.0000028138,0.0000028066, -0.0000028035,0.0000028097,0.0000028199,0.0000028239,0.0000028177, -0.0000028063,0.0000028025,0.0000028051,0.0000028038,0.0000027910, -0.0000027774,0.0000027762,0.0000027872,0.0000028001,0.0000028035, -0.0000027942,0.0000027796,0.0000027710,0.0000027708,0.0000027736, -0.0000027748,0.0000027733,0.0000027714,0.0000027713,0.0000027730, -0.0000027741,0.0000027730,0.0000027673,0.0000027529,0.0000027320, -0.0000027197,0.0000027211,0.0000027295,0.0000027350,0.0000027353, -0.0000027242,0.0000027032,0.0000026897,0.0000026916,0.0000027064, -0.0000027271,0.0000027449,0.0000027498,0.0000027416,0.0000027313, -0.0000027300,0.0000027346,0.0000027394,0.0000027451,0.0000027547, -0.0000027649,0.0000027711,0.0000027732,0.0000027739,0.0000027750, -0.0000027763,0.0000027812,0.0000027865,0.0000027878,0.0000027867, -0.0000027889,0.0000027943,0.0000027965,0.0000027934,0.0000027846, -0.0000027753,0.0000027716,0.0000027764,0.0000027901,0.0000028036, -0.0000028085,0.0000028044,0.0000027943,0.0000027876,0.0000027861, -0.0000027846,0.0000027791,0.0000027693,0.0000027600,0.0000027532, -0.0000027487,0.0000027448,0.0000027409,0.0000027356,0.0000027304, -0.0000027270,0.0000027255,0.0000027256,0.0000027285,0.0000027316, -0.0000027330,0.0000027355,0.0000027407,0.0000027438,0.0000027420, -0.0000027376,0.0000027367,0.0000027436,0.0000027528,0.0000027592, -0.0000027652,0.0000027707,0.0000027769,0.0000027851,0.0000027853, -0.0000027793,0.0000027790,0.0000027894,0.0000028055,0.0000028123, -0.0000028114,0.0000028136,0.0000028207,0.0000028379,0.0000028666, -0.0000028870,0.0000028945,0.0000028991,0.0000029024,0.0000029035, -0.0000029030,0.0000029005,0.0000028961,0.0000028902,0.0000028834, -0.0000028794,0.0000028741,0.0000028649,0.0000028508,0.0000028326, -0.0000028126,0.0000027939,0.0000027785,0.0000027717,0.0000027723, -0.0000027767,0.0000027783,0.0000027732,0.0000027647,0.0000027581, -0.0000027550,0.0000027533,0.0000027507,0.0000027471,0.0000027462, -0.0000027496,0.0000027558,0.0000027653,0.0000027781,0.0000027911, -0.0000028008,0.0000028066,0.0000028102,0.0000028138,0.0000028154, -0.0000028143,0.0000028116,0.0000028055,0.0000027953,0.0000027852, -0.0000027784,0.0000027726,0.0000027648,0.0000027553,0.0000027481, -0.0000027449,0.0000027452,0.0000027477,0.0000027525,0.0000027587, -0.0000027648,0.0000027702,0.0000027750,0.0000027767,0.0000027734, -0.0000027646,0.0000027546,0.0000027458,0.0000027422,0.0000027419, -0.0000027408,0.0000027386,0.0000027399,0.0000027466,0.0000027562, -0.0000027625,0.0000027642,0.0000027637,0.0000027642,0.0000027676, -0.0000027730,0.0000027783,0.0000027817,0.0000027827,0.0000027823, -0.0000027818,0.0000027812,0.0000027817,0.0000027838,0.0000027863, -0.0000027882,0.0000027884,0.0000027865,0.0000027835,0.0000027811, -0.0000027797,0.0000027794,0.0000027791,0.0000027783,0.0000027748, -0.0000027688,0.0000027621,0.0000027555,0.0000027495,0.0000027458, -0.0000027439,0.0000027414,0.0000027368,0.0000027313,0.0000027268, -0.0000027226,0.0000027171,0.0000027105,0.0000027039,0.0000026976, -0.0000026931,0.0000026904,0.0000026905,0.0000026907,0.0000026903, -0.0000026888,0.0000026869,0.0000026854,0.0000026849,0.0000026855, -0.0000026886,0.0000026933,0.0000026967,0.0000026966,0.0000026913, -0.0000026871,0.0000026870,0.0000026966,0.0000027100,0.0000027223, -0.0000027295,0.0000027324,0.0000027336,0.0000027340,0.0000027331, -0.0000027297,0.0000027250,0.0000027200,0.0000027181,0.0000027179, -0.0000027189,0.0000027218,0.0000027274,0.0000027341,0.0000027392, -0.0000027426,0.0000027462,0.0000027499,0.0000027521,0.0000027542, -0.0000027575,0.0000027591,0.0000027587,0.0000027592,0.0000027620, -0.0000027676,0.0000027721,0.0000027715,0.0000027652,0.0000027569, -0.0000027467,0.0000027338,0.0000027226,0.0000027170,0.0000027133, -0.0000027065,0.0000026982,0.0000026934,0.0000026928,0.0000026926, -0.0000026916,0.0000026928,0.0000026976,0.0000027062,0.0000027154, -0.0000027191,0.0000027131,0.0000026982,0.0000026835,0.0000026760, -0.0000026742,0.0000026752,0.0000026847,0.0000027083,0.0000027353, -0.0000027526,0.0000027593,0.0000027627,0.0000027636,0.0000027579, -0.0000027514,0.0000027514,0.0000027575,0.0000027622,0.0000027669, -0.0000027738,0.0000027732,0.0000027649,0.0000027521,0.0000027411, -0.0000027460,0.0000027565,0.0000027640,0.0000027794,0.0000028006, -0.0000028100,0.0000028099,0.0000028080,0.0000028066,0.0000028102, -0.0000028139,0.0000028134,0.0000028139,0.0000028194,0.0000028276, -0.0000028355,0.0000028432,0.0000028450,0.0000028369,0.0000028304, -0.0000028311,0.0000028342,0.0000028383,0.0000028378,0.0000028295, -0.0000028159,0.0000028002,0.0000027855,0.0000027737,0.0000027657, -0.0000027624,0.0000027639,0.0000027704,0.0000027775,0.0000027838, -0.0000027888,0.0000027935,0.0000027992,0.0000028034,0.0000028064, -0.0000028071,0.0000028064,0.0000028005,0.0000027945,0.0000027902, -0.0000027863,0.0000027846,0.0000027822,0.0000027829,0.0000027850, -0.0000027870,0.0000027856,0.0000027803,0.0000027745,0.0000027673, -0.0000027641,0.0000027696,0.0000027812,0.0000027918,0.0000027972, -0.0000027946,0.0000027886,0.0000027823,0.0000027783,0.0000027805, -0.0000027962,0.0000028171,0.0000028281,0.0000028331,0.0000028366, -0.0000028354,0.0000028307,0.0000028274,0.0000028285,0.0000028331, -0.0000028384,0.0000028414,0.0000028428,0.0000028404,0.0000028365, -0.0000028347,0.0000028347,0.0000028359,0.0000028360,0.0000028357, -0.0000028380,0.0000028421,0.0000028472,0.0000028498,0.0000028496, -0.0000028485,0.0000028504,0.0000028569,0.0000028640,0.0000028694, -0.0000028729,0.0000028731,0.0000028708,0.0000028669,0.0000028629, -0.0000028600,0.0000028567,0.0000028512,0.0000028424,0.0000028319, -0.0000028235,0.0000028203,0.0000028210,0.0000028253,0.0000028309, -0.0000028359,0.0000028381,0.0000028343,0.0000028264,0.0000028155, -0.0000028008,0.0000027905,0.0000027874,0.0000027890,0.0000027906, -0.0000027902,0.0000027888,0.0000027912,0.0000028001,0.0000028128, -0.0000028268,0.0000028389,0.0000028455,0.0000028460,0.0000028433, -0.0000028368,0.0000028278,0.0000028179,0.0000028105,0.0000028087, -0.0000028092,0.0000028085,0.0000028053,0.0000028008,0.0000027975, -0.0000027965,0.0000027975,0.0000027978,0.0000027963,0.0000027937, -0.0000027920,0.0000027921,0.0000027940,0.0000027948,0.0000027978, -0.0000027989,0.0000028002,0.0000028036,0.0000028072,0.0000028089, -0.0000028086,0.0000028060,0.0000028032,0.0000028027,0.0000028044, -0.0000028084,0.0000028134,0.0000028193,0.0000028260,0.0000028323, -0.0000028365,0.0000028377,0.0000028326,0.0000028229,0.0000028123, -0.0000028043,0.0000027996,0.0000027975,0.0000027968,0.0000027971, -0.0000027979,0.0000027993,0.0000028039,0.0000028127,0.0000028235, -0.0000028342,0.0000028433,0.0000028505,0.0000028551,0.0000028555, -0.0000028503,0.0000028418,0.0000028359,0.0000028352,0.0000028364, -0.0000028362,0.0000028326,0.0000028257,0.0000028195,0.0000028166, -0.0000028146,0.0000028109,0.0000028082,0.0000028105,0.0000028185, -0.0000028229,0.0000028177,0.0000028054,0.0000027994,0.0000028006, -0.0000028000,0.0000027901,0.0000027765,0.0000027725,0.0000027823, -0.0000027960,0.0000028005,0.0000027928,0.0000027780,0.0000027679, -0.0000027664,0.0000027698,0.0000027729,0.0000027739,0.0000027744, -0.0000027764,0.0000027797,0.0000027814,0.0000027805,0.0000027740, -0.0000027570,0.0000027336,0.0000027205,0.0000027222,0.0000027320, -0.0000027382,0.0000027380,0.0000027274,0.0000027069,0.0000026935, -0.0000026920,0.0000027012,0.0000027190,0.0000027380,0.0000027499, -0.0000027485,0.0000027374,0.0000027276,0.0000027278,0.0000027329, -0.0000027379,0.0000027440,0.0000027524,0.0000027601,0.0000027648, -0.0000027663,0.0000027670,0.0000027681,0.0000027709,0.0000027766, -0.0000027805,0.0000027817,0.0000027843,0.0000027914,0.0000027980, -0.0000027982,0.0000027920,0.0000027820,0.0000027731,0.0000027705, -0.0000027778,0.0000027929,0.0000028082,0.0000028147,0.0000028114, -0.0000028004,0.0000027925,0.0000027904,0.0000027877,0.0000027807, -0.0000027700,0.0000027598,0.0000027533,0.0000027512,0.0000027494, -0.0000027455,0.0000027401,0.0000027345,0.0000027308,0.0000027290, -0.0000027300,0.0000027332,0.0000027365,0.0000027380,0.0000027407, -0.0000027469,0.0000027516,0.0000027511,0.0000027508,0.0000027549, -0.0000027611,0.0000027634,0.0000027661,0.0000027717,0.0000027798, -0.0000027884,0.0000027953,0.0000027946,0.0000027879,0.0000027858, -0.0000027921,0.0000028053,0.0000028122,0.0000028132,0.0000028179, -0.0000028249,0.0000028417,0.0000028699,0.0000028890,0.0000028955, -0.0000029006,0.0000029046,0.0000029056,0.0000029047,0.0000029013, -0.0000028963,0.0000028892,0.0000028808,0.0000028739,0.0000028651, -0.0000028534,0.0000028391,0.0000028231,0.0000028069,0.0000027916, -0.0000027790,0.0000027739,0.0000027743,0.0000027758,0.0000027735, -0.0000027671,0.0000027605,0.0000027580,0.0000027578,0.0000027578, -0.0000027543,0.0000027493,0.0000027478,0.0000027528,0.0000027647, -0.0000027803,0.0000027952,0.0000028037,0.0000028068,0.0000028092, -0.0000028135,0.0000028166,0.0000028164,0.0000028129,0.0000028083, -0.0000028019,0.0000027911,0.0000027801,0.0000027733,0.0000027683, -0.0000027622,0.0000027549,0.0000027492,0.0000027473,0.0000027468, -0.0000027473,0.0000027503,0.0000027569,0.0000027655,0.0000027736, -0.0000027798,0.0000027827,0.0000027798,0.0000027709,0.0000027579, -0.0000027456,0.0000027384,0.0000027374,0.0000027376,0.0000027375, -0.0000027385,0.0000027434,0.0000027515,0.0000027588,0.0000027619, -0.0000027629,0.0000027639,0.0000027669,0.0000027706,0.0000027738, -0.0000027754,0.0000027762,0.0000027778,0.0000027804,0.0000027832, -0.0000027862,0.0000027896,0.0000027928,0.0000027940,0.0000027934, -0.0000027911,0.0000027882,0.0000027846,0.0000027814,0.0000027801, -0.0000027802,0.0000027803,0.0000027802,0.0000027786,0.0000027744, -0.0000027690,0.0000027623,0.0000027553,0.0000027504,0.0000027491, -0.0000027478,0.0000027443,0.0000027393,0.0000027344,0.0000027301, -0.0000027257,0.0000027207,0.0000027155,0.0000027100,0.0000027058, -0.0000027033,0.0000027030,0.0000027025,0.0000027005,0.0000026975, -0.0000026945,0.0000026923,0.0000026911,0.0000026914,0.0000026935, -0.0000026966,0.0000026988,0.0000026989,0.0000026962,0.0000026942, -0.0000026989,0.0000027107,0.0000027238,0.0000027333,0.0000027375, -0.0000027378,0.0000027372,0.0000027376,0.0000027381,0.0000027371, -0.0000027351,0.0000027329,0.0000027338,0.0000027364,0.0000027389, -0.0000027412,0.0000027445,0.0000027492,0.0000027535,0.0000027554, -0.0000027561,0.0000027558,0.0000027542,0.0000027525,0.0000027533, -0.0000027554,0.0000027575,0.0000027592,0.0000027635,0.0000027703, -0.0000027762,0.0000027774,0.0000027728,0.0000027645,0.0000027549, -0.0000027423,0.0000027267,0.0000027134,0.0000027052,0.0000026987, -0.0000026924,0.0000026896,0.0000026908,0.0000026926,0.0000026935, -0.0000026938,0.0000026978,0.0000027057,0.0000027137,0.0000027161, -0.0000027077,0.0000026912,0.0000026783,0.0000026740,0.0000026736, -0.0000026751,0.0000026886,0.0000027166,0.0000027443,0.0000027579, -0.0000027604,0.0000027605,0.0000027593,0.0000027562,0.0000027554, -0.0000027592,0.0000027644,0.0000027668,0.0000027687,0.0000027735, -0.0000027730,0.0000027656,0.0000027546,0.0000027434,0.0000027455, -0.0000027572,0.0000027639,0.0000027730,0.0000027932,0.0000028095, -0.0000028120,0.0000028120,0.0000028120,0.0000028118,0.0000028142, -0.0000028166,0.0000028165,0.0000028185,0.0000028246,0.0000028327, -0.0000028414,0.0000028502,0.0000028520,0.0000028446,0.0000028353, -0.0000028322,0.0000028304,0.0000028256,0.0000028162,0.0000028033, -0.0000027917,0.0000027816,0.0000027734,0.0000027650,0.0000027590, -0.0000027546,0.0000027508,0.0000027501,0.0000027528,0.0000027593, -0.0000027670,0.0000027742,0.0000027826,0.0000027904,0.0000027950, -0.0000027971,0.0000027985,0.0000027943,0.0000027848,0.0000027740, -0.0000027632,0.0000027596,0.0000027565,0.0000027582,0.0000027616, -0.0000027680,0.0000027728,0.0000027736,0.0000027713,0.0000027657, -0.0000027603,0.0000027592,0.0000027642,0.0000027752,0.0000027863, -0.0000027924,0.0000027937,0.0000027927,0.0000027921,0.0000027923, -0.0000027922,0.0000027996,0.0000028182,0.0000028320,0.0000028374, -0.0000028407,0.0000028403,0.0000028354,0.0000028333,0.0000028365, -0.0000028416,0.0000028429,0.0000028422,0.0000028421,0.0000028408, -0.0000028405,0.0000028424,0.0000028443,0.0000028455,0.0000028455, -0.0000028449,0.0000028459,0.0000028484,0.0000028510,0.0000028521, -0.0000028522,0.0000028545,0.0000028589,0.0000028654,0.0000028718, -0.0000028765,0.0000028788,0.0000028773,0.0000028720,0.0000028649, -0.0000028593,0.0000028564,0.0000028556,0.0000028548,0.0000028528, -0.0000028442,0.0000028324,0.0000028238,0.0000028218,0.0000028244, -0.0000028292,0.0000028350,0.0000028386,0.0000028355,0.0000028280, -0.0000028191,0.0000028059,0.0000027931,0.0000027869,0.0000027869, -0.0000027898,0.0000027926,0.0000027936,0.0000027964,0.0000028034, -0.0000028137,0.0000028248,0.0000028341,0.0000028386,0.0000028380, -0.0000028339,0.0000028261,0.0000028156,0.0000028046,0.0000027975, -0.0000027967,0.0000027981,0.0000027979,0.0000027958,0.0000027932, -0.0000027920,0.0000027928,0.0000027950,0.0000027958,0.0000027941, -0.0000027901,0.0000027871,0.0000027873,0.0000027909,0.0000027949, -0.0000027992,0.0000028038,0.0000028060,0.0000028078,0.0000028098, -0.0000028104,0.0000028092,0.0000028058,0.0000028019,0.0000027998, -0.0000028002,0.0000028033,0.0000028077,0.0000028126,0.0000028190, -0.0000028269,0.0000028343,0.0000028383,0.0000028369,0.0000028314, -0.0000028226,0.0000028150,0.0000028100,0.0000028058,0.0000028025, -0.0000028019,0.0000028028,0.0000028034,0.0000028059,0.0000028132, -0.0000028235,0.0000028338,0.0000028419,0.0000028474,0.0000028523, -0.0000028547,0.0000028524,0.0000028448,0.0000028394,0.0000028388, -0.0000028382,0.0000028365,0.0000028337,0.0000028280,0.0000028198, -0.0000028146,0.0000028140,0.0000028132,0.0000028119,0.0000028105, -0.0000028150,0.0000028187,0.0000028148,0.0000028042,0.0000027973, -0.0000027969,0.0000027955,0.0000027882,0.0000027776,0.0000027729, -0.0000027783,0.0000027906,0.0000027948,0.0000027901,0.0000027774, -0.0000027670,0.0000027634,0.0000027649,0.0000027689,0.0000027725, -0.0000027752,0.0000027787,0.0000027833,0.0000027864,0.0000027855, -0.0000027773,0.0000027581,0.0000027343,0.0000027203,0.0000027231, -0.0000027333,0.0000027404,0.0000027410,0.0000027304,0.0000027103, -0.0000026957,0.0000026936,0.0000026979,0.0000027115,0.0000027301, -0.0000027472,0.0000027527,0.0000027474,0.0000027333,0.0000027243, -0.0000027243,0.0000027276,0.0000027319,0.0000027387,0.0000027473, -0.0000027538,0.0000027570,0.0000027585,0.0000027609,0.0000027639, -0.0000027692,0.0000027735,0.0000027759,0.0000027787,0.0000027857, -0.0000027952,0.0000027996,0.0000027973,0.0000027888,0.0000027782, -0.0000027706,0.0000027705,0.0000027801,0.0000027970,0.0000028144, -0.0000028215,0.0000028185,0.0000028063,0.0000027964,0.0000027934, -0.0000027908,0.0000027836,0.0000027728,0.0000027616,0.0000027548, -0.0000027540,0.0000027544,0.0000027524,0.0000027491,0.0000027449, -0.0000027394,0.0000027341,0.0000027333,0.0000027358,0.0000027393, -0.0000027421,0.0000027469,0.0000027546,0.0000027596,0.0000027609, -0.0000027672,0.0000027771,0.0000027782,0.0000027728,0.0000027736, -0.0000027807,0.0000027914,0.0000028008,0.0000028051,0.0000028023, -0.0000027957,0.0000027927,0.0000027954,0.0000028039,0.0000028100, -0.0000028146,0.0000028224,0.0000028294,0.0000028446,0.0000028698, -0.0000028869,0.0000028941,0.0000029002,0.0000029054,0.0000029067, -0.0000029055,0.0000029016,0.0000028953,0.0000028866,0.0000028755, -0.0000028646,0.0000028526,0.0000028398,0.0000028277,0.0000028160, -0.0000028039,0.0000027907,0.0000027798,0.0000027758,0.0000027755, -0.0000027738,0.0000027687,0.0000027622,0.0000027579,0.0000027573, -0.0000027590,0.0000027594,0.0000027558,0.0000027509,0.0000027501, -0.0000027597,0.0000027771,0.0000027960,0.0000028076,0.0000028092, -0.0000028083,0.0000028116,0.0000028187,0.0000028212,0.0000028163, -0.0000028089,0.0000028026,0.0000027966,0.0000027871,0.0000027758, -0.0000027678,0.0000027626,0.0000027578,0.0000027528,0.0000027493, -0.0000027483,0.0000027483,0.0000027476,0.0000027482,0.0000027534, -0.0000027627,0.0000027723,0.0000027796,0.0000027833,0.0000027822, -0.0000027734,0.0000027589,0.0000027458,0.0000027387,0.0000027373, -0.0000027382,0.0000027381,0.0000027380,0.0000027397,0.0000027447, -0.0000027525,0.0000027595,0.0000027638,0.0000027664,0.0000027680, -0.0000027686,0.0000027682,0.0000027682,0.0000027700,0.0000027739, -0.0000027783,0.0000027829,0.0000027877,0.0000027932,0.0000027978, -0.0000027994,0.0000027971,0.0000027927,0.0000027871,0.0000027829, -0.0000027794,0.0000027770,0.0000027765,0.0000027771,0.0000027772, -0.0000027770,0.0000027767,0.0000027753,0.0000027724,0.0000027673, -0.0000027613,0.0000027556,0.0000027526,0.0000027518,0.0000027498, -0.0000027475,0.0000027448,0.0000027425,0.0000027410,0.0000027387, -0.0000027348,0.0000027298,0.0000027256,0.0000027229,0.0000027213, -0.0000027190,0.0000027153,0.0000027113,0.0000027082,0.0000027056, -0.0000027035,0.0000027027,0.0000027033,0.0000027052,0.0000027073, -0.0000027088,0.0000027096,0.0000027107,0.0000027151,0.0000027241, -0.0000027337,0.0000027402,0.0000027438,0.0000027455,0.0000027475, -0.0000027517,0.0000027570,0.0000027601,0.0000027607,0.0000027602, -0.0000027610,0.0000027629,0.0000027640,0.0000027639,0.0000027634, -0.0000027634,0.0000027642,0.0000027638,0.0000027615,0.0000027579, -0.0000027546,0.0000027517,0.0000027511,0.0000027534,0.0000027577, -0.0000027615,0.0000027652,0.0000027703,0.0000027763,0.0000027797, -0.0000027781,0.0000027714,0.0000027622,0.0000027512,0.0000027362, -0.0000027178,0.0000027029,0.0000026949,0.0000026908,0.0000026893, -0.0000026906,0.0000026944,0.0000026984,0.0000027005,0.0000027027, -0.0000027075,0.0000027109,0.0000027103,0.0000026997,0.0000026837, -0.0000026730,0.0000026716,0.0000026729,0.0000026771,0.0000026939, -0.0000027244,0.0000027520,0.0000027634,0.0000027631,0.0000027596, -0.0000027571,0.0000027586,0.0000027641,0.0000027689,0.0000027709, -0.0000027704,0.0000027699,0.0000027739,0.0000027744,0.0000027659, -0.0000027544,0.0000027437,0.0000027438,0.0000027571,0.0000027655, -0.0000027715,0.0000027866,0.0000028050,0.0000028129,0.0000028139, -0.0000028164,0.0000028179,0.0000028177,0.0000028187,0.0000028197, -0.0000028210,0.0000028238,0.0000028291,0.0000028371,0.0000028458, -0.0000028520,0.0000028524,0.0000028442,0.0000028310,0.0000028189, -0.0000028100,0.0000028010,0.0000027948,0.0000027924,0.0000027892, -0.0000027816,0.0000027725,0.0000027629,0.0000027573,0.0000027559, -0.0000027549,0.0000027526,0.0000027513,0.0000027517,0.0000027505, -0.0000027509,0.0000027537,0.0000027623,0.0000027699,0.0000027734, -0.0000027760,0.0000027731,0.0000027644,0.0000027539,0.0000027427, -0.0000027394,0.0000027368,0.0000027375,0.0000027432,0.0000027504, -0.0000027585,0.0000027629,0.0000027635,0.0000027622,0.0000027579, -0.0000027526,0.0000027525,0.0000027599,0.0000027724,0.0000027848, -0.0000027908,0.0000027933,0.0000027945,0.0000027964,0.0000028016, -0.0000028036,0.0000028056,0.0000028170,0.0000028336,0.0000028402, -0.0000028450,0.0000028462,0.0000028426,0.0000028402,0.0000028434, -0.0000028458,0.0000028429,0.0000028407,0.0000028400,0.0000028413, -0.0000028448,0.0000028481,0.0000028499,0.0000028506,0.0000028498, -0.0000028491,0.0000028498,0.0000028526,0.0000028547,0.0000028562, -0.0000028581,0.0000028611,0.0000028658,0.0000028721,0.0000028785, -0.0000028816,0.0000028820,0.0000028783,0.0000028717,0.0000028640, -0.0000028578,0.0000028535,0.0000028521,0.0000028540,0.0000028564, -0.0000028545,0.0000028439,0.0000028300,0.0000028219,0.0000028212, -0.0000028250,0.0000028324,0.0000028387,0.0000028376,0.0000028324, -0.0000028251,0.0000028145,0.0000028019,0.0000027922,0.0000027893, -0.0000027932,0.0000027975,0.0000028004,0.0000028050,0.0000028120, -0.0000028198,0.0000028264,0.0000028308,0.0000028322,0.0000028301, -0.0000028243,0.0000028148,0.0000028031,0.0000027918,0.0000027853, -0.0000027846,0.0000027867,0.0000027877,0.0000027872,0.0000027870, -0.0000027898,0.0000027926,0.0000027957,0.0000027964,0.0000027941, -0.0000027885,0.0000027836,0.0000027818,0.0000027847,0.0000027918, -0.0000027982,0.0000028060,0.0000028108,0.0000028132,0.0000028144, -0.0000028145,0.0000028128,0.0000028088,0.0000028036,0.0000027998, -0.0000027976,0.0000027984,0.0000027996,0.0000028025,0.0000028064, -0.0000028130,0.0000028218,0.0000028296,0.0000028330,0.0000028314, -0.0000028253,0.0000028186,0.0000028143,0.0000028113,0.0000028092, -0.0000028080,0.0000028076,0.0000028062,0.0000028054,0.0000028092, -0.0000028190,0.0000028306,0.0000028383,0.0000028415,0.0000028448, -0.0000028494,0.0000028505,0.0000028457,0.0000028412,0.0000028402, -0.0000028386,0.0000028345,0.0000028315,0.0000028278,0.0000028200, -0.0000028140,0.0000028139,0.0000028157,0.0000028154,0.0000028124, -0.0000028114,0.0000028126,0.0000028102,0.0000028027,0.0000027967, -0.0000027944,0.0000027911,0.0000027854,0.0000027786,0.0000027733, -0.0000027759,0.0000027852,0.0000027893,0.0000027860,0.0000027770, -0.0000027682,0.0000027624,0.0000027615,0.0000027646,0.0000027695, -0.0000027740,0.0000027788,0.0000027843,0.0000027879,0.0000027868, -0.0000027766,0.0000027553,0.0000027325,0.0000027214,0.0000027249, -0.0000027358,0.0000027421,0.0000027426,0.0000027329,0.0000027133, -0.0000026971,0.0000026934,0.0000026957,0.0000027051,0.0000027222, -0.0000027413,0.0000027547,0.0000027553,0.0000027443,0.0000027290, -0.0000027204,0.0000027191,0.0000027201,0.0000027251,0.0000027335, -0.0000027411,0.0000027455,0.0000027480,0.0000027523,0.0000027582, -0.0000027638,0.0000027682,0.0000027708,0.0000027736,0.0000027793, -0.0000027891,0.0000027977,0.0000027996,0.0000027947,0.0000027846, -0.0000027744,0.0000027700,0.0000027730,0.0000027848,0.0000028031, -0.0000028213,0.0000028285,0.0000028241,0.0000028105,0.0000027992, -0.0000027953,0.0000027934,0.0000027871,0.0000027769,0.0000027661, -0.0000027601,0.0000027593,0.0000027592,0.0000027583,0.0000027576, -0.0000027544,0.0000027461,0.0000027375,0.0000027352,0.0000027381, -0.0000027430,0.0000027479,0.0000027553,0.0000027634,0.0000027673, -0.0000027732,0.0000027875,0.0000027970,0.0000027910,0.0000027820, -0.0000027843,0.0000027947,0.0000028054,0.0000028123,0.0000028129, -0.0000028073,0.0000028019,0.0000027996,0.0000027994,0.0000028021, -0.0000028062,0.0000028150,0.0000028265,0.0000028348,0.0000028486, -0.0000028682,0.0000028826,0.0000028902,0.0000028978,0.0000029045, -0.0000029068,0.0000029061,0.0000029020,0.0000028949,0.0000028847, -0.0000028707,0.0000028562,0.0000028415,0.0000028283,0.0000028181, -0.0000028102,0.0000028010,0.0000027892,0.0000027799,0.0000027770, -0.0000027762,0.0000027721,0.0000027659,0.0000027602,0.0000027572, -0.0000027567,0.0000027582,0.0000027588,0.0000027555,0.0000027523, -0.0000027550,0.0000027697,0.0000027905,0.0000028090,0.0000028154, -0.0000028110,0.0000028079,0.0000028142,0.0000028238,0.0000028246, -0.0000028162,0.0000028043,0.0000027967,0.0000027916,0.0000027840, -0.0000027737,0.0000027641,0.0000027569,0.0000027520,0.0000027488, -0.0000027472,0.0000027480,0.0000027493,0.0000027487,0.0000027475, -0.0000027496,0.0000027570,0.0000027670,0.0000027750,0.0000027795, -0.0000027799,0.0000027738,0.0000027608,0.0000027481,0.0000027418, -0.0000027409,0.0000027411,0.0000027394,0.0000027367,0.0000027361, -0.0000027392,0.0000027466,0.0000027570,0.0000027649,0.0000027687, -0.0000027694,0.0000027679,0.0000027654,0.0000027643,0.0000027661, -0.0000027702,0.0000027752,0.0000027801,0.0000027853,0.0000027916, -0.0000027980,0.0000028003,0.0000027996,0.0000027934,0.0000027849, -0.0000027777,0.0000027732,0.0000027708,0.0000027699,0.0000027695, -0.0000027696,0.0000027699,0.0000027713,0.0000027741,0.0000027759, -0.0000027753,0.0000027718,0.0000027660,0.0000027588,0.0000027527, -0.0000027503,0.0000027497,0.0000027494,0.0000027493,0.0000027499, -0.0000027513,0.0000027512,0.0000027485,0.0000027443,0.0000027405, -0.0000027376,0.0000027349,0.0000027319,0.0000027277,0.0000027237, -0.0000027205,0.0000027178,0.0000027157,0.0000027143,0.0000027141, -0.0000027156,0.0000027183,0.0000027210,0.0000027236,0.0000027259, -0.0000027292,0.0000027359,0.0000027449,0.0000027528,0.0000027592, -0.0000027652,0.0000027709,0.0000027776,0.0000027845,0.0000027877, -0.0000027873,0.0000027834,0.0000027804,0.0000027790,0.0000027772, -0.0000027739,0.0000027703,0.0000027683,0.0000027670,0.0000027657, -0.0000027626,0.0000027585,0.0000027549,0.0000027523,0.0000027519, -0.0000027545,0.0000027603,0.0000027645,0.0000027657,0.0000027674, -0.0000027721,0.0000027784,0.0000027808,0.0000027780,0.0000027705, -0.0000027598,0.0000027466,0.0000027293,0.0000027098,0.0000026970, -0.0000026920,0.0000026913,0.0000026924,0.0000026960,0.0000027019, -0.0000027072,0.0000027099,0.0000027110,0.0000027097,0.0000027028, -0.0000026907,0.0000026771,0.0000026692,0.0000026690,0.0000026716, -0.0000026790,0.0000026997,0.0000027308,0.0000027571,0.0000027672, -0.0000027655,0.0000027598,0.0000027577,0.0000027631,0.0000027718, -0.0000027744,0.0000027745,0.0000027746,0.0000027730,0.0000027741, -0.0000027749,0.0000027666,0.0000027541,0.0000027415,0.0000027396, -0.0000027554,0.0000027682,0.0000027732,0.0000027843,0.0000028004, -0.0000028105,0.0000028130,0.0000028162,0.0000028214,0.0000028230, -0.0000028226,0.0000028227,0.0000028239,0.0000028264,0.0000028289, -0.0000028333,0.0000028413,0.0000028482,0.0000028505,0.0000028469, -0.0000028352,0.0000028204,0.0000028041,0.0000027946,0.0000027933, -0.0000027950,0.0000027942,0.0000027863,0.0000027735,0.0000027598, -0.0000027473,0.0000027402,0.0000027383,0.0000027397,0.0000027430, -0.0000027464,0.0000027528,0.0000027567,0.0000027553,0.0000027514, -0.0000027507,0.0000027536,0.0000027572,0.0000027614,0.0000027639, -0.0000027633,0.0000027576,0.0000027490,0.0000027454,0.0000027421, -0.0000027392,0.0000027423,0.0000027472,0.0000027542,0.0000027600, -0.0000027625,0.0000027628,0.0000027603,0.0000027545,0.0000027496, -0.0000027489,0.0000027558,0.0000027696,0.0000027827,0.0000027914, -0.0000027941,0.0000027927,0.0000027947,0.0000028036,0.0000028102, -0.0000028126,0.0000028178,0.0000028304,0.0000028425,0.0000028492, -0.0000028544,0.0000028544,0.0000028507,0.0000028490,0.0000028466, -0.0000028428,0.0000028407,0.0000028418,0.0000028450,0.0000028508, -0.0000028545,0.0000028559,0.0000028563,0.0000028547,0.0000028529, -0.0000028532,0.0000028549,0.0000028564,0.0000028580,0.0000028617, -0.0000028674,0.0000028725,0.0000028771,0.0000028810,0.0000028813, -0.0000028799,0.0000028738,0.0000028664,0.0000028601,0.0000028561, -0.0000028528,0.0000028507,0.0000028522,0.0000028554,0.0000028565, -0.0000028526,0.0000028391,0.0000028251,0.0000028188,0.0000028198, -0.0000028269,0.0000028361,0.0000028398,0.0000028377,0.0000028319, -0.0000028252,0.0000028146,0.0000028029,0.0000027978,0.0000027997, -0.0000028035,0.0000028070,0.0000028124,0.0000028202,0.0000028271, -0.0000028303,0.0000028306,0.0000028297,0.0000028256,0.0000028185, -0.0000028083,0.0000027973,0.0000027867,0.0000027807,0.0000027794, -0.0000027817,0.0000027840,0.0000027859,0.0000027885,0.0000027936, -0.0000028001,0.0000028048,0.0000028053,0.0000028019,0.0000027939, -0.0000027849,0.0000027797,0.0000027806,0.0000027880,0.0000027991, -0.0000028094,0.0000028161,0.0000028192,0.0000028199,0.0000028193, -0.0000028177,0.0000028151,0.0000028115,0.0000028077,0.0000028035, -0.0000028002,0.0000027985,0.0000027983,0.0000027987,0.0000027996, -0.0000028048,0.0000028123,0.0000028183,0.0000028203,0.0000028189, -0.0000028153,0.0000028119,0.0000028097,0.0000028085,0.0000028087, -0.0000028092,0.0000028077,0.0000028047,0.0000028039,0.0000028101, -0.0000028218,0.0000028306,0.0000028327,0.0000028335,0.0000028379, -0.0000028423,0.0000028427,0.0000028417,0.0000028407,0.0000028382, -0.0000028327,0.0000028286,0.0000028250,0.0000028178,0.0000028128, -0.0000028146,0.0000028191,0.0000028190,0.0000028144,0.0000028078, -0.0000028057,0.0000028042,0.0000028004,0.0000027960,0.0000027925, -0.0000027873,0.0000027820,0.0000027790,0.0000027762,0.0000027759, -0.0000027803,0.0000027829,0.0000027806,0.0000027760,0.0000027710, -0.0000027646,0.0000027609,0.0000027627,0.0000027671,0.0000027715, -0.0000027767,0.0000027828,0.0000027856,0.0000027829,0.0000027704, -0.0000027499,0.0000027301,0.0000027223,0.0000027261,0.0000027380, -0.0000027435,0.0000027426,0.0000027343,0.0000027159,0.0000026989, -0.0000026923,0.0000026931,0.0000026995,0.0000027144,0.0000027342, -0.0000027524,0.0000027602,0.0000027553,0.0000027405,0.0000027246, -0.0000027150,0.0000027127,0.0000027143,0.0000027208,0.0000027281, -0.0000027329,0.0000027368,0.0000027423,0.0000027500,0.0000027568, -0.0000027628,0.0000027662,0.0000027689,0.0000027735,0.0000027822, -0.0000027930,0.0000027997,0.0000027994,0.0000027922,0.0000027810, -0.0000027729,0.0000027721,0.0000027792,0.0000027928,0.0000028110, -0.0000028281,0.0000028336,0.0000028262,0.0000028116,0.0000027998, -0.0000027954,0.0000027939,0.0000027893,0.0000027817,0.0000027728, -0.0000027664,0.0000027640,0.0000027640,0.0000027649,0.0000027652, -0.0000027603,0.0000027485,0.0000027392,0.0000027378,0.0000027419, -0.0000027478,0.0000027549,0.0000027637,0.0000027713,0.0000027780, -0.0000027909,0.0000028058,0.0000028087,0.0000028013,0.0000027968, -0.0000028008,0.0000028098,0.0000028164,0.0000028182,0.0000028156, -0.0000028106,0.0000028082,0.0000028073,0.0000028045,0.0000028003, -0.0000028019,0.0000028156,0.0000028304,0.0000028410,0.0000028541, -0.0000028667,0.0000028755,0.0000028829,0.0000028926,0.0000029017, -0.0000029059,0.0000029056,0.0000029018,0.0000028945,0.0000028833, -0.0000028678,0.0000028516,0.0000028361,0.0000028229,0.0000028131, -0.0000028055,0.0000027973,0.0000027872,0.0000027797,0.0000027775, -0.0000027761,0.0000027714,0.0000027657,0.0000027608,0.0000027576, -0.0000027559,0.0000027566,0.0000027581,0.0000027572,0.0000027570, -0.0000027638,0.0000027815,0.0000028029,0.0000028172,0.0000028177, -0.0000028097,0.0000028062,0.0000028156,0.0000028278,0.0000028283, -0.0000028173,0.0000028022,0.0000027929,0.0000027889,0.0000027831, -0.0000027743,0.0000027643,0.0000027545,0.0000027470,0.0000027435, -0.0000027429,0.0000027449,0.0000027482,0.0000027494,0.0000027477, -0.0000027469,0.0000027501,0.0000027575,0.0000027654,0.0000027713, -0.0000027735,0.0000027715,0.0000027625,0.0000027510,0.0000027441, -0.0000027432,0.0000027436,0.0000027418,0.0000027379,0.0000027356, -0.0000027373,0.0000027448,0.0000027556,0.0000027643,0.0000027680, -0.0000027686,0.0000027667,0.0000027650,0.0000027652,0.0000027666, -0.0000027689,0.0000027727,0.0000027770,0.0000027819,0.0000027873, -0.0000027931,0.0000027971,0.0000027967,0.0000027911,0.0000027826, -0.0000027752,0.0000027704,0.0000027680,0.0000027668,0.0000027657, -0.0000027646,0.0000027649,0.0000027675,0.0000027706,0.0000027757, -0.0000027797,0.0000027802,0.0000027769,0.0000027701,0.0000027612, -0.0000027534,0.0000027487,0.0000027482,0.0000027485,0.0000027494, -0.0000027519,0.0000027541,0.0000027540,0.0000027524,0.0000027492, -0.0000027457,0.0000027427,0.0000027399,0.0000027372,0.0000027338, -0.0000027300,0.0000027271,0.0000027257,0.0000027255,0.0000027258, -0.0000027260,0.0000027270,0.0000027288,0.0000027313,0.0000027354, -0.0000027407,0.0000027466,0.0000027547,0.0000027649,0.0000027738, -0.0000027809,0.0000027870,0.0000027919,0.0000027961,0.0000027994, -0.0000028003,0.0000027959,0.0000027899,0.0000027829,0.0000027789, -0.0000027766,0.0000027734,0.0000027695,0.0000027663,0.0000027652, -0.0000027647,0.0000027628,0.0000027595,0.0000027567,0.0000027560, -0.0000027574,0.0000027597,0.0000027640,0.0000027666,0.0000027641, -0.0000027617,0.0000027650,0.0000027740,0.0000027816,0.0000027826, -0.0000027791,0.0000027697,0.0000027556,0.0000027398,0.0000027225, -0.0000027053,0.0000026950,0.0000026933,0.0000026948,0.0000026982, -0.0000027037,0.0000027104,0.0000027147,0.0000027149,0.0000027086, -0.0000026957,0.0000026817,0.0000026722,0.0000026681,0.0000026681, -0.0000026702,0.0000026798,0.0000027038,0.0000027359,0.0000027603, -0.0000027686,0.0000027672,0.0000027607,0.0000027584,0.0000027661, -0.0000027741,0.0000027748,0.0000027749,0.0000027783,0.0000027788, -0.0000027773,0.0000027761,0.0000027675,0.0000027533,0.0000027385, -0.0000027349,0.0000027504,0.0000027691,0.0000027771,0.0000027866, -0.0000027992,0.0000028085,0.0000028109,0.0000028131,0.0000028198, -0.0000028255,0.0000028268,0.0000028266,0.0000028271,0.0000028297, -0.0000028329,0.0000028354,0.0000028388,0.0000028450,0.0000028484, -0.0000028462,0.0000028376,0.0000028269,0.0000028139,0.0000028012, -0.0000027966,0.0000027971,0.0000027955,0.0000027885,0.0000027791, -0.0000027686,0.0000027560,0.0000027439,0.0000027356,0.0000027296, -0.0000027251,0.0000027246,0.0000027260,0.0000027331,0.0000027441, -0.0000027534,0.0000027582,0.0000027597,0.0000027615,0.0000027646, -0.0000027697,0.0000027751,0.0000027787,0.0000027763,0.0000027671, -0.0000027620,0.0000027579,0.0000027518,0.0000027524,0.0000027550, -0.0000027589,0.0000027629,0.0000027656,0.0000027681,0.0000027687, -0.0000027653,0.0000027589,0.0000027537,0.0000027523,0.0000027582, -0.0000027694,0.0000027806,0.0000027901,0.0000027928,0.0000027904, -0.0000027913,0.0000027985,0.0000028097,0.0000028193,0.0000028227, -0.0000028287,0.0000028407,0.0000028519,0.0000028605,0.0000028650, -0.0000028625,0.0000028544,0.0000028464,0.0000028432,0.0000028430, -0.0000028459,0.0000028506,0.0000028561,0.0000028597,0.0000028613, -0.0000028605,0.0000028578,0.0000028546,0.0000028545,0.0000028552, -0.0000028572,0.0000028609,0.0000028671,0.0000028736,0.0000028774, -0.0000028795,0.0000028797,0.0000028769,0.0000028720,0.0000028645, -0.0000028570,0.0000028519,0.0000028507,0.0000028503,0.0000028508, -0.0000028518,0.0000028533,0.0000028542,0.0000028530,0.0000028460, -0.0000028306,0.0000028183,0.0000028153,0.0000028200,0.0000028313, -0.0000028406,0.0000028431,0.0000028394,0.0000028343,0.0000028264, -0.0000028156,0.0000028081,0.0000028069,0.0000028086,0.0000028119, -0.0000028176,0.0000028255,0.0000028315,0.0000028328,0.0000028313, -0.0000028288,0.0000028248,0.0000028184,0.0000028102,0.0000028013, -0.0000027937,0.0000027887,0.0000027871,0.0000027891,0.0000027926, -0.0000027965,0.0000028012,0.0000028082,0.0000028162,0.0000028216, -0.0000028217,0.0000028175,0.0000028072,0.0000027942,0.0000027839, -0.0000027813,0.0000027876,0.0000028013,0.0000028137,0.0000028234, -0.0000028279,0.0000028281,0.0000028259,0.0000028228,0.0000028208, -0.0000028195,0.0000028180,0.0000028148,0.0000028109,0.0000028076, -0.0000028050,0.0000028022,0.0000027987,0.0000027976,0.0000027996, -0.0000028040,0.0000028068,0.0000028070,0.0000028056,0.0000028034, -0.0000028015,0.0000028008,0.0000028017,0.0000028040,0.0000028045, -0.0000028016,0.0000027982,0.0000028006,0.0000028102,0.0000028198, -0.0000028232,0.0000028236,0.0000028260,0.0000028298,0.0000028341, -0.0000028387,0.0000028405,0.0000028376,0.0000028313,0.0000028270, -0.0000028224,0.0000028143,0.0000028099,0.0000028141,0.0000028219, -0.0000028226,0.0000028161,0.0000028069,0.0000028008,0.0000027985, -0.0000027972,0.0000027953,0.0000027919,0.0000027856,0.0000027797, -0.0000027788,0.0000027793,0.0000027778,0.0000027777,0.0000027778, -0.0000027754,0.0000027738,0.0000027741,0.0000027709,0.0000027654, -0.0000027641,0.0000027668,0.0000027703,0.0000027741,0.0000027781, -0.0000027792,0.0000027744,0.0000027619,0.0000027441,0.0000027285, -0.0000027234,0.0000027281,0.0000027387,0.0000027433,0.0000027411, -0.0000027342,0.0000027186,0.0000027020,0.0000026925,0.0000026913, -0.0000026948,0.0000027065,0.0000027259,0.0000027467,0.0000027612, -0.0000027630,0.0000027538,0.0000027376,0.0000027213,0.0000027109, -0.0000027085,0.0000027118,0.0000027178,0.0000027230,0.0000027271, -0.0000027320,0.0000027399,0.0000027482,0.0000027563,0.0000027618, -0.0000027651,0.0000027691,0.0000027767,0.0000027877,0.0000027978, -0.0000028023,0.0000027997,0.0000027897,0.0000027788,0.0000027747, -0.0000027780,0.0000027875,0.0000028010,0.0000028183,0.0000028325, -0.0000028343,0.0000028244,0.0000028090,0.0000027979,0.0000027939, -0.0000027924,0.0000027894,0.0000027838,0.0000027754,0.0000027689, -0.0000027677,0.0000027696,0.0000027714,0.0000027695,0.0000027611, -0.0000027478,0.0000027403,0.0000027410,0.0000027456,0.0000027528, -0.0000027629,0.0000027727,0.0000027817,0.0000027934,0.0000028068, -0.0000028156,0.0000028180,0.0000028165,0.0000028144,0.0000028160, -0.0000028193,0.0000028203,0.0000028179,0.0000028144,0.0000028137, -0.0000028159,0.0000028156,0.0000028090,0.0000027985,0.0000028000, -0.0000028177,0.0000028350,0.0000028481,0.0000028599,0.0000028646, -0.0000028678,0.0000028739,0.0000028855,0.0000028973,0.0000029033, -0.0000029035,0.0000028999,0.0000028924,0.0000028808,0.0000028654, -0.0000028502,0.0000028364,0.0000028253,0.0000028149,0.0000028056, -0.0000027962,0.0000027874,0.0000027808,0.0000027777,0.0000027758, -0.0000027717,0.0000027673,0.0000027624,0.0000027582,0.0000027558, -0.0000027564,0.0000027598,0.0000027625,0.0000027660,0.0000027755, -0.0000027931,0.0000028121,0.0000028209,0.0000028172,0.0000028046, -0.0000028014,0.0000028145,0.0000028291,0.0000028307,0.0000028203, -0.0000028039,0.0000027927,0.0000027885,0.0000027842,0.0000027775, -0.0000027694,0.0000027590,0.0000027490,0.0000027410,0.0000027388, -0.0000027400,0.0000027435,0.0000027469,0.0000027466,0.0000027436, -0.0000027422,0.0000027448,0.0000027502,0.0000027560,0.0000027611, -0.0000027621,0.0000027584,0.0000027502,0.0000027439,0.0000027428, -0.0000027450,0.0000027460,0.0000027445,0.0000027420,0.0000027424, -0.0000027477,0.0000027560,0.0000027621,0.0000027645,0.0000027646, -0.0000027641,0.0000027647,0.0000027675,0.0000027703,0.0000027712, -0.0000027722,0.0000027758,0.0000027803,0.0000027842,0.0000027874, -0.0000027895,0.0000027893,0.0000027856,0.0000027799,0.0000027754, -0.0000027732,0.0000027715,0.0000027705,0.0000027695,0.0000027680, -0.0000027667,0.0000027670,0.0000027706,0.0000027760,0.0000027817, -0.0000027860,0.0000027866,0.0000027832,0.0000027755,0.0000027653, -0.0000027567,0.0000027515,0.0000027497,0.0000027501,0.0000027517, -0.0000027540,0.0000027551,0.0000027547,0.0000027531,0.0000027507, -0.0000027478,0.0000027455,0.0000027432,0.0000027414,0.0000027388, -0.0000027360,0.0000027346,0.0000027357,0.0000027383,0.0000027401, -0.0000027397,0.0000027387,0.0000027386,0.0000027419,0.0000027504, -0.0000027618,0.0000027714,0.0000027785,0.0000027845,0.0000027896, -0.0000027937,0.0000027973,0.0000027997,0.0000028011,0.0000028017, -0.0000028006,0.0000027957,0.0000027875,0.0000027807,0.0000027760, -0.0000027752,0.0000027731,0.0000027694,0.0000027662,0.0000027655, -0.0000027657,0.0000027650,0.0000027634,0.0000027625,0.0000027641, -0.0000027662,0.0000027672,0.0000027670,0.0000027654,0.0000027591, -0.0000027535,0.0000027565,0.0000027681,0.0000027796,0.0000027848, -0.0000027843,0.0000027781,0.0000027645,0.0000027465,0.0000027309, -0.0000027175,0.0000027043,0.0000026959,0.0000026958,0.0000027010, -0.0000027069,0.0000027122,0.0000027164,0.0000027168,0.0000027094, -0.0000026919,0.0000026747,0.0000026673,0.0000026681,0.0000026698, -0.0000026714,0.0000026807,0.0000027053,0.0000027383,0.0000027619, -0.0000027687,0.0000027673,0.0000027613,0.0000027590,0.0000027663, -0.0000027731,0.0000027723,0.0000027734,0.0000027814,0.0000027849, -0.0000027828,0.0000027781,0.0000027686,0.0000027532,0.0000027353, -0.0000027293,0.0000027446,0.0000027668,0.0000027783,0.0000027907, -0.0000028027,0.0000028080,0.0000028093,0.0000028093,0.0000028149, -0.0000028232,0.0000028279,0.0000028307,0.0000028327,0.0000028336, -0.0000028378,0.0000028430,0.0000028445,0.0000028446,0.0000028467, -0.0000028452,0.0000028394,0.0000028312,0.0000028225,0.0000028145, -0.0000028095,0.0000028049,0.0000027990,0.0000027909,0.0000027853, -0.0000027798,0.0000027723,0.0000027608,0.0000027489,0.0000027408, -0.0000027343,0.0000027267,0.0000027212,0.0000027184,0.0000027182, -0.0000027244,0.0000027327,0.0000027418,0.0000027505,0.0000027583, -0.0000027645,0.0000027708,0.0000027776,0.0000027836,0.0000027839, -0.0000027762,0.0000027688,0.0000027651,0.0000027595,0.0000027573, -0.0000027604,0.0000027650,0.0000027690,0.0000027712,0.0000027725, -0.0000027747,0.0000027745,0.0000027721,0.0000027680,0.0000027632, -0.0000027627,0.0000027675,0.0000027733,0.0000027801,0.0000027852, -0.0000027881,0.0000027904,0.0000027903,0.0000027925,0.0000028032, -0.0000028184,0.0000028295,0.0000028326,0.0000028374,0.0000028511, -0.0000028632,0.0000028705,0.0000028696,0.0000028610,0.0000028500, -0.0000028447,0.0000028457,0.0000028503,0.0000028558,0.0000028604, -0.0000028640,0.0000028646,0.0000028625,0.0000028595,0.0000028571, -0.0000028567,0.0000028574,0.0000028615,0.0000028676,0.0000028750, -0.0000028815,0.0000028854,0.0000028855,0.0000028815,0.0000028733, -0.0000028639,0.0000028543,0.0000028463,0.0000028418,0.0000028416, -0.0000028450,0.0000028493,0.0000028524,0.0000028529,0.0000028517, -0.0000028493,0.0000028459,0.0000028350,0.0000028213,0.0000028141, -0.0000028150,0.0000028260,0.0000028408,0.0000028480,0.0000028476, -0.0000028434,0.0000028372,0.0000028272,0.0000028180,0.0000028135, -0.0000028130,0.0000028159,0.0000028223,0.0000028293,0.0000028334, -0.0000028335,0.0000028313,0.0000028293,0.0000028283,0.0000028264, -0.0000028223,0.0000028170,0.0000028116,0.0000028063,0.0000028027, -0.0000028025,0.0000028044,0.0000028079,0.0000028131,0.0000028206, -0.0000028289,0.0000028346,0.0000028351,0.0000028312,0.0000028218, -0.0000028083,0.0000027953,0.0000027884,0.0000027910,0.0000028060, -0.0000028177,0.0000028291,0.0000028360,0.0000028377,0.0000028363, -0.0000028325,0.0000028287,0.0000028270,0.0000028261,0.0000028237, -0.0000028201,0.0000028180,0.0000028166,0.0000028141,0.0000028085, -0.0000028019,0.0000027997,0.0000028011,0.0000028031,0.0000028027, -0.0000028014,0.0000027996,0.0000027975,0.0000027958,0.0000027955, -0.0000027973,0.0000027989,0.0000027977,0.0000027944,0.0000027953, -0.0000028036,0.0000028138,0.0000028194,0.0000028212,0.0000028223, -0.0000028218,0.0000028230,0.0000028306,0.0000028377,0.0000028365, -0.0000028307,0.0000028263,0.0000028208,0.0000028111,0.0000028065, -0.0000028123,0.0000028230,0.0000028252,0.0000028176,0.0000028077, -0.0000027985,0.0000027942,0.0000027933,0.0000027932,0.0000027910, -0.0000027851,0.0000027787,0.0000027781,0.0000027819,0.0000027814, -0.0000027780,0.0000027757,0.0000027726,0.0000027711,0.0000027755, -0.0000027790,0.0000027764,0.0000027714,0.0000027701,0.0000027714, -0.0000027726,0.0000027732,0.0000027725,0.0000027675,0.0000027568, -0.0000027420,0.0000027286,0.0000027241,0.0000027282,0.0000027373, -0.0000027414,0.0000027397,0.0000027335,0.0000027208,0.0000027045, -0.0000026934,0.0000026892,0.0000026902,0.0000026996,0.0000027173, -0.0000027379,0.0000027559,0.0000027643,0.0000027626,0.0000027531, -0.0000027366,0.0000027200,0.0000027099,0.0000027083,0.0000027119, -0.0000027162,0.0000027200,0.0000027243,0.0000027316,0.0000027408, -0.0000027502,0.0000027575,0.0000027622,0.0000027659,0.0000027725, -0.0000027831,0.0000027948,0.0000028036,0.0000028056,0.0000027990, -0.0000027872,0.0000027783,0.0000027777,0.0000027842,0.0000027942, -0.0000028069,0.0000028231,0.0000028340,0.0000028317,0.0000028181, -0.0000028034,0.0000027952,0.0000027927,0.0000027911,0.0000027880, -0.0000027817,0.0000027740,0.0000027706,0.0000027725,0.0000027759, -0.0000027759,0.0000027704,0.0000027592,0.0000027480,0.0000027441, -0.0000027450,0.0000027502,0.0000027614,0.0000027751,0.0000027863, -0.0000027959,0.0000028057,0.0000028158,0.0000028258,0.0000028312, -0.0000028301,0.0000028254,0.0000028228,0.0000028216,0.0000028183, -0.0000028144,0.0000028145,0.0000028197,0.0000028253,0.0000028233, -0.0000028109,0.0000027987,0.0000028023,0.0000028226,0.0000028402, -0.0000028551,0.0000028637,0.0000028625,0.0000028598,0.0000028646, -0.0000028782,0.0000028923,0.0000028994,0.0000028999,0.0000028963, -0.0000028881,0.0000028764,0.0000028626,0.0000028505,0.0000028404, -0.0000028315,0.0000028215,0.0000028107,0.0000028002,0.0000027912, -0.0000027833,0.0000027788,0.0000027763,0.0000027730,0.0000027695, -0.0000027646,0.0000027606,0.0000027583,0.0000027608,0.0000027664, -0.0000027716,0.0000027776,0.0000027882,0.0000028040,0.0000028185, -0.0000028219,0.0000028133,0.0000027975,0.0000027950,0.0000028108, -0.0000028271,0.0000028305,0.0000028238,0.0000028091,0.0000027964, -0.0000027900,0.0000027860,0.0000027808,0.0000027764,0.0000027706, -0.0000027604,0.0000027483,0.0000027395,0.0000027375,0.0000027389, -0.0000027419,0.0000027434,0.0000027415,0.0000027368,0.0000027333, -0.0000027334,0.0000027363,0.0000027412,0.0000027457,0.0000027463, -0.0000027441,0.0000027418,0.0000027426,0.0000027472,0.0000027527, -0.0000027561,0.0000027567,0.0000027554,0.0000027549,0.0000027570, -0.0000027592,0.0000027593,0.0000027589,0.0000027602,0.0000027637, -0.0000027685,0.0000027730,0.0000027743,0.0000027740,0.0000027761, -0.0000027807,0.0000027839,0.0000027846,0.0000027840,0.0000027824, -0.0000027794,0.0000027771,0.0000027764,0.0000027779,0.0000027792, -0.0000027794,0.0000027784,0.0000027764,0.0000027745,0.0000027739, -0.0000027749,0.0000027776,0.0000027835,0.0000027891,0.0000027924, -0.0000027932,0.0000027899,0.0000027819,0.0000027712,0.0000027617, -0.0000027555,0.0000027529,0.0000027529,0.0000027534,0.0000027545, -0.0000027545,0.0000027538,0.0000027528,0.0000027514,0.0000027502, -0.0000027495,0.0000027487,0.0000027479,0.0000027466,0.0000027455, -0.0000027467,0.0000027504,0.0000027540,0.0000027550,0.0000027525, -0.0000027492,0.0000027500,0.0000027583,0.0000027733,0.0000027880, -0.0000027941,0.0000027934,0.0000027916,0.0000027920,0.0000027961, -0.0000028008,0.0000028034,0.0000028040,0.0000028029,0.0000027995, -0.0000027937,0.0000027873,0.0000027826,0.0000027808,0.0000027806, -0.0000027805,0.0000027781,0.0000027746,0.0000027729,0.0000027728, -0.0000027725,0.0000027720,0.0000027719,0.0000027735,0.0000027738, -0.0000027719,0.0000027677,0.0000027603,0.0000027522,0.0000027462, -0.0000027489,0.0000027615,0.0000027759,0.0000027842,0.0000027855, -0.0000027822,0.0000027711,0.0000027527,0.0000027345,0.0000027230, -0.0000027155,0.0000027064,0.0000027000,0.0000027024,0.0000027102, -0.0000027154,0.0000027171,0.0000027174,0.0000027117,0.0000026941, -0.0000026730,0.0000026638,0.0000026661,0.0000026719,0.0000026751, -0.0000026829,0.0000027053,0.0000027381,0.0000027627,0.0000027686, -0.0000027667,0.0000027616,0.0000027603,0.0000027652,0.0000027693, -0.0000027691,0.0000027722,0.0000027836,0.0000027909,0.0000027879, -0.0000027799,0.0000027687,0.0000027537,0.0000027343,0.0000027245, -0.0000027385,0.0000027631,0.0000027772,0.0000027920,0.0000028081, -0.0000028120,0.0000028086,0.0000028070,0.0000028092,0.0000028185, -0.0000028255,0.0000028304,0.0000028369,0.0000028402,0.0000028419, -0.0000028479,0.0000028532,0.0000028529,0.0000028498,0.0000028447, -0.0000028393,0.0000028338,0.0000028298,0.0000028226,0.0000028216, -0.0000028204,0.0000028094,0.0000027964,0.0000027896,0.0000027868, -0.0000027829,0.0000027760,0.0000027675,0.0000027583,0.0000027530, -0.0000027483,0.0000027402,0.0000027289,0.0000027211,0.0000027173, -0.0000027202,0.0000027244,0.0000027271,0.0000027313,0.0000027376, -0.0000027460,0.0000027549,0.0000027636,0.0000027733,0.0000027783, -0.0000027741,0.0000027682,0.0000027660,0.0000027626,0.0000027605, -0.0000027641,0.0000027682,0.0000027739,0.0000027786,0.0000027809, -0.0000027817,0.0000027814,0.0000027794,0.0000027777,0.0000027775, -0.0000027773,0.0000027789,0.0000027800,0.0000027806,0.0000027818, -0.0000027831,0.0000027872,0.0000027914,0.0000027913,0.0000027905, -0.0000027967,0.0000028108,0.0000028274,0.0000028372,0.0000028404, -0.0000028472,0.0000028606,0.0000028695,0.0000028699,0.0000028663, -0.0000028582,0.0000028507,0.0000028492,0.0000028529,0.0000028594, -0.0000028660,0.0000028696,0.0000028690,0.0000028660,0.0000028620, -0.0000028604,0.0000028600,0.0000028618,0.0000028678,0.0000028760, -0.0000028848,0.0000028927,0.0000028978,0.0000028961,0.0000028877, -0.0000028747,0.0000028601,0.0000028472,0.0000028361,0.0000028314, -0.0000028321,0.0000028390,0.0000028473,0.0000028533,0.0000028539, -0.0000028504,0.0000028452,0.0000028416,0.0000028363,0.0000028266, -0.0000028168,0.0000028151,0.0000028254,0.0000028433,0.0000028542, -0.0000028560,0.0000028523,0.0000028470,0.0000028375,0.0000028264, -0.0000028192,0.0000028164,0.0000028198,0.0000028266,0.0000028317, -0.0000028340,0.0000028338,0.0000028329,0.0000028328,0.0000028345, -0.0000028354,0.0000028333,0.0000028290,0.0000028237,0.0000028175, -0.0000028120,0.0000028088,0.0000028092,0.0000028120,0.0000028172, -0.0000028251,0.0000028337,0.0000028399,0.0000028411,0.0000028385, -0.0000028311,0.0000028200,0.0000028078,0.0000028000,0.0000027994, -0.0000028127,0.0000028226,0.0000028342,0.0000028427,0.0000028463, -0.0000028463,0.0000028442,0.0000028408,0.0000028379,0.0000028361, -0.0000028334,0.0000028283,0.0000028259,0.0000028262,0.0000028258, -0.0000028218,0.0000028137,0.0000028067,0.0000028047,0.0000028044, -0.0000028035,0.0000028021,0.0000028013,0.0000028000,0.0000027978, -0.0000027967,0.0000027981,0.0000027999,0.0000027992,0.0000027966, -0.0000027969,0.0000028049,0.0000028161,0.0000028222,0.0000028246, -0.0000028258,0.0000028227,0.0000028171,0.0000028211,0.0000028316, -0.0000028339,0.0000028296,0.0000028260,0.0000028204,0.0000028091, -0.0000028034,0.0000028097,0.0000028223,0.0000028257,0.0000028192, -0.0000028097,0.0000027993,0.0000027915,0.0000027898,0.0000027905, -0.0000027897,0.0000027852,0.0000027794,0.0000027781,0.0000027834, -0.0000027864,0.0000027820,0.0000027765,0.0000027725,0.0000027709, -0.0000027749,0.0000027845,0.0000027884,0.0000027836,0.0000027774, -0.0000027743,0.0000027725,0.0000027709,0.0000027688,0.0000027645, -0.0000027558,0.0000027431,0.0000027307,0.0000027248,0.0000027272, -0.0000027344,0.0000027376,0.0000027368,0.0000027337,0.0000027237, -0.0000027085,0.0000026954,0.0000026879,0.0000026874,0.0000026943, -0.0000027098,0.0000027277,0.0000027460,0.0000027607,0.0000027654, -0.0000027626,0.0000027526,0.0000027373,0.0000027219,0.0000027129, -0.0000027115,0.0000027132,0.0000027156,0.0000027192,0.0000027254, -0.0000027353,0.0000027459,0.0000027541,0.0000027593,0.0000027633, -0.0000027687,0.0000027783,0.0000027913,0.0000028034,0.0000028097, -0.0000028077,0.0000027977,0.0000027853,0.0000027804,0.0000027826, -0.0000027902,0.0000027985,0.0000028106,0.0000028253,0.0000028313, -0.0000028252,0.0000028103,0.0000027989,0.0000027946,0.0000027930, -0.0000027902,0.0000027858,0.0000027798,0.0000027755,0.0000027770, -0.0000027815,0.0000027831,0.0000027801,0.0000027719,0.0000027606, -0.0000027527,0.0000027519,0.0000027565,0.0000027673,0.0000027804, -0.0000027909,0.0000027982,0.0000028053,0.0000028162,0.0000028289, -0.0000028372,0.0000028389,0.0000028354,0.0000028288,0.0000028232, -0.0000028189,0.0000028151,0.0000028145,0.0000028193,0.0000028284, -0.0000028324,0.0000028259,0.0000028104,0.0000028010,0.0000028105, -0.0000028296,0.0000028459,0.0000028612,0.0000028666,0.0000028588, -0.0000028520,0.0000028558,0.0000028713,0.0000028871,0.0000028948, -0.0000028959,0.0000028924,0.0000028835,0.0000028717,0.0000028597, -0.0000028509,0.0000028450,0.0000028386,0.0000028294,0.0000028181, -0.0000028074,0.0000027984,0.0000027901,0.0000027838,0.0000027806, -0.0000027780,0.0000027751,0.0000027708,0.0000027676,0.0000027667, -0.0000027700,0.0000027760,0.0000027821,0.0000027897,0.0000028013, -0.0000028148,0.0000028232,0.0000028219,0.0000028091,0.0000027908, -0.0000027880,0.0000028049,0.0000028228,0.0000028278,0.0000028250, -0.0000028154,0.0000028028,0.0000027936,0.0000027884,0.0000027831, -0.0000027802,0.0000027800,0.0000027770,0.0000027679,0.0000027543, -0.0000027432,0.0000027393,0.0000027402,0.0000027417,0.0000027422, -0.0000027386,0.0000027313,0.0000027255,0.0000027224,0.0000027231, -0.0000027274,0.0000027320,0.0000027352,0.0000027392,0.0000027440, -0.0000027510,0.0000027603,0.0000027684,0.0000027724,0.0000027712, -0.0000027649,0.0000027584,0.0000027550,0.0000027540,0.0000027549, -0.0000027572,0.0000027619,0.0000027675,0.0000027724,0.0000027753, -0.0000027762,0.0000027779,0.0000027811,0.0000027839,0.0000027843, -0.0000027831,0.0000027814,0.0000027784,0.0000027766,0.0000027769, -0.0000027812,0.0000027856,0.0000027880,0.0000027889,0.0000027882, -0.0000027857,0.0000027838,0.0000027835,0.0000027840,0.0000027852, -0.0000027892,0.0000027943,0.0000027966,0.0000027975,0.0000027945, -0.0000027867,0.0000027758,0.0000027650,0.0000027575,0.0000027528, -0.0000027512,0.0000027502,0.0000027488,0.0000027481,0.0000027482, -0.0000027493,0.0000027500,0.0000027509,0.0000027524,0.0000027538, -0.0000027548,0.0000027558,0.0000027571,0.0000027604,0.0000027653, -0.0000027683,0.0000027675,0.0000027634,0.0000027612,0.0000027669, -0.0000027816,0.0000027987,0.0000028076,0.0000028053,0.0000027963, -0.0000027901,0.0000027913,0.0000027980,0.0000028060,0.0000028099, -0.0000028088,0.0000028048,0.0000027992,0.0000027946,0.0000027915, -0.0000027918,0.0000027937,0.0000027948,0.0000027947,0.0000027919, -0.0000027872,0.0000027839,0.0000027828,0.0000027824,0.0000027815, -0.0000027798,0.0000027789,0.0000027765,0.0000027713,0.0000027640, -0.0000027548,0.0000027470,0.0000027432,0.0000027455,0.0000027571, -0.0000027721,0.0000027823,0.0000027850,0.0000027831,0.0000027745, -0.0000027581,0.0000027390,0.0000027259,0.0000027201,0.0000027181, -0.0000027125,0.0000027080,0.0000027116,0.0000027183,0.0000027196, -0.0000027173,0.0000027133,0.0000027000,0.0000026783,0.0000026645, -0.0000026650,0.0000026727,0.0000026789,0.0000026865,0.0000027055, -0.0000027360,0.0000027620,0.0000027693,0.0000027664,0.0000027610, -0.0000027601,0.0000027635,0.0000027657,0.0000027657,0.0000027714, -0.0000027855,0.0000027943,0.0000027917,0.0000027813,0.0000027686, -0.0000027533,0.0000027331,0.0000027235,0.0000027358,0.0000027588, -0.0000027736,0.0000027924,0.0000028112,0.0000028175,0.0000028121, -0.0000028056,0.0000028051,0.0000028124,0.0000028212,0.0000028273, -0.0000028373,0.0000028462,0.0000028493,0.0000028523,0.0000028568, -0.0000028595,0.0000028582,0.0000028522,0.0000028403,0.0000028341, -0.0000028317,0.0000028276,0.0000028271,0.0000028286,0.0000028263, -0.0000028101,0.0000027964,0.0000027910,0.0000027886,0.0000027860, -0.0000027811,0.0000027768,0.0000027725,0.0000027700,0.0000027683, -0.0000027626,0.0000027496,0.0000027354,0.0000027257,0.0000027242, -0.0000027257,0.0000027264,0.0000027270,0.0000027283,0.0000027311, -0.0000027371,0.0000027445,0.0000027548,0.0000027622,0.0000027630, -0.0000027604,0.0000027626,0.0000027621,0.0000027609,0.0000027656, -0.0000027735,0.0000027826,0.0000027891,0.0000027933,0.0000027965, -0.0000027961,0.0000027915,0.0000027857,0.0000027836,0.0000027869, -0.0000027921,0.0000027927,0.0000027886,0.0000027862,0.0000027862, -0.0000027891,0.0000027930,0.0000027942,0.0000027917,0.0000027908, -0.0000027948,0.0000028031,0.0000028154,0.0000028320,0.0000028436, -0.0000028477,0.0000028539,0.0000028625,0.0000028659,0.0000028653, -0.0000028630,0.0000028603,0.0000028576,0.0000028579,0.0000028645, -0.0000028728,0.0000028772,0.0000028765,0.0000028741,0.0000028705, -0.0000028702,0.0000028714,0.0000028749,0.0000028811,0.0000028886, -0.0000028967,0.0000029036,0.0000029063,0.0000029025,0.0000028927, -0.0000028780,0.0000028597,0.0000028421,0.0000028293,0.0000028237, -0.0000028251,0.0000028337,0.0000028452,0.0000028542,0.0000028555, -0.0000028509,0.0000028427,0.0000028392,0.0000028364,0.0000028317, -0.0000028246,0.0000028221,0.0000028324,0.0000028505,0.0000028614, -0.0000028630,0.0000028600,0.0000028552,0.0000028454,0.0000028331, -0.0000028241,0.0000028198,0.0000028230,0.0000028292,0.0000028329, -0.0000028347,0.0000028348,0.0000028340,0.0000028336,0.0000028349, -0.0000028361,0.0000028346,0.0000028311,0.0000028268,0.0000028220, -0.0000028174,0.0000028145,0.0000028150,0.0000028183,0.0000028238, -0.0000028313,0.0000028391,0.0000028448,0.0000028469,0.0000028455, -0.0000028397,0.0000028298,0.0000028186,0.0000028108,0.0000028089, -0.0000028199,0.0000028276,0.0000028391,0.0000028496,0.0000028550, -0.0000028554,0.0000028537,0.0000028510,0.0000028480,0.0000028463, -0.0000028447,0.0000028397,0.0000028356,0.0000028360,0.0000028376, -0.0000028361,0.0000028293,0.0000028208,0.0000028154,0.0000028124, -0.0000028094,0.0000028072,0.0000028063,0.0000028052,0.0000028026, -0.0000028013,0.0000028037,0.0000028076,0.0000028092,0.0000028078, -0.0000028075,0.0000028142,0.0000028246,0.0000028297,0.0000028304, -0.0000028312,0.0000028285,0.0000028188,0.0000028150,0.0000028233, -0.0000028290,0.0000028277,0.0000028253,0.0000028198,0.0000028082, -0.0000028020,0.0000028076,0.0000028199,0.0000028253,0.0000028213, -0.0000028124,0.0000028021,0.0000027913,0.0000027882,0.0000027886, -0.0000027878,0.0000027845,0.0000027800,0.0000027783,0.0000027828, -0.0000027892,0.0000027884,0.0000027806,0.0000027745,0.0000027737, -0.0000027755,0.0000027847,0.0000027946,0.0000027964,0.0000027894, -0.0000027804,0.0000027738,0.0000027697,0.0000027670,0.0000027635, -0.0000027566,0.0000027456,0.0000027337,0.0000027261,0.0000027253, -0.0000027294,0.0000027330,0.0000027338,0.0000027329,0.0000027257, -0.0000027125,0.0000026980,0.0000026876,0.0000026854,0.0000026907, -0.0000027041,0.0000027192,0.0000027334,0.0000027481,0.0000027594, -0.0000027627,0.0000027605,0.0000027509,0.0000027366,0.0000027236, -0.0000027170,0.0000027156,0.0000027158,0.0000027171,0.0000027212, -0.0000027309,0.0000027432,0.0000027532,0.0000027583,0.0000027615, -0.0000027653,0.0000027732,0.0000027859,0.0000028004,0.0000028122, -0.0000028154,0.0000028094,0.0000027958,0.0000027849,0.0000027829, -0.0000027881,0.0000027949,0.0000028021,0.0000028141,0.0000028262, -0.0000028277,0.0000028166,0.0000028032,0.0000027966,0.0000027947, -0.0000027925,0.0000027886,0.0000027850,0.0000027829,0.0000027841, -0.0000027880,0.0000027911,0.0000027898,0.0000027827,0.0000027719, -0.0000027626,0.0000027608,0.0000027682,0.0000027821,0.0000027959, -0.0000028019,0.0000028021,0.0000028069,0.0000028190,0.0000028317, -0.0000028388,0.0000028410,0.0000028411,0.0000028367,0.0000028287, -0.0000028207,0.0000028161,0.0000028163,0.0000028214,0.0000028301, -0.0000028356,0.0000028331,0.0000028225,0.0000028087,0.0000028084, -0.0000028216,0.0000028371,0.0000028529,0.0000028672,0.0000028667, -0.0000028533,0.0000028442,0.0000028479,0.0000028648,0.0000028818, -0.0000028910,0.0000028930,0.0000028897,0.0000028806,0.0000028691, -0.0000028590,0.0000028529,0.0000028496,0.0000028450,0.0000028363, -0.0000028263,0.0000028171,0.0000028098,0.0000028033,0.0000027972, -0.0000027932,0.0000027902,0.0000027876,0.0000027833,0.0000027799, -0.0000027789,0.0000027810,0.0000027857,0.0000027923,0.0000028021, -0.0000028145,0.0000028250,0.0000028277,0.0000028209,0.0000028056, -0.0000027874,0.0000027832,0.0000027969,0.0000028165,0.0000028248, -0.0000028242,0.0000028198,0.0000028116,0.0000028020,0.0000027941, -0.0000027872,0.0000027820,0.0000027823,0.0000027848,0.0000027837, -0.0000027771,0.0000027640,0.0000027519,0.0000027460,0.0000027447, -0.0000027448,0.0000027439,0.0000027390,0.0000027310,0.0000027234, -0.0000027188,0.0000027177,0.0000027216,0.0000027275,0.0000027349, -0.0000027436,0.0000027539,0.0000027648,0.0000027761,0.0000027829, -0.0000027827,0.0000027742,0.0000027621,0.0000027519,0.0000027492, -0.0000027524,0.0000027566,0.0000027612,0.0000027663,0.0000027701, -0.0000027732,0.0000027764,0.0000027800,0.0000027829,0.0000027833, -0.0000027837,0.0000027843,0.0000027850,0.0000027838,0.0000027812, -0.0000027805,0.0000027835,0.0000027879,0.0000027916,0.0000027945, -0.0000027971,0.0000027983,0.0000027969,0.0000027952,0.0000027945, -0.0000027939,0.0000027937,0.0000027958,0.0000028004,0.0000028032, -0.0000028038,0.0000028019,0.0000027950,0.0000027841,0.0000027719, -0.0000027618,0.0000027547,0.0000027507,0.0000027460,0.0000027433, -0.0000027424,0.0000027441,0.0000027480,0.0000027498,0.0000027521, -0.0000027555,0.0000027594,0.0000027628,0.0000027664,0.0000027697, -0.0000027738,0.0000027781,0.0000027800,0.0000027786,0.0000027764, -0.0000027785,0.0000027895,0.0000028048,0.0000028138,0.0000028117, -0.0000028039,0.0000027929,0.0000027888,0.0000027925,0.0000028033, -0.0000028124,0.0000028149,0.0000028114,0.0000028057,0.0000028005, -0.0000027984,0.0000028003,0.0000028043,0.0000028075,0.0000028076, -0.0000028049,0.0000027995,0.0000027929,0.0000027883,0.0000027863, -0.0000027860,0.0000027849,0.0000027826,0.0000027791,0.0000027751, -0.0000027682,0.0000027597,0.0000027518,0.0000027472,0.0000027452, -0.0000027480,0.0000027575,0.0000027700,0.0000027801,0.0000027845, -0.0000027838,0.0000027768,0.0000027631,0.0000027453,0.0000027309, -0.0000027241,0.0000027241,0.0000027260,0.0000027219,0.0000027173, -0.0000027195,0.0000027219,0.0000027189,0.0000027133,0.0000027049, -0.0000026868,0.0000026692,0.0000026656,0.0000026729,0.0000026809, -0.0000026889,0.0000027057,0.0000027337,0.0000027608,0.0000027703, -0.0000027667,0.0000027602,0.0000027589,0.0000027614,0.0000027631, -0.0000027647,0.0000027719,0.0000027860,0.0000027960,0.0000027940, -0.0000027821,0.0000027688,0.0000027513,0.0000027301,0.0000027242, -0.0000027375,0.0000027557,0.0000027677,0.0000027896,0.0000028138, -0.0000028216,0.0000028161,0.0000028079,0.0000028036,0.0000028069, -0.0000028168,0.0000028227,0.0000028330,0.0000028489,0.0000028548, -0.0000028574,0.0000028607,0.0000028645,0.0000028639,0.0000028584, -0.0000028510,0.0000028379,0.0000028322,0.0000028297,0.0000028292, -0.0000028322,0.0000028334,0.0000028269,0.0000028118,0.0000028002, -0.0000027944,0.0000027927,0.0000027918,0.0000027897,0.0000027881, -0.0000027870,0.0000027856,0.0000027853,0.0000027831,0.0000027734, -0.0000027579,0.0000027440,0.0000027360,0.0000027335,0.0000027319, -0.0000027310,0.0000027304,0.0000027308,0.0000027333,0.0000027377, -0.0000027465,0.0000027543,0.0000027573,0.0000027542,0.0000027556, -0.0000027578,0.0000027603,0.0000027679,0.0000027796,0.0000027929, -0.0000028027,0.0000028078,0.0000028105,0.0000028117,0.0000028093, -0.0000028024,0.0000027933,0.0000027909,0.0000027969,0.0000028021, -0.0000028010,0.0000027943,0.0000027899,0.0000027927,0.0000027989, -0.0000028026,0.0000027989,0.0000027933,0.0000027918,0.0000027939, -0.0000027985,0.0000028064,0.0000028189,0.0000028348,0.0000028479, -0.0000028515,0.0000028532,0.0000028583,0.0000028612,0.0000028618, -0.0000028633,0.0000028653,0.0000028687,0.0000028759,0.0000028832, -0.0000028873,0.0000028869,0.0000028848,0.0000028825,0.0000028827, -0.0000028845,0.0000028865,0.0000028902,0.0000028960,0.0000029018, -0.0000029062,0.0000029068,0.0000029019,0.0000028930,0.0000028788, -0.0000028590,0.0000028389,0.0000028251,0.0000028197,0.0000028204, -0.0000028290,0.0000028431,0.0000028554,0.0000028582,0.0000028531, -0.0000028436,0.0000028407,0.0000028393,0.0000028390,0.0000028357, -0.0000028338,0.0000028437,0.0000028595,0.0000028678,0.0000028682, -0.0000028658,0.0000028615,0.0000028526,0.0000028409,0.0000028315, -0.0000028270,0.0000028283,0.0000028318,0.0000028337,0.0000028347, -0.0000028332,0.0000028294,0.0000028265,0.0000028280,0.0000028320, -0.0000028344,0.0000028340,0.0000028318,0.0000028283,0.0000028246, -0.0000028228,0.0000028237,0.0000028268,0.0000028317,0.0000028384, -0.0000028449,0.0000028493,0.0000028518,0.0000028515,0.0000028477, -0.0000028402,0.0000028307,0.0000028223,0.0000028185,0.0000028292, -0.0000028349,0.0000028448,0.0000028558,0.0000028636,0.0000028651, -0.0000028625,0.0000028581,0.0000028541,0.0000028518,0.0000028508, -0.0000028483,0.0000028448,0.0000028455,0.0000028493,0.0000028514, -0.0000028473,0.0000028389,0.0000028325,0.0000028282,0.0000028232, -0.0000028188,0.0000028161,0.0000028132,0.0000028088,0.0000028064, -0.0000028088,0.0000028148,0.0000028190,0.0000028198,0.0000028197, -0.0000028238,0.0000028316,0.0000028354,0.0000028339,0.0000028330, -0.0000028318,0.0000028229,0.0000028136,0.0000028157,0.0000028221, -0.0000028238,0.0000028235,0.0000028184,0.0000028084,0.0000028021, -0.0000028070,0.0000028184,0.0000028251,0.0000028231,0.0000028149, -0.0000028053,0.0000027943,0.0000027879,0.0000027870,0.0000027862, -0.0000027838,0.0000027798,0.0000027774,0.0000027807,0.0000027879, -0.0000027921,0.0000027870,0.0000027786,0.0000027762,0.0000027778, -0.0000027823,0.0000027937,0.0000028028,0.0000028024,0.0000027922, -0.0000027790,0.0000027696,0.0000027648,0.0000027622,0.0000027574, -0.0000027482,0.0000027364,0.0000027265,0.0000027234,0.0000027251, -0.0000027278,0.0000027290,0.0000027306,0.0000027287,0.0000027179, -0.0000027023,0.0000026886,0.0000026825,0.0000026863,0.0000026990, -0.0000027135,0.0000027237,0.0000027331,0.0000027446,0.0000027547, -0.0000027586,0.0000027563,0.0000027466,0.0000027332,0.0000027231, -0.0000027191,0.0000027184,0.0000027184,0.0000027193,0.0000027259, -0.0000027382,0.0000027519,0.0000027597,0.0000027625,0.0000027638, -0.0000027683,0.0000027792,0.0000027940,0.0000028092,0.0000028194, -0.0000028199,0.0000028094,0.0000027948,0.0000027869,0.0000027882, -0.0000027939,0.0000027994,0.0000028065,0.0000028171,0.0000028247, -0.0000028197,0.0000028063,0.0000027968,0.0000027940,0.0000027920, -0.0000027889,0.0000027863,0.0000027865,0.0000027889,0.0000027931, -0.0000027970,0.0000027971,0.0000027907,0.0000027788,0.0000027694, -0.0000027691,0.0000027808,0.0000027988,0.0000028133,0.0000028165, -0.0000028140,0.0000028158,0.0000028258,0.0000028363,0.0000028414, -0.0000028422,0.0000028422,0.0000028407,0.0000028352,0.0000028265, -0.0000028194,0.0000028182,0.0000028235,0.0000028315,0.0000028361, -0.0000028345,0.0000028265,0.0000028164,0.0000028125,0.0000028193, -0.0000028312,0.0000028443,0.0000028609,0.0000028706,0.0000028650, -0.0000028468,0.0000028369,0.0000028417,0.0000028592,0.0000028765, -0.0000028880,0.0000028918,0.0000028892,0.0000028808,0.0000028706, -0.0000028617,0.0000028579,0.0000028567,0.0000028531,0.0000028451, -0.0000028373,0.0000028316,0.0000028274,0.0000028228,0.0000028170, -0.0000028119,0.0000028074,0.0000028037,0.0000027987,0.0000027928, -0.0000027903,0.0000027911,0.0000027956,0.0000028032,0.0000028141, -0.0000028258,0.0000028330,0.0000028319,0.0000028220,0.0000028048, -0.0000027873,0.0000027818,0.0000027887,0.0000028066,0.0000028189, -0.0000028215,0.0000028209,0.0000028180,0.0000028130,0.0000028062, -0.0000027978,0.0000027890,0.0000027842,0.0000027852,0.0000027875, -0.0000027881,0.0000027838,0.0000027733,0.0000027625,0.0000027558, -0.0000027527,0.0000027510,0.0000027489,0.0000027438,0.0000027358, -0.0000027268,0.0000027199,0.0000027192,0.0000027225,0.0000027294, -0.0000027392,0.0000027520,0.0000027655,0.0000027777,0.0000027868, -0.0000027888,0.0000027822,0.0000027685,0.0000027540,0.0000027471, -0.0000027488,0.0000027554,0.0000027621,0.0000027661,0.0000027685, -0.0000027702,0.0000027742,0.0000027802,0.0000027855,0.0000027857, -0.0000027831,0.0000027844,0.0000027891,0.0000027925,0.0000027918, -0.0000027897,0.0000027894,0.0000027916,0.0000027933,0.0000027957, -0.0000027998,0.0000028051,0.0000028092,0.0000028106,0.0000028108, -0.0000028110,0.0000028106,0.0000028110,0.0000028138,0.0000028177, -0.0000028211,0.0000028218,0.0000028206,0.0000028151,0.0000028049, -0.0000027923,0.0000027803,0.0000027699,0.0000027607,0.0000027529, -0.0000027482,0.0000027476,0.0000027498,0.0000027541,0.0000027576, -0.0000027603,0.0000027644,0.0000027696,0.0000027743,0.0000027791, -0.0000027836,0.0000027879,0.0000027913,0.0000027927,0.0000027927, -0.0000027940,0.0000028002,0.0000028113,0.0000028183,0.0000028162, -0.0000028076,0.0000027967,0.0000027899,0.0000027895,0.0000027971, -0.0000028091,0.0000028166,0.0000028165,0.0000028120,0.0000028063, -0.0000028035,0.0000028050,0.0000028092,0.0000028134,0.0000028151, -0.0000028127,0.0000028061,0.0000027979,0.0000027906,0.0000027855, -0.0000027840,0.0000027845,0.0000027839,0.0000027815,0.0000027772, -0.0000027730,0.0000027673,0.0000027611,0.0000027556,0.0000027534, -0.0000027536,0.0000027558,0.0000027618,0.0000027705,0.0000027781, -0.0000027828,0.0000027836,0.0000027789,0.0000027681,0.0000027530, -0.0000027382,0.0000027299,0.0000027291,0.0000027338,0.0000027368, -0.0000027308,0.0000027237,0.0000027232,0.0000027213,0.0000027143, -0.0000027071,0.0000026946,0.0000026766,0.0000026681,0.0000026728, -0.0000026819,0.0000026900,0.0000027047,0.0000027313,0.0000027588, -0.0000027707,0.0000027669,0.0000027602,0.0000027587,0.0000027601, -0.0000027612,0.0000027646,0.0000027734,0.0000027869,0.0000027957, -0.0000027936,0.0000027830,0.0000027690,0.0000027478,0.0000027271, -0.0000027244,0.0000027423,0.0000027564,0.0000027622,0.0000027833, -0.0000028125,0.0000028224,0.0000028191,0.0000028096,0.0000028046, -0.0000028047,0.0000028120,0.0000028204,0.0000028294,0.0000028453, -0.0000028581,0.0000028595,0.0000028606,0.0000028643,0.0000028678, -0.0000028635,0.0000028536,0.0000028486,0.0000028387,0.0000028301, -0.0000028286,0.0000028318,0.0000028351,0.0000028326,0.0000028230, -0.0000028136,0.0000028038,0.0000027983,0.0000027972,0.0000027975, -0.0000027978,0.0000027976,0.0000027974,0.0000027971,0.0000027976, -0.0000027979,0.0000027915,0.0000027764,0.0000027609,0.0000027484, -0.0000027429,0.0000027398,0.0000027377,0.0000027361,0.0000027347, -0.0000027355,0.0000027385,0.0000027445,0.0000027521,0.0000027573, -0.0000027569,0.0000027569,0.0000027583,0.0000027615,0.0000027712, -0.0000027849,0.0000027980,0.0000028078,0.0000028137,0.0000028167, -0.0000028185,0.0000028186,0.0000028157,0.0000028084,0.0000028000, -0.0000027977,0.0000028034,0.0000028076,0.0000028050,0.0000028001, -0.0000027969,0.0000028011,0.0000028077,0.0000028102,0.0000028063, -0.0000028005,0.0000027959,0.0000027937,0.0000027951,0.0000028017, -0.0000028086,0.0000028185,0.0000028359,0.0000028486,0.0000028498, -0.0000028497,0.0000028529,0.0000028571,0.0000028615,0.0000028661, -0.0000028746,0.0000028833,0.0000028909,0.0000028947,0.0000028930, -0.0000028893,0.0000028873,0.0000028866,0.0000028861,0.0000028870, -0.0000028902,0.0000028949,0.0000028989,0.0000029022,0.0000029026, -0.0000028986,0.0000028906,0.0000028776,0.0000028582,0.0000028379, -0.0000028244,0.0000028179,0.0000028177,0.0000028249,0.0000028406, -0.0000028562,0.0000028613,0.0000028567,0.0000028478,0.0000028462, -0.0000028463,0.0000028473,0.0000028459,0.0000028452,0.0000028539, -0.0000028661,0.0000028716,0.0000028714,0.0000028689,0.0000028648, -0.0000028588,0.0000028504,0.0000028427,0.0000028379,0.0000028354, -0.0000028339,0.0000028319,0.0000028293,0.0000028249,0.0000028203, -0.0000028183,0.0000028227,0.0000028308,0.0000028375,0.0000028397, -0.0000028381,0.0000028338,0.0000028304,0.0000028304,0.0000028324, -0.0000028353,0.0000028391,0.0000028447,0.0000028499,0.0000028533, -0.0000028552,0.0000028551,0.0000028526,0.0000028480,0.0000028414, -0.0000028336,0.0000028289,0.0000028373,0.0000028430,0.0000028522, -0.0000028623,0.0000028706,0.0000028736,0.0000028712,0.0000028652, -0.0000028594,0.0000028556,0.0000028535,0.0000028519,0.0000028497, -0.0000028508,0.0000028562,0.0000028616,0.0000028618,0.0000028549, -0.0000028476,0.0000028435,0.0000028394,0.0000028345,0.0000028298, -0.0000028241,0.0000028167,0.0000028117,0.0000028136,0.0000028208, -0.0000028263,0.0000028278,0.0000028273,0.0000028287,0.0000028336, -0.0000028370,0.0000028357,0.0000028333,0.0000028315,0.0000028255, -0.0000028156,0.0000028120,0.0000028152,0.0000028184,0.0000028193, -0.0000028161,0.0000028088,0.0000028039,0.0000028077,0.0000028188, -0.0000028261,0.0000028253,0.0000028186,0.0000028095,0.0000027997, -0.0000027903,0.0000027879,0.0000027867,0.0000027842,0.0000027792, -0.0000027754,0.0000027770,0.0000027840,0.0000027932,0.0000027947, -0.0000027851,0.0000027782,0.0000027800,0.0000027839,0.0000027904, -0.0000028015,0.0000028082,0.0000028052,0.0000027911,0.0000027747, -0.0000027644,0.0000027598,0.0000027559,0.0000027485,0.0000027375, -0.0000027261,0.0000027198,0.0000027204,0.0000027227,0.0000027237, -0.0000027267,0.0000027291,0.0000027237,0.0000027091,0.0000026930, -0.0000026838,0.0000026856,0.0000026960,0.0000027097,0.0000027194, -0.0000027252,0.0000027316,0.0000027408,0.0000027491,0.0000027517, -0.0000027488,0.0000027388,0.0000027277,0.0000027212,0.0000027202, -0.0000027205,0.0000027200,0.0000027221,0.0000027307,0.0000027457, -0.0000027588,0.0000027654,0.0000027661,0.0000027662,0.0000027724, -0.0000027857,0.0000028017,0.0000028164,0.0000028245,0.0000028216, -0.0000028091,0.0000027956,0.0000027919,0.0000027947,0.0000027997, -0.0000028042,0.0000028102,0.0000028174,0.0000028183,0.0000028081, -0.0000027959,0.0000027905,0.0000027890,0.0000027861,0.0000027837, -0.0000027847,0.0000027887,0.0000027947,0.0000028002,0.0000028023, -0.0000027971,0.0000027841,0.0000027735,0.0000027758,0.0000027918, -0.0000028119,0.0000028268,0.0000028308,0.0000028297,0.0000028313, -0.0000028371,0.0000028442,0.0000028479,0.0000028468,0.0000028441, -0.0000028416,0.0000028381,0.0000028324,0.0000028260,0.0000028227, -0.0000028242,0.0000028296,0.0000028324,0.0000028309,0.0000028232, -0.0000028180,0.0000028175,0.0000028221,0.0000028289,0.0000028373, -0.0000028519,0.0000028692,0.0000028739,0.0000028613,0.0000028408, -0.0000028310,0.0000028370,0.0000028547,0.0000028723,0.0000028858, -0.0000028927,0.0000028909,0.0000028833,0.0000028748,0.0000028684, -0.0000028659,0.0000028663,0.0000028640,0.0000028571,0.0000028515, -0.0000028491,0.0000028473,0.0000028428,0.0000028357,0.0000028287, -0.0000028228,0.0000028181,0.0000028125,0.0000028047,0.0000027997, -0.0000028003,0.0000028061,0.0000028141,0.0000028232,0.0000028322, -0.0000028374,0.0000028356,0.0000028264,0.0000028095,0.0000027916, -0.0000027829,0.0000027845,0.0000027954,0.0000028074,0.0000028136, -0.0000028161,0.0000028175,0.0000028178,0.0000028161,0.0000028113, -0.0000028034,0.0000027947,0.0000027890,0.0000027876,0.0000027889, -0.0000027898,0.0000027869,0.0000027793,0.0000027709,0.0000027651, -0.0000027614,0.0000027581,0.0000027551,0.0000027507,0.0000027432, -0.0000027337,0.0000027262,0.0000027239,0.0000027260,0.0000027330, -0.0000027455,0.0000027613,0.0000027759,0.0000027859,0.0000027898, -0.0000027873,0.0000027756,0.0000027603,0.0000027497,0.0000027469, -0.0000027520,0.0000027611,0.0000027673,0.0000027683,0.0000027685, -0.0000027712,0.0000027784,0.0000027863,0.0000027891,0.0000027868, -0.0000027856,0.0000027909,0.0000027981,0.0000028014,0.0000028004, -0.0000027989,0.0000027983,0.0000027988,0.0000027988,0.0000028012, -0.0000028073,0.0000028158,0.0000028243,0.0000028304,0.0000028342, -0.0000028363,0.0000028379,0.0000028394,0.0000028424,0.0000028447, -0.0000028475,0.0000028476,0.0000028445,0.0000028397,0.0000028313, -0.0000028204,0.0000028086,0.0000027964,0.0000027840,0.0000027730, -0.0000027662,0.0000027650,0.0000027671,0.0000027709,0.0000027743, -0.0000027769,0.0000027806,0.0000027859,0.0000027906,0.0000027948, -0.0000027996,0.0000028041,0.0000028072,0.0000028089,0.0000028105, -0.0000028137,0.0000028197,0.0000028244,0.0000028205,0.0000028111, -0.0000027987,0.0000027910,0.0000027890,0.0000027922,0.0000028024, -0.0000028136,0.0000028184,0.0000028170,0.0000028126,0.0000028088, -0.0000028092,0.0000028131,0.0000028177,0.0000028200,0.0000028203, -0.0000028164,0.0000028082,0.0000027984,0.0000027902,0.0000027857, -0.0000027842,0.0000027840,0.0000027832,0.0000027799,0.0000027750, -0.0000027714,0.0000027687,0.0000027662,0.0000027659,0.0000027669, -0.0000027675,0.0000027670,0.0000027676,0.0000027713,0.0000027760, -0.0000027796,0.0000027808,0.0000027784,0.0000027710,0.0000027597, -0.0000027473,0.0000027375,0.0000027348,0.0000027382,0.0000027448, -0.0000027447,0.0000027335,0.0000027246,0.0000027219,0.0000027159, -0.0000027079,0.0000026997,0.0000026850,0.0000026718,0.0000026726, -0.0000026822,0.0000026907,0.0000027029,0.0000027274,0.0000027571, -0.0000027717,0.0000027682,0.0000027601,0.0000027581,0.0000027600, -0.0000027608,0.0000027652,0.0000027751,0.0000027879,0.0000027954, -0.0000027924,0.0000027827,0.0000027669,0.0000027430,0.0000027255, -0.0000027284,0.0000027469,0.0000027594,0.0000027607,0.0000027782, -0.0000028074,0.0000028224,0.0000028183,0.0000028109,0.0000028042, -0.0000028039,0.0000028085,0.0000028165,0.0000028274,0.0000028436, -0.0000028579,0.0000028620,0.0000028605,0.0000028593,0.0000028606, -0.0000028635,0.0000028588,0.0000028498,0.0000028447,0.0000028367, -0.0000028278,0.0000028298,0.0000028346,0.0000028329,0.0000028249, -0.0000028200,0.0000028140,0.0000028060,0.0000027996,0.0000027980, -0.0000027994,0.0000028024,0.0000028034,0.0000028048,0.0000028067, -0.0000028084,0.0000028095,0.0000028038,0.0000027880,0.0000027703, -0.0000027549,0.0000027481,0.0000027450,0.0000027432,0.0000027418, -0.0000027405,0.0000027404,0.0000027431,0.0000027499,0.0000027573, -0.0000027625,0.0000027645,0.0000027659,0.0000027691,0.0000027719, -0.0000027784,0.0000027881,0.0000027962,0.0000028030,0.0000028090, -0.0000028129,0.0000028159,0.0000028180,0.0000028172,0.0000028144, -0.0000028087,0.0000028015,0.0000028006,0.0000028053,0.0000028095, -0.0000028096,0.0000028072,0.0000028062,0.0000028106,0.0000028141, -0.0000028144,0.0000028142,0.0000028107,0.0000028042,0.0000027974, -0.0000027959,0.0000027974,0.0000028018,0.0000028066,0.0000028165, -0.0000028338,0.0000028463,0.0000028482,0.0000028460,0.0000028469, -0.0000028540,0.0000028643,0.0000028749,0.0000028836,0.0000028918, -0.0000028953,0.0000028933,0.0000028907,0.0000028887,0.0000028865, -0.0000028843,0.0000028840,0.0000028858,0.0000028890,0.0000028918, -0.0000028942,0.0000028946,0.0000028925,0.0000028863,0.0000028750, -0.0000028591,0.0000028420,0.0000028270,0.0000028178,0.0000028162, -0.0000028216,0.0000028374,0.0000028564,0.0000028643,0.0000028613, -0.0000028541,0.0000028535,0.0000028541,0.0000028546,0.0000028539, -0.0000028540,0.0000028609,0.0000028686,0.0000028722,0.0000028712, -0.0000028682,0.0000028643,0.0000028616,0.0000028578,0.0000028524, -0.0000028457,0.0000028387,0.0000028321,0.0000028264,0.0000028221, -0.0000028191,0.0000028169,0.0000028171,0.0000028235,0.0000028331, -0.0000028405,0.0000028425,0.0000028402,0.0000028365,0.0000028355, -0.0000028379,0.0000028410,0.0000028432,0.0000028452,0.0000028483, -0.0000028521,0.0000028548,0.0000028567,0.0000028574,0.0000028559, -0.0000028528,0.0000028480,0.0000028416,0.0000028370,0.0000028403, -0.0000028471,0.0000028576,0.0000028682,0.0000028763,0.0000028796, -0.0000028779,0.0000028713,0.0000028643,0.0000028598,0.0000028571, -0.0000028548,0.0000028527,0.0000028535,0.0000028583,0.0000028653, -0.0000028681,0.0000028633,0.0000028554,0.0000028508,0.0000028478, -0.0000028442,0.0000028400,0.0000028331,0.0000028231,0.0000028155, -0.0000028157,0.0000028240,0.0000028322,0.0000028345,0.0000028330, -0.0000028317,0.0000028336,0.0000028365,0.0000028367,0.0000028345, -0.0000028313,0.0000028255,0.0000028168,0.0000028106,0.0000028102, -0.0000028120,0.0000028145,0.0000028129,0.0000028079,0.0000028056, -0.0000028102,0.0000028203,0.0000028282,0.0000028284,0.0000028225, -0.0000028141,0.0000028063,0.0000027966,0.0000027910,0.0000027895, -0.0000027867,0.0000027807,0.0000027728,0.0000027723,0.0000027795, -0.0000027900,0.0000027970,0.0000027928,0.0000027825,0.0000027801, -0.0000027850,0.0000027896,0.0000027975,0.0000028063,0.0000028094, -0.0000028046,0.0000027889,0.0000027715,0.0000027599,0.0000027533, -0.0000027465,0.0000027362,0.0000027251,0.0000027186,0.0000027177, -0.0000027186,0.0000027187,0.0000027213,0.0000027269,0.0000027278, -0.0000027179,0.0000027018,0.0000026888,0.0000026875,0.0000026946, -0.0000027063,0.0000027164,0.0000027225,0.0000027272,0.0000027338, -0.0000027409,0.0000027444,0.0000027443,0.0000027391,0.0000027299, -0.0000027227,0.0000027212,0.0000027228,0.0000027230,0.0000027223, -0.0000027253,0.0000027362,0.0000027520,0.0000027649,0.0000027700, -0.0000027687,0.0000027687,0.0000027767,0.0000027914,0.0000028078, -0.0000028218,0.0000028277,0.0000028235,0.0000028097,0.0000027987, -0.0000027968,0.0000028007,0.0000028048,0.0000028072,0.0000028106, -0.0000028135,0.0000028091,0.0000027965,0.0000027866,0.0000027839, -0.0000027824,0.0000027803,0.0000027813,0.0000027859,0.0000027939, -0.0000028019,0.0000028054,0.0000028023,0.0000027907,0.0000027800, -0.0000027826,0.0000027993,0.0000028200,0.0000028352,0.0000028431, -0.0000028466,0.0000028494,0.0000028524,0.0000028554,0.0000028569, -0.0000028549,0.0000028494,0.0000028436,0.0000028391,0.0000028356, -0.0000028322,0.0000028291,0.0000028268,0.0000028259,0.0000028257, -0.0000028226,0.0000028175,0.0000028150,0.0000028191,0.0000028267, -0.0000028313,0.0000028335,0.0000028421,0.0000028606,0.0000028746, -0.0000028730,0.0000028562,0.0000028356,0.0000028269,0.0000028341, -0.0000028515,0.0000028696,0.0000028852,0.0000028941,0.0000028931, -0.0000028867,0.0000028804,0.0000028767,0.0000028755,0.0000028764, -0.0000028749,0.0000028687,0.0000028640,0.0000028630,0.0000028622, -0.0000028570,0.0000028483,0.0000028404,0.0000028345,0.0000028300, -0.0000028251,0.0000028173,0.0000028105,0.0000028096,0.0000028143, -0.0000028205,0.0000028268,0.0000028332,0.0000028377,0.0000028376, -0.0000028318,0.0000028188,0.0000028015,0.0000027889,0.0000027861, -0.0000027897,0.0000027972,0.0000028025,0.0000028049,0.0000028077, -0.0000028113,0.0000028145,0.0000028147,0.0000028122,0.0000028074, -0.0000028005,0.0000027939,0.0000027905,0.0000027908,0.0000027913, -0.0000027887,0.0000027820,0.0000027748,0.0000027708,0.0000027686, -0.0000027659,0.0000027627,0.0000027586,0.0000027519,0.0000027432, -0.0000027360,0.0000027327,0.0000027332,0.0000027392,0.0000027526, -0.0000027696,0.0000027828,0.0000027887,0.0000027893,0.0000027827, -0.0000027693,0.0000027566,0.0000027493,0.0000027486,0.0000027571, -0.0000027672,0.0000027698,0.0000027680,0.0000027690,0.0000027751, -0.0000027846,0.0000027909,0.0000027911,0.0000027911,0.0000027948, -0.0000028008,0.0000028054,0.0000028065,0.0000028068,0.0000028069, -0.0000028067,0.0000028067,0.0000028069,0.0000028107,0.0000028198, -0.0000028319,0.0000028443,0.0000028545,0.0000028611,0.0000028641, -0.0000028671,0.0000028690,0.0000028693,0.0000028698,0.0000028696, -0.0000028682,0.0000028633,0.0000028576,0.0000028512,0.0000028429, -0.0000028332,0.0000028216,0.0000028085,0.0000027965,0.0000027888, -0.0000027869,0.0000027882,0.0000027909,0.0000027941,0.0000027969, -0.0000028003,0.0000028051,0.0000028092,0.0000028129,0.0000028175, -0.0000028216,0.0000028242,0.0000028255,0.0000028267,0.0000028280, -0.0000028293,0.0000028266,0.0000028173,0.0000028019,0.0000027914, -0.0000027879,0.0000027884,0.0000027947,0.0000028067,0.0000028167, -0.0000028197,0.0000028183,0.0000028156,0.0000028149,0.0000028179, -0.0000028238,0.0000028290,0.0000028310,0.0000028315,0.0000028284, -0.0000028211,0.0000028114,0.0000028034,0.0000027995,0.0000027981, -0.0000027961,0.0000027920,0.0000027852,0.0000027771,0.0000027715, -0.0000027704,0.0000027722,0.0000027771,0.0000027815,0.0000027822, -0.0000027782,0.0000027728,0.0000027713,0.0000027735,0.0000027761, -0.0000027766,0.0000027748,0.0000027705,0.0000027636,0.0000027544, -0.0000027454,0.0000027405,0.0000027417,0.0000027473,0.0000027507, -0.0000027438,0.0000027289,0.0000027208,0.0000027163,0.0000027081, -0.0000027012,0.0000026923,0.0000026786,0.0000026743,0.0000026815, -0.0000026913,0.0000027011,0.0000027216,0.0000027525,0.0000027724, -0.0000027706,0.0000027602,0.0000027574,0.0000027594,0.0000027620, -0.0000027677,0.0000027775,0.0000027882,0.0000027944,0.0000027908, -0.0000027791,0.0000027606,0.0000027385,0.0000027285,0.0000027360, -0.0000027521,0.0000027605,0.0000027638,0.0000027774,0.0000028041, -0.0000028189,0.0000028178,0.0000028085,0.0000028031,0.0000028023, -0.0000028061,0.0000028118,0.0000028235,0.0000028401,0.0000028559, -0.0000028636,0.0000028608,0.0000028556,0.0000028522,0.0000028532, -0.0000028546,0.0000028531,0.0000028446,0.0000028370,0.0000028332, -0.0000028284,0.0000028325,0.0000028328,0.0000028238,0.0000028162, -0.0000028151,0.0000028122,0.0000028049,0.0000027972,0.0000027962, -0.0000028011,0.0000028062,0.0000028069,0.0000028086,0.0000028134, -0.0000028176,0.0000028176,0.0000028108,0.0000027964,0.0000027803, -0.0000027659,0.0000027605,0.0000027579,0.0000027567,0.0000027562, -0.0000027562,0.0000027567,0.0000027586,0.0000027639,0.0000027719, -0.0000027786,0.0000027817,0.0000027829,0.0000027846,0.0000027851, -0.0000027854,0.0000027883,0.0000027927,0.0000027961,0.0000027987, -0.0000028029,0.0000028073,0.0000028115,0.0000028139,0.0000028137, -0.0000028111,0.0000028074,0.0000028018,0.0000028021,0.0000028067, -0.0000028111,0.0000028118,0.0000028118,0.0000028134,0.0000028165, -0.0000028169,0.0000028175,0.0000028200,0.0000028198,0.0000028138, -0.0000028062,0.0000028001,0.0000027957,0.0000027961,0.0000027996, -0.0000028039,0.0000028141,0.0000028322,0.0000028454,0.0000028461, -0.0000028426,0.0000028441,0.0000028545,0.0000028679,0.0000028789, -0.0000028872,0.0000028909,0.0000028914,0.0000028918,0.0000028902, -0.0000028876,0.0000028860,0.0000028855,0.0000028870,0.0000028890, -0.0000028902,0.0000028904,0.0000028897,0.0000028878,0.0000028816, -0.0000028732,0.0000028617,0.0000028468,0.0000028309,0.0000028189, -0.0000028154,0.0000028192,0.0000028336,0.0000028547,0.0000028663, -0.0000028666,0.0000028619,0.0000028617,0.0000028621,0.0000028613, -0.0000028602,0.0000028599,0.0000028642,0.0000028690,0.0000028719, -0.0000028714,0.0000028680,0.0000028635,0.0000028620,0.0000028605, -0.0000028556,0.0000028471,0.0000028390,0.0000028314,0.0000028259, -0.0000028220,0.0000028195,0.0000028183,0.0000028191,0.0000028259, -0.0000028339,0.0000028395,0.0000028405,0.0000028387,0.0000028371, -0.0000028392,0.0000028430,0.0000028455,0.0000028460,0.0000028462, -0.0000028476,0.0000028501,0.0000028526,0.0000028555,0.0000028571, -0.0000028563,0.0000028538,0.0000028494,0.0000028433,0.0000028394, -0.0000028412,0.0000028494,0.0000028613,0.0000028731,0.0000028814, -0.0000028843,0.0000028824,0.0000028749,0.0000028670,0.0000028623, -0.0000028597,0.0000028572,0.0000028551,0.0000028549,0.0000028584, -0.0000028650,0.0000028687,0.0000028659,0.0000028588,0.0000028539, -0.0000028511,0.0000028482,0.0000028446,0.0000028375,0.0000028260, -0.0000028161,0.0000028140,0.0000028225,0.0000028336,0.0000028384, -0.0000028375,0.0000028343,0.0000028333,0.0000028347,0.0000028361, -0.0000028355,0.0000028319,0.0000028248,0.0000028171,0.0000028109, -0.0000028077,0.0000028070,0.0000028085,0.0000028077,0.0000028051, -0.0000028066,0.0000028137,0.0000028232,0.0000028304,0.0000028313, -0.0000028263,0.0000028195,0.0000028126,0.0000028055,0.0000027973, -0.0000027948,0.0000027917,0.0000027852,0.0000027751,0.0000027698, -0.0000027743,0.0000027859,0.0000027969,0.0000027977,0.0000027903, -0.0000027822,0.0000027847,0.0000027918,0.0000027966,0.0000028018, -0.0000028067,0.0000028078,0.0000028023,0.0000027881,0.0000027701, -0.0000027547,0.0000027444,0.0000027348,0.0000027242,0.0000027180, -0.0000027173,0.0000027175,0.0000027155,0.0000027162,0.0000027232, -0.0000027286,0.0000027262,0.0000027146,0.0000026996,0.0000026917, -0.0000026953,0.0000027044,0.0000027131,0.0000027194,0.0000027243, -0.0000027306,0.0000027381,0.0000027425,0.0000027417,0.0000027391, -0.0000027319,0.0000027243,0.0000027223,0.0000027251,0.0000027283, -0.0000027269,0.0000027259,0.0000027302,0.0000027428,0.0000027588, -0.0000027708,0.0000027734,0.0000027706,0.0000027707,0.0000027795, -0.0000027948,0.0000028116,0.0000028254,0.0000028296,0.0000028248, -0.0000028119,0.0000028023,0.0000028015,0.0000028048,0.0000028067, -0.0000028070,0.0000028085,0.0000028085,0.0000028001,0.0000027863, -0.0000027788,0.0000027776,0.0000027769,0.0000027776,0.0000027827, -0.0000027920,0.0000028027,0.0000028089,0.0000028065,0.0000027966, -0.0000027880,0.0000027907,0.0000028043,0.0000028223,0.0000028393, -0.0000028531,0.0000028622,0.0000028666,0.0000028683,0.0000028695, -0.0000028695,0.0000028663,0.0000028578,0.0000028471,0.0000028393, -0.0000028364,0.0000028360,0.0000028352,0.0000028324,0.0000028271, -0.0000028201,0.0000028141,0.0000028119,0.0000028140,0.0000028207, -0.0000028297,0.0000028338,0.0000028342,0.0000028360,0.0000028496, -0.0000028683,0.0000028755,0.0000028689,0.0000028503,0.0000028318, -0.0000028256,0.0000028331,0.0000028498,0.0000028682,0.0000028852, -0.0000028951,0.0000028947,0.0000028895,0.0000028850,0.0000028834, -0.0000028833,0.0000028844,0.0000028826,0.0000028770,0.0000028720, -0.0000028706,0.0000028701,0.0000028659,0.0000028581,0.0000028509, -0.0000028457,0.0000028416,0.0000028374,0.0000028308,0.0000028231, -0.0000028189,0.0000028188,0.0000028204,0.0000028241,0.0000028295, -0.0000028348,0.0000028367,0.0000028344,0.0000028263,0.0000028141, -0.0000028018,0.0000027941,0.0000027920,0.0000027943,0.0000027969, -0.0000027970,0.0000027971,0.0000027993,0.0000028028,0.0000028060, -0.0000028072,0.0000028070,0.0000028053,0.0000028013,0.0000027961, -0.0000027925,0.0000027925,0.0000027937,0.0000027919,0.0000027845, -0.0000027759,0.0000027727,0.0000027735,0.0000027741,0.0000027721, -0.0000027682,0.0000027625,0.0000027547,0.0000027481,0.0000027441, -0.0000027428,0.0000027468,0.0000027595,0.0000027755,0.0000027862, -0.0000027892,0.0000027882,0.0000027792,0.0000027665,0.0000027561, -0.0000027506,0.0000027530,0.0000027645,0.0000027719,0.0000027698, -0.0000027674,0.0000027714,0.0000027802,0.0000027887,0.0000027925, -0.0000027946,0.0000028004,0.0000028060,0.0000028088,0.0000028097, -0.0000028099,0.0000028121,0.0000028147,0.0000028169,0.0000028184, -0.0000028201,0.0000028251,0.0000028361,0.0000028493,0.0000028619, -0.0000028730,0.0000028801,0.0000028834,0.0000028869,0.0000028895, -0.0000028890,0.0000028881,0.0000028855,0.0000028821,0.0000028759, -0.0000028686,0.0000028634,0.0000028577,0.0000028505,0.0000028409, -0.0000028288,0.0000028168,0.0000028085,0.0000028059,0.0000028066, -0.0000028087,0.0000028115,0.0000028142,0.0000028176,0.0000028218, -0.0000028254,0.0000028286,0.0000028325,0.0000028356,0.0000028365, -0.0000028363,0.0000028347,0.0000028320,0.0000028295,0.0000028223, -0.0000028085,0.0000027943,0.0000027869,0.0000027854,0.0000027872, -0.0000027964,0.0000028097,0.0000028192,0.0000028227,0.0000028230, -0.0000028230,0.0000028244,0.0000028286,0.0000028354,0.0000028417, -0.0000028445,0.0000028455,0.0000028434,0.0000028368,0.0000028283, -0.0000028208,0.0000028167,0.0000028157,0.0000028149,0.0000028114, -0.0000028037,0.0000027918,0.0000027811,0.0000027770,0.0000027784, -0.0000027847,0.0000027909,0.0000027922,0.0000027863,0.0000027762, -0.0000027703,0.0000027706,0.0000027723,0.0000027723,0.0000027704, -0.0000027680,0.0000027647,0.0000027590,0.0000027519,0.0000027462, -0.0000027454,0.0000027486,0.0000027517,0.0000027491,0.0000027348, -0.0000027207,0.0000027153,0.0000027089,0.0000027014,0.0000026961, -0.0000026861,0.0000026775,0.0000026805,0.0000026908,0.0000027003, -0.0000027162,0.0000027453,0.0000027696,0.0000027720,0.0000027604, -0.0000027551,0.0000027579,0.0000027629,0.0000027710,0.0000027809, -0.0000027886,0.0000027914,0.0000027865,0.0000027713,0.0000027519, -0.0000027366,0.0000027342,0.0000027472,0.0000027580,0.0000027612, -0.0000027669,0.0000027813,0.0000028026,0.0000028161,0.0000028156, -0.0000028077,0.0000028000,0.0000027993,0.0000028032,0.0000028089, -0.0000028183,0.0000028352,0.0000028515,0.0000028596,0.0000028616, -0.0000028547,0.0000028448,0.0000028416,0.0000028447,0.0000028454, -0.0000028463,0.0000028395,0.0000028331,0.0000028341,0.0000028321, -0.0000028301,0.0000028222,0.0000028108,0.0000028075,0.0000028072, -0.0000028048,0.0000027980,0.0000027933,0.0000027956,0.0000028032, -0.0000028084,0.0000028085,0.0000028097,0.0000028163,0.0000028221, -0.0000028217,0.0000028164,0.0000028066,0.0000027950,0.0000027847, -0.0000027794,0.0000027762,0.0000027752,0.0000027744,0.0000027751, -0.0000027778,0.0000027802,0.0000027843,0.0000027886,0.0000027946, -0.0000027987,0.0000027996,0.0000027982,0.0000027946,0.0000027918, -0.0000027911,0.0000027914,0.0000027927,0.0000027932,0.0000027953, -0.0000028008,0.0000028059,0.0000028101,0.0000028125,0.0000028131, -0.0000028137,0.0000028108,0.0000028083,0.0000028084,0.0000028125, -0.0000028145,0.0000028141,0.0000028142,0.0000028158,0.0000028166, -0.0000028154,0.0000028186,0.0000028230,0.0000028241,0.0000028204, -0.0000028134,0.0000028056,0.0000027982,0.0000027953,0.0000027963, -0.0000027994,0.0000028031,0.0000028137,0.0000028307,0.0000028428, -0.0000028456,0.0000028464,0.0000028507,0.0000028568,0.0000028633, -0.0000028708,0.0000028774,0.0000028826,0.0000028852,0.0000028858, -0.0000028855,0.0000028862,0.0000028875,0.0000028904,0.0000028936, -0.0000028955,0.0000028958,0.0000028931,0.0000028881,0.0000028813, -0.0000028729,0.0000028633,0.0000028495,0.0000028342,0.0000028209, -0.0000028150,0.0000028172,0.0000028289,0.0000028500,0.0000028672, -0.0000028718,0.0000028702,0.0000028703,0.0000028700,0.0000028672, -0.0000028638,0.0000028618,0.0000028636,0.0000028668,0.0000028707, -0.0000028727,0.0000028708,0.0000028673,0.0000028671,0.0000028668, -0.0000028617,0.0000028523,0.0000028443,0.0000028361,0.0000028306, -0.0000028271,0.0000028259,0.0000028240,0.0000028227,0.0000028272, -0.0000028328,0.0000028363,0.0000028374,0.0000028369,0.0000028368, -0.0000028394,0.0000028430,0.0000028445,0.0000028443,0.0000028439, -0.0000028446,0.0000028470,0.0000028511,0.0000028547,0.0000028562, -0.0000028548,0.0000028522,0.0000028478,0.0000028423,0.0000028391, -0.0000028462,0.0000028556,0.0000028678,0.0000028798,0.0000028879, -0.0000028899,0.0000028872,0.0000028786,0.0000028692,0.0000028638, -0.0000028611,0.0000028588,0.0000028570,0.0000028574,0.0000028601, -0.0000028651,0.0000028686,0.0000028668,0.0000028608,0.0000028565, -0.0000028548,0.0000028527,0.0000028488,0.0000028406,0.0000028274, -0.0000028155,0.0000028122,0.0000028188,0.0000028312,0.0000028395, -0.0000028402,0.0000028362,0.0000028324,0.0000028323,0.0000028341, -0.0000028353,0.0000028326,0.0000028246,0.0000028164,0.0000028109, -0.0000028071,0.0000028039,0.0000028025,0.0000028016,0.0000028010, -0.0000028063,0.0000028170,0.0000028271,0.0000028323,0.0000028330, -0.0000028291,0.0000028233,0.0000028187,0.0000028143,0.0000028072, -0.0000028028,0.0000028003,0.0000027941,0.0000027822,0.0000027713, -0.0000027697,0.0000027787,0.0000027932,0.0000027982,0.0000027951, -0.0000027882,0.0000027853,0.0000027914,0.0000027978,0.0000028018, -0.0000028028,0.0000028039,0.0000028041,0.0000028005,0.0000027884, -0.0000027676,0.0000027478,0.0000027349,0.0000027252,0.0000027193, -0.0000027189,0.0000027195,0.0000027166,0.0000027133,0.0000027180, -0.0000027284,0.0000027329,0.0000027287,0.0000027166,0.0000027040, -0.0000027011,0.0000027044,0.0000027099,0.0000027152,0.0000027203, -0.0000027262,0.0000027337,0.0000027408,0.0000027427,0.0000027409, -0.0000027359,0.0000027280,0.0000027231,0.0000027255,0.0000027314, -0.0000027333,0.0000027313,0.0000027308,0.0000027372,0.0000027501, -0.0000027652,0.0000027753,0.0000027757,0.0000027711,0.0000027710, -0.0000027801,0.0000027957,0.0000028131,0.0000028271,0.0000028313, -0.0000028276,0.0000028146,0.0000028044,0.0000028035,0.0000028059, -0.0000028063,0.0000028057,0.0000028062,0.0000028040,0.0000027921, -0.0000027778,0.0000027723,0.0000027721,0.0000027728,0.0000027779, -0.0000027890,0.0000028025,0.0000028116,0.0000028107,0.0000028017, -0.0000027945,0.0000027974,0.0000028083,0.0000028224,0.0000028399, -0.0000028597,0.0000028746,0.0000028810,0.0000028828,0.0000028841, -0.0000028841,0.0000028803,0.0000028698,0.0000028549,0.0000028421, -0.0000028373,0.0000028384,0.0000028403,0.0000028391,0.0000028325, -0.0000028221,0.0000028125,0.0000028095,0.0000028141,0.0000028253, -0.0000028347,0.0000028370,0.0000028348,0.0000028345,0.0000028424, -0.0000028592,0.0000028722,0.0000028730,0.0000028625,0.0000028446, -0.0000028293,0.0000028262,0.0000028347,0.0000028498,0.0000028672, -0.0000028847,0.0000028951,0.0000028955,0.0000028914,0.0000028881, -0.0000028873,0.0000028877,0.0000028891,0.0000028879,0.0000028829, -0.0000028780,0.0000028760,0.0000028761,0.0000028742,0.0000028690, -0.0000028632,0.0000028580,0.0000028527,0.0000028475,0.0000028413, -0.0000028343,0.0000028280,0.0000028232,0.0000028198,0.0000028191, -0.0000028214,0.0000028253,0.0000028281,0.0000028280,0.0000028253, -0.0000028191,0.0000028114,0.0000028049,0.0000027999,0.0000027977, -0.0000027973,0.0000027960,0.0000027937,0.0000027930,0.0000027943, -0.0000027955,0.0000027962,0.0000027961,0.0000027960,0.0000027963, -0.0000027954,0.0000027934,0.0000027915,0.0000027920,0.0000027952, -0.0000027966,0.0000027900,0.0000027791,0.0000027740,0.0000027762, -0.0000027806,0.0000027815,0.0000027793,0.0000027742,0.0000027673, -0.0000027612,0.0000027568,0.0000027536,0.0000027551,0.0000027656, -0.0000027797,0.0000027885,0.0000027904,0.0000027878,0.0000027773, -0.0000027661,0.0000027576,0.0000027541,0.0000027605,0.0000027720, -0.0000027738,0.0000027688,0.0000027677,0.0000027746,0.0000027829, -0.0000027888,0.0000027930,0.0000028012,0.0000028104,0.0000028142, -0.0000028152,0.0000028145,0.0000028150,0.0000028192,0.0000028251, -0.0000028318,0.0000028361,0.0000028385,0.0000028420,0.0000028508, -0.0000028615,0.0000028712,0.0000028803,0.0000028870,0.0000028911, -0.0000028944,0.0000028981,0.0000029006,0.0000029002,0.0000028975, -0.0000028926,0.0000028847,0.0000028769,0.0000028709,0.0000028671, -0.0000028621,0.0000028542,0.0000028433,0.0000028311,0.0000028218, -0.0000028182,0.0000028184,0.0000028201,0.0000028222,0.0000028244, -0.0000028271,0.0000028304,0.0000028331,0.0000028355,0.0000028385, -0.0000028397,0.0000028391,0.0000028375,0.0000028338,0.0000028288, -0.0000028221,0.0000028124,0.0000028002,0.0000027900,0.0000027844, -0.0000027830,0.0000027861,0.0000027980,0.0000028124,0.0000028223, -0.0000028278,0.0000028310,0.0000028332,0.0000028351,0.0000028383, -0.0000028440,0.0000028499,0.0000028529,0.0000028525,0.0000028496, -0.0000028427,0.0000028342,0.0000028263,0.0000028212,0.0000028198, -0.0000028209,0.0000028225,0.0000028200,0.0000028126,0.0000028009, -0.0000027912,0.0000027871,0.0000027895,0.0000027942,0.0000027950, -0.0000027892,0.0000027767,0.0000027679,0.0000027667,0.0000027683, -0.0000027680,0.0000027668,0.0000027659,0.0000027649,0.0000027622, -0.0000027578,0.0000027533,0.0000027507,0.0000027510,0.0000027518, -0.0000027495,0.0000027381,0.0000027223,0.0000027143,0.0000027098, -0.0000027023,0.0000026971,0.0000026914,0.0000026821,0.0000026808, -0.0000026893,0.0000026986,0.0000027113,0.0000027379,0.0000027652, -0.0000027710,0.0000027607,0.0000027531,0.0000027550,0.0000027631, -0.0000027741,0.0000027844,0.0000027894,0.0000027894,0.0000027798, -0.0000027613,0.0000027443,0.0000027383,0.0000027434,0.0000027593, -0.0000027654,0.0000027639,0.0000027694,0.0000027841,0.0000028024, -0.0000028128,0.0000028122,0.0000028045,0.0000027970,0.0000027950, -0.0000027981,0.0000028052,0.0000028162,0.0000028295,0.0000028439, -0.0000028545,0.0000028576,0.0000028544,0.0000028457,0.0000028344, -0.0000028338,0.0000028389,0.0000028418,0.0000028439,0.0000028396, -0.0000028348,0.0000028348,0.0000028300,0.0000028161,0.0000028062, -0.0000027986,0.0000027952,0.0000027938,0.0000027931,0.0000027908, -0.0000027911,0.0000027959,0.0000028038,0.0000028087,0.0000028090, -0.0000028097,0.0000028170,0.0000028242,0.0000028241,0.0000028209, -0.0000028168,0.0000028082,0.0000027974,0.0000027877,0.0000027819, -0.0000027809,0.0000027804,0.0000027800,0.0000027818,0.0000027843, -0.0000027876,0.0000027911,0.0000027964,0.0000028013,0.0000028044, -0.0000028047,0.0000028001,0.0000027963,0.0000027966,0.0000027964, -0.0000027969,0.0000027964,0.0000027961,0.0000027984,0.0000028032, -0.0000028083,0.0000028132,0.0000028184,0.0000028230,0.0000028254, -0.0000028244,0.0000028228,0.0000028203,0.0000028214,0.0000028216, -0.0000028204,0.0000028191,0.0000028173,0.0000028139,0.0000028140, -0.0000028185,0.0000028236,0.0000028250,0.0000028229,0.0000028168, -0.0000028091,0.0000028036,0.0000028011,0.0000027998,0.0000027996, -0.0000027996,0.0000028024,0.0000028124,0.0000028283,0.0000028414, -0.0000028491,0.0000028544,0.0000028576,0.0000028586,0.0000028606, -0.0000028639,0.0000028665,0.0000028689,0.0000028711,0.0000028743, -0.0000028786,0.0000028839,0.0000028914,0.0000028972,0.0000029026, -0.0000029036,0.0000029005,0.0000028943,0.0000028857,0.0000028765, -0.0000028657,0.0000028508,0.0000028365,0.0000028233,0.0000028155, -0.0000028164,0.0000028246,0.0000028433,0.0000028655,0.0000028753, -0.0000028781,0.0000028785,0.0000028785,0.0000028733,0.0000028662, -0.0000028608,0.0000028600,0.0000028631,0.0000028691,0.0000028744, -0.0000028759,0.0000028763,0.0000028774,0.0000028762,0.0000028685, -0.0000028576,0.0000028489,0.0000028412,0.0000028388,0.0000028378, -0.0000028359,0.0000028301,0.0000028260,0.0000028295,0.0000028342, -0.0000028365,0.0000028373,0.0000028367,0.0000028363,0.0000028375, -0.0000028396,0.0000028410,0.0000028421,0.0000028428,0.0000028445, -0.0000028484,0.0000028539,0.0000028581,0.0000028582,0.0000028552, -0.0000028518,0.0000028480,0.0000028439,0.0000028426,0.0000028544, -0.0000028636,0.0000028753,0.0000028871,0.0000028953,0.0000028974, -0.0000028945,0.0000028855,0.0000028744,0.0000028674,0.0000028640, -0.0000028617,0.0000028603,0.0000028607,0.0000028630,0.0000028665, -0.0000028685,0.0000028666,0.0000028611,0.0000028578,0.0000028574, -0.0000028563,0.0000028520,0.0000028430,0.0000028286,0.0000028147, -0.0000028104,0.0000028151,0.0000028281,0.0000028387,0.0000028409, -0.0000028376,0.0000028322,0.0000028301,0.0000028318,0.0000028335, -0.0000028324,0.0000028247,0.0000028152,0.0000028099,0.0000028069, -0.0000028033,0.0000027990,0.0000027950,0.0000027950,0.0000028042, -0.0000028188,0.0000028297,0.0000028335,0.0000028335,0.0000028310, -0.0000028261,0.0000028235,0.0000028215,0.0000028172,0.0000028099, -0.0000028079,0.0000028030,0.0000027921,0.0000027768,0.0000027692, -0.0000027707,0.0000027852,0.0000027978,0.0000027977,0.0000027930, -0.0000027888,0.0000027909,0.0000027983,0.0000028046,0.0000028051, -0.0000028008,0.0000027988,0.0000027993,0.0000027982,0.0000027873, -0.0000027639,0.0000027424,0.0000027301,0.0000027243,0.0000027230, -0.0000027231,0.0000027206,0.0000027148,0.0000027148,0.0000027247, -0.0000027360,0.0000027393,0.0000027347,0.0000027227,0.0000027121, -0.0000027088,0.0000027098,0.0000027119,0.0000027168,0.0000027238, -0.0000027313,0.0000027385,0.0000027431,0.0000027424,0.0000027407, -0.0000027342,0.0000027269,0.0000027255,0.0000027313,0.0000027366, -0.0000027368,0.0000027352,0.0000027369,0.0000027451,0.0000027573, -0.0000027702,0.0000027771,0.0000027753,0.0000027700,0.0000027696, -0.0000027785,0.0000027943,0.0000028125,0.0000028279,0.0000028345, -0.0000028306,0.0000028165,0.0000028052,0.0000028040,0.0000028056, -0.0000028055,0.0000028054,0.0000028056,0.0000028006,0.0000027854, -0.0000027715,0.0000027675,0.0000027675,0.0000027708,0.0000027819, -0.0000027994,0.0000028130,0.0000028151,0.0000028067,0.0000027995, -0.0000028021,0.0000028113,0.0000028222,0.0000028387,0.0000028620, -0.0000028825,0.0000028918,0.0000028937,0.0000028963,0.0000028989, -0.0000028957,0.0000028841,0.0000028663,0.0000028496,0.0000028418, -0.0000028430,0.0000028471,0.0000028473,0.0000028402,0.0000028277, -0.0000028171,0.0000028136,0.0000028189,0.0000028307,0.0000028404, -0.0000028420,0.0000028379,0.0000028352,0.0000028394,0.0000028532, -0.0000028669,0.0000028711,0.0000028670,0.0000028551,0.0000028397, -0.0000028295,0.0000028296,0.0000028383,0.0000028516,0.0000028672, -0.0000028833,0.0000028940,0.0000028960,0.0000028936,0.0000028913, -0.0000028897,0.0000028897,0.0000028916,0.0000028924,0.0000028893, -0.0000028855,0.0000028835,0.0000028835,0.0000028833,0.0000028798, -0.0000028746,0.0000028691,0.0000028625,0.0000028552,0.0000028485, -0.0000028426,0.0000028375,0.0000028315,0.0000028244,0.0000028188, -0.0000028167,0.0000028154,0.0000028155,0.0000028150,0.0000028136, -0.0000028116,0.0000028087,0.0000028059,0.0000028027,0.0000027996, -0.0000027977,0.0000027956,0.0000027930,0.0000027901,0.0000027900, -0.0000027909,0.0000027905,0.0000027886,0.0000027856,0.0000027838, -0.0000027842,0.0000027853,0.0000027869,0.0000027871,0.0000027884, -0.0000027943,0.0000027992,0.0000027979,0.0000027881,0.0000027792, -0.0000027788,0.0000027838,0.0000027890,0.0000027894,0.0000027858, -0.0000027799,0.0000027742,0.0000027695,0.0000027651,0.0000027641, -0.0000027715,0.0000027835,0.0000027914,0.0000027929,0.0000027883, -0.0000027768,0.0000027669,0.0000027604,0.0000027593,0.0000027695, -0.0000027771,0.0000027743,0.0000027691,0.0000027700,0.0000027767, -0.0000027827,0.0000027863,0.0000027948,0.0000028084,0.0000028171, -0.0000028206,0.0000028222,0.0000028222,0.0000028243,0.0000028309, -0.0000028404,0.0000028507,0.0000028569,0.0000028581,0.0000028585, -0.0000028623,0.0000028689,0.0000028754,0.0000028813,0.0000028868, -0.0000028916,0.0000028942,0.0000028983,0.0000029032,0.0000029044, -0.0000029036,0.0000028986,0.0000028903,0.0000028815,0.0000028748, -0.0000028716,0.0000028677,0.0000028605,0.0000028498,0.0000028374, -0.0000028273,0.0000028227,0.0000028225,0.0000028231,0.0000028242, -0.0000028258,0.0000028276,0.0000028300,0.0000028319,0.0000028330, -0.0000028350,0.0000028358,0.0000028346,0.0000028312,0.0000028263, -0.0000028200,0.0000028122,0.0000028033,0.0000027947,0.0000027882, -0.0000027836,0.0000027822,0.0000027862,0.0000028002,0.0000028157, -0.0000028265,0.0000028344,0.0000028403,0.0000028436,0.0000028446, -0.0000028453,0.0000028478,0.0000028516,0.0000028535,0.0000028519, -0.0000028479,0.0000028400,0.0000028301,0.0000028213,0.0000028152, -0.0000028133,0.0000028147,0.0000028184,0.0000028219,0.0000028212, -0.0000028162,0.0000028075,0.0000027980,0.0000027936,0.0000027938, -0.0000027942,0.0000027871,0.0000027735,0.0000027637,0.0000027620, -0.0000027634,0.0000027645,0.0000027647,0.0000027653,0.0000027654, -0.0000027648,0.0000027632,0.0000027606,0.0000027575,0.0000027551, -0.0000027534,0.0000027501,0.0000027394,0.0000027239,0.0000027144, -0.0000027105,0.0000027042,0.0000026979,0.0000026939,0.0000026862, -0.0000026830,0.0000026884,0.0000026966,0.0000027062,0.0000027300, -0.0000027594,0.0000027686,0.0000027607,0.0000027522,0.0000027520, -0.0000027613,0.0000027754,0.0000027865,0.0000027907,0.0000027880, -0.0000027737,0.0000027533,0.0000027404,0.0000027401,0.0000027522, -0.0000027697,0.0000027724,0.0000027686,0.0000027728,0.0000027844, -0.0000028001,0.0000028079,0.0000028070,0.0000028009,0.0000027922, -0.0000027886,0.0000027915,0.0000027990,0.0000028126,0.0000028273, -0.0000028382,0.0000028453,0.0000028509,0.0000028512,0.0000028447, -0.0000028375,0.0000028327,0.0000028348,0.0000028412,0.0000028464, -0.0000028463,0.0000028413,0.0000028322,0.0000028233,0.0000028129, -0.0000028013,0.0000027930,0.0000027870,0.0000027797,0.0000027806, -0.0000027833,0.0000027847,0.0000027868,0.0000027923,0.0000028012, -0.0000028066,0.0000028080,0.0000028084,0.0000028159,0.0000028247, -0.0000028249,0.0000028240,0.0000028238,0.0000028158,0.0000028045, -0.0000027922,0.0000027853,0.0000027838,0.0000027846,0.0000027845, -0.0000027849,0.0000027854,0.0000027863,0.0000027870,0.0000027911, -0.0000027977,0.0000028033,0.0000028067,0.0000028056,0.0000028028, -0.0000028043,0.0000028052,0.0000028057,0.0000028035,0.0000028019, -0.0000028033,0.0000028073,0.0000028131,0.0000028204,0.0000028274, -0.0000028317,0.0000028347,0.0000028350,0.0000028336,0.0000028310, -0.0000028282,0.0000028291,0.0000028303,0.0000028300,0.0000028270, -0.0000028224,0.0000028172,0.0000028182,0.0000028226,0.0000028263, -0.0000028265,0.0000028235,0.0000028169,0.0000028107,0.0000028086, -0.0000028091,0.0000028086,0.0000028050,0.0000028014,0.0000028005, -0.0000028026,0.0000028119,0.0000028271,0.0000028406,0.0000028494, -0.0000028548,0.0000028586,0.0000028616,0.0000028641,0.0000028643, -0.0000028626,0.0000028608,0.0000028615,0.0000028655,0.0000028742, -0.0000028864,0.0000028969,0.0000029049,0.0000029063,0.0000029056, -0.0000029014,0.0000028934,0.0000028843,0.0000028713,0.0000028547, -0.0000028387,0.0000028256,0.0000028171,0.0000028165,0.0000028216, -0.0000028357,0.0000028588,0.0000028764,0.0000028834,0.0000028854, -0.0000028853,0.0000028795,0.0000028694,0.0000028598,0.0000028557, -0.0000028585,0.0000028652,0.0000028716,0.0000028755,0.0000028783, -0.0000028800,0.0000028776,0.0000028688,0.0000028589,0.0000028532, -0.0000028496,0.0000028497,0.0000028490,0.0000028448,0.0000028370, -0.0000028326,0.0000028355,0.0000028386,0.0000028395,0.0000028394, -0.0000028378,0.0000028356,0.0000028346,0.0000028355,0.0000028383, -0.0000028420,0.0000028460,0.0000028510,0.0000028572,0.0000028632, -0.0000028663,0.0000028651,0.0000028597,0.0000028551,0.0000028520, -0.0000028501,0.0000028501,0.0000028609,0.0000028688,0.0000028796, -0.0000028908,0.0000028994,0.0000029021,0.0000029001,0.0000028922, -0.0000028812,0.0000028725,0.0000028677,0.0000028650,0.0000028631, -0.0000028621,0.0000028635,0.0000028659,0.0000028675,0.0000028652, -0.0000028598,0.0000028572,0.0000028576,0.0000028569,0.0000028523, -0.0000028427,0.0000028278,0.0000028128,0.0000028076,0.0000028126, -0.0000028270,0.0000028394,0.0000028429,0.0000028396,0.0000028329, -0.0000028291,0.0000028301,0.0000028326,0.0000028321,0.0000028246, -0.0000028137,0.0000028078,0.0000028060,0.0000028037,0.0000027977, -0.0000027898,0.0000027889,0.0000028004,0.0000028184,0.0000028301, -0.0000028333,0.0000028330,0.0000028313,0.0000028280,0.0000028272, -0.0000028277,0.0000028252,0.0000028170,0.0000028125,0.0000028092, -0.0000028009,0.0000027859,0.0000027719,0.0000027669,0.0000027757, -0.0000027928,0.0000027996,0.0000027966,0.0000027927,0.0000027937, -0.0000027987,0.0000028058,0.0000028107,0.0000028056,0.0000027962, -0.0000027930,0.0000027950,0.0000027957,0.0000027861,0.0000027624, -0.0000027416,0.0000027316,0.0000027290,0.0000027287,0.0000027264, -0.0000027198,0.0000027160,0.0000027206,0.0000027336,0.0000027448, -0.0000027473,0.0000027425,0.0000027307,0.0000027210,0.0000027161, -0.0000027159,0.0000027187,0.0000027256,0.0000027345,0.0000027417, -0.0000027469,0.0000027482,0.0000027463,0.0000027420,0.0000027345, -0.0000027294,0.0000027315,0.0000027373,0.0000027401,0.0000027394, -0.0000027391,0.0000027443,0.0000027543,0.0000027655,0.0000027745, -0.0000027772,0.0000027735,0.0000027670,0.0000027670,0.0000027766, -0.0000027923,0.0000028113,0.0000028284,0.0000028364,0.0000028327, -0.0000028177,0.0000028054,0.0000028036,0.0000028050,0.0000028058, -0.0000028071,0.0000028070,0.0000027978,0.0000027802,0.0000027678, -0.0000027653,0.0000027656,0.0000027719,0.0000027896,0.0000028099, -0.0000028176,0.0000028122,0.0000028036,0.0000028044,0.0000028140, -0.0000028239,0.0000028374,0.0000028604,0.0000028852,0.0000028990, -0.0000029015,0.0000029036,0.0000029093,0.0000029107,0.0000029011, -0.0000028809,0.0000028599,0.0000028486,0.0000028488,0.0000028547, -0.0000028565,0.0000028500,0.0000028366,0.0000028246,0.0000028209, -0.0000028262,0.0000028376,0.0000028471,0.0000028490,0.0000028437, -0.0000028381,0.0000028392,0.0000028498,0.0000028634,0.0000028694, -0.0000028676,0.0000028593,0.0000028473,0.0000028358,0.0000028311, -0.0000028333,0.0000028427,0.0000028553,0.0000028691,0.0000028826, -0.0000028927,0.0000028964,0.0000028966,0.0000028950,0.0000028919, -0.0000028901,0.0000028925,0.0000028959,0.0000028961,0.0000028943, -0.0000028927,0.0000028915,0.0000028904,0.0000028869,0.0000028817, -0.0000028763,0.0000028700,0.0000028623,0.0000028548,0.0000028493, -0.0000028458,0.0000028418,0.0000028354,0.0000028278,0.0000028212, -0.0000028167,0.0000028130,0.0000028095,0.0000028066,0.0000028033, -0.0000028003,0.0000027983,0.0000027976,0.0000027960,0.0000027941, -0.0000027922,0.0000027901,0.0000027871,0.0000027847,0.0000027848, -0.0000027857,0.0000027856,0.0000027826,0.0000027778,0.0000027742, -0.0000027735,0.0000027756,0.0000027792,0.0000027817,0.0000027841, -0.0000027904,0.0000027992,0.0000028053,0.0000028008,0.0000027903, -0.0000027836,0.0000027862,0.0000027933,0.0000027967,0.0000027949, -0.0000027910,0.0000027862,0.0000027817,0.0000027768,0.0000027736, -0.0000027779,0.0000027878,0.0000027948,0.0000027957,0.0000027888, -0.0000027769,0.0000027685,0.0000027641,0.0000027662,0.0000027774, -0.0000027803,0.0000027755,0.0000027714,0.0000027726,0.0000027769, -0.0000027797,0.0000027841,0.0000027982,0.0000028141,0.0000028225, -0.0000028276,0.0000028308,0.0000028328,0.0000028375,0.0000028460, -0.0000028570,0.0000028680,0.0000028738,0.0000028739,0.0000028716, -0.0000028715,0.0000028747,0.0000028786,0.0000028816,0.0000028852, -0.0000028895,0.0000028923,0.0000028950,0.0000028996,0.0000029036, -0.0000029050,0.0000029010,0.0000028937,0.0000028837,0.0000028766, -0.0000028713,0.0000028678,0.0000028609,0.0000028505,0.0000028381, -0.0000028281,0.0000028233,0.0000028220,0.0000028217,0.0000028216, -0.0000028225,0.0000028239,0.0000028255,0.0000028268,0.0000028274, -0.0000028286,0.0000028291,0.0000028283,0.0000028250,0.0000028194, -0.0000028123,0.0000028049,0.0000027979,0.0000027923,0.0000027884, -0.0000027845,0.0000027835,0.0000027890,0.0000028037,0.0000028193, -0.0000028308,0.0000028402,0.0000028479,0.0000028515,0.0000028516, -0.0000028498,0.0000028489,0.0000028502,0.0000028505,0.0000028473, -0.0000028426,0.0000028338,0.0000028235,0.0000028147,0.0000028090, -0.0000028059,0.0000028050,0.0000028073,0.0000028127,0.0000028177, -0.0000028190,0.0000028152,0.0000028072,0.0000027977,0.0000027928, -0.0000027910,0.0000027833,0.0000027693,0.0000027595,0.0000027579, -0.0000027590,0.0000027613,0.0000027641,0.0000027660,0.0000027667, -0.0000027671,0.0000027674,0.0000027667,0.0000027640,0.0000027597, -0.0000027553,0.0000027506,0.0000027402,0.0000027251,0.0000027148, -0.0000027110,0.0000027060,0.0000026997,0.0000026949,0.0000026886, -0.0000026838,0.0000026876,0.0000026945,0.0000027012,0.0000027210, -0.0000027519,0.0000027654,0.0000027598,0.0000027517,0.0000027505, -0.0000027592,0.0000027747,0.0000027871,0.0000027918,0.0000027885, -0.0000027707,0.0000027503,0.0000027404,0.0000027438,0.0000027601, -0.0000027773,0.0000027788,0.0000027739,0.0000027767,0.0000027839, -0.0000027951,0.0000028018,0.0000028013,0.0000027964,0.0000027910, -0.0000027842,0.0000027850,0.0000027923,0.0000028070,0.0000028230, -0.0000028338,0.0000028408,0.0000028435,0.0000028450,0.0000028429, -0.0000028383,0.0000028364,0.0000028376,0.0000028407,0.0000028452, -0.0000028464,0.0000028412,0.0000028309,0.0000028140,0.0000028029, -0.0000027980,0.0000027917,0.0000027811,0.0000027719,0.0000027664, -0.0000027709,0.0000027742,0.0000027753,0.0000027781,0.0000027858, -0.0000027952,0.0000028005,0.0000028021,0.0000028032,0.0000028116, -0.0000028226,0.0000028260,0.0000028265,0.0000028278,0.0000028214, -0.0000028100,0.0000027974,0.0000027914,0.0000027889,0.0000027895, -0.0000027919,0.0000027944,0.0000027950,0.0000027931,0.0000027893, -0.0000027889,0.0000027952,0.0000028040,0.0000028116,0.0000028145, -0.0000028128,0.0000028112,0.0000028118,0.0000028128,0.0000028139, -0.0000028149,0.0000028173,0.0000028209,0.0000028236,0.0000028261, -0.0000028302,0.0000028336,0.0000028357,0.0000028375,0.0000028378, -0.0000028377,0.0000028345,0.0000028324,0.0000028336,0.0000028359, -0.0000028362,0.0000028341,0.0000028296,0.0000028281,0.0000028298, -0.0000028324,0.0000028336,0.0000028326,0.0000028271,0.0000028192, -0.0000028145,0.0000028153,0.0000028185,0.0000028189,0.0000028140, -0.0000028061,0.0000028022,0.0000027997,0.0000028025,0.0000028137, -0.0000028278,0.0000028387,0.0000028457,0.0000028512,0.0000028558, -0.0000028600,0.0000028630,0.0000028640,0.0000028631,0.0000028621, -0.0000028620,0.0000028663,0.0000028761,0.0000028886,0.0000029001, -0.0000029046,0.0000029050,0.0000029035,0.0000029005,0.0000028941, -0.0000028816,0.0000028640,0.0000028439,0.0000028279,0.0000028185, -0.0000028169,0.0000028195,0.0000028287,0.0000028479,0.0000028709, -0.0000028851,0.0000028898,0.0000028903,0.0000028859,0.0000028755, -0.0000028630,0.0000028548,0.0000028551,0.0000028596,0.0000028659, -0.0000028714,0.0000028748,0.0000028764,0.0000028750,0.0000028684, -0.0000028628,0.0000028608,0.0000028592,0.0000028594,0.0000028584, -0.0000028544,0.0000028468,0.0000028405,0.0000028407,0.0000028417, -0.0000028421,0.0000028411,0.0000028386,0.0000028349,0.0000028328, -0.0000028345,0.0000028381,0.0000028451,0.0000028544,0.0000028638, -0.0000028712,0.0000028758,0.0000028766,0.0000028734,0.0000028664, -0.0000028606,0.0000028578,0.0000028567,0.0000028571,0.0000028654, -0.0000028719,0.0000028814,0.0000028914,0.0000028996,0.0000029022, -0.0000029008,0.0000028944,0.0000028850,0.0000028762,0.0000028699, -0.0000028659,0.0000028630,0.0000028615,0.0000028615,0.0000028635, -0.0000028645,0.0000028612,0.0000028559,0.0000028537,0.0000028539, -0.0000028530,0.0000028486,0.0000028392,0.0000028244,0.0000028094, -0.0000028046,0.0000028108,0.0000028268,0.0000028404,0.0000028451, -0.0000028419,0.0000028345,0.0000028294,0.0000028294,0.0000028311, -0.0000028302,0.0000028230,0.0000028112,0.0000028042,0.0000028042, -0.0000028040,0.0000027979,0.0000027868,0.0000027839,0.0000027953, -0.0000028151,0.0000028285,0.0000028310,0.0000028300,0.0000028296, -0.0000028282,0.0000028292,0.0000028319,0.0000028303,0.0000028228, -0.0000028139,0.0000028119,0.0000028062,0.0000027945,0.0000027790, -0.0000027710,0.0000027721,0.0000027869,0.0000027998,0.0000028018, -0.0000027961,0.0000027941,0.0000028010,0.0000028083,0.0000028145, -0.0000028144,0.0000028027,0.0000027904,0.0000027870,0.0000027914, -0.0000027938,0.0000027848,0.0000027638,0.0000027460,0.0000027381, -0.0000027363,0.0000027339,0.0000027278,0.0000027222,0.0000027219, -0.0000027300,0.0000027434,0.0000027541,0.0000027560,0.0000027510, -0.0000027406,0.0000027320,0.0000027278,0.0000027283,0.0000027333, -0.0000027412,0.0000027496,0.0000027554,0.0000027580,0.0000027563, -0.0000027528,0.0000027458,0.0000027374,0.0000027339,0.0000027356, -0.0000027392,0.0000027405,0.0000027408,0.0000027429,0.0000027521, -0.0000027644,0.0000027739,0.0000027776,0.0000027754,0.0000027687, -0.0000027636,0.0000027658,0.0000027765,0.0000027914,0.0000028094, -0.0000028275,0.0000028374,0.0000028342,0.0000028193,0.0000028055, -0.0000028027,0.0000028042,0.0000028072,0.0000028102,0.0000028086, -0.0000027952,0.0000027769,0.0000027672,0.0000027660,0.0000027668, -0.0000027774,0.0000027987,0.0000028161,0.0000028174,0.0000028080, -0.0000028060,0.0000028147,0.0000028269,0.0000028384,0.0000028577, -0.0000028836,0.0000029021,0.0000029071,0.0000029078,0.0000029138, -0.0000029207,0.0000029179,0.0000029010,0.0000028760,0.0000028581, -0.0000028546,0.0000028609,0.0000028656,0.0000028610,0.0000028480, -0.0000028355,0.0000028302,0.0000028331,0.0000028434,0.0000028532, -0.0000028559,0.0000028523,0.0000028455,0.0000028430,0.0000028492, -0.0000028612,0.0000028690,0.0000028686,0.0000028619,0.0000028512, -0.0000028404,0.0000028334,0.0000028321,0.0000028369,0.0000028482, -0.0000028616,0.0000028737,0.0000028843,0.0000028923,0.0000028971, -0.0000028983,0.0000028977,0.0000028941,0.0000028908,0.0000028920, -0.0000028969,0.0000029005,0.0000029010,0.0000029001,0.0000028978, -0.0000028937,0.0000028888,0.0000028835,0.0000028785,0.0000028732, -0.0000028670,0.0000028602,0.0000028547,0.0000028513,0.0000028487, -0.0000028450,0.0000028398,0.0000028338,0.0000028279,0.0000028228, -0.0000028178,0.0000028129,0.0000028078,0.0000028032,0.0000027981, -0.0000027963,0.0000027951,0.0000027933,0.0000027909,0.0000027883, -0.0000027856,0.0000027826,0.0000027800,0.0000027792,0.0000027796, -0.0000027792,0.0000027762,0.0000027714,0.0000027678,0.0000027670, -0.0000027688,0.0000027732,0.0000027778,0.0000027810,0.0000027862, -0.0000027963,0.0000028079,0.0000028124,0.0000028043,0.0000027924, -0.0000027901,0.0000027956,0.0000028004,0.0000028011,0.0000027996, -0.0000027966,0.0000027929,0.0000027883,0.0000027839,0.0000027855, -0.0000027927,0.0000027982,0.0000027974,0.0000027888,0.0000027774, -0.0000027705,0.0000027679,0.0000027732,0.0000027836,0.0000027836, -0.0000027782,0.0000027745,0.0000027744,0.0000027760,0.0000027768, -0.0000027845,0.0000028029,0.0000028196,0.0000028286,0.0000028356, -0.0000028406,0.0000028446,0.0000028506,0.0000028585,0.0000028681, -0.0000028769,0.0000028816,0.0000028814,0.0000028785,0.0000028773, -0.0000028787,0.0000028807,0.0000028819,0.0000028829,0.0000028860, -0.0000028892,0.0000028915,0.0000028944,0.0000028996,0.0000029034, -0.0000029022,0.0000028950,0.0000028854,0.0000028763,0.0000028694, -0.0000028647,0.0000028583,0.0000028487,0.0000028379,0.0000028293, -0.0000028247,0.0000028225,0.0000028211,0.0000028207,0.0000028215, -0.0000028228,0.0000028241,0.0000028252,0.0000028258,0.0000028267, -0.0000028269,0.0000028265,0.0000028230,0.0000028166,0.0000028090, -0.0000028026,0.0000027974,0.0000027932,0.0000027913,0.0000027894, -0.0000027897,0.0000027957,0.0000028088,0.0000028230,0.0000028342, -0.0000028437,0.0000028517,0.0000028554,0.0000028553,0.0000028524, -0.0000028496,0.0000028487,0.0000028480,0.0000028437,0.0000028377, -0.0000028288,0.0000028187,0.0000028108,0.0000028066,0.0000028039, -0.0000028009,0.0000028000,0.0000028026,0.0000028073,0.0000028124, -0.0000028148,0.0000028113,0.0000028019,0.0000027922,0.0000027873, -0.0000027801,0.0000027671,0.0000027572,0.0000027557,0.0000027571, -0.0000027602,0.0000027646,0.0000027676,0.0000027689,0.0000027693, -0.0000027702,0.0000027704,0.0000027686,0.0000027635,0.0000027572, -0.0000027496,0.0000027385,0.0000027251,0.0000027155,0.0000027120, -0.0000027082,0.0000027017,0.0000026958,0.0000026896,0.0000026847, -0.0000026864,0.0000026922,0.0000026967,0.0000027121,0.0000027432, -0.0000027622,0.0000027592,0.0000027514,0.0000027501,0.0000027574, -0.0000027722,0.0000027853,0.0000027926,0.0000027900,0.0000027719, -0.0000027515,0.0000027442,0.0000027488,0.0000027665,0.0000027819, -0.0000027829,0.0000027800,0.0000027806,0.0000027833,0.0000027886, -0.0000027933,0.0000027936,0.0000027927,0.0000027878,0.0000027828, -0.0000027815,0.0000027886,0.0000028016,0.0000028172,0.0000028282, -0.0000028354,0.0000028408,0.0000028416,0.0000028417,0.0000028380, -0.0000028361,0.0000028352,0.0000028360,0.0000028352,0.0000028340, -0.0000028305,0.0000028232,0.0000028123,0.0000027980,0.0000027899, -0.0000027847,0.0000027775,0.0000027692,0.0000027637,0.0000027604, -0.0000027623,0.0000027653,0.0000027686,0.0000027721,0.0000027808, -0.0000027892,0.0000027930,0.0000027933,0.0000027958,0.0000028048, -0.0000028184,0.0000028265,0.0000028272,0.0000028288,0.0000028240, -0.0000028133,0.0000028017,0.0000027980,0.0000027956,0.0000027975, -0.0000028028,0.0000028082,0.0000028109,0.0000028090,0.0000028026, -0.0000027966,0.0000027975,0.0000028052,0.0000028145,0.0000028204, -0.0000028217,0.0000028203,0.0000028212,0.0000028223,0.0000028243, -0.0000028251,0.0000028260,0.0000028281,0.0000028293,0.0000028297, -0.0000028322,0.0000028365,0.0000028412,0.0000028453,0.0000028479, -0.0000028494,0.0000028489,0.0000028454,0.0000028453,0.0000028466, -0.0000028464,0.0000028440,0.0000028393,0.0000028366,0.0000028388, -0.0000028406,0.0000028413,0.0000028403,0.0000028382,0.0000028315, -0.0000028234,0.0000028204,0.0000028235,0.0000028288,0.0000028291, -0.0000028228,0.0000028117,0.0000028033,0.0000027998,0.0000028005, -0.0000028074,0.0000028183,0.0000028290,0.0000028381,0.0000028448, -0.0000028491,0.0000028521,0.0000028554,0.0000028594,0.0000028629, -0.0000028660,0.0000028678,0.0000028693,0.0000028731,0.0000028781, -0.0000028884,0.0000028957,0.0000028994,0.0000029007,0.0000029014, -0.0000029001,0.0000028930,0.0000028787,0.0000028574,0.0000028352, -0.0000028203,0.0000028168,0.0000028177,0.0000028236,0.0000028369, -0.0000028581,0.0000028785,0.0000028899,0.0000028913,0.0000028886, -0.0000028806,0.0000028696,0.0000028599,0.0000028572,0.0000028597, -0.0000028636,0.0000028682,0.0000028715,0.0000028743,0.0000028755, -0.0000028735,0.0000028703,0.0000028678,0.0000028650,0.0000028654, -0.0000028660,0.0000028639,0.0000028563,0.0000028476,0.0000028446, -0.0000028440,0.0000028442,0.0000028423,0.0000028393,0.0000028347, -0.0000028331,0.0000028355,0.0000028411,0.0000028512,0.0000028644, -0.0000028766,0.0000028843,0.0000028868,0.0000028855,0.0000028805, -0.0000028735,0.0000028675,0.0000028643,0.0000028627,0.0000028627, -0.0000028683,0.0000028732,0.0000028817,0.0000028909,0.0000028976, -0.0000028997,0.0000028985,0.0000028935,0.0000028860,0.0000028777, -0.0000028705,0.0000028646,0.0000028604,0.0000028585,0.0000028582, -0.0000028586,0.0000028579,0.0000028529,0.0000028475,0.0000028457, -0.0000028461,0.0000028462,0.0000028436,0.0000028357,0.0000028216, -0.0000028072,0.0000028024,0.0000028094,0.0000028262,0.0000028409, -0.0000028469,0.0000028437,0.0000028355,0.0000028291,0.0000028277, -0.0000028278,0.0000028255,0.0000028193,0.0000028088,0.0000028014, -0.0000028029,0.0000028047,0.0000027990,0.0000027865,0.0000027802, -0.0000027893,0.0000028089,0.0000028240,0.0000028270,0.0000028260, -0.0000028258,0.0000028268,0.0000028288,0.0000028323,0.0000028321, -0.0000028255,0.0000028136,0.0000028112,0.0000028094,0.0000028022, -0.0000027898,0.0000027799,0.0000027769,0.0000027852,0.0000027980, -0.0000028046,0.0000028035,0.0000027976,0.0000027999,0.0000028114, -0.0000028173,0.0000028189,0.0000028126,0.0000027977,0.0000027842, -0.0000027811,0.0000027886,0.0000027930,0.0000027862,0.0000027686, -0.0000027529,0.0000027459,0.0000027432,0.0000027378,0.0000027317, -0.0000027296,0.0000027321,0.0000027410,0.0000027535,0.0000027626, -0.0000027642,0.0000027601,0.0000027517,0.0000027442,0.0000027414, -0.0000027437,0.0000027505,0.0000027598,0.0000027673,0.0000027712, -0.0000027707,0.0000027667,0.0000027600,0.0000027499,0.0000027400, -0.0000027352,0.0000027350,0.0000027363,0.0000027379,0.0000027406, -0.0000027472,0.0000027591,0.0000027724,0.0000027796,0.0000027782, -0.0000027706,0.0000027627,0.0000027601,0.0000027662,0.0000027783, -0.0000027906,0.0000028070,0.0000028263,0.0000028376,0.0000028361, -0.0000028220,0.0000028054,0.0000028007,0.0000028026,0.0000028083, -0.0000028135,0.0000028099,0.0000027933,0.0000027749,0.0000027678, -0.0000027677,0.0000027707,0.0000027850,0.0000028063,0.0000028180, -0.0000028143,0.0000028078,0.0000028140,0.0000028289,0.0000028415, -0.0000028556,0.0000028786,0.0000029019,0.0000029120,0.0000029118, -0.0000029145,0.0000029237,0.0000029280,0.0000029208,0.0000028989, -0.0000028751,0.0000028639,0.0000028657,0.0000028732,0.0000028733, -0.0000028623,0.0000028480,0.0000028390,0.0000028392,0.0000028480, -0.0000028583,0.0000028630,0.0000028614,0.0000028550,0.0000028492, -0.0000028502,0.0000028592,0.0000028683,0.0000028704,0.0000028662, -0.0000028568,0.0000028457,0.0000028368,0.0000028322,0.0000028335, -0.0000028421,0.0000028565,0.0000028701,0.0000028799,0.0000028866, -0.0000028921,0.0000028964,0.0000028980,0.0000028979,0.0000028950, -0.0000028911,0.0000028908,0.0000028952,0.0000029004,0.0000029033, -0.0000029024,0.0000029001,0.0000028943,0.0000028873,0.0000028807, -0.0000028758,0.0000028720,0.0000028675,0.0000028619,0.0000028566, -0.0000028528,0.0000028498,0.0000028469,0.0000028435,0.0000028395, -0.0000028352,0.0000028304,0.0000028254,0.0000028209,0.0000028172, -0.0000028122,0.0000028072,0.0000028034,0.0000028007,0.0000027989, -0.0000027965,0.0000027930,0.0000027887,0.0000027852,0.0000027814, -0.0000027779,0.0000027761,0.0000027743,0.0000027723,0.0000027690, -0.0000027654,0.0000027636,0.0000027638,0.0000027663,0.0000027708, -0.0000027761,0.0000027800,0.0000027840,0.0000027927,0.0000028068, -0.0000028170,0.0000028155,0.0000028044,0.0000027969,0.0000027984, -0.0000028024,0.0000028048,0.0000028055,0.0000028051,0.0000028032, -0.0000027995,0.0000027944,0.0000027929,0.0000027979,0.0000028015, -0.0000027990,0.0000027892,0.0000027783,0.0000027729,0.0000027715, -0.0000027796,0.0000027882,0.0000027865,0.0000027820,0.0000027782, -0.0000027758,0.0000027751,0.0000027760,0.0000027872,0.0000028086, -0.0000028246,0.0000028350,0.0000028434,0.0000028496,0.0000028541, -0.0000028593,0.0000028646,0.0000028709,0.0000028779,0.0000028816, -0.0000028814,0.0000028791,0.0000028782,0.0000028793,0.0000028810, -0.0000028814,0.0000028804,0.0000028810,0.0000028840,0.0000028880, -0.0000028900,0.0000028948,0.0000029010,0.0000029023,0.0000028958, -0.0000028867,0.0000028754,0.0000028676,0.0000028617,0.0000028570, -0.0000028488,0.0000028408,0.0000028354,0.0000028321,0.0000028296, -0.0000028278,0.0000028271,0.0000028274,0.0000028278,0.0000028284, -0.0000028291,0.0000028288,0.0000028281,0.0000028275,0.0000028267, -0.0000028236,0.0000028173,0.0000028111,0.0000028063,0.0000028031, -0.0000028012,0.0000028005,0.0000027996,0.0000028007,0.0000028058, -0.0000028149,0.0000028258,0.0000028356,0.0000028444,0.0000028517, -0.0000028562,0.0000028566,0.0000028542,0.0000028511,0.0000028495, -0.0000028481,0.0000028430,0.0000028344,0.0000028238,0.0000028144, -0.0000028084,0.0000028059,0.0000028042,0.0000028005,0.0000027973, -0.0000027980,0.0000028001,0.0000028024,0.0000028064,0.0000028094, -0.0000028056,0.0000027950,0.0000027856,0.0000027779,0.0000027662, -0.0000027566,0.0000027547,0.0000027564,0.0000027608,0.0000027662, -0.0000027697,0.0000027706,0.0000027709,0.0000027715,0.0000027719, -0.0000027712,0.0000027669,0.0000027587,0.0000027481,0.0000027356, -0.0000027240,0.0000027170,0.0000027142,0.0000027115,0.0000027052, -0.0000026973,0.0000026907,0.0000026863,0.0000026857,0.0000026897, -0.0000026931,0.0000027049,0.0000027344,0.0000027578,0.0000027586, -0.0000027513,0.0000027501,0.0000027568,0.0000027688,0.0000027812, -0.0000027914,0.0000027917,0.0000027760,0.0000027556,0.0000027497, -0.0000027558,0.0000027734,0.0000027845,0.0000027854,0.0000027845, -0.0000027841,0.0000027838,0.0000027838,0.0000027849,0.0000027852, -0.0000027842,0.0000027844,0.0000027824,0.0000027828,0.0000027878, -0.0000027991,0.0000028119,0.0000028245,0.0000028332,0.0000028380, -0.0000028409,0.0000028390,0.0000028344,0.0000028260,0.0000028197, -0.0000028170,0.0000028153,0.0000028145,0.0000028144,0.0000028122, -0.0000028070,0.0000027976,0.0000027851,0.0000027744,0.0000027681, -0.0000027660,0.0000027665,0.0000027632,0.0000027604,0.0000027590, -0.0000027614,0.0000027639,0.0000027686,0.0000027778,0.0000027860, -0.0000027886,0.0000027882,0.0000027913,0.0000027995,0.0000028141, -0.0000028251,0.0000028271,0.0000028284,0.0000028258,0.0000028152, -0.0000028047,0.0000028025,0.0000028023,0.0000028057,0.0000028113, -0.0000028153,0.0000028177,0.0000028179,0.0000028135,0.0000028068, -0.0000028062,0.0000028128,0.0000028219,0.0000028308,0.0000028351, -0.0000028338,0.0000028308,0.0000028283,0.0000028278,0.0000028294, -0.0000028322,0.0000028365,0.0000028403,0.0000028421,0.0000028431, -0.0000028453,0.0000028476,0.0000028499,0.0000028507,0.0000028504, -0.0000028507,0.0000028489,0.0000028486,0.0000028522,0.0000028558, -0.0000028556,0.0000028525,0.0000028489,0.0000028473,0.0000028474, -0.0000028472,0.0000028460,0.0000028440,0.0000028408,0.0000028340, -0.0000028271,0.0000028254,0.0000028298,0.0000028362,0.0000028365, -0.0000028294,0.0000028167,0.0000028068,0.0000028031,0.0000028034, -0.0000028068,0.0000028134,0.0000028221,0.0000028320,0.0000028396, -0.0000028446,0.0000028479,0.0000028515,0.0000028562,0.0000028614, -0.0000028672,0.0000028718,0.0000028740,0.0000028757,0.0000028758, -0.0000028792,0.0000028829,0.0000028876,0.0000028912,0.0000028959, -0.0000028994,0.0000028977,0.0000028921,0.0000028773,0.0000028533, -0.0000028292,0.0000028166,0.0000028153,0.0000028191,0.0000028282, -0.0000028441,0.0000028635,0.0000028820,0.0000028884,0.0000028871, -0.0000028798,0.0000028708,0.0000028647,0.0000028637,0.0000028659, -0.0000028681,0.0000028713,0.0000028748,0.0000028781,0.0000028809, -0.0000028796,0.0000028748,0.0000028701,0.0000028660,0.0000028671, -0.0000028689,0.0000028692,0.0000028636,0.0000028539,0.0000028486, -0.0000028465,0.0000028460,0.0000028437,0.0000028407,0.0000028361, -0.0000028355,0.0000028393,0.0000028465,0.0000028574,0.0000028712, -0.0000028838,0.0000028915,0.0000028927,0.0000028903,0.0000028857, -0.0000028805,0.0000028758,0.0000028720,0.0000028691,0.0000028674, -0.0000028686,0.0000028726,0.0000028803,0.0000028882,0.0000028937, -0.0000028959,0.0000028950,0.0000028914,0.0000028856,0.0000028780, -0.0000028695,0.0000028618,0.0000028561,0.0000028534,0.0000028529, -0.0000028518,0.0000028479,0.0000028410,0.0000028358,0.0000028357, -0.0000028381,0.0000028401,0.0000028398,0.0000028335,0.0000028205, -0.0000028067,0.0000028021,0.0000028096,0.0000028265,0.0000028411, -0.0000028467,0.0000028435,0.0000028345,0.0000028269,0.0000028238, -0.0000028222,0.0000028194,0.0000028149,0.0000028067,0.0000027998, -0.0000028019,0.0000028057,0.0000027999,0.0000027863,0.0000027793, -0.0000027838,0.0000028012,0.0000028170,0.0000028217,0.0000028208, -0.0000028205,0.0000028236,0.0000028265,0.0000028305,0.0000028315, -0.0000028263,0.0000028142,0.0000028091,0.0000028111,0.0000028090, -0.0000028007,0.0000027904,0.0000027855,0.0000027883,0.0000027986, -0.0000028056,0.0000028066,0.0000028045,0.0000028016,0.0000028088, -0.0000028212,0.0000028251,0.0000028200,0.0000028087,0.0000027914, -0.0000027763,0.0000027763,0.0000027882,0.0000027953,0.0000027895, -0.0000027743,0.0000027602,0.0000027543,0.0000027505,0.0000027441, -0.0000027389,0.0000027381,0.0000027422,0.0000027512,0.0000027615, -0.0000027686,0.0000027705,0.0000027677,0.0000027616,0.0000027573, -0.0000027583,0.0000027633,0.0000027711,0.0000027790,0.0000027835, -0.0000027836,0.0000027801,0.0000027749,0.0000027665,0.0000027557, -0.0000027453,0.0000027382,0.0000027350,0.0000027344,0.0000027361, -0.0000027418,0.0000027517,0.0000027644,0.0000027761,0.0000027802, -0.0000027762,0.0000027652,0.0000027572,0.0000027576,0.0000027676, -0.0000027801,0.0000027904,0.0000028053,0.0000028254,0.0000028386, -0.0000028390,0.0000028253,0.0000028056,0.0000027978,0.0000028002, -0.0000028088,0.0000028157,0.0000028105,0.0000027921,0.0000027742, -0.0000027690,0.0000027696,0.0000027759,0.0000027930,0.0000028131, -0.0000028191,0.0000028141,0.0000028135,0.0000028271,0.0000028438, -0.0000028562,0.0000028724,0.0000028962,0.0000029146,0.0000029186, -0.0000029173,0.0000029222,0.0000029316,0.0000029336,0.0000029210, -0.0000028985,0.0000028790,0.0000028729,0.0000028772,0.0000028806, -0.0000028769,0.0000028639,0.0000028521,0.0000028481,0.0000028521, -0.0000028619,0.0000028691,0.0000028696,0.0000028641,0.0000028573, -0.0000028547,0.0000028582,0.0000028657,0.0000028709,0.0000028700, -0.0000028637,0.0000028535,0.0000028431,0.0000028352,0.0000028326, -0.0000028364,0.0000028494,0.0000028658,0.0000028779,0.0000028843, -0.0000028873,0.0000028903,0.0000028927,0.0000028945,0.0000028950, -0.0000028936,0.0000028907,0.0000028897,0.0000028923,0.0000028976, -0.0000029010,0.0000029007,0.0000028963,0.0000028890,0.0000028808, -0.0000028728,0.0000028686,0.0000028660,0.0000028621,0.0000028578, -0.0000028527,0.0000028479,0.0000028442,0.0000028412,0.0000028384, -0.0000028352,0.0000028319,0.0000028288,0.0000028256,0.0000028220, -0.0000028188,0.0000028151,0.0000028110,0.0000028080,0.0000028046, -0.0000028024,0.0000028016,0.0000028003,0.0000027969,0.0000027927, -0.0000027881,0.0000027833,0.0000027787,0.0000027753,0.0000027715, -0.0000027675,0.0000027629,0.0000027600,0.0000027601,0.0000027634, -0.0000027676,0.0000027719,0.0000027769,0.0000027808,0.0000027843, -0.0000027905,0.0000028026,0.0000028162,0.0000028215,0.0000028154, -0.0000028057,0.0000028026,0.0000028047,0.0000028071,0.0000028092, -0.0000028116,0.0000028124,0.0000028106,0.0000028047,0.0000028000, -0.0000028023,0.0000028044,0.0000028010,0.0000027903,0.0000027795, -0.0000027752,0.0000027755,0.0000027850,0.0000027912,0.0000027893, -0.0000027865,0.0000027822,0.0000027769,0.0000027749,0.0000027770, -0.0000027923,0.0000028134,0.0000028283,0.0000028395,0.0000028485, -0.0000028548,0.0000028589,0.0000028626,0.0000028657,0.0000028697, -0.0000028744,0.0000028773,0.0000028771,0.0000028753,0.0000028743, -0.0000028751,0.0000028779,0.0000028794,0.0000028773,0.0000028754, -0.0000028772,0.0000028827,0.0000028855,0.0000028893,0.0000028976, -0.0000029008,0.0000028973,0.0000028879,0.0000028770,0.0000028685, -0.0000028627,0.0000028592,0.0000028544,0.0000028501,0.0000028477, -0.0000028460,0.0000028438,0.0000028420,0.0000028407,0.0000028394, -0.0000028386,0.0000028386,0.0000028382,0.0000028359,0.0000028330, -0.0000028312,0.0000028297,0.0000028270,0.0000028239,0.0000028212, -0.0000028190,0.0000028172,0.0000028149,0.0000028129,0.0000028112, -0.0000028120,0.0000028151,0.0000028200,0.0000028269,0.0000028348, -0.0000028428,0.0000028498,0.0000028553,0.0000028573,0.0000028565, -0.0000028543,0.0000028524,0.0000028496,0.0000028438,0.0000028326, -0.0000028191,0.0000028094,0.0000028055,0.0000028050,0.0000028044, -0.0000028007,0.0000027961,0.0000027955,0.0000027979,0.0000027980, -0.0000027967,0.0000028006,0.0000028055,0.0000028006,0.0000027883, -0.0000027771,0.0000027660,0.0000027565,0.0000027538,0.0000027550, -0.0000027598,0.0000027668,0.0000027716,0.0000027724,0.0000027719, -0.0000027717,0.0000027722,0.0000027721,0.0000027703,0.0000027626, -0.0000027497,0.0000027351,0.0000027239,0.0000027197,0.0000027181, -0.0000027164,0.0000027104,0.0000027008,0.0000026925,0.0000026884, -0.0000026865,0.0000026873,0.0000026899,0.0000027000,0.0000027267, -0.0000027527,0.0000027568,0.0000027511,0.0000027503,0.0000027567, -0.0000027663,0.0000027751,0.0000027875,0.0000027912,0.0000027808, -0.0000027616,0.0000027558,0.0000027626,0.0000027785,0.0000027890, -0.0000027889,0.0000027884,0.0000027863,0.0000027850,0.0000027818, -0.0000027785,0.0000027764,0.0000027747,0.0000027747,0.0000027772, -0.0000027826,0.0000027901,0.0000027985,0.0000028082,0.0000028199, -0.0000028296,0.0000028359,0.0000028383,0.0000028333,0.0000028205, -0.0000028049,0.0000027938,0.0000027929,0.0000027965,0.0000028001, -0.0000028001,0.0000027996,0.0000027978,0.0000027920,0.0000027839, -0.0000027743,0.0000027674,0.0000027638,0.0000027655,0.0000027703, -0.0000027698,0.0000027665,0.0000027612,0.0000027587,0.0000027599, -0.0000027664,0.0000027766,0.0000027849,0.0000027873,0.0000027869, -0.0000027887,0.0000027957,0.0000028099,0.0000028227,0.0000028276, -0.0000028294,0.0000028269,0.0000028162,0.0000028066,0.0000028043, -0.0000028064,0.0000028119,0.0000028167,0.0000028176,0.0000028176, -0.0000028216,0.0000028255,0.0000028238,0.0000028234,0.0000028287, -0.0000028347,0.0000028408,0.0000028439,0.0000028416,0.0000028357, -0.0000028334,0.0000028345,0.0000028396,0.0000028446,0.0000028482, -0.0000028505,0.0000028510,0.0000028489,0.0000028475,0.0000028469, -0.0000028465,0.0000028466,0.0000028450,0.0000028437,0.0000028416, -0.0000028407,0.0000028427,0.0000028476,0.0000028517,0.0000028533, -0.0000028551,0.0000028562,0.0000028563,0.0000028543,0.0000028521, -0.0000028491,0.0000028458,0.0000028417,0.0000028362,0.0000028301, -0.0000028282,0.0000028320,0.0000028377,0.0000028377,0.0000028321, -0.0000028212,0.0000028119,0.0000028074,0.0000028068,0.0000028083, -0.0000028122,0.0000028190,0.0000028272,0.0000028347,0.0000028406, -0.0000028456,0.0000028518,0.0000028579,0.0000028635,0.0000028701, -0.0000028746,0.0000028765,0.0000028764,0.0000028759,0.0000028771, -0.0000028764,0.0000028765,0.0000028786,0.0000028840,0.0000028900, -0.0000028933,0.0000028939,0.0000028885,0.0000028756,0.0000028514, -0.0000028285,0.0000028150,0.0000028148,0.0000028202,0.0000028326, -0.0000028474,0.0000028658,0.0000028779,0.0000028815,0.0000028765, -0.0000028676,0.0000028631,0.0000028642,0.0000028693,0.0000028734, -0.0000028765,0.0000028794,0.0000028818,0.0000028834,0.0000028810, -0.0000028753,0.0000028696,0.0000028648,0.0000028655,0.0000028682, -0.0000028695,0.0000028667,0.0000028586,0.0000028521,0.0000028488, -0.0000028472,0.0000028452,0.0000028430,0.0000028395,0.0000028392, -0.0000028435,0.0000028508,0.0000028601,0.0000028727,0.0000028847, -0.0000028926,0.0000028939,0.0000028921,0.0000028893,0.0000028863, -0.0000028829,0.0000028787,0.0000028741,0.0000028691,0.0000028661, -0.0000028695,0.0000028767,0.0000028831,0.0000028875,0.0000028898, -0.0000028897,0.0000028871,0.0000028822,0.0000028745,0.0000028652, -0.0000028565,0.0000028505,0.0000028481,0.0000028475,0.0000028449, -0.0000028385,0.0000028308,0.0000028268,0.0000028292,0.0000028343, -0.0000028375,0.0000028375,0.0000028318,0.0000028196,0.0000028073, -0.0000028036,0.0000028119,0.0000028269,0.0000028396,0.0000028440, -0.0000028404,0.0000028310,0.0000028234,0.0000028207,0.0000028193, -0.0000028166,0.0000028131,0.0000028071,0.0000028011,0.0000028033, -0.0000028067,0.0000028000,0.0000027862,0.0000027784,0.0000027798, -0.0000027928,0.0000028079,0.0000028151,0.0000028152,0.0000028153, -0.0000028197,0.0000028254,0.0000028282,0.0000028292,0.0000028248, -0.0000028147,0.0000028074,0.0000028123,0.0000028145,0.0000028115, -0.0000028031,0.0000027964,0.0000027946,0.0000028013,0.0000028076, -0.0000028086,0.0000028075,0.0000028071,0.0000028096,0.0000028184, -0.0000028280,0.0000028276,0.0000028166,0.0000028015,0.0000027821, -0.0000027698,0.0000027758,0.0000027919,0.0000027985,0.0000027933, -0.0000027807,0.0000027701,0.0000027657,0.0000027610,0.0000027533, -0.0000027484,0.0000027486,0.0000027531,0.0000027599,0.0000027670, -0.0000027724,0.0000027742,0.0000027728,0.0000027690,0.0000027675, -0.0000027695,0.0000027741,0.0000027803,0.0000027861,0.0000027890, -0.0000027888,0.0000027864,0.0000027830,0.0000027769,0.0000027680, -0.0000027573,0.0000027478,0.0000027404,0.0000027359,0.0000027369, -0.0000027441,0.0000027550,0.0000027671,0.0000027765,0.0000027790, -0.0000027726,0.0000027616,0.0000027546,0.0000027563,0.0000027676, -0.0000027810,0.0000027916,0.0000028054,0.0000028253,0.0000028403, -0.0000028425,0.0000028282,0.0000028058,0.0000027949,0.0000027977, -0.0000028084,0.0000028171,0.0000028118,0.0000027918,0.0000027741, -0.0000027704,0.0000027725,0.0000027825,0.0000028024,0.0000028201, -0.0000028228,0.0000028187,0.0000028237,0.0000028409,0.0000028573, -0.0000028695,0.0000028868,0.0000029098,0.0000029242,0.0000029252, -0.0000029243,0.0000029300,0.0000029371,0.0000029349,0.0000029209, -0.0000029010,0.0000028866,0.0000028837,0.0000028862,0.0000028861, -0.0000028794,0.0000028676,0.0000028586,0.0000028574,0.0000028636, -0.0000028722,0.0000028751,0.0000028732,0.0000028662,0.0000028606, -0.0000028604,0.0000028645,0.0000028698,0.0000028717,0.0000028689, -0.0000028609,0.0000028503,0.0000028408,0.0000028345,0.0000028331, -0.0000028401,0.0000028558,0.0000028719,0.0000028816,0.0000028852, -0.0000028862,0.0000028863,0.0000028869,0.0000028886,0.0000028903, -0.0000028906,0.0000028894,0.0000028882,0.0000028886,0.0000028912, -0.0000028930,0.0000028918,0.0000028862,0.0000028776,0.0000028693, -0.0000028623,0.0000028582,0.0000028570,0.0000028544,0.0000028495, -0.0000028451,0.0000028408,0.0000028370,0.0000028340,0.0000028315, -0.0000028304,0.0000028288,0.0000028274,0.0000028262,0.0000028245, -0.0000028219,0.0000028193,0.0000028154,0.0000028124,0.0000028087, -0.0000028042,0.0000028013,0.0000028004,0.0000027995,0.0000027980, -0.0000027951,0.0000027909,0.0000027861,0.0000027818,0.0000027776, -0.0000027721,0.0000027657,0.0000027597,0.0000027570,0.0000027583, -0.0000027648,0.0000027712,0.0000027755,0.0000027792,0.0000027824, -0.0000027853,0.0000027900,0.0000027991,0.0000028127,0.0000028224, -0.0000028223,0.0000028143,0.0000028084,0.0000028082,0.0000028097, -0.0000028122,0.0000028164,0.0000028203,0.0000028206,0.0000028143, -0.0000028061,0.0000028056,0.0000028068,0.0000028033,0.0000027922, -0.0000027811,0.0000027774,0.0000027797,0.0000027888,0.0000027929, -0.0000027920,0.0000027908,0.0000027861,0.0000027784,0.0000027758, -0.0000027808,0.0000027980,0.0000028169,0.0000028299,0.0000028402, -0.0000028493,0.0000028557,0.0000028598,0.0000028626,0.0000028645, -0.0000028671,0.0000028706,0.0000028733,0.0000028740,0.0000028731, -0.0000028707,0.0000028689,0.0000028711,0.0000028740,0.0000028731, -0.0000028710,0.0000028712,0.0000028762,0.0000028804,0.0000028832, -0.0000028921,0.0000028985,0.0000028980,0.0000028906,0.0000028820, -0.0000028738,0.0000028699,0.0000028674,0.0000028653,0.0000028634, -0.0000028623,0.0000028612,0.0000028596,0.0000028583,0.0000028569, -0.0000028549,0.0000028538,0.0000028533,0.0000028515,0.0000028476, -0.0000028436,0.0000028413,0.0000028402,0.0000028393,0.0000028390, -0.0000028384,0.0000028360,0.0000028329,0.0000028281,0.0000028237, -0.0000028206,0.0000028205,0.0000028214,0.0000028234,0.0000028275, -0.0000028342,0.0000028416,0.0000028487,0.0000028551,0.0000028592, -0.0000028604,0.0000028595,0.0000028567,0.0000028511,0.0000028436, -0.0000028308,0.0000028158,0.0000028056,0.0000028030,0.0000028041, -0.0000028045,0.0000028016,0.0000027960,0.0000027936,0.0000027959, -0.0000027979,0.0000027940,0.0000027909,0.0000027985,0.0000028038, -0.0000027956,0.0000027804,0.0000027669,0.0000027567,0.0000027516, -0.0000027520,0.0000027564,0.0000027647,0.0000027723,0.0000027751, -0.0000027747,0.0000027731,0.0000027731,0.0000027744,0.0000027745, -0.0000027701,0.0000027574,0.0000027412,0.0000027269,0.0000027215, -0.0000027222,0.0000027222,0.0000027169,0.0000027058,0.0000026956, -0.0000026907,0.0000026887,0.0000026869,0.0000026872,0.0000026960, -0.0000027214,0.0000027471,0.0000027531,0.0000027496,0.0000027503, -0.0000027568,0.0000027653,0.0000027697,0.0000027808,0.0000027902, -0.0000027847,0.0000027685,0.0000027612,0.0000027684,0.0000027820, -0.0000027925,0.0000027939,0.0000027932,0.0000027908,0.0000027865, -0.0000027824,0.0000027753,0.0000027698,0.0000027660,0.0000027654, -0.0000027696,0.0000027782,0.0000027878,0.0000027967,0.0000028035, -0.0000028133,0.0000028243,0.0000028283,0.0000028246,0.0000028151, -0.0000028020,0.0000027863,0.0000027742,0.0000027712,0.0000027775, -0.0000027854,0.0000027931,0.0000027931,0.0000027910,0.0000027899, -0.0000027858,0.0000027823,0.0000027756,0.0000027707,0.0000027680, -0.0000027705,0.0000027749,0.0000027749,0.0000027711,0.0000027654, -0.0000027602,0.0000027601,0.0000027655,0.0000027760,0.0000027849, -0.0000027881,0.0000027872,0.0000027871,0.0000027919,0.0000028043, -0.0000028189,0.0000028268,0.0000028293,0.0000028277,0.0000028175, -0.0000028066,0.0000028025,0.0000028075,0.0000028163,0.0000028221, -0.0000028221,0.0000028191,0.0000028217,0.0000028309,0.0000028360, -0.0000028358,0.0000028374,0.0000028402,0.0000028438,0.0000028477, -0.0000028485,0.0000028464,0.0000028459,0.0000028468,0.0000028507, -0.0000028539,0.0000028553,0.0000028553,0.0000028539,0.0000028499, -0.0000028470,0.0000028445,0.0000028430,0.0000028435,0.0000028437, -0.0000028413,0.0000028371,0.0000028347,0.0000028356,0.0000028384, -0.0000028413,0.0000028417,0.0000028449,0.0000028505,0.0000028556, -0.0000028580,0.0000028575,0.0000028559,0.0000028533,0.0000028493, -0.0000028452,0.0000028400,0.0000028326,0.0000028281,0.0000028297, -0.0000028345,0.0000028354,0.0000028319,0.0000028239,0.0000028161, -0.0000028114,0.0000028099,0.0000028100,0.0000028123,0.0000028178, -0.0000028242,0.0000028311,0.0000028380,0.0000028456,0.0000028548, -0.0000028633,0.0000028701,0.0000028764,0.0000028799,0.0000028805, -0.0000028781,0.0000028756,0.0000028763,0.0000028751,0.0000028721, -0.0000028701,0.0000028715,0.0000028744,0.0000028780,0.0000028824, -0.0000028842,0.0000028815,0.0000028726,0.0000028559,0.0000028314, -0.0000028167,0.0000028140,0.0000028214,0.0000028339,0.0000028487, -0.0000028600,0.0000028677,0.0000028672,0.0000028613,0.0000028573, -0.0000028589,0.0000028656,0.0000028719,0.0000028755,0.0000028794, -0.0000028816,0.0000028824,0.0000028800,0.0000028744,0.0000028685, -0.0000028631,0.0000028625,0.0000028645,0.0000028674,0.0000028664, -0.0000028613,0.0000028551,0.0000028506,0.0000028476,0.0000028460, -0.0000028446,0.0000028424,0.0000028425,0.0000028461,0.0000028520, -0.0000028599,0.0000028701,0.0000028814,0.0000028898,0.0000028925, -0.0000028919,0.0000028911,0.0000028895,0.0000028868,0.0000028821, -0.0000028751,0.0000028679,0.0000028604,0.0000028638,0.0000028703, -0.0000028754,0.0000028792,0.0000028815,0.0000028816,0.0000028796, -0.0000028751,0.0000028675,0.0000028582,0.0000028504,0.0000028464, -0.0000028459,0.0000028453,0.0000028412,0.0000028340,0.0000028256, -0.0000028225,0.0000028260,0.0000028329,0.0000028368,0.0000028362, -0.0000028294,0.0000028174,0.0000028072,0.0000028052,0.0000028129, -0.0000028254,0.0000028356,0.0000028390,0.0000028358,0.0000028274, -0.0000028212,0.0000028199,0.0000028186,0.0000028151,0.0000028119, -0.0000028085,0.0000028050,0.0000028065,0.0000028079,0.0000027995, -0.0000027853,0.0000027785,0.0000027789,0.0000027860,0.0000027990, -0.0000028079,0.0000028095,0.0000028099,0.0000028157,0.0000028235, -0.0000028264,0.0000028267,0.0000028227,0.0000028137,0.0000028067, -0.0000028119,0.0000028194,0.0000028219,0.0000028166,0.0000028085, -0.0000028042,0.0000028058,0.0000028099,0.0000028103,0.0000028092, -0.0000028093,0.0000028132,0.0000028191,0.0000028259,0.0000028310, -0.0000028260,0.0000028098,0.0000027911,0.0000027726,0.0000027669, -0.0000027796,0.0000027984,0.0000028032,0.0000027986,0.0000027901, -0.0000027841,0.0000027798,0.0000027724,0.0000027638,0.0000027600, -0.0000027609,0.0000027648,0.0000027688,0.0000027719,0.0000027739, -0.0000027730,0.0000027692,0.0000027656,0.0000027656,0.0000027683, -0.0000027735,0.0000027798,0.0000027849,0.0000027877,0.0000027878, -0.0000027880,0.0000027874,0.0000027857,0.0000027800,0.0000027705, -0.0000027595,0.0000027485,0.0000027406,0.0000027400,0.0000027466, -0.0000027568,0.0000027674,0.0000027741,0.0000027751,0.0000027698, -0.0000027604,0.0000027529,0.0000027546,0.0000027660,0.0000027812, -0.0000027938,0.0000028072,0.0000028258,0.0000028418,0.0000028450, -0.0000028299,0.0000028058,0.0000027931,0.0000027957,0.0000028076, -0.0000028178,0.0000028133,0.0000027930,0.0000027760,0.0000027727, -0.0000027765,0.0000027904,0.0000028125,0.0000028274,0.0000028276, -0.0000028268,0.0000028354,0.0000028535,0.0000028685,0.0000028804, -0.0000028981,0.0000029199,0.0000029322,0.0000029323,0.0000029322, -0.0000029378,0.0000029405,0.0000029361,0.0000029223,0.0000029062, -0.0000028957,0.0000028932,0.0000028932,0.0000028905,0.0000028832, -0.0000028729,0.0000028655,0.0000028654,0.0000028721,0.0000028802, -0.0000028827,0.0000028787,0.0000028706,0.0000028654,0.0000028657, -0.0000028687,0.0000028711,0.0000028712,0.0000028670,0.0000028574, -0.0000028464,0.0000028382,0.0000028342,0.0000028347,0.0000028430, -0.0000028585,0.0000028729,0.0000028810,0.0000028839,0.0000028835, -0.0000028807,0.0000028793,0.0000028813,0.0000028843,0.0000028855, -0.0000028856,0.0000028850,0.0000028839,0.0000028826,0.0000028814, -0.0000028787,0.0000028728,0.0000028648,0.0000028581,0.0000028531, -0.0000028502,0.0000028487,0.0000028471,0.0000028446,0.0000028415, -0.0000028384,0.0000028360,0.0000028342,0.0000028323,0.0000028310, -0.0000028305,0.0000028303,0.0000028303,0.0000028297,0.0000028282, -0.0000028269,0.0000028253,0.0000028232,0.0000028212,0.0000028168, -0.0000028109,0.0000028055,0.0000028014,0.0000027993,0.0000027967, -0.0000027941,0.0000027906,0.0000027866,0.0000027836,0.0000027809, -0.0000027758,0.0000027682,0.0000027607,0.0000027572,0.0000027594, -0.0000027673,0.0000027753,0.0000027799,0.0000027826,0.0000027844, -0.0000027865,0.0000027901,0.0000027964,0.0000028085,0.0000028209, -0.0000028257,0.0000028211,0.0000028144,0.0000028124,0.0000028129, -0.0000028150,0.0000028199,0.0000028269,0.0000028294,0.0000028224, -0.0000028108,0.0000028077,0.0000028085,0.0000028055,0.0000027948, -0.0000027832,0.0000027792,0.0000027829,0.0000027912,0.0000027933, -0.0000027939,0.0000027944,0.0000027894,0.0000027803,0.0000027784, -0.0000027862,0.0000028032,0.0000028193,0.0000028296,0.0000028379, -0.0000028470,0.0000028542,0.0000028593,0.0000028624,0.0000028646, -0.0000028674,0.0000028706,0.0000028736,0.0000028754,0.0000028757, -0.0000028734,0.0000028687,0.0000028662,0.0000028665,0.0000028669, -0.0000028671,0.0000028675,0.0000028725,0.0000028760,0.0000028774, -0.0000028849,0.0000028952,0.0000028987,0.0000028966,0.0000028897, -0.0000028835,0.0000028807,0.0000028789,0.0000028783,0.0000028769, -0.0000028755,0.0000028745,0.0000028740,0.0000028742,0.0000028738, -0.0000028726,0.0000028715,0.0000028701,0.0000028675,0.0000028636, -0.0000028598,0.0000028578,0.0000028579,0.0000028587,0.0000028592, -0.0000028580,0.0000028534,0.0000028480,0.0000028405,0.0000028340, -0.0000028300,0.0000028289,0.0000028282,0.0000028287,0.0000028308, -0.0000028367,0.0000028437,0.0000028507,0.0000028574,0.0000028624, -0.0000028646,0.0000028642,0.0000028601,0.0000028518,0.0000028415, -0.0000028275,0.0000028130,0.0000028038,0.0000028020,0.0000028035, -0.0000028041,0.0000028020,0.0000027968,0.0000027928,0.0000027936, -0.0000027974,0.0000027963,0.0000027880,0.0000027884,0.0000027994, -0.0000028026,0.0000027898,0.0000027717,0.0000027585,0.0000027502, -0.0000027486,0.0000027524,0.0000027614,0.0000027719,0.0000027781, -0.0000027790,0.0000027769,0.0000027756,0.0000027775,0.0000027806, -0.0000027800,0.0000027703,0.0000027526,0.0000027346,0.0000027246, -0.0000027246,0.0000027271,0.0000027244,0.0000027124,0.0000026994, -0.0000026932,0.0000026909,0.0000026881,0.0000026868,0.0000026934, -0.0000027176,0.0000027440,0.0000027502,0.0000027470,0.0000027484, -0.0000027562,0.0000027649,0.0000027671,0.0000027732,0.0000027859, -0.0000027868,0.0000027753,0.0000027664,0.0000027732,0.0000027851, -0.0000027946,0.0000027974,0.0000027982,0.0000027950,0.0000027892, -0.0000027830,0.0000027759,0.0000027695,0.0000027659,0.0000027641, -0.0000027654,0.0000027741,0.0000027850,0.0000027921,0.0000027969, -0.0000027998,0.0000028034,0.0000028047,0.0000027988,0.0000027900, -0.0000027811,0.0000027750,0.0000027698,0.0000027652,0.0000027673, -0.0000027769,0.0000027846,0.0000027930,0.0000027928,0.0000027896, -0.0000027877,0.0000027856,0.0000027865,0.0000027820,0.0000027761, -0.0000027698,0.0000027695,0.0000027721,0.0000027777,0.0000027766, -0.0000027737,0.0000027682,0.0000027642,0.0000027651,0.0000027751, -0.0000027855,0.0000027900,0.0000027899,0.0000027886,0.0000027906, -0.0000028004,0.0000028148,0.0000028246,0.0000028279,0.0000028278, -0.0000028196,0.0000028072,0.0000028004,0.0000028055,0.0000028174, -0.0000028280,0.0000028281,0.0000028226,0.0000028218,0.0000028307, -0.0000028402,0.0000028412,0.0000028430,0.0000028448,0.0000028476, -0.0000028519,0.0000028560,0.0000028590,0.0000028605,0.0000028614, -0.0000028625,0.0000028640,0.0000028639,0.0000028628,0.0000028604, -0.0000028548,0.0000028487,0.0000028449,0.0000028430,0.0000028440, -0.0000028470,0.0000028475,0.0000028447,0.0000028420,0.0000028424, -0.0000028441,0.0000028448,0.0000028420,0.0000028400,0.0000028401, -0.0000028440,0.0000028488,0.0000028516,0.0000028535,0.0000028549, -0.0000028560,0.0000028547,0.0000028518,0.0000028456,0.0000028358, -0.0000028276,0.0000028276,0.0000028311,0.0000028327,0.0000028303, -0.0000028242,0.0000028177,0.0000028127,0.0000028107,0.0000028099, -0.0000028118,0.0000028179,0.0000028249,0.0000028320,0.0000028407, -0.0000028502,0.0000028604,0.0000028695,0.0000028772,0.0000028832, -0.0000028870,0.0000028872,0.0000028831,0.0000028781,0.0000028761, -0.0000028742,0.0000028707,0.0000028673,0.0000028655,0.0000028639, -0.0000028626,0.0000028634,0.0000028657,0.0000028679,0.0000028709, -0.0000028710,0.0000028601,0.0000028383,0.0000028202,0.0000028148, -0.0000028194,0.0000028318,0.0000028423,0.0000028493,0.0000028513, -0.0000028496,0.0000028482,0.0000028512,0.0000028587,0.0000028663, -0.0000028705,0.0000028753,0.0000028779,0.0000028794,0.0000028778, -0.0000028730,0.0000028673,0.0000028617,0.0000028601,0.0000028608, -0.0000028635,0.0000028644,0.0000028623,0.0000028585,0.0000028531, -0.0000028482,0.0000028459,0.0000028443,0.0000028430,0.0000028435, -0.0000028469,0.0000028519,0.0000028580,0.0000028657,0.0000028757, -0.0000028848,0.0000028894,0.0000028906,0.0000028908,0.0000028900, -0.0000028874,0.0000028815,0.0000028719,0.0000028629,0.0000028530, -0.0000028570,0.0000028637,0.0000028693,0.0000028736,0.0000028761, -0.0000028761,0.0000028741,0.0000028696,0.0000028621,0.0000028534, -0.0000028475,0.0000028459,0.0000028458,0.0000028442,0.0000028386, -0.0000028308,0.0000028235,0.0000028209,0.0000028253,0.0000028326, -0.0000028360,0.0000028339,0.0000028251,0.0000028132,0.0000028052, -0.0000028046,0.0000028118,0.0000028225,0.0000028310,0.0000028340, -0.0000028308,0.0000028229,0.0000028176,0.0000028165,0.0000028152, -0.0000028115,0.0000028089,0.0000028080,0.0000028072,0.0000028087, -0.0000028093,0.0000027990,0.0000027843,0.0000027773,0.0000027786, -0.0000027839,0.0000027919,0.0000028003,0.0000028042,0.0000028062, -0.0000028127,0.0000028216,0.0000028267,0.0000028263,0.0000028208, -0.0000028109,0.0000028047,0.0000028094,0.0000028209,0.0000028285, -0.0000028276,0.0000028193,0.0000028137,0.0000028114,0.0000028139, -0.0000028127,0.0000028098,0.0000028096,0.0000028126,0.0000028208, -0.0000028266,0.0000028294,0.0000028315,0.0000028211,0.0000028005, -0.0000027823,0.0000027696,0.0000027705,0.0000027892,0.0000028065, -0.0000028092,0.0000028061,0.0000028025,0.0000028000,0.0000027943, -0.0000027840,0.0000027753,0.0000027721,0.0000027726,0.0000027734, -0.0000027728,0.0000027723,0.0000027700,0.0000027666,0.0000027622, -0.0000027595,0.0000027605,0.0000027644,0.0000027697,0.0000027750, -0.0000027786,0.0000027806,0.0000027821,0.0000027840,0.0000027865, -0.0000027879,0.0000027854,0.0000027778,0.0000027664,0.0000027541, -0.0000027453,0.0000027438,0.0000027490,0.0000027571,0.0000027655, -0.0000027705,0.0000027712,0.0000027674,0.0000027592,0.0000027521, -0.0000027530,0.0000027645,0.0000027815,0.0000027971,0.0000028105, -0.0000028267,0.0000028422,0.0000028455,0.0000028302,0.0000028054, -0.0000027918,0.0000027940,0.0000028064,0.0000028187,0.0000028149, -0.0000027949,0.0000027787,0.0000027758,0.0000027812,0.0000027991, -0.0000028225,0.0000028346,0.0000028337,0.0000028344,0.0000028465, -0.0000028641,0.0000028778,0.0000028893,0.0000029066,0.0000029269, -0.0000029382,0.0000029392,0.0000029410,0.0000029455,0.0000029456, -0.0000029382,0.0000029256,0.0000029128,0.0000029041,0.0000029009, -0.0000028991,0.0000028954,0.0000028884,0.0000028788,0.0000028719, -0.0000028719,0.0000028785,0.0000028866,0.0000028895,0.0000028853, -0.0000028762,0.0000028698,0.0000028687,0.0000028695,0.0000028705, -0.0000028703,0.0000028659,0.0000028554,0.0000028438,0.0000028368, -0.0000028348,0.0000028362,0.0000028452,0.0000028599,0.0000028723, -0.0000028788,0.0000028807,0.0000028787,0.0000028733,0.0000028698, -0.0000028710,0.0000028747,0.0000028771,0.0000028775,0.0000028775, -0.0000028767,0.0000028736,0.0000028689,0.0000028642,0.0000028583, -0.0000028517,0.0000028470,0.0000028438,0.0000028421,0.0000028414, -0.0000028409,0.0000028416,0.0000028421,0.0000028416,0.0000028413, -0.0000028407,0.0000028396,0.0000028383,0.0000028370,0.0000028358, -0.0000028353,0.0000028344,0.0000028322,0.0000028301,0.0000028282, -0.0000028271,0.0000028264,0.0000028258,0.0000028229,0.0000028194, -0.0000028136,0.0000028090,0.0000028041,0.0000027995,0.0000027947, -0.0000027897,0.0000027849,0.0000027827,0.0000027822,0.0000027798, -0.0000027739,0.0000027659,0.0000027615,0.0000027629,0.0000027703, -0.0000027788,0.0000027840,0.0000027860,0.0000027866,0.0000027875, -0.0000027898,0.0000027941,0.0000028048,0.0000028187,0.0000028269, -0.0000028254,0.0000028192,0.0000028163,0.0000028162,0.0000028175, -0.0000028228,0.0000028324,0.0000028365,0.0000028287,0.0000028144, -0.0000028090,0.0000028096,0.0000028073,0.0000027975,0.0000027855, -0.0000027807,0.0000027853,0.0000027925,0.0000027929,0.0000027947, -0.0000027966,0.0000027923,0.0000027834,0.0000027824,0.0000027917, -0.0000028080,0.0000028213,0.0000028292,0.0000028354,0.0000028442, -0.0000028530,0.0000028606,0.0000028652,0.0000028681,0.0000028702, -0.0000028714,0.0000028741,0.0000028764,0.0000028787,0.0000028792, -0.0000028756,0.0000028692,0.0000028631,0.0000028593,0.0000028610, -0.0000028650,0.0000028706,0.0000028741,0.0000028736,0.0000028775, -0.0000028904,0.0000028995,0.0000029024,0.0000028981,0.0000028943, -0.0000028919,0.0000028914,0.0000028907,0.0000028888,0.0000028875, -0.0000028877,0.0000028892,0.0000028907,0.0000028914,0.0000028902, -0.0000028880,0.0000028851,0.0000028816,0.0000028780,0.0000028746, -0.0000028729,0.0000028738,0.0000028753,0.0000028755,0.0000028734, -0.0000028675,0.0000028609,0.0000028523,0.0000028449,0.0000028398, -0.0000028372,0.0000028355,0.0000028355,0.0000028364,0.0000028406, -0.0000028470,0.0000028534,0.0000028598,0.0000028646,0.0000028664, -0.0000028655,0.0000028601,0.0000028500,0.0000028384,0.0000028233, -0.0000028093,0.0000028014,0.0000028006,0.0000028020,0.0000028018, -0.0000027992,0.0000027950,0.0000027917,0.0000027920,0.0000027954, -0.0000027972,0.0000027906,0.0000027831,0.0000027860,0.0000027998, -0.0000028010,0.0000027854,0.0000027651,0.0000027525,0.0000027468, -0.0000027486,0.0000027572,0.0000027695,0.0000027797,0.0000027833, -0.0000027819,0.0000027794,0.0000027801,0.0000027854,0.0000027881, -0.0000027838,0.0000027677,0.0000027464,0.0000027313,0.0000027275, -0.0000027304,0.0000027305,0.0000027213,0.0000027057,0.0000026963, -0.0000026932,0.0000026903,0.0000026882,0.0000026932,0.0000027153, -0.0000027429,0.0000027501,0.0000027455,0.0000027460,0.0000027549, -0.0000027640,0.0000027658,0.0000027666,0.0000027794,0.0000027863, -0.0000027806,0.0000027727,0.0000027760,0.0000027877,0.0000027966, -0.0000028000,0.0000028009,0.0000027982,0.0000027921,0.0000027863, -0.0000027799,0.0000027737,0.0000027719,0.0000027713,0.0000027709, -0.0000027741,0.0000027817,0.0000027868,0.0000027860,0.0000027792, -0.0000027737,0.0000027716,0.0000027707,0.0000027707,0.0000027721, -0.0000027733,0.0000027740,0.0000027735,0.0000027712,0.0000027719, -0.0000027789,0.0000027853,0.0000027894,0.0000027900,0.0000027865, -0.0000027807,0.0000027809,0.0000027841,0.0000027815,0.0000027758, -0.0000027673,0.0000027659,0.0000027730,0.0000027838,0.0000027864, -0.0000027844,0.0000027769,0.0000027688,0.0000027669,0.0000027771, -0.0000027897,0.0000027968,0.0000027976,0.0000027947,0.0000027943, -0.0000028009,0.0000028134,0.0000028239,0.0000028288,0.0000028298, -0.0000028229,0.0000028098,0.0000028005,0.0000028042,0.0000028173, -0.0000028315,0.0000028340,0.0000028279,0.0000028217,0.0000028271, -0.0000028392,0.0000028438,0.0000028469,0.0000028503,0.0000028529, -0.0000028561,0.0000028618,0.0000028686,0.0000028725,0.0000028728, -0.0000028719,0.0000028733,0.0000028732,0.0000028717,0.0000028691, -0.0000028641,0.0000028579,0.0000028528,0.0000028498,0.0000028497, -0.0000028534,0.0000028566,0.0000028555,0.0000028530,0.0000028525, -0.0000028548,0.0000028572,0.0000028576,0.0000028548,0.0000028502, -0.0000028447,0.0000028434,0.0000028415,0.0000028423,0.0000028449, -0.0000028510,0.0000028556,0.0000028572,0.0000028554,0.0000028509, -0.0000028415,0.0000028326,0.0000028308,0.0000028328,0.0000028339, -0.0000028318,0.0000028267,0.0000028207,0.0000028156,0.0000028136, -0.0000028138,0.0000028158,0.0000028205,0.0000028255,0.0000028306, -0.0000028367,0.0000028443,0.0000028537,0.0000028635,0.0000028729, -0.0000028816,0.0000028875,0.0000028892,0.0000028861,0.0000028806, -0.0000028769,0.0000028732,0.0000028696,0.0000028666,0.0000028630, -0.0000028590,0.0000028552,0.0000028512,0.0000028463,0.0000028437, -0.0000028484,0.0000028565,0.0000028623,0.0000028595,0.0000028466, -0.0000028274,0.0000028160,0.0000028169,0.0000028236,0.0000028316, -0.0000028347,0.0000028340,0.0000028341,0.0000028396,0.0000028492, -0.0000028590,0.0000028636,0.0000028678,0.0000028712,0.0000028740, -0.0000028732,0.0000028698,0.0000028656,0.0000028609,0.0000028594, -0.0000028599,0.0000028608,0.0000028619,0.0000028624,0.0000028618, -0.0000028582,0.0000028523,0.0000028475,0.0000028437,0.0000028416, -0.0000028425,0.0000028465,0.0000028513,0.0000028560,0.0000028614, -0.0000028699,0.0000028790,0.0000028854,0.0000028882,0.0000028889, -0.0000028884,0.0000028855,0.0000028774,0.0000028650,0.0000028553, -0.0000028476,0.0000028542,0.0000028619,0.0000028689,0.0000028737, -0.0000028757,0.0000028754,0.0000028722,0.0000028661,0.0000028570, -0.0000028479,0.0000028433,0.0000028427,0.0000028420,0.0000028393, -0.0000028340,0.0000028272,0.0000028221,0.0000028212,0.0000028258, -0.0000028317,0.0000028335,0.0000028283,0.0000028179,0.0000028075, -0.0000028022,0.0000028042,0.0000028127,0.0000028218,0.0000028267, -0.0000028274,0.0000028229,0.0000028154,0.0000028106,0.0000028093, -0.0000028071,0.0000028026,0.0000028008,0.0000028024,0.0000028052, -0.0000028086,0.0000028088,0.0000027978,0.0000027833,0.0000027770, -0.0000027787,0.0000027847,0.0000027902,0.0000027951,0.0000027995, -0.0000028028,0.0000028102,0.0000028202,0.0000028268,0.0000028269, -0.0000028221,0.0000028106,0.0000028027,0.0000028056,0.0000028189, -0.0000028299,0.0000028334,0.0000028277,0.0000028193,0.0000028150, -0.0000028163,0.0000028155,0.0000028102,0.0000028078,0.0000028099, -0.0000028171,0.0000028258,0.0000028291,0.0000028294,0.0000028284, -0.0000028125,0.0000027924,0.0000027802,0.0000027757,0.0000027810, -0.0000028003,0.0000028150,0.0000028169,0.0000028158,0.0000028154, -0.0000028142,0.0000028076,0.0000027973,0.0000027889,0.0000027844, -0.0000027819,0.0000027788,0.0000027756,0.0000027729,0.0000027696, -0.0000027650,0.0000027611,0.0000027605,0.0000027622,0.0000027655, -0.0000027689,0.0000027715,0.0000027729,0.0000027740,0.0000027770, -0.0000027812,0.0000027863,0.0000027889,0.0000027870,0.0000027796, -0.0000027689,0.0000027570,0.0000027480,0.0000027459,0.0000027496, -0.0000027550,0.0000027612,0.0000027656,0.0000027668,0.0000027646, -0.0000027583,0.0000027523,0.0000027535,0.0000027650,0.0000027836, -0.0000028016,0.0000028148,0.0000028281,0.0000028417,0.0000028447, -0.0000028288,0.0000028037,0.0000027897,0.0000027917,0.0000028050, -0.0000028195,0.0000028162,0.0000027971,0.0000027815,0.0000027786, -0.0000027868,0.0000028082,0.0000028314,0.0000028399,0.0000028393, -0.0000028423,0.0000028556,0.0000028724,0.0000028853,0.0000028965, -0.0000029127,0.0000029319,0.0000029437,0.0000029469,0.0000029503, -0.0000029534,0.0000029505,0.0000029413,0.0000029301,0.0000029194, -0.0000029117,0.0000029075,0.0000029043,0.0000029002,0.0000028932, -0.0000028833,0.0000028762,0.0000028765,0.0000028827,0.0000028902, -0.0000028945,0.0000028919,0.0000028823,0.0000028736,0.0000028698, -0.0000028691,0.0000028696,0.0000028699,0.0000028667,0.0000028574, -0.0000028455,0.0000028379,0.0000028362,0.0000028394,0.0000028485, -0.0000028617,0.0000028718,0.0000028754,0.0000028757,0.0000028726, -0.0000028658,0.0000028592,0.0000028579,0.0000028603,0.0000028634, -0.0000028649,0.0000028655,0.0000028652,0.0000028620,0.0000028550, -0.0000028466,0.0000028392,0.0000028337,0.0000028313,0.0000028300, -0.0000028302,0.0000028319,0.0000028354,0.0000028400,0.0000028442, -0.0000028466,0.0000028479,0.0000028483,0.0000028476,0.0000028468, -0.0000028457,0.0000028443,0.0000028426,0.0000028409,0.0000028387, -0.0000028352,0.0000028320,0.0000028285,0.0000028258,0.0000028233, -0.0000028215,0.0000028200,0.0000028181,0.0000028155,0.0000028134, -0.0000028109,0.0000028062,0.0000028002,0.0000027920,0.0000027846, -0.0000027816,0.0000027826,0.0000027833,0.0000027797,0.0000027723, -0.0000027673,0.0000027676,0.0000027735,0.0000027816,0.0000027868, -0.0000027886,0.0000027884,0.0000027878,0.0000027886,0.0000027914, -0.0000028018,0.0000028175,0.0000028279,0.0000028275,0.0000028220, -0.0000028192,0.0000028188,0.0000028197,0.0000028255,0.0000028367, -0.0000028418,0.0000028335,0.0000028171,0.0000028099,0.0000028102, -0.0000028082,0.0000027997,0.0000027878,0.0000027825,0.0000027877, -0.0000027933,0.0000027922,0.0000027946,0.0000027973,0.0000027950, -0.0000027877,0.0000027873,0.0000027973,0.0000028129,0.0000028239, -0.0000028305,0.0000028355,0.0000028443,0.0000028547,0.0000028645, -0.0000028691,0.0000028703,0.0000028701,0.0000028685,0.0000028681, -0.0000028700,0.0000028745,0.0000028785,0.0000028808,0.0000028779, -0.0000028663,0.0000028552,0.0000028542,0.0000028617,0.0000028691, -0.0000028738,0.0000028721,0.0000028724,0.0000028843,0.0000028989, -0.0000029056,0.0000029063,0.0000029034,0.0000029021,0.0000029024, -0.0000029013,0.0000028998,0.0000028996,0.0000029019,0.0000029049, -0.0000029066,0.0000029065,0.0000029037,0.0000028989,0.0000028929, -0.0000028865,0.0000028816,0.0000028784,0.0000028765,0.0000028771, -0.0000028787,0.0000028786,0.0000028760,0.0000028702,0.0000028642, -0.0000028561,0.0000028483,0.0000028427,0.0000028396,0.0000028386, -0.0000028388,0.0000028392,0.0000028419,0.0000028472,0.0000028528, -0.0000028589,0.0000028630,0.0000028641,0.0000028622,0.0000028558, -0.0000028458,0.0000028342,0.0000028191,0.0000028035,0.0000027956, -0.0000027957,0.0000027976,0.0000027969,0.0000027927,0.0000027879, -0.0000027859,0.0000027887,0.0000027932,0.0000027951,0.0000027914, -0.0000027822,0.0000027764,0.0000027830,0.0000027982,0.0000028000, -0.0000027842,0.0000027620,0.0000027482,0.0000027466,0.0000027523, -0.0000027641,0.0000027768,0.0000027855,0.0000027866,0.0000027844, -0.0000027835,0.0000027870,0.0000027928,0.0000027935,0.0000027839, -0.0000027622,0.0000027416,0.0000027330,0.0000027337,0.0000027358, -0.0000027303,0.0000027149,0.0000027016,0.0000026962,0.0000026933, -0.0000026912,0.0000026949,0.0000027142,0.0000027415,0.0000027530, -0.0000027464,0.0000027436,0.0000027526,0.0000027641,0.0000027658, -0.0000027629,0.0000027719,0.0000027840,0.0000027838,0.0000027788, -0.0000027793,0.0000027883,0.0000027980,0.0000028012,0.0000028026, -0.0000028000,0.0000027950,0.0000027904,0.0000027877,0.0000027841, -0.0000027833,0.0000027842,0.0000027828,0.0000027794,0.0000027771, -0.0000027769,0.0000027719,0.0000027634,0.0000027553,0.0000027526, -0.0000027563,0.0000027628,0.0000027706,0.0000027774,0.0000027829, -0.0000027840,0.0000027815,0.0000027765,0.0000027728,0.0000027741, -0.0000027785,0.0000027806,0.0000027825,0.0000027786,0.0000027735, -0.0000027743,0.0000027781,0.0000027788,0.0000027762,0.0000027680, -0.0000027677,0.0000027791,0.0000027941,0.0000027973,0.0000027933, -0.0000027854,0.0000027765,0.0000027746,0.0000027859,0.0000028009, -0.0000028104,0.0000028109,0.0000028068,0.0000028049,0.0000028094, -0.0000028189,0.0000028288,0.0000028354,0.0000028361,0.0000028288, -0.0000028149,0.0000028054,0.0000028070,0.0000028196,0.0000028342, -0.0000028401,0.0000028347,0.0000028247,0.0000028232,0.0000028339, -0.0000028426,0.0000028482,0.0000028544,0.0000028586,0.0000028608, -0.0000028669,0.0000028750,0.0000028780,0.0000028770,0.0000028755, -0.0000028783,0.0000028813,0.0000028815,0.0000028794,0.0000028739, -0.0000028659,0.0000028599,0.0000028559,0.0000028538,0.0000028547, -0.0000028570,0.0000028564,0.0000028533,0.0000028525,0.0000028550, -0.0000028585,0.0000028604,0.0000028617,0.0000028622,0.0000028618, -0.0000028576,0.0000028498,0.0000028409,0.0000028380,0.0000028394, -0.0000028446,0.0000028484,0.0000028509,0.0000028514,0.0000028490, -0.0000028423,0.0000028349,0.0000028331,0.0000028349,0.0000028357, -0.0000028338,0.0000028299,0.0000028251,0.0000028205,0.0000028177, -0.0000028162,0.0000028134,0.0000028100,0.0000028087,0.0000028108, -0.0000028171,0.0000028272,0.0000028385,0.0000028496,0.0000028601, -0.0000028703,0.0000028782,0.0000028816,0.0000028800,0.0000028764, -0.0000028723,0.0000028682,0.0000028647,0.0000028628,0.0000028597, -0.0000028543,0.0000028495,0.0000028454,0.0000028396,0.0000028327, -0.0000028286,0.0000028305,0.0000028390,0.0000028495,0.0000028560, -0.0000028505,0.0000028353,0.0000028200,0.0000028124,0.0000028118, -0.0000028165,0.0000028198,0.0000028201,0.0000028245,0.0000028342, -0.0000028464,0.0000028540,0.0000028591,0.0000028631,0.0000028655, -0.0000028650,0.0000028635,0.0000028618,0.0000028589,0.0000028592, -0.0000028604,0.0000028612,0.0000028606,0.0000028615,0.0000028636, -0.0000028645,0.0000028610,0.0000028537,0.0000028453,0.0000028406, -0.0000028409,0.0000028456,0.0000028503,0.0000028540,0.0000028576, -0.0000028645,0.0000028730,0.0000028805,0.0000028850,0.0000028860, -0.0000028854,0.0000028812,0.0000028701,0.0000028555,0.0000028472, -0.0000028471,0.0000028554,0.0000028635,0.0000028705,0.0000028746, -0.0000028748,0.0000028719,0.0000028657,0.0000028563,0.0000028454, -0.0000028372,0.0000028348,0.0000028354,0.0000028350,0.0000028330, -0.0000028296,0.0000028253,0.0000028218,0.0000028227,0.0000028259, -0.0000028295,0.0000028289,0.0000028216,0.0000028115,0.0000028048, -0.0000028028,0.0000028070,0.0000028153,0.0000028214,0.0000028226, -0.0000028206,0.0000028150,0.0000028087,0.0000028053,0.0000028033, -0.0000027995,0.0000027941,0.0000027908,0.0000027930,0.0000027990, -0.0000028056,0.0000028068,0.0000027963,0.0000027820,0.0000027756, -0.0000027778,0.0000027857,0.0000027914,0.0000027930,0.0000027963, -0.0000027992,0.0000028073,0.0000028181,0.0000028254,0.0000028280, -0.0000028251,0.0000028149,0.0000028045,0.0000028035,0.0000028147, -0.0000028278,0.0000028339,0.0000028304,0.0000028208,0.0000028145, -0.0000028133,0.0000028143,0.0000028109,0.0000028063,0.0000028064, -0.0000028109,0.0000028191,0.0000028267,0.0000028278,0.0000028254, -0.0000028203,0.0000028049,0.0000027907,0.0000027851,0.0000027844, -0.0000027919,0.0000028105,0.0000028231,0.0000028257,0.0000028262, -0.0000028268,0.0000028247,0.0000028176,0.0000028088,0.0000028009, -0.0000027946,0.0000027888,0.0000027829,0.0000027791,0.0000027749, -0.0000027712,0.0000027675,0.0000027658,0.0000027660,0.0000027665, -0.0000027674,0.0000027677,0.0000027672,0.0000027670,0.0000027692, -0.0000027750,0.0000027820,0.0000027878,0.0000027892,0.0000027866, -0.0000027799,0.0000027700,0.0000027589,0.0000027501,0.0000027475, -0.0000027493,0.0000027519,0.0000027561,0.0000027611,0.0000027641, -0.0000027631,0.0000027590,0.0000027547,0.0000027565,0.0000027681, -0.0000027875,0.0000028069,0.0000028197,0.0000028297,0.0000028400, -0.0000028419,0.0000028261,0.0000028008,0.0000027866,0.0000027891, -0.0000028045,0.0000028197,0.0000028170,0.0000027989,0.0000027841, -0.0000027816,0.0000027928,0.0000028169,0.0000028389,0.0000028447, -0.0000028451,0.0000028494,0.0000028623,0.0000028783,0.0000028914, -0.0000029027,0.0000029177,0.0000029361,0.0000029490,0.0000029543, -0.0000029585,0.0000029605,0.0000029563,0.0000029459,0.0000029347, -0.0000029250,0.0000029179,0.0000029127,0.0000029077,0.0000029030, -0.0000028965,0.0000028869,0.0000028794,0.0000028793,0.0000028844, -0.0000028905,0.0000028960,0.0000028958,0.0000028882,0.0000028779, -0.0000028713,0.0000028687,0.0000028691,0.0000028704,0.0000028689, -0.0000028624,0.0000028513,0.0000028424,0.0000028404,0.0000028439, -0.0000028520,0.0000028625,0.0000028707,0.0000028733,0.0000028726, -0.0000028687,0.0000028619,0.0000028537,0.0000028482,0.0000028471, -0.0000028482,0.0000028494,0.0000028503,0.0000028500,0.0000028463, -0.0000028379,0.0000028269,0.0000028178,0.0000028133,0.0000028135, -0.0000028163,0.0000028197,0.0000028250,0.0000028319,0.0000028407, -0.0000028481,0.0000028523,0.0000028543,0.0000028542,0.0000028521, -0.0000028507,0.0000028497,0.0000028485,0.0000028468,0.0000028450, -0.0000028428,0.0000028416,0.0000028388,0.0000028356,0.0000028318, -0.0000028270,0.0000028214,0.0000028166,0.0000028120,0.0000028107, -0.0000028109,0.0000028120,0.0000028120,0.0000028108,0.0000028059, -0.0000027974,0.0000027881,0.0000027835,0.0000027843,0.0000027861, -0.0000027839,0.0000027771,0.0000027721,0.0000027719,0.0000027755, -0.0000027825,0.0000027881,0.0000027898,0.0000027887,0.0000027867, -0.0000027862,0.0000027883,0.0000028001,0.0000028177,0.0000028281, -0.0000028279,0.0000028228,0.0000028208,0.0000028207,0.0000028216, -0.0000028279,0.0000028402,0.0000028461,0.0000028370,0.0000028192, -0.0000028106,0.0000028102,0.0000028078,0.0000028010,0.0000027907, -0.0000027856,0.0000027904,0.0000027941,0.0000027916,0.0000027938, -0.0000027971,0.0000027967,0.0000027918,0.0000027922,0.0000028031, -0.0000028180,0.0000028278,0.0000028339,0.0000028389,0.0000028474, -0.0000028581,0.0000028667,0.0000028686,0.0000028674,0.0000028641, -0.0000028608,0.0000028590,0.0000028600,0.0000028634,0.0000028692, -0.0000028776,0.0000028833,0.0000028756,0.0000028569,0.0000028494, -0.0000028567,0.0000028677,0.0000028737,0.0000028731,0.0000028693, -0.0000028780,0.0000028953,0.0000029064,0.0000029108,0.0000029096, -0.0000029095,0.0000029097,0.0000029086,0.0000029081,0.0000029091, -0.0000029123,0.0000029152,0.0000029158,0.0000029136,0.0000029072, -0.0000029001,0.0000028904,0.0000028811,0.0000028736,0.0000028696, -0.0000028679,0.0000028691,0.0000028697,0.0000028686,0.0000028657, -0.0000028600,0.0000028539,0.0000028463,0.0000028391,0.0000028333, -0.0000028312,0.0000028317,0.0000028342,0.0000028356,0.0000028381, -0.0000028426,0.0000028482,0.0000028532,0.0000028568,0.0000028575, -0.0000028554,0.0000028493,0.0000028397,0.0000028277,0.0000028122, -0.0000027942,0.0000027850,0.0000027860,0.0000027900,0.0000027903, -0.0000027856,0.0000027791,0.0000027767,0.0000027796,0.0000027879, -0.0000027920,0.0000027888,0.0000027806,0.0000027723,0.0000027706, -0.0000027792,0.0000027943,0.0000027972,0.0000027857,0.0000027639, -0.0000027492,0.0000027487,0.0000027567,0.0000027698,0.0000027819, -0.0000027878,0.0000027889,0.0000027884,0.0000027894,0.0000027934, -0.0000027973,0.0000027960,0.0000027804,0.0000027568,0.0000027409, -0.0000027384,0.0000027399,0.0000027370,0.0000027245,0.0000027096, -0.0000027009,0.0000026969,0.0000026951,0.0000026977,0.0000027138, -0.0000027396,0.0000027551,0.0000027502,0.0000027422,0.0000027483, -0.0000027620,0.0000027677,0.0000027620,0.0000027652,0.0000027799, -0.0000027846,0.0000027836,0.0000027832,0.0000027881,0.0000027982, -0.0000028027,0.0000028030,0.0000028017,0.0000027974,0.0000027959, -0.0000027960,0.0000027971,0.0000027971,0.0000027959,0.0000027925, -0.0000027841,0.0000027758,0.0000027695,0.0000027653,0.0000027612, -0.0000027575,0.0000027540,0.0000027570,0.0000027648,0.0000027746, -0.0000027848,0.0000027891,0.0000027897,0.0000027865,0.0000027831, -0.0000027764,0.0000027711,0.0000027711,0.0000027761,0.0000027794, -0.0000027826,0.0000027804,0.0000027763,0.0000027771,0.0000027804, -0.0000027825,0.0000027829,0.0000027779,0.0000027768,0.0000027876, -0.0000028017,0.0000028077,0.0000028036,0.0000027971,0.0000027896, -0.0000027884,0.0000027993,0.0000028157,0.0000028261,0.0000028263, -0.0000028224,0.0000028204,0.0000028230,0.0000028299,0.0000028396, -0.0000028467,0.0000028456,0.0000028360,0.0000028215,0.0000028131, -0.0000028141,0.0000028265,0.0000028397,0.0000028457,0.0000028414, -0.0000028297,0.0000028210,0.0000028258,0.0000028365,0.0000028470, -0.0000028565,0.0000028624,0.0000028655,0.0000028724,0.0000028788, -0.0000028788,0.0000028762,0.0000028763,0.0000028809,0.0000028868, -0.0000028884,0.0000028860,0.0000028790,0.0000028694,0.0000028620, -0.0000028577,0.0000028549,0.0000028521,0.0000028508,0.0000028494, -0.0000028467,0.0000028469,0.0000028520,0.0000028573,0.0000028589, -0.0000028597,0.0000028611,0.0000028639,0.0000028673,0.0000028685, -0.0000028642,0.0000028538,0.0000028461,0.0000028421,0.0000028414, -0.0000028385,0.0000028380,0.0000028386,0.0000028379,0.0000028319, -0.0000028252,0.0000028241,0.0000028253,0.0000028251,0.0000028227, -0.0000028191,0.0000028145,0.0000028094,0.0000028049,0.0000028002, -0.0000027952,0.0000027916,0.0000027940,0.0000028051,0.0000028200, -0.0000028348,0.0000028474,0.0000028578,0.0000028661,0.0000028730, -0.0000028767,0.0000028755,0.0000028707,0.0000028654,0.0000028606, -0.0000028560,0.0000028528,0.0000028522,0.0000028517,0.0000028502, -0.0000028479,0.0000028445,0.0000028384,0.0000028319,0.0000028276, -0.0000028231,0.0000028205,0.0000028223,0.0000028346,0.0000028466, -0.0000028507,0.0000028418,0.0000028239,0.0000028087,0.0000028008, -0.0000028002,0.0000028056,0.0000028117,0.0000028188,0.0000028306, -0.0000028407,0.0000028485,0.0000028531,0.0000028552,0.0000028550, -0.0000028533,0.0000028524,0.0000028520,0.0000028548,0.0000028589, -0.0000028615,0.0000028604,0.0000028600,0.0000028630,0.0000028674, -0.0000028689,0.0000028628,0.0000028510,0.0000028415,0.0000028406, -0.0000028447,0.0000028492,0.0000028522,0.0000028545,0.0000028596, -0.0000028673,0.0000028758,0.0000028820,0.0000028830,0.0000028820, -0.0000028757,0.0000028608,0.0000028462,0.0000028421,0.0000028495, -0.0000028568,0.0000028637,0.0000028692,0.0000028708,0.0000028676, -0.0000028604,0.0000028511,0.0000028403,0.0000028312,0.0000028274, -0.0000028278,0.0000028294,0.0000028301,0.0000028303,0.0000028289, -0.0000028265,0.0000028246,0.0000028260,0.0000028271,0.0000028276, -0.0000028245,0.0000028172,0.0000028095,0.0000028057,0.0000028068, -0.0000028126,0.0000028195,0.0000028222,0.0000028203,0.0000028133, -0.0000028040,0.0000027971,0.0000027948,0.0000027937,0.0000027916, -0.0000027886,0.0000027852,0.0000027864,0.0000027926,0.0000027998, -0.0000028024,0.0000027930,0.0000027785,0.0000027723,0.0000027760, -0.0000027849,0.0000027920,0.0000027936,0.0000027945,0.0000027972, -0.0000028038,0.0000028142,0.0000028230,0.0000028268,0.0000028262, -0.0000028196,0.0000028092,0.0000028059,0.0000028136,0.0000028246, -0.0000028306,0.0000028288,0.0000028203,0.0000028106,0.0000028060, -0.0000028073,0.0000028063,0.0000028030,0.0000028033,0.0000028067, -0.0000028119,0.0000028179,0.0000028237,0.0000028227,0.0000028181, -0.0000028142,0.0000028038,0.0000027953,0.0000027932,0.0000027931, -0.0000028023,0.0000028190,0.0000028305,0.0000028343,0.0000028352, -0.0000028346,0.0000028297,0.0000028213,0.0000028119,0.0000028031, -0.0000027950,0.0000027882,0.0000027836,0.0000027796,0.0000027767, -0.0000027738,0.0000027709,0.0000027685,0.0000027666,0.0000027648, -0.0000027629,0.0000027609,0.0000027595,0.0000027602,0.0000027657, -0.0000027749,0.0000027836,0.0000027883,0.0000027893,0.0000027863, -0.0000027797,0.0000027706,0.0000027611,0.0000027537,0.0000027510, -0.0000027507,0.0000027513,0.0000027545,0.0000027603,0.0000027647, -0.0000027652,0.0000027623,0.0000027603,0.0000027627,0.0000027743, -0.0000027933,0.0000028124,0.0000028239,0.0000028308,0.0000028374, -0.0000028381,0.0000028226,0.0000027974,0.0000027834,0.0000027875, -0.0000028040,0.0000028193,0.0000028171,0.0000027999,0.0000027864, -0.0000027852,0.0000027989,0.0000028250,0.0000028454,0.0000028497, -0.0000028500,0.0000028546,0.0000028670,0.0000028824,0.0000028963, -0.0000029081,0.0000029224,0.0000029403,0.0000029542,0.0000029607, -0.0000029653,0.0000029673,0.0000029631,0.0000029517,0.0000029391, -0.0000029288,0.0000029218,0.0000029163,0.0000029094,0.0000029026, -0.0000028969,0.0000028899,0.0000028829,0.0000028808,0.0000028838, -0.0000028897,0.0000028952,0.0000028970,0.0000028935,0.0000028836, -0.0000028748,0.0000028698,0.0000028689,0.0000028699,0.0000028702, -0.0000028673,0.0000028601,0.0000028519,0.0000028482,0.0000028505, -0.0000028572,0.0000028639,0.0000028690,0.0000028726,0.0000028734, -0.0000028702,0.0000028639,0.0000028560,0.0000028486,0.0000028446, -0.0000028412,0.0000028391,0.0000028375,0.0000028359,0.0000028319, -0.0000028239,0.0000028134,0.0000028051,0.0000028027,0.0000028067, -0.0000028113,0.0000028186,0.0000028248,0.0000028331,0.0000028427, -0.0000028504,0.0000028540,0.0000028549,0.0000028536,0.0000028506, -0.0000028475,0.0000028441,0.0000028424,0.0000028412,0.0000028403, -0.0000028399,0.0000028398,0.0000028400,0.0000028388,0.0000028363, -0.0000028338,0.0000028293,0.0000028226,0.0000028149,0.0000028097, -0.0000028083,0.0000028082,0.0000028098,0.0000028103,0.0000028096, -0.0000028066,0.0000028008,0.0000027936,0.0000027882,0.0000027874, -0.0000027888,0.0000027863,0.0000027790,0.0000027743,0.0000027735, -0.0000027753,0.0000027816,0.0000027877,0.0000027889,0.0000027872, -0.0000027843,0.0000027826,0.0000027857,0.0000028006,0.0000028191, -0.0000028278,0.0000028264,0.0000028219,0.0000028211,0.0000028220, -0.0000028232,0.0000028299,0.0000028430,0.0000028493,0.0000028396, -0.0000028208,0.0000028111,0.0000028097,0.0000028073,0.0000028027, -0.0000027948,0.0000027900,0.0000027938,0.0000027956,0.0000027917, -0.0000027930,0.0000027960,0.0000027967,0.0000027955,0.0000027978, -0.0000028090,0.0000028225,0.0000028323,0.0000028388,0.0000028447, -0.0000028519,0.0000028593,0.0000028631,0.0000028620,0.0000028591, -0.0000028572,0.0000028566,0.0000028555,0.0000028562,0.0000028570, -0.0000028597,0.0000028682,0.0000028817,0.0000028840,0.0000028662, -0.0000028497,0.0000028516,0.0000028643,0.0000028734,0.0000028750, -0.0000028696,0.0000028733,0.0000028888,0.0000029042,0.0000029116, -0.0000029136,0.0000029133,0.0000029134,0.0000029127,0.0000029117, -0.0000029121,0.0000029139,0.0000029163,0.0000029150,0.0000029098, -0.0000029013,0.0000028914,0.0000028798,0.0000028673,0.0000028571, -0.0000028526,0.0000028519,0.0000028542,0.0000028560,0.0000028561, -0.0000028539,0.0000028487,0.0000028421,0.0000028336,0.0000028237, -0.0000028157,0.0000028122,0.0000028134,0.0000028176,0.0000028208, -0.0000028245,0.0000028293,0.0000028354,0.0000028406,0.0000028453, -0.0000028470,0.0000028463,0.0000028414,0.0000028318,0.0000028185, -0.0000028017,0.0000027823,0.0000027716,0.0000027727,0.0000027788, -0.0000027824,0.0000027800,0.0000027738,0.0000027692,0.0000027685, -0.0000027767,0.0000027862,0.0000027861,0.0000027789,0.0000027692, -0.0000027638,0.0000027652,0.0000027744,0.0000027873,0.0000027936, -0.0000027861,0.0000027705,0.0000027569,0.0000027535,0.0000027611, -0.0000027731,0.0000027836,0.0000027888,0.0000027920,0.0000027947, -0.0000027961,0.0000027982,0.0000028001,0.0000027953,0.0000027754, -0.0000027535,0.0000027433,0.0000027430,0.0000027417,0.0000027325, -0.0000027193,0.0000027087,0.0000027023,0.0000026997,0.0000027017, -0.0000027137,0.0000027366,0.0000027555,0.0000027549,0.0000027444, -0.0000027440,0.0000027567,0.0000027673,0.0000027639,0.0000027609, -0.0000027736,0.0000027842,0.0000027860,0.0000027878,0.0000027895, -0.0000027966,0.0000028037,0.0000028045,0.0000028031,0.0000028003, -0.0000027996,0.0000028028,0.0000028054,0.0000028062,0.0000028027, -0.0000027964,0.0000027872,0.0000027790,0.0000027731,0.0000027698, -0.0000027686,0.0000027681,0.0000027684,0.0000027714,0.0000027758, -0.0000027803,0.0000027845,0.0000027898,0.0000027918,0.0000027917, -0.0000027886,0.0000027833,0.0000027792,0.0000027744,0.0000027768, -0.0000027826,0.0000027866,0.0000027890,0.0000027885,0.0000027879, -0.0000027900,0.0000027940,0.0000027961,0.0000027953,0.0000027888, -0.0000027859,0.0000027963,0.0000028095,0.0000028191,0.0000028154, -0.0000028091,0.0000028029,0.0000028026,0.0000028129,0.0000028294, -0.0000028403,0.0000028423,0.0000028405,0.0000028381,0.0000028382, -0.0000028428,0.0000028510,0.0000028570,0.0000028537,0.0000028428, -0.0000028306,0.0000028242,0.0000028256,0.0000028378,0.0000028475, -0.0000028503,0.0000028464,0.0000028347,0.0000028223,0.0000028194, -0.0000028271,0.0000028432,0.0000028582,0.0000028651,0.0000028682, -0.0000028746,0.0000028810,0.0000028803,0.0000028762,0.0000028761, -0.0000028813,0.0000028877,0.0000028895,0.0000028871,0.0000028808, -0.0000028716,0.0000028632,0.0000028576,0.0000028531,0.0000028491, -0.0000028441,0.0000028402,0.0000028385,0.0000028407,0.0000028494, -0.0000028580,0.0000028612,0.0000028612,0.0000028603,0.0000028615, -0.0000028654,0.0000028698,0.0000028740,0.0000028731,0.0000028700, -0.0000028667,0.0000028602,0.0000028505,0.0000028404,0.0000028356, -0.0000028340,0.0000028289,0.0000028187,0.0000028103,0.0000028075, -0.0000028067,0.0000028047,0.0000028008,0.0000027965,0.0000027927, -0.0000027904,0.0000027919,0.0000027957,0.0000027991,0.0000028039, -0.0000028141,0.0000028276,0.0000028401,0.0000028533,0.0000028643, -0.0000028739,0.0000028821,0.0000028898,0.0000028920,0.0000028882, -0.0000028791,0.0000028685,0.0000028600,0.0000028537,0.0000028496, -0.0000028493,0.0000028513,0.0000028528,0.0000028538,0.0000028536, -0.0000028491,0.0000028430,0.0000028372,0.0000028306,0.0000028228, -0.0000028154,0.0000028155,0.0000028233,0.0000028373,0.0000028453, -0.0000028409,0.0000028259,0.0000028061,0.0000027907,0.0000027875, -0.0000027947,0.0000028053,0.0000028163,0.0000028267,0.0000028358, -0.0000028410,0.0000028435,0.0000028427,0.0000028396,0.0000028384, -0.0000028386,0.0000028418,0.0000028481,0.0000028555,0.0000028585, -0.0000028581,0.0000028603,0.0000028667,0.0000028711,0.0000028687, -0.0000028572,0.0000028449,0.0000028413,0.0000028440,0.0000028480, -0.0000028507,0.0000028522,0.0000028556,0.0000028630,0.0000028727, -0.0000028799,0.0000028805,0.0000028786,0.0000028692,0.0000028514, -0.0000028404,0.0000028418,0.0000028506,0.0000028554,0.0000028598, -0.0000028627,0.0000028613,0.0000028545,0.0000028452,0.0000028362, -0.0000028289,0.0000028251,0.0000028248,0.0000028258,0.0000028273, -0.0000028292,0.0000028304,0.0000028305,0.0000028306,0.0000028310, -0.0000028317,0.0000028309,0.0000028280,0.0000028235,0.0000028168, -0.0000028122,0.0000028121,0.0000028156,0.0000028202,0.0000028223, -0.0000028190,0.0000028090,0.0000027950,0.0000027832,0.0000027781, -0.0000027777,0.0000027793,0.0000027805,0.0000027814,0.0000027815, -0.0000027833,0.0000027883,0.0000027933,0.0000027948,0.0000027864, -0.0000027726,0.0000027675,0.0000027727,0.0000027820,0.0000027914, -0.0000027946,0.0000027943,0.0000027964,0.0000028016,0.0000028093, -0.0000028169,0.0000028222,0.0000028242,0.0000028213,0.0000028135, -0.0000028079,0.0000028127,0.0000028216,0.0000028275,0.0000028261, -0.0000028199,0.0000028102,0.0000028033,0.0000028004,0.0000027989, -0.0000027952,0.0000027950,0.0000027990,0.0000028046,0.0000028095, -0.0000028149,0.0000028194,0.0000028172,0.0000028134,0.0000028135, -0.0000028080,0.0000028023,0.0000028024,0.0000028034,0.0000028112, -0.0000028255,0.0000028363,0.0000028404,0.0000028406,0.0000028372, -0.0000028296,0.0000028193,0.0000028090,0.0000027997,0.0000027922, -0.0000027859,0.0000027816,0.0000027787,0.0000027765,0.0000027735, -0.0000027703,0.0000027669,0.0000027628,0.0000027590,0.0000027556, -0.0000027530,0.0000027526,0.0000027567,0.0000027650,0.0000027755, -0.0000027841,0.0000027893,0.0000027898,0.0000027865,0.0000027799, -0.0000027714,0.0000027641,0.0000027596,0.0000027578,0.0000027565, -0.0000027563,0.0000027594,0.0000027653,0.0000027698,0.0000027702, -0.0000027679,0.0000027671,0.0000027711,0.0000027826,0.0000027997, -0.0000028161,0.0000028264,0.0000028315,0.0000028351,0.0000028340, -0.0000028184,0.0000027942,0.0000027820,0.0000027871,0.0000028037, -0.0000028188,0.0000028171,0.0000028012,0.0000027887,0.0000027888, -0.0000028050,0.0000028325,0.0000028511,0.0000028542,0.0000028545, -0.0000028593,0.0000028705,0.0000028852,0.0000029001,0.0000029131, -0.0000029274,0.0000029446,0.0000029587,0.0000029660,0.0000029701, -0.0000029718,0.0000029691,0.0000029580,0.0000029434,0.0000029308, -0.0000029226,0.0000029175,0.0000029110,0.0000029015,0.0000028936, -0.0000028884,0.0000028841,0.0000028815,0.0000028833,0.0000028896, -0.0000028946,0.0000028968,0.0000028956,0.0000028892,0.0000028803, -0.0000028731,0.0000028697,0.0000028695,0.0000028702,0.0000028706, -0.0000028686,0.0000028645,0.0000028602,0.0000028593,0.0000028622, -0.0000028664,0.0000028689,0.0000028721,0.0000028749,0.0000028745, -0.0000028697,0.0000028631,0.0000028570,0.0000028514,0.0000028463, -0.0000028414,0.0000028364,0.0000028327,0.0000028286,0.0000028221, -0.0000028138,0.0000028078,0.0000028066,0.0000028115,0.0000028188, -0.0000028254,0.0000028306,0.0000028353,0.0000028416,0.0000028469, -0.0000028486,0.0000028479,0.0000028444,0.0000028404,0.0000028361, -0.0000028313,0.0000028281,0.0000028266,0.0000028258,0.0000028262, -0.0000028286,0.0000028319,0.0000028347,0.0000028354,0.0000028342, -0.0000028327,0.0000028307,0.0000028257,0.0000028186,0.0000028142, -0.0000028132,0.0000028131,0.0000028120,0.0000028094,0.0000028061, -0.0000028030,0.0000028005,0.0000027985,0.0000027943,0.0000027923, -0.0000027918,0.0000027866,0.0000027778,0.0000027733,0.0000027717, -0.0000027731,0.0000027798,0.0000027857,0.0000027862,0.0000027833, -0.0000027805,0.0000027792,0.0000027848,0.0000028033,0.0000028209, -0.0000028263,0.0000028237,0.0000028199,0.0000028208,0.0000028226, -0.0000028240,0.0000028308,0.0000028444,0.0000028512,0.0000028415, -0.0000028224,0.0000028117,0.0000028099,0.0000028081,0.0000028056, -0.0000028004,0.0000027968,0.0000027997,0.0000027997,0.0000027931, -0.0000027929,0.0000027950,0.0000027965,0.0000027984,0.0000028037, -0.0000028147,0.0000028262,0.0000028362,0.0000028439,0.0000028498, -0.0000028541,0.0000028568,0.0000028563,0.0000028542,0.0000028533, -0.0000028553,0.0000028574,0.0000028583,0.0000028583,0.0000028578, -0.0000028572,0.0000028605,0.0000028755,0.0000028861,0.0000028796, -0.0000028576,0.0000028501,0.0000028583,0.0000028708,0.0000028756, -0.0000028728,0.0000028712,0.0000028826,0.0000028975,0.0000029086, -0.0000029138,0.0000029144,0.0000029150,0.0000029144,0.0000029125, -0.0000029108,0.0000029101,0.0000029086,0.0000029047,0.0000028973, -0.0000028888,0.0000028805,0.0000028698,0.0000028559,0.0000028431, -0.0000028370,0.0000028366,0.0000028397,0.0000028438,0.0000028468, -0.0000028474,0.0000028447,0.0000028395,0.0000028316,0.0000028193, -0.0000028084,0.0000028016,0.0000028003,0.0000028033,0.0000028064, -0.0000028102,0.0000028148,0.0000028207,0.0000028259,0.0000028311, -0.0000028343,0.0000028348,0.0000028316,0.0000028225,0.0000028081, -0.0000027899,0.0000027712,0.0000027586,0.0000027588,0.0000027645, -0.0000027716,0.0000027742,0.0000027720,0.0000027676,0.0000027637, -0.0000027658,0.0000027758,0.0000027816,0.0000027788,0.0000027709, -0.0000027609,0.0000027565,0.0000027596,0.0000027677,0.0000027774, -0.0000027830,0.0000027815,0.0000027749,0.0000027680,0.0000027637, -0.0000027667,0.0000027736,0.0000027830,0.0000027896,0.0000027966, -0.0000028014,0.0000028017,0.0000028022,0.0000028026,0.0000027928, -0.0000027703,0.0000027525,0.0000027462,0.0000027451,0.0000027400, -0.0000027294,0.0000027187,0.0000027106,0.0000027066,0.0000027071, -0.0000027149,0.0000027329,0.0000027529,0.0000027578,0.0000027494, -0.0000027446,0.0000027514,0.0000027637,0.0000027659,0.0000027588, -0.0000027656,0.0000027812,0.0000027869,0.0000027907,0.0000027927, -0.0000027952,0.0000028023,0.0000028060,0.0000028054,0.0000028031, -0.0000028025,0.0000028049,0.0000028070,0.0000028069,0.0000028030, -0.0000027954,0.0000027884,0.0000027832,0.0000027805,0.0000027791, -0.0000027793,0.0000027806,0.0000027829,0.0000027853,0.0000027868, -0.0000027873,0.0000027861,0.0000027893,0.0000027940,0.0000027969, -0.0000027963,0.0000027927,0.0000027868,0.0000027830,0.0000027820, -0.0000027834,0.0000027892,0.0000027930,0.0000027940,0.0000027941, -0.0000027963,0.0000028010,0.0000028055,0.0000028078,0.0000028062, -0.0000027993,0.0000027946,0.0000028056,0.0000028184,0.0000028287, -0.0000028255,0.0000028195,0.0000028149,0.0000028160,0.0000028253, -0.0000028407,0.0000028525,0.0000028577,0.0000028577,0.0000028540, -0.0000028528,0.0000028540,0.0000028572,0.0000028602,0.0000028578, -0.0000028503,0.0000028437,0.0000028404,0.0000028423,0.0000028510, -0.0000028555,0.0000028557,0.0000028511,0.0000028395,0.0000028249, -0.0000028172,0.0000028210,0.0000028385,0.0000028577,0.0000028668, -0.0000028698,0.0000028742,0.0000028810,0.0000028814,0.0000028776, -0.0000028774,0.0000028806,0.0000028852,0.0000028869,0.0000028845, -0.0000028799,0.0000028727,0.0000028643,0.0000028577,0.0000028524, -0.0000028471,0.0000028422,0.0000028362,0.0000028333,0.0000028349, -0.0000028449,0.0000028567,0.0000028637,0.0000028662,0.0000028661, -0.0000028642,0.0000028650,0.0000028683,0.0000028737,0.0000028760, -0.0000028766,0.0000028797,0.0000028798,0.0000028762,0.0000028689, -0.0000028603,0.0000028547,0.0000028481,0.0000028366,0.0000028220, -0.0000028119,0.0000028079,0.0000028057,0.0000028036,0.0000028002, -0.0000027971,0.0000027970,0.0000028025,0.0000028130,0.0000028242, -0.0000028313,0.0000028322,0.0000028318,0.0000028344,0.0000028422, -0.0000028523,0.0000028617,0.0000028726,0.0000028838,0.0000028926, -0.0000028970,0.0000028962,0.0000028915,0.0000028821,0.0000028726, -0.0000028653,0.0000028603,0.0000028597,0.0000028618,0.0000028642, -0.0000028658,0.0000028669,0.0000028655,0.0000028620,0.0000028571, -0.0000028496,0.0000028402,0.0000028300,0.0000028212,0.0000028168, -0.0000028213,0.0000028305,0.0000028362,0.0000028338,0.0000028221, -0.0000028037,0.0000027873,0.0000027823,0.0000027871,0.0000028001, -0.0000028117,0.0000028210,0.0000028283,0.0000028330,0.0000028324, -0.0000028295,0.0000028286,0.0000028278,0.0000028284,0.0000028319, -0.0000028403,0.0000028491,0.0000028536,0.0000028567,0.0000028632, -0.0000028690,0.0000028685,0.0000028597,0.0000028476,0.0000028418, -0.0000028439,0.0000028473,0.0000028496,0.0000028505,0.0000028528, -0.0000028605,0.0000028711,0.0000028782,0.0000028785,0.0000028751, -0.0000028620,0.0000028443,0.0000028386,0.0000028436,0.0000028485, -0.0000028508,0.0000028534,0.0000028544,0.0000028508,0.0000028430, -0.0000028352,0.0000028296,0.0000028267,0.0000028253,0.0000028249, -0.0000028247,0.0000028260,0.0000028287,0.0000028306,0.0000028323, -0.0000028346,0.0000028367,0.0000028373,0.0000028360,0.0000028316, -0.0000028263,0.0000028212,0.0000028180,0.0000028180,0.0000028193, -0.0000028185,0.0000028122,0.0000027998,0.0000027858,0.0000027736, -0.0000027655,0.0000027632,0.0000027641,0.0000027677,0.0000027701, -0.0000027723,0.0000027752,0.0000027795,0.0000027847,0.0000027879, -0.0000027861,0.0000027783,0.0000027670,0.0000027634,0.0000027690, -0.0000027779,0.0000027878,0.0000027944,0.0000027958,0.0000027967, -0.0000028004,0.0000028050,0.0000028094,0.0000028150,0.0000028201, -0.0000028212,0.0000028169,0.0000028113,0.0000028119,0.0000028176, -0.0000028236,0.0000028250,0.0000028219,0.0000028145,0.0000028070, -0.0000028014,0.0000027989,0.0000027937,0.0000027895,0.0000027889, -0.0000027925,0.0000027987,0.0000028056,0.0000028129,0.0000028163, -0.0000028141,0.0000028132,0.0000028173,0.0000028141,0.0000028105, -0.0000028118,0.0000028129,0.0000028179,0.0000028292,0.0000028391, -0.0000028432,0.0000028420,0.0000028359,0.0000028268,0.0000028166, -0.0000028072,0.0000027996,0.0000027927,0.0000027867,0.0000027819, -0.0000027797,0.0000027770,0.0000027741,0.0000027706,0.0000027662, -0.0000027618,0.0000027577,0.0000027540,0.0000027524,0.0000027535, -0.0000027600,0.0000027707,0.0000027821,0.0000027900,0.0000027919, -0.0000027901,0.0000027861,0.0000027796,0.0000027723,0.0000027674, -0.0000027661,0.0000027660,0.0000027656,0.0000027657,0.0000027689, -0.0000027743,0.0000027776,0.0000027769,0.0000027752,0.0000027755, -0.0000027802,0.0000027906,0.0000028044,0.0000028180,0.0000028275, -0.0000028321,0.0000028333,0.0000028305,0.0000028146,0.0000027925, -0.0000027827,0.0000027876,0.0000028040,0.0000028188,0.0000028182, -0.0000028040,0.0000027916,0.0000027928,0.0000028118,0.0000028397, -0.0000028559,0.0000028580,0.0000028589,0.0000028632,0.0000028725, -0.0000028866,0.0000029029,0.0000029179,0.0000029325,0.0000029485, -0.0000029615,0.0000029686,0.0000029724,0.0000029747,0.0000029732, -0.0000029643,0.0000029488,0.0000029330,0.0000029222,0.0000029172, -0.0000029127,0.0000029031,0.0000028918,0.0000028846,0.0000028832, -0.0000028832,0.0000028856,0.0000028907,0.0000028952,0.0000028966, -0.0000028953,0.0000028907,0.0000028851,0.0000028790,0.0000028743, -0.0000028717,0.0000028707,0.0000028711,0.0000028726,0.0000028735, -0.0000028733,0.0000028716,0.0000028693,0.0000028687,0.0000028696, -0.0000028726,0.0000028769,0.0000028785,0.0000028760,0.0000028697, -0.0000028644,0.0000028611,0.0000028582,0.0000028544,0.0000028492, -0.0000028429,0.0000028368,0.0000028316,0.0000028271,0.0000028232, -0.0000028216,0.0000028248,0.0000028301,0.0000028340,0.0000028340, -0.0000028336,0.0000028341,0.0000028361,0.0000028368,0.0000028359, -0.0000028340,0.0000028310,0.0000028272,0.0000028218,0.0000028161, -0.0000028122,0.0000028094,0.0000028090,0.0000028110,0.0000028161, -0.0000028228,0.0000028286,0.0000028316,0.0000028321,0.0000028331, -0.0000028341,0.0000028316,0.0000028254,0.0000028214,0.0000028213, -0.0000028210,0.0000028176,0.0000028106,0.0000028035,0.0000027991, -0.0000028010,0.0000028030,0.0000028004,0.0000027972,0.0000027937, -0.0000027843,0.0000027742,0.0000027694,0.0000027676,0.0000027705, -0.0000027782,0.0000027828,0.0000027816,0.0000027782,0.0000027759, -0.0000027758,0.0000027862,0.0000028070,0.0000028220,0.0000028243, -0.0000028196,0.0000028172,0.0000028198,0.0000028222,0.0000028235, -0.0000028296,0.0000028438,0.0000028519,0.0000028438,0.0000028246, -0.0000028126,0.0000028104,0.0000028098,0.0000028094,0.0000028068, -0.0000028045,0.0000028064,0.0000028043,0.0000027966,0.0000027943, -0.0000027952,0.0000027968,0.0000028011,0.0000028096,0.0000028201, -0.0000028296,0.0000028393,0.0000028476,0.0000028525,0.0000028542, -0.0000028537,0.0000028521,0.0000028512,0.0000028525,0.0000028556, -0.0000028596,0.0000028620,0.0000028627,0.0000028618,0.0000028589, -0.0000028588,0.0000028690,0.0000028849,0.0000028896,0.0000028725, -0.0000028534,0.0000028524,0.0000028645,0.0000028746,0.0000028762, -0.0000028726,0.0000028764,0.0000028882,0.0000029011,0.0000029094, -0.0000029143,0.0000029152,0.0000029162,0.0000029145,0.0000029103, -0.0000029047,0.0000028983,0.0000028918,0.0000028852,0.0000028796, -0.0000028738,0.0000028640,0.0000028489,0.0000028339,0.0000028264, -0.0000028257,0.0000028282,0.0000028332,0.0000028382,0.0000028419, -0.0000028427,0.0000028404,0.0000028349,0.0000028246,0.0000028134, -0.0000028047,0.0000028015,0.0000028028,0.0000028053,0.0000028079, -0.0000028115,0.0000028152,0.0000028195,0.0000028227,0.0000028249, -0.0000028247,0.0000028216,0.0000028134,0.0000027994,0.0000027815, -0.0000027643,0.0000027511,0.0000027492,0.0000027529,0.0000027608, -0.0000027680,0.0000027713,0.0000027702,0.0000027659,0.0000027631, -0.0000027678,0.0000027757,0.0000027785,0.0000027750,0.0000027666, -0.0000027562,0.0000027506,0.0000027523,0.0000027586,0.0000027654, -0.0000027698,0.0000027717,0.0000027738,0.0000027754,0.0000027744, -0.0000027714,0.0000027745,0.0000027828,0.0000027915,0.0000028012, -0.0000028070,0.0000028065,0.0000028061,0.0000028044,0.0000027890, -0.0000027669,0.0000027535,0.0000027486,0.0000027461,0.0000027402, -0.0000027307,0.0000027206,0.0000027150,0.0000027145,0.0000027188, -0.0000027295,0.0000027487,0.0000027592,0.0000027546,0.0000027472, -0.0000027487,0.0000027582,0.0000027662,0.0000027601,0.0000027582, -0.0000027737,0.0000027862,0.0000027915,0.0000027956,0.0000027962, -0.0000028002,0.0000028065,0.0000028084,0.0000028074,0.0000028056, -0.0000028061,0.0000028056,0.0000028017,0.0000027964,0.0000027905, -0.0000027867,0.0000027853,0.0000027851,0.0000027852,0.0000027865, -0.0000027900,0.0000027941,0.0000027960,0.0000027969,0.0000027953, -0.0000027943,0.0000027944,0.0000027966,0.0000027989,0.0000027979, -0.0000027950,0.0000027897,0.0000027854,0.0000027833,0.0000027837, -0.0000027844,0.0000027893,0.0000027934,0.0000027950,0.0000027945, -0.0000027983,0.0000028049,0.0000028105,0.0000028137,0.0000028125, -0.0000028064,0.0000028025,0.0000028123,0.0000028250,0.0000028355, -0.0000028331,0.0000028284,0.0000028265,0.0000028285,0.0000028356, -0.0000028506,0.0000028645,0.0000028717,0.0000028716,0.0000028669, -0.0000028621,0.0000028582,0.0000028574,0.0000028600,0.0000028623, -0.0000028613,0.0000028585,0.0000028567,0.0000028570,0.0000028603, -0.0000028619,0.0000028610,0.0000028567,0.0000028448,0.0000028289, -0.0000028187,0.0000028194,0.0000028353,0.0000028549,0.0000028657, -0.0000028695,0.0000028730,0.0000028794,0.0000028812,0.0000028782, -0.0000028773,0.0000028794,0.0000028826,0.0000028846,0.0000028831, -0.0000028798,0.0000028739,0.0000028661,0.0000028597,0.0000028549, -0.0000028501,0.0000028439,0.0000028369,0.0000028308,0.0000028315, -0.0000028410,0.0000028531,0.0000028635,0.0000028698,0.0000028722, -0.0000028697,0.0000028665,0.0000028677,0.0000028739,0.0000028772, -0.0000028769,0.0000028772,0.0000028805,0.0000028798,0.0000028783, -0.0000028755,0.0000028738,0.0000028737,0.0000028698,0.0000028598, -0.0000028469,0.0000028380,0.0000028337,0.0000028324,0.0000028307, -0.0000028281,0.0000028260,0.0000028270,0.0000028327,0.0000028394, -0.0000028435,0.0000028424,0.0000028358,0.0000028310,0.0000028305, -0.0000028368,0.0000028470,0.0000028569,0.0000028685,0.0000028804, -0.0000028893,0.0000028942,0.0000028946,0.0000028898,0.0000028819, -0.0000028725,0.0000028649,0.0000028605,0.0000028597,0.0000028613, -0.0000028639,0.0000028657,0.0000028673,0.0000028664,0.0000028654, -0.0000028634,0.0000028603,0.0000028554,0.0000028481,0.0000028393, -0.0000028307,0.0000028252,0.0000028231,0.0000028251,0.0000028255, -0.0000028226,0.0000028142,0.0000028027,0.0000027886,0.0000027802, -0.0000027837,0.0000027945,0.0000028053,0.0000028153,0.0000028230, -0.0000028254,0.0000028257,0.0000028269,0.0000028265,0.0000028254, -0.0000028235,0.0000028250,0.0000028331,0.0000028434,0.0000028516, -0.0000028588,0.0000028646,0.0000028650,0.0000028586,0.0000028480, -0.0000028414,0.0000028431,0.0000028466,0.0000028489,0.0000028494, -0.0000028512,0.0000028594,0.0000028701,0.0000028764,0.0000028764, -0.0000028707,0.0000028543,0.0000028394,0.0000028383,0.0000028439, -0.0000028439,0.0000028455,0.0000028478,0.0000028481,0.0000028441, -0.0000028374,0.0000028324,0.0000028293,0.0000028269,0.0000028245, -0.0000028222,0.0000028213,0.0000028226,0.0000028247,0.0000028260, -0.0000028281,0.0000028318,0.0000028343,0.0000028349,0.0000028336, -0.0000028286,0.0000028226,0.0000028177,0.0000028137,0.0000028111, -0.0000028077,0.0000028011,0.0000027915,0.0000027817,0.0000027735, -0.0000027664,0.0000027609,0.0000027588,0.0000027599,0.0000027635, -0.0000027664,0.0000027676,0.0000027692,0.0000027732,0.0000027777, -0.0000027806,0.0000027780,0.0000027707,0.0000027630,0.0000027603, -0.0000027651,0.0000027722,0.0000027811,0.0000027920,0.0000027977, -0.0000027986,0.0000027999,0.0000028014,0.0000028019,0.0000028072, -0.0000028152,0.0000028204,0.0000028199,0.0000028163,0.0000028133, -0.0000028152,0.0000028195,0.0000028237,0.0000028254,0.0000028228, -0.0000028163,0.0000028111,0.0000028065,0.0000028015,0.0000027950, -0.0000027898,0.0000027866,0.0000027867,0.0000027928,0.0000028027, -0.0000028125,0.0000028157,0.0000028134,0.0000028148,0.0000028211, -0.0000028207,0.0000028175,0.0000028193,0.0000028207,0.0000028232, -0.0000028295,0.0000028369,0.0000028405,0.0000028386,0.0000028318, -0.0000028228,0.0000028145,0.0000028079,0.0000028014,0.0000027943, -0.0000027878,0.0000027850,0.0000027834,0.0000027818,0.0000027790, -0.0000027746,0.0000027689,0.0000027630,0.0000027566,0.0000027510, -0.0000027487,0.0000027504,0.0000027597,0.0000027750,0.0000027906, -0.0000027992,0.0000027985,0.0000027931,0.0000027860,0.0000027787, -0.0000027733,0.0000027711,0.0000027714,0.0000027719,0.0000027724, -0.0000027737,0.0000027776,0.0000027834,0.0000027870,0.0000027868, -0.0000027849,0.0000027847,0.0000027889,0.0000027969,0.0000028072, -0.0000028187,0.0000028285,0.0000028329,0.0000028329,0.0000028283, -0.0000028122,0.0000027923,0.0000027840,0.0000027889,0.0000028053, -0.0000028199,0.0000028203,0.0000028070,0.0000027941,0.0000027969, -0.0000028190,0.0000028466,0.0000028600,0.0000028614,0.0000028624, -0.0000028655,0.0000028728,0.0000028867,0.0000029049,0.0000029222, -0.0000029373,0.0000029514,0.0000029623,0.0000029685,0.0000029721, -0.0000029742,0.0000029738,0.0000029686,0.0000029558,0.0000029389, -0.0000029249,0.0000029177,0.0000029139,0.0000029065,0.0000028949, -0.0000028845,0.0000028814,0.0000028826,0.0000028874,0.0000028937, -0.0000028986,0.0000029001,0.0000028972,0.0000028895,0.0000028836, -0.0000028816,0.0000028807,0.0000028784,0.0000028749,0.0000028724, -0.0000028728,0.0000028756,0.0000028793,0.0000028819,0.0000028806, -0.0000028759,0.0000028726,0.0000028739,0.0000028792,0.0000028835, -0.0000028831,0.0000028773,0.0000028698,0.0000028652,0.0000028640, -0.0000028638,0.0000028622,0.0000028581,0.0000028523,0.0000028467, -0.0000028423,0.0000028390,0.0000028355,0.0000028335,0.0000028340, -0.0000028353,0.0000028326,0.0000028276,0.0000028240,0.0000028244, -0.0000028268,0.0000028283,0.0000028304,0.0000028298,0.0000028276, -0.0000028226,0.0000028157,0.0000028085,0.0000028016,0.0000027975, -0.0000027973,0.0000028010,0.0000028080,0.0000028170,0.0000028249, -0.0000028301,0.0000028334,0.0000028372,0.0000028400,0.0000028377, -0.0000028305,0.0000028262,0.0000028266,0.0000028271,0.0000028233, -0.0000028130,0.0000028017,0.0000027985,0.0000028029,0.0000028074, -0.0000028048,0.0000028005,0.0000027925,0.0000027789,0.0000027687, -0.0000027637,0.0000027631,0.0000027688,0.0000027764,0.0000027788, -0.0000027762,0.0000027725,0.0000027711,0.0000027733,0.0000027895, -0.0000028112,0.0000028221,0.0000028207,0.0000028149,0.0000028139, -0.0000028177,0.0000028204,0.0000028214,0.0000028266,0.0000028420, -0.0000028522,0.0000028462,0.0000028273,0.0000028134,0.0000028103, -0.0000028106,0.0000028122,0.0000028123,0.0000028115,0.0000028129, -0.0000028093,0.0000028008,0.0000027974,0.0000027966,0.0000027979, -0.0000028041,0.0000028154,0.0000028255,0.0000028331,0.0000028414, -0.0000028494,0.0000028537,0.0000028543,0.0000028530,0.0000028518, -0.0000028518,0.0000028529,0.0000028547,0.0000028579,0.0000028613, -0.0000028636,0.0000028648,0.0000028625,0.0000028606,0.0000028658, -0.0000028809,0.0000028924,0.0000028879,0.0000028656,0.0000028517, -0.0000028566,0.0000028698,0.0000028771,0.0000028762,0.0000028745, -0.0000028804,0.0000028897,0.0000028998,0.0000029078,0.0000029139, -0.0000029172,0.0000029186,0.0000029138,0.0000029044,0.0000028943, -0.0000028850,0.0000028798,0.0000028768,0.0000028712,0.0000028601, -0.0000028450,0.0000028308,0.0000028226,0.0000028214,0.0000028226, -0.0000028258,0.0000028301,0.0000028347,0.0000028382,0.0000028392, -0.0000028370,0.0000028298,0.0000028214,0.0000028137,0.0000028104, -0.0000028111,0.0000028143,0.0000028174,0.0000028211,0.0000028232, -0.0000028259,0.0000028265,0.0000028260,0.0000028235,0.0000028186, -0.0000028092,0.0000027970,0.0000027821,0.0000027672,0.0000027543, -0.0000027493,0.0000027517,0.0000027575,0.0000027658,0.0000027728, -0.0000027757,0.0000027739,0.0000027704,0.0000027690,0.0000027732, -0.0000027783,0.0000027803,0.0000027767,0.0000027682,0.0000027569, -0.0000027494,0.0000027469,0.0000027495,0.0000027542,0.0000027571, -0.0000027597,0.0000027656,0.0000027748,0.0000027790,0.0000027772, -0.0000027777,0.0000027845,0.0000027946,0.0000028057,0.0000028120, -0.0000028113,0.0000028098,0.0000028042,0.0000027854,0.0000027663, -0.0000027556,0.0000027513,0.0000027484,0.0000027424,0.0000027332, -0.0000027253,0.0000027231,0.0000027245,0.0000027297,0.0000027426, -0.0000027585,0.0000027603,0.0000027519,0.0000027494,0.0000027540, -0.0000027618,0.0000027631,0.0000027544,0.0000027626,0.0000027815, -0.0000027911,0.0000027961,0.0000027986,0.0000027998,0.0000028052, -0.0000028108,0.0000028122,0.0000028097,0.0000028073,0.0000028046, -0.0000027962,0.0000027876,0.0000027840,0.0000027828,0.0000027841, -0.0000027852,0.0000027861,0.0000027900,0.0000027958,0.0000028018, -0.0000028049,0.0000028044,0.0000028045,0.0000028030,0.0000028001, -0.0000027981,0.0000027971,0.0000027950,0.0000027919,0.0000027881, -0.0000027839,0.0000027822,0.0000027813,0.0000027817,0.0000027833, -0.0000027878,0.0000027907,0.0000027925,0.0000027922,0.0000027955, -0.0000028025,0.0000028097,0.0000028146,0.0000028138,0.0000028085, -0.0000028067,0.0000028168,0.0000028303,0.0000028398,0.0000028381, -0.0000028359,0.0000028370,0.0000028383,0.0000028436,0.0000028596, -0.0000028753,0.0000028831,0.0000028815,0.0000028734,0.0000028644, -0.0000028589,0.0000028584,0.0000028630,0.0000028692,0.0000028716, -0.0000028691,0.0000028640,0.0000028609,0.0000028605,0.0000028636, -0.0000028642,0.0000028615,0.0000028501,0.0000028336,0.0000028222, -0.0000028212,0.0000028336,0.0000028512,0.0000028622,0.0000028664, -0.0000028703,0.0000028770,0.0000028806,0.0000028783,0.0000028766, -0.0000028773,0.0000028801,0.0000028837,0.0000028841,0.0000028814, -0.0000028768,0.0000028703,0.0000028644,0.0000028601,0.0000028555, -0.0000028480,0.0000028398,0.0000028321,0.0000028322,0.0000028423, -0.0000028543,0.0000028642,0.0000028722,0.0000028760,0.0000028748, -0.0000028678,0.0000028671,0.0000028720,0.0000028766,0.0000028778, -0.0000028762,0.0000028761,0.0000028759,0.0000028744,0.0000028729, -0.0000028720,0.0000028738,0.0000028746,0.0000028732,0.0000028672, -0.0000028592,0.0000028520,0.0000028479,0.0000028464,0.0000028443, -0.0000028407,0.0000028372,0.0000028361,0.0000028379,0.0000028408, -0.0000028430,0.0000028417,0.0000028366,0.0000028317,0.0000028298, -0.0000028340,0.0000028418,0.0000028504,0.0000028608,0.0000028715, -0.0000028804,0.0000028856,0.0000028877,0.0000028851,0.0000028781, -0.0000028682,0.0000028602,0.0000028547,0.0000028534,0.0000028550, -0.0000028589,0.0000028617,0.0000028639,0.0000028647,0.0000028650, -0.0000028633,0.0000028603,0.0000028561,0.0000028505,0.0000028441, -0.0000028391,0.0000028369,0.0000028313,0.0000028244,0.0000028200, -0.0000028159,0.0000028109,0.0000028073,0.0000028020,0.0000027911, -0.0000027831,0.0000027834,0.0000027904,0.0000028004,0.0000028100, -0.0000028160,0.0000028206,0.0000028251,0.0000028267,0.0000028262, -0.0000028232,0.0000028181,0.0000028189,0.0000028294,0.0000028437, -0.0000028544,0.0000028608,0.0000028613,0.0000028564,0.0000028469, -0.0000028400,0.0000028414,0.0000028458,0.0000028487,0.0000028490, -0.0000028509,0.0000028589,0.0000028686,0.0000028739,0.0000028737, -0.0000028650,0.0000028467,0.0000028361,0.0000028373,0.0000028418, -0.0000028388,0.0000028414,0.0000028448,0.0000028452,0.0000028414, -0.0000028358,0.0000028316,0.0000028276,0.0000028231,0.0000028183, -0.0000028147,0.0000028143,0.0000028151,0.0000028153,0.0000028150, -0.0000028161,0.0000028196,0.0000028218,0.0000028220,0.0000028193, -0.0000028132,0.0000028069,0.0000028021,0.0000027995,0.0000027980, -0.0000027953,0.0000027899,0.0000027831,0.0000027763,0.0000027707, -0.0000027651,0.0000027610,0.0000027596,0.0000027607,0.0000027628, -0.0000027652,0.0000027659,0.0000027659,0.0000027666,0.0000027675, -0.0000027691,0.0000027674,0.0000027629,0.0000027596,0.0000027587, -0.0000027619,0.0000027660,0.0000027734,0.0000027878,0.0000027989, -0.0000028022,0.0000028007,0.0000027985,0.0000027975,0.0000028006, -0.0000028099,0.0000028186,0.0000028219,0.0000028211,0.0000028188, -0.0000028173,0.0000028184,0.0000028234,0.0000028291,0.0000028320, -0.0000028295,0.0000028254,0.0000028205,0.0000028150,0.0000028082, -0.0000028018,0.0000027939,0.0000027860,0.0000027859,0.0000027910, -0.0000028023,0.0000028128,0.0000028149,0.0000028141,0.0000028163, -0.0000028239,0.0000028257,0.0000028228,0.0000028238,0.0000028266, -0.0000028276,0.0000028287,0.0000028305,0.0000028305,0.0000028272, -0.0000028206,0.0000028132,0.0000028076,0.0000028035,0.0000027979, -0.0000027921,0.0000027900,0.0000027897,0.0000027886,0.0000027851, -0.0000027797,0.0000027731,0.0000027663,0.0000027588,0.0000027508, -0.0000027441,0.0000027401,0.0000027412,0.0000027519,0.0000027711, -0.0000027908,0.0000028026,0.0000028046,0.0000027988,0.0000027884, -0.0000027788,0.0000027743,0.0000027739,0.0000027744,0.0000027741, -0.0000027743,0.0000027763,0.0000027813,0.0000027892,0.0000027962, -0.0000027980,0.0000027956,0.0000027942,0.0000027967,0.0000028020, -0.0000028097,0.0000028200,0.0000028301,0.0000028340,0.0000028335, -0.0000028276,0.0000028114,0.0000027917,0.0000027851,0.0000027905, -0.0000028075,0.0000028221,0.0000028225,0.0000028093,0.0000027962, -0.0000028010,0.0000028260,0.0000028528,0.0000028634,0.0000028639, -0.0000028645,0.0000028661,0.0000028718,0.0000028860,0.0000029063, -0.0000029258,0.0000029417,0.0000029541,0.0000029620,0.0000029658, -0.0000029686,0.0000029716,0.0000029724,0.0000029692,0.0000029608, -0.0000029477,0.0000029335,0.0000029231,0.0000029165,0.0000029097, -0.0000029003,0.0000028895,0.0000028827,0.0000028816,0.0000028860, -0.0000028944,0.0000029024,0.0000029061,0.0000029037,0.0000028931, -0.0000028805,0.0000028753,0.0000028777,0.0000028814,0.0000028817, -0.0000028789,0.0000028762,0.0000028761,0.0000028787,0.0000028825, -0.0000028849,0.0000028837,0.0000028802,0.0000028789,0.0000028820, -0.0000028865,0.0000028881,0.0000028849,0.0000028774,0.0000028697, -0.0000028655,0.0000028650,0.0000028651,0.0000028636,0.0000028597, -0.0000028543,0.0000028493,0.0000028444,0.0000028402,0.0000028350, -0.0000028314,0.0000028288,0.0000028248,0.0000028195,0.0000028164, -0.0000028188,0.0000028244,0.0000028285,0.0000028320,0.0000028335, -0.0000028327,0.0000028288,0.0000028222,0.0000028140,0.0000028055, -0.0000027977,0.0000027940,0.0000027945,0.0000027991,0.0000028069, -0.0000028161,0.0000028242,0.0000028313,0.0000028381,0.0000028439, -0.0000028457,0.0000028410,0.0000028322,0.0000028281,0.0000028294, -0.0000028310,0.0000028269,0.0000028138,0.0000028008,0.0000027990, -0.0000028061,0.0000028107,0.0000028079,0.0000028011,0.0000027873, -0.0000027720,0.0000027626,0.0000027587,0.0000027606,0.0000027681, -0.0000027746,0.0000027749,0.0000027704,0.0000027673,0.0000027670, -0.0000027732,0.0000027932,0.0000028138,0.0000028205,0.0000028166, -0.0000028098,0.0000028097,0.0000028141,0.0000028172,0.0000028184, -0.0000028231,0.0000028382,0.0000028507,0.0000028479,0.0000028301, -0.0000028140,0.0000028089,0.0000028098,0.0000028133,0.0000028156, -0.0000028166,0.0000028185,0.0000028141,0.0000028047,0.0000028004, -0.0000027987,0.0000027994,0.0000028073,0.0000028207,0.0000028310, -0.0000028369,0.0000028432,0.0000028499,0.0000028541,0.0000028551, -0.0000028537,0.0000028535,0.0000028534,0.0000028510,0.0000028472, -0.0000028481,0.0000028532,0.0000028596,0.0000028643,0.0000028644, -0.0000028626,0.0000028656,0.0000028773,0.0000028915,0.0000028964, -0.0000028831,0.0000028613,0.0000028542,0.0000028620,0.0000028729, -0.0000028773,0.0000028768,0.0000028755,0.0000028791,0.0000028868, -0.0000028941,0.0000029031,0.0000029124,0.0000029199,0.0000029186, -0.0000029106,0.0000028985,0.0000028875,0.0000028804,0.0000028775, -0.0000028722,0.0000028601,0.0000028454,0.0000028329,0.0000028258, -0.0000028228,0.0000028221,0.0000028237,0.0000028263,0.0000028302, -0.0000028347,0.0000028384,0.0000028391,0.0000028353,0.0000028294, -0.0000028238,0.0000028204,0.0000028199,0.0000028225,0.0000028267, -0.0000028327,0.0000028380,0.0000028433,0.0000028445,0.0000028423, -0.0000028369,0.0000028289,0.0000028181,0.0000028059,0.0000027937, -0.0000027821,0.0000027721,0.0000027652,0.0000027654,0.0000027682, -0.0000027725,0.0000027781,0.0000027815,0.0000027810,0.0000027800, -0.0000027781,0.0000027784,0.0000027813,0.0000027865,0.0000027880, -0.0000027839,0.0000027755,0.0000027636,0.0000027532,0.0000027474, -0.0000027476,0.0000027480,0.0000027491,0.0000027507,0.0000027558, -0.0000027663,0.0000027800,0.0000027846,0.0000027824,0.0000027889, -0.0000027991,0.0000028109,0.0000028173,0.0000028156,0.0000028120, -0.0000028029,0.0000027834,0.0000027679,0.0000027590,0.0000027550, -0.0000027515,0.0000027450,0.0000027375,0.0000027332,0.0000027322, -0.0000027335,0.0000027391,0.0000027533,0.0000027633,0.0000027586, -0.0000027512,0.0000027518,0.0000027573,0.0000027625,0.0000027589, -0.0000027542,0.0000027690,0.0000027872,0.0000027949,0.0000027984, -0.0000028003,0.0000028036,0.0000028090,0.0000028134,0.0000028145, -0.0000028101,0.0000028045,0.0000027946,0.0000027829,0.0000027790, -0.0000027801,0.0000027823,0.0000027840,0.0000027856,0.0000027896, -0.0000027973,0.0000028049,0.0000028087,0.0000028110,0.0000028102, -0.0000028090,0.0000028048,0.0000027971,0.0000027927,0.0000027907, -0.0000027905,0.0000027887,0.0000027862,0.0000027836,0.0000027826, -0.0000027817,0.0000027827,0.0000027869,0.0000027901,0.0000027916, -0.0000027917,0.0000027907,0.0000027922,0.0000027982,0.0000028050, -0.0000028096,0.0000028098,0.0000028084,0.0000028101,0.0000028205, -0.0000028349,0.0000028421,0.0000028416,0.0000028423,0.0000028450, -0.0000028444,0.0000028505,0.0000028682,0.0000028841,0.0000028896, -0.0000028853,0.0000028738,0.0000028642,0.0000028607,0.0000028628, -0.0000028685,0.0000028727,0.0000028741,0.0000028705,0.0000028638, -0.0000028583,0.0000028570,0.0000028607,0.0000028640,0.0000028638, -0.0000028536,0.0000028376,0.0000028255,0.0000028237,0.0000028336, -0.0000028487,0.0000028589,0.0000028630,0.0000028667,0.0000028743, -0.0000028797,0.0000028784,0.0000028755,0.0000028752,0.0000028775, -0.0000028825,0.0000028851,0.0000028840,0.0000028811,0.0000028764, -0.0000028709,0.0000028667,0.0000028615,0.0000028532,0.0000028454, -0.0000028394,0.0000028390,0.0000028486,0.0000028592,0.0000028667, -0.0000028723,0.0000028757,0.0000028760,0.0000028687,0.0000028648, -0.0000028673,0.0000028740,0.0000028761,0.0000028760,0.0000028720, -0.0000028711,0.0000028691,0.0000028673,0.0000028657,0.0000028651, -0.0000028666,0.0000028675,0.0000028655,0.0000028603,0.0000028531, -0.0000028462,0.0000028427,0.0000028415,0.0000028398,0.0000028374, -0.0000028336,0.0000028324,0.0000028346,0.0000028388,0.0000028425, -0.0000028427,0.0000028398,0.0000028337,0.0000028271,0.0000028256, -0.0000028278,0.0000028336,0.0000028421,0.0000028513,0.0000028593, -0.0000028650,0.0000028687,0.0000028681,0.0000028637,0.0000028554, -0.0000028479,0.0000028431,0.0000028425,0.0000028447,0.0000028499, -0.0000028543,0.0000028581,0.0000028615,0.0000028643,0.0000028651, -0.0000028644,0.0000028618,0.0000028560,0.0000028470,0.0000028394, -0.0000028367,0.0000028349,0.0000028300,0.0000028226,0.0000028148, -0.0000028072,0.0000028035,0.0000028025,0.0000028002,0.0000027937, -0.0000027857,0.0000027840,0.0000027869,0.0000027942,0.0000028022, -0.0000028108,0.0000028191,0.0000028246,0.0000028254,0.0000028230, -0.0000028172,0.0000028123,0.0000028177,0.0000028339,0.0000028493, -0.0000028585,0.0000028594,0.0000028549,0.0000028458,0.0000028379, -0.0000028395,0.0000028448,0.0000028486,0.0000028493,0.0000028514, -0.0000028586,0.0000028664,0.0000028707,0.0000028704,0.0000028581, -0.0000028399,0.0000028329,0.0000028347,0.0000028376,0.0000028344, -0.0000028394,0.0000028439,0.0000028438,0.0000028393,0.0000028333, -0.0000028276,0.0000028214,0.0000028157,0.0000028108,0.0000028093, -0.0000028097,0.0000028102,0.0000028089,0.0000028073,0.0000028081, -0.0000028113,0.0000028126,0.0000028112,0.0000028066,0.0000028015, -0.0000027973,0.0000027955,0.0000027965,0.0000027968,0.0000027949, -0.0000027892,0.0000027814,0.0000027745,0.0000027694,0.0000027650, -0.0000027628,0.0000027625,0.0000027637,0.0000027643,0.0000027642, -0.0000027632,0.0000027618,0.0000027605,0.0000027583,0.0000027565, -0.0000027555,0.0000027542,0.0000027542,0.0000027554,0.0000027577, -0.0000027608,0.0000027677,0.0000027831,0.0000027990,0.0000028060, -0.0000028041,0.0000027984,0.0000027959,0.0000027977,0.0000028062, -0.0000028167,0.0000028243,0.0000028286,0.0000028291,0.0000028284, -0.0000028279,0.0000028305,0.0000028359,0.0000028414,0.0000028424, -0.0000028396,0.0000028342,0.0000028276,0.0000028216,0.0000028171, -0.0000028088,0.0000027966,0.0000027898,0.0000027893,0.0000027939, -0.0000028037,0.0000028095,0.0000028122,0.0000028145,0.0000028163, -0.0000028235,0.0000028290,0.0000028275,0.0000028267,0.0000028288, -0.0000028300,0.0000028294,0.0000028267,0.0000028223,0.0000028163, -0.0000028103,0.0000028057,0.0000028033,0.0000028002,0.0000027969, -0.0000027953,0.0000027944,0.0000027932,0.0000027899,0.0000027848, -0.0000027800,0.0000027758,0.0000027709,0.0000027645,0.0000027572, -0.0000027501,0.0000027450,0.0000027448,0.0000027535,0.0000027694, -0.0000027858,0.0000027987,0.0000028043,0.0000028017,0.0000027927, -0.0000027815,0.0000027753,0.0000027750,0.0000027755,0.0000027750, -0.0000027752,0.0000027774,0.0000027830,0.0000027934,0.0000028039, -0.0000028074,0.0000028048,0.0000028020,0.0000028027,0.0000028064, -0.0000028125,0.0000028220,0.0000028323,0.0000028359,0.0000028348, -0.0000028278,0.0000028099,0.0000027902,0.0000027854,0.0000027923, -0.0000028105,0.0000028248,0.0000028239,0.0000028102,0.0000027986, -0.0000028057,0.0000028329,0.0000028582,0.0000028661,0.0000028661, -0.0000028663,0.0000028668,0.0000028705,0.0000028848,0.0000029066, -0.0000029281,0.0000029450,0.0000029562,0.0000029608,0.0000029612, -0.0000029620,0.0000029652,0.0000029676,0.0000029664,0.0000029614, -0.0000029532,0.0000029430,0.0000029328,0.0000029244,0.0000029168, -0.0000029077,0.0000028990,0.0000028908,0.0000028858,0.0000028861, -0.0000028924,0.0000029019,0.0000029091,0.0000029098,0.0000029015, -0.0000028867,0.0000028739,0.0000028693,0.0000028716,0.0000028775, -0.0000028825,0.0000028846,0.0000028830,0.0000028814,0.0000028807, -0.0000028805,0.0000028805,0.0000028809,0.0000028831,0.0000028868, -0.0000028904,0.0000028915,0.0000028893,0.0000028837,0.0000028759, -0.0000028690,0.0000028659,0.0000028651,0.0000028635,0.0000028599, -0.0000028549,0.0000028496,0.0000028444,0.0000028388,0.0000028323, -0.0000028253,0.0000028213,0.0000028168,0.0000028127,0.0000028116, -0.0000028161,0.0000028248,0.0000028311,0.0000028346,0.0000028361, -0.0000028353,0.0000028326,0.0000028278,0.0000028226,0.0000028162, -0.0000028079,0.0000027992,0.0000027951,0.0000027971,0.0000028031, -0.0000028109,0.0000028186,0.0000028252,0.0000028348,0.0000028448, -0.0000028503,0.0000028487,0.0000028413,0.0000028330,0.0000028306, -0.0000028328,0.0000028338,0.0000028276,0.0000028123,0.0000028004, -0.0000028010,0.0000028096,0.0000028133,0.0000028097,0.0000027975, -0.0000027797,0.0000027660,0.0000027586,0.0000027565,0.0000027598, -0.0000027681,0.0000027733,0.0000027714,0.0000027660,0.0000027643, -0.0000027654,0.0000027751,0.0000027959,0.0000028137,0.0000028173, -0.0000028117,0.0000028047,0.0000028046,0.0000028091,0.0000028133, -0.0000028159,0.0000028197,0.0000028322,0.0000028460,0.0000028466, -0.0000028326,0.0000028147,0.0000028065,0.0000028074,0.0000028128, -0.0000028164,0.0000028185,0.0000028218,0.0000028179,0.0000028074, -0.0000028022,0.0000028003,0.0000028007,0.0000028096,0.0000028239, -0.0000028351,0.0000028405,0.0000028442,0.0000028489,0.0000028534, -0.0000028550,0.0000028551,0.0000028557,0.0000028530,0.0000028430, -0.0000028326,0.0000028319,0.0000028394,0.0000028511,0.0000028607, -0.0000028639,0.0000028636,0.0000028662,0.0000028754,0.0000028884, -0.0000028976,0.0000028953,0.0000028784,0.0000028618,0.0000028593, -0.0000028656,0.0000028733,0.0000028770,0.0000028745,0.0000028742, -0.0000028761,0.0000028804,0.0000028852,0.0000028952,0.0000029081, -0.0000029156,0.0000029141,0.0000029072,0.0000028976,0.0000028880, -0.0000028824,0.0000028778,0.0000028676,0.0000028522,0.0000028395, -0.0000028329,0.0000028285,0.0000028254,0.0000028248,0.0000028270, -0.0000028307,0.0000028356,0.0000028419,0.0000028444,0.0000028434, -0.0000028394,0.0000028350,0.0000028301,0.0000028271,0.0000028269, -0.0000028288,0.0000028344,0.0000028426,0.0000028521,0.0000028599, -0.0000028625,0.0000028596,0.0000028521,0.0000028409,0.0000028283, -0.0000028170,0.0000028070,0.0000027981,0.0000027898,0.0000027855, -0.0000027853,0.0000027849,0.0000027849,0.0000027856,0.0000027847, -0.0000027831,0.0000027820,0.0000027831,0.0000027846,0.0000027888, -0.0000027947,0.0000027963,0.0000027926,0.0000027843,0.0000027735, -0.0000027632,0.0000027561,0.0000027516,0.0000027491,0.0000027485, -0.0000027478,0.0000027496,0.0000027586,0.0000027802,0.0000027926, -0.0000027899,0.0000027939,0.0000028045,0.0000028167,0.0000028226, -0.0000028192,0.0000028133,0.0000028021,0.0000027834,0.0000027712, -0.0000027635,0.0000027595,0.0000027550,0.0000027484,0.0000027431, -0.0000027405,0.0000027395,0.0000027397,0.0000027472,0.0000027612, -0.0000027653,0.0000027574,0.0000027519,0.0000027535,0.0000027586, -0.0000027619,0.0000027558,0.0000027549,0.0000027744,0.0000027907, -0.0000027964,0.0000027987,0.0000028020,0.0000028063,0.0000028104, -0.0000028140,0.0000028139,0.0000028078,0.0000027962,0.0000027831, -0.0000027769,0.0000027789,0.0000027823,0.0000027840,0.0000027867, -0.0000027909,0.0000027983,0.0000028049,0.0000028087,0.0000028094, -0.0000028116,0.0000028114,0.0000028090,0.0000028014,0.0000027891, -0.0000027835,0.0000027846,0.0000027863,0.0000027863,0.0000027857, -0.0000027840,0.0000027825,0.0000027830,0.0000027869,0.0000027930, -0.0000027959,0.0000027957,0.0000027933,0.0000027901,0.0000027896, -0.0000027917,0.0000027955,0.0000027998,0.0000028026,0.0000028060, -0.0000028112,0.0000028228,0.0000028379,0.0000028443,0.0000028460, -0.0000028497,0.0000028497,0.0000028488,0.0000028577,0.0000028759, -0.0000028898,0.0000028927,0.0000028846,0.0000028730,0.0000028661, -0.0000028643,0.0000028665,0.0000028712,0.0000028720,0.0000028709, -0.0000028664,0.0000028588,0.0000028530,0.0000028531,0.0000028567, -0.0000028616,0.0000028629,0.0000028554,0.0000028404,0.0000028289, -0.0000028274,0.0000028348,0.0000028470,0.0000028560,0.0000028597, -0.0000028637,0.0000028720,0.0000028779,0.0000028774,0.0000028738, -0.0000028732,0.0000028754,0.0000028814,0.0000028857,0.0000028862, -0.0000028850,0.0000028822,0.0000028781,0.0000028733,0.0000028671, -0.0000028593,0.0000028540,0.0000028519,0.0000028498,0.0000028555, -0.0000028643,0.0000028704,0.0000028721,0.0000028730,0.0000028729, -0.0000028676,0.0000028620,0.0000028641,0.0000028688,0.0000028733, -0.0000028739,0.0000028707,0.0000028673,0.0000028639,0.0000028615, -0.0000028593,0.0000028586,0.0000028593,0.0000028613,0.0000028619, -0.0000028594,0.0000028537,0.0000028450,0.0000028392,0.0000028366, -0.0000028354,0.0000028348,0.0000028329,0.0000028296,0.0000028292, -0.0000028323,0.0000028382,0.0000028426,0.0000028431,0.0000028386, -0.0000028285,0.0000028164,0.0000028090,0.0000028082,0.0000028134, -0.0000028225,0.0000028322,0.0000028406,0.0000028479,0.0000028532, -0.0000028545,0.0000028518,0.0000028451,0.0000028386,0.0000028347, -0.0000028348,0.0000028377,0.0000028438,0.0000028496,0.0000028547, -0.0000028589,0.0000028615,0.0000028625,0.0000028625,0.0000028622, -0.0000028599,0.0000028542,0.0000028467,0.0000028407,0.0000028348, -0.0000028290,0.0000028236,0.0000028166,0.0000028090,0.0000028033, -0.0000028005,0.0000027996,0.0000027980,0.0000027938,0.0000027884, -0.0000027847,0.0000027850,0.0000027890,0.0000027975,0.0000028092, -0.0000028187,0.0000028209,0.0000028192,0.0000028153,0.0000028102, -0.0000028112,0.0000028241,0.0000028421,0.0000028557,0.0000028583, -0.0000028542,0.0000028452,0.0000028361,0.0000028376,0.0000028432, -0.0000028487,0.0000028504,0.0000028523,0.0000028583,0.0000028639, -0.0000028675,0.0000028661,0.0000028508,0.0000028340,0.0000028292, -0.0000028307,0.0000028325,0.0000028318,0.0000028392,0.0000028432, -0.0000028411,0.0000028344,0.0000028275,0.0000028213,0.0000028156, -0.0000028122,0.0000028104,0.0000028110,0.0000028113,0.0000028104, -0.0000028080,0.0000028060,0.0000028076,0.0000028101,0.0000028104, -0.0000028081,0.0000028039,0.0000028007,0.0000027989,0.0000027990, -0.0000027996,0.0000027990,0.0000027948,0.0000027880,0.0000027797, -0.0000027723,0.0000027671,0.0000027638,0.0000027628,0.0000027640, -0.0000027665,0.0000027685,0.0000027665,0.0000027625,0.0000027580, -0.0000027549,0.0000027515,0.0000027487,0.0000027476,0.0000027473, -0.0000027479,0.0000027502,0.0000027530,0.0000027565,0.0000027642, -0.0000027790,0.0000027983,0.0000028098,0.0000028088,0.0000028007, -0.0000027971,0.0000027982,0.0000028053,0.0000028166,0.0000028270, -0.0000028363,0.0000028405,0.0000028423,0.0000028421,0.0000028417, -0.0000028437,0.0000028484,0.0000028521,0.0000028513,0.0000028457, -0.0000028370,0.0000028301,0.0000028292,0.0000028250,0.0000028116, -0.0000028003,0.0000027970,0.0000027966,0.0000027994,0.0000028014, -0.0000028035,0.0000028087,0.0000028129,0.0000028149,0.0000028214, -0.0000028297,0.0000028319,0.0000028311,0.0000028306,0.0000028305, -0.0000028292,0.0000028253,0.0000028196,0.0000028136,0.0000028086, -0.0000028060,0.0000028043,0.0000028035,0.0000028035,0.0000028049, -0.0000028057,0.0000028045,0.0000028007,0.0000027955,0.0000027909, -0.0000027870,0.0000027815,0.0000027747,0.0000027670,0.0000027590, -0.0000027544,0.0000027557,0.0000027637,0.0000027746,0.0000027849, -0.0000027929,0.0000027984,0.0000027997,0.0000027959,0.0000027865, -0.0000027778,0.0000027750,0.0000027750,0.0000027762,0.0000027788, -0.0000027823,0.0000027883,0.0000027986,0.0000028095,0.0000028133, -0.0000028109,0.0000028067,0.0000028070,0.0000028107,0.0000028157, -0.0000028246,0.0000028354,0.0000028388,0.0000028363,0.0000028275, -0.0000028075,0.0000027881,0.0000027844,0.0000027945,0.0000028141, -0.0000028278,0.0000028245,0.0000028102,0.0000028023,0.0000028118, -0.0000028403,0.0000028631,0.0000028681,0.0000028682,0.0000028681, -0.0000028676,0.0000028703,0.0000028837,0.0000029056,0.0000029281, -0.0000029458,0.0000029565,0.0000029591,0.0000029567,0.0000029550, -0.0000029558,0.0000029584,0.0000029594,0.0000029579,0.0000029534, -0.0000029472,0.0000029405,0.0000029348,0.0000029284,0.0000029205, -0.0000029126,0.0000029051,0.0000028982,0.0000028935,0.0000028941, -0.0000028999,0.0000029074,0.0000029103,0.0000029069,0.0000028956, -0.0000028815,0.0000028704,0.0000028654,0.0000028661,0.0000028728, -0.0000028828,0.0000028903,0.0000028912,0.0000028870,0.0000028808, -0.0000028751,0.0000028729,0.0000028757,0.0000028829,0.0000028899, -0.0000028920,0.0000028915,0.0000028876,0.0000028817,0.0000028753, -0.0000028708,0.0000028683,0.0000028652,0.0000028605,0.0000028555, -0.0000028502,0.0000028448,0.0000028393,0.0000028325,0.0000028247, -0.0000028190,0.0000028159,0.0000028117,0.0000028098,0.0000028131, -0.0000028224,0.0000028303,0.0000028336,0.0000028349,0.0000028336, -0.0000028307,0.0000028272,0.0000028242,0.0000028217,0.0000028190, -0.0000028134,0.0000028060,0.0000028018,0.0000028034,0.0000028097, -0.0000028167,0.0000028219,0.0000028281,0.0000028400,0.0000028511, -0.0000028533,0.0000028481,0.0000028409,0.0000028356,0.0000028358, -0.0000028381,0.0000028364,0.0000028258,0.0000028097,0.0000028013, -0.0000028042,0.0000028123,0.0000028151,0.0000028083,0.0000027907, -0.0000027732,0.0000027636,0.0000027576,0.0000027561,0.0000027601, -0.0000027691,0.0000027733,0.0000027698,0.0000027647,0.0000027643, -0.0000027671,0.0000027779,0.0000027962,0.0000028101,0.0000028122, -0.0000028057,0.0000027994,0.0000027997,0.0000028042,0.0000028097, -0.0000028139,0.0000028172,0.0000028253,0.0000028375,0.0000028425, -0.0000028337,0.0000028161,0.0000028046,0.0000028040,0.0000028100, -0.0000028153,0.0000028182,0.0000028221,0.0000028198,0.0000028090, -0.0000028028,0.0000028012,0.0000028019,0.0000028098,0.0000028247, -0.0000028364,0.0000028418,0.0000028435,0.0000028457,0.0000028501, -0.0000028538,0.0000028562,0.0000028560,0.0000028476,0.0000028299, -0.0000028157,0.0000028144,0.0000028232,0.0000028387,0.0000028541, -0.0000028625,0.0000028638,0.0000028659,0.0000028739,0.0000028851, -0.0000028953,0.0000028984,0.0000028923,0.0000028769,0.0000028654, -0.0000028633,0.0000028663,0.0000028709,0.0000028718,0.0000028698, -0.0000028693,0.0000028717,0.0000028730,0.0000028769,0.0000028863, -0.0000028989,0.0000029054,0.0000029065,0.0000029037,0.0000028979, -0.0000028911,0.0000028866,0.0000028811,0.0000028701,0.0000028564, -0.0000028459,0.0000028379,0.0000028311,0.0000028275,0.0000028283, -0.0000028315,0.0000028372,0.0000028468,0.0000028519,0.0000028519, -0.0000028480,0.0000028444,0.0000028386,0.0000028336,0.0000028289, -0.0000028279,0.0000028299,0.0000028375,0.0000028477,0.0000028596, -0.0000028683,0.0000028732,0.0000028719,0.0000028645,0.0000028529, -0.0000028416,0.0000028310,0.0000028211,0.0000028111,0.0000028026, -0.0000027982,0.0000027949,0.0000027907,0.0000027879,0.0000027868, -0.0000027842,0.0000027803,0.0000027795,0.0000027809,0.0000027839, -0.0000027899,0.0000027966,0.0000027989,0.0000027963,0.0000027893, -0.0000027804,0.0000027723,0.0000027657,0.0000027599,0.0000027547, -0.0000027505,0.0000027484,0.0000027483,0.0000027549,0.0000027807, -0.0000028006,0.0000027979,0.0000027999,0.0000028101,0.0000028217, -0.0000028269,0.0000028222,0.0000028147,0.0000028026,0.0000027858, -0.0000027761,0.0000027695,0.0000027643,0.0000027585,0.0000027520, -0.0000027479,0.0000027459,0.0000027441,0.0000027443,0.0000027544, -0.0000027671,0.0000027676,0.0000027574,0.0000027524,0.0000027544, -0.0000027591,0.0000027613,0.0000027546,0.0000027565,0.0000027761, -0.0000027909,0.0000027960,0.0000027981,0.0000028033,0.0000028075, -0.0000028110,0.0000028127,0.0000028105,0.0000028022,0.0000027875, -0.0000027787,0.0000027784,0.0000027842,0.0000027888,0.0000027898, -0.0000027930,0.0000027998,0.0000028059,0.0000028087,0.0000028086, -0.0000028076,0.0000028086,0.0000028082,0.0000028040,0.0000027937, -0.0000027801,0.0000027747,0.0000027764,0.0000027788,0.0000027812, -0.0000027829,0.0000027828,0.0000027824,0.0000027850,0.0000027922, -0.0000027979,0.0000027987,0.0000027961,0.0000027922,0.0000027877, -0.0000027844,0.0000027824,0.0000027833,0.0000027880,0.0000027965, -0.0000028042,0.0000028123,0.0000028255,0.0000028399,0.0000028457, -0.0000028517,0.0000028567,0.0000028543,0.0000028544,0.0000028645, -0.0000028808,0.0000028912,0.0000028911,0.0000028832,0.0000028739, -0.0000028687,0.0000028666,0.0000028681,0.0000028719,0.0000028722, -0.0000028679,0.0000028613,0.0000028523,0.0000028468,0.0000028472, -0.0000028518,0.0000028582,0.0000028613,0.0000028568,0.0000028445, -0.0000028335,0.0000028316,0.0000028370,0.0000028469,0.0000028534, -0.0000028565,0.0000028616,0.0000028697,0.0000028749,0.0000028745, -0.0000028715,0.0000028712,0.0000028732,0.0000028788,0.0000028838, -0.0000028859,0.0000028863,0.0000028858,0.0000028837,0.0000028790, -0.0000028718,0.0000028656,0.0000028636,0.0000028629,0.0000028600, -0.0000028627,0.0000028698,0.0000028736,0.0000028739,0.0000028712, -0.0000028701,0.0000028681,0.0000028644,0.0000028664,0.0000028703, -0.0000028731,0.0000028735,0.0000028724,0.0000028681,0.0000028627, -0.0000028580,0.0000028534,0.0000028512,0.0000028506,0.0000028520, -0.0000028544,0.0000028545,0.0000028526,0.0000028471,0.0000028398, -0.0000028343,0.0000028308,0.0000028291,0.0000028285,0.0000028273, -0.0000028267,0.0000028278,0.0000028309,0.0000028354,0.0000028381, -0.0000028369,0.0000028288,0.0000028163,0.0000028031,0.0000027955, -0.0000027954,0.0000028034,0.0000028153,0.0000028272,0.0000028377, -0.0000028466,0.0000028528,0.0000028547,0.0000028535,0.0000028500, -0.0000028452,0.0000028419,0.0000028420,0.0000028449,0.0000028510, -0.0000028568,0.0000028621,0.0000028663,0.0000028672,0.0000028651, -0.0000028622,0.0000028599,0.0000028572,0.0000028531,0.0000028497, -0.0000028484,0.0000028424,0.0000028316,0.0000028222,0.0000028152, -0.0000028099,0.0000028064,0.0000028031,0.0000028001,0.0000027971, -0.0000027950,0.0000027932,0.0000027897,0.0000027857,0.0000027847, -0.0000027882,0.0000027994,0.0000028103,0.0000028147,0.0000028133, -0.0000028105,0.0000028082,0.0000028079,0.0000028161,0.0000028330, -0.0000028502,0.0000028562,0.0000028535,0.0000028445,0.0000028347, -0.0000028356,0.0000028414,0.0000028492,0.0000028523,0.0000028537, -0.0000028579,0.0000028615,0.0000028644,0.0000028604,0.0000028435, -0.0000028286,0.0000028248,0.0000028262,0.0000028275,0.0000028313, -0.0000028390,0.0000028406,0.0000028356,0.0000028278,0.0000028224, -0.0000028189,0.0000028166,0.0000028160,0.0000028164,0.0000028166, -0.0000028136,0.0000028099,0.0000028065,0.0000028055,0.0000028078, -0.0000028090,0.0000028083,0.0000028058,0.0000028033,0.0000028020, -0.0000028011,0.0000027996,0.0000027977,0.0000027951,0.0000027908, -0.0000027841,0.0000027756,0.0000027676,0.0000027626,0.0000027608, -0.0000027612,0.0000027638,0.0000027676,0.0000027703,0.0000027691, -0.0000027647,0.0000027573,0.0000027517,0.0000027474,0.0000027452, -0.0000027451,0.0000027450,0.0000027447,0.0000027457,0.0000027487, -0.0000027530,0.0000027620,0.0000027772,0.0000027972,0.0000028122, -0.0000028125,0.0000028042,0.0000027998,0.0000028019,0.0000028082, -0.0000028180,0.0000028285,0.0000028404,0.0000028488,0.0000028516, -0.0000028515,0.0000028489,0.0000028474,0.0000028505,0.0000028560, -0.0000028577,0.0000028540,0.0000028449,0.0000028348,0.0000028329, -0.0000028350,0.0000028274,0.0000028127,0.0000028063,0.0000028052, -0.0000028049,0.0000028019,0.0000027983,0.0000027980,0.0000028039, -0.0000028109,0.0000028144,0.0000028189,0.0000028270,0.0000028342, -0.0000028369,0.0000028368,0.0000028354,0.0000028328,0.0000028283, -0.0000028238,0.0000028209,0.0000028203,0.0000028215,0.0000028232, -0.0000028248,0.0000028268,0.0000028268,0.0000028223,0.0000028143, -0.0000028058,0.0000027982,0.0000027938,0.0000027899,0.0000027850, -0.0000027783,0.0000027696,0.0000027615,0.0000027593,0.0000027634, -0.0000027729,0.0000027817,0.0000027873,0.0000027901,0.0000027917, -0.0000027941,0.0000027955,0.0000027910,0.0000027816,0.0000027747, -0.0000027738,0.0000027776,0.0000027844,0.0000027904,0.0000027965, -0.0000028054,0.0000028147,0.0000028177,0.0000028142,0.0000028100, -0.0000028112,0.0000028152,0.0000028192,0.0000028279,0.0000028387, -0.0000028418,0.0000028381,0.0000028263,0.0000028038,0.0000027859, -0.0000027844,0.0000027977,0.0000028180,0.0000028296,0.0000028246, -0.0000028102,0.0000028053,0.0000028189,0.0000028480,0.0000028671, -0.0000028700,0.0000028698,0.0000028696,0.0000028687,0.0000028705, -0.0000028820,0.0000029024,0.0000029252,0.0000029436,0.0000029542, -0.0000029566,0.0000029534,0.0000029492,0.0000029474,0.0000029473, -0.0000029479,0.0000029483,0.0000029472,0.0000029444,0.0000029421, -0.0000029412,0.0000029392,0.0000029344,0.0000029275,0.0000029213, -0.0000029159,0.0000029100,0.0000029056,0.0000029050,0.0000029075, -0.0000029092,0.0000029058,0.0000028981,0.0000028885,0.0000028784, -0.0000028697,0.0000028652,0.0000028655,0.0000028717,0.0000028824, -0.0000028911,0.0000028934,0.0000028900,0.0000028810,0.0000028720, -0.0000028694,0.0000028727,0.0000028794,0.0000028846,0.0000028864, -0.0000028848,0.0000028817,0.0000028781,0.0000028764,0.0000028744, -0.0000028714,0.0000028665,0.0000028606,0.0000028553,0.0000028509, -0.0000028462,0.0000028396,0.0000028313,0.0000028232,0.0000028188, -0.0000028143,0.0000028098,0.0000028097,0.0000028168,0.0000028247, -0.0000028283,0.0000028299,0.0000028290,0.0000028255,0.0000028212, -0.0000028175,0.0000028166,0.0000028183,0.0000028197,0.0000028202, -0.0000028166,0.0000028120,0.0000028116,0.0000028163,0.0000028220, -0.0000028257,0.0000028319,0.0000028451,0.0000028543,0.0000028527, -0.0000028467,0.0000028416,0.0000028401,0.0000028425,0.0000028434, -0.0000028378,0.0000028230,0.0000028087,0.0000028036,0.0000028066, -0.0000028141,0.0000028154,0.0000028035,0.0000027838,0.0000027706, -0.0000027657,0.0000027596,0.0000027564,0.0000027613,0.0000027709, -0.0000027750,0.0000027717,0.0000027671,0.0000027664,0.0000027700, -0.0000027800,0.0000027931,0.0000028026,0.0000028045,0.0000027992, -0.0000027947,0.0000027955,0.0000027998,0.0000028057,0.0000028113, -0.0000028153,0.0000028196,0.0000028274,0.0000028339,0.0000028308, -0.0000028177,0.0000028040,0.0000028005,0.0000028056,0.0000028118, -0.0000028149,0.0000028197,0.0000028194,0.0000028105,0.0000028026, -0.0000028011,0.0000028022,0.0000028084,0.0000028219,0.0000028341, -0.0000028398,0.0000028407,0.0000028416,0.0000028458,0.0000028522, -0.0000028556,0.0000028519,0.0000028359,0.0000028147,0.0000028002, -0.0000027991,0.0000028069,0.0000028229,0.0000028426,0.0000028578, -0.0000028631,0.0000028648,0.0000028718,0.0000028825,0.0000028924, -0.0000028978,0.0000028965,0.0000028895,0.0000028785,0.0000028691, -0.0000028656,0.0000028653,0.0000028665,0.0000028638,0.0000028630, -0.0000028630,0.0000028650,0.0000028653,0.0000028697,0.0000028795, -0.0000028887,0.0000028944,0.0000028978,0.0000028977,0.0000028942, -0.0000028921,0.0000028900,0.0000028865,0.0000028787,0.0000028686, -0.0000028574,0.0000028457,0.0000028357,0.0000028300,0.0000028299, -0.0000028328,0.0000028428,0.0000028530,0.0000028580,0.0000028568, -0.0000028530,0.0000028466,0.0000028411,0.0000028339,0.0000028290, -0.0000028271,0.0000028307,0.0000028381,0.0000028492,0.0000028607, -0.0000028703,0.0000028753,0.0000028753,0.0000028689,0.0000028601, -0.0000028498,0.0000028389,0.0000028271,0.0000028158,0.0000028079, -0.0000028025,0.0000027959,0.0000027906,0.0000027888,0.0000027873, -0.0000027826,0.0000027769,0.0000027730,0.0000027719,0.0000027753, -0.0000027811,0.0000027886,0.0000027933,0.0000027930,0.0000027880, -0.0000027816,0.0000027757,0.0000027702,0.0000027643,0.0000027583, -0.0000027536,0.0000027514,0.0000027497,0.0000027552,0.0000027834, -0.0000028087,0.0000028056,0.0000028056,0.0000028150,0.0000028258, -0.0000028303,0.0000028251,0.0000028166,0.0000028052,0.0000027906, -0.0000027822,0.0000027762,0.0000027689,0.0000027610,0.0000027547, -0.0000027513,0.0000027496,0.0000027476,0.0000027489,0.0000027606, -0.0000027718,0.0000027697,0.0000027582,0.0000027525,0.0000027545, -0.0000027596,0.0000027615,0.0000027546,0.0000027562,0.0000027735, -0.0000027877,0.0000027932,0.0000027970,0.0000028043,0.0000028094, -0.0000028109,0.0000028104,0.0000028058,0.0000027961,0.0000027842, -0.0000027801,0.0000027840,0.0000027916,0.0000027967,0.0000027987, -0.0000028021,0.0000028075,0.0000028117,0.0000028119,0.0000028082, -0.0000028051,0.0000028034,0.0000028011,0.0000027955,0.0000027844, -0.0000027716,0.0000027663,0.0000027674,0.0000027709,0.0000027768, -0.0000027813,0.0000027817,0.0000027830,0.0000027891,0.0000027966, -0.0000027999,0.0000027979,0.0000027918,0.0000027854,0.0000027803, -0.0000027755,0.0000027728,0.0000027732,0.0000027794,0.0000027918, -0.0000028030,0.0000028148,0.0000028288,0.0000028413,0.0000028480, -0.0000028573,0.0000028614,0.0000028586,0.0000028609,0.0000028707, -0.0000028826,0.0000028894,0.0000028890,0.0000028829,0.0000028749, -0.0000028703,0.0000028700,0.0000028721,0.0000028754,0.0000028758, -0.0000028710,0.0000028617,0.0000028510,0.0000028426,0.0000028409, -0.0000028449,0.0000028526,0.0000028601,0.0000028596,0.0000028500, -0.0000028391,0.0000028356,0.0000028397,0.0000028477,0.0000028518, -0.0000028544,0.0000028597,0.0000028666,0.0000028711,0.0000028711, -0.0000028688,0.0000028685,0.0000028696,0.0000028742,0.0000028792, -0.0000028830,0.0000028857,0.0000028882,0.0000028876,0.0000028833, -0.0000028769,0.0000028715,0.0000028705,0.0000028707,0.0000028691, -0.0000028688,0.0000028741,0.0000028774,0.0000028773,0.0000028735, -0.0000028712,0.0000028718,0.0000028723,0.0000028751,0.0000028770, -0.0000028752,0.0000028738,0.0000028722,0.0000028671,0.0000028615, -0.0000028545,0.0000028480,0.0000028430,0.0000028419,0.0000028430, -0.0000028467,0.0000028494,0.0000028503,0.0000028484,0.0000028435, -0.0000028377,0.0000028309,0.0000028252,0.0000028226,0.0000028209, -0.0000028201,0.0000028205,0.0000028207,0.0000028225,0.0000028248, -0.0000028259,0.0000028226,0.0000028143,0.0000028029,0.0000027951, -0.0000027931,0.0000027964,0.0000028060,0.0000028182,0.0000028285, -0.0000028369,0.0000028441,0.0000028489,0.0000028515,0.0000028507, -0.0000028480,0.0000028439,0.0000028409,0.0000028412,0.0000028453, -0.0000028509,0.0000028570,0.0000028640,0.0000028704,0.0000028727, -0.0000028709,0.0000028681,0.0000028627,0.0000028556,0.0000028493, -0.0000028468,0.0000028487,0.0000028483,0.0000028402,0.0000028267, -0.0000028140,0.0000028072,0.0000028059,0.0000028059,0.0000028042, -0.0000027990,0.0000027941,0.0000027923,0.0000027921,0.0000027907, -0.0000027880,0.0000027877,0.0000027937,0.0000028021,0.0000028080, -0.0000028075,0.0000028041,0.0000028037,0.0000028059,0.0000028118, -0.0000028245,0.0000028422,0.0000028521,0.0000028515,0.0000028432, -0.0000028332,0.0000028337,0.0000028402,0.0000028506,0.0000028544, -0.0000028551,0.0000028573,0.0000028593,0.0000028607,0.0000028535, -0.0000028363,0.0000028231,0.0000028202,0.0000028217,0.0000028243, -0.0000028315,0.0000028370,0.0000028353,0.0000028289,0.0000028236, -0.0000028215,0.0000028212,0.0000028218,0.0000028218,0.0000028209, -0.0000028184,0.0000028129,0.0000028080,0.0000028061,0.0000028066, -0.0000028085,0.0000028086,0.0000028073,0.0000028062,0.0000028057, -0.0000028048,0.0000028030,0.0000027992,0.0000027942,0.0000027894, -0.0000027849,0.0000027787,0.0000027706,0.0000027650,0.0000027620, -0.0000027609,0.0000027628,0.0000027659,0.0000027690,0.0000027701, -0.0000027689,0.0000027647,0.0000027575,0.0000027505,0.0000027443, -0.0000027417,0.0000027432,0.0000027449,0.0000027448,0.0000027447, -0.0000027464,0.0000027520,0.0000027621,0.0000027771,0.0000027957, -0.0000028123,0.0000028150,0.0000028078,0.0000028032,0.0000028068, -0.0000028144,0.0000028217,0.0000028303,0.0000028424,0.0000028542, -0.0000028580,0.0000028580,0.0000028541,0.0000028494,0.0000028501, -0.0000028551,0.0000028588,0.0000028578,0.0000028500,0.0000028382, -0.0000028326,0.0000028358,0.0000028356,0.0000028257,0.0000028170, -0.0000028133,0.0000028124,0.0000028095,0.0000028039,0.0000027987, -0.0000027980,0.0000028040,0.0000028101,0.0000028132,0.0000028156, -0.0000028206,0.0000028279,0.0000028345,0.0000028389,0.0000028411, -0.0000028417,0.0000028412,0.0000028425,0.0000028454,0.0000028470, -0.0000028467,0.0000028441,0.0000028404,0.0000028354,0.0000028283, -0.0000028201,0.0000028106,0.0000028021,0.0000027967,0.0000027938, -0.0000027912,0.0000027866,0.0000027789,0.0000027700,0.0000027629, -0.0000027623,0.0000027693,0.0000027797,0.0000027871,0.0000027899, -0.0000027891,0.0000027876,0.0000027885,0.0000027921,0.0000027923, -0.0000027851,0.0000027763,0.0000027739,0.0000027796,0.0000027890, -0.0000027968,0.0000028038,0.0000028124,0.0000028195,0.0000028206, -0.0000028165,0.0000028143,0.0000028164,0.0000028196,0.0000028230, -0.0000028322,0.0000028423,0.0000028446,0.0000028395,0.0000028236, -0.0000027990,0.0000027841,0.0000027863,0.0000028024,0.0000028230, -0.0000028309,0.0000028250,0.0000028111,0.0000028082,0.0000028270, -0.0000028551,0.0000028699,0.0000028710,0.0000028708,0.0000028712, -0.0000028702,0.0000028707,0.0000028790,0.0000028962,0.0000029175, -0.0000029361,0.0000029478,0.0000029511,0.0000029489,0.0000029448, -0.0000029415,0.0000029393,0.0000029375,0.0000029356,0.0000029332, -0.0000029322,0.0000029346,0.0000029395,0.0000029426,0.0000029429, -0.0000029404,0.0000029367,0.0000029324,0.0000029271,0.0000029222, -0.0000029203,0.0000029198,0.0000029162,0.0000029080,0.0000028981, -0.0000028890,0.0000028816,0.0000028747,0.0000028688,0.0000028668, -0.0000028689,0.0000028751,0.0000028825,0.0000028869,0.0000028888, -0.0000028841,0.0000028781,0.0000028735,0.0000028727,0.0000028748, -0.0000028766,0.0000028769,0.0000028747,0.0000028719,0.0000028706, -0.0000028711,0.0000028712,0.0000028702,0.0000028672,0.0000028628, -0.0000028582,0.0000028543,0.0000028507,0.0000028457,0.0000028370, -0.0000028266,0.0000028183,0.0000028131,0.0000028076,0.0000028047, -0.0000028074,0.0000028150,0.0000028205,0.0000028237,0.0000028239, -0.0000028209,0.0000028163,0.0000028110,0.0000028079,0.0000028095, -0.0000028150,0.0000028210,0.0000028255,0.0000028265,0.0000028226, -0.0000028197,0.0000028216,0.0000028260,0.0000028285,0.0000028356, -0.0000028491,0.0000028550,0.0000028513,0.0000028458,0.0000028439, -0.0000028450,0.0000028476,0.0000028471,0.0000028378,0.0000028219, -0.0000028105,0.0000028062,0.0000028080,0.0000028132,0.0000028125, -0.0000027983,0.0000027809,0.0000027734,0.0000027709,0.0000027629, -0.0000027581,0.0000027628,0.0000027728,0.0000027785,0.0000027769, -0.0000027724,0.0000027705,0.0000027737,0.0000027805,0.0000027869, -0.0000027926,0.0000027956,0.0000027936,0.0000027917,0.0000027924, -0.0000027955,0.0000028012,0.0000028074,0.0000028126,0.0000028157, -0.0000028191,0.0000028234,0.0000028248,0.0000028170,0.0000028058, -0.0000027994,0.0000028012,0.0000028063,0.0000028092,0.0000028143, -0.0000028180,0.0000028117,0.0000028028,0.0000028004,0.0000028017, -0.0000028070,0.0000028180,0.0000028292,0.0000028354,0.0000028374, -0.0000028385,0.0000028426,0.0000028489,0.0000028501,0.0000028408, -0.0000028208,0.0000028012,0.0000027898,0.0000027901,0.0000027955, -0.0000028075,0.0000028268,0.0000028479,0.0000028605,0.0000028636, -0.0000028687,0.0000028793,0.0000028900,0.0000028960,0.0000028961, -0.0000028930,0.0000028876,0.0000028801,0.0000028724,0.0000028680, -0.0000028661,0.0000028629,0.0000028577,0.0000028551,0.0000028552, -0.0000028543,0.0000028556,0.0000028623,0.0000028733,0.0000028820, -0.0000028869,0.0000028888,0.0000028883,0.0000028879,0.0000028883, -0.0000028892,0.0000028885,0.0000028860,0.0000028801,0.0000028703, -0.0000028575,0.0000028441,0.0000028345,0.0000028299,0.0000028308, -0.0000028395,0.0000028519,0.0000028595,0.0000028631,0.0000028583, -0.0000028519,0.0000028439,0.0000028351,0.0000028294,0.0000028287, -0.0000028327,0.0000028402,0.0000028490,0.0000028586,0.0000028670, -0.0000028714,0.0000028710,0.0000028665,0.0000028604,0.0000028515, -0.0000028400,0.0000028271,0.0000028168,0.0000028092,0.0000028020, -0.0000027958,0.0000027919,0.0000027903,0.0000027890,0.0000027838, -0.0000027756,0.0000027682,0.0000027650,0.0000027655,0.0000027693, -0.0000027756,0.0000027814,0.0000027841,0.0000027828,0.0000027789, -0.0000027746,0.0000027695,0.0000027639,0.0000027590,0.0000027564, -0.0000027562,0.0000027545,0.0000027591,0.0000027875,0.0000028157, -0.0000028136,0.0000028103,0.0000028184,0.0000028283,0.0000028308, -0.0000028269,0.0000028189,0.0000028088,0.0000027971,0.0000027889, -0.0000027826,0.0000027733,0.0000027632,0.0000027569,0.0000027540, -0.0000027527,0.0000027513,0.0000027540,0.0000027660,0.0000027757, -0.0000027717,0.0000027595,0.0000027523,0.0000027540,0.0000027593, -0.0000027623,0.0000027556,0.0000027545,0.0000027677,0.0000027818, -0.0000027887,0.0000027953,0.0000028052,0.0000028105,0.0000028107, -0.0000028070,0.0000028005,0.0000027932,0.0000027856,0.0000027849, -0.0000027894,0.0000027958,0.0000028010,0.0000028058,0.0000028102, -0.0000028146,0.0000028173,0.0000028171,0.0000028118,0.0000028048, -0.0000027985,0.0000027930,0.0000027869,0.0000027774,0.0000027669, -0.0000027619,0.0000027627,0.0000027664,0.0000027752,0.0000027806, -0.0000027827,0.0000027859,0.0000027946,0.0000028006,0.0000027992, -0.0000027935,0.0000027860,0.0000027783,0.0000027724,0.0000027684, -0.0000027666,0.0000027689,0.0000027769,0.0000027897,0.0000028038, -0.0000028181,0.0000028307,0.0000028410,0.0000028505,0.0000028617, -0.0000028650,0.0000028634,0.0000028672,0.0000028745,0.0000028814, -0.0000028866,0.0000028870,0.0000028821,0.0000028757,0.0000028743, -0.0000028771,0.0000028799,0.0000028803,0.0000028788,0.0000028732, -0.0000028620,0.0000028511,0.0000028411,0.0000028377,0.0000028394, -0.0000028456,0.0000028554,0.0000028611,0.0000028567,0.0000028458, -0.0000028395,0.0000028425,0.0000028493,0.0000028519,0.0000028539, -0.0000028578,0.0000028631,0.0000028669,0.0000028675,0.0000028668, -0.0000028664,0.0000028667,0.0000028701,0.0000028753,0.0000028807, -0.0000028860,0.0000028906,0.0000028906,0.0000028861,0.0000028807, -0.0000028783,0.0000028764,0.0000028766,0.0000028762,0.0000028744, -0.0000028792,0.0000028835,0.0000028823,0.0000028785,0.0000028748, -0.0000028758,0.0000028781,0.0000028809,0.0000028799,0.0000028750, -0.0000028680,0.0000028626,0.0000028570,0.0000028525,0.0000028459, -0.0000028384,0.0000028311,0.0000028283,0.0000028285,0.0000028333, -0.0000028386,0.0000028413,0.0000028416,0.0000028393,0.0000028352, -0.0000028280,0.0000028193,0.0000028131,0.0000028092,0.0000028063, -0.0000028060,0.0000028056,0.0000028053,0.0000028076,0.0000028094, -0.0000028099,0.0000028070,0.0000028027,0.0000027978,0.0000027956, -0.0000027972,0.0000028018,0.0000028088,0.0000028150,0.0000028196, -0.0000028240,0.0000028292,0.0000028331,0.0000028355,0.0000028353, -0.0000028338,0.0000028301,0.0000028279,0.0000028291,0.0000028338, -0.0000028393,0.0000028457,0.0000028537,0.0000028617,0.0000028659, -0.0000028673,0.0000028680,0.0000028664,0.0000028598,0.0000028487, -0.0000028419,0.0000028442,0.0000028477,0.0000028448,0.0000028345, -0.0000028180,0.0000028053,0.0000028021,0.0000028040,0.0000028063, -0.0000028031,0.0000027962,0.0000027910,0.0000027900,0.0000027909, -0.0000027914,0.0000027923,0.0000027939,0.0000027967,0.0000028005, -0.0000028009,0.0000027981,0.0000027983,0.0000028032,0.0000028105, -0.0000028188,0.0000028338,0.0000028471,0.0000028490,0.0000028415, -0.0000028316,0.0000028321,0.0000028408,0.0000028529,0.0000028567, -0.0000028567,0.0000028565,0.0000028572,0.0000028570,0.0000028464, -0.0000028290,0.0000028175,0.0000028158,0.0000028185,0.0000028237, -0.0000028310,0.0000028329,0.0000028287,0.0000028243,0.0000028230, -0.0000028233,0.0000028245,0.0000028248,0.0000028235,0.0000028213, -0.0000028169,0.0000028115,0.0000028086,0.0000028090,0.0000028104, -0.0000028118,0.0000028123,0.0000028125,0.0000028127,0.0000028127, -0.0000028119,0.0000028091,0.0000028035,0.0000027960,0.0000027891, -0.0000027840,0.0000027789,0.0000027732,0.0000027700,0.0000027685, -0.0000027680,0.0000027686,0.0000027704,0.0000027721,0.0000027722, -0.0000027694,0.0000027635,0.0000027562,0.0000027490,0.0000027427, -0.0000027386,0.0000027391,0.0000027417,0.0000027432,0.0000027434, -0.0000027451,0.0000027519,0.0000027630,0.0000027775,0.0000027944, -0.0000028097,0.0000028151,0.0000028107,0.0000028072,0.0000028118, -0.0000028207,0.0000028269,0.0000028328,0.0000028436,0.0000028556, -0.0000028615,0.0000028622,0.0000028580,0.0000028504,0.0000028479, -0.0000028509,0.0000028562,0.0000028577,0.0000028527,0.0000028421, -0.0000028322,0.0000028312,0.0000028350,0.0000028317,0.0000028269, -0.0000028230,0.0000028194,0.0000028156,0.0000028123,0.0000028073, -0.0000028033,0.0000028034,0.0000028057,0.0000028067,0.0000028076, -0.0000028084,0.0000028092,0.0000028131,0.0000028186,0.0000028229, -0.0000028264,0.0000028310,0.0000028364,0.0000028414,0.0000028447, -0.0000028460,0.0000028455,0.0000028440,0.0000028393,0.0000028330, -0.0000028257,0.0000028159,0.0000028051,0.0000027968,0.0000027927, -0.0000027911,0.0000027886,0.0000027832,0.0000027758,0.0000027684, -0.0000027647,0.0000027669,0.0000027752,0.0000027842,0.0000027889, -0.0000027895,0.0000027879,0.0000027860,0.0000027857,0.0000027884, -0.0000027900,0.0000027862,0.0000027788,0.0000027759,0.0000027820, -0.0000027920,0.0000028005,0.0000028090,0.0000028182,0.0000028230, -0.0000028221,0.0000028190,0.0000028189,0.0000028218,0.0000028240, -0.0000028271,0.0000028369,0.0000028467,0.0000028482,0.0000028403, -0.0000028195,0.0000027941,0.0000027840,0.0000027899,0.0000028092, -0.0000028290,0.0000028342,0.0000028258,0.0000028143,0.0000028152, -0.0000028354,0.0000028600,0.0000028700,0.0000028703,0.0000028714, -0.0000028733,0.0000028723,0.0000028714,0.0000028759,0.0000028880, -0.0000029050,0.0000029223,0.0000029354,0.0000029412,0.0000029405, -0.0000029375,0.0000029350,0.0000029329,0.0000029302,0.0000029259, -0.0000029208,0.0000029183,0.0000029215,0.0000029280,0.0000029350, -0.0000029403,0.0000029432,0.0000029462,0.0000029471,0.0000029431, -0.0000029366,0.0000029341,0.0000029356,0.0000029350,0.0000029259, -0.0000029097,0.0000028938,0.0000028828,0.0000028755,0.0000028692, -0.0000028666,0.0000028681,0.0000028733,0.0000028787,0.0000028810, -0.0000028802,0.0000028767,0.0000028725,0.0000028713,0.0000028729, -0.0000028768,0.0000028785,0.0000028775,0.0000028735,0.0000028687, -0.0000028648,0.0000028619,0.0000028599,0.0000028576,0.0000028545, -0.0000028508,0.0000028472,0.0000028448,0.0000028435,0.0000028407, -0.0000028330,0.0000028214,0.0000028103,0.0000028051,0.0000028013, -0.0000027989,0.0000028003,0.0000028067,0.0000028142,0.0000028204, -0.0000028224,0.0000028199,0.0000028153,0.0000028102,0.0000028055, -0.0000028044,0.0000028081,0.0000028139,0.0000028201,0.0000028283, -0.0000028341,0.0000028314,0.0000028261,0.0000028253,0.0000028282, -0.0000028308,0.0000028396,0.0000028520,0.0000028548,0.0000028494, -0.0000028462,0.0000028464,0.0000028485,0.0000028497,0.0000028482, -0.0000028378,0.0000028237,0.0000028142,0.0000028085,0.0000028070, -0.0000028093,0.0000028079,0.0000027961,0.0000027833,0.0000027795, -0.0000027777,0.0000027682,0.0000027617,0.0000027648,0.0000027739, -0.0000027819,0.0000027836,0.0000027793,0.0000027754,0.0000027764, -0.0000027790,0.0000027802,0.0000027842,0.0000027895,0.0000027909, -0.0000027901,0.0000027893,0.0000027913,0.0000027968,0.0000028028, -0.0000028086,0.0000028125,0.0000028142,0.0000028154,0.0000028168, -0.0000028145,0.0000028078,0.0000028004,0.0000027978,0.0000028001, -0.0000028026,0.0000028070,0.0000028126,0.0000028112,0.0000028039, -0.0000028000,0.0000028007,0.0000028053,0.0000028150,0.0000028254, -0.0000028319,0.0000028350,0.0000028366,0.0000028391,0.0000028413, -0.0000028378,0.0000028244,0.0000028064,0.0000027935,0.0000027876, -0.0000027892,0.0000027930,0.0000027985,0.0000028118,0.0000028336, -0.0000028541,0.0000028623,0.0000028655,0.0000028744,0.0000028866, -0.0000028945,0.0000028951,0.0000028927,0.0000028890,0.0000028856, -0.0000028800,0.0000028751,0.0000028715,0.0000028687,0.0000028607, -0.0000028563,0.0000028515,0.0000028490,0.0000028441,0.0000028456, -0.0000028542,0.0000028654,0.0000028750,0.0000028797,0.0000028804, -0.0000028811,0.0000028822,0.0000028833,0.0000028846,0.0000028861, -0.0000028861,0.0000028847,0.0000028785,0.0000028680,0.0000028547, -0.0000028411,0.0000028310,0.0000028276,0.0000028334,0.0000028458, -0.0000028604,0.0000028659,0.0000028645,0.0000028578,0.0000028473, -0.0000028375,0.0000028318,0.0000028321,0.0000028373,0.0000028436, -0.0000028497,0.0000028563,0.0000028611,0.0000028631,0.0000028631, -0.0000028610,0.0000028561,0.0000028487,0.0000028374,0.0000028262, -0.0000028168,0.0000028083,0.0000028020,0.0000027966,0.0000027930, -0.0000027921,0.0000027918,0.0000027874,0.0000027783,0.0000027702, -0.0000027647,0.0000027622,0.0000027633,0.0000027670,0.0000027717, -0.0000027756,0.0000027770,0.0000027755,0.0000027720,0.0000027666, -0.0000027620,0.0000027591,0.0000027596,0.0000027621,0.0000027608, -0.0000027643,0.0000027910,0.0000028191,0.0000028194,0.0000028134, -0.0000028190,0.0000028269,0.0000028301,0.0000028276,0.0000028212, -0.0000028129,0.0000028046,0.0000027962,0.0000027884,0.0000027777, -0.0000027659,0.0000027586,0.0000027561,0.0000027553,0.0000027549, -0.0000027592,0.0000027706,0.0000027789,0.0000027745,0.0000027618, -0.0000027530,0.0000027533,0.0000027577,0.0000027617,0.0000027570, -0.0000027530,0.0000027610,0.0000027739,0.0000027829,0.0000027927, -0.0000028045,0.0000028096,0.0000028086,0.0000028023,0.0000027962, -0.0000027922,0.0000027891,0.0000027884,0.0000027916,0.0000027959, -0.0000028001,0.0000028061,0.0000028126,0.0000028197,0.0000028224, -0.0000028218,0.0000028159,0.0000028056,0.0000027948,0.0000027868, -0.0000027818,0.0000027746,0.0000027665,0.0000027623,0.0000027622, -0.0000027661,0.0000027763,0.0000027823,0.0000027861,0.0000027908, -0.0000027986,0.0000028014,0.0000027974,0.0000027902,0.0000027827, -0.0000027760,0.0000027702,0.0000027669,0.0000027666,0.0000027701, -0.0000027779,0.0000027893,0.0000028051,0.0000028202,0.0000028307, -0.0000028399,0.0000028532,0.0000028644,0.0000028689,0.0000028697, -0.0000028727,0.0000028747,0.0000028789,0.0000028838,0.0000028843, -0.0000028815,0.0000028797,0.0000028808,0.0000028819,0.0000028815, -0.0000028786,0.0000028737,0.0000028669,0.0000028555,0.0000028437, -0.0000028348,0.0000028324,0.0000028345,0.0000028402,0.0000028482, -0.0000028595,0.0000028620,0.0000028531,0.0000028427,0.0000028432, -0.0000028500,0.0000028529,0.0000028544,0.0000028565,0.0000028595, -0.0000028620,0.0000028630,0.0000028644,0.0000028654,0.0000028663, -0.0000028694,0.0000028744,0.0000028807,0.0000028883,0.0000028935, -0.0000028927,0.0000028869,0.0000028839,0.0000028839,0.0000028811, -0.0000028803,0.0000028821,0.0000028822,0.0000028852,0.0000028885, -0.0000028872,0.0000028828,0.0000028781,0.0000028777,0.0000028787, -0.0000028804,0.0000028769,0.0000028670,0.0000028548,0.0000028467, -0.0000028418,0.0000028407,0.0000028363,0.0000028293,0.0000028212, -0.0000028153,0.0000028138,0.0000028169,0.0000028237,0.0000028280, -0.0000028294,0.0000028285,0.0000028255,0.0000028208,0.0000028132, -0.0000028048,0.0000027991,0.0000027935,0.0000027897,0.0000027884, -0.0000027862,0.0000027864,0.0000027901,0.0000027941,0.0000027986, -0.0000028010,0.0000028014,0.0000028002,0.0000027989,0.0000027998, -0.0000028009,0.0000028015,0.0000028019,0.0000028035,0.0000028063, -0.0000028112,0.0000028157,0.0000028191,0.0000028197,0.0000028184, -0.0000028151,0.0000028135,0.0000028150,0.0000028194,0.0000028244, -0.0000028303,0.0000028389,0.0000028483,0.0000028547,0.0000028575, -0.0000028587,0.0000028599,0.0000028593,0.0000028521,0.0000028417, -0.0000028390,0.0000028430,0.0000028443,0.0000028395,0.0000028252, -0.0000028090,0.0000028004,0.0000028003,0.0000028044,0.0000028047, -0.0000028000,0.0000027926,0.0000027873,0.0000027865,0.0000027902, -0.0000027948,0.0000027964,0.0000027957,0.0000027941,0.0000027925, -0.0000027929,0.0000027940,0.0000027989,0.0000028085,0.0000028149, -0.0000028262,0.0000028423,0.0000028471,0.0000028400,0.0000028301, -0.0000028310,0.0000028428,0.0000028558,0.0000028591,0.0000028582, -0.0000028555,0.0000028551,0.0000028528,0.0000028390,0.0000028216, -0.0000028125,0.0000028131,0.0000028180,0.0000028247,0.0000028285, -0.0000028274,0.0000028235,0.0000028228,0.0000028241,0.0000028247, -0.0000028248,0.0000028237,0.0000028209,0.0000028169,0.0000028117, -0.0000028077,0.0000028067,0.0000028078,0.0000028092,0.0000028107, -0.0000028121,0.0000028136,0.0000028144,0.0000028145,0.0000028132, -0.0000028103,0.0000028051,0.0000027978,0.0000027909,0.0000027851, -0.0000027804,0.0000027759,0.0000027733,0.0000027715,0.0000027699, -0.0000027696,0.0000027715,0.0000027738,0.0000027744,0.0000027720, -0.0000027660,0.0000027570,0.0000027470,0.0000027404,0.0000027373, -0.0000027372,0.0000027383,0.0000027393,0.0000027397,0.0000027422, -0.0000027494,0.0000027613,0.0000027768,0.0000027931,0.0000028055, -0.0000028121,0.0000028118,0.0000028103,0.0000028163,0.0000028262, -0.0000028326,0.0000028368,0.0000028425,0.0000028526,0.0000028605, -0.0000028623,0.0000028590,0.0000028504,0.0000028445,0.0000028461, -0.0000028526,0.0000028571,0.0000028551,0.0000028472,0.0000028350, -0.0000028292,0.0000028311,0.0000028300,0.0000028277,0.0000028283, -0.0000028281,0.0000028243,0.0000028189,0.0000028143,0.0000028109, -0.0000028085,0.0000028076,0.0000028057,0.0000028033,0.0000028011, -0.0000027978,0.0000027953,0.0000027956,0.0000027962,0.0000027965, -0.0000027990,0.0000028068,0.0000028178,0.0000028282,0.0000028358, -0.0000028409,0.0000028434,0.0000028419,0.0000028359,0.0000028261, -0.0000028133,0.0000028003,0.0000027902,0.0000027849,0.0000027832, -0.0000027824,0.0000027795,0.0000027748,0.0000027699,0.0000027663, -0.0000027661,0.0000027709,0.0000027790,0.0000027847,0.0000027866, -0.0000027865,0.0000027860,0.0000027854,0.0000027852,0.0000027860, -0.0000027868,0.0000027854,0.0000027808,0.0000027790,0.0000027847, -0.0000027941,0.0000028025,0.0000028123,0.0000028223,0.0000028253, -0.0000028233,0.0000028217,0.0000028233,0.0000028263,0.0000028277, -0.0000028312,0.0000028420,0.0000028516,0.0000028514,0.0000028398, -0.0000028145,0.0000027905,0.0000027861,0.0000027953,0.0000028167, -0.0000028349,0.0000028378,0.0000028279,0.0000028190,0.0000028226, -0.0000028417,0.0000028616,0.0000028672,0.0000028679,0.0000028714, -0.0000028751,0.0000028743,0.0000028726,0.0000028737,0.0000028803, -0.0000028911,0.0000029042,0.0000029167,0.0000029251,0.0000029271, -0.0000029261,0.0000029244,0.0000029226,0.0000029200,0.0000029157, -0.0000029108,0.0000029085,0.0000029111,0.0000029158,0.0000029216, -0.0000029273,0.0000029332,0.0000029408,0.0000029480,0.0000029524, -0.0000029518,0.0000029495,0.0000029477,0.0000029460,0.0000029411, -0.0000029303,0.0000029150,0.0000028994,0.0000028854,0.0000028733, -0.0000028655,0.0000028638,0.0000028671,0.0000028734,0.0000028777, -0.0000028757,0.0000028692,0.0000028618,0.0000028586,0.0000028610, -0.0000028683,0.0000028749,0.0000028778,0.0000028774,0.0000028749, -0.0000028715,0.0000028675,0.0000028623,0.0000028560,0.0000028506, -0.0000028435,0.0000028377,0.0000028347,0.0000028338,0.0000028326, -0.0000028276,0.0000028186,0.0000028091,0.0000028028,0.0000028002, -0.0000027994,0.0000028008,0.0000028056,0.0000028132,0.0000028208, -0.0000028253,0.0000028242,0.0000028195,0.0000028143,0.0000028097, -0.0000028072,0.0000028079,0.0000028114,0.0000028147,0.0000028187, -0.0000028295,0.0000028376,0.0000028368,0.0000028294,0.0000028269, -0.0000028293,0.0000028336,0.0000028435,0.0000028533,0.0000028532, -0.0000028486,0.0000028478,0.0000028489,0.0000028496,0.0000028498, -0.0000028479,0.0000028386,0.0000028271,0.0000028183,0.0000028101, -0.0000028053,0.0000028048,0.0000028044,0.0000027972,0.0000027890, -0.0000027864,0.0000027843,0.0000027755,0.0000027675,0.0000027668, -0.0000027735,0.0000027840,0.0000027888,0.0000027853,0.0000027796, -0.0000027775,0.0000027768,0.0000027774,0.0000027820,0.0000027885, -0.0000027910,0.0000027892,0.0000027865,0.0000027877,0.0000027925, -0.0000027985,0.0000028044,0.0000028092,0.0000028113,0.0000028116, -0.0000028118,0.0000028108,0.0000028071,0.0000028006,0.0000027961, -0.0000027949,0.0000027962,0.0000027996,0.0000028048,0.0000028077, -0.0000028041,0.0000028003,0.0000027992,0.0000028027,0.0000028111, -0.0000028210,0.0000028281,0.0000028318,0.0000028326,0.0000028317, -0.0000028283,0.0000028201,0.0000028071,0.0000027964,0.0000027922, -0.0000027920,0.0000027945,0.0000027956,0.0000027971,0.0000028019, -0.0000028182,0.0000028429,0.0000028593,0.0000028631,0.0000028688, -0.0000028809,0.0000028918,0.0000028949,0.0000028923,0.0000028878, -0.0000028845,0.0000028816,0.0000028780,0.0000028752,0.0000028737, -0.0000028687,0.0000028640,0.0000028580,0.0000028535,0.0000028450, -0.0000028408,0.0000028402,0.0000028465,0.0000028567,0.0000028651, -0.0000028684,0.0000028714,0.0000028753,0.0000028790,0.0000028801, -0.0000028804,0.0000028805,0.0000028815,0.0000028816,0.0000028784, -0.0000028728,0.0000028625,0.0000028489,0.0000028351,0.0000028274, -0.0000028271,0.0000028397,0.0000028570,0.0000028669,0.0000028695, -0.0000028624,0.0000028514,0.0000028407,0.0000028360,0.0000028379, -0.0000028437,0.0000028488,0.0000028534,0.0000028561,0.0000028568, -0.0000028561,0.0000028548,0.0000028531,0.0000028500,0.0000028436, -0.0000028354,0.0000028269,0.0000028183,0.0000028112,0.0000028048, -0.0000027979,0.0000027935,0.0000027932,0.0000027931,0.0000027894, -0.0000027829,0.0000027758,0.0000027689,0.0000027641,0.0000027631, -0.0000027644,0.0000027683,0.0000027719,0.0000027729,0.0000027721, -0.0000027684,0.0000027636,0.0000027610,0.0000027606,0.0000027633, -0.0000027678,0.0000027672,0.0000027695,0.0000027920,0.0000028226, -0.0000028267,0.0000028160,0.0000028172,0.0000028232,0.0000028265, -0.0000028258,0.0000028227,0.0000028168,0.0000028118,0.0000028043, -0.0000027947,0.0000027831,0.0000027696,0.0000027601,0.0000027574, -0.0000027574,0.0000027582,0.0000027631,0.0000027742,0.0000027813, -0.0000027772,0.0000027647,0.0000027541,0.0000027517,0.0000027551, -0.0000027598,0.0000027579,0.0000027526,0.0000027560,0.0000027655, -0.0000027764,0.0000027883,0.0000028009,0.0000028060,0.0000028045, -0.0000027985,0.0000027940,0.0000027923,0.0000027911,0.0000027895, -0.0000027898,0.0000027921,0.0000027955,0.0000028014,0.0000028109, -0.0000028205,0.0000028248,0.0000028247,0.0000028184,0.0000028067, -0.0000027933,0.0000027841,0.0000027802,0.0000027745,0.0000027681, -0.0000027643,0.0000027643,0.0000027684,0.0000027787,0.0000027855, -0.0000027901,0.0000027956,0.0000028010,0.0000028008,0.0000027959, -0.0000027898,0.0000027831,0.0000027769,0.0000027723,0.0000027698, -0.0000027706,0.0000027756,0.0000027825,0.0000027914,0.0000028079, -0.0000028225,0.0000028294,0.0000028399,0.0000028556,0.0000028666, -0.0000028739,0.0000028761,0.0000028755,0.0000028728,0.0000028762, -0.0000028804,0.0000028820,0.0000028837,0.0000028842,0.0000028822, -0.0000028776,0.0000028754,0.0000028729,0.0000028674,0.0000028606, -0.0000028488,0.0000028346,0.0000028242,0.0000028216,0.0000028265, -0.0000028361,0.0000028431,0.0000028547,0.0000028642,0.0000028590, -0.0000028451,0.0000028419,0.0000028484,0.0000028540,0.0000028555, -0.0000028559,0.0000028563,0.0000028565,0.0000028577,0.0000028614, -0.0000028659,0.0000028693,0.0000028723,0.0000028759,0.0000028836, -0.0000028932,0.0000028966,0.0000028931,0.0000028873,0.0000028862, -0.0000028873,0.0000028865,0.0000028858,0.0000028879,0.0000028889, -0.0000028882,0.0000028896,0.0000028892,0.0000028855,0.0000028803, -0.0000028778,0.0000028766,0.0000028736,0.0000028659,0.0000028524, -0.0000028390,0.0000028316,0.0000028311,0.0000028343,0.0000028330, -0.0000028267,0.0000028166,0.0000028082,0.0000028043,0.0000028053, -0.0000028122,0.0000028170,0.0000028183,0.0000028167,0.0000028143, -0.0000028101,0.0000028037,0.0000027949,0.0000027876,0.0000027811, -0.0000027746,0.0000027725,0.0000027714,0.0000027706,0.0000027751, -0.0000027830,0.0000027911,0.0000027973,0.0000027998,0.0000027999, -0.0000027976,0.0000027944,0.0000027922,0.0000027909,0.0000027896, -0.0000027884,0.0000027888,0.0000027908,0.0000027951,0.0000027999, -0.0000028037,0.0000028048,0.0000028035,0.0000028009,0.0000028006, -0.0000028032,0.0000028082,0.0000028120,0.0000028158,0.0000028223, -0.0000028310,0.0000028398,0.0000028457,0.0000028486,0.0000028503, -0.0000028512,0.0000028502,0.0000028440,0.0000028377,0.0000028371, -0.0000028396,0.0000028393,0.0000028307,0.0000028163,0.0000028045, -0.0000028001,0.0000028017,0.0000028036,0.0000028031,0.0000027965, -0.0000027872,0.0000027832,0.0000027853,0.0000027923,0.0000027964, -0.0000027965,0.0000027914,0.0000027848,0.0000027874,0.0000027905, -0.0000027941,0.0000028045,0.0000028109,0.0000028199,0.0000028388, -0.0000028459,0.0000028386,0.0000028294,0.0000028316,0.0000028459, -0.0000028588,0.0000028614,0.0000028594,0.0000028546,0.0000028531, -0.0000028467,0.0000028309,0.0000028147,0.0000028094,0.0000028125, -0.0000028193,0.0000028254,0.0000028247,0.0000028219,0.0000028207, -0.0000028228,0.0000028242,0.0000028222,0.0000028185,0.0000028150, -0.0000028103,0.0000028045,0.0000027985,0.0000027949,0.0000027945, -0.0000027960,0.0000027975,0.0000027987,0.0000027994,0.0000028005, -0.0000028018,0.0000028019,0.0000028007,0.0000027985,0.0000027945, -0.0000027889,0.0000027830,0.0000027772,0.0000027717,0.0000027674, -0.0000027654,0.0000027644,0.0000027636,0.0000027638,0.0000027668, -0.0000027705,0.0000027728,0.0000027719,0.0000027675,0.0000027592, -0.0000027478,0.0000027389,0.0000027362,0.0000027371,0.0000027388, -0.0000027395,0.0000027391,0.0000027399,0.0000027459,0.0000027575, -0.0000027734,0.0000027896,0.0000028011,0.0000028080,0.0000028108, -0.0000028127,0.0000028192,0.0000028306,0.0000028386,0.0000028403, -0.0000028415,0.0000028491,0.0000028569,0.0000028599,0.0000028589, -0.0000028528,0.0000028461,0.0000028464,0.0000028518,0.0000028579, -0.0000028580,0.0000028527,0.0000028407,0.0000028329,0.0000028291, -0.0000028265,0.0000028230,0.0000028249,0.0000028288,0.0000028326, -0.0000028298,0.0000028239,0.0000028175,0.0000028120,0.0000028085, -0.0000028051,0.0000028024,0.0000027995,0.0000027951,0.0000027900, -0.0000027864,0.0000027839,0.0000027832,0.0000027855,0.0000027925, -0.0000028045,0.0000028177,0.0000028281,0.0000028356,0.0000028390, -0.0000028373,0.0000028298,0.0000028180,0.0000028044,0.0000027924, -0.0000027846,0.0000027810,0.0000027795,0.0000027790,0.0000027775, -0.0000027747,0.0000027712,0.0000027679,0.0000027664,0.0000027686, -0.0000027749,0.0000027810,0.0000027838,0.0000027846,0.0000027854, -0.0000027866,0.0000027879,0.0000027880,0.0000027870,0.0000027859, -0.0000027845,0.0000027817,0.0000027818,0.0000027873,0.0000027951, -0.0000028036,0.0000028148,0.0000028246,0.0000028270,0.0000028249, -0.0000028245,0.0000028269,0.0000028295,0.0000028308,0.0000028357, -0.0000028475,0.0000028555,0.0000028532,0.0000028373,0.0000028094, -0.0000027892,0.0000027884,0.0000028020,0.0000028240,0.0000028396, -0.0000028404,0.0000028311,0.0000028238,0.0000028283,0.0000028450, -0.0000028602,0.0000028638,0.0000028641,0.0000028701,0.0000028760, -0.0000028759,0.0000028730,0.0000028717,0.0000028738,0.0000028791, -0.0000028870,0.0000028967,0.0000029059,0.0000029110,0.0000029118, -0.0000029110,0.0000029090,0.0000029058,0.0000029010,0.0000028973, -0.0000028974,0.0000029010,0.0000029045,0.0000029084,0.0000029131, -0.0000029194,0.0000029280,0.0000029371,0.0000029450,0.0000029521, -0.0000029586,0.0000029622,0.0000029599,0.0000029510,0.0000029384, -0.0000029255,0.0000029144,0.0000029048,0.0000028939,0.0000028808, -0.0000028695,0.0000028648,0.0000028644,0.0000028679,0.0000028693, -0.0000028646,0.0000028570,0.0000028506,0.0000028492,0.0000028536, -0.0000028598,0.0000028654,0.0000028695,0.0000028729,0.0000028747, -0.0000028761,0.0000028735,0.0000028678,0.0000028602,0.0000028520, -0.0000028444,0.0000028392,0.0000028365,0.0000028347,0.0000028322, -0.0000028263,0.0000028182,0.0000028115,0.0000028100,0.0000028103, -0.0000028114,0.0000028136,0.0000028183,0.0000028254,0.0000028317, -0.0000028331,0.0000028298,0.0000028241,0.0000028198,0.0000028174, -0.0000028170,0.0000028179,0.0000028181,0.0000028160,0.0000028174, -0.0000028291,0.0000028398,0.0000028388,0.0000028305,0.0000028278, -0.0000028303,0.0000028365,0.0000028467,0.0000028537,0.0000028520, -0.0000028494,0.0000028503,0.0000028500,0.0000028485,0.0000028484, -0.0000028466,0.0000028393,0.0000028302,0.0000028214,0.0000028115, -0.0000028035,0.0000028014,0.0000028021,0.0000027991,0.0000027941, -0.0000027911,0.0000027890,0.0000027834,0.0000027761,0.0000027705, -0.0000027727,0.0000027820,0.0000027891,0.0000027872,0.0000027824, -0.0000027785,0.0000027775,0.0000027793,0.0000027847,0.0000027908, -0.0000027930,0.0000027899,0.0000027857,0.0000027846,0.0000027883, -0.0000027944,0.0000028003,0.0000028051,0.0000028088,0.0000028109, -0.0000028105,0.0000028081,0.0000028038,0.0000027985,0.0000027942, -0.0000027917,0.0000027918,0.0000027942,0.0000027976,0.0000028011, -0.0000028023,0.0000028004,0.0000027987,0.0000028003,0.0000028062, -0.0000028146,0.0000028210,0.0000028242,0.0000028240,0.0000028192, -0.0000028117,0.0000028022,0.0000027949,0.0000027935,0.0000027961, -0.0000028002,0.0000028021,0.0000028011,0.0000027983,0.0000027977, -0.0000028053,0.0000028278,0.0000028519,0.0000028613,0.0000028642, -0.0000028736,0.0000028862,0.0000028935,0.0000028925,0.0000028877, -0.0000028819,0.0000028790,0.0000028769,0.0000028751,0.0000028737, -0.0000028723,0.0000028689,0.0000028673,0.0000028637,0.0000028560, -0.0000028469,0.0000028406,0.0000028412,0.0000028453,0.0000028514, -0.0000028538,0.0000028551,0.0000028593,0.0000028675,0.0000028745, -0.0000028777,0.0000028769,0.0000028755,0.0000028745,0.0000028744, -0.0000028744,0.0000028714,0.0000028650,0.0000028531,0.0000028388, -0.0000028264,0.0000028248,0.0000028356,0.0000028545,0.0000028698, -0.0000028720,0.0000028651,0.0000028546,0.0000028458,0.0000028434, -0.0000028468,0.0000028521,0.0000028563,0.0000028584,0.0000028586, -0.0000028560,0.0000028524,0.0000028491,0.0000028466,0.0000028432, -0.0000028375,0.0000028312,0.0000028260,0.0000028222,0.0000028179, -0.0000028104,0.0000028011,0.0000027951,0.0000027932,0.0000027907, -0.0000027866,0.0000027819,0.0000027768,0.0000027710,0.0000027657, -0.0000027633,0.0000027642,0.0000027677,0.0000027705,0.0000027709, -0.0000027695,0.0000027652,0.0000027623,0.0000027623,0.0000027635, -0.0000027670,0.0000027723,0.0000027731,0.0000027742,0.0000027906, -0.0000028242,0.0000028353,0.0000028222,0.0000028154,0.0000028178, -0.0000028207,0.0000028216,0.0000028214,0.0000028197,0.0000028173, -0.0000028121,0.0000028026,0.0000027898,0.0000027743,0.0000027624, -0.0000027587,0.0000027588,0.0000027602,0.0000027652,0.0000027760, -0.0000027827,0.0000027795,0.0000027675,0.0000027556,0.0000027504, -0.0000027512,0.0000027550,0.0000027565,0.0000027544,0.0000027535, -0.0000027580,0.0000027693,0.0000027831,0.0000027963,0.0000028019, -0.0000028013,0.0000027986,0.0000027954,0.0000027944,0.0000027927, -0.0000027891,0.0000027864,0.0000027863,0.0000027885,0.0000027940, -0.0000028042,0.0000028164,0.0000028242,0.0000028247,0.0000028207, -0.0000028087,0.0000027942,0.0000027847,0.0000027808,0.0000027760, -0.0000027702,0.0000027660,0.0000027657,0.0000027712,0.0000027810, -0.0000027884,0.0000027935,0.0000027989,0.0000028008,0.0000027984, -0.0000027944,0.0000027912,0.0000027868,0.0000027818,0.0000027781, -0.0000027756,0.0000027767,0.0000027819,0.0000027877,0.0000027961, -0.0000028115,0.0000028226,0.0000028276,0.0000028408,0.0000028568, -0.0000028692,0.0000028791,0.0000028791,0.0000028742,0.0000028698, -0.0000028730,0.0000028775,0.0000028828,0.0000028861,0.0000028826, -0.0000028759,0.0000028714,0.0000028727,0.0000028720,0.0000028664, -0.0000028592,0.0000028464,0.0000028306,0.0000028175,0.0000028125, -0.0000028173,0.0000028299,0.0000028405,0.0000028496,0.0000028618, -0.0000028627,0.0000028466,0.0000028393,0.0000028464,0.0000028542, -0.0000028560,0.0000028553,0.0000028533,0.0000028509,0.0000028521, -0.0000028584,0.0000028680,0.0000028747,0.0000028769,0.0000028791, -0.0000028897,0.0000028993,0.0000028995,0.0000028926,0.0000028879, -0.0000028881,0.0000028901,0.0000028907,0.0000028898,0.0000028890, -0.0000028892,0.0000028884,0.0000028887,0.0000028894,0.0000028863, -0.0000028796,0.0000028732,0.0000028680,0.0000028627,0.0000028543, -0.0000028431,0.0000028318,0.0000028271,0.0000028275,0.0000028298, -0.0000028272,0.0000028197,0.0000028083,0.0000027991,0.0000027931, -0.0000027920,0.0000027980,0.0000028027,0.0000028043,0.0000028028, -0.0000027996,0.0000027959,0.0000027911,0.0000027847,0.0000027781, -0.0000027736,0.0000027690,0.0000027661,0.0000027659,0.0000027658, -0.0000027677,0.0000027735,0.0000027805,0.0000027866,0.0000027892, -0.0000027889,0.0000027872,0.0000027836,0.0000027803,0.0000027790, -0.0000027787,0.0000027778,0.0000027756,0.0000027748,0.0000027758, -0.0000027795,0.0000027845,0.0000027885,0.0000027903,0.0000027895, -0.0000027885,0.0000027910,0.0000027957,0.0000028023,0.0000028064, -0.0000028097,0.0000028140,0.0000028195,0.0000028258,0.0000028320, -0.0000028378,0.0000028421,0.0000028432,0.0000028428,0.0000028416, -0.0000028393,0.0000028354,0.0000028338,0.0000028352,0.0000028315, -0.0000028228,0.0000028126,0.0000028045,0.0000028019,0.0000028029, -0.0000028042,0.0000028012,0.0000027917,0.0000027834,0.0000027823, -0.0000027875,0.0000027932,0.0000027962,0.0000027917,0.0000027815, -0.0000027811,0.0000027870,0.0000027909,0.0000028003,0.0000028070, -0.0000028162,0.0000028371,0.0000028452,0.0000028373,0.0000028291, -0.0000028332,0.0000028493,0.0000028614,0.0000028634,0.0000028599, -0.0000028537,0.0000028505,0.0000028396,0.0000028226,0.0000028092, -0.0000028082,0.0000028134,0.0000028209,0.0000028253,0.0000028207, -0.0000028182,0.0000028201,0.0000028215,0.0000028173,0.0000028107, -0.0000028052,0.0000028011,0.0000027956,0.0000027887,0.0000027820, -0.0000027786,0.0000027786,0.0000027810,0.0000027824,0.0000027832, -0.0000027829,0.0000027829,0.0000027831,0.0000027829,0.0000027819, -0.0000027796,0.0000027768,0.0000027735,0.0000027685,0.0000027634, -0.0000027599,0.0000027573,0.0000027572,0.0000027579,0.0000027591, -0.0000027597,0.0000027616,0.0000027644,0.0000027663,0.0000027657, -0.0000027628,0.0000027569,0.0000027478,0.0000027395,0.0000027365, -0.0000027380,0.0000027414,0.0000027427,0.0000027415,0.0000027411, -0.0000027445,0.0000027542,0.0000027689,0.0000027841,0.0000027960, -0.0000028036,0.0000028091,0.0000028136,0.0000028203,0.0000028329, -0.0000028423,0.0000028417,0.0000028409,0.0000028452,0.0000028523, -0.0000028563,0.0000028586,0.0000028558,0.0000028504,0.0000028494, -0.0000028535,0.0000028596,0.0000028616,0.0000028577,0.0000028479, -0.0000028388,0.0000028303,0.0000028253,0.0000028191,0.0000028190, -0.0000028230,0.0000028308,0.0000028349,0.0000028344,0.0000028295, -0.0000028215,0.0000028127,0.0000028052,0.0000028007,0.0000027977, -0.0000027937,0.0000027888,0.0000027847,0.0000027818,0.0000027806, -0.0000027831,0.0000027890,0.0000027990,0.0000028120,0.0000028222, -0.0000028286,0.0000028303,0.0000028274,0.0000028192,0.0000028083, -0.0000027976,0.0000027907,0.0000027872,0.0000027865,0.0000027861, -0.0000027847,0.0000027822,0.0000027795,0.0000027764,0.0000027729, -0.0000027703,0.0000027705,0.0000027756,0.0000027825,0.0000027867, -0.0000027881,0.0000027895,0.0000027918,0.0000027950,0.0000027974, -0.0000027965,0.0000027921,0.0000027875,0.0000027844,0.0000027825, -0.0000027841,0.0000027892,0.0000027955,0.0000028046,0.0000028168, -0.0000028259,0.0000028280,0.0000028279,0.0000028286,0.0000028307, -0.0000028324,0.0000028336,0.0000028405,0.0000028529,0.0000028573, -0.0000028528,0.0000028331,0.0000028045,0.0000027895,0.0000027927, -0.0000028085,0.0000028308,0.0000028444,0.0000028439,0.0000028345, -0.0000028274,0.0000028313,0.0000028448,0.0000028556,0.0000028573, -0.0000028587,0.0000028669,0.0000028753,0.0000028761,0.0000028722, -0.0000028689,0.0000028682,0.0000028698,0.0000028736,0.0000028801, -0.0000028881,0.0000028943,0.0000028969,0.0000028969,0.0000028956, -0.0000028922,0.0000028867,0.0000028832,0.0000028861,0.0000028908, -0.0000028932,0.0000028943,0.0000028963,0.0000029027,0.0000029143, -0.0000029264,0.0000029338,0.0000029390,0.0000029479,0.0000029593, -0.0000029662,0.0000029642,0.0000029526,0.0000029357,0.0000029205, -0.0000029098,0.0000029025,0.0000028957,0.0000028883,0.0000028806, -0.0000028732,0.0000028674,0.0000028645,0.0000028603,0.0000028543, -0.0000028502,0.0000028486,0.0000028482,0.0000028482,0.0000028496, -0.0000028528,0.0000028584,0.0000028661,0.0000028724,0.0000028748, -0.0000028728,0.0000028686,0.0000028613,0.0000028540,0.0000028482, -0.0000028442,0.0000028416,0.0000028395,0.0000028363,0.0000028307, -0.0000028244,0.0000028226,0.0000028247,0.0000028273,0.0000028284, -0.0000028290,0.0000028320,0.0000028370,0.0000028405,0.0000028397, -0.0000028354,0.0000028310,0.0000028291,0.0000028292,0.0000028304, -0.0000028305,0.0000028266,0.0000028185,0.0000028168,0.0000028274, -0.0000028393,0.0000028390,0.0000028306,0.0000028285,0.0000028321, -0.0000028399,0.0000028487,0.0000028529,0.0000028512,0.0000028510, -0.0000028521,0.0000028489,0.0000028454,0.0000028459,0.0000028449, -0.0000028388,0.0000028309,0.0000028227,0.0000028130,0.0000028038, -0.0000028005,0.0000028008,0.0000027993,0.0000027956,0.0000027925, -0.0000027913,0.0000027903,0.0000027861,0.0000027773,0.0000027732, -0.0000027774,0.0000027835,0.0000027851,0.0000027832,0.0000027813, -0.0000027822,0.0000027856,0.0000027903,0.0000027957,0.0000027977, -0.0000027940,0.0000027880,0.0000027851,0.0000027873,0.0000027915, -0.0000027955,0.0000027994,0.0000028054,0.0000028105,0.0000028113, -0.0000028081,0.0000028017,0.0000027950,0.0000027905,0.0000027890, -0.0000027894,0.0000027919,0.0000027945,0.0000027959,0.0000027980, -0.0000027989,0.0000027988,0.0000027996,0.0000028032,0.0000028092, -0.0000028128,0.0000028139,0.0000028117,0.0000028052,0.0000027965, -0.0000027909,0.0000027916,0.0000027972,0.0000028039,0.0000028081, -0.0000028082,0.0000028061,0.0000028017,0.0000027972,0.0000027980, -0.0000028125,0.0000028401,0.0000028574,0.0000028611,0.0000028663, -0.0000028784,0.0000028890,0.0000028918,0.0000028885,0.0000028820, -0.0000028767,0.0000028742,0.0000028732,0.0000028722,0.0000028723, -0.0000028695,0.0000028709,0.0000028698,0.0000028665,0.0000028575, -0.0000028484,0.0000028449,0.0000028455,0.0000028485,0.0000028498, -0.0000028473,0.0000028458,0.0000028498,0.0000028587,0.0000028670, -0.0000028711,0.0000028720,0.0000028706,0.0000028682,0.0000028670, -0.0000028681,0.0000028679,0.0000028627,0.0000028533,0.0000028390, -0.0000028265,0.0000028233,0.0000028347,0.0000028567,0.0000028716, -0.0000028718,0.0000028655,0.0000028575,0.0000028520,0.0000028521, -0.0000028550,0.0000028582,0.0000028605,0.0000028612,0.0000028593, -0.0000028546,0.0000028497,0.0000028466,0.0000028431,0.0000028371, -0.0000028291,0.0000028238,0.0000028230,0.0000028237,0.0000028225, -0.0000028155,0.0000028058,0.0000027980,0.0000027914,0.0000027844, -0.0000027799,0.0000027770,0.0000027739,0.0000027698,0.0000027651, -0.0000027624,0.0000027631,0.0000027663,0.0000027693,0.0000027697, -0.0000027675,0.0000027638,0.0000027637,0.0000027657,0.0000027675, -0.0000027705,0.0000027762,0.0000027781,0.0000027766,0.0000027866, -0.0000028167,0.0000028345,0.0000028297,0.0000028159,0.0000028117, -0.0000028138,0.0000028152,0.0000028176,0.0000028196,0.0000028200, -0.0000028181,0.0000028108,0.0000027976,0.0000027804,0.0000027661, -0.0000027598,0.0000027591,0.0000027609,0.0000027663,0.0000027767, -0.0000027832,0.0000027808,0.0000027698,0.0000027583,0.0000027498, -0.0000027471,0.0000027487,0.0000027535,0.0000027572,0.0000027553, -0.0000027556,0.0000027642,0.0000027786,0.0000027928,0.0000027996, -0.0000028006,0.0000028011,0.0000027994,0.0000027990,0.0000027963, -0.0000027908,0.0000027863,0.0000027830,0.0000027830,0.0000027867, -0.0000027957,0.0000028085,0.0000028193,0.0000028237,0.0000028206, -0.0000028099,0.0000027954,0.0000027851,0.0000027808,0.0000027774, -0.0000027722,0.0000027676,0.0000027679,0.0000027751,0.0000027839, -0.0000027906,0.0000027959,0.0000027997,0.0000027990,0.0000027953, -0.0000027934,0.0000027937,0.0000027923,0.0000027888,0.0000027849, -0.0000027824,0.0000027833,0.0000027883,0.0000027933,0.0000028016, -0.0000028138,0.0000028208,0.0000028270,0.0000028408,0.0000028571, -0.0000028725,0.0000028826,0.0000028780,0.0000028702,0.0000028657, -0.0000028697,0.0000028784,0.0000028856,0.0000028838,0.0000028763, -0.0000028704,0.0000028675,0.0000028683,0.0000028657,0.0000028582, -0.0000028501,0.0000028377,0.0000028235,0.0000028128,0.0000028075, -0.0000028115,0.0000028235,0.0000028386,0.0000028472,0.0000028564, -0.0000028606,0.0000028486,0.0000028368,0.0000028419,0.0000028521, -0.0000028555,0.0000028533,0.0000028496,0.0000028475,0.0000028485, -0.0000028573,0.0000028712,0.0000028794,0.0000028808,0.0000028839, -0.0000028972,0.0000029046,0.0000029001,0.0000028918,0.0000028890, -0.0000028899,0.0000028915,0.0000028906,0.0000028884,0.0000028865, -0.0000028865,0.0000028879,0.0000028876,0.0000028870,0.0000028811, -0.0000028731,0.0000028651,0.0000028595,0.0000028566,0.0000028505, -0.0000028411,0.0000028301,0.0000028221,0.0000028202,0.0000028203, -0.0000028171,0.0000028093,0.0000027982,0.0000027879,0.0000027811, -0.0000027774,0.0000027807,0.0000027849,0.0000027875,0.0000027877, -0.0000027855,0.0000027839,0.0000027812,0.0000027773,0.0000027727, -0.0000027705,0.0000027673,0.0000027637,0.0000027617,0.0000027602, -0.0000027596,0.0000027604,0.0000027627,0.0000027657,0.0000027677, -0.0000027680,0.0000027675,0.0000027661,0.0000027645,0.0000027627, -0.0000027621,0.0000027621,0.0000027611,0.0000027589,0.0000027574, -0.0000027579,0.0000027611,0.0000027657,0.0000027696,0.0000027724, -0.0000027730,0.0000027746,0.0000027803,0.0000027870,0.0000027949, -0.0000028004,0.0000028042,0.0000028083,0.0000028139,0.0000028182, -0.0000028211,0.0000028263,0.0000028338,0.0000028370,0.0000028356, -0.0000028351,0.0000028382,0.0000028376,0.0000028312,0.0000028285, -0.0000028277,0.0000028256,0.0000028206,0.0000028129,0.0000028069, -0.0000028051,0.0000028058,0.0000028054,0.0000027983,0.0000027881, -0.0000027831,0.0000027847,0.0000027888,0.0000027930,0.0000027914, -0.0000027818,0.0000027762,0.0000027826,0.0000027888,0.0000027968, -0.0000028040,0.0000028157,0.0000028377,0.0000028448,0.0000028361, -0.0000028299,0.0000028367,0.0000028528,0.0000028634,0.0000028648, -0.0000028594,0.0000028527,0.0000028471,0.0000028327,0.0000028150, -0.0000028065,0.0000028091,0.0000028152,0.0000028218,0.0000028236, -0.0000028179,0.0000028171,0.0000028182,0.0000028124,0.0000028018, -0.0000027957,0.0000027929,0.0000027896,0.0000027838,0.0000027766, -0.0000027699,0.0000027669,0.0000027674,0.0000027712,0.0000027736, -0.0000027752,0.0000027752,0.0000027755,0.0000027759,0.0000027766, -0.0000027766,0.0000027755,0.0000027750,0.0000027737,0.0000027699, -0.0000027653,0.0000027619,0.0000027596,0.0000027600,0.0000027611, -0.0000027619,0.0000027618,0.0000027623,0.0000027627,0.0000027619, -0.0000027588,0.0000027546,0.0000027495,0.0000027428,0.0000027390, -0.0000027389,0.0000027421,0.0000027455,0.0000027464,0.0000027452, -0.0000027439,0.0000027450,0.0000027519,0.0000027641,0.0000027778, -0.0000027905,0.0000027991,0.0000028066,0.0000028130,0.0000028206, -0.0000028347,0.0000028436,0.0000028411,0.0000028394,0.0000028411, -0.0000028483,0.0000028522,0.0000028567,0.0000028561,0.0000028514, -0.0000028487,0.0000028511,0.0000028559,0.0000028601,0.0000028586, -0.0000028519,0.0000028424,0.0000028340,0.0000028274,0.0000028189, -0.0000028153,0.0000028171,0.0000028236,0.0000028300,0.0000028343, -0.0000028339,0.0000028307,0.0000028226,0.0000028135,0.0000028054, -0.0000028003,0.0000027957,0.0000027912,0.0000027867,0.0000027836, -0.0000027833,0.0000027858,0.0000027918,0.0000027996,0.0000028099, -0.0000028186,0.0000028224,0.0000028221,0.0000028182,0.0000028115, -0.0000028053,0.0000027996,0.0000027967,0.0000027973,0.0000027987, -0.0000027992,0.0000027972,0.0000027929,0.0000027888,0.0000027856, -0.0000027823,0.0000027797,0.0000027790,0.0000027818,0.0000027884, -0.0000027939,0.0000027963,0.0000027974,0.0000027995,0.0000028034, -0.0000028080,0.0000028097,0.0000028056,0.0000027970,0.0000027888, -0.0000027844,0.0000027835,0.0000027866,0.0000027910,0.0000027963, -0.0000028060,0.0000028188,0.0000028278,0.0000028310,0.0000028327, -0.0000028334,0.0000028338,0.0000028339,0.0000028359,0.0000028452, -0.0000028571,0.0000028593,0.0000028509,0.0000028278,0.0000028003, -0.0000027910,0.0000027970,0.0000028149,0.0000028372,0.0000028492, -0.0000028473,0.0000028371,0.0000028291,0.0000028310,0.0000028413, -0.0000028491,0.0000028498,0.0000028516,0.0000028613,0.0000028722, -0.0000028745,0.0000028698,0.0000028646,0.0000028618,0.0000028610, -0.0000028619,0.0000028655,0.0000028718,0.0000028781,0.0000028815, -0.0000028824,0.0000028817,0.0000028792,0.0000028750,0.0000028732, -0.0000028784,0.0000028842,0.0000028865,0.0000028861,0.0000028852, -0.0000028871,0.0000028967,0.0000029110,0.0000029234,0.0000029305, -0.0000029354,0.0000029424,0.0000029519,0.0000029583,0.0000029561, -0.0000029472,0.0000029347,0.0000029216,0.0000029090,0.0000028993, -0.0000028935,0.0000028901,0.0000028871,0.0000028831,0.0000028773, -0.0000028693,0.0000028610,0.0000028555,0.0000028525,0.0000028498, -0.0000028472,0.0000028429,0.0000028401,0.0000028424,0.0000028493, -0.0000028581,0.0000028645,0.0000028669,0.0000028655,0.0000028606, -0.0000028547,0.0000028501,0.0000028467,0.0000028438,0.0000028421, -0.0000028395,0.0000028353,0.0000028304,0.0000028288,0.0000028324, -0.0000028379,0.0000028409,0.0000028399,0.0000028379,0.0000028385, -0.0000028409,0.0000028414,0.0000028392,0.0000028361,0.0000028354, -0.0000028374,0.0000028406,0.0000028423,0.0000028411,0.0000028335, -0.0000028201,0.0000028152,0.0000028259,0.0000028387,0.0000028385, -0.0000028308,0.0000028295,0.0000028352,0.0000028433,0.0000028492, -0.0000028512,0.0000028506,0.0000028526,0.0000028528,0.0000028460, -0.0000028414,0.0000028428,0.0000028422,0.0000028362,0.0000028286, -0.0000028221,0.0000028144,0.0000028072,0.0000028037,0.0000028016, -0.0000027980,0.0000027943,0.0000027912,0.0000027922,0.0000027946, -0.0000027946,0.0000027871,0.0000027782,0.0000027747,0.0000027748, -0.0000027771,0.0000027797,0.0000027829,0.0000027878,0.0000027921, -0.0000027971,0.0000028022,0.0000028047,0.0000028013,0.0000027950, -0.0000027911,0.0000027909,0.0000027923,0.0000027931,0.0000027938, -0.0000027999,0.0000028081,0.0000028124,0.0000028111,0.0000028042, -0.0000027945,0.0000027870,0.0000027847,0.0000027870,0.0000027916, -0.0000027955,0.0000027956,0.0000027957,0.0000027958,0.0000027969, -0.0000027984,0.0000028017,0.0000028058,0.0000028068,0.0000028045, -0.0000028001,0.0000027948,0.0000027904,0.0000027895,0.0000027960, -0.0000028053,0.0000028113,0.0000028135,0.0000028121,0.0000028099, -0.0000028055,0.0000027987,0.0000027946,0.0000028003,0.0000028259, -0.0000028505,0.0000028579,0.0000028606,0.0000028700,0.0000028821, -0.0000028888,0.0000028884,0.0000028843,0.0000028780,0.0000028745, -0.0000028733,0.0000028732,0.0000028733,0.0000028715,0.0000028723, -0.0000028728,0.0000028726,0.0000028650,0.0000028567,0.0000028514, -0.0000028492,0.0000028498,0.0000028511,0.0000028500,0.0000028469, -0.0000028453,0.0000028486,0.0000028536,0.0000028582,0.0000028620, -0.0000028653,0.0000028657,0.0000028628,0.0000028612,0.0000028622, -0.0000028623,0.0000028578,0.0000028487,0.0000028343,0.0000028227, -0.0000028242,0.0000028428,0.0000028651,0.0000028728,0.0000028705, -0.0000028650,0.0000028596,0.0000028570,0.0000028558,0.0000028561, -0.0000028563,0.0000028564,0.0000028556,0.0000028526,0.0000028485, -0.0000028453,0.0000028424,0.0000028374,0.0000028290,0.0000028199, -0.0000028169,0.0000028192,0.0000028228,0.0000028221,0.0000028178, -0.0000028096,0.0000027997,0.0000027881,0.0000027788,0.0000027733, -0.0000027719,0.0000027709,0.0000027687,0.0000027645,0.0000027615, -0.0000027613,0.0000027643,0.0000027676,0.0000027680,0.0000027655, -0.0000027635,0.0000027660,0.0000027701,0.0000027725,0.0000027752, -0.0000027800,0.0000027817,0.0000027786,0.0000027820,0.0000028022, -0.0000028282,0.0000028359,0.0000028216,0.0000028106,0.0000028076, -0.0000028084,0.0000028105,0.0000028159,0.0000028198,0.0000028203, -0.0000028171,0.0000028057,0.0000027883,0.0000027713,0.0000027614, -0.0000027597,0.0000027612,0.0000027666,0.0000027770,0.0000027836, -0.0000027815,0.0000027717,0.0000027612,0.0000027513,0.0000027450, -0.0000027445,0.0000027499,0.0000027582,0.0000027615,0.0000027606, -0.0000027663,0.0000027751,0.0000027870,0.0000027955,0.0000027995, -0.0000028014,0.0000028012,0.0000028018,0.0000027999,0.0000027953, -0.0000027898,0.0000027852,0.0000027835,0.0000027841,0.0000027896, -0.0000028006,0.0000028116,0.0000028181,0.0000028168,0.0000028075, -0.0000027937,0.0000027825,0.0000027779,0.0000027761,0.0000027730, -0.0000027698,0.0000027722,0.0000027807,0.0000027877,0.0000027923, -0.0000027971,0.0000027991,0.0000027962,0.0000027930,0.0000027951, -0.0000027996,0.0000028006,0.0000027973,0.0000027928,0.0000027890, -0.0000027897,0.0000027940,0.0000027992,0.0000028064,0.0000028141, -0.0000028196,0.0000028273,0.0000028401,0.0000028587,0.0000028757, -0.0000028811,0.0000028724,0.0000028647,0.0000028611,0.0000028701, -0.0000028825,0.0000028852,0.0000028786,0.0000028694,0.0000028614, -0.0000028574,0.0000028581,0.0000028559,0.0000028486,0.0000028399, -0.0000028273,0.0000028145,0.0000028078,0.0000028051,0.0000028097, -0.0000028197,0.0000028356,0.0000028459,0.0000028516,0.0000028593, -0.0000028514,0.0000028358,0.0000028360,0.0000028487,0.0000028537, -0.0000028503,0.0000028468,0.0000028476,0.0000028501,0.0000028573, -0.0000028732,0.0000028822,0.0000028831,0.0000028889,0.0000029037, -0.0000029070,0.0000028986,0.0000028909,0.0000028890,0.0000028892, -0.0000028886,0.0000028858,0.0000028834,0.0000028828,0.0000028840, -0.0000028855,0.0000028837,0.0000028801,0.0000028733,0.0000028658, -0.0000028603,0.0000028564,0.0000028542,0.0000028488,0.0000028397, -0.0000028271,0.0000028135,0.0000028063,0.0000028057,0.0000028050, -0.0000027997,0.0000027911,0.0000027805,0.0000027735,0.0000027687, -0.0000027702,0.0000027741,0.0000027778,0.0000027795,0.0000027795, -0.0000027771,0.0000027742,0.0000027694,0.0000027634,0.0000027603, -0.0000027578,0.0000027542,0.0000027512,0.0000027475,0.0000027441, -0.0000027436,0.0000027426,0.0000027432,0.0000027448,0.0000027452, -0.0000027448,0.0000027444,0.0000027441,0.0000027430,0.0000027418, -0.0000027420,0.0000027428,0.0000027427,0.0000027409,0.0000027385, -0.0000027382,0.0000027403,0.0000027437,0.0000027478,0.0000027519, -0.0000027552,0.0000027606,0.0000027695,0.0000027789,0.0000027885, -0.0000027952,0.0000027994,0.0000028019,0.0000028073,0.0000028127, -0.0000028152,0.0000028166,0.0000028234,0.0000028303,0.0000028305, -0.0000028295,0.0000028332,0.0000028372,0.0000028327,0.0000028246, -0.0000028210,0.0000028225,0.0000028228,0.0000028193,0.0000028139, -0.0000028101,0.0000028092,0.0000028088,0.0000028041,0.0000027951, -0.0000027873,0.0000027850,0.0000027868,0.0000027886,0.0000027883, -0.0000027838,0.0000027747,0.0000027778,0.0000027865,0.0000027942, -0.0000028014,0.0000028174,0.0000028401,0.0000028445,0.0000028350, -0.0000028317,0.0000028414,0.0000028562,0.0000028645,0.0000028653, -0.0000028580,0.0000028515,0.0000028425,0.0000028256,0.0000028087, -0.0000028062,0.0000028114,0.0000028168,0.0000028217,0.0000028213, -0.0000028173,0.0000028166,0.0000028099,0.0000027961,0.0000027872, -0.0000027863,0.0000027856,0.0000027814,0.0000027743,0.0000027669, -0.0000027606,0.0000027583,0.0000027590,0.0000027629,0.0000027665, -0.0000027694,0.0000027711,0.0000027727,0.0000027746,0.0000027763, -0.0000027797,0.0000027816,0.0000027834,0.0000027836,0.0000027813, -0.0000027774,0.0000027734,0.0000027706,0.0000027703,0.0000027713, -0.0000027716,0.0000027709,0.0000027694,0.0000027675,0.0000027641, -0.0000027585,0.0000027512,0.0000027441,0.0000027388,0.0000027380, -0.0000027405,0.0000027459,0.0000027510,0.0000027522,0.0000027516, -0.0000027495,0.0000027488,0.0000027523,0.0000027619,0.0000027739, -0.0000027856,0.0000027949,0.0000028021,0.0000028101,0.0000028212, -0.0000028368,0.0000028429,0.0000028384,0.0000028360,0.0000028377, -0.0000028432,0.0000028473,0.0000028521,0.0000028526,0.0000028482, -0.0000028445,0.0000028462,0.0000028499,0.0000028544,0.0000028547, -0.0000028512,0.0000028418,0.0000028355,0.0000028283,0.0000028196, -0.0000028128,0.0000028124,0.0000028168,0.0000028228,0.0000028276, -0.0000028295,0.0000028281,0.0000028244,0.0000028173,0.0000028100, -0.0000028047,0.0000028005,0.0000027959,0.0000027916,0.0000027891, -0.0000027897,0.0000027926,0.0000027971,0.0000028025,0.0000028082, -0.0000028140,0.0000028160,0.0000028153,0.0000028141,0.0000028120, -0.0000028082,0.0000028043,0.0000028032,0.0000028058,0.0000028093, -0.0000028106,0.0000028092,0.0000028045,0.0000027993,0.0000027960, -0.0000027934,0.0000027906,0.0000027885,0.0000027887,0.0000027926, -0.0000027980,0.0000028012,0.0000028026,0.0000028040,0.0000028072, -0.0000028122,0.0000028165,0.0000028164,0.0000028098,0.0000027992, -0.0000027900,0.0000027858,0.0000027854,0.0000027890,0.0000027925, -0.0000027978,0.0000028083,0.0000028217,0.0000028314,0.0000028365, -0.0000028375,0.0000028360,0.0000028347,0.0000028344,0.0000028380, -0.0000028494,0.0000028591,0.0000028587,0.0000028478,0.0000028219, -0.0000027980,0.0000027937,0.0000028024,0.0000028208,0.0000028426, -0.0000028533,0.0000028502,0.0000028383,0.0000028278,0.0000028273, -0.0000028353,0.0000028419,0.0000028427,0.0000028443,0.0000028532, -0.0000028645,0.0000028680,0.0000028643,0.0000028576,0.0000028527, -0.0000028497,0.0000028484,0.0000028501,0.0000028551,0.0000028611, -0.0000028651,0.0000028669,0.0000028675,0.0000028664,0.0000028642, -0.0000028655,0.0000028727,0.0000028799,0.0000028829,0.0000028826, -0.0000028811,0.0000028817,0.0000028875,0.0000028968,0.0000029072, -0.0000029182,0.0000029278,0.0000029335,0.0000029361,0.0000029382, -0.0000029395,0.0000029390,0.0000029363,0.0000029320,0.0000029247, -0.0000029139,0.0000029026,0.0000028935,0.0000028876,0.0000028853, -0.0000028840,0.0000028828,0.0000028797,0.0000028756,0.0000028698, -0.0000028610,0.0000028520,0.0000028440,0.0000028373,0.0000028343, -0.0000028372,0.0000028428,0.0000028491,0.0000028526,0.0000028527, -0.0000028496,0.0000028457,0.0000028425,0.0000028407,0.0000028399, -0.0000028391,0.0000028373,0.0000028336,0.0000028291,0.0000028272, -0.0000028306,0.0000028388,0.0000028445,0.0000028448,0.0000028410, -0.0000028379,0.0000028376,0.0000028378,0.0000028363,0.0000028342, -0.0000028349,0.0000028391,0.0000028447,0.0000028491,0.0000028501, -0.0000028479,0.0000028368,0.0000028193,0.0000028135,0.0000028255, -0.0000028391,0.0000028379,0.0000028311,0.0000028313,0.0000028391, -0.0000028458,0.0000028481,0.0000028488,0.0000028502,0.0000028540, -0.0000028521,0.0000028421,0.0000028376,0.0000028395,0.0000028384, -0.0000028320,0.0000028253,0.0000028199,0.0000028151,0.0000028130, -0.0000028116,0.0000028070,0.0000027993,0.0000027927,0.0000027907, -0.0000027929,0.0000027963,0.0000027995,0.0000027963,0.0000027876, -0.0000027771,0.0000027699,0.0000027676,0.0000027719,0.0000027803, -0.0000027888,0.0000027957,0.0000028013,0.0000028080,0.0000028118, -0.0000028100,0.0000028053,0.0000028021,0.0000028010,0.0000027994, -0.0000027958,0.0000027928,0.0000027955,0.0000028039,0.0000028126, -0.0000028158,0.0000028109,0.0000027989,0.0000027865,0.0000027809, -0.0000027831,0.0000027905,0.0000027974,0.0000027992,0.0000027971, -0.0000027946,0.0000027936,0.0000027948,0.0000027981,0.0000028013, -0.0000028020,0.0000027983,0.0000027937,0.0000027922,0.0000027925, -0.0000027967,0.0000028041,0.0000028117,0.0000028152,0.0000028162, -0.0000028142,0.0000028121,0.0000028091,0.0000028021,0.0000027943, -0.0000027939,0.0000028121,0.0000028405,0.0000028542,0.0000028564, -0.0000028615,0.0000028740,0.0000028847,0.0000028882,0.0000028870, -0.0000028831,0.0000028795,0.0000028774,0.0000028766,0.0000028760, -0.0000028757,0.0000028750,0.0000028778,0.0000028781,0.0000028723, -0.0000028640,0.0000028570,0.0000028529,0.0000028516,0.0000028524, -0.0000028527,0.0000028520,0.0000028506,0.0000028509,0.0000028522, -0.0000028532,0.0000028526,0.0000028555,0.0000028606,0.0000028615, -0.0000028579,0.0000028556,0.0000028568,0.0000028565,0.0000028515, -0.0000028381,0.0000028250,0.0000028230,0.0000028387,0.0000028615, -0.0000028728,0.0000028719,0.0000028673,0.0000028613,0.0000028562, -0.0000028502,0.0000028458,0.0000028436,0.0000028426,0.0000028421, -0.0000028413,0.0000028397,0.0000028380,0.0000028356,0.0000028316, -0.0000028247,0.0000028153,0.0000028090,0.0000028090,0.0000028140, -0.0000028193,0.0000028208,0.0000028190,0.0000028124,0.0000028013, -0.0000027868,0.0000027744,0.0000027672,0.0000027671,0.0000027692, -0.0000027702,0.0000027666,0.0000027614,0.0000027602,0.0000027629, -0.0000027659,0.0000027661,0.0000027634,0.0000027630,0.0000027678, -0.0000027740,0.0000027779,0.0000027808,0.0000027841,0.0000027853, -0.0000027820,0.0000027795,0.0000027882,0.0000028123,0.0000028332, -0.0000028294,0.0000028122,0.0000028018,0.0000028014,0.0000028029, -0.0000028090,0.0000028164,0.0000028197,0.0000028193,0.0000028122, -0.0000027968,0.0000027780,0.0000027643,0.0000027608,0.0000027616, -0.0000027662,0.0000027760,0.0000027836,0.0000027820,0.0000027731, -0.0000027643,0.0000027552,0.0000027456,0.0000027438,0.0000027482, -0.0000027586,0.0000027666,0.0000027699,0.0000027730,0.0000027767, -0.0000027815,0.0000027876,0.0000027932,0.0000027967,0.0000027987, -0.0000028007,0.0000028013,0.0000027998,0.0000027968,0.0000027927, -0.0000027898,0.0000027883,0.0000027904,0.0000027957,0.0000028033, -0.0000028083,0.0000028077,0.0000028008,0.0000027888,0.0000027773, -0.0000027722,0.0000027719,0.0000027720,0.0000027724,0.0000027783, -0.0000027864,0.0000027909,0.0000027941,0.0000027980,0.0000027984, -0.0000027951,0.0000027943,0.0000028011,0.0000028095,0.0000028101, -0.0000028059,0.0000027998,0.0000027958,0.0000027955,0.0000027989, -0.0000028040,0.0000028092,0.0000028141,0.0000028207,0.0000028287, -0.0000028414,0.0000028623,0.0000028768,0.0000028765,0.0000028663, -0.0000028609,0.0000028614,0.0000028756,0.0000028844,0.0000028823, -0.0000028705,0.0000028560,0.0000028498,0.0000028510,0.0000028540, -0.0000028532,0.0000028453,0.0000028348,0.0000028228,0.0000028123, -0.0000028072,0.0000028053,0.0000028104,0.0000028190,0.0000028328, -0.0000028444,0.0000028487,0.0000028558,0.0000028529,0.0000028365, -0.0000028324,0.0000028443,0.0000028512,0.0000028486,0.0000028464, -0.0000028489,0.0000028531,0.0000028577,0.0000028731,0.0000028831, -0.0000028844,0.0000028932,0.0000029073,0.0000029062,0.0000028960, -0.0000028900,0.0000028868,0.0000028835,0.0000028813,0.0000028787, -0.0000028769,0.0000028769,0.0000028786,0.0000028797,0.0000028774, -0.0000028730,0.0000028675,0.0000028607,0.0000028572,0.0000028529, -0.0000028510,0.0000028470,0.0000028365,0.0000028204,0.0000028038, -0.0000027950,0.0000027949,0.0000027987,0.0000027977,0.0000027924, -0.0000027836,0.0000027754,0.0000027688,0.0000027666,0.0000027670, -0.0000027689,0.0000027704,0.0000027716,0.0000027705,0.0000027681, -0.0000027639,0.0000027575,0.0000027517,0.0000027481,0.0000027435, -0.0000027391,0.0000027349,0.0000027297,0.0000027266,0.0000027248, -0.0000027232,0.0000027226,0.0000027235,0.0000027226,0.0000027202, -0.0000027189,0.0000027193,0.0000027193,0.0000027197,0.0000027212, -0.0000027229,0.0000027227,0.0000027199,0.0000027165,0.0000027157, -0.0000027174,0.0000027210,0.0000027262,0.0000027322,0.0000027386, -0.0000027468,0.0000027575,0.0000027700,0.0000027825,0.0000027912, -0.0000027960,0.0000027978,0.0000028019,0.0000028067,0.0000028101, -0.0000028105,0.0000028142,0.0000028226,0.0000028268,0.0000028259, -0.0000028271,0.0000028326,0.0000028332,0.0000028255,0.0000028170, -0.0000028163,0.0000028190,0.0000028192,0.0000028170,0.0000028152, -0.0000028144,0.0000028131,0.0000028090,0.0000028021,0.0000027945, -0.0000027897,0.0000027892,0.0000027881,0.0000027860,0.0000027843, -0.0000027756,0.0000027742,0.0000027844,0.0000027934,0.0000027999, -0.0000028205,0.0000028431,0.0000028437,0.0000028345,0.0000028345, -0.0000028469,0.0000028589,0.0000028650,0.0000028648,0.0000028565, -0.0000028496,0.0000028374,0.0000028184,0.0000028048,0.0000028073, -0.0000028132,0.0000028174,0.0000028202,0.0000028193,0.0000028173, -0.0000028120,0.0000027957,0.0000027821,0.0000027801,0.0000027814, -0.0000027786,0.0000027721,0.0000027646,0.0000027579,0.0000027524, -0.0000027500,0.0000027499,0.0000027528,0.0000027573,0.0000027612, -0.0000027637,0.0000027661,0.0000027689,0.0000027731,0.0000027781, -0.0000027814,0.0000027846,0.0000027858,0.0000027842,0.0000027810, -0.0000027776,0.0000027754,0.0000027754,0.0000027782,0.0000027805, -0.0000027809,0.0000027790,0.0000027759,0.0000027706,0.0000027636, -0.0000027544,0.0000027456,0.0000027398,0.0000027389,0.0000027422, -0.0000027479,0.0000027536,0.0000027560,0.0000027561,0.0000027545, -0.0000027526,0.0000027534,0.0000027605,0.0000027716,0.0000027818, -0.0000027909,0.0000027972,0.0000028069,0.0000028225,0.0000028375, -0.0000028408,0.0000028349,0.0000028309,0.0000028323,0.0000028362, -0.0000028416,0.0000028440,0.0000028455,0.0000028424,0.0000028403, -0.0000028422,0.0000028456,0.0000028480,0.0000028502,0.0000028477, -0.0000028406,0.0000028342,0.0000028253,0.0000028184,0.0000028105, -0.0000028085,0.0000028110,0.0000028161,0.0000028203,0.0000028226, -0.0000028220,0.0000028193,0.0000028137,0.0000028077,0.0000028035, -0.0000028006,0.0000027976,0.0000027944,0.0000027931,0.0000027941, -0.0000027968,0.0000027984,0.0000028011,0.0000028042,0.0000028082, -0.0000028105,0.0000028122,0.0000028138,0.0000028136,0.0000028115, -0.0000028079,0.0000028081,0.0000028119,0.0000028173,0.0000028203, -0.0000028201,0.0000028164,0.0000028105,0.0000028059,0.0000028030, -0.0000027998,0.0000027960,0.0000027937,0.0000027948,0.0000027991, -0.0000028036,0.0000028071,0.0000028097,0.0000028119,0.0000028149, -0.0000028186,0.0000028211,0.0000028200,0.0000028126,0.0000028015, -0.0000027918,0.0000027872,0.0000027866,0.0000027901,0.0000027937, -0.0000028003,0.0000028136,0.0000028283,0.0000028381,0.0000028407, -0.0000028395,0.0000028366,0.0000028348,0.0000028349,0.0000028408, -0.0000028527,0.0000028595,0.0000028576,0.0000028437,0.0000028160, -0.0000027966,0.0000027968,0.0000028071,0.0000028257,0.0000028466, -0.0000028560,0.0000028517,0.0000028377,0.0000028246,0.0000028220, -0.0000028285,0.0000028349,0.0000028371,0.0000028387,0.0000028441, -0.0000028523,0.0000028560,0.0000028536,0.0000028470,0.0000028405, -0.0000028347,0.0000028310,0.0000028313,0.0000028357,0.0000028423, -0.0000028474,0.0000028499,0.0000028513,0.0000028518,0.0000028521, -0.0000028568,0.0000028661,0.0000028760,0.0000028810,0.0000028814, -0.0000028800,0.0000028797,0.0000028837,0.0000028909,0.0000028970, -0.0000029038,0.0000029149,0.0000029260,0.0000029293,0.0000029269, -0.0000029215,0.0000029180,0.0000029195,0.0000029243,0.0000029269, -0.0000029251,0.0000029198,0.0000029105,0.0000028971,0.0000028843, -0.0000028769,0.0000028770,0.0000028815,0.0000028863,0.0000028877, -0.0000028828,0.0000028713,0.0000028579,0.0000028451,0.0000028358, -0.0000028346,0.0000028361,0.0000028386,0.0000028400,0.0000028395, -0.0000028373,0.0000028345,0.0000028327,0.0000028317,0.0000028323, -0.0000028333,0.0000028327,0.0000028300,0.0000028266,0.0000028250, -0.0000028277,0.0000028375,0.0000028468,0.0000028497,0.0000028478, -0.0000028432,0.0000028403,0.0000028390,0.0000028371,0.0000028346, -0.0000028349,0.0000028393,0.0000028456,0.0000028518,0.0000028549, -0.0000028549,0.0000028506,0.0000028357,0.0000028159,0.0000028123, -0.0000028283,0.0000028402,0.0000028375,0.0000028325,0.0000028351, -0.0000028434,0.0000028470,0.0000028459,0.0000028462,0.0000028505, -0.0000028553,0.0000028503,0.0000028388,0.0000028350,0.0000028362, -0.0000028336,0.0000028279,0.0000028220,0.0000028167,0.0000028148, -0.0000028174,0.0000028208,0.0000028166,0.0000028065,0.0000027972, -0.0000027939,0.0000027952,0.0000027978,0.0000028011,0.0000028016, -0.0000027963,0.0000027846,0.0000027716,0.0000027646,0.0000027670, -0.0000027747,0.0000027848,0.0000027935,0.0000028010,0.0000028086, -0.0000028147,0.0000028164,0.0000028145,0.0000028129,0.0000028122, -0.0000028099,0.0000028053,0.0000027999,0.0000027975,0.0000028019, -0.0000028115,0.0000028185,0.0000028175,0.0000028070,0.0000027909, -0.0000027808,0.0000027800,0.0000027871,0.0000027974,0.0000028020, -0.0000028016,0.0000027973,0.0000027933,0.0000027922,0.0000027937, -0.0000027963,0.0000027981,0.0000027969,0.0000027948,0.0000027963, -0.0000028005,0.0000028054,0.0000028095,0.0000028131,0.0000028152, -0.0000028162,0.0000028148,0.0000028127,0.0000028113,0.0000028060, -0.0000027969,0.0000027916,0.0000028004,0.0000028291,0.0000028500, -0.0000028540,0.0000028554,0.0000028652,0.0000028797,0.0000028886, -0.0000028906,0.0000028896,0.0000028864,0.0000028844,0.0000028833, -0.0000028827,0.0000028836,0.0000028833,0.0000028870,0.0000028872, -0.0000028837,0.0000028744,0.0000028645,0.0000028581,0.0000028544, -0.0000028538,0.0000028537,0.0000028541,0.0000028545,0.0000028557, -0.0000028584,0.0000028580,0.0000028532,0.0000028508,0.0000028550, -0.0000028599,0.0000028569,0.0000028509,0.0000028507,0.0000028522, -0.0000028486,0.0000028362,0.0000028271,0.0000028320,0.0000028489, -0.0000028662,0.0000028723,0.0000028707,0.0000028609,0.0000028491, -0.0000028395,0.0000028320,0.0000028273,0.0000028259,0.0000028262, -0.0000028262,0.0000028261,0.0000028260,0.0000028259,0.0000028251, -0.0000028222,0.0000028157,0.0000028059,0.0000027965,0.0000027927, -0.0000027957,0.0000028038,0.0000028124,0.0000028180,0.0000028175, -0.0000028141,0.0000028036,0.0000027891,0.0000027741,0.0000027651, -0.0000027611,0.0000027658,0.0000027701,0.0000027695,0.0000027636, -0.0000027609,0.0000027625,0.0000027649,0.0000027643,0.0000027613, -0.0000027613,0.0000027676,0.0000027760,0.0000027818,0.0000027853, -0.0000027880,0.0000027893,0.0000027866,0.0000027803,0.0000027784, -0.0000027922,0.0000028161,0.0000028256,0.0000028170,0.0000028025, -0.0000027961,0.0000027966,0.0000028013,0.0000028102,0.0000028175, -0.0000028193,0.0000028162,0.0000028050,0.0000027865,0.0000027696, -0.0000027622,0.0000027618,0.0000027648,0.0000027741,0.0000027825, -0.0000027817,0.0000027742,0.0000027676,0.0000027601,0.0000027507, -0.0000027454,0.0000027480,0.0000027577,0.0000027677,0.0000027751, -0.0000027808,0.0000027831,0.0000027838,0.0000027852,0.0000027886, -0.0000027920,0.0000027961,0.0000028007,0.0000028046,0.0000028063, -0.0000028054,0.0000028023,0.0000027990,0.0000027961,0.0000027936, -0.0000027934,0.0000027954,0.0000027969,0.0000027961,0.0000027916, -0.0000027829,0.0000027726,0.0000027673,0.0000027682,0.0000027723, -0.0000027779,0.0000027850,0.0000027907,0.0000027936,0.0000027967, -0.0000028001,0.0000027997,0.0000027967,0.0000027992,0.0000028107, -0.0000028199,0.0000028199,0.0000028129,0.0000028056,0.0000028019, -0.0000028009,0.0000028033,0.0000028074,0.0000028104,0.0000028159, -0.0000028236,0.0000028310,0.0000028462,0.0000028663,0.0000028738, -0.0000028706,0.0000028631,0.0000028620,0.0000028686,0.0000028796, -0.0000028838,0.0000028733,0.0000028558,0.0000028453,0.0000028456, -0.0000028504,0.0000028526,0.0000028516,0.0000028443,0.0000028356, -0.0000028262,0.0000028195,0.0000028160,0.0000028131,0.0000028153, -0.0000028205,0.0000028308,0.0000028422,0.0000028471,0.0000028510, -0.0000028515,0.0000028391,0.0000028303,0.0000028390,0.0000028484, -0.0000028487,0.0000028472,0.0000028509,0.0000028555,0.0000028576, -0.0000028702,0.0000028823,0.0000028844,0.0000028955,0.0000029071, -0.0000029032,0.0000028931,0.0000028869,0.0000028805,0.0000028744, -0.0000028718,0.0000028691,0.0000028681,0.0000028680,0.0000028697, -0.0000028718,0.0000028716,0.0000028680,0.0000028626,0.0000028547, -0.0000028510,0.0000028478,0.0000028467,0.0000028433,0.0000028336, -0.0000028180,0.0000028022,0.0000027920,0.0000027902,0.0000027933, -0.0000027932,0.0000027886,0.0000027815,0.0000027743,0.0000027677, -0.0000027641,0.0000027604,0.0000027570,0.0000027532,0.0000027507, -0.0000027474,0.0000027441,0.0000027388,0.0000027315,0.0000027236, -0.0000027183,0.0000027123,0.0000027060,0.0000027020,0.0000026976, -0.0000026934,0.0000026911,0.0000026893,0.0000026874,0.0000026869, -0.0000026876,0.0000026871,0.0000026851,0.0000026848,0.0000026863, -0.0000026879,0.0000026907,0.0000026949,0.0000026979,0.0000026984, -0.0000026964,0.0000026938,0.0000026934,0.0000026965,0.0000027019, -0.0000027088,0.0000027166,0.0000027242,0.0000027322,0.0000027430, -0.0000027579,0.0000027744,0.0000027876,0.0000027942,0.0000027963, -0.0000027997,0.0000028025,0.0000028049,0.0000028064,0.0000028086, -0.0000028152,0.0000028222,0.0000028240,0.0000028233,0.0000028261, -0.0000028303,0.0000028280,0.0000028195,0.0000028135,0.0000028129, -0.0000028145,0.0000028152,0.0000028158,0.0000028171,0.0000028169, -0.0000028137,0.0000028091,0.0000028046,0.0000028002,0.0000027985, -0.0000027940,0.0000027877,0.0000027847,0.0000027771,0.0000027728, -0.0000027833,0.0000027942,0.0000028010,0.0000028264,0.0000028453, -0.0000028420,0.0000028353,0.0000028390,0.0000028519,0.0000028606, -0.0000028653,0.0000028638,0.0000028550,0.0000028464,0.0000028318, -0.0000028117,0.0000028037,0.0000028095,0.0000028137,0.0000028166, -0.0000028183,0.0000028182,0.0000028149,0.0000028012,0.0000027824, -0.0000027755,0.0000027764,0.0000027755,0.0000027704,0.0000027635, -0.0000027569,0.0000027511,0.0000027454,0.0000027414,0.0000027395, -0.0000027412,0.0000027458,0.0000027509,0.0000027535,0.0000027560, -0.0000027595,0.0000027646,0.0000027697,0.0000027729,0.0000027758, -0.0000027766,0.0000027747,0.0000027723,0.0000027710,0.0000027703, -0.0000027720,0.0000027766,0.0000027801,0.0000027823,0.0000027814, -0.0000027781,0.0000027725,0.0000027660,0.0000027587,0.0000027523, -0.0000027477,0.0000027461,0.0000027475,0.0000027520,0.0000027564, -0.0000027585,0.0000027580,0.0000027550,0.0000027514,0.0000027511, -0.0000027569,0.0000027674,0.0000027774,0.0000027864,0.0000027940, -0.0000028057,0.0000028237,0.0000028358,0.0000028371,0.0000028310, -0.0000028255,0.0000028251,0.0000028268,0.0000028322,0.0000028333, -0.0000028355,0.0000028364,0.0000028380,0.0000028415,0.0000028447, -0.0000028461,0.0000028479,0.0000028455,0.0000028411,0.0000028337, -0.0000028247,0.0000028181,0.0000028095,0.0000028065,0.0000028069, -0.0000028105,0.0000028129,0.0000028156,0.0000028160,0.0000028150, -0.0000028117,0.0000028054,0.0000028005,0.0000027988,0.0000027976, -0.0000027956,0.0000027939,0.0000027938,0.0000027957,0.0000027972, -0.0000027975,0.0000027986,0.0000028019,0.0000028059,0.0000028092, -0.0000028119,0.0000028138,0.0000028132,0.0000028131,0.0000028155, -0.0000028205,0.0000028256,0.0000028283,0.0000028286,0.0000028259, -0.0000028201,0.0000028149,0.0000028117,0.0000028090,0.0000028054, -0.0000028023,0.0000028023,0.0000028064,0.0000028122,0.0000028182, -0.0000028236,0.0000028266,0.0000028272,0.0000028271,0.0000028273, -0.0000028274,0.0000028242,0.0000028154,0.0000028030,0.0000027923, -0.0000027875,0.0000027873,0.0000027919,0.0000027989,0.0000028106, -0.0000028258,0.0000028375,0.0000028422,0.0000028422,0.0000028397, -0.0000028365,0.0000028348,0.0000028364,0.0000028443,0.0000028548, -0.0000028575,0.0000028548,0.0000028384,0.0000028104,0.0000027965, -0.0000028001,0.0000028105,0.0000028293,0.0000028493,0.0000028568, -0.0000028516,0.0000028358,0.0000028210,0.0000028171,0.0000028223, -0.0000028293,0.0000028335,0.0000028356,0.0000028372,0.0000028391, -0.0000028398,0.0000028372,0.0000028322,0.0000028260,0.0000028191, -0.0000028133,0.0000028118,0.0000028152,0.0000028221,0.0000028286, -0.0000028324,0.0000028344,0.0000028361,0.0000028389,0.0000028458, -0.0000028571,0.0000028704,0.0000028796,0.0000028831,0.0000028828, -0.0000028809,0.0000028816,0.0000028860,0.0000028913,0.0000028961, -0.0000029034,0.0000029143,0.0000029227,0.0000029229,0.0000029154, -0.0000029052,0.0000029012,0.0000029042,0.0000029125,0.0000029199, -0.0000029231,0.0000029228,0.0000029152,0.0000028990,0.0000028806, -0.0000028688,0.0000028674,0.0000028737,0.0000028832,0.0000028879, -0.0000028858,0.0000028763,0.0000028638,0.0000028510,0.0000028432, -0.0000028399,0.0000028368,0.0000028347,0.0000028321,0.0000028301, -0.0000028292,0.0000028292,0.0000028295,0.0000028303,0.0000028319, -0.0000028330,0.0000028318,0.0000028296,0.0000028286,0.0000028319, -0.0000028418,0.0000028544,0.0000028621,0.0000028627,0.0000028592, -0.0000028550,0.0000028515,0.0000028481,0.0000028448,0.0000028435, -0.0000028451,0.0000028494,0.0000028547,0.0000028581,0.0000028584, -0.0000028565,0.0000028487,0.0000028298,0.0000028120,0.0000028145, -0.0000028329,0.0000028422,0.0000028390,0.0000028356,0.0000028405, -0.0000028473,0.0000028469,0.0000028439,0.0000028448,0.0000028519, -0.0000028556,0.0000028486,0.0000028376,0.0000028346,0.0000028333, -0.0000028300,0.0000028251,0.0000028189,0.0000028131,0.0000028127, -0.0000028194,0.0000028255,0.0000028246,0.0000028173,0.0000028091, -0.0000028044,0.0000028028,0.0000028030,0.0000028039,0.0000028041, -0.0000028011,0.0000027927,0.0000027801,0.0000027710,0.0000027693, -0.0000027734,0.0000027805,0.0000027875,0.0000027939,0.0000028014, -0.0000028097,0.0000028152,0.0000028171,0.0000028166,0.0000028171, -0.0000028159,0.0000028130,0.0000028095,0.0000028049,0.0000028052, -0.0000028122,0.0000028197,0.0000028214,0.0000028147,0.0000027991, -0.0000027852,0.0000027803,0.0000027839,0.0000027932,0.0000028014, -0.0000028042,0.0000028019,0.0000027968,0.0000027929,0.0000027925, -0.0000027940,0.0000027965,0.0000027985,0.0000028003,0.0000028032, -0.0000028065,0.0000028080,0.0000028086,0.0000028097,0.0000028122, -0.0000028145,0.0000028145,0.0000028129,0.0000028123,0.0000028093, -0.0000028007,0.0000027917,0.0000027930,0.0000028189,0.0000028455, -0.0000028533,0.0000028529,0.0000028579,0.0000028735,0.0000028881, -0.0000028944,0.0000028955,0.0000028941,0.0000028938,0.0000028948, -0.0000028957,0.0000028975,0.0000028987,0.0000029013,0.0000029017, -0.0000028986,0.0000028883,0.0000028756,0.0000028658,0.0000028588, -0.0000028562,0.0000028557,0.0000028561,0.0000028578,0.0000028603, -0.0000028645,0.0000028655,0.0000028586,0.0000028517,0.0000028540, -0.0000028595,0.0000028557,0.0000028469,0.0000028453,0.0000028459, -0.0000028416,0.0000028362,0.0000028389,0.0000028518,0.0000028643, -0.0000028669,0.0000028621,0.0000028499,0.0000028353,0.0000028231, -0.0000028163,0.0000028133,0.0000028125,0.0000028143,0.0000028164, -0.0000028172,0.0000028167,0.0000028161,0.0000028162,0.0000028158, -0.0000028137,0.0000028083,0.0000027991,0.0000027870,0.0000027767, -0.0000027736,0.0000027781,0.0000027884,0.0000028001,0.0000028093, -0.0000028138,0.0000028110,0.0000028040,0.0000027927,0.0000027787, -0.0000027640,0.0000027572,0.0000027614,0.0000027698,0.0000027732, -0.0000027678,0.0000027627,0.0000027632,0.0000027643,0.0000027631, -0.0000027602,0.0000027604,0.0000027667,0.0000027756,0.0000027830, -0.0000027868,0.0000027894,0.0000027923,0.0000027915,0.0000027843, -0.0000027778,0.0000027787,0.0000027935,0.0000028159,0.0000028191, -0.0000028061,0.0000027946,0.0000027927,0.0000027956,0.0000028039, -0.0000028138,0.0000028187,0.0000028178,0.0000028114,0.0000027958, -0.0000027774,0.0000027654,0.0000027619,0.0000027639,0.0000027711, -0.0000027792,0.0000027797,0.0000027749,0.0000027703,0.0000027655, -0.0000027577,0.0000027514,0.0000027518,0.0000027580,0.0000027661, -0.0000027752,0.0000027832,0.0000027872,0.0000027880,0.0000027879, -0.0000027897,0.0000027926,0.0000027987,0.0000028055,0.0000028111, -0.0000028141,0.0000028138,0.0000028103,0.0000028053,0.0000027996, -0.0000027935,0.0000027888,0.0000027859,0.0000027839,0.0000027834, -0.0000027823,0.0000027782,0.0000027705,0.0000027659,0.0000027684, -0.0000027771,0.0000027856,0.0000027899,0.0000027916,0.0000027944, -0.0000028000,0.0000028044,0.0000028026,0.0000028000,0.0000028066, -0.0000028214,0.0000028296,0.0000028270,0.0000028184,0.0000028110, -0.0000028080,0.0000028068,0.0000028079,0.0000028095,0.0000028109, -0.0000028183,0.0000028267,0.0000028358,0.0000028533,0.0000028658, -0.0000028675,0.0000028666,0.0000028645,0.0000028709,0.0000028753, -0.0000028793,0.0000028736,0.0000028577,0.0000028468,0.0000028426, -0.0000028427,0.0000028471,0.0000028500,0.0000028523,0.0000028484, -0.0000028427,0.0000028365,0.0000028333,0.0000028314,0.0000028277, -0.0000028264,0.0000028262,0.0000028313,0.0000028396,0.0000028455, -0.0000028472,0.0000028493,0.0000028427,0.0000028313,0.0000028344, -0.0000028460,0.0000028500,0.0000028504,0.0000028538,0.0000028572, -0.0000028582,0.0000028661,0.0000028795,0.0000028840,0.0000028952, -0.0000029053,0.0000028999,0.0000028907,0.0000028825,0.0000028722, -0.0000028655,0.0000028618,0.0000028579,0.0000028560,0.0000028565, -0.0000028588,0.0000028627,0.0000028653,0.0000028628,0.0000028568, -0.0000028479,0.0000028434,0.0000028410,0.0000028409,0.0000028379, -0.0000028304,0.0000028200,0.0000028067,0.0000027934,0.0000027845, -0.0000027826,0.0000027828,0.0000027799,0.0000027769,0.0000027724, -0.0000027672,0.0000027606,0.0000027518,0.0000027434,0.0000027334, -0.0000027241,0.0000027151,0.0000027069,0.0000027018,0.0000026948, -0.0000026875,0.0000026840,0.0000026801,0.0000026741,0.0000026703, -0.0000026683,0.0000026658,0.0000026647,0.0000026634,0.0000026613, -0.0000026586,0.0000026568,0.0000026570,0.0000026572,0.0000026563, -0.0000026571,0.0000026583,0.0000026605,0.0000026657,0.0000026723, -0.0000026764,0.0000026779,0.0000026771,0.0000026762,0.0000026777, -0.0000026826,0.0000026900,0.0000026984,0.0000027070,0.0000027145, -0.0000027219,0.0000027319,0.0000027459,0.0000027635,0.0000027813, -0.0000027923,0.0000027962,0.0000027994,0.0000028006,0.0000028018, -0.0000028041,0.0000028067,0.0000028104,0.0000028170,0.0000028234, -0.0000028236,0.0000028218,0.0000028244,0.0000028267,0.0000028237, -0.0000028165,0.0000028107,0.0000028095,0.0000028106,0.0000028117, -0.0000028148,0.0000028162,0.0000028148,0.0000028136,0.0000028131, -0.0000028113,0.0000028106,0.0000028049,0.0000027950,0.0000027872, -0.0000027782,0.0000027728,0.0000027838,0.0000027957,0.0000028048, -0.0000028340,0.0000028458,0.0000028407,0.0000028379,0.0000028444, -0.0000028555,0.0000028615,0.0000028660,0.0000028627,0.0000028531, -0.0000028420,0.0000028258,0.0000028064,0.0000028038,0.0000028102, -0.0000028126,0.0000028143,0.0000028168,0.0000028173,0.0000028075, -0.0000027884,0.0000027748,0.0000027727,0.0000027722,0.0000027691, -0.0000027640,0.0000027587,0.0000027528,0.0000027469,0.0000027409, -0.0000027353,0.0000027321,0.0000027334,0.0000027393,0.0000027454, -0.0000027487,0.0000027512,0.0000027550,0.0000027594,0.0000027630, -0.0000027653,0.0000027670,0.0000027660,0.0000027639,0.0000027619, -0.0000027619,0.0000027622,0.0000027645,0.0000027697,0.0000027751, -0.0000027784,0.0000027791,0.0000027768,0.0000027713,0.0000027653, -0.0000027604,0.0000027578,0.0000027573,0.0000027567,0.0000027575, -0.0000027606,0.0000027638,0.0000027647,0.0000027630,0.0000027576, -0.0000027510,0.0000027489,0.0000027540,0.0000027641,0.0000027740, -0.0000027829,0.0000027930,0.0000028075,0.0000028245,0.0000028329, -0.0000028320,0.0000028274,0.0000028215,0.0000028182,0.0000028176, -0.0000028191,0.0000028199,0.0000028239,0.0000028308,0.0000028370, -0.0000028426,0.0000028478,0.0000028487,0.0000028487,0.0000028476, -0.0000028437,0.0000028358,0.0000028284,0.0000028204,0.0000028121, -0.0000028062,0.0000028043,0.0000028065,0.0000028070,0.0000028082, -0.0000028090,0.0000028090,0.0000028078,0.0000028042,0.0000028000, -0.0000027971,0.0000027964,0.0000027960,0.0000027940,0.0000027921, -0.0000027923,0.0000027931,0.0000027931,0.0000027933,0.0000027960, -0.0000028001,0.0000028037,0.0000028077,0.0000028127,0.0000028169, -0.0000028214,0.0000028260,0.0000028301,0.0000028335,0.0000028357, -0.0000028361,0.0000028345,0.0000028308,0.0000028272,0.0000028251, -0.0000028237,0.0000028219,0.0000028206,0.0000028213,0.0000028252, -0.0000028312,0.0000028377,0.0000028443,0.0000028489,0.0000028496, -0.0000028471,0.0000028428,0.0000028393,0.0000028364,0.0000028304, -0.0000028193,0.0000028058,0.0000027954,0.0000027920,0.0000027946, -0.0000028030,0.0000028148,0.0000028279,0.0000028375,0.0000028419, -0.0000028429,0.0000028422,0.0000028400,0.0000028370,0.0000028356, -0.0000028388,0.0000028474,0.0000028551,0.0000028560,0.0000028516, -0.0000028321,0.0000028051,0.0000027973,0.0000028022,0.0000028128, -0.0000028315,0.0000028508,0.0000028564,0.0000028503,0.0000028336, -0.0000028181,0.0000028138,0.0000028175,0.0000028253,0.0000028313, -0.0000028336,0.0000028331,0.0000028299,0.0000028255,0.0000028207, -0.0000028164,0.0000028124,0.0000028080,0.0000028040,0.0000028024, -0.0000028038,0.0000028082,0.0000028135,0.0000028183,0.0000028219, -0.0000028251,0.0000028299,0.0000028369,0.0000028481,0.0000028629, -0.0000028761,0.0000028847,0.0000028879,0.0000028869,0.0000028845, -0.0000028848,0.0000028879,0.0000028917,0.0000028962,0.0000029037, -0.0000029132,0.0000029177,0.0000029145,0.0000029029,0.0000028922, -0.0000028894,0.0000028922,0.0000029016,0.0000029129,0.0000029210, -0.0000029216,0.0000029130,0.0000028950,0.0000028752,0.0000028622, -0.0000028599,0.0000028643,0.0000028723,0.0000028769,0.0000028758, -0.0000028704,0.0000028633,0.0000028571,0.0000028526,0.0000028464, -0.0000028401,0.0000028345,0.0000028306,0.0000028298,0.0000028305, -0.0000028317,0.0000028327,0.0000028344,0.0000028364,0.0000028368, -0.0000028356,0.0000028363,0.0000028397,0.0000028480,0.0000028609, -0.0000028723,0.0000028765,0.0000028752,0.0000028715,0.0000028675, -0.0000028636,0.0000028595,0.0000028562,0.0000028554,0.0000028567, -0.0000028596,0.0000028619,0.0000028615,0.0000028590,0.0000028540, -0.0000028411,0.0000028211,0.0000028103,0.0000028212,0.0000028404, -0.0000028453,0.0000028414,0.0000028402,0.0000028472,0.0000028512, -0.0000028469,0.0000028427,0.0000028451,0.0000028528,0.0000028548, -0.0000028473,0.0000028388,0.0000028353,0.0000028327,0.0000028292, -0.0000028236,0.0000028159,0.0000028092,0.0000028095,0.0000028180, -0.0000028258,0.0000028284,0.0000028260,0.0000028226,0.0000028189, -0.0000028162,0.0000028147,0.0000028126,0.0000028095,0.0000028055, -0.0000027992,0.0000027908,0.0000027836,0.0000027790,0.0000027782, -0.0000027810,0.0000027837,0.0000027865,0.0000027921,0.0000027998, -0.0000028072,0.0000028118,0.0000028138,0.0000028151,0.0000028142, -0.0000028139,0.0000028136,0.0000028112,0.0000028108,0.0000028161, -0.0000028216,0.0000028228,0.0000028187,0.0000028069,0.0000027924, -0.0000027846,0.0000027845,0.0000027891,0.0000027970,0.0000028024, -0.0000028029,0.0000027997,0.0000027953,0.0000027930,0.0000027935, -0.0000027963,0.0000027997,0.0000028028,0.0000028056,0.0000028065, -0.0000028058,0.0000028046,0.0000028053,0.0000028091,0.0000028129, -0.0000028145,0.0000028138,0.0000028129,0.0000028115,0.0000028046, -0.0000027941,0.0000027918,0.0000028115,0.0000028419,0.0000028540, -0.0000028531,0.0000028551,0.0000028691,0.0000028862,0.0000028961, -0.0000029011,0.0000029042,0.0000029066,0.0000029097,0.0000029112, -0.0000029128,0.0000029149,0.0000029150,0.0000029149,0.0000029100, -0.0000028992,0.0000028852,0.0000028728,0.0000028628,0.0000028588, -0.0000028583,0.0000028602,0.0000028643,0.0000028679,0.0000028705, -0.0000028699,0.0000028615,0.0000028549,0.0000028573,0.0000028594, -0.0000028526,0.0000028425,0.0000028386,0.0000028379,0.0000028407, -0.0000028481,0.0000028573,0.0000028613,0.0000028590,0.0000028481, -0.0000028346,0.0000028223,0.0000028128,0.0000028099,0.0000028106, -0.0000028119,0.0000028142,0.0000028181,0.0000028219,0.0000028237, -0.0000028235,0.0000028224,0.0000028215,0.0000028199,0.0000028164, -0.0000028102,0.0000028014,0.0000027890,0.0000027743,0.0000027618, -0.0000027573,0.0000027620,0.0000027738,0.0000027871,0.0000027976, -0.0000028031,0.0000028028,0.0000027988,0.0000027916,0.0000027817, -0.0000027677,0.0000027573,0.0000027582,0.0000027686,0.0000027762, -0.0000027729,0.0000027663,0.0000027641,0.0000027641,0.0000027629, -0.0000027616,0.0000027626,0.0000027678,0.0000027756,0.0000027826, -0.0000027863,0.0000027884,0.0000027920,0.0000027956,0.0000027919, -0.0000027792,0.0000027675,0.0000027719,0.0000027966,0.0000028159, -0.0000028110,0.0000027951,0.0000027904,0.0000027927,0.0000027994, -0.0000028090,0.0000028162,0.0000028175,0.0000028151,0.0000028040, -0.0000027866,0.0000027712,0.0000027634,0.0000027630,0.0000027673, -0.0000027738,0.0000027769,0.0000027760,0.0000027736,0.0000027699, -0.0000027638,0.0000027590,0.0000027591,0.0000027627,0.0000027677, -0.0000027740,0.0000027805,0.0000027852,0.0000027872,0.0000027879, -0.0000027898,0.0000027927,0.0000028001,0.0000028078,0.0000028133, -0.0000028160,0.0000028157,0.0000028125,0.0000028062,0.0000027978, -0.0000027882,0.0000027799,0.0000027743,0.0000027723,0.0000027742, -0.0000027769,0.0000027759,0.0000027708,0.0000027684,0.0000027723, -0.0000027830,0.0000027911,0.0000027920,0.0000027916,0.0000027956, -0.0000028034,0.0000028084,0.0000028060,0.0000028047,0.0000028160, -0.0000028322,0.0000028366,0.0000028312,0.0000028222,0.0000028170, -0.0000028153,0.0000028129,0.0000028120,0.0000028112,0.0000028121, -0.0000028218,0.0000028299,0.0000028422,0.0000028581,0.0000028622, -0.0000028633,0.0000028670,0.0000028729,0.0000028782,0.0000028755, -0.0000028689,0.0000028574,0.0000028484,0.0000028429,0.0000028385, -0.0000028368,0.0000028429,0.0000028517,0.0000028591,0.0000028553, -0.0000028485,0.0000028420,0.0000028403,0.0000028395,0.0000028373, -0.0000028370,0.0000028353,0.0000028349,0.0000028384,0.0000028437, -0.0000028453,0.0000028459,0.0000028442,0.0000028342,0.0000028322, -0.0000028432,0.0000028524,0.0000028558,0.0000028581,0.0000028594, -0.0000028590,0.0000028625,0.0000028752,0.0000028826,0.0000028918, -0.0000029024,0.0000028983,0.0000028891,0.0000028781,0.0000028652, -0.0000028588,0.0000028533,0.0000028464,0.0000028425,0.0000028440, -0.0000028479,0.0000028534,0.0000028581,0.0000028574,0.0000028515, -0.0000028433,0.0000028369,0.0000028340,0.0000028328,0.0000028299, -0.0000028256,0.0000028194,0.0000028093,0.0000027952,0.0000027820, -0.0000027772,0.0000027767,0.0000027732,0.0000027678,0.0000027621, -0.0000027586,0.0000027558,0.0000027488,0.0000027385,0.0000027266, -0.0000027151,0.0000027083,0.0000027026,0.0000026991,0.0000026971, -0.0000026913,0.0000026870,0.0000026851,0.0000026795,0.0000026739, -0.0000026717,0.0000026695,0.0000026685,0.0000026672,0.0000026650, -0.0000026618,0.0000026588,0.0000026562,0.0000026549,0.0000026538, -0.0000026542,0.0000026551,0.0000026558,0.0000026573,0.0000026627, -0.0000026686,0.0000026718,0.0000026725,0.0000026718,0.0000026715, -0.0000026735,0.0000026790,0.0000026865,0.0000026950,0.0000027038, -0.0000027111,0.0000027178,0.0000027263,0.0000027379,0.0000027542, -0.0000027728,0.0000027875,0.0000027956,0.0000028000,0.0000028010, -0.0000028018,0.0000028045,0.0000028075,0.0000028090,0.0000028129, -0.0000028218,0.0000028259,0.0000028228,0.0000028205,0.0000028227, -0.0000028244,0.0000028207,0.0000028130,0.0000028085,0.0000028084, -0.0000028089,0.0000028111,0.0000028114,0.0000028106,0.0000028125, -0.0000028147,0.0000028160,0.0000028181,0.0000028148,0.0000028044, -0.0000027917,0.0000027785,0.0000027728,0.0000027855,0.0000027968, -0.0000028127,0.0000028411,0.0000028450,0.0000028404,0.0000028418, -0.0000028492,0.0000028573,0.0000028624,0.0000028671,0.0000028614, -0.0000028505,0.0000028376,0.0000028198,0.0000028028,0.0000028046, -0.0000028092,0.0000028104,0.0000028118,0.0000028152,0.0000028146, -0.0000027972,0.0000027783,0.0000027712,0.0000027707,0.0000027685, -0.0000027652,0.0000027622,0.0000027581,0.0000027521,0.0000027460, -0.0000027407,0.0000027354,0.0000027321,0.0000027346,0.0000027404, -0.0000027475,0.0000027509,0.0000027532,0.0000027564,0.0000027597, -0.0000027622,0.0000027627,0.0000027628,0.0000027610,0.0000027595, -0.0000027578,0.0000027589,0.0000027609,0.0000027638,0.0000027696, -0.0000027749,0.0000027787,0.0000027797,0.0000027776,0.0000027715, -0.0000027661,0.0000027632,0.0000027635,0.0000027647,0.0000027651, -0.0000027662,0.0000027675,0.0000027700,0.0000027706,0.0000027706, -0.0000027665,0.0000027589,0.0000027548,0.0000027584,0.0000027673, -0.0000027758,0.0000027831,0.0000027942,0.0000028085,0.0000028228, -0.0000028286,0.0000028271,0.0000028241,0.0000028178,0.0000028129, -0.0000028090,0.0000028057,0.0000028074,0.0000028151,0.0000028249, -0.0000028337,0.0000028409,0.0000028471,0.0000028489,0.0000028490, -0.0000028485,0.0000028441,0.0000028384,0.0000028317,0.0000028240, -0.0000028185,0.0000028108,0.0000028055,0.0000028057,0.0000028053, -0.0000028056,0.0000028055,0.0000028045,0.0000028030,0.0000028008, -0.0000027975,0.0000027952,0.0000027939,0.0000027937,0.0000027922, -0.0000027894,0.0000027876,0.0000027879,0.0000027888,0.0000027897, -0.0000027919,0.0000027969,0.0000028021,0.0000028080,0.0000028163, -0.0000028258,0.0000028330,0.0000028366,0.0000028380,0.0000028401, -0.0000028427,0.0000028443,0.0000028442,0.0000028433,0.0000028426, -0.0000028423,0.0000028414,0.0000028399,0.0000028394,0.0000028407, -0.0000028438,0.0000028479,0.0000028528,0.0000028586,0.0000028640, -0.0000028666,0.0000028653,0.0000028602,0.0000028534,0.0000028481, -0.0000028436,0.0000028365,0.0000028258,0.0000028143,0.0000028071, -0.0000028065,0.0000028121,0.0000028218,0.0000028328,0.0000028398, -0.0000028420,0.0000028426,0.0000028430,0.0000028429,0.0000028411, -0.0000028381,0.0000028373,0.0000028413,0.0000028487,0.0000028532, -0.0000028534,0.0000028487,0.0000028255,0.0000028011,0.0000027979, -0.0000028042,0.0000028139,0.0000028327,0.0000028511,0.0000028555, -0.0000028484,0.0000028320,0.0000028166,0.0000028110,0.0000028139, -0.0000028221,0.0000028289,0.0000028310,0.0000028298,0.0000028242, -0.0000028170,0.0000028101,0.0000028056,0.0000028043,0.0000028040, -0.0000028035,0.0000028035,0.0000028044,0.0000028067,0.0000028102, -0.0000028143,0.0000028183,0.0000028229,0.0000028286,0.0000028351, -0.0000028443,0.0000028572,0.0000028713,0.0000028838,0.0000028911, -0.0000028924,0.0000028900,0.0000028884,0.0000028894,0.0000028916, -0.0000028933,0.0000028967,0.0000029042,0.0000029115,0.0000029126, -0.0000029048,0.0000028918,0.0000028820,0.0000028797,0.0000028831, -0.0000028946,0.0000029086,0.0000029168,0.0000029148,0.0000029020, -0.0000028842,0.0000028680,0.0000028574,0.0000028534,0.0000028553, -0.0000028588,0.0000028594,0.0000028582,0.0000028573,0.0000028572, -0.0000028567,0.0000028549,0.0000028507,0.0000028456,0.0000028401, -0.0000028370,0.0000028371,0.0000028384,0.0000028390,0.0000028394, -0.0000028404,0.0000028406,0.0000028397,0.0000028407,0.0000028447, -0.0000028510,0.0000028611,0.0000028727,0.0000028808,0.0000028829, -0.0000028815,0.0000028783,0.0000028750,0.0000028713,0.0000028665, -0.0000028634,0.0000028632,0.0000028645,0.0000028656,0.0000028649, -0.0000028612,0.0000028561,0.0000028471,0.0000028303,0.0000028143, -0.0000028141,0.0000028334,0.0000028485,0.0000028489,0.0000028445, -0.0000028467,0.0000028553,0.0000028551,0.0000028461,0.0000028426, -0.0000028460,0.0000028517,0.0000028524,0.0000028472,0.0000028416, -0.0000028379,0.0000028351,0.0000028307,0.0000028226,0.0000028131, -0.0000028071,0.0000028081,0.0000028168,0.0000028253,0.0000028303, -0.0000028329,0.0000028336,0.0000028325,0.0000028309,0.0000028296, -0.0000028265,0.0000028215,0.0000028151,0.0000028080,0.0000028026, -0.0000027973,0.0000027918,0.0000027885,0.0000027868,0.0000027850, -0.0000027854,0.0000027880,0.0000027931,0.0000028000,0.0000028052, -0.0000028081,0.0000028090,0.0000028091,0.0000028110,0.0000028131, -0.0000028125,0.0000028134,0.0000028197,0.0000028247,0.0000028244, -0.0000028194,0.0000028104,0.0000027980,0.0000027902,0.0000027884, -0.0000027894,0.0000027935,0.0000027974,0.0000027994,0.0000027980, -0.0000027951,0.0000027928,0.0000027927,0.0000027954,0.0000027989, -0.0000028016,0.0000028035,0.0000028032,0.0000028022,0.0000028019, -0.0000028039,0.0000028084,0.0000028126,0.0000028153,0.0000028154, -0.0000028137,0.0000028125,0.0000028083,0.0000027978,0.0000027914, -0.0000028055,0.0000028391,0.0000028551,0.0000028541,0.0000028550, -0.0000028684,0.0000028848,0.0000028966,0.0000029073,0.0000029156, -0.0000029192,0.0000029217,0.0000029219,0.0000029219,0.0000029228, -0.0000029212,0.0000029189,0.0000029121,0.0000029015,0.0000028882, -0.0000028752,0.0000028650,0.0000028616,0.0000028631,0.0000028680, -0.0000028742,0.0000028778,0.0000028769,0.0000028711,0.0000028621, -0.0000028591,0.0000028611,0.0000028575,0.0000028474,0.0000028365, -0.0000028314,0.0000028371,0.0000028522,0.0000028608,0.0000028581, -0.0000028466,0.0000028334,0.0000028228,0.0000028174,0.0000028150, -0.0000028131,0.0000028162,0.0000028204,0.0000028245,0.0000028282, -0.0000028319,0.0000028353,0.0000028373,0.0000028379,0.0000028381, -0.0000028387,0.0000028381,0.0000028352,0.0000028298,0.0000028208, -0.0000028068,0.0000027884,0.0000027692,0.0000027558,0.0000027489, -0.0000027532,0.0000027647,0.0000027771,0.0000027857,0.0000027902, -0.0000027907,0.0000027884,0.0000027859,0.0000027801,0.0000027693, -0.0000027599,0.0000027596,0.0000027680,0.0000027770,0.0000027769, -0.0000027709,0.0000027664,0.0000027660,0.0000027662,0.0000027668, -0.0000027681,0.0000027715,0.0000027778,0.0000027838,0.0000027862, -0.0000027872,0.0000027905,0.0000027965,0.0000027961,0.0000027836, -0.0000027648,0.0000027614,0.0000027774,0.0000028056,0.0000028118, -0.0000027985,0.0000027909,0.0000027928,0.0000027975,0.0000028048, -0.0000028128,0.0000028170,0.0000028161,0.0000028087,0.0000027942, -0.0000027778,0.0000027663,0.0000027631,0.0000027646,0.0000027682, -0.0000027737,0.0000027779,0.0000027772,0.0000027732,0.0000027687, -0.0000027654,0.0000027657,0.0000027688,0.0000027732,0.0000027767, -0.0000027794,0.0000027813,0.0000027824,0.0000027843,0.0000027871, -0.0000027907,0.0000027980,0.0000028052,0.0000028098,0.0000028117, -0.0000028115,0.0000028094,0.0000028044,0.0000027959,0.0000027856, -0.0000027751,0.0000027686,0.0000027674,0.0000027710,0.0000027768, -0.0000027777,0.0000027753,0.0000027747,0.0000027788,0.0000027880, -0.0000027943,0.0000027939,0.0000027932,0.0000027973,0.0000028053, -0.0000028109,0.0000028094,0.0000028113,0.0000028264,0.0000028407, -0.0000028413,0.0000028327,0.0000028250,0.0000028232,0.0000028220, -0.0000028187,0.0000028159,0.0000028130,0.0000028156,0.0000028255, -0.0000028352,0.0000028484,0.0000028580,0.0000028586,0.0000028627, -0.0000028737,0.0000028797,0.0000028774,0.0000028639,0.0000028521, -0.0000028478,0.0000028437,0.0000028385,0.0000028325,0.0000028326, -0.0000028439,0.0000028581,0.0000028643,0.0000028576,0.0000028523, -0.0000028478,0.0000028469,0.0000028445,0.0000028398,0.0000028400, -0.0000028404,0.0000028389,0.0000028382,0.0000028418,0.0000028447, -0.0000028424,0.0000028419,0.0000028375,0.0000028308,0.0000028388, -0.0000028531,0.0000028606,0.0000028638,0.0000028625,0.0000028607, -0.0000028615,0.0000028704,0.0000028801,0.0000028867,0.0000028978, -0.0000028971,0.0000028888,0.0000028768,0.0000028612,0.0000028531, -0.0000028465,0.0000028373,0.0000028328,0.0000028330,0.0000028376, -0.0000028437,0.0000028497,0.0000028507,0.0000028460,0.0000028405, -0.0000028331,0.0000028277,0.0000028239,0.0000028206,0.0000028167, -0.0000028120,0.0000028054,0.0000027964,0.0000027858,0.0000027790, -0.0000027747,0.0000027681,0.0000027588,0.0000027531,0.0000027524, -0.0000027528,0.0000027497,0.0000027435,0.0000027365,0.0000027299, -0.0000027248,0.0000027235,0.0000027217,0.0000027196,0.0000027161, -0.0000027097,0.0000027069,0.0000027011,0.0000026941,0.0000026895, -0.0000026877,0.0000026861,0.0000026852,0.0000026833,0.0000026800, -0.0000026754,0.0000026700,0.0000026646,0.0000026612,0.0000026606, -0.0000026626,0.0000026650,0.0000026662,0.0000026680,0.0000026723, -0.0000026764,0.0000026785,0.0000026781,0.0000026769,0.0000026766, -0.0000026786,0.0000026840,0.0000026917,0.0000027004,0.0000027081, -0.0000027138,0.0000027184,0.0000027229,0.0000027312,0.0000027463, -0.0000027638,0.0000027803,0.0000027927,0.0000028002,0.0000028026, -0.0000028041,0.0000028064,0.0000028088,0.0000028092,0.0000028103, -0.0000028181,0.0000028271,0.0000028274,0.0000028221,0.0000028202, -0.0000028220,0.0000028222,0.0000028168,0.0000028106,0.0000028086, -0.0000028088,0.0000028112,0.0000028098,0.0000028077,0.0000028101, -0.0000028131,0.0000028160,0.0000028198,0.0000028194,0.0000028109, -0.0000027955,0.0000027774,0.0000027735,0.0000027883,0.0000027985, -0.0000028236,0.0000028450,0.0000028435,0.0000028422,0.0000028464, -0.0000028526,0.0000028579,0.0000028641,0.0000028682,0.0000028600, -0.0000028477,0.0000028336,0.0000028142,0.0000028006,0.0000028049, -0.0000028068,0.0000028080,0.0000028096,0.0000028121,0.0000028098, -0.0000027871,0.0000027718,0.0000027693,0.0000027688,0.0000027670, -0.0000027655,0.0000027643,0.0000027600,0.0000027531,0.0000027474, -0.0000027435,0.0000027400,0.0000027376,0.0000027413,0.0000027472, -0.0000027539,0.0000027567,0.0000027584,0.0000027607,0.0000027624, -0.0000027626,0.0000027607,0.0000027590,0.0000027576,0.0000027570, -0.0000027562,0.0000027583,0.0000027618,0.0000027668,0.0000027743, -0.0000027800,0.0000027836,0.0000027840,0.0000027817,0.0000027761, -0.0000027716,0.0000027697,0.0000027707,0.0000027718,0.0000027714, -0.0000027716,0.0000027718,0.0000027718,0.0000027715,0.0000027736, -0.0000027728,0.0000027685,0.0000027668,0.0000027696,0.0000027765, -0.0000027827,0.0000027889,0.0000027980,0.0000028088,0.0000028183, -0.0000028228,0.0000028225,0.0000028206,0.0000028145,0.0000028076, -0.0000028013,0.0000027954,0.0000027978,0.0000028074,0.0000028173, -0.0000028264,0.0000028342,0.0000028409,0.0000028448,0.0000028461, -0.0000028448,0.0000028423,0.0000028372,0.0000028298,0.0000028239, -0.0000028208,0.0000028164,0.0000028121,0.0000028096,0.0000028081, -0.0000028077,0.0000028072,0.0000028058,0.0000028034,0.0000027999, -0.0000027955,0.0000027923,0.0000027915,0.0000027895,0.0000027872, -0.0000027857,0.0000027853,0.0000027865,0.0000027886,0.0000027902, -0.0000027933,0.0000028000,0.0000028081,0.0000028171,0.0000028284, -0.0000028391,0.0000028451,0.0000028460,0.0000028454,0.0000028466, -0.0000028491,0.0000028520,0.0000028544,0.0000028560,0.0000028565, -0.0000028561,0.0000028526,0.0000028491,0.0000028468,0.0000028470, -0.0000028490,0.0000028512,0.0000028536,0.0000028576,0.0000028630, -0.0000028675,0.0000028687,0.0000028669,0.0000028610,0.0000028538, -0.0000028482,0.0000028432,0.0000028366,0.0000028292,0.0000028223, -0.0000028195,0.0000028207,0.0000028264,0.0000028342,0.0000028409, -0.0000028434,0.0000028439,0.0000028442,0.0000028451,0.0000028453, -0.0000028431,0.0000028398,0.0000028391,0.0000028428,0.0000028479, -0.0000028508,0.0000028517,0.0000028455,0.0000028191,0.0000027989, -0.0000027994,0.0000028052,0.0000028145,0.0000028331,0.0000028503, -0.0000028540,0.0000028466,0.0000028324,0.0000028173,0.0000028088, -0.0000028103,0.0000028179,0.0000028251,0.0000028276,0.0000028262, -0.0000028205,0.0000028133,0.0000028069,0.0000028042,0.0000028049, -0.0000028087,0.0000028120,0.0000028136,0.0000028143,0.0000028150, -0.0000028167,0.0000028194,0.0000028232,0.0000028281,0.0000028334, -0.0000028391,0.0000028462,0.0000028562,0.0000028691,0.0000028826, -0.0000028924,0.0000028953,0.0000028935,0.0000028916,0.0000028924, -0.0000028942,0.0000028943,0.0000028948,0.0000028998,0.0000029072, -0.0000029099,0.0000029061,0.0000028952,0.0000028829,0.0000028742, -0.0000028724,0.0000028792,0.0000028927,0.0000029049,0.0000029079, -0.0000029001,0.0000028851,0.0000028698,0.0000028582,0.0000028510, -0.0000028482,0.0000028475,0.0000028456,0.0000028432,0.0000028434, -0.0000028459,0.0000028493,0.0000028518,0.0000028530,0.0000028528, -0.0000028495,0.0000028461,0.0000028455,0.0000028466,0.0000028471, -0.0000028470,0.0000028470,0.0000028464,0.0000028448,0.0000028446, -0.0000028485,0.0000028538,0.0000028606,0.0000028700,0.0000028794, -0.0000028856,0.0000028872,0.0000028853,0.0000028815,0.0000028781, -0.0000028728,0.0000028681,0.0000028669,0.0000028679,0.0000028686, -0.0000028679,0.0000028638,0.0000028572,0.0000028484,0.0000028349, -0.0000028198,0.0000028142,0.0000028253,0.0000028468,0.0000028543, -0.0000028511,0.0000028489,0.0000028560,0.0000028620,0.0000028558, -0.0000028461,0.0000028446,0.0000028468,0.0000028495,0.0000028503, -0.0000028477,0.0000028443,0.0000028418,0.0000028386,0.0000028321, -0.0000028219,0.0000028115,0.0000028060,0.0000028090,0.0000028181, -0.0000028273,0.0000028349,0.0000028406,0.0000028450,0.0000028460, -0.0000028451,0.0000028437,0.0000028409,0.0000028365,0.0000028297, -0.0000028229,0.0000028185,0.0000028129,0.0000028073,0.0000028027, -0.0000027979,0.0000027922,0.0000027894,0.0000027894,0.0000027926, -0.0000027982,0.0000028034,0.0000028063,0.0000028066,0.0000028073, -0.0000028101,0.0000028127,0.0000028121,0.0000028129,0.0000028201, -0.0000028266,0.0000028266,0.0000028199,0.0000028097,0.0000027988, -0.0000027925,0.0000027917,0.0000027922,0.0000027941,0.0000027953, -0.0000027956,0.0000027938,0.0000027918,0.0000027902,0.0000027903, -0.0000027928,0.0000027965,0.0000027991,0.0000028003,0.0000027998, -0.0000027996,0.0000028010,0.0000028042,0.0000028087,0.0000028130, -0.0000028165,0.0000028169,0.0000028144,0.0000028127,0.0000028111, -0.0000028018,0.0000027909,0.0000028002,0.0000028360,0.0000028557, -0.0000028547,0.0000028560,0.0000028700,0.0000028852,0.0000028988, -0.0000029138,0.0000029239,0.0000029264,0.0000029260,0.0000029237, -0.0000029228,0.0000029219,0.0000029190,0.0000029152,0.0000029087, -0.0000028990,0.0000028872,0.0000028758,0.0000028676,0.0000028667, -0.0000028724,0.0000028797,0.0000028852,0.0000028859,0.0000028801, -0.0000028696,0.0000028629,0.0000028628,0.0000028612,0.0000028520, -0.0000028395,0.0000028312,0.0000028344,0.0000028513,0.0000028590, -0.0000028521,0.0000028352,0.0000028219,0.0000028184,0.0000028211, -0.0000028245,0.0000028277,0.0000028304,0.0000028329,0.0000028345, -0.0000028362,0.0000028381,0.0000028401,0.0000028413,0.0000028418, -0.0000028424,0.0000028432,0.0000028448,0.0000028467,0.0000028476, -0.0000028464,0.0000028426,0.0000028344,0.0000028198,0.0000027999, -0.0000027785,0.0000027605,0.0000027510,0.0000027544,0.0000027617, -0.0000027692,0.0000027750,0.0000027778,0.0000027783,0.0000027781, -0.0000027778,0.0000027751,0.0000027684,0.0000027630,0.0000027626, -0.0000027687,0.0000027782,0.0000027828,0.0000027771,0.0000027710, -0.0000027703,0.0000027717,0.0000027737,0.0000027753,0.0000027773, -0.0000027818,0.0000027871,0.0000027891,0.0000027886,0.0000027895, -0.0000027943,0.0000027960,0.0000027876,0.0000027674,0.0000027549, -0.0000027632,0.0000027919,0.0000028093,0.0000028017,0.0000027925, -0.0000027930,0.0000027978,0.0000028022,0.0000028080,0.0000028133, -0.0000028139,0.0000028094,0.0000027982,0.0000027828,0.0000027697, -0.0000027638,0.0000027631,0.0000027654,0.0000027718,0.0000027781, -0.0000027793,0.0000027772,0.0000027740,0.0000027715,0.0000027714, -0.0000027731,0.0000027774,0.0000027811,0.0000027822,0.0000027820, -0.0000027819,0.0000027836,0.0000027868,0.0000027908,0.0000027975, -0.0000028038,0.0000028079,0.0000028095,0.0000028098,0.0000028088, -0.0000028060,0.0000027992,0.0000027886,0.0000027778,0.0000027713, -0.0000027700,0.0000027737,0.0000027802,0.0000027829,0.0000027823, -0.0000027823,0.0000027856,0.0000027928,0.0000027972,0.0000027964, -0.0000027959,0.0000027989,0.0000028065,0.0000028129,0.0000028141, -0.0000028205,0.0000028359,0.0000028459,0.0000028426,0.0000028333, -0.0000028281,0.0000028292,0.0000028281,0.0000028255,0.0000028202, -0.0000028163,0.0000028207,0.0000028286,0.0000028418,0.0000028523, -0.0000028566,0.0000028581,0.0000028676,0.0000028803,0.0000028785, -0.0000028657,0.0000028453,0.0000028417,0.0000028433,0.0000028408, -0.0000028352,0.0000028281,0.0000028321,0.0000028486,0.0000028625, -0.0000028659,0.0000028624,0.0000028639,0.0000028615,0.0000028611, -0.0000028574,0.0000028488,0.0000028432,0.0000028414,0.0000028397, -0.0000028379,0.0000028398,0.0000028430,0.0000028398,0.0000028377, -0.0000028392,0.0000028328,0.0000028350,0.0000028498,0.0000028632, -0.0000028686,0.0000028668,0.0000028632,0.0000028629,0.0000028670, -0.0000028758,0.0000028808,0.0000028900,0.0000028954,0.0000028900, -0.0000028790,0.0000028632,0.0000028500,0.0000028419,0.0000028315, -0.0000028263,0.0000028260,0.0000028279,0.0000028323,0.0000028375, -0.0000028405,0.0000028382,0.0000028340,0.0000028280,0.0000028221, -0.0000028159,0.0000028087,0.0000028021,0.0000027972,0.0000027955, -0.0000027940,0.0000027887,0.0000027813,0.0000027743,0.0000027649, -0.0000027548,0.0000027479,0.0000027460,0.0000027468,0.0000027477, -0.0000027483,0.0000027491,0.0000027471,0.0000027422,0.0000027368, -0.0000027343,0.0000027324,0.0000027316,0.0000027298,0.0000027283, -0.0000027269,0.0000027208,0.0000027153,0.0000027125,0.0000027108, -0.0000027097,0.0000027078,0.0000027051,0.0000027011,0.0000026952, -0.0000026876,0.0000026795,0.0000026728,0.0000026698,0.0000026696, -0.0000026700,0.0000026704,0.0000026729,0.0000026773,0.0000026806, -0.0000026821,0.0000026813,0.0000026811,0.0000026817,0.0000026851, -0.0000026929,0.0000027028,0.0000027114,0.0000027168,0.0000027191, -0.0000027195,0.0000027204,0.0000027262,0.0000027387,0.0000027547, -0.0000027714,0.0000027872,0.0000027988,0.0000028037,0.0000028062, -0.0000028079,0.0000028094,0.0000028088,0.0000028081,0.0000028134, -0.0000028249,0.0000028307,0.0000028277,0.0000028212,0.0000028186, -0.0000028201,0.0000028196,0.0000028153,0.0000028106,0.0000028080, -0.0000028095,0.0000028096,0.0000028099,0.0000028125,0.0000028138, -0.0000028157,0.0000028193,0.0000028201,0.0000028134,0.0000027969, -0.0000027747,0.0000027754,0.0000027919,0.0000028032,0.0000028346, -0.0000028451,0.0000028431,0.0000028458,0.0000028507,0.0000028544, -0.0000028583,0.0000028664,0.0000028690,0.0000028588,0.0000028452, -0.0000028305,0.0000028095,0.0000027992,0.0000028035,0.0000028046, -0.0000028058,0.0000028071,0.0000028076,0.0000028035,0.0000027787, -0.0000027680,0.0000027679,0.0000027672,0.0000027677,0.0000027695, -0.0000027689,0.0000027630,0.0000027551,0.0000027498,0.0000027469, -0.0000027447,0.0000027430,0.0000027467,0.0000027521,0.0000027572, -0.0000027593,0.0000027618,0.0000027643,0.0000027650,0.0000027636, -0.0000027602,0.0000027581,0.0000027580,0.0000027577,0.0000027566, -0.0000027578,0.0000027610,0.0000027668,0.0000027752,0.0000027819, -0.0000027859,0.0000027879,0.0000027877,0.0000027838,0.0000027804, -0.0000027778,0.0000027769,0.0000027773,0.0000027759,0.0000027755, -0.0000027750,0.0000027735,0.0000027729,0.0000027737,0.0000027738, -0.0000027721,0.0000027744,0.0000027785,0.0000027847,0.0000027905, -0.0000027958,0.0000028019,0.0000028095,0.0000028148,0.0000028181, -0.0000028178,0.0000028141,0.0000028089,0.0000028021,0.0000027952, -0.0000027906,0.0000027924,0.0000028004,0.0000028089,0.0000028159, -0.0000028239,0.0000028316,0.0000028382,0.0000028396,0.0000028382, -0.0000028375,0.0000028331,0.0000028262,0.0000028200,0.0000028154, -0.0000028136,0.0000028133,0.0000028140,0.0000028140,0.0000028133, -0.0000028118,0.0000028092,0.0000028056,0.0000028002,0.0000027943, -0.0000027899,0.0000027878,0.0000027866,0.0000027850,0.0000027851, -0.0000027882,0.0000027916,0.0000027951,0.0000027977,0.0000028027, -0.0000028120,0.0000028226,0.0000028335,0.0000028439,0.0000028516, -0.0000028541,0.0000028540,0.0000028547,0.0000028569,0.0000028597, -0.0000028621,0.0000028645,0.0000028644,0.0000028633,0.0000028590, -0.0000028532,0.0000028468,0.0000028420,0.0000028409,0.0000028420, -0.0000028427,0.0000028423,0.0000028433,0.0000028474,0.0000028524, -0.0000028561,0.0000028576,0.0000028566,0.0000028522,0.0000028467, -0.0000028428,0.0000028392,0.0000028342,0.0000028291,0.0000028260, -0.0000028251,0.0000028274,0.0000028334,0.0000028403,0.0000028450, -0.0000028471,0.0000028482,0.0000028493,0.0000028503,0.0000028495, -0.0000028459,0.0000028414,0.0000028401,0.0000028426,0.0000028458, -0.0000028495,0.0000028520,0.0000028417,0.0000028135,0.0000027995, -0.0000028020,0.0000028062,0.0000028148,0.0000028329,0.0000028487, -0.0000028517,0.0000028450,0.0000028334,0.0000028190,0.0000028082, -0.0000028066,0.0000028122,0.0000028189,0.0000028225,0.0000028222, -0.0000028186,0.0000028138,0.0000028103,0.0000028101,0.0000028143, -0.0000028207,0.0000028252,0.0000028263,0.0000028255,0.0000028256, -0.0000028272,0.0000028301,0.0000028339,0.0000028383,0.0000028427, -0.0000028473,0.0000028529,0.0000028609,0.0000028721,0.0000028847, -0.0000028942,0.0000028966,0.0000028946,0.0000028931,0.0000028943, -0.0000028970,0.0000028978,0.0000028977,0.0000029009,0.0000029068, -0.0000029095,0.0000029073,0.0000028986,0.0000028867,0.0000028761, -0.0000028705,0.0000028723,0.0000028816,0.0000028927,0.0000028969, -0.0000028928,0.0000028800,0.0000028648,0.0000028534,0.0000028474, -0.0000028450,0.0000028429,0.0000028399,0.0000028381,0.0000028383, -0.0000028388,0.0000028411,0.0000028448,0.0000028487,0.0000028519, -0.0000028517,0.0000028502,0.0000028505,0.0000028525,0.0000028543, -0.0000028555,0.0000028563,0.0000028557,0.0000028542,0.0000028537, -0.0000028571,0.0000028620,0.0000028668,0.0000028728,0.0000028798, -0.0000028867,0.0000028909,0.0000028901,0.0000028859,0.0000028817, -0.0000028761,0.0000028710,0.0000028695,0.0000028707,0.0000028716, -0.0000028708,0.0000028668,0.0000028589,0.0000028480,0.0000028351, -0.0000028227,0.0000028166,0.0000028209,0.0000028404,0.0000028566, -0.0000028572,0.0000028530,0.0000028564,0.0000028656,0.0000028660, -0.0000028559,0.0000028486,0.0000028477,0.0000028475,0.0000028482, -0.0000028490,0.0000028479,0.0000028464,0.0000028446,0.0000028403, -0.0000028322,0.0000028205,0.0000028095,0.0000028047,0.0000028085, -0.0000028181,0.0000028281,0.0000028373,0.0000028461,0.0000028544, -0.0000028586,0.0000028594,0.0000028572,0.0000028532,0.0000028491, -0.0000028448,0.0000028412,0.0000028372,0.0000028310,0.0000028249, -0.0000028192,0.0000028127,0.0000028054,0.0000027995,0.0000027952, -0.0000027947,0.0000027989,0.0000028042,0.0000028073,0.0000028084, -0.0000028092,0.0000028118,0.0000028142,0.0000028130,0.0000028125, -0.0000028176,0.0000028256,0.0000028273,0.0000028211,0.0000028087, -0.0000027971,0.0000027909,0.0000027908,0.0000027927,0.0000027953, -0.0000027964,0.0000027963,0.0000027937,0.0000027906,0.0000027886, -0.0000027882,0.0000027902,0.0000027940,0.0000027973,0.0000027983, -0.0000027977,0.0000027975,0.0000027994,0.0000028035,0.0000028084, -0.0000028137,0.0000028178,0.0000028180,0.0000028149,0.0000028127, -0.0000028126,0.0000028053,0.0000027913,0.0000027960,0.0000028327, -0.0000028558,0.0000028547,0.0000028576,0.0000028721,0.0000028879, -0.0000029039,0.0000029189,0.0000029269,0.0000029273,0.0000029244, -0.0000029205,0.0000029173,0.0000029146,0.0000029113,0.0000029073, -0.0000029037,0.0000028966,0.0000028872,0.0000028782,0.0000028738, -0.0000028764,0.0000028848,0.0000028913,0.0000028930,0.0000028888, -0.0000028792,0.0000028691,0.0000028651,0.0000028634,0.0000028565, -0.0000028431,0.0000028331,0.0000028360,0.0000028513,0.0000028562, -0.0000028447,0.0000028259,0.0000028172,0.0000028200,0.0000028302, -0.0000028397,0.0000028441,0.0000028448,0.0000028449,0.0000028450, -0.0000028449,0.0000028460,0.0000028473,0.0000028482,0.0000028476, -0.0000028466,0.0000028456,0.0000028450,0.0000028452,0.0000028455, -0.0000028458,0.0000028458,0.0000028452,0.0000028418,0.0000028363, -0.0000028265,0.0000028125,0.0000027949,0.0000027769,0.0000027652, -0.0000027612,0.0000027629,0.0000027643,0.0000027658,0.0000027666, -0.0000027678,0.0000027698,0.0000027711,0.0000027698,0.0000027659, -0.0000027647,0.0000027673,0.0000027728,0.0000027813,0.0000027879, -0.0000027843,0.0000027775,0.0000027760,0.0000027774,0.0000027796, -0.0000027818,0.0000027842,0.0000027884,0.0000027933,0.0000027951, -0.0000027939,0.0000027923,0.0000027935,0.0000027945,0.0000027900, -0.0000027721,0.0000027553,0.0000027557,0.0000027782,0.0000028021, -0.0000028041,0.0000027958,0.0000027948,0.0000027987,0.0000028008, -0.0000028031,0.0000028072,0.0000028095,0.0000028065,0.0000027981, -0.0000027843,0.0000027704,0.0000027627,0.0000027622,0.0000027666, -0.0000027720,0.0000027765,0.0000027798,0.0000027816,0.0000027807, -0.0000027789,0.0000027778,0.0000027774,0.0000027790,0.0000027816, -0.0000027833,0.0000027849,0.0000027856,0.0000027876,0.0000027907, -0.0000027943,0.0000028008,0.0000028074,0.0000028122,0.0000028148, -0.0000028164,0.0000028180,0.0000028173,0.0000028114,0.0000028010, -0.0000027891,0.0000027809,0.0000027784,0.0000027807,0.0000027854, -0.0000027880,0.0000027884,0.0000027887,0.0000027920,0.0000027977, -0.0000027998,0.0000027983,0.0000027976,0.0000028013,0.0000028096, -0.0000028173,0.0000028216,0.0000028307,0.0000028434,0.0000028486, -0.0000028428,0.0000028340,0.0000028325,0.0000028350,0.0000028357, -0.0000028336,0.0000028262,0.0000028226,0.0000028267,0.0000028334, -0.0000028482,0.0000028551,0.0000028585,0.0000028632,0.0000028756, -0.0000028793,0.0000028690,0.0000028446,0.0000028331,0.0000028371, -0.0000028418,0.0000028403,0.0000028337,0.0000028268,0.0000028354, -0.0000028531,0.0000028645,0.0000028707,0.0000028720,0.0000028735, -0.0000028672,0.0000028667,0.0000028644,0.0000028588,0.0000028539, -0.0000028470,0.0000028401,0.0000028371,0.0000028384,0.0000028403, -0.0000028383,0.0000028343,0.0000028383,0.0000028373,0.0000028347, -0.0000028432,0.0000028613,0.0000028712,0.0000028707,0.0000028669, -0.0000028657,0.0000028670,0.0000028707,0.0000028753,0.0000028798, -0.0000028887,0.0000028890,0.0000028813,0.0000028689,0.0000028515, -0.0000028385,0.0000028276,0.0000028210,0.0000028194,0.0000028197, -0.0000028204,0.0000028222,0.0000028250,0.0000028255,0.0000028223, -0.0000028170,0.0000028112,0.0000028044,0.0000027941,0.0000027833, -0.0000027779,0.0000027785,0.0000027821,0.0000027821,0.0000027774, -0.0000027686,0.0000027606,0.0000027511,0.0000027422,0.0000027370, -0.0000027374,0.0000027422,0.0000027479,0.0000027522,0.0000027522, -0.0000027471,0.0000027400,0.0000027360,0.0000027363,0.0000027395, -0.0000027425,0.0000027438,0.0000027460,0.0000027434,0.0000027370, -0.0000027325,0.0000027295,0.0000027261,0.0000027237,0.0000027206, -0.0000027165,0.0000027117,0.0000027055,0.0000026974,0.0000026882, -0.0000026805,0.0000026763,0.0000026742,0.0000026735,0.0000026738, -0.0000026761,0.0000026791,0.0000026805,0.0000026805,0.0000026799, -0.0000026797,0.0000026813,0.0000026868,0.0000026969,0.0000027084, -0.0000027172,0.0000027225,0.0000027233,0.0000027216,0.0000027210, -0.0000027235,0.0000027324,0.0000027461,0.0000027619,0.0000027791, -0.0000027946,0.0000028034,0.0000028067,0.0000028076,0.0000028076, -0.0000028067,0.0000028054,0.0000028085,0.0000028199,0.0000028301, -0.0000028318,0.0000028253,0.0000028175,0.0000028163,0.0000028199, -0.0000028205,0.0000028149,0.0000028078,0.0000028053,0.0000028048, -0.0000028091,0.0000028153,0.0000028175,0.0000028179,0.0000028191, -0.0000028200,0.0000028136,0.0000027952,0.0000027724,0.0000027804, -0.0000027952,0.0000028132,0.0000028416,0.0000028432,0.0000028454, -0.0000028501,0.0000028534,0.0000028551,0.0000028593,0.0000028689, -0.0000028700,0.0000028579,0.0000028433,0.0000028280,0.0000028056, -0.0000027980,0.0000028012,0.0000028029,0.0000028037,0.0000028037, -0.0000028026,0.0000027970,0.0000027726,0.0000027660,0.0000027666, -0.0000027665,0.0000027704,0.0000027744,0.0000027728,0.0000027645, -0.0000027564,0.0000027512,0.0000027481,0.0000027461,0.0000027444, -0.0000027473,0.0000027518,0.0000027558,0.0000027582,0.0000027616, -0.0000027647,0.0000027652,0.0000027635,0.0000027605,0.0000027604, -0.0000027622,0.0000027629,0.0000027615,0.0000027605,0.0000027613, -0.0000027641,0.0000027694,0.0000027751,0.0000027802,0.0000027860, -0.0000027883,0.0000027876,0.0000027863,0.0000027836,0.0000027804, -0.0000027793,0.0000027778,0.0000027769,0.0000027761,0.0000027747, -0.0000027755,0.0000027755,0.0000027760,0.0000027756,0.0000027793, -0.0000027841,0.0000027900,0.0000027960,0.0000028012,0.0000028063, -0.0000028110,0.0000028149,0.0000028164,0.0000028144,0.0000028077, -0.0000028010,0.0000027934,0.0000027879,0.0000027877,0.0000027902, -0.0000027955,0.0000028016,0.0000028075,0.0000028135,0.0000028206, -0.0000028295,0.0000028329,0.0000028327,0.0000028304,0.0000028280, -0.0000028231,0.0000028168,0.0000028100,0.0000028059,0.0000028058, -0.0000028094,0.0000028143,0.0000028165,0.0000028153,0.0000028112, -0.0000028055,0.0000027993,0.0000027932,0.0000027886,0.0000027865, -0.0000027867,0.0000027891,0.0000027927,0.0000027989,0.0000028040, -0.0000028076,0.0000028115,0.0000028184,0.0000028278,0.0000028381, -0.0000028480,0.0000028551,0.0000028590,0.0000028606,0.0000028635, -0.0000028670,0.0000028702,0.0000028725,0.0000028727,0.0000028693, -0.0000028662,0.0000028603,0.0000028521,0.0000028434,0.0000028357, -0.0000028304,0.0000028290,0.0000028305,0.0000028312,0.0000028293, -0.0000028276,0.0000028291,0.0000028332,0.0000028375,0.0000028403, -0.0000028407,0.0000028385,0.0000028338,0.0000028297,0.0000028278, -0.0000028272,0.0000028269,0.0000028269,0.0000028275,0.0000028295, -0.0000028345,0.0000028414,0.0000028478,0.0000028517,0.0000028537, -0.0000028554,0.0000028571,0.0000028575,0.0000028543,0.0000028478, -0.0000028418,0.0000028399,0.0000028417,0.0000028448,0.0000028503, -0.0000028522,0.0000028365,0.0000028096,0.0000028012,0.0000028043, -0.0000028070,0.0000028150,0.0000028323,0.0000028469,0.0000028493, -0.0000028437,0.0000028342,0.0000028207,0.0000028081,0.0000028040, -0.0000028059,0.0000028107,0.0000028148,0.0000028171,0.0000028177, -0.0000028170,0.0000028165,0.0000028180,0.0000028233,0.0000028298, -0.0000028338,0.0000028339,0.0000028331,0.0000028331,0.0000028350, -0.0000028385,0.0000028430,0.0000028475,0.0000028516,0.0000028558, -0.0000028609,0.0000028687,0.0000028794,0.0000028903,0.0000028971, -0.0000028976,0.0000028946,0.0000028932,0.0000028955,0.0000028997, -0.0000029020,0.0000029030,0.0000029059,0.0000029107,0.0000029125, -0.0000029106,0.0000029031,0.0000028916,0.0000028801,0.0000028735, -0.0000028729,0.0000028780,0.0000028856,0.0000028887,0.0000028857, -0.0000028742,0.0000028589,0.0000028469,0.0000028421,0.0000028420, -0.0000028418,0.0000028402,0.0000028397,0.0000028407,0.0000028409, -0.0000028411,0.0000028432,0.0000028469,0.0000028512,0.0000028522, -0.0000028516,0.0000028529,0.0000028568,0.0000028609,0.0000028641, -0.0000028666,0.0000028670,0.0000028659,0.0000028655,0.0000028683, -0.0000028732,0.0000028776,0.0000028811,0.0000028839,0.0000028876, -0.0000028915,0.0000028922,0.0000028903,0.0000028855,0.0000028786, -0.0000028737,0.0000028728,0.0000028750,0.0000028761,0.0000028746, -0.0000028696,0.0000028607,0.0000028473,0.0000028330,0.0000028227, -0.0000028178,0.0000028197,0.0000028336,0.0000028535,0.0000028598, -0.0000028573,0.0000028575,0.0000028661,0.0000028717,0.0000028675, -0.0000028579,0.0000028530,0.0000028510,0.0000028488,0.0000028482, -0.0000028484,0.0000028483,0.0000028477,0.0000028455,0.0000028402, -0.0000028305,0.0000028171,0.0000028050,0.0000027999,0.0000028032, -0.0000028118,0.0000028219,0.0000028329,0.0000028450,0.0000028564, -0.0000028642,0.0000028689,0.0000028675,0.0000028629,0.0000028591, -0.0000028578,0.0000028568,0.0000028539,0.0000028483,0.0000028416, -0.0000028346,0.0000028279,0.0000028216,0.0000028147,0.0000028061, -0.0000027999,0.0000028001,0.0000028044,0.0000028088,0.0000028118, -0.0000028125,0.0000028148,0.0000028175,0.0000028166,0.0000028143, -0.0000028157,0.0000028207,0.0000028240,0.0000028204,0.0000028097, -0.0000027973,0.0000027888,0.0000027860,0.0000027886,0.0000027937, -0.0000027971,0.0000027990,0.0000027987,0.0000027958,0.0000027929, -0.0000027907,0.0000027916,0.0000027941,0.0000027970,0.0000027979, -0.0000027963,0.0000027951,0.0000027968,0.0000028019,0.0000028084, -0.0000028148,0.0000028188,0.0000028186,0.0000028150,0.0000028128, -0.0000028132,0.0000028079,0.0000027925,0.0000027941,0.0000028306, -0.0000028552,0.0000028549,0.0000028592,0.0000028741,0.0000028927, -0.0000029104,0.0000029213,0.0000029253,0.0000029245,0.0000029191, -0.0000029131,0.0000029088,0.0000029052,0.0000029036,0.0000029026, -0.0000029017,0.0000028976,0.0000028909,0.0000028849,0.0000028842, -0.0000028888,0.0000028957,0.0000028982,0.0000028949,0.0000028875, -0.0000028769,0.0000028708,0.0000028661,0.0000028600,0.0000028475, -0.0000028357,0.0000028375,0.0000028540,0.0000028568,0.0000028385, -0.0000028188,0.0000028155,0.0000028261,0.0000028422,0.0000028531, -0.0000028564,0.0000028548,0.0000028524,0.0000028515,0.0000028508, -0.0000028502,0.0000028509,0.0000028519,0.0000028522,0.0000028513, -0.0000028510,0.0000028511,0.0000028518,0.0000028515,0.0000028500, -0.0000028477,0.0000028456,0.0000028433,0.0000028399,0.0000028353, -0.0000028304,0.0000028242,0.0000028163,0.0000028057,0.0000027941, -0.0000027834,0.0000027743,0.0000027682,0.0000027640,0.0000027612, -0.0000027600,0.0000027621,0.0000027648,0.0000027659,0.0000027654, -0.0000027645,0.0000027661,0.0000027719,0.0000027774,0.0000027842, -0.0000027909,0.0000027905,0.0000027845,0.0000027813,0.0000027817, -0.0000027833,0.0000027869,0.0000027922,0.0000027978,0.0000028016, -0.0000028027,0.0000028017,0.0000027991,0.0000027964,0.0000027947, -0.0000027913,0.0000027772,0.0000027588,0.0000027545,0.0000027668, -0.0000027913,0.0000028028,0.0000028004,0.0000027975,0.0000027994, -0.0000028002,0.0000027999,0.0000028009,0.0000028024,0.0000028012, -0.0000027942,0.0000027818,0.0000027677,0.0000027594,0.0000027616, -0.0000027696,0.0000027750,0.0000027772,0.0000027800,0.0000027843, -0.0000027871,0.0000027877,0.0000027872,0.0000027853,0.0000027821, -0.0000027807,0.0000027812,0.0000027840,0.0000027865,0.0000027901, -0.0000027934,0.0000027965,0.0000028032,0.0000028111,0.0000028181, -0.0000028235,0.0000028271,0.0000028295,0.0000028292,0.0000028236, -0.0000028133,0.0000028012,0.0000027917,0.0000027874,0.0000027875, -0.0000027896,0.0000027911,0.0000027922,0.0000027934,0.0000027968, -0.0000028009,0.0000028017,0.0000028003,0.0000028007,0.0000028060, -0.0000028154,0.0000028234,0.0000028301,0.0000028402,0.0000028494, -0.0000028511,0.0000028431,0.0000028354,0.0000028367,0.0000028406, -0.0000028439,0.0000028416,0.0000028331,0.0000028303,0.0000028326, -0.0000028406,0.0000028545,0.0000028596,0.0000028644,0.0000028729, -0.0000028797,0.0000028739,0.0000028517,0.0000028288,0.0000028283, -0.0000028363,0.0000028420,0.0000028414,0.0000028334,0.0000028284, -0.0000028406,0.0000028570,0.0000028671,0.0000028754,0.0000028747, -0.0000028727,0.0000028654,0.0000028669,0.0000028654,0.0000028606, -0.0000028589,0.0000028561,0.0000028471,0.0000028385,0.0000028363, -0.0000028360,0.0000028362,0.0000028328,0.0000028360,0.0000028407, -0.0000028387,0.0000028398,0.0000028525,0.0000028687,0.0000028721, -0.0000028701,0.0000028681,0.0000028684,0.0000028680,0.0000028676, -0.0000028703,0.0000028743,0.0000028805,0.0000028794,0.0000028717, -0.0000028562,0.0000028373,0.0000028226,0.0000028138,0.0000028104, -0.0000028087,0.0000028073,0.0000028064,0.0000028071,0.0000028073, -0.0000028043,0.0000027996,0.0000027941,0.0000027883,0.0000027782, -0.0000027658,0.0000027586,0.0000027581,0.0000027619,0.0000027656, -0.0000027643,0.0000027574,0.0000027524,0.0000027459,0.0000027378, -0.0000027320,0.0000027326,0.0000027380,0.0000027447,0.0000027486, -0.0000027474,0.0000027419,0.0000027364,0.0000027351,0.0000027366, -0.0000027397,0.0000027431,0.0000027450,0.0000027484,0.0000027501, -0.0000027476,0.0000027441,0.0000027410,0.0000027379,0.0000027343, -0.0000027315,0.0000027270,0.0000027214,0.0000027148,0.0000027065, -0.0000026968,0.0000026863,0.0000026790,0.0000026749,0.0000026723, -0.0000026712,0.0000026721,0.0000026750,0.0000026784,0.0000026799, -0.0000026788,0.0000026777,0.0000026778,0.0000026806,0.0000026875, -0.0000026980,0.0000027092,0.0000027185,0.0000027244,0.0000027263, -0.0000027251,0.0000027245,0.0000027252,0.0000027297,0.0000027390, -0.0000027520,0.0000027686,0.0000027864,0.0000027995,0.0000028048, -0.0000028051,0.0000028042,0.0000028031,0.0000028019,0.0000028035, -0.0000028143,0.0000028275,0.0000028320,0.0000028275,0.0000028179, -0.0000028134,0.0000028173,0.0000028228,0.0000028205,0.0000028121, -0.0000028038,0.0000027980,0.0000028024,0.0000028134,0.0000028202, -0.0000028212,0.0000028195,0.0000028195,0.0000028123,0.0000027904, -0.0000027713,0.0000027862,0.0000027983,0.0000028260,0.0000028427, -0.0000028418,0.0000028497,0.0000028534,0.0000028543,0.0000028554, -0.0000028607,0.0000028709,0.0000028712,0.0000028573,0.0000028420, -0.0000028257,0.0000028026,0.0000027973,0.0000027993,0.0000028017, -0.0000028017,0.0000028004,0.0000027986,0.0000027912,0.0000027690, -0.0000027647,0.0000027653,0.0000027669,0.0000027726,0.0000027769, -0.0000027740,0.0000027648,0.0000027566,0.0000027514,0.0000027478, -0.0000027451,0.0000027434,0.0000027451,0.0000027489,0.0000027518, -0.0000027550,0.0000027593,0.0000027622,0.0000027616,0.0000027597, -0.0000027595,0.0000027618,0.0000027666,0.0000027698,0.0000027697, -0.0000027677,0.0000027657,0.0000027638,0.0000027634,0.0000027653, -0.0000027690,0.0000027756,0.0000027809,0.0000027848,0.0000027858, -0.0000027846,0.0000027815,0.0000027801,0.0000027788,0.0000027768, -0.0000027749,0.0000027728,0.0000027744,0.0000027750,0.0000027776, -0.0000027797,0.0000027840,0.0000027885,0.0000027931,0.0000027980, -0.0000028024,0.0000028065,0.0000028104,0.0000028142,0.0000028140, -0.0000028106,0.0000028028,0.0000027950,0.0000027854,0.0000027790, -0.0000027809,0.0000027862,0.0000027924,0.0000027972,0.0000028014, -0.0000028058,0.0000028111,0.0000028187,0.0000028241,0.0000028249, -0.0000028231,0.0000028226,0.0000028192,0.0000028141,0.0000028077, -0.0000028014,0.0000027980,0.0000027997,0.0000028065,0.0000028119, -0.0000028135,0.0000028109,0.0000028050,0.0000027986,0.0000027940, -0.0000027906,0.0000027888,0.0000027910,0.0000027973,0.0000028058, -0.0000028136,0.0000028199,0.0000028229,0.0000028263,0.0000028327, -0.0000028402,0.0000028473,0.0000028547,0.0000028596,0.0000028629, -0.0000028676,0.0000028737,0.0000028787,0.0000028799,0.0000028787, -0.0000028761,0.0000028707,0.0000028622,0.0000028514,0.0000028408, -0.0000028321,0.0000028261,0.0000028228,0.0000028237,0.0000028263, -0.0000028287,0.0000028278,0.0000028252,0.0000028243,0.0000028259, -0.0000028282,0.0000028297,0.0000028298,0.0000028277,0.0000028229, -0.0000028170,0.0000028122,0.0000028103,0.0000028113,0.0000028152, -0.0000028205,0.0000028262,0.0000028328,0.0000028406,0.0000028481, -0.0000028538,0.0000028576,0.0000028596,0.0000028617,0.0000028633, -0.0000028621,0.0000028559,0.0000028476,0.0000028414,0.0000028400, -0.0000028416,0.0000028459,0.0000028537,0.0000028531,0.0000028306, -0.0000028062,0.0000028026,0.0000028060,0.0000028076,0.0000028149, -0.0000028314,0.0000028453,0.0000028479,0.0000028434,0.0000028354, -0.0000028221,0.0000028073,0.0000027999,0.0000027995,0.0000028026, -0.0000028080,0.0000028133,0.0000028172,0.0000028189,0.0000028194, -0.0000028211,0.0000028254,0.0000028307,0.0000028344,0.0000028359, -0.0000028362,0.0000028370,0.0000028388,0.0000028421,0.0000028470, -0.0000028519,0.0000028565,0.0000028620,0.0000028688,0.0000028771, -0.0000028867,0.0000028953,0.0000028995,0.0000028983,0.0000028944, -0.0000028930,0.0000028961,0.0000029015,0.0000029056,0.0000029085, -0.0000029122,0.0000029166,0.0000029182,0.0000029153,0.0000029081, -0.0000028971,0.0000028854,0.0000028775,0.0000028756,0.0000028793, -0.0000028847,0.0000028867,0.0000028835,0.0000028732,0.0000028580, -0.0000028450,0.0000028397,0.0000028404,0.0000028420,0.0000028430, -0.0000028446,0.0000028470,0.0000028476,0.0000028473,0.0000028483, -0.0000028513,0.0000028554,0.0000028570,0.0000028567,0.0000028578, -0.0000028622,0.0000028675,0.0000028718,0.0000028751,0.0000028759, -0.0000028744,0.0000028734,0.0000028749,0.0000028797,0.0000028842, -0.0000028872,0.0000028879,0.0000028884,0.0000028907,0.0000028925, -0.0000028920,0.0000028885,0.0000028824,0.0000028774,0.0000028773, -0.0000028805,0.0000028819,0.0000028788,0.0000028719,0.0000028609, -0.0000028459,0.0000028308,0.0000028217,0.0000028188,0.0000028195, -0.0000028297,0.0000028484,0.0000028598,0.0000028600,0.0000028590, -0.0000028653,0.0000028740,0.0000028748,0.0000028696,0.0000028619, -0.0000028576,0.0000028544,0.0000028503,0.0000028482,0.0000028489, -0.0000028495,0.0000028483,0.0000028450,0.0000028388,0.0000028274, -0.0000028132,0.0000028008,0.0000027946,0.0000027962,0.0000028033, -0.0000028135,0.0000028256,0.0000028396,0.0000028528,0.0000028631, -0.0000028696,0.0000028699,0.0000028674,0.0000028653,0.0000028653, -0.0000028651,0.0000028649,0.0000028620,0.0000028554,0.0000028473, -0.0000028399,0.0000028352,0.0000028303,0.0000028204,0.0000028085, -0.0000028025,0.0000028047,0.0000028096,0.0000028131,0.0000028136, -0.0000028162,0.0000028201,0.0000028210,0.0000028190,0.0000028163, -0.0000028150,0.0000028161,0.0000028158,0.0000028112,0.0000028015, -0.0000027897,0.0000027830,0.0000027837,0.0000027893,0.0000027951, -0.0000027994,0.0000028025,0.0000028034,0.0000028026,0.0000028010, -0.0000028008,0.0000028014,0.0000028015,0.0000028000,0.0000027971, -0.0000027947,0.0000027963,0.0000028020,0.0000028099,0.0000028168, -0.0000028200,0.0000028191,0.0000028150,0.0000028126,0.0000028134, -0.0000028091,0.0000027932,0.0000027945,0.0000028306,0.0000028546, -0.0000028558,0.0000028609,0.0000028772,0.0000028989,0.0000029154, -0.0000029205,0.0000029200,0.0000029177,0.0000029120,0.0000029051, -0.0000029002,0.0000028981,0.0000028996,0.0000029020,0.0000029026, -0.0000029016,0.0000028980,0.0000028947,0.0000028959,0.0000028994, -0.0000029015,0.0000028991,0.0000028932,0.0000028840,0.0000028759, -0.0000028719,0.0000028646,0.0000028516,0.0000028379,0.0000028381, -0.0000028554,0.0000028609,0.0000028397,0.0000028132,0.0000028117, -0.0000028310,0.0000028528,0.0000028631,0.0000028628,0.0000028589, -0.0000028544,0.0000028507,0.0000028489,0.0000028476,0.0000028469, -0.0000028472,0.0000028473,0.0000028468,0.0000028450,0.0000028439, -0.0000028453,0.0000028471,0.0000028488,0.0000028494,0.0000028492, -0.0000028486,0.0000028471,0.0000028434,0.0000028378,0.0000028317, -0.0000028260,0.0000028199,0.0000028136,0.0000028086,0.0000028045, -0.0000027982,0.0000027894,0.0000027796,0.0000027696,0.0000027622, -0.0000027600,0.0000027620,0.0000027632,0.0000027629,0.0000027631, -0.0000027642,0.0000027671,0.0000027742,0.0000027817,0.0000027875, -0.0000027926,0.0000027950,0.0000027914,0.0000027867,0.0000027848, -0.0000027858,0.0000027920,0.0000028013,0.0000028081,0.0000028103, -0.0000028104,0.0000028097,0.0000028071,0.0000028023,0.0000027965, -0.0000027917,0.0000027820,0.0000027653,0.0000027551,0.0000027580, -0.0000027783,0.0000027993,0.0000028049,0.0000028028,0.0000028006, -0.0000027995,0.0000027986,0.0000027979,0.0000027967,0.0000027936, -0.0000027870,0.0000027764,0.0000027636,0.0000027563,0.0000027604, -0.0000027712,0.0000027789,0.0000027809,0.0000027819,0.0000027858, -0.0000027915,0.0000027962,0.0000027985,0.0000027973,0.0000027918, -0.0000027851,0.0000027813,0.0000027815,0.0000027838,0.0000027879, -0.0000027914,0.0000027951,0.0000028022,0.0000028108,0.0000028194, -0.0000028262,0.0000028304,0.0000028312,0.0000028301,0.0000028249, -0.0000028168,0.0000028072,0.0000027985,0.0000027926,0.0000027907, -0.0000027905,0.0000027915,0.0000027930,0.0000027948,0.0000027988, -0.0000028032,0.0000028044,0.0000028042,0.0000028055,0.0000028123, -0.0000028221,0.0000028294,0.0000028370,0.0000028469,0.0000028541, -0.0000028537,0.0000028428,0.0000028372,0.0000028398,0.0000028468, -0.0000028521,0.0000028482,0.0000028394,0.0000028375,0.0000028379, -0.0000028492,0.0000028606,0.0000028661,0.0000028723,0.0000028815, -0.0000028784,0.0000028650,0.0000028345,0.0000028223,0.0000028267, -0.0000028367,0.0000028423,0.0000028424,0.0000028339,0.0000028321, -0.0000028462,0.0000028609,0.0000028689,0.0000028750,0.0000028711, -0.0000028682,0.0000028648,0.0000028694,0.0000028683,0.0000028623, -0.0000028583,0.0000028565,0.0000028534,0.0000028464,0.0000028376, -0.0000028322,0.0000028315,0.0000028312,0.0000028340,0.0000028408, -0.0000028430,0.0000028411,0.0000028446,0.0000028569,0.0000028669, -0.0000028699,0.0000028683,0.0000028675,0.0000028659,0.0000028619, -0.0000028597,0.0000028598,0.0000028633,0.0000028697,0.0000028682, -0.0000028578,0.0000028407,0.0000028216,0.0000028067,0.0000027990, -0.0000027946,0.0000027905,0.0000027887,0.0000027894,0.0000027887, -0.0000027841,0.0000027782,0.0000027751,0.0000027701,0.0000027637, -0.0000027532,0.0000027429,0.0000027407,0.0000027445,0.0000027518, -0.0000027531,0.0000027507,0.0000027469,0.0000027450,0.0000027398, -0.0000027351,0.0000027352,0.0000027385,0.0000027420,0.0000027425, -0.0000027396,0.0000027342,0.0000027318,0.0000027330,0.0000027365, -0.0000027394,0.0000027418,0.0000027438,0.0000027459,0.0000027502, -0.0000027512,0.0000027502,0.0000027491,0.0000027470,0.0000027443, -0.0000027422,0.0000027397,0.0000027352,0.0000027290,0.0000027212, -0.0000027104,0.0000026978,0.0000026865,0.0000026794,0.0000026748, -0.0000026709,0.0000026686,0.0000026677,0.0000026700,0.0000026733, -0.0000026751,0.0000026753,0.0000026761,0.0000026786,0.0000026832, -0.0000026915,0.0000027018,0.0000027125,0.0000027213,0.0000027269, -0.0000027295,0.0000027307,0.0000027313,0.0000027303,0.0000027304, -0.0000027338,0.0000027426,0.0000027572,0.0000027753,0.0000027917, -0.0000028008,0.0000028021,0.0000028006,0.0000027988,0.0000027982, -0.0000027995,0.0000028100,0.0000028247,0.0000028308,0.0000028270, -0.0000028170,0.0000028106,0.0000028140,0.0000028225,0.0000028242, -0.0000028171,0.0000028051,0.0000027946,0.0000027960,0.0000028090, -0.0000028210,0.0000028234,0.0000028194,0.0000028189,0.0000028097, -0.0000027820,0.0000027736,0.0000027909,0.0000028041,0.0000028357, -0.0000028396,0.0000028429,0.0000028539,0.0000028550,0.0000028546, -0.0000028558,0.0000028622,0.0000028723,0.0000028719,0.0000028572, -0.0000028412,0.0000028234,0.0000028005,0.0000027972,0.0000027987, -0.0000028005,0.0000028001,0.0000027988,0.0000027962,0.0000027862, -0.0000027670,0.0000027636,0.0000027640,0.0000027672,0.0000027729, -0.0000027766,0.0000027738,0.0000027645,0.0000027562,0.0000027512, -0.0000027471,0.0000027441,0.0000027427,0.0000027443,0.0000027481, -0.0000027515,0.0000027552,0.0000027585,0.0000027591,0.0000027563, -0.0000027537,0.0000027552,0.0000027601,0.0000027676,0.0000027735, -0.0000027759,0.0000027751,0.0000027724,0.0000027674,0.0000027628, -0.0000027604,0.0000027602,0.0000027635,0.0000027684,0.0000027735, -0.0000027764,0.0000027786,0.0000027788,0.0000027802,0.0000027806, -0.0000027782,0.0000027753,0.0000027714,0.0000027706,0.0000027703, -0.0000027743,0.0000027786,0.0000027833,0.0000027875,0.0000027911, -0.0000027943,0.0000027972,0.0000028000,0.0000028036,0.0000028072, -0.0000028067,0.0000028044,0.0000027985,0.0000027897,0.0000027794, -0.0000027735,0.0000027751,0.0000027797,0.0000027862,0.0000027925, -0.0000027961,0.0000028003,0.0000028038,0.0000028089,0.0000028141, -0.0000028160,0.0000028154,0.0000028143,0.0000028130,0.0000028099, -0.0000028043,0.0000027990,0.0000027953,0.0000027955,0.0000028003, -0.0000028049,0.0000028069,0.0000028060,0.0000028032,0.0000027992, -0.0000027962,0.0000027951,0.0000027945,0.0000027973,0.0000028053, -0.0000028153,0.0000028232,0.0000028292,0.0000028335,0.0000028375, -0.0000028420,0.0000028466,0.0000028509,0.0000028568,0.0000028616, -0.0000028675,0.0000028749,0.0000028808,0.0000028833,0.0000028824, -0.0000028797,0.0000028744,0.0000028659,0.0000028544,0.0000028427, -0.0000028326,0.0000028254,0.0000028211,0.0000028215,0.0000028234, -0.0000028290,0.0000028340,0.0000028344,0.0000028312,0.0000028265, -0.0000028242,0.0000028233,0.0000028222,0.0000028208,0.0000028191, -0.0000028162,0.0000028119,0.0000028069,0.0000028027,0.0000028012, -0.0000028029,0.0000028083,0.0000028162,0.0000028248,0.0000028341, -0.0000028429,0.0000028498,0.0000028551,0.0000028588,0.0000028613, -0.0000028635,0.0000028642,0.0000028611,0.0000028537,0.0000028457, -0.0000028414,0.0000028406,0.0000028425,0.0000028496,0.0000028576, -0.0000028509,0.0000028233,0.0000028036,0.0000028043,0.0000028071, -0.0000028079,0.0000028148,0.0000028309,0.0000028450,0.0000028478, -0.0000028442,0.0000028362,0.0000028226,0.0000028062,0.0000027959, -0.0000027941,0.0000027976,0.0000028044,0.0000028117,0.0000028171, -0.0000028193,0.0000028192,0.0000028197,0.0000028226,0.0000028273, -0.0000028322,0.0000028358,0.0000028375,0.0000028384,0.0000028395, -0.0000028424,0.0000028471,0.0000028518,0.0000028577,0.0000028666, -0.0000028769,0.0000028861,0.0000028934,0.0000028981,0.0000028994, -0.0000028975,0.0000028941,0.0000028932,0.0000028964,0.0000029019, -0.0000029076,0.0000029129,0.0000029180,0.0000029220,0.0000029231, -0.0000029208,0.0000029144,0.0000029042,0.0000028918,0.0000028819, -0.0000028791,0.0000028817,0.0000028860,0.0000028872,0.0000028853, -0.0000028766,0.0000028626,0.0000028491,0.0000028422,0.0000028417, -0.0000028434,0.0000028459,0.0000028496,0.0000028533,0.0000028546, -0.0000028545,0.0000028554,0.0000028580,0.0000028616,0.0000028638, -0.0000028646,0.0000028657,0.0000028693,0.0000028740,0.0000028778, -0.0000028803,0.0000028802,0.0000028776,0.0000028753,0.0000028760, -0.0000028792,0.0000028839,0.0000028878,0.0000028891,0.0000028890, -0.0000028895,0.0000028905,0.0000028914,0.0000028901,0.0000028860, -0.0000028825,0.0000028825,0.0000028859,0.0000028867,0.0000028813, -0.0000028708,0.0000028573,0.0000028422,0.0000028290,0.0000028216, -0.0000028200,0.0000028203,0.0000028270,0.0000028432,0.0000028577, -0.0000028607,0.0000028603,0.0000028642,0.0000028737,0.0000028783, -0.0000028777,0.0000028726,0.0000028658,0.0000028615,0.0000028563, -0.0000028505,0.0000028490,0.0000028509,0.0000028511,0.0000028483, -0.0000028435,0.0000028358,0.0000028241,0.0000028111,0.0000027995, -0.0000027932,0.0000027930,0.0000027994,0.0000028099,0.0000028223, -0.0000028361,0.0000028490,0.0000028593,0.0000028655,0.0000028670, -0.0000028667,0.0000028662,0.0000028657,0.0000028657,0.0000028683, -0.0000028693,0.0000028658,0.0000028579,0.0000028487,0.0000028437, -0.0000028415,0.0000028338,0.0000028194,0.0000028083,0.0000028063, -0.0000028090,0.0000028112,0.0000028122,0.0000028164,0.0000028214, -0.0000028246,0.0000028236,0.0000028186,0.0000028123,0.0000028079, -0.0000028079,0.0000028093,0.0000028054,0.0000027947,0.0000027850, -0.0000027836,0.0000027872,0.0000027917,0.0000027964,0.0000028012, -0.0000028059,0.0000028095,0.0000028122,0.0000028145,0.0000028145, -0.0000028128,0.0000028090,0.0000028039,0.0000027998,0.0000028005, -0.0000028063,0.0000028139,0.0000028200,0.0000028220,0.0000028205, -0.0000028152,0.0000028123,0.0000028131,0.0000028090,0.0000027925, -0.0000027964,0.0000028320,0.0000028538,0.0000028572,0.0000028636, -0.0000028825,0.0000029048,0.0000029166,0.0000029169,0.0000029131, -0.0000029102,0.0000029052,0.0000028982,0.0000028941,0.0000028942, -0.0000028984,0.0000029024,0.0000029047,0.0000029065,0.0000029056, -0.0000029037,0.0000029046,0.0000029044,0.0000029017,0.0000028963, -0.0000028885,0.0000028805,0.0000028742,0.0000028702,0.0000028599, -0.0000028428,0.0000028383,0.0000028554,0.0000028636,0.0000028454, -0.0000028156,0.0000028108,0.0000028317,0.0000028583,0.0000028677, -0.0000028653,0.0000028588,0.0000028524,0.0000028484,0.0000028459, -0.0000028446,0.0000028450,0.0000028466,0.0000028490,0.0000028494, -0.0000028475,0.0000028441,0.0000028421,0.0000028422,0.0000028424, -0.0000028434,0.0000028437,0.0000028437,0.0000028443,0.0000028443, -0.0000028430,0.0000028400,0.0000028359,0.0000028313,0.0000028254, -0.0000028179,0.0000028111,0.0000028076,0.0000028068,0.0000028051, -0.0000027991,0.0000027885,0.0000027766,0.0000027683,0.0000027659, -0.0000027660,0.0000027641,0.0000027623,0.0000027628,0.0000027650, -0.0000027676,0.0000027746,0.0000027840,0.0000027901,0.0000027943, -0.0000027968,0.0000027960,0.0000027918,0.0000027879,0.0000027890, -0.0000027989,0.0000028118,0.0000028184,0.0000028190,0.0000028182, -0.0000028167,0.0000028135,0.0000028076,0.0000027994,0.0000027932, -0.0000027872,0.0000027734,0.0000027579,0.0000027552,0.0000027665, -0.0000027887,0.0000028041,0.0000028089,0.0000028056,0.0000028000, -0.0000027982,0.0000027979,0.0000027949,0.0000027881,0.0000027786, -0.0000027688,0.0000027593,0.0000027549,0.0000027592,0.0000027706, -0.0000027807,0.0000027852,0.0000027860,0.0000027878,0.0000027934, -0.0000028014,0.0000028079,0.0000028092,0.0000028060,0.0000027979, -0.0000027896,0.0000027845,0.0000027835,0.0000027849,0.0000027883, -0.0000027933,0.0000028008,0.0000028094,0.0000028180,0.0000028246, -0.0000028271,0.0000028268,0.0000028242,0.0000028194,0.0000028134, -0.0000028065,0.0000027999,0.0000027937,0.0000027900,0.0000027890, -0.0000027899,0.0000027918,0.0000027951,0.0000028011,0.0000028063, -0.0000028076,0.0000028068,0.0000028084,0.0000028167,0.0000028267, -0.0000028336,0.0000028413,0.0000028506,0.0000028570,0.0000028540, -0.0000028433,0.0000028398,0.0000028430,0.0000028525,0.0000028586, -0.0000028520,0.0000028443,0.0000028431,0.0000028438,0.0000028579, -0.0000028670,0.0000028732,0.0000028808,0.0000028856,0.0000028736, -0.0000028534,0.0000028253,0.0000028208,0.0000028254,0.0000028365, -0.0000028423,0.0000028425,0.0000028365,0.0000028367,0.0000028497, -0.0000028624,0.0000028680,0.0000028703,0.0000028651,0.0000028636, -0.0000028654,0.0000028711,0.0000028702,0.0000028638,0.0000028586, -0.0000028545,0.0000028510,0.0000028484,0.0000028438,0.0000028348, -0.0000028296,0.0000028288,0.0000028318,0.0000028392,0.0000028438, -0.0000028431,0.0000028408,0.0000028441,0.0000028516,0.0000028602, -0.0000028637,0.0000028636,0.0000028611,0.0000028573,0.0000028514, -0.0000028476,0.0000028480,0.0000028519,0.0000028567,0.0000028540, -0.0000028424,0.0000028276,0.0000028090,0.0000027918,0.0000027814, -0.0000027758,0.0000027732,0.0000027737,0.0000027733,0.0000027687, -0.0000027623,0.0000027602,0.0000027593,0.0000027559,0.0000027484, -0.0000027359,0.0000027317,0.0000027359,0.0000027457,0.0000027509, -0.0000027514,0.0000027485,0.0000027491,0.0000027464,0.0000027424, -0.0000027410,0.0000027395,0.0000027372,0.0000027340,0.0000027320, -0.0000027303,0.0000027313,0.0000027341,0.0000027386,0.0000027425, -0.0000027437,0.0000027432,0.0000027437,0.0000027459,0.0000027483, -0.0000027477,0.0000027463,0.0000027446,0.0000027420,0.0000027402, -0.0000027390,0.0000027375,0.0000027350,0.0000027304,0.0000027232, -0.0000027133,0.0000027006,0.0000026905,0.0000026841,0.0000026793, -0.0000026750,0.0000026709,0.0000026680,0.0000026682,0.0000026685, -0.0000026692,0.0000026708,0.0000026746,0.0000026797,0.0000026868, -0.0000026960,0.0000027060,0.0000027163,0.0000027243,0.0000027290, -0.0000027320,0.0000027357,0.0000027371,0.0000027360,0.0000027335, -0.0000027325,0.0000027361,0.0000027473,0.0000027631,0.0000027816, -0.0000027953,0.0000027991,0.0000027977,0.0000027955,0.0000027950, -0.0000027972,0.0000028085,0.0000028244,0.0000028308,0.0000028256, -0.0000028142,0.0000028080,0.0000028113,0.0000028205,0.0000028238, -0.0000028186,0.0000028059,0.0000027940,0.0000027934,0.0000028064, -0.0000028211,0.0000028239,0.0000028186,0.0000028179,0.0000028031, -0.0000027737,0.0000027781,0.0000027950,0.0000028145,0.0000028381, -0.0000028358,0.0000028471,0.0000028569,0.0000028556,0.0000028550, -0.0000028565,0.0000028638,0.0000028738,0.0000028726,0.0000028572, -0.0000028408,0.0000028212,0.0000027996,0.0000027980,0.0000027987, -0.0000027993,0.0000027990,0.0000027984,0.0000027951,0.0000027824, -0.0000027657,0.0000027628,0.0000027630,0.0000027666,0.0000027720, -0.0000027750,0.0000027724,0.0000027637,0.0000027553,0.0000027510, -0.0000027473,0.0000027448,0.0000027441,0.0000027467,0.0000027508, -0.0000027554,0.0000027589,0.0000027603,0.0000027590,0.0000027537, -0.0000027495,0.0000027501,0.0000027552,0.0000027638,0.0000027721, -0.0000027770,0.0000027779,0.0000027772,0.0000027722,0.0000027649, -0.0000027600,0.0000027561,0.0000027557,0.0000027582,0.0000027608, -0.0000027620,0.0000027648,0.0000027683,0.0000027738,0.0000027782, -0.0000027782,0.0000027761,0.0000027722,0.0000027704,0.0000027697, -0.0000027719,0.0000027761,0.0000027800,0.0000027830,0.0000027855, -0.0000027874,0.0000027891,0.0000027901,0.0000027927,0.0000027954, -0.0000027959,0.0000027944,0.0000027903,0.0000027826,0.0000027736, -0.0000027697,0.0000027713,0.0000027757,0.0000027815,0.0000027879, -0.0000027914,0.0000027938,0.0000027959,0.0000027989,0.0000028032, -0.0000028069,0.0000028081,0.0000028071,0.0000028057,0.0000028037, -0.0000028003,0.0000027980,0.0000027954,0.0000027960,0.0000027990, -0.0000028025,0.0000028036,0.0000028020,0.0000027993,0.0000027975, -0.0000027970,0.0000027980,0.0000027992,0.0000028024,0.0000028088, -0.0000028176,0.0000028262,0.0000028326,0.0000028384,0.0000028443, -0.0000028486,0.0000028516,0.0000028543,0.0000028582,0.0000028635, -0.0000028712,0.0000028798,0.0000028829,0.0000028833,0.0000028815, -0.0000028758,0.0000028676,0.0000028569,0.0000028455,0.0000028363, -0.0000028282,0.0000028209,0.0000028186,0.0000028201,0.0000028272, -0.0000028371,0.0000028439,0.0000028437,0.0000028377,0.0000028294, -0.0000028223,0.0000028169,0.0000028132,0.0000028113,0.0000028101, -0.0000028085,0.0000028062,0.0000028032,0.0000027998,0.0000027974, -0.0000027974,0.0000028009,0.0000028082,0.0000028174,0.0000028265, -0.0000028352,0.0000028424,0.0000028480,0.0000028531,0.0000028567, -0.0000028591,0.0000028605,0.0000028602,0.0000028562,0.0000028497, -0.0000028445,0.0000028427,0.0000028417,0.0000028452,0.0000028551, -0.0000028597,0.0000028460,0.0000028155,0.0000028024,0.0000028064, -0.0000028081,0.0000028080,0.0000028148,0.0000028304,0.0000028444, -0.0000028473,0.0000028437,0.0000028353,0.0000028211,0.0000028046, -0.0000027943,0.0000027925,0.0000027957,0.0000028030,0.0000028111, -0.0000028166,0.0000028179,0.0000028172,0.0000028164,0.0000028180, -0.0000028226,0.0000028291,0.0000028341,0.0000028367,0.0000028374, -0.0000028384,0.0000028412,0.0000028455,0.0000028508,0.0000028598, -0.0000028733,0.0000028865,0.0000028947,0.0000028980,0.0000028984, -0.0000028971,0.0000028953,0.0000028937,0.0000028937,0.0000028965, -0.0000029020,0.0000029088,0.0000029161,0.0000029223,0.0000029261, -0.0000029275,0.0000029267,0.0000029217,0.0000029122,0.0000028993, -0.0000028873,0.0000028820,0.0000028834,0.0000028871,0.0000028886, -0.0000028874,0.0000028805,0.0000028687,0.0000028564,0.0000028485, -0.0000028464,0.0000028469,0.0000028490,0.0000028530,0.0000028572, -0.0000028591,0.0000028596,0.0000028610,0.0000028633,0.0000028652, -0.0000028673,0.0000028693,0.0000028712,0.0000028744,0.0000028788, -0.0000028823,0.0000028835,0.0000028818,0.0000028781,0.0000028756, -0.0000028756,0.0000028777,0.0000028815,0.0000028863,0.0000028891, -0.0000028891,0.0000028877,0.0000028883,0.0000028909,0.0000028921, -0.0000028894,0.0000028872,0.0000028879,0.0000028890,0.0000028878, -0.0000028796,0.0000028653,0.0000028500,0.0000028369,0.0000028276, -0.0000028229,0.0000028216,0.0000028219,0.0000028260,0.0000028394, -0.0000028546,0.0000028602,0.0000028611,0.0000028641,0.0000028723, -0.0000028795,0.0000028811,0.0000028803,0.0000028749,0.0000028689, -0.0000028641,0.0000028565,0.0000028506,0.0000028510,0.0000028539, -0.0000028526,0.0000028477,0.0000028406,0.0000028316,0.0000028204, -0.0000028101,0.0000028004,0.0000027933,0.0000027934,0.0000028003, -0.0000028112,0.0000028234,0.0000028357,0.0000028471,0.0000028559, -0.0000028608,0.0000028629,0.0000028641,0.0000028640,0.0000028624, -0.0000028611,0.0000028638,0.0000028680,0.0000028687,0.0000028661, -0.0000028574,0.0000028506,0.0000028478,0.0000028421,0.0000028295, -0.0000028173,0.0000028110,0.0000028088,0.0000028069,0.0000028076, -0.0000028144,0.0000028218,0.0000028258,0.0000028258,0.0000028215, -0.0000028128,0.0000028038,0.0000027997,0.0000028032,0.0000028043, -0.0000027987,0.0000027917,0.0000027895,0.0000027900,0.0000027914, -0.0000027933,0.0000027968,0.0000028027,0.0000028097,0.0000028165, -0.0000028224,0.0000028248,0.0000028238,0.0000028202,0.0000028147, -0.0000028099,0.0000028099,0.0000028138,0.0000028196,0.0000028245, -0.0000028257,0.0000028230,0.0000028163,0.0000028125,0.0000028129, -0.0000028078,0.0000027904,0.0000027996,0.0000028338,0.0000028526, -0.0000028585,0.0000028680,0.0000028894,0.0000029081,0.0000029143, -0.0000029112,0.0000029066,0.0000029037,0.0000028992,0.0000028933, -0.0000028908,0.0000028924,0.0000028977,0.0000029024,0.0000029059, -0.0000029093,0.0000029097,0.0000029082,0.0000029073,0.0000029040, -0.0000028973,0.0000028907,0.0000028827,0.0000028760,0.0000028707, -0.0000028659,0.0000028539,0.0000028437,0.0000028548,0.0000028657, -0.0000028517,0.0000028231,0.0000028148,0.0000028322,0.0000028601, -0.0000028704,0.0000028663,0.0000028576,0.0000028503,0.0000028463, -0.0000028451,0.0000028451,0.0000028451,0.0000028487,0.0000028544, -0.0000028588,0.0000028591,0.0000028571,0.0000028545,0.0000028537, -0.0000028545,0.0000028543,0.0000028532,0.0000028510,0.0000028478, -0.0000028445,0.0000028408,0.0000028368,0.0000028333,0.0000028314, -0.0000028301,0.0000028277,0.0000028224,0.0000028154,0.0000028086, -0.0000028044,0.0000028037,0.0000028031,0.0000027979,0.0000027899, -0.0000027810,0.0000027758,0.0000027746,0.0000027729,0.0000027681, -0.0000027635,0.0000027636,0.0000027663,0.0000027684,0.0000027734, -0.0000027831,0.0000027914,0.0000027946,0.0000027968,0.0000027989, -0.0000027964,0.0000027923,0.0000027950,0.0000028090,0.0000028237, -0.0000028292,0.0000028290,0.0000028274,0.0000028241,0.0000028188, -0.0000028120,0.0000028032,0.0000027964,0.0000027925,0.0000027818, -0.0000027643,0.0000027554,0.0000027572,0.0000027737,0.0000027971, -0.0000028114,0.0000028133,0.0000028070,0.0000028009,0.0000027994, -0.0000027975,0.0000027891,0.0000027754,0.0000027649,0.0000027569, -0.0000027544,0.0000027588,0.0000027694,0.0000027810,0.0000027884, -0.0000027906,0.0000027912,0.0000027944,0.0000028022,0.0000028113, -0.0000028180,0.0000028184,0.0000028132,0.0000028044,0.0000027963, -0.0000027906,0.0000027885,0.0000027904,0.0000027960,0.0000028035, -0.0000028112,0.0000028181,0.0000028228,0.0000028242,0.0000028228, -0.0000028184,0.0000028131,0.0000028080,0.0000028035,0.0000027989, -0.0000027934,0.0000027895,0.0000027884,0.0000027898,0.0000027925, -0.0000027979,0.0000028052,0.0000028088,0.0000028080,0.0000028051, -0.0000028070,0.0000028178,0.0000028283,0.0000028348,0.0000028424, -0.0000028512,0.0000028574,0.0000028530,0.0000028439,0.0000028416, -0.0000028455,0.0000028566,0.0000028616,0.0000028541,0.0000028474, -0.0000028465,0.0000028500,0.0000028652,0.0000028728,0.0000028798, -0.0000028881,0.0000028860,0.0000028696,0.0000028429,0.0000028230, -0.0000028197,0.0000028234,0.0000028358,0.0000028429,0.0000028428, -0.0000028410,0.0000028413,0.0000028515,0.0000028624,0.0000028648, -0.0000028634,0.0000028592,0.0000028593,0.0000028637,0.0000028700, -0.0000028688,0.0000028625,0.0000028575,0.0000028541,0.0000028493, -0.0000028449,0.0000028423,0.0000028372,0.0000028333,0.0000028299, -0.0000028303,0.0000028358,0.0000028406,0.0000028420,0.0000028387, -0.0000028353,0.0000028363,0.0000028419,0.0000028510,0.0000028556, -0.0000028546,0.0000028511,0.0000028466,0.0000028407,0.0000028366, -0.0000028363,0.0000028387,0.0000028416,0.0000028381,0.0000028300, -0.0000028172,0.0000027969,0.0000027780,0.0000027682,0.0000027674, -0.0000027684,0.0000027671,0.0000027627,0.0000027567,0.0000027559, -0.0000027573,0.0000027570,0.0000027516,0.0000027393,0.0000027314, -0.0000027356,0.0000027459,0.0000027538,0.0000027571,0.0000027548, -0.0000027531,0.0000027499,0.0000027437,0.0000027380,0.0000027329, -0.0000027294,0.0000027290,0.0000027308,0.0000027337,0.0000027371, -0.0000027404,0.0000027434,0.0000027457,0.0000027457,0.0000027431, -0.0000027407,0.0000027391,0.0000027390,0.0000027368,0.0000027327, -0.0000027291,0.0000027256,0.0000027222,0.0000027212,0.0000027220, -0.0000027236,0.0000027243,0.0000027227,0.0000027181,0.0000027102, -0.0000027014,0.0000026950,0.0000026912,0.0000026876,0.0000026839, -0.0000026789,0.0000026742,0.0000026708,0.0000026682,0.0000026666, -0.0000026675,0.0000026717,0.0000026782,0.0000026878,0.0000026983, -0.0000027083,0.0000027170,0.0000027230,0.0000027277,0.0000027328, -0.0000027370,0.0000027393,0.0000027396,0.0000027376,0.0000027345, -0.0000027338,0.0000027393,0.0000027510,0.0000027696,0.0000027875, -0.0000027955,0.0000027950,0.0000027929,0.0000027928,0.0000027965, -0.0000028093,0.0000028262,0.0000028314,0.0000028235,0.0000028101, -0.0000028055,0.0000028096,0.0000028194,0.0000028225,0.0000028170, -0.0000028035,0.0000027937,0.0000027941,0.0000028076,0.0000028226, -0.0000028234,0.0000028178,0.0000028145,0.0000027917,0.0000027701, -0.0000027839,0.0000027990,0.0000028262,0.0000028352,0.0000028343, -0.0000028522,0.0000028586,0.0000028560,0.0000028558,0.0000028574, -0.0000028660,0.0000028754,0.0000028729,0.0000028567,0.0000028399, -0.0000028191,0.0000027992,0.0000027986,0.0000027985,0.0000027980, -0.0000027984,0.0000027986,0.0000027943,0.0000027796,0.0000027646, -0.0000027623,0.0000027625,0.0000027652,0.0000027701,0.0000027729, -0.0000027707,0.0000027622,0.0000027544,0.0000027516,0.0000027492, -0.0000027474,0.0000027468,0.0000027497,0.0000027540,0.0000027591, -0.0000027621,0.0000027615,0.0000027587,0.0000027527,0.0000027479, -0.0000027475,0.0000027511,0.0000027573,0.0000027660,0.0000027729, -0.0000027761,0.0000027768,0.0000027739,0.0000027670,0.0000027601, -0.0000027542,0.0000027517,0.0000027525,0.0000027528,0.0000027527, -0.0000027536,0.0000027560,0.0000027600,0.0000027650,0.0000027673, -0.0000027684,0.0000027682,0.0000027688,0.0000027702,0.0000027718, -0.0000027750,0.0000027784,0.0000027788,0.0000027794,0.0000027800, -0.0000027808,0.0000027813,0.0000027831,0.0000027847,0.0000027845, -0.0000027824,0.0000027785,0.0000027727,0.0000027677,0.0000027661, -0.0000027683,0.0000027721,0.0000027775,0.0000027844,0.0000027885, -0.0000027893,0.0000027888,0.0000027884,0.0000027895,0.0000027921, -0.0000027953,0.0000027974,0.0000027971,0.0000027968,0.0000027960, -0.0000027958,0.0000027956,0.0000027978,0.0000028006,0.0000028025, -0.0000028028,0.0000028004,0.0000027971,0.0000027961,0.0000027969, -0.0000027987,0.0000028002,0.0000028031,0.0000028088,0.0000028164, -0.0000028255,0.0000028342,0.0000028430,0.0000028498,0.0000028546, -0.0000028574,0.0000028587,0.0000028605,0.0000028653,0.0000028730, -0.0000028798,0.0000028826,0.0000028820,0.0000028794,0.0000028698, -0.0000028580,0.0000028469,0.0000028378,0.0000028313,0.0000028246, -0.0000028184,0.0000028172,0.0000028234,0.0000028348,0.0000028461, -0.0000028521,0.0000028492,0.0000028392,0.0000028270,0.0000028173, -0.0000028106,0.0000028062,0.0000028038,0.0000028030,0.0000028028, -0.0000028018,0.0000027996,0.0000027966,0.0000027934,0.0000027914, -0.0000027922,0.0000027982,0.0000028083,0.0000028188,0.0000028276, -0.0000028345,0.0000028396,0.0000028442,0.0000028484,0.0000028512, -0.0000028526,0.0000028536,0.0000028534,0.0000028506,0.0000028470, -0.0000028455,0.0000028442,0.0000028434,0.0000028503,0.0000028609, -0.0000028609,0.0000028375,0.0000028087,0.0000028031,0.0000028079, -0.0000028086,0.0000028086,0.0000028158,0.0000028311,0.0000028444, -0.0000028469,0.0000028426,0.0000028334,0.0000028194,0.0000028044, -0.0000027954,0.0000027935,0.0000027956,0.0000028028,0.0000028113, -0.0000028164,0.0000028170,0.0000028155,0.0000028139,0.0000028143, -0.0000028191,0.0000028252,0.0000028301,0.0000028327,0.0000028345, -0.0000028367,0.0000028400,0.0000028449,0.0000028533,0.0000028669, -0.0000028829,0.0000028948,0.0000028990,0.0000028985,0.0000028958, -0.0000028930,0.0000028924,0.0000028929,0.0000028934,0.0000028961, -0.0000029021,0.0000029102,0.0000029183,0.0000029248,0.0000029290, -0.0000029310,0.0000029309,0.0000029274,0.0000029193,0.0000029074, -0.0000028947,0.0000028872,0.0000028869,0.0000028896,0.0000028904, -0.0000028891,0.0000028828,0.0000028730,0.0000028627,0.0000028553, -0.0000028520,0.0000028515,0.0000028528,0.0000028560,0.0000028596, -0.0000028616,0.0000028628,0.0000028653,0.0000028683,0.0000028690, -0.0000028690,0.0000028703,0.0000028721,0.0000028751,0.0000028796, -0.0000028830,0.0000028836,0.0000028820,0.0000028782,0.0000028760, -0.0000028767,0.0000028785,0.0000028808,0.0000028850,0.0000028885, -0.0000028885,0.0000028870,0.0000028880,0.0000028915,0.0000028944, -0.0000028933,0.0000028912,0.0000028909,0.0000028903,0.0000028852, -0.0000028736,0.0000028572,0.0000028418,0.0000028320,0.0000028272, -0.0000028247,0.0000028235,0.0000028238,0.0000028266,0.0000028367, -0.0000028513,0.0000028598,0.0000028617,0.0000028645,0.0000028715, -0.0000028791,0.0000028826,0.0000028834,0.0000028817,0.0000028766, -0.0000028716,0.0000028650,0.0000028564,0.0000028528,0.0000028550, -0.0000028570,0.0000028538,0.0000028464,0.0000028368,0.0000028261, -0.0000028165,0.0000028092,0.0000028011,0.0000027942,0.0000027950, -0.0000028029,0.0000028147,0.0000028265,0.0000028373,0.0000028475, -0.0000028549,0.0000028587,0.0000028603,0.0000028613,0.0000028611, -0.0000028586,0.0000028551,0.0000028558,0.0000028605,0.0000028667, -0.0000028685,0.0000028659,0.0000028591,0.0000028523,0.0000028452, -0.0000028352,0.0000028258,0.0000028183,0.0000028108,0.0000028042, -0.0000028030,0.0000028103,0.0000028191,0.0000028246,0.0000028260, -0.0000028235,0.0000028154,0.0000028029,0.0000027959,0.0000027957, -0.0000027981,0.0000027977,0.0000027969,0.0000027978,0.0000027980, -0.0000027969,0.0000027957,0.0000027963,0.0000028005,0.0000028075, -0.0000028160,0.0000028230,0.0000028271,0.0000028276,0.0000028260, -0.0000028220,0.0000028183,0.0000028177,0.0000028198,0.0000028248, -0.0000028298,0.0000028306,0.0000028264,0.0000028186,0.0000028140, -0.0000028138,0.0000028059,0.0000027886,0.0000028040,0.0000028358, -0.0000028517,0.0000028601,0.0000028740,0.0000028952,0.0000029079, -0.0000029089,0.0000029047,0.0000029013,0.0000028987,0.0000028945, -0.0000028905,0.0000028893,0.0000028914,0.0000028963,0.0000029008, -0.0000029049,0.0000029082,0.0000029092,0.0000029074,0.0000029051, -0.0000028992,0.0000028910,0.0000028839,0.0000028756,0.0000028705, -0.0000028659,0.0000028606,0.0000028543,0.0000028598,0.0000028696, -0.0000028588,0.0000028326,0.0000028196,0.0000028347,0.0000028606, -0.0000028723,0.0000028667,0.0000028572,0.0000028499,0.0000028467, -0.0000028465,0.0000028476,0.0000028480,0.0000028492,0.0000028549, -0.0000028617,0.0000028648,0.0000028641,0.0000028635,0.0000028637, -0.0000028652,0.0000028665,0.0000028656,0.0000028627,0.0000028590, -0.0000028548,0.0000028499,0.0000028438,0.0000028367,0.0000028295, -0.0000028247,0.0000028226,0.0000028213,0.0000028190,0.0000028146, -0.0000028090,0.0000028032,0.0000027982,0.0000027950,0.0000027925, -0.0000027896,0.0000027854,0.0000027826,0.0000027818,0.0000027819, -0.0000027803,0.0000027746,0.0000027681,0.0000027665,0.0000027680, -0.0000027698,0.0000027721,0.0000027801,0.0000027899,0.0000027943, -0.0000027966,0.0000028001,0.0000028005,0.0000027981,0.0000028033, -0.0000028212,0.0000028367,0.0000028406,0.0000028402,0.0000028378, -0.0000028321,0.0000028243,0.0000028164,0.0000028077,0.0000028012, -0.0000027981,0.0000027900,0.0000027740,0.0000027592,0.0000027525, -0.0000027595,0.0000027806,0.0000028043,0.0000028149,0.0000028153, -0.0000028099,0.0000028056,0.0000028034,0.0000027965,0.0000027830, -0.0000027684,0.0000027570,0.0000027540,0.0000027578,0.0000027678, -0.0000027803,0.0000027900,0.0000027948,0.0000027957,0.0000027968, -0.0000028019,0.0000028116,0.0000028215,0.0000028273,0.0000028266, -0.0000028213,0.0000028141,0.0000028063,0.0000028004,0.0000028003, -0.0000028050,0.0000028109,0.0000028161,0.0000028206,0.0000028238, -0.0000028247,0.0000028223,0.0000028176,0.0000028121,0.0000028071, -0.0000028037,0.0000028009,0.0000027969,0.0000027938,0.0000027935, -0.0000027952,0.0000027974,0.0000028023,0.0000028075,0.0000028079, -0.0000028026,0.0000027971,0.0000028001,0.0000028145,0.0000028263, -0.0000028321,0.0000028399,0.0000028494,0.0000028556,0.0000028504, -0.0000028435,0.0000028424,0.0000028475,0.0000028591,0.0000028622, -0.0000028550,0.0000028496,0.0000028493,0.0000028560,0.0000028698, -0.0000028767,0.0000028852,0.0000028920,0.0000028843,0.0000028661, -0.0000028364,0.0000028230,0.0000028187,0.0000028220,0.0000028360, -0.0000028446,0.0000028456,0.0000028467,0.0000028447,0.0000028520, -0.0000028612,0.0000028602,0.0000028562,0.0000028540,0.0000028545, -0.0000028604,0.0000028666,0.0000028652,0.0000028587,0.0000028537, -0.0000028522,0.0000028494,0.0000028443,0.0000028384,0.0000028333, -0.0000028317,0.0000028306,0.0000028299,0.0000028323,0.0000028347, -0.0000028363,0.0000028337,0.0000028288,0.0000028256,0.0000028253, -0.0000028325,0.0000028422,0.0000028459,0.0000028437,0.0000028411, -0.0000028374,0.0000028304,0.0000028245,0.0000028227,0.0000028238, -0.0000028269,0.0000028255,0.0000028203,0.0000028080,0.0000027870, -0.0000027696,0.0000027656,0.0000027679,0.0000027677,0.0000027640, -0.0000027595,0.0000027571,0.0000027599,0.0000027627,0.0000027599, -0.0000027486,0.0000027365,0.0000027379,0.0000027475,0.0000027563, -0.0000027583,0.0000027542,0.0000027459,0.0000027380,0.0000027293, -0.0000027236,0.0000027222,0.0000027251,0.0000027296,0.0000027329, -0.0000027361,0.0000027375,0.0000027382,0.0000027390,0.0000027391, -0.0000027375,0.0000027338,0.0000027289,0.0000027249,0.0000027234, -0.0000027219,0.0000027182,0.0000027145,0.0000027108,0.0000027075, -0.0000027054,0.0000027056,0.0000027079,0.0000027116,0.0000027143, -0.0000027145,0.0000027118,0.0000027058,0.0000027002,0.0000026975, -0.0000026969,0.0000026964,0.0000026944,0.0000026901,0.0000026847, -0.0000026790,0.0000026729,0.0000026683,0.0000026669,0.0000026680, -0.0000026733,0.0000026838,0.0000026957,0.0000027074,0.0000027148, -0.0000027183,0.0000027221,0.0000027269,0.0000027321,0.0000027369, -0.0000027394,0.0000027389,0.0000027363,0.0000027331,0.0000027334, -0.0000027401,0.0000027577,0.0000027780,0.0000027897,0.0000027910, -0.0000027901,0.0000027913,0.0000027971,0.0000028127,0.0000028297, -0.0000028322,0.0000028196,0.0000028057,0.0000028032,0.0000028099, -0.0000028198,0.0000028210,0.0000028122,0.0000027989,0.0000027936, -0.0000027969,0.0000028118,0.0000028244,0.0000028204,0.0000028169, -0.0000028064,0.0000027780,0.0000027719,0.0000027893,0.0000028048, -0.0000028321,0.0000028290,0.0000028363,0.0000028560,0.0000028590, -0.0000028565,0.0000028567,0.0000028588,0.0000028687,0.0000028766, -0.0000028723,0.0000028554,0.0000028383,0.0000028173,0.0000027992, -0.0000027988,0.0000027980,0.0000027967,0.0000027977,0.0000027987, -0.0000027929,0.0000027771,0.0000027638,0.0000027622,0.0000027622, -0.0000027641,0.0000027685,0.0000027709,0.0000027686,0.0000027613, -0.0000027549,0.0000027534,0.0000027515,0.0000027496,0.0000027491, -0.0000027517,0.0000027567,0.0000027615,0.0000027634,0.0000027615, -0.0000027560,0.0000027497,0.0000027452,0.0000027456,0.0000027485, -0.0000027525,0.0000027582,0.0000027635,0.0000027670,0.0000027689, -0.0000027694,0.0000027654,0.0000027593,0.0000027535,0.0000027493, -0.0000027485,0.0000027491,0.0000027498,0.0000027505,0.0000027503, -0.0000027496,0.0000027509,0.0000027500,0.0000027501,0.0000027510, -0.0000027537,0.0000027589,0.0000027630,0.0000027679,0.0000027719, -0.0000027730,0.0000027720,0.0000027723,0.0000027722,0.0000027715, -0.0000027724,0.0000027731,0.0000027727,0.0000027701,0.0000027672, -0.0000027635,0.0000027623,0.0000027632,0.0000027657,0.0000027685, -0.0000027718,0.0000027779,0.0000027831,0.0000027842,0.0000027833, -0.0000027812,0.0000027787,0.0000027772,0.0000027767,0.0000027787, -0.0000027812,0.0000027832,0.0000027861,0.0000027901,0.0000027945, -0.0000027967,0.0000027999,0.0000028025,0.0000028031,0.0000027997, -0.0000027950,0.0000027943,0.0000027969,0.0000027996,0.0000028009, -0.0000028023,0.0000028074,0.0000028148,0.0000028242,0.0000028352, -0.0000028460,0.0000028544,0.0000028594,0.0000028620,0.0000028621, -0.0000028617,0.0000028649,0.0000028714,0.0000028779,0.0000028796, -0.0000028789,0.0000028755,0.0000028645,0.0000028504,0.0000028387, -0.0000028311,0.0000028265,0.0000028216,0.0000028182,0.0000028201, -0.0000028286,0.0000028420,0.0000028522,0.0000028544,0.0000028489, -0.0000028366,0.0000028230,0.0000028144,0.0000028091,0.0000028059, -0.0000028034,0.0000028013,0.0000028000,0.0000027992,0.0000027978, -0.0000027947,0.0000027903,0.0000027859,0.0000027845,0.0000027881, -0.0000027972,0.0000028085,0.0000028181,0.0000028250,0.0000028300, -0.0000028339,0.0000028375,0.0000028404,0.0000028425,0.0000028443, -0.0000028461,0.0000028471,0.0000028468,0.0000028471,0.0000028478, -0.0000028457,0.0000028470,0.0000028575,0.0000028648,0.0000028568, -0.0000028273,0.0000028035,0.0000028033,0.0000028099,0.0000028088, -0.0000028088,0.0000028177,0.0000028329,0.0000028445,0.0000028461, -0.0000028404,0.0000028309,0.0000028182,0.0000028058,0.0000027979, -0.0000027959,0.0000027981,0.0000028055,0.0000028131,0.0000028165, -0.0000028159,0.0000028128,0.0000028101,0.0000028109,0.0000028149, -0.0000028201,0.0000028246,0.0000028281,0.0000028312,0.0000028348, -0.0000028400,0.0000028489,0.0000028622,0.0000028776,0.0000028905, -0.0000028975,0.0000028986,0.0000028964,0.0000028928,0.0000028900, -0.0000028900,0.0000028910,0.0000028920,0.0000028953,0.0000029027, -0.0000029122,0.0000029202,0.0000029256,0.0000029295,0.0000029319, -0.0000029327,0.0000029313,0.0000029253,0.0000029152,0.0000029038, -0.0000028960,0.0000028943,0.0000028946,0.0000028940,0.0000028908, -0.0000028838,0.0000028748,0.0000028664,0.0000028605,0.0000028581, -0.0000028582,0.0000028598,0.0000028626,0.0000028655,0.0000028677, -0.0000028694,0.0000028720,0.0000028748,0.0000028753,0.0000028730, -0.0000028717,0.0000028727,0.0000028748,0.0000028785,0.0000028814, -0.0000028817,0.0000028799,0.0000028770,0.0000028756,0.0000028778, -0.0000028813,0.0000028833,0.0000028853,0.0000028877,0.0000028882, -0.0000028876,0.0000028894,0.0000028936,0.0000028965,0.0000028963, -0.0000028937,0.0000028916,0.0000028885,0.0000028810,0.0000028673, -0.0000028500,0.0000028365,0.0000028302,0.0000028287,0.0000028280, -0.0000028262,0.0000028256,0.0000028277,0.0000028355,0.0000028481, -0.0000028586,0.0000028620,0.0000028644,0.0000028707,0.0000028785, -0.0000028833,0.0000028851,0.0000028855,0.0000028834,0.0000028789, -0.0000028726,0.0000028646,0.0000028583,0.0000028578,0.0000028597, -0.0000028592,0.0000028541,0.0000028441,0.0000028330,0.0000028228, -0.0000028158,0.0000028113,0.0000028045,0.0000027981,0.0000027988, -0.0000028063,0.0000028180,0.0000028301,0.0000028408,0.0000028498, -0.0000028562,0.0000028592,0.0000028599,0.0000028596,0.0000028583, -0.0000028546,0.0000028498,0.0000028485,0.0000028523,0.0000028602, -0.0000028675,0.0000028703,0.0000028667,0.0000028570,0.0000028461, -0.0000028365,0.0000028304,0.0000028253,0.0000028159,0.0000028045, -0.0000028016,0.0000028064,0.0000028147,0.0000028206,0.0000028235, -0.0000028234,0.0000028182,0.0000028058,0.0000027954,0.0000027902, -0.0000027898,0.0000027924,0.0000027969,0.0000028016,0.0000028046, -0.0000028041,0.0000028026,0.0000028019,0.0000028037,0.0000028088, -0.0000028158,0.0000028219,0.0000028256,0.0000028267,0.0000028260, -0.0000028234,0.0000028208,0.0000028200,0.0000028216,0.0000028281, -0.0000028346,0.0000028352,0.0000028299,0.0000028216,0.0000028174, -0.0000028173,0.0000028041,0.0000027886,0.0000028097,0.0000028379, -0.0000028517,0.0000028626,0.0000028801,0.0000028978,0.0000029034, -0.0000029021,0.0000028994,0.0000028980,0.0000028953,0.0000028917, -0.0000028889,0.0000028881,0.0000028903,0.0000028942,0.0000028971, -0.0000029005,0.0000029032,0.0000029046,0.0000029025,0.0000028995, -0.0000028933,0.0000028842,0.0000028758,0.0000028680,0.0000028649, -0.0000028604,0.0000028588,0.0000028650,0.0000028761,0.0000028675, -0.0000028417,0.0000028258,0.0000028359,0.0000028619,0.0000028740, -0.0000028701,0.0000028589,0.0000028510,0.0000028488,0.0000028490, -0.0000028509,0.0000028521,0.0000028512,0.0000028514,0.0000028554, -0.0000028612,0.0000028629,0.0000028625,0.0000028636,0.0000028657, -0.0000028678,0.0000028681,0.0000028644,0.0000028591,0.0000028544, -0.0000028508,0.0000028469,0.0000028419,0.0000028360,0.0000028290, -0.0000028225,0.0000028183,0.0000028158,0.0000028131,0.0000028088, -0.0000028035,0.0000027990,0.0000027949,0.0000027906,0.0000027859, -0.0000027822,0.0000027804,0.0000027806,0.0000027826,0.0000027850, -0.0000027875,0.0000027877,0.0000027829,0.0000027755,0.0000027713, -0.0000027710,0.0000027710,0.0000027713,0.0000027771,0.0000027874, -0.0000027937,0.0000027963,0.0000028008,0.0000028038,0.0000028039, -0.0000028132,0.0000028344,0.0000028486,0.0000028508,0.0000028502, -0.0000028464,0.0000028386,0.0000028297,0.0000028214,0.0000028126, -0.0000028068,0.0000028042,0.0000027979,0.0000027857,0.0000027696, -0.0000027549,0.0000027521,0.0000027627,0.0000027847,0.0000028061, -0.0000028161,0.0000028179,0.0000028160,0.0000028136,0.0000028081, -0.0000027969,0.0000027818,0.0000027668,0.0000027576,0.0000027577, -0.0000027652,0.0000027779,0.0000027907,0.0000027979,0.0000027998, -0.0000028002,0.0000028039,0.0000028123,0.0000028232,0.0000028320, -0.0000028356,0.0000028347,0.0000028300,0.0000028220,0.0000028146, -0.0000028127,0.0000028158,0.0000028204,0.0000028247,0.0000028283, -0.0000028308,0.0000028313,0.0000028293,0.0000028260,0.0000028213, -0.0000028157,0.0000028112,0.0000028083,0.0000028054,0.0000028027, -0.0000028016,0.0000028011,0.0000028011,0.0000028039,0.0000028063, -0.0000028029,0.0000027934,0.0000027863,0.0000027904,0.0000028067, -0.0000028189,0.0000028253,0.0000028354,0.0000028464,0.0000028522, -0.0000028471,0.0000028425,0.0000028428,0.0000028490,0.0000028602, -0.0000028621,0.0000028561,0.0000028521,0.0000028523,0.0000028597, -0.0000028714,0.0000028790,0.0000028885,0.0000028922,0.0000028823, -0.0000028624,0.0000028330,0.0000028230,0.0000028185,0.0000028223, -0.0000028363,0.0000028479,0.0000028521,0.0000028526,0.0000028473, -0.0000028515,0.0000028592,0.0000028567,0.0000028499,0.0000028491, -0.0000028497,0.0000028567,0.0000028621,0.0000028608,0.0000028546, -0.0000028505,0.0000028502,0.0000028493,0.0000028455,0.0000028395, -0.0000028310,0.0000028252,0.0000028237,0.0000028235,0.0000028243, -0.0000028248,0.0000028257,0.0000028244,0.0000028201,0.0000028150, -0.0000028117,0.0000028149,0.0000028252,0.0000028338,0.0000028354, -0.0000028338,0.0000028321,0.0000028265,0.0000028167,0.0000028110, -0.0000028091,0.0000028108,0.0000028166,0.0000028173,0.0000028125, -0.0000027989,0.0000027775,0.0000027665,0.0000027675,0.0000027696, -0.0000027677,0.0000027646,0.0000027617,0.0000027626,0.0000027656, -0.0000027638,0.0000027535,0.0000027393,0.0000027379,0.0000027457, -0.0000027528,0.0000027514,0.0000027395,0.0000027274,0.0000027221, -0.0000027206,0.0000027225,0.0000027257,0.0000027290,0.0000027305, -0.0000027303,0.0000027288,0.0000027269,0.0000027247,0.0000027232, -0.0000027217,0.0000027200,0.0000027169,0.0000027122,0.0000027081, -0.0000027059,0.0000027069,0.0000027076,0.0000027067,0.0000027058, -0.0000027045,0.0000027031,0.0000027025,0.0000027033,0.0000027062, -0.0000027095,0.0000027124,0.0000027132,0.0000027114,0.0000027072, -0.0000027021,0.0000026997,0.0000027008,0.0000027028,0.0000027033, -0.0000027010,0.0000026958,0.0000026889,0.0000026818,0.0000026753, -0.0000026707,0.0000026678,0.0000026693,0.0000026772,0.0000026896, -0.0000027033,0.0000027117,0.0000027141,0.0000027154,0.0000027171, -0.0000027221,0.0000027289,0.0000027335,0.0000027352,0.0000027345, -0.0000027319,0.0000027291,0.0000027317,0.0000027476,0.0000027689, -0.0000027829,0.0000027858,0.0000027864,0.0000027898,0.0000027994, -0.0000028187,0.0000028334,0.0000028302,0.0000028144,0.0000028029, -0.0000028040,0.0000028129,0.0000028201,0.0000028163,0.0000028040, -0.0000027952,0.0000027950,0.0000028033,0.0000028180,0.0000028242, -0.0000028168,0.0000028135,0.0000027940,0.0000027689,0.0000027780, -0.0000027935,0.0000028139,0.0000028317,0.0000028231,0.0000028403, -0.0000028576,0.0000028591,0.0000028573,0.0000028579,0.0000028608, -0.0000028714,0.0000028771,0.0000028709,0.0000028529,0.0000028360, -0.0000028152,0.0000027992,0.0000027992,0.0000027976,0.0000027951, -0.0000027969,0.0000027978,0.0000027911,0.0000027751,0.0000027636, -0.0000027627,0.0000027622,0.0000027636,0.0000027674,0.0000027691, -0.0000027672,0.0000027615,0.0000027565,0.0000027552,0.0000027529, -0.0000027505,0.0000027507,0.0000027537,0.0000027595,0.0000027638, -0.0000027640,0.0000027600,0.0000027519,0.0000027451,0.0000027412, -0.0000027420,0.0000027445,0.0000027475,0.0000027508,0.0000027530, -0.0000027541,0.0000027551,0.0000027575,0.0000027576,0.0000027564, -0.0000027535,0.0000027489,0.0000027463,0.0000027459,0.0000027471, -0.0000027478,0.0000027469,0.0000027445,0.0000027444,0.0000027413, -0.0000027396,0.0000027379,0.0000027378,0.0000027407,0.0000027438, -0.0000027480,0.0000027512,0.0000027521,0.0000027513,0.0000027532, -0.0000027549,0.0000027554,0.0000027581,0.0000027605,0.0000027621, -0.0000027611,0.0000027600,0.0000027576,0.0000027588,0.0000027610, -0.0000027634,0.0000027654,0.0000027665,0.0000027702,0.0000027753, -0.0000027774,0.0000027768,0.0000027748,0.0000027716,0.0000027675, -0.0000027644,0.0000027623,0.0000027622,0.0000027631,0.0000027658, -0.0000027721,0.0000027835,0.0000027936,0.0000027984,0.0000028001, -0.0000028008,0.0000027992,0.0000027953,0.0000027933,0.0000027952, -0.0000027992,0.0000028017,0.0000028025,0.0000028065,0.0000028138, -0.0000028234,0.0000028357,0.0000028476,0.0000028564,0.0000028619, -0.0000028641,0.0000028634,0.0000028610,0.0000028619,0.0000028674, -0.0000028731,0.0000028745,0.0000028738,0.0000028703,0.0000028591, -0.0000028449,0.0000028331,0.0000028258,0.0000028234,0.0000028203, -0.0000028187,0.0000028233,0.0000028342,0.0000028474,0.0000028542, -0.0000028538,0.0000028458,0.0000028335,0.0000028230,0.0000028166, -0.0000028132,0.0000028092,0.0000028045,0.0000028005,0.0000027983, -0.0000027974,0.0000027961,0.0000027934,0.0000027886,0.0000027829, -0.0000027796,0.0000027812,0.0000027882,0.0000027982,0.0000028077, -0.0000028147,0.0000028198,0.0000028235,0.0000028263,0.0000028290, -0.0000028319,0.0000028349,0.0000028382,0.0000028418,0.0000028443, -0.0000028470,0.0000028505,0.0000028505,0.0000028488,0.0000028539, -0.0000028643,0.0000028664,0.0000028489,0.0000028168,0.0000028014, -0.0000028068,0.0000028118,0.0000028094,0.0000028102,0.0000028205, -0.0000028351,0.0000028440,0.0000028434,0.0000028371,0.0000028277, -0.0000028168,0.0000028067,0.0000028007,0.0000027994,0.0000028037, -0.0000028115,0.0000028162,0.0000028162,0.0000028134,0.0000028084, -0.0000028052,0.0000028062,0.0000028098,0.0000028144,0.0000028193, -0.0000028239,0.0000028283,0.0000028346,0.0000028451,0.0000028596, -0.0000028744,0.0000028861,0.0000028934,0.0000028959,0.0000028954, -0.0000028938,0.0000028913,0.0000028885,0.0000028876,0.0000028880, -0.0000028898,0.0000028951,0.0000029044,0.0000029141,0.0000029211, -0.0000029252,0.0000029280,0.0000029309,0.0000029332,0.0000029333, -0.0000029296,0.0000029217,0.0000029121,0.0000029045,0.0000029005, -0.0000028982,0.0000028953,0.0000028899,0.0000028819,0.0000028735, -0.0000028667,0.0000028630,0.0000028624,0.0000028646,0.0000028681, -0.0000028717,0.0000028753,0.0000028784,0.0000028807,0.0000028826, -0.0000028843,0.0000028837,0.0000028800,0.0000028761,0.0000028752, -0.0000028766,0.0000028788,0.0000028798,0.0000028789,0.0000028770, -0.0000028750,0.0000028744,0.0000028778,0.0000028837,0.0000028872, -0.0000028875,0.0000028875,0.0000028878,0.0000028887,0.0000028913, -0.0000028949,0.0000028969,0.0000028970,0.0000028949,0.0000028915, -0.0000028859,0.0000028761,0.0000028625,0.0000028477,0.0000028365, -0.0000028323,0.0000028325,0.0000028329,0.0000028306,0.0000028281, -0.0000028292,0.0000028358,0.0000028465,0.0000028566,0.0000028616, -0.0000028643,0.0000028693,0.0000028769,0.0000028832,0.0000028864, -0.0000028882,0.0000028885,0.0000028859,0.0000028793,0.0000028712, -0.0000028653,0.0000028638,0.0000028644,0.0000028636,0.0000028606, -0.0000028539,0.0000028431,0.0000028328,0.0000028253,0.0000028209, -0.0000028176,0.0000028105,0.0000028038,0.0000028034,0.0000028083, -0.0000028183,0.0000028312,0.0000028425,0.0000028507,0.0000028565, -0.0000028595,0.0000028599,0.0000028581,0.0000028549,0.0000028500, -0.0000028451,0.0000028440,0.0000028477,0.0000028548,0.0000028626, -0.0000028691,0.0000028682,0.0000028609,0.0000028469,0.0000028357, -0.0000028313,0.0000028294,0.0000028219,0.0000028093,0.0000028030, -0.0000028064,0.0000028137,0.0000028172,0.0000028197,0.0000028221, -0.0000028202,0.0000028102,0.0000027975,0.0000027885,0.0000027836, -0.0000027855,0.0000027924,0.0000028006,0.0000028061,0.0000028075, -0.0000028075,0.0000028083,0.0000028103,0.0000028139,0.0000028187, -0.0000028233,0.0000028257,0.0000028267,0.0000028263,0.0000028239, -0.0000028211,0.0000028198,0.0000028216,0.0000028296,0.0000028379, -0.0000028387,0.0000028329,0.0000028253,0.0000028230,0.0000028211, -0.0000028023,0.0000027918,0.0000028164,0.0000028402,0.0000028526, -0.0000028670,0.0000028847,0.0000028962,0.0000028969,0.0000028957, -0.0000028966,0.0000028967,0.0000028941,0.0000028905,0.0000028871, -0.0000028861,0.0000028879,0.0000028899,0.0000028907,0.0000028930, -0.0000028958,0.0000028981,0.0000028965,0.0000028943,0.0000028879, -0.0000028765,0.0000028669,0.0000028611,0.0000028593,0.0000028570, -0.0000028650,0.0000028820,0.0000028790,0.0000028537,0.0000028306, -0.0000028344,0.0000028612,0.0000028775,0.0000028748,0.0000028638, -0.0000028562,0.0000028520,0.0000028521,0.0000028551,0.0000028570, -0.0000028555,0.0000028517,0.0000028487,0.0000028489,0.0000028531, -0.0000028559,0.0000028566,0.0000028598,0.0000028636,0.0000028661, -0.0000028656,0.0000028605,0.0000028549,0.0000028507,0.0000028478, -0.0000028454,0.0000028420,0.0000028375,0.0000028317,0.0000028248, -0.0000028193,0.0000028158,0.0000028123,0.0000028067,0.0000027996, -0.0000027941,0.0000027911,0.0000027898,0.0000027876,0.0000027838, -0.0000027800,0.0000027780,0.0000027792,0.0000027829,0.0000027873, -0.0000027920,0.0000027937,0.0000027910,0.0000027843,0.0000027780, -0.0000027747,0.0000027735,0.0000027735,0.0000027771,0.0000027863, -0.0000027934,0.0000027962,0.0000028017,0.0000028070,0.0000028102, -0.0000028248,0.0000028468,0.0000028576,0.0000028582,0.0000028563, -0.0000028502,0.0000028411,0.0000028331,0.0000028260,0.0000028178, -0.0000028132,0.0000028109,0.0000028059,0.0000027973,0.0000027834, -0.0000027659,0.0000027531,0.0000027534,0.0000027664,0.0000027870, -0.0000028051,0.0000028168,0.0000028226,0.0000028231,0.0000028204, -0.0000028122,0.0000027993,0.0000027841,0.0000027710,0.0000027642, -0.0000027651,0.0000027740,0.0000027880,0.0000027985,0.0000028032, -0.0000028048,0.0000028080,0.0000028156,0.0000028257,0.0000028340, -0.0000028389,0.0000028407,0.0000028391,0.0000028330,0.0000028267, -0.0000028243,0.0000028274,0.0000028334,0.0000028386,0.0000028414, -0.0000028425,0.0000028420,0.0000028400,0.0000028369,0.0000028317, -0.0000028240,0.0000028173,0.0000028132,0.0000028103,0.0000028071, -0.0000028035,0.0000028007,0.0000027998,0.0000028019,0.0000028020, -0.0000027957,0.0000027849,0.0000027777,0.0000027823,0.0000027987, -0.0000028099,0.0000028178,0.0000028311,0.0000028435,0.0000028484, -0.0000028437,0.0000028414,0.0000028426,0.0000028495,0.0000028600, -0.0000028634,0.0000028594,0.0000028558,0.0000028553,0.0000028615, -0.0000028707,0.0000028796,0.0000028897,0.0000028908,0.0000028797, -0.0000028581,0.0000028309,0.0000028230,0.0000028192,0.0000028231, -0.0000028379,0.0000028526,0.0000028585,0.0000028586,0.0000028494, -0.0000028498,0.0000028558,0.0000028542,0.0000028459,0.0000028445, -0.0000028437,0.0000028519,0.0000028571,0.0000028555,0.0000028502, -0.0000028484,0.0000028499,0.0000028510,0.0000028472,0.0000028405, -0.0000028318,0.0000028236,0.0000028187,0.0000028147,0.0000028119, -0.0000028093,0.0000028088,0.0000028088,0.0000028058,0.0000028011, -0.0000027987,0.0000028014,0.0000028113,0.0000028223,0.0000028270, -0.0000028266,0.0000028262,0.0000028230,0.0000028115,0.0000028025, -0.0000027988,0.0000027980,0.0000028066,0.0000028134,0.0000028133, -0.0000028058,0.0000027867,0.0000027703,0.0000027680,0.0000027691, -0.0000027684,0.0000027647,0.0000027609,0.0000027602,0.0000027611, -0.0000027602,0.0000027513,0.0000027388,0.0000027375,0.0000027413, -0.0000027411,0.0000027337,0.0000027253,0.0000027207,0.0000027224, -0.0000027259,0.0000027279,0.0000027277,0.0000027257,0.0000027225, -0.0000027196,0.0000027176,0.0000027168,0.0000027159,0.0000027155, -0.0000027157,0.0000027157,0.0000027143,0.0000027108,0.0000027066, -0.0000027038,0.0000027040,0.0000027058,0.0000027068,0.0000027069, -0.0000027063,0.0000027053,0.0000027047,0.0000027048,0.0000027060, -0.0000027082,0.0000027109,0.0000027131,0.0000027144,0.0000027138, -0.0000027115,0.0000027070,0.0000027050,0.0000027058,0.0000027086, -0.0000027104,0.0000027096,0.0000027051,0.0000026984,0.0000026921, -0.0000026859,0.0000026791,0.0000026718,0.0000026693,0.0000026720, -0.0000026828,0.0000026971,0.0000027074,0.0000027111,0.0000027103, -0.0000027088,0.0000027116,0.0000027173,0.0000027230,0.0000027266, -0.0000027279,0.0000027268,0.0000027235,0.0000027242,0.0000027387, -0.0000027608,0.0000027761,0.0000027801,0.0000027822,0.0000027888, -0.0000028036,0.0000028255,0.0000028350,0.0000028257,0.0000028096, -0.0000028043,0.0000028086,0.0000028157,0.0000028157,0.0000028061, -0.0000027971,0.0000027955,0.0000028007,0.0000028127,0.0000028226, -0.0000028203,0.0000028138,0.0000028049,0.0000027799,0.0000027681, -0.0000027833,0.0000027976,0.0000028224,0.0000028253,0.0000028195, -0.0000028438,0.0000028582,0.0000028592,0.0000028585,0.0000028593, -0.0000028633,0.0000028735,0.0000028767,0.0000028678,0.0000028492, -0.0000028336,0.0000028123,0.0000027996,0.0000027996,0.0000027964, -0.0000027936,0.0000027962,0.0000027964,0.0000027888,0.0000027729, -0.0000027634,0.0000027634,0.0000027629,0.0000027642,0.0000027671, -0.0000027680,0.0000027673,0.0000027627,0.0000027577,0.0000027556, -0.0000027530,0.0000027508,0.0000027519,0.0000027557,0.0000027618, -0.0000027650,0.0000027638,0.0000027571,0.0000027469,0.0000027404, -0.0000027375,0.0000027379,0.0000027391,0.0000027409,0.0000027425, -0.0000027432,0.0000027430,0.0000027426,0.0000027441,0.0000027453, -0.0000027473,0.0000027484,0.0000027459,0.0000027447,0.0000027434, -0.0000027429,0.0000027423,0.0000027409,0.0000027393,0.0000027403, -0.0000027381,0.0000027368,0.0000027352,0.0000027339,0.0000027340, -0.0000027343,0.0000027347,0.0000027351,0.0000027331,0.0000027301, -0.0000027301,0.0000027304,0.0000027301,0.0000027337,0.0000027372, -0.0000027414,0.0000027436,0.0000027454,0.0000027459,0.0000027497, -0.0000027531,0.0000027565,0.0000027587,0.0000027595,0.0000027611, -0.0000027652,0.0000027677,0.0000027685,0.0000027666,0.0000027636, -0.0000027584,0.0000027530,0.0000027488,0.0000027468,0.0000027463, -0.0000027469,0.0000027485,0.0000027553,0.0000027712,0.0000027889, -0.0000027982,0.0000027991,0.0000027970,0.0000027951,0.0000027946, -0.0000027959,0.0000027991,0.0000028023,0.0000028033,0.0000028059, -0.0000028133,0.0000028232,0.0000028358,0.0000028479,0.0000028563, -0.0000028613,0.0000028638,0.0000028614,0.0000028570,0.0000028568, -0.0000028612,0.0000028668,0.0000028685,0.0000028682,0.0000028641, -0.0000028528,0.0000028393,0.0000028284,0.0000028241,0.0000028232, -0.0000028211,0.0000028212,0.0000028282,0.0000028395,0.0000028505, -0.0000028554,0.0000028523,0.0000028434,0.0000028334,0.0000028260, -0.0000028220,0.0000028183,0.0000028127,0.0000028053,0.0000027990, -0.0000027959,0.0000027945,0.0000027931,0.0000027907,0.0000027862, -0.0000027800,0.0000027748,0.0000027741,0.0000027777,0.0000027843, -0.0000027919,0.0000027989,0.0000028046,0.0000028092,0.0000028124, -0.0000028151,0.0000028189,0.0000028238,0.0000028296,0.0000028359, -0.0000028413,0.0000028465,0.0000028523,0.0000028551,0.0000028531, -0.0000028535,0.0000028615,0.0000028680,0.0000028628,0.0000028365, -0.0000028086,0.0000028037,0.0000028129,0.0000028154,0.0000028127, -0.0000028143,0.0000028242,0.0000028366,0.0000028416,0.0000028389, -0.0000028324,0.0000028238,0.0000028141,0.0000028064,0.0000028025, -0.0000028038,0.0000028104,0.0000028173,0.0000028188,0.0000028157, -0.0000028090,0.0000028031,0.0000028010,0.0000028015,0.0000028044, -0.0000028094,0.0000028150,0.0000028208,0.0000028284,0.0000028410, -0.0000028577,0.0000028733,0.0000028841,0.0000028902,0.0000028934, -0.0000028945,0.0000028942,0.0000028931,0.0000028901,0.0000028864, -0.0000028847,0.0000028852,0.0000028883,0.0000028956,0.0000029059, -0.0000029151,0.0000029211,0.0000029240,0.0000029257,0.0000029283, -0.0000029314,0.0000029327,0.0000029306,0.0000029246,0.0000029168, -0.0000029096,0.0000029040,0.0000028997,0.0000028949,0.0000028879, -0.0000028795,0.0000028720,0.0000028673,0.0000028657,0.0000028670, -0.0000028709,0.0000028755,0.0000028795,0.0000028834,0.0000028870, -0.0000028897,0.0000028918,0.0000028932,0.0000028921,0.0000028878, -0.0000028828,0.0000028800,0.0000028807,0.0000028811,0.0000028797, -0.0000028771,0.0000028747,0.0000028730,0.0000028731,0.0000028774, -0.0000028852,0.0000028904,0.0000028906,0.0000028888,0.0000028877, -0.0000028887,0.0000028915,0.0000028941,0.0000028953,0.0000028957, -0.0000028952,0.0000028911,0.0000028833,0.0000028719,0.0000028590, -0.0000028477,0.0000028407,0.0000028379,0.0000028374,0.0000028381, -0.0000028357,0.0000028320,0.0000028319,0.0000028376,0.0000028469, -0.0000028549,0.0000028604,0.0000028640,0.0000028685,0.0000028747, -0.0000028810,0.0000028859,0.0000028894,0.0000028915,0.0000028909, -0.0000028856,0.0000028771,0.0000028710,0.0000028694,0.0000028704, -0.0000028701,0.0000028672,0.0000028640,0.0000028571,0.0000028477, -0.0000028385,0.0000028317,0.0000028275,0.0000028219,0.0000028127, -0.0000028054,0.0000028040,0.0000028066,0.0000028155,0.0000028283, -0.0000028391,0.0000028466,0.0000028521,0.0000028557,0.0000028560, -0.0000028535,0.0000028498,0.0000028457,0.0000028418,0.0000028413, -0.0000028459,0.0000028517,0.0000028573,0.0000028633,0.0000028662, -0.0000028601,0.0000028468,0.0000028347,0.0000028318,0.0000028317, -0.0000028270,0.0000028145,0.0000028080,0.0000028109,0.0000028165, -0.0000028177,0.0000028184,0.0000028198,0.0000028203,0.0000028152, -0.0000028026,0.0000027893,0.0000027819,0.0000027806,0.0000027858, -0.0000027954,0.0000028034,0.0000028067,0.0000028081,0.0000028103, -0.0000028138,0.0000028179,0.0000028221,0.0000028262,0.0000028284, -0.0000028298,0.0000028297,0.0000028275,0.0000028238,0.0000028208, -0.0000028223,0.0000028314,0.0000028403,0.0000028411,0.0000028359, -0.0000028307,0.0000028301,0.0000028230,0.0000028007,0.0000027981, -0.0000028242,0.0000028434,0.0000028558,0.0000028725,0.0000028868, -0.0000028911,0.0000028901,0.0000028913,0.0000028959,0.0000028966, -0.0000028940,0.0000028895,0.0000028842,0.0000028818,0.0000028825, -0.0000028819,0.0000028817,0.0000028842,0.0000028884,0.0000028921, -0.0000028917,0.0000028901,0.0000028824,0.0000028686,0.0000028592, -0.0000028556,0.0000028549,0.0000028591,0.0000028795,0.0000028891, -0.0000028694,0.0000028424,0.0000028329,0.0000028560,0.0000028795, -0.0000028804,0.0000028702,0.0000028611,0.0000028588,0.0000028583, -0.0000028597,0.0000028630,0.0000028621,0.0000028565,0.0000028500, -0.0000028430,0.0000028391,0.0000028409,0.0000028455,0.0000028487, -0.0000028530,0.0000028582,0.0000028618,0.0000028625,0.0000028579, -0.0000028534,0.0000028508,0.0000028503,0.0000028514,0.0000028518, -0.0000028500,0.0000028464,0.0000028408,0.0000028347,0.0000028283, -0.0000028213,0.0000028133,0.0000028044,0.0000027974,0.0000027931, -0.0000027909,0.0000027899,0.0000027891,0.0000027880,0.0000027851, -0.0000027825,0.0000027825,0.0000027856,0.0000027907,0.0000027965, -0.0000028004,0.0000027994,0.0000027927,0.0000027842,0.0000027788, -0.0000027778,0.0000027779,0.0000027805,0.0000027871,0.0000027935, -0.0000027974,0.0000028050,0.0000028117,0.0000028183,0.0000028372, -0.0000028572,0.0000028632,0.0000028622,0.0000028575,0.0000028491, -0.0000028398,0.0000028337,0.0000028288,0.0000028233,0.0000028202, -0.0000028182,0.0000028142,0.0000028075,0.0000027966,0.0000027805, -0.0000027645,0.0000027555,0.0000027579,0.0000027720,0.0000027911, -0.0000028079,0.0000028189,0.0000028240,0.0000028263,0.0000028237, -0.0000028154,0.0000028028,0.0000027891,0.0000027776,0.0000027716, -0.0000027743,0.0000027842,0.0000027963,0.0000028054,0.0000028109, -0.0000028154,0.0000028222,0.0000028300,0.0000028359,0.0000028401, -0.0000028427,0.0000028429,0.0000028402,0.0000028367,0.0000028359, -0.0000028401,0.0000028474,0.0000028516,0.0000028517,0.0000028498, -0.0000028478,0.0000028450,0.0000028404,0.0000028340,0.0000028253, -0.0000028175,0.0000028133,0.0000028107,0.0000028065,0.0000028009, -0.0000027974,0.0000027978,0.0000027995,0.0000027977,0.0000027898, -0.0000027787,0.0000027729,0.0000027782,0.0000027929,0.0000028023, -0.0000028118,0.0000028283,0.0000028409,0.0000028448,0.0000028411, -0.0000028413,0.0000028435,0.0000028497,0.0000028602,0.0000028657, -0.0000028640,0.0000028598,0.0000028578,0.0000028622,0.0000028702, -0.0000028798,0.0000028897,0.0000028881,0.0000028772,0.0000028539, -0.0000028301,0.0000028246,0.0000028217,0.0000028246,0.0000028412, -0.0000028572,0.0000028640,0.0000028640,0.0000028517,0.0000028474, -0.0000028511,0.0000028506,0.0000028434,0.0000028392,0.0000028389, -0.0000028460,0.0000028510,0.0000028485,0.0000028451,0.0000028443, -0.0000028474,0.0000028503,0.0000028473,0.0000028399,0.0000028306, -0.0000028236,0.0000028195,0.0000028141,0.0000028077,0.0000028010, -0.0000027970,0.0000027966,0.0000027946,0.0000027925,0.0000027925, -0.0000027964,0.0000028057,0.0000028151,0.0000028202,0.0000028209, -0.0000028216,0.0000028191,0.0000028059,0.0000027962,0.0000027922, -0.0000027905,0.0000027999,0.0000028093,0.0000028113,0.0000028072, -0.0000027895,0.0000027724,0.0000027666,0.0000027656,0.0000027623, -0.0000027566,0.0000027530,0.0000027535,0.0000027540,0.0000027523, -0.0000027470,0.0000027391,0.0000027353,0.0000027294,0.0000027241, -0.0000027224,0.0000027233,0.0000027251,0.0000027261,0.0000027259, -0.0000027241,0.0000027212,0.0000027184,0.0000027168,0.0000027166, -0.0000027176,0.0000027193,0.0000027203,0.0000027213,0.0000027224, -0.0000027232,0.0000027229,0.0000027204,0.0000027157,0.0000027120, -0.0000027101,0.0000027107,0.0000027118,0.0000027118,0.0000027112, -0.0000027097,0.0000027078,0.0000027069,0.0000027074,0.0000027090, -0.0000027106,0.0000027115,0.0000027124,0.0000027133,0.0000027133, -0.0000027113,0.0000027085,0.0000027082,0.0000027107,0.0000027145, -0.0000027165,0.0000027158,0.0000027120,0.0000027066,0.0000027021, -0.0000026978,0.0000026903,0.0000026805,0.0000026732,0.0000026720, -0.0000026792,0.0000026910,0.0000027016,0.0000027072,0.0000027061, -0.0000027032,0.0000027029,0.0000027058,0.0000027103,0.0000027144, -0.0000027173,0.0000027183,0.0000027163,0.0000027176,0.0000027316, -0.0000027538,0.0000027698,0.0000027746,0.0000027791,0.0000027894, -0.0000028092,0.0000028315,0.0000028348,0.0000028197,0.0000028078, -0.0000028080,0.0000028131,0.0000028127,0.0000028047,0.0000027971, -0.0000027957,0.0000028006,0.0000028102,0.0000028205,0.0000028227, -0.0000028142,0.0000028095,0.0000027916,0.0000027695,0.0000027730, -0.0000027885,0.0000028025,0.0000028244,0.0000028166,0.0000028180, -0.0000028457,0.0000028577,0.0000028594,0.0000028599,0.0000028608, -0.0000028653,0.0000028742,0.0000028746,0.0000028627,0.0000028453, -0.0000028313,0.0000028093,0.0000028006,0.0000027995,0.0000027947, -0.0000027924,0.0000027959,0.0000027949,0.0000027864,0.0000027704, -0.0000027632,0.0000027642,0.0000027643,0.0000027663,0.0000027680, -0.0000027682,0.0000027678,0.0000027631,0.0000027579,0.0000027552, -0.0000027518,0.0000027499,0.0000027521,0.0000027565,0.0000027624, -0.0000027641,0.0000027604,0.0000027507,0.0000027402,0.0000027349, -0.0000027340,0.0000027347,0.0000027351,0.0000027354,0.0000027351, -0.0000027344,0.0000027342,0.0000027339,0.0000027348,0.0000027349, -0.0000027363,0.0000027380,0.0000027372,0.0000027381,0.0000027372, -0.0000027366,0.0000027356,0.0000027339,0.0000027332,0.0000027352, -0.0000027350,0.0000027351,0.0000027343,0.0000027334,0.0000027328, -0.0000027324,0.0000027310,0.0000027298,0.0000027267,0.0000027236, -0.0000027227,0.0000027220,0.0000027202,0.0000027222,0.0000027240, -0.0000027269,0.0000027268,0.0000027277,0.0000027284,0.0000027325, -0.0000027364,0.0000027400,0.0000027430,0.0000027443,0.0000027448, -0.0000027481,0.0000027517,0.0000027544,0.0000027543,0.0000027536, -0.0000027495,0.0000027426,0.0000027360,0.0000027313,0.0000027288, -0.0000027287,0.0000027296,0.0000027314,0.0000027382,0.0000027552, -0.0000027789,0.0000027943,0.0000027962,0.0000027930,0.0000027942, -0.0000027989,0.0000028026,0.0000028055,0.0000028061,0.0000028064, -0.0000028125,0.0000028232,0.0000028360,0.0000028475,0.0000028546, -0.0000028590,0.0000028595,0.0000028555,0.0000028505,0.0000028506, -0.0000028548,0.0000028597,0.0000028622,0.0000028618,0.0000028572, -0.0000028455,0.0000028329,0.0000028242,0.0000028241,0.0000028245, -0.0000028230,0.0000028254,0.0000028340,0.0000028437,0.0000028512, -0.0000028544,0.0000028506,0.0000028420,0.0000028338,0.0000028288, -0.0000028256,0.0000028215,0.0000028152,0.0000028075,0.0000028011, -0.0000027971,0.0000027949,0.0000027936,0.0000027916,0.0000027878, -0.0000027808,0.0000027727,0.0000027682,0.0000027680,0.0000027715, -0.0000027764,0.0000027808,0.0000027852,0.0000027896,0.0000027939, -0.0000027977,0.0000028022,0.0000028085,0.0000028167,0.0000028267, -0.0000028365,0.0000028450,0.0000028528,0.0000028581,0.0000028582, -0.0000028565,0.0000028595,0.0000028663,0.0000028675,0.0000028524, -0.0000028221,0.0000028050,0.0000028100,0.0000028201,0.0000028204, -0.0000028175,0.0000028197,0.0000028282,0.0000028365,0.0000028374, -0.0000028331,0.0000028268,0.0000028188,0.0000028105,0.0000028050, -0.0000028041,0.0000028088,0.0000028161,0.0000028205,0.0000028192, -0.0000028124,0.0000028037,0.0000027989,0.0000027977,0.0000027979, -0.0000028009,0.0000028065,0.0000028127,0.0000028217,0.0000028369, -0.0000028562,0.0000028736,0.0000028847,0.0000028903,0.0000028929, -0.0000028942,0.0000028947,0.0000028946,0.0000028930,0.0000028889, -0.0000028843,0.0000028828,0.0000028834,0.0000028874,0.0000028954, -0.0000029054,0.0000029145,0.0000029202,0.0000029226,0.0000029233, -0.0000029249,0.0000029276,0.0000029295,0.0000029288,0.0000029244, -0.0000029176,0.0000029108,0.0000029057,0.0000029019,0.0000028971, -0.0000028895,0.0000028810,0.0000028746,0.0000028715,0.0000028715, -0.0000028744,0.0000028790,0.0000028827,0.0000028855,0.0000028883, -0.0000028912,0.0000028935,0.0000028960,0.0000028982,0.0000028980, -0.0000028946,0.0000028900,0.0000028871,0.0000028863,0.0000028850, -0.0000028814,0.0000028772,0.0000028735,0.0000028713,0.0000028719, -0.0000028772,0.0000028863,0.0000028930,0.0000028940,0.0000028916, -0.0000028888,0.0000028884,0.0000028900,0.0000028913,0.0000028921, -0.0000028937,0.0000028946,0.0000028907,0.0000028809,0.0000028686, -0.0000028567,0.0000028478,0.0000028442,0.0000028437,0.0000028441, -0.0000028430,0.0000028410,0.0000028378,0.0000028367,0.0000028412, -0.0000028492,0.0000028559,0.0000028598,0.0000028635,0.0000028685, -0.0000028737,0.0000028784,0.0000028834,0.0000028879,0.0000028909, -0.0000028919,0.0000028891,0.0000028826,0.0000028758,0.0000028725, -0.0000028731,0.0000028747,0.0000028748,0.0000028741,0.0000028716, -0.0000028634,0.0000028535,0.0000028436,0.0000028353,0.0000028287, -0.0000028196,0.0000028092,0.0000028027,0.0000028015,0.0000028064, -0.0000028144,0.0000028257,0.0000028356,0.0000028414,0.0000028453, -0.0000028482,0.0000028480,0.0000028455,0.0000028434,0.0000028416, -0.0000028393,0.0000028402,0.0000028457,0.0000028504,0.0000028536, -0.0000028558,0.0000028577,0.0000028553,0.0000028442,0.0000028345, -0.0000028332,0.0000028342,0.0000028301,0.0000028183,0.0000028133, -0.0000028161,0.0000028216,0.0000028223,0.0000028201,0.0000028189, -0.0000028204,0.0000028208,0.0000028113,0.0000027953,0.0000027834, -0.0000027797,0.0000027824,0.0000027912,0.0000028000,0.0000028047, -0.0000028074,0.0000028104,0.0000028145,0.0000028190,0.0000028232, -0.0000028278,0.0000028310,0.0000028331,0.0000028338,0.0000028322, -0.0000028278,0.0000028242,0.0000028263,0.0000028351,0.0000028424, -0.0000028431,0.0000028407,0.0000028389,0.0000028365,0.0000028218, -0.0000028013,0.0000028093,0.0000028326,0.0000028480,0.0000028614, -0.0000028774,0.0000028859,0.0000028851,0.0000028843,0.0000028888, -0.0000028958,0.0000028965,0.0000028936,0.0000028874,0.0000028796, -0.0000028753,0.0000028734,0.0000028710,0.0000028714,0.0000028762, -0.0000028823,0.0000028871,0.0000028875,0.0000028853,0.0000028764, -0.0000028625,0.0000028543,0.0000028519,0.0000028543,0.0000028693, -0.0000028904,0.0000028834,0.0000028571,0.0000028394,0.0000028487, -0.0000028766,0.0000028863,0.0000028783,0.0000028662,0.0000028625, -0.0000028654,0.0000028668,0.0000028687,0.0000028703,0.0000028649, -0.0000028554,0.0000028468,0.0000028394,0.0000028327,0.0000028299, -0.0000028322,0.0000028387,0.0000028450,0.0000028505,0.0000028557, -0.0000028578,0.0000028537,0.0000028484,0.0000028460,0.0000028481, -0.0000028522,0.0000028549,0.0000028547,0.0000028533,0.0000028513, -0.0000028489,0.0000028465,0.0000028429,0.0000028363,0.0000028267, -0.0000028172,0.0000028095,0.0000028034,0.0000027991,0.0000027957, -0.0000027942,0.0000027930,0.0000027909,0.0000027883,0.0000027877, -0.0000027902,0.0000027955,0.0000028019,0.0000028058,0.0000028042, -0.0000027966,0.0000027876,0.0000027833,0.0000027834,0.0000027837, -0.0000027842,0.0000027892,0.0000027952,0.0000028010,0.0000028108, -0.0000028181,0.0000028287,0.0000028495,0.0000028639,0.0000028655, -0.0000028625,0.0000028568,0.0000028478,0.0000028387,0.0000028331, -0.0000028299,0.0000028279,0.0000028270,0.0000028256,0.0000028220, -0.0000028160,0.0000028071,0.0000027941,0.0000027795,0.0000027674, -0.0000027642,0.0000027706,0.0000027857,0.0000028020,0.0000028124, -0.0000028174,0.0000028213,0.0000028229,0.0000028223,0.0000028169, -0.0000028062,0.0000027938,0.0000027849,0.0000027831,0.0000027876, -0.0000027956,0.0000028061,0.0000028158,0.0000028235,0.0000028302, -0.0000028366,0.0000028406,0.0000028428,0.0000028446,0.0000028453, -0.0000028447,0.0000028441,0.0000028446,0.0000028492,0.0000028551, -0.0000028569,0.0000028548,0.0000028511,0.0000028478,0.0000028437, -0.0000028379,0.0000028314,0.0000028236,0.0000028171,0.0000028138, -0.0000028111,0.0000028059,0.0000028003,0.0000027981,0.0000027996, -0.0000028003,0.0000027965,0.0000027865,0.0000027745,0.0000027694, -0.0000027762,0.0000027886,0.0000027959,0.0000028079,0.0000028270, -0.0000028394,0.0000028438,0.0000028412,0.0000028440,0.0000028473, -0.0000028518,0.0000028618,0.0000028680,0.0000028674,0.0000028627, -0.0000028595,0.0000028619,0.0000028696,0.0000028806,0.0000028893, -0.0000028855,0.0000028750,0.0000028508,0.0000028307,0.0000028281, -0.0000028257,0.0000028285,0.0000028454,0.0000028619,0.0000028690, -0.0000028682,0.0000028535,0.0000028453,0.0000028457,0.0000028456, -0.0000028412,0.0000028339,0.0000028333,0.0000028394,0.0000028427, -0.0000028402,0.0000028384,0.0000028373,0.0000028400,0.0000028431, -0.0000028414,0.0000028351,0.0000028267,0.0000028210,0.0000028190, -0.0000028155,0.0000028104,0.0000028046,0.0000027998,0.0000027975, -0.0000027952,0.0000027941,0.0000027933,0.0000027969,0.0000028041, -0.0000028109,0.0000028151,0.0000028171,0.0000028171,0.0000028106, -0.0000027973,0.0000027901,0.0000027867,0.0000027860,0.0000027968, -0.0000028055,0.0000028074,0.0000028026,0.0000027861,0.0000027712, -0.0000027642,0.0000027600,0.0000027529,0.0000027470,0.0000027457, -0.0000027478,0.0000027478,0.0000027458,0.0000027439,0.0000027373, -0.0000027254,0.0000027163,0.0000027157,0.0000027216,0.0000027267, -0.0000027278,0.0000027267,0.0000027255,0.0000027251,0.0000027258, -0.0000027269,0.0000027287,0.0000027307,0.0000027331,0.0000027354, -0.0000027360,0.0000027360,0.0000027360,0.0000027349,0.0000027320, -0.0000027282,0.0000027226,0.0000027166,0.0000027126,0.0000027111, -0.0000027115,0.0000027122,0.0000027124,0.0000027115,0.0000027092, -0.0000027067,0.0000027060,0.0000027069,0.0000027095,0.0000027114, -0.0000027119,0.0000027124,0.0000027124,0.0000027114,0.0000027090, -0.0000027069,0.0000027072,0.0000027110,0.0000027161,0.0000027195, -0.0000027194,0.0000027162,0.0000027129,0.0000027108,0.0000027087, -0.0000027028,0.0000026926,0.0000026825,0.0000026785,0.0000026810, -0.0000026870,0.0000026957,0.0000027016,0.0000027014,0.0000026979, -0.0000026956,0.0000026956,0.0000026973,0.0000027006,0.0000027056, -0.0000027097,0.0000027098,0.0000027132,0.0000027269,0.0000027485, -0.0000027645,0.0000027710,0.0000027782,0.0000027923,0.0000028169, -0.0000028343,0.0000028295,0.0000028143,0.0000028105,0.0000028136, -0.0000028123,0.0000028016,0.0000027939,0.0000027952,0.0000028008, -0.0000028094,0.0000028187,0.0000028234,0.0000028173,0.0000028088, -0.0000028000,0.0000027783,0.0000027662,0.0000027782,0.0000027937, -0.0000028086,0.0000028213,0.0000028089,0.0000028176,0.0000028455, -0.0000028570,0.0000028601,0.0000028614,0.0000028619,0.0000028664, -0.0000028731,0.0000028707,0.0000028565,0.0000028418,0.0000028285, -0.0000028069,0.0000028017,0.0000027991,0.0000027928,0.0000027916, -0.0000027957,0.0000027932,0.0000027833,0.0000027677,0.0000027632, -0.0000027652,0.0000027664,0.0000027692,0.0000027696,0.0000027690, -0.0000027674,0.0000027621,0.0000027572,0.0000027535,0.0000027487, -0.0000027471,0.0000027501,0.0000027557,0.0000027603,0.0000027597, -0.0000027524,0.0000027408,0.0000027319,0.0000027285,0.0000027301, -0.0000027318,0.0000027324,0.0000027314,0.0000027300,0.0000027285, -0.0000027280,0.0000027278,0.0000027293,0.0000027303,0.0000027318, -0.0000027334,0.0000027325,0.0000027311,0.0000027286,0.0000027271, -0.0000027264,0.0000027253,0.0000027262,0.0000027291,0.0000027300, -0.0000027316,0.0000027325,0.0000027333,0.0000027335,0.0000027334, -0.0000027318,0.0000027296,0.0000027254,0.0000027220,0.0000027206, -0.0000027203,0.0000027186,0.0000027203,0.0000027228,0.0000027258, -0.0000027251,0.0000027252,0.0000027250,0.0000027278,0.0000027304, -0.0000027326,0.0000027344,0.0000027355,0.0000027346,0.0000027346, -0.0000027367,0.0000027398,0.0000027418,0.0000027436,0.0000027430, -0.0000027388,0.0000027318,0.0000027234,0.0000027176,0.0000027148, -0.0000027129,0.0000027124,0.0000027143,0.0000027225,0.0000027392, -0.0000027627,0.0000027842,0.0000027911,0.0000027931,0.0000027986, -0.0000028057,0.0000028113,0.0000028121,0.0000028105,0.0000028136, -0.0000028239,0.0000028362,0.0000028466,0.0000028524,0.0000028547, -0.0000028534,0.0000028474,0.0000028423,0.0000028434,0.0000028489, -0.0000028536,0.0000028555,0.0000028547,0.0000028498,0.0000028381, -0.0000028265,0.0000028219,0.0000028247,0.0000028259,0.0000028268, -0.0000028313,0.0000028395,0.0000028472,0.0000028521,0.0000028539, -0.0000028498,0.0000028415,0.0000028345,0.0000028298,0.0000028262, -0.0000028220,0.0000028164,0.0000028101,0.0000028041,0.0000027997, -0.0000027978,0.0000027982,0.0000027988,0.0000027962,0.0000027888, -0.0000027790,0.0000027711,0.0000027675,0.0000027682,0.0000027712, -0.0000027728,0.0000027735,0.0000027755,0.0000027791,0.0000027838, -0.0000027894,0.0000027959,0.0000028048,0.0000028157,0.0000028279, -0.0000028396,0.0000028499,0.0000028576,0.0000028611,0.0000028602, -0.0000028600,0.0000028642,0.0000028675,0.0000028614,0.0000028356, -0.0000028104,0.0000028070,0.0000028196,0.0000028271,0.0000028256, -0.0000028235,0.0000028259,0.0000028317,0.0000028340,0.0000028314, -0.0000028267,0.0000028205,0.0000028129,0.0000028064,0.0000028039, -0.0000028064,0.0000028135,0.0000028193,0.0000028208,0.0000028162, -0.0000028065,0.0000027984,0.0000027953,0.0000027948,0.0000027960, -0.0000028004,0.0000028062,0.0000028150,0.0000028310,0.0000028523, -0.0000028719,0.0000028854,0.0000028925,0.0000028953,0.0000028960, -0.0000028961,0.0000028960,0.0000028955,0.0000028932,0.0000028884, -0.0000028841,0.0000028822,0.0000028823,0.0000028860,0.0000028924, -0.0000029009,0.0000029100,0.0000029168,0.0000029198,0.0000029204, -0.0000029209,0.0000029225,0.0000029241,0.0000029242,0.0000029216, -0.0000029155,0.0000029092,0.0000029057,0.0000029048,0.0000029026, -0.0000028963,0.0000028878,0.0000028813,0.0000028782,0.0000028779, -0.0000028803,0.0000028840,0.0000028864,0.0000028872,0.0000028884, -0.0000028908,0.0000028930,0.0000028957,0.0000028993,0.0000029009, -0.0000028997,0.0000028968,0.0000028946,0.0000028932,0.0000028907, -0.0000028855,0.0000028792,0.0000028734,0.0000028700,0.0000028707, -0.0000028773,0.0000028873,0.0000028950,0.0000028969,0.0000028950, -0.0000028915,0.0000028893,0.0000028885,0.0000028882,0.0000028890, -0.0000028919,0.0000028936,0.0000028900,0.0000028797,0.0000028672, -0.0000028563,0.0000028492,0.0000028466,0.0000028482,0.0000028506, -0.0000028508,0.0000028483,0.0000028463,0.0000028459,0.0000028483, -0.0000028542,0.0000028591,0.0000028616,0.0000028642,0.0000028685, -0.0000028735,0.0000028772,0.0000028803,0.0000028842,0.0000028873, -0.0000028892,0.0000028885,0.0000028849,0.0000028794,0.0000028739, -0.0000028717,0.0000028735,0.0000028769,0.0000028801,0.0000028810, -0.0000028763,0.0000028657,0.0000028532,0.0000028429,0.0000028339, -0.0000028256,0.0000028152,0.0000028050,0.0000028012,0.0000028038, -0.0000028117,0.0000028198,0.0000028299,0.0000028380,0.0000028409, -0.0000028434,0.0000028435,0.0000028420,0.0000028396,0.0000028385, -0.0000028378,0.0000028370,0.0000028401,0.0000028467,0.0000028508, -0.0000028516,0.0000028486,0.0000028464,0.0000028463,0.0000028410, -0.0000028353,0.0000028356,0.0000028371,0.0000028319,0.0000028202, -0.0000028166,0.0000028193,0.0000028253,0.0000028275,0.0000028246, -0.0000028198,0.0000028214,0.0000028266,0.0000028222,0.0000028071, -0.0000027924,0.0000027849,0.0000027853,0.0000027914,0.0000027988, -0.0000028041,0.0000028078,0.0000028116,0.0000028162,0.0000028208, -0.0000028250,0.0000028294,0.0000028330,0.0000028353,0.0000028359, -0.0000028343,0.0000028308,0.0000028295,0.0000028333,0.0000028399, -0.0000028450,0.0000028476,0.0000028491,0.0000028483,0.0000028387, -0.0000028182,0.0000028077,0.0000028228,0.0000028409,0.0000028540, -0.0000028684,0.0000028804,0.0000028825,0.0000028793,0.0000028801, -0.0000028873,0.0000028952,0.0000028958,0.0000028928,0.0000028848, -0.0000028737,0.0000028667,0.0000028622,0.0000028598,0.0000028620, -0.0000028693,0.0000028773,0.0000028822,0.0000028823,0.0000028792, -0.0000028714,0.0000028599,0.0000028524,0.0000028510,0.0000028589, -0.0000028824,0.0000028913,0.0000028710,0.0000028499,0.0000028441, -0.0000028688,0.0000028892,0.0000028866,0.0000028729,0.0000028652, -0.0000028670,0.0000028727,0.0000028745,0.0000028756,0.0000028744, -0.0000028655,0.0000028525,0.0000028432,0.0000028368,0.0000028305, -0.0000028252,0.0000028225,0.0000028255,0.0000028324,0.0000028402, -0.0000028469,0.0000028502,0.0000028483,0.0000028405,0.0000028354, -0.0000028360,0.0000028427,0.0000028475,0.0000028483,0.0000028485, -0.0000028492,0.0000028495,0.0000028498,0.0000028505,0.0000028505, -0.0000028483,0.0000028442,0.0000028386,0.0000028309,0.0000028229, -0.0000028155,0.0000028089,0.0000028031,0.0000027977,0.0000027928, -0.0000027898,0.0000027895,0.0000027929,0.0000027989,0.0000028045, -0.0000028059,0.0000028019,0.0000027952,0.0000027903,0.0000027893, -0.0000027900,0.0000027890,0.0000027883,0.0000027931,0.0000028000, -0.0000028090,0.0000028190,0.0000028258,0.0000028405,0.0000028591, -0.0000028657,0.0000028647,0.0000028625,0.0000028577,0.0000028492, -0.0000028403,0.0000028342,0.0000028312,0.0000028311,0.0000028318, -0.0000028312,0.0000028279,0.0000028228,0.0000028158,0.0000028062, -0.0000027948,0.0000027831,0.0000027763,0.0000027780,0.0000027900, -0.0000028039,0.0000028111,0.0000028113,0.0000028116,0.0000028138, -0.0000028186,0.0000028194,0.0000028165,0.0000028090,0.0000028021, -0.0000027985,0.0000027980,0.0000028004,0.0000028092,0.0000028193, -0.0000028286,0.0000028361,0.0000028422,0.0000028453,0.0000028467, -0.0000028480,0.0000028487,0.0000028491,0.0000028494,0.0000028494, -0.0000028516,0.0000028558,0.0000028571,0.0000028549,0.0000028507, -0.0000028465,0.0000028414,0.0000028355,0.0000028298,0.0000028235, -0.0000028187,0.0000028166,0.0000028139,0.0000028092,0.0000028057, -0.0000028056,0.0000028068,0.0000028057,0.0000027985,0.0000027859, -0.0000027722,0.0000027677,0.0000027748,0.0000027855,0.0000027920, -0.0000028077,0.0000028290,0.0000028407,0.0000028453,0.0000028455, -0.0000028502,0.0000028539,0.0000028578,0.0000028658,0.0000028703, -0.0000028686,0.0000028640,0.0000028599,0.0000028606,0.0000028683, -0.0000028808,0.0000028900,0.0000028844,0.0000028747,0.0000028503, -0.0000028330,0.0000028326,0.0000028308,0.0000028336,0.0000028501, -0.0000028674,0.0000028745,0.0000028720,0.0000028560,0.0000028444, -0.0000028409,0.0000028402,0.0000028386,0.0000028307,0.0000028297, -0.0000028333,0.0000028349,0.0000028313,0.0000028310,0.0000028290, -0.0000028302,0.0000028313,0.0000028289,0.0000028230,0.0000028175, -0.0000028154,0.0000028165,0.0000028156,0.0000028122,0.0000028085, -0.0000028050,0.0000028019,0.0000028001,0.0000027969,0.0000027943, -0.0000027967,0.0000028022,0.0000028071,0.0000028105,0.0000028111, -0.0000028061,0.0000027963,0.0000027888,0.0000027851,0.0000027822, -0.0000027864,0.0000027967,0.0000028024,0.0000028026,0.0000027925, -0.0000027771,0.0000027663,0.0000027573,0.0000027489,0.0000027420, -0.0000027400,0.0000027433,0.0000027456,0.0000027458,0.0000027443, -0.0000027420,0.0000027311,0.0000027173,0.0000027134,0.0000027174, -0.0000027246,0.0000027276,0.0000027274,0.0000027290,0.0000027321, -0.0000027374,0.0000027420,0.0000027456,0.0000027475,0.0000027483, -0.0000027479,0.0000027462,0.0000027443,0.0000027416,0.0000027395, -0.0000027363,0.0000027330,0.0000027299,0.0000027252,0.0000027194, -0.0000027143,0.0000027111,0.0000027101,0.0000027098,0.0000027100, -0.0000027101,0.0000027086,0.0000027064,0.0000027045,0.0000027042, -0.0000027056,0.0000027090,0.0000027116,0.0000027130,0.0000027138, -0.0000027136,0.0000027123,0.0000027097,0.0000027071,0.0000027067, -0.0000027089,0.0000027132,0.0000027174,0.0000027188,0.0000027177, -0.0000027160,0.0000027162,0.0000027169,0.0000027134,0.0000027045, -0.0000026943,0.0000026892,0.0000026879,0.0000026878,0.0000026913, -0.0000026952,0.0000026959,0.0000026936,0.0000026891,0.0000026857, -0.0000026843,0.0000026868,0.0000026952,0.0000027036,0.0000027067, -0.0000027106,0.0000027231,0.0000027444,0.0000027607,0.0000027691, -0.0000027788,0.0000027984,0.0000028255,0.0000028334,0.0000028225, -0.0000028129,0.0000028144,0.0000028135,0.0000028009,0.0000027915, -0.0000027933,0.0000028012,0.0000028097,0.0000028176,0.0000028224, -0.0000028192,0.0000028079,0.0000028025,0.0000027863,0.0000027682, -0.0000027676,0.0000027824,0.0000027971,0.0000028132,0.0000028133, -0.0000028022,0.0000028173,0.0000028439,0.0000028566,0.0000028613, -0.0000028625,0.0000028620,0.0000028662,0.0000028710,0.0000028655, -0.0000028509,0.0000028391,0.0000028251,0.0000028057,0.0000028023, -0.0000027985,0.0000027916,0.0000027912,0.0000027952,0.0000027916, -0.0000027792,0.0000027647,0.0000027635,0.0000027664,0.0000027691, -0.0000027719,0.0000027708,0.0000027692,0.0000027660,0.0000027604, -0.0000027552,0.0000027492,0.0000027432,0.0000027423,0.0000027460, -0.0000027524,0.0000027554,0.0000027521,0.0000027411,0.0000027296, -0.0000027235,0.0000027231,0.0000027263,0.0000027282,0.0000027281, -0.0000027261,0.0000027249,0.0000027248,0.0000027250,0.0000027263, -0.0000027279,0.0000027294,0.0000027316,0.0000027338,0.0000027331, -0.0000027311,0.0000027280,0.0000027249,0.0000027231,0.0000027205, -0.0000027206,0.0000027226,0.0000027230,0.0000027254,0.0000027279, -0.0000027304,0.0000027324,0.0000027339,0.0000027337,0.0000027328, -0.0000027289,0.0000027260,0.0000027240,0.0000027232,0.0000027217, -0.0000027229,0.0000027244,0.0000027265,0.0000027252,0.0000027248, -0.0000027234,0.0000027258,0.0000027277,0.0000027297,0.0000027318, -0.0000027337,0.0000027336,0.0000027324,0.0000027322,0.0000027334, -0.0000027348,0.0000027371,0.0000027385,0.0000027374,0.0000027333, -0.0000027248,0.0000027162,0.0000027101,0.0000027057,0.0000027033, -0.0000027011,0.0000027008,0.0000027078,0.0000027224,0.0000027443, -0.0000027700,0.0000027881,0.0000027975,0.0000028048,0.0000028133, -0.0000028176,0.0000028165,0.0000028175,0.0000028258,0.0000028359, -0.0000028439,0.0000028490,0.0000028488,0.0000028455,0.0000028389, -0.0000028338,0.0000028354,0.0000028432,0.0000028489,0.0000028495, -0.0000028472,0.0000028422,0.0000028316,0.0000028211,0.0000028196, -0.0000028251,0.0000028283,0.0000028308,0.0000028363,0.0000028436, -0.0000028491,0.0000028524,0.0000028536,0.0000028498,0.0000028429, -0.0000028364,0.0000028315,0.0000028269,0.0000028224,0.0000028170, -0.0000028111,0.0000028064,0.0000028031,0.0000028031,0.0000028052, -0.0000028068,0.0000028055,0.0000027987,0.0000027885,0.0000027804, -0.0000027768,0.0000027759,0.0000027763,0.0000027756,0.0000027733, -0.0000027712,0.0000027715,0.0000027751,0.0000027815,0.0000027889, -0.0000027973,0.0000028076,0.0000028197,0.0000028320,0.0000028434, -0.0000028529,0.0000028602,0.0000028634,0.0000028629,0.0000028633, -0.0000028666,0.0000028657,0.0000028451,0.0000028178,0.0000028079, -0.0000028162,0.0000028304,0.0000028336,0.0000028313,0.0000028298, -0.0000028316,0.0000028327,0.0000028299,0.0000028256,0.0000028211, -0.0000028142,0.0000028066,0.0000028028,0.0000028042,0.0000028098, -0.0000028163,0.0000028194,0.0000028174,0.0000028098,0.0000028005, -0.0000027943,0.0000027927,0.0000027932,0.0000027959,0.0000028013, -0.0000028103,0.0000028252,0.0000028452,0.0000028648,0.0000028800, -0.0000028904,0.0000028969,0.0000028992,0.0000028989,0.0000028979, -0.0000028970,0.0000028962,0.0000028939,0.0000028900,0.0000028865, -0.0000028841,0.0000028833,0.0000028845,0.0000028877,0.0000028933, -0.0000029014,0.0000029093,0.0000029141,0.0000029153,0.0000029152, -0.0000029158,0.0000029179,0.0000029189,0.0000029173,0.0000029116, -0.0000029059,0.0000029042,0.0000029051,0.0000029058,0.0000029026, -0.0000028954,0.0000028881,0.0000028834,0.0000028817,0.0000028824, -0.0000028837,0.0000028845,0.0000028845,0.0000028846,0.0000028856, -0.0000028880,0.0000028919,0.0000028971,0.0000029008,0.0000029023, -0.0000029022,0.0000029017,0.0000029008,0.0000028973,0.0000028912, -0.0000028831,0.0000028749,0.0000028700,0.0000028708,0.0000028780, -0.0000028882,0.0000028965,0.0000028998,0.0000028987,0.0000028951, -0.0000028917,0.0000028886,0.0000028865,0.0000028875,0.0000028908, -0.0000028928,0.0000028903,0.0000028813,0.0000028693,0.0000028590, -0.0000028528,0.0000028522,0.0000028551,0.0000028589,0.0000028609, -0.0000028600,0.0000028578,0.0000028582,0.0000028598,0.0000028622, -0.0000028644,0.0000028654,0.0000028662,0.0000028693,0.0000028732, -0.0000028769,0.0000028792,0.0000028806,0.0000028825,0.0000028834, -0.0000028844,0.0000028831,0.0000028801,0.0000028742,0.0000028691, -0.0000028690,0.0000028727,0.0000028780,0.0000028816,0.0000028806, -0.0000028721,0.0000028607,0.0000028496,0.0000028409,0.0000028331, -0.0000028246,0.0000028140,0.0000028070,0.0000028083,0.0000028169, -0.0000028271,0.0000028350,0.0000028428,0.0000028477,0.0000028474, -0.0000028465,0.0000028455,0.0000028433,0.0000028400,0.0000028379, -0.0000028366,0.0000028367,0.0000028416,0.0000028482,0.0000028513, -0.0000028506,0.0000028437,0.0000028374,0.0000028377,0.0000028365, -0.0000028350,0.0000028370,0.0000028390,0.0000028328,0.0000028219, -0.0000028191,0.0000028218,0.0000028269,0.0000028308,0.0000028298, -0.0000028243,0.0000028249,0.0000028315,0.0000028331,0.0000028229, -0.0000028081,0.0000027973,0.0000027938,0.0000027960,0.0000028006, -0.0000028054,0.0000028091,0.0000028134,0.0000028185,0.0000028240, -0.0000028292,0.0000028332,0.0000028361,0.0000028372,0.0000028364, -0.0000028345,0.0000028336,0.0000028357,0.0000028409,0.0000028462, -0.0000028517,0.0000028570,0.0000028589,0.0000028530,0.0000028352, -0.0000028169,0.0000028189,0.0000028350,0.0000028488,0.0000028612, -0.0000028751,0.0000028812,0.0000028782,0.0000028748,0.0000028769, -0.0000028858,0.0000028936,0.0000028944,0.0000028917,0.0000028823, -0.0000028677,0.0000028569,0.0000028511,0.0000028502,0.0000028549, -0.0000028632,0.0000028721,0.0000028774,0.0000028769,0.0000028738, -0.0000028691,0.0000028603,0.0000028525,0.0000028522,0.0000028690, -0.0000028907,0.0000028851,0.0000028603,0.0000028479,0.0000028559, -0.0000028858,0.0000028940,0.0000028832,0.0000028685,0.0000028657, -0.0000028718,0.0000028779,0.0000028790,0.0000028791,0.0000028754, -0.0000028640,0.0000028507,0.0000028409,0.0000028333,0.0000028270, -0.0000028235,0.0000028212,0.0000028182,0.0000028167,0.0000028228, -0.0000028331,0.0000028397,0.0000028417,0.0000028352,0.0000028238, -0.0000028187,0.0000028227,0.0000028308,0.0000028353,0.0000028400, -0.0000028463,0.0000028511,0.0000028519,0.0000028512,0.0000028503, -0.0000028501,0.0000028510,0.0000028525,0.0000028516,0.0000028471, -0.0000028405,0.0000028322,0.0000028234,0.0000028143,0.0000028045, -0.0000027949,0.0000027888,0.0000027877,0.0000027907,0.0000027950, -0.0000027975,0.0000027973,0.0000027954,0.0000027946,0.0000027953, -0.0000027964,0.0000027959,0.0000027928,0.0000027933,0.0000028012, -0.0000028111,0.0000028207,0.0000028269,0.0000028351,0.0000028522, -0.0000028632,0.0000028640,0.0000028637,0.0000028630,0.0000028585, -0.0000028508,0.0000028438,0.0000028388,0.0000028356,0.0000028352, -0.0000028358,0.0000028348,0.0000028318,0.0000028282,0.0000028237, -0.0000028173,0.0000028084,0.0000027982,0.0000027914,0.0000027914, -0.0000027992,0.0000028099,0.0000028146,0.0000028120,0.0000028063, -0.0000028036,0.0000028066,0.0000028129,0.0000028162,0.0000028171, -0.0000028172,0.0000028175,0.0000028167,0.0000028153,0.0000028177, -0.0000028242,0.0000028322,0.0000028392,0.0000028448,0.0000028485, -0.0000028503,0.0000028515,0.0000028526,0.0000028532,0.0000028525, -0.0000028501,0.0000028499,0.0000028528,0.0000028558,0.0000028547, -0.0000028506,0.0000028460,0.0000028404,0.0000028347,0.0000028302, -0.0000028261,0.0000028238,0.0000028237,0.0000028228,0.0000028206, -0.0000028189,0.0000028177,0.0000028158,0.0000028118,0.0000028034, -0.0000027891,0.0000027726,0.0000027672,0.0000027746,0.0000027855, -0.0000027928,0.0000028117,0.0000028342,0.0000028452,0.0000028498, -0.0000028516,0.0000028577,0.0000028629,0.0000028672,0.0000028737, -0.0000028751,0.0000028712,0.0000028648,0.0000028585,0.0000028581, -0.0000028663,0.0000028799,0.0000028901,0.0000028851,0.0000028763, -0.0000028529,0.0000028373,0.0000028377,0.0000028359,0.0000028379, -0.0000028546,0.0000028733,0.0000028809,0.0000028772,0.0000028611, -0.0000028466,0.0000028386,0.0000028357,0.0000028348,0.0000028307, -0.0000028290,0.0000028301,0.0000028289,0.0000028243,0.0000028239, -0.0000028214,0.0000028206,0.0000028197,0.0000028151,0.0000028081, -0.0000028032,0.0000028029,0.0000028071,0.0000028092,0.0000028086, -0.0000028069,0.0000028051,0.0000028028,0.0000028008,0.0000027970, -0.0000027934,0.0000027940,0.0000027973,0.0000027997,0.0000028009, -0.0000027973,0.0000027904,0.0000027850,0.0000027843,0.0000027811, -0.0000027818,0.0000027912,0.0000027975,0.0000027993,0.0000027929, -0.0000027783,0.0000027660,0.0000027574,0.0000027475,0.0000027386, -0.0000027368,0.0000027398,0.0000027459,0.0000027487,0.0000027480, -0.0000027447,0.0000027368,0.0000027262,0.0000027196,0.0000027198, -0.0000027232,0.0000027265,0.0000027282,0.0000027313,0.0000027368, -0.0000027434,0.0000027502,0.0000027563,0.0000027592,0.0000027607, -0.0000027591,0.0000027554,0.0000027497,0.0000027431,0.0000027383, -0.0000027356,0.0000027335,0.0000027323,0.0000027322,0.0000027319, -0.0000027297,0.0000027260,0.0000027230,0.0000027203,0.0000027185, -0.0000027166,0.0000027149,0.0000027131,0.0000027104,0.0000027072, -0.0000027051,0.0000027051,0.0000027075,0.0000027115,0.0000027147, -0.0000027166,0.0000027182,0.0000027192,0.0000027191,0.0000027169, -0.0000027137,0.0000027112,0.0000027105,0.0000027126,0.0000027145, -0.0000027157,0.0000027156,0.0000027161,0.0000027191,0.0000027217, -0.0000027198,0.0000027134,0.0000027057,0.0000027021,0.0000026992, -0.0000026946,0.0000026907,0.0000026891,0.0000026899,0.0000026888, -0.0000026826,0.0000026761,0.0000026722,0.0000026755,0.0000026885, -0.0000027005,0.0000027048,0.0000027075,0.0000027204,0.0000027427, -0.0000027587,0.0000027683,0.0000027815,0.0000028080,0.0000028317, -0.0000028297,0.0000028177,0.0000028160,0.0000028163,0.0000028034, -0.0000027912,0.0000027919,0.0000028012,0.0000028095,0.0000028173, -0.0000028221,0.0000028198,0.0000028074,0.0000027995,0.0000027926, -0.0000027737,0.0000027639,0.0000027711,0.0000027865,0.0000027994, -0.0000028137,0.0000028040,0.0000027979,0.0000028164,0.0000028419, -0.0000028563,0.0000028625,0.0000028627,0.0000028609,0.0000028647, -0.0000028676,0.0000028602,0.0000028466,0.0000028361,0.0000028210, -0.0000028058,0.0000028031,0.0000027982,0.0000027917,0.0000027924, -0.0000027951,0.0000027900,0.0000027741,0.0000027617,0.0000027638, -0.0000027679,0.0000027719,0.0000027729,0.0000027707,0.0000027689, -0.0000027646,0.0000027576,0.0000027505,0.0000027422,0.0000027372, -0.0000027378,0.0000027421,0.0000027482,0.0000027489,0.0000027424, -0.0000027301,0.0000027212,0.0000027180,0.0000027197,0.0000027223, -0.0000027226,0.0000027207,0.0000027185,0.0000027190,0.0000027209, -0.0000027225,0.0000027247,0.0000027264,0.0000027280,0.0000027307, -0.0000027330,0.0000027327,0.0000027311,0.0000027291,0.0000027268, -0.0000027255,0.0000027234,0.0000027229,0.0000027231,0.0000027229, -0.0000027235,0.0000027241,0.0000027247,0.0000027258,0.0000027272, -0.0000027284,0.0000027293,0.0000027280,0.0000027269,0.0000027267, -0.0000027282,0.0000027288,0.0000027309,0.0000027325,0.0000027330, -0.0000027297,0.0000027280,0.0000027239,0.0000027240,0.0000027238, -0.0000027241,0.0000027245,0.0000027266,0.0000027278,0.0000027272, -0.0000027278,0.0000027289,0.0000027296,0.0000027306,0.0000027326, -0.0000027327,0.0000027313,0.0000027261,0.0000027182,0.0000027096, -0.0000027021,0.0000026981,0.0000026961,0.0000026949,0.0000026939, -0.0000026960,0.0000027073,0.0000027266,0.0000027558,0.0000027855, -0.0000028020,0.0000028109,0.0000028176,0.0000028209,0.0000028222, -0.0000028280,0.0000028356,0.0000028412,0.0000028444,0.0000028432, -0.0000028370,0.0000028297,0.0000028251,0.0000028276,0.0000028367, -0.0000028439,0.0000028443,0.0000028405,0.0000028349,0.0000028257, -0.0000028165,0.0000028176,0.0000028254,0.0000028314,0.0000028348, -0.0000028405,0.0000028462,0.0000028499,0.0000028515,0.0000028515, -0.0000028486,0.0000028438,0.0000028392,0.0000028344,0.0000028295, -0.0000028245,0.0000028184,0.0000028128,0.0000028090,0.0000028088, -0.0000028118,0.0000028157,0.0000028166,0.0000028140,0.0000028073, -0.0000027987,0.0000027920,0.0000027894,0.0000027889,0.0000027886, -0.0000027865,0.0000027811,0.0000027746,0.0000027707,0.0000027704, -0.0000027746,0.0000027819,0.0000027906,0.0000028006,0.0000028123, -0.0000028248,0.0000028363,0.0000028469,0.0000028565,0.0000028636, -0.0000028654,0.0000028645,0.0000028653,0.0000028660,0.0000028509, -0.0000028237,0.0000028100,0.0000028147,0.0000028307,0.0000028399, -0.0000028397,0.0000028365,0.0000028350,0.0000028336,0.0000028298, -0.0000028253,0.0000028222,0.0000028166,0.0000028073,0.0000028009, -0.0000028011,0.0000028062,0.0000028121,0.0000028156,0.0000028148, -0.0000028098,0.0000028026,0.0000027960,0.0000027918,0.0000027913, -0.0000027928,0.0000027970,0.0000028065,0.0000028219,0.0000028390, -0.0000028547,0.0000028683,0.0000028807,0.0000028911,0.0000028979, -0.0000029002,0.0000028998,0.0000028985,0.0000028973,0.0000028964, -0.0000028950,0.0000028930,0.0000028908,0.0000028882,0.0000028859, -0.0000028838,0.0000028831,0.0000028846,0.0000028895,0.0000028969, -0.0000029034,0.0000029066,0.0000029071,0.0000029076,0.0000029102, -0.0000029125,0.0000029119,0.0000029078,0.0000029026,0.0000029008, -0.0000029023,0.0000029048,0.0000029041,0.0000028997,0.0000028932, -0.0000028876,0.0000028845,0.0000028839,0.0000028835,0.0000028824, -0.0000028816,0.0000028815,0.0000028816,0.0000028829,0.0000028864, -0.0000028923,0.0000028989,0.0000029040,0.0000029069,0.0000029080, -0.0000029076,0.0000029038,0.0000028971,0.0000028879,0.0000028783, -0.0000028722,0.0000028725,0.0000028792,0.0000028890,0.0000028978, -0.0000029024,0.0000029024,0.0000028991,0.0000028944,0.0000028898, -0.0000028868,0.0000028872,0.0000028905,0.0000028931,0.0000028919, -0.0000028847,0.0000028737,0.0000028635,0.0000028589,0.0000028602, -0.0000028651,0.0000028689,0.0000028708,0.0000028711,0.0000028701, -0.0000028687,0.0000028700,0.0000028708,0.0000028703,0.0000028689, -0.0000028686,0.0000028700,0.0000028729,0.0000028761,0.0000028787, -0.0000028797,0.0000028797,0.0000028798,0.0000028793,0.0000028789, -0.0000028769,0.0000028727,0.0000028671,0.0000028639,0.0000028652, -0.0000028693,0.0000028740,0.0000028754,0.0000028715,0.0000028632, -0.0000028549,0.0000028481,0.0000028434,0.0000028381,0.0000028302, -0.0000028215,0.0000028196,0.0000028259,0.0000028374,0.0000028477, -0.0000028541,0.0000028578,0.0000028582,0.0000028546,0.0000028522, -0.0000028520,0.0000028504,0.0000028472,0.0000028445,0.0000028421, -0.0000028411,0.0000028448,0.0000028497,0.0000028515,0.0000028498, -0.0000028414,0.0000028327,0.0000028304,0.0000028309,0.0000028324, -0.0000028366,0.0000028391,0.0000028329,0.0000028246,0.0000028229, -0.0000028254,0.0000028285,0.0000028333,0.0000028352,0.0000028314, -0.0000028311,0.0000028372,0.0000028418,0.0000028378,0.0000028273, -0.0000028160,0.0000028075,0.0000028047,0.0000028064,0.0000028091, -0.0000028112,0.0000028150,0.0000028206,0.0000028278,0.0000028340, -0.0000028373,0.0000028384,0.0000028377,0.0000028359,0.0000028350, -0.0000028374,0.0000028430,0.0000028503,0.0000028577,0.0000028643, -0.0000028678,0.0000028643,0.0000028505,0.0000028309,0.0000028230, -0.0000028323,0.0000028446,0.0000028564,0.0000028688,0.0000028797, -0.0000028808,0.0000028742,0.0000028715,0.0000028747,0.0000028838, -0.0000028912,0.0000028929,0.0000028904,0.0000028804,0.0000028625, -0.0000028474,0.0000028414,0.0000028432,0.0000028499,0.0000028582, -0.0000028671,0.0000028735,0.0000028728,0.0000028705,0.0000028688, -0.0000028616,0.0000028534,0.0000028559,0.0000028786,0.0000028916, -0.0000028751,0.0000028537,0.0000028481,0.0000028696,0.0000028972, -0.0000028963,0.0000028784,0.0000028663,0.0000028677,0.0000028755, -0.0000028804,0.0000028799,0.0000028793,0.0000028734,0.0000028610, -0.0000028498,0.0000028413,0.0000028327,0.0000028244,0.0000028197, -0.0000028193,0.0000028181,0.0000028108,0.0000028056,0.0000028109, -0.0000028235,0.0000028324,0.0000028326,0.0000028225,0.0000028073, -0.0000028019,0.0000028069,0.0000028146,0.0000028246,0.0000028388, -0.0000028495,0.0000028550,0.0000028558,0.0000028535,0.0000028498, -0.0000028476,0.0000028485,0.0000028510,0.0000028515,0.0000028509, -0.0000028476,0.0000028421,0.0000028348,0.0000028261,0.0000028151, -0.0000028031,0.0000027932,0.0000027891,0.0000027882,0.0000027884, -0.0000027897,0.0000027926,0.0000027966,0.0000028009,0.0000028039, -0.0000028036,0.0000027994,0.0000027972,0.0000028048,0.0000028165, -0.0000028252,0.0000028301,0.0000028342,0.0000028462,0.0000028588, -0.0000028616,0.0000028622,0.0000028632,0.0000028615,0.0000028557, -0.0000028498,0.0000028462,0.0000028441,0.0000028421,0.0000028410, -0.0000028404,0.0000028384,0.0000028356,0.0000028332,0.0000028305, -0.0000028259,0.0000028191,0.0000028121,0.0000028079,0.0000028075, -0.0000028115,0.0000028176,0.0000028203,0.0000028169,0.0000028083, -0.0000028025,0.0000028007,0.0000028040,0.0000028092,0.0000028161, -0.0000028216,0.0000028287,0.0000028326,0.0000028322,0.0000028319, -0.0000028348,0.0000028402,0.0000028451,0.0000028498,0.0000028533, -0.0000028543,0.0000028542,0.0000028544,0.0000028542,0.0000028526, -0.0000028480,0.0000028457,0.0000028485,0.0000028530,0.0000028535, -0.0000028503,0.0000028458,0.0000028401,0.0000028359,0.0000028338, -0.0000028324,0.0000028329,0.0000028354,0.0000028369,0.0000028363, -0.0000028336,0.0000028289,0.0000028232,0.0000028164,0.0000028092, -0.0000027967,0.0000027787,0.0000027703,0.0000027769,0.0000027879, -0.0000027981,0.0000028201,0.0000028414,0.0000028501,0.0000028542, -0.0000028570,0.0000028642,0.0000028724,0.0000028782,0.0000028835, -0.0000028840,0.0000028770,0.0000028678,0.0000028579,0.0000028565, -0.0000028635,0.0000028778,0.0000028886,0.0000028857,0.0000028783, -0.0000028567,0.0000028421,0.0000028424,0.0000028397,0.0000028405, -0.0000028583,0.0000028787,0.0000028879,0.0000028846,0.0000028695, -0.0000028531,0.0000028395,0.0000028336,0.0000028309,0.0000028304, -0.0000028292,0.0000028290,0.0000028250,0.0000028203,0.0000028183, -0.0000028157,0.0000028123,0.0000028101,0.0000028036,0.0000027957, -0.0000027913,0.0000027910,0.0000027947,0.0000027964,0.0000027960, -0.0000027953,0.0000027952,0.0000027937,0.0000027909,0.0000027877, -0.0000027837,0.0000027837,0.0000027850,0.0000027861,0.0000027854, -0.0000027835,0.0000027821,0.0000027817,0.0000027795,0.0000027800, -0.0000027884,0.0000027957,0.0000027974,0.0000027933,0.0000027791, -0.0000027644,0.0000027567,0.0000027494,0.0000027403,0.0000027359, -0.0000027377,0.0000027438,0.0000027491,0.0000027531,0.0000027531, -0.0000027455,0.0000027360,0.0000027300,0.0000027319,0.0000027371, -0.0000027383,0.0000027376,0.0000027390,0.0000027437,0.0000027512, -0.0000027590,0.0000027640,0.0000027696,0.0000027728,0.0000027727, -0.0000027700,0.0000027642,0.0000027567,0.0000027487,0.0000027436, -0.0000027423,0.0000027435,0.0000027457,0.0000027479,0.0000027495, -0.0000027493,0.0000027468,0.0000027429,0.0000027388,0.0000027348, -0.0000027312,0.0000027272,0.0000027234,0.0000027199,0.0000027157, -0.0000027109,0.0000027075,0.0000027073,0.0000027106,0.0000027153, -0.0000027184,0.0000027207,0.0000027232,0.0000027267,0.0000027287, -0.0000027291,0.0000027271,0.0000027227,0.0000027187,0.0000027164, -0.0000027154,0.0000027147,0.0000027140,0.0000027147,0.0000027191, -0.0000027224,0.0000027222,0.0000027178,0.0000027138,0.0000027131, -0.0000027109,0.0000027042,0.0000026933,0.0000026857,0.0000026844, -0.0000026831,0.0000026755,0.0000026664,0.0000026620,0.0000026691, -0.0000026876,0.0000027003,0.0000027021,0.0000027041,0.0000027205, -0.0000027443,0.0000027588,0.0000027688,0.0000027878,0.0000028188, -0.0000028316,0.0000028230,0.0000028173,0.0000028189,0.0000028104, -0.0000027932,0.0000027916,0.0000027989,0.0000028078,0.0000028159, -0.0000028210,0.0000028209,0.0000028079,0.0000027954,0.0000027926, -0.0000027799,0.0000027660,0.0000027634,0.0000027739,0.0000027908, -0.0000028021,0.0000028108,0.0000027955,0.0000027944,0.0000028148, -0.0000028401,0.0000028558,0.0000028627,0.0000028618,0.0000028587, -0.0000028621,0.0000028641,0.0000028553,0.0000028430,0.0000028326, -0.0000028169,0.0000028070,0.0000028040,0.0000027981,0.0000027928, -0.0000027947,0.0000027955,0.0000027877,0.0000027680,0.0000027589, -0.0000027642,0.0000027694,0.0000027732,0.0000027720,0.0000027700, -0.0000027686,0.0000027615,0.0000027517,0.0000027431,0.0000027357, -0.0000027336,0.0000027356,0.0000027395,0.0000027434,0.0000027409, -0.0000027324,0.0000027230,0.0000027179,0.0000027167,0.0000027177, -0.0000027171,0.0000027147,0.0000027119,0.0000027111,0.0000027130, -0.0000027154,0.0000027165,0.0000027171,0.0000027182,0.0000027199, -0.0000027228,0.0000027254,0.0000027262,0.0000027255,0.0000027248, -0.0000027237,0.0000027232,0.0000027237,0.0000027241,0.0000027247, -0.0000027249,0.0000027246,0.0000027238,0.0000027229,0.0000027218, -0.0000027205,0.0000027195,0.0000027188,0.0000027171,0.0000027173, -0.0000027189,0.0000027219,0.0000027244,0.0000027281,0.0000027311, -0.0000027331,0.0000027311,0.0000027320,0.0000027288,0.0000027289, -0.0000027279,0.0000027265,0.0000027244,0.0000027232,0.0000027223, -0.0000027200,0.0000027194,0.0000027205,0.0000027216,0.0000027221, -0.0000027244,0.0000027248,0.0000027241,0.0000027216,0.0000027171, -0.0000027100,0.0000027003,0.0000026917,0.0000026875,0.0000026884, -0.0000026906,0.0000026903,0.0000026892,0.0000026948,0.0000027123, -0.0000027445,0.0000027814,0.0000028046,0.0000028136,0.0000028193, -0.0000028243,0.0000028299,0.0000028362,0.0000028399,0.0000028406, -0.0000028381,0.0000028305,0.0000028219,0.0000028163,0.0000028194, -0.0000028303,0.0000028375,0.0000028377,0.0000028341,0.0000028287, -0.0000028207,0.0000028125,0.0000028151,0.0000028245,0.0000028342, -0.0000028387,0.0000028444,0.0000028491,0.0000028508,0.0000028501, -0.0000028478,0.0000028455,0.0000028436,0.0000028412,0.0000028379, -0.0000028331,0.0000028281,0.0000028215,0.0000028153,0.0000028123, -0.0000028137,0.0000028188,0.0000028248,0.0000028271,0.0000028250, -0.0000028184,0.0000028103,0.0000028047,0.0000028020,0.0000028008, -0.0000027992,0.0000027964,0.0000027905,0.0000027822,0.0000027747, -0.0000027705,0.0000027707,0.0000027749,0.0000027826,0.0000027932, -0.0000028054,0.0000028183,0.0000028304,0.0000028418,0.0000028526, -0.0000028617,0.0000028666,0.0000028675,0.0000028672,0.0000028661, -0.0000028525,0.0000028268,0.0000028117,0.0000028137,0.0000028304, -0.0000028448,0.0000028466,0.0000028441,0.0000028408,0.0000028373, -0.0000028311,0.0000028256,0.0000028232,0.0000028197,0.0000028102, -0.0000028009,0.0000027984,0.0000028024,0.0000028083,0.0000028114, -0.0000028108,0.0000028062,0.0000028003,0.0000027954,0.0000027918, -0.0000027900,0.0000027901,0.0000027925,0.0000028016,0.0000028178, -0.0000028350,0.0000028473,0.0000028568,0.0000028673,0.0000028783, -0.0000028885,0.0000028957,0.0000028990,0.0000028995,0.0000028985, -0.0000028976,0.0000028968,0.0000028958,0.0000028944,0.0000028929, -0.0000028915,0.0000028883,0.0000028837,0.0000028794,0.0000028776, -0.0000028784,0.0000028824,0.0000028881,0.0000028932,0.0000028956, -0.0000028970,0.0000028998,0.0000029034,0.0000029045,0.0000029032, -0.0000028994,0.0000028966,0.0000028972,0.0000029002,0.0000029020, -0.0000029010,0.0000028975,0.0000028928,0.0000028891,0.0000028875, -0.0000028857,0.0000028829,0.0000028814,0.0000028819,0.0000028825, -0.0000028827,0.0000028842,0.0000028893,0.0000028973,0.0000029056, -0.0000029111,0.0000029126,0.0000029123,0.0000029088,0.0000029022, -0.0000028931,0.0000028833,0.0000028765,0.0000028757,0.0000028812, -0.0000028905,0.0000028993,0.0000029049,0.0000029055,0.0000029022, -0.0000028967,0.0000028909,0.0000028869,0.0000028870,0.0000028905, -0.0000028936,0.0000028938,0.0000028885,0.0000028785,0.0000028689, -0.0000028653,0.0000028678,0.0000028741,0.0000028787,0.0000028798, -0.0000028790,0.0000028784,0.0000028771,0.0000028753,0.0000028755, -0.0000028742,0.0000028718,0.0000028703,0.0000028707,0.0000028722, -0.0000028745,0.0000028773,0.0000028792,0.0000028792,0.0000028782, -0.0000028763,0.0000028744,0.0000028721,0.0000028690,0.0000028657, -0.0000028620,0.0000028599,0.0000028599,0.0000028618,0.0000028639, -0.0000028640,0.0000028611,0.0000028578,0.0000028540,0.0000028527, -0.0000028523,0.0000028491,0.0000028411,0.0000028345,0.0000028356, -0.0000028444,0.0000028551,0.0000028632,0.0000028657,0.0000028648, -0.0000028618,0.0000028569,0.0000028553,0.0000028573,0.0000028587, -0.0000028576,0.0000028560,0.0000028534,0.0000028507,0.0000028507, -0.0000028519,0.0000028521,0.0000028494,0.0000028408,0.0000028307, -0.0000028251,0.0000028248,0.0000028288,0.0000028353,0.0000028378, -0.0000028329,0.0000028286,0.0000028288,0.0000028305,0.0000028322, -0.0000028366,0.0000028402,0.0000028399,0.0000028400,0.0000028434, -0.0000028476,0.0000028486,0.0000028453,0.0000028363,0.0000028243, -0.0000028168,0.0000028150,0.0000028148,0.0000028156,0.0000028196, -0.0000028259,0.0000028330,0.0000028377,0.0000028389,0.0000028384, -0.0000028366,0.0000028358,0.0000028382,0.0000028454,0.0000028547, -0.0000028643,0.0000028728,0.0000028767,0.0000028729,0.0000028611, -0.0000028447,0.0000028327,0.0000028340,0.0000028425,0.0000028521, -0.0000028640,0.0000028754,0.0000028818,0.0000028792,0.0000028711, -0.0000028692,0.0000028732,0.0000028817,0.0000028887,0.0000028916, -0.0000028895,0.0000028794,0.0000028590,0.0000028398,0.0000028339, -0.0000028384,0.0000028471,0.0000028547,0.0000028634,0.0000028710, -0.0000028711,0.0000028695,0.0000028691,0.0000028637,0.0000028558, -0.0000028614,0.0000028844,0.0000028892,0.0000028658,0.0000028502, -0.0000028501,0.0000028819,0.0000029049,0.0000028987,0.0000028756, -0.0000028662,0.0000028698,0.0000028778,0.0000028807,0.0000028787, -0.0000028760,0.0000028691,0.0000028563,0.0000028467,0.0000028403, -0.0000028334,0.0000028255,0.0000028182,0.0000028147,0.0000028135, -0.0000028098,0.0000028013,0.0000027944,0.0000028005,0.0000028164, -0.0000028256,0.0000028245,0.0000028116,0.0000027939,0.0000027880, -0.0000027925,0.0000028013,0.0000028175,0.0000028325,0.0000028422, -0.0000028488,0.0000028528,0.0000028526,0.0000028503,0.0000028480, -0.0000028466,0.0000028471,0.0000028485,0.0000028487,0.0000028486, -0.0000028463,0.0000028413,0.0000028338,0.0000028241,0.0000028134, -0.0000028035,0.0000027963,0.0000027925,0.0000027921,0.0000027957, -0.0000028022,0.0000028090,0.0000028129,0.0000028114,0.0000028061, -0.0000028045,0.0000028127,0.0000028243,0.0000028314,0.0000028344, -0.0000028361,0.0000028436,0.0000028545,0.0000028588,0.0000028597, -0.0000028611,0.0000028605,0.0000028564,0.0000028508,0.0000028471, -0.0000028461,0.0000028465,0.0000028462,0.0000028456,0.0000028445, -0.0000028421,0.0000028397,0.0000028384,0.0000028370,0.0000028335, -0.0000028282,0.0000028240,0.0000028224,0.0000028226,0.0000028239, -0.0000028251,0.0000028247,0.0000028211,0.0000028150,0.0000028099, -0.0000028066,0.0000028047,0.0000028049,0.0000028083,0.0000028157, -0.0000028260,0.0000028349,0.0000028375,0.0000028397,0.0000028440, -0.0000028504,0.0000028565,0.0000028612,0.0000028635,0.0000028627, -0.0000028592,0.0000028559,0.0000028537,0.0000028502,0.0000028447, -0.0000028415,0.0000028434,0.0000028482,0.0000028505,0.0000028487, -0.0000028442,0.0000028392,0.0000028382,0.0000028396,0.0000028410, -0.0000028441,0.0000028486,0.0000028515,0.0000028507,0.0000028454, -0.0000028369,0.0000028281,0.0000028196,0.0000028140,0.0000028063, -0.0000027905,0.0000027792,0.0000027837,0.0000027941,0.0000028065, -0.0000028292,0.0000028477,0.0000028542,0.0000028570,0.0000028601, -0.0000028686,0.0000028792,0.0000028864,0.0000028917,0.0000028920, -0.0000028851,0.0000028748,0.0000028627,0.0000028576,0.0000028617, -0.0000028743,0.0000028851,0.0000028845,0.0000028791,0.0000028605, -0.0000028462,0.0000028455,0.0000028418,0.0000028417,0.0000028599, -0.0000028828,0.0000028945,0.0000028931,0.0000028802,0.0000028630, -0.0000028448,0.0000028335,0.0000028277,0.0000028302,0.0000028301, -0.0000028283,0.0000028241,0.0000028184,0.0000028148,0.0000028129, -0.0000028062,0.0000028018,0.0000027953,0.0000027882,0.0000027857, -0.0000027856,0.0000027870,0.0000027863,0.0000027844,0.0000027823, -0.0000027802,0.0000027772,0.0000027737,0.0000027708,0.0000027679, -0.0000027696,0.0000027730,0.0000027762,0.0000027791,0.0000027817, -0.0000027816,0.0000027781,0.0000027765,0.0000027850,0.0000027956, -0.0000027983,0.0000027966,0.0000027845,0.0000027670,0.0000027555, -0.0000027502,0.0000027441,0.0000027376,0.0000027373,0.0000027423, -0.0000027463,0.0000027515,0.0000027575,0.0000027581,0.0000027503, -0.0000027446,0.0000027468,0.0000027550,0.0000027615,0.0000027638, -0.0000027629,0.0000027631,0.0000027661,0.0000027714,0.0000027765, -0.0000027799,0.0000027816,0.0000027831,0.0000027823,0.0000027787, -0.0000027736,0.0000027667,0.0000027605,0.0000027578,0.0000027588, -0.0000027622,0.0000027660,0.0000027682,0.0000027680,0.0000027659, -0.0000027623,0.0000027577,0.0000027525,0.0000027470,0.0000027420, -0.0000027381,0.0000027338,0.0000027293,0.0000027248,0.0000027194, -0.0000027129,0.0000027080,0.0000027075,0.0000027110,0.0000027156, -0.0000027187,0.0000027207,0.0000027237,0.0000027280,0.0000027329, -0.0000027366,0.0000027379,0.0000027351,0.0000027312,0.0000027265, -0.0000027213,0.0000027167,0.0000027142,0.0000027141,0.0000027181, -0.0000027216,0.0000027216,0.0000027192,0.0000027193,0.0000027212, -0.0000027205,0.0000027127,0.0000026970,0.0000026836,0.0000026802, -0.0000026772,0.0000026679,0.0000026576,0.0000026551,0.0000026704, -0.0000026916,0.0000026994,0.0000026981,0.0000027029,0.0000027259, -0.0000027491,0.0000027602,0.0000027710,0.0000027983,0.0000028268, -0.0000028280,0.0000028202,0.0000028198,0.0000028161,0.0000027998, -0.0000027920,0.0000027965,0.0000028046,0.0000028136,0.0000028209, -0.0000028204,0.0000028095,0.0000027935,0.0000027882,0.0000027837, -0.0000027691,0.0000027628,0.0000027641,0.0000027771,0.0000027937, -0.0000028045,0.0000028048,0.0000027902,0.0000027925,0.0000028128, -0.0000028379,0.0000028543,0.0000028620,0.0000028597,0.0000028556, -0.0000028593,0.0000028604,0.0000028505,0.0000028395,0.0000028285, -0.0000028136,0.0000028085,0.0000028050,0.0000027984,0.0000027941, -0.0000027968,0.0000027957,0.0000027848,0.0000027622,0.0000027569, -0.0000027644,0.0000027702,0.0000027721,0.0000027700,0.0000027696, -0.0000027661,0.0000027549,0.0000027440,0.0000027365,0.0000027325, -0.0000027326,0.0000027347,0.0000027365,0.0000027366,0.0000027318, -0.0000027248,0.0000027204,0.0000027177,0.0000027164,0.0000027145, -0.0000027106,0.0000027065,0.0000027049,0.0000027060,0.0000027079, -0.0000027088,0.0000027078,0.0000027066,0.0000027074,0.0000027102, -0.0000027146,0.0000027182,0.0000027196,0.0000027190,0.0000027189, -0.0000027184,0.0000027184,0.0000027194,0.0000027198,0.0000027194, -0.0000027191,0.0000027182,0.0000027173,0.0000027169,0.0000027165, -0.0000027160,0.0000027149,0.0000027138,0.0000027116,0.0000027111, -0.0000027116,0.0000027131,0.0000027151,0.0000027178,0.0000027198, -0.0000027210,0.0000027196,0.0000027213,0.0000027203,0.0000027239, -0.0000027264,0.0000027280,0.0000027282,0.0000027278,0.0000027265, -0.0000027226,0.0000027191,0.0000027166,0.0000027152,0.0000027145, -0.0000027170,0.0000027182,0.0000027182,0.0000027161,0.0000027130, -0.0000027092,0.0000027025,0.0000026914,0.0000026814,0.0000026782, -0.0000026808,0.0000026857,0.0000026864,0.0000026842,0.0000026872, -0.0000027049,0.0000027363,0.0000027742,0.0000028026,0.0000028141, -0.0000028206,0.0000028286,0.0000028360,0.0000028401,0.0000028396, -0.0000028349,0.0000028269,0.0000028181,0.0000028102,0.0000028113, -0.0000028230,0.0000028319,0.0000028310,0.0000028267,0.0000028225, -0.0000028164,0.0000028088,0.0000028106,0.0000028213,0.0000028334, -0.0000028400,0.0000028465,0.0000028512,0.0000028524,0.0000028493, -0.0000028443,0.0000028417,0.0000028417,0.0000028421,0.0000028409, -0.0000028382,0.0000028334,0.0000028262,0.0000028191,0.0000028156, -0.0000028167,0.0000028224,0.0000028300,0.0000028338,0.0000028333, -0.0000028283,0.0000028211,0.0000028149,0.0000028116,0.0000028090, -0.0000028050,0.0000028007,0.0000027952,0.0000027882,0.0000027809, -0.0000027750,0.0000027712,0.0000027712,0.0000027760,0.0000027862, -0.0000028007,0.0000028150,0.0000028262,0.0000028364,0.0000028474, -0.0000028575,0.0000028645,0.0000028679,0.0000028689,0.0000028673, -0.0000028529,0.0000028280,0.0000028128,0.0000028138,0.0000028304, -0.0000028485,0.0000028523,0.0000028505,0.0000028482,0.0000028437, -0.0000028351,0.0000028271,0.0000028247,0.0000028235,0.0000028159, -0.0000028041,0.0000027982,0.0000027998,0.0000028047,0.0000028079, -0.0000028074,0.0000028031,0.0000027966,0.0000027918,0.0000027898, -0.0000027885,0.0000027879,0.0000027896,0.0000027964,0.0000028112, -0.0000028288,0.0000028411,0.0000028486,0.0000028561,0.0000028645, -0.0000028737,0.0000028829,0.0000028903,0.0000028951,0.0000028976, -0.0000028982,0.0000028979,0.0000028965,0.0000028946,0.0000028928, -0.0000028924,0.0000028917,0.0000028887,0.0000028831,0.0000028769, -0.0000028722,0.0000028707,0.0000028708,0.0000028728,0.0000028761, -0.0000028797,0.0000028830,0.0000028865,0.0000028908,0.0000028946, -0.0000028958,0.0000028948,0.0000028922,0.0000028914,0.0000028939, -0.0000028978,0.0000029006,0.0000029008,0.0000028982,0.0000028950, -0.0000028926,0.0000028892,0.0000028847,0.0000028829,0.0000028843, -0.0000028863,0.0000028859,0.0000028852,0.0000028885,0.0000028970, -0.0000029068,0.0000029131,0.0000029142,0.0000029136,0.0000029108, -0.0000029056,0.0000028982,0.0000028896,0.0000028826,0.0000028811, -0.0000028846,0.0000028934,0.0000029024,0.0000029076,0.0000029081, -0.0000029042,0.0000028983,0.0000028917,0.0000028865,0.0000028861, -0.0000028905,0.0000028956,0.0000028970,0.0000028941,0.0000028858, -0.0000028774,0.0000028747,0.0000028775,0.0000028840,0.0000028896, -0.0000028912,0.0000028897,0.0000028876,0.0000028863,0.0000028838, -0.0000028811,0.0000028792,0.0000028766,0.0000028751,0.0000028750, -0.0000028748,0.0000028749,0.0000028762,0.0000028783,0.0000028793, -0.0000028780,0.0000028749,0.0000028712,0.0000028687,0.0000028661, -0.0000028643,0.0000028623,0.0000028585,0.0000028550,0.0000028527, -0.0000028524,0.0000028538,0.0000028561,0.0000028576,0.0000028595, -0.0000028615,0.0000028640,0.0000028643,0.0000028591,0.0000028500, -0.0000028450,0.0000028479,0.0000028561,0.0000028646,0.0000028687, -0.0000028678,0.0000028645,0.0000028602,0.0000028553,0.0000028551, -0.0000028599,0.0000028636,0.0000028652,0.0000028660,0.0000028649, -0.0000028612,0.0000028580,0.0000028560,0.0000028537,0.0000028494, -0.0000028411,0.0000028310,0.0000028229,0.0000028209,0.0000028263, -0.0000028338,0.0000028353,0.0000028326,0.0000028327,0.0000028348, -0.0000028364,0.0000028381,0.0000028413,0.0000028451,0.0000028484, -0.0000028496,0.0000028499,0.0000028520,0.0000028555,0.0000028579, -0.0000028521,0.0000028398,0.0000028290,0.0000028243,0.0000028226, -0.0000028243,0.0000028300,0.0000028349,0.0000028381,0.0000028395, -0.0000028393,0.0000028380,0.0000028374,0.0000028406,0.0000028498, -0.0000028609,0.0000028709,0.0000028780,0.0000028825,0.0000028808, -0.0000028707,0.0000028558,0.0000028444,0.0000028413,0.0000028439, -0.0000028491,0.0000028594,0.0000028712,0.0000028800,0.0000028821, -0.0000028770,0.0000028690,0.0000028672,0.0000028719,0.0000028802, -0.0000028871,0.0000028910,0.0000028895,0.0000028794,0.0000028578, -0.0000028350,0.0000028282,0.0000028351,0.0000028464,0.0000028536, -0.0000028618,0.0000028698,0.0000028710,0.0000028695,0.0000028695, -0.0000028660,0.0000028591,0.0000028669,0.0000028864,0.0000028835, -0.0000028593,0.0000028488,0.0000028527,0.0000028903,0.0000029102, -0.0000029004,0.0000028759,0.0000028672,0.0000028717,0.0000028786, -0.0000028810,0.0000028776,0.0000028712,0.0000028626,0.0000028504, -0.0000028415,0.0000028363,0.0000028315,0.0000028257,0.0000028193, -0.0000028134,0.0000028081,0.0000028041,0.0000027994,0.0000027922, -0.0000027871,0.0000027939,0.0000028104,0.0000028196,0.0000028172, -0.0000028030,0.0000027840,0.0000027785,0.0000027833,0.0000027970, -0.0000028122,0.0000028218,0.0000028285,0.0000028349,0.0000028400, -0.0000028456,0.0000028490,0.0000028495,0.0000028475,0.0000028458, -0.0000028463,0.0000028476,0.0000028477,0.0000028453,0.0000028405, -0.0000028342,0.0000028272,0.0000028200,0.0000028131,0.0000028081, -0.0000028068,0.0000028089,0.0000028139,0.0000028186,0.0000028198, -0.0000028177,0.0000028156,0.0000028176,0.0000028253,0.0000028330, -0.0000028374,0.0000028387,0.0000028392,0.0000028441,0.0000028521, -0.0000028562,0.0000028577,0.0000028594,0.0000028592,0.0000028558, -0.0000028511,0.0000028466,0.0000028441,0.0000028443,0.0000028458, -0.0000028465,0.0000028465,0.0000028455,0.0000028437,0.0000028425, -0.0000028425,0.0000028426,0.0000028413,0.0000028381,0.0000028352, -0.0000028339,0.0000028341,0.0000028343,0.0000028327,0.0000028290, -0.0000028252,0.0000028234,0.0000028230,0.0000028203,0.0000028147, -0.0000028085,0.0000028083,0.0000028090,0.0000028144,0.0000028222, -0.0000028283,0.0000028337,0.0000028413,0.0000028524,0.0000028620, -0.0000028711,0.0000028753,0.0000028744,0.0000028689,0.0000028613, -0.0000028549,0.0000028490,0.0000028432,0.0000028386,0.0000028385, -0.0000028420,0.0000028459,0.0000028455,0.0000028411,0.0000028371, -0.0000028389,0.0000028440,0.0000028482,0.0000028536,0.0000028599, -0.0000028628,0.0000028609,0.0000028525,0.0000028405,0.0000028289, -0.0000028201,0.0000028152,0.0000028124,0.0000028038,0.0000027919, -0.0000027929,0.0000028029,0.0000028158,0.0000028360,0.0000028516, -0.0000028567,0.0000028586,0.0000028615,0.0000028703,0.0000028807, -0.0000028885,0.0000028943,0.0000028961,0.0000028912,0.0000028836, -0.0000028725,0.0000028634,0.0000028626,0.0000028702,0.0000028794, -0.0000028815,0.0000028787,0.0000028627,0.0000028489,0.0000028467, -0.0000028423,0.0000028415,0.0000028589,0.0000028839,0.0000028983, -0.0000028991,0.0000028902,0.0000028738,0.0000028535,0.0000028367, -0.0000028260,0.0000028291,0.0000028313,0.0000028286,0.0000028247, -0.0000028174,0.0000028122,0.0000028116,0.0000028038,0.0000027956, -0.0000027896,0.0000027851,0.0000027843,0.0000027852,0.0000027858, -0.0000027849,0.0000027820,0.0000027782,0.0000027736,0.0000027686, -0.0000027649,0.0000027632,0.0000027631,0.0000027668,0.0000027739, -0.0000027800,0.0000027848,0.0000027844,0.0000027792,0.0000027735, -0.0000027801,0.0000027937,0.0000028000,0.0000028001,0.0000027947, -0.0000027780,0.0000027615,0.0000027519,0.0000027450,0.0000027391, -0.0000027364,0.0000027391,0.0000027459,0.0000027514,0.0000027566, -0.0000027633,0.0000027641,0.0000027582,0.0000027572,0.0000027648, -0.0000027767,0.0000027847,0.0000027884,0.0000027901,0.0000027912, -0.0000027932,0.0000027955,0.0000027962,0.0000027951,0.0000027927, -0.0000027901,0.0000027867,0.0000027828,0.0000027785,0.0000027740, -0.0000027709,0.0000027693,0.0000027708,0.0000027748,0.0000027793, -0.0000027810,0.0000027798,0.0000027752,0.0000027693,0.0000027641, -0.0000027596,0.0000027545,0.0000027485,0.0000027435,0.0000027412, -0.0000027389,0.0000027357,0.0000027314,0.0000027252,0.0000027169, -0.0000027100,0.0000027088,0.0000027116,0.0000027154,0.0000027175, -0.0000027177,0.0000027195,0.0000027239,0.0000027301,0.0000027355, -0.0000027386,0.0000027395,0.0000027395,0.0000027369,0.0000027311, -0.0000027229,0.0000027167,0.0000027155,0.0000027191,0.0000027214, -0.0000027208,0.0000027205,0.0000027243,0.0000027279,0.0000027276, -0.0000027187,0.0000027002,0.0000026831,0.0000026771,0.0000026713, -0.0000026603,0.0000026504,0.0000026554,0.0000026781,0.0000026952, -0.0000026954,0.0000026942,0.0000027079,0.0000027356,0.0000027531, -0.0000027608,0.0000027770,0.0000028111,0.0000028283,0.0000028235, -0.0000028219,0.0000028209,0.0000028086,0.0000027960,0.0000027959, -0.0000028012,0.0000028104,0.0000028205,0.0000028207,0.0000028094, -0.0000027941,0.0000027847,0.0000027824,0.0000027730,0.0000027636, -0.0000027613,0.0000027652,0.0000027817,0.0000027951,0.0000028050, -0.0000027978,0.0000027866,0.0000027916,0.0000028107,0.0000028347, -0.0000028516,0.0000028605,0.0000028568,0.0000028523,0.0000028563, -0.0000028566,0.0000028460,0.0000028358,0.0000028242,0.0000028118, -0.0000028100,0.0000028057,0.0000027988,0.0000027957,0.0000027982, -0.0000027953,0.0000027807,0.0000027576,0.0000027558,0.0000027644, -0.0000027691,0.0000027689,0.0000027686,0.0000027675,0.0000027592, -0.0000027473,0.0000027378,0.0000027326,0.0000027314,0.0000027321, -0.0000027329,0.0000027312,0.0000027277,0.0000027235,0.0000027212, -0.0000027195,0.0000027163,0.0000027131,0.0000027085,0.0000027041, -0.0000027014,0.0000027016,0.0000027034,0.0000027046,0.0000027045, -0.0000027033,0.0000027031,0.0000027055,0.0000027103,0.0000027148, -0.0000027182,0.0000027189,0.0000027168,0.0000027159,0.0000027150, -0.0000027145,0.0000027147,0.0000027140,0.0000027123,0.0000027100, -0.0000027070,0.0000027059,0.0000027067,0.0000027076,0.0000027074, -0.0000027069,0.0000027067,0.0000027053,0.0000027052,0.0000027058, -0.0000027071,0.0000027095,0.0000027127,0.0000027144,0.0000027148, -0.0000027128,0.0000027126,0.0000027110,0.0000027143,0.0000027162, -0.0000027177,0.0000027193,0.0000027212,0.0000027237,0.0000027232, -0.0000027216,0.0000027195,0.0000027166,0.0000027133,0.0000027130, -0.0000027136,0.0000027146,0.0000027134,0.0000027106,0.0000027074, -0.0000027027,0.0000026948,0.0000026840,0.0000026752,0.0000026724, -0.0000026757,0.0000026799,0.0000026819,0.0000026813,0.0000026865, -0.0000027040,0.0000027299,0.0000027643,0.0000027954,0.0000028125, -0.0000028236,0.0000028322,0.0000028393,0.0000028400,0.0000028356, -0.0000028264,0.0000028178,0.0000028088,0.0000028066,0.0000028157, -0.0000028269,0.0000028266,0.0000028203,0.0000028153,0.0000028119, -0.0000028057,0.0000028056,0.0000028158,0.0000028289,0.0000028372, -0.0000028443,0.0000028505,0.0000028529,0.0000028500,0.0000028429, -0.0000028381,0.0000028386,0.0000028412,0.0000028431,0.0000028434, -0.0000028399,0.0000028326,0.0000028252,0.0000028207,0.0000028192, -0.0000028231,0.0000028308,0.0000028352,0.0000028352,0.0000028320, -0.0000028265,0.0000028214,0.0000028181,0.0000028152,0.0000028102, -0.0000028034,0.0000027974,0.0000027924,0.0000027878,0.0000027831, -0.0000027779,0.0000027739,0.0000027744,0.0000027827,0.0000027977, -0.0000028136,0.0000028246,0.0000028316,0.0000028402,0.0000028505, -0.0000028592,0.0000028651,0.0000028684,0.0000028663,0.0000028515, -0.0000028283,0.0000028143,0.0000028149,0.0000028320,0.0000028519, -0.0000028579,0.0000028562,0.0000028552,0.0000028513,0.0000028420, -0.0000028313,0.0000028269,0.0000028262,0.0000028210,0.0000028086, -0.0000027995,0.0000027986,0.0000028019,0.0000028038,0.0000028032, -0.0000027996,0.0000027936,0.0000027882,0.0000027868,0.0000027874, -0.0000027871,0.0000027882,0.0000027944,0.0000028066,0.0000028212, -0.0000028332,0.0000028423,0.0000028502,0.0000028571,0.0000028629, -0.0000028689,0.0000028759,0.0000028830,0.0000028891,0.0000028938, -0.0000028964,0.0000028964,0.0000028943,0.0000028917,0.0000028902, -0.0000028899,0.0000028892,0.0000028866,0.0000028812,0.0000028744, -0.0000028689,0.0000028659,0.0000028636,0.0000028616,0.0000028611, -0.0000028628,0.0000028662,0.0000028705,0.0000028759,0.0000028816, -0.0000028861,0.0000028879,0.0000028874,0.0000028869,0.0000028884, -0.0000028934,0.0000028995,0.0000029027,0.0000029017,0.0000028994, -0.0000028973,0.0000028932,0.0000028877,0.0000028859,0.0000028878, -0.0000028908,0.0000028904,0.0000028884,0.0000028898,0.0000028968, -0.0000029059,0.0000029118,0.0000029128,0.0000029121,0.0000029101, -0.0000029062,0.0000029014,0.0000028953,0.0000028893,0.0000028867, -0.0000028893,0.0000028977,0.0000029069,0.0000029114,0.0000029109, -0.0000029059,0.0000028990,0.0000028919,0.0000028864,0.0000028859, -0.0000028916,0.0000028994,0.0000029037,0.0000029026,0.0000028962, -0.0000028891,0.0000028866,0.0000028886,0.0000028945,0.0000029002, -0.0000029027,0.0000029019,0.0000028993,0.0000028968,0.0000028947, -0.0000028913,0.0000028887,0.0000028866,0.0000028858,0.0000028863, -0.0000028861,0.0000028840,0.0000028825,0.0000028822,0.0000028825, -0.0000028816,0.0000028783,0.0000028736,0.0000028693,0.0000028667, -0.0000028643,0.0000028618,0.0000028575,0.0000028522,0.0000028482, -0.0000028460,0.0000028462,0.0000028508,0.0000028576,0.0000028648, -0.0000028705,0.0000028740,0.0000028747,0.0000028707,0.0000028620, -0.0000028532,0.0000028501,0.0000028535,0.0000028610,0.0000028673, -0.0000028689,0.0000028665,0.0000028624,0.0000028573,0.0000028527, -0.0000028542,0.0000028602,0.0000028645,0.0000028677,0.0000028707, -0.0000028716,0.0000028684,0.0000028650,0.0000028613,0.0000028561, -0.0000028501,0.0000028420,0.0000028329,0.0000028228,0.0000028203, -0.0000028253,0.0000028313,0.0000028317,0.0000028317,0.0000028362, -0.0000028398,0.0000028422,0.0000028451,0.0000028474,0.0000028503, -0.0000028550,0.0000028578,0.0000028563,0.0000028560,0.0000028598, -0.0000028638,0.0000028605,0.0000028492,0.0000028377,0.0000028329, -0.0000028330,0.0000028374,0.0000028423,0.0000028427,0.0000028417, -0.0000028418,0.0000028413,0.0000028418,0.0000028459,0.0000028550, -0.0000028673,0.0000028769,0.0000028822,0.0000028833,0.0000028828, -0.0000028778,0.0000028675,0.0000028563,0.0000028505,0.0000028492, -0.0000028496,0.0000028554,0.0000028665,0.0000028771,0.0000028823, -0.0000028820,0.0000028747,0.0000028677,0.0000028660,0.0000028708, -0.0000028792,0.0000028864,0.0000028909,0.0000028903,0.0000028806, -0.0000028588,0.0000028334,0.0000028243,0.0000028325,0.0000028471, -0.0000028545,0.0000028618,0.0000028695,0.0000028719,0.0000028708, -0.0000028707,0.0000028680,0.0000028626,0.0000028709,0.0000028857, -0.0000028775,0.0000028548,0.0000028480,0.0000028554,0.0000028953, -0.0000029138,0.0000029026,0.0000028790,0.0000028702,0.0000028737, -0.0000028785,0.0000028813,0.0000028792,0.0000028708,0.0000028586, -0.0000028452,0.0000028355,0.0000028307,0.0000028276,0.0000028235, -0.0000028183,0.0000028127,0.0000028068,0.0000028000,0.0000027944, -0.0000027910,0.0000027871,0.0000027836,0.0000027895,0.0000028041, -0.0000028121,0.0000028103,0.0000027958,0.0000027778,0.0000027727, -0.0000027812,0.0000027982,0.0000028122,0.0000028208,0.0000028255, -0.0000028279,0.0000028306,0.0000028365,0.0000028453,0.0000028509, -0.0000028510,0.0000028485,0.0000028476,0.0000028472,0.0000028452, -0.0000028409,0.0000028350,0.0000028292,0.0000028249,0.0000028222, -0.0000028205,0.0000028205,0.0000028219,0.0000028238,0.0000028248, -0.0000028249,0.0000028257,0.0000028288,0.0000028335,0.0000028376, -0.0000028404,0.0000028423,0.0000028428,0.0000028430,0.0000028466, -0.0000028515,0.0000028541,0.0000028561,0.0000028580,0.0000028575, -0.0000028544,0.0000028503,0.0000028462,0.0000028426,0.0000028407, -0.0000028414,0.0000028436,0.0000028449,0.0000028446,0.0000028437, -0.0000028428,0.0000028427,0.0000028440,0.0000028463,0.0000028484, -0.0000028490,0.0000028479,0.0000028461,0.0000028449,0.0000028432, -0.0000028394,0.0000028337,0.0000028305,0.0000028314,0.0000028332, -0.0000028321,0.0000028283,0.0000028228,0.0000028180,0.0000028122, -0.0000028102,0.0000028101,0.0000028120,0.0000028162,0.0000028241, -0.0000028371,0.0000028532,0.0000028684,0.0000028773,0.0000028807, -0.0000028777,0.0000028703,0.0000028612,0.0000028533,0.0000028465, -0.0000028390,0.0000028358,0.0000028381,0.0000028422,0.0000028422, -0.0000028376,0.0000028339,0.0000028376,0.0000028454,0.0000028522, -0.0000028595,0.0000028672,0.0000028696,0.0000028661,0.0000028547, -0.0000028396,0.0000028250,0.0000028151,0.0000028123,0.0000028155, -0.0000028150,0.0000028071,0.0000028047,0.0000028117,0.0000028224, -0.0000028386,0.0000028522,0.0000028573,0.0000028592,0.0000028619, -0.0000028696,0.0000028785,0.0000028857,0.0000028913,0.0000028937, -0.0000028916,0.0000028880,0.0000028812,0.0000028721,0.0000028665, -0.0000028678,0.0000028731,0.0000028775,0.0000028766,0.0000028636, -0.0000028495,0.0000028464,0.0000028414,0.0000028394,0.0000028554, -0.0000028819,0.0000028980,0.0000029003,0.0000028958,0.0000028831, -0.0000028632,0.0000028435,0.0000028273,0.0000028275,0.0000028316, -0.0000028310,0.0000028262,0.0000028166,0.0000028102,0.0000028099, -0.0000028040,0.0000027929,0.0000027866,0.0000027838,0.0000027840, -0.0000027875,0.0000027901,0.0000027912,0.0000027882,0.0000027836, -0.0000027790,0.0000027742,0.0000027721,0.0000027717,0.0000027729, -0.0000027781,0.0000027851,0.0000027898,0.0000027886,0.0000027827, -0.0000027749,0.0000027751,0.0000027890,0.0000028006,0.0000028024, -0.0000028021,0.0000027963,0.0000027789,0.0000027638,0.0000027536, -0.0000027438,0.0000027364,0.0000027347,0.0000027387,0.0000027472, -0.0000027546,0.0000027620,0.0000027695,0.0000027708,0.0000027667, -0.0000027648,0.0000027719,0.0000027857,0.0000027976,0.0000028034, -0.0000028063,0.0000028093,0.0000028125,0.0000028151,0.0000028155, -0.0000028129,0.0000028069,0.0000027994,0.0000027926,0.0000027865, -0.0000027810,0.0000027780,0.0000027768,0.0000027762,0.0000027770, -0.0000027792,0.0000027835,0.0000027861,0.0000027860,0.0000027831, -0.0000027767,0.0000027696,0.0000027640,0.0000027596,0.0000027539, -0.0000027468,0.0000027420,0.0000027412,0.0000027411,0.0000027408, -0.0000027390,0.0000027341,0.0000027257,0.0000027179,0.0000027154, -0.0000027168,0.0000027188,0.0000027183,0.0000027162,0.0000027160, -0.0000027189,0.0000027245,0.0000027298,0.0000027334,0.0000027369, -0.0000027400,0.0000027409,0.0000027384,0.0000027306,0.0000027230, -0.0000027203,0.0000027217,0.0000027228,0.0000027226,0.0000027238, -0.0000027296,0.0000027336,0.0000027329,0.0000027233,0.0000027028, -0.0000026832,0.0000026741,0.0000026652,0.0000026533,0.0000026484, -0.0000026638,0.0000026881,0.0000026935,0.0000026898,0.0000026951, -0.0000027206,0.0000027453,0.0000027547,0.0000027625,0.0000027893, -0.0000028212,0.0000028256,0.0000028233,0.0000028242,0.0000028165, -0.0000028038,0.0000027977,0.0000027996,0.0000028074,0.0000028191, -0.0000028213,0.0000028122,0.0000027948,0.0000027855,0.0000027803, -0.0000027751,0.0000027658,0.0000027618,0.0000027604,0.0000027680, -0.0000027855,0.0000027955,0.0000028032,0.0000027915,0.0000027847, -0.0000027921,0.0000028088,0.0000028304,0.0000028477,0.0000028577, -0.0000028537,0.0000028490,0.0000028535,0.0000028526,0.0000028415, -0.0000028321,0.0000028202,0.0000028112,0.0000028106,0.0000028062, -0.0000027992,0.0000027970,0.0000027990,0.0000027933,0.0000027750, -0.0000027545,0.0000027551,0.0000027639,0.0000027656,0.0000027661, -0.0000027666,0.0000027611,0.0000027510,0.0000027413,0.0000027329, -0.0000027299,0.0000027303,0.0000027306,0.0000027287,0.0000027237, -0.0000027191,0.0000027186,0.0000027187,0.0000027158,0.0000027104, -0.0000027053,0.0000027014,0.0000027002,0.0000027001,0.0000027010, -0.0000027024,0.0000027034,0.0000027033,0.0000027027,0.0000027035, -0.0000027067,0.0000027108,0.0000027141,0.0000027154,0.0000027139, -0.0000027108,0.0000027092,0.0000027076,0.0000027057,0.0000027049, -0.0000027036,0.0000027021,0.0000026999,0.0000026978,0.0000026985, -0.0000027011,0.0000027026,0.0000027025,0.0000027018,0.0000027014, -0.0000027000,0.0000026996,0.0000026996,0.0000027009,0.0000027041, -0.0000027079,0.0000027104,0.0000027119,0.0000027114,0.0000027106, -0.0000027097,0.0000027131,0.0000027145,0.0000027147,0.0000027147, -0.0000027143,0.0000027154,0.0000027152,0.0000027147,0.0000027144, -0.0000027142,0.0000027135,0.0000027140,0.0000027147,0.0000027154, -0.0000027133,0.0000027100,0.0000027074,0.0000027028,0.0000026954, -0.0000026865,0.0000026777,0.0000026710,0.0000026697,0.0000026728, -0.0000026761,0.0000026772,0.0000026801,0.0000026902,0.0000027054, -0.0000027253,0.0000027517,0.0000027833,0.0000028105,0.0000028259, -0.0000028347,0.0000028394,0.0000028381,0.0000028294,0.0000028203, -0.0000028113,0.0000028053,0.0000028099,0.0000028217,0.0000028248, -0.0000028182,0.0000028100,0.0000028069,0.0000028033,0.0000028009, -0.0000028085,0.0000028218,0.0000028318,0.0000028388,0.0000028462, -0.0000028505,0.0000028501,0.0000028439,0.0000028365,0.0000028348, -0.0000028384,0.0000028433,0.0000028465,0.0000028453,0.0000028390, -0.0000028325,0.0000028286,0.0000028245,0.0000028237,0.0000028279, -0.0000028322,0.0000028333,0.0000028320,0.0000028289,0.0000028254, -0.0000028229,0.0000028210,0.0000028173,0.0000028106,0.0000028028, -0.0000027982,0.0000027966,0.0000027940,0.0000027895,0.0000027844, -0.0000027815,0.0000027843,0.0000027962,0.0000028122,0.0000028244, -0.0000028299,0.0000028340,0.0000028428,0.0000028522,0.0000028591, -0.0000028630,0.0000028617,0.0000028489,0.0000028285,0.0000028157, -0.0000028166,0.0000028350,0.0000028566,0.0000028635,0.0000028618, -0.0000028617,0.0000028595,0.0000028498,0.0000028382,0.0000028319, -0.0000028310,0.0000028268,0.0000028148,0.0000028022,0.0000027985, -0.0000027997,0.0000028000,0.0000027987,0.0000027953,0.0000027899, -0.0000027848,0.0000027838,0.0000027856,0.0000027877,0.0000027887, -0.0000027944,0.0000028060,0.0000028184,0.0000028278,0.0000028363, -0.0000028468,0.0000028564,0.0000028613,0.0000028638,0.0000028665, -0.0000028702,0.0000028755,0.0000028817,0.0000028877,0.0000028916, -0.0000028925,0.0000028912,0.0000028895,0.0000028886,0.0000028879, -0.0000028867,0.0000028840,0.0000028789,0.0000028722,0.0000028673, -0.0000028647,0.0000028614,0.0000028560,0.0000028517,0.0000028503, -0.0000028509,0.0000028542,0.0000028598,0.0000028668,0.0000028741, -0.0000028797,0.0000028823,0.0000028833,0.0000028853,0.0000028906, -0.0000028987,0.0000029037,0.0000029034,0.0000029021,0.0000029012, -0.0000028975,0.0000028917,0.0000028898,0.0000028922,0.0000028949, -0.0000028941,0.0000028914,0.0000028914,0.0000028958,0.0000029027, -0.0000029076,0.0000029082,0.0000029072,0.0000029058,0.0000029038, -0.0000029013,0.0000028988,0.0000028953,0.0000028923,0.0000028938, -0.0000029015,0.0000029109,0.0000029155,0.0000029140,0.0000029079, -0.0000028997,0.0000028923,0.0000028870,0.0000028869,0.0000028936, -0.0000029033,0.0000029102,0.0000029109,0.0000029057,0.0000028990, -0.0000028953,0.0000028954,0.0000028994,0.0000029044,0.0000029074, -0.0000029072,0.0000029044,0.0000029012,0.0000028988,0.0000028963, -0.0000028935,0.0000028925,0.0000028943,0.0000028963,0.0000028975, -0.0000028970,0.0000028951,0.0000028931,0.0000028915,0.0000028900, -0.0000028869,0.0000028815,0.0000028752,0.0000028692,0.0000028645, -0.0000028599,0.0000028546,0.0000028485,0.0000028448,0.0000028434, -0.0000028438,0.0000028476,0.0000028579,0.0000028700,0.0000028788, -0.0000028823,0.0000028821,0.0000028778,0.0000028692,0.0000028595, -0.0000028526,0.0000028512,0.0000028555,0.0000028631,0.0000028674, -0.0000028674,0.0000028640,0.0000028597,0.0000028548,0.0000028506, -0.0000028523,0.0000028579,0.0000028634,0.0000028682,0.0000028715, -0.0000028728,0.0000028710,0.0000028705,0.0000028670,0.0000028597, -0.0000028518,0.0000028430,0.0000028336,0.0000028238,0.0000028208, -0.0000028252,0.0000028285,0.0000028283,0.0000028306,0.0000028388, -0.0000028441,0.0000028479,0.0000028522,0.0000028551,0.0000028563, -0.0000028597,0.0000028633,0.0000028618,0.0000028596,0.0000028615, -0.0000028646,0.0000028624,0.0000028518,0.0000028421,0.0000028407, -0.0000028447,0.0000028492,0.0000028494,0.0000028473,0.0000028463, -0.0000028468,0.0000028479,0.0000028537,0.0000028619,0.0000028717, -0.0000028802,0.0000028839,0.0000028840,0.0000028813,0.0000028780, -0.0000028745,0.0000028686,0.0000028618,0.0000028564,0.0000028538, -0.0000028547,0.0000028625,0.0000028726,0.0000028808,0.0000028830, -0.0000028807,0.0000028729,0.0000028676,0.0000028660,0.0000028698, -0.0000028783,0.0000028861,0.0000028908,0.0000028907,0.0000028826, -0.0000028623,0.0000028346,0.0000028222,0.0000028299,0.0000028482, -0.0000028572,0.0000028634,0.0000028706,0.0000028743,0.0000028738, -0.0000028730,0.0000028700,0.0000028661,0.0000028734,0.0000028851, -0.0000028718,0.0000028512,0.0000028475,0.0000028569,0.0000028971, -0.0000029161,0.0000029056,0.0000028828,0.0000028744,0.0000028768, -0.0000028792,0.0000028817,0.0000028819,0.0000028759,0.0000028632, -0.0000028474,0.0000028354,0.0000028273,0.0000028251,0.0000028229, -0.0000028166,0.0000028098,0.0000028042,0.0000027988,0.0000027921, -0.0000027879,0.0000027863,0.0000027845,0.0000027814,0.0000027850, -0.0000027971,0.0000028052,0.0000028042,0.0000027916,0.0000027737, -0.0000027699,0.0000027824,0.0000028027,0.0000028191,0.0000028269, -0.0000028276,0.0000028272,0.0000028285,0.0000028329,0.0000028422, -0.0000028516,0.0000028543,0.0000028530,0.0000028498,0.0000028460, -0.0000028407,0.0000028339,0.0000028277,0.0000028242,0.0000028232, -0.0000028232,0.0000028243,0.0000028258,0.0000028274,0.0000028295, -0.0000028329,0.0000028370,0.0000028409,0.0000028434,0.0000028446, -0.0000028456,0.0000028462,0.0000028460,0.0000028467,0.0000028496, -0.0000028521,0.0000028530,0.0000028545,0.0000028562,0.0000028549, -0.0000028510,0.0000028466,0.0000028429,0.0000028395,0.0000028369, -0.0000028363,0.0000028378,0.0000028399,0.0000028406,0.0000028405, -0.0000028408,0.0000028416,0.0000028432,0.0000028463,0.0000028505, -0.0000028551,0.0000028584,0.0000028588,0.0000028579,0.0000028561, -0.0000028517,0.0000028445,0.0000028378,0.0000028366,0.0000028387, -0.0000028404,0.0000028402,0.0000028389,0.0000028371,0.0000028341, -0.0000028274,0.0000028188,0.0000028102,0.0000028068,0.0000028061, -0.0000028090,0.0000028175,0.0000028320,0.0000028493,0.0000028652, -0.0000028750,0.0000028778,0.0000028758,0.0000028692,0.0000028625, -0.0000028544,0.0000028431,0.0000028372,0.0000028384,0.0000028418, -0.0000028411,0.0000028354,0.0000028308,0.0000028353,0.0000028459, -0.0000028544,0.0000028622,0.0000028699,0.0000028721,0.0000028669, -0.0000028530,0.0000028360,0.0000028200,0.0000028099,0.0000028084, -0.0000028155,0.0000028237,0.0000028219,0.0000028164,0.0000028179, -0.0000028241,0.0000028357,0.0000028496,0.0000028569,0.0000028589, -0.0000028613,0.0000028667,0.0000028728,0.0000028781,0.0000028826, -0.0000028855,0.0000028850,0.0000028849,0.0000028824,0.0000028772, -0.0000028716,0.0000028684,0.0000028695,0.0000028746,0.0000028749, -0.0000028637,0.0000028489,0.0000028447,0.0000028389,0.0000028364, -0.0000028503,0.0000028780,0.0000028950,0.0000028975,0.0000028964, -0.0000028892,0.0000028714,0.0000028512,0.0000028311,0.0000028264, -0.0000028304,0.0000028333,0.0000028288,0.0000028164,0.0000028085, -0.0000028075,0.0000028057,0.0000027937,0.0000027865,0.0000027841, -0.0000027851,0.0000027914,0.0000027968,0.0000027990,0.0000027962, -0.0000027919,0.0000027893,0.0000027872,0.0000027866,0.0000027863, -0.0000027881,0.0000027914,0.0000027940,0.0000027934,0.0000027869, -0.0000027797,0.0000027755,0.0000027797,0.0000027955,0.0000028060, -0.0000028067,0.0000028071,0.0000028055,0.0000027912,0.0000027738, -0.0000027632,0.0000027538,0.0000027432,0.0000027371,0.0000027377, -0.0000027448,0.0000027533,0.0000027597,0.0000027665,0.0000027729, -0.0000027731,0.0000027699,0.0000027710,0.0000027809,0.0000027960, -0.0000028074,0.0000028130,0.0000028157,0.0000028185,0.0000028232, -0.0000028257,0.0000028248,0.0000028206,0.0000028133,0.0000028035, -0.0000027937,0.0000027853,0.0000027792,0.0000027765,0.0000027755, -0.0000027756,0.0000027764,0.0000027792,0.0000027823,0.0000027839, -0.0000027833,0.0000027799,0.0000027743,0.0000027680,0.0000027629, -0.0000027585,0.0000027526,0.0000027447,0.0000027393,0.0000027385, -0.0000027397,0.0000027418,0.0000027430,0.0000027414,0.0000027358, -0.0000027293,0.0000027266,0.0000027274,0.0000027278,0.0000027241, -0.0000027184,0.0000027154,0.0000027161,0.0000027202,0.0000027243, -0.0000027275,0.0000027317,0.0000027370,0.0000027404,0.0000027396, -0.0000027356,0.0000027298,0.0000027268,0.0000027260,0.0000027259, -0.0000027260,0.0000027293,0.0000027352,0.0000027387,0.0000027367, -0.0000027256,0.0000027025,0.0000026815,0.0000026701,0.0000026586, -0.0000026474,0.0000026522,0.0000026766,0.0000026914,0.0000026877, -0.0000026875,0.0000027070,0.0000027363,0.0000027508,0.0000027558, -0.0000027693,0.0000028052,0.0000028251,0.0000028240,0.0000028257, -0.0000028228,0.0000028106,0.0000028028,0.0000028003,0.0000028041, -0.0000028158,0.0000028214,0.0000028149,0.0000027999,0.0000027883, -0.0000027823,0.0000027756,0.0000027689,0.0000027641,0.0000027604, -0.0000027607,0.0000027737,0.0000027878,0.0000027962,0.0000027996, -0.0000027875,0.0000027849,0.0000027932,0.0000028073,0.0000028255, -0.0000028428,0.0000028536,0.0000028508,0.0000028459,0.0000028503, -0.0000028483,0.0000028371,0.0000028283,0.0000028163,0.0000028115, -0.0000028110,0.0000028067,0.0000027993,0.0000027977,0.0000027988, -0.0000027892,0.0000027680,0.0000027525,0.0000027558,0.0000027617, -0.0000027622,0.0000027641,0.0000027611,0.0000027529,0.0000027446, -0.0000027352,0.0000027287,0.0000027281,0.0000027292,0.0000027276, -0.0000027227,0.0000027171,0.0000027147,0.0000027152,0.0000027127, -0.0000027071,0.0000027014,0.0000026982,0.0000026983,0.0000026996, -0.0000027002,0.0000027007,0.0000027003,0.0000026997,0.0000026984, -0.0000026975,0.0000026979,0.0000027003,0.0000027031,0.0000027052, -0.0000027048,0.0000027018,0.0000026980,0.0000026955,0.0000026930, -0.0000026895,0.0000026872,0.0000026847,0.0000026823,0.0000026805, -0.0000026807,0.0000026834,0.0000026876,0.0000026910,0.0000026926, -0.0000026938,0.0000026949,0.0000026948,0.0000026957,0.0000026967, -0.0000026987,0.0000027028,0.0000027073,0.0000027099,0.0000027117, -0.0000027118,0.0000027098,0.0000027090,0.0000027123,0.0000027145, -0.0000027153,0.0000027159,0.0000027165,0.0000027177,0.0000027171, -0.0000027161,0.0000027146,0.0000027115,0.0000027087,0.0000027091, -0.0000027115,0.0000027150,0.0000027154,0.0000027130,0.0000027103, -0.0000027057,0.0000026991,0.0000026904,0.0000026812,0.0000026727, -0.0000026683,0.0000026683,0.0000026719,0.0000026736,0.0000026750, -0.0000026810,0.0000026940,0.0000027090,0.0000027209,0.0000027375, -0.0000027689,0.0000028051,0.0000028258,0.0000028350,0.0000028376, -0.0000028335,0.0000028242,0.0000028160,0.0000028063,0.0000028057, -0.0000028165,0.0000028244,0.0000028210,0.0000028113,0.0000028055, -0.0000028034,0.0000027992,0.0000028010,0.0000028117,0.0000028243, -0.0000028322,0.0000028386,0.0000028448,0.0000028478,0.0000028455, -0.0000028378,0.0000028317,0.0000028326,0.0000028396,0.0000028466, -0.0000028479,0.0000028437,0.0000028380,0.0000028358,0.0000028328, -0.0000028279,0.0000028260,0.0000028269,0.0000028284,0.0000028299, -0.0000028306,0.0000028300,0.0000028282,0.0000028269,0.0000028256, -0.0000028216,0.0000028148,0.0000028077,0.0000028054,0.0000028051, -0.0000028021,0.0000027975,0.0000027932,0.0000027910,0.0000027963, -0.0000028093,0.0000028223,0.0000028296,0.0000028324,0.0000028376, -0.0000028448,0.0000028506,0.0000028537,0.0000028533,0.0000028447, -0.0000028289,0.0000028174,0.0000028200,0.0000028405,0.0000028623, -0.0000028694,0.0000028683,0.0000028678,0.0000028670,0.0000028574, -0.0000028448,0.0000028386,0.0000028372,0.0000028332,0.0000028212, -0.0000028072,0.0000027998,0.0000027986,0.0000027977,0.0000027947, -0.0000027912,0.0000027868,0.0000027818,0.0000027810,0.0000027839, -0.0000027880,0.0000027902,0.0000027940,0.0000028049,0.0000028182, -0.0000028277,0.0000028345,0.0000028437,0.0000028555,0.0000028633, -0.0000028657,0.0000028661,0.0000028661,0.0000028661,0.0000028680, -0.0000028727,0.0000028787,0.0000028837,0.0000028865,0.0000028872, -0.0000028875,0.0000028877,0.0000028881,0.0000028875,0.0000028848, -0.0000028793,0.0000028725,0.0000028681,0.0000028663,0.0000028630, -0.0000028560,0.0000028489,0.0000028437,0.0000028415,0.0000028420, -0.0000028459,0.0000028527,0.0000028616,0.0000028705,0.0000028770, -0.0000028811,0.0000028845,0.0000028903,0.0000028989,0.0000029046, -0.0000029049,0.0000029050,0.0000029054,0.0000029019,0.0000028963, -0.0000028946,0.0000028962,0.0000028978,0.0000028964,0.0000028930, -0.0000028914,0.0000028929,0.0000028973,0.0000029014,0.0000029016, -0.0000028998,0.0000028990,0.0000028985,0.0000028981,0.0000028989, -0.0000028988,0.0000028972,0.0000028976,0.0000029038,0.0000029131, -0.0000029183,0.0000029174,0.0000029104,0.0000029011,0.0000028930, -0.0000028881,0.0000028881,0.0000028947,0.0000029049,0.0000029129, -0.0000029145,0.0000029108,0.0000029044,0.0000028997,0.0000028975, -0.0000028982,0.0000029022,0.0000029051,0.0000029055,0.0000029029, -0.0000028991,0.0000028946,0.0000028905,0.0000028877,0.0000028880, -0.0000028905,0.0000028944,0.0000028975,0.0000028992,0.0000028995, -0.0000028990,0.0000028971,0.0000028953,0.0000028924,0.0000028870, -0.0000028795,0.0000028713,0.0000028631,0.0000028564,0.0000028505, -0.0000028456,0.0000028432,0.0000028429,0.0000028449,0.0000028498, -0.0000028601,0.0000028734,0.0000028828,0.0000028866,0.0000028863, -0.0000028822,0.0000028747,0.0000028652,0.0000028563,0.0000028512, -0.0000028513,0.0000028557,0.0000028622,0.0000028651,0.0000028644, -0.0000028605,0.0000028563,0.0000028520,0.0000028480,0.0000028492, -0.0000028548,0.0000028615,0.0000028667,0.0000028695,0.0000028705, -0.0000028713,0.0000028746,0.0000028728,0.0000028644,0.0000028545, -0.0000028436,0.0000028326,0.0000028244,0.0000028229,0.0000028258, -0.0000028276,0.0000028273,0.0000028309,0.0000028413,0.0000028495, -0.0000028537,0.0000028592,0.0000028635,0.0000028633,0.0000028633, -0.0000028661,0.0000028653,0.0000028617,0.0000028612,0.0000028638, -0.0000028611,0.0000028506,0.0000028440,0.0000028465,0.0000028532, -0.0000028544,0.0000028512,0.0000028504,0.0000028516,0.0000028541, -0.0000028599,0.0000028693,0.0000028766,0.0000028817,0.0000028836, -0.0000028827,0.0000028798,0.0000028768,0.0000028746,0.0000028742, -0.0000028717,0.0000028666,0.0000028605,0.0000028588,0.0000028615, -0.0000028689,0.0000028770,0.0000028825,0.0000028832,0.0000028794, -0.0000028722,0.0000028686,0.0000028671,0.0000028693,0.0000028769, -0.0000028856,0.0000028902,0.0000028902,0.0000028835,0.0000028668, -0.0000028389,0.0000028223,0.0000028272,0.0000028484,0.0000028605, -0.0000028662,0.0000028727,0.0000028773,0.0000028778,0.0000028762, -0.0000028723,0.0000028693,0.0000028747,0.0000028843,0.0000028681, -0.0000028481,0.0000028466,0.0000028565,0.0000028962,0.0000029168, -0.0000029090,0.0000028881,0.0000028793,0.0000028809,0.0000028816, -0.0000028831,0.0000028843,0.0000028823,0.0000028737,0.0000028603, -0.0000028448,0.0000028308,0.0000028253,0.0000028241,0.0000028188, -0.0000028100,0.0000028022,0.0000027963,0.0000027908,0.0000027860, -0.0000027827,0.0000027829,0.0000027825,0.0000027783,0.0000027793, -0.0000027900,0.0000027988,0.0000027991,0.0000027882,0.0000027704, -0.0000027681,0.0000027852,0.0000028088,0.0000028251,0.0000028284, -0.0000028268,0.0000028268,0.0000028301,0.0000028337,0.0000028400, -0.0000028491,0.0000028550,0.0000028554,0.0000028510,0.0000028441, -0.0000028363,0.0000028294,0.0000028251,0.0000028240,0.0000028243, -0.0000028263,0.0000028291,0.0000028321,0.0000028353,0.0000028388, -0.0000028423,0.0000028450,0.0000028468,0.0000028480,0.0000028484, -0.0000028480,0.0000028481,0.0000028499,0.0000028524,0.0000028535, -0.0000028533,0.0000028530,0.0000028526,0.0000028508,0.0000028464, -0.0000028410,0.0000028367,0.0000028331,0.0000028296,0.0000028275, -0.0000028282,0.0000028313,0.0000028345,0.0000028370,0.0000028393, -0.0000028412,0.0000028434,0.0000028466,0.0000028505,0.0000028551, -0.0000028592,0.0000028619,0.0000028634,0.0000028636,0.0000028625, -0.0000028570,0.0000028482,0.0000028421,0.0000028423,0.0000028454, -0.0000028476,0.0000028477,0.0000028464,0.0000028457,0.0000028449, -0.0000028406,0.0000028314,0.0000028204,0.0000028130,0.0000028096, -0.0000028087,0.0000028126,0.0000028180,0.0000028285,0.0000028431, -0.0000028577,0.0000028680,0.0000028726,0.0000028724,0.0000028698, -0.0000028627,0.0000028501,0.0000028423,0.0000028424,0.0000028434, -0.0000028416,0.0000028350,0.0000028292,0.0000028334,0.0000028458, -0.0000028562,0.0000028638,0.0000028700,0.0000028718,0.0000028668, -0.0000028516,0.0000028332,0.0000028175,0.0000028076,0.0000028074, -0.0000028145,0.0000028258,0.0000028304,0.0000028246,0.0000028198, -0.0000028210,0.0000028288,0.0000028441,0.0000028554,0.0000028573, -0.0000028587,0.0000028621,0.0000028658,0.0000028694,0.0000028723, -0.0000028744,0.0000028747,0.0000028765,0.0000028774,0.0000028755, -0.0000028723,0.0000028698,0.0000028686,0.0000028730,0.0000028733, -0.0000028626,0.0000028468,0.0000028417,0.0000028355,0.0000028330, -0.0000028439,0.0000028723,0.0000028909,0.0000028933,0.0000028935, -0.0000028904,0.0000028774,0.0000028578,0.0000028366,0.0000028262, -0.0000028294,0.0000028349,0.0000028310,0.0000028177,0.0000028075, -0.0000028037,0.0000028065,0.0000027960,0.0000027885,0.0000027867, -0.0000027879,0.0000027935,0.0000027982,0.0000028001,0.0000027977, -0.0000027937,0.0000027924,0.0000027924,0.0000027923,0.0000027918, -0.0000027936,0.0000027969,0.0000027979,0.0000027949,0.0000027878, -0.0000027816,0.0000027804,0.0000027830,0.0000027952,0.0000028089, -0.0000028154,0.0000028165,0.0000028161,0.0000028115,0.0000027985, -0.0000027829,0.0000027723,0.0000027651,0.0000027562,0.0000027485, -0.0000027464,0.0000027499,0.0000027567,0.0000027620,0.0000027659, -0.0000027705,0.0000027732,0.0000027743,0.0000027765,0.0000027844, -0.0000027967,0.0000028077,0.0000028137,0.0000028162,0.0000028186, -0.0000028216,0.0000028228,0.0000028214,0.0000028164,0.0000028085, -0.0000027993,0.0000027900,0.0000027810,0.0000027736,0.0000027685, -0.0000027661,0.0000027657,0.0000027659,0.0000027667,0.0000027690, -0.0000027707,0.0000027704,0.0000027681,0.0000027643,0.0000027601, -0.0000027567,0.0000027536,0.0000027488,0.0000027417,0.0000027358, -0.0000027341,0.0000027359,0.0000027401,0.0000027435,0.0000027437, -0.0000027413,0.0000027372,0.0000027358,0.0000027373,0.0000027373, -0.0000027321,0.0000027233,0.0000027164,0.0000027154,0.0000027179, -0.0000027207,0.0000027232,0.0000027270,0.0000027328,0.0000027372, -0.0000027381,0.0000027375,0.0000027349,0.0000027328,0.0000027308, -0.0000027297,0.0000027307,0.0000027355,0.0000027407,0.0000027432, -0.0000027386,0.0000027248,0.0000026995,0.0000026786,0.0000026647, -0.0000026516,0.0000026459,0.0000026640,0.0000026860,0.0000026866, -0.0000026829,0.0000026968,0.0000027276,0.0000027471,0.0000027535, -0.0000027586,0.0000027846,0.0000028179,0.0000028240,0.0000028251, -0.0000028270,0.0000028180,0.0000028078,0.0000028031,0.0000028029, -0.0000028112,0.0000028182,0.0000028151,0.0000028052,0.0000027948, -0.0000027869,0.0000027785,0.0000027708,0.0000027672,0.0000027627, -0.0000027595,0.0000027647,0.0000027797,0.0000027888,0.0000027965, -0.0000027963,0.0000027858,0.0000027862,0.0000027947,0.0000028059, -0.0000028202,0.0000028368,0.0000028489,0.0000028483,0.0000028430, -0.0000028466,0.0000028439,0.0000028329,0.0000028245,0.0000028134, -0.0000028120,0.0000028115,0.0000028069,0.0000027989,0.0000027980, -0.0000027971,0.0000027830,0.0000027611,0.0000027521,0.0000027572, -0.0000027587,0.0000027606,0.0000027604,0.0000027536,0.0000027464, -0.0000027378,0.0000027287,0.0000027260,0.0000027269,0.0000027271, -0.0000027233,0.0000027181,0.0000027147,0.0000027128,0.0000027088, -0.0000027026,0.0000026970,0.0000026945,0.0000026953,0.0000026970, -0.0000026974,0.0000026964,0.0000026951,0.0000026928,0.0000026905, -0.0000026889,0.0000026884,0.0000026887,0.0000026908,0.0000026929, -0.0000026930,0.0000026897,0.0000026845,0.0000026795,0.0000026758, -0.0000026724,0.0000026683,0.0000026647,0.0000026607,0.0000026567, -0.0000026552,0.0000026566,0.0000026603,0.0000026647,0.0000026686, -0.0000026718,0.0000026741,0.0000026762,0.0000026774,0.0000026793, -0.0000026811,0.0000026846,0.0000026911,0.0000026977,0.0000027031, -0.0000027069,0.0000027091,0.0000027081,0.0000027087,0.0000027125, -0.0000027152,0.0000027174,0.0000027172,0.0000027184,0.0000027210, -0.0000027225,0.0000027232,0.0000027235,0.0000027210,0.0000027166, -0.0000027129,0.0000027103,0.0000027106,0.0000027109,0.0000027109, -0.0000027109,0.0000027094,0.0000027048,0.0000026982,0.0000026911, -0.0000026819,0.0000026725,0.0000026680,0.0000026678,0.0000026699, -0.0000026723,0.0000026760,0.0000026837,0.0000026970,0.0000027107, -0.0000027164,0.0000027255,0.0000027543,0.0000027936,0.0000028215, -0.0000028324,0.0000028347,0.0000028297,0.0000028214,0.0000028110, -0.0000028026,0.0000028079,0.0000028222,0.0000028248,0.0000028179, -0.0000028090,0.0000028060,0.0000028033,0.0000027995,0.0000028029, -0.0000028134,0.0000028244,0.0000028314,0.0000028359,0.0000028407, -0.0000028432,0.0000028399,0.0000028316,0.0000028269,0.0000028315, -0.0000028415,0.0000028481,0.0000028467,0.0000028410,0.0000028383, -0.0000028378,0.0000028352,0.0000028299,0.0000028258,0.0000028249, -0.0000028262,0.0000028295,0.0000028328,0.0000028338,0.0000028328, -0.0000028323,0.0000028307,0.0000028264,0.0000028200,0.0000028145, -0.0000028129,0.0000028120,0.0000028086,0.0000028039,0.0000027994, -0.0000027985,0.0000028052,0.0000028160,0.0000028250,0.0000028301, -0.0000028336,0.0000028381,0.0000028416,0.0000028450,0.0000028460, -0.0000028414,0.0000028284,0.0000028191,0.0000028249,0.0000028487, -0.0000028696,0.0000028749,0.0000028746,0.0000028750,0.0000028738, -0.0000028648,0.0000028512,0.0000028451,0.0000028444,0.0000028404, -0.0000028286,0.0000028134,0.0000028034,0.0000027992,0.0000027966, -0.0000027928,0.0000027883,0.0000027840,0.0000027793,0.0000027787, -0.0000027828,0.0000027879,0.0000027911,0.0000027949,0.0000028031, -0.0000028151,0.0000028258,0.0000028342,0.0000028428,0.0000028530, -0.0000028623,0.0000028674,0.0000028688,0.0000028684,0.0000028661, -0.0000028623,0.0000028602,0.0000028617,0.0000028673,0.0000028740, -0.0000028796,0.0000028836,0.0000028856,0.0000028870,0.0000028890, -0.0000028900,0.0000028883,0.0000028825,0.0000028755,0.0000028715, -0.0000028704,0.0000028676,0.0000028606,0.0000028518,0.0000028442, -0.0000028388,0.0000028368,0.0000028383,0.0000028436,0.0000028515, -0.0000028618,0.0000028721,0.0000028799,0.0000028860,0.0000028929, -0.0000029006,0.0000029056,0.0000029073,0.0000029091,0.0000029097, -0.0000029057,0.0000029002,0.0000028987,0.0000028991,0.0000028990, -0.0000028966,0.0000028929,0.0000028895,0.0000028878,0.0000028895, -0.0000028931,0.0000028939,0.0000028924,0.0000028915,0.0000028916, -0.0000028917,0.0000028939,0.0000028974,0.0000028985,0.0000028995, -0.0000029040,0.0000029124,0.0000029189,0.0000029196,0.0000029134, -0.0000029030,0.0000028939,0.0000028886,0.0000028885,0.0000028943, -0.0000029037,0.0000029121,0.0000029148,0.0000029123,0.0000029064, -0.0000029017,0.0000028986,0.0000028970,0.0000028978,0.0000028994, -0.0000028992,0.0000028964,0.0000028925,0.0000028867,0.0000028794, -0.0000028742,0.0000028739,0.0000028774,0.0000028836,0.0000028889, -0.0000028924,0.0000028945,0.0000028955,0.0000028962,0.0000028953, -0.0000028925,0.0000028876,0.0000028803,0.0000028718,0.0000028632, -0.0000028558,0.0000028503,0.0000028459,0.0000028446,0.0000028462, -0.0000028501,0.0000028556,0.0000028636,0.0000028734,0.0000028811, -0.0000028859,0.0000028871,0.0000028845,0.0000028777,0.0000028687, -0.0000028590,0.0000028510,0.0000028467,0.0000028458,0.0000028492, -0.0000028540,0.0000028567,0.0000028569,0.0000028543,0.0000028514, -0.0000028484,0.0000028453,0.0000028465,0.0000028524,0.0000028595, -0.0000028641,0.0000028661,0.0000028682,0.0000028721,0.0000028778, -0.0000028788,0.0000028709,0.0000028579,0.0000028440,0.0000028318, -0.0000028251,0.0000028251,0.0000028280,0.0000028296,0.0000028294, -0.0000028327,0.0000028444,0.0000028554,0.0000028601,0.0000028658, -0.0000028719,0.0000028712,0.0000028674,0.0000028676,0.0000028670, -0.0000028623,0.0000028595,0.0000028616,0.0000028592,0.0000028492, -0.0000028449,0.0000028503,0.0000028566,0.0000028554,0.0000028517, -0.0000028528,0.0000028559,0.0000028626,0.0000028728,0.0000028813, -0.0000028850,0.0000028852,0.0000028825,0.0000028782,0.0000028757, -0.0000028750,0.0000028740,0.0000028746,0.0000028738,0.0000028705, -0.0000028664,0.0000028651,0.0000028669,0.0000028740,0.0000028800, -0.0000028829,0.0000028834,0.0000028787,0.0000028726,0.0000028704, -0.0000028683,0.0000028687,0.0000028743,0.0000028833,0.0000028882, -0.0000028880,0.0000028829,0.0000028702,0.0000028459,0.0000028255, -0.0000028258,0.0000028471,0.0000028634,0.0000028698,0.0000028755, -0.0000028801,0.0000028815,0.0000028799,0.0000028751,0.0000028721, -0.0000028753,0.0000028826,0.0000028664,0.0000028459,0.0000028454, -0.0000028548,0.0000028931,0.0000029161,0.0000029123,0.0000028941, -0.0000028844,0.0000028850,0.0000028853,0.0000028861,0.0000028881, -0.0000028879,0.0000028824,0.0000028735,0.0000028622,0.0000028459, -0.0000028305,0.0000028252,0.0000028221,0.0000028139,0.0000028048, -0.0000027972,0.0000027902,0.0000027843,0.0000027794,0.0000027787, -0.0000027807,0.0000027792,0.0000027733,0.0000027732,0.0000027829, -0.0000027931,0.0000027942,0.0000027837,0.0000027675,0.0000027679, -0.0000027879,0.0000028133,0.0000028271,0.0000028273,0.0000028247, -0.0000028265,0.0000028311,0.0000028338,0.0000028368,0.0000028432, -0.0000028501,0.0000028521,0.0000028498,0.0000028444,0.0000028382, -0.0000028340,0.0000028325,0.0000028324,0.0000028328,0.0000028335, -0.0000028343,0.0000028358,0.0000028384,0.0000028423,0.0000028460, -0.0000028477,0.0000028478,0.0000028477,0.0000028479,0.0000028497, -0.0000028526,0.0000028544,0.0000028544,0.0000028530,0.0000028503, -0.0000028476,0.0000028448,0.0000028404,0.0000028343,0.0000028281, -0.0000028228,0.0000028185,0.0000028166,0.0000028180,0.0000028229, -0.0000028292,0.0000028349,0.0000028392,0.0000028426,0.0000028453, -0.0000028474,0.0000028495,0.0000028523,0.0000028558,0.0000028586, -0.0000028601,0.0000028611,0.0000028622,0.0000028616,0.0000028564, -0.0000028497,0.0000028467,0.0000028484,0.0000028519,0.0000028546, -0.0000028550,0.0000028530,0.0000028507,0.0000028485,0.0000028438, -0.0000028357,0.0000028267,0.0000028207,0.0000028188,0.0000028187, -0.0000028195,0.0000028184,0.0000028214,0.0000028281,0.0000028391, -0.0000028513,0.0000028627,0.0000028699,0.0000028719,0.0000028684, -0.0000028584,0.0000028494,0.0000028461,0.0000028447,0.0000028423, -0.0000028359,0.0000028287,0.0000028315,0.0000028452,0.0000028576, -0.0000028648,0.0000028697,0.0000028716,0.0000028682,0.0000028540, -0.0000028345,0.0000028173,0.0000028079,0.0000028092,0.0000028154, -0.0000028239,0.0000028320,0.0000028284,0.0000028179,0.0000028147, -0.0000028203,0.0000028373,0.0000028519,0.0000028545,0.0000028542, -0.0000028552,0.0000028576,0.0000028603,0.0000028622,0.0000028632, -0.0000028644,0.0000028673,0.0000028697,0.0000028687,0.0000028674, -0.0000028677,0.0000028683,0.0000028720,0.0000028722,0.0000028606, -0.0000028440,0.0000028374,0.0000028314,0.0000028289,0.0000028362, -0.0000028631,0.0000028849,0.0000028877,0.0000028879,0.0000028871, -0.0000028793,0.0000028628,0.0000028419,0.0000028252,0.0000028275, -0.0000028355,0.0000028323,0.0000028203,0.0000028080,0.0000027999, -0.0000028062,0.0000027989,0.0000027916,0.0000027909,0.0000027916, -0.0000027938,0.0000027963,0.0000027962,0.0000027946,0.0000027920, -0.0000027900,0.0000027897,0.0000027891,0.0000027886,0.0000027904, -0.0000027950,0.0000027978,0.0000027976,0.0000027944,0.0000027914, -0.0000027897,0.0000027899,0.0000027929,0.0000028035,0.0000028154, -0.0000028234,0.0000028247,0.0000028224,0.0000028192,0.0000028137, -0.0000028049,0.0000027941,0.0000027834,0.0000027747,0.0000027690, -0.0000027654,0.0000027638,0.0000027648,0.0000027668,0.0000027672, -0.0000027671,0.0000027691,0.0000027741,0.0000027789,0.0000027827, -0.0000027875,0.0000027940,0.0000028003,0.0000028051,0.0000028084, -0.0000028102,0.0000028104,0.0000028085,0.0000028047,0.0000027992, -0.0000027918,0.0000027836,0.0000027756,0.0000027684,0.0000027617, -0.0000027575,0.0000027551,0.0000027527,0.0000027512,0.0000027518, -0.0000027530,0.0000027527,0.0000027508,0.0000027481,0.0000027456, -0.0000027438,0.0000027421,0.0000027393,0.0000027345,0.0000027296, -0.0000027279,0.0000027302,0.0000027363,0.0000027416,0.0000027425, -0.0000027397,0.0000027363,0.0000027362,0.0000027390,0.0000027399, -0.0000027351,0.0000027252,0.0000027169,0.0000027156,0.0000027174, -0.0000027197,0.0000027211,0.0000027237,0.0000027280,0.0000027325, -0.0000027362,0.0000027381,0.0000027381,0.0000027367,0.0000027340, -0.0000027330,0.0000027356,0.0000027410,0.0000027453,0.0000027457, -0.0000027389,0.0000027216,0.0000026953,0.0000026744,0.0000026580, -0.0000026465,0.0000026520,0.0000026767,0.0000026850,0.0000026789, -0.0000026877,0.0000027197,0.0000027452,0.0000027532,0.0000027555, -0.0000027673,0.0000028042,0.0000028230,0.0000028239,0.0000028271, -0.0000028244,0.0000028137,0.0000028066,0.0000028030,0.0000028064, -0.0000028135,0.0000028136,0.0000028074,0.0000028008,0.0000027931, -0.0000027841,0.0000027740,0.0000027686,0.0000027658,0.0000027598, -0.0000027604,0.0000027698,0.0000027826,0.0000027898,0.0000027966, -0.0000027932,0.0000027866,0.0000027883,0.0000027960,0.0000028037, -0.0000028147,0.0000028302,0.0000028448,0.0000028460,0.0000028406, -0.0000028425,0.0000028394,0.0000028288,0.0000028203,0.0000028113, -0.0000028127,0.0000028120,0.0000028063,0.0000027978,0.0000027976, -0.0000027927,0.0000027749,0.0000027556,0.0000027531,0.0000027574, -0.0000027567,0.0000027595,0.0000027544,0.0000027475,0.0000027400, -0.0000027297,0.0000027239,0.0000027238,0.0000027252,0.0000027241, -0.0000027204,0.0000027179,0.0000027147,0.0000027081,0.0000026983, -0.0000026917,0.0000026892,0.0000026895,0.0000026912,0.0000026916, -0.0000026906,0.0000026890,0.0000026873,0.0000026853,0.0000026840, -0.0000026829,0.0000026815,0.0000026792,0.0000026774,0.0000026760, -0.0000026729,0.0000026689,0.0000026653,0.0000026618,0.0000026587, -0.0000026560,0.0000026525,0.0000026480,0.0000026428,0.0000026373, -0.0000026354,0.0000026376,0.0000026415,0.0000026449,0.0000026480, -0.0000026508,0.0000026530,0.0000026550,0.0000026560,0.0000026575, -0.0000026589,0.0000026623,0.0000026693,0.0000026765,0.0000026832, -0.0000026877,0.0000026902,0.0000026893,0.0000026911,0.0000026961, -0.0000027010,0.0000027062,0.0000027087,0.0000027128,0.0000027182, -0.0000027228,0.0000027248,0.0000027265,0.0000027253,0.0000027227, -0.0000027198,0.0000027180,0.0000027166,0.0000027141,0.0000027111, -0.0000027077,0.0000027060,0.0000027046,0.0000027025,0.0000026998, -0.0000026953,0.0000026876,0.0000026783,0.0000026709,0.0000026671, -0.0000026682,0.0000026726,0.0000026780,0.0000026854,0.0000026986, -0.0000027103,0.0000027131,0.0000027177,0.0000027399,0.0000027764, -0.0000028093,0.0000028270,0.0000028313,0.0000028284,0.0000028187, -0.0000028048,0.0000027997,0.0000028108,0.0000028248,0.0000028262, -0.0000028191,0.0000028121,0.0000028111,0.0000028083,0.0000028041, -0.0000028060,0.0000028139,0.0000028232,0.0000028291,0.0000028322, -0.0000028357,0.0000028375,0.0000028340,0.0000028266,0.0000028245, -0.0000028314,0.0000028427,0.0000028472,0.0000028438,0.0000028385, -0.0000028371,0.0000028371,0.0000028355,0.0000028312,0.0000028267, -0.0000028248,0.0000028260,0.0000028301,0.0000028351,0.0000028372, -0.0000028370,0.0000028358,0.0000028336,0.0000028294,0.0000028243, -0.0000028200,0.0000028177,0.0000028157,0.0000028122,0.0000028077, -0.0000028035,0.0000028039,0.0000028097,0.0000028170,0.0000028233, -0.0000028282,0.0000028306,0.0000028338,0.0000028382,0.0000028422, -0.0000028401,0.0000028306,0.0000028228,0.0000028314,0.0000028572, -0.0000028762,0.0000028798,0.0000028805,0.0000028829,0.0000028805, -0.0000028705,0.0000028582,0.0000028521,0.0000028516,0.0000028479, -0.0000028370,0.0000028218,0.0000028090,0.0000028020,0.0000027974, -0.0000027928,0.0000027874,0.0000027812,0.0000027773,0.0000027773, -0.0000027826,0.0000027886,0.0000027919,0.0000027953,0.0000028023, -0.0000028116,0.0000028209,0.0000028297,0.0000028399,0.0000028501, -0.0000028586,0.0000028651,0.0000028692,0.0000028707,0.0000028701, -0.0000028669,0.0000028604,0.0000028538,0.0000028522,0.0000028568, -0.0000028649,0.0000028735,0.0000028800,0.0000028839,0.0000028865, -0.0000028895,0.0000028916,0.0000028902,0.0000028847,0.0000028778, -0.0000028737,0.0000028723,0.0000028706,0.0000028662,0.0000028594, -0.0000028512,0.0000028427,0.0000028378,0.0000028380,0.0000028411, -0.0000028466,0.0000028563,0.0000028687,0.0000028801,0.0000028895, -0.0000028976,0.0000029035,0.0000029070,0.0000029101,0.0000029130, -0.0000029125,0.0000029075,0.0000029028,0.0000029015,0.0000029009, -0.0000028984,0.0000028943,0.0000028902,0.0000028861,0.0000028822, -0.0000028813,0.0000028833,0.0000028856,0.0000028858,0.0000028860, -0.0000028853,0.0000028839,0.0000028846,0.0000028884,0.0000028932, -0.0000028975,0.0000029020,0.0000029089,0.0000029164,0.0000029188, -0.0000029152,0.0000029056,0.0000028958,0.0000028890,0.0000028877, -0.0000028921,0.0000029008,0.0000029094,0.0000029133,0.0000029118, -0.0000029068,0.0000029025,0.0000028998,0.0000028974,0.0000028956, -0.0000028945,0.0000028921,0.0000028882,0.0000028845,0.0000028797, -0.0000028711,0.0000028620,0.0000028596,0.0000028631,0.0000028720, -0.0000028804,0.0000028855,0.0000028888,0.0000028916,0.0000028941, -0.0000028961,0.0000028953,0.0000028914,0.0000028851,0.0000028773, -0.0000028691,0.0000028615,0.0000028558,0.0000028521,0.0000028501, -0.0000028514,0.0000028554,0.0000028601,0.0000028649,0.0000028703, -0.0000028763,0.0000028821,0.0000028846,0.0000028829,0.0000028751, -0.0000028648,0.0000028539,0.0000028427,0.0000028338,0.0000028285, -0.0000028266,0.0000028286,0.0000028333,0.0000028385,0.0000028418, -0.0000028428,0.0000028440,0.0000028448,0.0000028440,0.0000028450, -0.0000028505,0.0000028576,0.0000028620,0.0000028643,0.0000028678, -0.0000028737,0.0000028809,0.0000028843,0.0000028776,0.0000028626, -0.0000028459,0.0000028332,0.0000028280,0.0000028284,0.0000028318, -0.0000028338,0.0000028340,0.0000028365,0.0000028477,0.0000028602, -0.0000028664,0.0000028718,0.0000028794,0.0000028796,0.0000028729, -0.0000028693,0.0000028679,0.0000028626,0.0000028582,0.0000028592, -0.0000028580,0.0000028493,0.0000028459,0.0000028518,0.0000028576, -0.0000028559,0.0000028528,0.0000028549,0.0000028593,0.0000028702, -0.0000028822,0.0000028882,0.0000028887,0.0000028857,0.0000028804, -0.0000028757,0.0000028750,0.0000028750,0.0000028736,0.0000028742, -0.0000028764,0.0000028766,0.0000028735,0.0000028694,0.0000028698, -0.0000028774,0.0000028817,0.0000028838,0.0000028837,0.0000028786, -0.0000028737,0.0000028722,0.0000028689,0.0000028674,0.0000028707, -0.0000028790,0.0000028839,0.0000028836,0.0000028793,0.0000028706, -0.0000028535,0.0000028323,0.0000028272,0.0000028451,0.0000028648, -0.0000028731,0.0000028785,0.0000028826,0.0000028845,0.0000028836, -0.0000028788,0.0000028744,0.0000028756,0.0000028810,0.0000028660, -0.0000028446,0.0000028439,0.0000028525,0.0000028880,0.0000029145, -0.0000029147,0.0000029002,0.0000028894,0.0000028884,0.0000028891, -0.0000028897,0.0000028920,0.0000028931,0.0000028896,0.0000028825, -0.0000028743,0.0000028637,0.0000028465,0.0000028294,0.0000028236, -0.0000028182,0.0000028094,0.0000028012,0.0000027924,0.0000027851, -0.0000027774,0.0000027742,0.0000027756,0.0000027767,0.0000027742, -0.0000027683,0.0000027671,0.0000027765,0.0000027864,0.0000027879, -0.0000027793,0.0000027647,0.0000027669,0.0000027897,0.0000028157, -0.0000028251,0.0000028233,0.0000028221,0.0000028253,0.0000028305, -0.0000028331,0.0000028340,0.0000028357,0.0000028388,0.0000028419, -0.0000028432,0.0000028412,0.0000028382,0.0000028364,0.0000028351, -0.0000028337,0.0000028329,0.0000028334,0.0000028359,0.0000028397, -0.0000028433,0.0000028453,0.0000028455,0.0000028453,0.0000028462, -0.0000028487,0.0000028517,0.0000028541,0.0000028545,0.0000028526, -0.0000028492,0.0000028457,0.0000028421,0.0000028379,0.0000028326, -0.0000028258,0.0000028179,0.0000028110,0.0000028076,0.0000028088, -0.0000028137,0.0000028203,0.0000028281,0.0000028352,0.0000028408, -0.0000028446,0.0000028471,0.0000028483,0.0000028486,0.0000028490, -0.0000028503,0.0000028519,0.0000028526,0.0000028526,0.0000028530, -0.0000028537,0.0000028532,0.0000028503,0.0000028481,0.0000028493, -0.0000028525,0.0000028558,0.0000028585,0.0000028592,0.0000028572, -0.0000028537,0.0000028491,0.0000028424,0.0000028341,0.0000028264, -0.0000028228,0.0000028233,0.0000028271,0.0000028300,0.0000028282, -0.0000028254,0.0000028254,0.0000028280,0.0000028377,0.0000028525, -0.0000028652,0.0000028711,0.0000028708,0.0000028656,0.0000028563, -0.0000028485,0.0000028441,0.0000028419,0.0000028373,0.0000028294, -0.0000028298,0.0000028435,0.0000028577,0.0000028646,0.0000028685, -0.0000028706,0.0000028691,0.0000028575,0.0000028391,0.0000028209, -0.0000028102,0.0000028111,0.0000028172,0.0000028216,0.0000028286, -0.0000028282,0.0000028166,0.0000028075,0.0000028127,0.0000028313, -0.0000028481,0.0000028510,0.0000028481,0.0000028451,0.0000028464, -0.0000028492,0.0000028509,0.0000028524,0.0000028554,0.0000028598, -0.0000028632,0.0000028623,0.0000028596,0.0000028608,0.0000028661, -0.0000028714,0.0000028714,0.0000028588,0.0000028411,0.0000028324, -0.0000028272,0.0000028243,0.0000028285,0.0000028505,0.0000028749, -0.0000028801,0.0000028802,0.0000028796,0.0000028756,0.0000028652, -0.0000028467,0.0000028271,0.0000028240,0.0000028347,0.0000028335, -0.0000028244,0.0000028108,0.0000027985,0.0000028052,0.0000028022, -0.0000027950,0.0000027950,0.0000027953,0.0000027943,0.0000027928, -0.0000027923,0.0000027937,0.0000027926,0.0000027901,0.0000027883, -0.0000027865,0.0000027860,0.0000027877,0.0000027932,0.0000027986, -0.0000028031,0.0000028043,0.0000028055,0.0000028046,0.0000028021, -0.0000027994,0.0000028031,0.0000028079,0.0000028120,0.0000028141, -0.0000028179,0.0000028220,0.0000028254,0.0000028248,0.0000028225, -0.0000028196,0.0000028127,0.0000028012,0.0000027904,0.0000027841, -0.0000027815,0.0000027801,0.0000027781,0.0000027742,0.0000027707, -0.0000027697,0.0000027721,0.0000027769,0.0000027791,0.0000027782, -0.0000027768,0.0000027790,0.0000027862,0.0000027944,0.0000027992, -0.0000028000,0.0000027982,0.0000027962,0.0000027936,0.0000027885, -0.0000027802,0.0000027719,0.0000027648,0.0000027590,0.0000027540, -0.0000027496,0.0000027447,0.0000027409,0.0000027395,0.0000027396, -0.0000027392,0.0000027368,0.0000027337,0.0000027317,0.0000027305, -0.0000027285,0.0000027257,0.0000027228,0.0000027198,0.0000027186, -0.0000027215,0.0000027296,0.0000027373,0.0000027389,0.0000027346, -0.0000027302,0.0000027305,0.0000027349,0.0000027370,0.0000027319, -0.0000027216,0.0000027138,0.0000027131,0.0000027159,0.0000027194, -0.0000027213,0.0000027221,0.0000027236,0.0000027275,0.0000027338, -0.0000027381,0.0000027390,0.0000027376,0.0000027352,0.0000027351, -0.0000027396,0.0000027449,0.0000027480,0.0000027456,0.0000027364, -0.0000027158,0.0000026895,0.0000026681,0.0000026510,0.0000026455, -0.0000026648,0.0000026816,0.0000026780,0.0000026801,0.0000027111, -0.0000027438,0.0000027555,0.0000027572,0.0000027591,0.0000027860, -0.0000028178,0.0000028228,0.0000028251,0.0000028269,0.0000028187, -0.0000028113,0.0000028054,0.0000028032,0.0000028080,0.0000028106, -0.0000028063,0.0000028033,0.0000027986,0.0000027902,0.0000027801, -0.0000027705,0.0000027664,0.0000027622,0.0000027593,0.0000027639, -0.0000027739,0.0000027842,0.0000027910,0.0000027954,0.0000027907, -0.0000027872,0.0000027907,0.0000027971,0.0000028012,0.0000028086, -0.0000028226,0.0000028390,0.0000028438,0.0000028386,0.0000028386, -0.0000028350,0.0000028249,0.0000028160,0.0000028097,0.0000028129, -0.0000028115,0.0000028046,0.0000027966,0.0000027955,0.0000027856, -0.0000027662,0.0000027527,0.0000027540,0.0000027556,0.0000027566, -0.0000027570,0.0000027494,0.0000027427,0.0000027320,0.0000027226, -0.0000027209,0.0000027222,0.0000027226,0.0000027211,0.0000027198, -0.0000027188,0.0000027114,0.0000026986,0.0000026869,0.0000026810, -0.0000026806,0.0000026821,0.0000026838,0.0000026853,0.0000026859, -0.0000026854,0.0000026836,0.0000026806,0.0000026772,0.0000026726, -0.0000026675,0.0000026620,0.0000026583,0.0000026576,0.0000026573, -0.0000026587,0.0000026595,0.0000026576,0.0000026540,0.0000026505, -0.0000026466,0.0000026413,0.0000026352,0.0000026303,0.0000026294, -0.0000026324,0.0000026365,0.0000026395,0.0000026425,0.0000026450, -0.0000026467,0.0000026479,0.0000026488,0.0000026502,0.0000026520, -0.0000026553,0.0000026611,0.0000026663,0.0000026714,0.0000026735, -0.0000026747,0.0000026721,0.0000026729,0.0000026766,0.0000026811, -0.0000026848,0.0000026859,0.0000026888,0.0000026949,0.0000027027, -0.0000027080,0.0000027143,0.0000027177,0.0000027188,0.0000027187, -0.0000027178,0.0000027175,0.0000027175,0.0000027164,0.0000027130, -0.0000027092,0.0000027041,0.0000027002,0.0000026989,0.0000026985, -0.0000026968,0.0000026944,0.0000026877,0.0000026762,0.0000026678, -0.0000026677,0.0000026735,0.0000026780,0.0000026866,0.0000026993, -0.0000027086,0.0000027120,0.0000027126,0.0000027267,0.0000027563, -0.0000027893,0.0000028149,0.0000028272,0.0000028263,0.0000028155, -0.0000027999,0.0000027987,0.0000028136,0.0000028276,0.0000028290, -0.0000028223,0.0000028176,0.0000028180,0.0000028163,0.0000028125, -0.0000028115,0.0000028160,0.0000028219,0.0000028264,0.0000028290, -0.0000028310,0.0000028317,0.0000028283,0.0000028230,0.0000028228, -0.0000028313,0.0000028430,0.0000028454,0.0000028403,0.0000028355, -0.0000028345,0.0000028348,0.0000028345,0.0000028310,0.0000028276, -0.0000028253,0.0000028265,0.0000028317,0.0000028376,0.0000028403, -0.0000028393,0.0000028367,0.0000028343,0.0000028321,0.0000028281, -0.0000028234,0.0000028206,0.0000028185,0.0000028148,0.0000028096, -0.0000028063,0.0000028066,0.0000028104,0.0000028166,0.0000028228, -0.0000028262,0.0000028282,0.0000028331,0.0000028384,0.0000028379, -0.0000028313,0.0000028298,0.0000028418,0.0000028667,0.0000028815, -0.0000028840,0.0000028857,0.0000028893,0.0000028877,0.0000028760, -0.0000028641,0.0000028593,0.0000028580,0.0000028543,0.0000028444, -0.0000028294,0.0000028162,0.0000028072,0.0000028016,0.0000027964, -0.0000027907,0.0000027829,0.0000027759,0.0000027761,0.0000027836, -0.0000027912,0.0000027948,0.0000027972,0.0000028027,0.0000028098, -0.0000028162,0.0000028235,0.0000028332,0.0000028442,0.0000028535, -0.0000028606,0.0000028663,0.0000028702,0.0000028719,0.0000028710, -0.0000028666,0.0000028588,0.0000028500,0.0000028462,0.0000028493, -0.0000028583,0.0000028689,0.0000028774,0.0000028827,0.0000028866, -0.0000028906,0.0000028931,0.0000028918,0.0000028862,0.0000028790, -0.0000028744,0.0000028726,0.0000028709,0.0000028686,0.0000028655, -0.0000028608,0.0000028537,0.0000028473,0.0000028444,0.0000028439, -0.0000028462,0.0000028547,0.0000028683,0.0000028831,0.0000028953, -0.0000029028,0.0000029063,0.0000029090,0.0000029127,0.0000029148, -0.0000029127,0.0000029075,0.0000029042,0.0000029028,0.0000028999, -0.0000028947,0.0000028893,0.0000028852,0.0000028821,0.0000028781, -0.0000028748,0.0000028745,0.0000028758,0.0000028773,0.0000028798, -0.0000028805,0.0000028784,0.0000028762,0.0000028767,0.0000028805, -0.0000028878,0.0000028962,0.0000029033,0.0000029095,0.0000029145, -0.0000029147,0.0000029090,0.0000029000,0.0000028922,0.0000028880, -0.0000028897,0.0000028970,0.0000029053,0.0000029098,0.0000029093, -0.0000029053,0.0000029016,0.0000029000,0.0000028981,0.0000028954, -0.0000028926,0.0000028887,0.0000028825,0.0000028766,0.0000028722, -0.0000028662,0.0000028581,0.0000028535,0.0000028537,0.0000028608, -0.0000028715,0.0000028789,0.0000028827,0.0000028858,0.0000028898, -0.0000028944,0.0000028976,0.0000028966,0.0000028921,0.0000028861, -0.0000028785,0.0000028708,0.0000028645,0.0000028597,0.0000028558, -0.0000028547,0.0000028564,0.0000028595,0.0000028625,0.0000028651, -0.0000028690,0.0000028733,0.0000028752,0.0000028726,0.0000028631, -0.0000028492,0.0000028359,0.0000028231,0.0000028118,0.0000028039, -0.0000027996,0.0000027982,0.0000028004,0.0000028071,0.0000028144, -0.0000028199,0.0000028252,0.0000028330,0.0000028402,0.0000028428, -0.0000028435,0.0000028483,0.0000028556,0.0000028606,0.0000028634, -0.0000028679,0.0000028747,0.0000028823,0.0000028866,0.0000028830, -0.0000028688,0.0000028511,0.0000028379,0.0000028333,0.0000028340, -0.0000028365,0.0000028380,0.0000028387,0.0000028403,0.0000028494, -0.0000028631,0.0000028715,0.0000028764,0.0000028854,0.0000028877, -0.0000028797,0.0000028716,0.0000028680,0.0000028632,0.0000028585, -0.0000028582,0.0000028579,0.0000028516,0.0000028473,0.0000028511, -0.0000028574,0.0000028561,0.0000028547,0.0000028572,0.0000028616, -0.0000028749,0.0000028881,0.0000028923,0.0000028901,0.0000028856, -0.0000028803,0.0000028766,0.0000028758,0.0000028747,0.0000028733, -0.0000028752,0.0000028819,0.0000028837,0.0000028777,0.0000028705, -0.0000028715,0.0000028792,0.0000028830,0.0000028853,0.0000028837, -0.0000028785,0.0000028756,0.0000028739,0.0000028693,0.0000028659, -0.0000028674,0.0000028742,0.0000028784,0.0000028776,0.0000028732, -0.0000028678,0.0000028590,0.0000028414,0.0000028315,0.0000028434, -0.0000028641,0.0000028754,0.0000028813,0.0000028847,0.0000028868, -0.0000028869,0.0000028830,0.0000028763,0.0000028756,0.0000028795, -0.0000028662,0.0000028443,0.0000028427,0.0000028504,0.0000028822, -0.0000029119,0.0000029154,0.0000029056,0.0000028947,0.0000028915, -0.0000028924,0.0000028925,0.0000028938,0.0000028953,0.0000028940, -0.0000028901,0.0000028826,0.0000028736,0.0000028633,0.0000028421, -0.0000028250,0.0000028200,0.0000028138,0.0000028065,0.0000027973, -0.0000027888,0.0000027789,0.0000027714,0.0000027705,0.0000027715, -0.0000027725,0.0000027698,0.0000027636,0.0000027620,0.0000027701, -0.0000027792,0.0000027814,0.0000027747,0.0000027615,0.0000027658, -0.0000027925,0.0000028156,0.0000028201,0.0000028183,0.0000028187, -0.0000028235,0.0000028293,0.0000028324,0.0000028321,0.0000028303, -0.0000028292,0.0000028293,0.0000028296,0.0000028300,0.0000028307, -0.0000028314,0.0000028324,0.0000028343,0.0000028371,0.0000028401, -0.0000028421,0.0000028426,0.0000028425,0.0000028432,0.0000028450, -0.0000028473,0.0000028495,0.0000028517,0.0000028525,0.0000028508, -0.0000028471,0.0000028438,0.0000028411,0.0000028372,0.0000028317, -0.0000028251,0.0000028175,0.0000028096,0.0000028040,0.0000028035, -0.0000028079,0.0000028152,0.0000028226,0.0000028291,0.0000028347, -0.0000028388,0.0000028418,0.0000028431,0.0000028434,0.0000028433, -0.0000028430,0.0000028435,0.0000028453,0.0000028462,0.0000028459, -0.0000028453,0.0000028449,0.0000028447,0.0000028441,0.0000028438, -0.0000028458,0.0000028496,0.0000028529,0.0000028563,0.0000028598, -0.0000028610,0.0000028593,0.0000028554,0.0000028498,0.0000028423, -0.0000028346,0.0000028280,0.0000028245,0.0000028256,0.0000028311, -0.0000028363,0.0000028365,0.0000028325,0.0000028276,0.0000028265, -0.0000028329,0.0000028477,0.0000028609,0.0000028686,0.0000028707, -0.0000028692,0.0000028609,0.0000028496,0.0000028431,0.0000028416, -0.0000028387,0.0000028311,0.0000028301,0.0000028405,0.0000028547, -0.0000028617,0.0000028650,0.0000028671,0.0000028666,0.0000028586, -0.0000028445,0.0000028281,0.0000028157,0.0000028141,0.0000028192, -0.0000028221,0.0000028262,0.0000028296,0.0000028185,0.0000028045, -0.0000028069,0.0000028263,0.0000028448,0.0000028483,0.0000028427, -0.0000028345,0.0000028338,0.0000028369,0.0000028384,0.0000028404, -0.0000028459,0.0000028531,0.0000028582,0.0000028583,0.0000028542, -0.0000028533,0.0000028604,0.0000028687,0.0000028691,0.0000028568, -0.0000028388,0.0000028281,0.0000028236,0.0000028212,0.0000028229, -0.0000028379,0.0000028607,0.0000028700,0.0000028712,0.0000028697, -0.0000028674,0.0000028636,0.0000028508,0.0000028313,0.0000028204, -0.0000028303,0.0000028337,0.0000028283,0.0000028151,0.0000028009, -0.0000028040,0.0000028058,0.0000027980,0.0000027986,0.0000027987, -0.0000027952,0.0000027903,0.0000027914,0.0000027959,0.0000027957, -0.0000027926,0.0000027893,0.0000027875,0.0000027868,0.0000027879, -0.0000027932,0.0000028013,0.0000028090,0.0000028138,0.0000028165, -0.0000028176,0.0000028141,0.0000028107,0.0000028119,0.0000028120, -0.0000028112,0.0000028102,0.0000028097,0.0000028111,0.0000028131, -0.0000028161,0.0000028198,0.0000028223,0.0000028216,0.0000028182, -0.0000028134,0.0000028097,0.0000028065,0.0000028020,0.0000027966, -0.0000027912,0.0000027866,0.0000027829,0.0000027810,0.0000027804, -0.0000027798,0.0000027786,0.0000027763,0.0000027725,0.0000027684, -0.0000027682,0.0000027759,0.0000027851,0.0000027904,0.0000027920, -0.0000027919,0.0000027909,0.0000027872,0.0000027792,0.0000027699, -0.0000027626,0.0000027575,0.0000027523,0.0000027466,0.0000027408, -0.0000027357,0.0000027329,0.0000027323,0.0000027315,0.0000027283, -0.0000027245,0.0000027228,0.0000027219,0.0000027191,0.0000027152, -0.0000027118,0.0000027092,0.0000027082,0.0000027105,0.0000027196, -0.0000027305,0.0000027343,0.0000027297,0.0000027240,0.0000027239, -0.0000027294,0.0000027319,0.0000027274,0.0000027164,0.0000027083, -0.0000027072,0.0000027115,0.0000027173,0.0000027209,0.0000027212, -0.0000027208,0.0000027237,0.0000027306,0.0000027368,0.0000027388, -0.0000027367,0.0000027350,0.0000027370,0.0000027425,0.0000027472, -0.0000027484,0.0000027435,0.0000027323,0.0000027096,0.0000026828, -0.0000026599,0.0000026458,0.0000026528,0.0000026749,0.0000026757, -0.0000026752,0.0000027005,0.0000027406,0.0000027583,0.0000027603, -0.0000027596,0.0000027716,0.0000028071,0.0000028217,0.0000028225, -0.0000028262,0.0000028235,0.0000028150,0.0000028103,0.0000028042, -0.0000028031,0.0000028066,0.0000028059,0.0000028018,0.0000028005, -0.0000027948,0.0000027860,0.0000027755,0.0000027670,0.0000027625, -0.0000027597,0.0000027615,0.0000027674,0.0000027766,0.0000027866, -0.0000027926,0.0000027937,0.0000027893,0.0000027885,0.0000027929, -0.0000027981,0.0000027989,0.0000028026,0.0000028141,0.0000028325, -0.0000028413,0.0000028370,0.0000028351,0.0000028309,0.0000028209, -0.0000028120,0.0000028085,0.0000028121,0.0000028102,0.0000028021, -0.0000027948,0.0000027910,0.0000027768,0.0000027587,0.0000027521, -0.0000027540,0.0000027534,0.0000027570,0.0000027536,0.0000027467, -0.0000027370,0.0000027237,0.0000027178,0.0000027182,0.0000027203, -0.0000027192,0.0000027189,0.0000027197,0.0000027152,0.0000027013, -0.0000026861,0.0000026757,0.0000026705,0.0000026716,0.0000026770, -0.0000026820,0.0000026846,0.0000026838,0.0000026795,0.0000026732, -0.0000026667,0.0000026618,0.0000026567,0.0000026516,0.0000026473, -0.0000026463,0.0000026501,0.0000026546,0.0000026585,0.0000026597, -0.0000026571,0.0000026512,0.0000026446,0.0000026377,0.0000026306, -0.0000026243,0.0000026216,0.0000026219,0.0000026243,0.0000026273, -0.0000026299,0.0000026326,0.0000026349,0.0000026368,0.0000026383, -0.0000026396,0.0000026413,0.0000026448,0.0000026503,0.0000026575, -0.0000026640,0.0000026702,0.0000026731,0.0000026725,0.0000026715, -0.0000026700,0.0000026709,0.0000026724,0.0000026716,0.0000026686, -0.0000026671,0.0000026698,0.0000026769,0.0000026816,0.0000026877, -0.0000026918,0.0000026947,0.0000026984,0.0000027026,0.0000027066, -0.0000027111,0.0000027137,0.0000027132,0.0000027118,0.0000027097, -0.0000027056,0.0000027005,0.0000026963,0.0000026946,0.0000026964, -0.0000026982,0.0000026948,0.0000026834,0.0000026720,0.0000026696, -0.0000026730,0.0000026781,0.0000026868,0.0000026987,0.0000027083, -0.0000027107,0.0000027094,0.0000027160,0.0000027373,0.0000027646, -0.0000027954,0.0000028175,0.0000028208,0.0000028117,0.0000027995, -0.0000028007,0.0000028167,0.0000028295,0.0000028319,0.0000028267, -0.0000028227,0.0000028236,0.0000028245,0.0000028218,0.0000028192, -0.0000028198,0.0000028221,0.0000028244,0.0000028259,0.0000028267, -0.0000028262,0.0000028232,0.0000028198,0.0000028213,0.0000028314, -0.0000028426,0.0000028427,0.0000028366,0.0000028317,0.0000028301, -0.0000028302,0.0000028301,0.0000028282,0.0000028265,0.0000028267, -0.0000028296,0.0000028354,0.0000028406,0.0000028418,0.0000028391, -0.0000028363,0.0000028358,0.0000028354,0.0000028317,0.0000028262, -0.0000028228,0.0000028195,0.0000028144,0.0000028091,0.0000028062, -0.0000028070,0.0000028115,0.0000028175,0.0000028217,0.0000028244, -0.0000028292,0.0000028340,0.0000028359,0.0000028332,0.0000028367, -0.0000028548,0.0000028772,0.0000028863,0.0000028872,0.0000028902, -0.0000028946,0.0000028925,0.0000028810,0.0000028705,0.0000028666, -0.0000028641,0.0000028591,0.0000028500,0.0000028369,0.0000028237, -0.0000028145,0.0000028087,0.0000028043,0.0000027979,0.0000027891, -0.0000027808,0.0000027787,0.0000027856,0.0000027945,0.0000027991, -0.0000028022,0.0000028064,0.0000028114,0.0000028154,0.0000028199, -0.0000028278,0.0000028383,0.0000028481,0.0000028560,0.0000028622, -0.0000028674,0.0000028709,0.0000028719,0.0000028698,0.0000028645, -0.0000028568,0.0000028484,0.0000028446,0.0000028470,0.0000028556, -0.0000028663,0.0000028762,0.0000028831,0.0000028880,0.0000028926, -0.0000028947,0.0000028930,0.0000028872,0.0000028802,0.0000028754, -0.0000028730,0.0000028711,0.0000028695,0.0000028688,0.0000028685, -0.0000028664,0.0000028616,0.0000028556,0.0000028506,0.0000028500, -0.0000028574,0.0000028730,0.0000028904,0.0000029024,0.0000029068, -0.0000029080,0.0000029106,0.0000029135,0.0000029135,0.0000029097, -0.0000029058,0.0000029042,0.0000029017,0.0000028958,0.0000028887, -0.0000028829,0.0000028798,0.0000028788,0.0000028760,0.0000028714, -0.0000028686,0.0000028679,0.0000028683,0.0000028709,0.0000028739, -0.0000028742,0.0000028728,0.0000028713,0.0000028709,0.0000028744, -0.0000028840,0.0000028948,0.0000029017,0.0000029064,0.0000029094, -0.0000029090,0.0000029033,0.0000028985,0.0000028939,0.0000028923, -0.0000028953,0.0000029015,0.0000029060,0.0000029062,0.0000029028, -0.0000028987,0.0000028970,0.0000028961,0.0000028937,0.0000028906, -0.0000028868,0.0000028813,0.0000028740,0.0000028673,0.0000028613, -0.0000028568,0.0000028554,0.0000028544,0.0000028555,0.0000028606, -0.0000028683,0.0000028718,0.0000028725,0.0000028745,0.0000028794, -0.0000028860,0.0000028905,0.0000028906,0.0000028869,0.0000028805, -0.0000028733,0.0000028666,0.0000028612,0.0000028568,0.0000028541, -0.0000028534,0.0000028539,0.0000028549,0.0000028556,0.0000028562, -0.0000028565,0.0000028550,0.0000028496,0.0000028389,0.0000028240, -0.0000028097,0.0000027992,0.0000027906,0.0000027854,0.0000027821, -0.0000027801,0.0000027797,0.0000027829,0.0000027898,0.0000027948, -0.0000027997,0.0000028067,0.0000028183,0.0000028307,0.0000028381, -0.0000028404,0.0000028450,0.0000028524,0.0000028586,0.0000028620, -0.0000028669,0.0000028738,0.0000028810,0.0000028866,0.0000028858, -0.0000028761,0.0000028602,0.0000028460,0.0000028407,0.0000028411, -0.0000028415,0.0000028409,0.0000028415,0.0000028428,0.0000028491, -0.0000028638,0.0000028738,0.0000028794,0.0000028884,0.0000028930, -0.0000028862,0.0000028751,0.0000028681,0.0000028641,0.0000028610, -0.0000028594,0.0000028588,0.0000028550,0.0000028497,0.0000028486, -0.0000028533,0.0000028551,0.0000028562,0.0000028589,0.0000028627, -0.0000028767,0.0000028916,0.0000028951,0.0000028908,0.0000028859, -0.0000028815,0.0000028787,0.0000028767,0.0000028748,0.0000028747, -0.0000028799,0.0000028884,0.0000028884,0.0000028781,0.0000028707, -0.0000028734,0.0000028807,0.0000028846,0.0000028860,0.0000028833, -0.0000028789,0.0000028774,0.0000028747,0.0000028693,0.0000028645, -0.0000028650,0.0000028701,0.0000028729,0.0000028708,0.0000028657, -0.0000028628,0.0000028602,0.0000028501,0.0000028378,0.0000028423, -0.0000028620,0.0000028761,0.0000028833,0.0000028863,0.0000028890, -0.0000028903,0.0000028873,0.0000028782,0.0000028759,0.0000028783, -0.0000028667,0.0000028448,0.0000028420,0.0000028485,0.0000028762, -0.0000029081,0.0000029159,0.0000029098,0.0000029002,0.0000028950, -0.0000028955,0.0000028949,0.0000028938,0.0000028937,0.0000028935, -0.0000028929,0.0000028896,0.0000028813,0.0000028721,0.0000028574, -0.0000028309,0.0000028198,0.0000028163,0.0000028109,0.0000028026, -0.0000027942,0.0000027836,0.0000027722,0.0000027664,0.0000027661, -0.0000027684,0.0000027696,0.0000027659,0.0000027584,0.0000027561, -0.0000027639,0.0000027731,0.0000027760,0.0000027703,0.0000027592, -0.0000027678,0.0000027952,0.0000028129,0.0000028141,0.0000028117, -0.0000028130,0.0000028191,0.0000028267,0.0000028310,0.0000028310, -0.0000028288,0.0000028262,0.0000028247,0.0000028256,0.0000028285, -0.0000028317,0.0000028350,0.0000028371,0.0000028384,0.0000028389, -0.0000028384,0.0000028385,0.0000028405,0.0000028439,0.0000028465, -0.0000028478,0.0000028485,0.0000028486,0.0000028474,0.0000028447, -0.0000028417,0.0000028401,0.0000028386,0.0000028352,0.0000028296, -0.0000028223,0.0000028144,0.0000028083,0.0000028056,0.0000028072, -0.0000028131,0.0000028201,0.0000028256,0.0000028292,0.0000028317, -0.0000028334,0.0000028341,0.0000028338,0.0000028329,0.0000028324, -0.0000028328,0.0000028340,0.0000028365,0.0000028397,0.0000028421, -0.0000028435,0.0000028442,0.0000028447,0.0000028449,0.0000028453, -0.0000028464,0.0000028484,0.0000028507,0.0000028534,0.0000028571, -0.0000028615,0.0000028634,0.0000028623,0.0000028587,0.0000028532, -0.0000028466,0.0000028414,0.0000028369,0.0000028332,0.0000028323, -0.0000028351,0.0000028392,0.0000028409,0.0000028386,0.0000028328, -0.0000028297,0.0000028357,0.0000028481,0.0000028591,0.0000028660, -0.0000028691,0.0000028688,0.0000028625,0.0000028507,0.0000028435, -0.0000028423,0.0000028402,0.0000028333,0.0000028292,0.0000028352, -0.0000028477,0.0000028563,0.0000028602,0.0000028620,0.0000028621, -0.0000028576,0.0000028488,0.0000028375,0.0000028267,0.0000028216, -0.0000028232,0.0000028250,0.0000028274,0.0000028329,0.0000028255, -0.0000028065,0.0000028030,0.0000028211,0.0000028411,0.0000028459, -0.0000028392,0.0000028279,0.0000028250,0.0000028282,0.0000028294, -0.0000028298,0.0000028348,0.0000028445,0.0000028529,0.0000028549, -0.0000028515,0.0000028484,0.0000028528,0.0000028606,0.0000028617, -0.0000028526,0.0000028371,0.0000028272,0.0000028230,0.0000028209, -0.0000028219,0.0000028285,0.0000028447,0.0000028558,0.0000028593, -0.0000028581,0.0000028568,0.0000028567,0.0000028520,0.0000028362, -0.0000028190,0.0000028218,0.0000028325,0.0000028310,0.0000028197, -0.0000028054,0.0000028039,0.0000028083,0.0000028000,0.0000028010, -0.0000028021,0.0000027971,0.0000027897,0.0000027913,0.0000027980, -0.0000027973,0.0000027943,0.0000027927,0.0000027922,0.0000027921, -0.0000027927,0.0000027972,0.0000028063,0.0000028153,0.0000028217, -0.0000028235,0.0000028247,0.0000028225,0.0000028214,0.0000028230, -0.0000028246,0.0000028255,0.0000028239,0.0000028236,0.0000028237, -0.0000028229,0.0000028214,0.0000028193,0.0000028173,0.0000028158, -0.0000028150,0.0000028143,0.0000028131,0.0000028125,0.0000028123, -0.0000028115,0.0000028099,0.0000028065,0.0000028012,0.0000027964, -0.0000027947,0.0000027934,0.0000027901,0.0000027848,0.0000027785, -0.0000027725,0.0000027675,0.0000027641,0.0000027628,0.0000027675, -0.0000027760,0.0000027836,0.0000027879,0.0000027884,0.0000027849, -0.0000027778,0.0000027684,0.0000027607,0.0000027554,0.0000027502, -0.0000027436,0.0000027374,0.0000027325,0.0000027294,0.0000027283, -0.0000027271,0.0000027235,0.0000027193,0.0000027178,0.0000027175, -0.0000027155,0.0000027108,0.0000027057,0.0000027016,0.0000027000, -0.0000027010,0.0000027081,0.0000027193,0.0000027264,0.0000027254, -0.0000027204,0.0000027203,0.0000027251,0.0000027273,0.0000027234, -0.0000027129,0.0000027040,0.0000027022,0.0000027060,0.0000027123, -0.0000027170,0.0000027189,0.0000027192,0.0000027212,0.0000027267, -0.0000027336,0.0000027368,0.0000027352,0.0000027342,0.0000027380, -0.0000027443,0.0000027477,0.0000027468,0.0000027400,0.0000027267, -0.0000027022,0.0000026743,0.0000026512,0.0000026447,0.0000026623, -0.0000026742,0.0000026678,0.0000026856,0.0000027332,0.0000027610, -0.0000027639,0.0000027622,0.0000027646,0.0000027926,0.0000028192, -0.0000028216,0.0000028231,0.0000028253,0.0000028195,0.0000028136, -0.0000028085,0.0000028030,0.0000028033,0.0000028055,0.0000028028, -0.0000027993,0.0000027974,0.0000027910,0.0000027815,0.0000027707, -0.0000027632,0.0000027603,0.0000027600,0.0000027642,0.0000027699, -0.0000027802,0.0000027904,0.0000027943,0.0000027924,0.0000027889, -0.0000027894,0.0000027938,0.0000027982,0.0000027974,0.0000027980, -0.0000028057,0.0000028253,0.0000028383,0.0000028355,0.0000028323, -0.0000028272,0.0000028169,0.0000028085,0.0000028074,0.0000028106, -0.0000028084,0.0000027992,0.0000027917,0.0000027842,0.0000027677, -0.0000027547,0.0000027535,0.0000027533,0.0000027526,0.0000027566, -0.0000027514,0.0000027440,0.0000027299,0.0000027176,0.0000027146, -0.0000027158,0.0000027175,0.0000027158,0.0000027173,0.0000027159, -0.0000027043,0.0000026885,0.0000026746,0.0000026656,0.0000026650, -0.0000026713,0.0000026790,0.0000026824,0.0000026800,0.0000026733, -0.0000026654,0.0000026585,0.0000026527,0.0000026485,0.0000026446, -0.0000026418,0.0000026417,0.0000026440,0.0000026481,0.0000026512, -0.0000026519,0.0000026498,0.0000026444,0.0000026362,0.0000026274, -0.0000026192,0.0000026121,0.0000026072,0.0000026057,0.0000026058, -0.0000026068,0.0000026082,0.0000026102,0.0000026123,0.0000026136, -0.0000026139,0.0000026136,0.0000026137,0.0000026149,0.0000026179, -0.0000026233,0.0000026320,0.0000026414,0.0000026512,0.0000026589, -0.0000026602,0.0000026620,0.0000026608,0.0000026621,0.0000026640, -0.0000026629,0.0000026596,0.0000026554,0.0000026535,0.0000026569, -0.0000026579,0.0000026607,0.0000026637,0.0000026671,0.0000026725, -0.0000026783,0.0000026833,0.0000026887,0.0000026941,0.0000026987, -0.0000027021,0.0000027045,0.0000027055,0.0000027053,0.0000027030, -0.0000026980,0.0000026945,0.0000026954,0.0000026976,0.0000026969, -0.0000026910,0.0000026802,0.0000026724,0.0000026727,0.0000026791, -0.0000026870,0.0000026977,0.0000027072,0.0000027090,0.0000027063, -0.0000027080,0.0000027219,0.0000027430,0.0000027724,0.0000027988, -0.0000028105,0.0000028077,0.0000028006,0.0000028044,0.0000028196, -0.0000028324,0.0000028354,0.0000028304,0.0000028268,0.0000028278, -0.0000028290,0.0000028277,0.0000028253,0.0000028234,0.0000028226, -0.0000028227,0.0000028236,0.0000028241,0.0000028225,0.0000028188, -0.0000028168,0.0000028204,0.0000028314,0.0000028403,0.0000028396, -0.0000028321,0.0000028271,0.0000028246,0.0000028235,0.0000028227, -0.0000028223,0.0000028244,0.0000028296,0.0000028349,0.0000028396, -0.0000028422,0.0000028417,0.0000028386,0.0000028367,0.0000028373, -0.0000028374,0.0000028337,0.0000028270,0.0000028212,0.0000028157, -0.0000028106,0.0000028061,0.0000028043,0.0000028068,0.0000028114, -0.0000028148,0.0000028189,0.0000028243,0.0000028304,0.0000028334, -0.0000028368,0.0000028467,0.0000028685,0.0000028866,0.0000028909, -0.0000028910,0.0000028946,0.0000028987,0.0000028960,0.0000028842, -0.0000028759,0.0000028741,0.0000028708,0.0000028638,0.0000028545, -0.0000028434,0.0000028322,0.0000028227,0.0000028168,0.0000028129, -0.0000028079,0.0000027987,0.0000027898,0.0000027871,0.0000027913, -0.0000027986,0.0000028039,0.0000028081,0.0000028131,0.0000028175, -0.0000028205,0.0000028239,0.0000028300,0.0000028381,0.0000028464, -0.0000028540,0.0000028606,0.0000028660,0.0000028699,0.0000028723, -0.0000028726,0.0000028700,0.0000028656,0.0000028603,0.0000028547, -0.0000028517,0.0000028531,0.0000028585,0.0000028670,0.0000028768, -0.0000028852,0.0000028912,0.0000028953,0.0000028965,0.0000028944, -0.0000028888,0.0000028827,0.0000028783,0.0000028753,0.0000028730, -0.0000028719,0.0000028732,0.0000028756,0.0000028765,0.0000028739, -0.0000028664,0.0000028585,0.0000028570,0.0000028660,0.0000028835, -0.0000029001,0.0000029074,0.0000029079,0.0000029083,0.0000029105, -0.0000029115,0.0000029091,0.0000029052,0.0000029036,0.0000029028, -0.0000028981,0.0000028897,0.0000028822,0.0000028774,0.0000028759, -0.0000028763,0.0000028752,0.0000028708,0.0000028668,0.0000028643, -0.0000028624,0.0000028626,0.0000028650,0.0000028673,0.0000028695, -0.0000028709,0.0000028701,0.0000028702,0.0000028737,0.0000028828, -0.0000028916,0.0000028976,0.0000029009,0.0000029017,0.0000029004, -0.0000028992,0.0000028985,0.0000028981,0.0000028985,0.0000029011, -0.0000029041,0.0000029043,0.0000029019,0.0000028974,0.0000028937, -0.0000028914,0.0000028883,0.0000028851,0.0000028815,0.0000028779, -0.0000028731,0.0000028673,0.0000028611,0.0000028560,0.0000028563, -0.0000028581,0.0000028579,0.0000028571,0.0000028586,0.0000028610, -0.0000028601,0.0000028572,0.0000028575,0.0000028625,0.0000028698, -0.0000028742,0.0000028745,0.0000028702,0.0000028637,0.0000028575, -0.0000028521,0.0000028479,0.0000028446,0.0000028420,0.0000028399, -0.0000028377,0.0000028354,0.0000028331,0.0000028294,0.0000028239, -0.0000028170,0.0000028085,0.0000027981,0.0000027883,0.0000027824, -0.0000027801,0.0000027800,0.0000027798,0.0000027795,0.0000027790, -0.0000027796,0.0000027827,0.0000027869,0.0000027894,0.0000027931, -0.0000027956,0.0000028039,0.0000028162,0.0000028278,0.0000028338, -0.0000028394,0.0000028471,0.0000028550,0.0000028598,0.0000028645, -0.0000028709,0.0000028778,0.0000028845,0.0000028861,0.0000028824, -0.0000028709,0.0000028571,0.0000028501,0.0000028491,0.0000028476, -0.0000028441,0.0000028431,0.0000028438,0.0000028471,0.0000028608, -0.0000028739,0.0000028811,0.0000028894,0.0000028940,0.0000028911, -0.0000028807,0.0000028707,0.0000028657,0.0000028648,0.0000028631, -0.0000028608,0.0000028581,0.0000028534,0.0000028477,0.0000028463, -0.0000028505,0.0000028567,0.0000028607,0.0000028634,0.0000028754, -0.0000028926,0.0000028978,0.0000028919,0.0000028865,0.0000028827, -0.0000028806,0.0000028777,0.0000028763,0.0000028789,0.0000028865, -0.0000028925,0.0000028886,0.0000028773,0.0000028723,0.0000028764, -0.0000028834,0.0000028868,0.0000028859,0.0000028820,0.0000028784, -0.0000028778,0.0000028743,0.0000028675,0.0000028618,0.0000028619, -0.0000028663,0.0000028682,0.0000028648,0.0000028582,0.0000028559, -0.0000028586,0.0000028564,0.0000028447,0.0000028435,0.0000028589, -0.0000028749,0.0000028840,0.0000028880,0.0000028912,0.0000028939, -0.0000028909,0.0000028804,0.0000028767,0.0000028778,0.0000028670, -0.0000028458,0.0000028420,0.0000028471,0.0000028705,0.0000029034, -0.0000029159,0.0000029130,0.0000029053,0.0000028996,0.0000028991, -0.0000028978,0.0000028946,0.0000028916,0.0000028902,0.0000028911, -0.0000028910,0.0000028875,0.0000028784,0.0000028670,0.0000028410, -0.0000028208,0.0000028167,0.0000028137,0.0000028071,0.0000027992, -0.0000027896,0.0000027748,0.0000027644,0.0000027624,0.0000027647, -0.0000027679,0.0000027668,0.0000027606,0.0000027512,0.0000027490, -0.0000027590,0.0000027673,0.0000027715,0.0000027664,0.0000027597, -0.0000027710,0.0000027970,0.0000028087,0.0000028073,0.0000028036, -0.0000028052,0.0000028129,0.0000028218,0.0000028265,0.0000028279, -0.0000028269,0.0000028256,0.0000028262,0.0000028284,0.0000028309, -0.0000028320,0.0000028313,0.0000028300,0.0000028292,0.0000028304, -0.0000028340,0.0000028390,0.0000028428,0.0000028444,0.0000028451, -0.0000028450,0.0000028438,0.0000028408,0.0000028384,0.0000028379, -0.0000028381,0.0000028381,0.0000028365,0.0000028322,0.0000028254, -0.0000028181,0.0000028144,0.0000028140,0.0000028158,0.0000028198, -0.0000028244,0.0000028275,0.0000028287,0.0000028287,0.0000028282, -0.0000028281,0.0000028281,0.0000028279,0.0000028280,0.0000028294, -0.0000028311,0.0000028328,0.0000028359,0.0000028401,0.0000028435, -0.0000028464,0.0000028501,0.0000028542,0.0000028578,0.0000028605, -0.0000028618,0.0000028616,0.0000028608,0.0000028609,0.0000028628, -0.0000028650,0.0000028656,0.0000028639,0.0000028608,0.0000028567, -0.0000028534,0.0000028515,0.0000028494,0.0000028462,0.0000028430, -0.0000028422,0.0000028441,0.0000028459,0.0000028447,0.0000028393, -0.0000028366,0.0000028407,0.0000028503,0.0000028589,0.0000028642, -0.0000028668,0.0000028669,0.0000028622,0.0000028526,0.0000028461, -0.0000028446,0.0000028426,0.0000028362,0.0000028290,0.0000028300, -0.0000028396,0.0000028507,0.0000028564,0.0000028581,0.0000028582, -0.0000028563,0.0000028518,0.0000028462,0.0000028396,0.0000028335, -0.0000028299,0.0000028294,0.0000028302,0.0000028348,0.0000028328, -0.0000028139,0.0000028030,0.0000028154,0.0000028360,0.0000028423, -0.0000028369,0.0000028265,0.0000028230,0.0000028251,0.0000028267, -0.0000028249,0.0000028264,0.0000028346,0.0000028447,0.0000028501, -0.0000028489,0.0000028454,0.0000028464,0.0000028514,0.0000028519, -0.0000028456,0.0000028352,0.0000028281,0.0000028251,0.0000028230, -0.0000028229,0.0000028247,0.0000028308,0.0000028422,0.0000028463, -0.0000028447,0.0000028448,0.0000028469,0.0000028480,0.0000028400, -0.0000028205,0.0000028121,0.0000028288,0.0000028317,0.0000028235, -0.0000028106,0.0000028050,0.0000028099,0.0000028031,0.0000028018, -0.0000028051,0.0000027996,0.0000027898,0.0000027902,0.0000027974, -0.0000027971,0.0000027955,0.0000027969,0.0000027987,0.0000027999, -0.0000028001,0.0000028035,0.0000028118,0.0000028207,0.0000028265, -0.0000028276,0.0000028261,0.0000028233,0.0000028228,0.0000028239, -0.0000028259,0.0000028273,0.0000028260,0.0000028262,0.0000028277, -0.0000028282,0.0000028282,0.0000028279,0.0000028263,0.0000028238, -0.0000028200,0.0000028166,0.0000028136,0.0000028116,0.0000028115, -0.0000028115,0.0000028104,0.0000028079,0.0000028058,0.0000028049, -0.0000028054,0.0000028055,0.0000028041,0.0000027985,0.0000027914, -0.0000027833,0.0000027758,0.0000027699,0.0000027650,0.0000027604, -0.0000027577,0.0000027610,0.0000027719,0.0000027818,0.0000027848, -0.0000027819,0.0000027754,0.0000027666,0.0000027585,0.0000027530, -0.0000027475,0.0000027401,0.0000027341,0.0000027301,0.0000027269, -0.0000027255,0.0000027239,0.0000027201,0.0000027163,0.0000027154, -0.0000027156,0.0000027142,0.0000027099,0.0000027037,0.0000026987, -0.0000026971,0.0000026963,0.0000026989,0.0000027066,0.0000027153, -0.0000027185,0.0000027178,0.0000027182,0.0000027214,0.0000027229, -0.0000027197,0.0000027107,0.0000027027,0.0000027008,0.0000027024, -0.0000027058,0.0000027101,0.0000027141,0.0000027170,0.0000027196, -0.0000027228,0.0000027292,0.0000027334,0.0000027333,0.0000027335, -0.0000027391,0.0000027451,0.0000027465,0.0000027433,0.0000027353, -0.0000027211,0.0000026936,0.0000026636,0.0000026443,0.0000026478, -0.0000026684,0.0000026676,0.0000026709,0.0000027177,0.0000027605, -0.0000027685,0.0000027658,0.0000027646,0.0000027788,0.0000028113, -0.0000028227,0.0000028219,0.0000028239,0.0000028229,0.0000028163, -0.0000028125,0.0000028065,0.0000028023,0.0000028038,0.0000028068, -0.0000028044,0.0000027991,0.0000027950,0.0000027882,0.0000027773, -0.0000027665,0.0000027614,0.0000027610,0.0000027623,0.0000027667, -0.0000027740,0.0000027857,0.0000027948,0.0000027961,0.0000027914, -0.0000027879,0.0000027891,0.0000027926,0.0000027966,0.0000027960, -0.0000027952,0.0000027987,0.0000028172,0.0000028347,0.0000028343, -0.0000028302,0.0000028238,0.0000028133,0.0000028055,0.0000028065, -0.0000028092,0.0000028061,0.0000027959,0.0000027872,0.0000027764, -0.0000027606,0.0000027545,0.0000027548,0.0000027520,0.0000027533, -0.0000027552,0.0000027501,0.0000027390,0.0000027228,0.0000027138, -0.0000027117,0.0000027137,0.0000027136,0.0000027129,0.0000027129, -0.0000027046,0.0000026907,0.0000026776,0.0000026661,0.0000026618, -0.0000026665,0.0000026742,0.0000026767,0.0000026731,0.0000026665, -0.0000026606,0.0000026547,0.0000026484,0.0000026425,0.0000026395, -0.0000026391,0.0000026393,0.0000026388,0.0000026375,0.0000026348, -0.0000026318,0.0000026290,0.0000026258,0.0000026209,0.0000026145, -0.0000026080,0.0000026019,0.0000025975,0.0000025958,0.0000025961, -0.0000025969,0.0000025977,0.0000025992,0.0000026016,0.0000026031, -0.0000026030,0.0000026011,0.0000025973,0.0000025927,0.0000025897, -0.0000025882,0.0000025903,0.0000025964,0.0000026044,0.0000026136, -0.0000026235,0.0000026296,0.0000026349,0.0000026371,0.0000026430, -0.0000026485,0.0000026489,0.0000026469,0.0000026414,0.0000026374, -0.0000026393,0.0000026405,0.0000026424,0.0000026441,0.0000026443, -0.0000026462,0.0000026482,0.0000026522,0.0000026596,0.0000026683, -0.0000026759,0.0000026805,0.0000026851,0.0000026907,0.0000026964, -0.0000027002,0.0000027008,0.0000027009,0.0000026991,0.0000026965, -0.0000026949,0.0000026950,0.0000026940,0.0000026877,0.0000026773, -0.0000026747,0.0000026801,0.0000026880,0.0000026961,0.0000027046, -0.0000027067,0.0000027046,0.0000027041,0.0000027114,0.0000027290, -0.0000027523,0.0000027758,0.0000027928,0.0000027994,0.0000028006, -0.0000028097,0.0000028246,0.0000028352,0.0000028387,0.0000028361, -0.0000028336,0.0000028335,0.0000028336,0.0000028325,0.0000028303, -0.0000028264,0.0000028225,0.0000028212,0.0000028224,0.0000028233, -0.0000028216,0.0000028178,0.0000028154,0.0000028202,0.0000028314, -0.0000028397,0.0000028359,0.0000028274,0.0000028223,0.0000028185, -0.0000028163,0.0000028151,0.0000028164,0.0000028230,0.0000028335, -0.0000028410,0.0000028428,0.0000028429,0.0000028416,0.0000028387, -0.0000028369,0.0000028379,0.0000028377,0.0000028329,0.0000028244, -0.0000028168,0.0000028101,0.0000028052,0.0000028022,0.0000028021, -0.0000028041,0.0000028062,0.0000028113,0.0000028195,0.0000028270, -0.0000028335,0.0000028418,0.0000028583,0.0000028782,0.0000028917, -0.0000028950,0.0000028955,0.0000028992,0.0000029018,0.0000028975, -0.0000028867,0.0000028806,0.0000028803,0.0000028772,0.0000028684, -0.0000028588,0.0000028496,0.0000028405,0.0000028324,0.0000028260, -0.0000028219,0.0000028171,0.0000028095,0.0000028023,0.0000027999, -0.0000028016,0.0000028044,0.0000028092,0.0000028150,0.0000028212, -0.0000028269,0.0000028308,0.0000028352,0.0000028411,0.0000028478, -0.0000028536,0.0000028581,0.0000028626,0.0000028676,0.0000028723, -0.0000028758,0.0000028777,0.0000028776,0.0000028754,0.0000028724, -0.0000028695,0.0000028670,0.0000028659,0.0000028670,0.0000028690, -0.0000028733,0.0000028812,0.0000028899,0.0000028962,0.0000028996, -0.0000029001,0.0000028977,0.0000028927,0.0000028875,0.0000028831, -0.0000028796,0.0000028777,0.0000028775,0.0000028799,0.0000028827, -0.0000028834,0.0000028806,0.0000028729,0.0000028663,0.0000028673, -0.0000028791,0.0000028961,0.0000029069,0.0000029086,0.0000029071, -0.0000029066,0.0000029071,0.0000029058,0.0000029027,0.0000029012, -0.0000029012,0.0000028997,0.0000028922,0.0000028814,0.0000028737, -0.0000028703,0.0000028700,0.0000028720,0.0000028726,0.0000028706, -0.0000028675,0.0000028638,0.0000028595,0.0000028561,0.0000028561, -0.0000028576,0.0000028615,0.0000028668,0.0000028705,0.0000028724, -0.0000028746,0.0000028785,0.0000028839,0.0000028889,0.0000028920, -0.0000028927,0.0000028920,0.0000028921,0.0000028942,0.0000028963, -0.0000028981,0.0000029004,0.0000029025,0.0000029032,0.0000029019, -0.0000028988,0.0000028946,0.0000028902,0.0000028851,0.0000028797, -0.0000028756,0.0000028718,0.0000028680,0.0000028642,0.0000028609, -0.0000028586,0.0000028583,0.0000028591,0.0000028599,0.0000028592, -0.0000028575,0.0000028560,0.0000028546,0.0000028507,0.0000028454, -0.0000028446,0.0000028485,0.0000028532,0.0000028535,0.0000028496, -0.0000028432,0.0000028365,0.0000028312,0.0000028269,0.0000028237, -0.0000028203,0.0000028164,0.0000028122,0.0000028078,0.0000028039, -0.0000027998,0.0000027949,0.0000027891,0.0000027845,0.0000027807, -0.0000027773,0.0000027755,0.0000027767,0.0000027794,0.0000027818, -0.0000027839,0.0000027848,0.0000027861,0.0000027876,0.0000027898, -0.0000027933,0.0000027962,0.0000027961,0.0000027957,0.0000027972, -0.0000028026,0.0000028132,0.0000028217,0.0000028296,0.0000028394, -0.0000028496,0.0000028566,0.0000028620,0.0000028677,0.0000028740, -0.0000028809,0.0000028850,0.0000028844,0.0000028794,0.0000028692, -0.0000028613,0.0000028576,0.0000028546,0.0000028489,0.0000028448, -0.0000028440,0.0000028450,0.0000028560,0.0000028711,0.0000028813, -0.0000028884,0.0000028933,0.0000028935,0.0000028872,0.0000028768, -0.0000028697,0.0000028687,0.0000028671,0.0000028640,0.0000028609, -0.0000028570,0.0000028491,0.0000028414,0.0000028432,0.0000028552, -0.0000028623,0.0000028642,0.0000028715,0.0000028917,0.0000029003, -0.0000028937,0.0000028867,0.0000028834,0.0000028820,0.0000028794, -0.0000028791,0.0000028840,0.0000028918,0.0000028937,0.0000028868, -0.0000028769,0.0000028757,0.0000028809,0.0000028874,0.0000028891, -0.0000028858,0.0000028801,0.0000028763,0.0000028756,0.0000028707, -0.0000028625,0.0000028557,0.0000028558,0.0000028613,0.0000028644, -0.0000028602,0.0000028518,0.0000028485,0.0000028543,0.0000028599, -0.0000028519,0.0000028456,0.0000028554,0.0000028719,0.0000028837, -0.0000028898,0.0000028939,0.0000028974,0.0000028935,0.0000028825, -0.0000028781,0.0000028778,0.0000028666,0.0000028469,0.0000028427, -0.0000028473,0.0000028660,0.0000028976,0.0000029147,0.0000029148, -0.0000029095,0.0000029043,0.0000029027,0.0000029011,0.0000028972, -0.0000028928,0.0000028894,0.0000028881,0.0000028887,0.0000028887, -0.0000028836,0.0000028725,0.0000028513,0.0000028233,0.0000028160, -0.0000028151,0.0000028101,0.0000028032,0.0000027951,0.0000027781, -0.0000027629,0.0000027600,0.0000027626,0.0000027664,0.0000027661, -0.0000027627,0.0000027518,0.0000027410,0.0000027431,0.0000027547, -0.0000027625,0.0000027685,0.0000027632,0.0000027595,0.0000027737, -0.0000027978,0.0000028053,0.0000028005,0.0000027950,0.0000027963, -0.0000028044,0.0000028122,0.0000028164,0.0000028178,0.0000028180, -0.0000028187,0.0000028195,0.0000028198,0.0000028191,0.0000028180, -0.0000028178,0.0000028201,0.0000028251,0.0000028314,0.0000028359, -0.0000028379,0.0000028386,0.0000028393,0.0000028387,0.0000028357, -0.0000028332,0.0000028325,0.0000028347,0.0000028380,0.0000028394, -0.0000028391,0.0000028370,0.0000028326,0.0000028280,0.0000028250, -0.0000028237,0.0000028235,0.0000028242,0.0000028255,0.0000028263, -0.0000028260,0.0000028249,0.0000028241,0.0000028244,0.0000028262, -0.0000028279,0.0000028295,0.0000028322,0.0000028355,0.0000028377, -0.0000028400,0.0000028433,0.0000028468,0.0000028505,0.0000028552, -0.0000028608,0.0000028664,0.0000028712,0.0000028748,0.0000028769, -0.0000028767,0.0000028761,0.0000028760,0.0000028760,0.0000028748, -0.0000028717,0.0000028672,0.0000028627,0.0000028592,0.0000028585, -0.0000028591,0.0000028588,0.0000028572,0.0000028543,0.0000028528, -0.0000028535,0.0000028542,0.0000028524,0.0000028471,0.0000028433, -0.0000028450,0.0000028519,0.0000028585,0.0000028619,0.0000028633, -0.0000028641,0.0000028616,0.0000028550,0.0000028496,0.0000028477, -0.0000028454,0.0000028393,0.0000028307,0.0000028285,0.0000028349, -0.0000028474,0.0000028551,0.0000028573,0.0000028574,0.0000028566, -0.0000028542,0.0000028515,0.0000028485,0.0000028439,0.0000028373, -0.0000028330,0.0000028318,0.0000028345,0.0000028351,0.0000028213, -0.0000028032,0.0000028073,0.0000028270,0.0000028376,0.0000028359, -0.0000028284,0.0000028242,0.0000028249,0.0000028269,0.0000028255, -0.0000028243,0.0000028276,0.0000028354,0.0000028425,0.0000028439, -0.0000028418,0.0000028416,0.0000028437,0.0000028431,0.0000028394, -0.0000028345,0.0000028308,0.0000028287,0.0000028270,0.0000028262, -0.0000028242,0.0000028242,0.0000028316,0.0000028367,0.0000028337, -0.0000028330,0.0000028366,0.0000028411,0.0000028404,0.0000028258, -0.0000028061,0.0000028194,0.0000028309,0.0000028264,0.0000028149, -0.0000028069,0.0000028097,0.0000028072,0.0000028024,0.0000028065, -0.0000028033,0.0000027910,0.0000027880,0.0000027948,0.0000027966, -0.0000027960,0.0000027985,0.0000028011,0.0000028028,0.0000028053, -0.0000028082,0.0000028158,0.0000028251,0.0000028287,0.0000028280, -0.0000028246,0.0000028189,0.0000028163,0.0000028143,0.0000028135, -0.0000028124,0.0000028082,0.0000028053,0.0000028053,0.0000028057, -0.0000028054,0.0000028054,0.0000028056,0.0000028057,0.0000028056, -0.0000028043,0.0000028042,0.0000028035,0.0000028023,0.0000028017, -0.0000028017,0.0000028013,0.0000028000,0.0000027985,0.0000027982, -0.0000028015,0.0000028058,0.0000028073,0.0000028036,0.0000027966, -0.0000027870,0.0000027787,0.0000027724,0.0000027671,0.0000027606, -0.0000027540,0.0000027521,0.0000027600,0.0000027727,0.0000027793, -0.0000027783,0.0000027726,0.0000027642,0.0000027564,0.0000027508, -0.0000027439,0.0000027361,0.0000027313,0.0000027278,0.0000027245, -0.0000027226,0.0000027208,0.0000027173,0.0000027150,0.0000027151, -0.0000027153,0.0000027143,0.0000027110,0.0000027051,0.0000026997, -0.0000026968,0.0000026957,0.0000026952,0.0000026965,0.0000027026, -0.0000027087,0.0000027125,0.0000027151,0.0000027175,0.0000027182, -0.0000027150,0.0000027076,0.0000027021,0.0000027010,0.0000027009, -0.0000027005,0.0000027025,0.0000027074,0.0000027136,0.0000027178, -0.0000027192,0.0000027235,0.0000027294,0.0000027315,0.0000027334, -0.0000027397,0.0000027450,0.0000027448,0.0000027394,0.0000027314, -0.0000027143,0.0000026833,0.0000026524,0.0000026403,0.0000026539, -0.0000026675,0.0000026642,0.0000026943,0.0000027507,0.0000027716, -0.0000027705,0.0000027670,0.0000027707,0.0000027971,0.0000028212, -0.0000028236,0.0000028228,0.0000028242,0.0000028208,0.0000028145, -0.0000028109,0.0000028051,0.0000028009,0.0000028032,0.0000028079, -0.0000028085,0.0000028016,0.0000027940,0.0000027864,0.0000027742, -0.0000027642,0.0000027617,0.0000027632,0.0000027655,0.0000027695, -0.0000027787,0.0000027912,0.0000028001,0.0000027986,0.0000027912, -0.0000027868,0.0000027873,0.0000027895,0.0000027931,0.0000027929, -0.0000027924,0.0000027939,0.0000028095,0.0000028312,0.0000028332, -0.0000028281,0.0000028206,0.0000028097,0.0000028026,0.0000028058, -0.0000028074,0.0000028028,0.0000027920,0.0000027811,0.0000027689, -0.0000027576,0.0000027563,0.0000027550,0.0000027509,0.0000027545, -0.0000027543,0.0000027480,0.0000027315,0.0000027163,0.0000027110, -0.0000027096,0.0000027110,0.0000027099,0.0000027093,0.0000027036, -0.0000026904,0.0000026795,0.0000026694,0.0000026625,0.0000026628, -0.0000026674,0.0000026680,0.0000026638,0.0000026597,0.0000026577, -0.0000026535,0.0000026457,0.0000026388,0.0000026356,0.0000026350, -0.0000026340,0.0000026300,0.0000026228,0.0000026142,0.0000026067, -0.0000026030,0.0000026025,0.0000026036,0.0000026034,0.0000026014, -0.0000025984,0.0000025953,0.0000025937,0.0000025946,0.0000025951, -0.0000025952,0.0000025959,0.0000025975,0.0000025997,0.0000026012, -0.0000026011,0.0000025993,0.0000025955,0.0000025903,0.0000025854, -0.0000025813,0.0000025800,0.0000025818,0.0000025857,0.0000025898, -0.0000025912,0.0000025931,0.0000025948,0.0000025962,0.0000026032, -0.0000026130,0.0000026194,0.0000026251,0.0000026260,0.0000026271, -0.0000026291,0.0000026294,0.0000026284,0.0000026274,0.0000026259, -0.0000026270,0.0000026291,0.0000026321,0.0000026365,0.0000026400, -0.0000026432,0.0000026485,0.0000026578,0.0000026682,0.0000026766, -0.0000026837,0.0000026895,0.0000026950,0.0000026990,0.0000027008, -0.0000026996,0.0000026955,0.0000026922,0.0000026913,0.0000026888, -0.0000026831,0.0000026790,0.0000026819,0.0000026893,0.0000026947, -0.0000027003,0.0000027042,0.0000027033,0.0000027021,0.0000027064, -0.0000027207,0.0000027381,0.0000027533,0.0000027685,0.0000027854, -0.0000027997,0.0000028140,0.0000028272,0.0000028370,0.0000028422, -0.0000028431,0.0000028429,0.0000028427,0.0000028423,0.0000028415, -0.0000028393,0.0000028340,0.0000028265,0.0000028209,0.0000028204, -0.0000028236,0.0000028234,0.0000028181,0.0000028156,0.0000028214, -0.0000028326,0.0000028386,0.0000028322,0.0000028232,0.0000028173, -0.0000028123,0.0000028101,0.0000028100,0.0000028132,0.0000028227, -0.0000028376,0.0000028457,0.0000028452,0.0000028434,0.0000028418, -0.0000028388,0.0000028374,0.0000028386,0.0000028369,0.0000028304, -0.0000028213,0.0000028127,0.0000028059,0.0000028020,0.0000028012, -0.0000028002,0.0000028005,0.0000028049,0.0000028150,0.0000028253, -0.0000028363,0.0000028494,0.0000028665,0.0000028833,0.0000028923, -0.0000028966,0.0000028997,0.0000029033,0.0000029036,0.0000028963, -0.0000028870,0.0000028850,0.0000028850,0.0000028812,0.0000028712, -0.0000028625,0.0000028555,0.0000028484,0.0000028416,0.0000028363, -0.0000028319,0.0000028264,0.0000028192,0.0000028146,0.0000028136, -0.0000028132,0.0000028131,0.0000028154,0.0000028217,0.0000028297, -0.0000028370,0.0000028441,0.0000028508,0.0000028575,0.0000028627, -0.0000028660,0.0000028679,0.0000028695,0.0000028725,0.0000028775, -0.0000028823,0.0000028849,0.0000028849,0.0000028824,0.0000028790, -0.0000028760,0.0000028744,0.0000028745,0.0000028761,0.0000028788, -0.0000028807,0.0000028831,0.0000028893,0.0000028973,0.0000029031, -0.0000029054,0.0000029052,0.0000029026,0.0000028979,0.0000028928, -0.0000028882,0.0000028849,0.0000028839,0.0000028848,0.0000028865, -0.0000028872,0.0000028859,0.0000028823,0.0000028772,0.0000028756, -0.0000028805,0.0000028934,0.0000029045,0.0000029082,0.0000029067, -0.0000029036,0.0000029018,0.0000029004,0.0000028980,0.0000028966, -0.0000028975,0.0000028974,0.0000028928,0.0000028832,0.0000028718, -0.0000028643,0.0000028625,0.0000028632,0.0000028660,0.0000028688, -0.0000028691,0.0000028681,0.0000028650,0.0000028599,0.0000028543, -0.0000028508,0.0000028491,0.0000028504,0.0000028551,0.0000028624, -0.0000028705,0.0000028768,0.0000028823,0.0000028861,0.0000028881, -0.0000028888,0.0000028868,0.0000028841,0.0000028824,0.0000028844, -0.0000028871,0.0000028901,0.0000028932,0.0000028960,0.0000028973, -0.0000028975,0.0000028965,0.0000028948,0.0000028916,0.0000028864, -0.0000028799,0.0000028741,0.0000028699,0.0000028648,0.0000028599, -0.0000028564,0.0000028562,0.0000028587,0.0000028603,0.0000028606, -0.0000028595,0.0000028574,0.0000028554,0.0000028533,0.0000028505, -0.0000028460,0.0000028410,0.0000028391,0.0000028398,0.0000028368, -0.0000028282,0.0000028191,0.0000028120,0.0000028067,0.0000028031, -0.0000028001,0.0000027979,0.0000027952,0.0000027921,0.0000027887, -0.0000027855,0.0000027834,0.0000027803,0.0000027772,0.0000027737, -0.0000027717,0.0000027710,0.0000027708,0.0000027728,0.0000027766, -0.0000027814,0.0000027846,0.0000027866,0.0000027887,0.0000027909, -0.0000027924,0.0000027950,0.0000028003,0.0000028053,0.0000028066, -0.0000028039,0.0000027986,0.0000027964,0.0000027998,0.0000028060, -0.0000028146,0.0000028276,0.0000028409,0.0000028519,0.0000028602, -0.0000028661,0.0000028713,0.0000028765,0.0000028807,0.0000028829, -0.0000028823,0.0000028779,0.0000028718,0.0000028665,0.0000028620, -0.0000028550,0.0000028476,0.0000028441,0.0000028446,0.0000028517, -0.0000028660,0.0000028786,0.0000028865,0.0000028915,0.0000028938, -0.0000028914,0.0000028838,0.0000028762,0.0000028730,0.0000028701, -0.0000028668,0.0000028626,0.0000028583,0.0000028509,0.0000028411, -0.0000028376,0.0000028492,0.0000028620,0.0000028648,0.0000028679, -0.0000028870,0.0000029002,0.0000028960,0.0000028868,0.0000028836, -0.0000028829,0.0000028814,0.0000028826,0.0000028882,0.0000028939, -0.0000028932,0.0000028843,0.0000028774,0.0000028799,0.0000028864, -0.0000028914,0.0000028913,0.0000028857,0.0000028781,0.0000028728, -0.0000028704,0.0000028635,0.0000028540,0.0000028458,0.0000028458, -0.0000028536,0.0000028600,0.0000028569,0.0000028476,0.0000028420, -0.0000028476,0.0000028597,0.0000028584,0.0000028486,0.0000028524, -0.0000028680,0.0000028826,0.0000028918,0.0000028973,0.0000029002, -0.0000028951,0.0000028846,0.0000028803,0.0000028775,0.0000028652, -0.0000028475,0.0000028438,0.0000028489,0.0000028634,0.0000028913, -0.0000029119,0.0000029161,0.0000029129,0.0000029086,0.0000029059, -0.0000029039,0.0000029002,0.0000028962,0.0000028916,0.0000028875, -0.0000028858,0.0000028864,0.0000028858,0.0000028758,0.0000028582, -0.0000028267,0.0000028157,0.0000028156,0.0000028117,0.0000028058, -0.0000027993,0.0000027813,0.0000027613,0.0000027566,0.0000027603, -0.0000027648,0.0000027643,0.0000027616,0.0000027537,0.0000027393, -0.0000027335,0.0000027413,0.0000027527,0.0000027596,0.0000027656, -0.0000027592,0.0000027560,0.0000027755,0.0000027984,0.0000028008, -0.0000027932,0.0000027858,0.0000027861,0.0000027928,0.0000027989, -0.0000028019,0.0000028029,0.0000028036,0.0000028044,0.0000028051, -0.0000028060,0.0000028074,0.0000028103,0.0000028153,0.0000028214, -0.0000028262,0.0000028283,0.0000028285,0.0000028287,0.0000028284, -0.0000028265,0.0000028243,0.0000028248,0.0000028289,0.0000028335, -0.0000028376,0.0000028401,0.0000028413,0.0000028413,0.0000028398, -0.0000028370,0.0000028328,0.0000028285,0.0000028256,0.0000028243, -0.0000028232,0.0000028220,0.0000028210,0.0000028206,0.0000028212, -0.0000028223,0.0000028247,0.0000028274,0.0000028294,0.0000028320, -0.0000028356,0.0000028391,0.0000028414,0.0000028441,0.0000028474, -0.0000028516,0.0000028569,0.0000028620,0.0000028662,0.0000028701, -0.0000028738,0.0000028761,0.0000028780,0.0000028788,0.0000028813, -0.0000028838,0.0000028852,0.0000028849,0.0000028822,0.0000028781, -0.0000028739,0.0000028704,0.0000028681,0.0000028664,0.0000028652, -0.0000028645,0.0000028642,0.0000028654,0.0000028670,0.0000028664, -0.0000028625,0.0000028563,0.0000028502,0.0000028498,0.0000028538, -0.0000028580,0.0000028593,0.0000028595,0.0000028604,0.0000028602, -0.0000028566,0.0000028524,0.0000028495,0.0000028464,0.0000028407, -0.0000028336,0.0000028304,0.0000028348,0.0000028464,0.0000028562, -0.0000028603,0.0000028611,0.0000028604,0.0000028574,0.0000028538, -0.0000028517,0.0000028493,0.0000028433,0.0000028358,0.0000028321, -0.0000028321,0.0000028340,0.0000028269,0.0000028068,0.0000028008, -0.0000028149,0.0000028310,0.0000028345,0.0000028304,0.0000028261, -0.0000028253,0.0000028266,0.0000028268,0.0000028259,0.0000028270, -0.0000028310,0.0000028358,0.0000028379,0.0000028377,0.0000028373, -0.0000028378,0.0000028375,0.0000028363,0.0000028355,0.0000028350, -0.0000028335,0.0000028320,0.0000028309,0.0000028260,0.0000028217, -0.0000028257,0.0000028307,0.0000028281,0.0000028245,0.0000028284, -0.0000028331,0.0000028367,0.0000028304,0.0000028081,0.0000028073, -0.0000028266,0.0000028276,0.0000028180,0.0000028102,0.0000028082, -0.0000028112,0.0000028042,0.0000028058,0.0000028060,0.0000027948, -0.0000027869,0.0000027911,0.0000027960,0.0000027961,0.0000027981, -0.0000027996,0.0000028011,0.0000028043,0.0000028081,0.0000028161, -0.0000028248,0.0000028281,0.0000028258,0.0000028212,0.0000028141, -0.0000028094,0.0000028057,0.0000028032,0.0000028000,0.0000027939, -0.0000027882,0.0000027864,0.0000027863,0.0000027843,0.0000027821, -0.0000027796,0.0000027765,0.0000027746,0.0000027734,0.0000027743, -0.0000027769,0.0000027787,0.0000027805,0.0000027837,0.0000027866, -0.0000027877,0.0000027884,0.0000027885,0.0000027896,0.0000027932, -0.0000027975,0.0000028006,0.0000028011,0.0000027971,0.0000027886, -0.0000027788,0.0000027720,0.0000027675,0.0000027610,0.0000027527, -0.0000027486,0.0000027521,0.0000027644,0.0000027744,0.0000027751, -0.0000027698,0.0000027614,0.0000027542,0.0000027473,0.0000027390, -0.0000027327,0.0000027292,0.0000027254,0.0000027221,0.0000027207, -0.0000027185,0.0000027162,0.0000027160,0.0000027166,0.0000027160, -0.0000027143,0.0000027118,0.0000027075,0.0000027023,0.0000026983, -0.0000026965,0.0000026944,0.0000026921,0.0000026920,0.0000026975, -0.0000027041,0.0000027093,0.0000027129,0.0000027142,0.0000027104, -0.0000027030,0.0000026993,0.0000026996,0.0000026995,0.0000026966, -0.0000026955,0.0000027004,0.0000027092,0.0000027150,0.0000027153, -0.0000027181,0.0000027251,0.0000027303,0.0000027346,0.0000027411, -0.0000027442,0.0000027416,0.0000027343,0.0000027270,0.0000027054, -0.0000026712,0.0000026429,0.0000026369,0.0000026572,0.0000026630, -0.0000026706,0.0000027271,0.0000027695,0.0000027736,0.0000027708, -0.0000027696,0.0000027832,0.0000028116,0.0000028246,0.0000028240, -0.0000028239,0.0000028243,0.0000028204,0.0000028131,0.0000028087, -0.0000028040,0.0000028004,0.0000028015,0.0000028076,0.0000028111, -0.0000028059,0.0000027959,0.0000027867,0.0000027745,0.0000027644, -0.0000027628,0.0000027656,0.0000027693,0.0000027740,0.0000027827, -0.0000027958,0.0000028050,0.0000028021,0.0000027919,0.0000027856, -0.0000027845,0.0000027849,0.0000027873,0.0000027879,0.0000027882, -0.0000027914,0.0000028030,0.0000028265,0.0000028311,0.0000028260, -0.0000028173,0.0000028060,0.0000028001,0.0000028045,0.0000028053, -0.0000027990,0.0000027872,0.0000027751,0.0000027635,0.0000027582, -0.0000027590,0.0000027540,0.0000027510,0.0000027552,0.0000027535, -0.0000027434,0.0000027230,0.0000027113,0.0000027081,0.0000027069, -0.0000027077,0.0000027069,0.0000027037,0.0000026909,0.0000026781, -0.0000026703,0.0000026639,0.0000026623,0.0000026620,0.0000026596, -0.0000026544,0.0000026522,0.0000026529,0.0000026513,0.0000026450, -0.0000026377,0.0000026329,0.0000026299,0.0000026255,0.0000026167, -0.0000026046,0.0000025936,0.0000025865,0.0000025838,0.0000025842, -0.0000025869,0.0000025909,0.0000025927,0.0000025923,0.0000025912, -0.0000025902,0.0000025899,0.0000025896,0.0000025883,0.0000025865, -0.0000025863,0.0000025874,0.0000025889,0.0000025896,0.0000025891, -0.0000025870,0.0000025841,0.0000025807,0.0000025773,0.0000025756, -0.0000025759,0.0000025785,0.0000025824,0.0000025865,0.0000025884, -0.0000025874,0.0000025833,0.0000025771,0.0000025752,0.0000025770, -0.0000025774,0.0000025800,0.0000025818,0.0000025910,0.0000026035, -0.0000026148,0.0000026202,0.0000026219,0.0000026192,0.0000026169, -0.0000026151,0.0000026147,0.0000026177,0.0000026221,0.0000026272, -0.0000026314,0.0000026339,0.0000026372,0.0000026442,0.0000026559, -0.0000026679,0.0000026767,0.0000026849,0.0000026928,0.0000026984, -0.0000027003,0.0000026984,0.0000026923,0.0000026864,0.0000026850, -0.0000026856,0.0000026847,0.0000026857,0.0000026898,0.0000026931, -0.0000026957,0.0000027003,0.0000027025,0.0000027022,0.0000027042, -0.0000027157,0.0000027278,0.0000027361,0.0000027469,0.0000027662, -0.0000027888,0.0000028108,0.0000028269,0.0000028373,0.0000028439, -0.0000028462,0.0000028467,0.0000028470,0.0000028469,0.0000028470, -0.0000028453,0.0000028417,0.0000028342,0.0000028237,0.0000028207, -0.0000028247,0.0000028260,0.0000028204,0.0000028173,0.0000028227, -0.0000028335,0.0000028370,0.0000028298,0.0000028200,0.0000028122, -0.0000028076,0.0000028069,0.0000028089,0.0000028129,0.0000028226, -0.0000028399,0.0000028490,0.0000028470,0.0000028438,0.0000028415, -0.0000028402,0.0000028397,0.0000028391,0.0000028347,0.0000028277, -0.0000028187,0.0000028101,0.0000028050,0.0000028040,0.0000028020, -0.0000028000,0.0000028035,0.0000028138,0.0000028261,0.0000028395, -0.0000028539,0.0000028681,0.0000028813,0.0000028897,0.0000028963, -0.0000029022,0.0000029060,0.0000029043,0.0000028942,0.0000028874, -0.0000028881,0.0000028886,0.0000028832,0.0000028730,0.0000028647, -0.0000028601,0.0000028556,0.0000028504,0.0000028457,0.0000028420, -0.0000028369,0.0000028302,0.0000028261,0.0000028250,0.0000028235, -0.0000028223,0.0000028241,0.0000028292,0.0000028375,0.0000028463, -0.0000028547,0.0000028635,0.0000028713,0.0000028762,0.0000028777, -0.0000028779,0.0000028785,0.0000028807,0.0000028844,0.0000028884, -0.0000028889,0.0000028876,0.0000028850,0.0000028818,0.0000028787, -0.0000028769,0.0000028765,0.0000028772,0.0000028806,0.0000028862, -0.0000028900,0.0000028930,0.0000028992,0.0000029064,0.0000029103, -0.0000029109,0.0000029096,0.0000029065,0.0000029019,0.0000028971, -0.0000028930,0.0000028905,0.0000028899,0.0000028902,0.0000028899, -0.0000028885,0.0000028860,0.0000028840,0.0000028836,0.0000028858, -0.0000028936,0.0000029021,0.0000029057,0.0000029047,0.0000029012, -0.0000028971,0.0000028938,0.0000028911,0.0000028895,0.0000028898, -0.0000028906,0.0000028890,0.0000028836,0.0000028754,0.0000028665, -0.0000028603,0.0000028586,0.0000028592,0.0000028620,0.0000028648, -0.0000028654,0.0000028655,0.0000028646,0.0000028610,0.0000028556, -0.0000028507,0.0000028472,0.0000028455,0.0000028459,0.0000028489, -0.0000028560,0.0000028668,0.0000028787,0.0000028867,0.0000028912, -0.0000028914,0.0000028890,0.0000028836,0.0000028776,0.0000028760, -0.0000028769,0.0000028788,0.0000028810,0.0000028841,0.0000028864, -0.0000028873,0.0000028880,0.0000028886,0.0000028886,0.0000028861, -0.0000028809,0.0000028752,0.0000028709,0.0000028664,0.0000028604, -0.0000028543,0.0000028515,0.0000028539,0.0000028579,0.0000028599, -0.0000028598,0.0000028575,0.0000028539,0.0000028510,0.0000028494, -0.0000028475,0.0000028437,0.0000028395,0.0000028380,0.0000028347, -0.0000028220,0.0000028054,0.0000027955,0.0000027923,0.0000027908, -0.0000027895,0.0000027886,0.0000027889,0.0000027879,0.0000027865, -0.0000027844,0.0000027824,0.0000027797,0.0000027750,0.0000027711, -0.0000027672,0.0000027657,0.0000027675,0.0000027691,0.0000027750, -0.0000027816,0.0000027871,0.0000027902,0.0000027925,0.0000027948, -0.0000027958,0.0000027956,0.0000027973,0.0000028029,0.0000028094, -0.0000028130,0.0000028116,0.0000028054,0.0000027973,0.0000027950, -0.0000027933,0.0000027978,0.0000028103,0.0000028276,0.0000028442, -0.0000028574,0.0000028656,0.0000028698,0.0000028725,0.0000028748, -0.0000028778,0.0000028807,0.0000028796,0.0000028777,0.0000028740, -0.0000028693,0.0000028619,0.0000028526,0.0000028465,0.0000028450, -0.0000028494,0.0000028597,0.0000028724,0.0000028830,0.0000028895, -0.0000028930,0.0000028921,0.0000028891,0.0000028831,0.0000028778, -0.0000028726,0.0000028682,0.0000028625,0.0000028565,0.0000028498, -0.0000028420,0.0000028368,0.0000028420,0.0000028570,0.0000028645, -0.0000028653,0.0000028784,0.0000028973,0.0000028975,0.0000028879, -0.0000028834,0.0000028833,0.0000028833,0.0000028859,0.0000028917, -0.0000028941,0.0000028905,0.0000028817,0.0000028783,0.0000028845, -0.0000028915,0.0000028944,0.0000028927,0.0000028855,0.0000028765, -0.0000028691,0.0000028639,0.0000028552,0.0000028446,0.0000028345, -0.0000028326,0.0000028420,0.0000028537,0.0000028534,0.0000028453, -0.0000028382,0.0000028399,0.0000028556,0.0000028628,0.0000028535, -0.0000028518,0.0000028646,0.0000028811,0.0000028936,0.0000029009, -0.0000029024,0.0000028956,0.0000028864,0.0000028828,0.0000028766, -0.0000028629,0.0000028474,0.0000028451,0.0000028515,0.0000028630, -0.0000028855,0.0000029074,0.0000029164,0.0000029153,0.0000029126, -0.0000029093,0.0000029066,0.0000029020,0.0000028975,0.0000028926, -0.0000028876,0.0000028838,0.0000028832,0.0000028843,0.0000028776, -0.0000028619,0.0000028303,0.0000028155,0.0000028155,0.0000028124, -0.0000028068,0.0000028016,0.0000027838,0.0000027605,0.0000027521, -0.0000027557,0.0000027609,0.0000027603,0.0000027573,0.0000027530, -0.0000027410,0.0000027296,0.0000027313,0.0000027446,0.0000027509, -0.0000027566,0.0000027618,0.0000027546,0.0000027541,0.0000027780, -0.0000027975,0.0000027958,0.0000027858,0.0000027771,0.0000027765, -0.0000027807,0.0000027856,0.0000027891,0.0000027915,0.0000027940, -0.0000027962,0.0000027987,0.0000028020,0.0000028061,0.0000028108, -0.0000028151,0.0000028173,0.0000028176,0.0000028167,0.0000028152, -0.0000028134,0.0000028120,0.0000028130,0.0000028180,0.0000028253, -0.0000028308,0.0000028336,0.0000028368,0.0000028394,0.0000028410, -0.0000028410,0.0000028388,0.0000028339,0.0000028279,0.0000028229, -0.0000028199,0.0000028182,0.0000028170,0.0000028168,0.0000028175, -0.0000028187,0.0000028203,0.0000028220,0.0000028234,0.0000028241, -0.0000028251,0.0000028272,0.0000028299,0.0000028322,0.0000028335, -0.0000028353,0.0000028393,0.0000028447,0.0000028499,0.0000028543, -0.0000028580,0.0000028612,0.0000028636,0.0000028650,0.0000028670, -0.0000028709,0.0000028760,0.0000028807,0.0000028847,0.0000028861, -0.0000028884,0.0000028887,0.0000028881,0.0000028861,0.0000028830, -0.0000028792,0.0000028761,0.0000028746,0.0000028753,0.0000028782, -0.0000028805,0.0000028797,0.0000028752,0.0000028680,0.0000028592, -0.0000028550,0.0000028561,0.0000028582,0.0000028582,0.0000028574, -0.0000028575,0.0000028578,0.0000028561,0.0000028531,0.0000028496, -0.0000028450,0.0000028396,0.0000028349,0.0000028336,0.0000028370, -0.0000028470,0.0000028589,0.0000028661,0.0000028677,0.0000028664, -0.0000028616,0.0000028556,0.0000028517,0.0000028497,0.0000028463, -0.0000028385,0.0000028319,0.0000028291,0.0000028294,0.0000028269, -0.0000028117,0.0000027992,0.0000028050,0.0000028219,0.0000028311, -0.0000028305,0.0000028273,0.0000028254,0.0000028254,0.0000028260, -0.0000028270,0.0000028294,0.0000028323,0.0000028348,0.0000028351, -0.0000028346,0.0000028328,0.0000028331,0.0000028336,0.0000028338, -0.0000028352,0.0000028361,0.0000028365,0.0000028359,0.0000028343, -0.0000028287,0.0000028222,0.0000028229,0.0000028261,0.0000028259, -0.0000028219,0.0000028228,0.0000028256,0.0000028297,0.0000028310, -0.0000028154,0.0000027985,0.0000028156,0.0000028265,0.0000028207, -0.0000028142,0.0000028072,0.0000028123,0.0000028076,0.0000028036, -0.0000028064,0.0000028013,0.0000027892,0.0000027874,0.0000027940, -0.0000027965,0.0000027973,0.0000027991,0.0000027999,0.0000028007, -0.0000028033,0.0000028111,0.0000028206,0.0000028253,0.0000028241, -0.0000028210,0.0000028152,0.0000028116,0.0000028085,0.0000028081, -0.0000028066,0.0000028031,0.0000027975,0.0000027936,0.0000027911, -0.0000027868,0.0000027822,0.0000027768,0.0000027715,0.0000027659, -0.0000027606,0.0000027558,0.0000027537,0.0000027525,0.0000027520, -0.0000027544,0.0000027597,0.0000027648,0.0000027698,0.0000027735, -0.0000027756,0.0000027790,0.0000027835,0.0000027875,0.0000027896, -0.0000027906,0.0000027902,0.0000027850,0.0000027761,0.0000027691, -0.0000027648,0.0000027588,0.0000027507,0.0000027450,0.0000027467, -0.0000027587,0.0000027707,0.0000027723,0.0000027655,0.0000027572, -0.0000027499,0.0000027409,0.0000027335,0.0000027301,0.0000027269, -0.0000027230,0.0000027213,0.0000027201,0.0000027182,0.0000027179, -0.0000027189,0.0000027187,0.0000027167,0.0000027139,0.0000027113, -0.0000027089,0.0000027051,0.0000027008,0.0000026985,0.0000026962, -0.0000026912,0.0000026878,0.0000026885,0.0000026940,0.0000027006, -0.0000027070,0.0000027104,0.0000027065,0.0000026994,0.0000026953, -0.0000026957,0.0000026955,0.0000026918,0.0000026895,0.0000026938, -0.0000027036,0.0000027105,0.0000027114,0.0000027125,0.0000027210, -0.0000027305,0.0000027358,0.0000027410,0.0000027428,0.0000027377, -0.0000027299,0.0000027227,0.0000026948,0.0000026588,0.0000026337, -0.0000026374,0.0000026585,0.0000026607,0.0000026916,0.0000027534, -0.0000027751,0.0000027740,0.0000027723,0.0000027759,0.0000027971, -0.0000028192,0.0000028252,0.0000028245,0.0000028245,0.0000028248, -0.0000028214,0.0000028128,0.0000028070,0.0000028036,0.0000027998, -0.0000027991,0.0000028042,0.0000028092,0.0000028076,0.0000027998, -0.0000027896,0.0000027789,0.0000027693,0.0000027662,0.0000027686, -0.0000027734,0.0000027792,0.0000027860,0.0000027984,0.0000028089, -0.0000028065,0.0000027942,0.0000027845,0.0000027810,0.0000027797, -0.0000027808,0.0000027820,0.0000027829,0.0000027893,0.0000027980, -0.0000028212,0.0000028285,0.0000028234,0.0000028138,0.0000028023, -0.0000027975,0.0000028030,0.0000028031,0.0000027948,0.0000027817, -0.0000027695,0.0000027612,0.0000027608,0.0000027604,0.0000027525, -0.0000027522,0.0000027553,0.0000027524,0.0000027367,0.0000027154, -0.0000027079,0.0000027047,0.0000027036,0.0000027044,0.0000027043, -0.0000026964,0.0000026792,0.0000026677,0.0000026626,0.0000026608, -0.0000026597,0.0000026546,0.0000026475,0.0000026449,0.0000026463, -0.0000026471,0.0000026438,0.0000026374,0.0000026314,0.0000026253, -0.0000026159,0.0000026035,0.0000025908,0.0000025811,0.0000025762, -0.0000025758,0.0000025763,0.0000025767,0.0000025779,0.0000025806, -0.0000025831,0.0000025838,0.0000025836,0.0000025830,0.0000025827, -0.0000025816,0.0000025798,0.0000025775,0.0000025760,0.0000025760, -0.0000025768,0.0000025773,0.0000025763,0.0000025737,0.0000025704, -0.0000025662,0.0000025615,0.0000025584,0.0000025582,0.0000025610, -0.0000025653,0.0000025697,0.0000025735,0.0000025752,0.0000025744, -0.0000025721,0.0000025720,0.0000025732,0.0000025695,0.0000025627, -0.0000025517,0.0000025458,0.0000025526,0.0000025680,0.0000025821, -0.0000025964,0.0000026042,0.0000026068,0.0000026064,0.0000026060, -0.0000026082,0.0000026116,0.0000026140,0.0000026154,0.0000026170, -0.0000026216,0.0000026281,0.0000026338,0.0000026391,0.0000026477, -0.0000026612,0.0000026736,0.0000026828,0.0000026908,0.0000026964, -0.0000026971,0.0000026923,0.0000026854,0.0000026824,0.0000026847, -0.0000026893,0.0000026908,0.0000026908,0.0000026907,0.0000026919, -0.0000026959,0.0000027011,0.0000027027,0.0000027041,0.0000027108, -0.0000027205,0.0000027267,0.0000027325,0.0000027459,0.0000027673, -0.0000027961,0.0000028193,0.0000028322,0.0000028406,0.0000028434, -0.0000028431,0.0000028420,0.0000028418,0.0000028414,0.0000028407, -0.0000028408,0.0000028381,0.0000028315,0.0000028251,0.0000028264, -0.0000028297,0.0000028238,0.0000028187,0.0000028246,0.0000028346, -0.0000028372,0.0000028293,0.0000028177,0.0000028091,0.0000028059, -0.0000028068,0.0000028106,0.0000028143,0.0000028228,0.0000028413, -0.0000028507,0.0000028475,0.0000028432,0.0000028423,0.0000028439, -0.0000028425,0.0000028385,0.0000028317,0.0000028242,0.0000028162, -0.0000028113,0.0000028096,0.0000028082,0.0000028050,0.0000028068, -0.0000028155,0.0000028275,0.0000028392,0.0000028512,0.0000028625, -0.0000028746,0.0000028853,0.0000028937,0.0000029017,0.0000029056, -0.0000029021,0.0000028931,0.0000028887,0.0000028908,0.0000028908, -0.0000028826,0.0000028726,0.0000028668,0.0000028629,0.0000028600, -0.0000028562,0.0000028529,0.0000028507,0.0000028480,0.0000028442, -0.0000028403,0.0000028362,0.0000028326,0.0000028315,0.0000028346, -0.0000028399,0.0000028464,0.0000028547,0.0000028642,0.0000028733, -0.0000028803,0.0000028840,0.0000028849,0.0000028852,0.0000028869, -0.0000028895,0.0000028921,0.0000028912,0.0000028891,0.0000028857, -0.0000028830,0.0000028817,0.0000028811,0.0000028810,0.0000028805, -0.0000028785,0.0000028783,0.0000028839,0.0000028930,0.0000028981, -0.0000029023,0.0000029095,0.0000029149,0.0000029159,0.0000029147, -0.0000029123,0.0000029088,0.0000029048,0.0000029007,0.0000028972, -0.0000028946,0.0000028935,0.0000028930,0.0000028913,0.0000028891, -0.0000028877,0.0000028888,0.0000028908,0.0000028948,0.0000028999, -0.0000029029,0.0000029022,0.0000028987,0.0000028936,0.0000028881, -0.0000028836,0.0000028810,0.0000028796,0.0000028798,0.0000028810, -0.0000028804,0.0000028772,0.0000028721,0.0000028661,0.0000028609, -0.0000028583,0.0000028582,0.0000028599,0.0000028609,0.0000028598, -0.0000028586,0.0000028572,0.0000028543,0.0000028503,0.0000028458, -0.0000028417,0.0000028401,0.0000028402,0.0000028421,0.0000028458, -0.0000028517,0.0000028612,0.0000028733,0.0000028840,0.0000028904, -0.0000028910,0.0000028871,0.0000028810,0.0000028765,0.0000028748, -0.0000028735,0.0000028726,0.0000028728,0.0000028740,0.0000028746, -0.0000028751,0.0000028764,0.0000028786,0.0000028791,0.0000028761, -0.0000028719,0.0000028687,0.0000028656,0.0000028613,0.0000028555, -0.0000028510,0.0000028508,0.0000028538,0.0000028565,0.0000028574, -0.0000028571,0.0000028547,0.0000028504,0.0000028462,0.0000028446, -0.0000028441,0.0000028418,0.0000028388,0.0000028378,0.0000028327, -0.0000028130,0.0000027943,0.0000027865,0.0000027884,0.0000027901, -0.0000027900,0.0000027898,0.0000027901,0.0000027893,0.0000027877, -0.0000027854,0.0000027817,0.0000027779,0.0000027717,0.0000027692, -0.0000027688,0.0000027722,0.0000027780,0.0000027845,0.0000027931, -0.0000028002,0.0000028037,0.0000028059,0.0000028082,0.0000028099, -0.0000028095,0.0000028070,0.0000028056,0.0000028072,0.0000028108, -0.0000028131,0.0000028130,0.0000028097,0.0000028028,0.0000027957, -0.0000027898,0.0000027860,0.0000027917,0.0000028083,0.0000028302, -0.0000028494,0.0000028624,0.0000028684,0.0000028702,0.0000028704, -0.0000028722,0.0000028757,0.0000028776,0.0000028779,0.0000028771, -0.0000028747,0.0000028690,0.0000028606,0.0000028535,0.0000028499, -0.0000028506,0.0000028552,0.0000028646,0.0000028762,0.0000028848, -0.0000028899,0.0000028921,0.0000028921,0.0000028884,0.0000028827, -0.0000028760,0.0000028692,0.0000028611,0.0000028521,0.0000028458, -0.0000028402,0.0000028365,0.0000028381,0.0000028478,0.0000028605, -0.0000028630,0.0000028691,0.0000028895,0.0000028969,0.0000028903, -0.0000028836,0.0000028835,0.0000028853,0.0000028891,0.0000028944, -0.0000028950,0.0000028877,0.0000028792,0.0000028787,0.0000028866, -0.0000028939,0.0000028957,0.0000028934,0.0000028853,0.0000028757, -0.0000028670,0.0000028594,0.0000028495,0.0000028375,0.0000028253, -0.0000028200,0.0000028278,0.0000028445,0.0000028492,0.0000028439, -0.0000028376,0.0000028354,0.0000028489,0.0000028647,0.0000028599, -0.0000028531,0.0000028617,0.0000028793,0.0000028951,0.0000029040, -0.0000029044,0.0000028955,0.0000028877,0.0000028847,0.0000028753, -0.0000028602,0.0000028467,0.0000028460,0.0000028545,0.0000028645, -0.0000028813,0.0000029016,0.0000029143,0.0000029165,0.0000029152, -0.0000029119,0.0000029079,0.0000029015,0.0000028946,0.0000028877, -0.0000028827,0.0000028805,0.0000028799,0.0000028813,0.0000028783, -0.0000028635,0.0000028327,0.0000028155,0.0000028150,0.0000028121, -0.0000028060,0.0000028023,0.0000027863,0.0000027614,0.0000027486, -0.0000027489,0.0000027531,0.0000027539,0.0000027514,0.0000027496, -0.0000027429,0.0000027316,0.0000027290,0.0000027380,0.0000027458, -0.0000027462,0.0000027535,0.0000027578,0.0000027501,0.0000027535, -0.0000027796,0.0000027945,0.0000027903,0.0000027800,0.0000027704, -0.0000027672,0.0000027699,0.0000027747,0.0000027799,0.0000027852, -0.0000027894,0.0000027928,0.0000027960,0.0000027989,0.0000028017, -0.0000028044,0.0000028060,0.0000028061,0.0000028042,0.0000028008, -0.0000027988,0.0000027994,0.0000028036,0.0000028109,0.0000028183, -0.0000028231,0.0000028249,0.0000028265,0.0000028294,0.0000028319, -0.0000028329,0.0000028316,0.0000028275,0.0000028217,0.0000028159, -0.0000028124,0.0000028115,0.0000028115,0.0000028120,0.0000028131, -0.0000028140,0.0000028154,0.0000028173,0.0000028189,0.0000028192, -0.0000028188,0.0000028193,0.0000028214,0.0000028238,0.0000028249, -0.0000028248,0.0000028253,0.0000028281,0.0000028319,0.0000028355, -0.0000028392,0.0000028427,0.0000028451,0.0000028461,0.0000028469, -0.0000028502,0.0000028557,0.0000028620,0.0000028677,0.0000028732, -0.0000028782,0.0000028833,0.0000028881,0.0000028903,0.0000028928, -0.0000028932,0.0000028927,0.0000028915,0.0000028910,0.0000028915, -0.0000028925,0.0000028929,0.0000028917,0.0000028879,0.0000028806, -0.0000028706,0.0000028630,0.0000028600,0.0000028592,0.0000028582, -0.0000028571,0.0000028565,0.0000028560,0.0000028551,0.0000028527, -0.0000028489,0.0000028435,0.0000028383,0.0000028352,0.0000028361, -0.0000028407,0.0000028496,0.0000028617,0.0000028702,0.0000028725, -0.0000028707,0.0000028652,0.0000028579,0.0000028513,0.0000028474, -0.0000028453,0.0000028398,0.0000028317,0.0000028263,0.0000028240, -0.0000028219,0.0000028138,0.0000028024,0.0000028027,0.0000028143, -0.0000028258,0.0000028286,0.0000028266,0.0000028238,0.0000028225, -0.0000028229,0.0000028253,0.0000028291,0.0000028332,0.0000028367, -0.0000028371,0.0000028349,0.0000028306,0.0000028294,0.0000028299, -0.0000028302,0.0000028314,0.0000028331,0.0000028353,0.0000028363, -0.0000028346,0.0000028302,0.0000028252,0.0000028237,0.0000028246, -0.0000028258,0.0000028243,0.0000028199,0.0000028196,0.0000028225, -0.0000028278,0.0000028222,0.0000027992,0.0000028003,0.0000028200, -0.0000028217,0.0000028176,0.0000028092,0.0000028095,0.0000028106, -0.0000028024,0.0000028033,0.0000028053,0.0000027970,0.0000027874, -0.0000027892,0.0000027945,0.0000027970,0.0000027987,0.0000028021, -0.0000028038,0.0000028058,0.0000028111,0.0000028191,0.0000028242, -0.0000028251,0.0000028237,0.0000028198,0.0000028177,0.0000028149, -0.0000028144,0.0000028132,0.0000028105,0.0000028057,0.0000028020, -0.0000028012,0.0000028000,0.0000027980,0.0000027923,0.0000027826, -0.0000027720,0.0000027625,0.0000027542,0.0000027482,0.0000027443, -0.0000027414,0.0000027400,0.0000027417,0.0000027450,0.0000027490, -0.0000027531,0.0000027561,0.0000027593,0.0000027643,0.0000027703, -0.0000027748,0.0000027773,0.0000027791,0.0000027800,0.0000027777, -0.0000027707,0.0000027641,0.0000027602,0.0000027545,0.0000027471, -0.0000027412,0.0000027431,0.0000027564,0.0000027682,0.0000027669, -0.0000027587,0.0000027508,0.0000027413,0.0000027322,0.0000027289, -0.0000027270,0.0000027236,0.0000027221,0.0000027220,0.0000027207, -0.0000027199,0.0000027203,0.0000027202,0.0000027190,0.0000027166, -0.0000027135,0.0000027109,0.0000027091,0.0000027068,0.0000027032, -0.0000027007,0.0000026992,0.0000026943,0.0000026868,0.0000026836, -0.0000026855,0.0000026916,0.0000026995,0.0000027042,0.0000027034, -0.0000026978,0.0000026936,0.0000026919,0.0000026895,0.0000026854, -0.0000026834,0.0000026871,0.0000026972,0.0000027053,0.0000027073, -0.0000027079,0.0000027172,0.0000027295,0.0000027365,0.0000027414, -0.0000027411,0.0000027337,0.0000027264,0.0000027164,0.0000026830, -0.0000026478,0.0000026267,0.0000026401,0.0000026577,0.0000026620, -0.0000027157,0.0000027666,0.0000027752,0.0000027740,0.0000027758, -0.0000027853,0.0000028076,0.0000028222,0.0000028247,0.0000028244, -0.0000028244,0.0000028251,0.0000028229,0.0000028148,0.0000028070, -0.0000028039,0.0000028010,0.0000027990,0.0000027997,0.0000028024, -0.0000028035,0.0000028004,0.0000027930,0.0000027836,0.0000027760, -0.0000027726,0.0000027739,0.0000027778,0.0000027832,0.0000027890, -0.0000027995,0.0000028109,0.0000028105,0.0000027980,0.0000027849, -0.0000027777,0.0000027741,0.0000027741,0.0000027757,0.0000027775, -0.0000027868,0.0000027942,0.0000028162,0.0000028256,0.0000028204, -0.0000028100,0.0000027986,0.0000027949,0.0000028013,0.0000028006, -0.0000027902,0.0000027761,0.0000027647,0.0000027609,0.0000027636, -0.0000027603,0.0000027518,0.0000027535,0.0000027548,0.0000027500, -0.0000027288,0.0000027094,0.0000027052,0.0000027011,0.0000027003, -0.0000027022,0.0000027011,0.0000026881,0.0000026694,0.0000026599, -0.0000026580,0.0000026569,0.0000026521,0.0000026445,0.0000026392, -0.0000026388,0.0000026403,0.0000026413,0.0000026380,0.0000026301, -0.0000026208,0.0000026089,0.0000025938,0.0000025812,0.0000025758, -0.0000025746,0.0000025748,0.0000025760,0.0000025762,0.0000025747, -0.0000025731,0.0000025729,0.0000025739,0.0000025743,0.0000025747, -0.0000025751,0.0000025769,0.0000025770,0.0000025766,0.0000025759, -0.0000025751,0.0000025755,0.0000025765,0.0000025770,0.0000025758, -0.0000025731,0.0000025696,0.0000025654,0.0000025598,0.0000025542, -0.0000025512,0.0000025512,0.0000025524,0.0000025540,0.0000025549, -0.0000025559,0.0000025549,0.0000025540,0.0000025545,0.0000025576, -0.0000025576,0.0000025567,0.0000025512,0.0000025447,0.0000025375, -0.0000025391,0.0000025362,0.0000025456,0.0000025584,0.0000025712, -0.0000025822,0.0000025899,0.0000025948,0.0000025979,0.0000026006, -0.0000026040,0.0000026061,0.0000026078,0.0000026106,0.0000026170, -0.0000026261,0.0000026344,0.0000026396,0.0000026461,0.0000026578, -0.0000026706,0.0000026797,0.0000026856,0.0000026888,0.0000026888, -0.0000026869,0.0000026842,0.0000026854,0.0000026911,0.0000026945, -0.0000026922,0.0000026881,0.0000026875,0.0000026909,0.0000026978, -0.0000027028,0.0000027051,0.0000027080,0.0000027147,0.0000027212, -0.0000027247,0.0000027313,0.0000027459,0.0000027715,0.0000027987, -0.0000028162,0.0000028270,0.0000028316,0.0000028292,0.0000028250, -0.0000028233,0.0000028228,0.0000028240,0.0000028292,0.0000028359, -0.0000028357,0.0000028304,0.0000028300,0.0000028325,0.0000028268, -0.0000028200,0.0000028266,0.0000028358,0.0000028387,0.0000028306, -0.0000028181,0.0000028083,0.0000028063,0.0000028093,0.0000028135, -0.0000028158,0.0000028233,0.0000028407,0.0000028497,0.0000028464, -0.0000028428,0.0000028452,0.0000028478,0.0000028441,0.0000028364, -0.0000028273,0.0000028194,0.0000028152,0.0000028140,0.0000028135, -0.0000028124,0.0000028125,0.0000028176,0.0000028254,0.0000028346, -0.0000028435,0.0000028540,0.0000028665,0.0000028796,0.0000028900, -0.0000028980,0.0000029008,0.0000028977,0.0000028923,0.0000028918, -0.0000028924,0.0000028899,0.0000028812,0.0000028725,0.0000028684, -0.0000028655,0.0000028611,0.0000028582,0.0000028567,0.0000028574, -0.0000028590,0.0000028593,0.0000028566,0.0000028494,0.0000028423, -0.0000028412,0.0000028455,0.0000028521,0.0000028589,0.0000028649, -0.0000028725,0.0000028807,0.0000028857,0.0000028881,0.0000028890, -0.0000028904,0.0000028936,0.0000028966,0.0000028957,0.0000028934, -0.0000028885,0.0000028817,0.0000028757,0.0000028737,0.0000028754, -0.0000028797,0.0000028835,0.0000028834,0.0000028792,0.0000028792, -0.0000028886,0.0000028999,0.0000029051,0.0000029113,0.0000029186, -0.0000029206,0.0000029189,0.0000029161,0.0000029134,0.0000029107, -0.0000029078,0.0000029041,0.0000028999,0.0000028971,0.0000028966, -0.0000028962,0.0000028939,0.0000028923,0.0000028930,0.0000028954, -0.0000028969,0.0000028981,0.0000028992,0.0000028990,0.0000028963, -0.0000028912,0.0000028849,0.0000028788,0.0000028742,0.0000028708, -0.0000028684,0.0000028691,0.0000028728,0.0000028747,0.0000028733, -0.0000028695,0.0000028649,0.0000028612,0.0000028585,0.0000028579, -0.0000028588,0.0000028593,0.0000028577,0.0000028552,0.0000028522, -0.0000028483,0.0000028439,0.0000028389,0.0000028336,0.0000028292, -0.0000028278,0.0000028296,0.0000028345,0.0000028406,0.0000028475, -0.0000028561,0.0000028660,0.0000028748,0.0000028809,0.0000028829, -0.0000028808,0.0000028786,0.0000028769,0.0000028757,0.0000028736, -0.0000028705,0.0000028684,0.0000028667,0.0000028649,0.0000028645, -0.0000028661,0.0000028676,0.0000028653,0.0000028613,0.0000028579, -0.0000028567,0.0000028549,0.0000028523,0.0000028497,0.0000028495, -0.0000028520,0.0000028546,0.0000028555,0.0000028551,0.0000028536, -0.0000028508,0.0000028464,0.0000028415,0.0000028390,0.0000028391, -0.0000028389,0.0000028381,0.0000028380,0.0000028328,0.0000028092, -0.0000027878,0.0000027840,0.0000027888,0.0000027916,0.0000027916, -0.0000027902,0.0000027890,0.0000027876,0.0000027866,0.0000027854, -0.0000027838,0.0000027831,0.0000027828,0.0000027863,0.0000027927, -0.0000027998,0.0000028059,0.0000028118,0.0000028173,0.0000028197, -0.0000028204,0.0000028217,0.0000028246,0.0000028269,0.0000028269, -0.0000028244,0.0000028217,0.0000028194,0.0000028178,0.0000028152, -0.0000028125,0.0000028095,0.0000028057,0.0000027994,0.0000027914, -0.0000027832,0.0000027794,0.0000027884,0.0000028086,0.0000028319, -0.0000028511,0.0000028629,0.0000028678,0.0000028678,0.0000028682, -0.0000028706,0.0000028728,0.0000028741,0.0000028752,0.0000028756, -0.0000028739,0.0000028692,0.0000028635,0.0000028587,0.0000028558, -0.0000028553,0.0000028590,0.0000028670,0.0000028753,0.0000028816, -0.0000028875,0.0000028907,0.0000028891,0.0000028854,0.0000028791, -0.0000028704,0.0000028603,0.0000028484,0.0000028407,0.0000028347, -0.0000028325,0.0000028357,0.0000028394,0.0000028514,0.0000028590, -0.0000028622,0.0000028780,0.0000028943,0.0000028930,0.0000028847, -0.0000028836,0.0000028875,0.0000028926,0.0000028970,0.0000028964, -0.0000028866,0.0000028774,0.0000028777,0.0000028854,0.0000028930, -0.0000028951,0.0000028925,0.0000028843,0.0000028753,0.0000028668, -0.0000028583,0.0000028477,0.0000028345,0.0000028205,0.0000028116, -0.0000028151,0.0000028331,0.0000028439,0.0000028423,0.0000028379, -0.0000028346,0.0000028420,0.0000028635,0.0000028659,0.0000028563, -0.0000028597,0.0000028771,0.0000028962,0.0000029067,0.0000029061, -0.0000028957,0.0000028889,0.0000028854,0.0000028734,0.0000028575, -0.0000028457,0.0000028464,0.0000028570,0.0000028666,0.0000028787, -0.0000028953,0.0000029097,0.0000029157,0.0000029150,0.0000029117, -0.0000029057,0.0000028980,0.0000028904,0.0000028819,0.0000028747, -0.0000028737,0.0000028758,0.0000028782,0.0000028775,0.0000028636, -0.0000028336,0.0000028152,0.0000028144,0.0000028108,0.0000028044, -0.0000028021,0.0000027895,0.0000027650,0.0000027488,0.0000027446, -0.0000027455,0.0000027464,0.0000027458,0.0000027456,0.0000027437, -0.0000027362,0.0000027309,0.0000027349,0.0000027422,0.0000027426, -0.0000027418,0.0000027516,0.0000027541,0.0000027468,0.0000027536, -0.0000027789,0.0000027906,0.0000027866,0.0000027762,0.0000027651, -0.0000027602,0.0000027613,0.0000027656,0.0000027718,0.0000027775, -0.0000027812,0.0000027836,0.0000027852,0.0000027869,0.0000027893, -0.0000027912,0.0000027911,0.0000027890,0.0000027864,0.0000027858, -0.0000027892,0.0000027951,0.0000028019,0.0000028075,0.0000028111, -0.0000028130,0.0000028131,0.0000028149,0.0000028178,0.0000028191, -0.0000028182,0.0000028152,0.0000028116,0.0000028073,0.0000028040, -0.0000028032,0.0000028036,0.0000028039,0.0000028047,0.0000028056, -0.0000028067,0.0000028086,0.0000028105,0.0000028112,0.0000028104, -0.0000028095,0.0000028101,0.0000028129,0.0000028160,0.0000028175, -0.0000028180,0.0000028190,0.0000028216,0.0000028252,0.0000028293, -0.0000028335,0.0000028366,0.0000028381,0.0000028386,0.0000028407, -0.0000028436,0.0000028472,0.0000028504,0.0000028524,0.0000028542, -0.0000028569,0.0000028619,0.0000028693,0.0000028783,0.0000028868, -0.0000028949,0.0000029012,0.0000029053,0.0000029084,0.0000029099, -0.0000029093,0.0000029071,0.0000029039,0.0000028995,0.0000028925, -0.0000028832,0.0000028740,0.0000028674,0.0000028633,0.0000028607, -0.0000028589,0.0000028574,0.0000028562,0.0000028552,0.0000028529, -0.0000028493,0.0000028446,0.0000028410,0.0000028389,0.0000028410, -0.0000028469,0.0000028553,0.0000028650,0.0000028718,0.0000028732, -0.0000028710,0.0000028662,0.0000028595,0.0000028510,0.0000028434, -0.0000028400,0.0000028372,0.0000028313,0.0000028245,0.0000028201, -0.0000028166,0.0000028115,0.0000028045,0.0000028049,0.0000028136, -0.0000028237,0.0000028272,0.0000028245,0.0000028203,0.0000028180, -0.0000028182,0.0000028210,0.0000028253,0.0000028312,0.0000028370, -0.0000028402,0.0000028385,0.0000028333,0.0000028292,0.0000028288, -0.0000028278,0.0000028266,0.0000028267,0.0000028296,0.0000028328, -0.0000028325,0.0000028313,0.0000028303,0.0000028282,0.0000028269, -0.0000028288,0.0000028278,0.0000028207,0.0000028165,0.0000028164, -0.0000028216,0.0000028230,0.0000028086,0.0000027910,0.0000028048, -0.0000028185,0.0000028187,0.0000028150,0.0000028076,0.0000028088, -0.0000028050,0.0000027991,0.0000028025,0.0000028038,0.0000027964, -0.0000027895,0.0000027883,0.0000027895,0.0000027930,0.0000027973, -0.0000028009,0.0000028052,0.0000028103,0.0000028175,0.0000028226, -0.0000028230,0.0000028207,0.0000028162,0.0000028113,0.0000028071, -0.0000028040,0.0000028018,0.0000027994,0.0000027955,0.0000027920, -0.0000027927,0.0000027953,0.0000027976,0.0000027982,0.0000027964, -0.0000027910,0.0000027815,0.0000027686,0.0000027552,0.0000027459, -0.0000027411,0.0000027379,0.0000027360,0.0000027366,0.0000027384, -0.0000027401,0.0000027410,0.0000027412,0.0000027436,0.0000027490, -0.0000027559,0.0000027619,0.0000027664,0.0000027696,0.0000027711, -0.0000027696,0.0000027634,0.0000027577,0.0000027538,0.0000027485, -0.0000027420,0.0000027379,0.0000027421,0.0000027558,0.0000027622, -0.0000027586,0.0000027508,0.0000027408,0.0000027306,0.0000027264, -0.0000027253,0.0000027227,0.0000027217,0.0000027226,0.0000027222, -0.0000027210,0.0000027201,0.0000027191,0.0000027182,0.0000027173, -0.0000027159,0.0000027138,0.0000027113,0.0000027090,0.0000027072, -0.0000027050,0.0000027030,0.0000027023,0.0000026984,0.0000026890, -0.0000026814,0.0000026801,0.0000026835,0.0000026910,0.0000026975, -0.0000026998,0.0000026974,0.0000026941,0.0000026904,0.0000026847, -0.0000026782,0.0000026754,0.0000026796,0.0000026904,0.0000027004, -0.0000027033,0.0000027034,0.0000027129,0.0000027281,0.0000027371, -0.0000027402,0.0000027372,0.0000027295,0.0000027233,0.0000027082, -0.0000026722,0.0000026372,0.0000026225,0.0000026436,0.0000026555, -0.0000026709,0.0000027352,0.0000027714,0.0000027750,0.0000027753, -0.0000027801,0.0000027945,0.0000028142,0.0000028239,0.0000028244, -0.0000028236,0.0000028237,0.0000028242,0.0000028232,0.0000028173, -0.0000028083,0.0000028040,0.0000028028,0.0000028014,0.0000027971, -0.0000027941,0.0000027938,0.0000027945,0.0000027929,0.0000027867, -0.0000027806,0.0000027779,0.0000027798,0.0000027821,0.0000027859, -0.0000027922,0.0000027999,0.0000028103,0.0000028118,0.0000028016, -0.0000027869,0.0000027763,0.0000027698,0.0000027680,0.0000027693, -0.0000027728,0.0000027839,0.0000027912,0.0000028115,0.0000028221, -0.0000028172,0.0000028065,0.0000027949,0.0000027919,0.0000027989, -0.0000027975,0.0000027853,0.0000027706,0.0000027613,0.0000027613, -0.0000027652,0.0000027583,0.0000027509,0.0000027540,0.0000027546, -0.0000027457,0.0000027209,0.0000027057,0.0000027030,0.0000026981, -0.0000026983,0.0000027007,0.0000026962,0.0000026786,0.0000026611, -0.0000026555,0.0000026543,0.0000026492,0.0000026419,0.0000026366, -0.0000026331,0.0000026316,0.0000026334,0.0000026352,0.0000026316, -0.0000026196,0.0000026036,0.0000025884,0.0000025770,0.0000025730, -0.0000025744,0.0000025767,0.0000025786,0.0000025792,0.0000025768, -0.0000025710,0.0000025645,0.0000025619,0.0000025634,0.0000025663, -0.0000025698,0.0000025739,0.0000025781,0.0000025800,0.0000025803, -0.0000025812,0.0000025822,0.0000025821,0.0000025832,0.0000025845, -0.0000025839,0.0000025810,0.0000025773,0.0000025730,0.0000025667, -0.0000025606,0.0000025573,0.0000025563,0.0000025561,0.0000025569, -0.0000025570,0.0000025560,0.0000025530,0.0000025496,0.0000025457, -0.0000025443,0.0000025375,0.0000025336,0.0000025310,0.0000025333, -0.0000025371,0.0000025414,0.0000025395,0.0000025344,0.0000025296, -0.0000025257,0.0000025317,0.0000025487,0.0000025677,0.0000025809, -0.0000025863,0.0000025875,0.0000025885,0.0000025910,0.0000025957, -0.0000026026,0.0000026096,0.0000026151,0.0000026221,0.0000026324, -0.0000026400,0.0000026445,0.0000026535,0.0000026652,0.0000026729, -0.0000026774,0.0000026823,0.0000026870,0.0000026887,0.0000026891, -0.0000026926,0.0000026956,0.0000026930,0.0000026858,0.0000026822, -0.0000026851,0.0000026939,0.0000027015,0.0000027061,0.0000027084, -0.0000027105,0.0000027151,0.0000027202,0.0000027243,0.0000027319, -0.0000027488,0.0000027711,0.0000027888,0.0000028007,0.0000028061, -0.0000028038,0.0000027977,0.0000027933,0.0000027932,0.0000027966, -0.0000028075,0.0000028251,0.0000028359,0.0000028356,0.0000028335, -0.0000028347,0.0000028290,0.0000028218,0.0000028275,0.0000028377, -0.0000028404,0.0000028328,0.0000028208,0.0000028111,0.0000028094, -0.0000028136,0.0000028166,0.0000028179,0.0000028241,0.0000028382, -0.0000028463,0.0000028441,0.0000028431,0.0000028483,0.0000028496, -0.0000028430,0.0000028326,0.0000028219,0.0000028166,0.0000028157, -0.0000028153,0.0000028158,0.0000028162,0.0000028196,0.0000028235, -0.0000028290,0.0000028365,0.0000028454,0.0000028588,0.0000028729, -0.0000028841,0.0000028909,0.0000028929,0.0000028916,0.0000028925, -0.0000028939,0.0000028936,0.0000028869,0.0000028773,0.0000028710, -0.0000028682,0.0000028649,0.0000028604,0.0000028581,0.0000028602, -0.0000028649,0.0000028693,0.0000028709,0.0000028684,0.0000028618, -0.0000028546,0.0000028527,0.0000028558,0.0000028641,0.0000028721, -0.0000028776,0.0000028821,0.0000028868,0.0000028892,0.0000028898, -0.0000028915,0.0000028947,0.0000028971,0.0000028983,0.0000028961, -0.0000028916,0.0000028857,0.0000028773,0.0000028681,0.0000028620, -0.0000028614,0.0000028672,0.0000028765,0.0000028831,0.0000028824, -0.0000028779,0.0000028819,0.0000028953,0.0000029054,0.0000029112, -0.0000029195,0.0000029245,0.0000029232,0.0000029191,0.0000029157, -0.0000029146,0.0000029142,0.0000029115,0.0000029064,0.0000029021, -0.0000029011,0.0000029024,0.0000029017,0.0000028989,0.0000028978, -0.0000028987,0.0000028986,0.0000028973,0.0000028960,0.0000028953, -0.0000028936,0.0000028893,0.0000028835,0.0000028783,0.0000028731, -0.0000028676,0.0000028625,0.0000028610,0.0000028632,0.0000028673, -0.0000028688,0.0000028671,0.0000028631,0.0000028590,0.0000028565, -0.0000028552,0.0000028551,0.0000028562,0.0000028567,0.0000028558, -0.0000028535,0.0000028498,0.0000028454,0.0000028408,0.0000028356, -0.0000028301,0.0000028246,0.0000028206,0.0000028199,0.0000028220, -0.0000028259,0.0000028312,0.0000028388,0.0000028484,0.0000028575, -0.0000028645,0.0000028683,0.0000028688,0.0000028688,0.0000028705, -0.0000028723,0.0000028727,0.0000028703,0.0000028668,0.0000028639, -0.0000028608,0.0000028585,0.0000028588,0.0000028599,0.0000028578, -0.0000028519,0.0000028457,0.0000028423,0.0000028408,0.0000028398, -0.0000028399,0.0000028423,0.0000028473,0.0000028522,0.0000028549, -0.0000028552,0.0000028537,0.0000028499,0.0000028453,0.0000028411, -0.0000028362,0.0000028319,0.0000028317,0.0000028343,0.0000028363, -0.0000028376,0.0000028325,0.0000028079,0.0000027838,0.0000027798, -0.0000027868,0.0000027907,0.0000027884,0.0000027849,0.0000027834, -0.0000027856,0.0000027913,0.0000027971,0.0000028027,0.0000028065, -0.0000028103,0.0000028149,0.0000028201,0.0000028239,0.0000028253, -0.0000028272,0.0000028284,0.0000028276,0.0000028273,0.0000028288, -0.0000028325,0.0000028358,0.0000028371,0.0000028365,0.0000028359, -0.0000028337,0.0000028306,0.0000028248,0.0000028177,0.0000028113, -0.0000028061,0.0000028000,0.0000027933,0.0000027846,0.0000027768, -0.0000027761,0.0000027869,0.0000028068,0.0000028286,0.0000028471, -0.0000028597,0.0000028642,0.0000028651,0.0000028666,0.0000028679, -0.0000028689,0.0000028696,0.0000028718,0.0000028740,0.0000028735, -0.0000028712,0.0000028674,0.0000028632,0.0000028592,0.0000028583, -0.0000028597,0.0000028631,0.0000028670,0.0000028736,0.0000028797, -0.0000028829,0.0000028815,0.0000028774,0.0000028693,0.0000028591, -0.0000028468,0.0000028375,0.0000028292,0.0000028250,0.0000028296, -0.0000028341,0.0000028407,0.0000028515,0.0000028572,0.0000028673, -0.0000028870,0.0000028943,0.0000028870,0.0000028830,0.0000028889, -0.0000028965,0.0000029003,0.0000028981,0.0000028871,0.0000028774, -0.0000028762,0.0000028808,0.0000028875,0.0000028904,0.0000028884, -0.0000028820,0.0000028749,0.0000028676,0.0000028593,0.0000028482, -0.0000028347,0.0000028200,0.0000028086,0.0000028081,0.0000028225, -0.0000028374,0.0000028407,0.0000028386,0.0000028352,0.0000028379, -0.0000028592,0.0000028712,0.0000028625,0.0000028599,0.0000028748, -0.0000028961,0.0000029088,0.0000029079,0.0000028969,0.0000028906, -0.0000028858,0.0000028716,0.0000028554,0.0000028447,0.0000028462, -0.0000028584,0.0000028680,0.0000028770,0.0000028890,0.0000029027, -0.0000029106,0.0000029107,0.0000029073,0.0000029013,0.0000028955, -0.0000028903,0.0000028825,0.0000028719,0.0000028670,0.0000028701, -0.0000028746,0.0000028753,0.0000028628,0.0000028332,0.0000028148, -0.0000028137,0.0000028090,0.0000028028,0.0000028015,0.0000027938, -0.0000027715,0.0000027525,0.0000027454,0.0000027432,0.0000027425, -0.0000027425,0.0000027430,0.0000027426,0.0000027402,0.0000027357, -0.0000027357,0.0000027402,0.0000027414,0.0000027375,0.0000027384, -0.0000027503,0.0000027515,0.0000027446,0.0000027517,0.0000027756, -0.0000027866,0.0000027834,0.0000027731,0.0000027615,0.0000027545, -0.0000027536,0.0000027561,0.0000027611,0.0000027650,0.0000027672, -0.0000027681,0.0000027693,0.0000027714,0.0000027731,0.0000027735, -0.0000027731,0.0000027735,0.0000027753,0.0000027793,0.0000027847, -0.0000027902,0.0000027948,0.0000027980,0.0000028000,0.0000028007, -0.0000028010,0.0000028033,0.0000028049,0.0000028044,0.0000028023, -0.0000028001,0.0000027969,0.0000027937,0.0000027920,0.0000027915, -0.0000027914,0.0000027916,0.0000027923,0.0000027926,0.0000027929, -0.0000027928,0.0000027924,0.0000027911,0.0000027890,0.0000027881, -0.0000027894,0.0000027923,0.0000027942,0.0000027946,0.0000027946, -0.0000027952,0.0000027974,0.0000028013,0.0000028058,0.0000028103, -0.0000028149,0.0000028198,0.0000028259,0.0000028322,0.0000028375, -0.0000028420,0.0000028448,0.0000028448,0.0000028430,0.0000028421, -0.0000028440,0.0000028497,0.0000028591,0.0000028714,0.0000028855, -0.0000028988,0.0000029089,0.0000029176,0.0000029222,0.0000029226, -0.0000029203,0.0000029160,0.0000029106,0.0000029037,0.0000028946, -0.0000028849,0.0000028762,0.0000028701,0.0000028668,0.0000028647, -0.0000028627,0.0000028613,0.0000028599,0.0000028570,0.0000028540, -0.0000028517,0.0000028506,0.0000028485,0.0000028490,0.0000028545, -0.0000028619,0.0000028684,0.0000028728,0.0000028726,0.0000028699, -0.0000028654,0.0000028596,0.0000028510,0.0000028405,0.0000028323, -0.0000028295,0.0000028278,0.0000028234,0.0000028181,0.0000028135, -0.0000028067,0.0000028013,0.0000028058,0.0000028180,0.0000028282, -0.0000028300,0.0000028260,0.0000028194,0.0000028157,0.0000028150, -0.0000028173,0.0000028223,0.0000028291,0.0000028357,0.0000028399, -0.0000028404,0.0000028387,0.0000028361,0.0000028340,0.0000028313, -0.0000028265,0.0000028227,0.0000028229,0.0000028265,0.0000028285, -0.0000028306,0.0000028327,0.0000028319,0.0000028325,0.0000028333, -0.0000028321,0.0000028244,0.0000028165,0.0000028135,0.0000028150, -0.0000028197,0.0000028164,0.0000027956,0.0000027881,0.0000028069, -0.0000028179,0.0000028174,0.0000028123,0.0000028049,0.0000028051, -0.0000028012,0.0000027971,0.0000028001,0.0000028024,0.0000027998, -0.0000027937,0.0000027878,0.0000027848,0.0000027857,0.0000027880, -0.0000027912,0.0000027961,0.0000028025,0.0000028074,0.0000028086, -0.0000028081,0.0000028063,0.0000028028,0.0000027997,0.0000027971, -0.0000027948,0.0000027925,0.0000027882,0.0000027823,0.0000027794, -0.0000027796,0.0000027830,0.0000027890,0.0000027939,0.0000027953, -0.0000027948,0.0000027901,0.0000027777,0.0000027612,0.0000027485, -0.0000027405,0.0000027357,0.0000027348,0.0000027355,0.0000027363, -0.0000027360,0.0000027338,0.0000027328,0.0000027320,0.0000027363, -0.0000027435,0.0000027514,0.0000027582,0.0000027630,0.0000027646, -0.0000027618,0.0000027555,0.0000027504,0.0000027464,0.0000027418, -0.0000027370,0.0000027350,0.0000027426,0.0000027540,0.0000027553, -0.0000027492,0.0000027393,0.0000027283,0.0000027240,0.0000027228, -0.0000027204,0.0000027200,0.0000027217,0.0000027218,0.0000027197, -0.0000027175,0.0000027159,0.0000027152,0.0000027154,0.0000027159, -0.0000027157,0.0000027149,0.0000027127,0.0000027096,0.0000027074, -0.0000027063,0.0000027054,0.0000027051,0.0000027018,0.0000026912, -0.0000026802,0.0000026767,0.0000026783,0.0000026832,0.0000026900, -0.0000026954,0.0000026970,0.0000026947,0.0000026894,0.0000026809, -0.0000026710,0.0000026665,0.0000026710,0.0000026832,0.0000026948, -0.0000026998,0.0000027006,0.0000027087,0.0000027244,0.0000027356, -0.0000027387,0.0000027348,0.0000027254,0.0000027192,0.0000026990, -0.0000026622,0.0000026274,0.0000026189,0.0000026444,0.0000026545, -0.0000026810,0.0000027457,0.0000027725,0.0000027746,0.0000027757, -0.0000027828,0.0000028004,0.0000028184,0.0000028251,0.0000028242, -0.0000028222,0.0000028224,0.0000028220,0.0000028216,0.0000028176, -0.0000028100,0.0000028043,0.0000028029,0.0000028032,0.0000027980, -0.0000027903,0.0000027857,0.0000027857,0.0000027880,0.0000027878, -0.0000027837,0.0000027813,0.0000027838,0.0000027862,0.0000027891, -0.0000027946,0.0000028000,0.0000028077,0.0000028108,0.0000028024, -0.0000027881,0.0000027762,0.0000027669,0.0000027629,0.0000027636, -0.0000027682,0.0000027810,0.0000027886,0.0000028075,0.0000028184, -0.0000028143,0.0000028032,0.0000027916,0.0000027890,0.0000027962, -0.0000027940,0.0000027799,0.0000027653,0.0000027593,0.0000027623, -0.0000027650,0.0000027553,0.0000027505,0.0000027538,0.0000027548, -0.0000027399,0.0000027144,0.0000027047,0.0000027015,0.0000026969, -0.0000026980,0.0000026990,0.0000026893,0.0000026690,0.0000026560, -0.0000026538,0.0000026487,0.0000026396,0.0000026331,0.0000026298, -0.0000026263,0.0000026240,0.0000026254,0.0000026272,0.0000026222, -0.0000026057,0.0000025868,0.0000025757,0.0000025725,0.0000025730, -0.0000025764,0.0000025794,0.0000025804,0.0000025789,0.0000025739, -0.0000025657,0.0000025580,0.0000025572,0.0000025618,0.0000025671, -0.0000025721,0.0000025780,0.0000025824,0.0000025839,0.0000025850, -0.0000025878,0.0000025892,0.0000025900,0.0000025928,0.0000025959, -0.0000025970,0.0000025961,0.0000025937,0.0000025891,0.0000025807, -0.0000025727,0.0000025693,0.0000025689,0.0000025688,0.0000025696, -0.0000025705,0.0000025698,0.0000025664,0.0000025634,0.0000025585, -0.0000025532,0.0000025410,0.0000025276,0.0000025155,0.0000025074, -0.0000025120,0.0000025240,0.0000025353,0.0000025418,0.0000025397, -0.0000025325,0.0000025218,0.0000025170,0.0000025217,0.0000025394, -0.0000025603,0.0000025748,0.0000025797,0.0000025791,0.0000025799, -0.0000025850,0.0000025931,0.0000026011,0.0000026076,0.0000026130, -0.0000026193,0.0000026287,0.0000026372,0.0000026414,0.0000026484, -0.0000026593,0.0000026681,0.0000026758,0.0000026845,0.0000026910, -0.0000026939,0.0000026945,0.0000026944,0.0000026920,0.0000026837, -0.0000026755,0.0000026783,0.0000026888,0.0000026993,0.0000027068, -0.0000027095,0.0000027096,0.0000027103,0.0000027145,0.0000027200, -0.0000027260,0.0000027358,0.0000027495,0.0000027627,0.0000027702, -0.0000027747,0.0000027737,0.0000027680,0.0000027636,0.0000027628, -0.0000027672,0.0000027810,0.0000028059,0.0000028301,0.0000028381, -0.0000028363,0.0000028364,0.0000028302,0.0000028221,0.0000028285, -0.0000028389,0.0000028419,0.0000028352,0.0000028251,0.0000028156, -0.0000028137,0.0000028183,0.0000028207,0.0000028212,0.0000028250, -0.0000028342,0.0000028416,0.0000028419,0.0000028439,0.0000028497, -0.0000028484,0.0000028399,0.0000028277,0.0000028193,0.0000028173, -0.0000028170,0.0000028173,0.0000028194,0.0000028225,0.0000028256, -0.0000028272,0.0000028317,0.0000028398,0.0000028515,0.0000028657, -0.0000028762,0.0000028815,0.0000028843,0.0000028873,0.0000028927, -0.0000028960,0.0000028927,0.0000028825,0.0000028730,0.0000028677, -0.0000028644,0.0000028604,0.0000028577,0.0000028578,0.0000028632, -0.0000028721,0.0000028784,0.0000028790,0.0000028755,0.0000028712, -0.0000028671,0.0000028645,0.0000028665,0.0000028744,0.0000028834, -0.0000028892,0.0000028925,0.0000028927,0.0000028931,0.0000028946, -0.0000028960,0.0000028963,0.0000028966,0.0000028956,0.0000028930, -0.0000028884,0.0000028828,0.0000028766,0.0000028686,0.0000028625, -0.0000028599,0.0000028608,0.0000028668,0.0000028762,0.0000028814, -0.0000028788,0.0000028783,0.0000028881,0.0000029022,0.0000029096, -0.0000029175,0.0000029258,0.0000029269,0.0000029227,0.0000029177, -0.0000029164,0.0000029185,0.0000029184,0.0000029138,0.0000029082, -0.0000029064,0.0000029084,0.0000029099,0.0000029076,0.0000029039, -0.0000029015,0.0000029000,0.0000028966,0.0000028935,0.0000028920, -0.0000028910,0.0000028888,0.0000028847,0.0000028805,0.0000028769, -0.0000028714,0.0000028654,0.0000028611,0.0000028603,0.0000028615, -0.0000028625,0.0000028610,0.0000028572,0.0000028526,0.0000028488, -0.0000028476,0.0000028481,0.0000028489,0.0000028498,0.0000028496, -0.0000028482,0.0000028457,0.0000028422,0.0000028373,0.0000028318, -0.0000028269,0.0000028216,0.0000028157,0.0000028119,0.0000028111, -0.0000028118,0.0000028140,0.0000028169,0.0000028212,0.0000028280, -0.0000028361,0.0000028440,0.0000028502,0.0000028535,0.0000028556, -0.0000028594,0.0000028633,0.0000028657,0.0000028648,0.0000028609, -0.0000028572,0.0000028542,0.0000028522,0.0000028527,0.0000028544, -0.0000028538,0.0000028489,0.0000028413,0.0000028347,0.0000028306, -0.0000028278,0.0000028263,0.0000028278,0.0000028337,0.0000028416, -0.0000028479,0.0000028521,0.0000028535,0.0000028515,0.0000028461, -0.0000028400,0.0000028351,0.0000028292,0.0000028232,0.0000028228, -0.0000028282,0.0000028336,0.0000028353,0.0000028310,0.0000028073, -0.0000027796,0.0000027733,0.0000027811,0.0000027842,0.0000027804, -0.0000027783,0.0000027828,0.0000027958,0.0000028107,0.0000028209, -0.0000028262,0.0000028261,0.0000028264,0.0000028273,0.0000028295, -0.0000028312,0.0000028311,0.0000028314,0.0000028306,0.0000028291, -0.0000028292,0.0000028313,0.0000028349,0.0000028381,0.0000028404, -0.0000028416,0.0000028432,0.0000028432,0.0000028422,0.0000028381, -0.0000028306,0.0000028212,0.0000028108,0.0000028007,0.0000027922, -0.0000027839,0.0000027765,0.0000027739,0.0000027751,0.0000027843, -0.0000028001,0.0000028200,0.0000028401,0.0000028535,0.0000028603, -0.0000028631,0.0000028638,0.0000028636,0.0000028631,0.0000028647, -0.0000028687,0.0000028723,0.0000028735,0.0000028728,0.0000028693, -0.0000028646,0.0000028603,0.0000028577,0.0000028547,0.0000028540, -0.0000028576,0.0000028629,0.0000028675,0.0000028695,0.0000028677, -0.0000028632,0.0000028549,0.0000028448,0.0000028364,0.0000028272, -0.0000028186,0.0000028200,0.0000028286,0.0000028330,0.0000028409, -0.0000028513,0.0000028598,0.0000028765,0.0000028927,0.0000028898, -0.0000028828,0.0000028890,0.0000028994,0.0000029042,0.0000029009, -0.0000028898,0.0000028796,0.0000028763,0.0000028774,0.0000028811, -0.0000028840,0.0000028834,0.0000028798,0.0000028745,0.0000028693, -0.0000028614,0.0000028494,0.0000028359,0.0000028219,0.0000028091, -0.0000028054,0.0000028146,0.0000028304,0.0000028382,0.0000028386, -0.0000028369,0.0000028378,0.0000028531,0.0000028722,0.0000028705, -0.0000028625,0.0000028724,0.0000028942,0.0000029099,0.0000029103, -0.0000028994,0.0000028930,0.0000028863,0.0000028713,0.0000028546, -0.0000028443,0.0000028453,0.0000028584,0.0000028684,0.0000028754, -0.0000028835,0.0000028947,0.0000029030,0.0000029041,0.0000029024, -0.0000028989,0.0000028962,0.0000028933,0.0000028878,0.0000028762, -0.0000028654,0.0000028652,0.0000028703,0.0000028719,0.0000028612, -0.0000028317,0.0000028138,0.0000028129,0.0000028072,0.0000028012, -0.0000028011,0.0000027979,0.0000027803,0.0000027605,0.0000027509, -0.0000027464,0.0000027437,0.0000027423,0.0000027411,0.0000027409, -0.0000027405,0.0000027391,0.0000027380,0.0000027391,0.0000027402, -0.0000027373,0.0000027314,0.0000027365,0.0000027488,0.0000027483, -0.0000027412,0.0000027479,0.0000027711,0.0000027825,0.0000027797, -0.0000027699,0.0000027579,0.0000027491,0.0000027457,0.0000027464, -0.0000027487,0.0000027512,0.0000027528,0.0000027538,0.0000027544, -0.0000027549,0.0000027562,0.0000027592,0.0000027631,0.0000027662, -0.0000027682,0.0000027706,0.0000027742,0.0000027784,0.0000027823, -0.0000027858,0.0000027885,0.0000027893,0.0000027895,0.0000027902, -0.0000027899,0.0000027886,0.0000027865,0.0000027832,0.0000027794, -0.0000027765,0.0000027744,0.0000027725,0.0000027710,0.0000027709, -0.0000027712,0.0000027709,0.0000027703,0.0000027694,0.0000027689, -0.0000027676,0.0000027658,0.0000027655,0.0000027666,0.0000027669, -0.0000027651,0.0000027622,0.0000027586,0.0000027564,0.0000027567, -0.0000027591,0.0000027621,0.0000027662,0.0000027723,0.0000027802, -0.0000027895,0.0000027983,0.0000028059,0.0000028121,0.0000028178, -0.0000028233,0.0000028286,0.0000028344,0.0000028400,0.0000028461, -0.0000028533,0.0000028624,0.0000028748,0.0000028888,0.0000029024, -0.0000029135,0.0000029222,0.0000029250,0.0000029247,0.0000029219, -0.0000029172,0.0000029103,0.0000029012,0.0000028914,0.0000028821, -0.0000028758,0.0000028730,0.0000028717,0.0000028707,0.0000028705, -0.0000028699,0.0000028680,0.0000028668,0.0000028677,0.0000028675, -0.0000028626,0.0000028585,0.0000028609,0.0000028657,0.0000028695, -0.0000028724,0.0000028723,0.0000028695,0.0000028649,0.0000028597, -0.0000028525,0.0000028415,0.0000028287,0.0000028210,0.0000028205, -0.0000028204,0.0000028164,0.0000028110,0.0000028028,0.0000027953, -0.0000028004,0.0000028176,0.0000028335,0.0000028388,0.0000028346, -0.0000028258,0.0000028193,0.0000028164,0.0000028173,0.0000028222, -0.0000028295,0.0000028362,0.0000028396,0.0000028400,0.0000028397, -0.0000028411,0.0000028426,0.0000028422,0.0000028371,0.0000028292, -0.0000028239,0.0000028244,0.0000028257,0.0000028279,0.0000028309, -0.0000028338,0.0000028374,0.0000028375,0.0000028356,0.0000028287, -0.0000028191,0.0000028132,0.0000028114,0.0000028135,0.0000028160, -0.0000028068,0.0000027867,0.0000027869,0.0000028093,0.0000028173, -0.0000028152,0.0000028082,0.0000028033,0.0000028026,0.0000028006, -0.0000027978,0.0000027972,0.0000027998,0.0000028008,0.0000027975, -0.0000027950,0.0000027936,0.0000027938,0.0000027949,0.0000027979, -0.0000028031,0.0000028079,0.0000028099,0.0000028101,0.0000028089, -0.0000028060,0.0000028021,0.0000027986,0.0000027961,0.0000027934, -0.0000027896,0.0000027840,0.0000027794,0.0000027775,0.0000027786, -0.0000027808,0.0000027838,0.0000027888,0.0000027943,0.0000027969, -0.0000027943,0.0000027836,0.0000027689,0.0000027560,0.0000027478, -0.0000027449,0.0000027453,0.0000027469,0.0000027464,0.0000027429, -0.0000027384,0.0000027332,0.0000027289,0.0000027282,0.0000027334, -0.0000027425,0.0000027511,0.0000027565,0.0000027578,0.0000027537, -0.0000027475,0.0000027431,0.0000027394,0.0000027358,0.0000027319, -0.0000027330,0.0000027430,0.0000027485,0.0000027456,0.0000027364, -0.0000027253,0.0000027208,0.0000027199,0.0000027175,0.0000027174, -0.0000027194,0.0000027187,0.0000027154,0.0000027129,0.0000027129, -0.0000027142,0.0000027158,0.0000027167,0.0000027168,0.0000027166, -0.0000027161,0.0000027144,0.0000027112,0.0000027085,0.0000027078, -0.0000027077,0.0000027073,0.0000027037,0.0000026930,0.0000026806, -0.0000026746,0.0000026748,0.0000026781,0.0000026840,0.0000026905, -0.0000026943,0.0000026932,0.0000026867,0.0000026765,0.0000026641, -0.0000026567,0.0000026605,0.0000026744,0.0000026882,0.0000026967, -0.0000026988,0.0000027037,0.0000027194,0.0000027331,0.0000027366, -0.0000027315,0.0000027210,0.0000027135,0.0000026899,0.0000026531, -0.0000026214,0.0000026186,0.0000026445,0.0000026546,0.0000026875, -0.0000027495,0.0000027725,0.0000027727,0.0000027736,0.0000027836, -0.0000028014,0.0000028184,0.0000028241,0.0000028219,0.0000028199, -0.0000028199,0.0000028188,0.0000028181,0.0000028157,0.0000028104, -0.0000028055,0.0000028031,0.0000028040,0.0000028004,0.0000027915, -0.0000027831,0.0000027802,0.0000027820,0.0000027850,0.0000027852, -0.0000027849,0.0000027868,0.0000027899,0.0000027930,0.0000027965, -0.0000027998,0.0000028040,0.0000028071,0.0000028007,0.0000027863, -0.0000027747,0.0000027655,0.0000027595,0.0000027594,0.0000027640, -0.0000027781,0.0000027865,0.0000028048,0.0000028157,0.0000028118, -0.0000028001,0.0000027882,0.0000027861,0.0000027936,0.0000027907, -0.0000027747,0.0000027606,0.0000027578,0.0000027634,0.0000027631, -0.0000027523,0.0000027503,0.0000027537,0.0000027547,0.0000027333, -0.0000027103,0.0000027054,0.0000027009,0.0000026968,0.0000026977, -0.0000026960,0.0000026808,0.0000026611,0.0000026542,0.0000026515, -0.0000026418,0.0000026311,0.0000026257,0.0000026221,0.0000026183, -0.0000026152,0.0000026154,0.0000026166,0.0000026111,0.0000025939, -0.0000025770,0.0000025720,0.0000025725,0.0000025741,0.0000025767, -0.0000025783,0.0000025778,0.0000025753,0.0000025714,0.0000025660, -0.0000025636,0.0000025655,0.0000025709,0.0000025754,0.0000025790, -0.0000025832,0.0000025864,0.0000025889,0.0000025927,0.0000025973, -0.0000025995,0.0000026001,0.0000026008,0.0000026022,0.0000026026, -0.0000026019,0.0000025995,0.0000025943,0.0000025847,0.0000025755, -0.0000025712,0.0000025711,0.0000025715,0.0000025739,0.0000025776, -0.0000025807,0.0000025810,0.0000025837,0.0000025808,0.0000025766, -0.0000025638,0.0000025459,0.0000025249,0.0000025065,0.0000024996, -0.0000025002,0.0000025122,0.0000025245,0.0000025332,0.0000025365, -0.0000025353,0.0000025309,0.0000025239,0.0000025200,0.0000025245, -0.0000025341,0.0000025543,0.0000025704,0.0000025775,0.0000025808, -0.0000025856,0.0000025903,0.0000025942,0.0000025995,0.0000026058, -0.0000026117,0.0000026173,0.0000026252,0.0000026337,0.0000026391, -0.0000026478,0.0000026611,0.0000026720,0.0000026805,0.0000026892, -0.0000026953,0.0000026957,0.0000026927,0.0000026888,0.0000026806, -0.0000026716,0.0000026712,0.0000026818,0.0000026966,0.0000027062, -0.0000027101,0.0000027108,0.0000027089,0.0000027094,0.0000027144, -0.0000027211,0.0000027293,0.0000027384,0.0000027452,0.0000027484, -0.0000027504,0.0000027513,0.0000027480,0.0000027437,0.0000027425, -0.0000027457,0.0000027577,0.0000027854,0.0000028191,0.0000028371, -0.0000028386,0.0000028374,0.0000028305,0.0000028216,0.0000028293, -0.0000028395,0.0000028429,0.0000028372,0.0000028294,0.0000028205, -0.0000028182,0.0000028234,0.0000028253,0.0000028245,0.0000028252, -0.0000028297,0.0000028374,0.0000028410,0.0000028448,0.0000028481, -0.0000028449,0.0000028345,0.0000028246,0.0000028210,0.0000028206, -0.0000028203,0.0000028228,0.0000028276,0.0000028302,0.0000028308, -0.0000028314,0.0000028361,0.0000028461,0.0000028580,0.0000028677, -0.0000028734,0.0000028782,0.0000028855,0.0000028923,0.0000028954, -0.0000028894,0.0000028770,0.0000028672,0.0000028630,0.0000028599, -0.0000028558,0.0000028551,0.0000028593,0.0000028683,0.0000028767, -0.0000028813,0.0000028814,0.0000028804,0.0000028795,0.0000028788, -0.0000028777,0.0000028792,0.0000028847,0.0000028917,0.0000028971, -0.0000029000,0.0000029004,0.0000028991,0.0000028994,0.0000028992, -0.0000028966,0.0000028932,0.0000028898,0.0000028881,0.0000028865, -0.0000028852,0.0000028834,0.0000028797,0.0000028757,0.0000028728, -0.0000028705,0.0000028694,0.0000028721,0.0000028781,0.0000028802, -0.0000028772,0.0000028824,0.0000028969,0.0000029079,0.0000029148, -0.0000029242,0.0000029285,0.0000029256,0.0000029200,0.0000029178, -0.0000029207,0.0000029230,0.0000029201,0.0000029139,0.0000029110, -0.0000029127,0.0000029160,0.0000029152,0.0000029105,0.0000029056, -0.0000029015,0.0000028969,0.0000028919,0.0000028898,0.0000028891, -0.0000028889,0.0000028878,0.0000028856,0.0000028834,0.0000028787, -0.0000028719,0.0000028676,0.0000028656,0.0000028636,0.0000028612, -0.0000028574,0.0000028527,0.0000028478,0.0000028439,0.0000028420, -0.0000028420,0.0000028435,0.0000028449,0.0000028460,0.0000028454, -0.0000028436,0.0000028407,0.0000028368,0.0000028322,0.0000028271, -0.0000028216,0.0000028161,0.0000028101,0.0000028047,0.0000028025, -0.0000028025,0.0000028032,0.0000028046,0.0000028070,0.0000028117, -0.0000028170,0.0000028220,0.0000028270,0.0000028312,0.0000028354, -0.0000028414,0.0000028482,0.0000028540,0.0000028563,0.0000028547, -0.0000028512,0.0000028485,0.0000028469,0.0000028476,0.0000028501, -0.0000028508,0.0000028482,0.0000028422,0.0000028356,0.0000028304, -0.0000028262,0.0000028220,0.0000028194,0.0000028206,0.0000028256, -0.0000028322,0.0000028390,0.0000028442,0.0000028464,0.0000028460, -0.0000028423,0.0000028362,0.0000028285,0.0000028204,0.0000028141, -0.0000028138,0.0000028213,0.0000028300,0.0000028325,0.0000028295, -0.0000028077,0.0000027755,0.0000027650,0.0000027721,0.0000027754, -0.0000027727,0.0000027751,0.0000027915,0.0000028143,0.0000028307, -0.0000028363,0.0000028348,0.0000028303,0.0000028276,0.0000028282, -0.0000028313,0.0000028338,0.0000028340,0.0000028329,0.0000028303, -0.0000028288,0.0000028296,0.0000028320,0.0000028355,0.0000028388, -0.0000028416,0.0000028443,0.0000028474,0.0000028486,0.0000028492, -0.0000028475,0.0000028426,0.0000028343,0.0000028220,0.0000028073, -0.0000027930,0.0000027821,0.0000027765,0.0000027734,0.0000027721, -0.0000027723,0.0000027774,0.0000027902,0.0000028105,0.0000028315, -0.0000028479,0.0000028571,0.0000028592,0.0000028575,0.0000028565, -0.0000028571,0.0000028604,0.0000028658,0.0000028711,0.0000028734, -0.0000028721,0.0000028691,0.0000028649,0.0000028596,0.0000028543, -0.0000028509,0.0000028512,0.0000028535,0.0000028564,0.0000028583, -0.0000028573,0.0000028542,0.0000028478,0.0000028414,0.0000028363, -0.0000028278,0.0000028168,0.0000028113,0.0000028195,0.0000028278, -0.0000028308,0.0000028429,0.0000028541,0.0000028666,0.0000028865, -0.0000028907,0.0000028838,0.0000028875,0.0000029005,0.0000029076, -0.0000029050,0.0000028945,0.0000028842,0.0000028790,0.0000028776, -0.0000028781,0.0000028793,0.0000028794,0.0000028777,0.0000028733, -0.0000028688,0.0000028615,0.0000028494,0.0000028362,0.0000028241, -0.0000028113,0.0000028051,0.0000028095,0.0000028244,0.0000028346, -0.0000028375,0.0000028387,0.0000028411,0.0000028489,0.0000028690, -0.0000028775,0.0000028681,0.0000028711,0.0000028905,0.0000029093, -0.0000029121,0.0000029024,0.0000028958,0.0000028878,0.0000028722, -0.0000028556,0.0000028444,0.0000028447,0.0000028567,0.0000028677, -0.0000028734,0.0000028789,0.0000028873,0.0000028952,0.0000028982, -0.0000028990,0.0000028986,0.0000028974,0.0000028957,0.0000028917, -0.0000028828,0.0000028686,0.0000028628,0.0000028660,0.0000028684, -0.0000028588,0.0000028296,0.0000028124,0.0000028120,0.0000028057, -0.0000027994,0.0000028002,0.0000028000,0.0000027890,0.0000027703, -0.0000027591,0.0000027550,0.0000027511,0.0000027458,0.0000027411, -0.0000027386,0.0000027381,0.0000027389,0.0000027393,0.0000027385, -0.0000027382,0.0000027371,0.0000027318,0.0000027289,0.0000027366, -0.0000027472,0.0000027444,0.0000027374,0.0000027440,0.0000027654, -0.0000027775,0.0000027746,0.0000027653,0.0000027540,0.0000027445, -0.0000027396,0.0000027380,0.0000027381,0.0000027404,0.0000027428, -0.0000027434,0.0000027425,0.0000027426,0.0000027468,0.0000027528, -0.0000027562,0.0000027562,0.0000027555,0.0000027566,0.0000027600, -0.0000027647,0.0000027693,0.0000027728,0.0000027739,0.0000027719, -0.0000027698,0.0000027682,0.0000027672,0.0000027664,0.0000027646, -0.0000027620,0.0000027591,0.0000027564,0.0000027534,0.0000027503, -0.0000027487,0.0000027494,0.0000027510,0.0000027519,0.0000027525, -0.0000027522,0.0000027502,0.0000027469,0.0000027438,0.0000027426, -0.0000027422,0.0000027407,0.0000027380,0.0000027347,0.0000027310, -0.0000027276,0.0000027266,0.0000027274,0.0000027303,0.0000027345, -0.0000027404,0.0000027487,0.0000027569,0.0000027637,0.0000027688, -0.0000027728,0.0000027784,0.0000027873,0.0000027994,0.0000028140, -0.0000028291,0.0000028435,0.0000028549,0.0000028643,0.0000028746, -0.0000028836,0.0000028913,0.0000028992,0.0000029073,0.0000029136, -0.0000029166,0.0000029174,0.0000029151,0.0000029095,0.0000029008, -0.0000028921,0.0000028836,0.0000028781,0.0000028758,0.0000028754, -0.0000028761,0.0000028786,0.0000028811,0.0000028836,0.0000028864, -0.0000028893,0.0000028881,0.0000028797,0.0000028697,0.0000028663, -0.0000028668,0.0000028677,0.0000028694,0.0000028704,0.0000028687, -0.0000028649,0.0000028602,0.0000028548,0.0000028468,0.0000028339, -0.0000028206,0.0000028165,0.0000028162,0.0000028138,0.0000028081, -0.0000028000,0.0000027923,0.0000027933,0.0000028077,0.0000028286, -0.0000028410,0.0000028426,0.0000028361,0.0000028281,0.0000028237, -0.0000028226,0.0000028245,0.0000028296,0.0000028369,0.0000028412, -0.0000028410,0.0000028393,0.0000028399,0.0000028441,0.0000028484, -0.0000028478,0.0000028423,0.0000028356,0.0000028311,0.0000028293, -0.0000028287,0.0000028304,0.0000028363,0.0000028421,0.0000028423, -0.0000028389,0.0000028327,0.0000028233,0.0000028153,0.0000028114, -0.0000028094,0.0000028114,0.0000028109,0.0000027988,0.0000027814, -0.0000027875,0.0000028085,0.0000028158,0.0000028118,0.0000028073, -0.0000028039,0.0000028029,0.0000028021,0.0000028003,0.0000027979, -0.0000027958,0.0000027934,0.0000027936,0.0000027951,0.0000027966, -0.0000027977,0.0000027987,0.0000028018,0.0000028053,0.0000028066, -0.0000028057,0.0000028035,0.0000028007,0.0000027977,0.0000027949, -0.0000027933,0.0000027923,0.0000027907,0.0000027881,0.0000027851, -0.0000027823,0.0000027813,0.0000027813,0.0000027817,0.0000027828, -0.0000027869,0.0000027934,0.0000027975,0.0000027962,0.0000027886, -0.0000027793,0.0000027709,0.0000027655,0.0000027633,0.0000027636, -0.0000027632,0.0000027603,0.0000027561,0.0000027507,0.0000027430, -0.0000027338,0.0000027271,0.0000027271,0.0000027356,0.0000027442, -0.0000027493,0.0000027496,0.0000027455,0.0000027405,0.0000027365, -0.0000027333,0.0000027298,0.0000027275,0.0000027324,0.0000027405, -0.0000027409,0.0000027334,0.0000027223,0.0000027175,0.0000027167, -0.0000027144,0.0000027145,0.0000027162,0.0000027145,0.0000027102, -0.0000027088,0.0000027118,0.0000027168,0.0000027209,0.0000027225, -0.0000027223,0.0000027209,0.0000027192,0.0000027177,0.0000027158, -0.0000027132,0.0000027106,0.0000027096,0.0000027097,0.0000027085, -0.0000027039,0.0000026941,0.0000026809,0.0000026734,0.0000026730, -0.0000026754,0.0000026800,0.0000026854,0.0000026898,0.0000026893, -0.0000026826,0.0000026720,0.0000026581,0.0000026467,0.0000026479, -0.0000026628,0.0000026807,0.0000026930,0.0000026954,0.0000026986, -0.0000027130,0.0000027280,0.0000027337,0.0000027278,0.0000027153, -0.0000027080,0.0000026821,0.0000026466,0.0000026184,0.0000026177, -0.0000026458,0.0000026546,0.0000026879,0.0000027499,0.0000027703, -0.0000027695,0.0000027698,0.0000027802,0.0000027975,0.0000028150, -0.0000028212,0.0000028177,0.0000028157,0.0000028162,0.0000028153, -0.0000028141,0.0000028123,0.0000028098,0.0000028072,0.0000028054, -0.0000028051,0.0000028023,0.0000027942,0.0000027842,0.0000027794, -0.0000027787,0.0000027806,0.0000027840,0.0000027880,0.0000027902, -0.0000027918,0.0000027946,0.0000027975,0.0000027991,0.0000028002, -0.0000028014,0.0000027965,0.0000027824,0.0000027713,0.0000027645, -0.0000027586,0.0000027566,0.0000027601,0.0000027748,0.0000027847, -0.0000028033,0.0000028134,0.0000028095,0.0000027970,0.0000027851, -0.0000027834,0.0000027918,0.0000027874,0.0000027700,0.0000027570, -0.0000027571,0.0000027634,0.0000027599,0.0000027503,0.0000027505, -0.0000027542,0.0000027532,0.0000027271,0.0000027088,0.0000027067, -0.0000027007,0.0000026974,0.0000026975,0.0000026910,0.0000026717, -0.0000026551,0.0000026527,0.0000026482,0.0000026349,0.0000026231, -0.0000026175,0.0000026135,0.0000026098,0.0000026061,0.0000026047, -0.0000026049,0.0000026001,0.0000025861,0.0000025732,0.0000025705, -0.0000025717,0.0000025732,0.0000025748,0.0000025750,0.0000025742, -0.0000025736,0.0000025741,0.0000025751,0.0000025782,0.0000025815, -0.0000025836,0.0000025838,0.0000025844,0.0000025872,0.0000025920, -0.0000025979,0.0000026044,0.0000026087,0.0000026076,0.0000026041, -0.0000025995,0.0000025954,0.0000025913,0.0000025879,0.0000025839, -0.0000025769,0.0000025671,0.0000025578,0.0000025524,0.0000025507, -0.0000025504,0.0000025523,0.0000025578,0.0000025649,0.0000025720, -0.0000025810,0.0000025871,0.0000025899,0.0000025836,0.0000025723, -0.0000025525,0.0000025299,0.0000025115,0.0000025017,0.0000025040, -0.0000025100,0.0000025168,0.0000025216,0.0000025253,0.0000025281, -0.0000025298,0.0000025303,0.0000025283,0.0000025225,0.0000025212, -0.0000025277,0.0000025499,0.0000025723,0.0000025838,0.0000025882, -0.0000025922,0.0000025953,0.0000025962,0.0000025990,0.0000026051, -0.0000026112,0.0000026166,0.0000026258,0.0000026366,0.0000026443, -0.0000026553,0.0000026691,0.0000026780,0.0000026851,0.0000026920, -0.0000026946,0.0000026916,0.0000026857,0.0000026783,0.0000026701, -0.0000026665,0.0000026745,0.0000026913,0.0000027041,0.0000027099, -0.0000027117,0.0000027100,0.0000027083,0.0000027104,0.0000027143, -0.0000027221,0.0000027297,0.0000027338,0.0000027363,0.0000027376, -0.0000027391,0.0000027372,0.0000027341,0.0000027340,0.0000027354, -0.0000027437,0.0000027683,0.0000028048,0.0000028329,0.0000028402, -0.0000028383,0.0000028302,0.0000028210,0.0000028299,0.0000028390, -0.0000028434,0.0000028395,0.0000028340,0.0000028255,0.0000028224, -0.0000028277,0.0000028292,0.0000028260,0.0000028248,0.0000028253, -0.0000028348,0.0000028412,0.0000028445,0.0000028443,0.0000028387, -0.0000028289,0.0000028241,0.0000028234,0.0000028235,0.0000028253, -0.0000028301,0.0000028338,0.0000028340,0.0000028336,0.0000028351, -0.0000028413,0.0000028518,0.0000028610,0.0000028680,0.0000028757, -0.0000028848,0.0000028906,0.0000028899,0.0000028813,0.0000028686, -0.0000028605,0.0000028571,0.0000028545,0.0000028536,0.0000028556, -0.0000028629,0.0000028719,0.0000028776,0.0000028802,0.0000028820, -0.0000028830,0.0000028851,0.0000028876,0.0000028897,0.0000028925, -0.0000028961,0.0000028986,0.0000029019,0.0000029047,0.0000029060, -0.0000029058,0.0000029035,0.0000028993,0.0000028932,0.0000028876, -0.0000028851,0.0000028856,0.0000028881,0.0000028912,0.0000028925, -0.0000028916,0.0000028889,0.0000028859,0.0000028841,0.0000028813, -0.0000028774,0.0000028768,0.0000028791,0.0000028794,0.0000028811, -0.0000028928,0.0000029056,0.0000029129,0.0000029209,0.0000029282, -0.0000029274,0.0000029213,0.0000029188,0.0000029226,0.0000029255, -0.0000029240,0.0000029186,0.0000029141,0.0000029145,0.0000029176, -0.0000029196,0.0000029171,0.0000029109,0.0000029043,0.0000028982, -0.0000028932,0.0000028896,0.0000028887,0.0000028893,0.0000028910, -0.0000028919,0.0000028913,0.0000028880,0.0000028809,0.0000028742, -0.0000028717,0.0000028708,0.0000028673,0.0000028616,0.0000028555, -0.0000028502,0.0000028468,0.0000028449,0.0000028446,0.0000028457, -0.0000028480,0.0000028506,0.0000028526,0.0000028516,0.0000028498, -0.0000028477,0.0000028441,0.0000028399,0.0000028355,0.0000028303, -0.0000028235,0.0000028164,0.0000028094,0.0000028047,0.0000028025, -0.0000028019,0.0000028015,0.0000028013,0.0000028034,0.0000028069, -0.0000028097,0.0000028120,0.0000028136,0.0000028159,0.0000028200, -0.0000028263,0.0000028331,0.0000028380,0.0000028395,0.0000028387, -0.0000028373,0.0000028365,0.0000028376,0.0000028409,0.0000028440, -0.0000028450,0.0000028432,0.0000028380,0.0000028347,0.0000028308, -0.0000028262,0.0000028219,0.0000028195,0.0000028196,0.0000028209, -0.0000028243,0.0000028288,0.0000028325,0.0000028351,0.0000028376, -0.0000028384,0.0000028330,0.0000028223,0.0000028115,0.0000028056, -0.0000028058,0.0000028141,0.0000028261,0.0000028304,0.0000028285, -0.0000028087,0.0000027722,0.0000027566,0.0000027623,0.0000027675, -0.0000027673,0.0000027768,0.0000028028,0.0000028267,0.0000028386, -0.0000028401,0.0000028358,0.0000028313,0.0000028292,0.0000028310, -0.0000028343,0.0000028361,0.0000028347,0.0000028312,0.0000028277, -0.0000028273,0.0000028291,0.0000028317,0.0000028348,0.0000028382, -0.0000028417,0.0000028462,0.0000028511,0.0000028529,0.0000028532, -0.0000028510,0.0000028470,0.0000028413,0.0000028320,0.0000028183, -0.0000028018,0.0000027874,0.0000027783,0.0000027737,0.0000027723, -0.0000027693,0.0000027678,0.0000027701,0.0000027820,0.0000028013, -0.0000028246,0.0000028433,0.0000028516,0.0000028514,0.0000028495, -0.0000028500,0.0000028522,0.0000028562,0.0000028625,0.0000028685, -0.0000028712,0.0000028723,0.0000028715,0.0000028683,0.0000028632, -0.0000028580,0.0000028559,0.0000028558,0.0000028563,0.0000028567, -0.0000028549,0.0000028513,0.0000028441,0.0000028389,0.0000028363, -0.0000028297,0.0000028175,0.0000028077,0.0000028098,0.0000028220, -0.0000028242,0.0000028323,0.0000028476,0.0000028600,0.0000028774, -0.0000028895,0.0000028854,0.0000028859,0.0000028995,0.0000029089, -0.0000029086,0.0000029001,0.0000028908,0.0000028840,0.0000028806, -0.0000028781,0.0000028758,0.0000028747,0.0000028718,0.0000028660, -0.0000028611,0.0000028561,0.0000028471,0.0000028359,0.0000028254, -0.0000028144,0.0000028067,0.0000028081,0.0000028199,0.0000028312, -0.0000028351,0.0000028392,0.0000028450,0.0000028496,0.0000028625, -0.0000028786,0.0000028767,0.0000028727,0.0000028858,0.0000029066, -0.0000029141,0.0000029059,0.0000028986,0.0000028904,0.0000028742, -0.0000028577,0.0000028459,0.0000028439,0.0000028534,0.0000028658, -0.0000028714,0.0000028744,0.0000028797,0.0000028868,0.0000028911, -0.0000028935,0.0000028955,0.0000028960,0.0000028953,0.0000028920, -0.0000028858,0.0000028741,0.0000028625,0.0000028623,0.0000028649, -0.0000028560,0.0000028272,0.0000028109,0.0000028111,0.0000028044, -0.0000027973,0.0000027975,0.0000027995,0.0000027945,0.0000027789, -0.0000027664,0.0000027630,0.0000027608,0.0000027541,0.0000027448, -0.0000027381,0.0000027348,0.0000027356,0.0000027382,0.0000027384, -0.0000027370,0.0000027359,0.0000027346,0.0000027296,0.0000027291, -0.0000027378,0.0000027455,0.0000027413,0.0000027345,0.0000027404, -0.0000027593,0.0000027716,0.0000027687,0.0000027593,0.0000027498, -0.0000027417,0.0000027366,0.0000027324,0.0000027312,0.0000027336, -0.0000027367,0.0000027370,0.0000027353,0.0000027362,0.0000027413, -0.0000027453,0.0000027450,0.0000027423,0.0000027413,0.0000027433, -0.0000027473,0.0000027516,0.0000027542,0.0000027540,0.0000027512, -0.0000027474,0.0000027448,0.0000027430,0.0000027429,0.0000027432, -0.0000027424,0.0000027411,0.0000027396,0.0000027378,0.0000027356, -0.0000027338,0.0000027337,0.0000027346,0.0000027350,0.0000027349, -0.0000027334,0.0000027305,0.0000027269,0.0000027239,0.0000027226, -0.0000027227,0.0000027224,0.0000027214,0.0000027200,0.0000027183, -0.0000027168,0.0000027154,0.0000027147,0.0000027163,0.0000027186, -0.0000027210,0.0000027255,0.0000027327,0.0000027389,0.0000027441, -0.0000027484,0.0000027521,0.0000027572,0.0000027656,0.0000027770, -0.0000027914,0.0000028083,0.0000028262,0.0000028434,0.0000028599, -0.0000028744,0.0000028836,0.0000028874,0.0000028886,0.0000028892, -0.0000028910,0.0000028942,0.0000028977,0.0000028995,0.0000028984, -0.0000028951,0.0000028892,0.0000028824,0.0000028786,0.0000028774, -0.0000028777,0.0000028800,0.0000028850,0.0000028916,0.0000028988, -0.0000029042,0.0000029065,0.0000029044,0.0000028946,0.0000028818, -0.0000028734,0.0000028692,0.0000028664,0.0000028655,0.0000028662, -0.0000028661,0.0000028641,0.0000028604,0.0000028563,0.0000028525, -0.0000028450,0.0000028315,0.0000028199,0.0000028145,0.0000028120, -0.0000028062,0.0000027979,0.0000027916,0.0000027911,0.0000027986, -0.0000028164,0.0000028351,0.0000028435,0.0000028404,0.0000028342, -0.0000028301,0.0000028290,0.0000028292,0.0000028308,0.0000028365, -0.0000028425,0.0000028435,0.0000028409,0.0000028391,0.0000028412, -0.0000028455,0.0000028485,0.0000028466,0.0000028430,0.0000028389, -0.0000028354,0.0000028311,0.0000028317,0.0000028387,0.0000028464, -0.0000028480,0.0000028437,0.0000028370,0.0000028284,0.0000028193, -0.0000028138,0.0000028096,0.0000028077,0.0000028097,0.0000028068, -0.0000027941,0.0000027831,0.0000027868,0.0000028020,0.0000028111, -0.0000028102,0.0000028082,0.0000028072,0.0000028062,0.0000028049, -0.0000028022,0.0000028005,0.0000027983,0.0000027964,0.0000027961, -0.0000027960,0.0000027959,0.0000027954,0.0000027962,0.0000027985, -0.0000028003,0.0000028001,0.0000027989,0.0000027978,0.0000027966, -0.0000027951,0.0000027934,0.0000027923,0.0000027918,0.0000027909, -0.0000027898,0.0000027892,0.0000027887,0.0000027876,0.0000027850, -0.0000027830,0.0000027834,0.0000027870,0.0000027934,0.0000027976, -0.0000027961,0.0000027907,0.0000027827,0.0000027742,0.0000027682, -0.0000027665,0.0000027661,0.0000027636,0.0000027597,0.0000027560, -0.0000027531,0.0000027489,0.0000027409,0.0000027307,0.0000027262, -0.0000027309,0.0000027377,0.0000027412,0.0000027416,0.0000027389, -0.0000027347,0.0000027306,0.0000027273,0.0000027232,0.0000027237, -0.0000027307,0.0000027339,0.0000027305,0.0000027201,0.0000027149, -0.0000027141,0.0000027120,0.0000027123,0.0000027134,0.0000027101, -0.0000027061,0.0000027067,0.0000027129,0.0000027214,0.0000027279, -0.0000027307,0.0000027306,0.0000027289,0.0000027264,0.0000027234, -0.0000027201,0.0000027172,0.0000027151,0.0000027129,0.0000027118, -0.0000027114,0.0000027086,0.0000027033,0.0000026937,0.0000026810, -0.0000026731,0.0000026725,0.0000026745,0.0000026777,0.0000026812, -0.0000026834,0.0000026824,0.0000026779,0.0000026683,0.0000026533, -0.0000026395,0.0000026361,0.0000026491,0.0000026707,0.0000026876, -0.0000026933,0.0000026947,0.0000027058,0.0000027218,0.0000027289, -0.0000027226,0.0000027094,0.0000027017,0.0000026746,0.0000026439, -0.0000026182,0.0000026167,0.0000026455,0.0000026533,0.0000026828, -0.0000027447,0.0000027663,0.0000027652,0.0000027634,0.0000027734, -0.0000027892,0.0000028060,0.0000028138,0.0000028108,0.0000028093, -0.0000028110,0.0000028120,0.0000028108,0.0000028092,0.0000028080, -0.0000028078,0.0000028082,0.0000028080,0.0000028056,0.0000027993, -0.0000027892,0.0000027816,0.0000027788,0.0000027785,0.0000027829, -0.0000027893,0.0000027925,0.0000027932,0.0000027940,0.0000027965, -0.0000027980,0.0000027970,0.0000027951,0.0000027901,0.0000027773, -0.0000027674,0.0000027636,0.0000027588,0.0000027544,0.0000027567, -0.0000027716,0.0000027838,0.0000028024,0.0000028112,0.0000028071, -0.0000027938,0.0000027825,0.0000027813,0.0000027906,0.0000027842, -0.0000027655,0.0000027551,0.0000027570,0.0000027627,0.0000027565, -0.0000027500,0.0000027508,0.0000027545,0.0000027500,0.0000027220, -0.0000027090,0.0000027072,0.0000027002,0.0000026981,0.0000026965, -0.0000026849,0.0000026638,0.0000026513,0.0000026511,0.0000026451, -0.0000026297,0.0000026161,0.0000026092,0.0000026052,0.0000026016, -0.0000025976,0.0000025953,0.0000025948,0.0000025902,0.0000025801, -0.0000025709,0.0000025688,0.0000025693,0.0000025706,0.0000025723, -0.0000025732,0.0000025736,0.0000025766,0.0000025820,0.0000025873, -0.0000025911,0.0000025921,0.0000025908,0.0000025881,0.0000025878, -0.0000025917,0.0000025991,0.0000026067,0.0000026106,0.0000026106, -0.0000026042,0.0000025941,0.0000025830,0.0000025746,0.0000025694, -0.0000025666,0.0000025644,0.0000025602,0.0000025537,0.0000025466, -0.0000025414,0.0000025389,0.0000025372,0.0000025353,0.0000025356, -0.0000025394,0.0000025450,0.0000025533,0.0000025626,0.0000025727, -0.0000025772,0.0000025759,0.0000025673,0.0000025521,0.0000025374, -0.0000025241,0.0000025165,0.0000025135,0.0000025139,0.0000025157, -0.0000025154,0.0000025147,0.0000025159,0.0000025203,0.0000025271, -0.0000025310,0.0000025276,0.0000025193,0.0000025162,0.0000025262, -0.0000025552,0.0000025811,0.0000025911,0.0000025956,0.0000025986, -0.0000025998,0.0000026009,0.0000026032,0.0000026084,0.0000026152, -0.0000026221,0.0000026322,0.0000026441,0.0000026528,0.0000026632, -0.0000026748,0.0000026815,0.0000026863,0.0000026903,0.0000026900, -0.0000026854,0.0000026767,0.0000026684,0.0000026656,0.0000026699, -0.0000026829,0.0000026977,0.0000027082,0.0000027125,0.0000027117, -0.0000027095,0.0000027090,0.0000027100,0.0000027146,0.0000027206, -0.0000027236,0.0000027265,0.0000027284,0.0000027291,0.0000027291, -0.0000027303,0.0000027314,0.0000027322,0.0000027369,0.0000027558, -0.0000027902,0.0000028274,0.0000028415,0.0000028391,0.0000028298, -0.0000028198,0.0000028297,0.0000028378,0.0000028434,0.0000028421, -0.0000028382,0.0000028301,0.0000028254,0.0000028309,0.0000028317, -0.0000028269,0.0000028247,0.0000028227,0.0000028338,0.0000028424, -0.0000028429,0.0000028389,0.0000028308,0.0000028244,0.0000028229, -0.0000028239,0.0000028261,0.0000028296,0.0000028333,0.0000028339, -0.0000028335,0.0000028334,0.0000028368,0.0000028462,0.0000028569, -0.0000028676,0.0000028762,0.0000028829,0.0000028854,0.0000028806, -0.0000028700,0.0000028592,0.0000028537,0.0000028519,0.0000028515, -0.0000028527,0.0000028580,0.0000028662,0.0000028714,0.0000028749, -0.0000028779,0.0000028813,0.0000028841,0.0000028867,0.0000028915, -0.0000028971,0.0000029008,0.0000029040,0.0000029049,0.0000029057, -0.0000029088,0.0000029117,0.0000029106,0.0000029047,0.0000028960, -0.0000028872,0.0000028816,0.0000028817,0.0000028859,0.0000028922, -0.0000028967,0.0000028968,0.0000028957,0.0000028937,0.0000028912, -0.0000028888,0.0000028883,0.0000028865,0.0000028802,0.0000028771, -0.0000028780,0.0000028804,0.0000028901,0.0000029034,0.0000029123, -0.0000029189,0.0000029251,0.0000029270,0.0000029218,0.0000029184, -0.0000029228,0.0000029273,0.0000029262,0.0000029216,0.0000029174, -0.0000029158,0.0000029173,0.0000029193,0.0000029199,0.0000029167, -0.0000029097,0.0000029029,0.0000028975,0.0000028937,0.0000028915, -0.0000028914,0.0000028937,0.0000028971,0.0000028981,0.0000028967, -0.0000028910,0.0000028832,0.0000028777,0.0000028750,0.0000028732, -0.0000028692,0.0000028633,0.0000028581,0.0000028551,0.0000028552, -0.0000028560,0.0000028571,0.0000028586,0.0000028608,0.0000028632, -0.0000028654,0.0000028657,0.0000028648,0.0000028630,0.0000028609, -0.0000028580,0.0000028543,0.0000028499,0.0000028435,0.0000028352, -0.0000028269,0.0000028201,0.0000028148,0.0000028103,0.0000028066, -0.0000028040,0.0000028038,0.0000028063,0.0000028088,0.0000028103, -0.0000028113,0.0000028118,0.0000028126,0.0000028155,0.0000028196, -0.0000028237,0.0000028258,0.0000028258,0.0000028243,0.0000028226, -0.0000028219,0.0000028232,0.0000028260,0.0000028288,0.0000028302, -0.0000028306,0.0000028309,0.0000028317,0.0000028303,0.0000028280, -0.0000028252,0.0000028239,0.0000028225,0.0000028208,0.0000028208, -0.0000028211,0.0000028214,0.0000028230,0.0000028284,0.0000028327, -0.0000028283,0.0000028166,0.0000028047,0.0000027984,0.0000027985, -0.0000028068,0.0000028218,0.0000028286,0.0000028274,0.0000028092, -0.0000027716,0.0000027520,0.0000027532,0.0000027606,0.0000027637, -0.0000027784,0.0000028078,0.0000028315,0.0000028405,0.0000028416, -0.0000028382,0.0000028348,0.0000028335,0.0000028354,0.0000028372, -0.0000028363,0.0000028320,0.0000028270,0.0000028247,0.0000028264, -0.0000028299,0.0000028329,0.0000028350,0.0000028376,0.0000028414, -0.0000028474,0.0000028531,0.0000028554,0.0000028549,0.0000028507, -0.0000028454,0.0000028403,0.0000028339,0.0000028252,0.0000028130, -0.0000027999,0.0000027892,0.0000027810,0.0000027745,0.0000027692, -0.0000027671,0.0000027648,0.0000027656,0.0000027755,0.0000027964, -0.0000028200,0.0000028380,0.0000028443,0.0000028432,0.0000028441, -0.0000028463,0.0000028488,0.0000028532,0.0000028602,0.0000028672, -0.0000028734,0.0000028787,0.0000028806,0.0000028780,0.0000028735, -0.0000028701,0.0000028678,0.0000028660,0.0000028641,0.0000028609, -0.0000028549,0.0000028455,0.0000028393,0.0000028360,0.0000028308, -0.0000028196,0.0000028074,0.0000028021,0.0000028139,0.0000028204, -0.0000028229,0.0000028396,0.0000028551,0.0000028690,0.0000028848, -0.0000028859,0.0000028838,0.0000028954,0.0000029083,0.0000029105, -0.0000029049,0.0000028975,0.0000028902,0.0000028845,0.0000028787, -0.0000028719,0.0000028664,0.0000028588,0.0000028501,0.0000028458, -0.0000028449,0.0000028413,0.0000028338,0.0000028258,0.0000028184, -0.0000028116,0.0000028099,0.0000028184,0.0000028294,0.0000028332, -0.0000028384,0.0000028475,0.0000028535,0.0000028601,0.0000028740, -0.0000028828,0.0000028792,0.0000028836,0.0000029017,0.0000029147, -0.0000029107,0.0000029010,0.0000028937,0.0000028779,0.0000028609, -0.0000028487,0.0000028432,0.0000028481,0.0000028613,0.0000028695, -0.0000028713,0.0000028729,0.0000028776,0.0000028819,0.0000028845, -0.0000028881,0.0000028909,0.0000028918,0.0000028898,0.0000028858, -0.0000028785,0.0000028636,0.0000028596,0.0000028611,0.0000028528, -0.0000028245,0.0000028099,0.0000028102,0.0000028030,0.0000027942, -0.0000027927,0.0000027965,0.0000027954,0.0000027849,0.0000027724, -0.0000027673,0.0000027667,0.0000027629,0.0000027530,0.0000027418, -0.0000027336,0.0000027312,0.0000027340,0.0000027372,0.0000027365, -0.0000027350,0.0000027357,0.0000027345,0.0000027302,0.0000027306, -0.0000027392,0.0000027448,0.0000027398,0.0000027338,0.0000027377, -0.0000027537,0.0000027656,0.0000027636,0.0000027537,0.0000027448, -0.0000027396,0.0000027353,0.0000027302,0.0000027275,0.0000027290, -0.0000027316,0.0000027319,0.0000027302,0.0000027305,0.0000027335, -0.0000027353,0.0000027338,0.0000027313,0.0000027305,0.0000027317, -0.0000027335,0.0000027346,0.0000027339,0.0000027314,0.0000027277, -0.0000027247,0.0000027227,0.0000027217,0.0000027225,0.0000027233, -0.0000027232,0.0000027231,0.0000027227,0.0000027214,0.0000027193, -0.0000027168,0.0000027137,0.0000027103,0.0000027071,0.0000027048, -0.0000027033,0.0000027026,0.0000027026,0.0000027038,0.0000027060, -0.0000027072,0.0000027073,0.0000027071,0.0000027074,0.0000027084, -0.0000027101,0.0000027111,0.0000027118,0.0000027118,0.0000027108, -0.0000027102,0.0000027132,0.0000027190,0.0000027255,0.0000027325, -0.0000027390,0.0000027447,0.0000027513,0.0000027599,0.0000027700, -0.0000027810,0.0000027932,0.0000028066,0.0000028219,0.0000028394, -0.0000028572,0.0000028717,0.0000028797,0.0000028815,0.0000028792, -0.0000028754,0.0000028728,0.0000028720,0.0000028733,0.0000028759, -0.0000028786,0.0000028800,0.0000028799,0.0000028805,0.0000028825, -0.0000028851,0.0000028886,0.0000028946,0.0000029021,0.0000029090, -0.0000029131,0.0000029135,0.0000029099,0.0000029015,0.0000028900, -0.0000028806,0.0000028732,0.0000028669,0.0000028640,0.0000028634, -0.0000028638,0.0000028639,0.0000028620,0.0000028590,0.0000028576, -0.0000028555,0.0000028473,0.0000028342,0.0000028222,0.0000028139, -0.0000028060,0.0000027975,0.0000027921,0.0000027920,0.0000027976, -0.0000028090,0.0000028257,0.0000028374,0.0000028383,0.0000028343, -0.0000028299,0.0000028297,0.0000028310,0.0000028328,0.0000028368, -0.0000028427,0.0000028459,0.0000028440,0.0000028404,0.0000028393, -0.0000028407,0.0000028427,0.0000028423,0.0000028402,0.0000028379, -0.0000028349,0.0000028300,0.0000028295,0.0000028374,0.0000028470, -0.0000028498,0.0000028476,0.0000028409,0.0000028330,0.0000028239, -0.0000028165,0.0000028125,0.0000028086,0.0000028076,0.0000028077, -0.0000028028,0.0000027953,0.0000027867,0.0000027847,0.0000027916, -0.0000028008,0.0000028081,0.0000028095,0.0000028106,0.0000028099, -0.0000028074,0.0000028049,0.0000028016,0.0000027979,0.0000027962, -0.0000027958,0.0000027948,0.0000027930,0.0000027907,0.0000027893, -0.0000027877,0.0000027854,0.0000027839,0.0000027834,0.0000027832, -0.0000027828,0.0000027825,0.0000027823,0.0000027828,0.0000027844, -0.0000027869,0.0000027901,0.0000027935,0.0000027944,0.0000027918, -0.0000027872,0.0000027846,0.0000027852,0.0000027886,0.0000027931, -0.0000027946,0.0000027911,0.0000027817,0.0000027708,0.0000027646, -0.0000027637,0.0000027632,0.0000027595,0.0000027548,0.0000027523, -0.0000027508,0.0000027507,0.0000027496,0.0000027460,0.0000027362, -0.0000027264,0.0000027269,0.0000027323,0.0000027348,0.0000027359, -0.0000027342,0.0000027299,0.0000027256,0.0000027207,0.0000027184, -0.0000027215,0.0000027266,0.0000027259,0.0000027178,0.0000027127, -0.0000027119,0.0000027104,0.0000027114,0.0000027120,0.0000027076, -0.0000027036,0.0000027060,0.0000027147,0.0000027259,0.0000027345, -0.0000027378,0.0000027373,0.0000027350,0.0000027328,0.0000027305, -0.0000027273,0.0000027228,0.0000027190,0.0000027168,0.0000027150, -0.0000027139,0.0000027125,0.0000027079,0.0000027015,0.0000026918, -0.0000026807,0.0000026735,0.0000026728,0.0000026738,0.0000026755, -0.0000026775,0.0000026776,0.0000026766,0.0000026735,0.0000026653, -0.0000026504,0.0000026333,0.0000026260,0.0000026348,0.0000026580, -0.0000026802,0.0000026911,0.0000026922,0.0000026988,0.0000027143, -0.0000027221,0.0000027161,0.0000027032,0.0000026951,0.0000026708, -0.0000026450,0.0000026193,0.0000026170,0.0000026440,0.0000026509, -0.0000026737,0.0000027329,0.0000027611,0.0000027603,0.0000027576, -0.0000027652,0.0000027778,0.0000027925,0.0000028025,0.0000028026, -0.0000028018,0.0000028042,0.0000028072,0.0000028075,0.0000028061, -0.0000028052,0.0000028060,0.0000028089,0.0000028112,0.0000028108, -0.0000028063,0.0000027977,0.0000027874,0.0000027798,0.0000027786, -0.0000027828,0.0000027896,0.0000027933,0.0000027944,0.0000027941, -0.0000027946,0.0000027964,0.0000027943,0.0000027889,0.0000027826, -0.0000027721,0.0000027650,0.0000027628,0.0000027586,0.0000027521, -0.0000027540,0.0000027692,0.0000027837,0.0000028019,0.0000028090, -0.0000028047,0.0000027908,0.0000027806,0.0000027807,0.0000027903, -0.0000027807,0.0000027615,0.0000027537,0.0000027572,0.0000027604, -0.0000027538,0.0000027503,0.0000027512,0.0000027546,0.0000027456, -0.0000027182,0.0000027102,0.0000027073,0.0000027001,0.0000026993, -0.0000026943,0.0000026789,0.0000026586,0.0000026495,0.0000026493, -0.0000026428,0.0000026275,0.0000026124,0.0000026031,0.0000025984, -0.0000025953,0.0000025913,0.0000025890,0.0000025877,0.0000025834, -0.0000025752,0.0000025682,0.0000025666,0.0000025667,0.0000025675, -0.0000025696,0.0000025722,0.0000025755,0.0000025814,0.0000025892, -0.0000025949,0.0000025958,0.0000025945,0.0000025917,0.0000025892, -0.0000025901,0.0000025952,0.0000026017,0.0000026068,0.0000026070, -0.0000026012,0.0000025906,0.0000025777,0.0000025649,0.0000025563, -0.0000025533,0.0000025528,0.0000025532,0.0000025526,0.0000025498, -0.0000025457,0.0000025412,0.0000025387,0.0000025375,0.0000025352, -0.0000025353,0.0000025366,0.0000025381,0.0000025409,0.0000025427, -0.0000025477,0.0000025518,0.0000025546,0.0000025548,0.0000025503, -0.0000025435,0.0000025378,0.0000025359,0.0000025333,0.0000025292, -0.0000025232,0.0000025170,0.0000025123,0.0000025083,0.0000025077, -0.0000025105,0.0000025167,0.0000025237,0.0000025262,0.0000025230, -0.0000025179,0.0000025191,0.0000025366,0.0000025710,0.0000025932, -0.0000026002,0.0000026034,0.0000026038,0.0000026041,0.0000026038, -0.0000026056,0.0000026118,0.0000026201,0.0000026281,0.0000026387, -0.0000026496,0.0000026568,0.0000026663,0.0000026773,0.0000026825, -0.0000026850,0.0000026868,0.0000026846,0.0000026773,0.0000026698, -0.0000026669,0.0000026677,0.0000026747,0.0000026875,0.0000027028, -0.0000027122,0.0000027131,0.0000027109,0.0000027090,0.0000027077, -0.0000027092,0.0000027142,0.0000027180,0.0000027193,0.0000027189, -0.0000027183,0.0000027211,0.0000027240,0.0000027270,0.0000027303, -0.0000027340,0.0000027479,0.0000027808,0.0000028221,0.0000028418, -0.0000028394,0.0000028293,0.0000028188,0.0000028288,0.0000028359, -0.0000028426,0.0000028440,0.0000028425,0.0000028340,0.0000028277, -0.0000028323,0.0000028317,0.0000028271,0.0000028242,0.0000028205, -0.0000028337,0.0000028434,0.0000028410,0.0000028323,0.0000028244, -0.0000028209,0.0000028218,0.0000028255,0.0000028278,0.0000028304, -0.0000028312,0.0000028298,0.0000028291,0.0000028316,0.0000028397, -0.0000028535,0.0000028668,0.0000028757,0.0000028792,0.0000028783, -0.0000028699,0.0000028594,0.0000028537,0.0000028511,0.0000028497, -0.0000028510,0.0000028563,0.0000028635,0.0000028679,0.0000028698, -0.0000028722,0.0000028762,0.0000028800,0.0000028826,0.0000028856, -0.0000028920,0.0000028996,0.0000029048,0.0000029072,0.0000029097, -0.0000029114,0.0000029141,0.0000029151,0.0000029134,0.0000029044, -0.0000028920,0.0000028816,0.0000028776,0.0000028803,0.0000028871, -0.0000028946,0.0000028982,0.0000028973,0.0000028953,0.0000028946, -0.0000028941,0.0000028916,0.0000028892,0.0000028889,0.0000028865, -0.0000028783,0.0000028748,0.0000028782,0.0000028863,0.0000029002, -0.0000029123,0.0000029200,0.0000029250,0.0000029256,0.0000029215, -0.0000029168,0.0000029199,0.0000029268,0.0000029276,0.0000029235, -0.0000029196,0.0000029176,0.0000029174,0.0000029181,0.0000029188, -0.0000029184,0.0000029157,0.0000029103,0.0000029055,0.0000029019, -0.0000028991,0.0000028970,0.0000028968,0.0000028995,0.0000029029, -0.0000029034,0.0000029006,0.0000028946,0.0000028883,0.0000028837, -0.0000028799,0.0000028768,0.0000028729,0.0000028686,0.0000028661, -0.0000028662,0.0000028684,0.0000028707,0.0000028720,0.0000028719, -0.0000028723,0.0000028732,0.0000028746,0.0000028745,0.0000028737, -0.0000028715,0.0000028691,0.0000028676,0.0000028656,0.0000028624, -0.0000028580,0.0000028520,0.0000028456,0.0000028391,0.0000028319, -0.0000028247,0.0000028185,0.0000028130,0.0000028094,0.0000028091, -0.0000028111,0.0000028137,0.0000028162,0.0000028173,0.0000028171, -0.0000028173,0.0000028180,0.0000028201,0.0000028224,0.0000028230, -0.0000028221,0.0000028195,0.0000028165,0.0000028148,0.0000028146, -0.0000028154,0.0000028153,0.0000028141,0.0000028145,0.0000028177, -0.0000028211,0.0000028238,0.0000028249,0.0000028268,0.0000028279, -0.0000028262,0.0000028233,0.0000028203,0.0000028169,0.0000028138, -0.0000028146,0.0000028201,0.0000028250,0.0000028229,0.0000028129, -0.0000028003,0.0000027935,0.0000027928,0.0000028003,0.0000028165, -0.0000028259,0.0000028243,0.0000028100,0.0000027747,0.0000027460, -0.0000027434,0.0000027531,0.0000027602,0.0000027758,0.0000028036, -0.0000028277,0.0000028398,0.0000028407,0.0000028396,0.0000028375, -0.0000028369,0.0000028376,0.0000028373,0.0000028326,0.0000028258, -0.0000028218,0.0000028220,0.0000028265,0.0000028319,0.0000028354, -0.0000028374,0.0000028395,0.0000028429,0.0000028483,0.0000028540, -0.0000028554,0.0000028540,0.0000028487,0.0000028425,0.0000028369, -0.0000028310,0.0000028245,0.0000028177,0.0000028105,0.0000028041, -0.0000027960,0.0000027866,0.0000027767,0.0000027696,0.0000027646, -0.0000027631,0.0000027637,0.0000027750,0.0000027948,0.0000028175, -0.0000028333,0.0000028390,0.0000028427,0.0000028453,0.0000028477, -0.0000028501,0.0000028554,0.0000028629,0.0000028724,0.0000028815, -0.0000028884,0.0000028901,0.0000028884,0.0000028861,0.0000028836, -0.0000028795,0.0000028745,0.0000028691,0.0000028614,0.0000028504, -0.0000028418,0.0000028355,0.0000028303,0.0000028208,0.0000028086, -0.0000028000,0.0000028060,0.0000028170,0.0000028172,0.0000028298, -0.0000028492,0.0000028638,0.0000028774,0.0000028843,0.0000028817, -0.0000028897,0.0000029049,0.0000029105,0.0000029078,0.0000029021, -0.0000028954,0.0000028878,0.0000028788,0.0000028665,0.0000028537, -0.0000028404,0.0000028297,0.0000028270,0.0000028292,0.0000028298, -0.0000028271,0.0000028244,0.0000028234,0.0000028203,0.0000028175, -0.0000028212,0.0000028304,0.0000028337,0.0000028377,0.0000028479, -0.0000028574,0.0000028626,0.0000028695,0.0000028810,0.0000028864, -0.0000028862,0.0000028959,0.0000029123,0.0000029157,0.0000029051, -0.0000028966,0.0000028840,0.0000028659,0.0000028524,0.0000028446, -0.0000028442,0.0000028534,0.0000028645,0.0000028693,0.0000028700, -0.0000028721,0.0000028753,0.0000028776,0.0000028809,0.0000028844, -0.0000028859,0.0000028856,0.0000028840,0.0000028810,0.0000028654, -0.0000028568,0.0000028573,0.0000028494,0.0000028216,0.0000028087, -0.0000028090,0.0000028014,0.0000027902,0.0000027859,0.0000027897, -0.0000027921,0.0000027875,0.0000027783,0.0000027706,0.0000027685, -0.0000027670,0.0000027618,0.0000027507,0.0000027375,0.0000027290, -0.0000027281,0.0000027329,0.0000027353,0.0000027345,0.0000027352, -0.0000027368,0.0000027350,0.0000027311,0.0000027327,0.0000027404, -0.0000027443,0.0000027400,0.0000027338,0.0000027356,0.0000027479, -0.0000027593,0.0000027595,0.0000027495,0.0000027402,0.0000027361, -0.0000027335,0.0000027287,0.0000027248,0.0000027247,0.0000027262, -0.0000027267,0.0000027254,0.0000027244,0.0000027250,0.0000027262, -0.0000027257,0.0000027241,0.0000027230,0.0000027221,0.0000027211, -0.0000027195,0.0000027170,0.0000027137,0.0000027102,0.0000027074, -0.0000027054,0.0000027047,0.0000027049,0.0000027051,0.0000027048, -0.0000027032,0.0000027005,0.0000026968,0.0000026921,0.0000026868, -0.0000026823,0.0000026794,0.0000026786,0.0000026793,0.0000026807, -0.0000026819,0.0000026840,0.0000026869,0.0000026893,0.0000026909, -0.0000026924,0.0000026945,0.0000026973,0.0000027000,0.0000027012, -0.0000027015,0.0000027012,0.0000027000,0.0000026991,0.0000027003, -0.0000027040,0.0000027102,0.0000027189,0.0000027278,0.0000027346, -0.0000027404,0.0000027476,0.0000027565,0.0000027664,0.0000027769, -0.0000027865,0.0000027954,0.0000028051,0.0000028167,0.0000028300, -0.0000028431,0.0000028538,0.0000028610,0.0000028643,0.0000028633, -0.0000028597,0.0000028545,0.0000028513,0.0000028521,0.0000028570, -0.0000028645,0.0000028735,0.0000028819,0.0000028903,0.0000028966, -0.0000029010,0.0000029058,0.0000029104,0.0000029127,0.0000029136, -0.0000029123,0.0000029083,0.0000029014,0.0000028926,0.0000028841, -0.0000028755,0.0000028684,0.0000028651,0.0000028641,0.0000028649, -0.0000028667,0.0000028668,0.0000028649,0.0000028638,0.0000028636, -0.0000028603,0.0000028522,0.0000028405,0.0000028265,0.0000028124, -0.0000028002,0.0000027939,0.0000027942,0.0000027999,0.0000028093, -0.0000028219,0.0000028330,0.0000028363,0.0000028329,0.0000028261, -0.0000028247,0.0000028279,0.0000028321,0.0000028372,0.0000028430, -0.0000028477,0.0000028476,0.0000028434,0.0000028398,0.0000028379, -0.0000028371,0.0000028360,0.0000028335,0.0000028314,0.0000028291, -0.0000028256,0.0000028246,0.0000028311,0.0000028411,0.0000028475, -0.0000028472,0.0000028416,0.0000028343,0.0000028271,0.0000028188, -0.0000028145,0.0000028121,0.0000028091,0.0000028067,0.0000028045, -0.0000028025,0.0000028000,0.0000027947,0.0000027888,0.0000027863, -0.0000027889,0.0000027941,0.0000028004,0.0000028061,0.0000028086, -0.0000028070,0.0000028041,0.0000027998,0.0000027956,0.0000027915, -0.0000027886,0.0000027852,0.0000027813,0.0000027774,0.0000027726, -0.0000027679,0.0000027658,0.0000027660,0.0000027673,0.0000027689, -0.0000027703,0.0000027718,0.0000027735,0.0000027753,0.0000027773, -0.0000027807,0.0000027871,0.0000027946,0.0000027972,0.0000027946, -0.0000027888,0.0000027866,0.0000027873,0.0000027887,0.0000027886, -0.0000027847,0.0000027758,0.0000027675,0.0000027647,0.0000027644, -0.0000027619,0.0000027568,0.0000027536,0.0000027532,0.0000027552, -0.0000027558,0.0000027535,0.0000027508,0.0000027487,0.0000027388, -0.0000027247,0.0000027237,0.0000027280,0.0000027308,0.0000027325, -0.0000027307,0.0000027262,0.0000027204,0.0000027152,0.0000027153, -0.0000027200,0.0000027214,0.0000027147,0.0000027102,0.0000027099, -0.0000027090,0.0000027111,0.0000027121,0.0000027075,0.0000027033, -0.0000027051,0.0000027145,0.0000027280,0.0000027388,0.0000027424, -0.0000027411,0.0000027374,0.0000027342,0.0000027329,0.0000027324, -0.0000027300,0.0000027252,0.0000027211,0.0000027182,0.0000027162, -0.0000027154,0.0000027129,0.0000027070,0.0000026989,0.0000026900, -0.0000026806,0.0000026744,0.0000026725,0.0000026723,0.0000026726, -0.0000026735,0.0000026737,0.0000026725,0.0000026697,0.0000026627, -0.0000026481,0.0000026299,0.0000026202,0.0000026234,0.0000026430, -0.0000026703,0.0000026885,0.0000026908,0.0000026933,0.0000027056, -0.0000027141,0.0000027094,0.0000026968,0.0000026885,0.0000026710, -0.0000026487,0.0000026224,0.0000026178,0.0000026406,0.0000026490, -0.0000026627,0.0000027130,0.0000027527,0.0000027549,0.0000027527, -0.0000027554,0.0000027642,0.0000027769,0.0000027874,0.0000027934, -0.0000027964,0.0000027976,0.0000028008,0.0000028036,0.0000028044, -0.0000028041,0.0000028045,0.0000028083,0.0000028128,0.0000028150, -0.0000028136,0.0000028084,0.0000027977,0.0000027860,0.0000027803, -0.0000027833,0.0000027895,0.0000027926,0.0000027935,0.0000027947, -0.0000027939,0.0000027938,0.0000027907,0.0000027834,0.0000027761, -0.0000027681,0.0000027640,0.0000027617,0.0000027572,0.0000027493, -0.0000027525,0.0000027675,0.0000027840,0.0000028016,0.0000028070, -0.0000028024,0.0000027881,0.0000027795,0.0000027812,0.0000027903, -0.0000027772,0.0000027585,0.0000027538,0.0000027574,0.0000027578, -0.0000027526,0.0000027504,0.0000027517,0.0000027537,0.0000027400, -0.0000027153,0.0000027111,0.0000027078,0.0000027010,0.0000026996, -0.0000026910,0.0000026742,0.0000026558,0.0000026479,0.0000026474, -0.0000026418,0.0000026287,0.0000026136,0.0000026016,0.0000025944, -0.0000025908,0.0000025867,0.0000025844,0.0000025832,0.0000025800, -0.0000025730,0.0000025655,0.0000025630,0.0000025632,0.0000025646, -0.0000025668,0.0000025704,0.0000025756,0.0000025830,0.0000025907, -0.0000025950,0.0000025948,0.0000025921,0.0000025888,0.0000025877, -0.0000025904,0.0000025956,0.0000025993,0.0000025998,0.0000025975, -0.0000025912,0.0000025814,0.0000025710,0.0000025606,0.0000025533, -0.0000025503,0.0000025497,0.0000025492,0.0000025473,0.0000025444, -0.0000025404,0.0000025358,0.0000025336,0.0000025331,0.0000025313, -0.0000025317,0.0000025353,0.0000025384,0.0000025407,0.0000025418, -0.0000025413,0.0000025395,0.0000025382,0.0000025367,0.0000025344, -0.0000025326,0.0000025327,0.0000025352,0.0000025390,0.0000025415, -0.0000025389,0.0000025325,0.0000025218,0.0000025107,0.0000025052, -0.0000025054,0.0000025061,0.0000025070,0.0000025113,0.0000025184, -0.0000025241,0.0000025252,0.0000025239,0.0000025314,0.0000025530, -0.0000025864,0.0000026027,0.0000026062,0.0000026069,0.0000026052, -0.0000026042,0.0000026048,0.0000026076,0.0000026155,0.0000026249, -0.0000026319,0.0000026405,0.0000026503,0.0000026588,0.0000026704, -0.0000026809,0.0000026835,0.0000026829,0.0000026815,0.0000026780, -0.0000026724,0.0000026677,0.0000026657,0.0000026689,0.0000026783, -0.0000026938,0.0000027073,0.0000027125,0.0000027124,0.0000027092, -0.0000027054,0.0000027050,0.0000027101,0.0000027158,0.0000027164, -0.0000027149,0.0000027152,0.0000027166,0.0000027176,0.0000027206, -0.0000027248,0.0000027312,0.0000027463,0.0000027750,0.0000028170, -0.0000028414,0.0000028394,0.0000028288,0.0000028178,0.0000028275, -0.0000028338,0.0000028402,0.0000028453,0.0000028457,0.0000028368, -0.0000028291,0.0000028320,0.0000028310,0.0000028271,0.0000028228, -0.0000028184,0.0000028317,0.0000028429,0.0000028384,0.0000028271, -0.0000028207,0.0000028191,0.0000028226,0.0000028258,0.0000028269, -0.0000028268,0.0000028262,0.0000028253,0.0000028276,0.0000028355, -0.0000028488,0.0000028624,0.0000028703,0.0000028710,0.0000028664, -0.0000028587,0.0000028526,0.0000028516,0.0000028516,0.0000028522, -0.0000028557,0.0000028614,0.0000028664,0.0000028684,0.0000028701, -0.0000028725,0.0000028755,0.0000028773,0.0000028797,0.0000028834, -0.0000028905,0.0000028985,0.0000029052,0.0000029106,0.0000029146, -0.0000029185,0.0000029208,0.0000029191,0.0000029121,0.0000029001, -0.0000028867,0.0000028806,0.0000028787,0.0000028816,0.0000028881, -0.0000028920,0.0000028940,0.0000028932,0.0000028909,0.0000028908, -0.0000028933,0.0000028937,0.0000028910,0.0000028886,0.0000028884, -0.0000028826,0.0000028739,0.0000028739,0.0000028824,0.0000028947, -0.0000029091,0.0000029205,0.0000029275,0.0000029281,0.0000029238, -0.0000029165,0.0000029158,0.0000029219,0.0000029261,0.0000029243, -0.0000029208,0.0000029182,0.0000029184,0.0000029190,0.0000029190, -0.0000029191,0.0000029182,0.0000029162,0.0000029134,0.0000029114, -0.0000029092,0.0000029062,0.0000029027,0.0000029016,0.0000029027, -0.0000029054,0.0000029060,0.0000029043,0.0000029008,0.0000028970, -0.0000028930,0.0000028890,0.0000028854,0.0000028821,0.0000028787, -0.0000028775,0.0000028774,0.0000028784,0.0000028792,0.0000028791, -0.0000028772,0.0000028754,0.0000028744,0.0000028750,0.0000028742, -0.0000028728,0.0000028707,0.0000028681,0.0000028661,0.0000028651, -0.0000028630,0.0000028591,0.0000028553,0.0000028522,0.0000028496, -0.0000028450,0.0000028377,0.0000028303,0.0000028243,0.0000028199, -0.0000028165,0.0000028147,0.0000028146,0.0000028162,0.0000028193, -0.0000028219,0.0000028223,0.0000028223,0.0000028218,0.0000028216, -0.0000028219,0.0000028219,0.0000028205,0.0000028180,0.0000028162, -0.0000028156,0.0000028161,0.0000028161,0.0000028135,0.0000028096, -0.0000028101,0.0000028097,0.0000028108,0.0000028127,0.0000028165, -0.0000028227,0.0000028274,0.0000028272,0.0000028254,0.0000028211, -0.0000028157,0.0000028119,0.0000028120,0.0000028149,0.0000028185, -0.0000028185,0.0000028108,0.0000027989,0.0000027911,0.0000027895, -0.0000027949,0.0000028097,0.0000028207,0.0000028219,0.0000028117, -0.0000027824,0.0000027480,0.0000027385,0.0000027449,0.0000027549, -0.0000027693,0.0000027916,0.0000028150,0.0000028305,0.0000028366, -0.0000028379,0.0000028372,0.0000028372,0.0000028367,0.0000028329, -0.0000028251,0.0000028181,0.0000028164,0.0000028185,0.0000028251, -0.0000028325,0.0000028374,0.0000028414,0.0000028439,0.0000028461, -0.0000028491,0.0000028531,0.0000028536,0.0000028514,0.0000028461, -0.0000028395,0.0000028331,0.0000028267,0.0000028210,0.0000028161, -0.0000028130,0.0000028124,0.0000028099,0.0000028045,0.0000027937, -0.0000027813,0.0000027712,0.0000027657,0.0000027632,0.0000027672, -0.0000027780,0.0000027950,0.0000028159,0.0000028339,0.0000028436, -0.0000028491,0.0000028508,0.0000028527,0.0000028563,0.0000028615, -0.0000028698,0.0000028795,0.0000028882,0.0000028928,0.0000028944, -0.0000028952,0.0000028938,0.0000028888,0.0000028805,0.0000028726, -0.0000028633,0.0000028533,0.0000028436,0.0000028350,0.0000028289, -0.0000028209,0.0000028102,0.0000028006,0.0000028009,0.0000028124, -0.0000028153,0.0000028204,0.0000028417,0.0000028604,0.0000028705, -0.0000028797,0.0000028790,0.0000028834,0.0000028989,0.0000029077, -0.0000029078,0.0000029038,0.0000028977,0.0000028885,0.0000028751, -0.0000028569,0.0000028386,0.0000028222,0.0000028114,0.0000028093, -0.0000028117,0.0000028135,0.0000028149,0.0000028198,0.0000028275, -0.0000028304,0.0000028289,0.0000028295,0.0000028364,0.0000028395, -0.0000028400,0.0000028479,0.0000028596,0.0000028672,0.0000028711, -0.0000028760,0.0000028857,0.0000028918,0.0000028948,0.0000029060, -0.0000029168,0.0000029124,0.0000029008,0.0000028903,0.0000028743, -0.0000028581,0.0000028480,0.0000028439,0.0000028459,0.0000028544, -0.0000028622,0.0000028656,0.0000028682,0.0000028716,0.0000028739, -0.0000028760,0.0000028778,0.0000028784,0.0000028799,0.0000028815, -0.0000028815,0.0000028667,0.0000028541,0.0000028534,0.0000028457, -0.0000028185,0.0000028074,0.0000028083,0.0000027998,0.0000027859, -0.0000027791,0.0000027802,0.0000027840,0.0000027853,0.0000027817, -0.0000027751,0.0000027693,0.0000027670,0.0000027655,0.0000027595, -0.0000027478,0.0000027331,0.0000027243,0.0000027243,0.0000027309, -0.0000027342,0.0000027346,0.0000027364,0.0000027377,0.0000027353, -0.0000027328,0.0000027347,0.0000027407,0.0000027437,0.0000027405, -0.0000027338,0.0000027339,0.0000027413,0.0000027517,0.0000027534, -0.0000027478,0.0000027379,0.0000027320,0.0000027293,0.0000027253, -0.0000027213,0.0000027204,0.0000027211,0.0000027216,0.0000027209, -0.0000027193,0.0000027183,0.0000027184,0.0000027186,0.0000027181, -0.0000027170,0.0000027151,0.0000027123,0.0000027089,0.0000027052, -0.0000027015,0.0000026979,0.0000026949,0.0000026927,0.0000026909, -0.0000026897,0.0000026886,0.0000026862,0.0000026817,0.0000026755, -0.0000026685,0.0000026626,0.0000026589,0.0000026579,0.0000026588, -0.0000026612,0.0000026631,0.0000026642,0.0000026659,0.0000026686, -0.0000026711,0.0000026735,0.0000026760,0.0000026790,0.0000026826, -0.0000026862,0.0000026873,0.0000026859,0.0000026844,0.0000026847, -0.0000026876,0.0000026921,0.0000026968,0.0000027015,0.0000027086, -0.0000027181,0.0000027263,0.0000027313,0.0000027362,0.0000027433, -0.0000027522,0.0000027624,0.0000027725,0.0000027803,0.0000027867, -0.0000027930,0.0000027989,0.0000028050,0.0000028112,0.0000028179, -0.0000028253,0.0000028329,0.0000028392,0.0000028435,0.0000028442, -0.0000028426,0.0000028419,0.0000028437,0.0000028507,0.0000028633, -0.0000028786,0.0000028926,0.0000029018,0.0000029081,0.0000029118, -0.0000029136,0.0000029127,0.0000029109,0.0000029085,0.0000029051, -0.0000029003,0.0000028935,0.0000028854,0.0000028766,0.0000028705, -0.0000028683,0.0000028678,0.0000028689,0.0000028715,0.0000028732, -0.0000028726,0.0000028713,0.0000028712,0.0000028693,0.0000028650, -0.0000028584,0.0000028464,0.0000028283,0.0000028099,0.0000027987, -0.0000027969,0.0000028012,0.0000028109,0.0000028226,0.0000028333, -0.0000028380,0.0000028342,0.0000028251,0.0000028199,0.0000028220, -0.0000028279,0.0000028356,0.0000028424,0.0000028476,0.0000028485, -0.0000028468,0.0000028429,0.0000028390,0.0000028360,0.0000028321, -0.0000028280,0.0000028253,0.0000028233,0.0000028216,0.0000028214, -0.0000028259,0.0000028343,0.0000028414,0.0000028424,0.0000028383, -0.0000028322,0.0000028270,0.0000028201,0.0000028150,0.0000028140, -0.0000028127,0.0000028088,0.0000028050,0.0000028041,0.0000028053, -0.0000028063,0.0000028037,0.0000027985,0.0000027938,0.0000027908, -0.0000027896,0.0000027901,0.0000027904,0.0000027892,0.0000027867, -0.0000027819,0.0000027754,0.0000027694,0.0000027640,0.0000027609, -0.0000027583,0.0000027551,0.0000027509,0.0000027464,0.0000027440, -0.0000027443,0.0000027466,0.0000027505,0.0000027548,0.0000027602, -0.0000027656,0.0000027698,0.0000027724,0.0000027739,0.0000027766, -0.0000027839,0.0000027936,0.0000027992,0.0000027962,0.0000027901, -0.0000027879,0.0000027877,0.0000027861,0.0000027814,0.0000027743, -0.0000027685,0.0000027661,0.0000027635,0.0000027586,0.0000027544, -0.0000027539,0.0000027568,0.0000027611,0.0000027630,0.0000027622, -0.0000027588,0.0000027535,0.0000027492,0.0000027377,0.0000027223, -0.0000027214,0.0000027255,0.0000027291,0.0000027306,0.0000027279, -0.0000027222,0.0000027146,0.0000027116,0.0000027151,0.0000027172, -0.0000027118,0.0000027071,0.0000027077,0.0000027078,0.0000027103, -0.0000027123,0.0000027085,0.0000027042,0.0000027049,0.0000027122, -0.0000027260,0.0000027386,0.0000027433,0.0000027427,0.0000027385, -0.0000027335,0.0000027312,0.0000027319,0.0000027331,0.0000027316, -0.0000027273,0.0000027228,0.0000027187,0.0000027167,0.0000027159, -0.0000027130,0.0000027058,0.0000026963,0.0000026884,0.0000026808, -0.0000026747,0.0000026718,0.0000026703,0.0000026691,0.0000026694, -0.0000026703,0.0000026695,0.0000026664,0.0000026604,0.0000026480, -0.0000026298,0.0000026157,0.0000026129,0.0000026265,0.0000026574, -0.0000026839,0.0000026907,0.0000026903,0.0000026965,0.0000027052, -0.0000027030,0.0000026900,0.0000026831,0.0000026744,0.0000026540, -0.0000026273,0.0000026131,0.0000026327,0.0000026479,0.0000026529, -0.0000026863,0.0000027338,0.0000027505,0.0000027494,0.0000027477, -0.0000027511,0.0000027586,0.0000027688,0.0000027822,0.0000027906, -0.0000027928,0.0000027955,0.0000027994,0.0000028033,0.0000028054, -0.0000028060,0.0000028090,0.0000028128,0.0000028161,0.0000028190, -0.0000028183,0.0000028105,0.0000027982,0.0000027875,0.0000027851, -0.0000027893,0.0000027920,0.0000027916,0.0000027928,0.0000027931, -0.0000027909,0.0000027859,0.0000027781,0.0000027711,0.0000027659, -0.0000027624,0.0000027598,0.0000027540,0.0000027464,0.0000027524, -0.0000027661,0.0000027846,0.0000028011,0.0000028049,0.0000028004, -0.0000027858,0.0000027791,0.0000027823,0.0000027903,0.0000027741, -0.0000027579,0.0000027552,0.0000027568,0.0000027554,0.0000027524, -0.0000027500,0.0000027519,0.0000027510,0.0000027344,0.0000027140, -0.0000027125,0.0000027087,0.0000027022,0.0000026990,0.0000026877, -0.0000026713,0.0000026555,0.0000026472,0.0000026448,0.0000026404, -0.0000026310,0.0000026188,0.0000026063,0.0000025958,0.0000025893, -0.0000025838,0.0000025797,0.0000025792,0.0000025775,0.0000025731, -0.0000025659,0.0000025606,0.0000025599,0.0000025618,0.0000025644, -0.0000025690,0.0000025751,0.0000025823,0.0000025886,0.0000025909, -0.0000025899,0.0000025865,0.0000025842,0.0000025851,0.0000025894, -0.0000025939,0.0000025954,0.0000025947,0.0000025933,0.0000025897, -0.0000025835,0.0000025747,0.0000025656,0.0000025582,0.0000025538, -0.0000025521,0.0000025510,0.0000025486,0.0000025446,0.0000025392, -0.0000025332,0.0000025294,0.0000025266,0.0000025240,0.0000025223, -0.0000025248,0.0000025294,0.0000025331,0.0000025367,0.0000025372, -0.0000025358,0.0000025332,0.0000025296,0.0000025247,0.0000025212, -0.0000025211,0.0000025246,0.0000025311,0.0000025361,0.0000025386, -0.0000025379,0.0000025342,0.0000025260,0.0000025159,0.0000025082, -0.0000025046,0.0000025037,0.0000025028,0.0000025023,0.0000025094, -0.0000025217,0.0000025302,0.0000025334,0.0000025329,0.0000025421, -0.0000025701,0.0000025979,0.0000026081,0.0000026083,0.0000026065, -0.0000026052,0.0000026048,0.0000026058,0.0000026100,0.0000026185, -0.0000026267,0.0000026322,0.0000026411,0.0000026528,0.0000026623, -0.0000026726,0.0000026812,0.0000026820,0.0000026792,0.0000026756, -0.0000026720,0.0000026681,0.0000026653,0.0000026655,0.0000026721, -0.0000026847,0.0000026986,0.0000027083,0.0000027111,0.0000027089, -0.0000027042,0.0000027018,0.0000027053,0.0000027119,0.0000027146, -0.0000027173,0.0000027180,0.0000027167,0.0000027168,0.0000027159, -0.0000027177,0.0000027287,0.0000027473,0.0000027719,0.0000028122, -0.0000028400,0.0000028392,0.0000028281,0.0000028166,0.0000028267, -0.0000028324,0.0000028365,0.0000028442,0.0000028471,0.0000028388, -0.0000028296,0.0000028305,0.0000028290,0.0000028274,0.0000028203, -0.0000028152,0.0000028281,0.0000028412,0.0000028356,0.0000028243, -0.0000028194,0.0000028208,0.0000028232,0.0000028237,0.0000028246, -0.0000028253,0.0000028267,0.0000028283,0.0000028342,0.0000028432, -0.0000028537,0.0000028587,0.0000028565,0.0000028517,0.0000028484, -0.0000028491,0.0000028505,0.0000028536,0.0000028580,0.0000028633, -0.0000028671,0.0000028692,0.0000028714,0.0000028747,0.0000028756, -0.0000028758,0.0000028771,0.0000028800,0.0000028842,0.0000028906, -0.0000028997,0.0000029077,0.0000029147,0.0000029222,0.0000029260, -0.0000029255,0.0000029186,0.0000029067,0.0000028933,0.0000028820, -0.0000028788,0.0000028816,0.0000028856,0.0000028878,0.0000028891, -0.0000028875,0.0000028854,0.0000028838,0.0000028840,0.0000028867, -0.0000028905,0.0000028911,0.0000028889,0.0000028868,0.0000028853, -0.0000028768,0.0000028714,0.0000028771,0.0000028883,0.0000029031, -0.0000029176,0.0000029281,0.0000029313,0.0000029281,0.0000029203, -0.0000029153,0.0000029166,0.0000029220,0.0000029238,0.0000029208, -0.0000029175,0.0000029164,0.0000029185,0.0000029202,0.0000029210, -0.0000029211,0.0000029195,0.0000029179,0.0000029173,0.0000029173, -0.0000029152,0.0000029120,0.0000029080,0.0000029056,0.0000029052, -0.0000029066,0.0000029077,0.0000029078,0.0000029070,0.0000029051, -0.0000029020,0.0000028986,0.0000028953,0.0000028921,0.0000028880, -0.0000028847,0.0000028823,0.0000028803,0.0000028782,0.0000028759, -0.0000028718,0.0000028670,0.0000028635,0.0000028633,0.0000028629, -0.0000028618,0.0000028602,0.0000028577,0.0000028554,0.0000028546, -0.0000028531,0.0000028501,0.0000028477,0.0000028471,0.0000028476, -0.0000028476,0.0000028458,0.0000028406,0.0000028339,0.0000028286, -0.0000028252,0.0000028221,0.0000028187,0.0000028164,0.0000028178, -0.0000028212,0.0000028230,0.0000028229,0.0000028226,0.0000028215, -0.0000028205,0.0000028205,0.0000028204,0.0000028195,0.0000028185, -0.0000028186,0.0000028203,0.0000028223,0.0000028228,0.0000028203, -0.0000028180,0.0000028157,0.0000028126,0.0000028079,0.0000028059, -0.0000028083,0.0000028161,0.0000028235,0.0000028262,0.0000028256, -0.0000028224,0.0000028175,0.0000028144,0.0000028138,0.0000028147, -0.0000028157,0.0000028153,0.0000028093,0.0000027990,0.0000027911, -0.0000027891,0.0000027913,0.0000028020,0.0000028148,0.0000028197, -0.0000028137,0.0000027930,0.0000027590,0.0000027381,0.0000027371, -0.0000027468,0.0000027596,0.0000027758,0.0000027954,0.0000028112, -0.0000028226,0.0000028285,0.0000028314,0.0000028330,0.0000028318, -0.0000028269,0.0000028183,0.0000028118,0.0000028108,0.0000028140, -0.0000028218,0.0000028306,0.0000028381,0.0000028440,0.0000028476, -0.0000028491,0.0000028496,0.0000028504,0.0000028497,0.0000028473, -0.0000028431,0.0000028365,0.0000028295,0.0000028228,0.0000028173, -0.0000028135,0.0000028121,0.0000028127,0.0000028138,0.0000028149, -0.0000028104,0.0000028007,0.0000027875,0.0000027756,0.0000027677, -0.0000027688,0.0000027719,0.0000027791,0.0000027959,0.0000028206, -0.0000028421,0.0000028531,0.0000028571,0.0000028581,0.0000028597, -0.0000028627,0.0000028678,0.0000028743,0.0000028817,0.0000028878, -0.0000028923,0.0000028952,0.0000028947,0.0000028892,0.0000028788, -0.0000028688,0.0000028589,0.0000028501,0.0000028416,0.0000028340, -0.0000028275,0.0000028203,0.0000028114,0.0000028033,0.0000027994, -0.0000028066,0.0000028148,0.0000028136,0.0000028326,0.0000028557, -0.0000028666,0.0000028739,0.0000028753,0.0000028770,0.0000028914, -0.0000029024,0.0000029049,0.0000029026,0.0000028953,0.0000028829, -0.0000028638,0.0000028425,0.0000028244,0.0000028091,0.0000027990, -0.0000027961,0.0000027970,0.0000027978,0.0000028009,0.0000028125, -0.0000028282,0.0000028375,0.0000028389,0.0000028386,0.0000028446, -0.0000028492,0.0000028478,0.0000028503,0.0000028608,0.0000028694, -0.0000028748,0.0000028767,0.0000028810,0.0000028907,0.0000028980, -0.0000029027,0.0000029118,0.0000029163,0.0000029094,0.0000028975, -0.0000028843,0.0000028683,0.0000028542,0.0000028465,0.0000028441, -0.0000028460,0.0000028504,0.0000028542,0.0000028579,0.0000028622, -0.0000028654,0.0000028675,0.0000028692,0.0000028698,0.0000028735, -0.0000028788,0.0000028811,0.0000028667,0.0000028509,0.0000028492, -0.0000028418,0.0000028152,0.0000028067,0.0000028079,0.0000027984, -0.0000027824,0.0000027733,0.0000027713,0.0000027720,0.0000027758, -0.0000027794,0.0000027773,0.0000027707,0.0000027657,0.0000027641, -0.0000027625,0.0000027568,0.0000027450,0.0000027287,0.0000027198, -0.0000027219,0.0000027303,0.0000027347,0.0000027355,0.0000027369, -0.0000027372,0.0000027356,0.0000027344,0.0000027355,0.0000027390, -0.0000027414,0.0000027390,0.0000027326,0.0000027292,0.0000027333, -0.0000027427,0.0000027494,0.0000027488,0.0000027398,0.0000027302, -0.0000027239,0.0000027197,0.0000027161,0.0000027152,0.0000027161, -0.0000027173,0.0000027172,0.0000027159,0.0000027140,0.0000027127, -0.0000027122,0.0000027126,0.0000027124,0.0000027110,0.0000027080, -0.0000027038,0.0000026996,0.0000026955,0.0000026913,0.0000026880, -0.0000026858,0.0000026841,0.0000026823,0.0000026795,0.0000026755, -0.0000026701,0.0000026627,0.0000026549,0.0000026488,0.0000026459, -0.0000026458,0.0000026475,0.0000026495,0.0000026508,0.0000026525, -0.0000026549,0.0000026567,0.0000026577,0.0000026589,0.0000026613, -0.0000026650,0.0000026696,0.0000026729,0.0000026730,0.0000026704, -0.0000026691,0.0000026721,0.0000026792,0.0000026872,0.0000026942, -0.0000027009,0.0000027092,0.0000027180,0.0000027237,0.0000027274, -0.0000027329,0.0000027402,0.0000027487,0.0000027581,0.0000027660, -0.0000027715,0.0000027758,0.0000027793,0.0000027816,0.0000027840, -0.0000027863,0.0000027895,0.0000027937,0.0000027992,0.0000028074, -0.0000028190,0.0000028308,0.0000028391,0.0000028414,0.0000028420, -0.0000028441,0.0000028521,0.0000028661,0.0000028826,0.0000028970, -0.0000029059,0.0000029115,0.0000029137,0.0000029127,0.0000029100, -0.0000029071,0.0000029048,0.0000029022,0.0000028971,0.0000028890, -0.0000028811,0.0000028767,0.0000028747,0.0000028735,0.0000028735, -0.0000028758,0.0000028783,0.0000028783,0.0000028772,0.0000028774, -0.0000028759,0.0000028719,0.0000028687,0.0000028630,0.0000028489, -0.0000028291,0.0000028115,0.0000028023,0.0000028027,0.0000028108, -0.0000028235,0.0000028359,0.0000028423,0.0000028393,0.0000028292, -0.0000028207,0.0000028203,0.0000028240,0.0000028317,0.0000028392, -0.0000028443,0.0000028466,0.0000028471,0.0000028456,0.0000028430, -0.0000028388,0.0000028332,0.0000028271,0.0000028223,0.0000028193, -0.0000028188,0.0000028200,0.0000028230,0.0000028295,0.0000028369, -0.0000028397,0.0000028366,0.0000028296,0.0000028239,0.0000028185, -0.0000028136,0.0000028129,0.0000028141,0.0000028135,0.0000028099, -0.0000028064,0.0000028071,0.0000028099,0.0000028106,0.0000028088, -0.0000028062,0.0000028039,0.0000028027,0.0000028025,0.0000028020, -0.0000027998,0.0000027966,0.0000027926,0.0000027869,0.0000027805, -0.0000027758,0.0000027724,0.0000027714,0.0000027698,0.0000027671, -0.0000027637,0.0000027612,0.0000027611,0.0000027618,0.0000027614, -0.0000027586,0.0000027549,0.0000027534,0.0000027586,0.0000027653, -0.0000027705,0.0000027719,0.0000027742,0.0000027816,0.0000027936, -0.0000028001,0.0000027970,0.0000027905,0.0000027866,0.0000027845, -0.0000027812,0.0000027754,0.0000027702,0.0000027668,0.0000027621, -0.0000027567,0.0000027542,0.0000027554,0.0000027604,0.0000027641, -0.0000027635,0.0000027620,0.0000027631,0.0000027615,0.0000027554, -0.0000027483,0.0000027335,0.0000027199,0.0000027205,0.0000027251, -0.0000027288,0.0000027290,0.0000027249,0.0000027163,0.0000027093, -0.0000027114,0.0000027151,0.0000027096,0.0000027040,0.0000027053, -0.0000027064,0.0000027088,0.0000027117,0.0000027087,0.0000027049, -0.0000027048,0.0000027089,0.0000027206,0.0000027342,0.0000027412, -0.0000027419,0.0000027386,0.0000027326,0.0000027279,0.0000027278, -0.0000027313,0.0000027336,0.0000027327,0.0000027294,0.0000027239, -0.0000027188,0.0000027167,0.0000027155,0.0000027125,0.0000027040, -0.0000026944,0.0000026872,0.0000026805,0.0000026742,0.0000026703, -0.0000026675,0.0000026651,0.0000026656,0.0000026672,0.0000026668, -0.0000026642,0.0000026583,0.0000026478,0.0000026304,0.0000026131, -0.0000026060,0.0000026124,0.0000026413,0.0000026760,0.0000026904, -0.0000026873,0.0000026881,0.0000026956,0.0000026960,0.0000026847, -0.0000026801,0.0000026796,0.0000026608,0.0000026339,0.0000026129, -0.0000026220,0.0000026443,0.0000026472,0.0000026614,0.0000027011, -0.0000027365,0.0000027459,0.0000027427,0.0000027410,0.0000027417, -0.0000027494,0.0000027637,0.0000027767,0.0000027857,0.0000027912, -0.0000027959,0.0000028008,0.0000028058,0.0000028090,0.0000028122, -0.0000028141,0.0000028162,0.0000028211,0.0000028242,0.0000028209, -0.0000028122,0.0000028001,0.0000027919,0.0000027905,0.0000027917, -0.0000027910,0.0000027884,0.0000027886,0.0000027869,0.0000027808, -0.0000027728,0.0000027668,0.0000027633,0.0000027597,0.0000027570, -0.0000027499,0.0000027447,0.0000027532,0.0000027659,0.0000027854, -0.0000028006,0.0000028027,0.0000027982,0.0000027839,0.0000027791, -0.0000027838,0.0000027903,0.0000027718,0.0000027591,0.0000027567, -0.0000027557,0.0000027540,0.0000027522,0.0000027494,0.0000027514, -0.0000027474,0.0000027299,0.0000027137,0.0000027136,0.0000027095, -0.0000027027,0.0000026977,0.0000026841,0.0000026685,0.0000026556, -0.0000026472,0.0000026425,0.0000026377,0.0000026314,0.0000026239, -0.0000026149,0.0000026048,0.0000025952,0.0000025858,0.0000025778, -0.0000025751,0.0000025751,0.0000025735,0.0000025685,0.0000025621, -0.0000025589,0.0000025599,0.0000025633,0.0000025692,0.0000025763, -0.0000025831,0.0000025876,0.0000025885,0.0000025861,0.0000025824, -0.0000025813,0.0000025842,0.0000025893,0.0000025936,0.0000025949, -0.0000025942,0.0000025938,0.0000025922,0.0000025883,0.0000025811, -0.0000025733,0.0000025675,0.0000025642,0.0000025627,0.0000025617, -0.0000025596,0.0000025547,0.0000025477,0.0000025402,0.0000025341, -0.0000025296,0.0000025257,0.0000025217,0.0000025192,0.0000025184, -0.0000025205,0.0000025218,0.0000025221,0.0000025240,0.0000025267, -0.0000025275,0.0000025248,0.0000025196,0.0000025144,0.0000025121, -0.0000025173,0.0000025242,0.0000025299,0.0000025320,0.0000025301, -0.0000025266,0.0000025248,0.0000025209,0.0000025155,0.0000025072, -0.0000025017,0.0000025001,0.0000025016,0.0000025058,0.0000025168, -0.0000025317,0.0000025395,0.0000025418,0.0000025417,0.0000025542, -0.0000025858,0.0000026046,0.0000026072,0.0000026075,0.0000026068, -0.0000026056,0.0000026050,0.0000026062,0.0000026104,0.0000026184, -0.0000026270,0.0000026336,0.0000026415,0.0000026519,0.0000026604, -0.0000026695,0.0000026782,0.0000026777,0.0000026739,0.0000026698, -0.0000026668,0.0000026650,0.0000026649,0.0000026691,0.0000026780, -0.0000026894,0.0000027000,0.0000027060,0.0000027060,0.0000027037, -0.0000027009,0.0000027012,0.0000027058,0.0000027128,0.0000027185, -0.0000027206,0.0000027188,0.0000027171,0.0000027134,0.0000027129, -0.0000027266,0.0000027487,0.0000027698,0.0000028074,0.0000028385, -0.0000028390,0.0000028276,0.0000028157,0.0000028257,0.0000028320, -0.0000028331,0.0000028416,0.0000028471,0.0000028398,0.0000028287, -0.0000028286,0.0000028271,0.0000028262,0.0000028170,0.0000028111, -0.0000028232,0.0000028372,0.0000028329,0.0000028243,0.0000028218, -0.0000028237,0.0000028249,0.0000028249,0.0000028271,0.0000028303, -0.0000028326,0.0000028335,0.0000028368,0.0000028401,0.0000028407, -0.0000028396,0.0000028385,0.0000028420,0.0000028466,0.0000028519, -0.0000028572,0.0000028636,0.0000028696,0.0000028737,0.0000028768, -0.0000028795,0.0000028820,0.0000028843,0.0000028838,0.0000028844, -0.0000028876,0.0000028932,0.0000028995,0.0000029066,0.0000029151, -0.0000029223,0.0000029259,0.0000029283,0.0000029240,0.0000029141, -0.0000029002,0.0000028859,0.0000028799,0.0000028791,0.0000028840, -0.0000028889,0.0000028893,0.0000028879,0.0000028856,0.0000028824, -0.0000028808,0.0000028822,0.0000028843,0.0000028865,0.0000028871, -0.0000028868,0.0000028849,0.0000028833,0.0000028802,0.0000028721, -0.0000028721,0.0000028816,0.0000028946,0.0000029114,0.0000029253, -0.0000029328,0.0000029313,0.0000029249,0.0000029180,0.0000029155, -0.0000029176,0.0000029207,0.0000029203,0.0000029175,0.0000029140, -0.0000029132,0.0000029159,0.0000029188,0.0000029214,0.0000029227, -0.0000029219,0.0000029212,0.0000029211,0.0000029217,0.0000029200, -0.0000029171,0.0000029140,0.0000029111,0.0000029099,0.0000029099, -0.0000029103,0.0000029107,0.0000029100,0.0000029084,0.0000029058, -0.0000029027,0.0000028990,0.0000028948,0.0000028891,0.0000028832, -0.0000028773,0.0000028710,0.0000028648,0.0000028589,0.0000028528, -0.0000028468,0.0000028425,0.0000028423,0.0000028436,0.0000028445, -0.0000028442,0.0000028420,0.0000028399,0.0000028396,0.0000028390, -0.0000028370,0.0000028356,0.0000028365,0.0000028391,0.0000028419, -0.0000028439,0.0000028440,0.0000028420,0.0000028369,0.0000028315, -0.0000028271,0.0000028231,0.0000028196,0.0000028189,0.0000028205, -0.0000028222,0.0000028217,0.0000028199,0.0000028188,0.0000028176, -0.0000028175,0.0000028188,0.0000028199,0.0000028203,0.0000028211, -0.0000028230,0.0000028255,0.0000028278,0.0000028284,0.0000028287, -0.0000028288,0.0000028266,0.0000028207,0.0000028121,0.0000028062, -0.0000028073,0.0000028128,0.0000028193,0.0000028234,0.0000028245, -0.0000028225,0.0000028198,0.0000028186,0.0000028177,0.0000028161, -0.0000028148,0.0000028127,0.0000028080,0.0000028012,0.0000027946, -0.0000027910,0.0000027911,0.0000027957,0.0000028078,0.0000028156, -0.0000028126,0.0000028035,0.0000027768,0.0000027475,0.0000027344, -0.0000027373,0.0000027475,0.0000027597,0.0000027744,0.0000027874, -0.0000027998,0.0000028089,0.0000028160,0.0000028220,0.0000028247, -0.0000028220,0.0000028144,0.0000028079,0.0000028064,0.0000028096, -0.0000028170,0.0000028260,0.0000028345,0.0000028422,0.0000028478, -0.0000028500,0.0000028488,0.0000028466,0.0000028438,0.0000028412, -0.0000028385,0.0000028331,0.0000028264,0.0000028200,0.0000028156, -0.0000028128,0.0000028108,0.0000028090,0.0000028098,0.0000028136, -0.0000028155,0.0000028168,0.0000028084,0.0000027937,0.0000027787, -0.0000027728,0.0000027726,0.0000027732,0.0000027811,0.0000028018, -0.0000028289,0.0000028506,0.0000028595,0.0000028619,0.0000028626, -0.0000028646,0.0000028677,0.0000028704,0.0000028738,0.0000028791, -0.0000028853,0.0000028891,0.0000028886,0.0000028824,0.0000028709, -0.0000028595,0.0000028485,0.0000028402,0.0000028333,0.0000028294, -0.0000028257,0.0000028193,0.0000028122,0.0000028063,0.0000028006, -0.0000028021,0.0000028134,0.0000028106,0.0000028223,0.0000028490, -0.0000028650,0.0000028701,0.0000028714,0.0000028703,0.0000028817, -0.0000028946,0.0000028980,0.0000028955,0.0000028847,0.0000028687, -0.0000028479,0.0000028282,0.0000028144,0.0000028024,0.0000027935, -0.0000027903,0.0000027890,0.0000027875,0.0000027900,0.0000028047, -0.0000028244,0.0000028387,0.0000028446,0.0000028444,0.0000028496, -0.0000028566,0.0000028568,0.0000028563,0.0000028625,0.0000028702, -0.0000028762,0.0000028806,0.0000028821,0.0000028863,0.0000028956, -0.0000029027,0.0000029076,0.0000029134,0.0000029151,0.0000029076, -0.0000028953,0.0000028815,0.0000028661,0.0000028530,0.0000028461, -0.0000028439,0.0000028440,0.0000028443,0.0000028454,0.0000028480, -0.0000028506,0.0000028535,0.0000028575,0.0000028610,0.0000028677, -0.0000028767,0.0000028807,0.0000028652,0.0000028471,0.0000028452, -0.0000028384,0.0000028126,0.0000028065,0.0000028076,0.0000027969, -0.0000027805,0.0000027705,0.0000027658,0.0000027629,0.0000027637, -0.0000027693,0.0000027736,0.0000027707,0.0000027655,0.0000027613, -0.0000027603,0.0000027590,0.0000027543,0.0000027432,0.0000027271, -0.0000027190,0.0000027211,0.0000027301,0.0000027350,0.0000027346, -0.0000027342,0.0000027342,0.0000027347,0.0000027346,0.0000027347, -0.0000027361,0.0000027377,0.0000027365,0.0000027297,0.0000027239, -0.0000027245,0.0000027328,0.0000027430,0.0000027478,0.0000027447, -0.0000027344,0.0000027230,0.0000027159,0.0000027119,0.0000027111, -0.0000027118,0.0000027128,0.0000027129,0.0000027118,0.0000027103, -0.0000027090,0.0000027083,0.0000027086,0.0000027090,0.0000027087, -0.0000027068,0.0000027033,0.0000026985,0.0000026936,0.0000026891, -0.0000026858,0.0000026838,0.0000026832,0.0000026824,0.0000026805, -0.0000026773,0.0000026726,0.0000026669,0.0000026614,0.0000026563, -0.0000026520,0.0000026494,0.0000026495,0.0000026502,0.0000026512, -0.0000026525,0.0000026533,0.0000026531,0.0000026523,0.0000026513, -0.0000026507,0.0000026514,0.0000026537,0.0000026568,0.0000026581, -0.0000026575,0.0000026579,0.0000026618,0.0000026689,0.0000026787, -0.0000026884,0.0000026971,0.0000027066,0.0000027147,0.0000027198, -0.0000027248,0.0000027311,0.0000027380,0.0000027453,0.0000027524, -0.0000027583,0.0000027624,0.0000027649,0.0000027660,0.0000027666, -0.0000027679,0.0000027695,0.0000027719,0.0000027753,0.0000027795, -0.0000027856,0.0000027960,0.0000028115,0.0000028279,0.0000028386, -0.0000028420,0.0000028427,0.0000028446,0.0000028520,0.0000028661, -0.0000028828,0.0000028971,0.0000029075,0.0000029134,0.0000029149, -0.0000029134,0.0000029113,0.0000029095,0.0000029081,0.0000029040, -0.0000028971,0.0000028911,0.0000028875,0.0000028842,0.0000028805, -0.0000028787,0.0000028798,0.0000028813,0.0000028804,0.0000028792, -0.0000028801,0.0000028796,0.0000028758,0.0000028733,0.0000028716, -0.0000028645,0.0000028506,0.0000028330,0.0000028172,0.0000028105, -0.0000028136,0.0000028248,0.0000028395,0.0000028476,0.0000028459, -0.0000028370,0.0000028273,0.0000028222,0.0000028231,0.0000028282, -0.0000028346,0.0000028393,0.0000028418,0.0000028432,0.0000028434, -0.0000028428,0.0000028398,0.0000028345,0.0000028275,0.0000028214, -0.0000028180,0.0000028176,0.0000028189,0.0000028206,0.0000028249, -0.0000028322,0.0000028378,0.0000028374,0.0000028307,0.0000028231, -0.0000028169,0.0000028120,0.0000028102,0.0000028121,0.0000028153, -0.0000028157,0.0000028142,0.0000028125,0.0000028121,0.0000028121, -0.0000028111,0.0000028095,0.0000028086,0.0000028087,0.0000028096, -0.0000028100,0.0000028088,0.0000028064,0.0000028030,0.0000027980, -0.0000027919,0.0000027856,0.0000027802,0.0000027759,0.0000027724, -0.0000027689,0.0000027657,0.0000027641,0.0000027653,0.0000027697, -0.0000027747,0.0000027787,0.0000027806,0.0000027748,0.0000027644, -0.0000027583,0.0000027615,0.0000027687,0.0000027715,0.0000027731, -0.0000027808,0.0000027929,0.0000027996,0.0000027966,0.0000027889, -0.0000027830,0.0000027793,0.0000027750,0.0000027711,0.0000027675, -0.0000027625,0.0000027581,0.0000027566,0.0000027586,0.0000027628, -0.0000027633,0.0000027579,0.0000027543,0.0000027581,0.0000027634, -0.0000027624,0.0000027559,0.0000027455,0.0000027282,0.0000027191, -0.0000027211,0.0000027258,0.0000027283,0.0000027271,0.0000027194, -0.0000027099,0.0000027095,0.0000027137,0.0000027086,0.0000027013, -0.0000027026,0.0000027044,0.0000027067,0.0000027099,0.0000027078, -0.0000027042,0.0000027039,0.0000027061,0.0000027145,0.0000027274, -0.0000027366,0.0000027391,0.0000027375,0.0000027320,0.0000027246, -0.0000027218,0.0000027251,0.0000027308,0.0000027339,0.0000027332, -0.0000027311,0.0000027245,0.0000027192,0.0000027165,0.0000027150, -0.0000027110,0.0000027021,0.0000026929,0.0000026861,0.0000026793, -0.0000026725,0.0000026680,0.0000026643,0.0000026619,0.0000026622, -0.0000026638,0.0000026638,0.0000026625,0.0000026578,0.0000026483, -0.0000026310,0.0000026104,0.0000025993,0.0000026001,0.0000026237, -0.0000026643,0.0000026884,0.0000026859,0.0000026811,0.0000026856, -0.0000026867,0.0000026808,0.0000026786,0.0000026835,0.0000026677, -0.0000026415,0.0000026147,0.0000026143,0.0000026360,0.0000026433, -0.0000026457,0.0000026644,0.0000027021,0.0000027304,0.0000027380, -0.0000027362,0.0000027339,0.0000027373,0.0000027449,0.0000027550, -0.0000027678,0.0000027811,0.0000027909,0.0000027965,0.0000028024, -0.0000028092,0.0000028148,0.0000028171,0.0000028178,0.0000028210, -0.0000028249,0.0000028260,0.0000028220,0.0000028129,0.0000028031, -0.0000027956,0.0000027917,0.0000027910,0.0000027847,0.0000027795, -0.0000027788,0.0000027748,0.0000027676,0.0000027624,0.0000027591, -0.0000027565,0.0000027532,0.0000027452,0.0000027448,0.0000027539, -0.0000027670,0.0000027859,0.0000027996,0.0000028005,0.0000027957, -0.0000027825,0.0000027793,0.0000027854,0.0000027897,0.0000027704, -0.0000027612,0.0000027574,0.0000027548,0.0000027542,0.0000027527, -0.0000027497,0.0000027506,0.0000027433,0.0000027266,0.0000027134, -0.0000027139,0.0000027095,0.0000027020,0.0000026955,0.0000026800, -0.0000026641,0.0000026534,0.0000026461,0.0000026407,0.0000026354, -0.0000026302,0.0000026258,0.0000026219,0.0000026162,0.0000026075, -0.0000025971,0.0000025851,0.0000025760,0.0000025737,0.0000025735, -0.0000025709,0.0000025658,0.0000025610,0.0000025604,0.0000025638, -0.0000025718,0.0000025804,0.0000025874,0.0000025907,0.0000025897, -0.0000025857,0.0000025813,0.0000025806,0.0000025843,0.0000025899, -0.0000025942,0.0000025956,0.0000025950,0.0000025941,0.0000025932, -0.0000025905,0.0000025848,0.0000025784,0.0000025745,0.0000025729, -0.0000025724,0.0000025718,0.0000025704,0.0000025660,0.0000025597, -0.0000025533,0.0000025478,0.0000025441,0.0000025406,0.0000025357, -0.0000025295,0.0000025237,0.0000025186,0.0000025145,0.0000025070, -0.0000025051,0.0000025084,0.0000025140,0.0000025177,0.0000025182, -0.0000025159,0.0000025125,0.0000025099,0.0000025088,0.0000025121, -0.0000025184,0.0000025235,0.0000025241,0.0000025199,0.0000025184, -0.0000025216,0.0000025210,0.0000025129,0.0000025021,0.0000024998, -0.0000025046,0.0000025092,0.0000025165,0.0000025288,0.0000025427, -0.0000025471,0.0000025441,0.0000025452,0.0000025698,0.0000025970, -0.0000026055,0.0000026069,0.0000026074,0.0000026063,0.0000026041, -0.0000026029,0.0000026039,0.0000026091,0.0000026180,0.0000026262, -0.0000026315,0.0000026374,0.0000026454,0.0000026531,0.0000026622, -0.0000026713,0.0000026719,0.0000026682,0.0000026643,0.0000026636, -0.0000026649,0.0000026690,0.0000026751,0.0000026826,0.0000026902, -0.0000026964,0.0000027007,0.0000027019,0.0000027005,0.0000026986, -0.0000027026,0.0000027110,0.0000027179,0.0000027218,0.0000027200, -0.0000027158,0.0000027111,0.0000027117,0.0000027248,0.0000027499, -0.0000027682,0.0000028027,0.0000028378,0.0000028383,0.0000028269, -0.0000028151,0.0000028238,0.0000028320,0.0000028315,0.0000028394, -0.0000028460,0.0000028394,0.0000028284,0.0000028255,0.0000028259, -0.0000028240,0.0000028131,0.0000028062,0.0000028173,0.0000028303, -0.0000028286,0.0000028246,0.0000028259,0.0000028281,0.0000028294, -0.0000028294,0.0000028306,0.0000028322,0.0000028310,0.0000028270, -0.0000028241,0.0000028228,0.0000028246,0.0000028300,0.0000028367, -0.0000028453,0.0000028533,0.0000028602,0.0000028651,0.0000028709, -0.0000028789,0.0000028857,0.0000028902,0.0000028928,0.0000028951, -0.0000028984,0.0000029007,0.0000029037,0.0000029086,0.0000029145, -0.0000029190,0.0000029222,0.0000029249,0.0000029252,0.0000029227, -0.0000029161,0.0000029056,0.0000028944,0.0000028850,0.0000028794, -0.0000028800,0.0000028846,0.0000028892,0.0000028907,0.0000028898, -0.0000028894,0.0000028888,0.0000028885,0.0000028902,0.0000028937, -0.0000028937,0.0000028895,0.0000028836,0.0000028808,0.0000028791, -0.0000028780,0.0000028744,0.0000028698,0.0000028744,0.0000028855, -0.0000029017,0.0000029191,0.0000029313,0.0000029338,0.0000029285, -0.0000029209,0.0000029167,0.0000029159,0.0000029180,0.0000029197, -0.0000029183,0.0000029145,0.0000029104,0.0000029086,0.0000029098, -0.0000029126,0.0000029165,0.0000029198,0.0000029210,0.0000029222, -0.0000029221,0.0000029227,0.0000029217,0.0000029196,0.0000029175, -0.0000029156,0.0000029142,0.0000029131,0.0000029120,0.0000029110, -0.0000029091,0.0000029059,0.0000029021,0.0000028983,0.0000028933, -0.0000028873,0.0000028799,0.0000028709,0.0000028620,0.0000028530, -0.0000028450,0.0000028378,0.0000028314,0.0000028262,0.0000028234, -0.0000028241,0.0000028275,0.0000028307,0.0000028318,0.0000028299, -0.0000028270,0.0000028259,0.0000028251,0.0000028237,0.0000028231, -0.0000028248,0.0000028290,0.0000028342,0.0000028380,0.0000028404, -0.0000028416,0.0000028407,0.0000028373,0.0000028317,0.0000028253, -0.0000028206,0.0000028193,0.0000028205,0.0000028222,0.0000028222, -0.0000028200,0.0000028173,0.0000028155,0.0000028150,0.0000028168, -0.0000028202,0.0000028230,0.0000028256,0.0000028283,0.0000028301, -0.0000028309,0.0000028306,0.0000028304,0.0000028326,0.0000028340, -0.0000028325,0.0000028262,0.0000028168,0.0000028108,0.0000028101, -0.0000028130,0.0000028179,0.0000028218,0.0000028223,0.0000028209, -0.0000028209,0.0000028212,0.0000028203,0.0000028180,0.0000028145, -0.0000028105,0.0000028066,0.0000028040,0.0000028003,0.0000027960, -0.0000027924,0.0000027927,0.0000027993,0.0000028079,0.0000028124, -0.0000028099,0.0000027959,0.0000027682,0.0000027428,0.0000027342, -0.0000027353,0.0000027438,0.0000027554,0.0000027662,0.0000027763, -0.0000027845,0.0000027934,0.0000028040,0.0000028121,0.0000028147, -0.0000028105,0.0000028058,0.0000028040,0.0000028060,0.0000028113, -0.0000028186,0.0000028267,0.0000028354,0.0000028432,0.0000028469, -0.0000028455,0.0000028414,0.0000028367,0.0000028329,0.0000028307, -0.0000028277,0.0000028230,0.0000028184,0.0000028155,0.0000028134, -0.0000028101,0.0000028064,0.0000028041,0.0000028067,0.0000028134, -0.0000028206,0.0000028199,0.0000028124,0.0000027961,0.0000027820, -0.0000027755,0.0000027736,0.0000027748,0.0000027870,0.0000028085, -0.0000028337,0.0000028534,0.0000028617,0.0000028635,0.0000028659, -0.0000028683,0.0000028688,0.0000028688,0.0000028721,0.0000028778, -0.0000028817,0.0000028807,0.0000028743,0.0000028631,0.0000028510, -0.0000028390,0.0000028304,0.0000028233,0.0000028216,0.0000028213, -0.0000028181,0.0000028131,0.0000028087,0.0000028032,0.0000028004, -0.0000028107,0.0000028102,0.0000028134,0.0000028412,0.0000028630, -0.0000028692,0.0000028696,0.0000028645,0.0000028705,0.0000028831, -0.0000028862,0.0000028819,0.0000028688,0.0000028530,0.0000028361, -0.0000028211,0.0000028120,0.0000028024,0.0000027943,0.0000027909, -0.0000027879,0.0000027841,0.0000027849,0.0000027979,0.0000028165, -0.0000028345,0.0000028455,0.0000028472,0.0000028507,0.0000028587, -0.0000028622,0.0000028619,0.0000028648,0.0000028703,0.0000028760, -0.0000028817,0.0000028861,0.0000028876,0.0000028908,0.0000028989, -0.0000029061,0.0000029097,0.0000029129,0.0000029133,0.0000029073, -0.0000028958,0.0000028823,0.0000028662,0.0000028531,0.0000028453, -0.0000028435,0.0000028425,0.0000028410,0.0000028403,0.0000028400, -0.0000028411,0.0000028458,0.0000028525,0.0000028633,0.0000028755, -0.0000028797,0.0000028623,0.0000028430,0.0000028416,0.0000028354, -0.0000028106,0.0000028066,0.0000028068,0.0000027950,0.0000027800, -0.0000027703,0.0000027643,0.0000027599,0.0000027579,0.0000027590, -0.0000027634,0.0000027654,0.0000027637,0.0000027604,0.0000027576, -0.0000027566,0.0000027553,0.0000027517,0.0000027443,0.0000027319, -0.0000027218,0.0000027217,0.0000027291,0.0000027331,0.0000027314, -0.0000027284,0.0000027286,0.0000027308,0.0000027329,0.0000027331, -0.0000027336,0.0000027342,0.0000027325,0.0000027263,0.0000027194, -0.0000027179,0.0000027228,0.0000027335,0.0000027430,0.0000027456, -0.0000027423,0.0000027326,0.0000027211,0.0000027129,0.0000027103, -0.0000027102,0.0000027103,0.0000027095,0.0000027073,0.0000027052, -0.0000027047,0.0000027058,0.0000027071,0.0000027077,0.0000027075, -0.0000027061,0.0000027036,0.0000026998,0.0000026943,0.0000026887, -0.0000026847,0.0000026827,0.0000026829,0.0000026839,0.0000026842, -0.0000026832,0.0000026812,0.0000026789,0.0000026766,0.0000026737, -0.0000026695,0.0000026640,0.0000026599,0.0000026584,0.0000026583, -0.0000026584,0.0000026580,0.0000026564,0.0000026536,0.0000026504, -0.0000026466,0.0000026427,0.0000026404,0.0000026411,0.0000026432, -0.0000026453,0.0000026477,0.0000026511,0.0000026580,0.0000026680, -0.0000026781,0.0000026888,0.0000026996,0.0000027082,0.0000027148, -0.0000027210,0.0000027272,0.0000027335,0.0000027396,0.0000027457, -0.0000027511,0.0000027549,0.0000027567,0.0000027567,0.0000027565, -0.0000027565,0.0000027568,0.0000027590,0.0000027647,0.0000027716, -0.0000027773,0.0000027837,0.0000027947,0.0000028110,0.0000028280, -0.0000028388,0.0000028424,0.0000028433,0.0000028458,0.0000028546, -0.0000028705,0.0000028887,0.0000029042,0.0000029140,0.0000029186, -0.0000029192,0.0000029180,0.0000029164,0.0000029149,0.0000029118, -0.0000029068,0.0000029023,0.0000028980,0.0000028925,0.0000028870, -0.0000028841,0.0000028837,0.0000028833,0.0000028806,0.0000028790, -0.0000028803,0.0000028804,0.0000028783,0.0000028758,0.0000028747, -0.0000028711,0.0000028640,0.0000028531,0.0000028385,0.0000028269, -0.0000028246,0.0000028313,0.0000028448,0.0000028532,0.0000028524, -0.0000028455,0.0000028361,0.0000028278,0.0000028248,0.0000028266, -0.0000028313,0.0000028356,0.0000028378,0.0000028388,0.0000028392, -0.0000028389,0.0000028371,0.0000028322,0.0000028252,0.0000028197, -0.0000028174,0.0000028180,0.0000028188,0.0000028194,0.0000028214, -0.0000028271,0.0000028340,0.0000028371,0.0000028335,0.0000028253, -0.0000028173,0.0000028120,0.0000028086,0.0000028083,0.0000028131, -0.0000028184,0.0000028217,0.0000028218,0.0000028196,0.0000028164, -0.0000028124,0.0000028097,0.0000028088,0.0000028087,0.0000028094, -0.0000028100,0.0000028094,0.0000028069,0.0000028033,0.0000027987, -0.0000027924,0.0000027849,0.0000027779,0.0000027722,0.0000027673, -0.0000027626,0.0000027588,0.0000027570,0.0000027578,0.0000027624, -0.0000027690,0.0000027755,0.0000027813,0.0000027862,0.0000027878, -0.0000027780,0.0000027637,0.0000027615,0.0000027679,0.0000027714, -0.0000027728,0.0000027804,0.0000027922,0.0000027982,0.0000027950, -0.0000027868,0.0000027798,0.0000027750,0.0000027721,0.0000027684, -0.0000027640,0.0000027609,0.0000027604,0.0000027631,0.0000027653, -0.0000027595,0.0000027488,0.0000027455,0.0000027524,0.0000027615, -0.0000027642,0.0000027605,0.0000027535,0.0000027389,0.0000027217, -0.0000027177,0.0000027225,0.0000027266,0.0000027277,0.0000027226, -0.0000027121,0.0000027090,0.0000027131,0.0000027087,0.0000026991, -0.0000026992,0.0000027024,0.0000027046,0.0000027078,0.0000027062, -0.0000027023,0.0000027020,0.0000027038,0.0000027094,0.0000027205, -0.0000027309,0.0000027359,0.0000027360,0.0000027321,0.0000027240, -0.0000027161,0.0000027151,0.0000027225,0.0000027299,0.0000027336, -0.0000027337,0.0000027312,0.0000027251,0.0000027198,0.0000027160, -0.0000027137,0.0000027087,0.0000027006,0.0000026919,0.0000026852, -0.0000026778,0.0000026700,0.0000026649,0.0000026618,0.0000026595, -0.0000026591,0.0000026603,0.0000026611,0.0000026608,0.0000026582, -0.0000026499,0.0000026332,0.0000026102,0.0000025948,0.0000025926, -0.0000026080,0.0000026469,0.0000026813,0.0000026861,0.0000026769, -0.0000026763,0.0000026799,0.0000026776,0.0000026769,0.0000026862, -0.0000026769,0.0000026494,0.0000026201,0.0000026081,0.0000026218, -0.0000026372,0.0000026380,0.0000026402,0.0000026573,0.0000026863, -0.0000027140,0.0000027262,0.0000027301,0.0000027348,0.0000027372, -0.0000027402,0.0000027485,0.0000027619,0.0000027767,0.0000027878, -0.0000027959,0.0000028043,0.0000028136,0.0000028186,0.0000028199, -0.0000028205,0.0000028238,0.0000028273,0.0000028268,0.0000028214, -0.0000028139,0.0000028039,0.0000027941,0.0000027906,0.0000027833, -0.0000027708,0.0000027659,0.0000027664,0.0000027621,0.0000027569, -0.0000027545,0.0000027523,0.0000027478,0.0000027416,0.0000027464, -0.0000027543,0.0000027698,0.0000027861,0.0000027982,0.0000027984, -0.0000027931,0.0000027814,0.0000027798,0.0000027872,0.0000027889, -0.0000027703,0.0000027633,0.0000027571,0.0000027542,0.0000027554, -0.0000027531,0.0000027501,0.0000027481,0.0000027391,0.0000027239, -0.0000027108,0.0000027134,0.0000027091,0.0000027001,0.0000026929, -0.0000026774,0.0000026597,0.0000026481,0.0000026417,0.0000026379, -0.0000026345,0.0000026309,0.0000026278,0.0000026260,0.0000026237, -0.0000026184,0.0000026106,0.0000025996,0.0000025866,0.0000025778, -0.0000025746,0.0000025727,0.0000025688,0.0000025649,0.0000025635, -0.0000025657,0.0000025746,0.0000025852,0.0000025924,0.0000025943, -0.0000025919,0.0000025863,0.0000025806,0.0000025795,0.0000025839, -0.0000025899,0.0000025946,0.0000025964,0.0000025962,0.0000025944, -0.0000025923,0.0000025888,0.0000025835,0.0000025782,0.0000025745, -0.0000025730,0.0000025727,0.0000025721,0.0000025711,0.0000025680, -0.0000025639,0.0000025602,0.0000025570,0.0000025559,0.0000025556, -0.0000025535,0.0000025487,0.0000025426,0.0000025342,0.0000025235, -0.0000025124,0.0000025030,0.0000024994,0.0000025019,0.0000025035, -0.0000025048,0.0000025044,0.0000025059,0.0000025088,0.0000025098, -0.0000025062,0.0000025026,0.0000025013,0.0000025101,0.0000025187, -0.0000025200,0.0000025160,0.0000025150,0.0000025183,0.0000025161, -0.0000025084,0.0000025045,0.0000025099,0.0000025166,0.0000025187, -0.0000025262,0.0000025417,0.0000025493,0.0000025475,0.0000025441, -0.0000025562,0.0000025884,0.0000026034,0.0000026059,0.0000026070, -0.0000026062,0.0000026035,0.0000026006,0.0000026001,0.0000026023, -0.0000026072,0.0000026151,0.0000026224,0.0000026251,0.0000026286, -0.0000026343,0.0000026417,0.0000026512,0.0000026616,0.0000026655, -0.0000026635,0.0000026627,0.0000026646,0.0000026691,0.0000026737, -0.0000026782,0.0000026824,0.0000026877,0.0000026931,0.0000026966, -0.0000026970,0.0000026969,0.0000027025,0.0000027106,0.0000027173, -0.0000027218,0.0000027206,0.0000027138,0.0000027099,0.0000027117, -0.0000027243,0.0000027507,0.0000027665,0.0000027982,0.0000028368, -0.0000028374,0.0000028267,0.0000028151,0.0000028205,0.0000028313, -0.0000028314,0.0000028391,0.0000028445,0.0000028388,0.0000028259, -0.0000028230,0.0000028243,0.0000028211,0.0000028082,0.0000028006, -0.0000028104,0.0000028208,0.0000028219,0.0000028228,0.0000028271, -0.0000028296,0.0000028291,0.0000028272,0.0000028242,0.0000028210, -0.0000028165,0.0000028136,0.0000028145,0.0000028191,0.0000028254, -0.0000028342,0.0000028430,0.0000028525,0.0000028598,0.0000028661, -0.0000028721,0.0000028801,0.0000028894,0.0000028971,0.0000029027, -0.0000029081,0.0000029136,0.0000029187,0.0000029225,0.0000029243, -0.0000029235,0.0000029241,0.0000029228,0.0000029196,0.0000029158, -0.0000029101,0.0000029040,0.0000028976,0.0000028922,0.0000028875, -0.0000028839,0.0000028829,0.0000028846,0.0000028872,0.0000028901, -0.0000028940,0.0000028991,0.0000029043,0.0000029062,0.0000029063, -0.0000029085,0.0000029108,0.0000029065,0.0000028924,0.0000028792, -0.0000028741,0.0000028722,0.0000028720,0.0000028699,0.0000028693, -0.0000028766,0.0000028894,0.0000029092,0.0000029255,0.0000029342, -0.0000029331,0.0000029248,0.0000029174,0.0000029152,0.0000029160, -0.0000029175,0.0000029178,0.0000029156,0.0000029119,0.0000029068, -0.0000029044,0.0000029044,0.0000029053,0.0000029069,0.0000029093, -0.0000029113,0.0000029135,0.0000029144,0.0000029156,0.0000029163, -0.0000029150,0.0000029139,0.0000029131,0.0000029118,0.0000029101, -0.0000029077,0.0000029039,0.0000028990,0.0000028937,0.0000028878, -0.0000028827,0.0000028771,0.0000028706,0.0000028634,0.0000028550, -0.0000028469,0.0000028395,0.0000028331,0.0000028270,0.0000028208, -0.0000028152,0.0000028127,0.0000028141,0.0000028189,0.0000028236, -0.0000028262,0.0000028258,0.0000028236,0.0000028208,0.0000028184, -0.0000028166,0.0000028159,0.0000028173,0.0000028205,0.0000028251, -0.0000028304,0.0000028346,0.0000028375,0.0000028387,0.0000028378, -0.0000028339,0.0000028272,0.0000028200,0.0000028171,0.0000028183, -0.0000028212,0.0000028231,0.0000028228,0.0000028201,0.0000028170, -0.0000028149,0.0000028154,0.0000028192,0.0000028249,0.0000028304, -0.0000028352,0.0000028375,0.0000028364,0.0000028329,0.0000028292, -0.0000028304,0.0000028329,0.0000028335,0.0000028313,0.0000028252, -0.0000028181,0.0000028138,0.0000028132,0.0000028151,0.0000028193, -0.0000028219,0.0000028212,0.0000028205,0.0000028213,0.0000028214, -0.0000028203,0.0000028182,0.0000028140,0.0000028086,0.0000028053, -0.0000028054,0.0000028060,0.0000028031,0.0000027975,0.0000027920, -0.0000027915,0.0000027998,0.0000028076,0.0000028107,0.0000028097, -0.0000027928,0.0000027669,0.0000027443,0.0000027308,0.0000027308, -0.0000027375,0.0000027473,0.0000027563,0.0000027637,0.0000027719, -0.0000027828,0.0000027935,0.0000028000,0.0000028018,0.0000028022, -0.0000028024,0.0000028029,0.0000028053,0.0000028101,0.0000028169, -0.0000028257,0.0000028346,0.0000028389,0.0000028381,0.0000028339, -0.0000028282,0.0000028228,0.0000028197,0.0000028191,0.0000028184, -0.0000028167,0.0000028151,0.0000028135,0.0000028108,0.0000028057, -0.0000028008,0.0000027995,0.0000028040,0.0000028125,0.0000028192, -0.0000028218,0.0000028123,0.0000027976,0.0000027844,0.0000027755, -0.0000027753,0.0000027808,0.0000027932,0.0000028108,0.0000028322, -0.0000028505,0.0000028613,0.0000028664,0.0000028687,0.0000028684, -0.0000028659,0.0000028676,0.0000028726,0.0000028758,0.0000028744, -0.0000028684,0.0000028588,0.0000028472,0.0000028353,0.0000028262, -0.0000028185,0.0000028153,0.0000028149,0.0000028155,0.0000028142, -0.0000028112,0.0000028063,0.0000028008,0.0000028077,0.0000028112, -0.0000028063,0.0000028324,0.0000028596,0.0000028699,0.0000028700, -0.0000028618,0.0000028600,0.0000028689,0.0000028717,0.0000028665, -0.0000028550,0.0000028439,0.0000028338,0.0000028236,0.0000028174, -0.0000028106,0.0000028015,0.0000027961,0.0000027916,0.0000027849, -0.0000027844,0.0000027936,0.0000028079,0.0000028261,0.0000028431, -0.0000028477,0.0000028503,0.0000028580,0.0000028638,0.0000028646, -0.0000028663,0.0000028699,0.0000028743,0.0000028805,0.0000028870, -0.0000028910,0.0000028918,0.0000028941,0.0000029005,0.0000029062, -0.0000029093,0.0000029112,0.0000029130,0.0000029090,0.0000028994, -0.0000028847,0.0000028677,0.0000028531,0.0000028459,0.0000028439, -0.0000028418,0.0000028398,0.0000028378,0.0000028357,0.0000028382, -0.0000028458,0.0000028602,0.0000028752,0.0000028785,0.0000028579, -0.0000028389,0.0000028389,0.0000028327,0.0000028090,0.0000028066, -0.0000028054,0.0000027930,0.0000027799,0.0000027715,0.0000027654, -0.0000027611,0.0000027575,0.0000027547,0.0000027544,0.0000027572, -0.0000027594,0.0000027580,0.0000027559,0.0000027546,0.0000027533, -0.0000027521,0.0000027510,0.0000027490,0.0000027415,0.0000027299, -0.0000027243,0.0000027268,0.0000027294,0.0000027280,0.0000027240, -0.0000027218,0.0000027235,0.0000027277,0.0000027313,0.0000027326, -0.0000027320,0.0000027292,0.0000027235,0.0000027169,0.0000027128, -0.0000027143,0.0000027216,0.0000027310,0.0000027388,0.0000027422, -0.0000027410,0.0000027352,0.0000027265,0.0000027184,0.0000027136, -0.0000027110,0.0000027084,0.0000027047,0.0000027013,0.0000027005, -0.0000027023,0.0000027051,0.0000027070,0.0000027073,0.0000027058, -0.0000027037,0.0000027013,0.0000026977,0.0000026936,0.0000026895, -0.0000026861,0.0000026846,0.0000026845,0.0000026846,0.0000026845, -0.0000026842,0.0000026840,0.0000026836,0.0000026824,0.0000026797, -0.0000026758,0.0000026716,0.0000026684,0.0000026663,0.0000026647, -0.0000026627,0.0000026599,0.0000026564,0.0000026527,0.0000026473, -0.0000026408,0.0000026359,0.0000026333,0.0000026331,0.0000026351, -0.0000026386,0.0000026435,0.0000026501,0.0000026575,0.0000026665, -0.0000026775,0.0000026887,0.0000026980,0.0000027053,0.0000027115, -0.0000027179,0.0000027243,0.0000027309,0.0000027377,0.0000027440, -0.0000027487,0.0000027505,0.0000027500,0.0000027482,0.0000027469, -0.0000027471,0.0000027507,0.0000027583,0.0000027676,0.0000027757, -0.0000027813,0.0000027873,0.0000027980,0.0000028143,0.0000028311, -0.0000028418,0.0000028454,0.0000028473,0.0000028533,0.0000028665, -0.0000028860,0.0000029044,0.0000029168,0.0000029228,0.0000029243, -0.0000029234,0.0000029213,0.0000029193,0.0000029166,0.0000029130, -0.0000029090,0.0000029036,0.0000028967,0.0000028909,0.0000028871, -0.0000028853,0.0000028838,0.0000028804,0.0000028784,0.0000028790, -0.0000028794,0.0000028782,0.0000028768,0.0000028761,0.0000028726, -0.0000028672,0.0000028621,0.0000028544,0.0000028453,0.0000028399, -0.0000028427,0.0000028517,0.0000028581,0.0000028571,0.0000028511, -0.0000028423,0.0000028331,0.0000028272,0.0000028267,0.0000028299, -0.0000028342,0.0000028364,0.0000028366,0.0000028359,0.0000028349, -0.0000028330,0.0000028285,0.0000028230,0.0000028207,0.0000028208, -0.0000028208,0.0000028203,0.0000028198,0.0000028208,0.0000028246, -0.0000028310,0.0000028355,0.0000028345,0.0000028288,0.0000028196, -0.0000028124,0.0000028084,0.0000028064,0.0000028087,0.0000028166, -0.0000028234,0.0000028271,0.0000028274,0.0000028254,0.0000028200, -0.0000028145,0.0000028109,0.0000028095,0.0000028100,0.0000028106, -0.0000028102,0.0000028078,0.0000028042,0.0000027998,0.0000027934, -0.0000027851,0.0000027765,0.0000027690,0.0000027634,0.0000027588, -0.0000027549,0.0000027528,0.0000027526,0.0000027543,0.0000027588, -0.0000027648,0.0000027727,0.0000027809,0.0000027879,0.0000027913, -0.0000027861,0.0000027700,0.0000027632,0.0000027687,0.0000027719, -0.0000027731,0.0000027801,0.0000027902,0.0000027950,0.0000027923, -0.0000027851,0.0000027786,0.0000027740,0.0000027695,0.0000027657, -0.0000027638,0.0000027642,0.0000027665,0.0000027658,0.0000027542, -0.0000027420,0.0000027419,0.0000027519,0.0000027607,0.0000027638, -0.0000027619,0.0000027565,0.0000027469,0.0000027286,0.0000027171, -0.0000027191,0.0000027243,0.0000027271,0.0000027248,0.0000027152, -0.0000027099,0.0000027132,0.0000027097,0.0000026980,0.0000026962, -0.0000027004,0.0000027029,0.0000027064,0.0000027058,0.0000027008, -0.0000026993,0.0000027010,0.0000027053,0.0000027144,0.0000027256, -0.0000027326,0.0000027342,0.0000027330,0.0000027266,0.0000027161, -0.0000027092,0.0000027118,0.0000027203,0.0000027281,0.0000027315, -0.0000027322,0.0000027299,0.0000027255,0.0000027198,0.0000027158, -0.0000027124,0.0000027075,0.0000026994,0.0000026913,0.0000026846, -0.0000026760,0.0000026670,0.0000026616,0.0000026595,0.0000026577, -0.0000026567,0.0000026573,0.0000026584,0.0000026593,0.0000026588, -0.0000026521,0.0000026363,0.0000026126,0.0000025914,0.0000025868, -0.0000025954,0.0000026260,0.0000026662,0.0000026831,0.0000026754, -0.0000026687,0.0000026726,0.0000026744,0.0000026751,0.0000026846, -0.0000026849,0.0000026576,0.0000026290,0.0000026094,0.0000026102, -0.0000026242,0.0000026334,0.0000026298,0.0000026290,0.0000026377, -0.0000026590,0.0000026826,0.0000027028,0.0000027178,0.0000027263, -0.0000027323,0.0000027393,0.0000027464,0.0000027567,0.0000027713, -0.0000027854,0.0000027966,0.0000028066,0.0000028161,0.0000028198, -0.0000028192,0.0000028218,0.0000028275,0.0000028287,0.0000028265, -0.0000028221,0.0000028131,0.0000028002,0.0000027910,0.0000027826, -0.0000027665,0.0000027542,0.0000027530,0.0000027525,0.0000027495, -0.0000027484,0.0000027465,0.0000027419,0.0000027409,0.0000027492, -0.0000027563,0.0000027738,0.0000027866,0.0000027960,0.0000027961, -0.0000027900,0.0000027808,0.0000027805,0.0000027896,0.0000027884, -0.0000027707,0.0000027645,0.0000027558,0.0000027540,0.0000027566, -0.0000027531,0.0000027498,0.0000027443,0.0000027348,0.0000027207, -0.0000027067,0.0000027111,0.0000027088,0.0000026972,0.0000026893, -0.0000026777,0.0000026604,0.0000026452,0.0000026357,0.0000026314, -0.0000026299,0.0000026302,0.0000026306,0.0000026303,0.0000026287, -0.0000026248,0.0000026196,0.0000026127,0.0000026026,0.0000025898, -0.0000025801,0.0000025756,0.0000025712,0.0000025678,0.0000025676, -0.0000025700,0.0000025778,0.0000025880,0.0000025948,0.0000025961, -0.0000025930,0.0000025862,0.0000025799,0.0000025784,0.0000025842, -0.0000025914,0.0000025964,0.0000025982,0.0000025975,0.0000025945, -0.0000025900,0.0000025840,0.0000025776,0.0000025728,0.0000025699, -0.0000025687,0.0000025686,0.0000025684,0.0000025682,0.0000025668, -0.0000025651,0.0000025637,0.0000025629,0.0000025635,0.0000025652, -0.0000025650,0.0000025621,0.0000025578,0.0000025508,0.0000025404, -0.0000025282,0.0000025165,0.0000025084,0.0000025056,0.0000025041, -0.0000025011,0.0000024963,0.0000024920,0.0000024936,0.0000024988, -0.0000025028,0.0000025032,0.0000024981,0.0000024941,0.0000024953, -0.0000025096,0.0000025209,0.0000025194,0.0000025096,0.0000025095, -0.0000025179,0.0000025191,0.0000025149,0.0000025179,0.0000025229, -0.0000025240,0.0000025272,0.0000025375,0.0000025478,0.0000025489, -0.0000025443,0.0000025497,0.0000025804,0.0000026033,0.0000026080, -0.0000026077,0.0000026055,0.0000026017,0.0000025980,0.0000025968, -0.0000025976,0.0000025994,0.0000026041,0.0000026107,0.0000026156, -0.0000026175,0.0000026190,0.0000026231,0.0000026292,0.0000026391, -0.0000026521,0.0000026608,0.0000026633,0.0000026652,0.0000026686, -0.0000026720,0.0000026748,0.0000026782,0.0000026819,0.0000026856, -0.0000026894,0.0000026911,0.0000026947,0.0000027029,0.0000027113, -0.0000027173,0.0000027212,0.0000027199,0.0000027116,0.0000027093, -0.0000027113,0.0000027253,0.0000027514,0.0000027636,0.0000027936, -0.0000028352,0.0000028362,0.0000028266,0.0000028154,0.0000028167, -0.0000028279,0.0000028320,0.0000028403,0.0000028439,0.0000028356, -0.0000028236,0.0000028200,0.0000028214,0.0000028172,0.0000028031, -0.0000027961,0.0000028039,0.0000028099,0.0000028110,0.0000028156, -0.0000028219,0.0000028228,0.0000028200,0.0000028152,0.0000028104, -0.0000028095,0.0000028098,0.0000028118,0.0000028174,0.0000028263, -0.0000028347,0.0000028426,0.0000028512,0.0000028592,0.0000028671, -0.0000028747,0.0000028821,0.0000028901,0.0000029003,0.0000029104, -0.0000029194,0.0000029253,0.0000029286,0.0000029307,0.0000029295, -0.0000029253,0.0000029180,0.0000029109,0.0000029050,0.0000028989, -0.0000028943,0.0000028912,0.0000028905,0.0000028914,0.0000028914, -0.0000028889,0.0000028857,0.0000028846,0.0000028861,0.0000028900, -0.0000028978,0.0000029089,0.0000029189,0.0000029224,0.0000029206, -0.0000029187,0.0000029211,0.0000029223,0.0000029143,0.0000028929, -0.0000028744,0.0000028675,0.0000028654,0.0000028673,0.0000028677, -0.0000028686,0.0000028781,0.0000028939,0.0000029153,0.0000029296, -0.0000029348,0.0000029320,0.0000029214,0.0000029147,0.0000029138, -0.0000029159,0.0000029166,0.0000029155,0.0000029122,0.0000029085, -0.0000029037,0.0000029011,0.0000029018,0.0000029017,0.0000029006, -0.0000028991,0.0000028987,0.0000028985,0.0000028991,0.0000028997, -0.0000029003,0.0000028992,0.0000028977,0.0000028973,0.0000028961, -0.0000028941,0.0000028914,0.0000028874,0.0000028825,0.0000028774, -0.0000028716,0.0000028666,0.0000028621,0.0000028572,0.0000028518, -0.0000028463,0.0000028411,0.0000028370,0.0000028326,0.0000028278, -0.0000028217,0.0000028141,0.0000028081,0.0000028074,0.0000028113, -0.0000028170,0.0000028213,0.0000028231,0.0000028229,0.0000028212, -0.0000028182,0.0000028160,0.0000028157,0.0000028167,0.0000028183, -0.0000028203,0.0000028234,0.0000028271,0.0000028312,0.0000028347, -0.0000028354,0.0000028339,0.0000028294,0.0000028223,0.0000028160, -0.0000028144,0.0000028164,0.0000028205,0.0000028234,0.0000028232, -0.0000028199,0.0000028158,0.0000028136,0.0000028157,0.0000028224, -0.0000028314,0.0000028390,0.0000028433,0.0000028425,0.0000028374, -0.0000028295,0.0000028256,0.0000028273,0.0000028292,0.0000028291, -0.0000028260,0.0000028208,0.0000028162,0.0000028146,0.0000028144, -0.0000028168,0.0000028212,0.0000028235,0.0000028221,0.0000028210, -0.0000028210,0.0000028203,0.0000028187,0.0000028165,0.0000028125, -0.0000028070,0.0000028039,0.0000028067,0.0000028098,0.0000028083, -0.0000028020,0.0000027930,0.0000027875,0.0000027909,0.0000028011, -0.0000028115,0.0000028146,0.0000028107,0.0000027949,0.0000027695, -0.0000027441,0.0000027292,0.0000027240,0.0000027291,0.0000027379, -0.0000027466,0.0000027547,0.0000027642,0.0000027737,0.0000027809, -0.0000027872,0.0000027935,0.0000027978,0.0000027996,0.0000028008, -0.0000028028,0.0000028072,0.0000028150,0.0000028238,0.0000028281, -0.0000028279,0.0000028238,0.0000028177,0.0000028117,0.0000028077, -0.0000028077,0.0000028107,0.0000028132,0.0000028136,0.0000028129, -0.0000028113,0.0000028063,0.0000027993,0.0000027935,0.0000027934, -0.0000028000,0.0000028103,0.0000028179,0.0000028164,0.0000028116, -0.0000027991,0.0000027846,0.0000027783,0.0000027818,0.0000027876, -0.0000027953,0.0000028084,0.0000028270,0.0000028457,0.0000028596, -0.0000028667,0.0000028668,0.0000028640,0.0000028652,0.0000028700, -0.0000028725,0.0000028707,0.0000028650,0.0000028569,0.0000028467, -0.0000028367,0.0000028271,0.0000028185,0.0000028134,0.0000028102, -0.0000028122,0.0000028154,0.0000028141,0.0000028099,0.0000028026, -0.0000028068,0.0000028130,0.0000028042,0.0000028232,0.0000028550, -0.0000028702,0.0000028712,0.0000028620,0.0000028533,0.0000028565, -0.0000028592,0.0000028547,0.0000028475,0.0000028426,0.0000028397, -0.0000028342,0.0000028281,0.0000028202,0.0000028092,0.0000028013, -0.0000027964,0.0000027889,0.0000027861,0.0000027922,0.0000028020, -0.0000028176,0.0000028371,0.0000028464,0.0000028495,0.0000028568, -0.0000028639,0.0000028655,0.0000028670,0.0000028687,0.0000028713, -0.0000028765,0.0000028840,0.0000028907,0.0000028943,0.0000028947, -0.0000028953,0.0000028987,0.0000029041,0.0000029082,0.0000029107, -0.0000029131,0.0000029123,0.0000029033,0.0000028875,0.0000028696, -0.0000028552,0.0000028473,0.0000028433,0.0000028410,0.0000028381, -0.0000028345,0.0000028344,0.0000028414,0.0000028581,0.0000028753, -0.0000028773,0.0000028528,0.0000028354,0.0000028370,0.0000028305, -0.0000028078,0.0000028064,0.0000028035,0.0000027907,0.0000027793, -0.0000027721,0.0000027663,0.0000027620,0.0000027581,0.0000027539, -0.0000027505,0.0000027507,0.0000027544,0.0000027558,0.0000027533, -0.0000027514,0.0000027510,0.0000027508,0.0000027509,0.0000027508, -0.0000027513,0.0000027493,0.0000027408,0.0000027300,0.0000027259, -0.0000027266,0.0000027258,0.0000027224,0.0000027189,0.0000027188, -0.0000027219,0.0000027277,0.0000027316,0.0000027320,0.0000027294, -0.0000027246,0.0000027185,0.0000027129,0.0000027105,0.0000027119, -0.0000027171,0.0000027244,0.0000027317,0.0000027375,0.0000027411, -0.0000027410,0.0000027363,0.0000027290,0.0000027220,0.0000027153, -0.0000027085,0.0000027028,0.0000027003,0.0000027004,0.0000027027, -0.0000027063,0.0000027088,0.0000027092,0.0000027079,0.0000027056, -0.0000027031,0.0000027009,0.0000026984,0.0000026950,0.0000026914, -0.0000026879,0.0000026852,0.0000026844,0.0000026848,0.0000026855, -0.0000026855,0.0000026847,0.0000026839,0.0000026829,0.0000026812, -0.0000026788,0.0000026759,0.0000026716,0.0000026664,0.0000026614, -0.0000026574,0.0000026543,0.0000026498,0.0000026441,0.0000026383, -0.0000026331,0.0000026307,0.0000026308,0.0000026343,0.0000026405, -0.0000026457,0.0000026504,0.0000026555,0.0000026641,0.0000026757, -0.0000026852,0.0000026913,0.0000026975,0.0000027048,0.0000027117, -0.0000027192,0.0000027271,0.0000027350,0.0000027412,0.0000027431, -0.0000027420,0.0000027401,0.0000027398,0.0000027426,0.0000027484, -0.0000027560,0.0000027645,0.0000027739,0.0000027818,0.0000027872, -0.0000027928,0.0000028041,0.0000028231,0.0000028409,0.0000028503, -0.0000028535,0.0000028575,0.0000028686,0.0000028870,0.0000029063, -0.0000029193,0.0000029260,0.0000029274,0.0000029256,0.0000029223, -0.0000029197,0.0000029172,0.0000029141,0.0000029103,0.0000029047, -0.0000028976,0.0000028912,0.0000028863,0.0000028842,0.0000028832, -0.0000028808,0.0000028788,0.0000028784,0.0000028778,0.0000028769, -0.0000028767,0.0000028765,0.0000028728,0.0000028665,0.0000028621, -0.0000028597,0.0000028564,0.0000028524,0.0000028528,0.0000028567, -0.0000028597,0.0000028576,0.0000028517,0.0000028437,0.0000028353, -0.0000028289,0.0000028269,0.0000028290,0.0000028335,0.0000028360, -0.0000028360,0.0000028344,0.0000028325,0.0000028308,0.0000028281, -0.0000028253,0.0000028261,0.0000028275,0.0000028268,0.0000028244, -0.0000028225,0.0000028221,0.0000028253,0.0000028317,0.0000028363, -0.0000028360,0.0000028324,0.0000028239,0.0000028151,0.0000028095, -0.0000028056,0.0000028057,0.0000028123,0.0000028215,0.0000028274, -0.0000028290,0.0000028283,0.0000028255,0.0000028209,0.0000028160, -0.0000028128,0.0000028117,0.0000028110,0.0000028110,0.0000028105, -0.0000028093,0.0000028070,0.0000028026,0.0000027955,0.0000027872, -0.0000027799,0.0000027744,0.0000027703,0.0000027671,0.0000027650, -0.0000027644,0.0000027643,0.0000027640,0.0000027642,0.0000027663, -0.0000027714,0.0000027787,0.0000027875,0.0000027939,0.0000027903, -0.0000027741,0.0000027662,0.0000027699,0.0000027723,0.0000027729, -0.0000027786,0.0000027863,0.0000027894,0.0000027872,0.0000027819, -0.0000027761,0.0000027712,0.0000027683,0.0000027668,0.0000027670, -0.0000027680,0.0000027628,0.0000027476,0.0000027388,0.0000027451, -0.0000027554,0.0000027594,0.0000027592,0.0000027582,0.0000027556, -0.0000027511,0.0000027368,0.0000027200,0.0000027170,0.0000027216, -0.0000027260,0.0000027260,0.0000027180,0.0000027118,0.0000027144, -0.0000027116,0.0000026984,0.0000026941,0.0000026985,0.0000027014, -0.0000027053,0.0000027070,0.0000027021,0.0000026970,0.0000026976, -0.0000027013,0.0000027081,0.0000027191,0.0000027291,0.0000027329, -0.0000027331,0.0000027303,0.0000027209,0.0000027098,0.0000027048, -0.0000027092,0.0000027178,0.0000027247,0.0000027276,0.0000027288, -0.0000027281,0.0000027251,0.0000027201,0.0000027158,0.0000027115, -0.0000027070,0.0000026989,0.0000026912,0.0000026843,0.0000026748, -0.0000026647,0.0000026593,0.0000026577,0.0000026559,0.0000026544, -0.0000026544,0.0000026560,0.0000026581,0.0000026586,0.0000026535, -0.0000026397,0.0000026168,0.0000025919,0.0000025821,0.0000025858, -0.0000026049,0.0000026439,0.0000026753,0.0000026760,0.0000026646, -0.0000026649,0.0000026700,0.0000026731,0.0000026811,0.0000026867, -0.0000026673,0.0000026391,0.0000026164,0.0000026044,0.0000026083, -0.0000026216,0.0000026247,0.0000026198,0.0000026158,0.0000026168, -0.0000026264,0.0000026447,0.0000026631,0.0000026797,0.0000026966, -0.0000027111,0.0000027257,0.0000027384,0.0000027524,0.0000027678, -0.0000027837,0.0000027966,0.0000028080,0.0000028157,0.0000028176, -0.0000028199,0.0000028260,0.0000028291,0.0000028287,0.0000028274, -0.0000028204,0.0000028076,0.0000027934,0.0000027811,0.0000027664, -0.0000027513,0.0000027428,0.0000027400,0.0000027409,0.0000027419, -0.0000027418,0.0000027397,0.0000027437,0.0000027510,0.0000027621, -0.0000027771,0.0000027875,0.0000027934,0.0000027936,0.0000027864, -0.0000027810,0.0000027820,0.0000027918,0.0000027881,0.0000027711, -0.0000027645,0.0000027539,0.0000027540,0.0000027570,0.0000027530, -0.0000027485,0.0000027398,0.0000027308,0.0000027166,0.0000027013, -0.0000027071,0.0000027081,0.0000026962,0.0000026862,0.0000026775, -0.0000026648,0.0000026497,0.0000026372,0.0000026284,0.0000026242, -0.0000026236,0.0000026273,0.0000026313,0.0000026332,0.0000026314, -0.0000026259,0.0000026207,0.0000026152,0.0000026043,0.0000025904, -0.0000025806,0.0000025740,0.0000025691,0.0000025695,0.0000025740, -0.0000025815,0.0000025901,0.0000025956,0.0000025958,0.0000025918, -0.0000025859,0.0000025819,0.0000025810,0.0000025873,0.0000025956, -0.0000025995,0.0000026005,0.0000025983,0.0000025940,0.0000025880, -0.0000025807,0.0000025740,0.0000025693,0.0000025665,0.0000025657, -0.0000025659,0.0000025662,0.0000025666,0.0000025667,0.0000025669, -0.0000025675,0.0000025685,0.0000025702,0.0000025725,0.0000025728, -0.0000025699,0.0000025657,0.0000025588,0.0000025496,0.0000025392, -0.0000025280,0.0000025190,0.0000025154,0.0000025145,0.0000025106, -0.0000025034,0.0000024948,0.0000024889,0.0000024875,0.0000024867, -0.0000024904,0.0000024951,0.0000024961,0.0000024932,0.0000024924, -0.0000024988,0.0000025149,0.0000025214,0.0000025115,0.0000025042, -0.0000025149,0.0000025272,0.0000025282,0.0000025269,0.0000025286, -0.0000025298,0.0000025291,0.0000025330,0.0000025434,0.0000025490, -0.0000025471,0.0000025501,0.0000025779,0.0000026082,0.0000026151, -0.0000026122,0.0000026056,0.0000025989,0.0000025945,0.0000025917, -0.0000025913,0.0000025927,0.0000025957,0.0000026003,0.0000026059, -0.0000026095,0.0000026107,0.0000026116,0.0000026140,0.0000026197, -0.0000026313,0.0000026475,0.0000026604,0.0000026665,0.0000026685, -0.0000026696,0.0000026711,0.0000026744,0.0000026771,0.0000026805, -0.0000026832,0.0000026868,0.0000026924,0.0000027018,0.0000027118, -0.0000027171,0.0000027202,0.0000027177,0.0000027102,0.0000027086, -0.0000027103,0.0000027264,0.0000027511,0.0000027599,0.0000027893, -0.0000028332,0.0000028347,0.0000028261,0.0000028159,0.0000028135, -0.0000028221,0.0000028314,0.0000028429,0.0000028436,0.0000028321, -0.0000028207,0.0000028171,0.0000028174,0.0000028129,0.0000027985, -0.0000027930,0.0000027985,0.0000028003,0.0000028005,0.0000028055, -0.0000028108,0.0000028108,0.0000028083,0.0000028057,0.0000028065, -0.0000028094,0.0000028127,0.0000028182,0.0000028271,0.0000028366, -0.0000028450,0.0000028538,0.0000028633,0.0000028715,0.0000028799, -0.0000028873,0.0000028962,0.0000029050,0.0000029145,0.0000029215, -0.0000029266,0.0000029271,0.0000029258,0.0000029212,0.0000029130, -0.0000029042,0.0000028944,0.0000028863,0.0000028820,0.0000028803, -0.0000028817,0.0000028843,0.0000028877,0.0000028893,0.0000028890, -0.0000028865,0.0000028845,0.0000028856,0.0000028925,0.0000029025, -0.0000029142,0.0000029246,0.0000029292,0.0000029278,0.0000029248, -0.0000029243,0.0000029271,0.0000029273,0.0000029164,0.0000028920, -0.0000028703,0.0000028622,0.0000028613,0.0000028658,0.0000028667, -0.0000028680,0.0000028790,0.0000028974,0.0000029189,0.0000029312, -0.0000029343,0.0000029307,0.0000029193,0.0000029130,0.0000029124, -0.0000029138,0.0000029148,0.0000029126,0.0000029093,0.0000029040, -0.0000028992,0.0000028967,0.0000028973,0.0000028978,0.0000028962, -0.0000028938,0.0000028916,0.0000028889,0.0000028876,0.0000028866, -0.0000028860,0.0000028847,0.0000028824,0.0000028805,0.0000028786, -0.0000028768,0.0000028750,0.0000028732,0.0000028710,0.0000028687, -0.0000028654,0.0000028612,0.0000028572,0.0000028542,0.0000028499, -0.0000028454,0.0000028414,0.0000028377,0.0000028343,0.0000028308, -0.0000028256,0.0000028177,0.0000028095,0.0000028054,0.0000028063, -0.0000028104,0.0000028157,0.0000028189,0.0000028199,0.0000028200, -0.0000028192,0.0000028184,0.0000028181,0.0000028183,0.0000028184, -0.0000028187,0.0000028199,0.0000028223,0.0000028253,0.0000028285, -0.0000028309,0.0000028313,0.0000028297,0.0000028259,0.0000028200, -0.0000028144,0.0000028126,0.0000028148,0.0000028194,0.0000028221, -0.0000028209,0.0000028164,0.0000028120,0.0000028115,0.0000028165, -0.0000028266,0.0000028369,0.0000028446,0.0000028462,0.0000028425, -0.0000028338,0.0000028239,0.0000028205,0.0000028210,0.0000028220, -0.0000028216,0.0000028188,0.0000028162,0.0000028151,0.0000028144, -0.0000028145,0.0000028173,0.0000028220,0.0000028247,0.0000028239, -0.0000028222,0.0000028206,0.0000028183,0.0000028155,0.0000028132, -0.0000028101,0.0000028059,0.0000028045,0.0000028081,0.0000028103, -0.0000028092,0.0000028044,0.0000027954,0.0000027864,0.0000027855, -0.0000027944,0.0000028070,0.0000028155,0.0000028184,0.0000028144, -0.0000027982,0.0000027722,0.0000027478,0.0000027285,0.0000027229, -0.0000027235,0.0000027293,0.0000027375,0.0000027475,0.0000027561, -0.0000027626,0.0000027704,0.0000027797,0.0000027882,0.0000027941, -0.0000027971,0.0000027983,0.0000028002,0.0000028054,0.0000028127, -0.0000028172,0.0000028170,0.0000028122,0.0000028058,0.0000028003, -0.0000027962,0.0000027961,0.0000028005,0.0000028067,0.0000028106, -0.0000028112,0.0000028104,0.0000028061,0.0000027984,0.0000027898, -0.0000027848,0.0000027879,0.0000027969,0.0000028054,0.0000028111, -0.0000028138,0.0000028083,0.0000027979,0.0000027886,0.0000027862, -0.0000027881,0.0000027894,0.0000027935,0.0000028027,0.0000028186, -0.0000028382,0.0000028540,0.0000028610,0.0000028621,0.0000028645, -0.0000028693,0.0000028716,0.0000028698,0.0000028638,0.0000028573, -0.0000028495,0.0000028416,0.0000028305,0.0000028200,0.0000028129, -0.0000028090,0.0000028104,0.0000028164,0.0000028172,0.0000028137, -0.0000028060,0.0000028075,0.0000028153,0.0000028048,0.0000028149, -0.0000028501,0.0000028693,0.0000028725,0.0000028639,0.0000028517, -0.0000028494,0.0000028516,0.0000028492,0.0000028459,0.0000028457, -0.0000028469,0.0000028421,0.0000028322,0.0000028220,0.0000028101, -0.0000028019,0.0000027985,0.0000027936,0.0000027892,0.0000027925, -0.0000027994,0.0000028116,0.0000028297,0.0000028420,0.0000028472, -0.0000028545,0.0000028633,0.0000028661,0.0000028676,0.0000028675, -0.0000028678,0.0000028708,0.0000028775,0.0000028855,0.0000028928, -0.0000028958,0.0000028953,0.0000028936,0.0000028955,0.0000029024, -0.0000029078,0.0000029107,0.0000029147,0.0000029147,0.0000029055, -0.0000028898,0.0000028728,0.0000028581,0.0000028472,0.0000028419, -0.0000028389,0.0000028347,0.0000028334,0.0000028392,0.0000028574, -0.0000028758,0.0000028749,0.0000028471,0.0000028328,0.0000028361, -0.0000028286,0.0000028068,0.0000028052,0.0000028008,0.0000027884, -0.0000027785,0.0000027719,0.0000027658,0.0000027610,0.0000027574, -0.0000027538,0.0000027497,0.0000027478,0.0000027491,0.0000027530, -0.0000027528,0.0000027492,0.0000027461,0.0000027458,0.0000027480, -0.0000027497,0.0000027496,0.0000027498,0.0000027502,0.0000027486, -0.0000027419,0.0000027320,0.0000027270,0.0000027249,0.0000027233, -0.0000027207,0.0000027193,0.0000027198,0.0000027228,0.0000027277, -0.0000027313,0.0000027319,0.0000027306,0.0000027269,0.0000027212, -0.0000027151,0.0000027109,0.0000027100,0.0000027122,0.0000027178, -0.0000027251,0.0000027333,0.0000027401,0.0000027436,0.0000027436, -0.0000027404,0.0000027342,0.0000027260,0.0000027175,0.0000027100, -0.0000027053,0.0000027050,0.0000027080,0.0000027116,0.0000027139, -0.0000027142,0.0000027130,0.0000027103,0.0000027069,0.0000027030, -0.0000026993,0.0000026962,0.0000026931,0.0000026903,0.0000026891, -0.0000026887,0.0000026878,0.0000026862,0.0000026850,0.0000026847, -0.0000026847,0.0000026844,0.0000026837,0.0000026821,0.0000026781, -0.0000026721,0.0000026650,0.0000026588,0.0000026543,0.0000026509, -0.0000026475,0.0000026434,0.0000026389,0.0000026351,0.0000026340, -0.0000026363,0.0000026405,0.0000026450,0.0000026472,0.0000026480, -0.0000026528,0.0000026622,0.0000026700,0.0000026746,0.0000026808, -0.0000026892,0.0000026970,0.0000027046,0.0000027133,0.0000027224, -0.0000027289,0.0000027314,0.0000027324,0.0000027340,0.0000027366, -0.0000027417,0.0000027488,0.0000027554,0.0000027616,0.0000027698, -0.0000027792,0.0000027869,0.0000027916,0.0000027994,0.0000028166, -0.0000028381,0.0000028527,0.0000028602,0.0000028638,0.0000028708, -0.0000028849,0.0000029027,0.0000029177,0.0000029251,0.0000029262, -0.0000029234,0.0000029190,0.0000029156,0.0000029137,0.0000029122, -0.0000029094,0.0000029040,0.0000028972,0.0000028907,0.0000028853, -0.0000028833,0.0000028823,0.0000028808,0.0000028790,0.0000028783, -0.0000028771,0.0000028758,0.0000028759,0.0000028758,0.0000028723, -0.0000028656,0.0000028605,0.0000028596,0.0000028592,0.0000028577, -0.0000028568,0.0000028573,0.0000028576,0.0000028544,0.0000028489, -0.0000028421,0.0000028353,0.0000028297,0.0000028275,0.0000028295, -0.0000028342,0.0000028368,0.0000028373,0.0000028357,0.0000028329, -0.0000028317,0.0000028304,0.0000028302,0.0000028326,0.0000028349, -0.0000028342,0.0000028311,0.0000028285,0.0000028276,0.0000028303, -0.0000028362,0.0000028407,0.0000028403,0.0000028366,0.0000028285, -0.0000028183,0.0000028106,0.0000028061,0.0000028040,0.0000028066, -0.0000028143,0.0000028220,0.0000028252,0.0000028242,0.0000028208, -0.0000028173,0.0000028147,0.0000028140,0.0000028149,0.0000028166, -0.0000028189,0.0000028206,0.0000028206,0.0000028183,0.0000028143, -0.0000028084,0.0000028005,0.0000027929,0.0000027873,0.0000027834, -0.0000027798,0.0000027775,0.0000027773,0.0000027781,0.0000027781, -0.0000027764,0.0000027747,0.0000027737,0.0000027742,0.0000027784, -0.0000027866,0.0000027947,0.0000027919,0.0000027756,0.0000027679, -0.0000027709,0.0000027720,0.0000027716,0.0000027756,0.0000027806, -0.0000027823,0.0000027810,0.0000027771,0.0000027732,0.0000027703, -0.0000027682,0.0000027684,0.0000027680,0.0000027580,0.0000027423, -0.0000027393,0.0000027479,0.0000027544,0.0000027513,0.0000027472, -0.0000027469,0.0000027487,0.0000027507,0.0000027429,0.0000027245, -0.0000027164,0.0000027190,0.0000027247,0.0000027266,0.0000027206, -0.0000027143,0.0000027164,0.0000027150,0.0000027016,0.0000026934, -0.0000026965,0.0000027005,0.0000027040,0.0000027083,0.0000027063, -0.0000026987,0.0000026954,0.0000026976,0.0000027025,0.0000027104, -0.0000027220,0.0000027305,0.0000027326,0.0000027322,0.0000027269, -0.0000027161,0.0000027058,0.0000027023,0.0000027062,0.0000027141, -0.0000027197,0.0000027225,0.0000027246,0.0000027259,0.0000027239, -0.0000027206,0.0000027160,0.0000027122,0.0000027072,0.0000026993, -0.0000026918,0.0000026845,0.0000026742,0.0000026636,0.0000026581, -0.0000026567,0.0000026547,0.0000026524,0.0000026517,0.0000026536, -0.0000026565,0.0000026578,0.0000026548,0.0000026428,0.0000026222, -0.0000025969,0.0000025805,0.0000025787,0.0000025877,0.0000026185, -0.0000026589,0.0000026737,0.0000026654,0.0000026592,0.0000026641, -0.0000026702,0.0000026772,0.0000026845,0.0000026776,0.0000026508, -0.0000026252,0.0000026073,0.0000026008,0.0000026060,0.0000026122, -0.0000026139,0.0000026098,0.0000026091,0.0000026100,0.0000026137, -0.0000026179,0.0000026278,0.0000026398,0.0000026543,0.0000026761, -0.0000026994,0.0000027240,0.0000027463,0.0000027641,0.0000027816, -0.0000027965,0.0000028068,0.0000028140,0.0000028173,0.0000028234, -0.0000028286,0.0000028298,0.0000028302,0.0000028260,0.0000028150, -0.0000027978,0.0000027809,0.0000027688,0.0000027560,0.0000027432, -0.0000027372,0.0000027382,0.0000027405,0.0000027423,0.0000027435, -0.0000027481,0.0000027538,0.0000027695,0.0000027790,0.0000027883, -0.0000027911,0.0000027917,0.0000027831,0.0000027817,0.0000027840, -0.0000027941,0.0000027875,0.0000027713,0.0000027631,0.0000027519, -0.0000027540,0.0000027566,0.0000027526,0.0000027463,0.0000027351, -0.0000027270,0.0000027120,0.0000026964,0.0000026995,0.0000027051, -0.0000026983,0.0000026877,0.0000026787,0.0000026693,0.0000026585, -0.0000026471,0.0000026359,0.0000026270,0.0000026224,0.0000026221, -0.0000026258,0.0000026317,0.0000026348,0.0000026325,0.0000026270, -0.0000026222,0.0000026158,0.0000026031,0.0000025889,0.0000025785, -0.0000025707,0.0000025690,0.0000025744,0.0000025826,0.0000025909, -0.0000025958,0.0000025948,0.0000025901,0.0000025863,0.0000025859, -0.0000025870,0.0000025937,0.0000026017,0.0000026040,0.0000026038, -0.0000026004,0.0000025954,0.0000025891,0.0000025823,0.0000025760, -0.0000025710,0.0000025674,0.0000025662,0.0000025668,0.0000025678, -0.0000025680,0.0000025685,0.0000025693,0.0000025707,0.0000025722, -0.0000025739,0.0000025760,0.0000025773,0.0000025756,0.0000025713, -0.0000025639,0.0000025544,0.0000025442,0.0000025335,0.0000025239, -0.0000025194,0.0000025193,0.0000025182,0.0000025128,0.0000025040, -0.0000024963,0.0000024914,0.0000024855,0.0000024801,0.0000024796, -0.0000024855,0.0000024927,0.0000024952,0.0000024945,0.0000024964, -0.0000025047,0.0000025174,0.0000025164,0.0000025062,0.0000025105, -0.0000025309,0.0000025377,0.0000025360,0.0000025358,0.0000025351, -0.0000025318,0.0000025299,0.0000025375,0.0000025484,0.0000025506, -0.0000025538,0.0000025814,0.0000026154,0.0000026225,0.0000026179, -0.0000026083,0.0000025992,0.0000025932,0.0000025886,0.0000025848, -0.0000025840,0.0000025873,0.0000025921,0.0000025978,0.0000026028, -0.0000026057,0.0000026065,0.0000026075,0.0000026106,0.0000026168, -0.0000026293,0.0000026475,0.0000026620,0.0000026672,0.0000026673, -0.0000026680,0.0000026700,0.0000026727,0.0000026760,0.0000026796, -0.0000026845,0.0000026901,0.0000027005,0.0000027113,0.0000027166, -0.0000027184,0.0000027154,0.0000027098,0.0000027069,0.0000027095, -0.0000027274,0.0000027494,0.0000027556,0.0000027857,0.0000028311, -0.0000028327,0.0000028248,0.0000028166,0.0000028115,0.0000028168, -0.0000028297,0.0000028437,0.0000028435,0.0000028280,0.0000028172, -0.0000028142,0.0000028140,0.0000028096,0.0000027950,0.0000027910, -0.0000027941,0.0000027937,0.0000027940,0.0000027995,0.0000028027, -0.0000028025,0.0000028031,0.0000028049,0.0000028098,0.0000028158, -0.0000028217,0.0000028284,0.0000028371,0.0000028470,0.0000028558, -0.0000028664,0.0000028763,0.0000028843,0.0000028923,0.0000028991, -0.0000029058,0.0000029110,0.0000029145,0.0000029161,0.0000029147, -0.0000029102,0.0000029038,0.0000028960,0.0000028874,0.0000028802, -0.0000028751,0.0000028724,0.0000028719,0.0000028737,0.0000028769, -0.0000028793,0.0000028810,0.0000028804,0.0000028798,0.0000028813, -0.0000028852,0.0000028941,0.0000029051,0.0000029146,0.0000029220, -0.0000029285,0.0000029306,0.0000029293,0.0000029278,0.0000029282, -0.0000029300,0.0000029281,0.0000029155,0.0000028910,0.0000028673, -0.0000028583,0.0000028600,0.0000028663,0.0000028651,0.0000028661, -0.0000028788,0.0000028991,0.0000029201,0.0000029306,0.0000029329, -0.0000029289,0.0000029195,0.0000029129,0.0000029116,0.0000029116, -0.0000029114,0.0000029100,0.0000029064,0.0000029007,0.0000028953, -0.0000028916,0.0000028900,0.0000028890,0.0000028866,0.0000028839, -0.0000028814,0.0000028790,0.0000028771,0.0000028761,0.0000028752, -0.0000028748,0.0000028735,0.0000028716,0.0000028694,0.0000028682, -0.0000028673,0.0000028673,0.0000028677,0.0000028677,0.0000028661, -0.0000028626,0.0000028582,0.0000028553,0.0000028526,0.0000028480, -0.0000028433,0.0000028397,0.0000028368,0.0000028339,0.0000028301, -0.0000028244,0.0000028168,0.0000028109,0.0000028090,0.0000028100, -0.0000028138,0.0000028170,0.0000028179,0.0000028180,0.0000028178, -0.0000028185,0.0000028204,0.0000028217,0.0000028209,0.0000028189, -0.0000028178,0.0000028186,0.0000028211,0.0000028239,0.0000028256, -0.0000028262,0.0000028260,0.0000028255,0.0000028242,0.0000028205, -0.0000028158,0.0000028143,0.0000028163,0.0000028191,0.0000028200, -0.0000028179,0.0000028128,0.0000028100,0.0000028116,0.0000028191, -0.0000028305,0.0000028407,0.0000028464,0.0000028462,0.0000028395, -0.0000028286,0.0000028202,0.0000028158,0.0000028139,0.0000028138, -0.0000028132,0.0000028119,0.0000028121,0.0000028131,0.0000028134, -0.0000028139,0.0000028163,0.0000028217,0.0000028253,0.0000028254, -0.0000028228,0.0000028193,0.0000028153,0.0000028117,0.0000028095, -0.0000028079,0.0000028067,0.0000028071,0.0000028092,0.0000028094, -0.0000028073,0.0000028036,0.0000027976,0.0000027893,0.0000027856, -0.0000027902,0.0000028010,0.0000028120,0.0000028194,0.0000028229, -0.0000028165,0.0000028005,0.0000027797,0.0000027555,0.0000027376, -0.0000027246,0.0000027224,0.0000027231,0.0000027307,0.0000027387, -0.0000027455,0.0000027541,0.0000027649,0.0000027751,0.0000027836, -0.0000027904,0.0000027946,0.0000027967,0.0000027992,0.0000028037, -0.0000028074,0.0000028072,0.0000028017,0.0000027947,0.0000027895, -0.0000027862,0.0000027861,0.0000027896,0.0000027976,0.0000028050, -0.0000028087,0.0000028078,0.0000028040,0.0000027976,0.0000027883, -0.0000027799,0.0000027780,0.0000027836,0.0000027902,0.0000027962, -0.0000028024,0.0000028059,0.0000028056,0.0000028012,0.0000027959, -0.0000027910,0.0000027879,0.0000027868,0.0000027873,0.0000027934, -0.0000028088,0.0000028286,0.0000028447,0.0000028549,0.0000028624, -0.0000028690,0.0000028715,0.0000028700,0.0000028647,0.0000028600, -0.0000028539,0.0000028463,0.0000028340,0.0000028217,0.0000028127, -0.0000028096,0.0000028109,0.0000028170,0.0000028203,0.0000028178, -0.0000028100,0.0000028093,0.0000028182,0.0000028082,0.0000028096, -0.0000028446,0.0000028674,0.0000028728,0.0000028658,0.0000028522, -0.0000028473,0.0000028486,0.0000028481,0.0000028473,0.0000028485, -0.0000028480,0.0000028404,0.0000028271,0.0000028140,0.0000028037, -0.0000027970,0.0000027973,0.0000027965,0.0000027926,0.0000027936, -0.0000027987,0.0000028087,0.0000028235,0.0000028358,0.0000028425, -0.0000028503,0.0000028606,0.0000028658,0.0000028681,0.0000028669, -0.0000028656,0.0000028658,0.0000028692,0.0000028760,0.0000028857, -0.0000028934,0.0000028953,0.0000028931,0.0000028904,0.0000028926, -0.0000029015,0.0000029082,0.0000029109,0.0000029149,0.0000029138, -0.0000029058,0.0000028916,0.0000028759,0.0000028586,0.0000028457, -0.0000028400,0.0000028356,0.0000028337,0.0000028379,0.0000028578, -0.0000028765,0.0000028713,0.0000028413,0.0000028318,0.0000028354, -0.0000028273,0.0000028060,0.0000028024,0.0000027969,0.0000027859, -0.0000027778,0.0000027720,0.0000027669,0.0000027617,0.0000027576, -0.0000027543,0.0000027509,0.0000027475,0.0000027462,0.0000027480, -0.0000027516,0.0000027507,0.0000027466,0.0000027429,0.0000027425, -0.0000027447,0.0000027481,0.0000027482,0.0000027462,0.0000027460, -0.0000027492,0.0000027499,0.0000027450,0.0000027353,0.0000027279, -0.0000027241,0.0000027223,0.0000027219,0.0000027221,0.0000027223, -0.0000027229,0.0000027262,0.0000027306,0.0000027336,0.0000027337, -0.0000027311,0.0000027260,0.0000027195,0.0000027138,0.0000027118, -0.0000027137,0.0000027188,0.0000027248,0.0000027306,0.0000027359, -0.0000027404,0.0000027434,0.0000027441,0.0000027431,0.0000027391, -0.0000027321,0.0000027244,0.0000027186,0.0000027159,0.0000027158, -0.0000027172,0.0000027185,0.0000027188,0.0000027174,0.0000027139, -0.0000027086,0.0000027034,0.0000027002,0.0000026989,0.0000026982, -0.0000026978,0.0000026966,0.0000026935,0.0000026897,0.0000026871, -0.0000026858,0.0000026849,0.0000026840,0.0000026832,0.0000026820, -0.0000026797,0.0000026755,0.0000026693,0.0000026633,0.0000026586, -0.0000026550,0.0000026515,0.0000026477,0.0000026443,0.0000026418, -0.0000026407,0.0000026414,0.0000026443,0.0000026480,0.0000026489, -0.0000026480,0.0000026471,0.0000026502,0.0000026540,0.0000026569, -0.0000026630,0.0000026718,0.0000026800,0.0000026881,0.0000026975, -0.0000027066,0.0000027125,0.0000027161,0.0000027211,0.0000027276, -0.0000027336,0.0000027404,0.0000027487,0.0000027552,0.0000027597, -0.0000027654,0.0000027737,0.0000027827,0.0000027898,0.0000027979, -0.0000028111,0.0000028302,0.0000028493,0.0000028617,0.0000028667, -0.0000028703,0.0000028766,0.0000028886,0.0000029026,0.0000029129, -0.0000029170,0.0000029150,0.0000029109,0.0000029088,0.0000029089, -0.0000029092,0.0000029078,0.0000029039,0.0000028988,0.0000028934, -0.0000028879,0.0000028838,0.0000028807,0.0000028782,0.0000028767, -0.0000028760,0.0000028754,0.0000028749,0.0000028747,0.0000028741, -0.0000028713,0.0000028657,0.0000028615,0.0000028606,0.0000028607, -0.0000028600,0.0000028577,0.0000028556,0.0000028535,0.0000028496, -0.0000028445,0.0000028391,0.0000028343,0.0000028306,0.0000028294, -0.0000028317,0.0000028372,0.0000028409,0.0000028415,0.0000028398, -0.0000028367,0.0000028355,0.0000028349,0.0000028351,0.0000028372, -0.0000028400,0.0000028411,0.0000028399,0.0000028376,0.0000028361, -0.0000028374,0.0000028419,0.0000028458,0.0000028453,0.0000028408, -0.0000028320,0.0000028205,0.0000028112,0.0000028058,0.0000028029, -0.0000028025,0.0000028056,0.0000028120,0.0000028171,0.0000028179, -0.0000028156,0.0000028133,0.0000028132,0.0000028167,0.0000028219, -0.0000028265,0.0000028283,0.0000028280,0.0000028241,0.0000028183, -0.0000028122,0.0000028067,0.0000028015,0.0000027965,0.0000027928, -0.0000027911,0.0000027902,0.0000027891,0.0000027895,0.0000027912, -0.0000027920,0.0000027906,0.0000027868,0.0000027831,0.0000027797, -0.0000027779,0.0000027790,0.0000027860,0.0000027947,0.0000027915, -0.0000027753,0.0000027685,0.0000027707,0.0000027704,0.0000027689, -0.0000027709,0.0000027746,0.0000027760,0.0000027752,0.0000027730, -0.0000027695,0.0000027674,0.0000027689,0.0000027664,0.0000027524, -0.0000027403,0.0000027414,0.0000027475,0.0000027455,0.0000027370, -0.0000027317,0.0000027321,0.0000027375,0.0000027470,0.0000027463, -0.0000027292,0.0000027162,0.0000027173,0.0000027231,0.0000027271, -0.0000027230,0.0000027164,0.0000027180,0.0000027192,0.0000027077, -0.0000026957,0.0000026957,0.0000027003,0.0000027034,0.0000027081, -0.0000027107,0.0000027059,0.0000026974,0.0000026954,0.0000026989, -0.0000027034,0.0000027114,0.0000027232,0.0000027311,0.0000027321, -0.0000027303,0.0000027238,0.0000027137,0.0000027035,0.0000027001, -0.0000027029,0.0000027097,0.0000027142,0.0000027175,0.0000027203, -0.0000027221,0.0000027218,0.0000027197,0.0000027159,0.0000027125, -0.0000027070,0.0000026998,0.0000026931,0.0000026855,0.0000026743, -0.0000026636,0.0000026580,0.0000026561,0.0000026536,0.0000026503, -0.0000026488,0.0000026510,0.0000026548,0.0000026566,0.0000026553, -0.0000026458,0.0000026279,0.0000026042,0.0000025813,0.0000025726, -0.0000025761,0.0000025956,0.0000026349,0.0000026673,0.0000026690, -0.0000026565,0.0000026567,0.0000026657,0.0000026728,0.0000026790, -0.0000026790,0.0000026642,0.0000026358,0.0000026157,0.0000026040, -0.0000025984,0.0000025991,0.0000026003,0.0000026003,0.0000026036, -0.0000026079,0.0000026105,0.0000026090,0.0000026145,0.0000026174, -0.0000026224,0.0000026325,0.0000026464,0.0000026715,0.0000027074, -0.0000027388,0.0000027608,0.0000027800,0.0000027948,0.0000028067, -0.0000028134,0.0000028198,0.0000028274,0.0000028297,0.0000028301, -0.0000028287,0.0000028207,0.0000028031,0.0000027819,0.0000027704, -0.0000027630,0.0000027522,0.0000027453,0.0000027447,0.0000027462, -0.0000027484,0.0000027496,0.0000027507,0.0000027608,0.0000027749, -0.0000027812,0.0000027891,0.0000027904,0.0000027892,0.0000027807, -0.0000027826,0.0000027862,0.0000027955,0.0000027867,0.0000027714, -0.0000027610,0.0000027497,0.0000027536,0.0000027551,0.0000027519, -0.0000027433,0.0000027305,0.0000027235,0.0000027085,0.0000026931, -0.0000026907,0.0000026973,0.0000026986,0.0000026936,0.0000026864, -0.0000026785,0.0000026701,0.0000026601,0.0000026493,0.0000026391, -0.0000026312,0.0000026266,0.0000026250,0.0000026269,0.0000026308, -0.0000026345,0.0000026338,0.0000026280,0.0000026224,0.0000026137, -0.0000025994,0.0000025858,0.0000025759,0.0000025712,0.0000025736, -0.0000025805,0.0000025886,0.0000025935,0.0000025930,0.0000025893, -0.0000025878,0.0000025898,0.0000025927,0.0000026001,0.0000026082, -0.0000026101,0.0000026097,0.0000026064,0.0000026009,0.0000025945, -0.0000025882,0.0000025829,0.0000025786,0.0000025749,0.0000025732, -0.0000025741,0.0000025744,0.0000025733,0.0000025721,0.0000025719, -0.0000025729,0.0000025743,0.0000025754,0.0000025764,0.0000025777, -0.0000025771,0.0000025738,0.0000025671,0.0000025582,0.0000025484, -0.0000025382,0.0000025289,0.0000025231,0.0000025213,0.0000025206, -0.0000025169,0.0000025094,0.0000025014,0.0000024957,0.0000024900, -0.0000024843,0.0000024803,0.0000024769,0.0000024797,0.0000024886, -0.0000024963,0.0000024982,0.0000024970,0.0000025003,0.0000025112, -0.0000025186,0.0000025122,0.0000025106,0.0000025286,0.0000025442, -0.0000025462,0.0000025427,0.0000025400,0.0000025338,0.0000025274, -0.0000025330,0.0000025494,0.0000025560,0.0000025601,0.0000025875, -0.0000026224,0.0000026281,0.0000026217,0.0000026113,0.0000026031, -0.0000025971,0.0000025900,0.0000025824,0.0000025770,0.0000025784, -0.0000025850,0.0000025918,0.0000025977,0.0000026021,0.0000026047, -0.0000026066,0.0000026089,0.0000026120,0.0000026176,0.0000026303, -0.0000026476,0.0000026604,0.0000026645,0.0000026652,0.0000026660, -0.0000026689,0.0000026723,0.0000026780,0.0000026835,0.0000026890, -0.0000026991,0.0000027095,0.0000027152,0.0000027162,0.0000027133, -0.0000027093,0.0000027045,0.0000027084,0.0000027281,0.0000027463, -0.0000027510,0.0000027829,0.0000028284,0.0000028303,0.0000028228, -0.0000028165,0.0000028110,0.0000028146,0.0000028283,0.0000028443, -0.0000028421,0.0000028232,0.0000028135,0.0000028119,0.0000028118, -0.0000028082,0.0000027932,0.0000027896,0.0000027911,0.0000027904, -0.0000027929,0.0000027989,0.0000028017,0.0000028016,0.0000028039, -0.0000028095,0.0000028181,0.0000028252,0.0000028314,0.0000028374, -0.0000028456,0.0000028559,0.0000028648,0.0000028744,0.0000028814, -0.0000028863,0.0000028929,0.0000028969,0.0000028990,0.0000029002, -0.0000028997,0.0000028983,0.0000028950,0.0000028910,0.0000028869, -0.0000028818,0.0000028768,0.0000028717,0.0000028686,0.0000028667, -0.0000028661,0.0000028672,0.0000028680,0.0000028668,0.0000028661, -0.0000028670,0.0000028722,0.0000028817,0.0000028921,0.0000029019, -0.0000029095,0.0000029159,0.0000029233,0.0000029303,0.0000029333, -0.0000029327,0.0000029314,0.0000029317,0.0000029316,0.0000029265, -0.0000029129,0.0000028906,0.0000028650,0.0000028552,0.0000028602, -0.0000028667,0.0000028625,0.0000028635,0.0000028770,0.0000028982, -0.0000029184,0.0000029280,0.0000029303,0.0000029275,0.0000029207, -0.0000029141,0.0000029118,0.0000029101,0.0000029084,0.0000029070, -0.0000029034,0.0000028983,0.0000028915,0.0000028872,0.0000028829, -0.0000028792,0.0000028744,0.0000028694,0.0000028650,0.0000028615, -0.0000028590,0.0000028579,0.0000028576,0.0000028585,0.0000028588, -0.0000028586,0.0000028582,0.0000028586,0.0000028591,0.0000028608, -0.0000028637,0.0000028661,0.0000028666,0.0000028647,0.0000028613, -0.0000028590,0.0000028575,0.0000028541,0.0000028498,0.0000028460, -0.0000028430,0.0000028401,0.0000028371,0.0000028326,0.0000028273, -0.0000028224,0.0000028188,0.0000028167,0.0000028177,0.0000028199, -0.0000028205,0.0000028196,0.0000028173,0.0000028163,0.0000028183, -0.0000028221,0.0000028234,0.0000028214,0.0000028177,0.0000028157, -0.0000028164,0.0000028192,0.0000028220,0.0000028225,0.0000028214, -0.0000028211,0.0000028225,0.0000028241,0.0000028232,0.0000028209, -0.0000028193,0.0000028196,0.0000028209,0.0000028208,0.0000028177, -0.0000028139,0.0000028130,0.0000028158,0.0000028240,0.0000028340, -0.0000028424,0.0000028455,0.0000028425,0.0000028341,0.0000028251, -0.0000028183,0.0000028120,0.0000028077,0.0000028062,0.0000028057, -0.0000028058,0.0000028069,0.0000028086,0.0000028102,0.0000028114, -0.0000028141,0.0000028205,0.0000028253,0.0000028250,0.0000028219, -0.0000028169,0.0000028119,0.0000028081,0.0000028072,0.0000028079, -0.0000028086,0.0000028090,0.0000028092,0.0000028067,0.0000028039, -0.0000028014,0.0000027987,0.0000027934,0.0000027898,0.0000027910, -0.0000027961,0.0000028067,0.0000028176,0.0000028234,0.0000028225, -0.0000028154,0.0000028048,0.0000027896,0.0000027717,0.0000027501, -0.0000027327,0.0000027219,0.0000027204,0.0000027228,0.0000027285, -0.0000027382,0.0000027508,0.0000027616,0.0000027704,0.0000027799, -0.0000027890,0.0000027953,0.0000027972,0.0000027981,0.0000027998, -0.0000027996,0.0000027944,0.0000027869,0.0000027809,0.0000027778, -0.0000027773,0.0000027797,0.0000027871,0.0000027974,0.0000028050, -0.0000028046,0.0000028005,0.0000027957,0.0000027876,0.0000027774, -0.0000027705,0.0000027711,0.0000027749,0.0000027793,0.0000027854, -0.0000027937,0.0000028019,0.0000028054,0.0000028057,0.0000027985, -0.0000027892,0.0000027828,0.0000027784,0.0000027781,0.0000027852, -0.0000028002,0.0000028181,0.0000028356,0.0000028513,0.0000028647, -0.0000028706,0.0000028694,0.0000028654,0.0000028620,0.0000028567, -0.0000028485,0.0000028361,0.0000028234,0.0000028130,0.0000028106, -0.0000028124,0.0000028180,0.0000028232,0.0000028223,0.0000028143, -0.0000028116,0.0000028214,0.0000028129,0.0000028060,0.0000028378, -0.0000028647,0.0000028719,0.0000028668,0.0000028538,0.0000028479, -0.0000028487,0.0000028495,0.0000028490,0.0000028480,0.0000028425, -0.0000028294,0.0000028141,0.0000028025,0.0000027955,0.0000027892, -0.0000027924,0.0000027967,0.0000027953,0.0000027952,0.0000027993, -0.0000028084,0.0000028205,0.0000028300,0.0000028365,0.0000028447, -0.0000028552,0.0000028630,0.0000028672,0.0000028666,0.0000028654, -0.0000028634,0.0000028626,0.0000028656,0.0000028744,0.0000028856, -0.0000028917,0.0000028917,0.0000028887,0.0000028867,0.0000028911, -0.0000029023,0.0000029086,0.0000029104,0.0000029119,0.0000029119, -0.0000029052,0.0000028930,0.0000028751,0.0000028553,0.0000028431, -0.0000028377,0.0000028348,0.0000028384,0.0000028594,0.0000028768, -0.0000028659,0.0000028361,0.0000028318,0.0000028353,0.0000028264, -0.0000028049,0.0000027978,0.0000027913,0.0000027826,0.0000027768, -0.0000027735,0.0000027721,0.0000027691,0.0000027631,0.0000027576, -0.0000027537,0.0000027495,0.0000027457,0.0000027441,0.0000027466, -0.0000027503,0.0000027501,0.0000027472,0.0000027437,0.0000027427, -0.0000027436,0.0000027457,0.0000027466,0.0000027440,0.0000027412, -0.0000027425,0.0000027482,0.0000027518,0.0000027505,0.0000027423, -0.0000027322,0.0000027255,0.0000027232,0.0000027230,0.0000027239, -0.0000027248,0.0000027253,0.0000027265,0.0000027294,0.0000027321, -0.0000027330,0.0000027321,0.0000027298,0.0000027267,0.0000027238, -0.0000027220,0.0000027223,0.0000027243,0.0000027267,0.0000027282, -0.0000027298,0.0000027330,0.0000027382,0.0000027436,0.0000027470, -0.0000027474,0.0000027457,0.0000027405,0.0000027342,0.0000027291, -0.0000027262,0.0000027247,0.0000027233,0.0000027213,0.0000027183, -0.0000027136,0.0000027088,0.0000027063,0.0000027053,0.0000027051, -0.0000027050,0.0000027037,0.0000027008,0.0000026972,0.0000026937, -0.0000026904,0.0000026875,0.0000026847,0.0000026823,0.0000026801, -0.0000026773,0.0000026734,0.0000026699,0.0000026681,0.0000026661, -0.0000026630,0.0000026588,0.0000026543,0.0000026508,0.0000026489, -0.0000026481,0.0000026486,0.0000026510,0.0000026539,0.0000026544, -0.0000026516,0.0000026466,0.0000026416,0.0000026398,0.0000026407, -0.0000026458,0.0000026535,0.0000026614,0.0000026704,0.0000026801, -0.0000026894,0.0000026955,0.0000027002,0.0000027078,0.0000027176, -0.0000027269,0.0000027367,0.0000027470,0.0000027547,0.0000027593, -0.0000027640,0.0000027702,0.0000027777,0.0000027863,0.0000027964, -0.0000028071,0.0000028204,0.0000028366,0.0000028520,0.0000028625, -0.0000028659,0.0000028661,0.0000028692,0.0000028775,0.0000028897, -0.0000029008,0.0000029054,0.0000029051,0.0000029055,0.0000029070, -0.0000029080,0.0000029076,0.0000029056,0.0000029026,0.0000028982, -0.0000028911,0.0000028838,0.0000028779,0.0000028735,0.0000028713, -0.0000028712,0.0000028722,0.0000028730,0.0000028733,0.0000028730, -0.0000028712,0.0000028681,0.0000028656,0.0000028648,0.0000028645, -0.0000028630,0.0000028595,0.0000028560,0.0000028528,0.0000028487, -0.0000028433,0.0000028377,0.0000028335,0.0000028310,0.0000028320, -0.0000028352,0.0000028414,0.0000028468,0.0000028490,0.0000028475, -0.0000028440,0.0000028414,0.0000028391,0.0000028379,0.0000028390, -0.0000028427,0.0000028467,0.0000028480,0.0000028464,0.0000028435, -0.0000028420,0.0000028436,0.0000028469,0.0000028474,0.0000028444, -0.0000028370,0.0000028269,0.0000028178,0.0000028119,0.0000028087, -0.0000028074,0.0000028077,0.0000028101,0.0000028144,0.0000028163, -0.0000028150,0.0000028131,0.0000028129,0.0000028156,0.0000028196, -0.0000028228,0.0000028234,0.0000028219,0.0000028180,0.0000028136, -0.0000028097,0.0000028067,0.0000028039,0.0000028008,0.0000027974, -0.0000027948,0.0000027932,0.0000027920,0.0000027922,0.0000027957, -0.0000027999,0.0000028016,0.0000028006,0.0000027952,0.0000027884, -0.0000027818,0.0000027784,0.0000027788,0.0000027858,0.0000027946, -0.0000027888,0.0000027721,0.0000027668,0.0000027699,0.0000027674, -0.0000027647,0.0000027664,0.0000027693,0.0000027700,0.0000027686, -0.0000027651,0.0000027652,0.0000027680,0.0000027626,0.0000027469, -0.0000027406,0.0000027447,0.0000027430,0.0000027329,0.0000027249, -0.0000027244,0.0000027251,0.0000027313,0.0000027444,0.0000027498, -0.0000027337,0.0000027169,0.0000027157,0.0000027216,0.0000027269, -0.0000027251,0.0000027183,0.0000027185,0.0000027215,0.0000027149, -0.0000027007,0.0000026963,0.0000027004,0.0000027046,0.0000027076, -0.0000027126,0.0000027136,0.0000027067,0.0000026990,0.0000026979, -0.0000027005,0.0000027039,0.0000027118,0.0000027240,0.0000027314, -0.0000027316,0.0000027281,0.0000027218,0.0000027128,0.0000027034, -0.0000026986,0.0000026997,0.0000027052,0.0000027098,0.0000027127, -0.0000027147,0.0000027158,0.0000027161,0.0000027152,0.0000027134, -0.0000027105,0.0000027057,0.0000027001,0.0000026947,0.0000026862, -0.0000026741,0.0000026637,0.0000026582,0.0000026555,0.0000026522, -0.0000026477,0.0000026459,0.0000026479,0.0000026522,0.0000026553, -0.0000026554,0.0000026483,0.0000026333,0.0000026110,0.0000025845, -0.0000025679,0.0000025677,0.0000025788,0.0000026084,0.0000026494, -0.0000026665,0.0000026581,0.0000026524,0.0000026592,0.0000026674, -0.0000026728,0.0000026766,0.0000026726,0.0000026510,0.0000026260, -0.0000026126,0.0000026038,0.0000025973,0.0000025915,0.0000025895, -0.0000025921,0.0000025964,0.0000025996,0.0000026022,0.0000026043, -0.0000026058,0.0000026108,0.0000026158,0.0000026213,0.0000026312, -0.0000026534,0.0000026932,0.0000027334,0.0000027585,0.0000027790, -0.0000027955,0.0000028073,0.0000028138,0.0000028251,0.0000028286, -0.0000028288,0.0000028279,0.0000028232,0.0000028083,0.0000027866, -0.0000027722,0.0000027661,0.0000027609,0.0000027572,0.0000027559, -0.0000027551,0.0000027538,0.0000027517,0.0000027554,0.0000027697, -0.0000027776,0.0000027847,0.0000027900,0.0000027902,0.0000027849, -0.0000027790,0.0000027832,0.0000027883,0.0000027962,0.0000027858, -0.0000027709,0.0000027582,0.0000027475,0.0000027527,0.0000027529, -0.0000027503,0.0000027397,0.0000027262,0.0000027201,0.0000027071, -0.0000026947,0.0000026868,0.0000026870,0.0000026914,0.0000026929, -0.0000026918,0.0000026884,0.0000026849,0.0000026785,0.0000026698, -0.0000026587,0.0000026471,0.0000026380,0.0000026321,0.0000026298, -0.0000026298,0.0000026327,0.0000026355,0.0000026347,0.0000026283, -0.0000026197,0.0000026084,0.0000025949,0.0000025836,0.0000025765, -0.0000025759,0.0000025792,0.0000025848,0.0000025889,0.0000025899, -0.0000025894,0.0000025898,0.0000025931,0.0000025974,0.0000026048, -0.0000026126,0.0000026153,0.0000026153,0.0000026129,0.0000026080, -0.0000026013,0.0000025950,0.0000025900,0.0000025864,0.0000025838, -0.0000025834,0.0000025837,0.0000025830,0.0000025807,0.0000025771, -0.0000025749,0.0000025748,0.0000025755,0.0000025762,0.0000025762, -0.0000025769,0.0000025764,0.0000025738,0.0000025684,0.0000025607, -0.0000025521,0.0000025430,0.0000025349,0.0000025292,0.0000025262, -0.0000025241,0.0000025206,0.0000025146,0.0000025069,0.0000024994, -0.0000024908,0.0000024833,0.0000024807,0.0000024815,0.0000024812, -0.0000024796,0.0000024844,0.0000024943,0.0000024992,0.0000025004, -0.0000025010,0.0000025059,0.0000025163,0.0000025187,0.0000025146, -0.0000025241,0.0000025467,0.0000025527,0.0000025488,0.0000025435, -0.0000025343,0.0000025254,0.0000025299,0.0000025513,0.0000025618, -0.0000025670,0.0000025952,0.0000026286,0.0000026311,0.0000026237, -0.0000026149,0.0000026097,0.0000026042,0.0000025958,0.0000025850, -0.0000025754,0.0000025734,0.0000025788,0.0000025881,0.0000025952, -0.0000026000,0.0000026030,0.0000026056,0.0000026085,0.0000026109, -0.0000026127,0.0000026175,0.0000026298,0.0000026461,0.0000026581, -0.0000026621,0.0000026645,0.0000026676,0.0000026721,0.0000026781, -0.0000026833,0.0000026886,0.0000026973,0.0000027067,0.0000027125, -0.0000027136,0.0000027121,0.0000027073,0.0000027014,0.0000027072, -0.0000027284,0.0000027422,0.0000027463,0.0000027800,0.0000028255, -0.0000028275,0.0000028196,0.0000028152,0.0000028117,0.0000028156, -0.0000028284,0.0000028435,0.0000028398,0.0000028186,0.0000028097, -0.0000028099,0.0000028103,0.0000028082,0.0000027934,0.0000027882, -0.0000027888,0.0000027895,0.0000027953,0.0000028018,0.0000028040, -0.0000028047,0.0000028081,0.0000028165,0.0000028257,0.0000028324, -0.0000028381,0.0000028443,0.0000028521,0.0000028603,0.0000028671, -0.0000028733,0.0000028762,0.0000028763,0.0000028790,0.0000028812, -0.0000028820,0.0000028825,0.0000028833,0.0000028846,0.0000028849, -0.0000028836,0.0000028806,0.0000028764,0.0000028713,0.0000028657, -0.0000028608,0.0000028574,0.0000028549,0.0000028531,0.0000028510, -0.0000028496,0.0000028526,0.0000028602,0.0000028716,0.0000028834, -0.0000028928,0.0000029011,0.0000029083,0.0000029167,0.0000029257, -0.0000029332,0.0000029365,0.0000029363,0.0000029345,0.0000029340, -0.0000029320,0.0000029245,0.0000029095,0.0000028905,0.0000028635, -0.0000028523,0.0000028595,0.0000028663,0.0000028600,0.0000028607, -0.0000028735,0.0000028936,0.0000029120,0.0000029238,0.0000029273, -0.0000029264,0.0000029219,0.0000029168,0.0000029131,0.0000029091, -0.0000029067,0.0000029040,0.0000029012,0.0000028963,0.0000028896, -0.0000028833,0.0000028761,0.0000028697,0.0000028613,0.0000028536, -0.0000028466,0.0000028410,0.0000028371,0.0000028350,0.0000028352, -0.0000028364,0.0000028375,0.0000028385,0.0000028396,0.0000028413, -0.0000028436,0.0000028470,0.0000028517,0.0000028567,0.0000028609, -0.0000028625,0.0000028616,0.0000028611,0.0000028610,0.0000028595, -0.0000028580,0.0000028549,0.0000028517,0.0000028484,0.0000028450, -0.0000028414,0.0000028371,0.0000028338,0.0000028309,0.0000028273, -0.0000028255,0.0000028258,0.0000028257,0.0000028239,0.0000028201, -0.0000028162,0.0000028161,0.0000028199,0.0000028238,0.0000028242, -0.0000028208,0.0000028161,0.0000028129,0.0000028123,0.0000028141, -0.0000028177,0.0000028199,0.0000028203,0.0000028205,0.0000028224, -0.0000028253,0.0000028271,0.0000028269,0.0000028258,0.0000028257, -0.0000028258,0.0000028244,0.0000028215,0.0000028189,0.0000028186, -0.0000028221,0.0000028288,0.0000028359,0.0000028409,0.0000028412, -0.0000028360,0.0000028283,0.0000028221,0.0000028152,0.0000028077, -0.0000028024,0.0000028001,0.0000027999,0.0000028002,0.0000028005, -0.0000028020,0.0000028047,0.0000028067,0.0000028102,0.0000028173, -0.0000028227,0.0000028227,0.0000028187,0.0000028130,0.0000028083, -0.0000028071,0.0000028086,0.0000028097,0.0000028095,0.0000028088, -0.0000028074,0.0000028038,0.0000028014,0.0000028001,0.0000027986, -0.0000027966,0.0000027947,0.0000027937,0.0000027965,0.0000028032, -0.0000028145,0.0000028224,0.0000028226,0.0000028194,0.0000028149, -0.0000028111,0.0000028042,0.0000027893,0.0000027670,0.0000027424, -0.0000027248,0.0000027176,0.0000027156,0.0000027230,0.0000027365, -0.0000027492,0.0000027590,0.0000027695,0.0000027816,0.0000027928, -0.0000027969,0.0000027961,0.0000027951,0.0000027940,0.0000027902, -0.0000027828,0.0000027749,0.0000027706,0.0000027693,0.0000027712, -0.0000027771,0.0000027881,0.0000027993,0.0000028016,0.0000027972, -0.0000027918,0.0000027851,0.0000027759,0.0000027671,0.0000027613, -0.0000027615,0.0000027643,0.0000027693,0.0000027777,0.0000027888, -0.0000028001,0.0000028070,0.0000028032,0.0000027935,0.0000027817, -0.0000027722,0.0000027693,0.0000027725,0.0000027812,0.0000027932, -0.0000028089,0.0000028286,0.0000028494,0.0000028615,0.0000028643, -0.0000028638,0.0000028615,0.0000028565,0.0000028480,0.0000028359, -0.0000028243,0.0000028138,0.0000028112,0.0000028145,0.0000028196, -0.0000028262,0.0000028267,0.0000028186,0.0000028146,0.0000028242, -0.0000028182,0.0000028049,0.0000028303,0.0000028615,0.0000028708, -0.0000028669,0.0000028556,0.0000028505,0.0000028514,0.0000028517, -0.0000028490,0.0000028434,0.0000028309,0.0000028144,0.0000028018, -0.0000027951,0.0000027913,0.0000027833,0.0000027860,0.0000027951, -0.0000027967,0.0000027970,0.0000028010,0.0000028102,0.0000028201, -0.0000028263,0.0000028306,0.0000028391,0.0000028487,0.0000028578, -0.0000028642,0.0000028659,0.0000028663,0.0000028635,0.0000028597, -0.0000028586,0.0000028630,0.0000028743,0.0000028843,0.0000028873, -0.0000028853,0.0000028842,0.0000028849,0.0000028920,0.0000029041, -0.0000029086,0.0000029067,0.0000029093,0.0000029096,0.0000029046, -0.0000028906,0.0000028686,0.0000028491,0.0000028408,0.0000028367, -0.0000028403,0.0000028621,0.0000028762,0.0000028596,0.0000028318, -0.0000028324,0.0000028354,0.0000028258,0.0000028037,0.0000027916, -0.0000027837,0.0000027773,0.0000027747,0.0000027760,0.0000027802, -0.0000027811,0.0000027750,0.0000027653,0.0000027583,0.0000027532, -0.0000027482,0.0000027433,0.0000027412,0.0000027435,0.0000027486, -0.0000027504,0.0000027491,0.0000027471,0.0000027457,0.0000027450, -0.0000027450,0.0000027450,0.0000027438,0.0000027410,0.0000027397, -0.0000027425,0.0000027484,0.0000027536,0.0000027547,0.0000027519, -0.0000027434,0.0000027331,0.0000027260,0.0000027240,0.0000027253, -0.0000027276,0.0000027287,0.0000027280,0.0000027272,0.0000027281, -0.0000027306,0.0000027332,0.0000027349,0.0000027362,0.0000027355, -0.0000027327,0.0000027300,0.0000027290,0.0000027290,0.0000027287, -0.0000027284,0.0000027299,0.0000027345,0.0000027408,0.0000027465, -0.0000027495,0.0000027499,0.0000027486,0.0000027465,0.0000027436, -0.0000027395,0.0000027345,0.0000027299,0.0000027255,0.0000027208, -0.0000027165,0.0000027136,0.0000027120,0.0000027109,0.0000027096, -0.0000027079,0.0000027061,0.0000027033,0.0000026996,0.0000026959, -0.0000026923,0.0000026888,0.0000026852,0.0000026814,0.0000026770, -0.0000026735,0.0000026714,0.0000026711,0.0000026707,0.0000026689, -0.0000026663,0.0000026635,0.0000026611,0.0000026599,0.0000026589, -0.0000026584,0.0000026586,0.0000026590,0.0000026590,0.0000026564, -0.0000026486,0.0000026385,0.0000026308,0.0000026292,0.0000026317, -0.0000026372,0.0000026440,0.0000026524,0.0000026623,0.0000026722, -0.0000026796,0.0000026860,0.0000026950,0.0000027062,0.0000027173, -0.0000027294,0.0000027422,0.0000027526,0.0000027595,0.0000027651, -0.0000027702,0.0000027752,0.0000027821,0.0000027921,0.0000028031, -0.0000028131,0.0000028226,0.0000028341,0.0000028462,0.0000028540, -0.0000028560,0.0000028555,0.0000028574,0.0000028667,0.0000028824, -0.0000028963,0.0000029034,0.0000029062,0.0000029077,0.0000029082, -0.0000029079,0.0000029062,0.0000029039,0.0000028993,0.0000028921, -0.0000028835,0.0000028758,0.0000028701,0.0000028674,0.0000028677, -0.0000028692,0.0000028712,0.0000028728,0.0000028735,0.0000028733, -0.0000028724,0.0000028711,0.0000028694,0.0000028670,0.0000028635, -0.0000028601,0.0000028581,0.0000028561,0.0000028521,0.0000028451, -0.0000028387,0.0000028337,0.0000028309,0.0000028333,0.0000028382, -0.0000028449,0.0000028516,0.0000028553,0.0000028547,0.0000028510, -0.0000028463,0.0000028416,0.0000028387,0.0000028393,0.0000028436, -0.0000028493,0.0000028521,0.0000028511,0.0000028473,0.0000028435, -0.0000028425,0.0000028451,0.0000028482,0.0000028487,0.0000028454, -0.0000028393,0.0000028329,0.0000028281,0.0000028246,0.0000028215, -0.0000028193,0.0000028182,0.0000028181,0.0000028178,0.0000028157, -0.0000028134,0.0000028128,0.0000028141,0.0000028170,0.0000028204, -0.0000028226,0.0000028233,0.0000028218,0.0000028177,0.0000028121, -0.0000028059,0.0000027991,0.0000027921,0.0000027856,0.0000027800, -0.0000027762,0.0000027744,0.0000027750,0.0000027801,0.0000027899, -0.0000027992,0.0000028035,0.0000028030,0.0000027987,0.0000027898, -0.0000027810,0.0000027768,0.0000027774,0.0000027849,0.0000027924, -0.0000027842,0.0000027668,0.0000027638,0.0000027664,0.0000027641, -0.0000027615,0.0000027622,0.0000027638,0.0000027629,0.0000027611, -0.0000027637,0.0000027654,0.0000027559,0.0000027423,0.0000027413, -0.0000027454,0.0000027383,0.0000027245,0.0000027220,0.0000027269, -0.0000027318,0.0000027367,0.0000027476,0.0000027520,0.0000027372, -0.0000027179,0.0000027143,0.0000027198,0.0000027269,0.0000027279, -0.0000027214,0.0000027192,0.0000027228,0.0000027203,0.0000027081, -0.0000026985,0.0000026997,0.0000027056,0.0000027090,0.0000027123, -0.0000027166,0.0000027160,0.0000027093,0.0000027028,0.0000027012, -0.0000027025,0.0000027054,0.0000027130,0.0000027251,0.0000027319, -0.0000027305,0.0000027258,0.0000027208,0.0000027131,0.0000027042, -0.0000026971,0.0000026970,0.0000027015,0.0000027057,0.0000027076, -0.0000027084,0.0000027088,0.0000027090,0.0000027086,0.0000027089, -0.0000027079,0.0000027055,0.0000027019,0.0000026960,0.0000026856, -0.0000026730,0.0000026635,0.0000026579,0.0000026542,0.0000026500, -0.0000026447,0.0000026425,0.0000026445,0.0000026497,0.0000026537, -0.0000026544,0.0000026505,0.0000026372,0.0000026159,0.0000025894, -0.0000025677,0.0000025622,0.0000025686,0.0000025865,0.0000026227, -0.0000026569,0.0000026606,0.0000026507,0.0000026506,0.0000026603, -0.0000026670,0.0000026712,0.0000026721,0.0000026656,0.0000026425, -0.0000026215,0.0000026130,0.0000026071,0.0000025962,0.0000025892, -0.0000025878,0.0000025883,0.0000025903,0.0000025944,0.0000025939, -0.0000025927,0.0000025940,0.0000025951,0.0000026012,0.0000026118, -0.0000026237,0.0000026434,0.0000026861,0.0000027332,0.0000027596, -0.0000027824,0.0000027983,0.0000028074,0.0000028201,0.0000028262, -0.0000028265,0.0000028259,0.0000028231,0.0000028133,0.0000027946, -0.0000027769,0.0000027674,0.0000027641,0.0000027623,0.0000027608, -0.0000027583,0.0000027541,0.0000027536,0.0000027633,0.0000027736, -0.0000027795,0.0000027875,0.0000027907,0.0000027890,0.0000027791, -0.0000027779,0.0000027835,0.0000027904,0.0000027962,0.0000027845, -0.0000027696,0.0000027551,0.0000027468,0.0000027513,0.0000027503, -0.0000027479,0.0000027356,0.0000027218,0.0000027169,0.0000027076, -0.0000027002,0.0000026905,0.0000026854,0.0000026850,0.0000026853, -0.0000026868,0.0000026874,0.0000026872,0.0000026861,0.0000026831, -0.0000026800,0.0000026719,0.0000026597,0.0000026469,0.0000026384, -0.0000026353,0.0000026352,0.0000026367,0.0000026379,0.0000026353, -0.0000026260,0.0000026145,0.0000026028,0.0000025918,0.0000025848, -0.0000025831,0.0000025824,0.0000025832,0.0000025852,0.0000025867, -0.0000025892,0.0000025919,0.0000025967,0.0000026021,0.0000026090, -0.0000026157,0.0000026184,0.0000026182,0.0000026160,0.0000026119, -0.0000026061,0.0000026012,0.0000025973,0.0000025944,0.0000025931, -0.0000025939,0.0000025933,0.0000025911,0.0000025872,0.0000025818, -0.0000025778,0.0000025769,0.0000025778,0.0000025773,0.0000025756, -0.0000025760,0.0000025762,0.0000025743,0.0000025700,0.0000025638, -0.0000025558,0.0000025472,0.0000025397,0.0000025348,0.0000025325, -0.0000025307,0.0000025271,0.0000025221,0.0000025157,0.0000025087, -0.0000024989,0.0000024873,0.0000024792,0.0000024781,0.0000024822, -0.0000024862,0.0000024839,0.0000024824,0.0000024893,0.0000024987, -0.0000025025,0.0000025026,0.0000025027,0.0000025117,0.0000025212, -0.0000025185,0.0000025213,0.0000025433,0.0000025562,0.0000025531, -0.0000025450,0.0000025334,0.0000025235,0.0000025292,0.0000025549, -0.0000025668,0.0000025728,0.0000026029,0.0000026308,0.0000026309, -0.0000026236,0.0000026190,0.0000026166,0.0000026109,0.0000026016, -0.0000025904,0.0000025804,0.0000025748,0.0000025771,0.0000025865, -0.0000025952,0.0000025996,0.0000026014,0.0000026028,0.0000026054, -0.0000026084,0.0000026096,0.0000026112,0.0000026161,0.0000026295, -0.0000026477,0.0000026606,0.0000026662,0.0000026702,0.0000026750, -0.0000026799,0.0000026838,0.0000026884,0.0000026955,0.0000027032, -0.0000027090,0.0000027112,0.0000027104,0.0000027040,0.0000026982, -0.0000027062,0.0000027282,0.0000027372,0.0000027415,0.0000027771, -0.0000028221,0.0000028240,0.0000028154,0.0000028126,0.0000028128, -0.0000028188,0.0000028306,0.0000028414,0.0000028360,0.0000028136, -0.0000028057,0.0000028080,0.0000028082,0.0000028096,0.0000027955, -0.0000027874,0.0000027865,0.0000027895,0.0000027979,0.0000028052, -0.0000028074,0.0000028080,0.0000028111,0.0000028179,0.0000028262, -0.0000028332,0.0000028396,0.0000028457,0.0000028509,0.0000028555, -0.0000028611,0.0000028648,0.0000028657,0.0000028651,0.0000028655, -0.0000028679,0.0000028703,0.0000028728,0.0000028754,0.0000028778, -0.0000028779,0.0000028763,0.0000028726,0.0000028680,0.0000028621, -0.0000028555,0.0000028479,0.0000028416,0.0000028380,0.0000028370, -0.0000028380,0.0000028416,0.0000028489,0.0000028574,0.0000028681, -0.0000028779,0.0000028865,0.0000028966,0.0000029070,0.0000029183, -0.0000029281,0.0000029350,0.0000029386,0.0000029383,0.0000029359, -0.0000029345,0.0000029312,0.0000029216,0.0000029054,0.0000028899, -0.0000028626,0.0000028482,0.0000028561,0.0000028648,0.0000028585, -0.0000028576,0.0000028676,0.0000028860,0.0000029017,0.0000029155, -0.0000029231,0.0000029249,0.0000029233,0.0000029197,0.0000029155, -0.0000029104,0.0000029063,0.0000029019,0.0000028980,0.0000028922, -0.0000028856,0.0000028778,0.0000028686,0.0000028601,0.0000028497, -0.0000028401,0.0000028324,0.0000028259,0.0000028207,0.0000028173, -0.0000028163,0.0000028158,0.0000028162,0.0000028173,0.0000028184, -0.0000028193,0.0000028216,0.0000028253,0.0000028299,0.0000028352, -0.0000028410,0.0000028460,0.0000028486,0.0000028514,0.0000028548, -0.0000028570,0.0000028585,0.0000028586,0.0000028568,0.0000028535, -0.0000028494,0.0000028455,0.0000028415,0.0000028391,0.0000028384, -0.0000028361,0.0000028336,0.0000028326,0.0000028317,0.0000028292, -0.0000028241,0.0000028185,0.0000028164,0.0000028184,0.0000028226, -0.0000028248,0.0000028244,0.0000028214,0.0000028165,0.0000028122, -0.0000028096,0.0000028094,0.0000028122,0.0000028167,0.0000028201, -0.0000028224,0.0000028249,0.0000028284,0.0000028308,0.0000028309, -0.0000028305,0.0000028304,0.0000028296,0.0000028273,0.0000028244, -0.0000028227,0.0000028230,0.0000028258,0.0000028305,0.0000028341, -0.0000028349,0.0000028320,0.0000028264,0.0000028219,0.0000028166, -0.0000028094,0.0000028026,0.0000027980,0.0000027959,0.0000027952, -0.0000027946,0.0000027945,0.0000027957,0.0000027981,0.0000028012, -0.0000028057,0.0000028131,0.0000028182,0.0000028181,0.0000028134, -0.0000028080,0.0000028062,0.0000028080,0.0000028115,0.0000028115, -0.0000028090,0.0000028063,0.0000028033,0.0000028014,0.0000028003, -0.0000027992,0.0000027969,0.0000027964,0.0000027968,0.0000027980, -0.0000027995,0.0000028046,0.0000028124,0.0000028190,0.0000028211, -0.0000028197,0.0000028179,0.0000028191,0.0000028205,0.0000028164, -0.0000028027,0.0000027781,0.0000027490,0.0000027248,0.0000027131, -0.0000027141,0.0000027242,0.0000027375,0.0000027497,0.0000027612, -0.0000027737,0.0000027873,0.0000027953,0.0000027958,0.0000027936, -0.0000027902,0.0000027870,0.0000027800,0.0000027704,0.0000027642, -0.0000027625,0.0000027645,0.0000027691,0.0000027786,0.0000027916, -0.0000027978,0.0000027945,0.0000027875,0.0000027812,0.0000027750, -0.0000027663,0.0000027574,0.0000027520,0.0000027531,0.0000027571, -0.0000027632,0.0000027721,0.0000027848,0.0000027970,0.0000028005, -0.0000027948,0.0000027831,0.0000027693,0.0000027626,0.0000027649, -0.0000027721,0.0000027803,0.0000027894,0.0000028044,0.0000028241, -0.0000028399,0.0000028495,0.0000028553,0.0000028557,0.0000028530, -0.0000028455,0.0000028339,0.0000028232,0.0000028141,0.0000028118, -0.0000028168,0.0000028221,0.0000028292,0.0000028305,0.0000028226, -0.0000028171,0.0000028262,0.0000028229,0.0000028050,0.0000028226, -0.0000028579,0.0000028702,0.0000028668,0.0000028574,0.0000028536, -0.0000028546,0.0000028528,0.0000028473,0.0000028352,0.0000028175, -0.0000028030,0.0000027957,0.0000027940,0.0000027914,0.0000027821, -0.0000027808,0.0000027911,0.0000027964,0.0000027983,0.0000028032, -0.0000028125,0.0000028209,0.0000028248,0.0000028262,0.0000028336, -0.0000028431,0.0000028528,0.0000028607,0.0000028654,0.0000028680, -0.0000028652,0.0000028598,0.0000028551,0.0000028552,0.0000028633, -0.0000028749,0.0000028809,0.0000028799,0.0000028803,0.0000028831, -0.0000028859,0.0000028949,0.0000029065,0.0000029049,0.0000029032, -0.0000029078,0.0000029092,0.0000029014,0.0000028817,0.0000028569, -0.0000028448,0.0000028390,0.0000028435,0.0000028653,0.0000028746, -0.0000028528,0.0000028288,0.0000028332,0.0000028355,0.0000028253, -0.0000028024,0.0000027853,0.0000027758,0.0000027716,0.0000027719, -0.0000027781,0.0000027862,0.0000027891,0.0000027845,0.0000027729, -0.0000027622,0.0000027559,0.0000027518,0.0000027466,0.0000027407, -0.0000027377,0.0000027389,0.0000027449,0.0000027495,0.0000027498, -0.0000027493,0.0000027493,0.0000027491,0.0000027476,0.0000027459, -0.0000027445,0.0000027436,0.0000027431,0.0000027432,0.0000027445, -0.0000027481,0.0000027529,0.0000027584,0.0000027604,0.0000027583, -0.0000027485,0.0000027370,0.0000027293,0.0000027273,0.0000027287, -0.0000027300,0.0000027288,0.0000027259,0.0000027250,0.0000027281, -0.0000027344,0.0000027402,0.0000027428,0.0000027424,0.0000027395, -0.0000027365,0.0000027345,0.0000027331,0.0000027314,0.0000027297, -0.0000027297,0.0000027327,0.0000027377,0.0000027425,0.0000027464, -0.0000027490,0.0000027501,0.0000027496,0.0000027478,0.0000027455, -0.0000027436,0.0000027412,0.0000027377,0.0000027332,0.0000027294, -0.0000027264,0.0000027230,0.0000027194,0.0000027161,0.0000027129, -0.0000027088,0.0000027044,0.0000027002,0.0000026964,0.0000026929, -0.0000026892,0.0000026856,0.0000026832,0.0000026810,0.0000026792, -0.0000026778,0.0000026757,0.0000026728,0.0000026709,0.0000026705, -0.0000026709,0.0000026721,0.0000026724,0.0000026716,0.0000026688, -0.0000026647,0.0000026613,0.0000026587,0.0000026519,0.0000026392, -0.0000026285,0.0000026230,0.0000026230,0.0000026253,0.0000026293, -0.0000026355,0.0000026445,0.0000026547,0.0000026641,0.0000026736, -0.0000026849,0.0000026965,0.0000027073,0.0000027192,0.0000027333, -0.0000027471,0.0000027585,0.0000027665,0.0000027717,0.0000027756, -0.0000027792,0.0000027863,0.0000027970,0.0000028065,0.0000028121, -0.0000028177,0.0000028255,0.0000028347,0.0000028429,0.0000028478, -0.0000028500,0.0000028544,0.0000028659,0.0000028819,0.0000028956, -0.0000029044,0.0000029078,0.0000029088,0.0000029071,0.0000029038, -0.0000029008,0.0000028971,0.0000028911,0.0000028835,0.0000028762, -0.0000028705,0.0000028681,0.0000028684,0.0000028699,0.0000028721, -0.0000028746,0.0000028768,0.0000028778,0.0000028777,0.0000028762, -0.0000028720,0.0000028657,0.0000028607,0.0000028586,0.0000028589, -0.0000028588,0.0000028557,0.0000028483,0.0000028405,0.0000028335, -0.0000028296,0.0000028329,0.0000028394,0.0000028470,0.0000028541, -0.0000028588,0.0000028594,0.0000028565,0.0000028507,0.0000028442, -0.0000028396,0.0000028391,0.0000028427,0.0000028484,0.0000028524, -0.0000028524,0.0000028490,0.0000028447,0.0000028424,0.0000028439, -0.0000028481,0.0000028516,0.0000028511,0.0000028476,0.0000028426, -0.0000028386,0.0000028357,0.0000028327,0.0000028294,0.0000028271, -0.0000028260,0.0000028253,0.0000028242,0.0000028234,0.0000028234, -0.0000028246,0.0000028264,0.0000028278,0.0000028279,0.0000028260, -0.0000028220,0.0000028152,0.0000028068,0.0000027982,0.0000027897, -0.0000027812,0.0000027732,0.0000027663,0.0000027602,0.0000027559, -0.0000027537,0.0000027548,0.0000027638,0.0000027788,0.0000027928, -0.0000028007,0.0000028019,0.0000027976,0.0000027878,0.0000027776, -0.0000027732,0.0000027745,0.0000027840,0.0000027896,0.0000027767, -0.0000027610,0.0000027613,0.0000027647,0.0000027626,0.0000027594, -0.0000027591,0.0000027591,0.0000027605,0.0000027641,0.0000027613, -0.0000027474,0.0000027388,0.0000027428,0.0000027437,0.0000027330, -0.0000027246,0.0000027278,0.0000027381,0.0000027450,0.0000027482, -0.0000027542,0.0000027549,0.0000027379,0.0000027183,0.0000027145, -0.0000027183,0.0000027255,0.0000027293,0.0000027255,0.0000027209, -0.0000027232,0.0000027240,0.0000027158,0.0000027041,0.0000027001, -0.0000027037,0.0000027099,0.0000027130,0.0000027164,0.0000027198, -0.0000027188,0.0000027136,0.0000027080,0.0000027063,0.0000027066, -0.0000027081,0.0000027151,0.0000027267,0.0000027319,0.0000027292, -0.0000027242,0.0000027202,0.0000027149,0.0000027053,0.0000026968, -0.0000026951,0.0000026984,0.0000027018,0.0000027029,0.0000027036, -0.0000027046,0.0000027050,0.0000027056,0.0000027072,0.0000027078, -0.0000027064,0.0000027030,0.0000026951,0.0000026828,0.0000026709, -0.0000026626,0.0000026568,0.0000026521,0.0000026469,0.0000026416, -0.0000026398,0.0000026418,0.0000026476,0.0000026524,0.0000026540, -0.0000026514,0.0000026393,0.0000026191,0.0000025943,0.0000025700, -0.0000025588,0.0000025617,0.0000025717,0.0000025955,0.0000026353, -0.0000026584,0.0000026532,0.0000026451,0.0000026515,0.0000026603, -0.0000026658,0.0000026704,0.0000026699,0.0000026584,0.0000026370, -0.0000026198,0.0000026149,0.0000026111,0.0000026060,0.0000026006, -0.0000025935,0.0000025954,0.0000025977,0.0000025973,0.0000025968, -0.0000025932,0.0000025883,0.0000025874,0.0000025874,0.0000026019, -0.0000026193,0.0000026401,0.0000026900,0.0000027401,0.0000027654, -0.0000027879,0.0000028003,0.0000028126,0.0000028228,0.0000028228, -0.0000028228,0.0000028213,0.0000028153,0.0000028024,0.0000027854, -0.0000027715,0.0000027669,0.0000027645,0.0000027618,0.0000027584, -0.0000027548,0.0000027585,0.0000027685,0.0000027742,0.0000027827, -0.0000027890,0.0000027907,0.0000027857,0.0000027736,0.0000027776, -0.0000027833,0.0000027922,0.0000027957,0.0000027825,0.0000027675, -0.0000027521,0.0000027469,0.0000027508,0.0000027485,0.0000027456, -0.0000027319,0.0000027176,0.0000027133,0.0000027085,0.0000027044, -0.0000027000,0.0000026936,0.0000026884,0.0000026849,0.0000026826, -0.0000026822,0.0000026817,0.0000026815,0.0000026815,0.0000026819, -0.0000026818,0.0000026793,0.0000026703,0.0000026570,0.0000026460, -0.0000026417,0.0000026413,0.0000026409,0.0000026389,0.0000026327, -0.0000026210,0.0000026085,0.0000025984,0.0000025921,0.0000025908, -0.0000025891,0.0000025864,0.0000025847,0.0000025853,0.0000025891, -0.0000025942,0.0000026009,0.0000026077,0.0000026144,0.0000026202, -0.0000026225,0.0000026223,0.0000026205,0.0000026171,0.0000026126, -0.0000026088,0.0000026064,0.0000026051,0.0000026050,0.0000026049, -0.0000026027,0.0000025988,0.0000025927,0.0000025854,0.0000025798, -0.0000025783,0.0000025802,0.0000025800,0.0000025764,0.0000025748, -0.0000025755,0.0000025760,0.0000025735,0.0000025687,0.0000025610, -0.0000025514,0.0000025432,0.0000025380,0.0000025369,0.0000025376, -0.0000025362,0.0000025318,0.0000025256,0.0000025188,0.0000025099, -0.0000024991,0.0000024890,0.0000024823,0.0000024813,0.0000024857, -0.0000024893,0.0000024876,0.0000024824,0.0000024854,0.0000024966, -0.0000025026,0.0000025029,0.0000025014,0.0000025062,0.0000025178, -0.0000025208,0.0000025203,0.0000025369,0.0000025559,0.0000025557, -0.0000025458,0.0000025330,0.0000025229,0.0000025307,0.0000025596, -0.0000025710,0.0000025776,0.0000026083,0.0000026299,0.0000026283, -0.0000026218,0.0000026206,0.0000026183,0.0000026124,0.0000026048, -0.0000025966,0.0000025891,0.0000025821,0.0000025806,0.0000025868, -0.0000025951,0.0000025991,0.0000025998,0.0000025991,0.0000025996, -0.0000026024,0.0000026056,0.0000026075,0.0000026088,0.0000026171, -0.0000026376,0.0000026585,0.0000026692,0.0000026743,0.0000026784, -0.0000026819,0.0000026848,0.0000026881,0.0000026938,0.0000026996, -0.0000027052,0.0000027088,0.0000027073,0.0000026991,0.0000026948, -0.0000027064,0.0000027265,0.0000027315,0.0000027366,0.0000027741, -0.0000028184,0.0000028202,0.0000028111,0.0000028092,0.0000028138, -0.0000028233,0.0000028340,0.0000028392,0.0000028315,0.0000028088, -0.0000028006,0.0000028059,0.0000028065,0.0000028110,0.0000027991, -0.0000027867,0.0000027836,0.0000027894,0.0000027987,0.0000028062, -0.0000028083,0.0000028085,0.0000028114,0.0000028161,0.0000028234, -0.0000028308,0.0000028376,0.0000028436,0.0000028479,0.0000028515, -0.0000028563,0.0000028612,0.0000028632,0.0000028637,0.0000028641, -0.0000028648,0.0000028656,0.0000028681,0.0000028704,0.0000028725, -0.0000028720,0.0000028702,0.0000028660,0.0000028604,0.0000028517, -0.0000028429,0.0000028353,0.0000028317,0.0000028320,0.0000028350, -0.0000028375,0.0000028405,0.0000028459,0.0000028529,0.0000028622, -0.0000028716,0.0000028819,0.0000028940,0.0000029062,0.0000029186, -0.0000029290,0.0000029358,0.0000029388,0.0000029379,0.0000029351, -0.0000029335,0.0000029292,0.0000029177,0.0000029005,0.0000028874, -0.0000028625,0.0000028430,0.0000028495,0.0000028617,0.0000028587, -0.0000028551,0.0000028614,0.0000028760,0.0000028902,0.0000029026, -0.0000029127,0.0000029189,0.0000029208,0.0000029192,0.0000029158, -0.0000029113,0.0000029065,0.0000029014,0.0000028953,0.0000028879, -0.0000028794,0.0000028714,0.0000028624,0.0000028539,0.0000028437, -0.0000028340,0.0000028276,0.0000028217,0.0000028164,0.0000028123, -0.0000028092,0.0000028062,0.0000028040,0.0000028036,0.0000028037, -0.0000028031,0.0000028033,0.0000028050,0.0000028074,0.0000028105, -0.0000028146,0.0000028194,0.0000028234,0.0000028277,0.0000028332, -0.0000028384,0.0000028447,0.0000028505,0.0000028539,0.0000028540, -0.0000028506,0.0000028463,0.0000028419,0.0000028388,0.0000028384, -0.0000028384,0.0000028373,0.0000028368,0.0000028368,0.0000028357, -0.0000028311,0.0000028232,0.0000028173,0.0000028168,0.0000028196, -0.0000028224,0.0000028235,0.0000028232,0.0000028210,0.0000028175, -0.0000028134,0.0000028105,0.0000028092,0.0000028104,0.0000028138, -0.0000028185,0.0000028237,0.0000028283,0.0000028315,0.0000028322, -0.0000028315,0.0000028310,0.0000028307,0.0000028292,0.0000028280, -0.0000028258,0.0000028236,0.0000028236,0.0000028253,0.0000028274, -0.0000028275,0.0000028244,0.0000028195,0.0000028154,0.0000028115, -0.0000028058,0.0000028001,0.0000027963,0.0000027941,0.0000027921, -0.0000027898,0.0000027891,0.0000027898,0.0000027904,0.0000027932, -0.0000027978,0.0000028024,0.0000028083,0.0000028127,0.0000028120, -0.0000028079,0.0000028048,0.0000028053,0.0000028098,0.0000028134, -0.0000028129,0.0000028081,0.0000028027,0.0000027982,0.0000027978, -0.0000027985,0.0000027964,0.0000027934,0.0000027934,0.0000027960, -0.0000027995,0.0000028034,0.0000028080,0.0000028128,0.0000028156, -0.0000028171,0.0000028190,0.0000028205,0.0000028227,0.0000028253, -0.0000028267,0.0000028232,0.0000028082,0.0000027817,0.0000027483, -0.0000027233,0.0000027140,0.0000027182,0.0000027281,0.0000027399, -0.0000027527,0.0000027654,0.0000027793,0.0000027908,0.0000027955, -0.0000027932,0.0000027873,0.0000027826,0.0000027762,0.0000027662, -0.0000027588,0.0000027577,0.0000027603,0.0000027637,0.0000027704, -0.0000027821,0.0000027912,0.0000027923,0.0000027858,0.0000027788, -0.0000027746,0.0000027689,0.0000027584,0.0000027491,0.0000027469, -0.0000027489,0.0000027520,0.0000027567,0.0000027669,0.0000027796, -0.0000027880,0.0000027889,0.0000027809,0.0000027675,0.0000027583, -0.0000027580,0.0000027650,0.0000027749,0.0000027822,0.0000027899, -0.0000028001,0.0000028111,0.0000028241,0.0000028359,0.0000028418, -0.0000028437,0.0000028395,0.0000028300,0.0000028205,0.0000028133, -0.0000028125,0.0000028191,0.0000028253,0.0000028321,0.0000028334, -0.0000028261,0.0000028193,0.0000028279,0.0000028263,0.0000028060, -0.0000028160,0.0000028535,0.0000028697,0.0000028670,0.0000028585, -0.0000028552,0.0000028556,0.0000028524,0.0000028425,0.0000028255, -0.0000028082,0.0000027990,0.0000027954,0.0000027961,0.0000027943, -0.0000027831,0.0000027778,0.0000027856,0.0000027939,0.0000027981, -0.0000028047,0.0000028137,0.0000028219,0.0000028241,0.0000028233, -0.0000028285,0.0000028389,0.0000028500,0.0000028593,0.0000028663, -0.0000028707,0.0000028681,0.0000028603,0.0000028520,0.0000028498, -0.0000028558,0.0000028674,0.0000028745,0.0000028744,0.0000028761, -0.0000028815,0.0000028851,0.0000028875,0.0000029003,0.0000029049, -0.0000029000,0.0000029028,0.0000029087,0.0000029070,0.0000028923, -0.0000028648,0.0000028491,0.0000028418,0.0000028478,0.0000028687, -0.0000028718,0.0000028460,0.0000028276,0.0000028342,0.0000028356, -0.0000028248,0.0000028017,0.0000027815,0.0000027706,0.0000027675, -0.0000027707,0.0000027792,0.0000027878,0.0000027903,0.0000027872, -0.0000027769,0.0000027650,0.0000027572,0.0000027537,0.0000027508, -0.0000027458,0.0000027403,0.0000027369,0.0000027369,0.0000027418, -0.0000027470,0.0000027493,0.0000027497,0.0000027504,0.0000027519, -0.0000027526,0.0000027510,0.0000027482,0.0000027471,0.0000027475, -0.0000027480,0.0000027484,0.0000027495,0.0000027524,0.0000027563, -0.0000027608,0.0000027641,0.0000027653,0.0000027640,0.0000027545, -0.0000027420,0.0000027328,0.0000027292,0.0000027291,0.0000027288, -0.0000027267,0.0000027253,0.0000027273,0.0000027336,0.0000027402, -0.0000027437,0.0000027434,0.0000027414,0.0000027393,0.0000027377, -0.0000027360,0.0000027339,0.0000027333,0.0000027345,0.0000027369, -0.0000027397,0.0000027423,0.0000027442,0.0000027448,0.0000027448, -0.0000027445,0.0000027448,0.0000027457,0.0000027460,0.0000027453, -0.0000027434,0.0000027415,0.0000027402,0.0000027378,0.0000027347, -0.0000027313,0.0000027270,0.0000027220,0.0000027171,0.0000027122, -0.0000027070,0.0000027007,0.0000026943,0.0000026903,0.0000026890, -0.0000026892,0.0000026892,0.0000026881,0.0000026851,0.0000026808, -0.0000026768,0.0000026758,0.0000026771,0.0000026803,0.0000026836, -0.0000026843,0.0000026822,0.0000026753,0.0000026667,0.0000026611, -0.0000026554,0.0000026435,0.0000026298,0.0000026221,0.0000026196, -0.0000026190,0.0000026193,0.0000026214,0.0000026271,0.0000026366, -0.0000026482,0.0000026615,0.0000026755,0.0000026881,0.0000026988, -0.0000027093,0.0000027228,0.0000027386,0.0000027538,0.0000027651, -0.0000027722,0.0000027764,0.0000027790,0.0000027821,0.0000027891, -0.0000027969,0.0000028021,0.0000028060,0.0000028104,0.0000028173, -0.0000028269,0.0000028370,0.0000028440,0.0000028484,0.0000028544, -0.0000028648,0.0000028775,0.0000028907,0.0000029012,0.0000029064, -0.0000029053,0.0000029008,0.0000028963,0.0000028927,0.0000028886, -0.0000028831,0.0000028777,0.0000028742,0.0000028735,0.0000028745, -0.0000028758,0.0000028773,0.0000028793,0.0000028813,0.0000028826, -0.0000028828,0.0000028807,0.0000028740,0.0000028651,0.0000028593, -0.0000028579,0.0000028597,0.0000028610,0.0000028586,0.0000028508, -0.0000028414,0.0000028321,0.0000028268,0.0000028302,0.0000028380, -0.0000028467,0.0000028543,0.0000028601,0.0000028625,0.0000028611, -0.0000028559,0.0000028484,0.0000028409,0.0000028371,0.0000028387, -0.0000028443,0.0000028497,0.0000028518,0.0000028503,0.0000028469, -0.0000028439,0.0000028433,0.0000028463,0.0000028498,0.0000028500, -0.0000028473,0.0000028437,0.0000028413,0.0000028406,0.0000028413, -0.0000028413,0.0000028397,0.0000028381,0.0000028370,0.0000028363, -0.0000028357,0.0000028354,0.0000028349,0.0000028339,0.0000028318, -0.0000028287,0.0000028247,0.0000028202,0.0000028146,0.0000028077, -0.0000028000,0.0000027917,0.0000027831,0.0000027746,0.0000027668, -0.0000027596,0.0000027526,0.0000027462,0.0000027412,0.0000027411, -0.0000027505,0.0000027679,0.0000027854,0.0000027962,0.0000027982, -0.0000027937,0.0000027826,0.0000027723,0.0000027690,0.0000027720, -0.0000027826,0.0000027841,0.0000027673,0.0000027555,0.0000027602, -0.0000027648,0.0000027627,0.0000027593,0.0000027595,0.0000027634, -0.0000027645,0.0000027545,0.0000027392,0.0000027381,0.0000027437, -0.0000027409,0.0000027296,0.0000027292,0.0000027387,0.0000027478, -0.0000027504,0.0000027526,0.0000027558,0.0000027535,0.0000027361, -0.0000027183,0.0000027150,0.0000027172,0.0000027231,0.0000027293, -0.0000027288,0.0000027246,0.0000027239,0.0000027248,0.0000027219, -0.0000027122,0.0000027029,0.0000027012,0.0000027067,0.0000027132, -0.0000027167,0.0000027196,0.0000027221,0.0000027219,0.0000027180, -0.0000027137,0.0000027123,0.0000027115,0.0000027114,0.0000027177, -0.0000027285,0.0000027322,0.0000027279,0.0000027225,0.0000027196, -0.0000027163,0.0000027065,0.0000026969,0.0000026935,0.0000026957, -0.0000026982,0.0000026993,0.0000027001,0.0000027008,0.0000027006, -0.0000027020,0.0000027042,0.0000027055,0.0000027044,0.0000026998, -0.0000026903,0.0000026787,0.0000026689,0.0000026613,0.0000026549, -0.0000026490,0.0000026429,0.0000026381,0.0000026371,0.0000026405, -0.0000026467,0.0000026518,0.0000026532,0.0000026506,0.0000026395, -0.0000026208,0.0000025975,0.0000025743,0.0000025590,0.0000025565, -0.0000025617,0.0000025753,0.0000026072,0.0000026445,0.0000026532, -0.0000026454,0.0000026448,0.0000026519,0.0000026600,0.0000026662, -0.0000026683,0.0000026649,0.0000026535,0.0000026350,0.0000026214, -0.0000026180,0.0000026189,0.0000026181,0.0000026150,0.0000026138, -0.0000026156,0.0000026172,0.0000026150,0.0000026085,0.0000026021, -0.0000025943,0.0000025857,0.0000025841,0.0000025960,0.0000026204, -0.0000026443,0.0000027083,0.0000027477,0.0000027755,0.0000027914, -0.0000028035,0.0000028183,0.0000028194,0.0000028189,0.0000028183, -0.0000028151,0.0000028068,0.0000027928,0.0000027789,0.0000027731, -0.0000027694,0.0000027645,0.0000027600,0.0000027582,0.0000027631, -0.0000027693,0.0000027754,0.0000027849,0.0000027893,0.0000027905, -0.0000027805,0.0000027695,0.0000027780,0.0000027829,0.0000027934, -0.0000027942,0.0000027798,0.0000027645,0.0000027492,0.0000027473, -0.0000027505,0.0000027473,0.0000027435,0.0000027290,0.0000027144, -0.0000027094,0.0000027077,0.0000027038,0.0000027026,0.0000026998, -0.0000026956,0.0000026916,0.0000026875,0.0000026843,0.0000026822, -0.0000026793,0.0000026774,0.0000026766,0.0000026771,0.0000026781, -0.0000026797,0.0000026768,0.0000026655,0.0000026524,0.0000026475, -0.0000026464,0.0000026424,0.0000026364,0.0000026276,0.0000026155, -0.0000026045,0.0000025974,0.0000025952,0.0000025941,0.0000025910, -0.0000025874,0.0000025862,0.0000025885,0.0000025952,0.0000026039, -0.0000026124,0.0000026197,0.0000026255,0.0000026288,0.0000026291, -0.0000026288,0.0000026262,0.0000026225,0.0000026192,0.0000026182, -0.0000026182,0.0000026190,0.0000026173,0.0000026126,0.0000026062, -0.0000025979,0.0000025886,0.0000025811,0.0000025790,0.0000025822, -0.0000025829,0.0000025796,0.0000025761,0.0000025744,0.0000025750, -0.0000025753,0.0000025724,0.0000025660,0.0000025562,0.0000025462, -0.0000025397,0.0000025385,0.0000025416,0.0000025439,0.0000025417, -0.0000025360,0.0000025288,0.0000025195,0.0000025094,0.0000025009, -0.0000024953,0.0000024923,0.0000024928,0.0000024929,0.0000024925, -0.0000024903,0.0000024852,0.0000024849,0.0000024916,0.0000024994, -0.0000025016,0.0000025006,0.0000025010,0.0000025125,0.0000025205, -0.0000025198,0.0000025308,0.0000025538,0.0000025562,0.0000025475, -0.0000025325,0.0000025225,0.0000025334,0.0000025633,0.0000025734, -0.0000025806,0.0000026113,0.0000026283,0.0000026235,0.0000026200, -0.0000026204,0.0000026185,0.0000026134,0.0000026077,0.0000026024, -0.0000025971,0.0000025921,0.0000025874,0.0000025877,0.0000025918, -0.0000025952,0.0000025959,0.0000025939,0.0000025928,0.0000025947, -0.0000025996,0.0000026037,0.0000026060,0.0000026120,0.0000026296, -0.0000026540,0.0000026706,0.0000026767,0.0000026806,0.0000026835, -0.0000026853,0.0000026875,0.0000026920,0.0000026966,0.0000027027, -0.0000027058,0.0000027018,0.0000026928,0.0000026914,0.0000027074, -0.0000027229,0.0000027249,0.0000027321,0.0000027704,0.0000028143, -0.0000028168,0.0000028072,0.0000028060,0.0000028149,0.0000028276, -0.0000028369,0.0000028366,0.0000028255,0.0000028049,0.0000027952, -0.0000028036,0.0000028054,0.0000028120,0.0000028038,0.0000027883, -0.0000027827,0.0000027886,0.0000027976,0.0000028049,0.0000028067, -0.0000028070,0.0000028109,0.0000028154,0.0000028222,0.0000028299, -0.0000028362,0.0000028417,0.0000028463,0.0000028499,0.0000028547, -0.0000028591,0.0000028614,0.0000028610,0.0000028611,0.0000028600, -0.0000028579,0.0000028606,0.0000028652,0.0000028684,0.0000028688, -0.0000028666,0.0000028603,0.0000028547,0.0000028470,0.0000028412, -0.0000028363,0.0000028360,0.0000028378,0.0000028389,0.0000028386, -0.0000028392,0.0000028433,0.0000028504,0.0000028604,0.0000028702, -0.0000028810,0.0000028926,0.0000029051,0.0000029174,0.0000029272, -0.0000029340,0.0000029371,0.0000029352,0.0000029321,0.0000029303, -0.0000029262,0.0000029138,0.0000028950,0.0000028819,0.0000028636, -0.0000028386,0.0000028397,0.0000028547,0.0000028586,0.0000028550, -0.0000028570,0.0000028658,0.0000028769,0.0000028884,0.0000028976, -0.0000029053,0.0000029094,0.0000029090,0.0000029067,0.0000029033, -0.0000028996,0.0000028943,0.0000028875,0.0000028794,0.0000028705, -0.0000028629,0.0000028554,0.0000028480,0.0000028402,0.0000028320, -0.0000028267,0.0000028221,0.0000028177,0.0000028139,0.0000028109, -0.0000028079,0.0000028051,0.0000028032,0.0000028019,0.0000028005, -0.0000027990,0.0000027987,0.0000027988,0.0000027978,0.0000027984, -0.0000028000,0.0000028024,0.0000028052,0.0000028090,0.0000028138, -0.0000028212,0.0000028302,0.0000028396,0.0000028467,0.0000028489, -0.0000028471,0.0000028427,0.0000028378,0.0000028355,0.0000028361, -0.0000028366,0.0000028366,0.0000028376,0.0000028386,0.0000028375, -0.0000028310,0.0000028222,0.0000028169,0.0000028167,0.0000028179, -0.0000028187,0.0000028191,0.0000028192,0.0000028188,0.0000028168, -0.0000028147,0.0000028132,0.0000028128,0.0000028135,0.0000028154, -0.0000028189,0.0000028247,0.0000028299,0.0000028318,0.0000028310, -0.0000028289,0.0000028271,0.0000028268,0.0000028278,0.0000028276, -0.0000028244,0.0000028210,0.0000028201,0.0000028207,0.0000028207, -0.0000028180,0.0000028123,0.0000028069,0.0000028028,0.0000027974, -0.0000027913,0.0000027880,0.0000027886,0.0000027895,0.0000027871, -0.0000027837,0.0000027835,0.0000027852,0.0000027873,0.0000027912, -0.0000027957,0.0000027985,0.0000028024,0.0000028058,0.0000028059, -0.0000028042,0.0000028035,0.0000028060,0.0000028115,0.0000028148, -0.0000028132,0.0000028072,0.0000027996,0.0000027943,0.0000027926, -0.0000027928,0.0000027909,0.0000027887,0.0000027891,0.0000027927, -0.0000027982,0.0000028044,0.0000028101,0.0000028134,0.0000028129, -0.0000028130,0.0000028161,0.0000028211,0.0000028247,0.0000028275, -0.0000028286,0.0000028289,0.0000028229,0.0000028067,0.0000027771, -0.0000027456,0.0000027248,0.0000027195,0.0000027221,0.0000027299, -0.0000027422,0.0000027560,0.0000027698,0.0000027829,0.0000027916, -0.0000027916,0.0000027847,0.0000027773,0.0000027707,0.0000027613, -0.0000027540,0.0000027540,0.0000027578,0.0000027610,0.0000027652, -0.0000027732,0.0000027827,0.0000027892,0.0000027864,0.0000027803, -0.0000027760,0.0000027726,0.0000027650,0.0000027542,0.0000027472, -0.0000027455,0.0000027449,0.0000027453,0.0000027492,0.0000027566, -0.0000027650,0.0000027710,0.0000027704,0.0000027629,0.0000027555, -0.0000027537,0.0000027595,0.0000027707,0.0000027796,0.0000027852, -0.0000027869,0.0000027876,0.0000027957,0.0000028085,0.0000028187, -0.0000028283,0.0000028304,0.0000028246,0.0000028170,0.0000028120, -0.0000028131,0.0000028212,0.0000028283,0.0000028350,0.0000028370, -0.0000028288,0.0000028217,0.0000028298,0.0000028284,0.0000028069, -0.0000028110,0.0000028480,0.0000028682,0.0000028668,0.0000028584, -0.0000028549,0.0000028544,0.0000028497,0.0000028351,0.0000028182, -0.0000028063,0.0000027995,0.0000027970,0.0000027986,0.0000027984, -0.0000027864,0.0000027767,0.0000027808,0.0000027887,0.0000027960, -0.0000028048,0.0000028137,0.0000028218,0.0000028227,0.0000028211, -0.0000028244,0.0000028352,0.0000028483,0.0000028595,0.0000028687, -0.0000028738,0.0000028706,0.0000028587,0.0000028469,0.0000028450, -0.0000028531,0.0000028645,0.0000028702,0.0000028707,0.0000028743, -0.0000028808,0.0000028856,0.0000028851,0.0000028930,0.0000029031, -0.0000029002,0.0000028990,0.0000029063,0.0000029087,0.0000028996, -0.0000028716,0.0000028533,0.0000028450,0.0000028531,0.0000028719, -0.0000028687,0.0000028400,0.0000028279,0.0000028349,0.0000028353, -0.0000028239,0.0000028022,0.0000027826,0.0000027710,0.0000027679, -0.0000027721,0.0000027805,0.0000027870,0.0000027887,0.0000027863, -0.0000027789,0.0000027687,0.0000027615,0.0000027587,0.0000027574, -0.0000027544,0.0000027494,0.0000027441,0.0000027408,0.0000027411, -0.0000027441,0.0000027466,0.0000027479,0.0000027492,0.0000027502, -0.0000027520,0.0000027547,0.0000027556,0.0000027545,0.0000027535, -0.0000027531,0.0000027526,0.0000027525,0.0000027538,0.0000027567, -0.0000027602,0.0000027626,0.0000027643,0.0000027672,0.0000027703, -0.0000027719,0.0000027690,0.0000027574,0.0000027429,0.0000027334, -0.0000027301,0.0000027299,0.0000027290,0.0000027264,0.0000027260, -0.0000027293,0.0000027353,0.0000027397,0.0000027412,0.0000027403, -0.0000027384,0.0000027365,0.0000027363,0.0000027380,0.0000027405, -0.0000027431,0.0000027449,0.0000027453,0.0000027440,0.0000027416, -0.0000027395,0.0000027386,0.0000027393,0.0000027410,0.0000027419, -0.0000027420,0.0000027415,0.0000027407,0.0000027397,0.0000027387, -0.0000027375,0.0000027356,0.0000027342,0.0000027327,0.0000027304, -0.0000027272,0.0000027232,0.0000027178,0.0000027113,0.0000027054, -0.0000027016,0.0000026996,0.0000026982,0.0000026964,0.0000026937, -0.0000026900,0.0000026863,0.0000026842,0.0000026841,0.0000026854, -0.0000026880,0.0000026907,0.0000026909,0.0000026870,0.0000026782, -0.0000026685,0.0000026610,0.0000026502,0.0000026351,0.0000026239, -0.0000026194,0.0000026170,0.0000026138,0.0000026113,0.0000026123, -0.0000026193,0.0000026318,0.0000026479,0.0000026652,0.0000026802, -0.0000026922,0.0000027024,0.0000027146,0.0000027298,0.0000027452, -0.0000027577,0.0000027674,0.0000027751,0.0000027790,0.0000027802, -0.0000027825,0.0000027863,0.0000027902,0.0000027946,0.0000027996, -0.0000028053,0.0000028123,0.0000028209,0.0000028290,0.0000028356, -0.0000028420,0.0000028489,0.0000028570,0.0000028676,0.0000028797, -0.0000028897,0.0000028948,0.0000028959,0.0000028941,0.0000028913, -0.0000028875,0.0000028831,0.0000028800,0.0000028796,0.0000028810, -0.0000028827,0.0000028835,0.0000028833,0.0000028832,0.0000028838, -0.0000028855,0.0000028863,0.0000028845,0.0000028781,0.0000028696, -0.0000028639,0.0000028630,0.0000028655,0.0000028669,0.0000028636, -0.0000028536,0.0000028413,0.0000028304,0.0000028251,0.0000028292, -0.0000028369,0.0000028453,0.0000028531,0.0000028602,0.0000028645, -0.0000028650,0.0000028618,0.0000028541,0.0000028436,0.0000028349, -0.0000028337,0.0000028376,0.0000028439,0.0000028487,0.0000028508, -0.0000028496,0.0000028465,0.0000028436,0.0000028438,0.0000028462, -0.0000028475,0.0000028465,0.0000028446,0.0000028443,0.0000028454, -0.0000028479,0.0000028494,0.0000028479,0.0000028435,0.0000028392, -0.0000028373,0.0000028356,0.0000028351,0.0000028349,0.0000028342, -0.0000028316,0.0000028266,0.0000028197,0.0000028134,0.0000028075, -0.0000028015,0.0000027949,0.0000027880,0.0000027813,0.0000027743, -0.0000027673,0.0000027607,0.0000027540,0.0000027464,0.0000027387, -0.0000027320,0.0000027307,0.0000027397,0.0000027583,0.0000027784, -0.0000027911,0.0000027937,0.0000027875,0.0000027750,0.0000027658, -0.0000027643,0.0000027714,0.0000027821,0.0000027782,0.0000027603, -0.0000027534,0.0000027613,0.0000027658,0.0000027645,0.0000027640, -0.0000027670,0.0000027625,0.0000027455,0.0000027335,0.0000027377, -0.0000027450,0.0000027379,0.0000027294,0.0000027351,0.0000027475, -0.0000027506,0.0000027487,0.0000027487,0.0000027517,0.0000027488, -0.0000027327,0.0000027177,0.0000027152,0.0000027162,0.0000027201, -0.0000027272,0.0000027300,0.0000027280,0.0000027254,0.0000027251, -0.0000027244,0.0000027195,0.0000027102,0.0000027024,0.0000027024, -0.0000027094,0.0000027170,0.0000027207,0.0000027226,0.0000027246, -0.0000027244,0.0000027216,0.0000027196,0.0000027185,0.0000027162, -0.0000027151,0.0000027211,0.0000027305,0.0000027319,0.0000027261, -0.0000027207,0.0000027198,0.0000027170,0.0000027068,0.0000026957, -0.0000026919,0.0000026928,0.0000026945,0.0000026957,0.0000026958, -0.0000026942,0.0000026927,0.0000026939,0.0000026962,0.0000026979, -0.0000026968,0.0000026913,0.0000026831,0.0000026750,0.0000026675, -0.0000026599,0.0000026523,0.0000026450,0.0000026386,0.0000026354, -0.0000026362,0.0000026410,0.0000026473,0.0000026512,0.0000026518, -0.0000026484,0.0000026374,0.0000026202,0.0000025998,0.0000025782, -0.0000025611,0.0000025525,0.0000025541,0.0000025630,0.0000025821, -0.0000026189,0.0000026485,0.0000026505,0.0000026409,0.0000026426, -0.0000026526,0.0000026607,0.0000026649,0.0000026639,0.0000026597, -0.0000026510,0.0000026386,0.0000026283,0.0000026232,0.0000026233, -0.0000026230,0.0000026226,0.0000026264,0.0000026300,0.0000026285, -0.0000026242,0.0000026205,0.0000026138,0.0000026025,0.0000025888, -0.0000025825,0.0000026004,0.0000026248,0.0000026623,0.0000027299, -0.0000027605,0.0000027817,0.0000027943,0.0000028112,0.0000028152, -0.0000028153,0.0000028153,0.0000028142,0.0000028081,0.0000027963, -0.0000027855,0.0000027800,0.0000027748,0.0000027684,0.0000027630, -0.0000027611,0.0000027650,0.0000027704,0.0000027790,0.0000027855, -0.0000027889,0.0000027888,0.0000027738,0.0000027682,0.0000027784, -0.0000027830,0.0000027936,0.0000027918,0.0000027763,0.0000027606, -0.0000027466,0.0000027474,0.0000027501,0.0000027465,0.0000027415, -0.0000027267,0.0000027125,0.0000027058,0.0000027041,0.0000026982, -0.0000026978,0.0000026968,0.0000026944,0.0000026910,0.0000026879, -0.0000026858,0.0000026842,0.0000026817,0.0000026793,0.0000026764, -0.0000026729,0.0000026712,0.0000026745,0.0000026805,0.0000026818, -0.0000026704,0.0000026572,0.0000026517,0.0000026480,0.0000026402, -0.0000026317,0.0000026230,0.0000026133,0.0000026039,0.0000025979, -0.0000025955,0.0000025932,0.0000025901,0.0000025887,0.0000025893, -0.0000025964,0.0000026057,0.0000026153,0.0000026239,0.0000026307, -0.0000026351,0.0000026361,0.0000026356,0.0000026336,0.0000026306, -0.0000026287,0.0000026290,0.0000026308,0.0000026315,0.0000026292, -0.0000026233,0.0000026139,0.0000026034,0.0000025929,0.0000025844, -0.0000025813,0.0000025842,0.0000025855,0.0000025833,0.0000025800, -0.0000025757,0.0000025738,0.0000025735,0.0000025725,0.0000025681, -0.0000025598,0.0000025495,0.0000025413,0.0000025387,0.0000025422, -0.0000025474,0.0000025488,0.0000025452,0.0000025388,0.0000025294, -0.0000025184,0.0000025098,0.0000025060,0.0000025046,0.0000025063, -0.0000025066,0.0000025038,0.0000024987,0.0000024938,0.0000024893, -0.0000024841,0.0000024840,0.0000024928,0.0000024989,0.0000024985, -0.0000024980,0.0000025061,0.0000025189,0.0000025201,0.0000025245, -0.0000025484,0.0000025592,0.0000025486,0.0000025313,0.0000025227, -0.0000025357,0.0000025653,0.0000025738,0.0000025819,0.0000026117, -0.0000026241,0.0000026182,0.0000026186,0.0000026217,0.0000026206, -0.0000026152,0.0000026098,0.0000026059,0.0000026030,0.0000025999, -0.0000025943,0.0000025904,0.0000025895,0.0000025899,0.0000025891, -0.0000025871,0.0000025867,0.0000025884,0.0000025946,0.0000026021, -0.0000026063,0.0000026106,0.0000026234,0.0000026468,0.0000026676, -0.0000026767,0.0000026809,0.0000026836,0.0000026845,0.0000026862, -0.0000026901,0.0000026951,0.0000027005,0.0000027012,0.0000026939, -0.0000026858,0.0000026893,0.0000027077,0.0000027172,0.0000027179, -0.0000027275,0.0000027653,0.0000028096,0.0000028138,0.0000028046, -0.0000028035,0.0000028151,0.0000028313,0.0000028385,0.0000028332, -0.0000028207,0.0000028017,0.0000027893,0.0000028003,0.0000028055, -0.0000028122,0.0000028088,0.0000027931,0.0000027849,0.0000027890, -0.0000027952,0.0000028016,0.0000028026,0.0000028031,0.0000028075, -0.0000028124,0.0000028189,0.0000028266,0.0000028329,0.0000028373, -0.0000028408,0.0000028444,0.0000028485,0.0000028518,0.0000028537, -0.0000028545,0.0000028547,0.0000028560,0.0000028560,0.0000028589, -0.0000028627,0.0000028645,0.0000028643,0.0000028629,0.0000028598, -0.0000028576,0.0000028535,0.0000028491,0.0000028445,0.0000028423, -0.0000028409,0.0000028393,0.0000028390,0.0000028398,0.0000028434, -0.0000028503,0.0000028602,0.0000028698,0.0000028796,0.0000028903, -0.0000029016,0.0000029139,0.0000029223,0.0000029285,0.0000029318, -0.0000029294,0.0000029258,0.0000029245,0.0000029212,0.0000029097, -0.0000028899,0.0000028744,0.0000028635,0.0000028393,0.0000028294, -0.0000028413,0.0000028535,0.0000028555,0.0000028554,0.0000028593, -0.0000028652,0.0000028738,0.0000028823,0.0000028886,0.0000028937, -0.0000028939,0.0000028913,0.0000028869,0.0000028838,0.0000028801, -0.0000028749,0.0000028693,0.0000028632,0.0000028582,0.0000028533, -0.0000028483,0.0000028424,0.0000028372,0.0000028329,0.0000028292, -0.0000028261,0.0000028226,0.0000028200,0.0000028170,0.0000028136, -0.0000028099,0.0000028064,0.0000028033,0.0000028015,0.0000028005, -0.0000028001,0.0000027988,0.0000027969,0.0000027950,0.0000027936, -0.0000027932,0.0000027939,0.0000027959,0.0000028007,0.0000028079, -0.0000028177,0.0000028291,0.0000028391,0.0000028445,0.0000028442, -0.0000028395,0.0000028352,0.0000028343,0.0000028343,0.0000028334, -0.0000028341,0.0000028371,0.0000028388,0.0000028365,0.0000028296, -0.0000028229,0.0000028195,0.0000028182,0.0000028170,0.0000028162, -0.0000028156,0.0000028161,0.0000028165,0.0000028167,0.0000028160, -0.0000028161,0.0000028174,0.0000028192,0.0000028203,0.0000028220, -0.0000028259,0.0000028299,0.0000028304,0.0000028272,0.0000028232, -0.0000028221,0.0000028240,0.0000028262,0.0000028240,0.0000028182, -0.0000028144,0.0000028141,0.0000028149,0.0000028138,0.0000028091, -0.0000028025,0.0000027970,0.0000027916,0.0000027842,0.0000027781, -0.0000027773,0.0000027817,0.0000027846,0.0000027823,0.0000027784, -0.0000027779,0.0000027811,0.0000027856,0.0000027895,0.0000027924, -0.0000027933,0.0000027950,0.0000027979,0.0000027999,0.0000028011, -0.0000028031,0.0000028078,0.0000028132,0.0000028149,0.0000028118, -0.0000028057,0.0000027982,0.0000027923,0.0000027885,0.0000027857, -0.0000027836,0.0000027825,0.0000027847,0.0000027898,0.0000027959, -0.0000028022,0.0000028080,0.0000028109,0.0000028096,0.0000028088, -0.0000028114,0.0000028179,0.0000028248,0.0000028282,0.0000028294, -0.0000028289,0.0000028252,0.0000028167,0.0000027982,0.0000027708, -0.0000027428,0.0000027252,0.0000027209,0.0000027226,0.0000027313, -0.0000027456,0.0000027596,0.0000027721,0.0000027833,0.0000027874, -0.0000027815,0.0000027723,0.0000027646,0.0000027558,0.0000027494, -0.0000027496,0.0000027556,0.0000027603,0.0000027638,0.0000027680, -0.0000027747,0.0000027836,0.0000027865,0.0000027836,0.0000027791, -0.0000027758,0.0000027717,0.0000027634,0.0000027535,0.0000027461, -0.0000027423,0.0000027389,0.0000027349,0.0000027319,0.0000027355, -0.0000027440,0.0000027505,0.0000027511,0.0000027507,0.0000027534, -0.0000027599,0.0000027682,0.0000027758,0.0000027817,0.0000027814, -0.0000027762,0.0000027749,0.0000027810,0.0000027909,0.0000028078, -0.0000028189,0.0000028195,0.0000028154,0.0000028111,0.0000028138, -0.0000028223,0.0000028304,0.0000028386,0.0000028406,0.0000028314, -0.0000028247,0.0000028319,0.0000028297,0.0000028068,0.0000028070, -0.0000028411,0.0000028654,0.0000028657,0.0000028574,0.0000028527, -0.0000028512,0.0000028437,0.0000028269,0.0000028161,0.0000028099, -0.0000028031,0.0000027984,0.0000027996,0.0000028017,0.0000027908, -0.0000027769,0.0000027774,0.0000027826,0.0000027920,0.0000028029, -0.0000028134,0.0000028204,0.0000028207,0.0000028190,0.0000028222, -0.0000028325,0.0000028460,0.0000028592,0.0000028707,0.0000028761, -0.0000028715,0.0000028534,0.0000028404,0.0000028432,0.0000028545, -0.0000028646,0.0000028695,0.0000028712,0.0000028760,0.0000028822, -0.0000028859,0.0000028848,0.0000028885,0.0000029006,0.0000029014, -0.0000028976,0.0000029040,0.0000029090,0.0000029042,0.0000028769, -0.0000028572,0.0000028489,0.0000028589,0.0000028744,0.0000028650, -0.0000028353,0.0000028282,0.0000028353,0.0000028350,0.0000028230, -0.0000028041,0.0000027874,0.0000027771,0.0000027749,0.0000027790, -0.0000027846,0.0000027874,0.0000027873,0.0000027858,0.0000027818, -0.0000027753,0.0000027702,0.0000027684,0.0000027687,0.0000027672, -0.0000027622,0.0000027556,0.0000027496,0.0000027473,0.0000027485, -0.0000027505,0.0000027504,0.0000027494,0.0000027494,0.0000027512, -0.0000027542,0.0000027568,0.0000027584,0.0000027594,0.0000027599, -0.0000027596,0.0000027585,0.0000027578,0.0000027576,0.0000027593, -0.0000027626,0.0000027663,0.0000027698,0.0000027723,0.0000027729, -0.0000027733,0.0000027734,0.0000027721,0.0000027664,0.0000027543, -0.0000027420,0.0000027346,0.0000027313,0.0000027295,0.0000027269, -0.0000027250,0.0000027251,0.0000027288,0.0000027338,0.0000027365, -0.0000027364,0.0000027353,0.0000027350,0.0000027362,0.0000027387, -0.0000027423,0.0000027455,0.0000027467,0.0000027459,0.0000027432, -0.0000027396,0.0000027371,0.0000027362,0.0000027365,0.0000027372, -0.0000027377,0.0000027376,0.0000027373,0.0000027365,0.0000027353, -0.0000027345,0.0000027344,0.0000027349,0.0000027353,0.0000027350, -0.0000027331,0.0000027306,0.0000027283,0.0000027258,0.0000027224, -0.0000027193,0.0000027171,0.0000027148,0.0000027110,0.0000027055, -0.0000026995,0.0000026947,0.0000026927,0.0000026925,0.0000026922, -0.0000026917,0.0000026916,0.0000026913,0.0000026910,0.0000026880, -0.0000026800,0.0000026710,0.0000026604,0.0000026443,0.0000026287, -0.0000026206,0.0000026164,0.0000026124,0.0000026065,0.0000026035, -0.0000026067,0.0000026173,0.0000026346,0.0000026543,0.0000026716, -0.0000026857,0.0000026974,0.0000027095,0.0000027231,0.0000027361, -0.0000027465,0.0000027555,0.0000027646,0.0000027712,0.0000027745, -0.0000027764,0.0000027781,0.0000027802,0.0000027839,0.0000027888, -0.0000027938,0.0000027988,0.0000028044,0.0000028100,0.0000028159, -0.0000028225,0.0000028292,0.0000028365,0.0000028442,0.0000028536, -0.0000028639,0.0000028732,0.0000028808,0.0000028859,0.0000028885, -0.0000028870,0.0000028857,0.0000028845,0.0000028850,0.0000028868, -0.0000028880,0.0000028879,0.0000028859,0.0000028833,0.0000028831, -0.0000028855,0.0000028869,0.0000028868,0.0000028822,0.0000028758, -0.0000028722,0.0000028723,0.0000028747,0.0000028755,0.0000028702, -0.0000028572,0.0000028416,0.0000028299,0.0000028270,0.0000028324, -0.0000028400,0.0000028466,0.0000028532,0.0000028605,0.0000028667, -0.0000028693,0.0000028675,0.0000028598,0.0000028474,0.0000028349, -0.0000028287,0.0000028299,0.0000028367,0.0000028443,0.0000028497, -0.0000028516,0.0000028500,0.0000028466,0.0000028450,0.0000028466, -0.0000028488,0.0000028490,0.0000028479,0.0000028469,0.0000028469, -0.0000028481,0.0000028473,0.0000028442,0.0000028389,0.0000028338, -0.0000028303,0.0000028284,0.0000028272,0.0000028253,0.0000028225, -0.0000028181,0.0000028125,0.0000028069,0.0000028029,0.0000027994, -0.0000027951,0.0000027898,0.0000027842,0.0000027785,0.0000027725, -0.0000027658,0.0000027589,0.0000027524,0.0000027458,0.0000027387, -0.0000027310,0.0000027239,0.0000027219,0.0000027303,0.0000027510, -0.0000027742,0.0000027867,0.0000027877,0.0000027790,0.0000027668, -0.0000027611,0.0000027625,0.0000027726,0.0000027809,0.0000027731, -0.0000027558,0.0000027526,0.0000027611,0.0000027666,0.0000027675, -0.0000027659,0.0000027538,0.0000027353,0.0000027300,0.0000027401, -0.0000027462,0.0000027362,0.0000027298,0.0000027411,0.0000027524, -0.0000027509,0.0000027449,0.0000027438,0.0000027464,0.0000027430, -0.0000027274,0.0000027159,0.0000027147,0.0000027150,0.0000027167, -0.0000027229,0.0000027286,0.0000027294,0.0000027269,0.0000027253, -0.0000027242,0.0000027217,0.0000027159,0.0000027079,0.0000027025, -0.0000027051,0.0000027140,0.0000027215,0.0000027241,0.0000027256, -0.0000027272,0.0000027264,0.0000027255,0.0000027252,0.0000027235, -0.0000027199,0.0000027190,0.0000027256,0.0000027324,0.0000027309, -0.0000027239,0.0000027198,0.0000027200,0.0000027165,0.0000027055, -0.0000026938,0.0000026899,0.0000026902,0.0000026911,0.0000026918, -0.0000026908,0.0000026878,0.0000026866,0.0000026878,0.0000026900, -0.0000026913,0.0000026897,0.0000026852,0.0000026792,0.0000026730, -0.0000026663,0.0000026580,0.0000026490,0.0000026411,0.0000026359, -0.0000026346,0.0000026370,0.0000026427,0.0000026483,0.0000026507, -0.0000026502,0.0000026448,0.0000026326,0.0000026178,0.0000026010, -0.0000025809,0.0000025632,0.0000025525,0.0000025508,0.0000025554, -0.0000025660,0.0000025911,0.0000026298,0.0000026492,0.0000026442, -0.0000026368,0.0000026438,0.0000026540,0.0000026602,0.0000026622, -0.0000026595,0.0000026560,0.0000026516,0.0000026463,0.0000026399, -0.0000026341,0.0000026294,0.0000026269,0.0000026318,0.0000026333, -0.0000026309,0.0000026272,0.0000026247,0.0000026226,0.0000026183, -0.0000026090,0.0000025931,0.0000025880,0.0000026108,0.0000026300, -0.0000027024,0.0000027454,0.0000027723,0.0000027849,0.0000028026, -0.0000028103,0.0000028120,0.0000028131,0.0000028124,0.0000028067, -0.0000027967,0.0000027887,0.0000027836,0.0000027774,0.0000027707, -0.0000027647,0.0000027633,0.0000027677,0.0000027745,0.0000027814, -0.0000027852,0.0000027882,0.0000027848,0.0000027683,0.0000027691, -0.0000027788,0.0000027832,0.0000027931,0.0000027887,0.0000027723, -0.0000027562,0.0000027444,0.0000027471,0.0000027489,0.0000027452, -0.0000027390,0.0000027239,0.0000027104,0.0000027027,0.0000026990, -0.0000026921,0.0000026907,0.0000026894,0.0000026874,0.0000026849, -0.0000026824,0.0000026810,0.0000026806,0.0000026804,0.0000026798, -0.0000026780,0.0000026741,0.0000026695,0.0000026681,0.0000026737, -0.0000026834,0.0000026850,0.0000026732,0.0000026591,0.0000026524, -0.0000026460,0.0000026360,0.0000026273,0.0000026210,0.0000026133, -0.0000026046,0.0000025982,0.0000025949,0.0000025930,0.0000025919, -0.0000025934,0.0000026002,0.0000026097,0.0000026198,0.0000026289, -0.0000026362,0.0000026408,0.0000026412,0.0000026398,0.0000026385, -0.0000026369,0.0000026361,0.0000026372,0.0000026396,0.0000026401, -0.0000026377,0.0000026319,0.0000026224,0.0000026114,0.0000026009, -0.0000025921,0.0000025884,0.0000025891,0.0000025886,0.0000025861, -0.0000025833,0.0000025792,0.0000025758,0.0000025730,0.0000025703, -0.0000025661,0.0000025594,0.0000025511,0.0000025433,0.0000025391, -0.0000025415,0.0000025475,0.0000025514,0.0000025512,0.0000025473, -0.0000025391,0.0000025279,0.0000025176,0.0000025131,0.0000025126, -0.0000025165,0.0000025206,0.0000025219,0.0000025181,0.0000025090, -0.0000025007,0.0000024933,0.0000024836,0.0000024779,0.0000024845, -0.0000024939,0.0000024974,0.0000024971,0.0000025021,0.0000025156, -0.0000025188,0.0000025196,0.0000025432,0.0000025599,0.0000025492, -0.0000025300,0.0000025233,0.0000025377,0.0000025655,0.0000025727, -0.0000025817,0.0000026102,0.0000026177,0.0000026141,0.0000026196, -0.0000026241,0.0000026217,0.0000026154,0.0000026100,0.0000026080, -0.0000026082,0.0000026065,0.0000025998,0.0000025927,0.0000025891, -0.0000025872,0.0000025843,0.0000025818,0.0000025816,0.0000025859, -0.0000025950,0.0000026029,0.0000026066,0.0000026087,0.0000026170, -0.0000026384,0.0000026614,0.0000026727,0.0000026775,0.0000026807, -0.0000026816,0.0000026845,0.0000026889,0.0000026946,0.0000026976, -0.0000026942,0.0000026847,0.0000026803,0.0000026894,0.0000027064, -0.0000027110,0.0000027115,0.0000027223,0.0000027585,0.0000028042, -0.0000028110,0.0000028033,0.0000028017,0.0000028147,0.0000028331, -0.0000028381,0.0000028296,0.0000028174,0.0000027995,0.0000027835, -0.0000027958,0.0000028056,0.0000028130,0.0000028121,0.0000027997, -0.0000027925,0.0000027921,0.0000027948,0.0000027978,0.0000027982, -0.0000027979,0.0000028009,0.0000028058,0.0000028124,0.0000028197, -0.0000028256,0.0000028297,0.0000028318,0.0000028358,0.0000028414, -0.0000028457,0.0000028492,0.0000028522,0.0000028529,0.0000028534, -0.0000028528,0.0000028537,0.0000028569,0.0000028605,0.0000028643, -0.0000028657,0.0000028654,0.0000028634,0.0000028572,0.0000028512, -0.0000028463,0.0000028435,0.0000028411,0.0000028389,0.0000028391, -0.0000028398,0.0000028416,0.0000028460,0.0000028538,0.0000028632, -0.0000028722,0.0000028820,0.0000028930,0.0000029059,0.0000029143, -0.0000029201,0.0000029234,0.0000029205,0.0000029161,0.0000029147, -0.0000029125,0.0000029040,0.0000028863,0.0000028682,0.0000028595, -0.0000028459,0.0000028258,0.0000028251,0.0000028392,0.0000028493, -0.0000028532,0.0000028568,0.0000028606,0.0000028662,0.0000028719, -0.0000028761,0.0000028803,0.0000028810,0.0000028791,0.0000028747, -0.0000028702,0.0000028685,0.0000028663,0.0000028645,0.0000028622, -0.0000028600,0.0000028580,0.0000028557,0.0000028511,0.0000028461, -0.0000028406,0.0000028359,0.0000028321,0.0000028282,0.0000028258, -0.0000028243,0.0000028217,0.0000028180,0.0000028134,0.0000028082, -0.0000028044,0.0000028025,0.0000028020,0.0000028021,0.0000028010, -0.0000027981,0.0000027943,0.0000027904,0.0000027875,0.0000027865, -0.0000027885,0.0000027932,0.0000027995,0.0000028079,0.0000028192, -0.0000028313,0.0000028391,0.0000028401,0.0000028372,0.0000028356, -0.0000028348,0.0000028321,0.0000028303,0.0000028316,0.0000028346, -0.0000028355,0.0000028335,0.0000028294,0.0000028273,0.0000028262, -0.0000028234,0.0000028193,0.0000028160,0.0000028153,0.0000028160, -0.0000028189,0.0000028206,0.0000028211,0.0000028211,0.0000028215, -0.0000028230,0.0000028244,0.0000028249,0.0000028263,0.0000028280, -0.0000028270,0.0000028224,0.0000028187,0.0000028196,0.0000028226, -0.0000028221,0.0000028162,0.0000028098,0.0000028074,0.0000028083, -0.0000028093,0.0000028075,0.0000028026,0.0000027964,0.0000027906, -0.0000027838,0.0000027755,0.0000027703,0.0000027713,0.0000027769, -0.0000027803,0.0000027786,0.0000027749,0.0000027735,0.0000027774, -0.0000027829,0.0000027859,0.0000027868,0.0000027860,0.0000027864, -0.0000027893,0.0000027936,0.0000027977,0.0000028028,0.0000028091, -0.0000028130,0.0000028127,0.0000028092,0.0000028034,0.0000027977, -0.0000027914,0.0000027854,0.0000027799,0.0000027759,0.0000027758, -0.0000027808,0.0000027878,0.0000027941,0.0000027989,0.0000028030, -0.0000028047,0.0000028036,0.0000028033,0.0000028059,0.0000028116, -0.0000028196,0.0000028259,0.0000028294,0.0000028276,0.0000028231, -0.0000028153,0.0000028065,0.0000027886,0.0000027614,0.0000027351, -0.0000027212,0.0000027173,0.0000027223,0.0000027357,0.0000027492, -0.0000027596,0.0000027712,0.0000027791,0.0000027767,0.0000027684, -0.0000027597,0.0000027503,0.0000027439,0.0000027443,0.0000027524, -0.0000027595,0.0000027642,0.0000027666,0.0000027696,0.0000027769, -0.0000027831,0.0000027840,0.0000027812,0.0000027774,0.0000027741, -0.0000027694,0.0000027617,0.0000027505,0.0000027416,0.0000027357, -0.0000027270,0.0000027138,0.0000027065,0.0000027111,0.0000027210, -0.0000027299,0.0000027399,0.0000027528,0.0000027628,0.0000027698, -0.0000027731,0.0000027756,0.0000027758,0.0000027718,0.0000027659, -0.0000027631,0.0000027683,0.0000027870,0.0000028070,0.0000028156, -0.0000028151,0.0000028111,0.0000028140,0.0000028225,0.0000028320, -0.0000028422,0.0000028439,0.0000028338,0.0000028279,0.0000028341, -0.0000028301,0.0000028052,0.0000028034,0.0000028335,0.0000028611, -0.0000028634,0.0000028556,0.0000028491,0.0000028461,0.0000028346, -0.0000028211,0.0000028175,0.0000028164,0.0000028096,0.0000028004, -0.0000028001,0.0000028035,0.0000027958,0.0000027781,0.0000027755, -0.0000027784,0.0000027875,0.0000027978,0.0000028115,0.0000028180, -0.0000028186,0.0000028173,0.0000028216,0.0000028308,0.0000028428, -0.0000028578,0.0000028713,0.0000028769,0.0000028691,0.0000028454, -0.0000028367,0.0000028457,0.0000028589,0.0000028676,0.0000028729, -0.0000028764,0.0000028800,0.0000028835,0.0000028851,0.0000028843, -0.0000028873,0.0000028997,0.0000029026,0.0000028978,0.0000029030, -0.0000029099,0.0000029072,0.0000028806,0.0000028609,0.0000028535, -0.0000028647,0.0000028754,0.0000028602,0.0000028319,0.0000028294, -0.0000028351,0.0000028345,0.0000028230,0.0000028074,0.0000027952, -0.0000027876,0.0000027859,0.0000027893,0.0000027924,0.0000027916, -0.0000027886,0.0000027876,0.0000027868,0.0000027839,0.0000027806, -0.0000027797,0.0000027805,0.0000027800,0.0000027761,0.0000027693, -0.0000027609,0.0000027537,0.0000027522,0.0000027545,0.0000027567, -0.0000027563,0.0000027544,0.0000027531,0.0000027548,0.0000027596, -0.0000027642,0.0000027666,0.0000027676,0.0000027665,0.0000027645, -0.0000027635,0.0000027627,0.0000027629,0.0000027643,0.0000027663, -0.0000027684,0.0000027714,0.0000027749,0.0000027774,0.0000027770, -0.0000027735,0.0000027707,0.0000027703,0.0000027696,0.0000027639, -0.0000027521,0.0000027405,0.0000027328,0.0000027287,0.0000027266, -0.0000027250,0.0000027237,0.0000027231,0.0000027252,0.0000027292, -0.0000027320,0.0000027336,0.0000027344,0.0000027348,0.0000027356, -0.0000027366,0.0000027377,0.0000027389,0.0000027394,0.0000027389, -0.0000027381,0.0000027372,0.0000027359,0.0000027346,0.0000027330, -0.0000027310,0.0000027297,0.0000027292,0.0000027296,0.0000027314, -0.0000027342,0.0000027373,0.0000027403,0.0000027425,0.0000027422, -0.0000027392,0.0000027356,0.0000027323,0.0000027286,0.0000027255, -0.0000027244,0.0000027248,0.0000027248,0.0000027231,0.0000027186, -0.0000027123,0.0000027064,0.0000027017,0.0000026980,0.0000026955, -0.0000026932,0.0000026906,0.0000026891,0.0000026882,0.0000026862, -0.0000026807,0.0000026722,0.0000026576,0.0000026393,0.0000026258, -0.0000026184,0.0000026127,0.0000026056,0.0000026007,0.0000026005, -0.0000026075,0.0000026230,0.0000026418,0.0000026596,0.0000026756, -0.0000026897,0.0000027030,0.0000027163,0.0000027274,0.0000027345, -0.0000027397,0.0000027459,0.0000027526,0.0000027583,0.0000027632, -0.0000027677,0.0000027719,0.0000027767,0.0000027809,0.0000027838, -0.0000027860,0.0000027888,0.0000027923,0.0000027962,0.0000028009, -0.0000028062,0.0000028138,0.0000028220,0.0000028310,0.0000028409, -0.0000028507,0.0000028597,0.0000028680,0.0000028751,0.0000028803, -0.0000028850,0.0000028874,0.0000028910,0.0000028927,0.0000028925, -0.0000028903,0.0000028856,0.0000028805,0.0000028791,0.0000028826, -0.0000028858,0.0000028862,0.0000028829,0.0000028780,0.0000028767, -0.0000028776,0.0000028793,0.0000028797,0.0000028742,0.0000028608, -0.0000028437,0.0000028320,0.0000028319,0.0000028404,0.0000028473, -0.0000028506,0.0000028542,0.0000028609,0.0000028687,0.0000028730, -0.0000028716,0.0000028641,0.0000028515,0.0000028373,0.0000028271, -0.0000028249,0.0000028301,0.0000028388,0.0000028464,0.0000028512, -0.0000028519,0.0000028497,0.0000028467,0.0000028473,0.0000028493, -0.0000028489,0.0000028457,0.0000028417,0.0000028398,0.0000028396, -0.0000028392,0.0000028373,0.0000028332,0.0000028273,0.0000028213, -0.0000028159,0.0000028103,0.0000028052,0.0000028017,0.0000027994, -0.0000027969,0.0000027936,0.0000027907,0.0000027878,0.0000027839, -0.0000027787,0.0000027730,0.0000027671,0.0000027608,0.0000027541, -0.0000027475,0.0000027423,0.0000027383,0.0000027344,0.0000027297, -0.0000027236,0.0000027182,0.0000027165,0.0000027257,0.0000027492, -0.0000027728,0.0000027833,0.0000027810,0.0000027705,0.0000027616, -0.0000027597,0.0000027641,0.0000027760,0.0000027803,0.0000027652, -0.0000027488,0.0000027489,0.0000027572,0.0000027611,0.0000027566, -0.0000027405,0.0000027263,0.0000027278,0.0000027421,0.0000027471, -0.0000027353,0.0000027314,0.0000027448,0.0000027548,0.0000027507, -0.0000027448,0.0000027436,0.0000027434,0.0000027359,0.0000027206, -0.0000027129,0.0000027131,0.0000027130,0.0000027134,0.0000027172, -0.0000027225,0.0000027259,0.0000027260,0.0000027242,0.0000027216, -0.0000027186,0.0000027150,0.0000027093,0.0000027040,0.0000027040, -0.0000027110,0.0000027200,0.0000027249,0.0000027264,0.0000027281, -0.0000027283,0.0000027282,0.0000027287,0.0000027287,0.0000027263, -0.0000027226,0.0000027232,0.0000027304,0.0000027333,0.0000027286, -0.0000027216,0.0000027199,0.0000027196,0.0000027146,0.0000027026, -0.0000026916,0.0000026882,0.0000026879,0.0000026882,0.0000026883, -0.0000026868,0.0000026855,0.0000026862,0.0000026880,0.0000026895, -0.0000026895,0.0000026874,0.0000026833,0.0000026777,0.0000026712, -0.0000026637,0.0000026553,0.0000026466,0.0000026394,0.0000026356, -0.0000026353,0.0000026389,0.0000026450,0.0000026492,0.0000026498, -0.0000026470,0.0000026388,0.0000026267,0.0000026146,0.0000026006, -0.0000025820,0.0000025643,0.0000025534,0.0000025483,0.0000025497, -0.0000025570,0.0000025703,0.0000026026,0.0000026390,0.0000026464, -0.0000026375,0.0000026371,0.0000026459,0.0000026545,0.0000026589, -0.0000026588,0.0000026566,0.0000026539,0.0000026540,0.0000026533, -0.0000026504,0.0000026456,0.0000026446,0.0000026466,0.0000026458, -0.0000026431,0.0000026368,0.0000026306,0.0000026250,0.0000026205, -0.0000026202,0.0000026132,0.0000025914,0.0000025949,0.0000026168, -0.0000026677,0.0000027312,0.0000027626,0.0000027754,0.0000027936, -0.0000028054,0.0000028097,0.0000028114,0.0000028108,0.0000028043, -0.0000027956,0.0000027890,0.0000027832,0.0000027771,0.0000027710, -0.0000027664,0.0000027675,0.0000027730,0.0000027782,0.0000027818, -0.0000027846,0.0000027872,0.0000027773,0.0000027656,0.0000027715, -0.0000027785,0.0000027838,0.0000027921,0.0000027849,0.0000027682, -0.0000027515,0.0000027408,0.0000027461,0.0000027470,0.0000027432, -0.0000027358,0.0000027200,0.0000027072,0.0000027000,0.0000026950, -0.0000026876,0.0000026856,0.0000026843,0.0000026835,0.0000026823, -0.0000026807,0.0000026801,0.0000026799,0.0000026800,0.0000026795, -0.0000026779,0.0000026744,0.0000026697,0.0000026659,0.0000026662, -0.0000026746,0.0000026861,0.0000026865,0.0000026730,0.0000026578, -0.0000026502,0.0000026414,0.0000026316,0.0000026249,0.0000026204, -0.0000026147,0.0000026072,0.0000026011,0.0000025983,0.0000025972, -0.0000025994,0.0000026060,0.0000026154,0.0000026255,0.0000026342, -0.0000026413,0.0000026454,0.0000026454,0.0000026435,0.0000026424, -0.0000026423,0.0000026431,0.0000026452,0.0000026468,0.0000026468, -0.0000026437,0.0000026371,0.0000026296,0.0000026213,0.0000026129, -0.0000026048,0.0000025993,0.0000025969,0.0000025934,0.0000025883, -0.0000025846,0.0000025808,0.0000025778,0.0000025738,0.0000025696, -0.0000025629,0.0000025550,0.0000025478,0.0000025422,0.0000025394, -0.0000025411,0.0000025463,0.0000025514,0.0000025533,0.0000025526, -0.0000025477,0.0000025392,0.0000025299,0.0000025230,0.0000025195, -0.0000025222,0.0000025281,0.0000025333,0.0000025359,0.0000025328, -0.0000025233,0.0000025099,0.0000024964,0.0000024829,0.0000024729, -0.0000024753,0.0000024901,0.0000024970,0.0000024972,0.0000024995, -0.0000025104,0.0000025172,0.0000025176,0.0000025386,0.0000025592, -0.0000025491,0.0000025292,0.0000025246,0.0000025392,0.0000025650, -0.0000025708,0.0000025804,0.0000026071,0.0000026116,0.0000026122, -0.0000026223,0.0000026252,0.0000026207,0.0000026138,0.0000026095, -0.0000026097,0.0000026109,0.0000026091,0.0000026024,0.0000025940, -0.0000025893,0.0000025861,0.0000025818,0.0000025781,0.0000025793, -0.0000025883,0.0000025986,0.0000026038,0.0000026044,0.0000026046, -0.0000026112,0.0000026320,0.0000026550,0.0000026670,0.0000026725, -0.0000026764,0.0000026787,0.0000026829,0.0000026884,0.0000026929, -0.0000026924,0.0000026850,0.0000026755,0.0000026759,0.0000026909, -0.0000027034,0.0000027053,0.0000027060,0.0000027163,0.0000027512, -0.0000027972,0.0000028090,0.0000028027,0.0000028007,0.0000028139, -0.0000028331,0.0000028360,0.0000028260,0.0000028154,0.0000027988, -0.0000027809,0.0000027900,0.0000028045,0.0000028139,0.0000028141, -0.0000028065,0.0000028006,0.0000027976,0.0000027975,0.0000027973, -0.0000027965,0.0000027949,0.0000027960,0.0000028010,0.0000028078, -0.0000028147,0.0000028208,0.0000028251,0.0000028287,0.0000028331, -0.0000028375,0.0000028405,0.0000028414,0.0000028420,0.0000028427, -0.0000028442,0.0000028461,0.0000028489,0.0000028552,0.0000028613, -0.0000028669,0.0000028688,0.0000028674,0.0000028631,0.0000028560, -0.0000028504,0.0000028462,0.0000028433,0.0000028391,0.0000028342, -0.0000028307,0.0000028276,0.0000028265,0.0000028283,0.0000028341, -0.0000028435,0.0000028543,0.0000028648,0.0000028778,0.0000028929, -0.0000029036,0.0000029095,0.0000029128,0.0000029096,0.0000029047, -0.0000029016,0.0000028987,0.0000028934,0.0000028818,0.0000028651, -0.0000028542,0.0000028491,0.0000028335,0.0000028193,0.0000028197, -0.0000028301,0.0000028392,0.0000028468,0.0000028538,0.0000028615, -0.0000028692,0.0000028747,0.0000028779,0.0000028783,0.0000028767, -0.0000028736,0.0000028692,0.0000028666,0.0000028663,0.0000028653, -0.0000028642,0.0000028625,0.0000028602,0.0000028575,0.0000028530, -0.0000028468,0.0000028400,0.0000028335,0.0000028286,0.0000028253, -0.0000028233,0.0000028234,0.0000028240,0.0000028233,0.0000028216, -0.0000028173,0.0000028122,0.0000028082,0.0000028056,0.0000028049, -0.0000028047,0.0000028033,0.0000027996,0.0000027943,0.0000027888, -0.0000027846,0.0000027837,0.0000027850,0.0000027890,0.0000027934, -0.0000027999,0.0000028112,0.0000028241,0.0000028333,0.0000028366, -0.0000028372,0.0000028375,0.0000028350,0.0000028306,0.0000028287, -0.0000028298,0.0000028324,0.0000028334,0.0000028328,0.0000028327, -0.0000028330,0.0000028312,0.0000028266,0.0000028215,0.0000028184, -0.0000028182,0.0000028212,0.0000028249,0.0000028283,0.0000028294, -0.0000028280,0.0000028260,0.0000028261,0.0000028266,0.0000028256, -0.0000028247,0.0000028243,0.0000028228,0.0000028197,0.0000028182, -0.0000028184,0.0000028180,0.0000028137,0.0000028072,0.0000028031, -0.0000028025,0.0000028035,0.0000028037,0.0000028024,0.0000027985, -0.0000027930,0.0000027868,0.0000027788,0.0000027712,0.0000027676, -0.0000027689,0.0000027732,0.0000027767,0.0000027764,0.0000027738, -0.0000027727,0.0000027747,0.0000027787,0.0000027801,0.0000027787, -0.0000027771,0.0000027780,0.0000027821,0.0000027877,0.0000027936, -0.0000028009,0.0000028076,0.0000028097,0.0000028081,0.0000028041, -0.0000027994,0.0000027949,0.0000027895,0.0000027826,0.0000027748, -0.0000027685,0.0000027685,0.0000027753,0.0000027847,0.0000027923, -0.0000027963,0.0000027977,0.0000027966,0.0000027954,0.0000027954, -0.0000027987,0.0000028035,0.0000028110,0.0000028200,0.0000028266, -0.0000028255,0.0000028200,0.0000028118,0.0000028047,0.0000027953, -0.0000027743,0.0000027458,0.0000027237,0.0000027157,0.0000027170, -0.0000027273,0.0000027385,0.0000027461,0.0000027567,0.0000027681, -0.0000027712,0.0000027651,0.0000027561,0.0000027459,0.0000027392, -0.0000027397,0.0000027485,0.0000027581,0.0000027643,0.0000027669, -0.0000027682,0.0000027715,0.0000027765,0.0000027796,0.0000027799, -0.0000027765,0.0000027726,0.0000027692,0.0000027652,0.0000027551, -0.0000027427,0.0000027336,0.0000027235,0.0000027063,0.0000026896, -0.0000026797,0.0000026840,0.0000026963,0.0000027175,0.0000027427, -0.0000027622,0.0000027714,0.0000027727,0.0000027699,0.0000027672, -0.0000027665,0.0000027628,0.0000027581,0.0000027584,0.0000027720, -0.0000027959,0.0000028127,0.0000028151,0.0000028114,0.0000028138, -0.0000028219,0.0000028337,0.0000028441,0.0000028455,0.0000028352, -0.0000028310,0.0000028367,0.0000028300,0.0000028037,0.0000028011, -0.0000028264,0.0000028549,0.0000028593,0.0000028528,0.0000028445, -0.0000028383,0.0000028251,0.0000028191,0.0000028220,0.0000028239, -0.0000028184,0.0000028056,0.0000028008,0.0000028041,0.0000028008, -0.0000027810,0.0000027745,0.0000027766,0.0000027839,0.0000027920, -0.0000028070,0.0000028152,0.0000028169,0.0000028165,0.0000028218, -0.0000028301,0.0000028400,0.0000028553,0.0000028708,0.0000028769, -0.0000028627,0.0000028373,0.0000028369,0.0000028519,0.0000028648, -0.0000028741,0.0000028797,0.0000028801,0.0000028806,0.0000028816, -0.0000028826,0.0000028839,0.0000028892,0.0000029020,0.0000029044, -0.0000028984,0.0000029040,0.0000029115,0.0000029085,0.0000028831, -0.0000028641,0.0000028586,0.0000028700,0.0000028755,0.0000028556, -0.0000028297,0.0000028301,0.0000028348,0.0000028340,0.0000028249, -0.0000028122,0.0000028038,0.0000027976,0.0000027961,0.0000027993, -0.0000028018,0.0000027990,0.0000027927,0.0000027905,0.0000027913, -0.0000027912,0.0000027893,0.0000027882,0.0000027889,0.0000027892, -0.0000027872,0.0000027823,0.0000027747,0.0000027649,0.0000027573, -0.0000027560,0.0000027579,0.0000027591,0.0000027584,0.0000027570, -0.0000027564,0.0000027588,0.0000027641,0.0000027701,0.0000027757, -0.0000027792,0.0000027793,0.0000027760,0.0000027712,0.0000027676, -0.0000027660,0.0000027664,0.0000027686,0.0000027714,0.0000027735, -0.0000027751,0.0000027772,0.0000027783,0.0000027769,0.0000027721, -0.0000027684,0.0000027694,0.0000027712,0.0000027701,0.0000027609, -0.0000027477,0.0000027369,0.0000027301,0.0000027261,0.0000027232, -0.0000027212,0.0000027209,0.0000027226,0.0000027258,0.0000027299, -0.0000027335,0.0000027356,0.0000027361,0.0000027350,0.0000027337, -0.0000027331,0.0000027334,0.0000027343,0.0000027356,0.0000027365, -0.0000027365,0.0000027353,0.0000027325,0.0000027283,0.0000027237, -0.0000027200,0.0000027189,0.0000027212,0.0000027266,0.0000027331, -0.0000027397,0.0000027457,0.0000027495,0.0000027510,0.0000027506, -0.0000027473,0.0000027417,0.0000027350,0.0000027290,0.0000027265, -0.0000027272,0.0000027290,0.0000027298,0.0000027292,0.0000027261, -0.0000027200,0.0000027113,0.0000027023,0.0000026952,0.0000026904, -0.0000026866,0.0000026845,0.0000026845,0.0000026840,0.0000026806, -0.0000026709,0.0000026541,0.0000026370,0.0000026250,0.0000026162, -0.0000026077,0.0000026009,0.0000025999,0.0000026033,0.0000026142, -0.0000026290,0.0000026447,0.0000026611,0.0000026767,0.0000026912, -0.0000027049,0.0000027159,0.0000027215,0.0000027241,0.0000027266, -0.0000027303,0.0000027350,0.0000027413,0.0000027490,0.0000027573, -0.0000027660,0.0000027730,0.0000027769,0.0000027779,0.0000027775, -0.0000027777,0.0000027791,0.0000027816,0.0000027850,0.0000027911, -0.0000027999,0.0000028099,0.0000028209,0.0000028319,0.0000028416, -0.0000028496,0.0000028571,0.0000028651,0.0000028740,0.0000028820, -0.0000028896,0.0000028948,0.0000028947,0.0000028937,0.0000028875, -0.0000028797,0.0000028755,0.0000028781,0.0000028820,0.0000028826, -0.0000028792,0.0000028751,0.0000028746,0.0000028759,0.0000028777, -0.0000028791,0.0000028759,0.0000028646,0.0000028482,0.0000028368, -0.0000028380,0.0000028478,0.0000028533,0.0000028535,0.0000028541, -0.0000028598,0.0000028691,0.0000028747,0.0000028743,0.0000028678, -0.0000028559,0.0000028413,0.0000028283,0.0000028230,0.0000028259, -0.0000028342,0.0000028430,0.0000028488,0.0000028502,0.0000028473, -0.0000028421,0.0000028393,0.0000028396,0.0000028395,0.0000028364, -0.0000028319,0.0000028287,0.0000028281,0.0000028285,0.0000028269, -0.0000028214,0.0000028125,0.0000028030,0.0000027952,0.0000027895, -0.0000027855,0.0000027831,0.0000027815,0.0000027790,0.0000027748, -0.0000027698,0.0000027657,0.0000027625,0.0000027592,0.0000027550, -0.0000027494,0.0000027430,0.0000027362,0.0000027294,0.0000027235, -0.0000027203,0.0000027195,0.0000027197,0.0000027198,0.0000027185, -0.0000027161,0.0000027159,0.0000027269,0.0000027519,0.0000027734, -0.0000027787,0.0000027732,0.0000027641,0.0000027595,0.0000027600, -0.0000027682,0.0000027793,0.0000027754,0.0000027555,0.0000027416, -0.0000027423,0.0000027456,0.0000027417,0.0000027280,0.0000027196, -0.0000027273,0.0000027434,0.0000027475,0.0000027347,0.0000027315, -0.0000027467,0.0000027561,0.0000027515,0.0000027468,0.0000027451, -0.0000027408,0.0000027278,0.0000027136,0.0000027092,0.0000027102, -0.0000027103,0.0000027106,0.0000027126,0.0000027152,0.0000027173, -0.0000027182,0.0000027177,0.0000027155,0.0000027117,0.0000027075, -0.0000027038,0.0000027018,0.0000027030,0.0000027097,0.0000027181, -0.0000027236,0.0000027258,0.0000027275,0.0000027281,0.0000027282, -0.0000027290,0.0000027306,0.0000027303,0.0000027279,0.0000027251, -0.0000027284,0.0000027340,0.0000027322,0.0000027252,0.0000027207, -0.0000027199,0.0000027182,0.0000027111,0.0000026981,0.0000026884, -0.0000026858,0.0000026853,0.0000026851,0.0000026851,0.0000026847, -0.0000026860,0.0000026881,0.0000026896,0.0000026897,0.0000026879, -0.0000026847,0.0000026801,0.0000026741,0.0000026670,0.0000026597, -0.0000026527,0.0000026460,0.0000026404,0.0000026373,0.0000026378, -0.0000026421,0.0000026467,0.0000026478,0.0000026460,0.0000026402, -0.0000026313,0.0000026220,0.0000026119,0.0000025990,0.0000025816, -0.0000025647,0.0000025545,0.0000025493,0.0000025475,0.0000025511, -0.0000025588,0.0000025768,0.0000026147,0.0000026433,0.0000026436, -0.0000026349,0.0000026372,0.0000026478,0.0000026542,0.0000026566, -0.0000026565,0.0000026551,0.0000026545,0.0000026542,0.0000026535, -0.0000026530,0.0000026561,0.0000026591,0.0000026609,0.0000026585, -0.0000026520,0.0000026446,0.0000026358,0.0000026262,0.0000026206, -0.0000026227,0.0000026080,0.0000025899,0.0000026072,0.0000026383, -0.0000027159,0.0000027516,0.0000027664,0.0000027845,0.0000028010, -0.0000028076,0.0000028105,0.0000028085,0.0000028021,0.0000027940, -0.0000027874,0.0000027810,0.0000027763,0.0000027718,0.0000027700, -0.0000027730,0.0000027759,0.0000027789,0.0000027820,0.0000027847, -0.0000027833,0.0000027694,0.0000027654,0.0000027735,0.0000027773, -0.0000027843,0.0000027894,0.0000027807,0.0000027640,0.0000027469, -0.0000027378,0.0000027444,0.0000027443,0.0000027404,0.0000027320, -0.0000027157,0.0000027031,0.0000026964,0.0000026912,0.0000026855, -0.0000026842,0.0000026841,0.0000026846,0.0000026852,0.0000026858, -0.0000026861,0.0000026858,0.0000026850,0.0000026836,0.0000026813, -0.0000026767,0.0000026696,0.0000026634,0.0000026612,0.0000026647, -0.0000026763,0.0000026861,0.0000026857,0.0000026692,0.0000026534, -0.0000026446,0.0000026365,0.0000026292,0.0000026248,0.0000026218, -0.0000026176,0.0000026119,0.0000026073,0.0000026059,0.0000026079, -0.0000026136,0.0000026218,0.0000026304,0.0000026379,0.0000026437, -0.0000026472,0.0000026471,0.0000026457,0.0000026444,0.0000026446, -0.0000026465,0.0000026495,0.0000026505,0.0000026498,0.0000026461, -0.0000026404,0.0000026351,0.0000026296,0.0000026232,0.0000026159, -0.0000026091,0.0000026040,0.0000025987,0.0000025916,0.0000025857, -0.0000025812,0.0000025780,0.0000025735,0.0000025685,0.0000025619, -0.0000025516,0.0000025425,0.0000025376,0.0000025368,0.0000025396, -0.0000025451,0.0000025505,0.0000025539,0.0000025552,0.0000025538, -0.0000025505,0.0000025454,0.0000025395,0.0000025332,0.0000025305, -0.0000025329,0.0000025370,0.0000025409,0.0000025448,0.0000025447, -0.0000025362,0.0000025187,0.0000024997,0.0000024847,0.0000024711, -0.0000024727,0.0000024881,0.0000024978,0.0000024982,0.0000024974, -0.0000025060,0.0000025160,0.0000025181,0.0000025340,0.0000025565, -0.0000025487,0.0000025294,0.0000025265,0.0000025402,0.0000025635, -0.0000025678,0.0000025775,0.0000026023,0.0000026066,0.0000026129, -0.0000026248,0.0000026248,0.0000026194,0.0000026131,0.0000026097, -0.0000026104,0.0000026115,0.0000026091,0.0000026024,0.0000025934, -0.0000025875,0.0000025834,0.0000025792,0.0000025762,0.0000025813, -0.0000025919,0.0000026000,0.0000026024,0.0000026004,0.0000025998, -0.0000026069,0.0000026280,0.0000026510,0.0000026632,0.0000026682, -0.0000026728,0.0000026766,0.0000026819,0.0000026867,0.0000026883, -0.0000026840,0.0000026742,0.0000026682,0.0000026755,0.0000026918, -0.0000026989,0.0000027005,0.0000027013,0.0000027103,0.0000027435, -0.0000027881,0.0000028049,0.0000028021,0.0000027996,0.0000028126, -0.0000028312,0.0000028323,0.0000028223,0.0000028145,0.0000028002, -0.0000027811,0.0000027847,0.0000028018,0.0000028134,0.0000028143, -0.0000028116,0.0000028073,0.0000028031,0.0000028016,0.0000027997, -0.0000027980,0.0000027963,0.0000027976,0.0000028022,0.0000028091, -0.0000028150,0.0000028190,0.0000028200,0.0000028211,0.0000028227, -0.0000028242,0.0000028269,0.0000028300,0.0000028347,0.0000028404, -0.0000028459,0.0000028510,0.0000028547,0.0000028604,0.0000028656, -0.0000028693,0.0000028699,0.0000028684,0.0000028628,0.0000028539, -0.0000028455,0.0000028362,0.0000028295,0.0000028218,0.0000028131, -0.0000028058,0.0000028002,0.0000027984,0.0000028006,0.0000028073, -0.0000028178,0.0000028320,0.0000028450,0.0000028600,0.0000028776, -0.0000028906,0.0000028968,0.0000029001,0.0000028977,0.0000028921, -0.0000028871,0.0000028816,0.0000028768,0.0000028706,0.0000028611, -0.0000028521,0.0000028466,0.0000028410,0.0000028283,0.0000028146, -0.0000028111,0.0000028148,0.0000028212,0.0000028305,0.0000028416, -0.0000028547,0.0000028654,0.0000028722,0.0000028742,0.0000028739, -0.0000028716,0.0000028674,0.0000028628,0.0000028611,0.0000028602, -0.0000028587,0.0000028565,0.0000028535,0.0000028497,0.0000028457, -0.0000028403,0.0000028337,0.0000028272,0.0000028215,0.0000028174, -0.0000028153,0.0000028150,0.0000028171,0.0000028202,0.0000028216, -0.0000028214,0.0000028188,0.0000028152,0.0000028134,0.0000028122, -0.0000028119,0.0000028108,0.0000028080,0.0000028028,0.0000027959, -0.0000027896,0.0000027855,0.0000027839,0.0000027839,0.0000027846, -0.0000027860,0.0000027922,0.0000028044,0.0000028182,0.0000028290, -0.0000028350,0.0000028386,0.0000028395,0.0000028353,0.0000028301, -0.0000028292,0.0000028316,0.0000028340,0.0000028344,0.0000028342, -0.0000028352,0.0000028351,0.0000028330,0.0000028294,0.0000028255, -0.0000028239,0.0000028256,0.0000028284,0.0000028322,0.0000028352, -0.0000028350,0.0000028323,0.0000028298,0.0000028286,0.0000028274, -0.0000028249,0.0000028218,0.0000028205,0.0000028205,0.0000028201, -0.0000028183,0.0000028143,0.0000028097,0.0000028052,0.0000028021, -0.0000028008,0.0000028000,0.0000027995,0.0000027992,0.0000027987, -0.0000027962,0.0000027916,0.0000027846,0.0000027765,0.0000027704, -0.0000027676,0.0000027681,0.0000027714,0.0000027751,0.0000027768, -0.0000027759,0.0000027736,0.0000027726,0.0000027734,0.0000027723, -0.0000027695,0.0000027695,0.0000027730,0.0000027777,0.0000027822, -0.0000027876,0.0000027952,0.0000028017,0.0000028032,0.0000028009, -0.0000027970,0.0000027934,0.0000027898,0.0000027854,0.0000027782, -0.0000027686,0.0000027611,0.0000027608,0.0000027677,0.0000027790, -0.0000027881,0.0000027925,0.0000027918,0.0000027877,0.0000027846, -0.0000027848,0.0000027885,0.0000027934,0.0000028000,0.0000028104, -0.0000028194,0.0000028197,0.0000028150,0.0000028057,0.0000027981, -0.0000027926,0.0000027809,0.0000027553,0.0000027279,0.0000027145, -0.0000027130,0.0000027194,0.0000027266,0.0000027317,0.0000027417, -0.0000027564,0.0000027637,0.0000027613,0.0000027536,0.0000027432, -0.0000027361,0.0000027364,0.0000027457,0.0000027563,0.0000027634, -0.0000027674,0.0000027686,0.0000027691,0.0000027694,0.0000027711, -0.0000027735,0.0000027727,0.0000027695,0.0000027659,0.0000027628, -0.0000027559,0.0000027440,0.0000027317,0.0000027205,0.0000027055, -0.0000026849,0.0000026610,0.0000026501,0.0000026566,0.0000026813, -0.0000027164,0.0000027476,0.0000027659,0.0000027709,0.0000027665, -0.0000027600,0.0000027583,0.0000027587,0.0000027575,0.0000027580, -0.0000027654,0.0000027853,0.0000028078,0.0000028150,0.0000028118, -0.0000028131,0.0000028208,0.0000028343,0.0000028446,0.0000028448, -0.0000028352,0.0000028332,0.0000028390,0.0000028297,0.0000028029, -0.0000028003,0.0000028208,0.0000028466,0.0000028531,0.0000028486, -0.0000028394,0.0000028287,0.0000028180,0.0000028193,0.0000028275, -0.0000028311,0.0000028278,0.0000028146,0.0000028031,0.0000028036, -0.0000028047,0.0000027868,0.0000027745,0.0000027764,0.0000027823, -0.0000027888,0.0000028009,0.0000028118,0.0000028157,0.0000028168, -0.0000028225,0.0000028301,0.0000028376,0.0000028516,0.0000028693, -0.0000028757,0.0000028543,0.0000028321,0.0000028410,0.0000028581, -0.0000028715,0.0000028805,0.0000028819,0.0000028783,0.0000028762, -0.0000028781,0.0000028816,0.0000028864,0.0000028962,0.0000029073, -0.0000029058,0.0000029001,0.0000029071,0.0000029139,0.0000029097, -0.0000028845,0.0000028669,0.0000028639,0.0000028745,0.0000028742, -0.0000028514,0.0000028285,0.0000028304,0.0000028346,0.0000028339, -0.0000028282,0.0000028196,0.0000028129,0.0000028065,0.0000028051, -0.0000028082,0.0000028104,0.0000028066,0.0000027975,0.0000027934, -0.0000027943,0.0000027961,0.0000027954,0.0000027937,0.0000027932, -0.0000027935,0.0000027932,0.0000027914,0.0000027872,0.0000027798, -0.0000027701,0.0000027628,0.0000027607,0.0000027600,0.0000027580, -0.0000027558,0.0000027547,0.0000027564,0.0000027611,0.0000027668, -0.0000027730,0.0000027778,0.0000027810,0.0000027830,0.0000027833, -0.0000027808,0.0000027772,0.0000027722,0.0000027687,0.0000027686, -0.0000027711,0.0000027742,0.0000027760,0.0000027763,0.0000027765, -0.0000027766,0.0000027748,0.0000027717,0.0000027692,0.0000027694, -0.0000027716,0.0000027717,0.0000027683,0.0000027593,0.0000027471, -0.0000027356,0.0000027274,0.0000027233,0.0000027234,0.0000027258, -0.0000027288,0.0000027317,0.0000027342,0.0000027358,0.0000027357, -0.0000027347,0.0000027338,0.0000027337,0.0000027342,0.0000027353, -0.0000027366,0.0000027379,0.0000027384,0.0000027377,0.0000027348, -0.0000027300,0.0000027240,0.0000027180,0.0000027138,0.0000027130, -0.0000027156,0.0000027224,0.0000027304,0.0000027390,0.0000027466, -0.0000027530,0.0000027566,0.0000027575,0.0000027565,0.0000027530, -0.0000027465,0.0000027385,0.0000027333,0.0000027324,0.0000027329, -0.0000027338,0.0000027337,0.0000027318,0.0000027263,0.0000027173, -0.0000027066,0.0000026962,0.0000026877,0.0000026828,0.0000026810, -0.0000026821,0.0000026824,0.0000026792,0.0000026674,0.0000026501, -0.0000026357,0.0000026252,0.0000026151,0.0000026056,0.0000026014, -0.0000026040,0.0000026099,0.0000026193,0.0000026313,0.0000026453, -0.0000026599,0.0000026737,0.0000026867,0.0000026981,0.0000027052, -0.0000027091,0.0000027110,0.0000027125,0.0000027146,0.0000027189, -0.0000027261,0.0000027346,0.0000027448,0.0000027553,0.0000027637, -0.0000027680,0.0000027686,0.0000027674,0.0000027666,0.0000027669, -0.0000027686,0.0000027728,0.0000027804,0.0000027906,0.0000028018, -0.0000028136,0.0000028248,0.0000028346,0.0000028430,0.0000028508, -0.0000028585,0.0000028664,0.0000028751,0.0000028841,0.0000028889, -0.0000028909,0.0000028877,0.0000028798,0.0000028748,0.0000028767, -0.0000028797,0.0000028792,0.0000028743,0.0000028692,0.0000028684, -0.0000028700,0.0000028729,0.0000028767,0.0000028770,0.0000028700, -0.0000028562,0.0000028449,0.0000028451,0.0000028539,0.0000028581, -0.0000028563,0.0000028546,0.0000028593,0.0000028692,0.0000028764, -0.0000028771,0.0000028716,0.0000028607,0.0000028459,0.0000028320, -0.0000028247,0.0000028256,0.0000028321,0.0000028396,0.0000028438, -0.0000028441,0.0000028396,0.0000028318,0.0000028253,0.0000028232, -0.0000028229,0.0000028207,0.0000028161,0.0000028105,0.0000028056, -0.0000028026,0.0000028005,0.0000027970,0.0000027911,0.0000027840, -0.0000027775,0.0000027726,0.0000027693,0.0000027668,0.0000027649, -0.0000027629,0.0000027603,0.0000027570,0.0000027538,0.0000027514, -0.0000027488,0.0000027452,0.0000027398,0.0000027326,0.0000027243, -0.0000027157,0.0000027076,0.0000027019,0.0000027000,0.0000027017, -0.0000027072,0.0000027140,0.0000027178,0.0000027167,0.0000027173, -0.0000027320,0.0000027576,0.0000027728,0.0000027727,0.0000027660, -0.0000027603,0.0000027591,0.0000027626,0.0000027736,0.0000027790, -0.0000027658,0.0000027431,0.0000027323,0.0000027320,0.0000027288, -0.0000027190,0.0000027163,0.0000027269,0.0000027429,0.0000027463, -0.0000027343,0.0000027314,0.0000027467,0.0000027562,0.0000027526, -0.0000027498,0.0000027468,0.0000027370,0.0000027210,0.0000027092, -0.0000027065,0.0000027067,0.0000027066,0.0000027072,0.0000027088, -0.0000027105,0.0000027108,0.0000027100,0.0000027092,0.0000027080, -0.0000027051,0.0000027014,0.0000026994,0.0000026994,0.0000027023, -0.0000027090,0.0000027165,0.0000027215,0.0000027239,0.0000027254, -0.0000027259,0.0000027259,0.0000027275,0.0000027299,0.0000027310, -0.0000027308,0.0000027287,0.0000027292,0.0000027342,0.0000027339, -0.0000027276,0.0000027217,0.0000027203,0.0000027189,0.0000027155, -0.0000027058,0.0000026927,0.0000026852,0.0000026831,0.0000026819, -0.0000026822,0.0000026830,0.0000026849,0.0000026865,0.0000026870, -0.0000026861,0.0000026840,0.0000026809,0.0000026771,0.0000026724, -0.0000026670,0.0000026616,0.0000026565,0.0000026518,0.0000026474, -0.0000026434,0.0000026417,0.0000026427,0.0000026447,0.0000026451, -0.0000026427,0.0000026375,0.0000026312,0.0000026258,0.0000026195, -0.0000026100,0.0000025965,0.0000025802,0.0000025654,0.0000025562, -0.0000025514,0.0000025477,0.0000025474,0.0000025521,0.0000025598, -0.0000025854,0.0000026257,0.0000026448,0.0000026390,0.0000026325, -0.0000026389,0.0000026485,0.0000026524,0.0000026534,0.0000026547, -0.0000026557,0.0000026542,0.0000026520,0.0000026528,0.0000026562, -0.0000026599,0.0000026650,0.0000026671,0.0000026649,0.0000026581, -0.0000026482,0.0000026389,0.0000026255,0.0000026227,0.0000026225, -0.0000025939,0.0000025970,0.0000026188,0.0000026982,0.0000027390, -0.0000027579,0.0000027766,0.0000027968,0.0000028057,0.0000028093, -0.0000028064,0.0000027999,0.0000027924,0.0000027850,0.0000027791, -0.0000027765,0.0000027743,0.0000027750,0.0000027757,0.0000027757, -0.0000027783,0.0000027822,0.0000027842,0.0000027755,0.0000027653, -0.0000027663,0.0000027744,0.0000027754,0.0000027842,0.0000027860, -0.0000027763,0.0000027600,0.0000027426,0.0000027357,0.0000027418, -0.0000027408,0.0000027369,0.0000027283,0.0000027127,0.0000027003, -0.0000026932,0.0000026885,0.0000026893,0.0000026902,0.0000026919, -0.0000026939,0.0000026961,0.0000026979,0.0000026987,0.0000026989, -0.0000026977,0.0000026942,0.0000026885,0.0000026818,0.0000026733, -0.0000026639,0.0000026571,0.0000026566,0.0000026634,0.0000026754, -0.0000026849,0.0000026816,0.0000026625,0.0000026462,0.0000026383, -0.0000026332,0.0000026301,0.0000026279,0.0000026251,0.0000026212, -0.0000026171,0.0000026155,0.0000026162,0.0000026197,0.0000026255, -0.0000026320,0.0000026376,0.0000026423,0.0000026452,0.0000026455, -0.0000026448,0.0000026446,0.0000026452,0.0000026472,0.0000026491, -0.0000026501,0.0000026489,0.0000026452,0.0000026423,0.0000026390, -0.0000026338,0.0000026275,0.0000026200,0.0000026125,0.0000026066, -0.0000026015,0.0000025955,0.0000025879,0.0000025812,0.0000025770, -0.0000025721,0.0000025658,0.0000025599,0.0000025509,0.0000025396, -0.0000025326,0.0000025320,0.0000025356,0.0000025425,0.0000025491, -0.0000025541,0.0000025568,0.0000025573,0.0000025583,0.0000025582, -0.0000025548,0.0000025482,0.0000025418,0.0000025381,0.0000025382, -0.0000025404,0.0000025439,0.0000025477,0.0000025480,0.0000025423, -0.0000025251,0.0000025062,0.0000024886,0.0000024757,0.0000024743, -0.0000024873,0.0000024975,0.0000024981,0.0000024958,0.0000025024, -0.0000025153,0.0000025186,0.0000025296,0.0000025529,0.0000025482, -0.0000025306,0.0000025283,0.0000025401,0.0000025611,0.0000025649, -0.0000025736,0.0000025972,0.0000026040,0.0000026159,0.0000026265, -0.0000026262,0.0000026208,0.0000026142,0.0000026094,0.0000026085, -0.0000026085,0.0000026063,0.0000025992,0.0000025886,0.0000025809, -0.0000025767,0.0000025737,0.0000025758,0.0000025835,0.0000025921, -0.0000025972,0.0000025973,0.0000025965,0.0000025975,0.0000026065, -0.0000026284,0.0000026502,0.0000026596,0.0000026643,0.0000026692, -0.0000026746,0.0000026795,0.0000026822,0.0000026807,0.0000026730, -0.0000026641,0.0000026647,0.0000026779,0.0000026901,0.0000026944, -0.0000026965,0.0000026971,0.0000027047,0.0000027356,0.0000027767, -0.0000027990,0.0000028007,0.0000027987,0.0000028105,0.0000028275, -0.0000028275,0.0000028188,0.0000028140,0.0000028030,0.0000027845, -0.0000027831,0.0000027981,0.0000028096,0.0000028125,0.0000028129, -0.0000028100,0.0000028063,0.0000028046,0.0000028031,0.0000028011, -0.0000028005,0.0000028011,0.0000028031,0.0000028073,0.0000028102, -0.0000028101,0.0000028094,0.0000028106,0.0000028145,0.0000028209, -0.0000028280,0.0000028352,0.0000028424,0.0000028494,0.0000028549, -0.0000028597,0.0000028627,0.0000028652,0.0000028679,0.0000028686, -0.0000028666,0.0000028597,0.0000028494,0.0000028365,0.0000028244, -0.0000028129,0.0000028050,0.0000027985,0.0000027925,0.0000027860, -0.0000027808,0.0000027796,0.0000027829,0.0000027909,0.0000028025, -0.0000028173,0.0000028320,0.0000028467,0.0000028635,0.0000028769, -0.0000028837,0.0000028861,0.0000028849,0.0000028790,0.0000028738, -0.0000028666,0.0000028591,0.0000028529,0.0000028482,0.0000028458, -0.0000028437,0.0000028405,0.0000028354,0.0000028251,0.0000028130, -0.0000028050,0.0000028021,0.0000028035,0.0000028109,0.0000028235, -0.0000028361,0.0000028449,0.0000028493,0.0000028509,0.0000028500, -0.0000028462,0.0000028415,0.0000028388,0.0000028384,0.0000028389, -0.0000028384,0.0000028373,0.0000028357,0.0000028340,0.0000028312, -0.0000028272,0.0000028225,0.0000028180,0.0000028136,0.0000028103, -0.0000028079,0.0000028066,0.0000028082,0.0000028108,0.0000028121, -0.0000028115,0.0000028104,0.0000028106,0.0000028129,0.0000028164, -0.0000028180,0.0000028177,0.0000028139,0.0000028061,0.0000027975, -0.0000027925,0.0000027908,0.0000027873,0.0000027831,0.0000027783, -0.0000027771,0.0000027836,0.0000027975,0.0000028137,0.0000028260, -0.0000028351,0.0000028406,0.0000028403,0.0000028357,0.0000028326, -0.0000028337,0.0000028358,0.0000028358,0.0000028346,0.0000028348, -0.0000028363,0.0000028369,0.0000028363,0.0000028337,0.0000028308, -0.0000028305,0.0000028323,0.0000028354,0.0000028384,0.0000028387, -0.0000028366,0.0000028336,0.0000028307,0.0000028281,0.0000028257, -0.0000028223,0.0000028191,0.0000028190,0.0000028208,0.0000028208, -0.0000028155,0.0000028085,0.0000028039,0.0000028027,0.0000028023, -0.0000028012,0.0000027989,0.0000027972,0.0000027971,0.0000027971, -0.0000027957,0.0000027910,0.0000027838,0.0000027764,0.0000027708, -0.0000027681,0.0000027691,0.0000027728,0.0000027769,0.0000027789, -0.0000027780,0.0000027742,0.0000027698,0.0000027668,0.0000027647, -0.0000027640,0.0000027663,0.0000027709,0.0000027743,0.0000027763, -0.0000027792,0.0000027849,0.0000027913,0.0000027938,0.0000027923, -0.0000027897,0.0000027873,0.0000027850,0.0000027807,0.0000027734, -0.0000027636,0.0000027568,0.0000027554,0.0000027616,0.0000027717, -0.0000027807,0.0000027856,0.0000027837,0.0000027779,0.0000027716, -0.0000027712,0.0000027747,0.0000027804,0.0000027870,0.0000027973, -0.0000028072,0.0000028097,0.0000028062,0.0000027972,0.0000027893, -0.0000027872,0.0000027806,0.0000027614,0.0000027329,0.0000027144, -0.0000027088,0.0000027106,0.0000027135,0.0000027173,0.0000027274, -0.0000027435,0.0000027548,0.0000027563,0.0000027517,0.0000027418, -0.0000027340,0.0000027345,0.0000027450,0.0000027546,0.0000027614, -0.0000027670,0.0000027693,0.0000027685,0.0000027644,0.0000027620, -0.0000027635,0.0000027644,0.0000027636,0.0000027612,0.0000027581, -0.0000027531,0.0000027440,0.0000027313,0.0000027182,0.0000027056, -0.0000026881,0.0000026618,0.0000026394,0.0000026275,0.0000026427, -0.0000026768,0.0000027148,0.0000027446,0.0000027603,0.0000027621, -0.0000027564,0.0000027520,0.0000027525,0.0000027568,0.0000027615, -0.0000027651,0.0000027755,0.0000027986,0.0000028143,0.0000028122, -0.0000028122,0.0000028193,0.0000028331,0.0000028428,0.0000028425, -0.0000028335,0.0000028340,0.0000028400,0.0000028293,0.0000028029, -0.0000028003,0.0000028170,0.0000028378,0.0000028457,0.0000028435, -0.0000028346,0.0000028213,0.0000028152,0.0000028207,0.0000028322, -0.0000028367,0.0000028351,0.0000028245,0.0000028074,0.0000028022, -0.0000028059,0.0000027946,0.0000027775,0.0000027772,0.0000027824, -0.0000027886,0.0000027960,0.0000028062,0.0000028138,0.0000028184, -0.0000028241,0.0000028306,0.0000028356,0.0000028472,0.0000028669, -0.0000028738,0.0000028470,0.0000028309,0.0000028467,0.0000028633, -0.0000028766,0.0000028818,0.0000028790,0.0000028730,0.0000028736, -0.0000028794,0.0000028871,0.0000028963,0.0000029068,0.0000029120, -0.0000029060,0.0000029034,0.0000029115,0.0000029161,0.0000029093, -0.0000028850,0.0000028694,0.0000028688,0.0000028778,0.0000028722, -0.0000028478,0.0000028280,0.0000028313,0.0000028348,0.0000028342, -0.0000028320,0.0000028274,0.0000028214,0.0000028153,0.0000028143, -0.0000028165,0.0000028169,0.0000028109,0.0000028003,0.0000027953, -0.0000027965,0.0000027995,0.0000027992,0.0000027969,0.0000027949, -0.0000027943,0.0000027942,0.0000027940,0.0000027926,0.0000027891, -0.0000027831,0.0000027760,0.0000027711,0.0000027678,0.0000027636, -0.0000027577,0.0000027531,0.0000027519,0.0000027541,0.0000027598, -0.0000027672,0.0000027729,0.0000027768,0.0000027796,0.0000027808, -0.0000027811,0.0000027805,0.0000027790,0.0000027762,0.0000027726, -0.0000027700,0.0000027698,0.0000027721,0.0000027745,0.0000027746, -0.0000027732,0.0000027722,0.0000027730,0.0000027747,0.0000027746, -0.0000027722,0.0000027701,0.0000027706,0.0000027724,0.0000027725, -0.0000027696,0.0000027612,0.0000027499,0.0000027405,0.0000027352, -0.0000027342,0.0000027349,0.0000027372,0.0000027401,0.0000027412, -0.0000027404,0.0000027380,0.0000027350,0.0000027327,0.0000027320, -0.0000027329,0.0000027353,0.0000027377,0.0000027393,0.0000027400, -0.0000027391,0.0000027358,0.0000027310,0.0000027248,0.0000027177, -0.0000027121,0.0000027107,0.0000027137,0.0000027211,0.0000027313, -0.0000027419,0.0000027503,0.0000027557,0.0000027575,0.0000027579, -0.0000027584,0.0000027581,0.0000027551,0.0000027498,0.0000027451, -0.0000027422,0.0000027400,0.0000027377,0.0000027353,0.0000027314, -0.0000027258,0.0000027192,0.0000027106,0.0000026996,0.0000026882, -0.0000026812,0.0000026799,0.0000026812,0.0000026815,0.0000026767, -0.0000026630,0.0000026477,0.0000026373,0.0000026286,0.0000026181, -0.0000026099,0.0000026080,0.0000026111,0.0000026153,0.0000026225, -0.0000026324,0.0000026434,0.0000026538,0.0000026637,0.0000026738, -0.0000026826,0.0000026902,0.0000026954,0.0000026988,0.0000027010, -0.0000027037,0.0000027075,0.0000027120,0.0000027189,0.0000027289, -0.0000027392,0.0000027466,0.0000027507,0.0000027530,0.0000027547, -0.0000027561,0.0000027581,0.0000027615,0.0000027673,0.0000027757, -0.0000027854,0.0000027952,0.0000028066,0.0000028187,0.0000028299, -0.0000028391,0.0000028461,0.0000028517,0.0000028578,0.0000028648, -0.0000028706,0.0000028743,0.0000028741,0.0000028704,0.0000028680, -0.0000028720,0.0000028783,0.0000028780,0.0000028731,0.0000028673, -0.0000028656,0.0000028671,0.0000028707,0.0000028751,0.0000028784, -0.0000028757,0.0000028658,0.0000028547,0.0000028534,0.0000028604, -0.0000028653,0.0000028636,0.0000028603,0.0000028629,0.0000028721, -0.0000028804,0.0000028818,0.0000028767,0.0000028663,0.0000028517, -0.0000028377,0.0000028303,0.0000028289,0.0000028304,0.0000028344, -0.0000028365,0.0000028348,0.0000028283,0.0000028174,0.0000028056, -0.0000027978,0.0000027942,0.0000027916,0.0000027882,0.0000027829, -0.0000027776,0.0000027742,0.0000027734,0.0000027738,0.0000027729, -0.0000027698,0.0000027658,0.0000027620,0.0000027588,0.0000027558, -0.0000027525,0.0000027488,0.0000027439,0.0000027384,0.0000027338, -0.0000027312,0.0000027309,0.0000027316,0.0000027311,0.0000027275, -0.0000027207,0.0000027121,0.0000027030,0.0000026954,0.0000026905, -0.0000026888,0.0000026922,0.0000027019,0.0000027131,0.0000027175, -0.0000027161,0.0000027197,0.0000027404,0.0000027634,0.0000027696, -0.0000027660,0.0000027604,0.0000027581,0.0000027593,0.0000027673, -0.0000027775,0.0000027739,0.0000027514,0.0000027298,0.0000027230, -0.0000027193,0.0000027127,0.0000027137,0.0000027271,0.0000027406, -0.0000027431,0.0000027336,0.0000027312,0.0000027448,0.0000027556, -0.0000027531,0.0000027511,0.0000027487,0.0000027367,0.0000027196, -0.0000027095,0.0000027054,0.0000027040,0.0000027037,0.0000027039, -0.0000027050,0.0000027072,0.0000027086,0.0000027081,0.0000027073, -0.0000027062,0.0000027046,0.0000027022,0.0000027008,0.0000027011, -0.0000027036,0.0000027088,0.0000027145,0.0000027191,0.0000027218, -0.0000027225,0.0000027223,0.0000027224,0.0000027246,0.0000027279, -0.0000027302,0.0000027311,0.0000027306,0.0000027319,0.0000027360, -0.0000027354,0.0000027288,0.0000027227,0.0000027205,0.0000027189, -0.0000027163,0.0000027109,0.0000026988,0.0000026871,0.0000026819, -0.0000026797,0.0000026790,0.0000026800,0.0000026826,0.0000026843, -0.0000026833,0.0000026812,0.0000026792,0.0000026770,0.0000026742, -0.0000026702,0.0000026657,0.0000026619,0.0000026590,0.0000026562, -0.0000026528,0.0000026498,0.0000026483,0.0000026479,0.0000026469, -0.0000026439,0.0000026389,0.0000026331,0.0000026280,0.0000026252, -0.0000026229,0.0000026170,0.0000026065,0.0000025930,0.0000025786, -0.0000025669,0.0000025592,0.0000025539,0.0000025491,0.0000025451, -0.0000025471,0.0000025508,0.0000025618,0.0000025985,0.0000026367, -0.0000026419,0.0000026347,0.0000026335,0.0000026399,0.0000026474, -0.0000026497,0.0000026510,0.0000026537,0.0000026546,0.0000026545, -0.0000026549,0.0000026565,0.0000026595,0.0000026636,0.0000026677, -0.0000026696,0.0000026682,0.0000026600,0.0000026482,0.0000026363, -0.0000026234,0.0000026260,0.0000026025,0.0000025905,0.0000026061, -0.0000026782,0.0000027261,0.0000027503,0.0000027691,0.0000027923, -0.0000028039,0.0000028077,0.0000028047,0.0000027976,0.0000027902, -0.0000027822,0.0000027781,0.0000027779,0.0000027778,0.0000027772, -0.0000027735,0.0000027734,0.0000027789,0.0000027831,0.0000027806, -0.0000027692,0.0000027649,0.0000027666,0.0000027738,0.0000027736, -0.0000027831,0.0000027822,0.0000027720,0.0000027563,0.0000027386, -0.0000027339,0.0000027394,0.0000027368,0.0000027330,0.0000027257, -0.0000027119,0.0000027004,0.0000026938,0.0000026902,0.0000026978, -0.0000027005,0.0000027030,0.0000027053,0.0000027074,0.0000027089, -0.0000027098,0.0000027108,0.0000027111,0.0000027084,0.0000027009, -0.0000026901,0.0000026795,0.0000026691,0.0000026577,0.0000026512, -0.0000026520,0.0000026601,0.0000026719,0.0000026801,0.0000026737, -0.0000026551,0.0000026397,0.0000026342,0.0000026330,0.0000026334, -0.0000026325,0.0000026302,0.0000026273,0.0000026251,0.0000026244, -0.0000026256,0.0000026286,0.0000026327,0.0000026370,0.0000026410, -0.0000026438,0.0000026445,0.0000026445,0.0000026452,0.0000026463, -0.0000026473,0.0000026481,0.0000026485,0.0000026473,0.0000026455, -0.0000026447,0.0000026407,0.0000026346,0.0000026273,0.0000026196, -0.0000026123,0.0000026069,0.0000026024,0.0000025981,0.0000025915, -0.0000025829,0.0000025761,0.0000025703,0.0000025630,0.0000025566, -0.0000025494,0.0000025395,0.0000025307,0.0000025283,0.0000025308, -0.0000025367,0.0000025443,0.0000025520,0.0000025572,0.0000025586, -0.0000025614,0.0000025648,0.0000025635,0.0000025581,0.0000025505, -0.0000025429,0.0000025391,0.0000025388,0.0000025410,0.0000025438, -0.0000025462,0.0000025458,0.0000025398,0.0000025289,0.0000025115, -0.0000024966,0.0000024852,0.0000024808,0.0000024870,0.0000024958, -0.0000024966,0.0000024936,0.0000025005,0.0000025146,0.0000025187, -0.0000025260,0.0000025497,0.0000025488,0.0000025330,0.0000025304, -0.0000025394,0.0000025583,0.0000025615,0.0000025686,0.0000025931, -0.0000026049,0.0000026212,0.0000026303,0.0000026290,0.0000026245, -0.0000026163,0.0000026085,0.0000026054,0.0000026042,0.0000026009, -0.0000025916,0.0000025785,0.0000025694,0.0000025670,0.0000025685, -0.0000025737,0.0000025814,0.0000025872,0.0000025904,0.0000025932, -0.0000025959,0.0000025999,0.0000026120,0.0000026333,0.0000026505, -0.0000026559,0.0000026586,0.0000026643,0.0000026706,0.0000026745, -0.0000026749,0.0000026705,0.0000026620,0.0000026588,0.0000026661, -0.0000026791,0.0000026868,0.0000026904,0.0000026927,0.0000026928, -0.0000027007,0.0000027280,0.0000027647,0.0000027919,0.0000027987, -0.0000027972,0.0000028079,0.0000028224,0.0000028221,0.0000028150, -0.0000028128,0.0000028069,0.0000027917,0.0000027856,0.0000027957, -0.0000028055,0.0000028099,0.0000028121,0.0000028100,0.0000028074, -0.0000028054,0.0000028034,0.0000028014,0.0000028023,0.0000028023, -0.0000028041,0.0000028075,0.0000028102,0.0000028113,0.0000028134, -0.0000028175,0.0000028251,0.0000028336,0.0000028401,0.0000028446, -0.0000028479,0.0000028509,0.0000028534,0.0000028544,0.0000028541, -0.0000028524,0.0000028505,0.0000028475,0.0000028441,0.0000028361, -0.0000028267,0.0000028168,0.0000028095,0.0000028032,0.0000027989, -0.0000027942,0.0000027903,0.0000027855,0.0000027805,0.0000027776, -0.0000027789,0.0000027868,0.0000027982,0.0000028111,0.0000028258, -0.0000028401,0.0000028533,0.0000028648,0.0000028714,0.0000028735, -0.0000028729,0.0000028675,0.0000028620,0.0000028554,0.0000028469, -0.0000028373,0.0000028295,0.0000028282,0.0000028310,0.0000028342, -0.0000028338,0.0000028290,0.0000028226,0.0000028137,0.0000028056, -0.0000028008,0.0000028006,0.0000028066,0.0000028140,0.0000028199, -0.0000028242,0.0000028271,0.0000028268,0.0000028241,0.0000028205, -0.0000028189,0.0000028205,0.0000028241,0.0000028269,0.0000028283, -0.0000028289,0.0000028284,0.0000028275,0.0000028260,0.0000028236, -0.0000028202,0.0000028169,0.0000028139,0.0000028107,0.0000028076, -0.0000028055,0.0000028049,0.0000028040,0.0000027998,0.0000027974, -0.0000027969,0.0000028005,0.0000028081,0.0000028153,0.0000028196, -0.0000028202,0.0000028163,0.0000028066,0.0000027985,0.0000027971, -0.0000027962,0.0000027908,0.0000027810,0.0000027723,0.0000027688, -0.0000027757,0.0000027931,0.0000028109,0.0000028255,0.0000028365, -0.0000028410,0.0000028401,0.0000028372,0.0000028366,0.0000028372, -0.0000028366,0.0000028347,0.0000028335,0.0000028349,0.0000028379, -0.0000028397,0.0000028387,0.0000028361,0.0000028346,0.0000028351, -0.0000028366,0.0000028387,0.0000028398,0.0000028385,0.0000028357, -0.0000028318,0.0000028274,0.0000028237,0.0000028220,0.0000028201, -0.0000028187,0.0000028193,0.0000028207,0.0000028182,0.0000028111, -0.0000028054,0.0000028041,0.0000028048,0.0000028049,0.0000028027, -0.0000027993,0.0000027973,0.0000027972,0.0000027974,0.0000027959, -0.0000027913,0.0000027848,0.0000027777,0.0000027718,0.0000027703, -0.0000027725,0.0000027769,0.0000027795,0.0000027796,0.0000027773, -0.0000027722,0.0000027659,0.0000027620,0.0000027620,0.0000027634, -0.0000027659,0.0000027691,0.0000027701,0.0000027700,0.0000027693, -0.0000027719,0.0000027780,0.0000027828,0.0000027841,0.0000027838, -0.0000027835,0.0000027818,0.0000027776,0.0000027708,0.0000027623, -0.0000027561,0.0000027557,0.0000027599,0.0000027659,0.0000027722, -0.0000027765,0.0000027744,0.0000027680,0.0000027604,0.0000027576, -0.0000027600,0.0000027659,0.0000027728,0.0000027817,0.0000027908, -0.0000027952,0.0000027939,0.0000027877,0.0000027813,0.0000027801, -0.0000027774,0.0000027637,0.0000027372,0.0000027151,0.0000027042, -0.0000027006,0.0000027003,0.0000027040,0.0000027143,0.0000027317, -0.0000027460,0.0000027505,0.0000027484,0.0000027393,0.0000027315, -0.0000027335,0.0000027447,0.0000027530,0.0000027586,0.0000027648, -0.0000027684,0.0000027673,0.0000027612,0.0000027554,0.0000027541, -0.0000027543,0.0000027553,0.0000027555,0.0000027536,0.0000027494, -0.0000027426,0.0000027316,0.0000027177,0.0000027056,0.0000026952, -0.0000026775,0.0000026485,0.0000026232,0.0000026223,0.0000026409, -0.0000026718,0.0000027065,0.0000027351,0.0000027499,0.0000027533, -0.0000027503,0.0000027489,0.0000027544,0.0000027628,0.0000027658, -0.0000027689,0.0000027868,0.0000028106,0.0000028123,0.0000028112, -0.0000028174,0.0000028304,0.0000028389,0.0000028381,0.0000028301, -0.0000028325,0.0000028395,0.0000028290,0.0000028044,0.0000028007, -0.0000028146,0.0000028313,0.0000028396,0.0000028393,0.0000028311, -0.0000028192,0.0000028160,0.0000028234,0.0000028352,0.0000028391, -0.0000028385,0.0000028319,0.0000028132,0.0000028009,0.0000028040, -0.0000028010,0.0000027840,0.0000027805,0.0000027845,0.0000027908, -0.0000027948,0.0000028007,0.0000028106,0.0000028197,0.0000028264, -0.0000028318,0.0000028342,0.0000028423,0.0000028636,0.0000028722, -0.0000028428,0.0000028318,0.0000028508,0.0000028669,0.0000028784, -0.0000028798,0.0000028744,0.0000028719,0.0000028780,0.0000028897, -0.0000029005,0.0000029098,0.0000029152,0.0000029128,0.0000029060, -0.0000029091,0.0000029163,0.0000029176,0.0000029071,0.0000028847, -0.0000028716,0.0000028733,0.0000028792,0.0000028686,0.0000028447, -0.0000028284,0.0000028324,0.0000028354,0.0000028348,0.0000028350, -0.0000028330,0.0000028278,0.0000028231,0.0000028230,0.0000028235, -0.0000028204,0.0000028124,0.0000028013,0.0000027966,0.0000027984, -0.0000028015,0.0000028010,0.0000027970,0.0000027937,0.0000027924, -0.0000027918,0.0000027916,0.0000027912,0.0000027898,0.0000027866, -0.0000027830,0.0000027800,0.0000027780,0.0000027749,0.0000027692, -0.0000027621,0.0000027566,0.0000027549,0.0000027565,0.0000027613, -0.0000027664,0.0000027702,0.0000027737,0.0000027766,0.0000027785, -0.0000027788,0.0000027776,0.0000027752,0.0000027727,0.0000027705, -0.0000027691,0.0000027687,0.0000027691,0.0000027703,0.0000027707, -0.0000027695,0.0000027678,0.0000027685,0.0000027723,0.0000027761, -0.0000027768,0.0000027749,0.0000027715,0.0000027698,0.0000027704, -0.0000027725,0.0000027732,0.0000027730,0.0000027708,0.0000027657, -0.0000027596,0.0000027536,0.0000027493,0.0000027468,0.0000027450, -0.0000027439,0.0000027440,0.0000027440,0.0000027427,0.0000027391, -0.0000027352,0.0000027326,0.0000027319,0.0000027329,0.0000027345, -0.0000027353,0.0000027347,0.0000027334,0.0000027314,0.0000027281, -0.0000027216,0.0000027150,0.0000027128,0.0000027157,0.0000027241, -0.0000027358,0.0000027464,0.0000027538,0.0000027568,0.0000027567, -0.0000027568,0.0000027580,0.0000027591,0.0000027588,0.0000027564, -0.0000027538,0.0000027519,0.0000027496,0.0000027457,0.0000027396, -0.0000027319,0.0000027246,0.0000027191,0.0000027129,0.0000027034, -0.0000026920,0.0000026827,0.0000026806,0.0000026812,0.0000026811, -0.0000026741,0.0000026601,0.0000026487,0.0000026425,0.0000026353, -0.0000026259,0.0000026193,0.0000026175,0.0000026180,0.0000026217, -0.0000026261,0.0000026318,0.0000026377,0.0000026433,0.0000026494, -0.0000026566,0.0000026649,0.0000026730,0.0000026805,0.0000026870, -0.0000026919,0.0000026943,0.0000026959,0.0000026994,0.0000027060, -0.0000027138,0.0000027198,0.0000027239,0.0000027283,0.0000027337, -0.0000027388,0.0000027435,0.0000027489,0.0000027552,0.0000027631, -0.0000027719,0.0000027800,0.0000027890,0.0000028004,0.0000028126, -0.0000028235,0.0000028318,0.0000028379,0.0000028435,0.0000028484, -0.0000028513,0.0000028525,0.0000028505,0.0000028454,0.0000028431, -0.0000028493,0.0000028622,0.0000028696,0.0000028708,0.0000028674, -0.0000028676,0.0000028705,0.0000028746,0.0000028781,0.0000028809, -0.0000028806,0.0000028738,0.0000028633,0.0000028611,0.0000028673, -0.0000028748,0.0000028759,0.0000028726,0.0000028729,0.0000028798, -0.0000028874,0.0000028891,0.0000028840,0.0000028730,0.0000028583, -0.0000028448,0.0000028380,0.0000028330,0.0000028290,0.0000028258, -0.0000028243,0.0000028205,0.0000028127,0.0000028005,0.0000027863, -0.0000027748,0.0000027684,0.0000027658,0.0000027650,0.0000027629, -0.0000027605,0.0000027592,0.0000027594,0.0000027602,0.0000027609, -0.0000027594,0.0000027556,0.0000027496,0.0000027420,0.0000027338, -0.0000027264,0.0000027194,0.0000027127,0.0000027052,0.0000026977, -0.0000026908,0.0000026863,0.0000026841,0.0000026844,0.0000026860, -0.0000026875,0.0000026859,0.0000026823,0.0000026803,0.0000026815, -0.0000026842,0.0000026863,0.0000026913,0.0000027024,0.0000027135, -0.0000027154,0.0000027139,0.0000027267,0.0000027525,0.0000027670, -0.0000027654,0.0000027593,0.0000027559,0.0000027567,0.0000027626, -0.0000027735,0.0000027782,0.0000027633,0.0000027370,0.0000027209, -0.0000027141,0.0000027089,0.0000027128,0.0000027267,0.0000027377, -0.0000027385,0.0000027319,0.0000027294,0.0000027404,0.0000027540, -0.0000027533,0.0000027505,0.0000027498,0.0000027410,0.0000027248, -0.0000027134,0.0000027074,0.0000027045,0.0000027040,0.0000027040, -0.0000027042,0.0000027057,0.0000027078,0.0000027088,0.0000027086, -0.0000027081,0.0000027074,0.0000027065,0.0000027052,0.0000027049, -0.0000027059,0.0000027088,0.0000027127,0.0000027164,0.0000027190, -0.0000027196,0.0000027193,0.0000027199,0.0000027225,0.0000027255, -0.0000027281,0.0000027299,0.0000027318,0.0000027350,0.0000027382, -0.0000027361,0.0000027286,0.0000027223,0.0000027196,0.0000027187, -0.0000027157,0.0000027122,0.0000027039,0.0000026911,0.0000026824, -0.0000026787,0.0000026764,0.0000026767,0.0000026792,0.0000026811, -0.0000026800,0.0000026774,0.0000026765,0.0000026763,0.0000026747, -0.0000026709,0.0000026662,0.0000026620,0.0000026594,0.0000026577, -0.0000026561,0.0000026542,0.0000026530,0.0000026527,0.0000026514, -0.0000026469,0.0000026391,0.0000026305,0.0000026248,0.0000026223, -0.0000026207,0.0000026173,0.0000026102,0.0000026001,0.0000025886, -0.0000025776,0.0000025692,0.0000025631,0.0000025568,0.0000025506, -0.0000025449,0.0000025442,0.0000025459,0.0000025485,0.0000025706, -0.0000026144,0.0000026406,0.0000026408,0.0000026338,0.0000026333, -0.0000026390,0.0000026449,0.0000026480,0.0000026504,0.0000026528, -0.0000026552,0.0000026573,0.0000026590,0.0000026609,0.0000026635, -0.0000026674,0.0000026710,0.0000026726,0.0000026690,0.0000026555, -0.0000026443,0.0000026279,0.0000026261,0.0000026116,0.0000025877, -0.0000025965,0.0000026561,0.0000027134,0.0000027428,0.0000027611, -0.0000027876,0.0000028021,0.0000028058,0.0000028031,0.0000027953, -0.0000027871,0.0000027795,0.0000027776,0.0000027795,0.0000027791, -0.0000027750,0.0000027689,0.0000027724,0.0000027812,0.0000027826, -0.0000027757,0.0000027675,0.0000027650,0.0000027679,0.0000027710, -0.0000027722,0.0000027806,0.0000027784,0.0000027680,0.0000027524, -0.0000027351,0.0000027330,0.0000027375,0.0000027330,0.0000027299, -0.0000027246,0.0000027131,0.0000027028,0.0000026977,0.0000026966, -0.0000027068,0.0000027100,0.0000027126,0.0000027145,0.0000027159, -0.0000027167,0.0000027170,0.0000027175,0.0000027182,0.0000027179, -0.0000027132,0.0000027024,0.0000026887,0.0000026755,0.0000026629, -0.0000026518,0.0000026455,0.0000026472,0.0000026542,0.0000026636, -0.0000026714,0.0000026664,0.0000026516,0.0000026377,0.0000026331, -0.0000026341,0.0000026355,0.0000026365,0.0000026362,0.0000026356, -0.0000026350,0.0000026353,0.0000026368,0.0000026386,0.0000026404, -0.0000026427,0.0000026442,0.0000026443,0.0000026441,0.0000026448, -0.0000026456,0.0000026460,0.0000026471,0.0000026482,0.0000026475, -0.0000026462,0.0000026449,0.0000026395,0.0000026326,0.0000026258, -0.0000026198,0.0000026143,0.0000026095,0.0000026053,0.0000026012, -0.0000025952,0.0000025866,0.0000025772,0.0000025681,0.0000025594, -0.0000025526,0.0000025466,0.0000025394,0.0000025317,0.0000025272, -0.0000025279,0.0000025315,0.0000025362,0.0000025450,0.0000025542, -0.0000025576,0.0000025608,0.0000025661,0.0000025672,0.0000025642, -0.0000025573,0.0000025483,0.0000025414,0.0000025384,0.0000025394, -0.0000025411,0.0000025420,0.0000025415,0.0000025395,0.0000025353, -0.0000025274,0.0000025171,0.0000025064,0.0000024953,0.0000024877, -0.0000024884,0.0000024923,0.0000024937,0.0000024919,0.0000025007, -0.0000025139,0.0000025182,0.0000025235,0.0000025473,0.0000025493, -0.0000025361,0.0000025324,0.0000025381,0.0000025549,0.0000025578, -0.0000025643,0.0000025911,0.0000026079,0.0000026262,0.0000026337, -0.0000026321,0.0000026278,0.0000026183,0.0000026072,0.0000026015, -0.0000025991,0.0000025946,0.0000025831,0.0000025684,0.0000025601, -0.0000025591,0.0000025637,0.0000025690,0.0000025752,0.0000025803, -0.0000025858,0.0000025927,0.0000025999,0.0000026077,0.0000026227, -0.0000026413,0.0000026509,0.0000026516,0.0000026528,0.0000026590, -0.0000026650,0.0000026672,0.0000026659,0.0000026602,0.0000026546, -0.0000026575,0.0000026681,0.0000026780,0.0000026831,0.0000026871, -0.0000026885,0.0000026890,0.0000026984,0.0000027212,0.0000027535, -0.0000027833,0.0000027945,0.0000027952,0.0000028051,0.0000028168, -0.0000028163,0.0000028109,0.0000028111,0.0000028094,0.0000028003, -0.0000027936,0.0000027978,0.0000028038,0.0000028096,0.0000028135, -0.0000028149,0.0000028159,0.0000028159,0.0000028143,0.0000028146, -0.0000028179,0.0000028201,0.0000028234,0.0000028260,0.0000028289, -0.0000028305,0.0000028304,0.0000028307,0.0000028323,0.0000028362, -0.0000028390,0.0000028390,0.0000028371,0.0000028334,0.0000028294, -0.0000028251,0.0000028215,0.0000028201,0.0000028214,0.0000028233, -0.0000028243,0.0000028215,0.0000028166,0.0000028115,0.0000028078, -0.0000028024,0.0000027986,0.0000027939,0.0000027897,0.0000027852, -0.0000027821,0.0000027790,0.0000027787,0.0000027839,0.0000027953, -0.0000028074,0.0000028215,0.0000028359,0.0000028471,0.0000028554, -0.0000028602,0.0000028631,0.0000028632,0.0000028587,0.0000028527, -0.0000028465,0.0000028387,0.0000028295,0.0000028195,0.0000028133, -0.0000028122,0.0000028158,0.0000028205,0.0000028223,0.0000028210, -0.0000028168,0.0000028113,0.0000028068,0.0000028060,0.0000028081, -0.0000028132,0.0000028179,0.0000028222,0.0000028258,0.0000028260, -0.0000028240,0.0000028203,0.0000028185,0.0000028203,0.0000028243, -0.0000028272,0.0000028292,0.0000028300,0.0000028297,0.0000028286, -0.0000028275,0.0000028256,0.0000028226,0.0000028197,0.0000028182, -0.0000028170,0.0000028154,0.0000028138,0.0000028119,0.0000028083, -0.0000028024,0.0000027961,0.0000027911,0.0000027892,0.0000027955, -0.0000028048,0.0000028125,0.0000028169,0.0000028173,0.0000028125, -0.0000028041,0.0000028001,0.0000028014,0.0000028002,0.0000027919, -0.0000027785,0.0000027665,0.0000027629,0.0000027732,0.0000027926, -0.0000028116,0.0000028271,0.0000028371,0.0000028401,0.0000028392, -0.0000028378,0.0000028370,0.0000028354,0.0000028332,0.0000028316, -0.0000028321,0.0000028352,0.0000028390,0.0000028400,0.0000028385, -0.0000028366,0.0000028357,0.0000028359,0.0000028371,0.0000028381, -0.0000028373,0.0000028353,0.0000028322,0.0000028276,0.0000028226, -0.0000028193,0.0000028186,0.0000028189,0.0000028197,0.0000028207, -0.0000028199,0.0000028150,0.0000028093,0.0000028068,0.0000028071, -0.0000028080,0.0000028071,0.0000028039,0.0000028001,0.0000027982, -0.0000027982,0.0000027987,0.0000027982,0.0000027950,0.0000027879, -0.0000027795,0.0000027746,0.0000027747,0.0000027781,0.0000027806, -0.0000027803,0.0000027776,0.0000027735,0.0000027683,0.0000027639, -0.0000027622,0.0000027632,0.0000027651,0.0000027671,0.0000027679, -0.0000027671,0.0000027650,0.0000027610,0.0000027597,0.0000027646, -0.0000027723,0.0000027774,0.0000027797,0.0000027805,0.0000027791, -0.0000027752,0.0000027696,0.0000027627,0.0000027581,0.0000027586, -0.0000027607,0.0000027623,0.0000027656,0.0000027682,0.0000027663, -0.0000027602,0.0000027532,0.0000027492,0.0000027495,0.0000027534, -0.0000027596,0.0000027671,0.0000027744,0.0000027797,0.0000027816, -0.0000027792,0.0000027744,0.0000027725,0.0000027713,0.0000027601, -0.0000027381,0.0000027141,0.0000026980,0.0000026897,0.0000026875, -0.0000026923,0.0000027035,0.0000027222,0.0000027382,0.0000027443, -0.0000027439,0.0000027361,0.0000027291,0.0000027327,0.0000027441, -0.0000027512,0.0000027552,0.0000027603,0.0000027644,0.0000027637, -0.0000027574,0.0000027503,0.0000027472,0.0000027465,0.0000027477, -0.0000027492,0.0000027492,0.0000027466,0.0000027418,0.0000027329, -0.0000027201,0.0000027083,0.0000027019,0.0000026955,0.0000026753, -0.0000026449,0.0000026267,0.0000026252,0.0000026364,0.0000026619, -0.0000026944,0.0000027230,0.0000027424,0.0000027499,0.0000027494, -0.0000027519,0.0000027602,0.0000027657,0.0000027665,0.0000027750, -0.0000028028,0.0000028122,0.0000028101,0.0000028154,0.0000028266, -0.0000028335,0.0000028326,0.0000028252,0.0000028286,0.0000028368, -0.0000028289,0.0000028076,0.0000028016,0.0000028130,0.0000028276, -0.0000028358,0.0000028364,0.0000028296,0.0000028205,0.0000028200, -0.0000028278,0.0000028365,0.0000028391,0.0000028387,0.0000028345, -0.0000028192,0.0000028009,0.0000027986,0.0000028024,0.0000027918, -0.0000027862,0.0000027888,0.0000027945,0.0000027968,0.0000027989, -0.0000028073,0.0000028191,0.0000028274,0.0000028331,0.0000028337, -0.0000028375,0.0000028588,0.0000028714,0.0000028427,0.0000028332, -0.0000028527,0.0000028685,0.0000028775,0.0000028760,0.0000028729, -0.0000028767,0.0000028898,0.0000029044,0.0000029146,0.0000029189, -0.0000029168,0.0000029114,0.0000029089,0.0000029157,0.0000029198, -0.0000029180,0.0000029040,0.0000028837,0.0000028737,0.0000028774, -0.0000028792,0.0000028649,0.0000028419,0.0000028290,0.0000028335, -0.0000028364,0.0000028362,0.0000028373,0.0000028358,0.0000028316, -0.0000028294,0.0000028297,0.0000028271,0.0000028212,0.0000028124, -0.0000028031,0.0000027988,0.0000028014,0.0000028040,0.0000028013, -0.0000027948,0.0000027897,0.0000027876,0.0000027865,0.0000027862, -0.0000027854,0.0000027838,0.0000027817,0.0000027799,0.0000027794, -0.0000027802,0.0000027807,0.0000027784,0.0000027734,0.0000027669, -0.0000027622,0.0000027620,0.0000027642,0.0000027664,0.0000027676, -0.0000027681,0.0000027687,0.0000027693,0.0000027703,0.0000027715, -0.0000027718,0.0000027702,0.0000027668,0.0000027642,0.0000027641, -0.0000027652,0.0000027654,0.0000027650,0.0000027643,0.0000027635, -0.0000027628,0.0000027632,0.0000027663,0.0000027712,0.0000027752, -0.0000027761,0.0000027742,0.0000027708,0.0000027686,0.0000027685, -0.0000027712,0.0000027755,0.0000027801,0.0000027828,0.0000027826, -0.0000027801,0.0000027755,0.0000027691,0.0000027616,0.0000027547, -0.0000027504,0.0000027490,0.0000027494,0.0000027496,0.0000027485, -0.0000027450,0.0000027398,0.0000027349,0.0000027313,0.0000027290, -0.0000027281,0.0000027280,0.0000027275,0.0000027275,0.0000027267, -0.0000027230,0.0000027189,0.0000027178,0.0000027213,0.0000027295, -0.0000027393,0.0000027478,0.0000027533,0.0000027556,0.0000027567, -0.0000027582,0.0000027601,0.0000027610,0.0000027602,0.0000027589, -0.0000027589,0.0000027590,0.0000027581,0.0000027543,0.0000027467, -0.0000027362,0.0000027260,0.0000027184,0.0000027130,0.0000027074, -0.0000026988,0.0000026887,0.0000026823,0.0000026815,0.0000026803, -0.0000026727,0.0000026612,0.0000026539,0.0000026504,0.0000026446, -0.0000026366,0.0000026308,0.0000026277,0.0000026268,0.0000026267, -0.0000026288,0.0000026314,0.0000026335,0.0000026351,0.0000026374, -0.0000026416,0.0000026478,0.0000026563,0.0000026661,0.0000026736, -0.0000026772,0.0000026796,0.0000026841,0.0000026900,0.0000026956, -0.0000026990,0.0000027003,0.0000027024,0.0000027066,0.0000027117, -0.0000027167,0.0000027230,0.0000027313,0.0000027423,0.0000027546, -0.0000027650,0.0000027732,0.0000027824,0.0000027923,0.0000028024, -0.0000028106,0.0000028171,0.0000028235,0.0000028295,0.0000028328, -0.0000028328,0.0000028296,0.0000028212,0.0000028136,0.0000028147, -0.0000028280,0.0000028435,0.0000028533,0.0000028580,0.0000028626, -0.0000028703,0.0000028770,0.0000028809,0.0000028836,0.0000028844, -0.0000028796,0.0000028703,0.0000028675,0.0000028731,0.0000028840, -0.0000028885,0.0000028871,0.0000028864,0.0000028901,0.0000028952, -0.0000028961,0.0000028902,0.0000028776,0.0000028623,0.0000028507, -0.0000028424,0.0000028341,0.0000028256,0.0000028178,0.0000028114, -0.0000028066,0.0000027997,0.0000027896,0.0000027771,0.0000027657, -0.0000027576,0.0000027537,0.0000027527,0.0000027519,0.0000027504, -0.0000027491,0.0000027480,0.0000027463,0.0000027438,0.0000027402, -0.0000027356,0.0000027301,0.0000027237,0.0000027177,0.0000027133, -0.0000027091,0.0000027037,0.0000026980,0.0000026911,0.0000026835, -0.0000026764,0.0000026707,0.0000026648,0.0000026582,0.0000026514, -0.0000026460,0.0000026427,0.0000026432,0.0000026507,0.0000026634, -0.0000026760,0.0000026851,0.0000026935,0.0000027042,0.0000027113, -0.0000027115,0.0000027175,0.0000027422,0.0000027636,0.0000027656, -0.0000027584,0.0000027529,0.0000027536,0.0000027591,0.0000027693, -0.0000027783,0.0000027729,0.0000027511,0.0000027297,0.0000027158, -0.0000027074,0.0000027116,0.0000027252,0.0000027334,0.0000027332, -0.0000027290,0.0000027269,0.0000027348,0.0000027503,0.0000027535, -0.0000027486,0.0000027485,0.0000027465,0.0000027357,0.0000027241, -0.0000027162,0.0000027116,0.0000027097,0.0000027088,0.0000027086, -0.0000027094,0.0000027111,0.0000027116,0.0000027114,0.0000027109, -0.0000027107,0.0000027102,0.0000027090,0.0000027079,0.0000027079, -0.0000027092,0.0000027118,0.0000027146,0.0000027171,0.0000027183, -0.0000027186,0.0000027192,0.0000027212,0.0000027235,0.0000027264, -0.0000027289,0.0000027337,0.0000027387,0.0000027405,0.0000027362, -0.0000027277,0.0000027208,0.0000027184,0.0000027177,0.0000027148, -0.0000027115,0.0000027063,0.0000026954,0.0000026845,0.0000026788, -0.0000026750,0.0000026737,0.0000026755,0.0000026784,0.0000026777, -0.0000026743,0.0000026732,0.0000026742,0.0000026734,0.0000026696, -0.0000026643,0.0000026597,0.0000026566,0.0000026551,0.0000026549, -0.0000026551,0.0000026552,0.0000026550,0.0000026537,0.0000026499, -0.0000026425,0.0000026331,0.0000026255,0.0000026206,0.0000026156, -0.0000026093,0.0000026028,0.0000025966,0.0000025901,0.0000025832, -0.0000025760,0.0000025704,0.0000025659,0.0000025591,0.0000025518, -0.0000025458,0.0000025419,0.0000025421,0.0000025425,0.0000025514, -0.0000025855,0.0000026260,0.0000026413,0.0000026385,0.0000026330, -0.0000026325,0.0000026356,0.0000026409,0.0000026467,0.0000026516, -0.0000026552,0.0000026582,0.0000026609,0.0000026629,0.0000026646, -0.0000026671,0.0000026714,0.0000026752,0.0000026730,0.0000026625, -0.0000026485,0.0000026345,0.0000026251,0.0000026181,0.0000025870, -0.0000025886,0.0000026328,0.0000027010,0.0000027350,0.0000027530, -0.0000027809,0.0000027996,0.0000028042,0.0000028016,0.0000027929, -0.0000027835,0.0000027773,0.0000027774,0.0000027792,0.0000027774, -0.0000027681,0.0000027658,0.0000027746,0.0000027818,0.0000027803, -0.0000027729,0.0000027671,0.0000027652,0.0000027691,0.0000027670, -0.0000027721,0.0000027782,0.0000027753,0.0000027644,0.0000027492, -0.0000027328,0.0000027330,0.0000027362,0.0000027308,0.0000027284, -0.0000027252,0.0000027167,0.0000027082,0.0000027044,0.0000027046, -0.0000027147,0.0000027178,0.0000027202,0.0000027216,0.0000027224, -0.0000027227,0.0000027229,0.0000027233,0.0000027236,0.0000027227, -0.0000027194,0.0000027126,0.0000027010,0.0000026840,0.0000026688, -0.0000026569,0.0000026470,0.0000026420,0.0000026418,0.0000026457, -0.0000026546,0.0000026633,0.0000026640,0.0000026550,0.0000026416, -0.0000026354,0.0000026351,0.0000026365,0.0000026380,0.0000026393, -0.0000026402,0.0000026414,0.0000026418,0.0000026423,0.0000026419, -0.0000026416,0.0000026409,0.0000026398,0.0000026400,0.0000026415, -0.0000026425,0.0000026436,0.0000026454,0.0000026462,0.0000026451, -0.0000026433,0.0000026396,0.0000026342,0.0000026290,0.0000026245, -0.0000026212,0.0000026185,0.0000026152,0.0000026110,0.0000026060, -0.0000025997,0.0000025912,0.0000025807,0.0000025690,0.0000025573, -0.0000025484,0.0000025429,0.0000025384,0.0000025330,0.0000025286, -0.0000025274,0.0000025289,0.0000025303,0.0000025348,0.0000025459, -0.0000025538,0.0000025580,0.0000025644,0.0000025687,0.0000025678, -0.0000025631,0.0000025550,0.0000025466,0.0000025412,0.0000025400, -0.0000025407,0.0000025414,0.0000025401,0.0000025365,0.0000025332, -0.0000025288,0.0000025253,0.0000025222,0.0000025156,0.0000025044, -0.0000024941,0.0000024895,0.0000024889,0.0000024906,0.0000024918, -0.0000025013,0.0000025132,0.0000025173,0.0000025221,0.0000025434, -0.0000025502,0.0000025390,0.0000025331,0.0000025360,0.0000025507, -0.0000025550,0.0000025612,0.0000025897,0.0000026108,0.0000026307, -0.0000026367,0.0000026349,0.0000026301,0.0000026182,0.0000026037, -0.0000025971,0.0000025951,0.0000025895,0.0000025760,0.0000025612, -0.0000025557,0.0000025564,0.0000025615,0.0000025666,0.0000025725, -0.0000025787,0.0000025873,0.0000025979,0.0000026073,0.0000026179, -0.0000026354,0.0000026496,0.0000026519,0.0000026498,0.0000026502, -0.0000026552,0.0000026598,0.0000026606,0.0000026580,0.0000026526, -0.0000026518,0.0000026585,0.0000026680,0.0000026758,0.0000026801, -0.0000026839,0.0000026840,0.0000026864,0.0000026971,0.0000027160, -0.0000027445,0.0000027740,0.0000027887,0.0000027928,0.0000028016, -0.0000028103,0.0000028096,0.0000028066,0.0000028087,0.0000028098, -0.0000028073,0.0000028029,0.0000028020,0.0000028042,0.0000028095, -0.0000028141,0.0000028176,0.0000028224,0.0000028261,0.0000028267, -0.0000028297,0.0000028338,0.0000028376,0.0000028412,0.0000028425, -0.0000028419,0.0000028398,0.0000028360,0.0000028324,0.0000028293, -0.0000028253,0.0000028205,0.0000028139,0.0000028070,0.0000028018, -0.0000027994,0.0000027984,0.0000027984,0.0000028012,0.0000028059, -0.0000028108,0.0000028121,0.0000028097,0.0000028044,0.0000027994, -0.0000027964,0.0000027925,0.0000027898,0.0000027855,0.0000027809, -0.0000027773,0.0000027769,0.0000027759,0.0000027760,0.0000027797, -0.0000027904,0.0000028037,0.0000028166,0.0000028309,0.0000028421, -0.0000028484,0.0000028509,0.0000028537,0.0000028557,0.0000028535, -0.0000028472,0.0000028401,0.0000028320,0.0000028239,0.0000028168, -0.0000028114,0.0000028082,0.0000028060,0.0000028045,0.0000028044, -0.0000028062,0.0000028063,0.0000028038,0.0000028015,0.0000028009, -0.0000028026,0.0000028079,0.0000028140,0.0000028201,0.0000028256, -0.0000028278,0.0000028272,0.0000028238,0.0000028204,0.0000028205, -0.0000028232,0.0000028255,0.0000028266,0.0000028262,0.0000028242, -0.0000028212,0.0000028184,0.0000028154,0.0000028120,0.0000028092, -0.0000028087,0.0000028100,0.0000028118,0.0000028143,0.0000028173, -0.0000028180,0.0000028144,0.0000028068,0.0000027970,0.0000027897, -0.0000027904,0.0000027968,0.0000028039,0.0000028087,0.0000028105, -0.0000028098,0.0000028056,0.0000028015,0.0000028026,0.0000028045, -0.0000028021,0.0000027914,0.0000027748,0.0000027622,0.0000027620, -0.0000027753,0.0000027953,0.0000028141,0.0000028280,0.0000028360, -0.0000028379,0.0000028369,0.0000028345,0.0000028313,0.0000028288, -0.0000028282,0.0000028288,0.0000028310,0.0000028348,0.0000028377, -0.0000028383,0.0000028371,0.0000028360,0.0000028352,0.0000028351, -0.0000028351,0.0000028339,0.0000028320,0.0000028300,0.0000028274, -0.0000028240,0.0000028207,0.0000028182,0.0000028176,0.0000028194, -0.0000028221,0.0000028227,0.0000028196,0.0000028145,0.0000028105, -0.0000028091,0.0000028093,0.0000028093,0.0000028077,0.0000028038, -0.0000028000,0.0000027988,0.0000028001,0.0000028036,0.0000028046, -0.0000027996,0.0000027904,0.0000027827,0.0000027803,0.0000027815, -0.0000027833,0.0000027826,0.0000027786,0.0000027730,0.0000027688, -0.0000027669,0.0000027661,0.0000027658,0.0000027667,0.0000027691, -0.0000027699,0.0000027683,0.0000027660,0.0000027622,0.0000027564, -0.0000027516,0.0000027543,0.0000027638,0.0000027730,0.0000027778, -0.0000027782,0.0000027760,0.0000027723,0.0000027674,0.0000027616, -0.0000027590,0.0000027600,0.0000027604,0.0000027597,0.0000027604, -0.0000027609,0.0000027598,0.0000027552,0.0000027504,0.0000027469, -0.0000027450,0.0000027461,0.0000027503,0.0000027571,0.0000027627, -0.0000027683,0.0000027726,0.0000027722,0.0000027677,0.0000027642, -0.0000027624,0.0000027549,0.0000027355,0.0000027096,0.0000026892, -0.0000026781,0.0000026757,0.0000026819,0.0000026945,0.0000027142, -0.0000027313,0.0000027383,0.0000027395,0.0000027335,0.0000027284, -0.0000027326,0.0000027435,0.0000027493,0.0000027507,0.0000027536, -0.0000027572,0.0000027568,0.0000027509,0.0000027442,0.0000027413, -0.0000027416,0.0000027431,0.0000027444,0.0000027448,0.0000027438, -0.0000027416,0.0000027354,0.0000027247,0.0000027144,0.0000027091, -0.0000027084,0.0000027010,0.0000026790,0.0000026521,0.0000026316, -0.0000026235,0.0000026278,0.0000026492,0.0000026812,0.0000027162, -0.0000027423,0.0000027499,0.0000027512,0.0000027547,0.0000027623, -0.0000027650,0.0000027644,0.0000027884,0.0000028109,0.0000028091, -0.0000028136,0.0000028229,0.0000028279,0.0000028269,0.0000028190, -0.0000028225,0.0000028326,0.0000028289,0.0000028132,0.0000028031, -0.0000028111,0.0000028246,0.0000028325,0.0000028340,0.0000028294, -0.0000028254,0.0000028275,0.0000028338,0.0000028375,0.0000028373, -0.0000028363,0.0000028336,0.0000028231,0.0000028030,0.0000027928, -0.0000027984,0.0000027966,0.0000027925,0.0000027942,0.0000027987, -0.0000028019,0.0000028008,0.0000028062,0.0000028172,0.0000028260, -0.0000028329,0.0000028337,0.0000028339,0.0000028521,0.0000028703, -0.0000028449,0.0000028326,0.0000028525,0.0000028682,0.0000028750, -0.0000028729,0.0000028742,0.0000028849,0.0000029023,0.0000029162, -0.0000029216,0.0000029201,0.0000029154,0.0000029128,0.0000029160, -0.0000029208,0.0000029206,0.0000029165,0.0000028999,0.0000028822, -0.0000028764,0.0000028810,0.0000028777,0.0000028617,0.0000028394, -0.0000028294,0.0000028342,0.0000028381,0.0000028386,0.0000028393, -0.0000028370,0.0000028342,0.0000028343,0.0000028332,0.0000028276, -0.0000028203,0.0000028129,0.0000028051,0.0000028027,0.0000028058, -0.0000028068,0.0000028013,0.0000027926,0.0000027864,0.0000027833, -0.0000027826,0.0000027831,0.0000027822,0.0000027793,0.0000027750, -0.0000027717,0.0000027712,0.0000027748,0.0000027798,0.0000027816, -0.0000027805,0.0000027761,0.0000027706,0.0000027683,0.0000027691, -0.0000027703,0.0000027698,0.0000027668,0.0000027631,0.0000027605, -0.0000027596,0.0000027602,0.0000027618,0.0000027627,0.0000027620, -0.0000027598,0.0000027582,0.0000027592,0.0000027618,0.0000027628, -0.0000027616,0.0000027586,0.0000027551,0.0000027539,0.0000027551, -0.0000027582,0.0000027622,0.0000027664,0.0000027692,0.0000027698, -0.0000027693,0.0000027689,0.0000027689,0.0000027697,0.0000027714, -0.0000027742,0.0000027782,0.0000027817,0.0000027837,0.0000027846, -0.0000027827,0.0000027796,0.0000027758,0.0000027711,0.0000027664, -0.0000027623,0.0000027596,0.0000027581,0.0000027564,0.0000027538, -0.0000027504,0.0000027454,0.0000027391,0.0000027329,0.0000027275, -0.0000027232,0.0000027213,0.0000027216,0.0000027229,0.0000027236, -0.0000027237,0.0000027238,0.0000027258,0.0000027317,0.0000027391, -0.0000027457,0.0000027507,0.0000027550,0.0000027598,0.0000027636, -0.0000027649,0.0000027638,0.0000027615,0.0000027609,0.0000027623, -0.0000027640,0.0000027641,0.0000027609,0.0000027537,0.0000027424, -0.0000027293,0.0000027193,0.0000027147,0.0000027121,0.0000027065, -0.0000026969,0.0000026878,0.0000026834,0.0000026810,0.0000026749, -0.0000026672,0.0000026629,0.0000026600,0.0000026542,0.0000026466, -0.0000026406,0.0000026366,0.0000026339,0.0000026334,0.0000026344, -0.0000026347,0.0000026336,0.0000026329,0.0000026317,0.0000026334, -0.0000026384,0.0000026460,0.0000026524,0.0000026556,0.0000026588, -0.0000026649,0.0000026718,0.0000026769,0.0000026799,0.0000026810, -0.0000026817,0.0000026838,0.0000026866,0.0000026888,0.0000026920, -0.0000026984,0.0000027095,0.0000027247,0.0000027396,0.0000027513, -0.0000027615,0.0000027704,0.0000027788,0.0000027855,0.0000027903, -0.0000027955,0.0000028025,0.0000028082,0.0000028101,0.0000028083, -0.0000028008,0.0000027909,0.0000027863,0.0000027939,0.0000028090, -0.0000028227,0.0000028329,0.0000028425,0.0000028542,0.0000028649, -0.0000028726,0.0000028772,0.0000028805,0.0000028788,0.0000028717, -0.0000028684,0.0000028740,0.0000028858,0.0000028940,0.0000028946, -0.0000028933,0.0000028940,0.0000028965,0.0000028963,0.0000028887, -0.0000028750,0.0000028602,0.0000028507,0.0000028419,0.0000028325, -0.0000028228,0.0000028134,0.0000028041,0.0000027964,0.0000027888, -0.0000027797,0.0000027692,0.0000027586,0.0000027491,0.0000027425, -0.0000027376,0.0000027338,0.0000027308,0.0000027284,0.0000027261, -0.0000027236,0.0000027214,0.0000027202,0.0000027194,0.0000027186, -0.0000027159,0.0000027125,0.0000027095,0.0000027060,0.0000027013, -0.0000026959,0.0000026906,0.0000026842,0.0000026771,0.0000026709, -0.0000026649,0.0000026581,0.0000026492,0.0000026384,0.0000026274, -0.0000026186,0.0000026165,0.0000026251,0.0000026439,0.0000026670, -0.0000026844,0.0000026956,0.0000027033,0.0000027059,0.0000027108, -0.0000027340,0.0000027604,0.0000027672,0.0000027589,0.0000027504, -0.0000027500,0.0000027560,0.0000027664,0.0000027765,0.0000027775, -0.0000027650,0.0000027442,0.0000027212,0.0000027063,0.0000027103, -0.0000027235,0.0000027289,0.0000027272,0.0000027251,0.0000027245, -0.0000027287,0.0000027437,0.0000027531,0.0000027488,0.0000027447, -0.0000027459,0.0000027450,0.0000027391,0.0000027317,0.0000027263, -0.0000027234,0.0000027211,0.0000027194,0.0000027196,0.0000027200, -0.0000027192,0.0000027178,0.0000027164,0.0000027160,0.0000027157, -0.0000027147,0.0000027130,0.0000027123,0.0000027127,0.0000027143, -0.0000027164,0.0000027187,0.0000027202,0.0000027205,0.0000027203, -0.0000027207,0.0000027225,0.0000027259,0.0000027311,0.0000027377, -0.0000027418,0.0000027414,0.0000027353,0.0000027255,0.0000027183, -0.0000027166,0.0000027156,0.0000027131,0.0000027095,0.0000027064, -0.0000026982,0.0000026869,0.0000026793,0.0000026743,0.0000026713, -0.0000026722,0.0000026751,0.0000026758,0.0000026727,0.0000026707, -0.0000026707,0.0000026697,0.0000026656,0.0000026593,0.0000026537, -0.0000026507,0.0000026499,0.0000026506,0.0000026525,0.0000026544, -0.0000026553,0.0000026546,0.0000026514,0.0000026448,0.0000026370, -0.0000026301,0.0000026228,0.0000026122,0.0000025996,0.0000025897, -0.0000025844,0.0000025817,0.0000025796,0.0000025766,0.0000025728, -0.0000025692,0.0000025657,0.0000025595,0.0000025519,0.0000025458, -0.0000025411,0.0000025397,0.0000025400,0.0000025423,0.0000025602, -0.0000025980,0.0000026317,0.0000026403,0.0000026364,0.0000026320, -0.0000026294,0.0000026310,0.0000026370,0.0000026453,0.0000026522, -0.0000026571,0.0000026612,0.0000026644,0.0000026663,0.0000026680, -0.0000026709,0.0000026758,0.0000026746,0.0000026669,0.0000026519, -0.0000026410,0.0000026247,0.0000026213,0.0000025872,0.0000025810, -0.0000026103,0.0000026876,0.0000027257,0.0000027449,0.0000027722, -0.0000027950,0.0000028025,0.0000028001,0.0000027905,0.0000027802, -0.0000027755,0.0000027763,0.0000027775,0.0000027719,0.0000027616, -0.0000027666,0.0000027769,0.0000027801,0.0000027777,0.0000027707, -0.0000027663,0.0000027669,0.0000027681,0.0000027625,0.0000027729, -0.0000027760,0.0000027727,0.0000027621,0.0000027468,0.0000027324, -0.0000027340,0.0000027360,0.0000027301,0.0000027283,0.0000027270, -0.0000027212,0.0000027145,0.0000027115,0.0000027121,0.0000027213, -0.0000027241,0.0000027260,0.0000027269,0.0000027271,0.0000027268, -0.0000027266,0.0000027270,0.0000027274,0.0000027266,0.0000027227, -0.0000027170,0.0000027091,0.0000026948,0.0000026768,0.0000026612, -0.0000026520,0.0000026439,0.0000026386,0.0000026363,0.0000026394, -0.0000026472,0.0000026590,0.0000026666,0.0000026635,0.0000026525, -0.0000026429,0.0000026386,0.0000026376,0.0000026388,0.0000026400, -0.0000026407,0.0000026409,0.0000026398,0.0000026377,0.0000026355, -0.0000026333,0.0000026328,0.0000026350,0.0000026377,0.0000026391, -0.0000026401,0.0000026407,0.0000026396,0.0000026375,0.0000026349, -0.0000026311,0.0000026271,0.0000026239,0.0000026218,0.0000026206, -0.0000026196,0.0000026178,0.0000026145,0.0000026094,0.0000026028, -0.0000025941,0.0000025834,0.0000025714,0.0000025588,0.0000025474, -0.0000025403,0.0000025364,0.0000025330,0.0000025295,0.0000025276, -0.0000025274,0.0000025270,0.0000025278,0.0000025343,0.0000025459, -0.0000025540,0.0000025613,0.0000025685,0.0000025707,0.0000025675, -0.0000025603,0.0000025522,0.0000025458,0.0000025423,0.0000025411, -0.0000025408,0.0000025395,0.0000025370,0.0000025324,0.0000025265, -0.0000025247,0.0000025254,0.0000025264,0.0000025232,0.0000025113, -0.0000024982,0.0000024915,0.0000024869,0.0000024881,0.0000024919, -0.0000025008,0.0000025127,0.0000025165,0.0000025212,0.0000025396, -0.0000025516,0.0000025416,0.0000025329,0.0000025329,0.0000025458, -0.0000025528,0.0000025584,0.0000025874,0.0000026137,0.0000026341, -0.0000026393,0.0000026370,0.0000026305,0.0000026154,0.0000025985, -0.0000025922,0.0000025916,0.0000025865,0.0000025727,0.0000025595, -0.0000025571,0.0000025600,0.0000025654,0.0000025699,0.0000025748, -0.0000025818,0.0000025923,0.0000026041,0.0000026139,0.0000026287, -0.0000026470,0.0000026555,0.0000026535,0.0000026500,0.0000026501, -0.0000026530,0.0000026557,0.0000026556,0.0000026519,0.0000026488, -0.0000026514,0.0000026579,0.0000026665,0.0000026734,0.0000026774, -0.0000026803,0.0000026803,0.0000026849,0.0000026964,0.0000027128, -0.0000027375,0.0000027651,0.0000027819,0.0000027890,0.0000027966, -0.0000028022,0.0000028018,0.0000028019,0.0000028067,0.0000028095, -0.0000028091,0.0000028069,0.0000028042,0.0000028035,0.0000028070, -0.0000028100,0.0000028121,0.0000028166,0.0000028211,0.0000028243, -0.0000028278,0.0000028324,0.0000028371,0.0000028401,0.0000028404, -0.0000028380,0.0000028338,0.0000028269,0.0000028189,0.0000028107, -0.0000028025,0.0000027951,0.0000027900,0.0000027872,0.0000027864, -0.0000027864,0.0000027865,0.0000027851,0.0000027834,0.0000027838, -0.0000027861,0.0000027869,0.0000027852,0.0000027821,0.0000027808, -0.0000027806,0.0000027810,0.0000027815,0.0000027793,0.0000027742, -0.0000027700,0.0000027692,0.0000027689,0.0000027702,0.0000027751, -0.0000027850,0.0000027978,0.0000028114,0.0000028246,0.0000028365, -0.0000028431,0.0000028443,0.0000028459,0.0000028496,0.0000028500, -0.0000028453,0.0000028366,0.0000028278,0.0000028190,0.0000028132, -0.0000028096,0.0000028092,0.0000028083,0.0000028061,0.0000028030, -0.0000027989,0.0000027964,0.0000027926,0.0000027887,0.0000027855, -0.0000027849,0.0000027880,0.0000027938,0.0000028013,0.0000028083, -0.0000028132,0.0000028154,0.0000028143,0.0000028109,0.0000028099, -0.0000028122,0.0000028149,0.0000028160,0.0000028159,0.0000028141, -0.0000028111,0.0000028078,0.0000028048,0.0000028012,0.0000027976, -0.0000027960,0.0000027966,0.0000027992,0.0000028038,0.0000028106, -0.0000028170,0.0000028196,0.0000028178,0.0000028094,0.0000027986, -0.0000027937,0.0000027951,0.0000027992,0.0000028032,0.0000028046, -0.0000028039,0.0000028018,0.0000028004,0.0000028022,0.0000028051, -0.0000028069,0.0000028032,0.0000027897,0.0000027712,0.0000027602, -0.0000027638,0.0000027797,0.0000027991,0.0000028154,0.0000028269, -0.0000028329,0.0000028336,0.0000028306,0.0000028255,0.0000028220, -0.0000028219,0.0000028234,0.0000028255,0.0000028283,0.0000028316, -0.0000028340,0.0000028342,0.0000028342,0.0000028340,0.0000028339, -0.0000028331,0.0000028309,0.0000028281,0.0000028257,0.0000028241, -0.0000028237,0.0000028231,0.0000028216,0.0000028195,0.0000028190, -0.0000028209,0.0000028238,0.0000028241,0.0000028205,0.0000028150, -0.0000028103,0.0000028085,0.0000028087,0.0000028082,0.0000028057, -0.0000028019,0.0000028003,0.0000028022,0.0000028076,0.0000028114, -0.0000028101,0.0000028030,0.0000027940,0.0000027882,0.0000027866, -0.0000027867,0.0000027854,0.0000027810,0.0000027744,0.0000027696, -0.0000027684,0.0000027694,0.0000027700,0.0000027702,0.0000027717, -0.0000027740,0.0000027735,0.0000027701,0.0000027660,0.0000027609, -0.0000027541,0.0000027491,0.0000027495,0.0000027592,0.0000027719, -0.0000027778,0.0000027773,0.0000027741,0.0000027701,0.0000027647, -0.0000027608,0.0000027600,0.0000027607,0.0000027597,0.0000027573, -0.0000027557,0.0000027545,0.0000027535,0.0000027516,0.0000027496, -0.0000027473,0.0000027447,0.0000027436,0.0000027461,0.0000027523, -0.0000027568,0.0000027620,0.0000027663,0.0000027663,0.0000027612, -0.0000027561,0.0000027541,0.0000027494,0.0000027317,0.0000027037, -0.0000026795,0.0000026668,0.0000026645,0.0000026721,0.0000026860, -0.0000027063,0.0000027231,0.0000027303,0.0000027336,0.0000027313, -0.0000027292,0.0000027340,0.0000027431,0.0000027465,0.0000027452, -0.0000027451,0.0000027474,0.0000027472,0.0000027420,0.0000027362, -0.0000027345,0.0000027368,0.0000027399,0.0000027416,0.0000027418, -0.0000027411,0.0000027406,0.0000027376,0.0000027298,0.0000027216, -0.0000027173,0.0000027172,0.0000027163,0.0000027073,0.0000026875, -0.0000026586,0.0000026295,0.0000026166,0.0000026166,0.0000026372, -0.0000026752,0.0000027172,0.0000027445,0.0000027509,0.0000027508, -0.0000027557,0.0000027606,0.0000027558,0.0000027693,0.0000028041, -0.0000028084,0.0000028127,0.0000028207,0.0000028239,0.0000028222, -0.0000028127,0.0000028155,0.0000028278,0.0000028294,0.0000028202, -0.0000028081,0.0000028104,0.0000028208,0.0000028284,0.0000028320, -0.0000028313,0.0000028327,0.0000028363,0.0000028400,0.0000028392, -0.0000028354,0.0000028322,0.0000028297,0.0000028239,0.0000028069, -0.0000027906,0.0000027902,0.0000027957,0.0000027969,0.0000027984, -0.0000028026,0.0000028073,0.0000028067,0.0000028086,0.0000028163, -0.0000028232,0.0000028300,0.0000028327,0.0000028319,0.0000028436, -0.0000028669,0.0000028493,0.0000028303,0.0000028506,0.0000028666, -0.0000028720,0.0000028709,0.0000028761,0.0000028920,0.0000029114, -0.0000029202,0.0000029204,0.0000029165,0.0000029157,0.0000029185, -0.0000029220,0.0000029220,0.0000029198,0.0000029125,0.0000028948, -0.0000028811,0.0000028797,0.0000028822,0.0000028747,0.0000028588, -0.0000028373,0.0000028297,0.0000028344,0.0000028398,0.0000028411, -0.0000028407,0.0000028378,0.0000028362,0.0000028368,0.0000028335, -0.0000028255,0.0000028195,0.0000028141,0.0000028076,0.0000028070, -0.0000028096,0.0000028074,0.0000027999,0.0000027900,0.0000027830, -0.0000027788,0.0000027781,0.0000027801,0.0000027809,0.0000027790, -0.0000027740,0.0000027686,0.0000027660,0.0000027686,0.0000027756, -0.0000027815,0.0000027825,0.0000027809,0.0000027777,0.0000027750, -0.0000027747,0.0000027751,0.0000027737,0.0000027682,0.0000027597, -0.0000027522,0.0000027486,0.0000027489,0.0000027518,0.0000027549, -0.0000027563,0.0000027556,0.0000027532,0.0000027522,0.0000027544, -0.0000027584,0.0000027613,0.0000027615,0.0000027583,0.0000027527, -0.0000027481,0.0000027469,0.0000027475,0.0000027493,0.0000027514, -0.0000027539,0.0000027569,0.0000027607,0.0000027646,0.0000027675, -0.0000027694,0.0000027705,0.0000027708,0.0000027709,0.0000027708, -0.0000027719,0.0000027733,0.0000027752,0.0000027774,0.0000027801, -0.0000027817,0.0000027816,0.0000027805,0.0000027778,0.0000027739, -0.0000027702,0.0000027670,0.0000027633,0.0000027591,0.0000027551, -0.0000027510,0.0000027449,0.0000027360,0.0000027269,0.0000027208, -0.0000027188,0.0000027205,0.0000027245,0.0000027272,0.0000027282, -0.0000027296,0.0000027324,0.0000027358,0.0000027401,0.0000027463, -0.0000027554,0.0000027643,0.0000027693,0.0000027696,0.0000027667, -0.0000027638,0.0000027634,0.0000027658,0.0000027693,0.0000027702, -0.0000027672,0.0000027599,0.0000027484,0.0000027353,0.0000027242, -0.0000027186,0.0000027172,0.0000027147,0.0000027080,0.0000026987, -0.0000026908,0.0000026854,0.0000026808,0.0000026767,0.0000026728, -0.0000026678,0.0000026608,0.0000026529,0.0000026465,0.0000026428, -0.0000026422,0.0000026431,0.0000026439,0.0000026427,0.0000026391, -0.0000026349,0.0000026324,0.0000026345,0.0000026377,0.0000026406, -0.0000026417,0.0000026437,0.0000026484,0.0000026535,0.0000026569, -0.0000026589,0.0000026600,0.0000026611,0.0000026633,0.0000026662, -0.0000026681,0.0000026694,0.0000026725,0.0000026795,0.0000026909, -0.0000027047,0.0000027180,0.0000027304,0.0000027409,0.0000027494, -0.0000027557,0.0000027594,0.0000027632,0.0000027700,0.0000027778, -0.0000027827,0.0000027833,0.0000027794,0.0000027714,0.0000027651, -0.0000027671,0.0000027776,0.0000027911,0.0000028041,0.0000028167, -0.0000028297,0.0000028409,0.0000028499,0.0000028569,0.0000028623, -0.0000028632,0.0000028581,0.0000028535,0.0000028590,0.0000028732, -0.0000028842,0.0000028870,0.0000028860,0.0000028851,0.0000028847, -0.0000028823,0.0000028745,0.0000028622,0.0000028522,0.0000028453, -0.0000028384,0.0000028298,0.0000028200,0.0000028093,0.0000027975, -0.0000027845,0.0000027726,0.0000027610,0.0000027498,0.0000027393, -0.0000027304,0.0000027230,0.0000027159,0.0000027098,0.0000027063, -0.0000027058,0.0000027062,0.0000027063,0.0000027064,0.0000027069, -0.0000027068,0.0000027049,0.0000027003,0.0000026952,0.0000026914, -0.0000026881,0.0000026844,0.0000026806,0.0000026769,0.0000026737, -0.0000026703,0.0000026664,0.0000026618,0.0000026564,0.0000026492, -0.0000026401,0.0000026298,0.0000026192,0.0000026093,0.0000026033, -0.0000026067,0.0000026316,0.0000026642,0.0000026861,0.0000026958, -0.0000026991,0.0000027046,0.0000027272,0.0000027582,0.0000027685, -0.0000027607,0.0000027481,0.0000027460,0.0000027531,0.0000027640, -0.0000027753,0.0000027790,0.0000027742,0.0000027564,0.0000027259, -0.0000027051,0.0000027091,0.0000027212,0.0000027241,0.0000027215, -0.0000027204,0.0000027222,0.0000027247,0.0000027342,0.0000027484, -0.0000027505,0.0000027436,0.0000027407,0.0000027434,0.0000027459, -0.0000027456,0.0000027428,0.0000027411,0.0000027385,0.0000027357, -0.0000027346,0.0000027341,0.0000027321,0.0000027290,0.0000027260, -0.0000027242,0.0000027235,0.0000027232,0.0000027213,0.0000027198, -0.0000027200,0.0000027207,0.0000027215,0.0000027229,0.0000027237, -0.0000027233,0.0000027225,0.0000027228,0.0000027253,0.0000027304, -0.0000027364,0.0000027421,0.0000027423,0.0000027384,0.0000027309, -0.0000027220,0.0000027161,0.0000027144,0.0000027129,0.0000027101, -0.0000027068,0.0000027047,0.0000026993,0.0000026888,0.0000026800, -0.0000026741,0.0000026701,0.0000026698,0.0000026724,0.0000026739, -0.0000026712,0.0000026681,0.0000026672,0.0000026663,0.0000026628, -0.0000026562,0.0000026489,0.0000026441,0.0000026428,0.0000026446, -0.0000026485,0.0000026524,0.0000026544,0.0000026544,0.0000026517, -0.0000026458,0.0000026391,0.0000026338,0.0000026267,0.0000026129, -0.0000025953,0.0000025813,0.0000025744,0.0000025722,0.0000025719, -0.0000025718,0.0000025707,0.0000025684,0.0000025659,0.0000025629, -0.0000025573,0.0000025499,0.0000025437,0.0000025397,0.0000025377, -0.0000025384,0.0000025382,0.0000025425,0.0000025662,0.0000026050, -0.0000026338,0.0000026390,0.0000026356,0.0000026300,0.0000026265, -0.0000026277,0.0000026335,0.0000026402,0.0000026470,0.0000026543, -0.0000026609,0.0000026658,0.0000026690,0.0000026712,0.0000026747, -0.0000026751,0.0000026691,0.0000026560,0.0000026462,0.0000026252, -0.0000026207,0.0000025885,0.0000025726,0.0000025901,0.0000026709, -0.0000027144,0.0000027367,0.0000027608,0.0000027878,0.0000027997, -0.0000027982,0.0000027882,0.0000027779,0.0000027738,0.0000027749, -0.0000027751,0.0000027642,0.0000027601,0.0000027698,0.0000027769, -0.0000027776,0.0000027736,0.0000027674,0.0000027665,0.0000027691, -0.0000027636,0.0000027595,0.0000027734,0.0000027741,0.0000027711, -0.0000027603,0.0000027450,0.0000027326,0.0000027355,0.0000027365, -0.0000027303,0.0000027287,0.0000027290,0.0000027255,0.0000027200, -0.0000027175,0.0000027184,0.0000027259,0.0000027280,0.0000027293, -0.0000027296,0.0000027295,0.0000027291,0.0000027286,0.0000027285, -0.0000027282,0.0000027274,0.0000027243,0.0000027188,0.0000027113, -0.0000027012,0.0000026865,0.0000026679,0.0000026550,0.0000026483, -0.0000026426,0.0000026372,0.0000026349,0.0000026366,0.0000026437, -0.0000026556,0.0000026677,0.0000026703,0.0000026666,0.0000026580, -0.0000026506,0.0000026457,0.0000026435,0.0000026421,0.0000026404, -0.0000026376,0.0000026344,0.0000026316,0.0000026295,0.0000026299, -0.0000026331,0.0000026358,0.0000026366,0.0000026365,0.0000026361, -0.0000026344,0.0000026323,0.0000026283,0.0000026244,0.0000026201, -0.0000026167,0.0000026147,0.0000026138,0.0000026134,0.0000026128, -0.0000026113,0.0000026081,0.0000026024,0.0000025941,0.0000025839, -0.0000025727,0.0000025612,0.0000025496,0.0000025409,0.0000025356, -0.0000025323,0.0000025293,0.0000025273,0.0000025264,0.0000025248, -0.0000025241,0.0000025258,0.0000025344,0.0000025473,0.0000025571, -0.0000025668,0.0000025725,0.0000025718,0.0000025647,0.0000025564, -0.0000025508,0.0000025478,0.0000025453,0.0000025432,0.0000025403, -0.0000025366,0.0000025328,0.0000025277,0.0000025235,0.0000025238, -0.0000025273,0.0000025303,0.0000025277,0.0000025152,0.0000025007, -0.0000024923,0.0000024868,0.0000024860,0.0000024907,0.0000025000, -0.0000025125,0.0000025163,0.0000025213,0.0000025363,0.0000025521, -0.0000025445,0.0000025326,0.0000025292,0.0000025408,0.0000025513, -0.0000025555,0.0000025850,0.0000026159,0.0000026358,0.0000026408, -0.0000026377,0.0000026290,0.0000026122,0.0000025943,0.0000025891, -0.0000025900,0.0000025868,0.0000025741,0.0000025623,0.0000025622, -0.0000025668,0.0000025730,0.0000025775,0.0000025814,0.0000025875, -0.0000025971,0.0000026074,0.0000026198,0.0000026380,0.0000026537, -0.0000026568,0.0000026533,0.0000026494,0.0000026484,0.0000026498, -0.0000026516,0.0000026510,0.0000026475,0.0000026465,0.0000026498, -0.0000026558,0.0000026648,0.0000026710,0.0000026744,0.0000026766, -0.0000026776,0.0000026840,0.0000026959,0.0000027110,0.0000027322, -0.0000027568,0.0000027736,0.0000027830,0.0000027900,0.0000027929, -0.0000027928,0.0000027964,0.0000028042,0.0000028074,0.0000028073, -0.0000028044,0.0000028012,0.0000027999,0.0000028020,0.0000028034, -0.0000028039,0.0000028066,0.0000028102,0.0000028130,0.0000028148, -0.0000028172,0.0000028212,0.0000028243,0.0000028249,0.0000028213, -0.0000028155,0.0000028083,0.0000027999,0.0000027910,0.0000027846, -0.0000027806,0.0000027791,0.0000027790,0.0000027774,0.0000027727, -0.0000027665,0.0000027603,0.0000027566,0.0000027548,0.0000027550, -0.0000027584,0.0000027613,0.0000027630,0.0000027663,0.0000027707, -0.0000027757,0.0000027802,0.0000027804,0.0000027761,0.0000027711, -0.0000027693,0.0000027679,0.0000027676,0.0000027718,0.0000027794, -0.0000027911,0.0000028056,0.0000028181,0.0000028304,0.0000028390, -0.0000028406,0.0000028404,0.0000028430,0.0000028451,0.0000028430, -0.0000028352,0.0000028258,0.0000028166,0.0000028109,0.0000028079, -0.0000028083,0.0000028097,0.0000028109,0.0000028110,0.0000028086, -0.0000028045,0.0000027986,0.0000027907,0.0000027827,0.0000027769, -0.0000027754,0.0000027765,0.0000027807,0.0000027865,0.0000027917, -0.0000027952,0.0000027958,0.0000027939,0.0000027921,0.0000027930, -0.0000027955,0.0000027975,0.0000027989,0.0000027998,0.0000028002, -0.0000028002,0.0000027995,0.0000027980,0.0000027954,0.0000027935, -0.0000027933,0.0000027951,0.0000027986,0.0000028037,0.0000028107, -0.0000028167,0.0000028193,0.0000028163,0.0000028083,0.0000028018, -0.0000027998,0.0000027997,0.0000028013,0.0000028021,0.0000028007, -0.0000027983,0.0000027980,0.0000028010,0.0000028049,0.0000028082, -0.0000028097,0.0000028044,0.0000027884,0.0000027685,0.0000027610, -0.0000027679,0.0000027844,0.0000028010,0.0000028141,0.0000028233, -0.0000028271,0.0000028255,0.0000028201,0.0000028153,0.0000028143, -0.0000028154,0.0000028178,0.0000028203,0.0000028222,0.0000028236, -0.0000028247,0.0000028256,0.0000028266,0.0000028283,0.0000028293, -0.0000028282,0.0000028253,0.0000028217,0.0000028186,0.0000028184, -0.0000028205,0.0000028221,0.0000028219,0.0000028212,0.0000028210, -0.0000028226,0.0000028250,0.0000028247,0.0000028202,0.0000028137, -0.0000028083,0.0000028055,0.0000028046,0.0000028040,0.0000028027, -0.0000028019,0.0000028045,0.0000028106,0.0000028160,0.0000028172, -0.0000028144,0.0000028063,0.0000027974,0.0000027920,0.0000027903, -0.0000027885,0.0000027838,0.0000027773,0.0000027721,0.0000027713, -0.0000027726,0.0000027737,0.0000027739,0.0000027742,0.0000027758, -0.0000027766,0.0000027748,0.0000027701,0.0000027652,0.0000027597, -0.0000027531,0.0000027483,0.0000027486,0.0000027586,0.0000027724, -0.0000027785,0.0000027778,0.0000027747,0.0000027694,0.0000027643, -0.0000027620,0.0000027620,0.0000027621,0.0000027599,0.0000027565, -0.0000027532,0.0000027503,0.0000027490,0.0000027495,0.0000027494, -0.0000027483,0.0000027456,0.0000027435,0.0000027450,0.0000027506, -0.0000027545,0.0000027580,0.0000027609,0.0000027609,0.0000027558, -0.0000027498,0.0000027479,0.0000027452,0.0000027295,0.0000026991, -0.0000026720,0.0000026569,0.0000026543,0.0000026624,0.0000026769, -0.0000026967,0.0000027124,0.0000027198,0.0000027259,0.0000027285, -0.0000027299,0.0000027353,0.0000027425,0.0000027438,0.0000027399, -0.0000027363,0.0000027368,0.0000027369,0.0000027326,0.0000027273, -0.0000027264,0.0000027303,0.0000027350,0.0000027387,0.0000027406, -0.0000027403,0.0000027396,0.0000027379,0.0000027334,0.0000027274, -0.0000027239,0.0000027236,0.0000027239,0.0000027221,0.0000027138, -0.0000026923,0.0000026576,0.0000026238,0.0000026084,0.0000026078, -0.0000026338,0.0000026767,0.0000027207,0.0000027464,0.0000027497, -0.0000027496,0.0000027527,0.0000027492,0.0000027508,0.0000027889, -0.0000028083,0.0000028131,0.0000028204,0.0000028221,0.0000028193, -0.0000028085,0.0000028099,0.0000028235,0.0000028302,0.0000028269, -0.0000028175,0.0000028138,0.0000028196,0.0000028268,0.0000028324, -0.0000028366,0.0000028415,0.0000028445,0.0000028455,0.0000028418, -0.0000028355,0.0000028290,0.0000028249,0.0000028221,0.0000028109, -0.0000027923,0.0000027834,0.0000027899,0.0000027976,0.0000027999, -0.0000028051,0.0000028111,0.0000028125,0.0000028145,0.0000028181, -0.0000028214,0.0000028252,0.0000028297,0.0000028308,0.0000028357, -0.0000028600,0.0000028544,0.0000028284,0.0000028465,0.0000028637, -0.0000028691,0.0000028689,0.0000028761,0.0000028969,0.0000029152, -0.0000029180,0.0000029139,0.0000029139,0.0000029192,0.0000029228, -0.0000029232,0.0000029207,0.0000029163,0.0000029063,0.0000028892, -0.0000028813,0.0000028826,0.0000028816,0.0000028716,0.0000028558, -0.0000028357,0.0000028301,0.0000028343,0.0000028407,0.0000028428, -0.0000028412,0.0000028384,0.0000028375,0.0000028364,0.0000028306, -0.0000028230,0.0000028195,0.0000028151,0.0000028098,0.0000028104, -0.0000028120,0.0000028072,0.0000027967,0.0000027864,0.0000027785, -0.0000027736,0.0000027723,0.0000027747,0.0000027765,0.0000027755, -0.0000027717,0.0000027670,0.0000027641,0.0000027665,0.0000027736, -0.0000027810,0.0000027836,0.0000027828,0.0000027811,0.0000027796, -0.0000027797,0.0000027797,0.0000027772,0.0000027699,0.0000027586, -0.0000027473,0.0000027409,0.0000027401,0.0000027430,0.0000027474, -0.0000027505,0.0000027517,0.0000027507,0.0000027480,0.0000027463, -0.0000027471,0.0000027506,0.0000027547,0.0000027575,0.0000027574, -0.0000027544,0.0000027506,0.0000027473,0.0000027449,0.0000027428, -0.0000027408,0.0000027385,0.0000027384,0.0000027434,0.0000027516, -0.0000027595,0.0000027647,0.0000027664,0.0000027660,0.0000027644, -0.0000027629,0.0000027620,0.0000027603,0.0000027587,0.0000027598, -0.0000027650,0.0000027720,0.0000027776,0.0000027810,0.0000027827, -0.0000027830,0.0000027829,0.0000027820,0.0000027787,0.0000027743, -0.0000027696,0.0000027649,0.0000027605,0.0000027560,0.0000027496, -0.0000027406,0.0000027304,0.0000027238,0.0000027223,0.0000027250, -0.0000027286,0.0000027317,0.0000027336,0.0000027340,0.0000027336, -0.0000027343,0.0000027403,0.0000027520,0.0000027638,0.0000027703, -0.0000027712,0.0000027688,0.0000027663,0.0000027666,0.0000027706, -0.0000027755,0.0000027766,0.0000027727,0.0000027652,0.0000027552, -0.0000027432,0.0000027319,0.0000027251,0.0000027235,0.0000027229, -0.0000027203,0.0000027133,0.0000027030,0.0000026937,0.0000026887, -0.0000026856,0.0000026803,0.0000026725,0.0000026636,0.0000026556, -0.0000026505,0.0000026494,0.0000026508,0.0000026537,0.0000026542, -0.0000026513,0.0000026458,0.0000026408,0.0000026389,0.0000026397, -0.0000026400,0.0000026398,0.0000026414,0.0000026440,0.0000026467, -0.0000026473,0.0000026459,0.0000026443,0.0000026441,0.0000026456, -0.0000026483,0.0000026511,0.0000026534,0.0000026558,0.0000026598, -0.0000026659,0.0000026742,0.0000026834,0.0000026937,0.0000027041, -0.0000027125,0.0000027186,0.0000027220,0.0000027247,0.0000027310, -0.0000027406,0.0000027490,0.0000027537,0.0000027543,0.0000027511, -0.0000027468,0.0000027462,0.0000027511,0.0000027611,0.0000027747, -0.0000027901,0.0000028049,0.0000028172,0.0000028268,0.0000028347, -0.0000028406,0.0000028421,0.0000028368,0.0000028293,0.0000028321, -0.0000028440,0.0000028563,0.0000028620,0.0000028622,0.0000028604, -0.0000028587,0.0000028564,0.0000028512,0.0000028451,0.0000028405, -0.0000028369,0.0000028325,0.0000028249,0.0000028142,0.0000028020, -0.0000027886,0.0000027735,0.0000027581,0.0000027431,0.0000027294, -0.0000027189,0.0000027129,0.0000027085,0.0000027036,0.0000026976, -0.0000026931,0.0000026923,0.0000026931,0.0000026928,0.0000026905, -0.0000026877,0.0000026843,0.0000026795,0.0000026757,0.0000026731, -0.0000026720,0.0000026713,0.0000026701,0.0000026681,0.0000026658, -0.0000026642,0.0000026630,0.0000026609,0.0000026569,0.0000026513, -0.0000026448,0.0000026375,0.0000026297,0.0000026215,0.0000026119, -0.0000026003,0.0000025930,0.0000025992,0.0000026332,0.0000026699, -0.0000026886,0.0000026931,0.0000026989,0.0000027220,0.0000027563, -0.0000027694,0.0000027626,0.0000027467,0.0000027427,0.0000027505, -0.0000027616,0.0000027736,0.0000027808,0.0000027802,0.0000027643, -0.0000027293,0.0000027062,0.0000027095,0.0000027195,0.0000027200, -0.0000027165,0.0000027159,0.0000027189,0.0000027226,0.0000027264, -0.0000027378,0.0000027480,0.0000027467,0.0000027404,0.0000027375, -0.0000027402,0.0000027446,0.0000027476,0.0000027497,0.0000027511, -0.0000027497,0.0000027485,0.0000027480,0.0000027466,0.0000027432, -0.0000027386,0.0000027350,0.0000027337,0.0000027330,0.0000027311, -0.0000027290,0.0000027283,0.0000027290,0.0000027286,0.0000027284, -0.0000027285,0.0000027283,0.0000027283,0.0000027296,0.0000027331, -0.0000027376,0.0000027395,0.0000027412,0.0000027384,0.0000027324, -0.0000027251,0.0000027184,0.0000027143,0.0000027119,0.0000027091, -0.0000027051,0.0000027033,0.0000027023,0.0000026988,0.0000026897, -0.0000026807,0.0000026742,0.0000026693,0.0000026680,0.0000026702, -0.0000026721,0.0000026700,0.0000026660,0.0000026647,0.0000026643, -0.0000026615,0.0000026563,0.0000026491,0.0000026417,0.0000026368, -0.0000026361,0.0000026402,0.0000026465,0.0000026510,0.0000026518, -0.0000026501,0.0000026455,0.0000026404,0.0000026361,0.0000026294, -0.0000026157,0.0000025974,0.0000025824,0.0000025744,0.0000025702, -0.0000025678,0.0000025669,0.0000025663,0.0000025650,0.0000025627, -0.0000025599,0.0000025568,0.0000025515,0.0000025435,0.0000025371, -0.0000025349,0.0000025350,0.0000025368,0.0000025367,0.0000025330, -0.0000025402,0.0000025697,0.0000026080,0.0000026340,0.0000026362, -0.0000026328,0.0000026274,0.0000026255,0.0000026270,0.0000026297, -0.0000026340,0.0000026412,0.0000026505,0.0000026603,0.0000026675, -0.0000026708,0.0000026730,0.0000026745,0.0000026706,0.0000026602, -0.0000026496,0.0000026267,0.0000026177,0.0000025914,0.0000025634, -0.0000025740,0.0000026482,0.0000026997,0.0000027281,0.0000027477, -0.0000027767,0.0000027946,0.0000027957,0.0000027865,0.0000027771, -0.0000027733,0.0000027743,0.0000027713,0.0000027593,0.0000027617, -0.0000027714,0.0000027753,0.0000027741,0.0000027677,0.0000027654, -0.0000027691,0.0000027689,0.0000027568,0.0000027593,0.0000027726, -0.0000027729,0.0000027697,0.0000027591,0.0000027435,0.0000027328, -0.0000027368,0.0000027369,0.0000027310,0.0000027298,0.0000027307, -0.0000027291,0.0000027251,0.0000027231,0.0000027238,0.0000027289, -0.0000027309,0.0000027319,0.0000027315,0.0000027310,0.0000027303, -0.0000027294,0.0000027287,0.0000027272,0.0000027253,0.0000027224, -0.0000027180,0.0000027118,0.0000027028,0.0000026917,0.0000026768, -0.0000026605,0.0000026505,0.0000026473,0.0000026442,0.0000026398, -0.0000026376,0.0000026396,0.0000026442,0.0000026531,0.0000026649, -0.0000026736,0.0000026755,0.0000026752,0.0000026700,0.0000026664, -0.0000026608,0.0000026553,0.0000026497,0.0000026448,0.0000026405, -0.0000026381,0.0000026386,0.0000026416,0.0000026439,0.0000026444, -0.0000026440,0.0000026426,0.0000026406,0.0000026371,0.0000026318, -0.0000026243,0.0000026155,0.0000026081,0.0000026037,0.0000026021, -0.0000026020,0.0000026030,0.0000026043,0.0000026039,0.0000026004, -0.0000025934,0.0000025839,0.0000025735,0.0000025627,0.0000025518, -0.0000025429,0.0000025367,0.0000025329,0.0000025293,0.0000025266, -0.0000025250,0.0000025232,0.0000025210,0.0000025207,0.0000025248, -0.0000025370,0.0000025506,0.0000025627,0.0000025726,0.0000025744, -0.0000025687,0.0000025604,0.0000025574,0.0000025594,0.0000025603, -0.0000025585,0.0000025546,0.0000025479,0.0000025393,0.0000025307, -0.0000025261,0.0000025245,0.0000025262,0.0000025297,0.0000025319, -0.0000025296,0.0000025179,0.0000025010,0.0000024921,0.0000024877, -0.0000024837,0.0000024889,0.0000024989,0.0000025123,0.0000025167, -0.0000025225,0.0000025342,0.0000025513,0.0000025473,0.0000025319, -0.0000025254,0.0000025362,0.0000025496,0.0000025533,0.0000025814, -0.0000026157,0.0000026358,0.0000026418,0.0000026372,0.0000026272, -0.0000026102,0.0000025931,0.0000025889,0.0000025910,0.0000025891, -0.0000025779,0.0000025686,0.0000025691,0.0000025751,0.0000025824, -0.0000025883,0.0000025913,0.0000025944,0.0000026010,0.0000026101, -0.0000026251,0.0000026436,0.0000026545,0.0000026540,0.0000026493, -0.0000026448,0.0000026436,0.0000026457,0.0000026475,0.0000026461, -0.0000026433,0.0000026434,0.0000026467,0.0000026538,0.0000026634, -0.0000026677,0.0000026705,0.0000026730,0.0000026760,0.0000026831, -0.0000026953,0.0000027096,0.0000027278,0.0000027482,0.0000027640, -0.0000027746,0.0000027821,0.0000027834,0.0000027832,0.0000027886, -0.0000027981,0.0000028022,0.0000028017,0.0000027975,0.0000027941, -0.0000027939,0.0000027952,0.0000027966,0.0000027964,0.0000027973, -0.0000027992,0.0000028006,0.0000028004,0.0000027999,0.0000028022, -0.0000028060,0.0000028078,0.0000028061,0.0000028010,0.0000027953, -0.0000027903,0.0000027832,0.0000027764,0.0000027712,0.0000027651, -0.0000027595,0.0000027536,0.0000027458,0.0000027389,0.0000027344, -0.0000027336,0.0000027352,0.0000027379,0.0000027416,0.0000027461, -0.0000027518,0.0000027578,0.0000027645,0.0000027718,0.0000027787, -0.0000027817,0.0000027798,0.0000027750,0.0000027728,0.0000027715, -0.0000027704,0.0000027726,0.0000027775,0.0000027863,0.0000027994, -0.0000028125,0.0000028244,0.0000028347,0.0000028390,0.0000028380, -0.0000028377,0.0000028394,0.0000028392,0.0000028336,0.0000028251, -0.0000028155,0.0000028090,0.0000028062,0.0000028079,0.0000028109, -0.0000028130,0.0000028134,0.0000028126,0.0000028099,0.0000028058, -0.0000028002,0.0000027927,0.0000027853,0.0000027802,0.0000027785, -0.0000027792,0.0000027813,0.0000027844,0.0000027860,0.0000027860, -0.0000027835,0.0000027793,0.0000027767,0.0000027769,0.0000027785, -0.0000027806,0.0000027834,0.0000027869,0.0000027904,0.0000027922, -0.0000027923,0.0000027912,0.0000027907,0.0000027917,0.0000027944, -0.0000027985,0.0000028032,0.0000028084,0.0000028139,0.0000028180, -0.0000028178,0.0000028137,0.0000028096,0.0000028072,0.0000028056, -0.0000028043,0.0000028029,0.0000028007,0.0000027980,0.0000027973, -0.0000028005,0.0000028056,0.0000028092,0.0000028127,0.0000028136, -0.0000028066,0.0000027886,0.0000027697,0.0000027645,0.0000027731, -0.0000027877,0.0000028004,0.0000028100,0.0000028163,0.0000028178, -0.0000028149,0.0000028107,0.0000028080,0.0000028076,0.0000028096, -0.0000028124,0.0000028138,0.0000028140,0.0000028145,0.0000028158, -0.0000028178,0.0000028194,0.0000028205,0.0000028207,0.0000028199, -0.0000028179,0.0000028149,0.0000028123,0.0000028122,0.0000028154, -0.0000028197,0.0000028219,0.0000028226,0.0000028230,0.0000028244, -0.0000028253,0.0000028237,0.0000028180,0.0000028099,0.0000028031, -0.0000028002,0.0000028007,0.0000028021,0.0000028031,0.0000028053, -0.0000028108,0.0000028173,0.0000028214,0.0000028217,0.0000028165, -0.0000028065,0.0000027981,0.0000027951,0.0000027940,0.0000027899, -0.0000027830,0.0000027778,0.0000027769,0.0000027781,0.0000027785, -0.0000027773,0.0000027757,0.0000027751,0.0000027758,0.0000027752, -0.0000027718,0.0000027670,0.0000027625,0.0000027571,0.0000027510, -0.0000027480,0.0000027497,0.0000027592,0.0000027720,0.0000027786, -0.0000027791,0.0000027758,0.0000027707,0.0000027668,0.0000027650, -0.0000027652,0.0000027647,0.0000027623,0.0000027585,0.0000027540, -0.0000027507,0.0000027496,0.0000027496,0.0000027498,0.0000027491, -0.0000027463,0.0000027437,0.0000027457,0.0000027505,0.0000027537, -0.0000027546,0.0000027560,0.0000027560,0.0000027517,0.0000027457, -0.0000027440,0.0000027428,0.0000027290,0.0000026962,0.0000026650, -0.0000026478,0.0000026454,0.0000026535,0.0000026680,0.0000026866, -0.0000027008,0.0000027095,0.0000027182,0.0000027239,0.0000027278, -0.0000027340,0.0000027410,0.0000027424,0.0000027366,0.0000027296, -0.0000027276,0.0000027276,0.0000027240,0.0000027195,0.0000027191, -0.0000027234,0.0000027287,0.0000027345,0.0000027399,0.0000027414, -0.0000027401,0.0000027380,0.0000027347,0.0000027301,0.0000027271, -0.0000027264,0.0000027265,0.0000027262,0.0000027246,0.0000027154, -0.0000026911,0.0000026549,0.0000026189,0.0000026017,0.0000026081, -0.0000026364,0.0000026803,0.0000027254,0.0000027470,0.0000027469, -0.0000027446,0.0000027419,0.0000027365,0.0000027648,0.0000028057, -0.0000028136,0.0000028213,0.0000028221,0.0000028184,0.0000028075, -0.0000028074,0.0000028196,0.0000028309,0.0000028320,0.0000028291, -0.0000028250,0.0000028260,0.0000028306,0.0000028382,0.0000028452, -0.0000028503,0.0000028516,0.0000028504,0.0000028450,0.0000028375, -0.0000028288,0.0000028219,0.0000028193,0.0000028124,0.0000027975, -0.0000027829,0.0000027839,0.0000027931,0.0000027989,0.0000028053, -0.0000028122,0.0000028153,0.0000028194,0.0000028225,0.0000028221, -0.0000028217,0.0000028251,0.0000028292,0.0000028306,0.0000028494, -0.0000028570,0.0000028288,0.0000028398,0.0000028594,0.0000028664, -0.0000028666,0.0000028740,0.0000028985,0.0000029146,0.0000029104, -0.0000029071,0.0000029141,0.0000029209,0.0000029221,0.0000029201, -0.0000029165,0.0000029107,0.0000028985,0.0000028849,0.0000028820, -0.0000028837,0.0000028794,0.0000028696,0.0000028530,0.0000028348, -0.0000028311,0.0000028342,0.0000028402,0.0000028428,0.0000028411, -0.0000028388,0.0000028368,0.0000028328,0.0000028267,0.0000028223, -0.0000028200,0.0000028154,0.0000028119,0.0000028128,0.0000028122, -0.0000028051,0.0000027927,0.0000027819,0.0000027732,0.0000027683, -0.0000027673,0.0000027697,0.0000027720,0.0000027716,0.0000027683, -0.0000027643,0.0000027628,0.0000027657,0.0000027732,0.0000027817, -0.0000027859,0.0000027864,0.0000027852,0.0000027842,0.0000027836, -0.0000027831,0.0000027798,0.0000027718,0.0000027607,0.0000027484, -0.0000027387,0.0000027352,0.0000027369,0.0000027414,0.0000027450, -0.0000027459,0.0000027450,0.0000027429,0.0000027409,0.0000027407, -0.0000027411,0.0000027413,0.0000027424,0.0000027449,0.0000027476, -0.0000027496,0.0000027508,0.0000027503,0.0000027478,0.0000027449, -0.0000027414,0.0000027371,0.0000027333,0.0000027326,0.0000027349, -0.0000027402,0.0000027472,0.0000027529,0.0000027556,0.0000027556, -0.0000027545,0.0000027536,0.0000027518,0.0000027487,0.0000027456, -0.0000027454,0.0000027497,0.0000027572,0.0000027652,0.0000027720, -0.0000027774,0.0000027825,0.0000027861,0.0000027875,0.0000027876, -0.0000027854,0.0000027806,0.0000027748,0.0000027688,0.0000027641, -0.0000027603,0.0000027552,0.0000027472,0.0000027375,0.0000027301, -0.0000027282,0.0000027297,0.0000027327,0.0000027347,0.0000027349, -0.0000027336,0.0000027332,0.0000027374,0.0000027466,0.0000027585, -0.0000027673,0.0000027697,0.0000027688,0.0000027675,0.0000027695, -0.0000027755,0.0000027806,0.0000027813,0.0000027773,0.0000027699, -0.0000027602,0.0000027492,0.0000027394,0.0000027333,0.0000027317, -0.0000027324,0.0000027321,0.0000027269,0.0000027165,0.0000027058, -0.0000026987,0.0000026930,0.0000026850,0.0000026743,0.0000026644, -0.0000026580,0.0000026549,0.0000026550,0.0000026583,0.0000026608, -0.0000026595,0.0000026552,0.0000026502,0.0000026470,0.0000026460, -0.0000026455,0.0000026450,0.0000026458,0.0000026480,0.0000026498, -0.0000026492,0.0000026457,0.0000026414,0.0000026399,0.0000026390, -0.0000026397,0.0000026413,0.0000026431,0.0000026451,0.0000026474, -0.0000026505,0.0000026546,0.0000026588,0.0000026637,0.0000026703, -0.0000026762,0.0000026808,0.0000026835,0.0000026860,0.0000026910, -0.0000026990,0.0000027074,0.0000027141,0.0000027186,0.0000027205, -0.0000027204,0.0000027223,0.0000027269,0.0000027355,0.0000027479, -0.0000027634,0.0000027786,0.0000027920,0.0000028029,0.0000028129, -0.0000028208,0.0000028243,0.0000028200,0.0000028118,0.0000028116, -0.0000028197,0.0000028299,0.0000028354,0.0000028365,0.0000028346, -0.0000028324,0.0000028313,0.0000028310,0.0000028302,0.0000028292, -0.0000028278,0.0000028250,0.0000028186,0.0000028082,0.0000027961, -0.0000027838,0.0000027709,0.0000027561,0.0000027410,0.0000027259, -0.0000027153,0.0000027090,0.0000027064,0.0000027024,0.0000026947, -0.0000026856,0.0000026785,0.0000026746,0.0000026717,0.0000026679, -0.0000026647,0.0000026623,0.0000026593,0.0000026576,0.0000026580, -0.0000026582,0.0000026574,0.0000026562,0.0000026549,0.0000026540, -0.0000026541,0.0000026556,0.0000026565,0.0000026551,0.0000026491, -0.0000026406,0.0000026322,0.0000026253,0.0000026197,0.0000026140, -0.0000026053,0.0000025929,0.0000025861,0.0000026053,0.0000026483, -0.0000026792,0.0000026877,0.0000026931,0.0000027178,0.0000027551, -0.0000027707,0.0000027632,0.0000027459,0.0000027412,0.0000027485, -0.0000027593,0.0000027715,0.0000027807,0.0000027826,0.0000027685, -0.0000027319,0.0000027099,0.0000027130,0.0000027197,0.0000027169, -0.0000027122,0.0000027119,0.0000027151,0.0000027205,0.0000027231, -0.0000027263,0.0000027369,0.0000027457,0.0000027447,0.0000027397, -0.0000027365,0.0000027360,0.0000027384,0.0000027432,0.0000027479, -0.0000027505,0.0000027520,0.0000027525,0.0000027524,0.0000027508, -0.0000027479,0.0000027444,0.0000027441,0.0000027438,0.0000027423, -0.0000027404,0.0000027393,0.0000027399,0.0000027396,0.0000027382, -0.0000027375,0.0000027376,0.0000027375,0.0000027386,0.0000027388, -0.0000027397,0.0000027378,0.0000027342,0.0000027295,0.0000027244, -0.0000027193,0.0000027153,0.0000027119,0.0000027083,0.0000027033, -0.0000026990,0.0000026982,0.0000026996,0.0000026981,0.0000026900, -0.0000026809,0.0000026741,0.0000026687,0.0000026666,0.0000026686, -0.0000026710,0.0000026694,0.0000026650,0.0000026628,0.0000026623, -0.0000026604,0.0000026566,0.0000026515,0.0000026450,0.0000026373, -0.0000026314,0.0000026304,0.0000026351,0.0000026422,0.0000026465, -0.0000026465,0.0000026433,0.0000026397,0.0000026373,0.0000026322, -0.0000026193,0.0000026018,0.0000025879,0.0000025803,0.0000025750, -0.0000025695,0.0000025640,0.0000025595,0.0000025561,0.0000025534, -0.0000025509,0.0000025481,0.0000025452,0.0000025401,0.0000025318, -0.0000025253,0.0000025246,0.0000025280,0.0000025330,0.0000025342, -0.0000025295,0.0000025234,0.0000025360,0.0000025698,0.0000026063, -0.0000026289,0.0000026319,0.0000026304,0.0000026268,0.0000026260, -0.0000026266,0.0000026284,0.0000026327,0.0000026402,0.0000026516, -0.0000026626,0.0000026686,0.0000026709,0.0000026737,0.0000026722, -0.0000026638,0.0000026512,0.0000026292,0.0000026130,0.0000025945, -0.0000025586,0.0000025633,0.0000026182,0.0000026814,0.0000027163, -0.0000027345,0.0000027612,0.0000027861,0.0000027921,0.0000027860, -0.0000027773,0.0000027737,0.0000027746,0.0000027671,0.0000027584, -0.0000027648,0.0000027712,0.0000027728,0.0000027680,0.0000027631, -0.0000027664,0.0000027708,0.0000027644,0.0000027506,0.0000027610, -0.0000027710,0.0000027723,0.0000027686,0.0000027583,0.0000027419, -0.0000027331,0.0000027380,0.0000027372,0.0000027321,0.0000027310, -0.0000027324,0.0000027325,0.0000027301,0.0000027275,0.0000027274, -0.0000027321,0.0000027341,0.0000027345,0.0000027334,0.0000027321, -0.0000027312,0.0000027299,0.0000027287,0.0000027267,0.0000027237, -0.0000027198,0.0000027148,0.0000027097,0.0000027030,0.0000026936, -0.0000026822,0.0000026688,0.0000026564,0.0000026496,0.0000026485, -0.0000026479,0.0000026453,0.0000026432,0.0000026430,0.0000026456, -0.0000026519,0.0000026599,0.0000026698,0.0000026784,0.0000026825, -0.0000026858,0.0000026851,0.0000026805,0.0000026744,0.0000026695, -0.0000026653,0.0000026624,0.0000026623,0.0000026643,0.0000026653, -0.0000026649,0.0000026635,0.0000026606,0.0000026566,0.0000026500, -0.0000026394,0.0000026265,0.0000026117,0.0000025999,0.0000025942, -0.0000025933,0.0000025945,0.0000025973,0.0000026006,0.0000026018, -0.0000025992,0.0000025924,0.0000025828,0.0000025724,0.0000025619, -0.0000025517,0.0000025431,0.0000025370,0.0000025330,0.0000025299, -0.0000025264,0.0000025235,0.0000025214,0.0000025189,0.0000025171, -0.0000025184,0.0000025271,0.0000025417,0.0000025557,0.0000025693, -0.0000025750,0.0000025716,0.0000025631,0.0000025631,0.0000025725, -0.0000025796,0.0000025799,0.0000025761,0.0000025711,0.0000025634, -0.0000025519,0.0000025409,0.0000025337,0.0000025312,0.0000025301, -0.0000025300,0.0000025320,0.0000025294,0.0000025187,0.0000025018, -0.0000024921,0.0000024887,0.0000024821,0.0000024857,0.0000024975, -0.0000025115,0.0000025181,0.0000025244,0.0000025330,0.0000025515, -0.0000025499,0.0000025317,0.0000025226,0.0000025314,0.0000025472, -0.0000025524,0.0000025753,0.0000026125,0.0000026338,0.0000026416, -0.0000026370,0.0000026271,0.0000026115,0.0000025951,0.0000025903, -0.0000025925,0.0000025910,0.0000025821,0.0000025754,0.0000025766, -0.0000025824,0.0000025902,0.0000025970,0.0000025994,0.0000026008, -0.0000026050,0.0000026145,0.0000026306,0.0000026457,0.0000026507, -0.0000026476,0.0000026424,0.0000026391,0.0000026401,0.0000026428, -0.0000026429,0.0000026395,0.0000026381,0.0000026395,0.0000026439, -0.0000026531,0.0000026613,0.0000026635,0.0000026658,0.0000026700, -0.0000026750,0.0000026824,0.0000026946,0.0000027088,0.0000027230, -0.0000027392,0.0000027535,0.0000027643,0.0000027731,0.0000027751, -0.0000027746,0.0000027790,0.0000027878,0.0000027926,0.0000027919, -0.0000027873,0.0000027841,0.0000027840,0.0000027844,0.0000027843, -0.0000027824,0.0000027808,0.0000027805,0.0000027824,0.0000027829, -0.0000027831,0.0000027861,0.0000027916,0.0000027961,0.0000027965, -0.0000027925,0.0000027858,0.0000027797,0.0000027729,0.0000027634, -0.0000027537,0.0000027428,0.0000027335,0.0000027283,0.0000027255, -0.0000027243,0.0000027258,0.0000027281,0.0000027296,0.0000027311, -0.0000027349,0.0000027402,0.0000027466,0.0000027540,0.0000027622, -0.0000027696,0.0000027763,0.0000027813,0.0000027817,0.0000027774, -0.0000027743,0.0000027738,0.0000027739,0.0000027762,0.0000027795, -0.0000027848,0.0000027946,0.0000028072,0.0000028196,0.0000028304, -0.0000028370,0.0000028376,0.0000028354,0.0000028350,0.0000028350, -0.0000028317,0.0000028245,0.0000028145,0.0000028065,0.0000028030, -0.0000028057,0.0000028111,0.0000028145,0.0000028149,0.0000028137, -0.0000028109,0.0000028072,0.0000028034,0.0000027987,0.0000027941, -0.0000027904,0.0000027879,0.0000027866,0.0000027861,0.0000027858, -0.0000027857,0.0000027853,0.0000027828,0.0000027780,0.0000027737, -0.0000027725,0.0000027735,0.0000027757,0.0000027787,0.0000027817, -0.0000027850,0.0000027865,0.0000027854,0.0000027839,0.0000027836, -0.0000027854,0.0000027895,0.0000027953,0.0000028015,0.0000028078, -0.0000028135,0.0000028180,0.0000028196,0.0000028176,0.0000028145, -0.0000028132,0.0000028128,0.0000028112,0.0000028078,0.0000028034, -0.0000027996,0.0000027987,0.0000028017,0.0000028075,0.0000028119, -0.0000028154,0.0000028189,0.0000028188,0.0000028102,0.0000027909, -0.0000027739,0.0000027705,0.0000027787,0.0000027893,0.0000027974, -0.0000028035,0.0000028074,0.0000028081,0.0000028066,0.0000028040, -0.0000028024,0.0000028033,0.0000028063,0.0000028086,0.0000028092, -0.0000028102,0.0000028117,0.0000028147,0.0000028173,0.0000028187, -0.0000028182,0.0000028166,0.0000028138,0.0000028110,0.0000028083, -0.0000028060,0.0000028058,0.0000028098,0.0000028163,0.0000028210, -0.0000028230,0.0000028243,0.0000028255,0.0000028248,0.0000028208, -0.0000028126,0.0000028031,0.0000027979,0.0000027985,0.0000028014, -0.0000028033,0.0000028047,0.0000028083,0.0000028147,0.0000028208, -0.0000028242,0.0000028221,0.0000028142,0.0000028058,0.0000028027, -0.0000028029,0.0000028007,0.0000027936,0.0000027868,0.0000027844, -0.0000027842,0.0000027833,0.0000027803,0.0000027761,0.0000027726, -0.0000027712,0.0000027710,0.0000027693,0.0000027657,0.0000027615, -0.0000027572,0.0000027518,0.0000027472,0.0000027462,0.0000027496, -0.0000027588,0.0000027704,0.0000027774,0.0000027783,0.0000027765, -0.0000027728,0.0000027703,0.0000027691,0.0000027693,0.0000027680, -0.0000027654,0.0000027617,0.0000027580,0.0000027553,0.0000027539, -0.0000027529,0.0000027521,0.0000027505,0.0000027479,0.0000027462, -0.0000027481,0.0000027526,0.0000027539,0.0000027524,0.0000027524, -0.0000027526,0.0000027494,0.0000027438,0.0000027423,0.0000027421, -0.0000027281,0.0000026925,0.0000026579,0.0000026395,0.0000026386, -0.0000026474,0.0000026615,0.0000026785,0.0000026914,0.0000027014, -0.0000027113,0.0000027178,0.0000027225,0.0000027290,0.0000027373, -0.0000027405,0.0000027348,0.0000027258,0.0000027208,0.0000027198, -0.0000027170,0.0000027141,0.0000027141,0.0000027180,0.0000027235, -0.0000027302,0.0000027380,0.0000027421,0.0000027419,0.0000027393, -0.0000027351,0.0000027309,0.0000027279,0.0000027259,0.0000027251, -0.0000027250,0.0000027252,0.0000027237,0.0000027134,0.0000026897, -0.0000026527,0.0000026169,0.0000026033,0.0000026099,0.0000026384, -0.0000026858,0.0000027312,0.0000027459,0.0000027405,0.0000027342, -0.0000027272,0.0000027401,0.0000027935,0.0000028143,0.0000028223, -0.0000028234,0.0000028195,0.0000028104,0.0000028082,0.0000028178, -0.0000028311,0.0000028356,0.0000028380,0.0000028392,0.0000028402, -0.0000028430,0.0000028494,0.0000028553,0.0000028584,0.0000028584, -0.0000028554,0.0000028488,0.0000028411,0.0000028311,0.0000028219, -0.0000028168,0.0000028116,0.0000028025,0.0000027882,0.0000027829, -0.0000027861,0.0000027934,0.0000028018,0.0000028112,0.0000028155, -0.0000028204,0.0000028259,0.0000028255,0.0000028214,0.0000028213, -0.0000028262,0.0000028280,0.0000028370,0.0000028558,0.0000028331, -0.0000028312,0.0000028536,0.0000028634,0.0000028640,0.0000028706, -0.0000028967,0.0000029110,0.0000029017,0.0000029022,0.0000029142, -0.0000029185,0.0000029170,0.0000029147,0.0000029109,0.0000029039, -0.0000028918,0.0000028837,0.0000028836,0.0000028835,0.0000028773, -0.0000028686,0.0000028510,0.0000028349,0.0000028317,0.0000028338, -0.0000028389,0.0000028414,0.0000028407,0.0000028376,0.0000028329, -0.0000028277,0.0000028245,0.0000028233,0.0000028206,0.0000028154, -0.0000028139,0.0000028150,0.0000028113,0.0000028000,0.0000027861, -0.0000027743,0.0000027659,0.0000027627,0.0000027635,0.0000027670, -0.0000027703,0.0000027704,0.0000027675,0.0000027637,0.0000027628, -0.0000027672,0.0000027751,0.0000027828,0.0000027883,0.0000027908, -0.0000027920,0.0000027926,0.0000027924,0.0000027904,0.0000027853, -0.0000027764,0.0000027657,0.0000027536,0.0000027416,0.0000027337, -0.0000027313,0.0000027327,0.0000027357,0.0000027376,0.0000027381, -0.0000027370,0.0000027340,0.0000027318,0.0000027329,0.0000027356, -0.0000027363,0.0000027344,0.0000027316,0.0000027308,0.0000027337, -0.0000027391,0.0000027432,0.0000027443,0.0000027434,0.0000027412, -0.0000027395,0.0000027386,0.0000027370,0.0000027345,0.0000027326, -0.0000027325,0.0000027338,0.0000027363,0.0000027393,0.0000027425, -0.0000027436,0.0000027428,0.0000027398,0.0000027363,0.0000027342, -0.0000027338,0.0000027354,0.0000027406,0.0000027489,0.0000027590, -0.0000027683,0.0000027764,0.0000027836,0.0000027889,0.0000027911, -0.0000027907,0.0000027883,0.0000027827,0.0000027762,0.0000027707, -0.0000027672,0.0000027652,0.0000027616,0.0000027537,0.0000027436, -0.0000027356,0.0000027317,0.0000027309,0.0000027322,0.0000027338, -0.0000027347,0.0000027360,0.0000027389,0.0000027448,0.0000027535, -0.0000027618,0.0000027664,0.0000027669,0.0000027681,0.0000027732, -0.0000027799,0.0000027838,0.0000027833,0.0000027785,0.0000027705, -0.0000027610,0.0000027517,0.0000027451,0.0000027423,0.0000027421, -0.0000027428,0.0000027419,0.0000027377,0.0000027305,0.0000027217, -0.0000027115,0.0000026998,0.0000026873,0.0000026754,0.0000026661, -0.0000026606,0.0000026590,0.0000026604,0.0000026622,0.0000026620, -0.0000026595,0.0000026561,0.0000026528,0.0000026509,0.0000026504, -0.0000026510,0.0000026525,0.0000026552,0.0000026571,0.0000026567, -0.0000026536,0.0000026492,0.0000026455,0.0000026438,0.0000026434, -0.0000026431,0.0000026434,0.0000026437,0.0000026448,0.0000026455, -0.0000026464,0.0000026474,0.0000026473,0.0000026489,0.0000026507, -0.0000026525,0.0000026548,0.0000026576,0.0000026612,0.0000026661, -0.0000026714,0.0000026760,0.0000026788,0.0000026798,0.0000026806, -0.0000026845,0.0000026915,0.0000027007,0.0000027140,0.0000027317, -0.0000027498,0.0000027657,0.0000027779,0.0000027888,0.0000027986, -0.0000028056,0.0000028047,0.0000027992,0.0000027987,0.0000028052, -0.0000028126,0.0000028166,0.0000028172,0.0000028150,0.0000028136, -0.0000028156,0.0000028176,0.0000028191,0.0000028202,0.0000028208, -0.0000028200,0.0000028155,0.0000028063,0.0000027949,0.0000027838, -0.0000027717,0.0000027590,0.0000027445,0.0000027281,0.0000027153, -0.0000027051,0.0000026980,0.0000026902,0.0000026797,0.0000026676, -0.0000026569,0.0000026508,0.0000026483,0.0000026468,0.0000026459, -0.0000026455,0.0000026441,0.0000026420,0.0000026427,0.0000026423, -0.0000026405,0.0000026383,0.0000026364,0.0000026358,0.0000026377, -0.0000026419,0.0000026463,0.0000026477,0.0000026456,0.0000026382, -0.0000026279,0.0000026187,0.0000026139,0.0000026124,0.0000026090, -0.0000025987,0.0000025859,0.0000025915,0.0000026278,0.0000026673, -0.0000026822,0.0000026884,0.0000027147,0.0000027547,0.0000027707, -0.0000027623,0.0000027455,0.0000027414,0.0000027477,0.0000027574, -0.0000027693,0.0000027806,0.0000027838,0.0000027693,0.0000027333, -0.0000027150,0.0000027191,0.0000027224,0.0000027154,0.0000027075, -0.0000027077,0.0000027115,0.0000027165,0.0000027210,0.0000027209, -0.0000027231,0.0000027329,0.0000027420,0.0000027436,0.0000027413, -0.0000027371,0.0000027339,0.0000027333,0.0000027356,0.0000027379, -0.0000027415,0.0000027458,0.0000027494,0.0000027504,0.0000027492, -0.0000027468,0.0000027472,0.0000027493,0.0000027500,0.0000027494, -0.0000027496,0.0000027508,0.0000027509,0.0000027489,0.0000027468, -0.0000027453,0.0000027422,0.0000027404,0.0000027373,0.0000027329, -0.0000027280,0.0000027238,0.0000027203,0.0000027171,0.0000027137, -0.0000027110,0.0000027067,0.0000027012,0.0000026946,0.0000026916, -0.0000026926,0.0000026965,0.0000026969,0.0000026893,0.0000026801, -0.0000026736,0.0000026681,0.0000026655,0.0000026670,0.0000026696, -0.0000026689,0.0000026644,0.0000026613,0.0000026604,0.0000026592, -0.0000026560,0.0000026516,0.0000026471,0.0000026417,0.0000026342, -0.0000026271,0.0000026254,0.0000026290,0.0000026360,0.0000026398, -0.0000026390,0.0000026365,0.0000026354,0.0000026337,0.0000026241, -0.0000026071,0.0000025932,0.0000025873,0.0000025833,0.0000025751, -0.0000025634,0.0000025515,0.0000025422,0.0000025360,0.0000025322, -0.0000025297,0.0000025282,0.0000025268,0.0000025233,0.0000025165, -0.0000025107,0.0000025102,0.0000025152,0.0000025232,0.0000025296, -0.0000025276,0.0000025159,0.0000025143,0.0000025317,0.0000025649, -0.0000025961,0.0000026170,0.0000026276,0.0000026262,0.0000026257, -0.0000026258,0.0000026276,0.0000026308,0.0000026354,0.0000026440, -0.0000026564,0.0000026654,0.0000026689,0.0000026737,0.0000026737, -0.0000026660,0.0000026523,0.0000026321,0.0000026078,0.0000025961, -0.0000025579,0.0000025554,0.0000025863,0.0000026570,0.0000026977, -0.0000027219,0.0000027432,0.0000027737,0.0000027881,0.0000027849, -0.0000027775,0.0000027747,0.0000027748,0.0000027653,0.0000027606, -0.0000027671,0.0000027699,0.0000027684,0.0000027618,0.0000027616, -0.0000027688,0.0000027689,0.0000027560,0.0000027482,0.0000027629, -0.0000027687,0.0000027714,0.0000027674,0.0000027573,0.0000027402, -0.0000027337,0.0000027389,0.0000027380,0.0000027338,0.0000027327, -0.0000027345,0.0000027351,0.0000027329,0.0000027299,0.0000027296, -0.0000027350,0.0000027366,0.0000027362,0.0000027339,0.0000027318, -0.0000027308,0.0000027299,0.0000027292,0.0000027275,0.0000027242, -0.0000027196,0.0000027137,0.0000027071,0.0000027002,0.0000026929, -0.0000026842,0.0000026739,0.0000026647,0.0000026556,0.0000026503, -0.0000026501,0.0000026509,0.0000026499,0.0000026470,0.0000026461, -0.0000026493,0.0000026536,0.0000026595,0.0000026672,0.0000026755, -0.0000026828,0.0000026870,0.0000026870,0.0000026835,0.0000026803, -0.0000026775,0.0000026749,0.0000026742,0.0000026751,0.0000026752, -0.0000026736,0.0000026713,0.0000026675,0.0000026617,0.0000026520, -0.0000026378,0.0000026204,0.0000026042,0.0000025941,0.0000025911, -0.0000025910,0.0000025936,0.0000025970,0.0000025997,0.0000025995, -0.0000025955,0.0000025872,0.0000025761,0.0000025655,0.0000025562, -0.0000025476,0.0000025402,0.0000025350,0.0000025310,0.0000025282, -0.0000025251,0.0000025221,0.0000025196,0.0000025172,0.0000025143, -0.0000025137,0.0000025200,0.0000025338,0.0000025477,0.0000025615, -0.0000025724,0.0000025730,0.0000025642,0.0000025639,0.0000025786, -0.0000025907,0.0000025900,0.0000025840,0.0000025784,0.0000025745, -0.0000025709,0.0000025680,0.0000025629,0.0000025541,0.0000025425, -0.0000025341,0.0000025308,0.0000025296,0.0000025275,0.0000025186, -0.0000025039,0.0000024927,0.0000024892,0.0000024806,0.0000024818, -0.0000024960,0.0000025107,0.0000025200,0.0000025265,0.0000025321, -0.0000025485,0.0000025518,0.0000025325,0.0000025207,0.0000025270, -0.0000025453,0.0000025517,0.0000025678,0.0000026057,0.0000026304, -0.0000026413,0.0000026378,0.0000026288,0.0000026149,0.0000025989, -0.0000025920,0.0000025937,0.0000025929,0.0000025857,0.0000025811, -0.0000025826,0.0000025881,0.0000025949,0.0000026008,0.0000026032, -0.0000026049,0.0000026094,0.0000026206,0.0000026359,0.0000026458, -0.0000026452,0.0000026412,0.0000026375,0.0000026366,0.0000026388, -0.0000026391,0.0000026356,0.0000026327,0.0000026330,0.0000026363, -0.0000026430,0.0000026522,0.0000026575,0.0000026583,0.0000026607, -0.0000026675,0.0000026745,0.0000026826,0.0000026951,0.0000027076, -0.0000027168,0.0000027297,0.0000027421,0.0000027525,0.0000027634, -0.0000027676,0.0000027675,0.0000027699,0.0000027757,0.0000027799, -0.0000027785,0.0000027742,0.0000027712,0.0000027692,0.0000027667, -0.0000027648,0.0000027618,0.0000027587,0.0000027572,0.0000027600, -0.0000027621,0.0000027631,0.0000027652,0.0000027702,0.0000027751, -0.0000027766,0.0000027729,0.0000027660,0.0000027585,0.0000027512, -0.0000027442,0.0000027366,0.0000027287,0.0000027221,0.0000027187, -0.0000027183,0.0000027205,0.0000027251,0.0000027303,0.0000027331, -0.0000027332,0.0000027354,0.0000027405,0.0000027466,0.0000027540, -0.0000027634,0.0000027715,0.0000027765,0.0000027803,0.0000027814, -0.0000027783,0.0000027743,0.0000027729,0.0000027744,0.0000027790, -0.0000027834,0.0000027865,0.0000027925,0.0000028028,0.0000028155, -0.0000028265,0.0000028334,0.0000028356,0.0000028337,0.0000028313, -0.0000028303,0.0000028281,0.0000028227,0.0000028138,0.0000028049, -0.0000028007,0.0000028032,0.0000028090,0.0000028129,0.0000028134, -0.0000028115,0.0000028088,0.0000028067,0.0000028050,0.0000028033, -0.0000028019,0.0000028000,0.0000027965,0.0000027928,0.0000027895, -0.0000027866,0.0000027841,0.0000027823,0.0000027806,0.0000027780, -0.0000027748,0.0000027736,0.0000027741,0.0000027762,0.0000027787, -0.0000027811,0.0000027826,0.0000027822,0.0000027799,0.0000027771, -0.0000027765,0.0000027785,0.0000027827,0.0000027886,0.0000027961, -0.0000028043,0.0000028119,0.0000028177,0.0000028211,0.0000028208, -0.0000028181,0.0000028169,0.0000028177,0.0000028178,0.0000028151, -0.0000028094,0.0000028034,0.0000028012,0.0000028033,0.0000028099, -0.0000028162,0.0000028200,0.0000028238,0.0000028265,0.0000028245, -0.0000028138,0.0000027953,0.0000027804,0.0000027780,0.0000027838, -0.0000027897,0.0000027942,0.0000027983,0.0000028012,0.0000028018, -0.0000028002,0.0000027987,0.0000027995,0.0000028024,0.0000028052, -0.0000028063,0.0000028073,0.0000028098,0.0000028136,0.0000028170, -0.0000028190,0.0000028193,0.0000028181,0.0000028152,0.0000028114, -0.0000028075,0.0000028041,0.0000028014,0.0000028008,0.0000028037, -0.0000028112,0.0000028183,0.0000028225,0.0000028247,0.0000028251, -0.0000028225,0.0000028153,0.0000028051,0.0000027983,0.0000027978, -0.0000028006,0.0000028031,0.0000028038,0.0000028044,0.0000028084, -0.0000028161,0.0000028228,0.0000028234,0.0000028183,0.0000028132, -0.0000028116,0.0000028123,0.0000028112,0.0000028046,0.0000027957, -0.0000027898,0.0000027871,0.0000027847,0.0000027808,0.0000027758, -0.0000027707,0.0000027668,0.0000027652,0.0000027643,0.0000027623, -0.0000027588,0.0000027545,0.0000027501,0.0000027463,0.0000027449, -0.0000027462,0.0000027511,0.0000027594,0.0000027689,0.0000027751, -0.0000027776,0.0000027765,0.0000027748,0.0000027732,0.0000027726, -0.0000027727,0.0000027707,0.0000027677,0.0000027645,0.0000027624, -0.0000027609,0.0000027597,0.0000027580,0.0000027561,0.0000027542, -0.0000027524,0.0000027520,0.0000027545,0.0000027572,0.0000027553, -0.0000027516,0.0000027509,0.0000027515,0.0000027486,0.0000027437, -0.0000027428,0.0000027424,0.0000027251,0.0000026863,0.0000026503, -0.0000026345,0.0000026352,0.0000026453,0.0000026580,0.0000026729, -0.0000026848,0.0000026953,0.0000027053,0.0000027118,0.0000027159, -0.0000027214,0.0000027295,0.0000027346,0.0000027321,0.0000027238, -0.0000027161,0.0000027127,0.0000027109,0.0000027104,0.0000027108, -0.0000027139,0.0000027189,0.0000027259,0.0000027347,0.0000027410, -0.0000027427,0.0000027408,0.0000027363,0.0000027321,0.0000027288, -0.0000027248,0.0000027208,0.0000027200,0.0000027221,0.0000027234, -0.0000027207,0.0000027112,0.0000026879,0.0000026517,0.0000026169, -0.0000026029,0.0000026095,0.0000026426,0.0000026963,0.0000027358, -0.0000027389,0.0000027297,0.0000027207,0.0000027220,0.0000027688, -0.0000028133,0.0000028228,0.0000028259,0.0000028219,0.0000028161, -0.0000028122,0.0000028183,0.0000028296,0.0000028372,0.0000028422, -0.0000028482,0.0000028532,0.0000028564,0.0000028610,0.0000028647, -0.0000028659,0.0000028652,0.0000028612,0.0000028538,0.0000028450, -0.0000028345,0.0000028241,0.0000028164,0.0000028094,0.0000028032, -0.0000027941,0.0000027872,0.0000027833,0.0000027856,0.0000027937, -0.0000028054,0.0000028140,0.0000028197,0.0000028261,0.0000028288, -0.0000028247,0.0000028208,0.0000028225,0.0000028260,0.0000028272, -0.0000028476,0.0000028409,0.0000028249,0.0000028463,0.0000028597, -0.0000028616,0.0000028666,0.0000028918,0.0000029060,0.0000028953, -0.0000028982,0.0000029122,0.0000029130,0.0000029103,0.0000029086, -0.0000029051,0.0000028981,0.0000028885,0.0000028841,0.0000028848, -0.0000028828,0.0000028767,0.0000028681,0.0000028508,0.0000028361, -0.0000028319,0.0000028333,0.0000028375,0.0000028400,0.0000028389, -0.0000028330,0.0000028272,0.0000028245,0.0000028246,0.0000028240, -0.0000028199,0.0000028155,0.0000028154,0.0000028141,0.0000028050, -0.0000027898,0.0000027744,0.0000027627,0.0000027568,0.0000027567, -0.0000027612,0.0000027666,0.0000027702,0.0000027701,0.0000027668, -0.0000027633,0.0000027628,0.0000027676,0.0000027758,0.0000027831, -0.0000027889,0.0000027937,0.0000027976,0.0000028002,0.0000028004, -0.0000027977,0.0000027917,0.0000027827,0.0000027720,0.0000027594, -0.0000027450,0.0000027325,0.0000027258,0.0000027240,0.0000027246, -0.0000027254,0.0000027245,0.0000027221,0.0000027183,0.0000027136, -0.0000027105,0.0000027117,0.0000027165,0.0000027211,0.0000027221, -0.0000027185,0.0000027136,0.0000027121,0.0000027145,0.0000027196, -0.0000027248,0.0000027291,0.0000027323,0.0000027352,0.0000027378, -0.0000027381,0.0000027357,0.0000027319,0.0000027279,0.0000027259, -0.0000027260,0.0000027272,0.0000027293,0.0000027313,0.0000027316, -0.0000027303,0.0000027287,0.0000027276,0.0000027265,0.0000027248, -0.0000027240,0.0000027271,0.0000027352,0.0000027462,0.0000027572, -0.0000027671,0.0000027766,0.0000027847,0.0000027896,0.0000027909, -0.0000027892,0.0000027855,0.0000027803,0.0000027762,0.0000027744, -0.0000027735,0.0000027709,0.0000027651,0.0000027565,0.0000027460, -0.0000027360,0.0000027298,0.0000027282,0.0000027306,0.0000027352, -0.0000027388,0.0000027415,0.0000027452,0.0000027504,0.0000027554, -0.0000027592,0.0000027638,0.0000027701,0.0000027771,0.0000027828, -0.0000027844,0.0000027821,0.0000027755,0.0000027672,0.0000027586, -0.0000027518,0.0000027497,0.0000027505,0.0000027518,0.0000027519, -0.0000027505,0.0000027474,0.0000027428,0.0000027352,0.0000027231, -0.0000027078,0.0000026919,0.0000026782,0.0000026684,0.0000026633, -0.0000026624,0.0000026629,0.0000026630,0.0000026628,0.0000026618, -0.0000026591,0.0000026560,0.0000026539,0.0000026535,0.0000026549, -0.0000026579,0.0000026612,0.0000026623,0.0000026612,0.0000026590, -0.0000026571,0.0000026561,0.0000026561,0.0000026560,0.0000026556, -0.0000026551,0.0000026540,0.0000026524,0.0000026513,0.0000026491, -0.0000026459,0.0000026443,0.0000026410,0.0000026393,0.0000026401, -0.0000026419,0.0000026444,0.0000026470,0.0000026497,0.0000026518, -0.0000026522,0.0000026514,0.0000026504,0.0000026501,0.0000026507, -0.0000026540,0.0000026628,0.0000026791,0.0000026998,0.0000027199, -0.0000027377,0.0000027535,0.0000027681,0.0000027807,0.0000027856, -0.0000027847,0.0000027856,0.0000027920,0.0000027985,0.0000028021, -0.0000028021,0.0000028010,0.0000028028,0.0000028061,0.0000028089, -0.0000028113,0.0000028138,0.0000028159,0.0000028159,0.0000028121, -0.0000028028,0.0000027893,0.0000027752,0.0000027614,0.0000027461, -0.0000027286,0.0000027099,0.0000026932,0.0000026804,0.0000026701, -0.0000026607,0.0000026513,0.0000026415,0.0000026328,0.0000026285, -0.0000026283,0.0000026282,0.0000026279,0.0000026280,0.0000026277, -0.0000026275,0.0000026292,0.0000026312,0.0000026302,0.0000026266, -0.0000026214,0.0000026170,0.0000026169,0.0000026219,0.0000026290, -0.0000026337,0.0000026342,0.0000026310,0.0000026233,0.0000026136, -0.0000026072,0.0000026066,0.0000026078,0.0000026028,0.0000025910, -0.0000025875,0.0000026132,0.0000026560,0.0000026768,0.0000026849, -0.0000027133,0.0000027550,0.0000027699,0.0000027602,0.0000027453, -0.0000027428,0.0000027482,0.0000027565,0.0000027673,0.0000027799, -0.0000027838,0.0000027669,0.0000027329,0.0000027192,0.0000027245, -0.0000027265,0.0000027161,0.0000027021,0.0000027008,0.0000027078, -0.0000027124,0.0000027169,0.0000027193,0.0000027175,0.0000027176, -0.0000027265,0.0000027372,0.0000027423,0.0000027414,0.0000027384, -0.0000027348,0.0000027327,0.0000027303,0.0000027288,0.0000027306, -0.0000027358,0.0000027420,0.0000027457,0.0000027458,0.0000027459, -0.0000027477,0.0000027500,0.0000027509,0.0000027519,0.0000027538, -0.0000027547,0.0000027530,0.0000027498,0.0000027451,0.0000027402, -0.0000027342,0.0000027280,0.0000027223,0.0000027178,0.0000027148, -0.0000027126,0.0000027100,0.0000027069,0.0000027043,0.0000026991, -0.0000026927,0.0000026868,0.0000026857,0.0000026893,0.0000026942, -0.0000026953,0.0000026872,0.0000026779,0.0000026722,0.0000026672, -0.0000026644,0.0000026656,0.0000026685,0.0000026691,0.0000026647, -0.0000026606,0.0000026594,0.0000026582,0.0000026547,0.0000026494, -0.0000026443,0.0000026410,0.0000026375,0.0000026312,0.0000026237, -0.0000026202,0.0000026229,0.0000026295,0.0000026331,0.0000026326, -0.0000026315,0.0000026316,0.0000026280,0.0000026138,0.0000025978, -0.0000025907,0.0000025892,0.0000025823,0.0000025661,0.0000025458, -0.0000025292,0.0000025186,0.0000025121,0.0000025078,0.0000025056, -0.0000025055,0.0000025058,0.0000025048,0.0000025016,0.0000024982, -0.0000024978,0.0000025008,0.0000025074,0.0000025161,0.0000025213, -0.0000025151,0.0000025036,0.0000025036,0.0000025216,0.0000025491, -0.0000025755,0.0000025962,0.0000026101,0.0000026196,0.0000026242, -0.0000026262,0.0000026292,0.0000026340,0.0000026403,0.0000026505, -0.0000026617,0.0000026677,0.0000026741,0.0000026751,0.0000026671, -0.0000026525,0.0000026346,0.0000026035,0.0000025940,0.0000025634, -0.0000025502,0.0000025643,0.0000026198,0.0000026728,0.0000027063, -0.0000027263,0.0000027579,0.0000027817,0.0000027823,0.0000027772, -0.0000027762,0.0000027748,0.0000027657,0.0000027642,0.0000027682, -0.0000027678,0.0000027624,0.0000027578,0.0000027629,0.0000027681, -0.0000027628,0.0000027481,0.0000027496,0.0000027633,0.0000027663, -0.0000027698,0.0000027660,0.0000027556,0.0000027383,0.0000027340, -0.0000027395,0.0000027391,0.0000027358,0.0000027343,0.0000027355, -0.0000027359,0.0000027339,0.0000027315,0.0000027321,0.0000027368, -0.0000027376,0.0000027363,0.0000027333,0.0000027306,0.0000027294, -0.0000027286,0.0000027280,0.0000027270,0.0000027242,0.0000027201, -0.0000027145,0.0000027073,0.0000026981,0.0000026900,0.0000026829, -0.0000026755,0.0000026689,0.0000026615,0.0000026542,0.0000026505, -0.0000026510,0.0000026524,0.0000026515,0.0000026493,0.0000026501, -0.0000026533,0.0000026589,0.0000026644,0.0000026698,0.0000026747, -0.0000026781,0.0000026786,0.0000026765,0.0000026733,0.0000026706, -0.0000026697,0.0000026705,0.0000026717,0.0000026723,0.0000026710, -0.0000026678,0.0000026622,0.0000026531,0.0000026391,0.0000026219, -0.0000026066,0.0000025971,0.0000025935,0.0000025926,0.0000025933, -0.0000025945,0.0000025959,0.0000025951,0.0000025907,0.0000025834, -0.0000025728,0.0000025607,0.0000025509,0.0000025443,0.0000025391, -0.0000025344,0.0000025307,0.0000025276,0.0000025246,0.0000025210, -0.0000025185,0.0000025169,0.0000025151,0.0000025124,0.0000025114, -0.0000025149,0.0000025272,0.0000025413,0.0000025529,0.0000025656, -0.0000025717,0.0000025658,0.0000025609,0.0000025753,0.0000025924, -0.0000025921,0.0000025849,0.0000025766,0.0000025700,0.0000025669, -0.0000025698,0.0000025763,0.0000025829,0.0000025764,0.0000025602, -0.0000025419,0.0000025298,0.0000025254,0.0000025233,0.0000025173, -0.0000025065,0.0000024947,0.0000024886,0.0000024801,0.0000024785, -0.0000024941,0.0000025095,0.0000025217,0.0000025281,0.0000025314, -0.0000025432,0.0000025530,0.0000025351,0.0000025185,0.0000025232, -0.0000025411,0.0000025507,0.0000025599,0.0000025950,0.0000026255, -0.0000026411,0.0000026392,0.0000026315,0.0000026191,0.0000026033, -0.0000025939,0.0000025944,0.0000025944,0.0000025885,0.0000025848, -0.0000025863,0.0000025908,0.0000025962,0.0000026012,0.0000026037, -0.0000026064,0.0000026124,0.0000026239,0.0000026371,0.0000026425, -0.0000026402,0.0000026373,0.0000026356,0.0000026360,0.0000026360, -0.0000026328,0.0000026288,0.0000026281,0.0000026298,0.0000026351, -0.0000026423,0.0000026493,0.0000026526,0.0000026522,0.0000026561, -0.0000026661,0.0000026753,0.0000026845,0.0000026963,0.0000027044, -0.0000027094,0.0000027192,0.0000027292,0.0000027397,0.0000027527, -0.0000027593,0.0000027610,0.0000027625,0.0000027654,0.0000027679, -0.0000027657,0.0000027620,0.0000027577,0.0000027535,0.0000027486, -0.0000027460,0.0000027428,0.0000027392,0.0000027363,0.0000027361, -0.0000027371,0.0000027375,0.0000027384,0.0000027414,0.0000027450, -0.0000027475,0.0000027464,0.0000027427,0.0000027377,0.0000027332, -0.0000027306,0.0000027278,0.0000027249,0.0000027208,0.0000027171, -0.0000027163,0.0000027194,0.0000027258,0.0000027341,0.0000027386, -0.0000027393,0.0000027390,0.0000027423,0.0000027485,0.0000027548, -0.0000027643,0.0000027740,0.0000027794,0.0000027812,0.0000027812, -0.0000027782,0.0000027738,0.0000027715,0.0000027724,0.0000027793, -0.0000027861,0.0000027891,0.0000027926,0.0000028006,0.0000028123, -0.0000028231,0.0000028295,0.0000028317,0.0000028308,0.0000028276, -0.0000028253,0.0000028228,0.0000028184,0.0000028115,0.0000028043, -0.0000028011,0.0000028033,0.0000028074,0.0000028087,0.0000028076, -0.0000028051,0.0000028032,0.0000028035,0.0000028051,0.0000028067, -0.0000028075,0.0000028064,0.0000028026,0.0000027974,0.0000027921, -0.0000027876,0.0000027837,0.0000027805,0.0000027784,0.0000027767, -0.0000027746,0.0000027727,0.0000027720,0.0000027725,0.0000027748, -0.0000027774,0.0000027787,0.0000027783,0.0000027762,0.0000027736, -0.0000027728,0.0000027753,0.0000027797,0.0000027849,0.0000027918, -0.0000027999,0.0000028081,0.0000028149,0.0000028199,0.0000028214, -0.0000028197,0.0000028183,0.0000028193,0.0000028209,0.0000028203, -0.0000028159,0.0000028090,0.0000028038,0.0000028040,0.0000028102, -0.0000028185,0.0000028250,0.0000028296,0.0000028330,0.0000028331, -0.0000028284,0.0000028172,0.0000028014,0.0000027889,0.0000027855, -0.0000027875,0.0000027909,0.0000027935,0.0000027968,0.0000027986, -0.0000027977,0.0000027955,0.0000027961,0.0000028002,0.0000028044, -0.0000028055,0.0000028047,0.0000028054,0.0000028089,0.0000028138, -0.0000028164,0.0000028164,0.0000028156,0.0000028136,0.0000028100, -0.0000028064,0.0000028044,0.0000028025,0.0000027990,0.0000027962, -0.0000027983,0.0000028062,0.0000028155,0.0000028212,0.0000028230, -0.0000028221,0.0000028174,0.0000028087,0.0000028007,0.0000027987, -0.0000028004,0.0000028027,0.0000028021,0.0000028005,0.0000028017, -0.0000028082,0.0000028162,0.0000028194,0.0000028182,0.0000028174, -0.0000028188,0.0000028197,0.0000028184,0.0000028118,0.0000028017, -0.0000027931,0.0000027881,0.0000027845,0.0000027806,0.0000027764, -0.0000027718,0.0000027666,0.0000027624,0.0000027602,0.0000027590, -0.0000027575,0.0000027549,0.0000027509,0.0000027484,0.0000027477, -0.0000027482,0.0000027506,0.0000027552,0.0000027620,0.0000027691, -0.0000027753,0.0000027773,0.0000027769,0.0000027760,0.0000027745, -0.0000027737,0.0000027731,0.0000027717,0.0000027692,0.0000027673, -0.0000027659,0.0000027654,0.0000027646,0.0000027627,0.0000027607, -0.0000027592,0.0000027590,0.0000027598,0.0000027617,0.0000027616, -0.0000027571,0.0000027520,0.0000027513,0.0000027521,0.0000027497, -0.0000027459,0.0000027453,0.0000027416,0.0000027180,0.0000026767, -0.0000026435,0.0000026326,0.0000026360,0.0000026465,0.0000026563, -0.0000026685,0.0000026796,0.0000026904,0.0000027003,0.0000027066, -0.0000027096,0.0000027127,0.0000027183,0.0000027230,0.0000027242, -0.0000027197,0.0000027115,0.0000027058,0.0000027043,0.0000027059, -0.0000027075,0.0000027097,0.0000027133,0.0000027196,0.0000027287, -0.0000027367,0.0000027406,0.0000027399,0.0000027364,0.0000027331, -0.0000027303,0.0000027252,0.0000027182,0.0000027147,0.0000027154, -0.0000027184,0.0000027194,0.0000027170,0.0000027078,0.0000026861, -0.0000026496,0.0000026111,0.0000025994,0.0000026119,0.0000026530, -0.0000027075,0.0000027355,0.0000027293,0.0000027159,0.0000027111, -0.0000027397,0.0000028015,0.0000028232,0.0000028285,0.0000028251, -0.0000028217,0.0000028184,0.0000028203,0.0000028283,0.0000028370, -0.0000028431,0.0000028506,0.0000028576,0.0000028633,0.0000028673, -0.0000028704,0.0000028718,0.0000028712,0.0000028671,0.0000028589, -0.0000028482,0.0000028377,0.0000028277,0.0000028180,0.0000028092, -0.0000028016,0.0000027964,0.0000027920,0.0000027858,0.0000027819, -0.0000027847,0.0000027947,0.0000028078,0.0000028177,0.0000028245, -0.0000028294,0.0000028290,0.0000028232,0.0000028201,0.0000028232, -0.0000028225,0.0000028339,0.0000028446,0.0000028244,0.0000028371, -0.0000028547,0.0000028592,0.0000028630,0.0000028835,0.0000029009, -0.0000028914,0.0000028940,0.0000029085,0.0000029075,0.0000029042, -0.0000029032,0.0000029008,0.0000028950,0.0000028886,0.0000028859, -0.0000028858,0.0000028826,0.0000028768,0.0000028682,0.0000028529, -0.0000028382,0.0000028325,0.0000028337,0.0000028372,0.0000028387, -0.0000028347,0.0000028270,0.0000028234,0.0000028245,0.0000028254, -0.0000028231,0.0000028178,0.0000028157,0.0000028146,0.0000028072, -0.0000027918,0.0000027739,0.0000027593,0.0000027503,0.0000027477, -0.0000027518,0.0000027597,0.0000027665,0.0000027695,0.0000027691, -0.0000027661,0.0000027632,0.0000027632,0.0000027677,0.0000027745, -0.0000027819,0.0000027886,0.0000027943,0.0000027983,0.0000028004, -0.0000028000,0.0000027972,0.0000027915,0.0000027839,0.0000027736, -0.0000027604,0.0000027455,0.0000027314,0.0000027210,0.0000027143, -0.0000027091,0.0000027042,0.0000026988,0.0000026923,0.0000026846, -0.0000026766,0.0000026711,0.0000026705,0.0000026733,0.0000026788, -0.0000026849,0.0000026885,0.0000026885,0.0000026861,0.0000026837, -0.0000026829,0.0000026833,0.0000026867,0.0000026937,0.0000027028, -0.0000027124,0.0000027216,0.0000027279,0.0000027292,0.0000027265, -0.0000027203,0.0000027150,0.0000027132,0.0000027148,0.0000027189, -0.0000027225,0.0000027233,0.0000027219,0.0000027207,0.0000027219, -0.0000027232,0.0000027222,0.0000027192,0.0000027180,0.0000027197, -0.0000027264,0.0000027359,0.0000027458,0.0000027557,0.0000027662, -0.0000027755,0.0000027821,0.0000027854,0.0000027853,0.0000027826, -0.0000027800,0.0000027795,0.0000027796,0.0000027792,0.0000027764, -0.0000027721,0.0000027663,0.0000027575,0.0000027451,0.0000027331, -0.0000027269,0.0000027281,0.0000027335,0.0000027390,0.0000027427, -0.0000027453,0.0000027476,0.0000027499,0.0000027543,0.0000027614, -0.0000027703,0.0000027786,0.0000027835,0.0000027838,0.0000027797, -0.0000027720,0.0000027627,0.0000027546,0.0000027514,0.0000027526, -0.0000027559,0.0000027582,0.0000027583,0.0000027575,0.0000027557, -0.0000027521,0.0000027452,0.0000027339,0.0000027183,0.0000026999, -0.0000026830,0.0000026713,0.0000026651,0.0000026634,0.0000026639, -0.0000026661,0.0000026681,0.0000026680,0.0000026655,0.0000026616, -0.0000026581,0.0000026564,0.0000026582,0.0000026611,0.0000026635, -0.0000026643,0.0000026646,0.0000026653,0.0000026664,0.0000026678, -0.0000026689,0.0000026699,0.0000026708,0.0000026708,0.0000026695, -0.0000026668,0.0000026631,0.0000026581,0.0000026521,0.0000026460, -0.0000026416,0.0000026392,0.0000026389,0.0000026384,0.0000026374, -0.0000026372,0.0000026374,0.0000026379,0.0000026386,0.0000026383, -0.0000026359,0.0000026322,0.0000026274,0.0000026245,0.0000026283, -0.0000026392,0.0000026550,0.0000026736,0.0000026929,0.0000027118, -0.0000027298,0.0000027422,0.0000027488,0.0000027545,0.0000027631, -0.0000027710,0.0000027753,0.0000027763,0.0000027777,0.0000027811, -0.0000027840,0.0000027862,0.0000027879,0.0000027895,0.0000027900, -0.0000027878,0.0000027813,0.0000027693,0.0000027517,0.0000027321, -0.0000027136,0.0000026954,0.0000026771,0.0000026603,0.0000026478, -0.0000026397,0.0000026335,0.0000026275,0.0000026213,0.0000026150, -0.0000026094,0.0000026070,0.0000026080,0.0000026096,0.0000026090, -0.0000026086,0.0000026099,0.0000026129,0.0000026177,0.0000026237, -0.0000026256,0.0000026232,0.0000026169,0.0000026078,0.0000026012, -0.0000026011,0.0000026058,0.0000026115,0.0000026155,0.0000026159, -0.0000026135,0.0000026079,0.0000026022,0.0000026007,0.0000026026, -0.0000026021,0.0000025934,0.0000025877,0.0000026045,0.0000026462, -0.0000026726,0.0000026827,0.0000027133,0.0000027555,0.0000027692, -0.0000027578,0.0000027461,0.0000027454,0.0000027500,0.0000027571, -0.0000027663,0.0000027789,0.0000027825,0.0000027619,0.0000027319, -0.0000027249,0.0000027300,0.0000027310,0.0000027181,0.0000026984, -0.0000026928,0.0000027000,0.0000027087,0.0000027118,0.0000027152, -0.0000027168,0.0000027133,0.0000027115,0.0000027180,0.0000027305, -0.0000027390,0.0000027400,0.0000027383,0.0000027368,0.0000027329, -0.0000027282,0.0000027237,0.0000027222,0.0000027264,0.0000027348, -0.0000027413,0.0000027446,0.0000027459,0.0000027484,0.0000027496, -0.0000027513,0.0000027535,0.0000027545,0.0000027531,0.0000027479, -0.0000027401,0.0000027317,0.0000027242,0.0000027180,0.0000027132, -0.0000027101,0.0000027081,0.0000027063,0.0000027035,0.0000027005, -0.0000026983,0.0000026946,0.0000026893,0.0000026850,0.0000026843, -0.0000026893,0.0000026943,0.0000026930,0.0000026837,0.0000026746, -0.0000026702,0.0000026661,0.0000026633,0.0000026645,0.0000026680, -0.0000026693,0.0000026655,0.0000026608,0.0000026588,0.0000026569, -0.0000026529,0.0000026466,0.0000026401,0.0000026355,0.0000026335, -0.0000026323,0.0000026280,0.0000026208,0.0000026166,0.0000026186, -0.0000026244,0.0000026280,0.0000026280,0.0000026278,0.0000026280, -0.0000026209,0.0000026048,0.0000025927,0.0000025904,0.0000025872, -0.0000025718,0.0000025466,0.0000025232,0.0000025076,0.0000024987, -0.0000024928,0.0000024885,0.0000024869,0.0000024876,0.0000024891, -0.0000024900,0.0000024901,0.0000024899,0.0000024895,0.0000024890, -0.0000024904,0.0000024960,0.0000025054,0.0000025100,0.0000025040, -0.0000024941,0.0000024929,0.0000025043,0.0000025245,0.0000025466, -0.0000025663,0.0000025849,0.0000026037,0.0000026193,0.0000026272, -0.0000026324,0.0000026384,0.0000026460,0.0000026576,0.0000026664, -0.0000026741,0.0000026756,0.0000026675,0.0000026522,0.0000026361, -0.0000026023,0.0000025884,0.0000025736,0.0000025465,0.0000025514, -0.0000025780,0.0000026397,0.0000026826,0.0000027124,0.0000027403, -0.0000027717,0.0000027787,0.0000027764,0.0000027770,0.0000027741, -0.0000027680,0.0000027675,0.0000027689,0.0000027651,0.0000027573, -0.0000027560,0.0000027632,0.0000027639,0.0000027551,0.0000027448, -0.0000027529,0.0000027614,0.0000027641,0.0000027674,0.0000027639, -0.0000027531,0.0000027362,0.0000027340,0.0000027401,0.0000027404, -0.0000027378,0.0000027357,0.0000027356,0.0000027358,0.0000027347, -0.0000027334,0.0000027342,0.0000027369,0.0000027375,0.0000027356, -0.0000027330,0.0000027302,0.0000027280,0.0000027262,0.0000027248, -0.0000027234,0.0000027206,0.0000027170,0.0000027132,0.0000027074, -0.0000026985,0.0000026888,0.0000026806,0.0000026744,0.0000026698, -0.0000026641,0.0000026574,0.0000026518,0.0000026494,0.0000026498, -0.0000026514,0.0000026511,0.0000026518,0.0000026537,0.0000026594, -0.0000026656,0.0000026705,0.0000026744,0.0000026763,0.0000026760, -0.0000026733,0.0000026694,0.0000026667,0.0000026666,0.0000026681, -0.0000026695,0.0000026692,0.0000026666,0.0000026604,0.0000026496, -0.0000026350,0.0000026182,0.0000026036,0.0000025966,0.0000025956, -0.0000025960,0.0000025957,0.0000025943,0.0000025921,0.0000025880, -0.0000025815,0.0000025732,0.0000025634,0.0000025526,0.0000025422, -0.0000025349,0.0000025313,0.0000025294,0.0000025277,0.0000025257, -0.0000025242,0.0000025217,0.0000025186,0.0000025154,0.0000025140, -0.0000025134,0.0000025120,0.0000025118,0.0000025129,0.0000025212, -0.0000025360,0.0000025464,0.0000025569,0.0000025674,0.0000025673, -0.0000025591,0.0000025666,0.0000025881,0.0000025919,0.0000025846, -0.0000025767,0.0000025685,0.0000025612,0.0000025616,0.0000025711, -0.0000025807,0.0000025883,0.0000025897,0.0000025789,0.0000025552, -0.0000025318,0.0000025206,0.0000025178,0.0000025153,0.0000025093, -0.0000024976,0.0000024893,0.0000024799,0.0000024755,0.0000024909, -0.0000025083,0.0000025224,0.0000025292,0.0000025314,0.0000025380, -0.0000025516,0.0000025389,0.0000025180,0.0000025199,0.0000025357, -0.0000025483,0.0000025517,0.0000025810,0.0000026178,0.0000026380, -0.0000026399,0.0000026342,0.0000026231,0.0000026087,0.0000025966, -0.0000025952,0.0000025959,0.0000025925,0.0000025884,0.0000025887, -0.0000025911,0.0000025953,0.0000025993,0.0000026014,0.0000026051, -0.0000026116,0.0000026214,0.0000026323,0.0000026366,0.0000026355, -0.0000026345,0.0000026343,0.0000026338,0.0000026312,0.0000026269, -0.0000026253,0.0000026259,0.0000026287,0.0000026339,0.0000026391, -0.0000026442,0.0000026460,0.0000026460,0.0000026534,0.0000026669, -0.0000026775,0.0000026875,0.0000026966,0.0000026999,0.0000027018, -0.0000027071,0.0000027144,0.0000027258,0.0000027401,0.0000027484, -0.0000027520,0.0000027540,0.0000027553,0.0000027561,0.0000027535, -0.0000027494,0.0000027433,0.0000027377,0.0000027315,0.0000027278, -0.0000027236,0.0000027186,0.0000027152,0.0000027133,0.0000027145, -0.0000027171,0.0000027198,0.0000027235,0.0000027271,0.0000027297, -0.0000027309,0.0000027303,0.0000027289,0.0000027278,0.0000027269, -0.0000027263,0.0000027245,0.0000027219,0.0000027195,0.0000027182, -0.0000027194,0.0000027234,0.0000027311,0.0000027361,0.0000027379, -0.0000027372,0.0000027392,0.0000027453,0.0000027524,0.0000027613, -0.0000027724,0.0000027802,0.0000027826,0.0000027811,0.0000027772, -0.0000027731,0.0000027705,0.0000027711,0.0000027771,0.0000027863, -0.0000027909,0.0000027937,0.0000028003,0.0000028101,0.0000028200, -0.0000028264,0.0000028283,0.0000028273,0.0000028236,0.0000028198, -0.0000028165,0.0000028122,0.0000028072,0.0000028033,0.0000028024, -0.0000028047,0.0000028068,0.0000028054,0.0000028027,0.0000028013, -0.0000028012,0.0000028039,0.0000028080,0.0000028116,0.0000028129, -0.0000028113,0.0000028067,0.0000028011,0.0000027950,0.0000027889, -0.0000027839,0.0000027795,0.0000027757,0.0000027725,0.0000027692, -0.0000027659,0.0000027637,0.0000027636,0.0000027659,0.0000027698, -0.0000027732,0.0000027746,0.0000027745,0.0000027734,0.0000027727, -0.0000027743,0.0000027786,0.0000027840,0.0000027902,0.0000027968, -0.0000028033,0.0000028087,0.0000028132,0.0000028161,0.0000028165, -0.0000028161,0.0000028177,0.0000028206,0.0000028215,0.0000028193, -0.0000028140,0.0000028078,0.0000028050,0.0000028078,0.0000028161, -0.0000028255,0.0000028323,0.0000028377,0.0000028393,0.0000028370, -0.0000028315,0.0000028227,0.0000028102,0.0000027982,0.0000027925, -0.0000027919,0.0000027933,0.0000027952,0.0000027969,0.0000027969, -0.0000027950,0.0000027939,0.0000027978,0.0000028048,0.0000028080, -0.0000028063,0.0000028030,0.0000028031,0.0000028070,0.0000028103, -0.0000028109,0.0000028097,0.0000028083,0.0000028063,0.0000028010, -0.0000027967,0.0000027976,0.0000027990,0.0000027966,0.0000027924, -0.0000027945,0.0000028040,0.0000028141,0.0000028192,0.0000028198, -0.0000028174,0.0000028117,0.0000028046,0.0000028005,0.0000028009, -0.0000028026,0.0000028013,0.0000027970,0.0000027955,0.0000027990, -0.0000028066,0.0000028117,0.0000028140,0.0000028177,0.0000028224, -0.0000028243,0.0000028226,0.0000028159,0.0000028066,0.0000027974, -0.0000027913,0.0000027870,0.0000027835,0.0000027797,0.0000027753, -0.0000027699,0.0000027643,0.0000027604,0.0000027591,0.0000027591, -0.0000027587,0.0000027574,0.0000027564,0.0000027555,0.0000027548, -0.0000027548,0.0000027558,0.0000027588,0.0000027641,0.0000027707, -0.0000027751,0.0000027762,0.0000027762,0.0000027747,0.0000027728, -0.0000027718,0.0000027716,0.0000027712,0.0000027707,0.0000027702, -0.0000027695,0.0000027692,0.0000027681,0.0000027664,0.0000027646, -0.0000027643,0.0000027649,0.0000027660,0.0000027664,0.0000027645, -0.0000027588,0.0000027537,0.0000027534,0.0000027540,0.0000027520, -0.0000027494,0.0000027482,0.0000027377,0.0000027060,0.0000026647, -0.0000026385,0.0000026329,0.0000026388,0.0000026486,0.0000026555, -0.0000026645,0.0000026754,0.0000026864,0.0000026958,0.0000027018, -0.0000027038,0.0000027042,0.0000027058,0.0000027079,0.0000027101, -0.0000027097,0.0000027043,0.0000026982,0.0000026964,0.0000026988, -0.0000027019,0.0000027042,0.0000027060,0.0000027102,0.0000027188, -0.0000027281,0.0000027342,0.0000027360,0.0000027343,0.0000027320, -0.0000027303,0.0000027260,0.0000027190,0.0000027136,0.0000027103, -0.0000027112,0.0000027139,0.0000027157,0.0000027130,0.0000027051, -0.0000026826,0.0000026413,0.0000026040,0.0000025988,0.0000026189, -0.0000026663,0.0000027155,0.0000027284,0.0000027158,0.0000027055, -0.0000027175,0.0000027746,0.0000028201,0.0000028297,0.0000028289, -0.0000028255,0.0000028241,0.0000028244,0.0000028287,0.0000028349, -0.0000028416,0.0000028496,0.0000028569,0.0000028626,0.0000028668, -0.0000028708,0.0000028733,0.0000028730,0.0000028695,0.0000028620, -0.0000028511,0.0000028413,0.0000028322,0.0000028221,0.0000028122, -0.0000028020,0.0000027962,0.0000027926,0.0000027902,0.0000027843, -0.0000027808,0.0000027845,0.0000027967,0.0000028114,0.0000028218, -0.0000028278,0.0000028304,0.0000028278,0.0000028208,0.0000028198, -0.0000028206,0.0000028219,0.0000028409,0.0000028300,0.0000028278, -0.0000028479,0.0000028562,0.0000028602,0.0000028739,0.0000028944, -0.0000028892,0.0000028891,0.0000029042,0.0000029034,0.0000028993, -0.0000028989,0.0000028981,0.0000028942,0.0000028896,0.0000028878, -0.0000028866,0.0000028828,0.0000028768,0.0000028688,0.0000028559, -0.0000028422,0.0000028355,0.0000028361,0.0000028377,0.0000028359, -0.0000028290,0.0000028233,0.0000028232,0.0000028258,0.0000028249, -0.0000028200,0.0000028162,0.0000028147,0.0000028083,0.0000027929, -0.0000027731,0.0000027559,0.0000027451,0.0000027410,0.0000027413, -0.0000027475,0.0000027575,0.0000027648,0.0000027670,0.0000027658, -0.0000027643,0.0000027639,0.0000027660,0.0000027704,0.0000027751, -0.0000027815,0.0000027892,0.0000027945,0.0000027967,0.0000027960, -0.0000027932,0.0000027893,0.0000027856,0.0000027803,0.0000027708, -0.0000027585,0.0000027450,0.0000027308,0.0000027156,0.0000027010, -0.0000026876,0.0000026751,0.0000026641,0.0000026552,0.0000026475, -0.0000026391,0.0000026309,0.0000026279,0.0000026294,0.0000026333, -0.0000026380,0.0000026435,0.0000026490,0.0000026529,0.0000026553, -0.0000026563,0.0000026558,0.0000026537,0.0000026531,0.0000026559, -0.0000026623,0.0000026716,0.0000026829,0.0000026944,0.0000027030, -0.0000027066,0.0000027068,0.0000027050,0.0000027020,0.0000026999, -0.0000027006,0.0000027050,0.0000027111,0.0000027150,0.0000027162, -0.0000027173,0.0000027190,0.0000027191,0.0000027176,0.0000027155, -0.0000027154,0.0000027182,0.0000027232,0.0000027291,0.0000027361, -0.0000027445,0.0000027535,0.0000027624,0.0000027702,0.0000027757, -0.0000027779,0.0000027781,0.0000027781,0.0000027793,0.0000027810, -0.0000027821,0.0000027820,0.0000027803,0.0000027760,0.0000027678, -0.0000027552,0.0000027408,0.0000027310,0.0000027293,0.0000027330, -0.0000027375,0.0000027402,0.0000027419,0.0000027441,0.0000027476, -0.0000027523,0.0000027592,0.0000027682,0.0000027773,0.0000027829, -0.0000027828,0.0000027779,0.0000027694,0.0000027599,0.0000027540, -0.0000027532,0.0000027545,0.0000027574,0.0000027592,0.0000027609, -0.0000027619,0.0000027617,0.0000027601,0.0000027549,0.0000027446, -0.0000027291,0.0000027098,0.0000026904,0.0000026752,0.0000026667, -0.0000026653,0.0000026676,0.0000026717,0.0000026747,0.0000026752, -0.0000026731,0.0000026683,0.0000026637,0.0000026619,0.0000026629, -0.0000026650,0.0000026668,0.0000026686,0.0000026709,0.0000026732, -0.0000026749,0.0000026761,0.0000026775,0.0000026794,0.0000026809, -0.0000026810,0.0000026794,0.0000026765,0.0000026721,0.0000026663, -0.0000026604,0.0000026553,0.0000026517,0.0000026479,0.0000026436, -0.0000026386,0.0000026343,0.0000026324,0.0000026309,0.0000026312, -0.0000026313,0.0000026309,0.0000026287,0.0000026239,0.0000026177, -0.0000026126,0.0000026111,0.0000026153,0.0000026244,0.0000026374, -0.0000026512,0.0000026661,0.0000026790,0.0000026883,0.0000026966, -0.0000027055,0.0000027136,0.0000027182,0.0000027205,0.0000027230, -0.0000027251,0.0000027260,0.0000027264,0.0000027266,0.0000027266, -0.0000027257,0.0000027223,0.0000027150,0.0000027032,0.0000026867, -0.0000026679,0.0000026503,0.0000026340,0.0000026188,0.0000026061, -0.0000025987,0.0000025973,0.0000025969,0.0000025952,0.0000025916, -0.0000025868,0.0000025817,0.0000025789,0.0000025804,0.0000025838, -0.0000025845,0.0000025831,0.0000025837,0.0000025884,0.0000025964, -0.0000026054,0.0000026123,0.0000026141,0.0000026125,0.0000026054, -0.0000025952,0.0000025879,0.0000025859,0.0000025867,0.0000025885, -0.0000025922,0.0000025963,0.0000025979,0.0000025962,0.0000025939, -0.0000025952,0.0000025974,0.0000025926,0.0000025875,0.0000025986, -0.0000026383,0.0000026687,0.0000026814,0.0000027141,0.0000027553, -0.0000027667,0.0000027562,0.0000027481,0.0000027485,0.0000027527, -0.0000027588,0.0000027664,0.0000027773,0.0000027788,0.0000027552, -0.0000027301,0.0000027276,0.0000027348,0.0000027344,0.0000027206, -0.0000026982,0.0000026854,0.0000026888,0.0000027009,0.0000027077, -0.0000027089,0.0000027116,0.0000027132,0.0000027094,0.0000027049, -0.0000027093,0.0000027232,0.0000027341,0.0000027379,0.0000027391, -0.0000027375,0.0000027330,0.0000027266,0.0000027208,0.0000027185, -0.0000027218,0.0000027292,0.0000027375,0.0000027423,0.0000027464, -0.0000027483,0.0000027504,0.0000027526,0.0000027524,0.0000027496, -0.0000027420,0.0000027321,0.0000027223,0.0000027156,0.0000027112, -0.0000027082,0.0000027063,0.0000027048,0.0000027030,0.0000027006, -0.0000026984,0.0000026980,0.0000026964,0.0000026919,0.0000026878, -0.0000026875,0.0000026919,0.0000026950,0.0000026899,0.0000026787, -0.0000026709,0.0000026682,0.0000026650,0.0000026626,0.0000026638, -0.0000026673,0.0000026687,0.0000026660,0.0000026612,0.0000026585, -0.0000026561,0.0000026512,0.0000026440,0.0000026362,0.0000026300, -0.0000026271,0.0000026271,0.0000026273,0.0000026241,0.0000026177, -0.0000026138,0.0000026156,0.0000026210,0.0000026245,0.0000026246, -0.0000026243,0.0000026235,0.0000026136,0.0000025981,0.0000025904, -0.0000025889,0.0000025783,0.0000025538,0.0000025273,0.0000025082, -0.0000024959,0.0000024874,0.0000024809,0.0000024763,0.0000024750, -0.0000024756,0.0000024772,0.0000024787,0.0000024805,0.0000024822, -0.0000024816,0.0000024786,0.0000024761,0.0000024769,0.0000024835, -0.0000024940,0.0000024998,0.0000024956,0.0000024867,0.0000024834, -0.0000024877,0.0000024990,0.0000025141,0.0000025333,0.0000025597, -0.0000025925,0.0000026189,0.0000026302,0.0000026361,0.0000026428, -0.0000026534,0.0000026641,0.0000026732,0.0000026752,0.0000026671, -0.0000026512,0.0000026357,0.0000026035,0.0000025826,0.0000025801, -0.0000025551,0.0000025428,0.0000025532,0.0000025940,0.0000026509, -0.0000026938,0.0000027234,0.0000027572,0.0000027745,0.0000027758, -0.0000027776,0.0000027736,0.0000027708,0.0000027700,0.0000027697, -0.0000027619,0.0000027543,0.0000027550,0.0000027606,0.0000027583, -0.0000027501,0.0000027466,0.0000027565,0.0000027589,0.0000027620, -0.0000027643,0.0000027613,0.0000027498,0.0000027340,0.0000027339, -0.0000027403,0.0000027418,0.0000027397,0.0000027369,0.0000027358, -0.0000027363,0.0000027361,0.0000027348,0.0000027349,0.0000027354, -0.0000027361,0.0000027348,0.0000027332,0.0000027307,0.0000027274, -0.0000027242,0.0000027215,0.0000027191,0.0000027150,0.0000027102, -0.0000027074,0.0000027039,0.0000026972,0.0000026884,0.0000026802, -0.0000026738,0.0000026701,0.0000026659,0.0000026593,0.0000026527, -0.0000026488,0.0000026478,0.0000026483,0.0000026497,0.0000026517, -0.0000026533,0.0000026576,0.0000026633,0.0000026691,0.0000026740, -0.0000026764,0.0000026767,0.0000026747,0.0000026706,0.0000026672, -0.0000026666,0.0000026680,0.0000026684,0.0000026658,0.0000026600, -0.0000026487,0.0000026310,0.0000026130,0.0000025995,0.0000025934, -0.0000025942,0.0000025963,0.0000025970,0.0000025942,0.0000025882, -0.0000025804,0.0000025716,0.0000025623,0.0000025536,0.0000025448, -0.0000025365,0.0000025306,0.0000025269,0.0000025251,0.0000025245, -0.0000025243,0.0000025244,0.0000025237,0.0000025224,0.0000025202, -0.0000025179,0.0000025160,0.0000025149,0.0000025143,0.0000025152, -0.0000025162,0.0000025209,0.0000025320,0.0000025411,0.0000025490, -0.0000025601,0.0000025665,0.0000025610,0.0000025581,0.0000025772, -0.0000025894,0.0000025837,0.0000025772,0.0000025714,0.0000025645, -0.0000025624,0.0000025680,0.0000025740,0.0000025806,0.0000025870, -0.0000025917,0.0000025888,0.0000025705,0.0000025397,0.0000025184, -0.0000025127,0.0000025134,0.0000025115,0.0000025015,0.0000024908, -0.0000024802,0.0000024736,0.0000024866,0.0000025069,0.0000025223, -0.0000025298,0.0000025318,0.0000025340,0.0000025480,0.0000025429, -0.0000025196,0.0000025175,0.0000025302,0.0000025437,0.0000025457, -0.0000025651,0.0000026057,0.0000026314,0.0000026404,0.0000026370, -0.0000026274,0.0000026144,0.0000026007,0.0000025963,0.0000025981, -0.0000025972,0.0000025932,0.0000025908,0.0000025900,0.0000025918, -0.0000025953,0.0000025982,0.0000026019,0.0000026072,0.0000026146, -0.0000026244,0.0000026302,0.0000026314,0.0000026315,0.0000026315, -0.0000026301,0.0000026267,0.0000026242,0.0000026242,0.0000026248, -0.0000026271,0.0000026304,0.0000026338,0.0000026380,0.0000026395, -0.0000026424,0.0000026540,0.0000026698,0.0000026809,0.0000026900, -0.0000026951,0.0000026950,0.0000026939,0.0000026941,0.0000026986, -0.0000027107,0.0000027248,0.0000027337,0.0000027386,0.0000027405, -0.0000027411,0.0000027408,0.0000027374,0.0000027317,0.0000027242, -0.0000027164,0.0000027083,0.0000027037,0.0000027008,0.0000026994, -0.0000027002,0.0000027017,0.0000027060,0.0000027109,0.0000027150, -0.0000027192,0.0000027227,0.0000027249,0.0000027258,0.0000027263, -0.0000027270,0.0000027271,0.0000027268,0.0000027249,0.0000027214, -0.0000027187,0.0000027175,0.0000027168,0.0000027163,0.0000027176, -0.0000027234,0.0000027277,0.0000027301,0.0000027300,0.0000027313, -0.0000027379,0.0000027457,0.0000027546,0.0000027665,0.0000027770, -0.0000027818,0.0000027806,0.0000027758,0.0000027720,0.0000027701, -0.0000027701,0.0000027741,0.0000027832,0.0000027899,0.0000027942, -0.0000028009,0.0000028095,0.0000028175,0.0000028235,0.0000028261, -0.0000028248,0.0000028197,0.0000028138,0.0000028092,0.0000028054, -0.0000028028,0.0000028016,0.0000028030,0.0000028044,0.0000028050, -0.0000028031,0.0000028017,0.0000028028,0.0000028059,0.0000028098, -0.0000028136,0.0000028167,0.0000028173,0.0000028143,0.0000028086, -0.0000028018,0.0000027946,0.0000027871,0.0000027800,0.0000027737, -0.0000027681,0.0000027632,0.0000027588,0.0000027549,0.0000027527, -0.0000027524,0.0000027544,0.0000027583,0.0000027626,0.0000027657, -0.0000027675,0.0000027680,0.0000027682,0.0000027692,0.0000027720, -0.0000027768,0.0000027829,0.0000027896,0.0000027956,0.0000028000, -0.0000028032,0.0000028052,0.0000028060,0.0000028065,0.0000028096, -0.0000028150,0.0000028188,0.0000028190,0.0000028161,0.0000028113, -0.0000028068,0.0000028058,0.0000028109,0.0000028204,0.0000028294, -0.0000028366,0.0000028415,0.0000028422,0.0000028398,0.0000028363, -0.0000028306,0.0000028212,0.0000028106,0.0000028033,0.0000028000, -0.0000027986,0.0000027974,0.0000027964,0.0000027951,0.0000027943, -0.0000027962,0.0000028039,0.0000028111,0.0000028117,0.0000028071, -0.0000028030,0.0000028036,0.0000028052,0.0000028049,0.0000028041, -0.0000028039,0.0000028031,0.0000028002,0.0000027936,0.0000027881, -0.0000027893,0.0000027936,0.0000027937,0.0000027921,0.0000027952, -0.0000028053,0.0000028141,0.0000028170,0.0000028160,0.0000028124, -0.0000028073,0.0000028031,0.0000028020,0.0000028027,0.0000028014, -0.0000027953,0.0000027895,0.0000027902,0.0000027963,0.0000028018, -0.0000028060,0.0000028132,0.0000028217,0.0000028259,0.0000028243, -0.0000028183,0.0000028106,0.0000028034,0.0000027978,0.0000027933, -0.0000027887,0.0000027846,0.0000027805,0.0000027755,0.0000027697, -0.0000027647,0.0000027625,0.0000027626,0.0000027632,0.0000027632, -0.0000027629,0.0000027618,0.0000027595,0.0000027570,0.0000027563, -0.0000027566,0.0000027591,0.0000027640,0.0000027695,0.0000027720, -0.0000027726,0.0000027724,0.0000027701,0.0000027677,0.0000027672, -0.0000027682,0.0000027698,0.0000027716,0.0000027726,0.0000027732, -0.0000027726,0.0000027714,0.0000027696,0.0000027681,0.0000027681, -0.0000027691,0.0000027703,0.0000027697,0.0000027669,0.0000027613, -0.0000027577,0.0000027573,0.0000027569,0.0000027549,0.0000027529, -0.0000027478,0.0000027283,0.0000026898,0.0000026535,0.0000026366, -0.0000026349,0.0000026413,0.0000026497,0.0000026545,0.0000026613, -0.0000026720,0.0000026835,0.0000026926,0.0000026979,0.0000026993, -0.0000026978,0.0000026953,0.0000026935,0.0000026936,0.0000026947, -0.0000026923,0.0000026881,0.0000026866,0.0000026891,0.0000026935, -0.0000026971,0.0000026985,0.0000027005,0.0000027071,0.0000027160, -0.0000027237,0.0000027284,0.0000027296,0.0000027291,0.0000027282, -0.0000027247,0.0000027196,0.0000027149,0.0000027098,0.0000027076, -0.0000027077,0.0000027103,0.0000027118,0.0000027105,0.0000027008, -0.0000026744,0.0000026294,0.0000026005,0.0000026020,0.0000026298, -0.0000026793,0.0000027187,0.0000027167,0.0000027043,0.0000027044, -0.0000027414,0.0000028066,0.0000028299,0.0000028322,0.0000028280, -0.0000028274,0.0000028286,0.0000028311,0.0000028342,0.0000028384, -0.0000028450,0.0000028512,0.0000028560,0.0000028598,0.0000028639, -0.0000028668,0.0000028679,0.0000028668,0.0000028617,0.0000028534, -0.0000028454,0.0000028368,0.0000028275,0.0000028176,0.0000028061, -0.0000027983,0.0000027918,0.0000027912,0.0000027891,0.0000027831, -0.0000027804,0.0000027863,0.0000028002,0.0000028148,0.0000028243, -0.0000028296,0.0000028306,0.0000028248,0.0000028182,0.0000028184, -0.0000028165,0.0000028292,0.0000028360,0.0000028229,0.0000028387, -0.0000028517,0.0000028572,0.0000028659,0.0000028854,0.0000028875, -0.0000028844,0.0000028990,0.0000029010,0.0000028955,0.0000028946, -0.0000028954,0.0000028937,0.0000028905,0.0000028886,0.0000028868, -0.0000028823,0.0000028761,0.0000028690,0.0000028585,0.0000028467, -0.0000028400,0.0000028392,0.0000028374,0.0000028313,0.0000028246, -0.0000028229,0.0000028247,0.0000028258,0.0000028220,0.0000028166, -0.0000028147,0.0000028096,0.0000027949,0.0000027735,0.0000027532, -0.0000027398,0.0000027335,0.0000027325,0.0000027357,0.0000027436, -0.0000027546,0.0000027620,0.0000027633,0.0000027620,0.0000027619, -0.0000027650,0.0000027696,0.0000027735,0.0000027773,0.0000027827, -0.0000027894,0.0000027938,0.0000027950,0.0000027924,0.0000027875, -0.0000027837,0.0000027807,0.0000027752,0.0000027666,0.0000027563, -0.0000027436,0.0000027275,0.0000027078,0.0000026879,0.0000026708, -0.0000026559,0.0000026423,0.0000026310,0.0000026229,0.0000026162, -0.0000026089,0.0000026038,0.0000026029,0.0000026044,0.0000026066, -0.0000026089,0.0000026123,0.0000026172,0.0000026237,0.0000026313, -0.0000026378,0.0000026418,0.0000026432,0.0000026446,0.0000026473, -0.0000026514,0.0000026560,0.0000026611,0.0000026670,0.0000026725, -0.0000026765,0.0000026798,0.0000026827,0.0000026847,0.0000026856, -0.0000026863,0.0000026881,0.0000026927,0.0000026992,0.0000027063, -0.0000027125,0.0000027160,0.0000027166,0.0000027155,0.0000027131, -0.0000027120,0.0000027146,0.0000027200,0.0000027250,0.0000027287, -0.0000027313,0.0000027347,0.0000027406,0.0000027488,0.0000027581, -0.0000027666,0.0000027714,0.0000027725,0.0000027728,0.0000027747, -0.0000027788,0.0000027838,0.0000027877,0.0000027884,0.0000027846, -0.0000027753,0.0000027621,0.0000027482,0.0000027383,0.0000027352, -0.0000027361,0.0000027370,0.0000027370,0.0000027381,0.0000027416, -0.0000027464,0.0000027521,0.0000027587,0.0000027664,0.0000027743, -0.0000027798,0.0000027803,0.0000027768,0.0000027700,0.0000027632, -0.0000027579,0.0000027553,0.0000027556,0.0000027567,0.0000027584, -0.0000027612,0.0000027637,0.0000027668,0.0000027672,0.0000027636, -0.0000027537,0.0000027374,0.0000027175,0.0000026982,0.0000026828, -0.0000026738,0.0000026709,0.0000026732,0.0000026765,0.0000026800, -0.0000026811,0.0000026791,0.0000026751,0.0000026713,0.0000026692, -0.0000026693,0.0000026708,0.0000026735,0.0000026771,0.0000026803, -0.0000026821,0.0000026825,0.0000026827,0.0000026834,0.0000026843, -0.0000026844,0.0000026829,0.0000026802,0.0000026767,0.0000026729, -0.0000026700,0.0000026683,0.0000026664,0.0000026633,0.0000026582, -0.0000026519,0.0000026460,0.0000026411,0.0000026372,0.0000026332, -0.0000026298,0.0000026286,0.0000026257,0.0000026226,0.0000026175, -0.0000026120,0.0000026080,0.0000026070,0.0000026097,0.0000026156, -0.0000026228,0.0000026310,0.0000026387,0.0000026441,0.0000026485, -0.0000026532,0.0000026573,0.0000026603,0.0000026624,0.0000026633, -0.0000026626,0.0000026605,0.0000026586,0.0000026576,0.0000026574, -0.0000026576,0.0000026564,0.0000026522,0.0000026447,0.0000026335, -0.0000026199,0.0000026069,0.0000025944,0.0000025825,0.0000025714, -0.0000025657,0.0000025657,0.0000025677,0.0000025678,0.0000025647, -0.0000025589,0.0000025519,0.0000025468,0.0000025469,0.0000025509, -0.0000025542,0.0000025551,0.0000025567,0.0000025615,0.0000025701, -0.0000025802,0.0000025901,0.0000025965,0.0000025992,0.0000025978, -0.0000025916,0.0000025826,0.0000025748,0.0000025693,0.0000025649, -0.0000025646,0.0000025705,0.0000025790,0.0000025842,0.0000025856, -0.0000025873,0.0000025904,0.0000025899,0.0000025866,0.0000025959, -0.0000026326,0.0000026653,0.0000026819,0.0000027152,0.0000027549, -0.0000027640,0.0000027551,0.0000027509,0.0000027521,0.0000027558, -0.0000027604,0.0000027668,0.0000027752,0.0000027714,0.0000027473, -0.0000027285,0.0000027296,0.0000027377,0.0000027368,0.0000027228, -0.0000027011,0.0000026840,0.0000026806,0.0000026891,0.0000027009, -0.0000027051,0.0000027049,0.0000027072,0.0000027091,0.0000027049, -0.0000026987,0.0000027028,0.0000027171,0.0000027313,0.0000027394, -0.0000027413,0.0000027392,0.0000027325,0.0000027249,0.0000027198, -0.0000027187,0.0000027200,0.0000027255,0.0000027319,0.0000027381, -0.0000027421,0.0000027451,0.0000027469,0.0000027454,0.0000027409, -0.0000027327,0.0000027235,0.0000027160,0.0000027126,0.0000027101, -0.0000027085,0.0000027070,0.0000027053,0.0000027036,0.0000027019, -0.0000027004,0.0000027008,0.0000027007,0.0000026966,0.0000026933, -0.0000026931,0.0000026953,0.0000026943,0.0000026851,0.0000026732, -0.0000026679,0.0000026668,0.0000026641,0.0000026621,0.0000026634, -0.0000026667,0.0000026686,0.0000026664,0.0000026618,0.0000026587, -0.0000026557,0.0000026499,0.0000026420,0.0000026335,0.0000026261, -0.0000026220,0.0000026218,0.0000026233,0.0000026232,0.0000026190, -0.0000026134,0.0000026115,0.0000026140,0.0000026191,0.0000026216, -0.0000026216,0.0000026216,0.0000026191,0.0000026067,0.0000025933, -0.0000025895,0.0000025848,0.0000025649,0.0000025376,0.0000025171, -0.0000025033,0.0000024924,0.0000024827,0.0000024746,0.0000024688, -0.0000024658,0.0000024654,0.0000024659,0.0000024669,0.0000024688, -0.0000024701,0.0000024690,0.0000024648,0.0000024608,0.0000024602, -0.0000024640,0.0000024732,0.0000024842,0.0000024907,0.0000024889, -0.0000024826,0.0000024768,0.0000024753,0.0000024785,0.0000024894, -0.0000025123,0.0000025495,0.0000025944,0.0000026234,0.0000026338, -0.0000026400,0.0000026489,0.0000026607,0.0000026708,0.0000026741, -0.0000026658,0.0000026498,0.0000026340,0.0000026071,0.0000025800, -0.0000025802,0.0000025688,0.0000025417,0.0000025400,0.0000025554, -0.0000026106,0.0000026661,0.0000027072,0.0000027398,0.0000027680, -0.0000027757,0.0000027776,0.0000027738,0.0000027730,0.0000027718, -0.0000027703,0.0000027592,0.0000027528,0.0000027540,0.0000027576, -0.0000027550,0.0000027491,0.0000027507,0.0000027579,0.0000027565, -0.0000027596,0.0000027607,0.0000027582,0.0000027465,0.0000027324, -0.0000027338,0.0000027409,0.0000027432,0.0000027417,0.0000027387, -0.0000027370,0.0000027374,0.0000027368,0.0000027349,0.0000027342, -0.0000027339,0.0000027361,0.0000027360,0.0000027347,0.0000027322, -0.0000027287,0.0000027240,0.0000027193,0.0000027154,0.0000027109, -0.0000027048,0.0000027004,0.0000026969,0.0000026920,0.0000026856, -0.0000026791,0.0000026739,0.0000026716,0.0000026691,0.0000026634, -0.0000026555,0.0000026489,0.0000026465,0.0000026461,0.0000026468, -0.0000026496,0.0000026522,0.0000026555,0.0000026594,0.0000026642, -0.0000026695,0.0000026732,0.0000026752,0.0000026742,0.0000026708, -0.0000026667,0.0000026654,0.0000026658,0.0000026646,0.0000026595, -0.0000026493,0.0000026320,0.0000026109,0.0000025964,0.0000025912, -0.0000025922,0.0000025944,0.0000025954,0.0000025922,0.0000025842, -0.0000025738,0.0000025631,0.0000025534,0.0000025455,0.0000025393, -0.0000025339,0.0000025297,0.0000025279,0.0000025270,0.0000025254, -0.0000025248,0.0000025248,0.0000025258,0.0000025264,0.0000025264, -0.0000025265,0.0000025258,0.0000025247,0.0000025230,0.0000025221, -0.0000025238,0.0000025258,0.0000025284,0.0000025336,0.0000025390, -0.0000025434,0.0000025513,0.0000025621,0.0000025641,0.0000025553, -0.0000025627,0.0000025833,0.0000025827,0.0000025761,0.0000025728, -0.0000025703,0.0000025702,0.0000025741,0.0000025772,0.0000025786, -0.0000025792,0.0000025827,0.0000025875,0.0000025878,0.0000025792, -0.0000025521,0.0000025225,0.0000025109,0.0000025114,0.0000025120, -0.0000025051,0.0000024936,0.0000024817,0.0000024728,0.0000024818, -0.0000025047,0.0000025215,0.0000025295,0.0000025324,0.0000025311, -0.0000025435,0.0000025459,0.0000025232,0.0000025156,0.0000025242, -0.0000025372,0.0000025423,0.0000025510,0.0000025883,0.0000026228, -0.0000026411,0.0000026399,0.0000026315,0.0000026197,0.0000026062, -0.0000025978,0.0000025996,0.0000026007,0.0000025970,0.0000025919, -0.0000025872,0.0000025864,0.0000025899,0.0000025945,0.0000025981, -0.0000026020,0.0000026071,0.0000026164,0.0000026247,0.0000026274, -0.0000026274,0.0000026272,0.0000026260,0.0000026235,0.0000026229, -0.0000026226,0.0000026223,0.0000026235,0.0000026253,0.0000026279, -0.0000026324,0.0000026363,0.0000026428,0.0000026572,0.0000026736, -0.0000026838,0.0000026903,0.0000026918,0.0000026894,0.0000026853, -0.0000026816,0.0000026836,0.0000026945,0.0000027062,0.0000027145, -0.0000027194,0.0000027207,0.0000027209,0.0000027194,0.0000027148, -0.0000027078,0.0000027008,0.0000026939,0.0000026878,0.0000026861, -0.0000026875,0.0000026914,0.0000026962,0.0000027002,0.0000027048, -0.0000027097,0.0000027133,0.0000027163,0.0000027193,0.0000027213, -0.0000027216,0.0000027219,0.0000027228,0.0000027233,0.0000027221, -0.0000027185,0.0000027136,0.0000027105,0.0000027111,0.0000027134, -0.0000027143,0.0000027148,0.0000027182,0.0000027201,0.0000027203, -0.0000027193,0.0000027200,0.0000027273,0.0000027366,0.0000027460, -0.0000027578,0.0000027701,0.0000027776,0.0000027781,0.0000027742, -0.0000027712,0.0000027697,0.0000027689,0.0000027709,0.0000027780, -0.0000027863,0.0000027930,0.0000028006,0.0000028090,0.0000028158, -0.0000028206,0.0000028228,0.0000028214,0.0000028152,0.0000028067, -0.0000028007,0.0000027985,0.0000027988,0.0000028013,0.0000028028, -0.0000028012,0.0000028004,0.0000028002,0.0000028027,0.0000028074, -0.0000028122,0.0000028147,0.0000028161,0.0000028170,0.0000028167, -0.0000028130,0.0000028063,0.0000027978,0.0000027885,0.0000027791, -0.0000027702,0.0000027622,0.0000027559,0.0000027511,0.0000027472, -0.0000027438,0.0000027416,0.0000027412,0.0000027425,0.0000027454, -0.0000027490,0.0000027526,0.0000027550,0.0000027556,0.0000027556, -0.0000027558,0.0000027567,0.0000027591,0.0000027641,0.0000027715, -0.0000027795,0.0000027863,0.0000027915,0.0000027946,0.0000027952, -0.0000027947,0.0000027969,0.0000028037,0.0000028108,0.0000028146, -0.0000028147,0.0000028121,0.0000028082,0.0000028053,0.0000028063, -0.0000028129,0.0000028220,0.0000028296,0.0000028364,0.0000028413, -0.0000028430,0.0000028428,0.0000028414,0.0000028386,0.0000028334, -0.0000028260,0.0000028181,0.0000028111,0.0000028048,0.0000027994, -0.0000027951,0.0000027930,0.0000027942,0.0000028014,0.0000028106, -0.0000028140,0.0000028120,0.0000028067,0.0000028045,0.0000028049, -0.0000028035,0.0000028001,0.0000027986,0.0000027985,0.0000027977, -0.0000027937,0.0000027881,0.0000027841,0.0000027841,0.0000027883, -0.0000027930,0.0000027952,0.0000027995,0.0000028080,0.0000028149, -0.0000028161,0.0000028131,0.0000028086,0.0000028050,0.0000028028, -0.0000028021,0.0000028012,0.0000027957,0.0000027870,0.0000027838, -0.0000027867,0.0000027916,0.0000027958,0.0000028045,0.0000028164, -0.0000028244,0.0000028246,0.0000028193,0.0000028130,0.0000028090, -0.0000028051,0.0000028002,0.0000027946,0.0000027893,0.0000027856, -0.0000027812,0.0000027756,0.0000027697,0.0000027654,0.0000027636, -0.0000027635,0.0000027632,0.0000027628,0.0000027612,0.0000027589, -0.0000027564,0.0000027545,0.0000027542,0.0000027550,0.0000027575, -0.0000027626,0.0000027662,0.0000027673,0.0000027674,0.0000027660, -0.0000027636,0.0000027621,0.0000027633,0.0000027661,0.0000027693, -0.0000027726,0.0000027754,0.0000027763,0.0000027760,0.0000027747, -0.0000027726,0.0000027709,0.0000027712,0.0000027729,0.0000027746, -0.0000027737,0.0000027707,0.0000027662,0.0000027641,0.0000027626, -0.0000027604,0.0000027578,0.0000027541,0.0000027411,0.0000027110, -0.0000026723,0.0000026465,0.0000026371,0.0000026368,0.0000026429, -0.0000026496,0.0000026530,0.0000026590,0.0000026702,0.0000026819, -0.0000026910,0.0000026960,0.0000026974,0.0000026948,0.0000026905, -0.0000026847,0.0000026815,0.0000026800,0.0000026778,0.0000026751, -0.0000026746,0.0000026776,0.0000026829,0.0000026886,0.0000026920, -0.0000026939,0.0000026985,0.0000027047,0.0000027112,0.0000027171, -0.0000027221,0.0000027251,0.0000027252,0.0000027218,0.0000027183, -0.0000027152,0.0000027111,0.0000027074,0.0000027049,0.0000027047, -0.0000027073,0.0000027100,0.0000027060,0.0000026934,0.0000026630, -0.0000026207,0.0000026003,0.0000026092,0.0000026421,0.0000026897, -0.0000027129,0.0000027049,0.0000026984,0.0000027159,0.0000027779, -0.0000028258,0.0000028335,0.0000028307,0.0000028283,0.0000028313, -0.0000028344,0.0000028357,0.0000028373,0.0000028403,0.0000028435, -0.0000028461,0.0000028478,0.0000028499,0.0000028522,0.0000028539, -0.0000028556,0.0000028551,0.0000028517,0.0000028469,0.0000028401, -0.0000028325,0.0000028229,0.0000028116,0.0000028032,0.0000027942, -0.0000027908,0.0000027910,0.0000027887,0.0000027827,0.0000027817, -0.0000027892,0.0000028030,0.0000028164,0.0000028257,0.0000028306, -0.0000028292,0.0000028205,0.0000028158,0.0000028152,0.0000028182, -0.0000028350,0.0000028251,0.0000028281,0.0000028448,0.0000028531, -0.0000028604,0.0000028744,0.0000028845,0.0000028810,0.0000028911, -0.0000028997,0.0000028940,0.0000028903,0.0000028910,0.0000028914, -0.0000028902,0.0000028880,0.0000028854,0.0000028804,0.0000028739, -0.0000028673,0.0000028590,0.0000028499,0.0000028437,0.0000028401, -0.0000028343,0.0000028268,0.0000028233,0.0000028239,0.0000028249, -0.0000028233,0.0000028178,0.0000028140,0.0000028099,0.0000027972, -0.0000027759,0.0000027537,0.0000027365,0.0000027264,0.0000027227, -0.0000027237,0.0000027297,0.0000027408,0.0000027528,0.0000027597, -0.0000027603,0.0000027593,0.0000027604,0.0000027658,0.0000027719, -0.0000027756,0.0000027795,0.0000027854,0.0000027902,0.0000027926, -0.0000027921,0.0000027887,0.0000027838,0.0000027794,0.0000027735, -0.0000027659,0.0000027579,0.0000027484,0.0000027345,0.0000027168, -0.0000026975,0.0000026794,0.0000026636,0.0000026495,0.0000026364, -0.0000026248,0.0000026157,0.0000026094,0.0000026044,0.0000026008, -0.0000025994,0.0000026001,0.0000026012,0.0000026015,0.0000026017, -0.0000026023,0.0000026046,0.0000026105,0.0000026202,0.0000026311, -0.0000026394,0.0000026447,0.0000026487,0.0000026538,0.0000026591, -0.0000026633,0.0000026668,0.0000026704,0.0000026738,0.0000026769, -0.0000026793,0.0000026801,0.0000026793,0.0000026774,0.0000026760, -0.0000026758,0.0000026769,0.0000026805,0.0000026890,0.0000026997, -0.0000027083,0.0000027135,0.0000027149,0.0000027130,0.0000027095, -0.0000027081,0.0000027110,0.0000027189,0.0000027267,0.0000027308, -0.0000027308,0.0000027299,0.0000027313,0.0000027385,0.0000027502, -0.0000027609,0.0000027661,0.0000027663,0.0000027657,0.0000027677, -0.0000027745,0.0000027839,0.0000027918,0.0000027942,0.0000027916, -0.0000027818,0.0000027685,0.0000027565,0.0000027491,0.0000027457, -0.0000027433,0.0000027401,0.0000027380,0.0000027381,0.0000027402, -0.0000027449,0.0000027520,0.0000027595,0.0000027654,0.0000027699, -0.0000027742,0.0000027767,0.0000027769,0.0000027744,0.0000027693, -0.0000027641,0.0000027601,0.0000027572,0.0000027559,0.0000027570, -0.0000027602,0.0000027650,0.0000027686,0.0000027707,0.0000027677, -0.0000027576,0.0000027417,0.0000027240,0.0000027084,0.0000026965, -0.0000026877,0.0000026823,0.0000026806,0.0000026821,0.0000026841, -0.0000026850,0.0000026838,0.0000026808,0.0000026771,0.0000026745, -0.0000026740,0.0000026762,0.0000026808,0.0000026856,0.0000026886, -0.0000026891,0.0000026887,0.0000026883,0.0000026876,0.0000026864, -0.0000026840,0.0000026807,0.0000026772,0.0000026750,0.0000026746, -0.0000026745,0.0000026736,0.0000026716,0.0000026691,0.0000026665, -0.0000026647,0.0000026630,0.0000026593,0.0000026536,0.0000026465, -0.0000026391,0.0000026324,0.0000026258,0.0000026188,0.0000026119, -0.0000026079,0.0000026051,0.0000026053,0.0000026085,0.0000026133, -0.0000026188,0.0000026239,0.0000026272,0.0000026294,0.0000026317, -0.0000026338,0.0000026363,0.0000026390,0.0000026402,0.0000026392, -0.0000026362,0.0000026333,0.0000026316,0.0000026310,0.0000026312, -0.0000026315,0.0000026305,0.0000026268,0.0000026196,0.0000026093, -0.0000025999,0.0000025916,0.0000025806,0.0000025703,0.0000025638, -0.0000025622,0.0000025639,0.0000025637,0.0000025594,0.0000025516, -0.0000025432,0.0000025368,0.0000025354,0.0000025394,0.0000025462, -0.0000025510,0.0000025547,0.0000025603,0.0000025660,0.0000025728, -0.0000025760,0.0000025792,0.0000025815,0.0000025829,0.0000025825, -0.0000025785,0.0000025705,0.0000025611,0.0000025521,0.0000025460, -0.0000025462,0.0000025536,0.0000025648,0.0000025739,0.0000025791, -0.0000025833,0.0000025858,0.0000025860,0.0000025943,0.0000026293, -0.0000026639,0.0000026832,0.0000027172,0.0000027542,0.0000027618, -0.0000027552,0.0000027531,0.0000027550,0.0000027583,0.0000027611, -0.0000027665,0.0000027722,0.0000027623,0.0000027386,0.0000027265, -0.0000027308,0.0000027385,0.0000027372,0.0000027240,0.0000027052, -0.0000026881,0.0000026797,0.0000026811,0.0000026907,0.0000027002, -0.0000027024,0.0000027015,0.0000027037,0.0000027056,0.0000027005, -0.0000026937,0.0000026983,0.0000027158,0.0000027343,0.0000027428, -0.0000027442,0.0000027402,0.0000027318,0.0000027246,0.0000027217, -0.0000027195,0.0000027194,0.0000027219,0.0000027265,0.0000027309, -0.0000027340,0.0000027354,0.0000027339,0.0000027301,0.0000027249, -0.0000027193,0.0000027155,0.0000027145,0.0000027139,0.0000027127, -0.0000027107,0.0000027084,0.0000027065,0.0000027050,0.0000027034, -0.0000027034,0.0000027041,0.0000027013,0.0000026995,0.0000026989, -0.0000026964,0.0000026907,0.0000026792,0.0000026686,0.0000026660, -0.0000026659,0.0000026635,0.0000026620,0.0000026631,0.0000026658, -0.0000026679,0.0000026666,0.0000026625,0.0000026592,0.0000026560, -0.0000026501,0.0000026419,0.0000026328,0.0000026244,0.0000026195, -0.0000026188,0.0000026201,0.0000026206,0.0000026178,0.0000026128, -0.0000026097,0.0000026103,0.0000026138,0.0000026175,0.0000026186, -0.0000026189,0.0000026193,0.0000026145,0.0000026005,0.0000025905, -0.0000025883,0.0000025774,0.0000025518,0.0000025280,0.0000025141, -0.0000025037,0.0000024923,0.0000024806,0.0000024701,0.0000024621, -0.0000024571,0.0000024548,0.0000024541,0.0000024543,0.0000024552, -0.0000024554,0.0000024538,0.0000024495,0.0000024442,0.0000024424, -0.0000024447,0.0000024527,0.0000024642,0.0000024754,0.0000024819, -0.0000024815,0.0000024767,0.0000024709,0.0000024670,0.0000024692, -0.0000024805,0.0000025094,0.0000025585,0.0000026078,0.0000026295, -0.0000026367,0.0000026444,0.0000026559,0.0000026669,0.0000026725, -0.0000026643,0.0000026485,0.0000026316,0.0000026112,0.0000025833, -0.0000025739,0.0000025729,0.0000025535,0.0000025330,0.0000025387, -0.0000025683,0.0000026334,0.0000026861,0.0000027225,0.0000027600, -0.0000027758,0.0000027775,0.0000027742,0.0000027746,0.0000027730, -0.0000027701,0.0000027577,0.0000027528,0.0000027528,0.0000027547, -0.0000027535,0.0000027502,0.0000027551,0.0000027580,0.0000027541, -0.0000027567,0.0000027574,0.0000027553,0.0000027440,0.0000027318, -0.0000027338,0.0000027418,0.0000027446,0.0000027441,0.0000027417, -0.0000027396,0.0000027383,0.0000027361,0.0000027331,0.0000027322, -0.0000027336,0.0000027376,0.0000027386,0.0000027374,0.0000027348, -0.0000027311,0.0000027255,0.0000027184,0.0000027118,0.0000027070, -0.0000027019,0.0000026960,0.0000026900,0.0000026847,0.0000026800, -0.0000026761,0.0000026731,0.0000026720,0.0000026716,0.0000026687, -0.0000026622,0.0000026538,0.0000026477,0.0000026451,0.0000026445, -0.0000026469,0.0000026504,0.0000026547,0.0000026581,0.0000026613, -0.0000026655,0.0000026700,0.0000026726,0.0000026723,0.0000026691, -0.0000026647,0.0000026625,0.0000026617,0.0000026591,0.0000026513, -0.0000026352,0.0000026136,0.0000025960,0.0000025900,0.0000025912, -0.0000025928,0.0000025927,0.0000025879,0.0000025792,0.0000025682, -0.0000025578,0.0000025486,0.0000025408,0.0000025352,0.0000025311, -0.0000025285,0.0000025288,0.0000025299,0.0000025307,0.0000025301, -0.0000025289,0.0000025286,0.0000025292,0.0000025303,0.0000025315, -0.0000025326,0.0000025330,0.0000025333,0.0000025328,0.0000025326, -0.0000025345,0.0000025366,0.0000025386,0.0000025411,0.0000025421, -0.0000025425,0.0000025458,0.0000025548,0.0000025638,0.0000025587, -0.0000025529,0.0000025704,0.0000025796,0.0000025742,0.0000025702, -0.0000025712,0.0000025747,0.0000025781,0.0000025825,0.0000025849, -0.0000025822,0.0000025782,0.0000025777,0.0000025805,0.0000025809, -0.0000025765,0.0000025606,0.0000025345,0.0000025156,0.0000025109, -0.0000025115,0.0000025074,0.0000024973,0.0000024846,0.0000024736, -0.0000024777,0.0000025007,0.0000025193,0.0000025287,0.0000025329, -0.0000025305,0.0000025379,0.0000025471,0.0000025283,0.0000025143, -0.0000025183,0.0000025290,0.0000025379,0.0000025399,0.0000025673, -0.0000026105,0.0000026364,0.0000026411,0.0000026354,0.0000026249, -0.0000026125,0.0000026019,0.0000026004,0.0000026017,0.0000025987, -0.0000025917,0.0000025842,0.0000025809,0.0000025842,0.0000025906, -0.0000025950,0.0000025978,0.0000026012,0.0000026096,0.0000026189, -0.0000026226,0.0000026228,0.0000026223,0.0000026213,0.0000026205, -0.0000026203,0.0000026196,0.0000026189,0.0000026195,0.0000026200, -0.0000026227,0.0000026304,0.0000026377,0.0000026459,0.0000026611, -0.0000026766,0.0000026841,0.0000026873,0.0000026868,0.0000026830, -0.0000026769,0.0000026712,0.0000026713,0.0000026782,0.0000026853, -0.0000026911,0.0000026952,0.0000026962,0.0000026953,0.0000026931, -0.0000026892,0.0000026852,0.0000026839,0.0000026826,0.0000026823, -0.0000026841,0.0000026872,0.0000026922,0.0000026966,0.0000026991, -0.0000027015,0.0000027047,0.0000027077,0.0000027095,0.0000027113, -0.0000027138,0.0000027149,0.0000027151,0.0000027161,0.0000027171, -0.0000027161,0.0000027119,0.0000027079,0.0000027054,0.0000027072, -0.0000027115,0.0000027138,0.0000027141,0.0000027146,0.0000027133, -0.0000027105,0.0000027075,0.0000027075,0.0000027149,0.0000027249, -0.0000027359,0.0000027486,0.0000027616,0.0000027714,0.0000027743, -0.0000027726,0.0000027706,0.0000027698,0.0000027683,0.0000027686, -0.0000027724,0.0000027806,0.0000027892,0.0000027978,0.0000028061, -0.0000028126,0.0000028167,0.0000028182,0.0000028165,0.0000028095, -0.0000027994,0.0000027920,0.0000027905,0.0000027947,0.0000027998, -0.0000028003,0.0000027969,0.0000027964,0.0000027981,0.0000028031, -0.0000028088,0.0000028131,0.0000028141,0.0000028132,0.0000028121, -0.0000028105,0.0000028064,0.0000027995,0.0000027906,0.0000027806, -0.0000027704,0.0000027608,0.0000027525,0.0000027462,0.0000027418, -0.0000027385,0.0000027356,0.0000027338,0.0000027337,0.0000027357, -0.0000027391,0.0000027427,0.0000027465,0.0000027490,0.0000027490, -0.0000027477,0.0000027460,0.0000027443,0.0000027433,0.0000027448, -0.0000027499,0.0000027574,0.0000027658,0.0000027738,0.0000027812, -0.0000027858,0.0000027868,0.0000027879,0.0000027934,0.0000028016, -0.0000028081,0.0000028109,0.0000028105,0.0000028076,0.0000028043, -0.0000028035,0.0000028068,0.0000028144,0.0000028209,0.0000028267, -0.0000028331,0.0000028387,0.0000028425,0.0000028437,0.0000028435, -0.0000028441,0.0000028442,0.0000028416,0.0000028340,0.0000028229, -0.0000028114,0.0000028009,0.0000027937,0.0000027919,0.0000027962, -0.0000028061,0.0000028126,0.0000028122,0.0000028078,0.0000028047, -0.0000028054,0.0000028055,0.0000028014,0.0000027954,0.0000027926, -0.0000027924,0.0000027903,0.0000027873,0.0000027846,0.0000027821, -0.0000027811,0.0000027858,0.0000027948,0.0000028010,0.0000028045, -0.0000028102,0.0000028155,0.0000028159,0.0000028118,0.0000028067, -0.0000028037,0.0000028018,0.0000027998,0.0000027962,0.0000027884, -0.0000027806,0.0000027797,0.0000027833,0.0000027865,0.0000027937, -0.0000028072,0.0000028187,0.0000028216,0.0000028189,0.0000028137, -0.0000028117,0.0000028102,0.0000028060,0.0000028001,0.0000027946, -0.0000027904,0.0000027861,0.0000027803,0.0000027737,0.0000027675, -0.0000027632,0.0000027602,0.0000027581,0.0000027570,0.0000027559, -0.0000027545,0.0000027534,0.0000027530,0.0000027533,0.0000027537, -0.0000027551,0.0000027585,0.0000027621,0.0000027632,0.0000027628, -0.0000027616,0.0000027591,0.0000027577,0.0000027585,0.0000027618, -0.0000027661,0.0000027704,0.0000027751,0.0000027781,0.0000027792, -0.0000027794,0.0000027778,0.0000027755,0.0000027738,0.0000027744, -0.0000027766,0.0000027783,0.0000027774,0.0000027751,0.0000027725, -0.0000027712,0.0000027683,0.0000027642,0.0000027597,0.0000027505, -0.0000027274,0.0000026928,0.0000026611,0.0000026438,0.0000026377, -0.0000026377,0.0000026436,0.0000026489,0.0000026514,0.0000026575, -0.0000026694,0.0000026815,0.0000026907,0.0000026956,0.0000026973, -0.0000026951,0.0000026897,0.0000026830,0.0000026772,0.0000026729, -0.0000026673,0.0000026634,0.0000026630,0.0000026659,0.0000026716, -0.0000026791,0.0000026855,0.0000026898,0.0000026941,0.0000026978, -0.0000027008,0.0000027050,0.0000027118,0.0000027186,0.0000027215, -0.0000027195,0.0000027166,0.0000027144,0.0000027110,0.0000027074, -0.0000027041,0.0000027018,0.0000027022,0.0000027056,0.0000027052, -0.0000026989,0.0000026851,0.0000026559,0.0000026170,0.0000026064, -0.0000026181,0.0000026530,0.0000026916,0.0000027049,0.0000026978, -0.0000027020,0.0000027425,0.0000028090,0.0000028332,0.0000028331, -0.0000028288,0.0000028313,0.0000028360,0.0000028384,0.0000028387, -0.0000028394,0.0000028387,0.0000028381,0.0000028371,0.0000028361, -0.0000028365,0.0000028377,0.0000028403,0.0000028422,0.0000028425, -0.0000028420,0.0000028390,0.0000028341,0.0000028265,0.0000028157, -0.0000028073,0.0000027987,0.0000027923,0.0000027920,0.0000027922, -0.0000027884,0.0000027829,0.0000027831,0.0000027915,0.0000028042, -0.0000028177,0.0000028275,0.0000028308,0.0000028260,0.0000028159, -0.0000028144,0.0000028141,0.0000028260,0.0000028299,0.0000028206, -0.0000028351,0.0000028473,0.0000028556,0.0000028645,0.0000028775, -0.0000028797,0.0000028823,0.0000028959,0.0000028951,0.0000028883, -0.0000028857,0.0000028861,0.0000028863,0.0000028842,0.0000028812, -0.0000028765,0.0000028699,0.0000028637,0.0000028579,0.0000028514, -0.0000028448,0.0000028374,0.0000028294,0.0000028242,0.0000028235, -0.0000028244,0.0000028237,0.0000028199,0.0000028150,0.0000028111, -0.0000027998,0.0000027793,0.0000027567,0.0000027373,0.0000027234, -0.0000027152,0.0000027118,0.0000027146,0.0000027253,0.0000027399, -0.0000027528,0.0000027585,0.0000027585,0.0000027581,0.0000027598, -0.0000027653,0.0000027719,0.0000027761,0.0000027802,0.0000027855, -0.0000027892,0.0000027897,0.0000027875,0.0000027831,0.0000027786, -0.0000027719,0.0000027615,0.0000027516,0.0000027430,0.0000027312, -0.0000027157,0.0000026994,0.0000026834,0.0000026682,0.0000026541, -0.0000026408,0.0000026285,0.0000026186,0.0000026112,0.0000026064, -0.0000026029,0.0000026004,0.0000026002,0.0000026029,0.0000026076, -0.0000026112,0.0000026125,0.0000026116,0.0000026099,0.0000026105, -0.0000026167,0.0000026276,0.0000026402,0.0000026520,0.0000026606, -0.0000026669,0.0000026730,0.0000026789,0.0000026830,0.0000026853, -0.0000026873,0.0000026901,0.0000026934,0.0000026964,0.0000026976, -0.0000026964,0.0000026920,0.0000026861,0.0000026806,0.0000026766, -0.0000026743,0.0000026748,0.0000026798,0.0000026897,0.0000027004, -0.0000027079,0.0000027118,0.0000027112,0.0000027075,0.0000027045, -0.0000027062,0.0000027142,0.0000027246,0.0000027315,0.0000027324, -0.0000027291,0.0000027272,0.0000027323,0.0000027441,0.0000027554, -0.0000027603,0.0000027601,0.0000027590,0.0000027605,0.0000027683, -0.0000027805,0.0000027920,0.0000027973,0.0000027954,0.0000027875, -0.0000027767,0.0000027670,0.0000027611,0.0000027573,0.0000027531, -0.0000027478,0.0000027431,0.0000027404,0.0000027400,0.0000027436, -0.0000027510,0.0000027588,0.0000027639,0.0000027662,0.0000027685, -0.0000027727,0.0000027767,0.0000027776,0.0000027748,0.0000027696, -0.0000027636,0.0000027581,0.0000027553,0.0000027561,0.0000027602, -0.0000027657,0.0000027703,0.0000027710,0.0000027672,0.0000027575, -0.0000027450,0.0000027330,0.0000027220,0.0000027119,0.0000027036, -0.0000026978,0.0000026939,0.0000026912,0.0000026897,0.0000026883, -0.0000026858,0.0000026825,0.0000026794,0.0000026775,0.0000026782, -0.0000026818,0.0000026869,0.0000026913,0.0000026935,0.0000026936, -0.0000026931,0.0000026914,0.0000026891,0.0000026861,0.0000026824, -0.0000026794,0.0000026787,0.0000026797,0.0000026802,0.0000026785, -0.0000026760,0.0000026746,0.0000026751,0.0000026775,0.0000026803, -0.0000026811,0.0000026786,0.0000026731,0.0000026658,0.0000026572, -0.0000026475,0.0000026371,0.0000026262,0.0000026163,0.0000026090, -0.0000026050,0.0000026065,0.0000026078,0.0000026111,0.0000026134, -0.0000026150,0.0000026167,0.0000026190,0.0000026219,0.0000026260, -0.0000026310,0.0000026349,0.0000026368,0.0000026360,0.0000026347, -0.0000026337,0.0000026328,0.0000026327,0.0000026332,0.0000026333, -0.0000026316,0.0000026269,0.0000026202,0.0000026138,0.0000026090, -0.0000026030,0.0000025967,0.0000025909,0.0000025866,0.0000025842, -0.0000025831,0.0000025789,0.0000025712,0.0000025625,0.0000025568, -0.0000025560,0.0000025604,0.0000025677,0.0000025737,0.0000025787, -0.0000025834,0.0000025867,0.0000025868,0.0000025826,0.0000025760, -0.0000025687,0.0000025669,0.0000025685,0.0000025696,0.0000025669, -0.0000025590,0.0000025485,0.0000025386,0.0000025320,0.0000025317, -0.0000025407,0.0000025559,0.0000025689,0.0000025769,0.0000025818, -0.0000025836,0.0000025923,0.0000026263,0.0000026637,0.0000026870, -0.0000027208,0.0000027539,0.0000027598,0.0000027549,0.0000027543, -0.0000027565,0.0000027588,0.0000027606,0.0000027655,0.0000027673, -0.0000027529,0.0000027310,0.0000027246,0.0000027297,0.0000027376, -0.0000027363,0.0000027240,0.0000027093,0.0000026953,0.0000026849, -0.0000026815,0.0000026848,0.0000026930,0.0000026998,0.0000027000, -0.0000026982,0.0000027007,0.0000027022,0.0000026956,0.0000026905, -0.0000026985,0.0000027211,0.0000027398,0.0000027458,0.0000027455, -0.0000027394,0.0000027310,0.0000027259,0.0000027225,0.0000027202, -0.0000027194,0.0000027211,0.0000027229,0.0000027241,0.0000027248, -0.0000027251,0.0000027239,0.0000027233,0.0000027212,0.0000027202, -0.0000027203,0.0000027203,0.0000027186,0.0000027151,0.0000027111, -0.0000027080,0.0000027069,0.0000027062,0.0000027060,0.0000027077, -0.0000027066,0.0000027057,0.0000027022,0.0000026946,0.0000026845, -0.0000026739,0.0000026665,0.0000026652,0.0000026649,0.0000026630, -0.0000026622,0.0000026633,0.0000026657,0.0000026673,0.0000026664, -0.0000026629,0.0000026598,0.0000026567,0.0000026514,0.0000026437, -0.0000026344,0.0000026249,0.0000026189,0.0000026179,0.0000026191, -0.0000026195,0.0000026174,0.0000026134,0.0000026101,0.0000026092, -0.0000026104,0.0000026128,0.0000026144,0.0000026149,0.0000026162, -0.0000026168,0.0000026092,0.0000025955,0.0000025888,0.0000025857, -0.0000025686,0.0000025417,0.0000025236,0.0000025147,0.0000025049, -0.0000024915,0.0000024772,0.0000024642,0.0000024546,0.0000024489, -0.0000024458,0.0000024446,0.0000024445,0.0000024445,0.0000024445, -0.0000024434,0.0000024403,0.0000024355,0.0000024306,0.0000024296, -0.0000024332,0.0000024429,0.0000024555,0.0000024665,0.0000024722, -0.0000024718,0.0000024681,0.0000024644,0.0000024643,0.0000024685, -0.0000024848,0.0000025241,0.0000025832,0.0000026211,0.0000026324, -0.0000026397,0.0000026503,0.0000026615,0.0000026689,0.0000026627, -0.0000026473,0.0000026302,0.0000026134,0.0000025918,0.0000025704, -0.0000025692,0.0000025658,0.0000025412,0.0000025322,0.0000025444, -0.0000025969,0.0000026587,0.0000027072,0.0000027506,0.0000027751, -0.0000027778,0.0000027749,0.0000027755,0.0000027734,0.0000027691, -0.0000027585,0.0000027528,0.0000027510,0.0000027525,0.0000027534, -0.0000027527,0.0000027584,0.0000027572,0.0000027517,0.0000027534, -0.0000027544,0.0000027528,0.0000027426,0.0000027316,0.0000027344, -0.0000027425,0.0000027461,0.0000027464,0.0000027452,0.0000027428, -0.0000027386,0.0000027342,0.0000027311,0.0000027305,0.0000027325, -0.0000027373,0.0000027392,0.0000027390,0.0000027369,0.0000027326, -0.0000027271,0.0000027193,0.0000027104,0.0000027042,0.0000026995, -0.0000026943,0.0000026869,0.0000026787,0.0000026735,0.0000026716, -0.0000026714,0.0000026718,0.0000026723,0.0000026713,0.0000026684, -0.0000026627,0.0000026553,0.0000026486,0.0000026445,0.0000026452, -0.0000026485,0.0000026539,0.0000026579,0.0000026607,0.0000026637, -0.0000026679,0.0000026706,0.0000026704,0.0000026670,0.0000026623, -0.0000026598,0.0000026583,0.0000026537,0.0000026405,0.0000026180, -0.0000025976,0.0000025891,0.0000025899,0.0000025915,0.0000025898, -0.0000025834,0.0000025737,0.0000025636,0.0000025543,0.0000025468, -0.0000025397,0.0000025329,0.0000025284,0.0000025265,0.0000025272, -0.0000025315,0.0000025368,0.0000025404,0.0000025412,0.0000025405, -0.0000025396,0.0000025386,0.0000025380,0.0000025384,0.0000025388, -0.0000025386,0.0000025381,0.0000025377,0.0000025392,0.0000025402, -0.0000025421,0.0000025440,0.0000025469,0.0000025475,0.0000025464, -0.0000025456,0.0000025490,0.0000025598,0.0000025622,0.0000025521, -0.0000025545,0.0000025723,0.0000025723,0.0000025680,0.0000025709, -0.0000025760,0.0000025787,0.0000025811,0.0000025863,0.0000025883, -0.0000025842,0.0000025763,0.0000025722,0.0000025723,0.0000025721, -0.0000025689,0.0000025604,0.0000025468,0.0000025284,0.0000025145, -0.0000025106,0.0000025078,0.0000025005,0.0000024882,0.0000024741, -0.0000024749,0.0000024952,0.0000025160,0.0000025275,0.0000025324, -0.0000025319,0.0000025333,0.0000025441,0.0000025334,0.0000025125, -0.0000025127,0.0000025208,0.0000025314,0.0000025336,0.0000025479, -0.0000025927,0.0000026287,0.0000026409,0.0000026386,0.0000026297, -0.0000026188,0.0000026075,0.0000026004,0.0000026010,0.0000025988, -0.0000025909,0.0000025818,0.0000025766,0.0000025795,0.0000025877, -0.0000025941,0.0000025968,0.0000025987,0.0000026048,0.0000026132, -0.0000026178,0.0000026180,0.0000026179,0.0000026179,0.0000026179, -0.0000026174,0.0000026170,0.0000026159,0.0000026155,0.0000026154, -0.0000026214,0.0000026337,0.0000026413,0.0000026491,0.0000026633, -0.0000026762,0.0000026808,0.0000026818,0.0000026806,0.0000026764, -0.0000026696,0.0000026638,0.0000026639,0.0000026668,0.0000026696, -0.0000026725,0.0000026748,0.0000026754,0.0000026739,0.0000026727, -0.0000026724,0.0000026750,0.0000026792,0.0000026823,0.0000026849, -0.0000026878,0.0000026906,0.0000026930,0.0000026948,0.0000026953, -0.0000026957,0.0000026979,0.0000027013,0.0000027038,0.0000027053, -0.0000027079,0.0000027104,0.0000027118,0.0000027124,0.0000027132, -0.0000027123,0.0000027088,0.0000027055,0.0000027038,0.0000027053, -0.0000027081,0.0000027102,0.0000027100,0.0000027082,0.0000027049, -0.0000027003,0.0000026959,0.0000026944,0.0000027008,0.0000027111, -0.0000027234,0.0000027384,0.0000027526,0.0000027632,0.0000027689, -0.0000027706,0.0000027704,0.0000027701,0.0000027682,0.0000027663, -0.0000027682,0.0000027747,0.0000027829,0.0000027910,0.0000027994, -0.0000028066,0.0000028112,0.0000028122,0.0000028102,0.0000028026, -0.0000027921,0.0000027848,0.0000027840,0.0000027895,0.0000027949, -0.0000027945,0.0000027918,0.0000027935,0.0000027969,0.0000028014, -0.0000028053,0.0000028078,0.0000028080,0.0000028062,0.0000028037, -0.0000028010,0.0000027971,0.0000027911,0.0000027833,0.0000027744, -0.0000027649,0.0000027557,0.0000027478,0.0000027413,0.0000027361, -0.0000027322,0.0000027290,0.0000027267,0.0000027265,0.0000027287, -0.0000027331,0.0000027375,0.0000027420,0.0000027453,0.0000027459, -0.0000027449,0.0000027428,0.0000027395,0.0000027363,0.0000027352, -0.0000027373,0.0000027420,0.0000027480,0.0000027543,0.0000027617, -0.0000027696,0.0000027758,0.0000027806,0.0000027870,0.0000027953, -0.0000028026,0.0000028074,0.0000028087,0.0000028065,0.0000028028, -0.0000028010,0.0000028024,0.0000028084,0.0000028145,0.0000028187, -0.0000028224,0.0000028274,0.0000028333,0.0000028381,0.0000028410, -0.0000028433,0.0000028468,0.0000028508,0.0000028519,0.0000028453, -0.0000028333,0.0000028182,0.0000028035,0.0000027943,0.0000027934, -0.0000027992,0.0000028060,0.0000028082,0.0000028049,0.0000028005, -0.0000028019,0.0000028053,0.0000028041,0.0000027975,0.0000027902, -0.0000027870,0.0000027853,0.0000027845,0.0000027847,0.0000027845, -0.0000027823,0.0000027808,0.0000027862,0.0000027985,0.0000028063, -0.0000028080,0.0000028114,0.0000028163,0.0000028171,0.0000028122, -0.0000028062,0.0000028028,0.0000028001,0.0000027965,0.0000027908, -0.0000027821,0.0000027767,0.0000027777,0.0000027796,0.0000027832, -0.0000027947,0.0000028091,0.0000028166,0.0000028165,0.0000028133, -0.0000028121,0.0000028125,0.0000028099,0.0000028045,0.0000027994, -0.0000027950,0.0000027909,0.0000027854,0.0000027785,0.0000027709, -0.0000027646,0.0000027590,0.0000027543,0.0000027514,0.0000027503, -0.0000027503,0.0000027508,0.0000027519,0.0000027532,0.0000027545, -0.0000027559,0.0000027574,0.0000027606,0.0000027621,0.0000027611, -0.0000027591,0.0000027564,0.0000027540,0.0000027540,0.0000027570, -0.0000027619,0.0000027668,0.0000027722,0.0000027772,0.0000027801, -0.0000027816,0.0000027818,0.0000027806,0.0000027785,0.0000027771, -0.0000027775,0.0000027792,0.0000027801,0.0000027792,0.0000027784, -0.0000027777,0.0000027765,0.0000027728,0.0000027675,0.0000027593, -0.0000027427,0.0000027145,0.0000026819,0.0000026565,0.0000026435, -0.0000026380,0.0000026386,0.0000026435,0.0000026472,0.0000026497, -0.0000026568,0.0000026694,0.0000026816,0.0000026908,0.0000026959, -0.0000026982,0.0000026972,0.0000026929,0.0000026870,0.0000026801, -0.0000026728,0.0000026651,0.0000026588,0.0000026568,0.0000026582, -0.0000026626,0.0000026698,0.0000026778,0.0000026843,0.0000026899, -0.0000026934,0.0000026947,0.0000026962,0.0000027011,0.0000027085, -0.0000027146,0.0000027166,0.0000027158,0.0000027144,0.0000027107, -0.0000027068,0.0000027031,0.0000026997,0.0000026987,0.0000027001, -0.0000027011,0.0000026983,0.0000026933,0.0000026847,0.0000026519, -0.0000026156,0.0000026097,0.0000026249,0.0000026575,0.0000026911, -0.0000026976,0.0000026958,0.0000027156,0.0000027765,0.0000028252, -0.0000028334,0.0000028303,0.0000028295,0.0000028351,0.0000028398, -0.0000028410,0.0000028408,0.0000028381,0.0000028350,0.0000028316, -0.0000028283,0.0000028267,0.0000028268,0.0000028284,0.0000028301, -0.0000028308,0.0000028322,0.0000028329,0.0000028322,0.0000028271, -0.0000028175,0.0000028089,0.0000028012,0.0000027956,0.0000027948, -0.0000027941,0.0000027925,0.0000027877,0.0000027827,0.0000027849, -0.0000027922,0.0000028052,0.0000028202,0.0000028297,0.0000028306, -0.0000028206,0.0000028140,0.0000028140,0.0000028161,0.0000028288, -0.0000028198,0.0000028236,0.0000028392,0.0000028496,0.0000028573, -0.0000028678,0.0000028772,0.0000028771,0.0000028868,0.0000028949, -0.0000028906,0.0000028841,0.0000028809,0.0000028799,0.0000028779, -0.0000028751,0.0000028714,0.0000028659,0.0000028606,0.0000028565, -0.0000028505,0.0000028421,0.0000028322,0.0000028254,0.0000028233, -0.0000028237,0.0000028240,0.0000028223,0.0000028180,0.0000028138, -0.0000028047,0.0000027852,0.0000027629,0.0000027435,0.0000027269, -0.0000027147,0.0000027083,0.0000027066,0.0000027113,0.0000027242, -0.0000027422,0.0000027552,0.0000027591,0.0000027587,0.0000027589, -0.0000027617,0.0000027662,0.0000027707,0.0000027748,0.0000027801, -0.0000027850,0.0000027871,0.0000027861,0.0000027823,0.0000027779, -0.0000027733,0.0000027634,0.0000027491,0.0000027368,0.0000027244, -0.0000027086,0.0000026930,0.0000026798,0.0000026664,0.0000026526, -0.0000026399,0.0000026284,0.0000026172,0.0000026079,0.0000026016, -0.0000025982,0.0000025968,0.0000025963,0.0000025969,0.0000026009, -0.0000026085,0.0000026175,0.0000026251,0.0000026301,0.0000026315, -0.0000026309,0.0000026309,0.0000026342,0.0000026419,0.0000026533, -0.0000026655,0.0000026751,0.0000026822,0.0000026868,0.0000026879, -0.0000026878,0.0000026885,0.0000026912,0.0000026960,0.0000027017, -0.0000027077,0.0000027127,0.0000027156,0.0000027144,0.0000027083, -0.0000027008,0.0000026942,0.0000026882,0.0000026825,0.0000026783, -0.0000026775,0.0000026812,0.0000026880,0.0000026979,0.0000027051, -0.0000027078,0.0000027075,0.0000027051,0.0000027044,0.0000027089, -0.0000027188,0.0000027289,0.0000027325,0.0000027296,0.0000027263, -0.0000027285,0.0000027374,0.0000027481,0.0000027539,0.0000027532, -0.0000027509,0.0000027527,0.0000027618,0.0000027749,0.0000027871, -0.0000027940,0.0000027953,0.0000027920,0.0000027851,0.0000027774, -0.0000027715,0.0000027669,0.0000027620,0.0000027567,0.0000027511, -0.0000027454,0.0000027427,0.0000027434,0.0000027487,0.0000027563, -0.0000027614,0.0000027634,0.0000027650,0.0000027695,0.0000027747, -0.0000027766,0.0000027760,0.0000027717,0.0000027645,0.0000027577, -0.0000027551,0.0000027561,0.0000027606,0.0000027658,0.0000027690, -0.0000027683,0.0000027648,0.0000027585,0.0000027508,0.0000027423, -0.0000027340,0.0000027263,0.0000027200,0.0000027145,0.0000027094, -0.0000027041,0.0000026983,0.0000026920,0.0000026868,0.0000026828, -0.0000026806,0.0000026805,0.0000026822,0.0000026855,0.0000026905, -0.0000026948,0.0000026975,0.0000026975,0.0000026957,0.0000026930, -0.0000026893,0.0000026846,0.0000026813,0.0000026810,0.0000026832, -0.0000026849,0.0000026838,0.0000026815,0.0000026805,0.0000026816, -0.0000026856,0.0000026903,0.0000026929,0.0000026924,0.0000026896, -0.0000026858,0.0000026810,0.0000026743,0.0000026656,0.0000026552, -0.0000026438,0.0000026331,0.0000026246,0.0000026192,0.0000026163, -0.0000026145,0.0000026125,0.0000026118,0.0000026106,0.0000026102, -0.0000026113,0.0000026134,0.0000026179,0.0000026225,0.0000026262, -0.0000026283,0.0000026293,0.0000026295,0.0000026296,0.0000026299, -0.0000026301,0.0000026301,0.0000026298,0.0000026279,0.0000026243, -0.0000026219,0.0000026206,0.0000026193,0.0000026182,0.0000026151, -0.0000026105,0.0000026072,0.0000026055,0.0000026029,0.0000025972, -0.0000025904,0.0000025858,0.0000025849,0.0000025880,0.0000025930, -0.0000025966,0.0000025991,0.0000026012,0.0000026018,0.0000026009, -0.0000025964,0.0000025842,0.0000025676,0.0000025559,0.0000025541, -0.0000025573,0.0000025596,0.0000025575,0.0000025494,0.0000025372, -0.0000025251,0.0000025171,0.0000025186,0.0000025336,0.0000025544, -0.0000025693,0.0000025778,0.0000025817,0.0000025907,0.0000026226, -0.0000026627,0.0000026914,0.0000027260,0.0000027559,0.0000027584, -0.0000027542,0.0000027548,0.0000027566,0.0000027577,0.0000027596, -0.0000027644,0.0000027630,0.0000027440,0.0000027268,0.0000027246, -0.0000027293,0.0000027356,0.0000027340,0.0000027235,0.0000027125, -0.0000027031,0.0000026945,0.0000026881,0.0000026863,0.0000026897, -0.0000026957,0.0000026988,0.0000026967,0.0000026953,0.0000026989, -0.0000026987,0.0000026915,0.0000026893,0.0000027044,0.0000027295, -0.0000027444,0.0000027471,0.0000027448,0.0000027378,0.0000027310, -0.0000027258,0.0000027228,0.0000027217,0.0000027216,0.0000027219, -0.0000027212,0.0000027214,0.0000027229,0.0000027243,0.0000027259, -0.0000027263,0.0000027267,0.0000027261,0.0000027251,0.0000027216, -0.0000027156,0.0000027094,0.0000027059,0.0000027066,0.0000027081, -0.0000027088,0.0000027118,0.0000027120,0.0000027104,0.0000027043, -0.0000026903,0.0000026783,0.0000026714,0.0000026670,0.0000026651, -0.0000026641,0.0000026627,0.0000026628,0.0000026639,0.0000026661, -0.0000026675,0.0000026662,0.0000026629,0.0000026604,0.0000026574, -0.0000026524,0.0000026459,0.0000026373,0.0000026274,0.0000026202, -0.0000026190,0.0000026201,0.0000026204,0.0000026185,0.0000026155, -0.0000026126,0.0000026108,0.0000026100,0.0000026095,0.0000026097, -0.0000026100,0.0000026112,0.0000026135,0.0000026133,0.0000026041, -0.0000025916,0.0000025872,0.0000025821,0.0000025604,0.0000025350, -0.0000025224,0.0000025153,0.0000025039,0.0000024887,0.0000024732, -0.0000024593,0.0000024495,0.0000024439,0.0000024407,0.0000024395, -0.0000024395,0.0000024395,0.0000024395,0.0000024392,0.0000024377, -0.0000024342,0.0000024292,0.0000024249,0.0000024244,0.0000024286, -0.0000024362,0.0000024455,0.0000024546,0.0000024602,0.0000024610, -0.0000024601,0.0000024604,0.0000024649,0.0000024742,0.0000024992, -0.0000025550,0.0000026078,0.0000026269,0.0000026342,0.0000026446, -0.0000026551,0.0000026634,0.0000026607,0.0000026463,0.0000026300, -0.0000026148,0.0000025991,0.0000025753,0.0000025603,0.0000025650, -0.0000025562,0.0000025340,0.0000025363,0.0000025644,0.0000026308, -0.0000026918,0.0000027408,0.0000027739,0.0000027783,0.0000027757, -0.0000027756,0.0000027735,0.0000027682,0.0000027605,0.0000027524, -0.0000027499,0.0000027521,0.0000027544,0.0000027560,0.0000027614, -0.0000027563,0.0000027498,0.0000027499,0.0000027518,0.0000027514, -0.0000027426,0.0000027326,0.0000027351,0.0000027428,0.0000027472, -0.0000027481,0.0000027482,0.0000027459,0.0000027395,0.0000027333, -0.0000027299,0.0000027294,0.0000027288,0.0000027331,0.0000027364, -0.0000027375,0.0000027369,0.0000027333,0.0000027282,0.0000027213, -0.0000027127,0.0000027049,0.0000026985,0.0000026935,0.0000026872, -0.0000026788,0.0000026718,0.0000026682,0.0000026679,0.0000026702, -0.0000026730,0.0000026730,0.0000026709,0.0000026680,0.0000026645, -0.0000026580,0.0000026502,0.0000026459,0.0000026473,0.0000026518, -0.0000026568,0.0000026597,0.0000026619,0.0000026654,0.0000026686, -0.0000026685,0.0000026656,0.0000026616,0.0000026583,0.0000026553, -0.0000026466,0.0000026257,0.0000026007,0.0000025879,0.0000025876, -0.0000025894,0.0000025872,0.0000025794,0.0000025690,0.0000025603, -0.0000025529,0.0000025456,0.0000025389,0.0000025327,0.0000025279, -0.0000025257,0.0000025280,0.0000025340,0.0000025425,0.0000025501, -0.0000025548,0.0000025565,0.0000025567,0.0000025565,0.0000025554, -0.0000025541,0.0000025535,0.0000025531,0.0000025510,0.0000025482, -0.0000025454,0.0000025439,0.0000025424,0.0000025422,0.0000025427, -0.0000025460,0.0000025489,0.0000025496,0.0000025492,0.0000025490, -0.0000025548,0.0000025610,0.0000025561,0.0000025466,0.0000025583, -0.0000025689,0.0000025675,0.0000025720,0.0000025769,0.0000025800, -0.0000025804,0.0000025804,0.0000025852,0.0000025888,0.0000025838, -0.0000025740,0.0000025674,0.0000025638,0.0000025618,0.0000025583, -0.0000025550,0.0000025517,0.0000025423,0.0000025261,0.0000025129, -0.0000025067,0.0000025017,0.0000024919,0.0000024771,0.0000024732, -0.0000024891,0.0000025111,0.0000025262,0.0000025320,0.0000025338, -0.0000025301,0.0000025393,0.0000025365,0.0000025142,0.0000025085, -0.0000025126,0.0000025218,0.0000025302,0.0000025340,0.0000025701, -0.0000026172,0.0000026400,0.0000026407,0.0000026337,0.0000026247, -0.0000026138,0.0000026030,0.0000025997,0.0000025979,0.0000025898, -0.0000025792,0.0000025735,0.0000025767,0.0000025868,0.0000025953, -0.0000025987,0.0000025997,0.0000026024,0.0000026092,0.0000026138, -0.0000026152,0.0000026164,0.0000026163,0.0000026153,0.0000026149, -0.0000026146,0.0000026133,0.0000026130,0.0000026147,0.0000026256, -0.0000026394,0.0000026448,0.0000026510,0.0000026622,0.0000026723, -0.0000026750,0.0000026753,0.0000026743,0.0000026702,0.0000026639, -0.0000026612,0.0000026627,0.0000026643,0.0000026655,0.0000026667, -0.0000026677,0.0000026680,0.0000026670,0.0000026675,0.0000026702, -0.0000026754,0.0000026807,0.0000026847,0.0000026878,0.0000026901, -0.0000026913,0.0000026914,0.0000026904,0.0000026892,0.0000026885, -0.0000026908,0.0000026952,0.0000026981,0.0000027003,0.0000027029, -0.0000027066,0.0000027098,0.0000027109,0.0000027112,0.0000027102, -0.0000027079,0.0000027057,0.0000027057,0.0000027070,0.0000027076, -0.0000027066,0.0000027047,0.0000027011,0.0000026963,0.0000026901, -0.0000026845,0.0000026819,0.0000026853,0.0000026954,0.0000027102, -0.0000027270,0.0000027420,0.0000027527,0.0000027607,0.0000027669, -0.0000027697,0.0000027699,0.0000027680,0.0000027652,0.0000027656, -0.0000027707,0.0000027769,0.0000027823,0.0000027889,0.0000027973, -0.0000028040,0.0000028055,0.0000028030,0.0000027948,0.0000027853, -0.0000027794,0.0000027794,0.0000027838,0.0000027875,0.0000027871, -0.0000027868,0.0000027908,0.0000027943,0.0000027960,0.0000027962, -0.0000027962,0.0000027961,0.0000027948,0.0000027922,0.0000027891, -0.0000027852,0.0000027801,0.0000027737,0.0000027661,0.0000027574, -0.0000027482,0.0000027394,0.0000027313,0.0000027237,0.0000027172, -0.0000027118,0.0000027072,0.0000027047,0.0000027050,0.0000027081, -0.0000027124,0.0000027173,0.0000027220,0.0000027248,0.0000027265, -0.0000027270,0.0000027257,0.0000027232,0.0000027223,0.0000027254, -0.0000027310,0.0000027375,0.0000027425,0.0000027467,0.0000027518, -0.0000027577,0.0000027648,0.0000027751,0.0000027875,0.0000027978, -0.0000028042,0.0000028073,0.0000028069,0.0000028037,0.0000028001, -0.0000027990,0.0000028027,0.0000028083,0.0000028127,0.0000028151, -0.0000028170,0.0000028197,0.0000028237,0.0000028290,0.0000028351, -0.0000028418,0.0000028484,0.0000028531,0.0000028537,0.0000028498, -0.0000028396,0.0000028246,0.0000028101,0.0000028004,0.0000027974, -0.0000027992,0.0000028015,0.0000028004,0.0000027963,0.0000027955, -0.0000027999,0.0000028029,0.0000027998,0.0000027919,0.0000027859, -0.0000027823,0.0000027803,0.0000027806,0.0000027831,0.0000027854, -0.0000027846,0.0000027834,0.0000027893,0.0000028017,0.0000028093, -0.0000028105,0.0000028128,0.0000028172,0.0000028182,0.0000028136, -0.0000028077,0.0000028034,0.0000027990,0.0000027939,0.0000027866, -0.0000027779,0.0000027740,0.0000027750,0.0000027759,0.0000027820, -0.0000027961,0.0000028083,0.0000028118,0.0000028112,0.0000028108, -0.0000028124,0.0000028120,0.0000028077,0.0000028029,0.0000027990, -0.0000027949,0.0000027902,0.0000027848,0.0000027778,0.0000027699, -0.0000027630,0.0000027569,0.0000027522,0.0000027501,0.0000027501, -0.0000027506,0.0000027517,0.0000027532,0.0000027550,0.0000027564, -0.0000027572,0.0000027591,0.0000027609,0.0000027606,0.0000027583, -0.0000027555,0.0000027528,0.0000027520,0.0000027535,0.0000027575, -0.0000027616,0.0000027664,0.0000027719,0.0000027770,0.0000027801, -0.0000027816,0.0000027821,0.0000027814,0.0000027805,0.0000027797, -0.0000027798,0.0000027803,0.0000027802,0.0000027793,0.0000027797, -0.0000027802,0.0000027792,0.0000027755,0.0000027691,0.0000027572, -0.0000027358,0.0000027078,0.0000026805,0.0000026595,0.0000026464, -0.0000026400,0.0000026395,0.0000026421,0.0000026437,0.0000026461, -0.0000026542,0.0000026680,0.0000026806,0.0000026902,0.0000026962, -0.0000026985,0.0000026987,0.0000026968,0.0000026931,0.0000026878, -0.0000026797,0.0000026698,0.0000026619,0.0000026580,0.0000026572, -0.0000026588,0.0000026635,0.0000026699,0.0000026764,0.0000026829, -0.0000026877,0.0000026900,0.0000026906,0.0000026925,0.0000026974, -0.0000027041,0.0000027104,0.0000027145,0.0000027145,0.0000027113, -0.0000027069,0.0000027024,0.0000026977,0.0000026953,0.0000026955, -0.0000026954,0.0000026959,0.0000026963,0.0000026973,0.0000026855, -0.0000026462,0.0000026128,0.0000026103,0.0000026268,0.0000026618, -0.0000026908,0.0000026936,0.0000027011,0.0000027394,0.0000028014, -0.0000028294,0.0000028312,0.0000028287,0.0000028311,0.0000028382, -0.0000028415,0.0000028418,0.0000028391,0.0000028348,0.0000028302, -0.0000028256,0.0000028232,0.0000028225,0.0000028232,0.0000028240, -0.0000028234,0.0000028239,0.0000028255,0.0000028268,0.0000028243, -0.0000028173,0.0000028092,0.0000028018,0.0000027975,0.0000027974, -0.0000027965,0.0000027947,0.0000027927,0.0000027869,0.0000027836, -0.0000027846,0.0000027922,0.0000028085,0.0000028243,0.0000028316, -0.0000028275,0.0000028159,0.0000028142,0.0000028131,0.0000028206, -0.0000028224,0.0000028151,0.0000028282,0.0000028418,0.0000028511, -0.0000028593,0.0000028704,0.0000028754,0.0000028777,0.0000028884, -0.0000028924,0.0000028869,0.0000028803,0.0000028763,0.0000028730, -0.0000028703,0.0000028676,0.0000028633,0.0000028584,0.0000028537, -0.0000028465,0.0000028375,0.0000028285,0.0000028241,0.0000028234, -0.0000028238,0.0000028238,0.0000028215,0.0000028171,0.0000028100, -0.0000027928,0.0000027701,0.0000027521,0.0000027375,0.0000027232, -0.0000027125,0.0000027081,0.0000027086,0.0000027157,0.0000027303, -0.0000027489,0.0000027613,0.0000027640,0.0000027626,0.0000027628, -0.0000027661,0.0000027700,0.0000027720,0.0000027735,0.0000027772, -0.0000027818,0.0000027827,0.0000027810,0.0000027780,0.0000027757, -0.0000027702,0.0000027565,0.0000027400,0.0000027252,0.0000027074, -0.0000026876,0.0000026726,0.0000026615,0.0000026489,0.0000026351, -0.0000026239,0.0000026166,0.0000026108,0.0000026056,0.0000026012, -0.0000025980,0.0000025965,0.0000025953,0.0000025954,0.0000025986, -0.0000026059,0.0000026155,0.0000026252,0.0000026342,0.0000026417, -0.0000026463,0.0000026483,0.0000026486,0.0000026482,0.0000026502, -0.0000026569,0.0000026666,0.0000026766,0.0000026846,0.0000026884, -0.0000026879,0.0000026845,0.0000026816,0.0000026819,0.0000026860, -0.0000026929,0.0000027017,0.0000027111,0.0000027180,0.0000027203, -0.0000027193,0.0000027173,0.0000027148,0.0000027105,0.0000027051, -0.0000026986,0.0000026903,0.0000026818,0.0000026773,0.0000026789, -0.0000026845,0.0000026936,0.0000027011,0.0000027051,0.0000027062, -0.0000027058,0.0000027069,0.0000027133,0.0000027230,0.0000027297, -0.0000027303,0.0000027272,0.0000027261,0.0000027299,0.0000027385, -0.0000027452,0.0000027461,0.0000027454,0.0000027488,0.0000027581, -0.0000027686,0.0000027780,0.0000027865,0.0000027919,0.0000027931, -0.0000027897,0.0000027839,0.0000027781,0.0000027734,0.0000027695, -0.0000027656,0.0000027611,0.0000027546,0.0000027477,0.0000027451, -0.0000027467,0.0000027530,0.0000027592,0.0000027621,0.0000027638, -0.0000027657,0.0000027685,0.0000027719,0.0000027721,0.0000027697, -0.0000027636,0.0000027574,0.0000027544,0.0000027556,0.0000027596, -0.0000027637,0.0000027661,0.0000027663,0.0000027651,0.0000027616, -0.0000027565,0.0000027505,0.0000027444,0.0000027387,0.0000027336, -0.0000027287,0.0000027233,0.0000027164,0.0000027083,0.0000027005, -0.0000026931,0.0000026872,0.0000026838,0.0000026825,0.0000026835, -0.0000026872,0.0000026933,0.0000026986,0.0000027006,0.0000026998, -0.0000026977,0.0000026939,0.0000026884,0.0000026836,0.0000026826, -0.0000026850,0.0000026874,0.0000026874,0.0000026859,0.0000026853, -0.0000026869,0.0000026917,0.0000026969,0.0000026996,0.0000026989, -0.0000026960,0.0000026934,0.0000026910,0.0000026875,0.0000026824, -0.0000026760,0.0000026687,0.0000026613,0.0000026547,0.0000026494, -0.0000026443,0.0000026388,0.0000026327,0.0000026269,0.0000026220, -0.0000026180,0.0000026148,0.0000026131,0.0000026145,0.0000026167, -0.0000026185,0.0000026201,0.0000026207,0.0000026212,0.0000026209, -0.0000026197,0.0000026186,0.0000026178,0.0000026166,0.0000026150, -0.0000026139,0.0000026150,0.0000026166,0.0000026186,0.0000026204, -0.0000026190,0.0000026153,0.0000026119,0.0000026095,0.0000026082, -0.0000026046,0.0000026010,0.0000025985,0.0000025984,0.0000026005, -0.0000026033,0.0000026047,0.0000026050,0.0000026048,0.0000026033, -0.0000026012,0.0000025986,0.0000025910,0.0000025732,0.0000025528, -0.0000025432,0.0000025453,0.0000025514,0.0000025540,0.0000025507, -0.0000025390,0.0000025231,0.0000025084,0.0000025029,0.0000025122, -0.0000025366,0.0000025597,0.0000025732,0.0000025801,0.0000025889, -0.0000026181,0.0000026602,0.0000026945,0.0000027310,0.0000027589, -0.0000027588,0.0000027536,0.0000027545,0.0000027555,0.0000027555, -0.0000027586,0.0000027635,0.0000027573,0.0000027368,0.0000027253, -0.0000027255,0.0000027290,0.0000027329,0.0000027313,0.0000027231, -0.0000027148,0.0000027090,0.0000027038,0.0000026982,0.0000026941, -0.0000026931,0.0000026952,0.0000026972,0.0000026965,0.0000026934, -0.0000026940,0.0000026974,0.0000026954,0.0000026897,0.0000026934, -0.0000027133,0.0000027362,0.0000027471,0.0000027475,0.0000027433, -0.0000027369,0.0000027300,0.0000027256,0.0000027246,0.0000027241, -0.0000027237,0.0000027221,0.0000027221,0.0000027248,0.0000027280, -0.0000027308,0.0000027316,0.0000027313,0.0000027284,0.0000027247, -0.0000027178,0.0000027087,0.0000027013,0.0000026998,0.0000027043, -0.0000027088,0.0000027111,0.0000027154,0.0000027167,0.0000027131, -0.0000027027,0.0000026857,0.0000026751,0.0000026720,0.0000026688, -0.0000026657,0.0000026639,0.0000026634,0.0000026639,0.0000026646, -0.0000026665,0.0000026679,0.0000026659,0.0000026626,0.0000026600, -0.0000026571,0.0000026526,0.0000026471,0.0000026396,0.0000026299, -0.0000026225,0.0000026214,0.0000026228,0.0000026228,0.0000026204, -0.0000026174,0.0000026152,0.0000026138,0.0000026122,0.0000026104, -0.0000026087,0.0000026074,0.0000026070,0.0000026079,0.0000026097, -0.0000026079,0.0000025979,0.0000025878,0.0000025857,0.0000025777, -0.0000025537,0.0000025316,0.0000025222,0.0000025143,0.0000025015, -0.0000024866,0.0000024716,0.0000024576,0.0000024477,0.0000024420, -0.0000024384,0.0000024365,0.0000024364,0.0000024368,0.0000024371, -0.0000024369,0.0000024356,0.0000024328,0.0000024295,0.0000024269, -0.0000024264,0.0000024269,0.0000024277,0.0000024299,0.0000024344, -0.0000024421,0.0000024503,0.0000024538,0.0000024547,0.0000024600, -0.0000024701,0.0000024852,0.0000025292,0.0000025903,0.0000026197, -0.0000026280,0.0000026383,0.0000026485,0.0000026566,0.0000026576, -0.0000026458,0.0000026306,0.0000026180,0.0000026026,0.0000025832, -0.0000025608,0.0000025576,0.0000025629,0.0000025459,0.0000025352, -0.0000025473,0.0000026059,0.0000026754,0.0000027322,0.0000027726, -0.0000027784,0.0000027761,0.0000027751,0.0000027723,0.0000027686, -0.0000027623,0.0000027516,0.0000027501,0.0000027531,0.0000027561, -0.0000027598,0.0000027635,0.0000027557,0.0000027484,0.0000027472, -0.0000027497,0.0000027508,0.0000027438,0.0000027348,0.0000027362, -0.0000027428,0.0000027477,0.0000027494,0.0000027501,0.0000027485, -0.0000027420,0.0000027345,0.0000027295,0.0000027278,0.0000027221, -0.0000027250,0.0000027289,0.0000027316,0.0000027336,0.0000027324, -0.0000027289,0.0000027242,0.0000027180,0.0000027100,0.0000027015, -0.0000026942,0.0000026888,0.0000026836,0.0000026777,0.0000026713, -0.0000026670,0.0000026670,0.0000026709,0.0000026746,0.0000026743, -0.0000026701,0.0000026684,0.0000026666,0.0000026607,0.0000026530, -0.0000026490,0.0000026502,0.0000026542,0.0000026573,0.0000026600, -0.0000026636,0.0000026675,0.0000026684,0.0000026666,0.0000026632, -0.0000026584,0.0000026511,0.0000026346,0.0000026082,0.0000025878, -0.0000025838,0.0000025858,0.0000025838,0.0000025759,0.0000025654, -0.0000025576,0.0000025517,0.0000025449,0.0000025377,0.0000025328, -0.0000025299,0.0000025297,0.0000025314,0.0000025366,0.0000025449, -0.0000025530,0.0000025571,0.0000025608,0.0000025599,0.0000025577, -0.0000025556,0.0000025544,0.0000025550,0.0000025565,0.0000025597, -0.0000025606,0.0000025609,0.0000025620,0.0000025597,0.0000025543, -0.0000025476,0.0000025422,0.0000025407,0.0000025436,0.0000025475, -0.0000025501,0.0000025510,0.0000025529,0.0000025569,0.0000025569, -0.0000025455,0.0000025449,0.0000025625,0.0000025688,0.0000025735, -0.0000025781,0.0000025812,0.0000025828,0.0000025805,0.0000025768, -0.0000025823,0.0000025868,0.0000025812,0.0000025715,0.0000025632, -0.0000025564,0.0000025507,0.0000025481,0.0000025479,0.0000025492, -0.0000025489,0.0000025398,0.0000025221,0.0000025075,0.0000025013, -0.0000024947,0.0000024807,0.0000024740,0.0000024835,0.0000025046, -0.0000025241,0.0000025308,0.0000025350,0.0000025296,0.0000025328, -0.0000025370,0.0000025185,0.0000025044,0.0000025046,0.0000025113, -0.0000025249,0.0000025282,0.0000025488,0.0000025986,0.0000026327, -0.0000026400,0.0000026368,0.0000026302,0.0000026204,0.0000026081, -0.0000025990,0.0000025956,0.0000025884,0.0000025769,0.0000025709, -0.0000025744,0.0000025855,0.0000025970,0.0000026017,0.0000026015, -0.0000026019,0.0000026061,0.0000026105,0.0000026137,0.0000026150, -0.0000026142,0.0000026123,0.0000026125,0.0000026124,0.0000026121, -0.0000026128,0.0000026178,0.0000026320,0.0000026443,0.0000026468, -0.0000026498,0.0000026578,0.0000026659,0.0000026688,0.0000026696, -0.0000026689,0.0000026649,0.0000026613,0.0000026619,0.0000026651, -0.0000026672,0.0000026691,0.0000026703,0.0000026703,0.0000026702, -0.0000026701,0.0000026721,0.0000026755,0.0000026801,0.0000026841, -0.0000026866,0.0000026885,0.0000026889,0.0000026878,0.0000026856, -0.0000026826,0.0000026797,0.0000026785,0.0000026804,0.0000026855, -0.0000026898,0.0000026933,0.0000026964,0.0000027009,0.0000027049, -0.0000027072,0.0000027087,0.0000027085,0.0000027075,0.0000027071, -0.0000027095,0.0000027119,0.0000027120,0.0000027091,0.0000027035, -0.0000026961,0.0000026886,0.0000026799,0.0000026731,0.0000026705, -0.0000026733,0.0000026830,0.0000026982,0.0000027150,0.0000027292, -0.0000027401,0.0000027503,0.0000027604,0.0000027669,0.0000027683, -0.0000027673,0.0000027653,0.0000027655,0.0000027692,0.0000027732, -0.0000027751,0.0000027787,0.0000027867,0.0000027948,0.0000027976, -0.0000027953,0.0000027879,0.0000027801,0.0000027758,0.0000027757, -0.0000027778,0.0000027799,0.0000027810,0.0000027826,0.0000027866, -0.0000027884,0.0000027867,0.0000027830,0.0000027801,0.0000027790, -0.0000027777,0.0000027754,0.0000027722,0.0000027680,0.0000027626, -0.0000027565,0.0000027492,0.0000027404,0.0000027306,0.0000027201, -0.0000027095,0.0000026992,0.0000026902,0.0000026827,0.0000026762, -0.0000026707,0.0000026680,0.0000026689,0.0000026719,0.0000026764, -0.0000026813,0.0000026857,0.0000026901,0.0000026941,0.0000026959, -0.0000026955,0.0000026959,0.0000027007,0.0000027087,0.0000027190, -0.0000027289,0.0000027362,0.0000027413,0.0000027446,0.0000027478, -0.0000027549,0.0000027691,0.0000027860,0.0000027984,0.0000028045, -0.0000028063,0.0000028056,0.0000028026,0.0000027988,0.0000027985, -0.0000028012,0.0000028052,0.0000028087,0.0000028109,0.0000028109, -0.0000028102,0.0000028116,0.0000028180,0.0000028277,0.0000028372, -0.0000028447,0.0000028490,0.0000028501,0.0000028471,0.0000028402, -0.0000028299,0.0000028175,0.0000028070,0.0000028001,0.0000027966, -0.0000027944,0.0000027923,0.0000027917,0.0000027943,0.0000027983, -0.0000027980,0.0000027925,0.0000027871,0.0000027826,0.0000027785, -0.0000027750,0.0000027746,0.0000027789,0.0000027850,0.0000027876, -0.0000027878,0.0000027930,0.0000028040,0.0000028120,0.0000028135, -0.0000028145,0.0000028176,0.0000028187,0.0000028157,0.0000028110, -0.0000028056,0.0000027993,0.0000027927,0.0000027842,0.0000027751, -0.0000027712,0.0000027713,0.0000027730,0.0000027819,0.0000027959, -0.0000028044,0.0000028064,0.0000028074,0.0000028103,0.0000028121, -0.0000028098,0.0000028049,0.0000028012,0.0000027976,0.0000027932, -0.0000027884,0.0000027836,0.0000027778,0.0000027715,0.0000027654, -0.0000027608,0.0000027579,0.0000027569,0.0000027565,0.0000027559, -0.0000027556,0.0000027559,0.0000027562,0.0000027560,0.0000027555, -0.0000027561,0.0000027558,0.0000027535,0.0000027511,0.0000027494, -0.0000027492,0.0000027514,0.0000027545,0.0000027577,0.0000027605, -0.0000027646,0.0000027695,0.0000027736,0.0000027764,0.0000027779, -0.0000027790,0.0000027799,0.0000027805,0.0000027806,0.0000027810, -0.0000027806,0.0000027800,0.0000027794,0.0000027804,0.0000027809, -0.0000027801,0.0000027765,0.0000027695,0.0000027559,0.0000027340, -0.0000027096,0.0000026874,0.0000026683,0.0000026536,0.0000026448, -0.0000026413,0.0000026406,0.0000026387,0.0000026398,0.0000026478, -0.0000026623,0.0000026754,0.0000026862,0.0000026936,0.0000026973, -0.0000026984,0.0000026977,0.0000026961,0.0000026936,0.0000026856, -0.0000026762,0.0000026684,0.0000026636,0.0000026601,0.0000026588, -0.0000026600,0.0000026626,0.0000026670,0.0000026733,0.0000026790, -0.0000026828,0.0000026841,0.0000026852,0.0000026881,0.0000026928, -0.0000027008,0.0000027098,0.0000027135,0.0000027112,0.0000027073, -0.0000027026,0.0000026969,0.0000026913,0.0000026907,0.0000026903, -0.0000026914,0.0000026969,0.0000027014,0.0000027011,0.0000026820, -0.0000026361,0.0000026077,0.0000026092,0.0000026304,0.0000026686, -0.0000026892,0.0000026940,0.0000027132,0.0000027635,0.0000028131, -0.0000028295,0.0000028293,0.0000028281,0.0000028327,0.0000028385, -0.0000028410,0.0000028387,0.0000028348,0.0000028297,0.0000028247, -0.0000028219,0.0000028213,0.0000028215,0.0000028219,0.0000028201, -0.0000028190,0.0000028198,0.0000028212,0.0000028194,0.0000028149, -0.0000028085,0.0000028017,0.0000027980,0.0000027978,0.0000027980, -0.0000027965,0.0000027953,0.0000027923,0.0000027856,0.0000027816, -0.0000027833,0.0000027953,0.0000028148,0.0000028291,0.0000028323, -0.0000028221,0.0000028144,0.0000028140,0.0000028128,0.0000028211, -0.0000028134,0.0000028159,0.0000028321,0.0000028436,0.0000028530, -0.0000028614,0.0000028715,0.0000028746,0.0000028783,0.0000028870, -0.0000028891,0.0000028833,0.0000028774,0.0000028725,0.0000028689, -0.0000028657,0.0000028610,0.0000028545,0.0000028482,0.0000028411, -0.0000028343,0.0000028288,0.0000028251,0.0000028240,0.0000028240, -0.0000028233,0.0000028199,0.0000028142,0.0000028005,0.0000027780, -0.0000027590,0.0000027470,0.0000027360,0.0000027239,0.0000027148, -0.0000027112,0.0000027140,0.0000027246,0.0000027405,0.0000027584, -0.0000027697,0.0000027714,0.0000027692,0.0000027691,0.0000027724, -0.0000027764,0.0000027765,0.0000027751,0.0000027753,0.0000027763, -0.0000027755,0.0000027735,0.0000027730,0.0000027730,0.0000027675, -0.0000027516,0.0000027342,0.0000027177,0.0000026960,0.0000026741, -0.0000026583,0.0000026454,0.0000026307,0.0000026169,0.0000026083, -0.0000026058,0.0000026061,0.0000026056,0.0000026034,0.0000026000, -0.0000025967,0.0000025945,0.0000025934,0.0000025945,0.0000025996, -0.0000026083,0.0000026188,0.0000026290,0.0000026380,0.0000026455, -0.0000026514,0.0000026558,0.0000026571,0.0000026566,0.0000026563, -0.0000026586,0.0000026639,0.0000026719,0.0000026806,0.0000026862, -0.0000026865,0.0000026817,0.0000026753,0.0000026726,0.0000026746, -0.0000026817,0.0000026918,0.0000027023,0.0000027107,0.0000027154, -0.0000027169,0.0000027173,0.0000027177,0.0000027183,0.0000027194, -0.0000027193,0.0000027133,0.0000027027,0.0000026907,0.0000026814, -0.0000026764,0.0000026764,0.0000026803,0.0000026885,0.0000026966, -0.0000027020,0.0000027050,0.0000027075,0.0000027126,0.0000027204, -0.0000027268,0.0000027287,0.0000027265,0.0000027234,0.0000027237, -0.0000027294,0.0000027372,0.0000027418,0.0000027441,0.0000027489, -0.0000027557,0.0000027615,0.0000027670,0.0000027748,0.0000027836, -0.0000027879,0.0000027870,0.0000027845,0.0000027808,0.0000027776, -0.0000027767,0.0000027763,0.0000027723,0.0000027636,0.0000027533, -0.0000027473,0.0000027468,0.0000027519,0.0000027581,0.0000027620, -0.0000027620,0.0000027607,0.0000027614,0.0000027641,0.0000027658, -0.0000027647,0.0000027613,0.0000027568,0.0000027545,0.0000027549, -0.0000027574,0.0000027611,0.0000027648,0.0000027667,0.0000027668, -0.0000027650,0.0000027621,0.0000027583,0.0000027536,0.0000027485, -0.0000027439,0.0000027391,0.0000027331,0.0000027266,0.0000027207, -0.0000027139,0.0000027060,0.0000026978,0.0000026910,0.0000026867, -0.0000026868,0.0000026920,0.0000026989,0.0000027026,0.0000027032, -0.0000027018,0.0000026985,0.0000026933,0.0000026881,0.0000026863, -0.0000026879,0.0000026904,0.0000026905,0.0000026890,0.0000026883, -0.0000026898,0.0000026943,0.0000026994,0.0000027023,0.0000027016, -0.0000026986,0.0000026962,0.0000026943,0.0000026915,0.0000026874, -0.0000026828,0.0000026781,0.0000026735,0.0000026700,0.0000026682, -0.0000026664,0.0000026634,0.0000026592,0.0000026541,0.0000026485, -0.0000026421,0.0000026352,0.0000026294,0.0000026261,0.0000026247, -0.0000026240,0.0000026234,0.0000026230,0.0000026227,0.0000026213, -0.0000026185,0.0000026164,0.0000026139,0.0000026111,0.0000026086, -0.0000026078,0.0000026102,0.0000026130,0.0000026155,0.0000026168, -0.0000026160,0.0000026121,0.0000026078,0.0000026050,0.0000026026, -0.0000026005,0.0000025985,0.0000025978,0.0000025991,0.0000026018, -0.0000026047,0.0000026054,0.0000026051,0.0000026041,0.0000026015, -0.0000025969,0.0000025927,0.0000025890,0.0000025778,0.0000025572, -0.0000025397,0.0000025366,0.0000025435,0.0000025497,0.0000025503, -0.0000025419,0.0000025246,0.0000025055,0.0000024928,0.0000024951, -0.0000025171,0.0000025471,0.0000025683,0.0000025783,0.0000025868, -0.0000026138,0.0000026563,0.0000026953,0.0000027342,0.0000027623, -0.0000027609,0.0000027535,0.0000027539,0.0000027536,0.0000027538, -0.0000027584,0.0000027615,0.0000027514,0.0000027322,0.0000027257, -0.0000027282,0.0000027301,0.0000027310,0.0000027293,0.0000027234, -0.0000027172,0.0000027133,0.0000027109,0.0000027076,0.0000027040, -0.0000027014,0.0000027000,0.0000026984,0.0000026960,0.0000026932, -0.0000026918,0.0000026940,0.0000026972,0.0000026950,0.0000026931, -0.0000027001,0.0000027204,0.0000027405,0.0000027475,0.0000027464, -0.0000027423,0.0000027361,0.0000027303,0.0000027276,0.0000027265, -0.0000027261,0.0000027255,0.0000027263,0.0000027298,0.0000027329, -0.0000027345,0.0000027334,0.0000027308,0.0000027255,0.0000027178, -0.0000027083,0.0000026980,0.0000026909,0.0000026926,0.0000027019, -0.0000027092,0.0000027127,0.0000027180,0.0000027193,0.0000027138, -0.0000027001,0.0000026831,0.0000026756,0.0000026735,0.0000026712, -0.0000026674,0.0000026646,0.0000026649,0.0000026650,0.0000026649, -0.0000026666,0.0000026682,0.0000026650,0.0000026608,0.0000026585, -0.0000026556,0.0000026511,0.0000026463,0.0000026404,0.0000026319, -0.0000026252,0.0000026239,0.0000026251,0.0000026248,0.0000026223, -0.0000026192,0.0000026171,0.0000026155,0.0000026136,0.0000026116, -0.0000026094,0.0000026072,0.0000026049,0.0000026033,0.0000026027, -0.0000026020,0.0000025969,0.0000025882,0.0000025838,0.0000025835, -0.0000025730,0.0000025482,0.0000025295,0.0000025213,0.0000025121, -0.0000024996,0.0000024870,0.0000024736,0.0000024595,0.0000024483, -0.0000024407,0.0000024356,0.0000024328,0.0000024318,0.0000024316, -0.0000024314,0.0000024306,0.0000024285,0.0000024260,0.0000024242, -0.0000024242,0.0000024257,0.0000024268,0.0000024264,0.0000024252, -0.0000024241,0.0000024261,0.0000024345,0.0000024448,0.0000024492, -0.0000024542,0.0000024666,0.0000024782,0.0000025085,0.0000025685, -0.0000026095,0.0000026212,0.0000026308,0.0000026424,0.0000026503, -0.0000026520,0.0000026459,0.0000026323,0.0000026203,0.0000026056, -0.0000025885,0.0000025696,0.0000025553,0.0000025626,0.0000025598, -0.0000025384,0.0000025405,0.0000025855,0.0000026607,0.0000027251, -0.0000027705,0.0000027781,0.0000027756,0.0000027738,0.0000027709, -0.0000027699,0.0000027631,0.0000027516,0.0000027515,0.0000027547, -0.0000027581,0.0000027636,0.0000027652,0.0000027563,0.0000027482, -0.0000027460,0.0000027481,0.0000027503,0.0000027454,0.0000027375, -0.0000027373,0.0000027430,0.0000027480,0.0000027503,0.0000027508, -0.0000027506,0.0000027464,0.0000027385,0.0000027301,0.0000027239, -0.0000027143,0.0000027150,0.0000027186,0.0000027213,0.0000027255, -0.0000027273,0.0000027271,0.0000027255,0.0000027229,0.0000027172, -0.0000027086,0.0000026989,0.0000026914,0.0000026880,0.0000026863, -0.0000026824,0.0000026753,0.0000026688,0.0000026684,0.0000026728, -0.0000026771,0.0000026752,0.0000026706,0.0000026689,0.0000026682, -0.0000026635,0.0000026567,0.0000026527,0.0000026533,0.0000026554, -0.0000026589,0.0000026633,0.0000026685,0.0000026711,0.0000026710, -0.0000026678,0.0000026596,0.0000026448,0.0000026191,0.0000025923, -0.0000025811,0.0000025810,0.0000025800,0.0000025726,0.0000025622, -0.0000025544,0.0000025497,0.0000025430,0.0000025353,0.0000025324, -0.0000025329,0.0000025343,0.0000025362,0.0000025389,0.0000025437, -0.0000025482,0.0000025521,0.0000025524,0.0000025485,0.0000025417, -0.0000025344,0.0000025270,0.0000025223,0.0000025220,0.0000025248, -0.0000025303,0.0000025383,0.0000025482,0.0000025582,0.0000025663, -0.0000025687,0.0000025653,0.0000025567,0.0000025460,0.0000025393, -0.0000025384,0.0000025423,0.0000025470,0.0000025504,0.0000025525, -0.0000025527,0.0000025464,0.0000025402,0.0000025553,0.0000025706, -0.0000025743,0.0000025789,0.0000025826,0.0000025841,0.0000025835, -0.0000025772,0.0000025731,0.0000025794,0.0000025828,0.0000025772, -0.0000025691,0.0000025600,0.0000025505,0.0000025429,0.0000025393, -0.0000025400,0.0000025447,0.0000025490,0.0000025481,0.0000025352, -0.0000025146,0.0000025012,0.0000024955,0.0000024852,0.0000024764, -0.0000024799,0.0000024968,0.0000025201,0.0000025293,0.0000025338, -0.0000025306,0.0000025269,0.0000025331,0.0000025227,0.0000025032, -0.0000024986,0.0000025011,0.0000025153,0.0000025268,0.0000025341, -0.0000025735,0.0000026200,0.0000026381,0.0000026379,0.0000026343, -0.0000026267,0.0000026143,0.0000026011,0.0000025934,0.0000025865, -0.0000025757,0.0000025688,0.0000025716,0.0000025827,0.0000025961, -0.0000026024,0.0000026026,0.0000026013,0.0000026029,0.0000026067, -0.0000026108,0.0000026123,0.0000026109,0.0000026100,0.0000026106, -0.0000026112,0.0000026117,0.0000026137,0.0000026218,0.0000026373, -0.0000026464,0.0000026465,0.0000026462,0.0000026510,0.0000026583, -0.0000026628,0.0000026652,0.0000026651,0.0000026627,0.0000026619, -0.0000026655,0.0000026698,0.0000026725,0.0000026752,0.0000026764, -0.0000026764,0.0000026769,0.0000026785,0.0000026810,0.0000026830, -0.0000026845,0.0000026855,0.0000026852,0.0000026840,0.0000026818, -0.0000026789,0.0000026756,0.0000026723,0.0000026694,0.0000026681, -0.0000026701,0.0000026762,0.0000026821,0.0000026859,0.0000026890, -0.0000026931,0.0000026974,0.0000027012,0.0000027044,0.0000027061, -0.0000027069,0.0000027085,0.0000027125,0.0000027161,0.0000027168, -0.0000027138,0.0000027050,0.0000026922,0.0000026790,0.0000026675, -0.0000026617,0.0000026611,0.0000026664,0.0000026763,0.0000026891, -0.0000027025,0.0000027149,0.0000027265,0.0000027389,0.0000027515, -0.0000027613,0.0000027662,0.0000027673,0.0000027675,0.0000027681, -0.0000027697,0.0000027709,0.0000027706,0.0000027713,0.0000027768, -0.0000027849,0.0000027893,0.0000027879,0.0000027828,0.0000027774, -0.0000027737,0.0000027715,0.0000027707,0.0000027723,0.0000027755, -0.0000027779,0.0000027796,0.0000027790,0.0000027746,0.0000027680, -0.0000027623,0.0000027580,0.0000027547,0.0000027519,0.0000027492, -0.0000027449,0.0000027387,0.0000027320,0.0000027253,0.0000027175, -0.0000027088,0.0000026991,0.0000026891,0.0000026797,0.0000026711, -0.0000026639,0.0000026576,0.0000026513,0.0000026454,0.0000026435, -0.0000026446,0.0000026473,0.0000026502,0.0000026533,0.0000026578, -0.0000026630,0.0000026665,0.0000026676,0.0000026689,0.0000026730, -0.0000026800,0.0000026902,0.0000027030,0.0000027154,0.0000027264, -0.0000027345,0.0000027388,0.0000027412,0.0000027477,0.0000027631, -0.0000027826,0.0000027967,0.0000028034,0.0000028053,0.0000028045, -0.0000028010,0.0000027980,0.0000027964,0.0000027970,0.0000028000, -0.0000028043,0.0000028061,0.0000028037,0.0000027995,0.0000028000, -0.0000028075,0.0000028192,0.0000028302,0.0000028370,0.0000028403, -0.0000028414,0.0000028414,0.0000028372,0.0000028304,0.0000028216, -0.0000028108,0.0000028005,0.0000027928,0.0000027884,0.0000027877, -0.0000027902,0.0000027938,0.0000027936,0.0000027890,0.0000027855, -0.0000027835,0.0000027803,0.0000027741,0.0000027680,0.0000027675, -0.0000027738,0.0000027829,0.0000027888,0.0000027916,0.0000027967, -0.0000028069,0.0000028153,0.0000028168,0.0000028165,0.0000028178, -0.0000028193,0.0000028182,0.0000028148,0.0000028087,0.0000028009, -0.0000027929,0.0000027828,0.0000027726,0.0000027680,0.0000027677, -0.0000027700,0.0000027806,0.0000027933,0.0000027994,0.0000028016, -0.0000028052,0.0000028095,0.0000028103,0.0000028063,0.0000028017, -0.0000027986,0.0000027952,0.0000027900,0.0000027850,0.0000027812, -0.0000027776,0.0000027736,0.0000027703,0.0000027679,0.0000027662, -0.0000027647,0.0000027630,0.0000027609,0.0000027589,0.0000027573, -0.0000027556,0.0000027534,0.0000027514,0.0000027496,0.0000027466, -0.0000027425,0.0000027400,0.0000027400,0.0000027427,0.0000027477, -0.0000027523,0.0000027556,0.0000027586,0.0000027622,0.0000027657, -0.0000027689,0.0000027709,0.0000027723,0.0000027742,0.0000027763, -0.0000027785,0.0000027799,0.0000027805,0.0000027803,0.0000027799, -0.0000027797,0.0000027808,0.0000027808,0.0000027796,0.0000027759, -0.0000027687,0.0000027556,0.0000027352,0.0000027138,0.0000026954, -0.0000026783,0.0000026628,0.0000026523,0.0000026457,0.0000026409, -0.0000026364,0.0000026368,0.0000026419,0.0000026549,0.0000026662, -0.0000026765,0.0000026844,0.0000026895,0.0000026918,0.0000026925, -0.0000026926,0.0000026903,0.0000026836,0.0000026770,0.0000026703, -0.0000026654,0.0000026610,0.0000026573,0.0000026555,0.0000026549, -0.0000026569,0.0000026621,0.0000026681,0.0000026728,0.0000026752, -0.0000026769,0.0000026795,0.0000026823,0.0000026893,0.0000027010, -0.0000027092,0.0000027099,0.0000027068,0.0000027032,0.0000026975, -0.0000026893,0.0000026851,0.0000026852,0.0000026877,0.0000026951, -0.0000027027,0.0000027051,0.0000027017,0.0000026733,0.0000026216, -0.0000026024,0.0000026107,0.0000026375,0.0000026729,0.0000026886, -0.0000026993,0.0000027278,0.0000027801,0.0000028174,0.0000028281, -0.0000028276,0.0000028276,0.0000028319,0.0000028356,0.0000028349, -0.0000028319,0.0000028270,0.0000028215,0.0000028180,0.0000028175, -0.0000028180,0.0000028183,0.0000028159,0.0000028141,0.0000028145, -0.0000028157,0.0000028137,0.0000028106,0.0000028060,0.0000028011, -0.0000027982,0.0000027969,0.0000027976,0.0000027973,0.0000027966, -0.0000027957,0.0000027899,0.0000027818,0.0000027791,0.0000027846, -0.0000028027,0.0000028225,0.0000028330,0.0000028294,0.0000028170, -0.0000028146,0.0000028115,0.0000028146,0.0000028145,0.0000028074, -0.0000028200,0.0000028348,0.0000028460,0.0000028542,0.0000028632, -0.0000028728,0.0000028740,0.0000028768,0.0000028829,0.0000028830, -0.0000028785,0.0000028730,0.0000028682,0.0000028631,0.0000028565, -0.0000028486,0.0000028423,0.0000028378,0.0000028344,0.0000028310, -0.0000028269,0.0000028247,0.0000028238,0.0000028206,0.0000028156, -0.0000028061,0.0000027863,0.0000027651,0.0000027536,0.0000027478, -0.0000027388,0.0000027271,0.0000027172,0.0000027125,0.0000027151, -0.0000027283,0.0000027481,0.0000027673,0.0000027783,0.0000027798, -0.0000027774,0.0000027770,0.0000027806,0.0000027853,0.0000027849, -0.0000027811,0.0000027784,0.0000027762,0.0000027726,0.0000027700, -0.0000027700,0.0000027699,0.0000027630,0.0000027469,0.0000027297, -0.0000027119,0.0000026884,0.0000026654,0.0000026485,0.0000026329, -0.0000026158,0.0000026026,0.0000025969,0.0000025967,0.0000025987, -0.0000025995,0.0000025976,0.0000025937,0.0000025897,0.0000025864, -0.0000025842,0.0000025838,0.0000025859,0.0000025909,0.0000025992, -0.0000026111,0.0000026242,0.0000026355,0.0000026445,0.0000026522, -0.0000026583,0.0000026618,0.0000026629,0.0000026616,0.0000026605, -0.0000026611,0.0000026657,0.0000026726,0.0000026781,0.0000026794, -0.0000026759,0.0000026694,0.0000026656,0.0000026667,0.0000026730, -0.0000026830,0.0000026932,0.0000027014,0.0000027066,0.0000027093, -0.0000027105,0.0000027118,0.0000027146,0.0000027189,0.0000027220, -0.0000027224,0.0000027210,0.0000027140,0.0000027046,0.0000026939, -0.0000026835,0.0000026758,0.0000026731,0.0000026753,0.0000026828, -0.0000026926,0.0000027006,0.0000027073,0.0000027141,0.0000027207, -0.0000027249,0.0000027256,0.0000027232,0.0000027203,0.0000027196, -0.0000027230,0.0000027305,0.0000027386,0.0000027447,0.0000027487, -0.0000027514,0.0000027528,0.0000027547,0.0000027594,0.0000027662, -0.0000027735,0.0000027790,0.0000027801,0.0000027806,0.0000027826, -0.0000027850,0.0000027852,0.0000027809,0.0000027707,0.0000027583, -0.0000027501,0.0000027497,0.0000027544,0.0000027600,0.0000027615, -0.0000027589,0.0000027550,0.0000027543,0.0000027563,0.0000027590, -0.0000027593,0.0000027575,0.0000027559,0.0000027547,0.0000027545, -0.0000027564,0.0000027608,0.0000027654,0.0000027679,0.0000027693, -0.0000027691,0.0000027677,0.0000027648,0.0000027611,0.0000027569, -0.0000027520,0.0000027458,0.0000027404,0.0000027371,0.0000027333, -0.0000027278,0.0000027207,0.0000027127,0.0000027049,0.0000026996, -0.0000027000,0.0000027049,0.0000027098,0.0000027114,0.0000027105, -0.0000027071,0.0000027019,0.0000026962,0.0000026927,0.0000026922, -0.0000026932,0.0000026928,0.0000026912,0.0000026905,0.0000026917, -0.0000026948,0.0000026985,0.0000027005,0.0000026997,0.0000026973, -0.0000026955,0.0000026943,0.0000026918,0.0000026879,0.0000026838, -0.0000026798,0.0000026761,0.0000026732,0.0000026715,0.0000026705, -0.0000026697,0.0000026684,0.0000026673,0.0000026662,0.0000026634, -0.0000026581,0.0000026513,0.0000026456,0.0000026415,0.0000026379, -0.0000026350,0.0000026329,0.0000026313,0.0000026292,0.0000026260, -0.0000026223,0.0000026187,0.0000026152,0.0000026135,0.0000026141, -0.0000026163,0.0000026188,0.0000026202,0.0000026197,0.0000026176, -0.0000026128,0.0000026069,0.0000026015,0.0000025969,0.0000025937, -0.0000025923,0.0000025927,0.0000025946,0.0000025982,0.0000026024, -0.0000026041,0.0000026037,0.0000026023,0.0000025991,0.0000025936, -0.0000025876,0.0000025835,0.0000025777,0.0000025627,0.0000025428, -0.0000025324,0.0000025356,0.0000025442,0.0000025479,0.0000025436, -0.0000025272,0.0000025047,0.0000024877,0.0000024838,0.0000024981, -0.0000025306,0.0000025611,0.0000025769,0.0000025849,0.0000026085, -0.0000026518,0.0000026939,0.0000027350,0.0000027648,0.0000027643, -0.0000027553,0.0000027535,0.0000027518,0.0000027531,0.0000027593, -0.0000027600,0.0000027455,0.0000027298,0.0000027282,0.0000027330, -0.0000027336,0.0000027319,0.0000027295,0.0000027251,0.0000027203, -0.0000027171,0.0000027165,0.0000027151,0.0000027122,0.0000027102, -0.0000027081,0.0000027041,0.0000026980,0.0000026933,0.0000026916, -0.0000026918,0.0000026950,0.0000026982,0.0000026986,0.0000026980, -0.0000027055,0.0000027246,0.0000027414,0.0000027464,0.0000027455, -0.0000027418,0.0000027374,0.0000027335,0.0000027312,0.0000027302, -0.0000027309,0.0000027329,0.0000027358,0.0000027363,0.0000027352, -0.0000027315,0.0000027252,0.0000027167,0.0000027084,0.0000027007, -0.0000026924,0.0000026865,0.0000026885,0.0000027001,0.0000027093, -0.0000027133,0.0000027190,0.0000027206,0.0000027123,0.0000026979, -0.0000026837,0.0000026772,0.0000026754,0.0000026734,0.0000026700, -0.0000026674,0.0000026675,0.0000026659,0.0000026652,0.0000026673, -0.0000026676,0.0000026632,0.0000026586,0.0000026564,0.0000026531, -0.0000026484,0.0000026441,0.0000026397,0.0000026332,0.0000026270, -0.0000026255,0.0000026262,0.0000026256,0.0000026230,0.0000026204, -0.0000026185,0.0000026155,0.0000026109,0.0000026064,0.0000026033, -0.0000026013,0.0000025996,0.0000025969,0.0000025940,0.0000025916, -0.0000025880,0.0000025824,0.0000025785,0.0000025796,0.0000025804, -0.0000025674,0.0000025433,0.0000025273,0.0000025193,0.0000025094, -0.0000024987,0.0000024888,0.0000024767,0.0000024620,0.0000024485, -0.0000024384,0.0000024318,0.0000024282,0.0000024257,0.0000024232, -0.0000024208,0.0000024180,0.0000024146,0.0000024118,0.0000024113, -0.0000024130,0.0000024160,0.0000024186,0.0000024197,0.0000024202, -0.0000024204,0.0000024196,0.0000024223,0.0000024323,0.0000024428, -0.0000024491,0.0000024617,0.0000024742,0.0000024936,0.0000025435, -0.0000025948,0.0000026139,0.0000026221,0.0000026352,0.0000026449, -0.0000026486,0.0000026456,0.0000026352,0.0000026216,0.0000026090, -0.0000025933,0.0000025800,0.0000025624,0.0000025581,0.0000025648, -0.0000025460,0.0000025412,0.0000025718,0.0000026498,0.0000027191, -0.0000027676,0.0000027774,0.0000027748,0.0000027718,0.0000027707, -0.0000027719,0.0000027631,0.0000027524,0.0000027537,0.0000027566, -0.0000027603,0.0000027670,0.0000027673,0.0000027583,0.0000027498, -0.0000027463,0.0000027473,0.0000027499,0.0000027472,0.0000027400, -0.0000027383,0.0000027436,0.0000027488,0.0000027513,0.0000027525, -0.0000027523,0.0000027501,0.0000027431,0.0000027318,0.0000027203, -0.0000027099,0.0000027079,0.0000027086,0.0000027092,0.0000027122, -0.0000027162,0.0000027199,0.0000027226,0.0000027233,0.0000027221, -0.0000027161,0.0000027069,0.0000026972,0.0000026925,0.0000026919, -0.0000026916,0.0000026884,0.0000026807,0.0000026740,0.0000026717, -0.0000026751,0.0000026795,0.0000026769,0.0000026708,0.0000026693, -0.0000026701,0.0000026668,0.0000026606,0.0000026566,0.0000026564, -0.0000026595,0.0000026656,0.0000026724,0.0000026765,0.0000026773, -0.0000026729,0.0000026609,0.0000026372,0.0000026042,0.0000025817, -0.0000025772,0.0000025758,0.0000025706,0.0000025602,0.0000025513, -0.0000025463,0.0000025398,0.0000025315,0.0000025301,0.0000025338, -0.0000025375,0.0000025390,0.0000025402,0.0000025423,0.0000025446, -0.0000025451,0.0000025426,0.0000025365,0.0000025265,0.0000025148, -0.0000025039,0.0000024945,0.0000024876,0.0000024837,0.0000024826, -0.0000024844,0.0000024893,0.0000024998,0.0000025155,0.0000025339, -0.0000025525,0.0000025647,0.0000025687,0.0000025654,0.0000025542, -0.0000025431,0.0000025372,0.0000025379,0.0000025408,0.0000025437, -0.0000025450,0.0000025436,0.0000025410,0.0000025502,0.0000025715, -0.0000025768,0.0000025783,0.0000025829,0.0000025854,0.0000025855, -0.0000025804,0.0000025730,0.0000025702,0.0000025764,0.0000025781, -0.0000025727,0.0000025651,0.0000025557,0.0000025462,0.0000025387, -0.0000025331,0.0000025331,0.0000025383,0.0000025456,0.0000025494, -0.0000025452,0.0000025269,0.0000025057,0.0000024957,0.0000024889, -0.0000024811,0.0000024785,0.0000024887,0.0000025136,0.0000025275, -0.0000025311,0.0000025321,0.0000025237,0.0000025267,0.0000025249, -0.0000025063,0.0000024955,0.0000024936,0.0000025046,0.0000025232, -0.0000025285,0.0000025497,0.0000025979,0.0000026295,0.0000026368, -0.0000026357,0.0000026315,0.0000026209,0.0000026063,0.0000025921, -0.0000025842,0.0000025758,0.0000025675,0.0000025683,0.0000025792, -0.0000025928,0.0000026001,0.0000026012,0.0000025998,0.0000026003, -0.0000026040,0.0000026084,0.0000026095,0.0000026093,0.0000026097, -0.0000026102,0.0000026102,0.0000026107,0.0000026141,0.0000026241, -0.0000026393,0.0000026464,0.0000026450,0.0000026424,0.0000026447, -0.0000026508,0.0000026564,0.0000026606,0.0000026627,0.0000026627, -0.0000026642,0.0000026689,0.0000026727,0.0000026750,0.0000026775, -0.0000026793,0.0000026800,0.0000026811,0.0000026825,0.0000026832, -0.0000026831,0.0000026819,0.0000026800,0.0000026780,0.0000026756, -0.0000026730,0.0000026698,0.0000026671,0.0000026649,0.0000026632, -0.0000026625,0.0000026641,0.0000026687,0.0000026746,0.0000026797, -0.0000026833,0.0000026867,0.0000026907,0.0000026953,0.0000026993, -0.0000027012,0.0000027025,0.0000027058,0.0000027105,0.0000027147, -0.0000027162,0.0000027135,0.0000027037,0.0000026875,0.0000026695, -0.0000026563,0.0000026525,0.0000026552,0.0000026629,0.0000026722, -0.0000026819,0.0000026914,0.0000027018,0.0000027140,0.0000027278, -0.0000027418,0.0000027542,0.0000027634,0.0000027689,0.0000027711, -0.0000027710,0.0000027700,0.0000027687,0.0000027673,0.0000027668, -0.0000027698,0.0000027758,0.0000027806,0.0000027816,0.0000027800, -0.0000027766,0.0000027719,0.0000027667,0.0000027637,0.0000027642, -0.0000027683,0.0000027702,0.0000027690,0.0000027665,0.0000027606, -0.0000027529,0.0000027444,0.0000027361,0.0000027296,0.0000027261, -0.0000027240,0.0000027206,0.0000027149,0.0000027092,0.0000027048, -0.0000027009,0.0000026962,0.0000026900,0.0000026828,0.0000026760, -0.0000026695,0.0000026631,0.0000026568,0.0000026498,0.0000026425, -0.0000026377,0.0000026360,0.0000026363,0.0000026365,0.0000026367, -0.0000026387,0.0000026427,0.0000026462,0.0000026480,0.0000026496, -0.0000026528,0.0000026580,0.0000026659,0.0000026769,0.0000026893, -0.0000027026,0.0000027157,0.0000027269,0.0000027344,0.0000027379, -0.0000027437,0.0000027584,0.0000027785,0.0000027945,0.0000028025, -0.0000028042,0.0000028024,0.0000027997,0.0000027959,0.0000027928, -0.0000027926,0.0000027962,0.0000028011,0.0000028017,0.0000027972, -0.0000027922,0.0000027920,0.0000027995,0.0000028115,0.0000028219, -0.0000028278,0.0000028309,0.0000028336,0.0000028345,0.0000028328, -0.0000028286,0.0000028211,0.0000028097,0.0000027981,0.0000027898, -0.0000027871,0.0000027879,0.0000027902,0.0000027895,0.0000027842, -0.0000027805,0.0000027799,0.0000027799,0.0000027763,0.0000027680, -0.0000027615,0.0000027629,0.0000027711,0.0000027814,0.0000027893, -0.0000027940,0.0000027996,0.0000028097,0.0000028184,0.0000028200, -0.0000028180,0.0000028179,0.0000028200,0.0000028208,0.0000028184, -0.0000028115,0.0000028022,0.0000027927,0.0000027814,0.0000027704, -0.0000027645,0.0000027636,0.0000027674,0.0000027788,0.0000027897, -0.0000027946,0.0000027983,0.0000028037,0.0000028076,0.0000028066, -0.0000028018,0.0000027972,0.0000027946,0.0000027909,0.0000027853, -0.0000027806,0.0000027780,0.0000027762,0.0000027750,0.0000027737, -0.0000027719,0.0000027694,0.0000027662,0.0000027634,0.0000027604, -0.0000027575,0.0000027547,0.0000027517,0.0000027484,0.0000027455, -0.0000027432,0.0000027393,0.0000027342,0.0000027311,0.0000027308, -0.0000027338,0.0000027394,0.0000027452,0.0000027504,0.0000027549, -0.0000027586,0.0000027614,0.0000027636,0.0000027656,0.0000027678, -0.0000027702,0.0000027728,0.0000027752,0.0000027767,0.0000027775, -0.0000027781,0.0000027783,0.0000027786,0.0000027794,0.0000027792, -0.0000027773,0.0000027735,0.0000027661,0.0000027539,0.0000027347, -0.0000027147,0.0000026987,0.0000026850,0.0000026732,0.0000026648, -0.0000026577,0.0000026514,0.0000026452,0.0000026423,0.0000026461, -0.0000026544,0.0000026621,0.0000026671,0.0000026729,0.0000026765, -0.0000026779,0.0000026790,0.0000026791,0.0000026771,0.0000026738, -0.0000026697,0.0000026653,0.0000026613,0.0000026562,0.0000026512, -0.0000026485,0.0000026476,0.0000026488,0.0000026523,0.0000026577, -0.0000026627,0.0000026658,0.0000026681,0.0000026707,0.0000026726, -0.0000026780,0.0000026901,0.0000027017,0.0000027059,0.0000027047, -0.0000027028,0.0000026987,0.0000026894,0.0000026810,0.0000026794, -0.0000026840,0.0000026925,0.0000027011,0.0000027056,0.0000027050, -0.0000026983,0.0000026559,0.0000026070,0.0000026011,0.0000026145, -0.0000026448,0.0000026764,0.0000026906,0.0000027070,0.0000027411, -0.0000027895,0.0000028180,0.0000028258,0.0000028253,0.0000028262, -0.0000028280,0.0000028277,0.0000028248,0.0000028198,0.0000028133, -0.0000028079,0.0000028069,0.0000028083,0.0000028096,0.0000028079, -0.0000028067,0.0000028078,0.0000028092,0.0000028071,0.0000028044, -0.0000028014,0.0000027993,0.0000027982,0.0000027966,0.0000027958, -0.0000027961,0.0000027970,0.0000027968,0.0000027937,0.0000027839, -0.0000027772,0.0000027783,0.0000027911,0.0000028132,0.0000028303, -0.0000028343,0.0000028232,0.0000028143,0.0000028134,0.0000028099, -0.0000028129,0.0000028055,0.0000028074,0.0000028244,0.0000028372, -0.0000028476,0.0000028550,0.0000028655,0.0000028730,0.0000028732, -0.0000028743,0.0000028762,0.0000028746,0.0000028699,0.0000028645, -0.0000028583,0.0000028511,0.0000028442,0.0000028395,0.0000028375, -0.0000028354,0.0000028319,0.0000028274,0.0000028242,0.0000028209, -0.0000028152,0.0000028070,0.0000027921,0.0000027715,0.0000027573, -0.0000027534,0.0000027517,0.0000027455,0.0000027310,0.0000027168, -0.0000027098,0.0000027109,0.0000027233,0.0000027439,0.0000027660, -0.0000027804,0.0000027853,0.0000027850,0.0000027850,0.0000027883, -0.0000027936,0.0000027941,0.0000027900,0.0000027861,0.0000027824, -0.0000027767,0.0000027706,0.0000027682,0.0000027655,0.0000027545, -0.0000027372,0.0000027213,0.0000027054,0.0000026832,0.0000026597, -0.0000026413,0.0000026248,0.0000026084,0.0000025968,0.0000025921, -0.0000025912,0.0000025909,0.0000025901,0.0000025883,0.0000025854, -0.0000025829,0.0000025811,0.0000025796,0.0000025777,0.0000025770, -0.0000025777,0.0000025795,0.0000025840,0.0000025950,0.0000026122, -0.0000026292,0.0000026406,0.0000026482,0.0000026555,0.0000026620, -0.0000026647,0.0000026637,0.0000026605,0.0000026581,0.0000026590, -0.0000026630,0.0000026667,0.0000026674,0.0000026637,0.0000026581, -0.0000026552,0.0000026568,0.0000026634,0.0000026732,0.0000026831, -0.0000026906,0.0000026955,0.0000026986,0.0000027009,0.0000027033, -0.0000027069,0.0000027125,0.0000027182,0.0000027215,0.0000027227, -0.0000027236,0.0000027247,0.0000027199,0.0000027096,0.0000026960, -0.0000026827,0.0000026730,0.0000026693,0.0000026722,0.0000026807, -0.0000026917,0.0000027024,0.0000027121,0.0000027200,0.0000027229, -0.0000027219,0.0000027186,0.0000027167,0.0000027167,0.0000027190, -0.0000027245,0.0000027321,0.0000027391,0.0000027430,0.0000027436, -0.0000027429,0.0000027429,0.0000027441,0.0000027482,0.0000027563, -0.0000027665,0.0000027765,0.0000027838,0.0000027879,0.0000027898, -0.0000027892,0.0000027847,0.0000027747,0.0000027628,0.0000027559, -0.0000027563,0.0000027602,0.0000027618,0.0000027594,0.0000027544, -0.0000027509,0.0000027506,0.0000027523,0.0000027537,0.0000027542, -0.0000027546,0.0000027547,0.0000027540,0.0000027544,0.0000027574, -0.0000027618,0.0000027663,0.0000027701,0.0000027725,0.0000027730, -0.0000027716,0.0000027697,0.0000027673,0.0000027634,0.0000027578, -0.0000027521,0.0000027485,0.0000027456,0.0000027425,0.0000027387, -0.0000027339,0.0000027281,0.0000027232,0.0000027219,0.0000027245, -0.0000027282,0.0000027296,0.0000027286,0.0000027245,0.0000027186, -0.0000027124,0.0000027068,0.0000027026,0.0000026991,0.0000026955, -0.0000026922,0.0000026914,0.0000026927,0.0000026948,0.0000026962, -0.0000026964,0.0000026946,0.0000026919,0.0000026902,0.0000026895, -0.0000026879,0.0000026850,0.0000026817,0.0000026782,0.0000026747, -0.0000026719,0.0000026706,0.0000026697,0.0000026682,0.0000026663, -0.0000026655,0.0000026661,0.0000026665,0.0000026642,0.0000026621, -0.0000026594,0.0000026561,0.0000026526,0.0000026483,0.0000026443, -0.0000026411,0.0000026378,0.0000026341,0.0000026302,0.0000026264, -0.0000026231,0.0000026219,0.0000026235,0.0000026255,0.0000026270, -0.0000026271,0.0000026254,0.0000026225,0.0000026177,0.0000026105, -0.0000026031,0.0000025966,0.0000025914,0.0000025897,0.0000025905, -0.0000025922,0.0000025943,0.0000025969,0.0000025996,0.0000026004, -0.0000026000,0.0000025976,0.0000025919,0.0000025846,0.0000025792, -0.0000025750,0.0000025649,0.0000025468,0.0000025320,0.0000025295, -0.0000025369,0.0000025447,0.0000025441,0.0000025298,0.0000025052, -0.0000024831,0.0000024744,0.0000024810,0.0000025117,0.0000025509, -0.0000025745,0.0000025837,0.0000026034,0.0000026463,0.0000026909, -0.0000027333,0.0000027652,0.0000027675,0.0000027586,0.0000027535, -0.0000027500,0.0000027521,0.0000027589,0.0000027565,0.0000027416, -0.0000027303,0.0000027317,0.0000027381,0.0000027391,0.0000027369, -0.0000027337,0.0000027297,0.0000027259,0.0000027225,0.0000027218, -0.0000027220,0.0000027191,0.0000027165,0.0000027156,0.0000027118, -0.0000027036,0.0000026954,0.0000026917,0.0000026915,0.0000026925, -0.0000026962,0.0000027023,0.0000027038,0.0000027026,0.0000027090, -0.0000027254,0.0000027400,0.0000027448,0.0000027441,0.0000027425, -0.0000027399,0.0000027379,0.0000027371,0.0000027370,0.0000027384, -0.0000027392,0.0000027372,0.0000027319,0.0000027248,0.0000027166, -0.0000027086,0.0000027029,0.0000026997,0.0000026934,0.0000026872, -0.0000026870,0.0000026983,0.0000027085,0.0000027129,0.0000027186, -0.0000027203,0.0000027099,0.0000026959,0.0000026862,0.0000026801, -0.0000026776,0.0000026751,0.0000026730,0.0000026718,0.0000026707, -0.0000026670,0.0000026659,0.0000026678,0.0000026667,0.0000026608, -0.0000026558,0.0000026529,0.0000026493,0.0000026444,0.0000026411, -0.0000026388,0.0000026343,0.0000026289,0.0000026266,0.0000026267, -0.0000026258,0.0000026230,0.0000026207,0.0000026178,0.0000026120, -0.0000026037,0.0000025958,0.0000025905,0.0000025886,0.0000025887, -0.0000025888,0.0000025871,0.0000025842,0.0000025808,0.0000025765, -0.0000025730,0.0000025725,0.0000025753,0.0000025751,0.0000025600, -0.0000025375,0.0000025238,0.0000025156,0.0000025059,0.0000024974, -0.0000024893,0.0000024769,0.0000024611,0.0000024462,0.0000024349, -0.0000024270,0.0000024217,0.0000024168,0.0000024112,0.0000024055, -0.0000024003,0.0000023960,0.0000023936,0.0000023941,0.0000023969, -0.0000024007,0.0000024039,0.0000024059,0.0000024080,0.0000024113, -0.0000024155,0.0000024168,0.0000024205,0.0000024335,0.0000024443, -0.0000024563,0.0000024715,0.0000024842,0.0000025179,0.0000025728, -0.0000026041,0.0000026134,0.0000026255,0.0000026385,0.0000026442, -0.0000026436,0.0000026379,0.0000026246,0.0000026121,0.0000025996, -0.0000025885,0.0000025719,0.0000025566,0.0000025654,0.0000025528, -0.0000025420,0.0000025647,0.0000026421,0.0000027136,0.0000027645, -0.0000027764,0.0000027738,0.0000027702,0.0000027712,0.0000027733, -0.0000027629,0.0000027544,0.0000027564,0.0000027592,0.0000027634, -0.0000027704,0.0000027698,0.0000027611,0.0000027518,0.0000027474, -0.0000027468,0.0000027500,0.0000027493,0.0000027440,0.0000027408, -0.0000027445,0.0000027499,0.0000027529,0.0000027542,0.0000027533, -0.0000027511,0.0000027455,0.0000027343,0.0000027200,0.0000027114, -0.0000027049,0.0000027016,0.0000026991,0.0000026988,0.0000027017, -0.0000027076,0.0000027140,0.0000027194,0.0000027219,0.0000027199, -0.0000027145,0.0000027051,0.0000026980,0.0000026950,0.0000026950, -0.0000026946,0.0000026910,0.0000026849,0.0000026784,0.0000026743, -0.0000026773,0.0000026813,0.0000026773,0.0000026705,0.0000026711, -0.0000026734,0.0000026698,0.0000026634,0.0000026606,0.0000026624, -0.0000026692,0.0000026769,0.0000026814,0.0000026824,0.0000026758, -0.0000026603,0.0000026291,0.0000025928,0.0000025757,0.0000025733, -0.0000025683,0.0000025600,0.0000025503,0.0000025435,0.0000025369, -0.0000025277,0.0000025239,0.0000025307,0.0000025385,0.0000025406, -0.0000025410,0.0000025420,0.0000025429,0.0000025426,0.0000025397, -0.0000025341,0.0000025254,0.0000025139,0.0000025016,0.0000024907, -0.0000024825,0.0000024765,0.0000024713,0.0000024676,0.0000024654, -0.0000024643,0.0000024673,0.0000024737,0.0000024847,0.0000025014, -0.0000025232,0.0000025453,0.0000025613,0.0000025662,0.0000025628, -0.0000025527,0.0000025432,0.0000025373,0.0000025365,0.0000025375, -0.0000025398,0.0000025412,0.0000025480,0.0000025689,0.0000025805, -0.0000025796,0.0000025818,0.0000025852,0.0000025877,0.0000025840, -0.0000025765,0.0000025698,0.0000025670,0.0000025743,0.0000025745, -0.0000025682,0.0000025591,0.0000025498,0.0000025437,0.0000025369, -0.0000025304,0.0000025286,0.0000025319,0.0000025393,0.0000025464, -0.0000025481,0.0000025382,0.0000025168,0.0000024999,0.0000024916, -0.0000024857,0.0000024790,0.0000024817,0.0000025046,0.0000025248, -0.0000025271,0.0000025323,0.0000025238,0.0000025196,0.0000025237, -0.0000025121,0.0000024954,0.0000024904,0.0000024949,0.0000025135, -0.0000025269,0.0000025340,0.0000025684,0.0000026133,0.0000026326, -0.0000026351,0.0000026341,0.0000026270,0.0000026127,0.0000025957, -0.0000025826,0.0000025764,0.0000025684,0.0000025666,0.0000025743, -0.0000025869,0.0000025948,0.0000025968,0.0000025973,0.0000025989, -0.0000026031,0.0000026077,0.0000026091,0.0000026104,0.0000026111, -0.0000026103,0.0000026087,0.0000026093,0.0000026132,0.0000026231, -0.0000026367,0.0000026443,0.0000026436,0.0000026410,0.0000026412, -0.0000026450,0.0000026501,0.0000026556,0.0000026596,0.0000026609, -0.0000026628,0.0000026673,0.0000026706,0.0000026725,0.0000026747, -0.0000026761,0.0000026770,0.0000026778,0.0000026785,0.0000026788, -0.0000026780,0.0000026761,0.0000026744,0.0000026730,0.0000026715, -0.0000026693,0.0000026663,0.0000026638,0.0000026624,0.0000026617, -0.0000026614,0.0000026625,0.0000026653,0.0000026696,0.0000026741, -0.0000026783,0.0000026827,0.0000026872,0.0000026913,0.0000026948, -0.0000026955,0.0000026948,0.0000026962,0.0000027004,0.0000027050, -0.0000027070,0.0000027051,0.0000026963,0.0000026814,0.0000026641, -0.0000026508,0.0000026478,0.0000026518,0.0000026599,0.0000026671, -0.0000026740,0.0000026821,0.0000026923,0.0000027050,0.0000027193, -0.0000027345,0.0000027494,0.0000027622,0.0000027708,0.0000027739, -0.0000027725,0.0000027690,0.0000027658,0.0000027640,0.0000027635, -0.0000027650,0.0000027690,0.0000027737,0.0000027772,0.0000027784, -0.0000027774,0.0000027714,0.0000027635,0.0000027583,0.0000027576, -0.0000027598,0.0000027599,0.0000027566,0.0000027526,0.0000027466, -0.0000027388,0.0000027292,0.0000027186,0.0000027097,0.0000027047, -0.0000027028,0.0000027014,0.0000026990,0.0000026968,0.0000026959, -0.0000026956,0.0000026936,0.0000026886,0.0000026813,0.0000026737, -0.0000026669,0.0000026609,0.0000026543,0.0000026466,0.0000026396, -0.0000026347,0.0000026316,0.0000026304,0.0000026290,0.0000026271, -0.0000026264,0.0000026280,0.0000026303,0.0000026315,0.0000026322, -0.0000026340,0.0000026386,0.0000026462,0.0000026568,0.0000026692, -0.0000026830,0.0000026962,0.0000027093,0.0000027223,0.0000027321, -0.0000027368,0.0000027419,0.0000027559,0.0000027764,0.0000027937, -0.0000028024,0.0000028039,0.0000028019,0.0000027980,0.0000027930, -0.0000027903,0.0000027907,0.0000027956,0.0000028002,0.0000027996, -0.0000027943,0.0000027895,0.0000027901,0.0000027959,0.0000028061, -0.0000028147,0.0000028202,0.0000028246,0.0000028278,0.0000028292, -0.0000028290,0.0000028253,0.0000028165,0.0000028054,0.0000027962, -0.0000027913,0.0000027892,0.0000027879,0.0000027848,0.0000027797, -0.0000027754,0.0000027736,0.0000027736,0.0000027733,0.0000027694, -0.0000027622,0.0000027584,0.0000027620,0.0000027718,0.0000027818, -0.0000027893,0.0000027946,0.0000028016,0.0000028126,0.0000028215, -0.0000028223,0.0000028182,0.0000028172,0.0000028210,0.0000028233, -0.0000028211,0.0000028133,0.0000028030,0.0000027927,0.0000027809, -0.0000027693,0.0000027626,0.0000027612,0.0000027653,0.0000027762, -0.0000027861,0.0000027915,0.0000027966,0.0000028021,0.0000028043, -0.0000028021,0.0000027966,0.0000027918,0.0000027891,0.0000027855, -0.0000027803,0.0000027756,0.0000027736,0.0000027740,0.0000027747, -0.0000027739,0.0000027711,0.0000027667,0.0000027615,0.0000027567, -0.0000027525,0.0000027487,0.0000027449,0.0000027409,0.0000027373, -0.0000027360,0.0000027354,0.0000027331,0.0000027292,0.0000027262, -0.0000027249,0.0000027265,0.0000027307,0.0000027365,0.0000027427, -0.0000027482,0.0000027521,0.0000027545,0.0000027570,0.0000027604, -0.0000027639,0.0000027672,0.0000027700,0.0000027718,0.0000027728, -0.0000027735,0.0000027740,0.0000027742,0.0000027746,0.0000027758, -0.0000027755,0.0000027736,0.0000027697,0.0000027629,0.0000027508, -0.0000027328,0.0000027143,0.0000027012,0.0000026935,0.0000026892, -0.0000026862,0.0000026818,0.0000026759,0.0000026692,0.0000026649, -0.0000026650,0.0000026668,0.0000026678,0.0000026689,0.0000026706, -0.0000026703,0.0000026697,0.0000026702,0.0000026672,0.0000026643, -0.0000026629,0.0000026613,0.0000026588,0.0000026563,0.0000026519, -0.0000026470,0.0000026453,0.0000026457,0.0000026465,0.0000026480, -0.0000026515,0.0000026557,0.0000026590,0.0000026615,0.0000026637, -0.0000026651,0.0000026698,0.0000026808,0.0000026936,0.0000027001, -0.0000027011,0.0000027012,0.0000026988,0.0000026903,0.0000026794, -0.0000026741,0.0000026791,0.0000026903,0.0000026981,0.0000027040, -0.0000027048,0.0000027029,0.0000026887,0.0000026342,0.0000025993, -0.0000026042,0.0000026196,0.0000026514,0.0000026790,0.0000026959, -0.0000027144,0.0000027511,0.0000027927,0.0000028155,0.0000028217, -0.0000028229,0.0000028223,0.0000028210,0.0000028174,0.0000028117, -0.0000028037,0.0000027961,0.0000027934,0.0000027954,0.0000027982, -0.0000027980,0.0000027978,0.0000028008,0.0000028036,0.0000028019, -0.0000027982,0.0000027951,0.0000027958,0.0000027976,0.0000027968, -0.0000027943,0.0000027937,0.0000027963,0.0000027969,0.0000027956, -0.0000027872,0.0000027772,0.0000027756,0.0000027826,0.0000028032, -0.0000028248,0.0000028358,0.0000028309,0.0000028160,0.0000028130, -0.0000028104,0.0000028081,0.0000028060,0.0000027994,0.0000028112, -0.0000028277,0.0000028390,0.0000028482,0.0000028563,0.0000028665, -0.0000028727,0.0000028726,0.0000028712,0.0000028695,0.0000028654, -0.0000028600,0.0000028543,0.0000028486,0.0000028437,0.0000028399, -0.0000028375,0.0000028340,0.0000028288,0.0000028244,0.0000028208, -0.0000028153,0.0000028070,0.0000027943,0.0000027764,0.0000027607, -0.0000027550,0.0000027558,0.0000027574,0.0000027509,0.0000027326, -0.0000027136,0.0000027043,0.0000027039,0.0000027136,0.0000027333, -0.0000027560,0.0000027737,0.0000027834,0.0000027876,0.0000027900, -0.0000027938,0.0000027989,0.0000028005,0.0000027985,0.0000027955, -0.0000027920,0.0000027853,0.0000027757,0.0000027686,0.0000027625, -0.0000027481,0.0000027275,0.0000027105,0.0000026970,0.0000026794, -0.0000026578,0.0000026379,0.0000026200,0.0000026047,0.0000025956, -0.0000025917,0.0000025892,0.0000025868,0.0000025846,0.0000025842, -0.0000025834,0.0000025824,0.0000025817,0.0000025808,0.0000025790, -0.0000025774,0.0000025766,0.0000025753,0.0000025728,0.0000025715, -0.0000025778,0.0000025952,0.0000026174,0.0000026341,0.0000026438, -0.0000026509,0.0000026570,0.0000026609,0.0000026617,0.0000026591, -0.0000026553,0.0000026533,0.0000026540,0.0000026553,0.0000026537, -0.0000026482,0.0000026430,0.0000026421,0.0000026467,0.0000026559, -0.0000026659,0.0000026734,0.0000026781,0.0000026813,0.0000026840, -0.0000026868,0.0000026896,0.0000026932,0.0000026990,0.0000027063, -0.0000027127,0.0000027178,0.0000027227,0.0000027268,0.0000027291, -0.0000027294,0.0000027227,0.0000027101,0.0000026943,0.0000026792, -0.0000026699,0.0000026684,0.0000026731,0.0000026824,0.0000026942, -0.0000027064,0.0000027160,0.0000027190,0.0000027172,0.0000027150, -0.0000027146,0.0000027153,0.0000027162,0.0000027177,0.0000027213, -0.0000027271,0.0000027325,0.0000027361,0.0000027381,0.0000027381, -0.0000027373,0.0000027394,0.0000027476,0.0000027609,0.0000027743, -0.0000027845,0.0000027897,0.0000027902,0.0000027891,0.0000027845, -0.0000027764,0.0000027681,0.0000027635,0.0000027633,0.0000027645, -0.0000027627,0.0000027577,0.0000027526,0.0000027503,0.0000027506, -0.0000027508,0.0000027511,0.0000027520,0.0000027527,0.0000027520, -0.0000027521,0.0000027543,0.0000027579,0.0000027628,0.0000027678, -0.0000027723,0.0000027751,0.0000027752,0.0000027743,0.0000027732, -0.0000027712,0.0000027677,0.0000027625,0.0000027579,0.0000027539, -0.0000027508,0.0000027487,0.0000027469,0.0000027445,0.0000027424, -0.0000027424,0.0000027450,0.0000027489,0.0000027517,0.0000027519, -0.0000027486,0.0000027430,0.0000027361,0.0000027287,0.0000027212, -0.0000027134,0.0000027054,0.0000026980,0.0000026938,0.0000026936, -0.0000026949,0.0000026953,0.0000026937,0.0000026901,0.0000026856, -0.0000026827,0.0000026816,0.0000026805,0.0000026784,0.0000026755, -0.0000026721,0.0000026684,0.0000026653,0.0000026639,0.0000026635, -0.0000026628,0.0000026616,0.0000026600,0.0000026583,0.0000026571, -0.0000026563,0.0000026565,0.0000026581,0.0000026588,0.0000026593, -0.0000026569,0.0000026529,0.0000026486,0.0000026442,0.0000026401, -0.0000026369,0.0000026341,0.0000026316,0.0000026307,0.0000026322, -0.0000026333,0.0000026330,0.0000026313,0.0000026285,0.0000026248, -0.0000026197,0.0000026128,0.0000026050,0.0000025975,0.0000025914, -0.0000025890,0.0000025902,0.0000025926,0.0000025944,0.0000025950, -0.0000025949,0.0000025957,0.0000025967,0.0000025962,0.0000025912, -0.0000025828,0.0000025762,0.0000025725,0.0000025647,0.0000025479, -0.0000025317,0.0000025272,0.0000025318,0.0000025403,0.0000025427, -0.0000025317,0.0000025080,0.0000024820,0.0000024668,0.0000024676, -0.0000024926,0.0000025372,0.0000025702,0.0000025815,0.0000025986, -0.0000026398,0.0000026867,0.0000027295,0.0000027630,0.0000027692, -0.0000027621,0.0000027541,0.0000027482,0.0000027501,0.0000027550, -0.0000027502,0.0000027386,0.0000027327,0.0000027365,0.0000027438, -0.0000027459,0.0000027445,0.0000027421,0.0000027385,0.0000027349, -0.0000027313,0.0000027288,0.0000027281,0.0000027256,0.0000027211, -0.0000027196,0.0000027181,0.0000027109,0.0000027009,0.0000026932, -0.0000026912,0.0000026918,0.0000026928,0.0000026994,0.0000027078, -0.0000027088,0.0000027062,0.0000027098,0.0000027227,0.0000027355, -0.0000027416,0.0000027428,0.0000027420,0.0000027411,0.0000027407, -0.0000027398,0.0000027389,0.0000027385,0.0000027338,0.0000027251, -0.0000027163,0.0000027103,0.0000027069,0.0000027040,0.0000027018, -0.0000026957,0.0000026882,0.0000026872,0.0000026968,0.0000027071, -0.0000027117,0.0000027174,0.0000027192,0.0000027077,0.0000026941, -0.0000026881,0.0000026831,0.0000026798,0.0000026765,0.0000026752, -0.0000026761,0.0000026739,0.0000026682,0.0000026670,0.0000026685, -0.0000026661,0.0000026585,0.0000026522,0.0000026483,0.0000026446, -0.0000026398,0.0000026380,0.0000026381,0.0000026356,0.0000026307, -0.0000026278,0.0000026272,0.0000026255,0.0000026225,0.0000026200, -0.0000026150,0.0000026048,0.0000025915,0.0000025788,0.0000025696, -0.0000025653,0.0000025652,0.0000025690,0.0000025741,0.0000025775, -0.0000025781,0.0000025758,0.0000025719,0.0000025694,0.0000025700, -0.0000025720,0.0000025682,0.0000025501,0.0000025293,0.0000025177, -0.0000025093,0.0000025009,0.0000024946,0.0000024865,0.0000024725, -0.0000024557,0.0000024406,0.0000024283,0.0000024186,0.0000024108, -0.0000024033,0.0000023959,0.0000023898,0.0000023856,0.0000023829, -0.0000023826,0.0000023837,0.0000023854,0.0000023870,0.0000023878, -0.0000023892,0.0000023923,0.0000023972,0.0000024056,0.0000024117, -0.0000024132,0.0000024235,0.0000024386,0.0000024512,0.0000024673, -0.0000024776,0.0000024957,0.0000025425,0.0000025879,0.0000026049, -0.0000026143,0.0000026283,0.0000026385,0.0000026404,0.0000026389, -0.0000026302,0.0000026160,0.0000026062,0.0000025946,0.0000025796, -0.0000025598,0.0000025643,0.0000025581,0.0000025423,0.0000025605, -0.0000026367,0.0000027088,0.0000027609,0.0000027752,0.0000027730, -0.0000027693,0.0000027720,0.0000027740,0.0000027626,0.0000027571, -0.0000027598,0.0000027622,0.0000027667,0.0000027734,0.0000027726, -0.0000027643,0.0000027538,0.0000027483,0.0000027465,0.0000027497, -0.0000027516,0.0000027488,0.0000027447,0.0000027464,0.0000027513, -0.0000027547,0.0000027552,0.0000027538,0.0000027505,0.0000027447, -0.0000027354,0.0000027230,0.0000027163,0.0000027067,0.0000026987, -0.0000026927,0.0000026895,0.0000026896,0.0000026946,0.0000027022, -0.0000027104,0.0000027175,0.0000027188,0.0000027166,0.0000027108, -0.0000027034,0.0000026976,0.0000026959,0.0000026949,0.0000026928, -0.0000026889,0.0000026852,0.0000026803,0.0000026760,0.0000026790, -0.0000026818,0.0000026759,0.0000026715,0.0000026744,0.0000026755, -0.0000026709,0.0000026655,0.0000026659,0.0000026719,0.0000026801, -0.0000026844,0.0000026850,0.0000026775,0.0000026578,0.0000026218, -0.0000025857,0.0000025725,0.0000025691,0.0000025607,0.0000025507, -0.0000025433,0.0000025371,0.0000025267,0.0000025181,0.0000025235, -0.0000025356,0.0000025398,0.0000025410,0.0000025428,0.0000025433, -0.0000025421,0.0000025405,0.0000025381,0.0000025342,0.0000025271, -0.0000025158,0.0000025032,0.0000024915,0.0000024820,0.0000024757, -0.0000024704,0.0000024664,0.0000024643,0.0000024631,0.0000024642, -0.0000024661,0.0000024686,0.0000024715,0.0000024791,0.0000024937, -0.0000025170,0.0000025425,0.0000025604,0.0000025641,0.0000025606, -0.0000025516,0.0000025441,0.0000025412,0.0000025420,0.0000025441, -0.0000025496,0.0000025657,0.0000025826,0.0000025838,0.0000025826, -0.0000025836,0.0000025878,0.0000025877,0.0000025818,0.0000025736, -0.0000025653,0.0000025644,0.0000025734,0.0000025723,0.0000025634, -0.0000025529,0.0000025462,0.0000025416,0.0000025371,0.0000025312, -0.0000025285,0.0000025298,0.0000025343,0.0000025406,0.0000025457, -0.0000025435,0.0000025303,0.0000025100,0.0000024956,0.0000024893, -0.0000024802,0.0000024763,0.0000024943,0.0000025202,0.0000025239, -0.0000025292,0.0000025258,0.0000025148,0.0000025197,0.0000025173, -0.0000025006,0.0000024900,0.0000024886,0.0000025017,0.0000025221, -0.0000025278,0.0000025428,0.0000025853,0.0000026213,0.0000026330, -0.0000026338,0.0000026309,0.0000026200,0.0000026030,0.0000025847, -0.0000025764,0.0000025720,0.0000025665,0.0000025681,0.0000025780, -0.0000025872,0.0000025911,0.0000025934,0.0000025973,0.0000026031, -0.0000026075,0.0000026098,0.0000026123,0.0000026124,0.0000026098, -0.0000026072,0.0000026073,0.0000026103,0.0000026179,0.0000026294, -0.0000026393,0.0000026427,0.0000026418,0.0000026411,0.0000026428, -0.0000026469,0.0000026525,0.0000026559,0.0000026564,0.0000026573, -0.0000026606,0.0000026631,0.0000026650,0.0000026673,0.0000026691, -0.0000026707,0.0000026722,0.0000026739,0.0000026752,0.0000026752, -0.0000026738,0.0000026731,0.0000026726,0.0000026718,0.0000026699, -0.0000026666,0.0000026635,0.0000026614,0.0000026606,0.0000026606, -0.0000026620,0.0000026643,0.0000026676,0.0000026713,0.0000026752, -0.0000026800,0.0000026847,0.0000026884,0.0000026909,0.0000026909, -0.0000026882,0.0000026858,0.0000026864,0.0000026895,0.0000026914, -0.0000026904,0.0000026847,0.0000026746,0.0000026618,0.0000026502, -0.0000026461,0.0000026493,0.0000026554,0.0000026603,0.0000026665, -0.0000026757,0.0000026872,0.0000027012,0.0000027172,0.0000027340, -0.0000027498,0.0000027631,0.0000027716,0.0000027738,0.0000027716, -0.0000027671,0.0000027629,0.0000027598,0.0000027584,0.0000027596, -0.0000027638,0.0000027696,0.0000027754,0.0000027789,0.0000027783, -0.0000027714,0.0000027627,0.0000027574,0.0000027550,0.0000027535, -0.0000027512,0.0000027459,0.0000027404,0.0000027345,0.0000027274, -0.0000027184,0.0000027077,0.0000026974,0.0000026914,0.0000026908, -0.0000026923,0.0000026937,0.0000026942,0.0000026936,0.0000026921, -0.0000026883,0.0000026809,0.0000026707,0.0000026601,0.0000026519, -0.0000026462,0.0000026413,0.0000026354,0.0000026307,0.0000026282, -0.0000026271,0.0000026268,0.0000026254,0.0000026223,0.0000026193, -0.0000026184,0.0000026190,0.0000026193,0.0000026185,0.0000026183, -0.0000026209,0.0000026275,0.0000026377,0.0000026511,0.0000026668, -0.0000026822,0.0000026970,0.0000027099,0.0000027212,0.0000027298, -0.0000027350,0.0000027420,0.0000027574,0.0000027778,0.0000027950, -0.0000028041,0.0000028049,0.0000028016,0.0000027958,0.0000027908, -0.0000027895,0.0000027926,0.0000027985,0.0000028018,0.0000028007, -0.0000027959,0.0000027918,0.0000027925,0.0000027979,0.0000028040, -0.0000028110,0.0000028164,0.0000028202,0.0000028230,0.0000028248, -0.0000028245,0.0000028201,0.0000028116,0.0000028037,0.0000027985, -0.0000027940,0.0000027878,0.0000027803,0.0000027736,0.0000027701, -0.0000027677,0.0000027652,0.0000027645,0.0000027649,0.0000027632, -0.0000027586,0.0000027572,0.0000027637,0.0000027748,0.0000027838, -0.0000027889,0.0000027941,0.0000028035,0.0000028157,0.0000028238, -0.0000028231,0.0000028173,0.0000028168,0.0000028219,0.0000028249, -0.0000028226,0.0000028144,0.0000028039,0.0000027935,0.0000027819, -0.0000027704,0.0000027630,0.0000027602,0.0000027634,0.0000027737, -0.0000027842,0.0000027908,0.0000027964,0.0000028010,0.0000028018, -0.0000027981,0.0000027918,0.0000027869,0.0000027839,0.0000027805, -0.0000027752,0.0000027701,0.0000027691,0.0000027707,0.0000027719, -0.0000027704,0.0000027652,0.0000027577,0.0000027503,0.0000027445, -0.0000027400,0.0000027358,0.0000027315,0.0000027268,0.0000027237, -0.0000027237,0.0000027249,0.0000027248,0.0000027237,0.0000027222, -0.0000027212,0.0000027221,0.0000027251,0.0000027297,0.0000027347, -0.0000027389,0.0000027416,0.0000027438,0.0000027474,0.0000027522, -0.0000027569,0.0000027614,0.0000027652,0.0000027677,0.0000027693, -0.0000027703,0.0000027706,0.0000027704,0.0000027710,0.0000027725, -0.0000027728,0.0000027711,0.0000027675,0.0000027612,0.0000027504, -0.0000027353,0.0000027205,0.0000027117,0.0000027097,0.0000027109, -0.0000027121,0.0000027099,0.0000027042,0.0000026971,0.0000026923, -0.0000026895,0.0000026872,0.0000026848,0.0000026830,0.0000026810, -0.0000026787,0.0000026768,0.0000026730,0.0000026679,0.0000026632, -0.0000026620,0.0000026611,0.0000026594,0.0000026573,0.0000026537, -0.0000026505,0.0000026497,0.0000026494,0.0000026489,0.0000026488, -0.0000026507,0.0000026536,0.0000026567,0.0000026591,0.0000026614, -0.0000026630,0.0000026677,0.0000026769,0.0000026882,0.0000026947, -0.0000026970,0.0000026987,0.0000026980,0.0000026907,0.0000026781, -0.0000026714,0.0000026747,0.0000026866,0.0000026957,0.0000026999, -0.0000027029,0.0000027026,0.0000026998,0.0000026723,0.0000026158, -0.0000026010,0.0000026069,0.0000026233,0.0000026560,0.0000026835, -0.0000027021,0.0000027216,0.0000027563,0.0000027911,0.0000028100, -0.0000028171,0.0000028178,0.0000028164,0.0000028127,0.0000028070, -0.0000027987,0.0000027903,0.0000027863,0.0000027875,0.0000027906, -0.0000027911,0.0000027907,0.0000027951,0.0000028004,0.0000028003, -0.0000027957,0.0000027906,0.0000027916,0.0000027959,0.0000027969, -0.0000027939,0.0000027914,0.0000027947,0.0000027967,0.0000027959, -0.0000027902,0.0000027787,0.0000027746,0.0000027783,0.0000027948, -0.0000028180,0.0000028346,0.0000028363,0.0000028213,0.0000028109, -0.0000028115,0.0000028061,0.0000028042,0.0000027980,0.0000027987, -0.0000028161,0.0000028299,0.0000028398,0.0000028488,0.0000028562, -0.0000028658,0.0000028719,0.0000028720,0.0000028699,0.0000028655, -0.0000028598,0.0000028546,0.0000028496,0.0000028446,0.0000028398, -0.0000028340,0.0000028279,0.0000028228,0.0000028193,0.0000028154, -0.0000028077,0.0000027959,0.0000027805,0.0000027654,0.0000027576, -0.0000027571,0.0000027609,0.0000027612,0.0000027517,0.0000027297, -0.0000027087,0.0000026978,0.0000026959,0.0000027014,0.0000027184, -0.0000027402,0.0000027593,0.0000027736,0.0000027835,0.0000027893, -0.0000027946,0.0000028003,0.0000028033,0.0000028029,0.0000028014, -0.0000027993,0.0000027939,0.0000027834,0.0000027728,0.0000027634, -0.0000027478,0.0000027256,0.0000027058,0.0000026914,0.0000026764, -0.0000026572,0.0000026365,0.0000026169,0.0000026014,0.0000025937, -0.0000025913,0.0000025887,0.0000025862,0.0000025851,0.0000025859, -0.0000025867,0.0000025857,0.0000025834,0.0000025806,0.0000025780, -0.0000025761,0.0000025753,0.0000025745,0.0000025722,0.0000025682, -0.0000025646,0.0000025647,0.0000025752,0.0000025970,0.0000026212, -0.0000026390,0.0000026478,0.0000026512,0.0000026532,0.0000026548, -0.0000026550,0.0000026529,0.0000026501,0.0000026487,0.0000026473, -0.0000026426,0.0000026352,0.0000026305,0.0000026322,0.0000026409, -0.0000026527,0.0000026609,0.0000026641,0.0000026647,0.0000026650, -0.0000026661,0.0000026685,0.0000026715,0.0000026751,0.0000026807, -0.0000026882,0.0000026962,0.0000027042,0.0000027126,0.0000027205, -0.0000027266,0.0000027302,0.0000027304,0.0000027279,0.0000027214, -0.0000027069,0.0000026897,0.0000026759,0.0000026702,0.0000026709, -0.0000026764,0.0000026865,0.0000026991,0.0000027092,0.0000027130, -0.0000027126,0.0000027126,0.0000027136,0.0000027139,0.0000027127, -0.0000027108,0.0000027106,0.0000027139,0.0000027221,0.0000027331, -0.0000027404,0.0000027409,0.0000027396,0.0000027406,0.0000027475, -0.0000027588,0.0000027712,0.0000027812,0.0000027865,0.0000027871, -0.0000027852,0.0000027819,0.0000027768,0.0000027718,0.0000027693, -0.0000027690,0.0000027675,0.0000027636,0.0000027593,0.0000027556, -0.0000027527,0.0000027507,0.0000027508,0.0000027521,0.0000027525, -0.0000027514,0.0000027501,0.0000027505,0.0000027529,0.0000027574, -0.0000027631,0.0000027695,0.0000027745,0.0000027758,0.0000027762, -0.0000027762,0.0000027758,0.0000027740,0.0000027701,0.0000027654, -0.0000027603,0.0000027559,0.0000027544,0.0000027542,0.0000027543, -0.0000027549,0.0000027564,0.0000027586,0.0000027614,0.0000027646, -0.0000027667,0.0000027670,0.0000027654,0.0000027613,0.0000027545, -0.0000027451,0.0000027338,0.0000027222,0.0000027118,0.0000027037, -0.0000026993,0.0000026974,0.0000026957,0.0000026931,0.0000026884, -0.0000026826,0.0000026780,0.0000026755,0.0000026741,0.0000026724, -0.0000026695,0.0000026654,0.0000026615,0.0000026584,0.0000026560, -0.0000026544,0.0000026542,0.0000026549,0.0000026549,0.0000026522, -0.0000026477,0.0000026436,0.0000026427,0.0000026460,0.0000026521, -0.0000026566,0.0000026571,0.0000026545,0.0000026505,0.0000026458, -0.0000026422,0.0000026401,0.0000026388,0.0000026379,0.0000026378, -0.0000026389,0.0000026388,0.0000026368,0.0000026334,0.0000026292, -0.0000026243,0.0000026186,0.0000026118,0.0000026044,0.0000025970, -0.0000025911,0.0000025884,0.0000025897,0.0000025937,0.0000025973, -0.0000025973,0.0000025941,0.0000025920,0.0000025926,0.0000025933, -0.0000025898,0.0000025808,0.0000025731,0.0000025698,0.0000025627, -0.0000025466,0.0000025306,0.0000025243,0.0000025269,0.0000025347, -0.0000025381,0.0000025312,0.0000025101,0.0000024835,0.0000024620, -0.0000024571,0.0000024750,0.0000025209,0.0000025636,0.0000025790, -0.0000025933,0.0000026325,0.0000026807,0.0000027250,0.0000027601, -0.0000027698,0.0000027647,0.0000027546,0.0000027456,0.0000027457, -0.0000027471,0.0000027424,0.0000027366,0.0000027360,0.0000027396, -0.0000027479,0.0000027522,0.0000027523,0.0000027511,0.0000027486, -0.0000027451,0.0000027414,0.0000027372,0.0000027340,0.0000027310, -0.0000027256,0.0000027211,0.0000027203,0.0000027170,0.0000027078, -0.0000026978,0.0000026914,0.0000026905,0.0000026910,0.0000026939, -0.0000027040,0.0000027128,0.0000027125,0.0000027079,0.0000027086, -0.0000027173,0.0000027277,0.0000027342,0.0000027370,0.0000027377, -0.0000027379,0.0000027359,0.0000027325,0.0000027307,0.0000027259, -0.0000027177,0.0000027109,0.0000027091,0.0000027091,0.0000027078, -0.0000027044,0.0000026965,0.0000026880,0.0000026870,0.0000026954, -0.0000027059,0.0000027100,0.0000027153,0.0000027182,0.0000027068, -0.0000026921,0.0000026881,0.0000026847,0.0000026813,0.0000026779, -0.0000026766,0.0000026784,0.0000026758,0.0000026695,0.0000026685, -0.0000026696,0.0000026661,0.0000026563,0.0000026492,0.0000026453, -0.0000026409,0.0000026360,0.0000026358,0.0000026383,0.0000026378, -0.0000026330,0.0000026292,0.0000026278,0.0000026256,0.0000026224, -0.0000026189,0.0000026103,0.0000025943,0.0000025747,0.0000025565, -0.0000025425,0.0000025336,0.0000025305,0.0000025322,0.0000025383, -0.0000025477,0.0000025581,0.0000025661,0.0000025689,0.0000025682, -0.0000025671,0.0000025675,0.0000025672,0.0000025574,0.0000025370, -0.0000025190,0.0000025086,0.0000025000,0.0000024938,0.0000024905, -0.0000024819,0.0000024643,0.0000024450,0.0000024293,0.0000024167, -0.0000024059,0.0000023968,0.0000023893,0.0000023844,0.0000023820, -0.0000023811,0.0000023813,0.0000023827,0.0000023842,0.0000023851, -0.0000023845,0.0000023818,0.0000023795,0.0000023793,0.0000023821, -0.0000023908,0.0000024022,0.0000024074,0.0000024145,0.0000024313, -0.0000024460,0.0000024611,0.0000024722,0.0000024798,0.0000025089, -0.0000025593,0.0000025927,0.0000026044,0.0000026153,0.0000026283, -0.0000026356,0.0000026380,0.0000026352,0.0000026218,0.0000026114, -0.0000025995,0.0000025852,0.0000025636,0.0000025636,0.0000025621, -0.0000025435,0.0000025581,0.0000026328,0.0000027048,0.0000027572, -0.0000027743,0.0000027726,0.0000027690,0.0000027727,0.0000027745, -0.0000027627,0.0000027595,0.0000027631,0.0000027647,0.0000027691, -0.0000027753,0.0000027752,0.0000027682,0.0000027567,0.0000027498, -0.0000027473,0.0000027497,0.0000027531,0.0000027531,0.0000027500, -0.0000027502,0.0000027540,0.0000027572,0.0000027571,0.0000027547, -0.0000027495,0.0000027420,0.0000027340,0.0000027254,0.0000027195, -0.0000027108,0.0000027000,0.0000026910,0.0000026861,0.0000026842, -0.0000026872,0.0000026941,0.0000027026,0.0000027106,0.0000027138, -0.0000027137,0.0000027112,0.0000027063,0.0000027001,0.0000026974, -0.0000026961,0.0000026928,0.0000026875,0.0000026845,0.0000026842, -0.0000026806,0.0000026767,0.0000026798,0.0000026808,0.0000026751, -0.0000026740,0.0000026764,0.0000026758,0.0000026706,0.0000026693, -0.0000026734,0.0000026810,0.0000026851,0.0000026854,0.0000026765, -0.0000026547,0.0000026168,0.0000025823,0.0000025705,0.0000025654, -0.0000025548,0.0000025444,0.0000025386,0.0000025320,0.0000025191, -0.0000025159,0.0000025287,0.0000025377,0.0000025384,0.0000025415, -0.0000025445,0.0000025429,0.0000025408,0.0000025402,0.0000025399, -0.0000025391,0.0000025349,0.0000025246,0.0000025101,0.0000024953, -0.0000024831,0.0000024744,0.0000024676,0.0000024626,0.0000024601, -0.0000024597,0.0000024614,0.0000024639,0.0000024669,0.0000024698, -0.0000024714,0.0000024726,0.0000024765,0.0000024921,0.0000025190, -0.0000025457,0.0000025604,0.0000025618,0.0000025588,0.0000025562, -0.0000025552,0.0000025558,0.0000025583,0.0000025679,0.0000025819, -0.0000025871,0.0000025857,0.0000025844,0.0000025863,0.0000025890, -0.0000025866,0.0000025801,0.0000025690,0.0000025611,0.0000025642, -0.0000025730,0.0000025692,0.0000025588,0.0000025513,0.0000025452, -0.0000025415,0.0000025383,0.0000025340,0.0000025317,0.0000025319, -0.0000025334,0.0000025365,0.0000025413,0.0000025430,0.0000025392, -0.0000025225,0.0000025043,0.0000024939,0.0000024819,0.0000024729, -0.0000024845,0.0000025135,0.0000025215,0.0000025248,0.0000025276, -0.0000025147,0.0000025131,0.0000025191,0.0000025084,0.0000024925, -0.0000024864,0.0000024915,0.0000025103,0.0000025239,0.0000025285, -0.0000025530,0.0000025986,0.0000026246,0.0000026324,0.0000026321, -0.0000026269,0.0000026120,0.0000025919,0.0000025774,0.0000025746, -0.0000025691,0.0000025639,0.0000025679,0.0000025780,0.0000025847, -0.0000025889,0.0000025954,0.0000026011,0.0000026058,0.0000026098, -0.0000026127,0.0000026123,0.0000026091,0.0000026056,0.0000026042, -0.0000026056,0.0000026108,0.0000026203,0.0000026320,0.0000026403, -0.0000026427,0.0000026436,0.0000026444,0.0000026476,0.0000026522, -0.0000026537,0.0000026535,0.0000026533,0.0000026556,0.0000026576, -0.0000026597,0.0000026620,0.0000026639,0.0000026657,0.0000026679, -0.0000026702,0.0000026721,0.0000026729,0.0000026722,0.0000026721, -0.0000026722,0.0000026720,0.0000026704,0.0000026672,0.0000026631, -0.0000026591,0.0000026567,0.0000026562,0.0000026575,0.0000026601, -0.0000026638,0.0000026680,0.0000026722,0.0000026767,0.0000026813, -0.0000026849,0.0000026868,0.0000026865,0.0000026831,0.0000026777, -0.0000026741,0.0000026736,0.0000026743,0.0000026746,0.0000026730, -0.0000026688,0.0000026617,0.0000026527,0.0000026470,0.0000026478, -0.0000026519,0.0000026558,0.0000026621,0.0000026727,0.0000026868, -0.0000027043,0.0000027233,0.0000027401,0.0000027530,0.0000027628, -0.0000027702,0.0000027733,0.0000027707,0.0000027645,0.0000027581, -0.0000027535,0.0000027518,0.0000027541,0.0000027605,0.0000027690, -0.0000027768,0.0000027802,0.0000027782,0.0000027706,0.0000027631, -0.0000027586,0.0000027552,0.0000027513,0.0000027462,0.0000027397, -0.0000027324,0.0000027247,0.0000027161,0.0000027071,0.0000026982, -0.0000026907,0.0000026877,0.0000026889,0.0000026914,0.0000026925, -0.0000026903,0.0000026855,0.0000026798,0.0000026735,0.0000026652, -0.0000026542,0.0000026425,0.0000026334,0.0000026280,0.0000026249, -0.0000026219,0.0000026200,0.0000026206,0.0000026227,0.0000026250, -0.0000026248,0.0000026211,0.0000026161,0.0000026130,0.0000026123, -0.0000026126,0.0000026125,0.0000026120,0.0000026129,0.0000026177, -0.0000026253,0.0000026362,0.0000026507,0.0000026680,0.0000026870, -0.0000027031,0.0000027134,0.0000027201,0.0000027266,0.0000027343, -0.0000027457,0.0000027629,0.0000027825,0.0000027987,0.0000028063, -0.0000028061,0.0000028016,0.0000027949,0.0000027909,0.0000027918, -0.0000027970,0.0000028022,0.0000028042,0.0000028035,0.0000028010, -0.0000027998,0.0000028005,0.0000028034,0.0000028082,0.0000028128, -0.0000028159,0.0000028178,0.0000028201,0.0000028214,0.0000028203, -0.0000028151,0.0000028086,0.0000028026,0.0000027957,0.0000027865, -0.0000027767,0.0000027678,0.0000027629,0.0000027605,0.0000027565, -0.0000027536,0.0000027548,0.0000027583,0.0000027578,0.0000027540, -0.0000027556,0.0000027662,0.0000027789,0.0000027859,0.0000027884, -0.0000027940,0.0000028058,0.0000028177,0.0000028241,0.0000028219, -0.0000028159,0.0000028163,0.0000028223,0.0000028256,0.0000028232, -0.0000028150,0.0000028046,0.0000027946,0.0000027842,0.0000027741, -0.0000027658,0.0000027603,0.0000027616,0.0000027724,0.0000027843, -0.0000027925,0.0000027984,0.0000028012,0.0000028004,0.0000027953, -0.0000027889,0.0000027841,0.0000027801,0.0000027762,0.0000027714, -0.0000027674,0.0000027661,0.0000027666,0.0000027657,0.0000027613, -0.0000027540,0.0000027460,0.0000027393,0.0000027347,0.0000027316, -0.0000027278,0.0000027231,0.0000027176,0.0000027140,0.0000027134, -0.0000027139,0.0000027147,0.0000027154,0.0000027154,0.0000027161, -0.0000027184,0.0000027215,0.0000027250,0.0000027278,0.0000027295, -0.0000027303,0.0000027320,0.0000027357,0.0000027403,0.0000027451, -0.0000027502,0.0000027554,0.0000027599,0.0000027636,0.0000027659, -0.0000027672,0.0000027673,0.0000027680,0.0000027700,0.0000027708, -0.0000027696,0.0000027666,0.0000027611,0.0000027531,0.0000027427, -0.0000027322,0.0000027264,0.0000027262,0.0000027286,0.0000027300, -0.0000027281,0.0000027219,0.0000027145,0.0000027095,0.0000027054, -0.0000027022,0.0000026997,0.0000026976,0.0000026957,0.0000026941, -0.0000026906,0.0000026838,0.0000026765,0.0000026714,0.0000026693, -0.0000026680,0.0000026660,0.0000026633,0.0000026599,0.0000026565, -0.0000026545,0.0000026521,0.0000026501,0.0000026499,0.0000026512, -0.0000026546,0.0000026579,0.0000026606,0.0000026633,0.0000026657, -0.0000026707,0.0000026789,0.0000026878,0.0000026920,0.0000026938, -0.0000026961,0.0000026969,0.0000026903,0.0000026769,0.0000026705, -0.0000026726,0.0000026821,0.0000026928,0.0000026967,0.0000026979, -0.0000027006,0.0000026995,0.0000026948,0.0000026524,0.0000026062, -0.0000026012,0.0000026068,0.0000026261,0.0000026612,0.0000026906, -0.0000027089,0.0000027267,0.0000027562,0.0000027852,0.0000028030, -0.0000028098,0.0000028107,0.0000028084,0.0000028036,0.0000027964, -0.0000027893,0.0000027854,0.0000027863,0.0000027884,0.0000027883, -0.0000027867,0.0000027904,0.0000027978,0.0000028003,0.0000027974, -0.0000027910,0.0000027898,0.0000027939,0.0000027964,0.0000027941, -0.0000027900,0.0000027923,0.0000027964,0.0000027959,0.0000027920, -0.0000027816,0.0000027750,0.0000027772,0.0000027894,0.0000028116, -0.0000028312,0.0000028375,0.0000028276,0.0000028109,0.0000028095, -0.0000028073,0.0000028016,0.0000027987,0.0000027933,0.0000028024, -0.0000028203,0.0000028306,0.0000028402,0.0000028477,0.0000028544, -0.0000028628,0.0000028687,0.0000028704,0.0000028673,0.0000028618, -0.0000028563,0.0000028496,0.0000028424,0.0000028343,0.0000028260, -0.0000028198,0.0000028165,0.0000028135,0.0000028072,0.0000027964, -0.0000027827,0.0000027693,0.0000027613,0.0000027597,0.0000027625, -0.0000027657,0.0000027627,0.0000027484,0.0000027254,0.0000027050, -0.0000026933,0.0000026898,0.0000026915,0.0000027037,0.0000027228, -0.0000027411,0.0000027570,0.0000027717,0.0000027830,0.0000027908, -0.0000027977,0.0000028025,0.0000028033,0.0000028026,0.0000028014, -0.0000027975,0.0000027885,0.0000027773,0.0000027666,0.0000027511, -0.0000027293,0.0000027084,0.0000026923,0.0000026775,0.0000026592, -0.0000026372,0.0000026153,0.0000025996,0.0000025934,0.0000025923, -0.0000025907,0.0000025891,0.0000025898,0.0000025920,0.0000025933, -0.0000025915,0.0000025875,0.0000025822,0.0000025769,0.0000025733, -0.0000025716,0.0000025712,0.0000025702,0.0000025675,0.0000025638, -0.0000025608,0.0000025587,0.0000025602,0.0000025736,0.0000025990, -0.0000026254,0.0000026413,0.0000026458,0.0000026459,0.0000026462, -0.0000026474,0.0000026483,0.0000026486,0.0000026478,0.0000026447, -0.0000026375,0.0000026286,0.0000026236,0.0000026262,0.0000026359, -0.0000026468,0.0000026526,0.0000026533,0.0000026516,0.0000026487, -0.0000026471,0.0000026477,0.0000026507,0.0000026556,0.0000026621, -0.0000026702,0.0000026788,0.0000026871,0.0000026953,0.0000027035, -0.0000027118,0.0000027192,0.0000027246,0.0000027278,0.0000027284, -0.0000027242,0.0000027163,0.0000027010,0.0000026858,0.0000026756, -0.0000026726,0.0000026745,0.0000026817,0.0000026930,0.0000027026, -0.0000027069,0.0000027080,0.0000027093,0.0000027110,0.0000027114, -0.0000027097,0.0000027064,0.0000027040,0.0000027067,0.0000027175, -0.0000027335,0.0000027442,0.0000027463,0.0000027443,0.0000027442, -0.0000027491,0.0000027581,0.0000027681,0.0000027760,0.0000027803, -0.0000027814,0.0000027801,0.0000027769,0.0000027744,0.0000027731, -0.0000027728,0.0000027719,0.0000027702,0.0000027687,0.0000027660, -0.0000027609,0.0000027551,0.0000027526,0.0000027540,0.0000027556, -0.0000027549,0.0000027520,0.0000027501,0.0000027493,0.0000027513, -0.0000027560,0.0000027635,0.0000027711,0.0000027745,0.0000027757, -0.0000027773,0.0000027786,0.0000027778,0.0000027746,0.0000027699, -0.0000027647,0.0000027597,0.0000027575,0.0000027574,0.0000027589, -0.0000027621,0.0000027659,0.0000027685,0.0000027705,0.0000027716, -0.0000027718,0.0000027721,0.0000027738,0.0000027753,0.0000027746, -0.0000027689,0.0000027573,0.0000027427,0.0000027287,0.0000027181, -0.0000027112,0.0000027058,0.0000027000,0.0000026940,0.0000026882, -0.0000026823,0.0000026776,0.0000026745,0.0000026725,0.0000026705, -0.0000026675,0.0000026629,0.0000026587,0.0000026561,0.0000026532, -0.0000026507,0.0000026497,0.0000026504,0.0000026509,0.0000026494, -0.0000026442,0.0000026378,0.0000026340,0.0000026358,0.0000026420, -0.0000026489,0.0000026519,0.0000026510,0.0000026477,0.0000026436, -0.0000026408,0.0000026400,0.0000026393,0.0000026392,0.0000026398, -0.0000026401,0.0000026392,0.0000026360,0.0000026318,0.0000026270, -0.0000026215,0.0000026153,0.0000026090,0.0000026026,0.0000025964, -0.0000025914,0.0000025889,0.0000025901,0.0000025947,0.0000025994, -0.0000025998,0.0000025952,0.0000025906,0.0000025893,0.0000025895, -0.0000025859,0.0000025768,0.0000025691,0.0000025658,0.0000025580, -0.0000025426,0.0000025295,0.0000025237,0.0000025238,0.0000025298, -0.0000025340,0.0000025295,0.0000025108,0.0000024844,0.0000024608, -0.0000024503,0.0000024602,0.0000025030,0.0000025538,0.0000025761, -0.0000025871,0.0000026235,0.0000026728,0.0000027185,0.0000027565, -0.0000027689,0.0000027659,0.0000027546,0.0000027419,0.0000027386, -0.0000027379,0.0000027348,0.0000027349,0.0000027377,0.0000027419, -0.0000027492,0.0000027551,0.0000027570,0.0000027565,0.0000027550, -0.0000027520,0.0000027482,0.0000027434,0.0000027381,0.0000027338, -0.0000027294,0.0000027227,0.0000027195,0.0000027193,0.0000027133, -0.0000027034,0.0000026941,0.0000026891,0.0000026891,0.0000026906, -0.0000026969,0.0000027083,0.0000027157,0.0000027147,0.0000027097, -0.0000027084,0.0000027113,0.0000027166,0.0000027214,0.0000027244, -0.0000027260,0.0000027251,0.0000027218,0.0000027202,0.0000027182, -0.0000027140,0.0000027113,0.0000027121,0.0000027132,0.0000027115, -0.0000027064,0.0000026966,0.0000026873,0.0000026856,0.0000026936, -0.0000027047,0.0000027083,0.0000027127,0.0000027169,0.0000027068, -0.0000026909,0.0000026862,0.0000026842,0.0000026815,0.0000026790, -0.0000026778,0.0000026790,0.0000026752,0.0000026700,0.0000026701, -0.0000026709,0.0000026665,0.0000026560,0.0000026480,0.0000026441, -0.0000026390,0.0000026350,0.0000026357,0.0000026399,0.0000026399, -0.0000026356,0.0000026311,0.0000026290,0.0000026266,0.0000026233, -0.0000026177,0.0000026040,0.0000025813,0.0000025563,0.0000025346, -0.0000025182,0.0000025072,0.0000025010,0.0000024998,0.0000025021, -0.0000025084,0.0000025181,0.0000025307,0.0000025438,0.0000025540, -0.0000025595,0.0000025606,0.0000025603,0.0000025557,0.0000025420, -0.0000025228,0.0000025076,0.0000024974,0.0000024891,0.0000024857, -0.0000024842,0.0000024730,0.0000024511,0.0000024300,0.0000024149, -0.0000024035,0.0000023941,0.0000023872,0.0000023832,0.0000023816, -0.0000023815,0.0000023825,0.0000023843,0.0000023864,0.0000023883, -0.0000023889,0.0000023879,0.0000023847,0.0000023798,0.0000023743, -0.0000023714,0.0000023751,0.0000023878,0.0000024007,0.0000024071, -0.0000024216,0.0000024395,0.0000024541,0.0000024652,0.0000024693, -0.0000024814,0.0000025206,0.0000025686,0.0000025938,0.0000026033, -0.0000026143,0.0000026265,0.0000026352,0.0000026370,0.0000026268, -0.0000026148,0.0000026032,0.0000025889,0.0000025669,0.0000025649, -0.0000025651,0.0000025443,0.0000025565,0.0000026300,0.0000027017, -0.0000027538,0.0000027735,0.0000027725,0.0000027694,0.0000027730, -0.0000027749,0.0000027632,0.0000027611,0.0000027656,0.0000027667, -0.0000027707,0.0000027764,0.0000027774,0.0000027725,0.0000027617, -0.0000027534,0.0000027502,0.0000027514,0.0000027547,0.0000027570, -0.0000027563,0.0000027559,0.0000027580,0.0000027599,0.0000027590, -0.0000027549,0.0000027475,0.0000027383,0.0000027308,0.0000027253, -0.0000027212,0.0000027147,0.0000027048,0.0000026950,0.0000026875, -0.0000026849,0.0000026865,0.0000026923,0.0000026997,0.0000027058, -0.0000027083,0.0000027086,0.0000027083,0.0000027066,0.0000027017, -0.0000026989,0.0000026983,0.0000026954,0.0000026879,0.0000026807, -0.0000026803,0.0000026818,0.0000026791,0.0000026769,0.0000026801, -0.0000026797,0.0000026759,0.0000026761,0.0000026771,0.0000026741, -0.0000026718,0.0000026738,0.0000026800,0.0000026847,0.0000026846, -0.0000026744,0.0000026522,0.0000026146,0.0000025813,0.0000025696, -0.0000025625,0.0000025508,0.0000025404,0.0000025358,0.0000025282, -0.0000025159,0.0000025188,0.0000025349,0.0000025370,0.0000025371, -0.0000025425,0.0000025448,0.0000025422,0.0000025399,0.0000025397, -0.0000025407,0.0000025422,0.0000025420,0.0000025358,0.0000025216, -0.0000025031,0.0000024866,0.0000024752,0.0000024662,0.0000024586, -0.0000024544,0.0000024536,0.0000024552,0.0000024572,0.0000024604, -0.0000024653,0.0000024696,0.0000024723,0.0000024727,0.0000024726, -0.0000024778,0.0000024968,0.0000025255,0.0000025500,0.0000025626, -0.0000025661,0.0000025667,0.0000025683,0.0000025698,0.0000025743, -0.0000025815,0.0000025873,0.0000025875,0.0000025869,0.0000025854, -0.0000025890,0.0000025887,0.0000025848,0.0000025762,0.0000025646, -0.0000025584,0.0000025655,0.0000025720,0.0000025660,0.0000025595, -0.0000025537,0.0000025479,0.0000025439,0.0000025401,0.0000025366, -0.0000025359,0.0000025366,0.0000025365,0.0000025363,0.0000025372, -0.0000025405,0.0000025402,0.0000025312,0.0000025175,0.0000025035, -0.0000024857,0.0000024728,0.0000024769,0.0000025045,0.0000025194, -0.0000025203,0.0000025262,0.0000025175,0.0000025084,0.0000025168, -0.0000025155,0.0000024995,0.0000024861,0.0000024854,0.0000024977, -0.0000025163,0.0000025235,0.0000025301,0.0000025637,0.0000026068, -0.0000026267,0.0000026315,0.0000026303,0.0000026210,0.0000026019, -0.0000025826,0.0000025759,0.0000025730,0.0000025647,0.0000025613, -0.0000025677,0.0000025770,0.0000025840,0.0000025912,0.0000025973, -0.0000026027,0.0000026078,0.0000026111,0.0000026115,0.0000026078, -0.0000026030,0.0000026004,0.0000026011,0.0000026055,0.0000026128, -0.0000026237,0.0000026343,0.0000026409,0.0000026447,0.0000026466, -0.0000026494,0.0000026533,0.0000026546,0.0000026539,0.0000026534, -0.0000026551,0.0000026568,0.0000026586,0.0000026599,0.0000026609, -0.0000026617,0.0000026630,0.0000026647,0.0000026665,0.0000026677, -0.0000026679,0.0000026679,0.0000026677,0.0000026679,0.0000026667, -0.0000026636,0.0000026589,0.0000026537,0.0000026501,0.0000026489, -0.0000026499,0.0000026531,0.0000026573,0.0000026618,0.0000026669, -0.0000026720,0.0000026762,0.0000026794,0.0000026813,0.0000026815, -0.0000026787,0.0000026719,0.0000026649,0.0000026606,0.0000026590, -0.0000026601,0.0000026622,0.0000026635,0.0000026620,0.0000026571, -0.0000026511,0.0000026497,0.0000026522,0.0000026563,0.0000026631, -0.0000026759,0.0000026940,0.0000027138,0.0000027321,0.0000027463, -0.0000027554,0.0000027619,0.0000027677,0.0000027709,0.0000027680, -0.0000027594,0.0000027500,0.0000027447,0.0000027445,0.0000027501, -0.0000027604,0.0000027714,0.0000027790,0.0000027803,0.0000027761, -0.0000027687,0.0000027631,0.0000027599,0.0000027564,0.0000027515, -0.0000027450,0.0000027366,0.0000027255,0.0000027132,0.0000027018, -0.0000026943,0.0000026909,0.0000026893,0.0000026884,0.0000026883, -0.0000026873,0.0000026833,0.0000026767,0.0000026692,0.0000026626, -0.0000026568,0.0000026502,0.0000026411,0.0000026302,0.0000026207, -0.0000026146,0.0000026123,0.0000026101,0.0000026094,0.0000026115, -0.0000026154,0.0000026193,0.0000026204,0.0000026169,0.0000026114, -0.0000026077,0.0000026067,0.0000026074,0.0000026093,0.0000026106, -0.0000026118,0.0000026158,0.0000026228,0.0000026313,0.0000026419, -0.0000026561,0.0000026749,0.0000026950,0.0000027097,0.0000027157, -0.0000027182,0.0000027245,0.0000027364,0.0000027523,0.0000027707, -0.0000027886,0.0000028024,0.0000028076,0.0000028072,0.0000028020, -0.0000027961,0.0000027938,0.0000027961,0.0000028012,0.0000028053, -0.0000028072,0.0000028082,0.0000028098,0.0000028112,0.0000028122, -0.0000028138,0.0000028154,0.0000028164,0.0000028169,0.0000028179, -0.0000028189,0.0000028181,0.0000028139,0.0000028075,0.0000027999, -0.0000027909,0.0000027816,0.0000027727,0.0000027643,0.0000027570, -0.0000027526,0.0000027475,0.0000027428,0.0000027436,0.0000027490, -0.0000027519,0.0000027490,0.0000027465,0.0000027532,0.0000027690, -0.0000027823,0.0000027870,0.0000027879,0.0000027943,0.0000028070, -0.0000028178,0.0000028223,0.0000028197,0.0000028143,0.0000028152, -0.0000028220,0.0000028254,0.0000028228,0.0000028145,0.0000028044, -0.0000027953,0.0000027868,0.0000027787,0.0000027685,0.0000027606, -0.0000027618,0.0000027732,0.0000027868,0.0000027963,0.0000028021, -0.0000028036,0.0000028017,0.0000027961,0.0000027894,0.0000027831, -0.0000027779,0.0000027738,0.0000027698,0.0000027664,0.0000027641, -0.0000027620,0.0000027586,0.0000027531,0.0000027461,0.0000027392, -0.0000027337,0.0000027306,0.0000027273,0.0000027218,0.0000027138, -0.0000027049,0.0000026991,0.0000026968,0.0000026957,0.0000026962, -0.0000026976,0.0000027000,0.0000027038,0.0000027085,0.0000027132, -0.0000027173,0.0000027201,0.0000027216,0.0000027220,0.0000027236, -0.0000027265,0.0000027296,0.0000027331,0.0000027376,0.0000027432, -0.0000027489,0.0000027535,0.0000027569,0.0000027589,0.0000027593, -0.0000027605,0.0000027625,0.0000027638,0.0000027638,0.0000027624, -0.0000027581,0.0000027529,0.0000027443,0.0000027376,0.0000027326, -0.0000027317,0.0000027336,0.0000027339,0.0000027311,0.0000027243, -0.0000027172,0.0000027124,0.0000027085,0.0000027070,0.0000027056, -0.0000027045,0.0000027035,0.0000027011,0.0000026955,0.0000026882, -0.0000026816,0.0000026771,0.0000026745,0.0000026724,0.0000026689, -0.0000026654,0.0000026613,0.0000026566,0.0000026529,0.0000026500, -0.0000026493,0.0000026504,0.0000026535,0.0000026584,0.0000026630, -0.0000026666,0.0000026703,0.0000026737,0.0000026782,0.0000026840, -0.0000026893,0.0000026917,0.0000026926,0.0000026944,0.0000026955, -0.0000026893,0.0000026757,0.0000026702,0.0000026723,0.0000026792, -0.0000026885,0.0000026940,0.0000026929,0.0000026955,0.0000026991, -0.0000026987,0.0000026856,0.0000026344,0.0000026016,0.0000025999, -0.0000026060,0.0000026301,0.0000026680,0.0000026980,0.0000027143, -0.0000027286,0.0000027518,0.0000027764,0.0000027931,0.0000028004, -0.0000028013,0.0000027980,0.0000027919,0.0000027857,0.0000027828, -0.0000027847,0.0000027869,0.0000027866,0.0000027843,0.0000027862, -0.0000027935,0.0000027993,0.0000027992,0.0000027947,0.0000027913, -0.0000027931,0.0000027962,0.0000027955,0.0000027902,0.0000027902, -0.0000027955,0.0000027961,0.0000027928,0.0000027848,0.0000027776, -0.0000027782,0.0000027870,0.0000028067,0.0000028270,0.0000028370, -0.0000028323,0.0000028142,0.0000028056,0.0000028076,0.0000028024, -0.0000027979,0.0000027941,0.0000027929,0.0000028078,0.0000028223, -0.0000028304,0.0000028387,0.0000028447,0.0000028499,0.0000028566, -0.0000028620,0.0000028629,0.0000028595,0.0000028530,0.0000028440, -0.0000028337,0.0000028239,0.0000028167,0.0000028129,0.0000028108, -0.0000028054,0.0000027946,0.0000027811,0.0000027697,0.0000027629, -0.0000027619,0.0000027642,0.0000027670,0.0000027675,0.0000027613, -0.0000027452,0.0000027228,0.0000027025,0.0000026908,0.0000026878, -0.0000026890,0.0000026971,0.0000027113,0.0000027249,0.0000027367, -0.0000027515,0.0000027680,0.0000027808,0.0000027906,0.0000027975, -0.0000027991,0.0000027987,0.0000027978,0.0000027951,0.0000027874, -0.0000027768,0.0000027669,0.0000027536,0.0000027333,0.0000027120, -0.0000026949,0.0000026802,0.0000026629,0.0000026413,0.0000026185, -0.0000026018,0.0000025961,0.0000025964,0.0000025966,0.0000025963, -0.0000025971,0.0000025968,0.0000025962,0.0000025941,0.0000025909, -0.0000025869,0.0000025814,0.0000025761,0.0000025728,0.0000025713, -0.0000025702,0.0000025680,0.0000025645,0.0000025614,0.0000025593, -0.0000025572,0.0000025557,0.0000025581,0.0000025743,0.0000026003, -0.0000026239,0.0000026362,0.0000026389,0.0000026379,0.0000026378, -0.0000026402,0.0000026436,0.0000026453,0.0000026437,0.0000026367, -0.0000026276,0.0000026217,0.0000026219,0.0000026276,0.0000026346, -0.0000026383,0.0000026385,0.0000026367,0.0000026338,0.0000026317, -0.0000026313,0.0000026338,0.0000026390,0.0000026465,0.0000026558, -0.0000026658,0.0000026744,0.0000026808,0.0000026858,0.0000026910, -0.0000026977,0.0000027057,0.0000027137,0.0000027201,0.0000027241, -0.0000027240,0.0000027189,0.0000027088,0.0000026952,0.0000026830, -0.0000026759,0.0000026752,0.0000026801,0.0000026888,0.0000026973, -0.0000027019,0.0000027033,0.0000027043,0.0000027063,0.0000027080, -0.0000027080,0.0000027058,0.0000027033,0.0000027057,0.0000027169, -0.0000027345,0.0000027467,0.0000027503,0.0000027475,0.0000027464, -0.0000027503,0.0000027580,0.0000027652,0.0000027705,0.0000027746, -0.0000027764,0.0000027752,0.0000027733,0.0000027730,0.0000027732, -0.0000027736,0.0000027742,0.0000027760,0.0000027767,0.0000027732, -0.0000027659,0.0000027594,0.0000027576,0.0000027592,0.0000027601, -0.0000027583,0.0000027543,0.0000027501,0.0000027486,0.0000027503, -0.0000027557,0.0000027640,0.0000027699,0.0000027732,0.0000027765, -0.0000027792,0.0000027796,0.0000027774,0.0000027723,0.0000027664, -0.0000027614,0.0000027590,0.0000027585,0.0000027598,0.0000027637, -0.0000027682,0.0000027721,0.0000027761,0.0000027782,0.0000027770, -0.0000027746,0.0000027743,0.0000027768,0.0000027798,0.0000027804, -0.0000027759,0.0000027646,0.0000027488,0.0000027338,0.0000027241, -0.0000027177,0.0000027097,0.0000026997,0.0000026904,0.0000026835, -0.0000026792,0.0000026765,0.0000026742,0.0000026719,0.0000026685, -0.0000026636,0.0000026593,0.0000026567,0.0000026551,0.0000026525, -0.0000026503,0.0000026501,0.0000026507,0.0000026494,0.0000026445, -0.0000026377,0.0000026333,0.0000026330,0.0000026372,0.0000026432, -0.0000026463,0.0000026455,0.0000026419,0.0000026375,0.0000026353, -0.0000026354,0.0000026357,0.0000026360,0.0000026368,0.0000026369, -0.0000026351,0.0000026314,0.0000026268,0.0000026220,0.0000026168, -0.0000026114,0.0000026065,0.0000026021,0.0000025978,0.0000025936, -0.0000025908,0.0000025911,0.0000025949,0.0000025990,0.0000025991, -0.0000025941,0.0000025886,0.0000025862,0.0000025846,0.0000025791, -0.0000025705,0.0000025647,0.0000025611,0.0000025508,0.0000025354, -0.0000025265,0.0000025243,0.0000025239,0.0000025265,0.0000025306, -0.0000025278,0.0000025125,0.0000024873,0.0000024611,0.0000024446, -0.0000024490,0.0000024856,0.0000025409,0.0000025713,0.0000025820, -0.0000026136,0.0000026640,0.0000027112,0.0000027513,0.0000027688, -0.0000027661,0.0000027544,0.0000027388,0.0000027312,0.0000027288, -0.0000027284,0.0000027333,0.0000027399,0.0000027439,0.0000027489, -0.0000027545,0.0000027577,0.0000027576,0.0000027559,0.0000027531, -0.0000027494,0.0000027446,0.0000027390,0.0000027342,0.0000027307, -0.0000027250,0.0000027183,0.0000027176,0.0000027159,0.0000027080, -0.0000026983,0.0000026903,0.0000026876,0.0000026887,0.0000026922, -0.0000026998,0.0000027103,0.0000027169,0.0000027169,0.0000027128, -0.0000027091,0.0000027079,0.0000027077,0.0000027096,0.0000027122, -0.0000027141,0.0000027143,0.0000027155,0.0000027158,0.0000027147, -0.0000027141,0.0000027156,0.0000027165,0.0000027146,0.0000027088, -0.0000026980,0.0000026877,0.0000026842,0.0000026913,0.0000027034, -0.0000027067,0.0000027099,0.0000027148,0.0000027076,0.0000026903, -0.0000026837,0.0000026824,0.0000026805,0.0000026795,0.0000026789, -0.0000026784,0.0000026735,0.0000026697,0.0000026708,0.0000026720, -0.0000026682,0.0000026589,0.0000026506,0.0000026461,0.0000026410, -0.0000026370,0.0000026383,0.0000026433,0.0000026436,0.0000026390, -0.0000026340,0.0000026310,0.0000026279,0.0000026238,0.0000026148, -0.0000025951,0.0000025671,0.0000025385,0.0000025143,0.0000024968, -0.0000024849,0.0000024773,0.0000024740,0.0000024737,0.0000024763, -0.0000024824,0.0000024920,0.0000025045,0.0000025193,0.0000025336, -0.0000025438,0.0000025476,0.0000025465,0.0000025391,0.0000025244, -0.0000025081,0.0000024958,0.0000024857,0.0000024788,0.0000024778, -0.0000024754,0.0000024596,0.0000024356,0.0000024165,0.0000024049, -0.0000023966,0.0000023905,0.0000023866,0.0000023847,0.0000023840, -0.0000023838,0.0000023844,0.0000023859,0.0000023876,0.0000023893, -0.0000023901,0.0000023893,0.0000023867,0.0000023823,0.0000023762, -0.0000023694,0.0000023652,0.0000023718,0.0000023892,0.0000024000, -0.0000024107,0.0000024304,0.0000024470,0.0000024562,0.0000024605, -0.0000024647,0.0000024851,0.0000025294,0.0000025723,0.0000025917, -0.0000026017,0.0000026147,0.0000026280,0.0000026356,0.0000026295, -0.0000026171,0.0000026058,0.0000025906,0.0000025691,0.0000025670, -0.0000025673,0.0000025436,0.0000025549,0.0000026282,0.0000026991, -0.0000027514,0.0000027728,0.0000027726,0.0000027699,0.0000027726, -0.0000027748,0.0000027636,0.0000027613,0.0000027664,0.0000027682, -0.0000027719,0.0000027770,0.0000027789,0.0000027766,0.0000027682, -0.0000027592,0.0000027551,0.0000027556,0.0000027589,0.0000027620, -0.0000027625,0.0000027618,0.0000027618,0.0000027611,0.0000027589, -0.0000027526,0.0000027433,0.0000027338,0.0000027273,0.0000027242, -0.0000027238,0.0000027193,0.0000027107,0.0000027017,0.0000026946, -0.0000026911,0.0000026913,0.0000026948,0.0000027000,0.0000027044, -0.0000027050,0.0000027044,0.0000027052,0.0000027053,0.0000027022, -0.0000026996,0.0000026992,0.0000026975,0.0000026902,0.0000026807, -0.0000026754,0.0000026761,0.0000026789,0.0000026775,0.0000026772, -0.0000026799,0.0000026792,0.0000026776,0.0000026780,0.0000026761, -0.0000026730,0.0000026735,0.0000026778,0.0000026828,0.0000026826, -0.0000026724,0.0000026514,0.0000026155,0.0000025831,0.0000025705, -0.0000025618,0.0000025489,0.0000025388,0.0000025345,0.0000025257, -0.0000025159,0.0000025251,0.0000025388,0.0000025363,0.0000025370, -0.0000025426,0.0000025445,0.0000025422,0.0000025399,0.0000025390, -0.0000025396,0.0000025419,0.0000025439,0.0000025432,0.0000025345, -0.0000025156,0.0000024937,0.0000024774,0.0000024667,0.0000024569, -0.0000024501,0.0000024482,0.0000024487,0.0000024496,0.0000024515, -0.0000024565,0.0000024637,0.0000024707,0.0000024750,0.0000024750, -0.0000024728,0.0000024704,0.0000024801,0.0000025057,0.0000025376, -0.0000025611,0.0000025723,0.0000025765,0.0000025765,0.0000025780, -0.0000025816,0.0000025852,0.0000025865,0.0000025881,0.0000025868, -0.0000025871,0.0000025903,0.0000025870,0.0000025806,0.0000025714, -0.0000025605,0.0000025563,0.0000025664,0.0000025702,0.0000025665, -0.0000025627,0.0000025576,0.0000025510,0.0000025459,0.0000025419, -0.0000025386,0.0000025382,0.0000025397,0.0000025405,0.0000025388, -0.0000025362,0.0000025359,0.0000025366,0.0000025343,0.0000025295, -0.0000025175,0.0000024941,0.0000024726,0.0000024712,0.0000024947, -0.0000025167,0.0000025175,0.0000025227,0.0000025216,0.0000025098, -0.0000025120,0.0000025180,0.0000025081,0.0000024906,0.0000024842, -0.0000024881,0.0000025042,0.0000025189,0.0000025206,0.0000025321, -0.0000025732,0.0000026141,0.0000026290,0.0000026301,0.0000026273, -0.0000026127,0.0000025925,0.0000025784,0.0000025750,0.0000025697, -0.0000025609,0.0000025592,0.0000025667,0.0000025777,0.0000025861, -0.0000025930,0.0000025991,0.0000026044,0.0000026085,0.0000026094, -0.0000026053,0.0000025998,0.0000025975,0.0000025987,0.0000026028, -0.0000026087,0.0000026177,0.0000026276,0.0000026360,0.0000026423, -0.0000026454,0.0000026487,0.0000026529,0.0000026546,0.0000026544, -0.0000026542,0.0000026551,0.0000026559,0.0000026569,0.0000026572, -0.0000026574,0.0000026573,0.0000026575,0.0000026581,0.0000026592, -0.0000026602,0.0000026604,0.0000026596,0.0000026586,0.0000026579, -0.0000026565,0.0000026536,0.0000026492,0.0000026443,0.0000026401, -0.0000026373,0.0000026367,0.0000026399,0.0000026457,0.0000026519, -0.0000026580,0.0000026640,0.0000026694,0.0000026735,0.0000026756, -0.0000026760,0.0000026744,0.0000026682,0.0000026596,0.0000026528, -0.0000026494,0.0000026494,0.0000026537,0.0000026592,0.0000026619, -0.0000026611,0.0000026567,0.0000026539,0.0000026554,0.0000026609, -0.0000026707,0.0000026861,0.0000027051,0.0000027232,0.0000027379, -0.0000027489,0.0000027561,0.0000027608,0.0000027645,0.0000027654, -0.0000027613,0.0000027502,0.0000027387,0.0000027341,0.0000027370, -0.0000027489,0.0000027633,0.0000027738,0.0000027791,0.0000027792, -0.0000027736,0.0000027666,0.0000027624,0.0000027601,0.0000027573, -0.0000027520,0.0000027433,0.0000027301,0.0000027136,0.0000026995, -0.0000026909,0.0000026884,0.0000026885,0.0000026870,0.0000026826, -0.0000026766,0.0000026702,0.0000026637,0.0000026574,0.0000026523, -0.0000026482,0.0000026444,0.0000026394,0.0000026321,0.0000026228, -0.0000026139,0.0000026082,0.0000026048,0.0000026019,0.0000026007, -0.0000026021,0.0000026052,0.0000026083,0.0000026092,0.0000026061, -0.0000026015,0.0000025994,0.0000026001,0.0000026027,0.0000026060, -0.0000026088,0.0000026108,0.0000026144,0.0000026215,0.0000026302, -0.0000026403,0.0000026515,0.0000026660,0.0000026843,0.0000027027, -0.0000027138,0.0000027154,0.0000027161,0.0000027242,0.0000027404, -0.0000027593,0.0000027781,0.0000027939,0.0000028045,0.0000028078, -0.0000028058,0.0000028025,0.0000027995,0.0000027991,0.0000028013, -0.0000028049,0.0000028078,0.0000028100,0.0000028131,0.0000028171, -0.0000028203,0.0000028209,0.0000028201,0.0000028184,0.0000028166, -0.0000028153,0.0000028143,0.0000028120,0.0000028067,0.0000027986, -0.0000027895,0.0000027810,0.0000027739,0.0000027675,0.0000027612, -0.0000027537,0.0000027469,0.0000027400,0.0000027350,0.0000027349, -0.0000027384,0.0000027406,0.0000027384,0.0000027347,0.0000027370, -0.0000027515,0.0000027706,0.0000027833,0.0000027863,0.0000027867, -0.0000027937,0.0000028069,0.0000028166,0.0000028204,0.0000028176, -0.0000028119,0.0000028131,0.0000028206,0.0000028239,0.0000028211, -0.0000028133,0.0000028042,0.0000027960,0.0000027895,0.0000027813, -0.0000027698,0.0000027621,0.0000027642,0.0000027762,0.0000027905, -0.0000028010,0.0000028068,0.0000028076,0.0000028057,0.0000028007, -0.0000027934,0.0000027854,0.0000027784,0.0000027730,0.0000027686, -0.0000027648,0.0000027618,0.0000027592,0.0000027560,0.0000027511, -0.0000027441,0.0000027370,0.0000027317,0.0000027265,0.0000027177, -0.0000027043,0.0000026891,0.0000026769,0.0000026713,0.0000026692, -0.0000026670,0.0000026660,0.0000026674,0.0000026709,0.0000026764, -0.0000026830,0.0000026902,0.0000026972,0.0000027035,0.0000027084, -0.0000027127,0.0000027171,0.0000027208,0.0000027239,0.0000027271, -0.0000027310,0.0000027358,0.0000027402,0.0000027435,0.0000027456, -0.0000027463,0.0000027462,0.0000027468,0.0000027484,0.0000027501, -0.0000027514,0.0000027514,0.0000027489,0.0000027447,0.0000027393, -0.0000027338,0.0000027297,0.0000027292,0.0000027303,0.0000027297, -0.0000027266,0.0000027201,0.0000027137,0.0000027090,0.0000027063, -0.0000027060,0.0000027056,0.0000027050,0.0000027035,0.0000026993, -0.0000026930,0.0000026860,0.0000026801,0.0000026764,0.0000026734, -0.0000026702,0.0000026661,0.0000026614,0.0000026567,0.0000026520, -0.0000026481,0.0000026480,0.0000026501,0.0000026544,0.0000026604, -0.0000026668,0.0000026716,0.0000026748,0.0000026778,0.0000026809, -0.0000026841,0.0000026878,0.0000026910,0.0000026924,0.0000026926, -0.0000026934,0.0000026939,0.0000026877,0.0000026749,0.0000026701, -0.0000026728,0.0000026788,0.0000026845,0.0000026900,0.0000026902, -0.0000026894,0.0000026968,0.0000026990,0.0000026968,0.0000026728, -0.0000026202,0.0000025975,0.0000025977,0.0000026065,0.0000026348, -0.0000026745,0.0000027037,0.0000027175,0.0000027274,0.0000027442, -0.0000027647,0.0000027805,0.0000027890,0.0000027900,0.0000027856, -0.0000027790,0.0000027748,0.0000027762,0.0000027801,0.0000027815, -0.0000027808,0.0000027824,0.0000027880,0.0000027949,0.0000027979, -0.0000027969,0.0000027940,0.0000027939,0.0000027964,0.0000027976, -0.0000027928,0.0000027895,0.0000027943,0.0000027965,0.0000027932, -0.0000027872,0.0000027812,0.0000027806,0.0000027861,0.0000028027, -0.0000028227,0.0000028347,0.0000028342,0.0000028187,0.0000028031, -0.0000028044,0.0000028051,0.0000027980,0.0000027955,0.0000027919, -0.0000027957,0.0000028119,0.0000028224,0.0000028290,0.0000028352, -0.0000028395,0.0000028433,0.0000028476,0.0000028497,0.0000028485, -0.0000028432,0.0000028346,0.0000028245,0.0000028159,0.0000028109, -0.0000028083,0.0000028035,0.0000027931,0.0000027789,0.0000027668, -0.0000027606,0.0000027602,0.0000027632,0.0000027668,0.0000027680, -0.0000027659,0.0000027576,0.0000027419,0.0000027198,0.0000026995, -0.0000026889,0.0000026876,0.0000026906,0.0000026981,0.0000027095, -0.0000027206,0.0000027256,0.0000027317,0.0000027446,0.0000027609, -0.0000027760,0.0000027868,0.0000027900,0.0000027894,0.0000027887, -0.0000027869,0.0000027805,0.0000027702,0.0000027609,0.0000027506, -0.0000027340,0.0000027140,0.0000026968,0.0000026824,0.0000026659, -0.0000026456,0.0000026243,0.0000026081,0.0000026019,0.0000026021, -0.0000026028,0.0000026024,0.0000026007,0.0000025974,0.0000025935, -0.0000025905,0.0000025891,0.0000025877,0.0000025845,0.0000025798, -0.0000025757,0.0000025736,0.0000025728,0.0000025718,0.0000025699, -0.0000025660,0.0000025625,0.0000025591,0.0000025565,0.0000025548, -0.0000025536,0.0000025558,0.0000025714,0.0000025957,0.0000026169, -0.0000026274,0.0000026296,0.0000026289,0.0000026297,0.0000026338, -0.0000026383,0.0000026397,0.0000026360,0.0000026288,0.0000026220, -0.0000026186,0.0000026180,0.0000026196,0.0000026213,0.0000026227, -0.0000026248,0.0000026272,0.0000026285,0.0000026295,0.0000026313, -0.0000026340,0.0000026396,0.0000026482,0.0000026579,0.0000026667, -0.0000026728,0.0000026759,0.0000026771,0.0000026793,0.0000026843, -0.0000026915,0.0000026997,0.0000027083,0.0000027157,0.0000027193, -0.0000027184,0.0000027120,0.0000027020,0.0000026914,0.0000026830, -0.0000026798,0.0000026809,0.0000026868,0.0000026939,0.0000026985, -0.0000027001,0.0000027007,0.0000027022,0.0000027050,0.0000027078, -0.0000027084,0.0000027074,0.0000027097,0.0000027198,0.0000027366, -0.0000027492,0.0000027509,0.0000027470,0.0000027452,0.0000027500, -0.0000027572,0.0000027628,0.0000027679,0.0000027725,0.0000027741, -0.0000027731,0.0000027724,0.0000027725,0.0000027731,0.0000027750, -0.0000027788,0.0000027833,0.0000027842,0.0000027793,0.0000027717, -0.0000027660,0.0000027636,0.0000027635,0.0000027634,0.0000027609, -0.0000027553,0.0000027502,0.0000027489,0.0000027505,0.0000027566, -0.0000027626,0.0000027680,0.0000027738,0.0000027779,0.0000027794, -0.0000027787,0.0000027741,0.0000027674,0.0000027617,0.0000027591, -0.0000027586,0.0000027598,0.0000027629,0.0000027664,0.0000027700, -0.0000027745,0.0000027786,0.0000027791,0.0000027780,0.0000027772, -0.0000027781,0.0000027802,0.0000027820,0.0000027823,0.0000027786, -0.0000027680,0.0000027528,0.0000027388,0.0000027290,0.0000027204, -0.0000027091,0.0000026969,0.0000026877,0.0000026820,0.0000026787, -0.0000026763,0.0000026739,0.0000026705,0.0000026654,0.0000026611, -0.0000026592,0.0000026593,0.0000026576,0.0000026542,0.0000026521, -0.0000026518,0.0000026504,0.0000026457,0.0000026386,0.0000026337, -0.0000026334,0.0000026369,0.0000026417,0.0000026432,0.0000026414, -0.0000026359,0.0000026300,0.0000026269,0.0000026269,0.0000026280, -0.0000026294,0.0000026314,0.0000026323,0.0000026310,0.0000026277, -0.0000026232,0.0000026183,0.0000026139,0.0000026100,0.0000026063, -0.0000026034,0.0000026005,0.0000025965,0.0000025925,0.0000025915, -0.0000025940,0.0000025966,0.0000025949,0.0000025894,0.0000025842, -0.0000025819,0.0000025784,0.0000025716,0.0000025652,0.0000025618, -0.0000025550,0.0000025393,0.0000025248,0.0000025209,0.0000025220, -0.0000025222,0.0000025228,0.0000025253,0.0000025244,0.0000025137, -0.0000024916,0.0000024646,0.0000024429,0.0000024394,0.0000024692, -0.0000025260,0.0000025656,0.0000025772,0.0000026042,0.0000026556, -0.0000027042,0.0000027449,0.0000027670,0.0000027667,0.0000027546, -0.0000027375,0.0000027259,0.0000027224,0.0000027241,0.0000027319, -0.0000027407,0.0000027446,0.0000027480,0.0000027518,0.0000027549, -0.0000027553,0.0000027534,0.0000027497,0.0000027461,0.0000027420, -0.0000027368,0.0000027321,0.0000027290,0.0000027264,0.0000027196, -0.0000027145,0.0000027145,0.0000027106,0.0000027015,0.0000026934, -0.0000026885,0.0000026875,0.0000026890,0.0000026940,0.0000027012, -0.0000027097,0.0000027157,0.0000027172,0.0000027157,0.0000027120, -0.0000027086,0.0000027069,0.0000027083,0.0000027118,0.0000027147, -0.0000027163,0.0000027171,0.0000027161,0.0000027150,0.0000027161, -0.0000027172,0.0000027164,0.0000027119,0.0000027010,0.0000026895, -0.0000026843,0.0000026894,0.0000027019,0.0000027056,0.0000027079, -0.0000027125,0.0000027091,0.0000026917,0.0000026814,0.0000026799, -0.0000026788,0.0000026792,0.0000026792,0.0000026780,0.0000026726, -0.0000026691,0.0000026705,0.0000026724,0.0000026709,0.0000026646, -0.0000026567,0.0000026514,0.0000026465,0.0000026424,0.0000026432, -0.0000026479,0.0000026476,0.0000026428,0.0000026373,0.0000026332, -0.0000026290,0.0000026228,0.0000026085,0.0000025824,0.0000025501, -0.0000025195,0.0000024946,0.0000024770,0.0000024669,0.0000024624, -0.0000024610,0.0000024606,0.0000024596,0.0000024591,0.0000024609, -0.0000024686,0.0000024823,0.0000024986,0.0000025137,0.0000025252, -0.0000025301,0.0000025288,0.0000025206,0.0000025072,0.0000024946, -0.0000024843,0.0000024748,0.0000024700,0.0000024695,0.0000024634, -0.0000024431,0.0000024213,0.0000024089,0.0000024030,0.0000023988, -0.0000023952,0.0000023923,0.0000023898,0.0000023872,0.0000023852, -0.0000023849,0.0000023862,0.0000023880,0.0000023896,0.0000023900, -0.0000023895,0.0000023866,0.0000023822,0.0000023781,0.0000023713, -0.0000023613,0.0000023605,0.0000023739,0.0000023916,0.0000024012, -0.0000024186,0.0000024381,0.0000024474,0.0000024507,0.0000024546, -0.0000024634,0.0000024893,0.0000025343,0.0000025729,0.0000025918, -0.0000026044,0.0000026184,0.0000026307,0.0000026303,0.0000026182, -0.0000026070,0.0000025907,0.0000025702,0.0000025691,0.0000025678, -0.0000025415,0.0000025529,0.0000026272,0.0000026979,0.0000027492, -0.0000027723,0.0000027734,0.0000027701,0.0000027718,0.0000027744, -0.0000027642,0.0000027601,0.0000027657,0.0000027686,0.0000027730, -0.0000027780,0.0000027798,0.0000027790,0.0000027745,0.0000027662, -0.0000027612,0.0000027614,0.0000027642,0.0000027670,0.0000027676, -0.0000027664,0.0000027639,0.0000027606,0.0000027556,0.0000027476, -0.0000027381,0.0000027298,0.0000027248,0.0000027242,0.0000027270, -0.0000027243,0.0000027159,0.0000027079,0.0000027029,0.0000026997, -0.0000026984,0.0000026993,0.0000027019,0.0000027044,0.0000027037, -0.0000027019,0.0000027028,0.0000027038,0.0000027022,0.0000027004, -0.0000026995,0.0000026971,0.0000026897,0.0000026812,0.0000026753, -0.0000026723,0.0000026734,0.0000026769,0.0000026771,0.0000026778, -0.0000026801,0.0000026802,0.0000026803,0.0000026786,0.0000026739, -0.0000026722,0.0000026748,0.0000026794,0.0000026798,0.0000026708, -0.0000026526,0.0000026198,0.0000025867,0.0000025735,0.0000025644, -0.0000025505,0.0000025400,0.0000025351,0.0000025260,0.0000025180, -0.0000025315,0.0000025411,0.0000025368,0.0000025374,0.0000025417, -0.0000025432,0.0000025424,0.0000025404,0.0000025389,0.0000025387, -0.0000025404,0.0000025429,0.0000025445,0.0000025432,0.0000025308, -0.0000025064,0.0000024819,0.0000024674,0.0000024572,0.0000024482, -0.0000024438,0.0000024436,0.0000024431,0.0000024432,0.0000024471, -0.0000024558,0.0000024669,0.0000024747,0.0000024783,0.0000024776, -0.0000024731,0.0000024680,0.0000024710,0.0000024917,0.0000025244, -0.0000025564,0.0000025766,0.0000025837,0.0000025837,0.0000025834, -0.0000025841,0.0000025845,0.0000025864,0.0000025871,0.0000025864, -0.0000025890,0.0000025909,0.0000025826,0.0000025755,0.0000025669, -0.0000025563,0.0000025543,0.0000025662,0.0000025703,0.0000025686, -0.0000025661,0.0000025602,0.0000025523,0.0000025471,0.0000025437, -0.0000025401,0.0000025388,0.0000025399,0.0000025410,0.0000025403, -0.0000025371,0.0000025343,0.0000025325,0.0000025332,0.0000025363, -0.0000025301,0.0000025070,0.0000024779,0.0000024696,0.0000024864, -0.0000025124,0.0000025173,0.0000025193,0.0000025246,0.0000025149, -0.0000025077,0.0000025158,0.0000025150,0.0000024995,0.0000024857, -0.0000024841,0.0000024936,0.0000025088,0.0000025160,0.0000025154, -0.0000025358,0.0000025852,0.0000026199,0.0000026292,0.0000026281, -0.0000026216,0.0000026042,0.0000025865,0.0000025771,0.0000025738, -0.0000025662,0.0000025574,0.0000025568,0.0000025675,0.0000025794, -0.0000025885,0.0000025956,0.0000026009,0.0000026053,0.0000026061, -0.0000026021,0.0000025973,0.0000025960,0.0000025985,0.0000026032, -0.0000026085,0.0000026165,0.0000026248,0.0000026322,0.0000026376, -0.0000026408,0.0000026439,0.0000026477,0.0000026502,0.0000026512, -0.0000026511,0.0000026505,0.0000026503,0.0000026503,0.0000026500, -0.0000026495,0.0000026489,0.0000026483,0.0000026486,0.0000026496, -0.0000026503,0.0000026501,0.0000026492,0.0000026482,0.0000026473, -0.0000026458,0.0000026432,0.0000026396,0.0000026357,0.0000026318, -0.0000026275,0.0000026240,0.0000026244,0.0000026296,0.0000026366, -0.0000026438,0.0000026512,0.0000026588,0.0000026655,0.0000026698, -0.0000026715,0.0000026711,0.0000026662,0.0000026570,0.0000026484, -0.0000026446,0.0000026446,0.0000026481,0.0000026541,0.0000026595, -0.0000026619,0.0000026609,0.0000026588,0.0000026605,0.0000026684, -0.0000026814,0.0000026975,0.0000027145,0.0000027297,0.0000027412, -0.0000027495,0.0000027550,0.0000027580,0.0000027586,0.0000027571, -0.0000027510,0.0000027393,0.0000027276,0.0000027239,0.0000027315, -0.0000027480,0.0000027641,0.0000027737,0.0000027768,0.0000027760, -0.0000027716,0.0000027654,0.0000027611,0.0000027595,0.0000027566, -0.0000027485,0.0000027338,0.0000027162,0.0000027014,0.0000026935, -0.0000026903,0.0000026872,0.0000026814,0.0000026726,0.0000026632, -0.0000026545,0.0000026472,0.0000026420,0.0000026387,0.0000026367, -0.0000026350,0.0000026328,0.0000026290,0.0000026235,0.0000026171, -0.0000026114,0.0000026068,0.0000026029,0.0000025992,0.0000025962, -0.0000025948,0.0000025950,0.0000025956,0.0000025948,0.0000025914, -0.0000025877,0.0000025873,0.0000025911,0.0000025968,0.0000026022, -0.0000026063,0.0000026092,0.0000026123,0.0000026186,0.0000026277, -0.0000026384,0.0000026495,0.0000026616,0.0000026758,0.0000026925, -0.0000027073,0.0000027137,0.0000027131,0.0000027139,0.0000027246, -0.0000027437,0.0000027649,0.0000027833,0.0000027965,0.0000028033, -0.0000028048,0.0000028040,0.0000028032,0.0000028038,0.0000028040, -0.0000028053,0.0000028071,0.0000028088,0.0000028117,0.0000028160, -0.0000028197,0.0000028209,0.0000028192,0.0000028155,0.0000028114, -0.0000028074,0.0000028041,0.0000028006,0.0000027946,0.0000027862, -0.0000027772,0.0000027699,0.0000027651,0.0000027619,0.0000027576, -0.0000027508,0.0000027427,0.0000027344,0.0000027287,0.0000027272, -0.0000027275,0.0000027270,0.0000027237,0.0000027202,0.0000027211, -0.0000027310,0.0000027499,0.0000027699,0.0000027822,0.0000027848, -0.0000027844,0.0000027918,0.0000028057,0.0000028157,0.0000028187, -0.0000028152,0.0000028087,0.0000028104,0.0000028186,0.0000028219, -0.0000028192,0.0000028124,0.0000028043,0.0000027970,0.0000027907, -0.0000027818,0.0000027707,0.0000027646,0.0000027682,0.0000027801, -0.0000027941,0.0000028049,0.0000028105,0.0000028118,0.0000028106, -0.0000028067,0.0000027994,0.0000027901,0.0000027810,0.0000027733, -0.0000027670,0.0000027624,0.0000027597,0.0000027585,0.0000027568, -0.0000027526,0.0000027452,0.0000027370,0.0000027297,0.0000027200, -0.0000027026,0.0000026788,0.0000026578,0.0000026482,0.0000026468, -0.0000026463,0.0000026436,0.0000026402,0.0000026378,0.0000026376, -0.0000026400,0.0000026445,0.0000026514,0.0000026595,0.0000026683, -0.0000026780,0.0000026893,0.0000026999,0.0000027086,0.0000027161, -0.0000027229,0.0000027289,0.0000027337,0.0000027370,0.0000027388, -0.0000027389,0.0000027379,0.0000027360,0.0000027352,0.0000027358, -0.0000027369,0.0000027387,0.0000027393,0.0000027379,0.0000027355, -0.0000027322,0.0000027285,0.0000027261,0.0000027262,0.0000027270, -0.0000027264,0.0000027228,0.0000027164,0.0000027102,0.0000027045, -0.0000027021,0.0000027029,0.0000027035,0.0000027032,0.0000027013, -0.0000026968,0.0000026904,0.0000026833,0.0000026776,0.0000026735, -0.0000026697,0.0000026656,0.0000026610,0.0000026567,0.0000026529, -0.0000026492,0.0000026478,0.0000026506,0.0000026564,0.0000026632, -0.0000026700,0.0000026755,0.0000026788,0.0000026801,0.0000026813, -0.0000026832,0.0000026855,0.0000026884,0.0000026911,0.0000026924, -0.0000026924,0.0000026922,0.0000026912,0.0000026849,0.0000026743, -0.0000026711,0.0000026743,0.0000026799,0.0000026826,0.0000026851, -0.0000026876,0.0000026859,0.0000026915,0.0000026985,0.0000026969, -0.0000026923,0.0000026588,0.0000026095,0.0000025934,0.0000025968, -0.0000026077,0.0000026393,0.0000026783,0.0000027058,0.0000027181, -0.0000027243,0.0000027345,0.0000027502,0.0000027658,0.0000027755, -0.0000027775,0.0000027732,0.0000027664,0.0000027637,0.0000027654, -0.0000027688,0.0000027723,0.0000027772,0.0000027824,0.0000027880, -0.0000027928,0.0000027954,0.0000027950,0.0000027945,0.0000027963, -0.0000027993,0.0000027970,0.0000027911,0.0000027934,0.0000027968, -0.0000027937,0.0000027889,0.0000027845,0.0000027836,0.0000027864, -0.0000027992,0.0000028180,0.0000028310,0.0000028336,0.0000028223, -0.0000028035,0.0000027987,0.0000028046,0.0000028012,0.0000027954, -0.0000027943,0.0000027915,0.0000027992,0.0000028140,0.0000028217, -0.0000028260,0.0000028299,0.0000028325,0.0000028348,0.0000028361, -0.0000028354,0.0000028320,0.0000028266,0.0000028200,0.0000028136, -0.0000028084,0.0000028022,0.0000027919,0.0000027778,0.0000027648, -0.0000027579,0.0000027568,0.0000027591,0.0000027629,0.0000027658, -0.0000027656,0.0000027612,0.0000027527,0.0000027374,0.0000027149, -0.0000026953,0.0000026875,0.0000026882,0.0000026937,0.0000027018, -0.0000027125,0.0000027232,0.0000027265,0.0000027265,0.0000027294, -0.0000027385,0.0000027528,0.0000027682,0.0000027761,0.0000027762, -0.0000027754,0.0000027749,0.0000027696,0.0000027595,0.0000027507, -0.0000027431,0.0000027303,0.0000027132,0.0000026980,0.0000026847, -0.0000026689,0.0000026491,0.0000026286,0.0000026133,0.0000026070, -0.0000026065,0.0000026061,0.0000026042,0.0000025994,0.0000025927, -0.0000025874,0.0000025851,0.0000025843,0.0000025834,0.0000025808, -0.0000025763,0.0000025710,0.0000025671,0.0000025661,0.0000025669, -0.0000025678,0.0000025679,0.0000025671,0.0000025639,0.0000025610, -0.0000025576,0.0000025552,0.0000025512,0.0000025464,0.0000025482, -0.0000025643,0.0000025881,0.0000026080,0.0000026178,0.0000026200, -0.0000026202,0.0000026227,0.0000026279,0.0000026322,0.0000026327, -0.0000026289,0.0000026229,0.0000026162,0.0000026109,0.0000026082, -0.0000026090,0.0000026138,0.0000026210,0.0000026273,0.0000026305, -0.0000026319,0.0000026325,0.0000026331,0.0000026350,0.0000026400, -0.0000026480,0.0000026568,0.0000026643,0.0000026688,0.0000026705, -0.0000026709,0.0000026718,0.0000026745,0.0000026794,0.0000026863, -0.0000026959,0.0000027068,0.0000027142,0.0000027163,0.0000027138, -0.0000027083,0.0000027003,0.0000026921,0.0000026866,0.0000026856, -0.0000026879,0.0000026930,0.0000026974,0.0000026994,0.0000026998, -0.0000027007,0.0000027038,0.0000027088,0.0000027133,0.0000027143, -0.0000027162,0.0000027249,0.0000027384,0.0000027483,0.0000027484, -0.0000027441,0.0000027439,0.0000027494,0.0000027568,0.0000027634, -0.0000027686,0.0000027721,0.0000027732,0.0000027731,0.0000027728, -0.0000027735,0.0000027755,0.0000027797,0.0000027857,0.0000027905, -0.0000027905,0.0000027861,0.0000027794,0.0000027727,0.0000027680, -0.0000027663,0.0000027656,0.0000027618,0.0000027557,0.0000027512, -0.0000027509,0.0000027536,0.0000027564,0.0000027612,0.0000027691, -0.0000027760,0.0000027786,0.0000027781,0.0000027750,0.0000027692, -0.0000027629,0.0000027591,0.0000027585,0.0000027599,0.0000027626, -0.0000027653,0.0000027679,0.0000027702,0.0000027726,0.0000027743, -0.0000027755,0.0000027781,0.0000027812,0.0000027834,0.0000027838, -0.0000027829,0.0000027808,0.0000027772,0.0000027695,0.0000027567, -0.0000027422,0.0000027295,0.0000027179,0.0000027059,0.0000026955, -0.0000026874,0.0000026813,0.0000026772,0.0000026748,0.0000026717, -0.0000026672,0.0000026635,0.0000026633,0.0000026647,0.0000026643, -0.0000026604,0.0000026566,0.0000026547,0.0000026523,0.0000026465, -0.0000026382,0.0000026326,0.0000026327,0.0000026368,0.0000026410, -0.0000026417,0.0000026383,0.0000026308,0.0000026229,0.0000026184, -0.0000026178,0.0000026196,0.0000026228,0.0000026264,0.0000026286, -0.0000026289,0.0000026267,0.0000026225,0.0000026176,0.0000026136, -0.0000026105,0.0000026079,0.0000026055,0.0000026022,0.0000025973, -0.0000025928,0.0000025912,0.0000025920,0.0000025917,0.0000025879, -0.0000025826,0.0000025789,0.0000025763,0.0000025718,0.0000025667, -0.0000025637,0.0000025591,0.0000025455,0.0000025251,0.0000025121, -0.0000025122,0.0000025168,0.0000025187,0.0000025188,0.0000025192, -0.0000025184,0.0000025108,0.0000024933,0.0000024683,0.0000024434, -0.0000024347,0.0000024527,0.0000025081,0.0000025579,0.0000025737, -0.0000025957,0.0000026463,0.0000026977,0.0000027391,0.0000027635, -0.0000027666,0.0000027565,0.0000027377,0.0000027236,0.0000027194, -0.0000027213,0.0000027296,0.0000027392,0.0000027440,0.0000027460, -0.0000027480,0.0000027498,0.0000027503,0.0000027487,0.0000027449, -0.0000027411,0.0000027382,0.0000027347,0.0000027309,0.0000027275, -0.0000027261,0.0000027225,0.0000027142,0.0000027107,0.0000027102, -0.0000027036,0.0000026957,0.0000026916,0.0000026887,0.0000026867, -0.0000026891,0.0000026946,0.0000027002,0.0000027062,0.0000027117, -0.0000027157,0.0000027163,0.0000027139,0.0000027122,0.0000027122, -0.0000027148,0.0000027172,0.0000027180,0.0000027172,0.0000027150, -0.0000027137,0.0000027148,0.0000027164,0.0000027165,0.0000027140, -0.0000027040,0.0000026919,0.0000026856,0.0000026885,0.0000027003, -0.0000027049,0.0000027060,0.0000027108,0.0000027104,0.0000026958, -0.0000026813,0.0000026776,0.0000026770,0.0000026777,0.0000026783, -0.0000026773,0.0000026724,0.0000026689,0.0000026696,0.0000026721, -0.0000026734,0.0000026712,0.0000026656,0.0000026600,0.0000026544, -0.0000026499,0.0000026504,0.0000026536,0.0000026524,0.0000026467, -0.0000026408,0.0000026347,0.0000026281,0.0000026174,0.0000025960, -0.0000025645,0.0000025303,0.0000024991,0.0000024751,0.0000024613, -0.0000024556,0.0000024545,0.0000024556,0.0000024570,0.0000024573, -0.0000024563,0.0000024539,0.0000024517,0.0000024532,0.0000024633, -0.0000024797,0.0000024955,0.0000025069,0.0000025118,0.0000025107, -0.0000025033,0.0000024926,0.0000024832,0.0000024737,0.0000024653, -0.0000024627,0.0000024617,0.0000024486,0.0000024265,0.0000024121, -0.0000024085,0.0000024078,0.0000024056,0.0000024014,0.0000023968, -0.0000023921,0.0000023879,0.0000023856,0.0000023855,0.0000023868, -0.0000023886,0.0000023900,0.0000023904,0.0000023896,0.0000023863, -0.0000023817,0.0000023778,0.0000023725,0.0000023620,0.0000023521, -0.0000023584,0.0000023793,0.0000023938,0.0000024066,0.0000024257, -0.0000024387,0.0000024415,0.0000024450,0.0000024521,0.0000024640, -0.0000024937,0.0000025412,0.0000025778,0.0000025965,0.0000026099, -0.0000026236,0.0000026270,0.0000026178,0.0000026072,0.0000025895, -0.0000025704,0.0000025717,0.0000025667,0.0000025382,0.0000025512, -0.0000026271,0.0000026972,0.0000027471,0.0000027722,0.0000027740, -0.0000027701,0.0000027700,0.0000027733,0.0000027653,0.0000027577, -0.0000027627,0.0000027675,0.0000027733,0.0000027790,0.0000027806, -0.0000027799,0.0000027782,0.0000027732,0.0000027687,0.0000027676, -0.0000027688,0.0000027702,0.0000027702,0.0000027675,0.0000027629, -0.0000027568,0.0000027496,0.0000027416,0.0000027335,0.0000027271, -0.0000027245,0.0000027254,0.0000027297,0.0000027278,0.0000027211, -0.0000027144,0.0000027106,0.0000027082,0.0000027058,0.0000027045, -0.0000027050,0.0000027059,0.0000027038,0.0000027011,0.0000027014, -0.0000027030,0.0000027027,0.0000027017,0.0000026999,0.0000026950, -0.0000026865,0.0000026796,0.0000026768,0.0000026736,0.0000026711, -0.0000026727,0.0000026763,0.0000026771,0.0000026790,0.0000026808, -0.0000026819,0.0000026822,0.0000026771,0.0000026711,0.0000026711, -0.0000026748,0.0000026764,0.0000026693,0.0000026546,0.0000026265, -0.0000025929,0.0000025783,0.0000025698,0.0000025554,0.0000025442, -0.0000025380,0.0000025282,0.0000025224,0.0000025364,0.0000025442, -0.0000025388,0.0000025378,0.0000025397,0.0000025405,0.0000025404, -0.0000025393,0.0000025380,0.0000025378,0.0000025390,0.0000025412, -0.0000025434,0.0000025455,0.0000025425,0.0000025238,0.0000024927, -0.0000024697,0.0000024579,0.0000024484,0.0000024409,0.0000024393, -0.0000024384,0.0000024371,0.0000024386,0.0000024472,0.0000024611, -0.0000024728,0.0000024785,0.0000024798,0.0000024783,0.0000024730, -0.0000024675,0.0000024674,0.0000024834,0.0000025145,0.0000025481, -0.0000025740,0.0000025870,0.0000025908,0.0000025885,0.0000025852, -0.0000025848,0.0000025852,0.0000025859,0.0000025859,0.0000025912, -0.0000025887,0.0000025770,0.0000025707,0.0000025620,0.0000025518, -0.0000025530,0.0000025678,0.0000025716,0.0000025713,0.0000025686, -0.0000025614,0.0000025540,0.0000025502,0.0000025474,0.0000025436, -0.0000025403,0.0000025395,0.0000025397,0.0000025391,0.0000025374, -0.0000025351,0.0000025320,0.0000025326,0.0000025372,0.0000025368, -0.0000025208,0.0000024914,0.0000024737,0.0000024820,0.0000025087, -0.0000025193,0.0000025187,0.0000025248,0.0000025217,0.0000025096, -0.0000025097,0.0000025157,0.0000025090,0.0000024937,0.0000024859, -0.0000024880,0.0000024989,0.0000025096,0.0000025104,0.0000025130, -0.0000025442,0.0000025956,0.0000026226,0.0000026271,0.0000026247, -0.0000026151,0.0000025991,0.0000025849,0.0000025766,0.0000025710, -0.0000025613,0.0000025537,0.0000025555,0.0000025674,0.0000025809, -0.0000025914,0.0000025979,0.0000026021,0.0000026028,0.0000025993, -0.0000025954,0.0000025954,0.0000025998,0.0000026060,0.0000026117, -0.0000026189,0.0000026259,0.0000026318,0.0000026355,0.0000026375, -0.0000026393,0.0000026410,0.0000026426,0.0000026435,0.0000026428, -0.0000026418,0.0000026411,0.0000026403,0.0000026393,0.0000026381, -0.0000026369,0.0000026361,0.0000026364,0.0000026372,0.0000026379, -0.0000026380,0.0000026379,0.0000026380,0.0000026382,0.0000026375, -0.0000026361,0.0000026342,0.0000026318,0.0000026290,0.0000026248, -0.0000026202,0.0000026180,0.0000026196,0.0000026234,0.0000026281, -0.0000026348,0.0000026439,0.0000026540,0.0000026624,0.0000026670, -0.0000026677,0.0000026641,0.0000026547,0.0000026458,0.0000026427, -0.0000026435,0.0000026449,0.0000026483,0.0000026534,0.0000026586, -0.0000026611,0.0000026625,0.0000026668,0.0000026765,0.0000026900, -0.0000027052,0.0000027199,0.0000027324,0.0000027418,0.0000027481, -0.0000027512,0.0000027517,0.0000027501,0.0000027465,0.0000027396, -0.0000027296,0.0000027204,0.0000027182,0.0000027273,0.0000027451, -0.0000027603,0.0000027687,0.0000027721,0.0000027722,0.0000027693, -0.0000027645,0.0000027605,0.0000027571,0.0000027496,0.0000027347, -0.0000027175,0.0000027061,0.0000027002,0.0000026960,0.0000026897, -0.0000026779,0.0000026627,0.0000026492,0.0000026404,0.0000026342, -0.0000026284,0.0000026240,0.0000026217,0.0000026206,0.0000026200, -0.0000026191,0.0000026170,0.0000026139,0.0000026117,0.0000026098, -0.0000026072,0.0000026039,0.0000025995,0.0000025943,0.0000025894, -0.0000025861,0.0000025842,0.0000025819,0.0000025783,0.0000025750, -0.0000025751,0.0000025802,0.0000025881,0.0000025957,0.0000026017, -0.0000026059,0.0000026092,0.0000026138,0.0000026221,0.0000026327, -0.0000026451,0.0000026574,0.0000026694,0.0000026828,0.0000026973, -0.0000027080,0.0000027109,0.0000027092,0.0000027114,0.0000027239, -0.0000027444,0.0000027667,0.0000027840,0.0000027941,0.0000027982, -0.0000028000,0.0000028018,0.0000028037,0.0000028048,0.0000028052, -0.0000028049,0.0000028039,0.0000028041,0.0000028065,0.0000028094, -0.0000028106,0.0000028082,0.0000028027,0.0000027966,0.0000027915, -0.0000027871,0.0000027831,0.0000027781,0.0000027715,0.0000027645, -0.0000027589,0.0000027558,0.0000027547,0.0000027531,0.0000027481, -0.0000027398,0.0000027307,0.0000027238,0.0000027198,0.0000027168, -0.0000027141,0.0000027112,0.0000027089,0.0000027094,0.0000027155, -0.0000027291,0.0000027482,0.0000027674,0.0000027799,0.0000027823, -0.0000027815,0.0000027896,0.0000028053,0.0000028160,0.0000028180, -0.0000028123,0.0000028057,0.0000028083,0.0000028167,0.0000028199, -0.0000028177,0.0000028115,0.0000028039,0.0000027974,0.0000027902, -0.0000027809,0.0000027724,0.0000027699,0.0000027741,0.0000027844, -0.0000027966,0.0000028065,0.0000028121,0.0000028137,0.0000028135, -0.0000028109,0.0000028041,0.0000027946,0.0000027844,0.0000027751, -0.0000027671,0.0000027615,0.0000027589,0.0000027581,0.0000027564, -0.0000027528,0.0000027456,0.0000027372,0.0000027290,0.0000027160, -0.0000026930,0.0000026626,0.0000026429,0.0000026366,0.0000026385, -0.0000026393,0.0000026365,0.0000026297,0.0000026219,0.0000026156, -0.0000026111,0.0000026093,0.0000026103,0.0000026129,0.0000026184, -0.0000026287,0.0000026437,0.0000026597,0.0000026753,0.0000026900, -0.0000027033,0.0000027147,0.0000027233,0.0000027294,0.0000027333, -0.0000027350,0.0000027345,0.0000027326,0.0000027315,0.0000027311, -0.0000027316,0.0000027336,0.0000027339,0.0000027335,0.0000027328, -0.0000027309,0.0000027287,0.0000027274,0.0000027280,0.0000027284, -0.0000027273,0.0000027232,0.0000027171,0.0000027093,0.0000027027, -0.0000027003,0.0000027014,0.0000027019,0.0000027017,0.0000026999, -0.0000026959,0.0000026903,0.0000026834,0.0000026769,0.0000026724, -0.0000026679,0.0000026634,0.0000026594,0.0000026561,0.0000026533, -0.0000026519,0.0000026529,0.0000026575,0.0000026644,0.0000026709, -0.0000026762,0.0000026792,0.0000026810,0.0000026812,0.0000026811, -0.0000026820,0.0000026828,0.0000026850,0.0000026877,0.0000026892, -0.0000026896,0.0000026892,0.0000026872,0.0000026813,0.0000026744, -0.0000026735,0.0000026774,0.0000026818,0.0000026825,0.0000026811, -0.0000026832,0.0000026845,0.0000026856,0.0000026937,0.0000026967, -0.0000026934,0.0000026866,0.0000026458,0.0000025992,0.0000025888, -0.0000025959,0.0000026095,0.0000026412,0.0000026778,0.0000027042, -0.0000027168,0.0000027199,0.0000027243,0.0000027348,0.0000027487, -0.0000027598,0.0000027645,0.0000027617,0.0000027557,0.0000027517, -0.0000027521,0.0000027578,0.0000027673,0.0000027756,0.0000027812, -0.0000027855,0.0000027894,0.0000027924,0.0000027936,0.0000027953, -0.0000027992,0.0000028006,0.0000027951,0.0000027937,0.0000027966, -0.0000027945,0.0000027900,0.0000027870,0.0000027863,0.0000027875, -0.0000027963,0.0000028129,0.0000028261,0.0000028300,0.0000028238, -0.0000028061,0.0000027932,0.0000027984,0.0000028037,0.0000027972, -0.0000027943,0.0000027932,0.0000027922,0.0000028021,0.0000028146, -0.0000028199,0.0000028223,0.0000028237,0.0000028243,0.0000028245, -0.0000028241,0.0000028224,0.0000028195,0.0000028157,0.0000028102, -0.0000028023,0.0000027907,0.0000027765,0.0000027636,0.0000027560, -0.0000027543,0.0000027563,0.0000027587,0.0000027611,0.0000027621, -0.0000027604,0.0000027555,0.0000027476,0.0000027324,0.0000027103, -0.0000026929,0.0000026877,0.0000026895,0.0000026963,0.0000027054, -0.0000027164,0.0000027281,0.0000027338,0.0000027322,0.0000027293, -0.0000027302,0.0000027367,0.0000027492,0.0000027606,0.0000027631, -0.0000027622,0.0000027618,0.0000027590,0.0000027501,0.0000027409, -0.0000027355,0.0000027270,0.0000027126,0.0000026985,0.0000026863, -0.0000026717,0.0000026526,0.0000026324,0.0000026172,0.0000026097, -0.0000026076,0.0000026072,0.0000026045,0.0000025976,0.0000025893, -0.0000025849,0.0000025836,0.0000025824,0.0000025796,0.0000025753, -0.0000025691,0.0000025614,0.0000025541,0.0000025503,0.0000025499, -0.0000025510,0.0000025529,0.0000025559,0.0000025594,0.0000025613, -0.0000025610,0.0000025581,0.0000025545,0.0000025491,0.0000025415, -0.0000025358,0.0000025383,0.0000025558,0.0000025795,0.0000025989, -0.0000026091,0.0000026118,0.0000026129,0.0000026167,0.0000026225, -0.0000026266,0.0000026269,0.0000026225,0.0000026155,0.0000026078, -0.0000026035,0.0000026039,0.0000026099,0.0000026187,0.0000026263, -0.0000026308,0.0000026326,0.0000026329,0.0000026325,0.0000026326, -0.0000026344,0.0000026391,0.0000026451,0.0000026517,0.0000026578, -0.0000026623,0.0000026647,0.0000026651,0.0000026652,0.0000026671, -0.0000026712,0.0000026780,0.0000026878,0.0000026986,0.0000027078, -0.0000027134,0.0000027146,0.0000027122,0.0000027077,0.0000027021, -0.0000026962,0.0000026923,0.0000026918,0.0000026937,0.0000026977, -0.0000027005,0.0000027009,0.0000027013,0.0000027044,0.0000027115, -0.0000027186,0.0000027221,0.0000027239,0.0000027290,0.0000027379, -0.0000027443,0.0000027436,0.0000027409,0.0000027422,0.0000027496, -0.0000027590,0.0000027659,0.0000027696,0.0000027713,0.0000027717, -0.0000027722,0.0000027740,0.0000027772,0.0000027816,0.0000027871, -0.0000027934,0.0000027975,0.0000027978,0.0000027941,0.0000027864, -0.0000027775,0.0000027717,0.0000027695,0.0000027672,0.0000027625, -0.0000027574,0.0000027550,0.0000027547,0.0000027554,0.0000027576, -0.0000027645,0.0000027729,0.0000027774,0.0000027767,0.0000027744, -0.0000027703,0.0000027652,0.0000027609,0.0000027588,0.0000027594, -0.0000027622,0.0000027657,0.0000027681,0.0000027689,0.0000027686, -0.0000027679,0.0000027686,0.0000027728,0.0000027797,0.0000027848, -0.0000027864,0.0000027846,0.0000027809,0.0000027781,0.0000027770, -0.0000027716,0.0000027572,0.0000027393,0.0000027249,0.0000027144, -0.0000027048,0.0000026953,0.0000026861,0.0000026792,0.0000026756, -0.0000026730,0.0000026697,0.0000026668,0.0000026681,0.0000026707, -0.0000026712,0.0000026678,0.0000026632,0.0000026599,0.0000026563, -0.0000026489,0.0000026387,0.0000026321,0.0000026319,0.0000026358, -0.0000026393,0.0000026391,0.0000026339,0.0000026247,0.0000026158, -0.0000026115,0.0000026111,0.0000026129,0.0000026166,0.0000026213, -0.0000026254,0.0000026273,0.0000026265,0.0000026228,0.0000026178, -0.0000026136,0.0000026106,0.0000026084,0.0000026058,0.0000026016, -0.0000025962,0.0000025920,0.0000025900,0.0000025885,0.0000025845, -0.0000025794,0.0000025760,0.0000025740,0.0000025703,0.0000025663, -0.0000025645,0.0000025616,0.0000025507,0.0000025309,0.0000025114, -0.0000025018,0.0000025031,0.0000025089,0.0000025133,0.0000025154, -0.0000025159,0.0000025135,0.0000025061,0.0000024920,0.0000024711, -0.0000024469,0.0000024302,0.0000024391,0.0000024871,0.0000025451, -0.0000025694,0.0000025876,0.0000026357,0.0000026905,0.0000027340, -0.0000027616,0.0000027661,0.0000027593,0.0000027407,0.0000027243, -0.0000027183,0.0000027194,0.0000027262,0.0000027355,0.0000027411, -0.0000027434,0.0000027449,0.0000027463,0.0000027469,0.0000027462, -0.0000027433,0.0000027400,0.0000027375,0.0000027358,0.0000027330, -0.0000027292,0.0000027263,0.0000027244,0.0000027174,0.0000027084, -0.0000027068,0.0000027045,0.0000026971,0.0000026935,0.0000026920, -0.0000026884,0.0000026858,0.0000026886,0.0000026939,0.0000026981, -0.0000027020,0.0000027067,0.0000027105,0.0000027118,0.0000027115, -0.0000027122,0.0000027136,0.0000027147,0.0000027145,0.0000027131, -0.0000027111,0.0000027108,0.0000027120,0.0000027134,0.0000027141, -0.0000027131,0.0000027049,0.0000026937,0.0000026870,0.0000026883, -0.0000026989,0.0000027039,0.0000027041,0.0000027080,0.0000027099, -0.0000027008,0.0000026848,0.0000026772,0.0000026756,0.0000026758, -0.0000026767,0.0000026768,0.0000026731,0.0000026691,0.0000026691, -0.0000026718,0.0000026747,0.0000026757,0.0000026734,0.0000026684, -0.0000026620,0.0000026575,0.0000026581,0.0000026594,0.0000026557, -0.0000026494,0.0000026430,0.0000026351,0.0000026245,0.0000026061, -0.0000025762,0.0000025407,0.0000025065,0.0000024776,0.0000024584, -0.0000024504,0.0000024488,0.0000024482,0.0000024480,0.0000024484, -0.0000024493,0.0000024505,0.0000024514,0.0000024514,0.0000024496, -0.0000024480,0.0000024505,0.0000024620,0.0000024772,0.0000024892, -0.0000024946,0.0000024943,0.0000024890,0.0000024810,0.0000024730, -0.0000024642,0.0000024581,0.0000024572,0.0000024521,0.0000024336, -0.0000024153,0.0000024099,0.0000024111,0.0000024115,0.0000024092, -0.0000024036,0.0000023969,0.0000023911,0.0000023869,0.0000023851, -0.0000023855,0.0000023870,0.0000023885,0.0000023895,0.0000023897, -0.0000023887,0.0000023859,0.0000023814,0.0000023764,0.0000023719, -0.0000023639,0.0000023522,0.0000023507,0.0000023647,0.0000023854, -0.0000023973,0.0000024105,0.0000024265,0.0000024344,0.0000024372, -0.0000024438,0.0000024528,0.0000024669,0.0000025047,0.0000025549, -0.0000025879,0.0000026033,0.0000026163,0.0000026220,0.0000026161, -0.0000026063,0.0000025868,0.0000025704,0.0000025744,0.0000025638, -0.0000025345,0.0000025498,0.0000026279,0.0000026961,0.0000027449, -0.0000027720,0.0000027739,0.0000027700,0.0000027673,0.0000027713, -0.0000027668,0.0000027555,0.0000027575,0.0000027639,0.0000027714, -0.0000027785,0.0000027810,0.0000027802,0.0000027789,0.0000027771, -0.0000027751,0.0000027730,0.0000027721,0.0000027708,0.0000027689, -0.0000027644,0.0000027576,0.0000027498,0.0000027425,0.0000027365, -0.0000027309,0.0000027266,0.0000027262,0.0000027279,0.0000027309, -0.0000027294,0.0000027250,0.0000027209,0.0000027183,0.0000027161, -0.0000027136,0.0000027112,0.0000027103,0.0000027096,0.0000027057, -0.0000027021,0.0000027019,0.0000027034,0.0000027036,0.0000027027, -0.0000026997,0.0000026926,0.0000026850,0.0000026797,0.0000026780, -0.0000026776,0.0000026745,0.0000026712,0.0000026730,0.0000026767, -0.0000026784,0.0000026800,0.0000026813,0.0000026838,0.0000026824, -0.0000026735,0.0000026685,0.0000026698,0.0000026721,0.0000026677, -0.0000026562,0.0000026344,0.0000026022,0.0000025842,0.0000025760, -0.0000025624,0.0000025503,0.0000025432,0.0000025330,0.0000025273, -0.0000025403,0.0000025482,0.0000025425,0.0000025388,0.0000025377, -0.0000025370,0.0000025365,0.0000025354,0.0000025340,0.0000025346, -0.0000025368,0.0000025399,0.0000025428,0.0000025458,0.0000025475, -0.0000025402,0.0000025113,0.0000024772,0.0000024598,0.0000024505, -0.0000024402,0.0000024349,0.0000024345,0.0000024330,0.0000024326, -0.0000024388,0.0000024543,0.0000024691,0.0000024762,0.0000024790, -0.0000024786,0.0000024767,0.0000024730,0.0000024680,0.0000024683, -0.0000024801,0.0000025060,0.0000025372,0.0000025655,0.0000025858, -0.0000025932,0.0000025910,0.0000025876,0.0000025852,0.0000025846, -0.0000025836,0.0000025876,0.0000025904,0.0000025839,0.0000025716, -0.0000025658,0.0000025567,0.0000025481,0.0000025547,0.0000025696, -0.0000025729,0.0000025735,0.0000025705,0.0000025625,0.0000025567, -0.0000025545,0.0000025523,0.0000025490,0.0000025450,0.0000025418, -0.0000025398,0.0000025380,0.0000025366,0.0000025358,0.0000025346, -0.0000025346,0.0000025376,0.0000025386,0.0000025303,0.0000025066, -0.0000024838,0.0000024863,0.0000025063,0.0000025210,0.0000025210, -0.0000025245,0.0000025270,0.0000025147,0.0000025049,0.0000025115, -0.0000025150,0.0000025053,0.0000024928,0.0000024891,0.0000024926, -0.0000025014,0.0000025057,0.0000025044,0.0000025138,0.0000025543, -0.0000026023,0.0000026223,0.0000026233,0.0000026202,0.0000026116, -0.0000025975,0.0000025839,0.0000025746,0.0000025664,0.0000025563, -0.0000025483,0.0000025531,0.0000025665,0.0000025821,0.0000025929, -0.0000025982,0.0000025990,0.0000025963,0.0000025935,0.0000025942, -0.0000026003,0.0000026086,0.0000026152,0.0000026216,0.0000026279, -0.0000026326,0.0000026353,0.0000026365,0.0000026370,0.0000026369, -0.0000026368,0.0000026364,0.0000026351,0.0000026337,0.0000026323, -0.0000026308,0.0000026291,0.0000026270,0.0000026248,0.0000026233, -0.0000026229,0.0000026232,0.0000026239,0.0000026246,0.0000026253, -0.0000026269,0.0000026291,0.0000026306,0.0000026316,0.0000026319, -0.0000026316,0.0000026303,0.0000026267,0.0000026219,0.0000026186, -0.0000026189,0.0000026190,0.0000026195,0.0000026224,0.0000026295, -0.0000026406,0.0000026523,0.0000026602,0.0000026626,0.0000026604, -0.0000026524,0.0000026447,0.0000026428,0.0000026438,0.0000026438, -0.0000026439,0.0000026470,0.0000026526,0.0000026581,0.0000026639, -0.0000026711,0.0000026810,0.0000026942,0.0000027086,0.0000027216, -0.0000027317,0.0000027388,0.0000027431,0.0000027444,0.0000027437, -0.0000027415,0.0000027377,0.0000027310,0.0000027222,0.0000027150, -0.0000027141,0.0000027224,0.0000027377,0.0000027524,0.0000027613, -0.0000027665,0.0000027682,0.0000027668,0.0000027626,0.0000027572, -0.0000027482,0.0000027333,0.0000027183,0.0000027101,0.0000027079, -0.0000027043,0.0000026946,0.0000026788,0.0000026588,0.0000026398, -0.0000026276,0.0000026231,0.0000026208,0.0000026168,0.0000026126, -0.0000026099,0.0000026083,0.0000026075,0.0000026070,0.0000026061, -0.0000026058,0.0000026069,0.0000026082,0.0000026078,0.0000026049, -0.0000025998,0.0000025926,0.0000025852,0.0000025794,0.0000025755, -0.0000025720,0.0000025684,0.0000025657,0.0000025658,0.0000025702, -0.0000025778,0.0000025859,0.0000025932,0.0000025986,0.0000026024, -0.0000026067,0.0000026136,0.0000026233,0.0000026358,0.0000026493, -0.0000026619,0.0000026740,0.0000026872,0.0000026989,0.0000027053, -0.0000027056,0.0000027045,0.0000027083,0.0000027211,0.0000027418, -0.0000027626,0.0000027775,0.0000027856,0.0000027899,0.0000027930, -0.0000027957,0.0000027979,0.0000027992,0.0000027989,0.0000027966, -0.0000027939,0.0000027929,0.0000027933,0.0000027932,0.0000027905, -0.0000027840,0.0000027759,0.0000027696,0.0000027656,0.0000027618, -0.0000027573,0.0000027528,0.0000027492,0.0000027468,0.0000027464, -0.0000027474,0.0000027481,0.0000027454,0.0000027388,0.0000027301, -0.0000027214,0.0000027138,0.0000027083,0.0000027053,0.0000027047, -0.0000027048,0.0000027057,0.0000027090,0.0000027173,0.0000027302, -0.0000027467,0.0000027646,0.0000027774,0.0000027795,0.0000027785, -0.0000027886,0.0000028067,0.0000028160,0.0000028155,0.0000028093, -0.0000028036,0.0000028071,0.0000028152,0.0000028178,0.0000028148 + 0.0000026822, 0.0000026803, 0.0000026786, 0.0000026773, 0.0000026768, + 0.0000026771, 0.0000026783, 0.0000026801, 0.0000026820, 0.0000026840, + 0.0000026855, 0.0000026868, 0.0000026873, 0.0000026877, 0.0000026878, + 0.0000026879, 0.0000026877, 0.0000026870, 0.0000026858, 0.0000026842, + 0.0000026811, 0.0000026776, 0.0000026744, 0.0000026715, 0.0000026693, + 0.0000026687, 0.0000026698, 0.0000026731, 0.0000026779, 0.0000026830, + 0.0000026875, 0.0000026908, 0.0000026930, 0.0000026942, 0.0000026942, + 0.0000026937, 0.0000026937, 0.0000026941, 0.0000026948, 0.0000026952, + 0.0000026944, 0.0000026921, 0.0000026887, 0.0000026849, 0.0000026757, + 0.0000026721, 0.0000026690, 0.0000026660, 0.0000026632, 0.0000026609, + 0.0000026604, 0.0000026623, 0.0000026678, 0.0000026758, 0.0000026836, + 0.0000026895, 0.0000026938, 0.0000026969, 0.0000026989, 0.0000027001, + 0.0000027005, 0.0000026998, 0.0000026989, 0.0000026987, 0.0000026998, + 0.0000027014, 0.0000027019, 0.0000027000, 0.0000026956, 0.0000026903, + 0.0000026849, 0.0000026799, 0.0000026679, 0.0000026643, 0.0000026613, + 0.0000026586, 0.0000026563, 0.0000026544, 0.0000026529, 0.0000026527, + 0.0000026549, 0.0000026622, 0.0000026726, 0.0000026817, 0.0000026875, + 0.0000026913, 0.0000026943, 0.0000026974, 0.0000027001, 0.0000027021, + 0.0000027036, 0.0000027041, 0.0000027032, 0.0000027022, 0.0000027024, + 0.0000027046, 0.0000027069, 0.0000027067, 0.0000027031, 0.0000026966, + 0.0000026888, 0.0000026818, 0.0000026764, 0.0000026719, 0.0000026610, + 0.0000026573, 0.0000026540, 0.0000026509, 0.0000026482, 0.0000026462, + 0.0000026454, 0.0000026453, 0.0000026457, 0.0000026480, 0.0000026564, + 0.0000026686, 0.0000026779, 0.0000026829, 0.0000026861, 0.0000026898, + 0.0000026943, 0.0000026983, 0.0000027009, 0.0000027024, 0.0000027040, + 0.0000027054, 0.0000027055, 0.0000027046, 0.0000027038, 0.0000027049, + 0.0000027083, 0.0000027104, 0.0000027090, 0.0000027033, 0.0000026949, + 0.0000026860, 0.0000026787, 0.0000026733, 0.0000026691, 0.0000026650, + 0.0000026572, 0.0000026543, 0.0000026512, 0.0000026480, 0.0000026448, + 0.0000026414, 0.0000026382, 0.0000026373, 0.0000026381, 0.0000026394, + 0.0000026423, 0.0000026511, 0.0000026641, 0.0000026738, 0.0000026778, + 0.0000026813, 0.0000026870, 0.0000026935, 0.0000026979, 0.0000027003, + 0.0000027023, 0.0000027042, 0.0000027056, 0.0000027061, 0.0000027060, + 0.0000027055, 0.0000027046, 0.0000027042, 0.0000027063, 0.0000027102, + 0.0000027114, 0.0000027086, 0.0000027012, 0.0000026919, 0.0000026834, + 0.0000026773, 0.0000026726, 0.0000026685, 0.0000026646, 0.0000026608, + 0.0000026563, 0.0000026542, 0.0000026520, 0.0000026493, 0.0000026461, + 0.0000026425, 0.0000026387, 0.0000026347, 0.0000026319, 0.0000026319, + 0.0000026340, 0.0000026381, 0.0000026470, 0.0000026601, 0.0000026701, + 0.0000026735, 0.0000026776, 0.0000026858, 0.0000026939, 0.0000026975, + 0.0000026982, 0.0000027013, 0.0000027063, 0.0000027099, 0.0000027111, + 0.0000027107, 0.0000027090, 0.0000027071, 0.0000027053, 0.0000027039, + 0.0000027041, 0.0000027069, 0.0000027103, 0.0000027100, 0.0000027052, + 0.0000026973, 0.0000026885, 0.0000026815, 0.0000026770, 0.0000026732, + 0.0000026693, 0.0000026655, 0.0000026620, 0.0000026590, 0.0000026591, + 0.0000026583, 0.0000026564, 0.0000026535, 0.0000026500, 0.0000026463, + 0.0000026430, 0.0000026396, 0.0000026349, 0.0000026299, 0.0000026277, + 0.0000026296, 0.0000026345, 0.0000026433, 0.0000026568, 0.0000026678, + 0.0000026703, 0.0000026741, 0.0000026843, 0.0000026932, 0.0000026952, + 0.0000026951, 0.0000026980, 0.0000027049, 0.0000027104, 0.0000027131, + 0.0000027143, 0.0000027145, 0.0000027135, 0.0000027114, 0.0000027085, + 0.0000027046, 0.0000027024, 0.0000027032, 0.0000027066, 0.0000027085, + 0.0000027060, 0.0000026998, 0.0000026920, 0.0000026845, 0.0000026798, + 0.0000026772, 0.0000026745, 0.0000026710, 0.0000026673, 0.0000026637, + 0.0000026611, 0.0000026597, 0.0000026679, 0.0000026675, 0.0000026654, + 0.0000026622, 0.0000026576, 0.0000026521, 0.0000026478, 0.0000026446, + 0.0000026421, 0.0000026384, 0.0000026322, 0.0000026264, 0.0000026262, + 0.0000026313, 0.0000026400, 0.0000026533, 0.0000026662, 0.0000026690, + 0.0000026714, 0.0000026820, 0.0000026916, 0.0000026939, 0.0000026922, + 0.0000026942, 0.0000027014, 0.0000027068, 0.0000027092, 0.0000027103, + 0.0000027111, 0.0000027118, 0.0000027123, 0.0000027122, 0.0000027113, + 0.0000027080, 0.0000027030, 0.0000027001, 0.0000027011, 0.0000027042, + 0.0000027044, 0.0000027002, 0.0000026939, 0.0000026866, 0.0000026805, + 0.0000026783, 0.0000026780, 0.0000026767, 0.0000026738, 0.0000026698, + 0.0000026660, 0.0000026644, 0.0000026647, 0.0000026666, 0.0000026800, + 0.0000026800, 0.0000026790, 0.0000026765, 0.0000026716, 0.0000026655, + 0.0000026586, 0.0000026520, 0.0000026471, 0.0000026444, 0.0000026415, + 0.0000026364, 0.0000026291, 0.0000026249, 0.0000026282, 0.0000026370, + 0.0000026497, 0.0000026646, 0.0000026695, 0.0000026702, 0.0000026795, + 0.0000026891, 0.0000026927, 0.0000026917, 0.0000026910, 0.0000026970, + 0.0000027037, 0.0000027062, 0.0000027071, 0.0000027076, 0.0000027076, + 0.0000027080, 0.0000027080, 0.0000027075, 0.0000027078, 0.0000027076, + 0.0000027051, 0.0000027007, 0.0000026977, 0.0000026984, 0.0000027001, + 0.0000026987, 0.0000026937, 0.0000026878, 0.0000026816, 0.0000026768, + 0.0000026761, 0.0000026776, 0.0000026779, 0.0000026765, 0.0000026730, + 0.0000026692, 0.0000026679, 0.0000026700, 0.0000026743, 0.0000026781, + 0.0000026915, 0.0000026923, 0.0000026921, 0.0000026906, 0.0000026872, + 0.0000026824, 0.0000026760, 0.0000026685, 0.0000026603, 0.0000026530, + 0.0000026477, 0.0000026440, 0.0000026402, 0.0000026337, 0.0000026270, + 0.0000026264, 0.0000026340, 0.0000026458, 0.0000026620, 0.0000026706, + 0.0000026705, 0.0000026769, 0.0000026856, 0.0000026902, 0.0000026918, + 0.0000026899, 0.0000026921, 0.0000026998, 0.0000027050, 0.0000027074, + 0.0000027091, 0.0000027106, 0.0000027117, 0.0000027121, 0.0000027108, + 0.0000027076, 0.0000027050, 0.0000027022, 0.0000027010, 0.0000027001, + 0.0000026978, 0.0000026959, 0.0000026957, 0.0000026951, 0.0000026923, + 0.0000026877, 0.0000026824, 0.0000026767, 0.0000026730, 0.0000026733, + 0.0000026758, 0.0000026776, 0.0000026778, 0.0000026760, 0.0000026732, + 0.0000026725, 0.0000026752, 0.0000026805, 0.0000026858, 0.0000026896, + 0.0000026979, 0.0000026985, 0.0000026987, 0.0000026976, 0.0000026960, + 0.0000026930, 0.0000026897, 0.0000026857, 0.0000026800, 0.0000026721, + 0.0000026629, 0.0000026542, 0.0000026479, 0.0000026440, 0.0000026391, + 0.0000026321, 0.0000026275, 0.0000026315, 0.0000026424, 0.0000026581, + 0.0000026713, 0.0000026724, 0.0000026757, 0.0000026822, 0.0000026862, + 0.0000026902, 0.0000026907, 0.0000026895, 0.0000026943, 0.0000027019, + 0.0000027074, 0.0000027116, 0.0000027153, 0.0000027197, 0.0000027244, + 0.0000027268, 0.0000027257, 0.0000027213, 0.0000027151, 0.0000027072, + 0.0000026998, 0.0000026954, 0.0000026941, 0.0000026940, 0.0000026934, + 0.0000026921, 0.0000026895, 0.0000026862, 0.0000026830, 0.0000026786, + 0.0000026733, 0.0000026708, 0.0000026714, 0.0000026739, 0.0000026762, + 0.0000026777, 0.0000026776, 0.0000026766, 0.0000026772, 0.0000026808, + 0.0000026861, 0.0000026911, 0.0000026947, 0.0000026969, 0.0000027016, + 0.0000027028, 0.0000027038, 0.0000027033, 0.0000027022, 0.0000026998, + 0.0000026976, 0.0000026956, 0.0000026932, 0.0000026895, 0.0000026831, + 0.0000026741, 0.0000026640, 0.0000026546, 0.0000026488, 0.0000026446, + 0.0000026385, 0.0000026317, 0.0000026305, 0.0000026391, 0.0000026536, + 0.0000026700, 0.0000026746, 0.0000026763, 0.0000026809, 0.0000026832, + 0.0000026871, 0.0000026911, 0.0000026914, 0.0000026920, 0.0000026981, + 0.0000027052, 0.0000027115, 0.0000027170, 0.0000027228, 0.0000027303, + 0.0000027379, 0.0000027414, 0.0000027411, 0.0000027376, 0.0000027323, + 0.0000027250, 0.0000027146, 0.0000027028, 0.0000026935, 0.0000026894, + 0.0000026891, 0.0000026897, 0.0000026882, 0.0000026849, 0.0000026818, + 0.0000026795, 0.0000026755, 0.0000026708, 0.0000026693, 0.0000026709, + 0.0000026733, 0.0000026753, 0.0000026769, 0.0000026778, 0.0000026785, + 0.0000026808, 0.0000026858, 0.0000026911, 0.0000026952, 0.0000026978, + 0.0000026993, 0.0000027005, 0.0000027085, 0.0000027106, 0.0000027122, + 0.0000027122, 0.0000027115, 0.0000027097, 0.0000027078, 0.0000027055, + 0.0000027025, 0.0000026991, 0.0000026951, 0.0000026904, 0.0000026840, + 0.0000026748, 0.0000026631, 0.0000026545, 0.0000026502, 0.0000026446, + 0.0000026377, 0.0000026326, 0.0000026360, 0.0000026490, 0.0000026661, + 0.0000026758, 0.0000026767, 0.0000026806, 0.0000026816, 0.0000026840, + 0.0000026884, 0.0000026934, 0.0000026947, 0.0000026968, 0.0000027028, + 0.0000027100, 0.0000027168, 0.0000027223, 0.0000027288, 0.0000027376, + 0.0000027459, 0.0000027493, 0.0000027489, 0.0000027463, 0.0000027428, + 0.0000027382, 0.0000027319, 0.0000027230, 0.0000027106, 0.0000026972, + 0.0000026879, 0.0000026847, 0.0000026852, 0.0000026846, 0.0000026821, + 0.0000026794, 0.0000026766, 0.0000026723, 0.0000026684, 0.0000026682, + 0.0000026712, 0.0000026741, 0.0000026755, 0.0000026765, 0.0000026774, + 0.0000026789, 0.0000026826, 0.0000026889, 0.0000026951, 0.0000026990, + 0.0000027011, 0.0000027028, 0.0000027046, 0.0000027066, 0.0000027150, + 0.0000027159, 0.0000027169, 0.0000027172, 0.0000027171, 0.0000027166, + 0.0000027165, 0.0000027163, 0.0000027147, 0.0000027114, 0.0000027060, + 0.0000026999, 0.0000026951, 0.0000026912, 0.0000026843, 0.0000026721, + 0.0000026604, 0.0000026553, 0.0000026505, 0.0000026440, 0.0000026378, + 0.0000026355, 0.0000026445, 0.0000026605, 0.0000026749, 0.0000026778, + 0.0000026796, 0.0000026810, 0.0000026819, 0.0000026849, 0.0000026906, + 0.0000026972, 0.0000026989, 0.0000027019, 0.0000027073, 0.0000027143, + 0.0000027211, 0.0000027261, 0.0000027318, 0.0000027401, 0.0000027485, + 0.0000027516, 0.0000027509, 0.0000027483, 0.0000027455, 0.0000027423, + 0.0000027383, 0.0000027343, 0.0000027285, 0.0000027187, 0.0000027051, + 0.0000026913, 0.0000026834, 0.0000026812, 0.0000026812, 0.0000026805, + 0.0000026786, 0.0000026745, 0.0000026691, 0.0000026661, 0.0000026669, + 0.0000026712, 0.0000026746, 0.0000026760, 0.0000026763, 0.0000026766, + 0.0000026783, 0.0000026827, 0.0000026898, 0.0000026973, 0.0000027026, + 0.0000027052, 0.0000027073, 0.0000027099, 0.0000027125, 0.0000027140, + 0.0000027162, 0.0000027154, 0.0000027163, 0.0000027173, 0.0000027180, + 0.0000027185, 0.0000027191, 0.0000027199, 0.0000027207, 0.0000027207, + 0.0000027189, 0.0000027142, 0.0000027065, 0.0000026994, 0.0000026955, + 0.0000026914, 0.0000026810, 0.0000026664, 0.0000026590, 0.0000026560, + 0.0000026501, 0.0000026441, 0.0000026389, 0.0000026413, 0.0000026540, + 0.0000026702, 0.0000026785, 0.0000026789, 0.0000026804, 0.0000026802, + 0.0000026830, 0.0000026868, 0.0000026937, 0.0000027001, 0.0000027029, + 0.0000027066, 0.0000027111, 0.0000027168, 0.0000027226, 0.0000027271, + 0.0000027319, 0.0000027392, 0.0000027476, 0.0000027514, 0.0000027508, + 0.0000027479, 0.0000027449, 0.0000027420, 0.0000027389, 0.0000027359, + 0.0000027323, 0.0000027283, 0.0000027225, 0.0000027128, 0.0000026988, + 0.0000026858, 0.0000026800, 0.0000026795, 0.0000026798, 0.0000026787, + 0.0000026735, 0.0000026665, 0.0000026634, 0.0000026650, 0.0000026700, + 0.0000026742, 0.0000026762, 0.0000026764, 0.0000026764, 0.0000026775, + 0.0000026819, 0.0000026900, 0.0000026995, 0.0000027069, 0.0000027106, + 0.0000027123, 0.0000027147, 0.0000027175, 0.0000027189, 0.0000027178, + 0.0000027134, 0.0000027134, 0.0000027168, 0.0000027211, 0.0000027242, + 0.0000027258, 0.0000027270, 0.0000027273, 0.0000027264, 0.0000027248, + 0.0000027228, 0.0000027215, 0.0000027197, 0.0000027140, 0.0000027050, + 0.0000026982, 0.0000026955, 0.0000026891, 0.0000026735, 0.0000026613, + 0.0000026596, 0.0000026559, 0.0000026498, 0.0000026437, 0.0000026411, + 0.0000026477, 0.0000026631, 0.0000026758, 0.0000026790, 0.0000026790, + 0.0000026794, 0.0000026802, 0.0000026850, 0.0000026893, 0.0000026961, + 0.0000027015, 0.0000027063, 0.0000027113, 0.0000027148, 0.0000027179, + 0.0000027213, 0.0000027249, 0.0000027286, 0.0000027346, 0.0000027433, + 0.0000027491, 0.0000027494, 0.0000027467, 0.0000027434, 0.0000027405, + 0.0000027380, 0.0000027353, 0.0000027317, 0.0000027281, 0.0000027250, + 0.0000027221, 0.0000027173, 0.0000027074, 0.0000026932, 0.0000026826, + 0.0000026802, 0.0000026803, 0.0000026791, 0.0000026728, 0.0000026646, + 0.0000026611, 0.0000026625, 0.0000026681, 0.0000026730, 0.0000026756, + 0.0000026764, 0.0000026767, 0.0000026778, 0.0000026822, 0.0000026908, + 0.0000027017, 0.0000027109, 0.0000027161, 0.0000027178, 0.0000027191, + 0.0000027209, 0.0000027215, 0.0000027202, 0.0000027168, 0.0000027139, + 0.0000027190, 0.0000027251, 0.0000027282, 0.0000027304, 0.0000027314, + 0.0000027333, 0.0000027361, 0.0000027371, 0.0000027369, 0.0000027336, + 0.0000027276, 0.0000027223, 0.0000027207, 0.0000027194, 0.0000027124, + 0.0000027021, 0.0000026971, 0.0000026945, 0.0000026823, 0.0000026645, + 0.0000026600, 0.0000026600, 0.0000026558, 0.0000026484, 0.0000026442, + 0.0000026440, 0.0000026551, 0.0000026696, 0.0000026776, 0.0000026778, + 0.0000026781, 0.0000026775, 0.0000026810, 0.0000026871, 0.0000026921, + 0.0000026971, 0.0000027019, 0.0000027088, 0.0000027153, 0.0000027178, + 0.0000027178, 0.0000027177, 0.0000027190, 0.0000027216, 0.0000027264, + 0.0000027346, 0.0000027425, 0.0000027452, 0.0000027442, 0.0000027415, + 0.0000027391, 0.0000027371, 0.0000027349, 0.0000027319, 0.0000027281, + 0.0000027244, 0.0000027215, 0.0000027198, 0.0000027181, 0.0000027131, + 0.0000027020, 0.0000026898, 0.0000026837, 0.0000026824, 0.0000026796, + 0.0000026720, 0.0000026633, 0.0000026593, 0.0000026604, 0.0000026655, + 0.0000026708, 0.0000026741, 0.0000026760, 0.0000026774, 0.0000026799, + 0.0000026854, 0.0000026942, 0.0000027044, 0.0000027134, 0.0000027194, + 0.0000027226, 0.0000027242, 0.0000027248, 0.0000027240, 0.0000027214, + 0.0000027175, 0.0000027140, 0.0000027242, 0.0000027270, 0.0000027232, + 0.0000027170, 0.0000027134, 0.0000027128, 0.0000027150, 0.0000027200, + 0.0000027265, 0.0000027333, 0.0000027395, 0.0000027409, 0.0000027361, + 0.0000027272, 0.0000027209, 0.0000027208, 0.0000027186, 0.0000027088, + 0.0000026985, 0.0000026965, 0.0000026909, 0.0000026720, 0.0000026595, + 0.0000026605, 0.0000026611, 0.0000026538, 0.0000026479, 0.0000026449, + 0.0000026480, 0.0000026623, 0.0000026732, 0.0000026768, 0.0000026757, + 0.0000026757, 0.0000026762, 0.0000026822, 0.0000026895, 0.0000026946, + 0.0000026976, 0.0000027021, 0.0000027104, 0.0000027172, 0.0000027190, + 0.0000027169, 0.0000027137, 0.0000027119, 0.0000027123, 0.0000027151, + 0.0000027217, 0.0000027306, 0.0000027372, 0.0000027386, 0.0000027371, + 0.0000027356, 0.0000027347, 0.0000027333, 0.0000027310, 0.0000027287, + 0.0000027261, 0.0000027228, 0.0000027195, 0.0000027172, 0.0000027163, + 0.0000027147, 0.0000027088, 0.0000026985, 0.0000026899, 0.0000026852, + 0.0000026801, 0.0000026714, 0.0000026625, 0.0000026585, 0.0000026594, + 0.0000026631, 0.0000026671, 0.0000026707, 0.0000026745, 0.0000026787, + 0.0000026838, 0.0000026908, 0.0000026999, 0.0000027089, 0.0000027157, + 0.0000027203, 0.0000027245, 0.0000027280, 0.0000027287, 0.0000027267, + 0.0000027230, 0.0000027182, 0.0000027152, 0.0000027173, 0.0000027240, + 0.0000027081, 0.0000026941, 0.0000026867, 0.0000026856, 0.0000026868, + 0.0000026898, 0.0000026936, 0.0000026982, 0.0000027044, 0.0000027138, + 0.0000027258, 0.0000027368, 0.0000027405, 0.0000027363, 0.0000027256, + 0.0000027203, 0.0000027206, 0.0000027158, 0.0000027030, 0.0000026966, + 0.0000026966, 0.0000026834, 0.0000026622, 0.0000026590, 0.0000026629, + 0.0000026613, 0.0000026524, 0.0000026478, 0.0000026460, 0.0000026539, + 0.0000026675, 0.0000026744, 0.0000026753, 0.0000026732, 0.0000026734, + 0.0000026756, 0.0000026834, 0.0000026918, 0.0000026963, 0.0000026983, + 0.0000027027, 0.0000027106, 0.0000027166, 0.0000027176, 0.0000027151, + 0.0000027107, 0.0000027062, 0.0000027033, 0.0000027032, 0.0000027070, + 0.0000027144, 0.0000027236, 0.0000027301, 0.0000027313, 0.0000027302, + 0.0000027300, 0.0000027298, 0.0000027283, 0.0000027269, 0.0000027263, + 0.0000027251, 0.0000027223, 0.0000027185, 0.0000027153, 0.0000027143, + 0.0000027142, 0.0000027120, 0.0000027053, 0.0000026965, 0.0000026888, + 0.0000026809, 0.0000026711, 0.0000026625, 0.0000026592, 0.0000026601, + 0.0000026624, 0.0000026641, 0.0000026672, 0.0000026731, 0.0000026806, + 0.0000026886, 0.0000026968, 0.0000027055, 0.0000027135, 0.0000027190, + 0.0000027218, 0.0000027248, 0.0000027290, 0.0000027313, 0.0000027297, + 0.0000027254, 0.0000027195, 0.0000027164, 0.0000027218, 0.0000027292, + 0.0000026955, 0.0000026794, 0.0000026751, 0.0000026765, 0.0000026793, + 0.0000026829, 0.0000026866, 0.0000026895, 0.0000026914, 0.0000026921, + 0.0000026914, 0.0000026949, 0.0000027042, 0.0000027198, 0.0000027354, + 0.0000027407, 0.0000027343, 0.0000027225, 0.0000027190, 0.0000027196, + 0.0000027103, 0.0000026985, 0.0000026982, 0.0000026947, 0.0000026722, + 0.0000026592, 0.0000026610, 0.0000026664, 0.0000026606, 0.0000026517, + 0.0000026479, 0.0000026483, 0.0000026600, 0.0000026703, 0.0000026743, + 0.0000026734, 0.0000026705, 0.0000026716, 0.0000026752, 0.0000026844, + 0.0000026932, 0.0000026973, 0.0000026994, 0.0000027038, 0.0000027099, + 0.0000027134, 0.0000027135, 0.0000027116, 0.0000027083, 0.0000027035, + 0.0000026980, 0.0000026937, 0.0000026931, 0.0000026962, 0.0000027051, + 0.0000027165, 0.0000027240, 0.0000027259, 0.0000027261, 0.0000027262, + 0.0000027254, 0.0000027239, 0.0000027239, 0.0000027248, 0.0000027242, + 0.0000027213, 0.0000027173, 0.0000027138, 0.0000027126, 0.0000027126, + 0.0000027118, 0.0000027086, 0.0000027016, 0.0000026923, 0.0000026820, + 0.0000026713, 0.0000026634, 0.0000026614, 0.0000026626, 0.0000026636, + 0.0000026638, 0.0000026657, 0.0000026726, 0.0000026830, 0.0000026934, + 0.0000027024, 0.0000027104, 0.0000027174, 0.0000027221, 0.0000027243, + 0.0000027259, 0.0000027288, 0.0000027316, 0.0000027318, 0.0000027288, + 0.0000027228, 0.0000027195, 0.0000027260, 0.0000027312, 0.0000027190, + 0.0000026760, 0.0000026746, 0.0000026747, 0.0000026760, 0.0000026776, + 0.0000026808, 0.0000026848, 0.0000026888, 0.0000026918, 0.0000026925, + 0.0000026915, 0.0000026895, 0.0000026879, 0.0000026899, 0.0000027005, + 0.0000027191, 0.0000027367, 0.0000027394, 0.0000027298, 0.0000027186, + 0.0000027191, 0.0000027162, 0.0000027039, 0.0000026983, 0.0000027012, + 0.0000026864, 0.0000026641, 0.0000026589, 0.0000026656, 0.0000026689, + 0.0000026592, 0.0000026513, 0.0000026477, 0.0000026512, 0.0000026642, + 0.0000026718, 0.0000026740, 0.0000026711, 0.0000026679, 0.0000026700, + 0.0000026751, 0.0000026849, 0.0000026932, 0.0000026976, 0.0000027006, + 0.0000027052, 0.0000027091, 0.0000027099, 0.0000027085, 0.0000027067, + 0.0000027048, 0.0000027016, 0.0000026964, 0.0000026896, 0.0000026833, + 0.0000026808, 0.0000026849, 0.0000026972, 0.0000027116, 0.0000027208, + 0.0000027237, 0.0000027242, 0.0000027237, 0.0000027222, 0.0000027215, + 0.0000027224, 0.0000027228, 0.0000027215, 0.0000027185, 0.0000027149, + 0.0000027119, 0.0000027105, 0.0000027101, 0.0000027100, 0.0000027088, + 0.0000027040, 0.0000026945, 0.0000026826, 0.0000026717, 0.0000026654, + 0.0000026646, 0.0000026660, 0.0000026661, 0.0000026649, 0.0000026663, + 0.0000026737, 0.0000026856, 0.0000026973, 0.0000027067, 0.0000027145, + 0.0000027208, 0.0000027251, 0.0000027272, 0.0000027283, 0.0000027297, + 0.0000027312, 0.0000027320, 0.0000027313, 0.0000027273, 0.0000027247, + 0.0000027296, 0.0000027317, 0.0000027154, 0.0000026894, 0.0000026752, + 0.0000026751, 0.0000026742, 0.0000026744, 0.0000026760, 0.0000026784, + 0.0000026815, 0.0000026844, 0.0000026881, 0.0000026910, 0.0000026923, + 0.0000026916, 0.0000026896, 0.0000026865, 0.0000026851, 0.0000026886, + 0.0000027016, 0.0000027223, 0.0000027382, 0.0000027377, 0.0000027239, + 0.0000027172, 0.0000027180, 0.0000027117, 0.0000027002, 0.0000027019, + 0.0000026984, 0.0000026749, 0.0000026613, 0.0000026613, 0.0000026706, + 0.0000026694, 0.0000026577, 0.0000026504, 0.0000026484, 0.0000026551, + 0.0000026673, 0.0000026726, 0.0000026731, 0.0000026694, 0.0000026659, + 0.0000026688, 0.0000026746, 0.0000026841, 0.0000026918, 0.0000026971, + 0.0000027017, 0.0000027062, 0.0000027083, 0.0000027072, 0.0000027044, + 0.0000027020, 0.0000027001, 0.0000026977, 0.0000026938, 0.0000026879, + 0.0000026806, 0.0000026733, 0.0000026709, 0.0000026768, 0.0000026930, + 0.0000027106, 0.0000027205, 0.0000027227, 0.0000027225, 0.0000027214, + 0.0000027203, 0.0000027205, 0.0000027206, 0.0000027192, 0.0000027163, + 0.0000027131, 0.0000027106, 0.0000027089, 0.0000027080, 0.0000027076, + 0.0000027077, 0.0000027075, 0.0000027034, 0.0000026941, 0.0000026823, + 0.0000026724, 0.0000026678, 0.0000026682, 0.0000026693, 0.0000026685, + 0.0000026677, 0.0000026691, 0.0000026764, 0.0000026879, 0.0000026991, + 0.0000027082, 0.0000027161, 0.0000027226, 0.0000027271, 0.0000027295, + 0.0000027310, 0.0000027321, 0.0000027324, 0.0000027323, 0.0000027323, + 0.0000027301, 0.0000027283, 0.0000027329, 0.0000027349, 0.0000027176, + 0.0000026893, 0.0000026761, 0.0000026753, 0.0000026763, 0.0000026791, + 0.0000026822, 0.0000026846, 0.0000026861, 0.0000026865, 0.0000026859, + 0.0000026854, 0.0000026862, 0.0000026882, 0.0000026903, 0.0000026911, + 0.0000026900, 0.0000026871, 0.0000026842, 0.0000026834, 0.0000026901, + 0.0000027061, 0.0000027270, 0.0000027390, 0.0000027330, 0.0000027185, + 0.0000027169, 0.0000027174, 0.0000027072, 0.0000027010, 0.0000027041, + 0.0000026888, 0.0000026681, 0.0000026608, 0.0000026659, 0.0000026744, + 0.0000026682, 0.0000026567, 0.0000026511, 0.0000026515, 0.0000026604, + 0.0000026703, 0.0000026732, 0.0000026724, 0.0000026680, 0.0000026643, + 0.0000026673, 0.0000026730, 0.0000026820, 0.0000026897, 0.0000026958, + 0.0000027016, 0.0000027057, 0.0000027068, 0.0000027049, 0.0000027015, + 0.0000026985, 0.0000026962, 0.0000026936, 0.0000026901, 0.0000026851, + 0.0000026793, 0.0000026732, 0.0000026674, 0.0000026664, 0.0000026745, + 0.0000026936, 0.0000027122, 0.0000027207, 0.0000027212, 0.0000027200, + 0.0000027188, 0.0000027187, 0.0000027193, 0.0000027180, 0.0000027147, + 0.0000027107, 0.0000027074, 0.0000027052, 0.0000027044, 0.0000027044, + 0.0000027047, 0.0000027052, 0.0000027048, 0.0000027007, 0.0000026920, + 0.0000026814, 0.0000026730, 0.0000026702, 0.0000026712, 0.0000026719, + 0.0000026704, 0.0000026699, 0.0000026729, 0.0000026794, 0.0000026885, + 0.0000026979, 0.0000027063, 0.0000027145, 0.0000027219, 0.0000027277, + 0.0000027311, 0.0000027331, 0.0000027343, 0.0000027346, 0.0000027342, + 0.0000027336, 0.0000027315, 0.0000027296, 0.0000027347, 0.0000027396, + 0.0000027240, 0.0000026941, 0.0000026778, 0.0000026760, 0.0000026804, + 0.0000026864, 0.0000026920, 0.0000026956, 0.0000026980, 0.0000027004, + 0.0000027019, 0.0000027001, 0.0000026947, 0.0000026882, 0.0000026852, + 0.0000026853, 0.0000026881, 0.0000026911, 0.0000026923, 0.0000026892, + 0.0000026846, 0.0000026831, 0.0000026848, 0.0000026944, 0.0000027129, + 0.0000027323, 0.0000027380, 0.0000027264, 0.0000027155, 0.0000027189, + 0.0000027154, 0.0000027034, 0.0000027044, 0.0000027011, 0.0000026801, + 0.0000026649, 0.0000026628, 0.0000026716, 0.0000026764, 0.0000026669, + 0.0000026579, 0.0000026549, 0.0000026571, 0.0000026661, 0.0000026739, + 0.0000026749, 0.0000026716, 0.0000026668, 0.0000026632, 0.0000026654, + 0.0000026711, 0.0000026790, 0.0000026870, 0.0000026935, 0.0000026996, + 0.0000027029, 0.0000027035, 0.0000027014, 0.0000026979, 0.0000026950, + 0.0000026930, 0.0000026909, 0.0000026881, 0.0000026839, 0.0000026785, + 0.0000026732, 0.0000026692, 0.0000026665, 0.0000026669, 0.0000026767, + 0.0000026965, 0.0000027143, 0.0000027199, 0.0000027189, 0.0000027168, + 0.0000027161, 0.0000027171, 0.0000027174, 0.0000027154, 0.0000027111, + 0.0000027068, 0.0000027029, 0.0000027001, 0.0000026987, 0.0000026989, + 0.0000026999, 0.0000027007, 0.0000026998, 0.0000026955, 0.0000026882, + 0.0000026799, 0.0000026732, 0.0000026714, 0.0000026732, 0.0000026736, + 0.0000026719, 0.0000026723, 0.0000026764, 0.0000026821, 0.0000026880, + 0.0000026947, 0.0000027023, 0.0000027109, 0.0000027195, 0.0000027265, + 0.0000027315, 0.0000027343, 0.0000027358, 0.0000027365, 0.0000027367, + 0.0000027366, 0.0000027336, 0.0000027296, 0.0000027331, 0.0000027400, + 0.0000027324, 0.0000027034, 0.0000026819, 0.0000026769, 0.0000026771, + 0.0000026910, 0.0000026930, 0.0000026938, 0.0000026957, 0.0000026992, + 0.0000027045, 0.0000027105, 0.0000027137, 0.0000027119, 0.0000027033, + 0.0000026920, 0.0000026851, 0.0000026848, 0.0000026883, 0.0000026932, + 0.0000026954, 0.0000026934, 0.0000026882, 0.0000026845, 0.0000026849, + 0.0000026893, 0.0000027021, 0.0000027214, 0.0000027375, 0.0000027368, + 0.0000027193, 0.0000027178, 0.0000027203, 0.0000027114, 0.0000027041, + 0.0000027065, 0.0000026938, 0.0000026735, 0.0000026644, 0.0000026668, + 0.0000026758, 0.0000026764, 0.0000026674, 0.0000026621, 0.0000026614, + 0.0000026645, 0.0000026723, 0.0000026780, 0.0000026770, 0.0000026705, + 0.0000026658, 0.0000026627, 0.0000026647, 0.0000026694, 0.0000026759, + 0.0000026840, 0.0000026906, 0.0000026962, 0.0000026984, 0.0000026983, + 0.0000026958, 0.0000026919, 0.0000026890, 0.0000026876, 0.0000026867, + 0.0000026853, 0.0000026829, 0.0000026794, 0.0000026751, 0.0000026712, + 0.0000026693, 0.0000026689, 0.0000026702, 0.0000026802, 0.0000026998, + 0.0000027158, 0.0000027191, 0.0000027161, 0.0000027138, 0.0000027141, + 0.0000027161, 0.0000027164, 0.0000027138, 0.0000027095, 0.0000027047, + 0.0000027000, 0.0000026960, 0.0000026932, 0.0000026921, 0.0000026927, + 0.0000026934, 0.0000026926, 0.0000026891, 0.0000026839, 0.0000026778, + 0.0000026731, 0.0000026728, 0.0000026751, 0.0000026753, 0.0000026736, + 0.0000026749, 0.0000026794, 0.0000026838, 0.0000026874, 0.0000026921, + 0.0000026985, 0.0000027065, 0.0000027157, 0.0000027236, 0.0000027294, + 0.0000027338, 0.0000027366, 0.0000027378, 0.0000027387, 0.0000027396, + 0.0000027377, 0.0000027312, 0.0000027303, 0.0000027388, 0.0000027378, + 0.0000027147, 0.0000026895, 0.0000026810, 0.0000026813, 0.0000026853, + 0.0000026920, 0.0000026885, 0.0000026876, 0.0000026899, 0.0000026948, + 0.0000027019, 0.0000027100, 0.0000027168, 0.0000027203, 0.0000027186, + 0.0000027101, 0.0000026972, 0.0000026874, 0.0000026854, 0.0000026888, + 0.0000026944, 0.0000026980, 0.0000026983, 0.0000026941, 0.0000026895, + 0.0000026882, 0.0000026901, 0.0000026971, 0.0000027124, 0.0000027307, + 0.0000027407, 0.0000027304, 0.0000027166, 0.0000027211, 0.0000027196, + 0.0000027077, 0.0000027068, 0.0000027040, 0.0000026863, 0.0000026688, + 0.0000026661, 0.0000026713, 0.0000026783, 0.0000026775, 0.0000026711, + 0.0000026698, 0.0000026709, 0.0000026737, 0.0000026789, 0.0000026826, + 0.0000026799, 0.0000026710, 0.0000026657, 0.0000026634, 0.0000026649, + 0.0000026682, 0.0000026729, 0.0000026808, 0.0000026878, 0.0000026921, + 0.0000026932, 0.0000026925, 0.0000026892, 0.0000026844, 0.0000026809, + 0.0000026799, 0.0000026803, 0.0000026800, 0.0000026786, 0.0000026774, + 0.0000026762, 0.0000026748, 0.0000026733, 0.0000026730, 0.0000026732, + 0.0000026745, 0.0000026839, 0.0000027024, 0.0000027156, 0.0000027166, + 0.0000027129, 0.0000027111, 0.0000027132, 0.0000027160, 0.0000027157, + 0.0000027127, 0.0000027087, 0.0000027035, 0.0000026974, 0.0000026919, + 0.0000026878, 0.0000026853, 0.0000026846, 0.0000026849, 0.0000026847, + 0.0000026834, 0.0000026801, 0.0000026751, 0.0000026727, 0.0000026740, + 0.0000026767, 0.0000026765, 0.0000026758, 0.0000026784, 0.0000026831, + 0.0000026861, 0.0000026877, 0.0000026907, 0.0000026962, 0.0000027031, + 0.0000027108, 0.0000027188, 0.0000027254, 0.0000027306, 0.0000027351, + 0.0000027385, 0.0000027402, 0.0000027415, 0.0000027408, 0.0000027348, + 0.0000027299, 0.0000027358, 0.0000027409, 0.0000027258, 0.0000026996, + 0.0000026878, 0.0000026879, 0.0000026908, 0.0000026935, 0.0000026881, + 0.0000026831, 0.0000026822, 0.0000026854, 0.0000026913, 0.0000026985, + 0.0000027066, 0.0000027144, 0.0000027203, 0.0000027226, 0.0000027224, + 0.0000027150, 0.0000027014, 0.0000026891, 0.0000026857, 0.0000026888, + 0.0000026950, 0.0000027004, 0.0000027026, 0.0000027007, 0.0000026967, + 0.0000026942, 0.0000026936, 0.0000026977, 0.0000027071, 0.0000027227, + 0.0000027394, 0.0000027411, 0.0000027211, 0.0000027197, 0.0000027234, + 0.0000027167, 0.0000027069, 0.0000027086, 0.0000026985, 0.0000026794, + 0.0000026671, 0.0000026697, 0.0000026757, 0.0000026805, 0.0000026801, + 0.0000026778, 0.0000026793, 0.0000026819, 0.0000026835, 0.0000026860, + 0.0000026878, 0.0000026842, 0.0000026744, 0.0000026670, 0.0000026647, + 0.0000026657, 0.0000026673, 0.0000026703, 0.0000026773, 0.0000026849, + 0.0000026884, 0.0000026890, 0.0000026877, 0.0000026840, 0.0000026787, + 0.0000026744, 0.0000026734, 0.0000026745, 0.0000026752, 0.0000026744, + 0.0000026738, 0.0000026737, 0.0000026747, 0.0000026764, 0.0000026777, + 0.0000026783, 0.0000026777, 0.0000026783, 0.0000026869, 0.0000027040, + 0.0000027149, 0.0000027140, 0.0000027102, 0.0000027101, 0.0000027138, + 0.0000027161, 0.0000027151, 0.0000027123, 0.0000027076, 0.0000027005, + 0.0000026926, 0.0000026866, 0.0000026829, 0.0000026801, 0.0000026785, + 0.0000026785, 0.0000026791, 0.0000026789, 0.0000026760, 0.0000026724, + 0.0000026722, 0.0000026756, 0.0000026780, 0.0000026774, 0.0000026771, + 0.0000026815, 0.0000026875, 0.0000026906, 0.0000026914, 0.0000026927, + 0.0000026961, 0.0000027015, 0.0000027076, 0.0000027138, 0.0000027205, + 0.0000027265, 0.0000027320, 0.0000027370, 0.0000027407, 0.0000027426, + 0.0000027422, 0.0000027375, 0.0000027308, 0.0000027336, 0.0000027411, + 0.0000027359, 0.0000027110, 0.0000026940, 0.0000026934, 0.0000026974, + 0.0000026994, 0.0000026954, 0.0000026845, 0.0000026801, 0.0000026802, + 0.0000026838, 0.0000026891, 0.0000026947, 0.0000027011, 0.0000027080, + 0.0000027145, 0.0000027203, 0.0000027247, 0.0000027260, 0.0000027196, + 0.0000027047, 0.0000026905, 0.0000026868, 0.0000026903, 0.0000026959, + 0.0000027017, 0.0000027051, 0.0000027059, 0.0000027031, 0.0000027002, + 0.0000026988, 0.0000026995, 0.0000027053, 0.0000027175, 0.0000027335, + 0.0000027440, 0.0000027328, 0.0000027184, 0.0000027240, 0.0000027244, + 0.0000027135, 0.0000027097, 0.0000027064, 0.0000026936, 0.0000026732, + 0.0000026684, 0.0000026739, 0.0000026785, 0.0000026824, 0.0000026847, + 0.0000026863, 0.0000026899, 0.0000026923, 0.0000026932, 0.0000026943, + 0.0000026937, 0.0000026897, 0.0000026802, 0.0000026703, 0.0000026660, + 0.0000026669, 0.0000026668, 0.0000026680, 0.0000026734, 0.0000026818, + 0.0000026859, 0.0000026859, 0.0000026842, 0.0000026810, 0.0000026761, + 0.0000026714, 0.0000026699, 0.0000026707, 0.0000026723, 0.0000026729, + 0.0000026732, 0.0000026731, 0.0000026734, 0.0000026753, 0.0000026791, + 0.0000026824, 0.0000026833, 0.0000026814, 0.0000026813, 0.0000026889, + 0.0000027044, 0.0000027132, 0.0000027116, 0.0000027090, 0.0000027105, + 0.0000027150, 0.0000027170, 0.0000027158, 0.0000027124, 0.0000027051, + 0.0000026949, 0.0000026862, 0.0000026813, 0.0000026787, 0.0000026764, + 0.0000026745, 0.0000026740, 0.0000026742, 0.0000026735, 0.0000026713, + 0.0000026703, 0.0000026731, 0.0000026776, 0.0000026795, 0.0000026784, + 0.0000026786, 0.0000026837, 0.0000026910, 0.0000026959, 0.0000026981, + 0.0000026998, 0.0000027014, 0.0000027037, 0.0000027072, 0.0000027114, + 0.0000027161, 0.0000027217, 0.0000027277, 0.0000027335, 0.0000027384, + 0.0000027416, 0.0000027420, 0.0000027380, 0.0000027311, 0.0000027310, + 0.0000027409, 0.0000027439, 0.0000027251, 0.0000027022, 0.0000026969, + 0.0000027014, 0.0000027053, 0.0000027029, 0.0000026935, 0.0000026825, + 0.0000026798, 0.0000026799, 0.0000026822, 0.0000026851, 0.0000026884, + 0.0000026925, 0.0000026980, 0.0000027045, 0.0000027120, 0.0000027207, + 0.0000027285, 0.0000027314, 0.0000027249, 0.0000027090, 0.0000026948, + 0.0000026911, 0.0000026931, 0.0000026968, 0.0000027016, 0.0000027058, + 0.0000027072, 0.0000027063, 0.0000027046, 0.0000027040, 0.0000027032, + 0.0000027063, 0.0000027150, 0.0000027276, 0.0000027432, 0.0000027432, + 0.0000027223, 0.0000027232, 0.0000027273, 0.0000027236, 0.0000027116, + 0.0000027099, 0.0000027028, 0.0000026875, 0.0000026697, 0.0000026704, + 0.0000026775, 0.0000026806, 0.0000026847, 0.0000026899, 0.0000026954, + 0.0000027003, 0.0000027025, 0.0000027031, 0.0000027024, 0.0000027004, + 0.0000026960, 0.0000026872, 0.0000026757, 0.0000026684, 0.0000026680, + 0.0000026675, 0.0000026665, 0.0000026697, 0.0000026784, 0.0000026840, + 0.0000026831, 0.0000026807, 0.0000026781, 0.0000026742, 0.0000026700, + 0.0000026682, 0.0000026682, 0.0000026695, 0.0000026718, 0.0000026744, + 0.0000026761, 0.0000026766, 0.0000026765, 0.0000026778, 0.0000026817, + 0.0000026862, 0.0000026873, 0.0000026842, 0.0000026829, 0.0000026896, + 0.0000027039, 0.0000027109, 0.0000027096, 0.0000027084, 0.0000027117, + 0.0000027167, 0.0000027184, 0.0000027173, 0.0000027122, 0.0000027011, + 0.0000026883, 0.0000026802, 0.0000026766, 0.0000026742, 0.0000026719, + 0.0000026700, 0.0000026691, 0.0000026690, 0.0000026689, 0.0000026692, + 0.0000026714, 0.0000026764, 0.0000026804, 0.0000026808, 0.0000026795, + 0.0000026808, 0.0000026864, 0.0000026936, 0.0000026992, 0.0000027032, + 0.0000027066, 0.0000027089, 0.0000027092, 0.0000027093, 0.0000027109, + 0.0000027139, 0.0000027175, 0.0000027216, 0.0000027266, 0.0000027320, + 0.0000027365, 0.0000027383, 0.0000027364, 0.0000027305, 0.0000027281, + 0.0000027367, 0.0000027467, 0.0000027402, 0.0000027151, 0.0000027005, + 0.0000027023, 0.0000027099, 0.0000027111, 0.0000027026, 0.0000026906, + 0.0000026825, 0.0000026800, 0.0000026790, 0.0000026783, 0.0000026788, + 0.0000026813, 0.0000026856, 0.0000026905, 0.0000026957, 0.0000027019, + 0.0000027105, 0.0000027221, 0.0000027331, 0.0000027373, 0.0000027311, + 0.0000027149, 0.0000027013, 0.0000026969, 0.0000026963, 0.0000026972, + 0.0000026994, 0.0000027032, 0.0000027062, 0.0000027067, 0.0000027071, + 0.0000027083, 0.0000027077, 0.0000027078, 0.0000027143, 0.0000027238, + 0.0000027386, 0.0000027459, 0.0000027332, 0.0000027216, 0.0000027283, + 0.0000027296, 0.0000027185, 0.0000027109, 0.0000027073, 0.0000027003, + 0.0000026805, 0.0000026684, 0.0000026742, 0.0000026806, 0.0000026829, + 0.0000026872, 0.0000026948, 0.0000027037, 0.0000027100, 0.0000027129, + 0.0000027124, 0.0000027104, 0.0000027075, 0.0000027023, 0.0000026946, + 0.0000026830, 0.0000026727, 0.0000026695, 0.0000026691, 0.0000026667, + 0.0000026673, 0.0000026746, 0.0000026816, 0.0000026806, 0.0000026771, + 0.0000026737, 0.0000026703, 0.0000026671, 0.0000026659, 0.0000026660, + 0.0000026668, 0.0000026691, 0.0000026733, 0.0000026781, 0.0000026811, + 0.0000026822, 0.0000026812, 0.0000026810, 0.0000026840, 0.0000026891, + 0.0000026907, 0.0000026862, 0.0000026823, 0.0000026890, 0.0000027029, + 0.0000027092, 0.0000027084, 0.0000027084, 0.0000027127, 0.0000027185, + 0.0000027207, 0.0000027193, 0.0000027115, 0.0000026964, 0.0000026822, + 0.0000026751, 0.0000026723, 0.0000026700, 0.0000026681, 0.0000026670, + 0.0000026669, 0.0000026677, 0.0000026693, 0.0000026728, 0.0000026776, + 0.0000026820, 0.0000026838, 0.0000026835, 0.0000026833, 0.0000026858, + 0.0000026908, 0.0000026959, 0.0000026998, 0.0000027036, 0.0000027077, + 0.0000027113, 0.0000027131, 0.0000027128, 0.0000027117, 0.0000027120, + 0.0000027138, 0.0000027160, 0.0000027187, 0.0000027222, 0.0000027262, + 0.0000027297, 0.0000027306, 0.0000027283, 0.0000027262, 0.0000027316, + 0.0000027455, 0.0000027498, 0.0000027330, 0.0000027102, 0.0000027036, + 0.0000027092, 0.0000027157, 0.0000027133, 0.0000027014, 0.0000026894, + 0.0000026836, 0.0000026804, 0.0000026764, 0.0000026731, 0.0000026744, + 0.0000026794, 0.0000026856, 0.0000026915, 0.0000026959, 0.0000026986, + 0.0000027026, 0.0000027100, 0.0000027237, 0.0000027375, 0.0000027430, + 0.0000027364, 0.0000027207, 0.0000027075, 0.0000027017, 0.0000026986, + 0.0000026960, 0.0000026952, 0.0000026982, 0.0000027030, 0.0000027057, + 0.0000027083, 0.0000027113, 0.0000027113, 0.0000027099, 0.0000027145, + 0.0000027222, 0.0000027341, 0.0000027457, 0.0000027435, 0.0000027237, + 0.0000027274, 0.0000027306, 0.0000027278, 0.0000027137, 0.0000027088, + 0.0000027048, 0.0000026963, 0.0000026751, 0.0000026705, 0.0000026780, + 0.0000026833, 0.0000026856, 0.0000026900, 0.0000026985, 0.0000027092, + 0.0000027183, 0.0000027222, 0.0000027214, 0.0000027189, 0.0000027144, + 0.0000027087, 0.0000027021, 0.0000026917, 0.0000026787, 0.0000026714, + 0.0000026703, 0.0000026683, 0.0000026663, 0.0000026709, 0.0000026788, + 0.0000026795, 0.0000026751, 0.0000026696, 0.0000026650, 0.0000026614, + 0.0000026606, 0.0000026621, 0.0000026640, 0.0000026664, 0.0000026703, + 0.0000026763, 0.0000026822, 0.0000026859, 0.0000026869, 0.0000026851, + 0.0000026837, 0.0000026869, 0.0000026925, 0.0000026939, 0.0000026874, + 0.0000026814, 0.0000026882, 0.0000027021, 0.0000027084, 0.0000027078, + 0.0000027084, 0.0000027136, 0.0000027200, 0.0000027228, 0.0000027210, + 0.0000027105, 0.0000026918, 0.0000026771, 0.0000026714, 0.0000026700, + 0.0000026691, 0.0000026682, 0.0000026684, 0.0000026697, 0.0000026725, + 0.0000026767, 0.0000026815, 0.0000026854, 0.0000026873, 0.0000026877, + 0.0000026881, 0.0000026902, 0.0000026939, 0.0000026972, 0.0000026989, + 0.0000027001, 0.0000027022, 0.0000027057, 0.0000027095, 0.0000027125, + 0.0000027142, 0.0000027139, 0.0000027125, 0.0000027112, 0.0000027106, + 0.0000027111, 0.0000027129, 0.0000027153, 0.0000027180, 0.0000027207, + 0.0000027222, 0.0000027226, 0.0000027271, 0.0000027405, 0.0000027521, + 0.0000027481, 0.0000027265, 0.0000027088, 0.0000027074, 0.0000027157, + 0.0000027205, 0.0000027144, 0.0000027010, 0.0000026897, 0.0000026847, + 0.0000026802, 0.0000026739, 0.0000026707, 0.0000026744, 0.0000026833, + 0.0000026925, 0.0000026997, 0.0000027035, 0.0000027040, 0.0000027035, + 0.0000027052, 0.0000027124, 0.0000027274, 0.0000027428, 0.0000027475, + 0.0000027399, 0.0000027246, 0.0000027123, 0.0000027049, 0.0000026988, + 0.0000026930, 0.0000026900, 0.0000026928, 0.0000026989, 0.0000027034, + 0.0000027075, 0.0000027120, 0.0000027134, 0.0000027118, 0.0000027147, + 0.0000027223, 0.0000027313, 0.0000027436, 0.0000027470, 0.0000027321, + 0.0000027243, 0.0000027311, 0.0000027310, 0.0000027212, 0.0000027098, + 0.0000027057, 0.0000027040, 0.0000026903, 0.0000026724, 0.0000026725, + 0.0000026809, 0.0000026858, 0.0000026882, 0.0000026931, 0.0000027012, + 0.0000027129, 0.0000027230, 0.0000027285, 0.0000027292, 0.0000027268, + 0.0000027216, 0.0000027152, 0.0000027088, 0.0000026998, 0.0000026866, + 0.0000026748, 0.0000026711, 0.0000026698, 0.0000026671, 0.0000026683, + 0.0000026756, 0.0000026792, 0.0000026752, 0.0000026689, 0.0000026625, + 0.0000026570, 0.0000026552, 0.0000026567, 0.0000026600, 0.0000026637, + 0.0000026677, 0.0000026730, 0.0000026798, 0.0000026856, 0.0000026891, + 0.0000026900, 0.0000026885, 0.0000026875, 0.0000026907, 0.0000026963, + 0.0000026966, 0.0000026880, 0.0000026806, 0.0000026869, 0.0000027010, + 0.0000027080, 0.0000027077, 0.0000027083, 0.0000027139, 0.0000027212, + 0.0000027249, 0.0000027228, 0.0000027091, 0.0000026876, 0.0000026736, + 0.0000026704, 0.0000026706, 0.0000026719, 0.0000026731, 0.0000026749, + 0.0000026779, 0.0000026820, 0.0000026861, 0.0000026888, 0.0000026901, + 0.0000026907, 0.0000026918, 0.0000026942, 0.0000026977, 0.0000027007, + 0.0000027020, 0.0000027019, 0.0000027011, 0.0000027012, 0.0000027029, + 0.0000027062, 0.0000027100, 0.0000027129, 0.0000027139, 0.0000027134, + 0.0000027113, 0.0000027087, 0.0000027067, 0.0000027063, 0.0000027075, + 0.0000027093, 0.0000027115, 0.0000027140, 0.0000027169, 0.0000027220, + 0.0000027338, 0.0000027498, 0.0000027554, 0.0000027435, 0.0000027225, + 0.0000027100, 0.0000027122, 0.0000027212, 0.0000027242, 0.0000027159, + 0.0000027019, 0.0000026907, 0.0000026854, 0.0000026799, 0.0000026729, + 0.0000026712, 0.0000026782, 0.0000026901, 0.0000027009, 0.0000027085, + 0.0000027123, 0.0000027127, 0.0000027111, 0.0000027093, 0.0000027095, + 0.0000027171, 0.0000027341, 0.0000027484, 0.0000027496, 0.0000027401, + 0.0000027260, 0.0000027146, 0.0000027052, 0.0000026968, 0.0000026893, + 0.0000026859, 0.0000026886, 0.0000026944, 0.0000026998, 0.0000027054, + 0.0000027111, 0.0000027138, 0.0000027135, 0.0000027157, 0.0000027230, + 0.0000027302, 0.0000027419, 0.0000027468, 0.0000027420, 0.0000027234, + 0.0000027298, 0.0000027311, 0.0000027294, 0.0000027147, 0.0000027058, + 0.0000027045, 0.0000027027, 0.0000026838, 0.0000026717, 0.0000026747, + 0.0000026825, 0.0000026882, 0.0000026925, 0.0000026964, 0.0000027038, + 0.0000027146, 0.0000027244, 0.0000027301, 0.0000027328, 0.0000027322, + 0.0000027280, 0.0000027211, 0.0000027139, 0.0000027060, 0.0000026948, + 0.0000026804, 0.0000026716, 0.0000026704, 0.0000026695, 0.0000026681, + 0.0000026721, 0.0000026775, 0.0000026768, 0.0000026721, 0.0000026654, + 0.0000026591, 0.0000026556, 0.0000026558, 0.0000026587, 0.0000026622, + 0.0000026660, 0.0000026698, 0.0000026755, 0.0000026822, 0.0000026876, + 0.0000026902, 0.0000026913, 0.0000026911, 0.0000026912, 0.0000026951, + 0.0000027009, 0.0000026995, 0.0000026885, 0.0000026804, 0.0000026856, + 0.0000026996, 0.0000027075, 0.0000027073, 0.0000027076, 0.0000027138, + 0.0000027222, 0.0000027268, 0.0000027242, 0.0000027074, 0.0000026840, + 0.0000026715, 0.0000026708, 0.0000026743, 0.0000026780, 0.0000026808, + 0.0000026833, 0.0000026863, 0.0000026897, 0.0000026918, 0.0000026925, + 0.0000026928, 0.0000026941, 0.0000026967, 0.0000027000, 0.0000027024, + 0.0000027034, 0.0000027032, 0.0000027021, 0.0000027009, 0.0000027003, + 0.0000027007, 0.0000027027, 0.0000027064, 0.0000027101, 0.0000027123, + 0.0000027128, 0.0000027116, 0.0000027092, 0.0000027065, 0.0000027048, + 0.0000027045, 0.0000027052, 0.0000027067, 0.0000027089, 0.0000027122, + 0.0000027178, 0.0000027280, 0.0000027437, 0.0000027555, 0.0000027535, + 0.0000027383, 0.0000027204, 0.0000027130, 0.0000027161, 0.0000027247, + 0.0000027264, 0.0000027176, 0.0000027035, 0.0000026919, 0.0000026862, + 0.0000026806, 0.0000026737, 0.0000026731, 0.0000026831, 0.0000026966, + 0.0000027067, 0.0000027131, 0.0000027171, 0.0000027191, 0.0000027188, + 0.0000027157, 0.0000027125, 0.0000027127, 0.0000027234, 0.0000027419, + 0.0000027517, 0.0000027491, 0.0000027371, 0.0000027248, 0.0000027137, + 0.0000027030, 0.0000026940, 0.0000026866, 0.0000026832, 0.0000026855, + 0.0000026902, 0.0000026968, 0.0000027040, 0.0000027101, 0.0000027136, + 0.0000027147, 0.0000027179, 0.0000027243, 0.0000027301, 0.0000027412, + 0.0000027464, 0.0000027474, 0.0000027275, 0.0000027258, 0.0000027311, + 0.0000027308, 0.0000027236, 0.0000027090, 0.0000027037, 0.0000027052, + 0.0000026987, 0.0000026783, 0.0000026723, 0.0000026769, 0.0000026842, + 0.0000026916, 0.0000026967, 0.0000027005, 0.0000027072, 0.0000027157, + 0.0000027236, 0.0000027293, 0.0000027326, 0.0000027336, 0.0000027313, + 0.0000027253, 0.0000027177, 0.0000027100, 0.0000027009, 0.0000026875, + 0.0000026744, 0.0000026702, 0.0000026710, 0.0000026695, 0.0000026697, + 0.0000026744, 0.0000026770, 0.0000026757, 0.0000026715, 0.0000026662, + 0.0000026622, 0.0000026617, 0.0000026630, 0.0000026648, 0.0000026668, + 0.0000026691, 0.0000026721, 0.0000026770, 0.0000026833, 0.0000026877, + 0.0000026899, 0.0000026917, 0.0000026934, 0.0000026951, 0.0000027001, + 0.0000027054, 0.0000027022, 0.0000026897, 0.0000026799, 0.0000026830, + 0.0000026971, 0.0000027058, 0.0000027063, 0.0000027071, 0.0000027137, + 0.0000027231, 0.0000027282, 0.0000027250, 0.0000027059, 0.0000026813, + 0.0000026703, 0.0000026723, 0.0000026786, 0.0000026840, 0.0000026872, + 0.0000026893, 0.0000026912, 0.0000026927, 0.0000026935, 0.0000026940, + 0.0000026950, 0.0000026972, 0.0000027001, 0.0000027028, 0.0000027043, + 0.0000027043, 0.0000027028, 0.0000027005, 0.0000026985, 0.0000026975, + 0.0000026977, 0.0000026990, 0.0000027016, 0.0000027052, 0.0000027084, + 0.0000027102, 0.0000027104, 0.0000027092, 0.0000027072, 0.0000027054, + 0.0000027049, 0.0000027052, 0.0000027060, 0.0000027078, 0.0000027111, + 0.0000027166, 0.0000027256, 0.0000027389, 0.0000027516, 0.0000027558, + 0.0000027491, 0.0000027337, 0.0000027192, 0.0000027141, 0.0000027177, + 0.0000027262, 0.0000027282, 0.0000027200, 0.0000027060, 0.0000026933, + 0.0000026877, 0.0000026830, 0.0000026765, 0.0000026758, 0.0000026868, + 0.0000027014, 0.0000027103, 0.0000027147, 0.0000027181, 0.0000027207, + 0.0000027219, 0.0000027207, 0.0000027161, 0.0000027125, 0.0000027150, + 0.0000027304, 0.0000027488, 0.0000027530, 0.0000027443, 0.0000027319, + 0.0000027218, 0.0000027109, 0.0000027003, 0.0000026918, 0.0000026847, + 0.0000026814, 0.0000026831, 0.0000026874, 0.0000026950, 0.0000027037, + 0.0000027096, 0.0000027129, 0.0000027156, 0.0000027214, 0.0000027267, + 0.0000027308, 0.0000027418, 0.0000027469, 0.0000027484, 0.0000027342, + 0.0000027216, 0.0000027301, 0.0000027295, 0.0000027294, 0.0000027164, + 0.0000027045, 0.0000027038, 0.0000027050, 0.0000026927, 0.0000026751, + 0.0000026737, 0.0000026791, 0.0000026866, 0.0000026952, 0.0000027001, + 0.0000027043, 0.0000027099, 0.0000027164, 0.0000027224, 0.0000027268, + 0.0000027300, 0.0000027320, 0.0000027308, 0.0000027264, 0.0000027195, + 0.0000027119, 0.0000027046, 0.0000026948, 0.0000026807, 0.0000026708, + 0.0000026706, 0.0000026714, 0.0000026702, 0.0000026714, 0.0000026747, + 0.0000026760, 0.0000026739, 0.0000026703, 0.0000026676, 0.0000026675, + 0.0000026696, 0.0000026718, 0.0000026727, 0.0000026725, 0.0000026726, + 0.0000026738, 0.0000026777, 0.0000026833, 0.0000026866, 0.0000026886, + 0.0000026921, 0.0000026963, 0.0000027000, 0.0000027051, 0.0000027088, + 0.0000027048, 0.0000026919, 0.0000026806, 0.0000026812, 0.0000026933, + 0.0000027040, 0.0000027060, 0.0000027069, 0.0000027135, 0.0000027233, + 0.0000027286, 0.0000027253, 0.0000027054, 0.0000026798, 0.0000026694, + 0.0000026728, 0.0000026808, 0.0000026870, 0.0000026902, 0.0000026916, + 0.0000026925, 0.0000026931, 0.0000026934, 0.0000026935, 0.0000026938, + 0.0000026944, 0.0000026953, 0.0000026963, 0.0000026973, 0.0000026980, + 0.0000026982, 0.0000026979, 0.0000026969, 0.0000026958, 0.0000026956, + 0.0000026962, 0.0000026980, 0.0000027009, 0.0000027044, 0.0000027070, + 0.0000027083, 0.0000027085, 0.0000027073, 0.0000027060, 0.0000027060, + 0.0000027074, 0.0000027092, 0.0000027114, 0.0000027147, 0.0000027199, + 0.0000027276, 0.0000027379, 0.0000027485, 0.0000027542, 0.0000027531, + 0.0000027434, 0.0000027299, 0.0000027185, 0.0000027140, 0.0000027173, + 0.0000027261, 0.0000027295, 0.0000027239, 0.0000027103, 0.0000026960, + 0.0000026902, 0.0000026864, 0.0000026817, 0.0000026796, 0.0000026884, + 0.0000027037, 0.0000027133, 0.0000027168, 0.0000027186, 0.0000027200, + 0.0000027216, 0.0000027219, 0.0000027194, 0.0000027138, 0.0000027111, + 0.0000027185, 0.0000027383, 0.0000027526, 0.0000027503, 0.0000027375, + 0.0000027269, 0.0000027181, 0.0000027074, 0.0000026978, 0.0000026902, + 0.0000026836, 0.0000026800, 0.0000026814, 0.0000026863, 0.0000026944, + 0.0000027034, 0.0000027089, 0.0000027123, 0.0000027169, 0.0000027249, + 0.0000027295, 0.0000027326, 0.0000027436, 0.0000027482, 0.0000027484, + 0.0000027401, 0.0000027203, 0.0000027262, 0.0000027291, 0.0000027292, + 0.0000027245, 0.0000027097, 0.0000027019, 0.0000027054, 0.0000027036, + 0.0000026868, 0.0000026738, 0.0000026751, 0.0000026818, 0.0000026897, + 0.0000026968, 0.0000027025, 0.0000027066, 0.0000027113, 0.0000027163, + 0.0000027206, 0.0000027235, 0.0000027259, 0.0000027279, 0.0000027278, + 0.0000027242, 0.0000027183, 0.0000027117, 0.0000027059, 0.0000026995, + 0.0000026888, 0.0000026750, 0.0000026698, 0.0000026711, 0.0000026718, + 0.0000026709, 0.0000026718, 0.0000026728, 0.0000026717, 0.0000026690, + 0.0000026676, 0.0000026686, 0.0000026717, 0.0000026759, 0.0000026795, + 0.0000026803, 0.0000026784, 0.0000026760, 0.0000026753, 0.0000026780, + 0.0000026826, 0.0000026846, 0.0000026870, 0.0000026928, 0.0000026997, + 0.0000027053, 0.0000027102, 0.0000027120, 0.0000027084, 0.0000026966, + 0.0000026840, 0.0000026812, 0.0000026889, 0.0000027010, 0.0000027061, + 0.0000027074, 0.0000027129, 0.0000027223, 0.0000027278, 0.0000027252, + 0.0000027064, 0.0000026803, 0.0000026680, 0.0000026702, 0.0000026787, + 0.0000026862, 0.0000026900, 0.0000026913, 0.0000026914, 0.0000026912, + 0.0000026909, 0.0000026903, 0.0000026897, 0.0000026892, 0.0000026889, + 0.0000026882, 0.0000026871, 0.0000026859, 0.0000026850, 0.0000026850, + 0.0000026857, 0.0000026872, 0.0000026893, 0.0000026916, 0.0000026943, + 0.0000026973, 0.0000027005, 0.0000027032, 0.0000027050, 0.0000027059, + 0.0000027063, 0.0000027064, 0.0000027072, 0.0000027094, 0.0000027131, + 0.0000027175, 0.0000027224, 0.0000027279, 0.0000027343, 0.0000027416, + 0.0000027487, 0.0000027533, 0.0000027531, 0.0000027472, 0.0000027374, + 0.0000027273, 0.0000027180, 0.0000027133, 0.0000027154, 0.0000027252, + 0.0000027311, 0.0000027285, 0.0000027163, 0.0000027007, 0.0000026948, + 0.0000026907, 0.0000026881, 0.0000026842, 0.0000026884, 0.0000027031, + 0.0000027149, 0.0000027191, 0.0000027196, 0.0000027193, 0.0000027198, + 0.0000027209, 0.0000027207, 0.0000027174, 0.0000027120, 0.0000027115, + 0.0000027242, 0.0000027461, 0.0000027535, 0.0000027442, 0.0000027312, + 0.0000027224, 0.0000027135, 0.0000027036, 0.0000026953, 0.0000026888, + 0.0000026823, 0.0000026789, 0.0000026813, 0.0000026877, 0.0000026954, + 0.0000027030, 0.0000027077, 0.0000027119, 0.0000027189, 0.0000027279, + 0.0000027315, 0.0000027356, 0.0000027467, 0.0000027493, 0.0000027481, + 0.0000027432, 0.0000027208, 0.0000027209, 0.0000027294, 0.0000027272, + 0.0000027283, 0.0000027168, 0.0000027033, 0.0000027020, 0.0000027064, + 0.0000027002, 0.0000026815, 0.0000026729, 0.0000026776, 0.0000026859, + 0.0000026923, 0.0000026984, 0.0000027032, 0.0000027073, 0.0000027112, + 0.0000027149, 0.0000027176, 0.0000027186, 0.0000027198, 0.0000027214, + 0.0000027218, 0.0000027193, 0.0000027144, 0.0000027092, 0.0000027044, + 0.0000027007, 0.0000026951, 0.0000026825, 0.0000026706, 0.0000026680, + 0.0000026710, 0.0000026714, 0.0000026705, 0.0000026699, 0.0000026684, + 0.0000026673, 0.0000026676, 0.0000026698, 0.0000026727, 0.0000026764, + 0.0000026811, 0.0000026856, 0.0000026868, 0.0000026831, 0.0000026779, + 0.0000026754, 0.0000026779, 0.0000026813, 0.0000026821, 0.0000026863, + 0.0000026947, 0.0000027034, 0.0000027112, 0.0000027154, 0.0000027162, + 0.0000027129, 0.0000027036, 0.0000026906, 0.0000026830, 0.0000026865, + 0.0000026973, 0.0000027053, 0.0000027074, 0.0000027115, 0.0000027198, + 0.0000027258, 0.0000027249, 0.0000027098, 0.0000026845, 0.0000026671, + 0.0000026642, 0.0000026689, 0.0000026746, 0.0000026773, 0.0000026769, + 0.0000026749, 0.0000026726, 0.0000026707, 0.0000026694, 0.0000026688, + 0.0000026691, 0.0000026702, 0.0000026716, 0.0000026730, 0.0000026739, + 0.0000026746, 0.0000026750, 0.0000026753, 0.0000026758, 0.0000026769, + 0.0000026792, 0.0000026826, 0.0000026868, 0.0000026913, 0.0000026955, + 0.0000026988, 0.0000027013, 0.0000027034, 0.0000027058, 0.0000027085, + 0.0000027117, 0.0000027157, 0.0000027214, 0.0000027292, 0.0000027375, + 0.0000027441, 0.0000027485, 0.0000027516, 0.0000027529, 0.0000027521, + 0.0000027474, 0.0000027399, 0.0000027332, 0.0000027267, 0.0000027182, + 0.0000027116, 0.0000027133, 0.0000027235, 0.0000027327, 0.0000027325, + 0.0000027233, 0.0000027077, 0.0000027023, 0.0000026959, 0.0000026946, + 0.0000026905, 0.0000026889, 0.0000026990, 0.0000027132, 0.0000027202, + 0.0000027207, 0.0000027196, 0.0000027185, 0.0000027186, 0.0000027195, + 0.0000027193, 0.0000027159, 0.0000027113, 0.0000027136, 0.0000027323, + 0.0000027513, 0.0000027508, 0.0000027377, 0.0000027259, 0.0000027174, + 0.0000027087, 0.0000027004, 0.0000026935, 0.0000026872, 0.0000026805, + 0.0000026786, 0.0000026830, 0.0000026911, 0.0000026975, 0.0000027025, + 0.0000027065, 0.0000027125, 0.0000027217, 0.0000027297, 0.0000027324, + 0.0000027397, 0.0000027505, 0.0000027503, 0.0000027473, 0.0000027438, + 0.0000027211, 0.0000027160, 0.0000027283, 0.0000027261, 0.0000027288, + 0.0000027236, 0.0000027086, 0.0000027003, 0.0000027047, 0.0000027055, + 0.0000026957, 0.0000026780, 0.0000026744, 0.0000026822, 0.0000026905, + 0.0000026955, 0.0000026993, 0.0000027028, 0.0000027063, 0.0000027099, + 0.0000027126, 0.0000027137, 0.0000027125, 0.0000027116, 0.0000027121, + 0.0000027131, 0.0000027123, 0.0000027085, 0.0000027043, 0.0000027011, + 0.0000026991, 0.0000026966, 0.0000026900, 0.0000026762, 0.0000026667, + 0.0000026670, 0.0000026698, 0.0000026701, 0.0000026696, 0.0000026693, + 0.0000026704, 0.0000026733, 0.0000026760, 0.0000026781, 0.0000026795, + 0.0000026814, 0.0000026857, 0.0000026912, 0.0000026915, 0.0000026858, + 0.0000026779, 0.0000026750, 0.0000026774, 0.0000026794, 0.0000026803, + 0.0000026869, 0.0000026966, 0.0000027074, 0.0000027174, 0.0000027207, + 0.0000027201, 0.0000027178, 0.0000027125, 0.0000027018, 0.0000026901, + 0.0000026870, 0.0000026928, 0.0000027021, 0.0000027065, 0.0000027097, + 0.0000027163, 0.0000027228, 0.0000027233, 0.0000027142, 0.0000026932, + 0.0000026723, 0.0000026629, 0.0000026606, 0.0000026597, 0.0000026588, + 0.0000026572, 0.0000026555, 0.0000026548, 0.0000026558, 0.0000026580, + 0.0000026608, 0.0000026636, 0.0000026662, 0.0000026684, 0.0000026701, + 0.0000026711, 0.0000026718, 0.0000026727, 0.0000026735, 0.0000026737, + 0.0000026737, 0.0000026740, 0.0000026751, 0.0000026778, 0.0000026814, + 0.0000026859, 0.0000026908, 0.0000026956, 0.0000027001, 0.0000027047, + 0.0000027092, 0.0000027138, 0.0000027184, 0.0000027243, 0.0000027330, + 0.0000027433, 0.0000027513, 0.0000027546, 0.0000027544, 0.0000027520, + 0.0000027487, 0.0000027439, 0.0000027388, 0.0000027349, 0.0000027323, + 0.0000027275, 0.0000027188, 0.0000027115, 0.0000027118, 0.0000027207, + 0.0000027318, 0.0000027353, 0.0000027306, 0.0000027174, 0.0000027127, + 0.0000027018, 0.0000027004, 0.0000026985, 0.0000026937, 0.0000026950, + 0.0000027072, 0.0000027182, 0.0000027210, 0.0000027204, 0.0000027187, + 0.0000027176, 0.0000027176, 0.0000027184, 0.0000027187, 0.0000027155, + 0.0000027117, 0.0000027189, 0.0000027395, 0.0000027517, 0.0000027468, + 0.0000027324, 0.0000027212, 0.0000027130, 0.0000027057, 0.0000026995, + 0.0000026933, 0.0000026859, 0.0000026794, 0.0000026790, 0.0000026858, + 0.0000026943, 0.0000026990, 0.0000027019, 0.0000027061, 0.0000027151, + 0.0000027252, 0.0000027301, 0.0000027334, 0.0000027448, 0.0000027536, + 0.0000027507, 0.0000027459, 0.0000027430, 0.0000027210, 0.0000027108, + 0.0000027250, 0.0000027260, 0.0000027261, 0.0000027278, 0.0000027150, + 0.0000027010, 0.0000026990, 0.0000027056, 0.0000027038, 0.0000026919, + 0.0000026767, 0.0000026772, 0.0000026877, 0.0000026950, 0.0000026984, + 0.0000027002, 0.0000027025, 0.0000027058, 0.0000027093, 0.0000027115, + 0.0000027112, 0.0000027070, 0.0000027031, 0.0000027011, 0.0000027021, + 0.0000027030, 0.0000027010, 0.0000026978, 0.0000026955, 0.0000026945, + 0.0000026949, 0.0000026934, 0.0000026843, 0.0000026712, 0.0000026645, + 0.0000026656, 0.0000026683, 0.0000026708, 0.0000026740, 0.0000026784, + 0.0000026826, 0.0000026847, 0.0000026855, 0.0000026857, 0.0000026854, + 0.0000026864, 0.0000026909, 0.0000026962, 0.0000026950, 0.0000026859, + 0.0000026764, 0.0000026736, 0.0000026764, 0.0000026769, 0.0000026798, + 0.0000026881, 0.0000026982, 0.0000027112, 0.0000027229, 0.0000027259, + 0.0000027247, 0.0000027235, 0.0000027223, 0.0000027158, 0.0000027027, + 0.0000026912, 0.0000026903, 0.0000026976, 0.0000027044, 0.0000027076, + 0.0000027120, 0.0000027182, 0.0000027207, 0.0000027163, 0.0000027032, + 0.0000026865, 0.0000026746, 0.0000026680, 0.0000026649, 0.0000026642, + 0.0000026645, 0.0000026657, 0.0000026677, 0.0000026702, 0.0000026731, + 0.0000026756, 0.0000026775, 0.0000026791, 0.0000026805, 0.0000026813, + 0.0000026813, 0.0000026808, 0.0000026804, 0.0000026804, 0.0000026810, + 0.0000026816, 0.0000026819, 0.0000026817, 0.0000026816, 0.0000026817, + 0.0000026837, 0.0000026872, 0.0000026916, 0.0000026969, 0.0000027029, + 0.0000027088, 0.0000027138, 0.0000027189, 0.0000027259, 0.0000027356, + 0.0000027458, 0.0000027533, 0.0000027554, 0.0000027547, 0.0000027502, + 0.0000027442, 0.0000027391, 0.0000027363, 0.0000027355, 0.0000027349, + 0.0000027332, 0.0000027273, 0.0000027183, 0.0000027116, 0.0000027113, + 0.0000027180, 0.0000027297, 0.0000027372, 0.0000027364, 0.0000027279, + 0.0000027252, 0.0000027113, 0.0000027064, 0.0000027054, 0.0000027015, + 0.0000026973, 0.0000027002, 0.0000027115, 0.0000027193, 0.0000027205, + 0.0000027198, 0.0000027185, 0.0000027174, 0.0000027173, 0.0000027183, + 0.0000027191, 0.0000027164, 0.0000027138, 0.0000027247, 0.0000027458, + 0.0000027523, 0.0000027424, 0.0000027283, 0.0000027181, 0.0000027110, + 0.0000027048, 0.0000026996, 0.0000026932, 0.0000026847, 0.0000026791, + 0.0000026803, 0.0000026891, 0.0000026966, 0.0000026991, 0.0000027011, + 0.0000027079, 0.0000027203, 0.0000027282, 0.0000027301, 0.0000027368, + 0.0000027505, 0.0000027553, 0.0000027495, 0.0000027443, 0.0000027409, + 0.0000027195, 0.0000027069, 0.0000027206, 0.0000027260, 0.0000027230, + 0.0000027294, 0.0000027209, 0.0000027046, 0.0000026964, 0.0000027002, + 0.0000027050, 0.0000027029, 0.0000026895, 0.0000026778, 0.0000026822, + 0.0000026929, 0.0000026988, 0.0000027010, 0.0000027017, 0.0000027037, + 0.0000027076, 0.0000027115, 0.0000027133, 0.0000027113, 0.0000027048, + 0.0000026971, 0.0000026913, 0.0000026896, 0.0000026915, 0.0000026920, + 0.0000026907, 0.0000026886, 0.0000026877, 0.0000026892, 0.0000026916, + 0.0000026890, 0.0000026794, 0.0000026688, 0.0000026639, 0.0000026653, + 0.0000026707, 0.0000026778, 0.0000026849, 0.0000026897, 0.0000026910, + 0.0000026909, 0.0000026904, 0.0000026900, 0.0000026902, 0.0000026917, + 0.0000026962, 0.0000026999, 0.0000026961, 0.0000026834, 0.0000026734, + 0.0000026725, 0.0000026745, 0.0000026747, 0.0000026803, 0.0000026891, + 0.0000026994, 0.0000027139, 0.0000027267, 0.0000027318, 0.0000027310, + 0.0000027305, 0.0000027309, 0.0000027287, 0.0000027188, 0.0000027037, + 0.0000026934, 0.0000026941, 0.0000027002, 0.0000027044, 0.0000027070, + 0.0000027117, 0.0000027156, 0.0000027141, 0.0000027081, 0.0000026993, + 0.0000026910, 0.0000026856, 0.0000026832, 0.0000026826, 0.0000026826, + 0.0000026827, 0.0000026832, 0.0000026836, 0.0000026839, 0.0000026840, + 0.0000026838, 0.0000026836, 0.0000026836, 0.0000026835, 0.0000026833, + 0.0000026829, 0.0000026823, 0.0000026815, 0.0000026810, 0.0000026813, + 0.0000026824, 0.0000026847, 0.0000026871, 0.0000026888, 0.0000026896, + 0.0000026908, 0.0000026929, 0.0000026963, 0.0000027010, 0.0000027065, + 0.0000027115, 0.0000027162, 0.0000027231, 0.0000027340, 0.0000027455, + 0.0000027527, 0.0000027544, 0.0000027523, 0.0000027465, 0.0000027397, + 0.0000027353, 0.0000027342, 0.0000027354, 0.0000027365, 0.0000027358, + 0.0000027318, 0.0000027249, 0.0000027171, 0.0000027118, 0.0000027115, + 0.0000027167, 0.0000027279, 0.0000027374, 0.0000027398, 0.0000027368, + 0.0000027377, 0.0000027242, 0.0000027143, 0.0000027113, 0.0000027091, + 0.0000027043, 0.0000027004, 0.0000027033, 0.0000027134, 0.0000027200, + 0.0000027210, 0.0000027206, 0.0000027196, 0.0000027181, 0.0000027173, + 0.0000027184, 0.0000027200, 0.0000027175, 0.0000027166, 0.0000027304, + 0.0000027490, 0.0000027494, 0.0000027390, 0.0000027260, 0.0000027172, + 0.0000027107, 0.0000027045, 0.0000027004, 0.0000026938, 0.0000026844, + 0.0000026793, 0.0000026832, 0.0000026931, 0.0000026979, 0.0000026979, + 0.0000027013, 0.0000027129, 0.0000027258, 0.0000027294, 0.0000027317, + 0.0000027430, 0.0000027544, 0.0000027552, 0.0000027471, 0.0000027430, + 0.0000027375, 0.0000027167, 0.0000027046, 0.0000027172, 0.0000027267, + 0.0000027215, 0.0000027283, 0.0000027268, 0.0000027099, 0.0000026960, + 0.0000026930, 0.0000027003, 0.0000027048, 0.0000027025, 0.0000026900, + 0.0000026819, 0.0000026873, 0.0000026966, 0.0000027014, 0.0000027032, + 0.0000027044, 0.0000027072, 0.0000027121, 0.0000027166, 0.0000027182, + 0.0000027152, 0.0000027061, 0.0000026943, 0.0000026845, 0.0000026792, + 0.0000026797, 0.0000026817, 0.0000026827, 0.0000026819, 0.0000026807, + 0.0000026815, 0.0000026849, 0.0000026871, 0.0000026842, 0.0000026770, + 0.0000026688, 0.0000026661, 0.0000026699, 0.0000026780, 0.0000026864, + 0.0000026917, 0.0000026935, 0.0000026933, 0.0000026927, 0.0000026923, + 0.0000026932, 0.0000026944, 0.0000026959, 0.0000027005, 0.0000027029, + 0.0000026935, 0.0000026786, 0.0000026703, 0.0000026706, 0.0000026710, + 0.0000026729, 0.0000026809, 0.0000026894, 0.0000027000, 0.0000027151, + 0.0000027291, 0.0000027366, 0.0000027381, 0.0000027379, 0.0000027383, + 0.0000027383, 0.0000027338, 0.0000027216, 0.0000027046, 0.0000026947, + 0.0000026947, 0.0000026991, 0.0000027017, 0.0000027039, 0.0000027065, + 0.0000027069, 0.0000027052, 0.0000027003, 0.0000026951, 0.0000026907, + 0.0000026880, 0.0000026865, 0.0000026856, 0.0000026852, 0.0000026852, + 0.0000026854, 0.0000026854, 0.0000026852, 0.0000026845, 0.0000026834, + 0.0000026821, 0.0000026805, 0.0000026789, 0.0000026775, 0.0000026766, + 0.0000026767, 0.0000026774, 0.0000026778, 0.0000026783, 0.0000026793, + 0.0000026813, 0.0000026842, 0.0000026875, 0.0000026901, 0.0000026927, + 0.0000026954, 0.0000026985, 0.0000027026, 0.0000027069, 0.0000027112, + 0.0000027175, 0.0000027278, 0.0000027401, 0.0000027494, 0.0000027519, + 0.0000027501, 0.0000027442, 0.0000027367, 0.0000027324, 0.0000027325, + 0.0000027343, 0.0000027356, 0.0000027350, 0.0000027323, 0.0000027284, + 0.0000027236, 0.0000027185, 0.0000027150, 0.0000027143, 0.0000027182, + 0.0000027279, 0.0000027378, 0.0000027432, 0.0000027439, 0.0000027469, + 0.0000027374, 0.0000027251, 0.0000027183, 0.0000027151, 0.0000027123, + 0.0000027074, 0.0000027033, 0.0000027059, 0.0000027150, 0.0000027210, + 0.0000027223, 0.0000027221, 0.0000027206, 0.0000027185, 0.0000027175, + 0.0000027196, 0.0000027216, 0.0000027190, 0.0000027202, 0.0000027350, + 0.0000027485, 0.0000027484, 0.0000027373, 0.0000027261, 0.0000027189, + 0.0000027118, 0.0000027051, 0.0000027023, 0.0000026949, 0.0000026844, + 0.0000026813, 0.0000026873, 0.0000026976, 0.0000026989, 0.0000026969, + 0.0000027034, 0.0000027190, 0.0000027283, 0.0000027289, 0.0000027345, + 0.0000027487, 0.0000027553, 0.0000027519, 0.0000027439, 0.0000027415, + 0.0000027330, 0.0000027128, 0.0000027030, 0.0000027142, 0.0000027271, + 0.0000027213, 0.0000027256, 0.0000027298, 0.0000027155, 0.0000026987, + 0.0000026900, 0.0000026918, 0.0000027008, 0.0000027069, 0.0000027053, + 0.0000026941, 0.0000026867, 0.0000026911, 0.0000026983, 0.0000027024, + 0.0000027042, 0.0000027065, 0.0000027105, 0.0000027163, 0.0000027213, + 0.0000027231, 0.0000027196, 0.0000027098, 0.0000026954, 0.0000026814, + 0.0000026728, 0.0000026705, 0.0000026720, 0.0000026748, 0.0000026761, + 0.0000026752, 0.0000026744, 0.0000026762, 0.0000026798, 0.0000026823, + 0.0000026803, 0.0000026759, 0.0000026717, 0.0000026717, 0.0000026776, + 0.0000026848, 0.0000026909, 0.0000026936, 0.0000026938, 0.0000026934, + 0.0000026932, 0.0000026941, 0.0000026959, 0.0000026970, 0.0000026994, + 0.0000027053, 0.0000027027, 0.0000026874, 0.0000026729, 0.0000026677, + 0.0000026677, 0.0000026672, 0.0000026718, 0.0000026806, 0.0000026889, + 0.0000026996, 0.0000027146, 0.0000027300, 0.0000027404, 0.0000027444, + 0.0000027440, 0.0000027433, 0.0000027442, 0.0000027442, 0.0000027390, + 0.0000027227, 0.0000027022, 0.0000026920, 0.0000026918, 0.0000026950, + 0.0000026960, 0.0000026961, 0.0000026957, 0.0000026941, 0.0000026908, + 0.0000026863, 0.0000026822, 0.0000026788, 0.0000026760, 0.0000026740, + 0.0000026731, 0.0000026737, 0.0000026757, 0.0000026783, 0.0000026808, + 0.0000026826, 0.0000026834, 0.0000026835, 0.0000026836, 0.0000026831, + 0.0000026826, 0.0000026821, 0.0000026806, 0.0000026778, 0.0000026756, + 0.0000026751, 0.0000026763, 0.0000026786, 0.0000026810, 0.0000026839, + 0.0000026866, 0.0000026884, 0.0000026907, 0.0000026933, 0.0000026962, + 0.0000026995, 0.0000027035, 0.0000027094, 0.0000027189, 0.0000027315, + 0.0000027425, 0.0000027478, 0.0000027475, 0.0000027434, 0.0000027364, + 0.0000027311, 0.0000027306, 0.0000027325, 0.0000027333, 0.0000027319, + 0.0000027299, 0.0000027289, 0.0000027282, 0.0000027273, 0.0000027257, + 0.0000027242, 0.0000027238, 0.0000027261, 0.0000027320, 0.0000027391, + 0.0000027444, 0.0000027478, 0.0000027526, 0.0000027487, 0.0000027371, + 0.0000027269, 0.0000027215, 0.0000027187, 0.0000027161, 0.0000027110, + 0.0000027067, 0.0000027087, 0.0000027169, 0.0000027224, 0.0000027234, + 0.0000027226, 0.0000027211, 0.0000027195, 0.0000027194, 0.0000027217, + 0.0000027236, 0.0000027215, 0.0000027235, 0.0000027385, 0.0000027498, + 0.0000027480, 0.0000027379, 0.0000027292, 0.0000027224, 0.0000027135, + 0.0000027069, 0.0000027046, 0.0000026960, 0.0000026847, 0.0000026838, + 0.0000026921, 0.0000027014, 0.0000026995, 0.0000026975, 0.0000027076, + 0.0000027234, 0.0000027276, 0.0000027283, 0.0000027384, 0.0000027507, + 0.0000027527, 0.0000027462, 0.0000027406, 0.0000027386, 0.0000027270, + 0.0000027083, 0.0000027014, 0.0000027114, 0.0000027268, 0.0000027218, + 0.0000027215, 0.0000027308, 0.0000027220, 0.0000027029, 0.0000026898, + 0.0000026858, 0.0000026923, 0.0000027047, 0.0000027128, 0.0000027113, + 0.0000026994, 0.0000026908, 0.0000026939, 0.0000026989, 0.0000027019, + 0.0000027035, 0.0000027065, 0.0000027118, 0.0000027182, 0.0000027233, + 0.0000027257, 0.0000027225, 0.0000027130, 0.0000026983, 0.0000026826, + 0.0000026702, 0.0000026652, 0.0000026654, 0.0000026688, 0.0000026719, + 0.0000026719, 0.0000026700, 0.0000026695, 0.0000026714, 0.0000026749, + 0.0000026777, 0.0000026776, 0.0000026764, 0.0000026760, 0.0000026790, + 0.0000026836, 0.0000026888, 0.0000026928, 0.0000026937, 0.0000026935, + 0.0000026936, 0.0000026945, 0.0000026958, 0.0000026974, 0.0000026988, + 0.0000027036, 0.0000027075, 0.0000026971, 0.0000026799, 0.0000026680, + 0.0000026645, 0.0000026630, 0.0000026632, 0.0000026705, 0.0000026792, + 0.0000026875, 0.0000026985, 0.0000027132, 0.0000027296, 0.0000027420, + 0.0000027471, 0.0000027471, 0.0000027462, 0.0000027469, 0.0000027500, + 0.0000027500, 0.0000027407, 0.0000027195, 0.0000026980, 0.0000026880, + 0.0000026854, 0.0000026856, 0.0000026852, 0.0000026836, 0.0000026806, + 0.0000026761, 0.0000026712, 0.0000026668, 0.0000026634, 0.0000026613, + 0.0000026606, 0.0000026614, 0.0000026637, 0.0000026663, 0.0000026682, + 0.0000026691, 0.0000026698, 0.0000026706, 0.0000026714, 0.0000026718, + 0.0000026718, 0.0000026721, 0.0000026737, 0.0000026767, 0.0000026806, + 0.0000026843, 0.0000026855, 0.0000026834, 0.0000026806, 0.0000026799, + 0.0000026819, 0.0000026856, 0.0000026894, 0.0000026914, 0.0000026923, + 0.0000026933, 0.0000026947, 0.0000026969, 0.0000027008, 0.0000027083, + 0.0000027198, 0.0000027323, 0.0000027408, 0.0000027431, 0.0000027419, + 0.0000027369, 0.0000027309, 0.0000027288, 0.0000027303, 0.0000027318, + 0.0000027308, 0.0000027287, 0.0000027291, 0.0000027313, 0.0000027342, + 0.0000027362, 0.0000027372, 0.0000027377, 0.0000027382, 0.0000027392, + 0.0000027412, 0.0000027434, 0.0000027456, 0.0000027494, 0.0000027573, + 0.0000027570, 0.0000027478, 0.0000027360, 0.0000027289, 0.0000027251, + 0.0000027227, 0.0000027200, 0.0000027148, 0.0000027098, 0.0000027116, + 0.0000027193, 0.0000027238, 0.0000027242, 0.0000027235, 0.0000027223, + 0.0000027216, 0.0000027212, 0.0000027238, 0.0000027258, 0.0000027234, + 0.0000027256, 0.0000027411, 0.0000027506, 0.0000027483, 0.0000027405, + 0.0000027337, 0.0000027257, 0.0000027148, 0.0000027089, 0.0000027065, + 0.0000026969, 0.0000026862, 0.0000026861, 0.0000026969, 0.0000027037, + 0.0000026990, 0.0000026983, 0.0000027129, 0.0000027257, 0.0000027264, + 0.0000027298, 0.0000027413, 0.0000027485, 0.0000027466, 0.0000027403, + 0.0000027378, 0.0000027339, 0.0000027198, 0.0000027038, 0.0000026997, + 0.0000027082, 0.0000027260, 0.0000027239, 0.0000027187, 0.0000027276, + 0.0000027274, 0.0000027085, 0.0000026920, 0.0000026838, 0.0000026842, + 0.0000026967, 0.0000027124, 0.0000027200, 0.0000027170, 0.0000027044, + 0.0000026955, 0.0000026962, 0.0000026989, 0.0000027005, 0.0000027015, + 0.0000027051, 0.0000027114, 0.0000027183, 0.0000027240, 0.0000027250, + 0.0000027222, 0.0000027134, 0.0000027001, 0.0000026851, 0.0000026713, + 0.0000026631, 0.0000026622, 0.0000026659, 0.0000026700, 0.0000026707, + 0.0000026688, 0.0000026672, 0.0000026663, 0.0000026670, 0.0000026697, + 0.0000026733, 0.0000026755, 0.0000026768, 0.0000026798, 0.0000026836, + 0.0000026878, 0.0000026921, 0.0000026935, 0.0000026932, 0.0000026934, + 0.0000026946, 0.0000026958, 0.0000026969, 0.0000026983, 0.0000027014, + 0.0000027083, 0.0000027057, 0.0000026889, 0.0000026728, 0.0000026634, + 0.0000026605, 0.0000026569, 0.0000026600, 0.0000026685, 0.0000026764, + 0.0000026851, 0.0000026960, 0.0000027105, 0.0000027273, 0.0000027408, + 0.0000027467, 0.0000027466, 0.0000027460, 0.0000027471, 0.0000027515, + 0.0000027558, 0.0000027536, 0.0000027398, 0.0000027175, 0.0000026966, + 0.0000026834, 0.0000026801, 0.0000026787, 0.0000026766, 0.0000026743, + 0.0000026713, 0.0000026691, 0.0000026721, 0.0000026751, 0.0000026762, + 0.0000026736, 0.0000026675, 0.0000026633, 0.0000026614, 0.0000026608, + 0.0000026609, 0.0000026615, 0.0000026619, 0.0000026623, 0.0000026622, + 0.0000026620, 0.0000026618, 0.0000026615, 0.0000026610, 0.0000026602, + 0.0000026612, 0.0000026664, 0.0000026760, 0.0000026858, 0.0000026896, + 0.0000026883, 0.0000026853, 0.0000026864, 0.0000026915, 0.0000026963, + 0.0000026991, 0.0000026994, 0.0000026987, 0.0000026994, 0.0000027030, + 0.0000027105, 0.0000027207, 0.0000027304, 0.0000027366, 0.0000027381, + 0.0000027366, 0.0000027319, 0.0000027271, 0.0000027267, 0.0000027298, + 0.0000027315, 0.0000027306, 0.0000027304, 0.0000027336, 0.0000027388, + 0.0000027436, 0.0000027472, 0.0000027498, 0.0000027516, 0.0000027525, + 0.0000027523, 0.0000027512, 0.0000027504, 0.0000027504, 0.0000027528, + 0.0000027628, 0.0000027628, 0.0000027557, 0.0000027446, 0.0000027365, + 0.0000027319, 0.0000027287, 0.0000027260, 0.0000027230, 0.0000027180, + 0.0000027133, 0.0000027152, 0.0000027222, 0.0000027258, 0.0000027256, + 0.0000027241, 0.0000027232, 0.0000027223, 0.0000027225, 0.0000027258, + 0.0000027273, 0.0000027238, 0.0000027266, 0.0000027425, 0.0000027509, + 0.0000027495, 0.0000027438, 0.0000027377, 0.0000027272, 0.0000027150, + 0.0000027101, 0.0000027076, 0.0000026978, 0.0000026881, 0.0000026887, + 0.0000027008, 0.0000027040, 0.0000026984, 0.0000027008, 0.0000027183, + 0.0000027268, 0.0000027269, 0.0000027331, 0.0000027422, 0.0000027441, + 0.0000027388, 0.0000027357, 0.0000027354, 0.0000027284, 0.0000027136, + 0.0000027001, 0.0000026979, 0.0000027044, 0.0000027239, 0.0000027265, + 0.0000027169, 0.0000027225, 0.0000027287, 0.0000027153, 0.0000026962, + 0.0000026846, 0.0000026801, 0.0000026871, 0.0000027055, 0.0000027202, + 0.0000027257, 0.0000027216, 0.0000027106, 0.0000027011, 0.0000026983, + 0.0000026991, 0.0000026992, 0.0000027004, 0.0000027045, 0.0000027108, + 0.0000027176, 0.0000027221, 0.0000027223, 0.0000027186, 0.0000027111, + 0.0000027008, 0.0000026892, 0.0000026765, 0.0000026663, 0.0000026634, + 0.0000026667, 0.0000026707, 0.0000026721, 0.0000026706, 0.0000026682, + 0.0000026661, 0.0000026641, 0.0000026632, 0.0000026654, 0.0000026692, + 0.0000026721, 0.0000026755, 0.0000026806, 0.0000026861, 0.0000026908, + 0.0000026927, 0.0000026920, 0.0000026918, 0.0000026936, 0.0000026960, + 0.0000026968, 0.0000026977, 0.0000027000, 0.0000027066, 0.0000027108, + 0.0000026978, 0.0000026803, 0.0000026666, 0.0000026599, 0.0000026551, + 0.0000026521, 0.0000026574, 0.0000026647, 0.0000026717, 0.0000026806, + 0.0000026919, 0.0000027066, 0.0000027236, 0.0000027371, 0.0000027425, + 0.0000027427, 0.0000027420, 0.0000027434, 0.0000027488, 0.0000027556, + 0.0000027571, 0.0000027528, 0.0000027397, 0.0000027214, 0.0000027047, + 0.0000026958, 0.0000026932, 0.0000026943, 0.0000026975, 0.0000027026, + 0.0000027090, 0.0000027147, 0.0000027183, 0.0000027200, 0.0000027199, + 0.0000027167, 0.0000027086, 0.0000026944, 0.0000026777, 0.0000026652, + 0.0000026609, 0.0000026607, 0.0000026612, 0.0000026616, 0.0000026626, + 0.0000026642, 0.0000026651, 0.0000026643, 0.0000026624, 0.0000026602, + 0.0000026583, 0.0000026576, 0.0000026604, 0.0000026723, 0.0000026884, + 0.0000026960, 0.0000026942, 0.0000026904, 0.0000026921, 0.0000026981, + 0.0000027036, 0.0000027051, 0.0000027044, 0.0000027044, 0.0000027073, + 0.0000027134, 0.0000027205, 0.0000027267, 0.0000027310, 0.0000027327, + 0.0000027319, 0.0000027283, 0.0000027245, 0.0000027248, 0.0000027292, + 0.0000027329, 0.0000027339, 0.0000027363, 0.0000027420, 0.0000027488, + 0.0000027549, 0.0000027603, 0.0000027647, 0.0000027675, 0.0000027685, + 0.0000027672, 0.0000027647, 0.0000027622, 0.0000027606, 0.0000027606, + 0.0000027672, 0.0000027657, 0.0000027600, 0.0000027512, 0.0000027432, + 0.0000027381, 0.0000027348, 0.0000027317, 0.0000027282, 0.0000027258, + 0.0000027214, 0.0000027175, 0.0000027196, 0.0000027253, 0.0000027266, + 0.0000027255, 0.0000027234, 0.0000027227, 0.0000027223, 0.0000027237, + 0.0000027276, 0.0000027285, 0.0000027244, 0.0000027277, 0.0000027441, + 0.0000027514, 0.0000027511, 0.0000027472, 0.0000027402, 0.0000027267, + 0.0000027142, 0.0000027107, 0.0000027089, 0.0000026992, 0.0000026900, + 0.0000026923, 0.0000027038, 0.0000027045, 0.0000026982, 0.0000027047, + 0.0000027231, 0.0000027278, 0.0000027285, 0.0000027364, 0.0000027417, + 0.0000027392, 0.0000027331, 0.0000027327, 0.0000027322, 0.0000027237, + 0.0000027093, 0.0000026975, 0.0000026959, 0.0000027004, 0.0000027198, + 0.0000027277, 0.0000027179, 0.0000027166, 0.0000027263, 0.0000027230, + 0.0000027034, 0.0000026877, 0.0000026801, 0.0000026809, 0.0000026943, + 0.0000027134, 0.0000027256, 0.0000027295, 0.0000027267, 0.0000027182, + 0.0000027079, 0.0000027017, 0.0000026993, 0.0000026990, 0.0000027007, + 0.0000027048, 0.0000027103, 0.0000027155, 0.0000027181, 0.0000027173, + 0.0000027140, 0.0000027095, 0.0000027035, 0.0000026953, 0.0000026843, + 0.0000026729, 0.0000026673, 0.0000026679, 0.0000026717, 0.0000026749, + 0.0000026750, 0.0000026731, 0.0000026705, 0.0000026670, 0.0000026628, + 0.0000026613, 0.0000026621, 0.0000026648, 0.0000026679, 0.0000026733, + 0.0000026805, 0.0000026867, 0.0000026898, 0.0000026895, 0.0000026887, + 0.0000026904, 0.0000026956, 0.0000026973, 0.0000026966, 0.0000026987, + 0.0000027041, 0.0000027118, 0.0000027062, 0.0000026881, 0.0000026732, + 0.0000026621, 0.0000026569, 0.0000026496, 0.0000026487, 0.0000026541, + 0.0000026592, 0.0000026649, 0.0000026739, 0.0000026862, 0.0000027017, + 0.0000027181, 0.0000027296, 0.0000027337, 0.0000027334, 0.0000027324, + 0.0000027341, 0.0000027401, 0.0000027476, 0.0000027527, 0.0000027528, + 0.0000027512, 0.0000027435, 0.0000027349, 0.0000027297, 0.0000027281, + 0.0000027278, 0.0000027272, 0.0000027233, 0.0000027164, 0.0000027130, + 0.0000027081, 0.0000027067, 0.0000027092, 0.0000027160, 0.0000027237, + 0.0000027267, 0.0000027228, 0.0000027131, 0.0000027046, 0.0000027018, + 0.0000027036, 0.0000027094, 0.0000027163, 0.0000027241, 0.0000027295, + 0.0000027309, 0.0000027270, 0.0000027140, 0.0000026936, 0.0000026735, + 0.0000026611, 0.0000026576, 0.0000026628, 0.0000026783, 0.0000026964, + 0.0000027029, 0.0000026981, 0.0000026943, 0.0000026969, 0.0000027029, + 0.0000027057, 0.0000027057, 0.0000027055, 0.0000027078, 0.0000027121, + 0.0000027167, 0.0000027207, 0.0000027242, 0.0000027264, 0.0000027269, + 0.0000027250, 0.0000027221, 0.0000027223, 0.0000027278, 0.0000027344, + 0.0000027389, 0.0000027439, 0.0000027512, 0.0000027582, 0.0000027641, + 0.0000027697, 0.0000027740, 0.0000027762, 0.0000027769, 0.0000027758, + 0.0000027740, 0.0000027721, 0.0000027699, 0.0000027681, 0.0000027673, + 0.0000027654, 0.0000027610, 0.0000027547, 0.0000027484, 0.0000027439, + 0.0000027409, 0.0000027374, 0.0000027330, 0.0000027307, 0.0000027299, + 0.0000027262, 0.0000027219, 0.0000027233, 0.0000027269, 0.0000027268, + 0.0000027244, 0.0000027224, 0.0000027217, 0.0000027220, 0.0000027244, + 0.0000027290, 0.0000027298, 0.0000027255, 0.0000027292, 0.0000027460, + 0.0000027531, 0.0000027530, 0.0000027499, 0.0000027404, 0.0000027249, + 0.0000027137, 0.0000027120, 0.0000027112, 0.0000027015, 0.0000026925, + 0.0000026959, 0.0000027062, 0.0000027050, 0.0000026992, 0.0000027100, + 0.0000027265, 0.0000027285, 0.0000027307, 0.0000027387, 0.0000027404, + 0.0000027348, 0.0000027309, 0.0000027312, 0.0000027294, 0.0000027200, + 0.0000027070, 0.0000026965, 0.0000026945, 0.0000026975, 0.0000027147, + 0.0000027287, 0.0000027212, 0.0000027129, 0.0000027206, 0.0000027258, + 0.0000027134, 0.0000026943, 0.0000026830, 0.0000026797, 0.0000026853, + 0.0000027006, 0.0000027182, 0.0000027291, 0.0000027326, 0.0000027315, + 0.0000027252, 0.0000027151, 0.0000027066, 0.0000027019, 0.0000027009, + 0.0000027023, 0.0000027060, 0.0000027094, 0.0000027124, 0.0000027128, + 0.0000027115, 0.0000027106, 0.0000027101, 0.0000027080, 0.0000027025, + 0.0000026933, 0.0000026820, 0.0000026728, 0.0000026689, 0.0000026713, + 0.0000026758, 0.0000026783, 0.0000026788, 0.0000026772, 0.0000026740, + 0.0000026687, 0.0000026632, 0.0000026602, 0.0000026602, 0.0000026616, + 0.0000026658, 0.0000026726, 0.0000026794, 0.0000026838, 0.0000026850, + 0.0000026850, 0.0000026869, 0.0000026934, 0.0000026974, 0.0000026955, + 0.0000026966, 0.0000027014, 0.0000027113, 0.0000027132, 0.0000026957, + 0.0000026802, 0.0000026670, 0.0000026599, 0.0000026524, 0.0000026455, + 0.0000026471, 0.0000026513, 0.0000026537, 0.0000026578, 0.0000026663, + 0.0000026793, 0.0000026952, 0.0000027097, 0.0000027184, 0.0000027208, + 0.0000027201, 0.0000027195, 0.0000027216, 0.0000027269, 0.0000027330, + 0.0000027382, 0.0000027422, 0.0000027439, 0.0000027428, 0.0000027391, + 0.0000027351, 0.0000027304, 0.0000027222, 0.0000027128, 0.0000027024, + 0.0000026928, 0.0000026855, 0.0000026808, 0.0000026786, 0.0000026785, + 0.0000026811, 0.0000026900, 0.0000027054, 0.0000027199, 0.0000027273, + 0.0000027304, 0.0000027314, 0.0000027322, 0.0000027328, 0.0000027325, + 0.0000027323, 0.0000027327, 0.0000027342, 0.0000027372, 0.0000027410, + 0.0000027435, 0.0000027374, 0.0000027180, 0.0000026858, 0.0000026637, + 0.0000026603, 0.0000026700, 0.0000026888, 0.0000027050, 0.0000027070, + 0.0000027000, 0.0000026968, 0.0000026993, 0.0000027028, 0.0000027039, + 0.0000027042, 0.0000027056, 0.0000027083, 0.0000027109, 0.0000027138, + 0.0000027170, 0.0000027197, 0.0000027215, 0.0000027213, 0.0000027194, + 0.0000027194, 0.0000027255, 0.0000027355, 0.0000027438, 0.0000027508, + 0.0000027582, 0.0000027639, 0.0000027676, 0.0000027709, 0.0000027737, + 0.0000027753, 0.0000027759, 0.0000027753, 0.0000027742, 0.0000027728, + 0.0000027709, 0.0000027689, 0.0000027654, 0.0000027640, 0.0000027611, + 0.0000027565, 0.0000027522, 0.0000027490, 0.0000027463, 0.0000027429, + 0.0000027393, 0.0000027365, 0.0000027357, 0.0000027354, 0.0000027300, + 0.0000027243, 0.0000027250, 0.0000027274, 0.0000027267, 0.0000027231, + 0.0000027207, 0.0000027194, 0.0000027196, 0.0000027233, 0.0000027296, + 0.0000027310, 0.0000027265, 0.0000027308, 0.0000027485, 0.0000027550, + 0.0000027551, 0.0000027514, 0.0000027390, 0.0000027234, 0.0000027149, + 0.0000027149, 0.0000027148, 0.0000027046, 0.0000026959, 0.0000026996, + 0.0000027092, 0.0000027060, 0.0000027026, 0.0000027155, 0.0000027286, + 0.0000027297, 0.0000027326, 0.0000027391, 0.0000027383, 0.0000027315, + 0.0000027308, 0.0000027316, 0.0000027281, 0.0000027180, 0.0000027062, + 0.0000026966, 0.0000026940, 0.0000026955, 0.0000027088, 0.0000027272, + 0.0000027260, 0.0000027141, 0.0000027135, 0.0000027232, 0.0000027216, + 0.0000027048, 0.0000026893, 0.0000026826, 0.0000026822, 0.0000026896, + 0.0000027044, 0.0000027206, 0.0000027310, 0.0000027349, 0.0000027353, + 0.0000027311, 0.0000027229, 0.0000027144, 0.0000027088, 0.0000027068, + 0.0000027074, 0.0000027092, 0.0000027106, 0.0000027103, 0.0000027087, + 0.0000027086, 0.0000027104, 0.0000027124, 0.0000027128, 0.0000027092, + 0.0000027020, 0.0000026923, 0.0000026808, 0.0000026718, 0.0000026704, + 0.0000026735, 0.0000026782, 0.0000026815, 0.0000026833, 0.0000026824, + 0.0000026784, 0.0000026716, 0.0000026654, 0.0000026615, 0.0000026605, + 0.0000026630, 0.0000026676, 0.0000026735, 0.0000026778, 0.0000026804, + 0.0000026822, 0.0000026846, 0.0000026905, 0.0000026960, 0.0000026942, + 0.0000026940, 0.0000026988, 0.0000027080, 0.0000027162, 0.0000027035, + 0.0000026863, 0.0000026737, 0.0000026634, 0.0000026574, 0.0000026483, + 0.0000026449, 0.0000026478, 0.0000026503, 0.0000026506, 0.0000026527, + 0.0000026602, 0.0000026731, 0.0000026880, 0.0000026999, 0.0000027062, + 0.0000027077, 0.0000027076, 0.0000027081, 0.0000027113, 0.0000027157, + 0.0000027193, 0.0000027215, 0.0000027226, 0.0000027228, 0.0000027219, + 0.0000027191, 0.0000027136, 0.0000027060, 0.0000026975, 0.0000026891, + 0.0000026813, 0.0000026747, 0.0000026695, 0.0000026655, 0.0000026627, + 0.0000026618, 0.0000026629, 0.0000026669, 0.0000026738, 0.0000026833, + 0.0000026934, 0.0000027012, 0.0000027034, 0.0000027015, 0.0000026970, + 0.0000026914, 0.0000026862, 0.0000026837, 0.0000026840, 0.0000026883, + 0.0000026971, 0.0000027103, 0.0000027253, 0.0000027379, 0.0000027388, + 0.0000027179, 0.0000026806, 0.0000026624, 0.0000026657, 0.0000026821, + 0.0000027007, 0.0000027111, 0.0000027083, 0.0000027003, 0.0000026982, + 0.0000026996, 0.0000027017, 0.0000027033, 0.0000027049, 0.0000027067, + 0.0000027082, 0.0000027100, 0.0000027122, 0.0000027148, 0.0000027174, + 0.0000027185, 0.0000027178, 0.0000027178, 0.0000027243, 0.0000027364, + 0.0000027473, 0.0000027552, 0.0000027618, 0.0000027654, 0.0000027666, + 0.0000027673, 0.0000027691, 0.0000027709, 0.0000027719, 0.0000027718, + 0.0000027710, 0.0000027698, 0.0000027682, 0.0000027666, 0.0000027654, + 0.0000027654, 0.0000027638, 0.0000027600, 0.0000027558, 0.0000027531, + 0.0000027505, 0.0000027479, 0.0000027460, 0.0000027437, 0.0000027416, + 0.0000027417, 0.0000027394, 0.0000027305, 0.0000027247, 0.0000027267, + 0.0000027287, 0.0000027251, 0.0000027204, 0.0000027167, 0.0000027149, + 0.0000027160, 0.0000027214, 0.0000027294, 0.0000027307, 0.0000027266, + 0.0000027329, 0.0000027515, 0.0000027572, 0.0000027570, 0.0000027511, + 0.0000027371, 0.0000027235, 0.0000027182, 0.0000027188, 0.0000027177, + 0.0000027080, 0.0000026997, 0.0000027032, 0.0000027118, 0.0000027079, + 0.0000027069, 0.0000027207, 0.0000027307, 0.0000027310, 0.0000027340, + 0.0000027386, 0.0000027352, 0.0000027288, 0.0000027307, 0.0000027329, + 0.0000027281, 0.0000027179, 0.0000027065, 0.0000026973, 0.0000026942, + 0.0000026941, 0.0000027022, 0.0000027239, 0.0000027290, 0.0000027199, + 0.0000027116, 0.0000027173, 0.0000027239, 0.0000027171, 0.0000026998, + 0.0000026886, 0.0000026829, 0.0000026841, 0.0000026916, 0.0000027063, + 0.0000027217, 0.0000027320, 0.0000027362, 0.0000027372, 0.0000027352, + 0.0000027295, 0.0000027230, 0.0000027178, 0.0000027154, 0.0000027148, + 0.0000027147, 0.0000027136, 0.0000027112, 0.0000027097, 0.0000027098, + 0.0000027121, 0.0000027156, 0.0000027172, 0.0000027150, 0.0000027100, + 0.0000027026, 0.0000026909, 0.0000026782, 0.0000026715, 0.0000026707, + 0.0000026744, 0.0000026799, 0.0000026849, 0.0000026880, 0.0000026877, + 0.0000026833, 0.0000026760, 0.0000026694, 0.0000026655, 0.0000026650, + 0.0000026681, 0.0000026727, 0.0000026764, 0.0000026792, 0.0000026818, + 0.0000026834, 0.0000026884, 0.0000026939, 0.0000026928, 0.0000026911, + 0.0000026959, 0.0000027045, 0.0000027162, 0.0000027110, 0.0000026923, + 0.0000026797, 0.0000026679, 0.0000026617, 0.0000026542, 0.0000026462, + 0.0000026460, 0.0000026495, 0.0000026502, 0.0000026491, 0.0000026507, + 0.0000026578, 0.0000026698, 0.0000026825, 0.0000026916, 0.0000026960, + 0.0000026975, 0.0000026986, 0.0000027010, 0.0000027054, 0.0000027101, + 0.0000027127, 0.0000027121, 0.0000027099, 0.0000027078, 0.0000027053, + 0.0000027017, 0.0000026970, 0.0000026913, 0.0000026853, 0.0000026795, + 0.0000026742, 0.0000026691, 0.0000026643, 0.0000026599, 0.0000026556, + 0.0000026521, 0.0000026513, 0.0000026533, 0.0000026590, 0.0000026647, + 0.0000026685, 0.0000026707, 0.0000026711, 0.0000026698, 0.0000026681, + 0.0000026673, 0.0000026679, 0.0000026700, 0.0000026732, 0.0000026762, + 0.0000026783, 0.0000026803, 0.0000026840, 0.0000026957, 0.0000027173, + 0.0000027367, 0.0000027326, 0.0000027020, 0.0000026694, 0.0000026651, + 0.0000026777, 0.0000026946, 0.0000027094, 0.0000027130, 0.0000027078, + 0.0000027018, 0.0000027001, 0.0000027011, 0.0000027039, 0.0000027067, + 0.0000027082, 0.0000027094, 0.0000027108, 0.0000027125, 0.0000027149, + 0.0000027173, 0.0000027185, 0.0000027182, 0.0000027186, 0.0000027250, + 0.0000027376, 0.0000027496, 0.0000027579, 0.0000027631, 0.0000027651, + 0.0000027642, 0.0000027641, 0.0000027659, 0.0000027675, 0.0000027685, + 0.0000027693, 0.0000027698, 0.0000027693, 0.0000027676, 0.0000027660, + 0.0000027656, 0.0000027663, 0.0000027660, 0.0000027639, 0.0000027608, + 0.0000027581, 0.0000027551, 0.0000027526, 0.0000027519, 0.0000027506, + 0.0000027483, 0.0000027471, 0.0000027462, 0.0000027389, 0.0000027267, + 0.0000027242, 0.0000027279, 0.0000027272, 0.0000027218, 0.0000027159, + 0.0000027111, 0.0000027103, 0.0000027124, 0.0000027189, 0.0000027280, + 0.0000027298, 0.0000027262, 0.0000027360, 0.0000027544, 0.0000027587, + 0.0000027576, 0.0000027494, 0.0000027356, 0.0000027244, 0.0000027210, + 0.0000027215, 0.0000027198, 0.0000027113, 0.0000027033, 0.0000027064, + 0.0000027138, 0.0000027102, 0.0000027108, 0.0000027251, 0.0000027329, + 0.0000027327, 0.0000027355, 0.0000027381, 0.0000027323, 0.0000027262, + 0.0000027300, 0.0000027336, 0.0000027282, 0.0000027181, 0.0000027072, + 0.0000026980, 0.0000026945, 0.0000026927, 0.0000026962, 0.0000027182, + 0.0000027316, 0.0000027278, 0.0000027151, 0.0000027127, 0.0000027208, + 0.0000027236, 0.0000027134, 0.0000026985, 0.0000026881, 0.0000026836, + 0.0000026854, 0.0000026935, 0.0000027075, 0.0000027212, 0.0000027303, + 0.0000027349, 0.0000027369, 0.0000027351, 0.0000027314, 0.0000027263, + 0.0000027217, 0.0000027186, 0.0000027169, 0.0000027161, 0.0000027154, + 0.0000027150, 0.0000027152, 0.0000027151, 0.0000027159, 0.0000027191, + 0.0000027217, 0.0000027212, 0.0000027177, 0.0000027121, 0.0000027022, + 0.0000026889, 0.0000026775, 0.0000026711, 0.0000026704, 0.0000026745, + 0.0000026811, 0.0000026875, 0.0000026913, 0.0000026930, 0.0000026887, + 0.0000026814, 0.0000026753, 0.0000026723, 0.0000026731, 0.0000026760, + 0.0000026796, 0.0000026816, 0.0000026836, 0.0000026832, 0.0000026867, + 0.0000026917, 0.0000026910, 0.0000026882, 0.0000026926, 0.0000027010, + 0.0000027141, 0.0000027168, 0.0000026991, 0.0000026842, 0.0000026728, + 0.0000026649, 0.0000026595, 0.0000026507, 0.0000026456, 0.0000026475, + 0.0000026502, 0.0000026495, 0.0000026487, 0.0000026513, 0.0000026589, + 0.0000026696, 0.0000026798, 0.0000026867, 0.0000026897, 0.0000026909, + 0.0000026921, 0.0000026951, 0.0000027002, 0.0000027056, 0.0000027087, + 0.0000027082, 0.0000027057, 0.0000027027, 0.0000026989, 0.0000026939, + 0.0000026881, 0.0000026823, 0.0000026765, 0.0000026702, 0.0000026629, + 0.0000026556, 0.0000026495, 0.0000026453, 0.0000026427, 0.0000026409, + 0.0000026396, 0.0000026402, 0.0000026448, 0.0000026523, 0.0000026583, + 0.0000026620, 0.0000026642, 0.0000026654, 0.0000026662, 0.0000026686, + 0.0000026730, 0.0000026780, 0.0000026822, 0.0000026850, 0.0000026862, + 0.0000026863, 0.0000026853, 0.0000026831, 0.0000026843, 0.0000026973, + 0.0000027239, 0.0000027366, 0.0000027173, 0.0000026804, 0.0000026677, + 0.0000026753, 0.0000026893, 0.0000027040, 0.0000027140, 0.0000027143, + 0.0000027102, 0.0000027063, 0.0000027054, 0.0000027078, 0.0000027109, + 0.0000027127, 0.0000027136, 0.0000027145, 0.0000027163, 0.0000027190, + 0.0000027210, 0.0000027216, 0.0000027212, 0.0000027216, 0.0000027274, + 0.0000027392, 0.0000027514, 0.0000027592, 0.0000027627, 0.0000027635, + 0.0000027620, 0.0000027622, 0.0000027643, 0.0000027659, 0.0000027669, + 0.0000027682, 0.0000027693, 0.0000027692, 0.0000027677, 0.0000027661, + 0.0000027621, 0.0000027643, 0.0000027654, 0.0000027646, 0.0000027636, + 0.0000027618, 0.0000027590, 0.0000027563, 0.0000027556, 0.0000027549, + 0.0000027528, 0.0000027514, 0.0000027508, 0.0000027464, 0.0000027338, + 0.0000027239, 0.0000027256, 0.0000027290, 0.0000027252, 0.0000027182, + 0.0000027108, 0.0000027053, 0.0000027046, 0.0000027079, 0.0000027166, + 0.0000027271, 0.0000027285, 0.0000027270, 0.0000027407, 0.0000027567, + 0.0000027597, 0.0000027572, 0.0000027471, 0.0000027342, 0.0000027249, + 0.0000027225, 0.0000027231, 0.0000027215, 0.0000027146, 0.0000027069, + 0.0000027092, 0.0000027154, 0.0000027127, 0.0000027145, 0.0000027289, + 0.0000027349, 0.0000027348, 0.0000027370, 0.0000027380, 0.0000027300, + 0.0000027242, 0.0000027294, 0.0000027336, 0.0000027285, 0.0000027186, + 0.0000027078, 0.0000026989, 0.0000026945, 0.0000026918, 0.0000026923, + 0.0000027102, 0.0000027299, 0.0000027327, 0.0000027228, 0.0000027138, + 0.0000027157, 0.0000027226, 0.0000027212, 0.0000027108, 0.0000026974, + 0.0000026879, 0.0000026845, 0.0000026873, 0.0000026955, 0.0000027074, + 0.0000027179, 0.0000027246, 0.0000027294, 0.0000027311, 0.0000027300, + 0.0000027268, 0.0000027220, 0.0000027176, 0.0000027146, 0.0000027131, + 0.0000027130, 0.0000027147, 0.0000027182, 0.0000027224, 0.0000027232, + 0.0000027216, 0.0000027231, 0.0000027269, 0.0000027278, 0.0000027253, + 0.0000027210, 0.0000027129, 0.0000027005, 0.0000026871, 0.0000026760, + 0.0000026706, 0.0000026705, 0.0000026749, 0.0000026820, 0.0000026896, + 0.0000026958, 0.0000026983, 0.0000026942, 0.0000026877, 0.0000026824, + 0.0000026804, 0.0000026812, 0.0000026844, 0.0000026851, 0.0000026855, + 0.0000026842, 0.0000026857, 0.0000026895, 0.0000026889, 0.0000026855, + 0.0000026889, 0.0000026979, 0.0000027104, 0.0000027197, 0.0000027068, + 0.0000026886, 0.0000026767, 0.0000026677, 0.0000026629, 0.0000026562, + 0.0000026472, 0.0000026447, 0.0000026468, 0.0000026475, 0.0000026461, + 0.0000026470, 0.0000026524, 0.0000026608, 0.0000026704, 0.0000026792, + 0.0000026848, 0.0000026863, 0.0000026858, 0.0000026853, 0.0000026868, + 0.0000026907, 0.0000026953, 0.0000026982, 0.0000026983, 0.0000026961, + 0.0000026923, 0.0000026871, 0.0000026811, 0.0000026752, 0.0000026684, + 0.0000026603, 0.0000026517, 0.0000026448, 0.0000026404, 0.0000026379, + 0.0000026350, 0.0000026313, 0.0000026284, 0.0000026270, 0.0000026271, + 0.0000026298, 0.0000026356, 0.0000026432, 0.0000026506, 0.0000026564, + 0.0000026604, 0.0000026635, 0.0000026670, 0.0000026721, 0.0000026784, + 0.0000026847, 0.0000026902, 0.0000026940, 0.0000026959, 0.0000026959, + 0.0000026933, 0.0000026878, 0.0000026829, 0.0000026875, 0.0000027129, + 0.0000027346, 0.0000027274, 0.0000026921, 0.0000026713, 0.0000026744, + 0.0000026858, 0.0000026972, 0.0000027099, 0.0000027173, 0.0000027182, + 0.0000027162, 0.0000027148, 0.0000027154, 0.0000027171, 0.0000027190, + 0.0000027197, 0.0000027196, 0.0000027209, 0.0000027238, 0.0000027266, + 0.0000027272, 0.0000027261, 0.0000027260, 0.0000027307, 0.0000027410, + 0.0000027523, 0.0000027593, 0.0000027615, 0.0000027613, 0.0000027601, + 0.0000027606, 0.0000027627, 0.0000027649, 0.0000027663, 0.0000027668, + 0.0000027664, 0.0000027649, 0.0000027627, 0.0000027614, 0.0000027531, + 0.0000027543, 0.0000027573, 0.0000027605, 0.0000027625, 0.0000027621, + 0.0000027604, 0.0000027579, 0.0000027571, 0.0000027564, 0.0000027547, + 0.0000027535, 0.0000027535, 0.0000027511, 0.0000027409, 0.0000027263, + 0.0000027232, 0.0000027300, 0.0000027300, 0.0000027234, 0.0000027142, + 0.0000027036, 0.0000026981, 0.0000026982, 0.0000027039, 0.0000027148, + 0.0000027264, 0.0000027275, 0.0000027288, 0.0000027463, 0.0000027596, + 0.0000027610, 0.0000027559, 0.0000027445, 0.0000027325, 0.0000027247, + 0.0000027236, 0.0000027241, 0.0000027229, 0.0000027177, 0.0000027102, + 0.0000027118, 0.0000027165, 0.0000027147, 0.0000027173, 0.0000027321, + 0.0000027365, 0.0000027363, 0.0000027376, 0.0000027377, 0.0000027280, + 0.0000027231, 0.0000027296, 0.0000027332, 0.0000027285, 0.0000027194, + 0.0000027087, 0.0000026991, 0.0000026936, 0.0000026907, 0.0000026905, + 0.0000027026, 0.0000027258, 0.0000027363, 0.0000027314, 0.0000027207, + 0.0000027154, 0.0000027181, 0.0000027216, 0.0000027187, 0.0000027090, + 0.0000026971, 0.0000026889, 0.0000026862, 0.0000026893, 0.0000026967, + 0.0000027060, 0.0000027127, 0.0000027169, 0.0000027200, 0.0000027209, + 0.0000027200, 0.0000027173, 0.0000027134, 0.0000027103, 0.0000027082, + 0.0000027081, 0.0000027102, 0.0000027139, 0.0000027204, 0.0000027284, + 0.0000027313, 0.0000027285, 0.0000027274, 0.0000027312, 0.0000027338, + 0.0000027326, 0.0000027287, 0.0000027213, 0.0000027099, 0.0000026967, + 0.0000026847, 0.0000026759, 0.0000026714, 0.0000026724, 0.0000026759, + 0.0000026823, 0.0000026910, 0.0000026987, 0.0000027003, 0.0000026979, + 0.0000026934, 0.0000026891, 0.0000026874, 0.0000026885, 0.0000026878, + 0.0000026868, 0.0000026854, 0.0000026853, 0.0000026873, 0.0000026867, + 0.0000026829, 0.0000026853, 0.0000026950, 0.0000027071, 0.0000027197, + 0.0000027141, 0.0000026947, 0.0000026797, 0.0000026698, 0.0000026642, + 0.0000026599, 0.0000026511, 0.0000026428, 0.0000026413, 0.0000026417, + 0.0000026398, 0.0000026389, 0.0000026430, 0.0000026508, 0.0000026597, + 0.0000026695, 0.0000026785, 0.0000026834, 0.0000026836, 0.0000026810, + 0.0000026783, 0.0000026772, 0.0000026783, 0.0000026805, 0.0000026817, + 0.0000026813, 0.0000026795, 0.0000026760, 0.0000026709, 0.0000026646, + 0.0000026572, 0.0000026498, 0.0000026446, 0.0000026438, 0.0000026456, + 0.0000026494, 0.0000026502, 0.0000026466, 0.0000026393, 0.0000026301, + 0.0000026223, 0.0000026177, 0.0000026174, 0.0000026205, 0.0000026258, + 0.0000026312, 0.0000026353, 0.0000026382, 0.0000026409, 0.0000026444, + 0.0000026502, 0.0000026584, 0.0000026677, 0.0000026774, 0.0000026872, + 0.0000026954, 0.0000027003, 0.0000027014, 0.0000026989, 0.0000026921, + 0.0000026834, 0.0000026837, 0.0000027054, 0.0000027337, 0.0000027335, + 0.0000027030, 0.0000026758, 0.0000026751, 0.0000026844, 0.0000026925, + 0.0000027024, 0.0000027137, 0.0000027205, 0.0000027236, 0.0000027246, + 0.0000027250, 0.0000027259, 0.0000027268, 0.0000027269, 0.0000027261, + 0.0000027255, 0.0000027268, 0.0000027305, 0.0000027328, 0.0000027321, + 0.0000027314, 0.0000027341, 0.0000027421, 0.0000027515, 0.0000027579, + 0.0000027597, 0.0000027595, 0.0000027589, 0.0000027595, 0.0000027615, + 0.0000027641, 0.0000027658, 0.0000027659, 0.0000027643, 0.0000027610, + 0.0000027570, 0.0000027540, 0.0000027483, 0.0000027461, 0.0000027454, + 0.0000027478, 0.0000027530, 0.0000027576, 0.0000027590, 0.0000027578, + 0.0000027575, 0.0000027573, 0.0000027559, 0.0000027549, 0.0000027546, + 0.0000027526, 0.0000027453, 0.0000027317, 0.0000027234, 0.0000027295, + 0.0000027350, 0.0000027304, 0.0000027207, 0.0000027069, 0.0000026973, + 0.0000026966, 0.0000026975, 0.0000027016, 0.0000027136, 0.0000027261, + 0.0000027269, 0.0000027326, 0.0000027525, 0.0000027626, 0.0000027619, + 0.0000027537, 0.0000027417, 0.0000027303, 0.0000027249, 0.0000027248, + 0.0000027248, 0.0000027242, 0.0000027204, 0.0000027130, 0.0000027130, + 0.0000027170, 0.0000027160, 0.0000027195, 0.0000027343, 0.0000027378, + 0.0000027373, 0.0000027380, 0.0000027371, 0.0000027265, 0.0000027229, + 0.0000027305, 0.0000027330, 0.0000027275, 0.0000027201, 0.0000027096, + 0.0000026985, 0.0000026920, 0.0000026890, 0.0000026888, 0.0000026976, + 0.0000027204, 0.0000027361, 0.0000027370, 0.0000027299, 0.0000027204, + 0.0000027159, 0.0000027179, 0.0000027201, 0.0000027185, 0.0000027086, + 0.0000026990, 0.0000026920, 0.0000026889, 0.0000026910, 0.0000026971, + 0.0000027037, 0.0000027074, 0.0000027095, 0.0000027111, 0.0000027121, + 0.0000027117, 0.0000027102, 0.0000027085, 0.0000027069, 0.0000027069, + 0.0000027091, 0.0000027125, 0.0000027166, 0.0000027233, 0.0000027319, + 0.0000027374, 0.0000027351, 0.0000027309, 0.0000027340, 0.0000027387, + 0.0000027387, 0.0000027343, 0.0000027268, 0.0000027165, 0.0000027051, + 0.0000026946, 0.0000026853, 0.0000026778, 0.0000026740, 0.0000026741, + 0.0000026762, 0.0000026813, 0.0000026898, 0.0000026972, 0.0000027001, + 0.0000026998, 0.0000026970, 0.0000026944, 0.0000026928, 0.0000026903, + 0.0000026883, 0.0000026866, 0.0000026852, 0.0000026853, 0.0000026841, + 0.0000026803, 0.0000026819, 0.0000026921, 0.0000027041, 0.0000027191, + 0.0000027198, 0.0000027024, 0.0000026837, 0.0000026712, 0.0000026642, + 0.0000026607, 0.0000026545, 0.0000026443, 0.0000026377, 0.0000026359, + 0.0000026332, 0.0000026298, 0.0000026313, 0.0000026379, 0.0000026459, + 0.0000026549, 0.0000026656, 0.0000026751, 0.0000026797, 0.0000026795, + 0.0000026765, 0.0000026727, 0.0000026700, 0.0000026691, 0.0000026689, + 0.0000026683, 0.0000026674, 0.0000026654, 0.0000026609, 0.0000026543, + 0.0000026482, 0.0000026460, 0.0000026487, 0.0000026578, 0.0000026696, + 0.0000026782, 0.0000026815, 0.0000026811, 0.0000026747, 0.0000026633, + 0.0000026487, 0.0000026334, 0.0000026208, 0.0000026141, 0.0000026129, + 0.0000026149, 0.0000026186, 0.0000026209, 0.0000026222, 0.0000026237, + 0.0000026268, 0.0000026320, 0.0000026393, 0.0000026481, 0.0000026586, + 0.0000026709, 0.0000026842, 0.0000026959, 0.0000027031, 0.0000027042, + 0.0000027008, 0.0000026930, 0.0000026831, 0.0000026817, 0.0000027021, + 0.0000027320, 0.0000027376, 0.0000027099, 0.0000026794, 0.0000026751, + 0.0000026848, 0.0000026922, 0.0000026978, 0.0000027055, 0.0000027133, + 0.0000027204, 0.0000027258, 0.0000027313, 0.0000027352, 0.0000027359, + 0.0000027354, 0.0000027332, 0.0000027300, 0.0000027288, 0.0000027315, + 0.0000027353, 0.0000027374, 0.0000027371, 0.0000027380, 0.0000027428, + 0.0000027501, 0.0000027559, 0.0000027583, 0.0000027585, 0.0000027582, + 0.0000027589, 0.0000027613, 0.0000027639, 0.0000027657, 0.0000027658, + 0.0000027638, 0.0000027598, 0.0000027552, 0.0000027513, 0.0000027474, + 0.0000027439, 0.0000027406, 0.0000027386, 0.0000027403, 0.0000027455, + 0.0000027508, 0.0000027537, 0.0000027556, 0.0000027568, 0.0000027563, + 0.0000027549, 0.0000027536, 0.0000027515, 0.0000027464, 0.0000027350, + 0.0000027238, 0.0000027288, 0.0000027396, 0.0000027384, 0.0000027285, + 0.0000027132, 0.0000027025, 0.0000027044, 0.0000027069, 0.0000027007, + 0.0000027001, 0.0000027134, 0.0000027254, 0.0000027266, 0.0000027381, + 0.0000027587, 0.0000027648, 0.0000027608, 0.0000027508, 0.0000027379, + 0.0000027284, 0.0000027261, 0.0000027263, 0.0000027255, 0.0000027256, + 0.0000027225, 0.0000027150, 0.0000027133, 0.0000027163, 0.0000027165, + 0.0000027210, 0.0000027358, 0.0000027389, 0.0000027382, 0.0000027386, + 0.0000027369, 0.0000027255, 0.0000027230, 0.0000027314, 0.0000027325, + 0.0000027262, 0.0000027200, 0.0000027092, 0.0000026970, 0.0000026900, + 0.0000026872, 0.0000026875, 0.0000026946, 0.0000027159, 0.0000027337, + 0.0000027396, 0.0000027374, 0.0000027289, 0.0000027189, 0.0000027142, + 0.0000027171, 0.0000027207, 0.0000027194, 0.0000027111, 0.0000027030, + 0.0000026961, 0.0000026923, 0.0000026939, 0.0000026974, 0.0000027015, + 0.0000027031, 0.0000027042, 0.0000027067, 0.0000027087, 0.0000027094, + 0.0000027091, 0.0000027082, 0.0000027080, 0.0000027106, 0.0000027151, + 0.0000027192, 0.0000027238, 0.0000027283, 0.0000027351, 0.0000027411, + 0.0000027400, 0.0000027336, 0.0000027360, 0.0000027425, 0.0000027426, + 0.0000027377, 0.0000027307, 0.0000027217, 0.0000027118, 0.0000027029, + 0.0000026944, 0.0000026859, 0.0000026794, 0.0000026767, 0.0000026754, + 0.0000026748, 0.0000026773, 0.0000026836, 0.0000026908, 0.0000026966, + 0.0000026992, 0.0000026991, 0.0000026969, 0.0000026934, 0.0000026902, + 0.0000026876, 0.0000026851, 0.0000026837, 0.0000026819, 0.0000026780, + 0.0000026790, 0.0000026894, 0.0000027016, 0.0000027159, 0.0000027228, + 0.0000027104, 0.0000026904, 0.0000026735, 0.0000026636, 0.0000026591, + 0.0000026560, 0.0000026476, 0.0000026385, 0.0000026336, 0.0000026301, + 0.0000026256, 0.0000026243, 0.0000026291, 0.0000026361, 0.0000026426, + 0.0000026511, 0.0000026615, 0.0000026698, 0.0000026734, 0.0000026732, + 0.0000026706, 0.0000026670, 0.0000026641, 0.0000026623, 0.0000026606, + 0.0000026586, 0.0000026562, 0.0000026530, 0.0000026486, 0.0000026471, + 0.0000026519, 0.0000026652, 0.0000026789, 0.0000026876, 0.0000026897, + 0.0000026881, 0.0000026864, 0.0000026863, 0.0000026868, 0.0000026832, + 0.0000026721, 0.0000026544, 0.0000026364, 0.0000026233, 0.0000026163, + 0.0000026151, 0.0000026171, 0.0000026193, 0.0000026209, 0.0000026231, + 0.0000026263, 0.0000026301, 0.0000026343, 0.0000026392, 0.0000026465, + 0.0000026573, 0.0000026715, 0.0000026865, 0.0000026989, 0.0000027056, + 0.0000027054, 0.0000027006, 0.0000026925, 0.0000026832, 0.0000026815, + 0.0000027004, 0.0000027309, 0.0000027396, 0.0000027156, 0.0000026829, + 0.0000026749, 0.0000026842, 0.0000026947, 0.0000026998, 0.0000027031, + 0.0000027068, 0.0000027114, 0.0000027173, 0.0000027254, 0.0000027338, + 0.0000027393, 0.0000027418, 0.0000027401, 0.0000027354, 0.0000027315, + 0.0000027312, 0.0000027347, 0.0000027395, 0.0000027420, 0.0000027427, + 0.0000027448, 0.0000027493, 0.0000027542, 0.0000027574, 0.0000027586, + 0.0000027582, 0.0000027590, 0.0000027615, 0.0000027640, 0.0000027659, + 0.0000027666, 0.0000027645, 0.0000027599, 0.0000027548, 0.0000027506, + 0.0000027459, 0.0000027432, 0.0000027407, 0.0000027376, 0.0000027360, + 0.0000027363, 0.0000027393, 0.0000027433, 0.0000027482, 0.0000027524, + 0.0000027538, 0.0000027528, 0.0000027509, 0.0000027485, 0.0000027454, + 0.0000027373, 0.0000027261, 0.0000027287, 0.0000027434, 0.0000027455, + 0.0000027357, 0.0000027204, 0.0000027095, 0.0000027143, 0.0000027233, + 0.0000027181, 0.0000027023, 0.0000026991, 0.0000027147, 0.0000027254, + 0.0000027281, 0.0000027465, 0.0000027637, 0.0000027654, 0.0000027589, + 0.0000027470, 0.0000027338, 0.0000027281, 0.0000027283, 0.0000027279, + 0.0000027270, 0.0000027272, 0.0000027247, 0.0000027173, 0.0000027134, + 0.0000027149, 0.0000027162, 0.0000027217, 0.0000027365, 0.0000027397, + 0.0000027390, 0.0000027394, 0.0000027374, 0.0000027253, 0.0000027229, + 0.0000027317, 0.0000027319, 0.0000027254, 0.0000027191, 0.0000027066, + 0.0000026939, 0.0000026877, 0.0000026854, 0.0000026862, 0.0000026928, + 0.0000027133, 0.0000027311, 0.0000027398, 0.0000027419, 0.0000027372, + 0.0000027267, 0.0000027150, 0.0000027124, 0.0000027175, 0.0000027212, + 0.0000027212, 0.0000027155, 0.0000027075, 0.0000027007, 0.0000026966, + 0.0000026956, 0.0000026974, 0.0000026996, 0.0000027002, 0.0000027024, + 0.0000027064, 0.0000027093, 0.0000027108, 0.0000027108, 0.0000027112, + 0.0000027130, 0.0000027169, 0.0000027216, 0.0000027273, 0.0000027332, + 0.0000027358, 0.0000027380, 0.0000027423, 0.0000027418, 0.0000027354, + 0.0000027373, 0.0000027443, 0.0000027445, 0.0000027397, 0.0000027331, + 0.0000027242, 0.0000027147, 0.0000027065, 0.0000026989, 0.0000026910, + 0.0000026838, 0.0000026796, 0.0000026767, 0.0000026731, 0.0000026698, + 0.0000026691, 0.0000026733, 0.0000026815, 0.0000026914, 0.0000026987, + 0.0000026993, 0.0000026964, 0.0000026925, 0.0000026885, 0.0000026850, + 0.0000026827, 0.0000026803, 0.0000026765, 0.0000026774, 0.0000026874, + 0.0000026995, 0.0000027128, 0.0000027230, 0.0000027171, 0.0000026990, + 0.0000026786, 0.0000026643, 0.0000026573, 0.0000026553, 0.0000026510, + 0.0000026425, 0.0000026353, 0.0000026306, 0.0000026265, 0.0000026246, + 0.0000026280, 0.0000026356, 0.0000026416, 0.0000026469, 0.0000026545, + 0.0000026637, 0.0000026686, 0.0000026696, 0.0000026690, 0.0000026661, + 0.0000026624, 0.0000026596, 0.0000026578, 0.0000026565, 0.0000026548, + 0.0000026534, 0.0000026527, 0.0000026585, 0.0000026695, 0.0000026825, + 0.0000026888, 0.0000026877, 0.0000026830, 0.0000026776, 0.0000026744, + 0.0000026726, 0.0000026728, 0.0000026763, 0.0000026813, 0.0000026823, + 0.0000026737, 0.0000026563, 0.0000026394, 0.0000026294, 0.0000026259, + 0.0000026260, 0.0000026274, 0.0000026290, 0.0000026308, 0.0000026326, + 0.0000026342, 0.0000026356, 0.0000026376, 0.0000026419, 0.0000026500, + 0.0000026625, 0.0000026778, 0.0000026924, 0.0000027028, 0.0000027067, + 0.0000027052, 0.0000026997, 0.0000026919, 0.0000026827, 0.0000026817, + 0.0000027011, 0.0000027309, 0.0000027404, 0.0000027203, 0.0000026879, + 0.0000026758, 0.0000026831, 0.0000026956, 0.0000027026, 0.0000027059, + 0.0000027081, 0.0000027108, 0.0000027145, 0.0000027191, 0.0000027245, + 0.0000027316, 0.0000027390, 0.0000027416, 0.0000027398, 0.0000027347, + 0.0000027311, 0.0000027328, 0.0000027386, 0.0000027443, 0.0000027472, + 0.0000027484, 0.0000027499, 0.0000027531, 0.0000027569, 0.0000027589, + 0.0000027593, 0.0000027601, 0.0000027623, 0.0000027654, 0.0000027682, + 0.0000027689, 0.0000027657, 0.0000027597, 0.0000027537, 0.0000027490, + 0.0000027414, 0.0000027401, 0.0000027401, 0.0000027394, 0.0000027377, + 0.0000027354, 0.0000027333, 0.0000027334, 0.0000027372, 0.0000027430, + 0.0000027471, 0.0000027479, 0.0000027469, 0.0000027451, 0.0000027434, + 0.0000027389, 0.0000027300, 0.0000027303, 0.0000027447, 0.0000027499, + 0.0000027414, 0.0000027264, 0.0000027154, 0.0000027214, 0.0000027349, + 0.0000027344, 0.0000027217, 0.0000027012, 0.0000027000, 0.0000027174, + 0.0000027258, 0.0000027335, 0.0000027555, 0.0000027666, 0.0000027657, + 0.0000027566, 0.0000027418, 0.0000027307, 0.0000027294, 0.0000027304, + 0.0000027303, 0.0000027299, 0.0000027297, 0.0000027273, 0.0000027197, + 0.0000027137, 0.0000027132, 0.0000027151, 0.0000027214, 0.0000027363, + 0.0000027401, 0.0000027392, 0.0000027395, 0.0000027378, 0.0000027260, + 0.0000027224, 0.0000027317, 0.0000027314, 0.0000027251, 0.0000027178, + 0.0000027030, 0.0000026900, 0.0000026851, 0.0000026835, 0.0000026854, + 0.0000026935, 0.0000027132, 0.0000027297, 0.0000027393, 0.0000027442, + 0.0000027430, 0.0000027349, 0.0000027212, 0.0000027113, 0.0000027120, + 0.0000027177, 0.0000027220, 0.0000027244, 0.0000027201, 0.0000027122, + 0.0000027053, 0.0000027001, 0.0000026971, 0.0000026975, 0.0000026985, + 0.0000026999, 0.0000027034, 0.0000027078, 0.0000027115, 0.0000027136, + 0.0000027147, 0.0000027168, 0.0000027193, 0.0000027226, 0.0000027272, + 0.0000027346, 0.0000027422, 0.0000027433, 0.0000027400, 0.0000027408, + 0.0000027412, 0.0000027362, 0.0000027379, 0.0000027448, 0.0000027450, + 0.0000027404, 0.0000027320, 0.0000027225, 0.0000027141, 0.0000027076, + 0.0000027019, 0.0000026950, 0.0000026866, 0.0000026795, 0.0000026750, + 0.0000026716, 0.0000026674, 0.0000026624, 0.0000026602, 0.0000026635, + 0.0000026755, 0.0000026911, 0.0000026991, 0.0000026982, 0.0000026946, + 0.0000026895, 0.0000026853, 0.0000026824, 0.0000026790, 0.0000026755, + 0.0000026763, 0.0000026861, 0.0000026978, 0.0000027104, 0.0000027227, + 0.0000027212, 0.0000027075, 0.0000026868, 0.0000026674, 0.0000026575, + 0.0000026543, 0.0000026533, 0.0000026478, 0.0000026399, 0.0000026344, + 0.0000026317, 0.0000026313, 0.0000026347, 0.0000026430, 0.0000026515, + 0.0000026570, 0.0000026629, 0.0000026700, 0.0000026756, 0.0000026774, + 0.0000026766, 0.0000026737, 0.0000026700, 0.0000026668, 0.0000026652, + 0.0000026651, 0.0000026658, 0.0000026677, 0.0000026724, 0.0000026805, + 0.0000026881, 0.0000026908, 0.0000026885, 0.0000026825, 0.0000026762, + 0.0000026737, 0.0000026732, 0.0000026718, 0.0000026693, 0.0000026666, + 0.0000026665, 0.0000026708, 0.0000026779, 0.0000026806, 0.0000026735, + 0.0000026586, 0.0000026456, 0.0000026395, 0.0000026384, 0.0000026383, + 0.0000026382, 0.0000026382, 0.0000026388, 0.0000026393, 0.0000026394, + 0.0000026394, 0.0000026412, 0.0000026471, 0.0000026574, 0.0000026716, + 0.0000026864, 0.0000026982, 0.0000027051, 0.0000027065, 0.0000027043, + 0.0000026994, 0.0000026917, 0.0000026830, 0.0000026832, 0.0000027035, + 0.0000027327, 0.0000027418, 0.0000027262, 0.0000026966, 0.0000026808, + 0.0000026838, 0.0000026922, 0.0000026994, 0.0000027036, 0.0000027070, + 0.0000027109, 0.0000027153, 0.0000027186, 0.0000027205, 0.0000027226, + 0.0000027270, 0.0000027335, 0.0000027379, 0.0000027361, 0.0000027325, + 0.0000027319, 0.0000027363, 0.0000027437, 0.0000027496, 0.0000027520, + 0.0000027528, 0.0000027542, 0.0000027573, 0.0000027599, 0.0000027614, + 0.0000027628, 0.0000027652, 0.0000027686, 0.0000027713, 0.0000027709, + 0.0000027663, 0.0000027590, 0.0000027514, 0.0000027450, 0.0000027356, + 0.0000027347, 0.0000027369, 0.0000027390, 0.0000027394, 0.0000027376, + 0.0000027326, 0.0000027281, 0.0000027281, 0.0000027327, 0.0000027380, + 0.0000027407, 0.0000027413, 0.0000027411, 0.0000027417, 0.0000027407, + 0.0000027334, 0.0000027313, 0.0000027454, 0.0000027528, 0.0000027457, + 0.0000027310, 0.0000027200, 0.0000027268, 0.0000027419, 0.0000027425, + 0.0000027378, 0.0000027205, 0.0000027002, 0.0000027022, 0.0000027206, + 0.0000027274, 0.0000027418, 0.0000027636, 0.0000027694, 0.0000027654, + 0.0000027520, 0.0000027357, 0.0000027293, 0.0000027307, 0.0000027334, + 0.0000027345, 0.0000027344, 0.0000027335, 0.0000027303, 0.0000027229, + 0.0000027149, 0.0000027124, 0.0000027134, 0.0000027199, 0.0000027350, + 0.0000027399, 0.0000027388, 0.0000027387, 0.0000027374, 0.0000027267, + 0.0000027215, 0.0000027317, 0.0000027307, 0.0000027248, 0.0000027164, + 0.0000027000, 0.0000026876, 0.0000026828, 0.0000026820, 0.0000026860, + 0.0000026973, 0.0000027159, 0.0000027298, 0.0000027384, 0.0000027452, + 0.0000027464, 0.0000027407, 0.0000027287, 0.0000027154, 0.0000027090, + 0.0000027134, 0.0000027177, 0.0000027226, 0.0000027271, 0.0000027246, + 0.0000027176, 0.0000027098, 0.0000027029, 0.0000026984, 0.0000026979, + 0.0000026992, 0.0000027021, 0.0000027059, 0.0000027106, 0.0000027156, + 0.0000027189, 0.0000027216, 0.0000027243, 0.0000027262, 0.0000027284, + 0.0000027324, 0.0000027403, 0.0000027483, 0.0000027482, 0.0000027400, + 0.0000027376, 0.0000027395, 0.0000027358, 0.0000027374, 0.0000027443, + 0.0000027446, 0.0000027382, 0.0000027281, 0.0000027205, 0.0000027166, + 0.0000027141, 0.0000027104, 0.0000027035, 0.0000026922, 0.0000026797, + 0.0000026716, 0.0000026674, 0.0000026643, 0.0000026607, 0.0000026567, + 0.0000026539, 0.0000026597, 0.0000026768, 0.0000026945, 0.0000026986, + 0.0000026961, 0.0000026911, 0.0000026863, 0.0000026826, 0.0000026778, + 0.0000026743, 0.0000026756, 0.0000026853, 0.0000026961, 0.0000027083, + 0.0000027209, 0.0000027228, 0.0000027140, 0.0000026965, 0.0000026740, + 0.0000026598, 0.0000026544, 0.0000026547, 0.0000026531, 0.0000026459, + 0.0000026407, 0.0000026403, 0.0000026424, 0.0000026455, 0.0000026521, + 0.0000026620, 0.0000026707, 0.0000026780, 0.0000026864, 0.0000026945, + 0.0000026991, 0.0000027000, 0.0000026979, 0.0000026948, 0.0000026916, + 0.0000026897, 0.0000026902, 0.0000026925, 0.0000026955, 0.0000026980, + 0.0000026996, 0.0000026986, 0.0000026927, 0.0000026846, 0.0000026787, + 0.0000026759, 0.0000026766, 0.0000026792, 0.0000026805, 0.0000026792, + 0.0000026744, 0.0000026686, 0.0000026654, 0.0000026657, 0.0000026708, + 0.0000026779, 0.0000026800, 0.0000026740, 0.0000026633, 0.0000026540, + 0.0000026496, 0.0000026487, 0.0000026483, 0.0000026478, 0.0000026470, + 0.0000026456, 0.0000026437, 0.0000026426, 0.0000026429, 0.0000026468, + 0.0000026556, 0.0000026682, 0.0000026820, 0.0000026938, 0.0000027018, + 0.0000027053, 0.0000027051, 0.0000027038, 0.0000026994, 0.0000026909, + 0.0000026822, 0.0000026843, 0.0000027065, 0.0000027354, 0.0000027441, + 0.0000027329, 0.0000027091, 0.0000026923, 0.0000026897, 0.0000026928, + 0.0000026957, 0.0000026980, 0.0000027005, 0.0000027034, 0.0000027068, + 0.0000027105, 0.0000027141, 0.0000027165, 0.0000027173, 0.0000027195, + 0.0000027248, 0.0000027309, 0.0000027320, 0.0000027322, 0.0000027347, + 0.0000027410, 0.0000027479, 0.0000027520, 0.0000027549, 0.0000027572, + 0.0000027606, 0.0000027634, 0.0000027650, 0.0000027663, 0.0000027682, + 0.0000027706, 0.0000027715, 0.0000027694, 0.0000027640, 0.0000027562, + 0.0000027475, 0.0000027397, 0.0000027316, 0.0000027314, 0.0000027329, + 0.0000027352, 0.0000027372, 0.0000027365, 0.0000027321, 0.0000027259, + 0.0000027231, 0.0000027241, 0.0000027281, 0.0000027316, 0.0000027345, + 0.0000027370, 0.0000027405, 0.0000027410, 0.0000027349, 0.0000027327, + 0.0000027463, 0.0000027543, 0.0000027481, 0.0000027333, 0.0000027237, + 0.0000027313, 0.0000027461, 0.0000027476, 0.0000027468, 0.0000027386, + 0.0000027171, 0.0000026979, 0.0000027051, 0.0000027231, 0.0000027312, + 0.0000027525, 0.0000027704, 0.0000027714, 0.0000027631, 0.0000027448, + 0.0000027306, 0.0000027292, 0.0000027334, 0.0000027382, 0.0000027403, + 0.0000027402, 0.0000027389, 0.0000027347, 0.0000027272, 0.0000027179, + 0.0000027120, 0.0000027113, 0.0000027173, 0.0000027326, 0.0000027391, + 0.0000027383, 0.0000027376, 0.0000027363, 0.0000027265, 0.0000027200, + 0.0000027306, 0.0000027296, 0.0000027242, 0.0000027152, 0.0000026978, + 0.0000026870, 0.0000026819, 0.0000026817, 0.0000026877, 0.0000027037, + 0.0000027215, 0.0000027312, 0.0000027378, 0.0000027457, 0.0000027491, + 0.0000027449, 0.0000027346, 0.0000027218, 0.0000027103, 0.0000027092, + 0.0000027140, 0.0000027169, 0.0000027223, 0.0000027278, 0.0000027289, + 0.0000027232, 0.0000027143, 0.0000027061, 0.0000027009, 0.0000027002, + 0.0000027028, 0.0000027065, 0.0000027109, 0.0000027174, 0.0000027236, + 0.0000027277, 0.0000027313, 0.0000027337, 0.0000027347, 0.0000027347, + 0.0000027370, 0.0000027441, 0.0000027510, 0.0000027497, 0.0000027384, + 0.0000027337, 0.0000027370, 0.0000027349, 0.0000027369, 0.0000027437, + 0.0000027428, 0.0000027339, 0.0000027264, 0.0000027252, 0.0000027265, + 0.0000027259, 0.0000027217, 0.0000027134, 0.0000026999, 0.0000026844, + 0.0000026723, 0.0000026648, 0.0000026604, 0.0000026587, 0.0000026558, + 0.0000026519, 0.0000026508, 0.0000026617, 0.0000026836, 0.0000026970, + 0.0000026971, 0.0000026931, 0.0000026879, 0.0000026831, 0.0000026771, + 0.0000026731, 0.0000026748, 0.0000026842, 0.0000026941, 0.0000027059, + 0.0000027178, 0.0000027226, 0.0000027177, 0.0000027050, 0.0000026839, + 0.0000026656, 0.0000026567, 0.0000026563, 0.0000026575, 0.0000026524, + 0.0000026476, 0.0000026498, 0.0000026543, 0.0000026561, 0.0000026586, + 0.0000026664, 0.0000026767, 0.0000026850, 0.0000026932, 0.0000027022, + 0.0000027108, 0.0000027169, 0.0000027190, 0.0000027180, 0.0000027154, + 0.0000027127, 0.0000027116, 0.0000027124, 0.0000027124, 0.0000027108, + 0.0000027047, 0.0000026978, 0.0000026886, 0.0000026811, 0.0000026779, + 0.0000026779, 0.0000026801, 0.0000026834, 0.0000026865, 0.0000026876, + 0.0000026861, 0.0000026801, 0.0000026720, 0.0000026664, 0.0000026654, + 0.0000026677, 0.0000026739, 0.0000026796, 0.0000026810, 0.0000026767, + 0.0000026690, 0.0000026612, 0.0000026562, 0.0000026539, 0.0000026524, + 0.0000026501, 0.0000026470, 0.0000026442, 0.0000026432, 0.0000026447, + 0.0000026496, 0.0000026573, 0.0000026674, 0.0000026787, 0.0000026892, + 0.0000026973, 0.0000027025, 0.0000027047, 0.0000027052, 0.0000027044, + 0.0000026989, 0.0000026883, 0.0000026805, 0.0000026848, 0.0000027102, + 0.0000027386, 0.0000027469, 0.0000027410, 0.0000027257, 0.0000027117, + 0.0000027059, 0.0000027052, 0.0000027054, 0.0000027064, 0.0000027074, + 0.0000027076, 0.0000027076, 0.0000027058, 0.0000027035, 0.0000027040, + 0.0000027060, 0.0000027073, 0.0000027097, 0.0000027157, 0.0000027251, + 0.0000027322, 0.0000027350, 0.0000027377, 0.0000027425, 0.0000027482, + 0.0000027534, 0.0000027575, 0.0000027615, 0.0000027641, 0.0000027651, + 0.0000027659, 0.0000027668, 0.0000027678, 0.0000027671, 0.0000027634, + 0.0000027577, 0.0000027501, 0.0000027413, 0.0000027343, 0.0000027316, + 0.0000027310, 0.0000027286, 0.0000027272, 0.0000027283, 0.0000027290, + 0.0000027274, 0.0000027236, 0.0000027196, 0.0000027179, 0.0000027189, + 0.0000027223, 0.0000027274, 0.0000027328, 0.0000027383, 0.0000027406, + 0.0000027359, 0.0000027340, 0.0000027475, 0.0000027557, 0.0000027492, + 0.0000027346, 0.0000027271, 0.0000027363, 0.0000027468, 0.0000027470, + 0.0000027479, 0.0000027471, 0.0000027366, 0.0000027100, 0.0000026941, + 0.0000027103, 0.0000027253, 0.0000027383, 0.0000027629, 0.0000027739, + 0.0000027725, 0.0000027573, 0.0000027365, 0.0000027284, 0.0000027307, + 0.0000027382, 0.0000027451, 0.0000027480, 0.0000027480, 0.0000027464, + 0.0000027412, 0.0000027326, 0.0000027220, 0.0000027130, 0.0000027105, + 0.0000027140, 0.0000027289, 0.0000027377, 0.0000027379, 0.0000027362, + 0.0000027339, 0.0000027252, 0.0000027179, 0.0000027291, 0.0000027286, + 0.0000027233, 0.0000027146, 0.0000026963, 0.0000026867, 0.0000026819, + 0.0000026828, 0.0000026915, 0.0000027109, 0.0000027274, 0.0000027325, + 0.0000027378, 0.0000027464, 0.0000027510, 0.0000027480, 0.0000027389, + 0.0000027269, 0.0000027139, 0.0000027070, 0.0000027086, 0.0000027129, + 0.0000027144, 0.0000027198, 0.0000027290, 0.0000027324, 0.0000027274, + 0.0000027191, 0.0000027117, 0.0000027071, 0.0000027071, 0.0000027101, + 0.0000027144, 0.0000027209, 0.0000027283, 0.0000027338, 0.0000027381, + 0.0000027412, 0.0000027430, 0.0000027424, 0.0000027406, 0.0000027410, + 0.0000027457, 0.0000027510, 0.0000027491, 0.0000027357, 0.0000027296, + 0.0000027345, 0.0000027341, 0.0000027365, 0.0000027416, 0.0000027388, + 0.0000027320, 0.0000027319, 0.0000027363, 0.0000027374, 0.0000027339, + 0.0000027277, 0.0000027180, 0.0000027047, 0.0000026907, 0.0000026785, + 0.0000026686, 0.0000026618, 0.0000026575, 0.0000026540, 0.0000026506, + 0.0000026478, 0.0000026513, 0.0000026692, 0.0000026912, 0.0000026975, + 0.0000026950, 0.0000026897, 0.0000026839, 0.0000026770, 0.0000026724, + 0.0000026736, 0.0000026824, 0.0000026912, 0.0000027028, 0.0000027145, + 0.0000027209, 0.0000027193, 0.0000027104, 0.0000026940, 0.0000026748, + 0.0000026630, 0.0000026595, 0.0000026608, 0.0000026579, 0.0000026550, + 0.0000026590, 0.0000026649, 0.0000026648, 0.0000026629, 0.0000026663, + 0.0000026746, 0.0000026822, 0.0000026867, 0.0000026925, 0.0000027004, + 0.0000027093, 0.0000027158, 0.0000027180, 0.0000027175, 0.0000027152, + 0.0000027124, 0.0000027111, 0.0000027100, 0.0000027062, 0.0000027000, + 0.0000026919, 0.0000026846, 0.0000026803, 0.0000026791, 0.0000026802, + 0.0000026827, 0.0000026861, 0.0000026899, 0.0000026928, 0.0000026931, + 0.0000026897, 0.0000026819, 0.0000026728, 0.0000026671, 0.0000026661, + 0.0000026679, 0.0000026729, 0.0000026786, 0.0000026822, 0.0000026825, + 0.0000026789, 0.0000026710, 0.0000026627, 0.0000026571, 0.0000026535, + 0.0000026500, 0.0000026467, 0.0000026449, 0.0000026458, 0.0000026494, + 0.0000026549, 0.0000026610, 0.0000026676, 0.0000026751, 0.0000026835, + 0.0000026913, 0.0000026974, 0.0000027019, 0.0000027053, 0.0000027063, + 0.0000027050, 0.0000026966, 0.0000026843, 0.0000026783, 0.0000026865, + 0.0000027147, 0.0000027415, 0.0000027489, 0.0000027482, 0.0000027429, + 0.0000027367, 0.0000027336, 0.0000027333, 0.0000027343, 0.0000027359, + 0.0000027367, 0.0000027360, 0.0000027324, 0.0000027237, 0.0000027108, + 0.0000026996, 0.0000026930, 0.0000026936, 0.0000026963, 0.0000027012, + 0.0000027111, 0.0000027237, 0.0000027325, 0.0000027361, 0.0000027388, + 0.0000027431, 0.0000027483, 0.0000027538, 0.0000027580, 0.0000027601, + 0.0000027604, 0.0000027607, 0.0000027614, 0.0000027613, 0.0000027591, + 0.0000027545, 0.0000027482, 0.0000027404, 0.0000027338, 0.0000027315, + 0.0000027316, 0.0000027271, 0.0000027189, 0.0000027133, 0.0000027128, + 0.0000027151, 0.0000027166, 0.0000027160, 0.0000027145, 0.0000027125, + 0.0000027122, 0.0000027152, 0.0000027214, 0.0000027286, 0.0000027357, + 0.0000027395, 0.0000027357, 0.0000027359, 0.0000027504, 0.0000027580, + 0.0000027504, 0.0000027366, 0.0000027333, 0.0000027441, 0.0000027471, + 0.0000027438, 0.0000027446, 0.0000027469, 0.0000027462, 0.0000027309, + 0.0000027010, 0.0000026953, 0.0000027163, 0.0000027289, 0.0000027487, + 0.0000027721, 0.0000027778, 0.0000027702, 0.0000027481, 0.0000027300, + 0.0000027284, 0.0000027349, 0.0000027459, 0.0000027551, 0.0000027583, + 0.0000027577, 0.0000027546, 0.0000027481, 0.0000027383, 0.0000027267, + 0.0000027157, 0.0000027101, 0.0000027109, 0.0000027244, 0.0000027358, + 0.0000027368, 0.0000027346, 0.0000027310, 0.0000027231, 0.0000027153, + 0.0000027272, 0.0000027286, 0.0000027224, 0.0000027143, 0.0000026964, + 0.0000026866, 0.0000026814, 0.0000026843, 0.0000026966, 0.0000027175, + 0.0000027310, 0.0000027331, 0.0000027386, 0.0000027481, 0.0000027522, + 0.0000027497, 0.0000027415, 0.0000027296, 0.0000027170, 0.0000027081, + 0.0000027042, 0.0000027059, 0.0000027097, 0.0000027112, 0.0000027173, + 0.0000027270, 0.0000027307, 0.0000027274, 0.0000027224, 0.0000027175, + 0.0000027150, 0.0000027156, 0.0000027194, 0.0000027252, 0.0000027320, + 0.0000027378, 0.0000027419, 0.0000027452, 0.0000027479, 0.0000027484, + 0.0000027467, 0.0000027444, 0.0000027430, 0.0000027451, 0.0000027501, + 0.0000027476, 0.0000027324, 0.0000027268, 0.0000027329, 0.0000027329, + 0.0000027350, 0.0000027388, 0.0000027363, 0.0000027357, 0.0000027427, + 0.0000027458, 0.0000027419, 0.0000027356, 0.0000027295, 0.0000027200, + 0.0000027080, 0.0000026970, 0.0000026868, 0.0000026773, 0.0000026690, + 0.0000026612, 0.0000026540, 0.0000026492, 0.0000026469, 0.0000026465, + 0.0000026566, 0.0000026818, 0.0000026976, 0.0000026965, 0.0000026913, + 0.0000026849, 0.0000026773, 0.0000026714, 0.0000026721, 0.0000026798, + 0.0000026875, 0.0000026982, 0.0000027105, 0.0000027186, 0.0000027195, + 0.0000027133, 0.0000027015, 0.0000026848, 0.0000026715, 0.0000026641, + 0.0000026636, 0.0000026622, 0.0000026620, 0.0000026684, 0.0000026737, + 0.0000026726, 0.0000026676, 0.0000026661, 0.0000026694, 0.0000026722, + 0.0000026714, 0.0000026720, 0.0000026769, 0.0000026856, 0.0000026942, + 0.0000026995, 0.0000027014, 0.0000027016, 0.0000027000, 0.0000026983, + 0.0000026974, 0.0000026958, 0.0000026923, 0.0000026880, 0.0000026844, + 0.0000026821, 0.0000026822, 0.0000026839, 0.0000026863, 0.0000026892, + 0.0000026930, 0.0000026965, 0.0000026974, 0.0000026952, 0.0000026893, + 0.0000026809, 0.0000026726, 0.0000026679, 0.0000026676, 0.0000026704, + 0.0000026749, 0.0000026794, 0.0000026828, 0.0000026843, 0.0000026824, + 0.0000026749, 0.0000026653, 0.0000026579, 0.0000026529, 0.0000026497, + 0.0000026491, 0.0000026506, 0.0000026537, 0.0000026571, 0.0000026603, + 0.0000026634, 0.0000026668, 0.0000026708, 0.0000026766, 0.0000026840, + 0.0000026910, 0.0000026974, 0.0000027036, 0.0000027074, 0.0000027081, + 0.0000027037, 0.0000026916, 0.0000026795, 0.0000026766, 0.0000026889, + 0.0000027183, 0.0000027434, 0.0000027517, 0.0000027526, 0.0000027530, + 0.0000027530, 0.0000027527, 0.0000027518, 0.0000027503, 0.0000027484, + 0.0000027465, 0.0000027458, 0.0000027452, 0.0000027412, 0.0000027314, + 0.0000027150, 0.0000026968, 0.0000026858, 0.0000026845, 0.0000026907, + 0.0000026997, 0.0000027098, 0.0000027204, 0.0000027292, 0.0000027353, + 0.0000027393, 0.0000027425, 0.0000027475, 0.0000027516, 0.0000027537, + 0.0000027545, 0.0000027550, 0.0000027542, 0.0000027511, 0.0000027463, + 0.0000027404, 0.0000027345, 0.0000027312, 0.0000027314, 0.0000027326, + 0.0000027200, 0.0000027109, 0.0000027029, 0.0000026988, 0.0000026988, + 0.0000027019, 0.0000027048, 0.0000027065, 0.0000027068, 0.0000027065, + 0.0000027073, 0.0000027107, 0.0000027172, 0.0000027261, 0.0000027346, + 0.0000027380, 0.0000027352, 0.0000027388, 0.0000027560, 0.0000027616, + 0.0000027522, 0.0000027418, 0.0000027445, 0.0000027539, 0.0000027493, + 0.0000027437, 0.0000027438, 0.0000027448, 0.0000027451, 0.0000027430, + 0.0000027219, 0.0000026942, 0.0000026990, 0.0000027218, 0.0000027350, + 0.0000027609, 0.0000027796, 0.0000027799, 0.0000027634, 0.0000027384, + 0.0000027280, 0.0000027308, 0.0000027422, 0.0000027573, 0.0000027673, + 0.0000027689, 0.0000027650, 0.0000027589, 0.0000027514, 0.0000027421, + 0.0000027309, 0.0000027191, 0.0000027099, 0.0000027086, 0.0000027200, + 0.0000027326, 0.0000027345, 0.0000027327, 0.0000027280, 0.0000027206, + 0.0000027130, 0.0000027250, 0.0000027295, 0.0000027220, 0.0000027147, + 0.0000026983, 0.0000026876, 0.0000026814, 0.0000026864, 0.0000027018, + 0.0000027228, 0.0000027321, 0.0000027338, 0.0000027409, 0.0000027501, + 0.0000027528, 0.0000027505, 0.0000027430, 0.0000027317, 0.0000027193, + 0.0000027099, 0.0000027032, 0.0000026994, 0.0000027016, 0.0000027060, + 0.0000027092, 0.0000027148, 0.0000027208, 0.0000027239, 0.0000027237, + 0.0000027214, 0.0000027197, 0.0000027193, 0.0000027220, 0.0000027273, + 0.0000027333, 0.0000027390, 0.0000027425, 0.0000027456, 0.0000027492, + 0.0000027513, 0.0000027504, 0.0000027479, 0.0000027453, 0.0000027426, + 0.0000027440, 0.0000027493, 0.0000027453, 0.0000027295, 0.0000027250, + 0.0000027306, 0.0000027308, 0.0000027330, 0.0000027366, 0.0000027371, + 0.0000027433, 0.0000027515, 0.0000027498, 0.0000027418, 0.0000027367, + 0.0000027334, 0.0000027263, 0.0000027163, 0.0000027062, 0.0000026960, + 0.0000026861, 0.0000026771, 0.0000026683, 0.0000026586, 0.0000026503, + 0.0000026464, 0.0000026449, 0.0000026489, 0.0000026718, 0.0000026968, + 0.0000026982, 0.0000026929, 0.0000026862, 0.0000026780, 0.0000026707, + 0.0000026705, 0.0000026769, 0.0000026837, 0.0000026926, 0.0000027051, + 0.0000027147, 0.0000027184, 0.0000027148, 0.0000027056, 0.0000026929, + 0.0000026803, 0.0000026693, 0.0000026656, 0.0000026651, 0.0000026684, + 0.0000026774, 0.0000026822, 0.0000026799, 0.0000026735, 0.0000026682, + 0.0000026643, 0.0000026603, 0.0000026556, 0.0000026537, 0.0000026576, + 0.0000026662, 0.0000026761, 0.0000026838, 0.0000026876, 0.0000026893, + 0.0000026903, 0.0000026911, 0.0000026916, 0.0000026919, 0.0000026916, + 0.0000026894, 0.0000026878, 0.0000026867, 0.0000026867, 0.0000026881, + 0.0000026903, 0.0000026931, 0.0000026965, 0.0000026991, 0.0000026994, + 0.0000026974, 0.0000026937, 0.0000026880, 0.0000026806, 0.0000026738, + 0.0000026702, 0.0000026705, 0.0000026740, 0.0000026784, 0.0000026821, + 0.0000026841, 0.0000026844, 0.0000026810, 0.0000026731, 0.0000026640, + 0.0000026568, 0.0000026533, 0.0000026538, 0.0000026569, 0.0000026602, + 0.0000026622, 0.0000026631, 0.0000026632, 0.0000026637, 0.0000026650, + 0.0000026668, 0.0000026700, 0.0000026764, 0.0000026847, 0.0000026930, + 0.0000027015, 0.0000027076, 0.0000027097, 0.0000027084, 0.0000026992, + 0.0000026849, 0.0000026752, 0.0000026756, 0.0000026907, 0.0000027201, + 0.0000027442, 0.0000027522, 0.0000027531, 0.0000027533, 0.0000027533, + 0.0000027515, 0.0000027478, 0.0000027426, 0.0000027374, 0.0000027344, + 0.0000027345, 0.0000027365, 0.0000027381, 0.0000027359, 0.0000027292, + 0.0000027146, 0.0000026955, 0.0000026844, 0.0000026829, 0.0000026897, + 0.0000026989, 0.0000027069, 0.0000027150, 0.0000027231, 0.0000027295, + 0.0000027345, 0.0000027399, 0.0000027437, 0.0000027456, 0.0000027462, + 0.0000027450, 0.0000027406, 0.0000027339, 0.0000027286, 0.0000027268, + 0.0000027281, 0.0000027306, 0.0000027306, 0.0000027277, 0.0000027053, + 0.0000027007, 0.0000026979, 0.0000026964, 0.0000026965, 0.0000026981, + 0.0000027014, 0.0000027033, 0.0000027038, 0.0000027041, 0.0000027054, + 0.0000027096, 0.0000027163, 0.0000027263, 0.0000027353, 0.0000027367, + 0.0000027340, 0.0000027440, 0.0000027622, 0.0000027637, 0.0000027541, + 0.0000027496, 0.0000027583, 0.0000027638, 0.0000027528, 0.0000027466, + 0.0000027488, 0.0000027481, 0.0000027438, 0.0000027423, 0.0000027377, + 0.0000027115, 0.0000026900, 0.0000027066, 0.0000027271, 0.0000027450, + 0.0000027721, 0.0000027832, 0.0000027782, 0.0000027537, 0.0000027318, + 0.0000027288, 0.0000027363, 0.0000027533, 0.0000027710, 0.0000027772, + 0.0000027738, 0.0000027651, 0.0000027570, 0.0000027496, 0.0000027419, + 0.0000027336, 0.0000027227, 0.0000027120, 0.0000027081, 0.0000027162, + 0.0000027289, 0.0000027311, 0.0000027302, 0.0000027252, 0.0000027184, + 0.0000027114, 0.0000027221, 0.0000027308, 0.0000027225, 0.0000027161, + 0.0000027012, 0.0000026897, 0.0000026821, 0.0000026886, 0.0000027062, + 0.0000027267, 0.0000027335, 0.0000027348, 0.0000027436, 0.0000027524, + 0.0000027535, 0.0000027504, 0.0000027432, 0.0000027338, 0.0000027219, + 0.0000027111, 0.0000027038, 0.0000026971, 0.0000026925, 0.0000026955, + 0.0000027012, 0.0000027067, 0.0000027118, 0.0000027156, 0.0000027181, + 0.0000027189, 0.0000027190, 0.0000027196, 0.0000027219, 0.0000027270, + 0.0000027332, 0.0000027390, 0.0000027427, 0.0000027450, 0.0000027494, + 0.0000027535, 0.0000027541, 0.0000027511, 0.0000027474, 0.0000027437, + 0.0000027409, 0.0000027432, 0.0000027486, 0.0000027431, 0.0000027271, + 0.0000027224, 0.0000027274, 0.0000027285, 0.0000027317, 0.0000027363, + 0.0000027398, 0.0000027496, 0.0000027551, 0.0000027497, 0.0000027418, + 0.0000027399, 0.0000027398, 0.0000027368, 0.0000027295, 0.0000027191, + 0.0000027073, 0.0000026952, 0.0000026839, 0.0000026745, 0.0000026654, + 0.0000026553, 0.0000026471, 0.0000026444, 0.0000026460, 0.0000026641, + 0.0000026940, 0.0000027000, 0.0000026948, 0.0000026882, 0.0000026798, + 0.0000026709, 0.0000026694, 0.0000026748, 0.0000026813, 0.0000026883, + 0.0000026991, 0.0000027098, 0.0000027163, 0.0000027152, 0.0000027076, + 0.0000026976, 0.0000026870, 0.0000026743, 0.0000026666, 0.0000026668, + 0.0000026739, 0.0000026855, 0.0000026901, 0.0000026872, 0.0000026806, + 0.0000026725, 0.0000026618, 0.0000026518, 0.0000026452, 0.0000026439, + 0.0000026498, 0.0000026585, 0.0000026684, 0.0000026777, 0.0000026833, + 0.0000026859, 0.0000026879, 0.0000026901, 0.0000026928, 0.0000026947, + 0.0000026954, 0.0000026953, 0.0000026943, 0.0000026929, 0.0000026919, + 0.0000026920, 0.0000026936, 0.0000026965, 0.0000027000, 0.0000027020, + 0.0000027007, 0.0000026976, 0.0000026949, 0.0000026923, 0.0000026877, + 0.0000026815, 0.0000026760, 0.0000026731, 0.0000026736, 0.0000026771, + 0.0000026813, 0.0000026841, 0.0000026843, 0.0000026813, 0.0000026751, + 0.0000026682, 0.0000026630, 0.0000026606, 0.0000026616, 0.0000026642, + 0.0000026663, 0.0000026671, 0.0000026667, 0.0000026657, 0.0000026642, + 0.0000026631, 0.0000026628, 0.0000026634, 0.0000026648, 0.0000026695, + 0.0000026784, 0.0000026891, 0.0000027000, 0.0000027086, 0.0000027126, + 0.0000027122, 0.0000027060, 0.0000026927, 0.0000026791, 0.0000026727, + 0.0000026750, 0.0000026914, 0.0000027187, 0.0000027407, 0.0000027490, + 0.0000027492, 0.0000027466, 0.0000027420, 0.0000027343, 0.0000027230, + 0.0000027101, 0.0000026998, 0.0000026954, 0.0000026961, 0.0000027006, + 0.0000027089, 0.0000027189, 0.0000027250, 0.0000027225, 0.0000027134, + 0.0000026984, 0.0000026855, 0.0000026829, 0.0000026888, 0.0000026982, + 0.0000027058, 0.0000027112, 0.0000027159, 0.0000027208, 0.0000027256, + 0.0000027288, 0.0000027305, 0.0000027312, 0.0000027297, 0.0000027264, + 0.0000027238, 0.0000027241, 0.0000027259, 0.0000027261, 0.0000027233, + 0.0000027175, 0.0000027112, 0.0000027133, 0.0000027125, 0.0000027118, + 0.0000027115, 0.0000027103, 0.0000027089, 0.0000027089, 0.0000027087, + 0.0000027079, 0.0000027066, 0.0000027071, 0.0000027114, 0.0000027191, + 0.0000027292, 0.0000027362, 0.0000027349, 0.0000027340, 0.0000027509, + 0.0000027657, 0.0000027636, 0.0000027557, 0.0000027593, 0.0000027721, + 0.0000027698, 0.0000027580, 0.0000027529, 0.0000027567, 0.0000027586, + 0.0000027519, 0.0000027415, 0.0000027401, 0.0000027308, 0.0000026998, + 0.0000026909, 0.0000027160, 0.0000027336, 0.0000027576, 0.0000027818, + 0.0000027862, 0.0000027723, 0.0000027435, 0.0000027300, 0.0000027320, + 0.0000027450, 0.0000027673, 0.0000027820, 0.0000027815, 0.0000027714, + 0.0000027601, 0.0000027519, 0.0000027449, 0.0000027394, 0.0000027341, + 0.0000027255, 0.0000027146, 0.0000027080, 0.0000027133, 0.0000027252, + 0.0000027272, 0.0000027270, 0.0000027225, 0.0000027170, 0.0000027104, + 0.0000027188, 0.0000027316, 0.0000027233, 0.0000027178, 0.0000027045, + 0.0000026930, 0.0000026841, 0.0000026894, 0.0000027083, 0.0000027290, + 0.0000027351, 0.0000027366, 0.0000027459, 0.0000027547, 0.0000027551, + 0.0000027509, 0.0000027429, 0.0000027339, 0.0000027235, 0.0000027120, + 0.0000027045, 0.0000026982, 0.0000026904, 0.0000026872, 0.0000026896, + 0.0000026950, 0.0000027022, 0.0000027074, 0.0000027114, 0.0000027138, + 0.0000027160, 0.0000027182, 0.0000027219, 0.0000027273, 0.0000027336, + 0.0000027399, 0.0000027439, 0.0000027455, 0.0000027489, 0.0000027542, + 0.0000027568, 0.0000027554, 0.0000027512, 0.0000027463, 0.0000027405, + 0.0000027388, 0.0000027429, 0.0000027478, 0.0000027412, 0.0000027242, + 0.0000027188, 0.0000027235, 0.0000027266, 0.0000027310, 0.0000027360, + 0.0000027420, 0.0000027524, 0.0000027558, 0.0000027491, 0.0000027426, + 0.0000027428, 0.0000027458, 0.0000027474, 0.0000027433, 0.0000027330, + 0.0000027198, 0.0000027059, 0.0000026916, 0.0000026797, 0.0000026702, + 0.0000026606, 0.0000026504, 0.0000026449, 0.0000026461, 0.0000026606, + 0.0000026907, 0.0000027018, 0.0000026972, 0.0000026909, 0.0000026822, + 0.0000026717, 0.0000026689, 0.0000026734, 0.0000026806, 0.0000026868, + 0.0000026944, 0.0000027039, 0.0000027125, 0.0000027145, 0.0000027083, + 0.0000026995, 0.0000026909, 0.0000026784, 0.0000026673, 0.0000026677, + 0.0000026782, 0.0000026920, 0.0000026966, 0.0000026938, 0.0000026881, + 0.0000026792, 0.0000026631, 0.0000026474, 0.0000026413, 0.0000026418, + 0.0000026479, 0.0000026571, 0.0000026660, 0.0000026748, 0.0000026810, + 0.0000026841, 0.0000026865, 0.0000026895, 0.0000026935, 0.0000026974, + 0.0000027003, 0.0000027016, 0.0000027013, 0.0000026997, 0.0000026973, + 0.0000026958, 0.0000026962, 0.0000026991, 0.0000027028, 0.0000027041, + 0.0000027017, 0.0000026972, 0.0000026943, 0.0000026934, 0.0000026916, + 0.0000026873, 0.0000026819, 0.0000026775, 0.0000026754, 0.0000026761, + 0.0000026794, 0.0000026829, 0.0000026841, 0.0000026819, 0.0000026756, + 0.0000026696, 0.0000026673, 0.0000026686, 0.0000026713, 0.0000026725, + 0.0000026717, 0.0000026701, 0.0000026691, 0.0000026679, 0.0000026660, + 0.0000026636, 0.0000026619, 0.0000026615, 0.0000026615, 0.0000026619, + 0.0000026653, 0.0000026739, 0.0000026860, 0.0000026993, 0.0000027102, + 0.0000027156, 0.0000027160, 0.0000027113, 0.0000026999, 0.0000026858, + 0.0000026750, 0.0000026720, 0.0000026761, 0.0000026908, 0.0000027115, + 0.0000027274, 0.0000027325, 0.0000027304, 0.0000027216, 0.0000027081, + 0.0000026921, 0.0000026774, 0.0000026678, 0.0000026641, 0.0000026643, + 0.0000026660, 0.0000026689, 0.0000026745, 0.0000026852, 0.0000027003, + 0.0000027143, 0.0000027181, 0.0000027136, 0.0000027014, 0.0000026899, + 0.0000026876, 0.0000026905, 0.0000026985, 0.0000027060, 0.0000027113, + 0.0000027154, 0.0000027186, 0.0000027216, 0.0000027242, 0.0000027259, + 0.0000027262, 0.0000027244, 0.0000027214, 0.0000027184, 0.0000027157, + 0.0000027134, 0.0000027124, 0.0000027135, 0.0000027128, 0.0000027243, + 0.0000027226, 0.0000027214, 0.0000027211, 0.0000027223, 0.0000027230, + 0.0000027224, 0.0000027200, 0.0000027167, 0.0000027140, 0.0000027135, + 0.0000027164, 0.0000027238, 0.0000027334, 0.0000027372, 0.0000027337, + 0.0000027380, 0.0000027576, 0.0000027668, 0.0000027621, 0.0000027590, + 0.0000027691, 0.0000027783, 0.0000027708, 0.0000027617, 0.0000027597, + 0.0000027648, 0.0000027707, 0.0000027674, 0.0000027532, 0.0000027401, + 0.0000027377, 0.0000027217, 0.0000026927, 0.0000026966, 0.0000027243, + 0.0000027421, 0.0000027706, 0.0000027887, 0.0000027871, 0.0000027636, + 0.0000027363, 0.0000027309, 0.0000027373, 0.0000027561, 0.0000027786, + 0.0000027856, 0.0000027789, 0.0000027654, 0.0000027556, 0.0000027488, + 0.0000027417, 0.0000027370, 0.0000027332, 0.0000027271, 0.0000027170, + 0.0000027089, 0.0000027122, 0.0000027219, 0.0000027229, 0.0000027230, + 0.0000027200, 0.0000027160, 0.0000027099, 0.0000027150, 0.0000027323, + 0.0000027252, 0.0000027198, 0.0000027086, 0.0000026960, 0.0000026859, + 0.0000026886, 0.0000027075, 0.0000027294, 0.0000027366, 0.0000027378, + 0.0000027463, 0.0000027547, 0.0000027563, 0.0000027529, 0.0000027445, + 0.0000027344, 0.0000027242, 0.0000027132, 0.0000027047, 0.0000026981, + 0.0000026909, 0.0000026855, 0.0000026846, 0.0000026866, 0.0000026922, + 0.0000026975, 0.0000027016, 0.0000027051, 0.0000027092, 0.0000027137, + 0.0000027194, 0.0000027260, 0.0000027329, 0.0000027398, 0.0000027446, + 0.0000027459, 0.0000027472, 0.0000027517, 0.0000027560, 0.0000027563, + 0.0000027540, 0.0000027505, 0.0000027436, 0.0000027373, 0.0000027378, + 0.0000027428, 0.0000027469, 0.0000027385, 0.0000027208, 0.0000027146, + 0.0000027188, 0.0000027239, 0.0000027284, 0.0000027328, 0.0000027412, + 0.0000027529, 0.0000027555, 0.0000027488, 0.0000027429, 0.0000027437, + 0.0000027497, 0.0000027556, 0.0000027547, 0.0000027457, 0.0000027322, + 0.0000027173, 0.0000027020, 0.0000026872, 0.0000026743, 0.0000026640, + 0.0000026549, 0.0000026479, 0.0000026486, 0.0000026612, 0.0000026882, + 0.0000027030, 0.0000026996, 0.0000026934, 0.0000026843, 0.0000026727, + 0.0000026694, 0.0000026734, 0.0000026814, 0.0000026876, 0.0000026923, + 0.0000026986, 0.0000027074, 0.0000027123, 0.0000027083, 0.0000026999, + 0.0000026922, 0.0000026814, 0.0000026690, 0.0000026685, 0.0000026813, + 0.0000026965, 0.0000027011, 0.0000026986, 0.0000026943, 0.0000026869, + 0.0000026686, 0.0000026476, 0.0000026407, 0.0000026422, 0.0000026501, + 0.0000026604, 0.0000026678, 0.0000026738, 0.0000026800, 0.0000026836, + 0.0000026855, 0.0000026880, 0.0000026921, 0.0000026975, 0.0000027028, + 0.0000027067, 0.0000027077, 0.0000027059, 0.0000027021, 0.0000026988, + 0.0000026982, 0.0000027011, 0.0000027053, 0.0000027065, 0.0000027026, + 0.0000026964, 0.0000026925, 0.0000026920, 0.0000026918, 0.0000026898, + 0.0000026860, 0.0000026819, 0.0000026785, 0.0000026772, 0.0000026781, + 0.0000026805, 0.0000026816, 0.0000026808, 0.0000026774, 0.0000026735, + 0.0000026724, 0.0000026750, 0.0000026792, 0.0000026806, 0.0000026776, + 0.0000026732, 0.0000026698, 0.0000026681, 0.0000026668, 0.0000026650, + 0.0000026630, 0.0000026621, 0.0000026625, 0.0000026627, 0.0000026627, + 0.0000026648, 0.0000026721, 0.0000026842, 0.0000026985, 0.0000027107, + 0.0000027173, 0.0000027188, 0.0000027159, 0.0000027068, 0.0000026936, + 0.0000026809, 0.0000026737, 0.0000026732, 0.0000026780, 0.0000026876, + 0.0000026984, 0.0000027044, 0.0000027030, 0.0000026944, 0.0000026819, + 0.0000026701, 0.0000026620, 0.0000026590, 0.0000026593, 0.0000026599, + 0.0000026598, 0.0000026602, 0.0000026608, 0.0000026609, 0.0000026636, + 0.0000026721, 0.0000026877, 0.0000027049, 0.0000027131, 0.0000027140, + 0.0000027079, 0.0000027004, 0.0000026955, 0.0000026971, 0.0000027006, + 0.0000027056, 0.0000027106, 0.0000027141, 0.0000027173, 0.0000027190, + 0.0000027191, 0.0000027176, 0.0000027148, 0.0000027125, 0.0000027125, + 0.0000027149, 0.0000027195, 0.0000027233, 0.0000027253, 0.0000027253, + 0.0000027214, 0.0000027193, 0.0000027175, 0.0000027164, 0.0000027175, + 0.0000027223, 0.0000027267, 0.0000027285, 0.0000027261, 0.0000027228, + 0.0000027216, 0.0000027239, 0.0000027313, 0.0000027366, 0.0000027345, + 0.0000027326, 0.0000027460, 0.0000027628, 0.0000027653, 0.0000027588, + 0.0000027619, 0.0000027751, 0.0000027764, 0.0000027654, 0.0000027611, + 0.0000027625, 0.0000027689, 0.0000027790, 0.0000027816, 0.0000027723, + 0.0000027511, 0.0000027382, 0.0000027341, 0.0000027121, 0.0000026886, + 0.0000027055, 0.0000027316, 0.0000027534, 0.0000027817, 0.0000027930, + 0.0000027847, 0.0000027542, 0.0000027327, 0.0000027332, 0.0000027440, + 0.0000027658, 0.0000027839, 0.0000027851, 0.0000027732, 0.0000027609, + 0.0000027550, 0.0000027496, 0.0000027419, 0.0000027363, 0.0000027325, + 0.0000027279, 0.0000027196, 0.0000027113, 0.0000027123, 0.0000027191, + 0.0000027183, 0.0000027182, 0.0000027179, 0.0000027149, 0.0000027092, + 0.0000027115, 0.0000027326, 0.0000027279, 0.0000027231, 0.0000027133, + 0.0000026992, 0.0000026875, 0.0000026868, 0.0000027037, 0.0000027279, + 0.0000027377, 0.0000027384, 0.0000027459, 0.0000027534, 0.0000027563, + 0.0000027542, 0.0000027480, 0.0000027378, 0.0000027264, 0.0000027154, + 0.0000027058, 0.0000026967, 0.0000026891, 0.0000026843, 0.0000026840, + 0.0000026863, 0.0000026898, 0.0000026937, 0.0000026962, 0.0000026983, + 0.0000027021, 0.0000027066, 0.0000027127, 0.0000027204, 0.0000027278, + 0.0000027357, 0.0000027422, 0.0000027443, 0.0000027437, 0.0000027461, + 0.0000027508, 0.0000027524, 0.0000027518, 0.0000027510, 0.0000027478, + 0.0000027404, 0.0000027361, 0.0000027376, 0.0000027429, 0.0000027455, + 0.0000027350, 0.0000027175, 0.0000027102, 0.0000027135, 0.0000027187, + 0.0000027216, 0.0000027250, 0.0000027354, 0.0000027495, 0.0000027544, + 0.0000027491, 0.0000027429, 0.0000027434, 0.0000027512, 0.0000027601, + 0.0000027621, 0.0000027559, 0.0000027430, 0.0000027279, 0.0000027133, + 0.0000026976, 0.0000026810, 0.0000026673, 0.0000026592, 0.0000026534, + 0.0000026534, 0.0000026641, 0.0000026870, 0.0000027032, 0.0000027012, + 0.0000026954, 0.0000026855, 0.0000026736, 0.0000026713, 0.0000026755, + 0.0000026835, 0.0000026898, 0.0000026922, 0.0000026950, 0.0000027025, + 0.0000027089, 0.0000027074, 0.0000026996, 0.0000026917, 0.0000026828, + 0.0000026711, 0.0000026699, 0.0000026834, 0.0000026988, 0.0000027032, + 0.0000027011, 0.0000026984, 0.0000026934, 0.0000026766, 0.0000026519, + 0.0000026411, 0.0000026433, 0.0000026523, 0.0000026630, 0.0000026705, + 0.0000026753, 0.0000026801, 0.0000026847, 0.0000026876, 0.0000026895, + 0.0000026926, 0.0000026979, 0.0000027046, 0.0000027106, 0.0000027130, + 0.0000027111, 0.0000027054, 0.0000027010, 0.0000027000, 0.0000027029, + 0.0000027074, 0.0000027086, 0.0000027039, 0.0000026959, 0.0000026904, + 0.0000026890, 0.0000026889, 0.0000026884, 0.0000026866, 0.0000026843, + 0.0000026815, 0.0000026790, 0.0000026782, 0.0000026787, 0.0000026792, + 0.0000026789, 0.0000026783, 0.0000026779, 0.0000026794, 0.0000026823, + 0.0000026844, 0.0000026843, 0.0000026815, 0.0000026768, 0.0000026724, + 0.0000026694, 0.0000026682, 0.0000026676, 0.0000026667, 0.0000026659, + 0.0000026663, 0.0000026678, 0.0000026687, 0.0000026679, 0.0000026683, + 0.0000026738, 0.0000026846, 0.0000026978, 0.0000027100, 0.0000027173, + 0.0000027196, 0.0000027185, 0.0000027120, 0.0000027010, 0.0000026889, + 0.0000026795, 0.0000026761, 0.0000026769, 0.0000026804, 0.0000026840, + 0.0000026857, 0.0000026837, 0.0000026772, 0.0000026699, 0.0000026648, + 0.0000026620, 0.0000026607, 0.0000026608, 0.0000026594, 0.0000026563, + 0.0000026548, 0.0000026557, 0.0000026579, 0.0000026574, 0.0000026560, + 0.0000026563, 0.0000026630, 0.0000026779, 0.0000026966, 0.0000027112, + 0.0000027166, 0.0000027160, 0.0000027137, 0.0000027121, 0.0000027114, + 0.0000027122, 0.0000027137, 0.0000027146, 0.0000027165, 0.0000027181, + 0.0000027199, 0.0000027217, 0.0000027230, 0.0000027236, 0.0000027242, + 0.0000027257, 0.0000027270, 0.0000027265, 0.0000027265, 0.0000027238, + 0.0000027131, 0.0000027129, 0.0000027124, 0.0000027106, 0.0000027092, + 0.0000027118, 0.0000027190, 0.0000027271, 0.0000027300, 0.0000027295, + 0.0000027299, 0.0000027330, 0.0000027358, 0.0000027337, 0.0000027302, + 0.0000027370, 0.0000027546, 0.0000027637, 0.0000027605, 0.0000027563, + 0.0000027651, 0.0000027747, 0.0000027653, 0.0000027541, 0.0000027522, + 0.0000027561, 0.0000027643, 0.0000027768, 0.0000027888, 0.0000027885, + 0.0000027721, 0.0000027477, 0.0000027369, 0.0000027299, 0.0000027023, + 0.0000026888, 0.0000027160, 0.0000027390, 0.0000027661, 0.0000027911, + 0.0000027964, 0.0000027795, 0.0000027464, 0.0000027340, 0.0000027372, + 0.0000027503, 0.0000027731, 0.0000027858, 0.0000027824, 0.0000027679, + 0.0000027601, 0.0000027576, 0.0000027517, 0.0000027433, 0.0000027367, + 0.0000027322, 0.0000027282, 0.0000027216, 0.0000027136, 0.0000027130, + 0.0000027166, 0.0000027137, 0.0000027132, 0.0000027159, 0.0000027137, + 0.0000027082, 0.0000027092, 0.0000027327, 0.0000027314, 0.0000027262, + 0.0000027186, 0.0000027027, 0.0000026900, 0.0000026848, 0.0000026974, + 0.0000027226, 0.0000027377, 0.0000027385, 0.0000027444, 0.0000027516, + 0.0000027547, 0.0000027538, 0.0000027502, 0.0000027425, 0.0000027317, + 0.0000027207, 0.0000027096, 0.0000026981, 0.0000026882, 0.0000026815, + 0.0000026810, 0.0000026856, 0.0000026900, 0.0000026949, 0.0000026981, + 0.0000026998, 0.0000027022, 0.0000027049, 0.0000027089, 0.0000027148, + 0.0000027214, 0.0000027288, 0.0000027364, 0.0000027401, 0.0000027394, + 0.0000027397, 0.0000027436, 0.0000027463, 0.0000027465, 0.0000027460, + 0.0000027467, 0.0000027449, 0.0000027385, 0.0000027354, 0.0000027373, + 0.0000027422, 0.0000027431, 0.0000027314, 0.0000027150, 0.0000027073, + 0.0000027087, 0.0000027113, 0.0000027117, 0.0000027137, 0.0000027245, + 0.0000027414, 0.0000027513, 0.0000027493, 0.0000027439, 0.0000027432, + 0.0000027501, 0.0000027606, 0.0000027654, 0.0000027620, 0.0000027508, + 0.0000027365, 0.0000027230, 0.0000027085, 0.0000026905, 0.0000026728, + 0.0000026632, 0.0000026600, 0.0000026594, 0.0000026677, 0.0000026863, + 0.0000027025, 0.0000027015, 0.0000026961, 0.0000026858, 0.0000026754, + 0.0000026748, 0.0000026796, 0.0000026861, 0.0000026916, 0.0000026931, + 0.0000026934, 0.0000026989, 0.0000027056, 0.0000027055, 0.0000026991, + 0.0000026906, 0.0000026829, 0.0000026739, 0.0000026728, 0.0000026849, + 0.0000026995, 0.0000027033, 0.0000027018, 0.0000026996, 0.0000026978, + 0.0000026851, 0.0000026595, 0.0000026422, 0.0000026439, 0.0000026533, + 0.0000026630, 0.0000026697, 0.0000026755, 0.0000026813, 0.0000026866, + 0.0000026910, 0.0000026939, 0.0000026964, 0.0000027004, 0.0000027063, + 0.0000027131, 0.0000027169, 0.0000027152, 0.0000027085, 0.0000027024, + 0.0000027013, 0.0000027051, 0.0000027099, 0.0000027109, 0.0000027060, + 0.0000026968, 0.0000026892, 0.0000026858, 0.0000026847, 0.0000026842, + 0.0000026838, 0.0000026836, 0.0000026828, 0.0000026810, 0.0000026794, + 0.0000026785, 0.0000026778, 0.0000026775, 0.0000026787, 0.0000026815, + 0.0000026853, 0.0000026884, 0.0000026891, 0.0000026867, 0.0000026819, + 0.0000026774, 0.0000026747, 0.0000026736, 0.0000026735, 0.0000026733, + 0.0000026728, 0.0000026721, 0.0000026716, 0.0000026724, 0.0000026750, + 0.0000026770, 0.0000026763, 0.0000026750, 0.0000026777, 0.0000026862, + 0.0000026972, 0.0000027080, 0.0000027149, 0.0000027180, 0.0000027180, + 0.0000027141, 0.0000027058, 0.0000026959, 0.0000026873, 0.0000026820, + 0.0000026807, 0.0000026816, 0.0000026831, 0.0000026834, 0.0000026809, + 0.0000026762, 0.0000026716, 0.0000026675, 0.0000026650, 0.0000026628, + 0.0000026587, 0.0000026506, 0.0000026429, 0.0000026407, 0.0000026418, + 0.0000026455, 0.0000026483, 0.0000026502, 0.0000026510, 0.0000026508, + 0.0000026513, 0.0000026565, 0.0000026697, 0.0000026884, 0.0000027062, + 0.0000027176, 0.0000027224, 0.0000027265, 0.0000027289, 0.0000027300, + 0.0000027302, 0.0000027297, 0.0000027303, 0.0000027315, 0.0000027321, + 0.0000027317, 0.0000027295, 0.0000027264, 0.0000027244, 0.0000027206, + 0.0000027178, 0.0000027158, 0.0000027145, 0.0000027136, 0.0000027085, + 0.0000027089, 0.0000027086, 0.0000027072, 0.0000027053, 0.0000027047, + 0.0000027077, 0.0000027152, 0.0000027236, 0.0000027288, 0.0000027308, + 0.0000027317, 0.0000027288, 0.0000027262, 0.0000027309, 0.0000027464, + 0.0000027605, 0.0000027613, 0.0000027536, 0.0000027546, 0.0000027664, + 0.0000027661, 0.0000027495, 0.0000027393, 0.0000027394, 0.0000027448, + 0.0000027526, 0.0000027645, 0.0000027830, 0.0000027956, 0.0000027908, + 0.0000027685, 0.0000027446, 0.0000027376, 0.0000027255, 0.0000026943, + 0.0000026947, 0.0000027250, 0.0000027477, 0.0000027778, 0.0000027978, + 0.0000027972, 0.0000027724, 0.0000027410, 0.0000027360, 0.0000027414, + 0.0000027560, 0.0000027784, 0.0000027870, 0.0000027786, 0.0000027648, + 0.0000027618, 0.0000027593, 0.0000027518, 0.0000027434, 0.0000027364, + 0.0000027314, 0.0000027272, 0.0000027217, 0.0000027145, 0.0000027130, + 0.0000027138, 0.0000027091, 0.0000027096, 0.0000027143, 0.0000027130, + 0.0000027076, 0.0000027086, 0.0000027331, 0.0000027341, 0.0000027283, + 0.0000027239, 0.0000027070, 0.0000026933, 0.0000026838, 0.0000026902, + 0.0000027136, 0.0000027346, 0.0000027376, 0.0000027407, 0.0000027480, + 0.0000027514, 0.0000027506, 0.0000027490, 0.0000027446, 0.0000027368, + 0.0000027277, 0.0000027177, 0.0000027058, 0.0000026926, 0.0000026831, + 0.0000026795, 0.0000026813, 0.0000026853, 0.0000026907, 0.0000026978, + 0.0000027034, 0.0000027076, 0.0000027109, 0.0000027122, 0.0000027145, + 0.0000027187, 0.0000027240, 0.0000027301, 0.0000027343, 0.0000027343, + 0.0000027339, 0.0000027363, 0.0000027392, 0.0000027406, 0.0000027400, + 0.0000027397, 0.0000027423, 0.0000027425, 0.0000027376, 0.0000027346, + 0.0000027363, 0.0000027406, 0.0000027396, 0.0000027281, 0.0000027145, + 0.0000027073, 0.0000027058, 0.0000027046, 0.0000027026, 0.0000027029, + 0.0000027119, 0.0000027289, 0.0000027437, 0.0000027482, 0.0000027458, + 0.0000027436, 0.0000027474, 0.0000027586, 0.0000027657, 0.0000027640, + 0.0000027547, 0.0000027416, 0.0000027294, 0.0000027176, 0.0000027007, + 0.0000026806, 0.0000026683, 0.0000026662, 0.0000026657, 0.0000026710, + 0.0000026857, 0.0000027013, 0.0000027013, 0.0000026960, 0.0000026855, + 0.0000026776, 0.0000026798, 0.0000026844, 0.0000026884, 0.0000026925, + 0.0000026936, 0.0000026929, 0.0000026969, 0.0000027034, 0.0000027040, + 0.0000026989, 0.0000026902, 0.0000026828, 0.0000026773, 0.0000026769, + 0.0000026861, 0.0000026982, 0.0000027027, 0.0000027012, 0.0000026990, + 0.0000026990, 0.0000026925, 0.0000026688, 0.0000026466, 0.0000026439, + 0.0000026519, 0.0000026606, 0.0000026667, 0.0000026729, 0.0000026817, + 0.0000026894, 0.0000026946, 0.0000026986, 0.0000027012, 0.0000027035, + 0.0000027073, 0.0000027131, 0.0000027179, 0.0000027172, 0.0000027104, + 0.0000027035, 0.0000027024, 0.0000027072, 0.0000027134, 0.0000027149, + 0.0000027095, 0.0000026991, 0.0000026892, 0.0000026833, 0.0000026807, + 0.0000026793, 0.0000026789, 0.0000026796, 0.0000026811, 0.0000026812, + 0.0000026801, 0.0000026792, 0.0000026776, 0.0000026764, 0.0000026777, + 0.0000026823, 0.0000026879, 0.0000026917, 0.0000026914, 0.0000026870, + 0.0000026808, 0.0000026767, 0.0000026768, 0.0000026790, 0.0000026816, + 0.0000026825, 0.0000026816, 0.0000026796, 0.0000026775, 0.0000026764, + 0.0000026769, 0.0000026800, 0.0000026836, 0.0000026846, 0.0000026830, + 0.0000026832, 0.0000026886, 0.0000026972, 0.0000027056, 0.0000027111, + 0.0000027134, 0.0000027139, 0.0000027118, 0.0000027063, 0.0000026990, + 0.0000026922, 0.0000026875, 0.0000026852, 0.0000026849, 0.0000026858, + 0.0000026856, 0.0000026832, 0.0000026797, 0.0000026763, 0.0000026725, + 0.0000026666, 0.0000026595, 0.0000026499, 0.0000026394, 0.0000026328, + 0.0000026328, 0.0000026366, 0.0000026400, 0.0000026420, 0.0000026437, + 0.0000026461, 0.0000026487, 0.0000026505, 0.0000026508, 0.0000026516, + 0.0000026555, 0.0000026660, 0.0000026817, 0.0000026980, 0.0000027120, + 0.0000027227, 0.0000027295, 0.0000027326, 0.0000027327, 0.0000027322, + 0.0000027305, 0.0000027280, 0.0000027241, 0.0000027187, 0.0000027121, + 0.0000027055, 0.0000027008, 0.0000026993, 0.0000027003, 0.0000027027, + 0.0000027052, 0.0000027072, 0.0000027078, 0.0000027073, 0.0000027059, + 0.0000027043, 0.0000027031, 0.0000027015, 0.0000027008, 0.0000027027, + 0.0000027079, 0.0000027139, 0.0000027175, 0.0000027184, 0.0000027193, + 0.0000027251, 0.0000027378, 0.0000027530, 0.0000027590, 0.0000027538, + 0.0000027475, 0.0000027546, 0.0000027618, 0.0000027493, 0.0000027332, + 0.0000027280, 0.0000027315, 0.0000027386, 0.0000027452, 0.0000027528, + 0.0000027675, 0.0000027910, 0.0000028007, 0.0000027882, 0.0000027632, + 0.0000027440, 0.0000027392, 0.0000027198, 0.0000026920, 0.0000027023, + 0.0000027323, 0.0000027573, 0.0000027872, 0.0000028004, 0.0000027954, + 0.0000027648, 0.0000027386, 0.0000027384, 0.0000027456, 0.0000027605, + 0.0000027817, 0.0000027859, 0.0000027744, 0.0000027639, 0.0000027632, + 0.0000027584, 0.0000027496, 0.0000027418, 0.0000027347, 0.0000027294, + 0.0000027250, 0.0000027196, 0.0000027131, 0.0000027114, 0.0000027100, + 0.0000027050, 0.0000027083, 0.0000027139, 0.0000027130, 0.0000027076, + 0.0000027093, 0.0000027340, 0.0000027355, 0.0000027297, 0.0000027278, + 0.0000027122, 0.0000026965, 0.0000026854, 0.0000026840, 0.0000027030, + 0.0000027274, 0.0000027358, 0.0000027360, 0.0000027420, 0.0000027466, + 0.0000027464, 0.0000027449, 0.0000027431, 0.0000027389, 0.0000027333, + 0.0000027262, 0.0000027164, 0.0000027047, 0.0000026944, 0.0000026876, + 0.0000026836, 0.0000026836, 0.0000026839, 0.0000026886, 0.0000026977, + 0.0000027073, 0.0000027143, 0.0000027189, 0.0000027203, 0.0000027216, + 0.0000027232, 0.0000027263, 0.0000027295, 0.0000027297, 0.0000027285, + 0.0000027298, 0.0000027324, 0.0000027344, 0.0000027342, 0.0000027321, + 0.0000027333, 0.0000027390, 0.0000027417, 0.0000027367, 0.0000027328, + 0.0000027345, 0.0000027376, 0.0000027355, 0.0000027253, 0.0000027156, + 0.0000027093, 0.0000027055, 0.0000027024, 0.0000026989, 0.0000026985, + 0.0000027036, 0.0000027160, 0.0000027330, 0.0000027454, 0.0000027471, + 0.0000027438, 0.0000027449, 0.0000027554, 0.0000027643, 0.0000027633, + 0.0000027548, 0.0000027427, 0.0000027319, 0.0000027237, 0.0000027100, + 0.0000026900, 0.0000026748, 0.0000026718, 0.0000026717, 0.0000026740, + 0.0000026847, 0.0000026993, 0.0000027003, 0.0000026947, 0.0000026848, + 0.0000026807, 0.0000026853, 0.0000026887, 0.0000026900, 0.0000026922, + 0.0000026930, 0.0000026922, 0.0000026957, 0.0000027027, 0.0000027044, + 0.0000027003, 0.0000026920, 0.0000026843, 0.0000026810, 0.0000026816, + 0.0000026870, 0.0000026955, 0.0000027005, 0.0000026995, 0.0000026972, + 0.0000026982, 0.0000026966, 0.0000026787, 0.0000026521, 0.0000026436, + 0.0000026487, 0.0000026570, 0.0000026626, 0.0000026692, 0.0000026799, + 0.0000026907, 0.0000026975, 0.0000027017, 0.0000027052, 0.0000027064, + 0.0000027075, 0.0000027113, 0.0000027159, 0.0000027166, 0.0000027108, + 0.0000027044, 0.0000027035, 0.0000027090, 0.0000027162, 0.0000027187, + 0.0000027150, 0.0000027039, 0.0000026910, 0.0000026814, 0.0000026761, + 0.0000026739, 0.0000026728, 0.0000026732, 0.0000026760, 0.0000026788, + 0.0000026792, 0.0000026786, 0.0000026776, 0.0000026757, 0.0000026758, + 0.0000026797, 0.0000026855, 0.0000026891, 0.0000026890, 0.0000026849, + 0.0000026801, 0.0000026785, 0.0000026808, 0.0000026853, 0.0000026893, + 0.0000026909, 0.0000026901, 0.0000026876, 0.0000026840, 0.0000026801, + 0.0000026780, 0.0000026781, 0.0000026813, 0.0000026862, 0.0000026895, + 0.0000026895, 0.0000026888, 0.0000026912, 0.0000026975, 0.0000027040, + 0.0000027079, 0.0000027084, 0.0000027079, 0.0000027054, 0.0000027011, + 0.0000026963, 0.0000026920, 0.0000026884, 0.0000026857, 0.0000026848, + 0.0000026857, 0.0000026865, 0.0000026845, 0.0000026811, 0.0000026778, + 0.0000026727, 0.0000026635, 0.0000026519, 0.0000026407, 0.0000026321, + 0.0000026299, 0.0000026338, 0.0000026402, 0.0000026457, 0.0000026485, + 0.0000026498, 0.0000026508, 0.0000026517, 0.0000026527, 0.0000026538, + 0.0000026554, 0.0000026568, 0.0000026581, 0.0000026619, 0.0000026683, + 0.0000026779, 0.0000026888, 0.0000026977, 0.0000027033, 0.0000027059, + 0.0000027062, 0.0000027043, 0.0000027011, 0.0000026977, 0.0000026944, + 0.0000026913, 0.0000026884, 0.0000026868, 0.0000026880, 0.0000026920, + 0.0000026964, 0.0000027008, 0.0000027044, 0.0000027068, 0.0000027082, + 0.0000027062, 0.0000027036, 0.0000027014, 0.0000026997, 0.0000026976, + 0.0000026955, 0.0000026954, 0.0000026975, 0.0000027021, 0.0000027076, + 0.0000027128, 0.0000027196, 0.0000027309, 0.0000027453, 0.0000027530, + 0.0000027511, 0.0000027434, 0.0000027441, 0.0000027530, 0.0000027490, + 0.0000027304, 0.0000027213, 0.0000027232, 0.0000027297, 0.0000027368, + 0.0000027422, 0.0000027473, 0.0000027550, 0.0000027749, 0.0000028008, + 0.0000028011, 0.0000027824, 0.0000027585, 0.0000027461, 0.0000027398, + 0.0000027109, 0.0000026881, 0.0000027115, 0.0000027390, 0.0000027670, + 0.0000027941, 0.0000028029, 0.0000027918, 0.0000027582, 0.0000027395, + 0.0000027419, 0.0000027493, 0.0000027634, 0.0000027831, 0.0000027839, + 0.0000027705, 0.0000027640, 0.0000027627, 0.0000027558, 0.0000027470, + 0.0000027397, 0.0000027324, 0.0000027268, 0.0000027219, 0.0000027159, + 0.0000027099, 0.0000027082, 0.0000027057, 0.0000027027, 0.0000027090, + 0.0000027149, 0.0000027136, 0.0000027081, 0.0000027108, 0.0000027355, + 0.0000027363, 0.0000027303, 0.0000027298, 0.0000027178, 0.0000026991, + 0.0000026890, 0.0000026804, 0.0000026932, 0.0000027168, 0.0000027322, + 0.0000027326, 0.0000027345, 0.0000027389, 0.0000027400, 0.0000027387, + 0.0000027384, 0.0000027371, 0.0000027347, 0.0000027313, 0.0000027247, + 0.0000027155, 0.0000027074, 0.0000027022, 0.0000026976, 0.0000026934, + 0.0000026888, 0.0000026863, 0.0000026899, 0.0000026977, 0.0000027068, + 0.0000027161, 0.0000027224, 0.0000027256, 0.0000027251, 0.0000027253, + 0.0000027273, 0.0000027272, 0.0000027252, 0.0000027247, 0.0000027266, + 0.0000027287, 0.0000027288, 0.0000027260, 0.0000027244, 0.0000027284, + 0.0000027381, 0.0000027415, 0.0000027349, 0.0000027299, 0.0000027311, + 0.0000027333, 0.0000027305, 0.0000027223, 0.0000027160, 0.0000027114, + 0.0000027072, 0.0000027034, 0.0000027010, 0.0000027006, 0.0000027023, + 0.0000027089, 0.0000027256, 0.0000027426, 0.0000027472, 0.0000027436, + 0.0000027431, 0.0000027524, 0.0000027615, 0.0000027605, 0.0000027526, + 0.0000027413, 0.0000027318, 0.0000027268, 0.0000027176, 0.0000026995, + 0.0000026820, 0.0000026769, 0.0000026768, 0.0000026765, 0.0000026835, + 0.0000026966, 0.0000026984, 0.0000026923, 0.0000026848, 0.0000026846, + 0.0000026904, 0.0000026919, 0.0000026910, 0.0000026914, 0.0000026915, + 0.0000026911, 0.0000026946, 0.0000027020, 0.0000027056, 0.0000027037, + 0.0000026965, 0.0000026885, 0.0000026856, 0.0000026858, 0.0000026880, + 0.0000026923, 0.0000026967, 0.0000026970, 0.0000026948, 0.0000026957, + 0.0000026974, 0.0000026869, 0.0000026604, 0.0000026427, 0.0000026445, + 0.0000026523, 0.0000026581, 0.0000026651, 0.0000026770, 0.0000026891, + 0.0000026974, 0.0000027030, 0.0000027069, 0.0000027087, 0.0000027077, + 0.0000027091, 0.0000027131, 0.0000027142, 0.0000027098, 0.0000027047, + 0.0000027046, 0.0000027103, 0.0000027185, 0.0000027231, 0.0000027205, + 0.0000027108, 0.0000026960, 0.0000026815, 0.0000026719, 0.0000026678, + 0.0000026666, 0.0000026661, 0.0000026680, 0.0000026730, 0.0000026761, + 0.0000026765, 0.0000026765, 0.0000026756, 0.0000026746, 0.0000026762, + 0.0000026809, 0.0000026842, 0.0000026841, 0.0000026826, 0.0000026823, + 0.0000026839, 0.0000026877, 0.0000026922, 0.0000026954, 0.0000026956, + 0.0000026943, 0.0000026914, 0.0000026879, 0.0000026839, 0.0000026800, + 0.0000026776, 0.0000026778, 0.0000026808, 0.0000026862, 0.0000026915, + 0.0000026937, 0.0000026935, 0.0000026944, 0.0000026983, 0.0000027031, + 0.0000027057, 0.0000027054, 0.0000027028, 0.0000026986, 0.0000026936, + 0.0000026897, 0.0000026867, 0.0000026835, 0.0000026801, 0.0000026785, + 0.0000026794, 0.0000026812, 0.0000026802, 0.0000026768, 0.0000026731, + 0.0000026673, 0.0000026565, 0.0000026438, 0.0000026340, 0.0000026299, + 0.0000026316, 0.0000026393, 0.0000026497, 0.0000026580, 0.0000026631, + 0.0000026655, 0.0000026664, 0.0000026666, 0.0000026659, 0.0000026642, + 0.0000026631, 0.0000026631, 0.0000026641, 0.0000026656, 0.0000026679, + 0.0000026713, 0.0000026776, 0.0000026817, 0.0000026841, 0.0000026855, + 0.0000026856, 0.0000026844, 0.0000026824, 0.0000026810, 0.0000026811, + 0.0000026824, 0.0000026839, 0.0000026853, 0.0000026873, 0.0000026923, + 0.0000026978, 0.0000027026, 0.0000027060, 0.0000027078, 0.0000027086, + 0.0000027098, 0.0000027053, 0.0000027015, 0.0000026985, 0.0000026957, + 0.0000026925, 0.0000026909, 0.0000026917, 0.0000026953, 0.0000027003, + 0.0000027057, 0.0000027126, 0.0000027235, 0.0000027360, 0.0000027442, + 0.0000027435, 0.0000027373, 0.0000027360, 0.0000027443, 0.0000027466, + 0.0000027307, 0.0000027168, 0.0000027160, 0.0000027218, 0.0000027301, + 0.0000027373, 0.0000027418, 0.0000027448, 0.0000027477, 0.0000027585, + 0.0000027868, 0.0000028052, 0.0000027967, 0.0000027755, 0.0000027558, + 0.0000027497, 0.0000027388, 0.0000027025, 0.0000026919, 0.0000027196, + 0.0000027462, 0.0000027755, 0.0000027986, 0.0000028028, 0.0000027874, + 0.0000027533, 0.0000027407, 0.0000027457, 0.0000027522, 0.0000027649, + 0.0000027825, 0.0000027821, 0.0000027672, 0.0000027636, 0.0000027609, + 0.0000027531, 0.0000027450, 0.0000027379, 0.0000027306, 0.0000027241, + 0.0000027177, 0.0000027108, 0.0000027061, 0.0000027046, 0.0000027023, + 0.0000027021, 0.0000027123, 0.0000027169, 0.0000027146, 0.0000027084, + 0.0000027145, 0.0000027383, 0.0000027366, 0.0000027301, 0.0000027304, + 0.0000027230, 0.0000027019, 0.0000026920, 0.0000026794, 0.0000026849, + 0.0000027057, 0.0000027239, 0.0000027302, 0.0000027295, 0.0000027306, + 0.0000027311, 0.0000027304, 0.0000027310, 0.0000027313, 0.0000027312, + 0.0000027315, 0.0000027288, 0.0000027236, 0.0000027175, 0.0000027132, + 0.0000027101, 0.0000027079, 0.0000027033, 0.0000026986, 0.0000026956, + 0.0000026962, 0.0000026994, 0.0000027055, 0.0000027138, 0.0000027209, + 0.0000027237, 0.0000027233, 0.0000027238, 0.0000027233, 0.0000027207, + 0.0000027185, 0.0000027186, 0.0000027204, 0.0000027218, 0.0000027207, + 0.0000027182, 0.0000027187, 0.0000027264, 0.0000027389, 0.0000027410, + 0.0000027320, 0.0000027253, 0.0000027259, 0.0000027269, 0.0000027246, + 0.0000027188, 0.0000027147, 0.0000027114, 0.0000027079, 0.0000027058, + 0.0000027055, 0.0000027054, 0.0000027050, 0.0000027103, 0.0000027249, + 0.0000027410, 0.0000027465, 0.0000027430, 0.0000027421, 0.0000027502, + 0.0000027575, 0.0000027560, 0.0000027482, 0.0000027384, 0.0000027306, + 0.0000027280, 0.0000027230, 0.0000027078, 0.0000026892, 0.0000026815, + 0.0000026810, 0.0000026784, 0.0000026822, 0.0000026935, 0.0000026958, + 0.0000026896, 0.0000026847, 0.0000026883, 0.0000026939, 0.0000026940, + 0.0000026917, 0.0000026906, 0.0000026902, 0.0000026906, 0.0000026941, + 0.0000027003, 0.0000027058, 0.0000027062, 0.0000027015, 0.0000026942, + 0.0000026904, 0.0000026898, 0.0000026898, 0.0000026905, 0.0000026925, + 0.0000026937, 0.0000026931, 0.0000026934, 0.0000026963, 0.0000026924, + 0.0000026705, 0.0000026466, 0.0000026409, 0.0000026471, 0.0000026538, + 0.0000026616, 0.0000026737, 0.0000026860, 0.0000026946, 0.0000027017, + 0.0000027069, 0.0000027094, 0.0000027086, 0.0000027079, 0.0000027102, + 0.0000027111, 0.0000027078, 0.0000027044, 0.0000027051, 0.0000027111, + 0.0000027197, 0.0000027255, 0.0000027253, 0.0000027177, 0.0000027030, + 0.0000026853, 0.0000026700, 0.0000026620, 0.0000026604, 0.0000026598, + 0.0000026599, 0.0000026644, 0.0000026707, 0.0000026732, 0.0000026735, + 0.0000026742, 0.0000026743, 0.0000026746, 0.0000026775, 0.0000026815, + 0.0000026835, 0.0000026838, 0.0000026855, 0.0000026896, 0.0000026942, + 0.0000026963, 0.0000026968, 0.0000026963, 0.0000026941, 0.0000026910, + 0.0000026881, 0.0000026855, 0.0000026828, 0.0000026798, 0.0000026780, + 0.0000026782, 0.0000026810, 0.0000026863, 0.0000026926, 0.0000026968, + 0.0000026977, 0.0000026981, 0.0000027003, 0.0000027035, 0.0000027051, + 0.0000027037, 0.0000026999, 0.0000026948, 0.0000026897, 0.0000026857, + 0.0000026827, 0.0000026787, 0.0000026733, 0.0000026695, 0.0000026693, + 0.0000026704, 0.0000026699, 0.0000026676, 0.0000026650, 0.0000026603, + 0.0000026508, 0.0000026392, 0.0000026317, 0.0000026303, 0.0000026342, + 0.0000026444, 0.0000026574, 0.0000026681, 0.0000026750, 0.0000026792, + 0.0000026817, 0.0000026832, 0.0000026833, 0.0000026816, 0.0000026782, + 0.0000026746, 0.0000026722, 0.0000026716, 0.0000026732, 0.0000026770, + 0.0000026819, 0.0000026857, 0.0000026871, 0.0000026869, 0.0000026858, + 0.0000026843, 0.0000026830, 0.0000026826, 0.0000026845, 0.0000026889, + 0.0000026943, 0.0000026992, 0.0000027033, 0.0000027077, 0.0000027124, + 0.0000027164, 0.0000027191, 0.0000027198, 0.0000027179, 0.0000027141, + 0.0000027135, 0.0000027061, 0.0000027013, 0.0000026978, 0.0000026943, + 0.0000026904, 0.0000026883, 0.0000026891, 0.0000026930, 0.0000026990, + 0.0000027065, 0.0000027159, 0.0000027261, 0.0000027334, 0.0000027333, + 0.0000027282, 0.0000027271, 0.0000027363, 0.0000027425, 0.0000027313, + 0.0000027159, 0.0000027123, 0.0000027152, 0.0000027220, 0.0000027299, + 0.0000027369, 0.0000027417, 0.0000027439, 0.0000027439, 0.0000027469, + 0.0000027681, 0.0000027998, 0.0000028033, 0.0000027890, 0.0000027687, + 0.0000027570, 0.0000027535, 0.0000027342, 0.0000026958, 0.0000026967, + 0.0000027262, 0.0000027534, 0.0000027823, 0.0000028010, 0.0000028015, + 0.0000027830, 0.0000027502, 0.0000027430, 0.0000027488, 0.0000027538, + 0.0000027651, 0.0000027821, 0.0000027786, 0.0000027647, 0.0000027626, + 0.0000027585, 0.0000027512, 0.0000027439, 0.0000027369, 0.0000027294, + 0.0000027214, 0.0000027131, 0.0000027061, 0.0000027030, 0.0000027023, + 0.0000027010, 0.0000027053, 0.0000027174, 0.0000027191, 0.0000027152, + 0.0000027091, 0.0000027219, 0.0000027422, 0.0000027367, 0.0000027299, + 0.0000027308, 0.0000027270, 0.0000027050, 0.0000026931, 0.0000026803, + 0.0000026788, 0.0000026958, 0.0000027117, 0.0000027247, 0.0000027274, + 0.0000027264, 0.0000027246, 0.0000027230, 0.0000027237, 0.0000027236, + 0.0000027235, 0.0000027259, 0.0000027276, 0.0000027259, 0.0000027229, + 0.0000027210, 0.0000027180, 0.0000027161, 0.0000027129, 0.0000027092, + 0.0000027072, 0.0000027068, 0.0000027055, 0.0000027052, 0.0000027074, + 0.0000027113, 0.0000027141, 0.0000027157, 0.0000027160, 0.0000027149, + 0.0000027122, 0.0000027092, 0.0000027072, 0.0000027072, 0.0000027093, + 0.0000027105, 0.0000027112, 0.0000027128, 0.0000027166, 0.0000027274, + 0.0000027399, 0.0000027394, 0.0000027274, 0.0000027194, 0.0000027190, + 0.0000027194, 0.0000027177, 0.0000027143, 0.0000027122, 0.0000027097, + 0.0000027071, 0.0000027064, 0.0000027071, 0.0000027079, 0.0000027103, + 0.0000027166, 0.0000027284, 0.0000027411, 0.0000027454, 0.0000027416, + 0.0000027408, 0.0000027483, 0.0000027531, 0.0000027503, 0.0000027431, + 0.0000027355, 0.0000027298, 0.0000027286, 0.0000027264, 0.0000027145, + 0.0000026957, 0.0000026852, 0.0000026840, 0.0000026797, 0.0000026806, + 0.0000026903, 0.0000026932, 0.0000026875, 0.0000026847, 0.0000026907, + 0.0000026957, 0.0000026950, 0.0000026923, 0.0000026905, 0.0000026898, + 0.0000026910, 0.0000026948, 0.0000026985, 0.0000027028, 0.0000027054, + 0.0000027033, 0.0000026982, 0.0000026946, 0.0000026937, 0.0000026927, + 0.0000026910, 0.0000026900, 0.0000026904, 0.0000026918, 0.0000026928, + 0.0000026955, 0.0000026958, 0.0000026816, 0.0000026549, 0.0000026406, + 0.0000026427, 0.0000026504, 0.0000026593, 0.0000026714, 0.0000026828, + 0.0000026914, 0.0000026991, 0.0000027061, 0.0000027094, 0.0000027096, + 0.0000027082, 0.0000027090, 0.0000027089, 0.0000027058, 0.0000027040, + 0.0000027052, 0.0000027112, 0.0000027204, 0.0000027275, 0.0000027287, + 0.0000027235, 0.0000027105, 0.0000026917, 0.0000026722, 0.0000026584, + 0.0000026539, 0.0000026536, 0.0000026534, 0.0000026553, 0.0000026622, + 0.0000026684, 0.0000026693, 0.0000026695, 0.0000026713, 0.0000026735, + 0.0000026762, 0.0000026798, 0.0000026826, 0.0000026846, 0.0000026871, + 0.0000026904, 0.0000026934, 0.0000026947, 0.0000026943, 0.0000026926, + 0.0000026897, 0.0000026864, 0.0000026842, 0.0000026837, 0.0000026838, + 0.0000026833, 0.0000026822, 0.0000026811, 0.0000026814, 0.0000026839, + 0.0000026886, 0.0000026946, 0.0000026997, 0.0000027018, 0.0000027021, + 0.0000027033, 0.0000027053, 0.0000027063, 0.0000027046, 0.0000026998, + 0.0000026940, 0.0000026890, 0.0000026856, 0.0000026824, 0.0000026771, + 0.0000026700, 0.0000026641, 0.0000026612, 0.0000026606, 0.0000026599, + 0.0000026590, 0.0000026583, 0.0000026553, 0.0000026475, 0.0000026378, + 0.0000026322, 0.0000026321, 0.0000026372, 0.0000026479, 0.0000026616, + 0.0000026734, 0.0000026817, 0.0000026882, 0.0000026933, 0.0000026966, + 0.0000026978, 0.0000026971, 0.0000026944, 0.0000026903, 0.0000026865, + 0.0000026842, 0.0000026842, 0.0000026863, 0.0000026899, 0.0000026931, + 0.0000026946, 0.0000026945, 0.0000026933, 0.0000026917, 0.0000026904, + 0.0000026909, 0.0000026941, 0.0000027008, 0.0000027084, 0.0000027152, + 0.0000027203, 0.0000027243, 0.0000027283, 0.0000027319, 0.0000027343, + 0.0000027356, 0.0000027348, 0.0000027301, 0.0000027223, 0.0000027220, + 0.0000027123, 0.0000027058, 0.0000027019, 0.0000026987, 0.0000026956, + 0.0000026935, 0.0000026934, 0.0000026963, 0.0000027032, 0.0000027120, + 0.0000027196, 0.0000027235, 0.0000027224, 0.0000027192, 0.0000027198, + 0.0000027303, 0.0000027387, 0.0000027317, 0.0000027166, 0.0000027108, + 0.0000027129, 0.0000027180, 0.0000027243, 0.0000027303, 0.0000027356, + 0.0000027393, 0.0000027412, 0.0000027410, 0.0000027418, 0.0000027546, + 0.0000027851, 0.0000028021, 0.0000027957, 0.0000027798, 0.0000027651, + 0.0000027597, 0.0000027552, 0.0000027281, 0.0000026929, 0.0000027025, + 0.0000027320, 0.0000027603, 0.0000027872, 0.0000028009, 0.0000028000, + 0.0000027795, 0.0000027492, 0.0000027452, 0.0000027503, 0.0000027536, + 0.0000027648, 0.0000027819, 0.0000027743, 0.0000027622, 0.0000027610, + 0.0000027569, 0.0000027502, 0.0000027438, 0.0000027370, 0.0000027283, + 0.0000027187, 0.0000027090, 0.0000027032, 0.0000027018, 0.0000027017, + 0.0000027026, 0.0000027133, 0.0000027225, 0.0000027210, 0.0000027144, + 0.0000027114, 0.0000027317, 0.0000027448, 0.0000027363, 0.0000027299, + 0.0000027308, 0.0000027290, 0.0000027079, 0.0000026930, 0.0000026822, + 0.0000026749, 0.0000026873, 0.0000027012, 0.0000027142, 0.0000027236, + 0.0000027248, 0.0000027232, 0.0000027205, 0.0000027200, 0.0000027190, + 0.0000027163, 0.0000027166, 0.0000027194, 0.0000027211, 0.0000027218, + 0.0000027226, 0.0000027221, 0.0000027218, 0.0000027188, 0.0000027152, + 0.0000027126, 0.0000027126, 0.0000027137, 0.0000027139, 0.0000027132, + 0.0000027123, 0.0000027111, 0.0000027088, 0.0000027090, 0.0000027078, + 0.0000027048, 0.0000027018, 0.0000026985, 0.0000026958, 0.0000026957, + 0.0000026964, 0.0000026979, 0.0000027027, 0.0000027102, 0.0000027182, + 0.0000027291, 0.0000027391, 0.0000027361, 0.0000027220, 0.0000027126, + 0.0000027118, 0.0000027117, 0.0000027108, 0.0000027100, 0.0000027097, + 0.0000027084, 0.0000027065, 0.0000027056, 0.0000027060, 0.0000027088, + 0.0000027147, 0.0000027231, 0.0000027332, 0.0000027424, 0.0000027439, + 0.0000027387, 0.0000027391, 0.0000027464, 0.0000027489, 0.0000027444, + 0.0000027385, 0.0000027335, 0.0000027299, 0.0000027292, 0.0000027285, + 0.0000027196, 0.0000027012, 0.0000026884, 0.0000026866, 0.0000026808, + 0.0000026789, 0.0000026874, 0.0000026912, 0.0000026865, 0.0000026850, + 0.0000026913, 0.0000026959, 0.0000026955, 0.0000026932, 0.0000026912, + 0.0000026906, 0.0000026924, 0.0000026967, 0.0000026987, 0.0000026994, + 0.0000027012, 0.0000027013, 0.0000026986, 0.0000026968, 0.0000026968, + 0.0000026956, 0.0000026929, 0.0000026902, 0.0000026890, 0.0000026912, + 0.0000026939, 0.0000026970, 0.0000026987, 0.0000026926, 0.0000026692, + 0.0000026462, 0.0000026413, 0.0000026476, 0.0000026580, 0.0000026708, + 0.0000026809, 0.0000026884, 0.0000026968, 0.0000027044, 0.0000027094, + 0.0000027104, 0.0000027094, 0.0000027092, 0.0000027080, 0.0000027047, + 0.0000027033, 0.0000027048, 0.0000027105, 0.0000027200, 0.0000027288, + 0.0000027317, 0.0000027279, 0.0000027168, 0.0000026994, 0.0000026783, + 0.0000026593, 0.0000026488, 0.0000026467, 0.0000026468, 0.0000026474, + 0.0000026518, 0.0000026601, 0.0000026652, 0.0000026651, 0.0000026647, + 0.0000026669, 0.0000026712, 0.0000026759, 0.0000026793, 0.0000026806, + 0.0000026820, 0.0000026847, 0.0000026873, 0.0000026885, 0.0000026882, + 0.0000026871, 0.0000026852, 0.0000026825, 0.0000026797, 0.0000026791, + 0.0000026806, 0.0000026829, 0.0000026849, 0.0000026861, 0.0000026863, + 0.0000026866, 0.0000026887, 0.0000026929, 0.0000026982, 0.0000027034, + 0.0000027063, 0.0000027067, 0.0000027073, 0.0000027086, 0.0000027094, + 0.0000027076, 0.0000027023, 0.0000026952, 0.0000026889, 0.0000026849, + 0.0000026813, 0.0000026756, 0.0000026685, 0.0000026625, 0.0000026586, + 0.0000026559, 0.0000026543, 0.0000026542, 0.0000026550, 0.0000026535, + 0.0000026470, 0.0000026383, 0.0000026336, 0.0000026339, 0.0000026391, + 0.0000026493, 0.0000026623, 0.0000026738, 0.0000026823, 0.0000026900, + 0.0000026979, 0.0000027043, 0.0000027083, 0.0000027097, 0.0000027084, + 0.0000027056, 0.0000027017, 0.0000026981, 0.0000026965, 0.0000026973, + 0.0000026996, 0.0000027019, 0.0000027030, 0.0000027026, 0.0000027010, + 0.0000026991, 0.0000026975, 0.0000026972, 0.0000026994, 0.0000027047, + 0.0000027114, 0.0000027173, 0.0000027221, 0.0000027272, 0.0000027328, + 0.0000027381, 0.0000027422, 0.0000027444, 0.0000027449, 0.0000027439, + 0.0000027397, 0.0000027320, 0.0000027352, 0.0000027276, 0.0000027213, + 0.0000027168, 0.0000027138, 0.0000027121, 0.0000027118, 0.0000027127, + 0.0000027144, 0.0000027166, 0.0000027185, 0.0000027190, 0.0000027170, + 0.0000027146, 0.0000027184, 0.0000027317, 0.0000027400, 0.0000027333, + 0.0000027192, 0.0000027127, 0.0000027134, 0.0000027179, 0.0000027240, + 0.0000027290, 0.0000027321, 0.0000027344, 0.0000027357, 0.0000027368, + 0.0000027386, 0.0000027414, 0.0000027518, 0.0000027735, 0.0000027952, + 0.0000027961, 0.0000027862, 0.0000027709, 0.0000027652, 0.0000027626, + 0.0000027557, 0.0000027191, 0.0000026883, 0.0000027088, 0.0000027379, + 0.0000027663, 0.0000027897, 0.0000027996, 0.0000027983, 0.0000027770, + 0.0000027498, 0.0000027463, 0.0000027496, 0.0000027519, 0.0000027643, + 0.0000027798, 0.0000027685, 0.0000027597, 0.0000027595, 0.0000027563, + 0.0000027502, 0.0000027453, 0.0000027383, 0.0000027275, 0.0000027165, + 0.0000027065, 0.0000027021, 0.0000027026, 0.0000027036, 0.0000027100, + 0.0000027229, 0.0000027260, 0.0000027219, 0.0000027129, 0.0000027172, + 0.0000027413, 0.0000027450, 0.0000027346, 0.0000027298, 0.0000027306, + 0.0000027293, 0.0000027086, 0.0000026914, 0.0000026831, 0.0000026730, + 0.0000026804, 0.0000026947, 0.0000027037, 0.0000027151, 0.0000027209, + 0.0000027219, 0.0000027199, 0.0000027191, 0.0000027181, 0.0000027134, + 0.0000027098, 0.0000027101, 0.0000027120, 0.0000027140, 0.0000027163, + 0.0000027181, 0.0000027203, 0.0000027200, 0.0000027190, 0.0000027168, + 0.0000027149, 0.0000027152, 0.0000027169, 0.0000027186, 0.0000027194, + 0.0000027176, 0.0000027131, 0.0000027090, 0.0000027066, 0.0000027027, + 0.0000026990, 0.0000026954, 0.0000026912, 0.0000026887, 0.0000026875, + 0.0000026864, 0.0000026884, 0.0000026971, 0.0000027107, 0.0000027208, + 0.0000027294, 0.0000027362, 0.0000027315, 0.0000027162, 0.0000027060, + 0.0000027052, 0.0000027051, 0.0000027056, 0.0000027072, 0.0000027085, + 0.0000027081, 0.0000027062, 0.0000027042, 0.0000027044, 0.0000027090, + 0.0000027178, 0.0000027283, 0.0000027378, 0.0000027434, 0.0000027408, + 0.0000027355, 0.0000027375, 0.0000027443, 0.0000027445, 0.0000027391, + 0.0000027348, 0.0000027322, 0.0000027305, 0.0000027297, 0.0000027292, + 0.0000027227, 0.0000027061, 0.0000026922, 0.0000026889, 0.0000026829, + 0.0000026780, 0.0000026847, 0.0000026900, 0.0000026865, 0.0000026849, + 0.0000026902, 0.0000026953, 0.0000026956, 0.0000026946, 0.0000026934, + 0.0000026930, 0.0000026949, 0.0000026993, 0.0000027013, 0.0000026994, + 0.0000026977, 0.0000026973, 0.0000026965, 0.0000026968, 0.0000026980, + 0.0000026973, 0.0000026947, 0.0000026925, 0.0000026909, 0.0000026921, + 0.0000026961, 0.0000027000, 0.0000027030, 0.0000027017, 0.0000026868, + 0.0000026612, 0.0000026465, 0.0000026478, 0.0000026578, 0.0000026714, + 0.0000026809, 0.0000026865, 0.0000026944, 0.0000027020, 0.0000027074, + 0.0000027105, 0.0000027108, 0.0000027106, 0.0000027088, 0.0000027050, + 0.0000027032, 0.0000027043, 0.0000027089, 0.0000027183, 0.0000027285, + 0.0000027339, 0.0000027316, 0.0000027219, 0.0000027060, 0.0000026861, + 0.0000026652, 0.0000026488, 0.0000026410, 0.0000026397, 0.0000026408, + 0.0000026431, 0.0000026490, 0.0000026567, 0.0000026610, 0.0000026612, + 0.0000026607, 0.0000026627, 0.0000026669, 0.0000026706, 0.0000026719, + 0.0000026725, 0.0000026746, 0.0000026778, 0.0000026807, 0.0000026828, + 0.0000026836, 0.0000026830, 0.0000026811, 0.0000026781, 0.0000026749, + 0.0000026740, 0.0000026756, 0.0000026791, 0.0000026834, 0.0000026876, + 0.0000026904, 0.0000026918, 0.0000026935, 0.0000026972, 0.0000027024, + 0.0000027073, 0.0000027103, 0.0000027114, 0.0000027120, 0.0000027129, + 0.0000027129, 0.0000027110, 0.0000027052, 0.0000026971, 0.0000026894, + 0.0000026832, 0.0000026788, 0.0000026741, 0.0000026686, 0.0000026637, + 0.0000026599, 0.0000026565, 0.0000026535, 0.0000026525, 0.0000026534, + 0.0000026530, 0.0000026481, 0.0000026407, 0.0000026361, 0.0000026362, + 0.0000026408, 0.0000026494, 0.0000026606, 0.0000026711, 0.0000026799, + 0.0000026880, 0.0000026958, 0.0000027028, 0.0000027090, 0.0000027145, + 0.0000027177, 0.0000027171, 0.0000027144, 0.0000027104, 0.0000027068, + 0.0000027055, 0.0000027062, 0.0000027076, 0.0000027081, 0.0000027071, + 0.0000027055, 0.0000027037, 0.0000027020, 0.0000027014, 0.0000027022, + 0.0000027053, 0.0000027095, 0.0000027134, 0.0000027173, 0.0000027212, + 0.0000027268, 0.0000027339, 0.0000027414, 0.0000027468, 0.0000027491, + 0.0000027491, 0.0000027478, 0.0000027456, 0.0000027417, 0.0000027454, + 0.0000027434, 0.0000027409, 0.0000027385, 0.0000027369, 0.0000027363, + 0.0000027364, 0.0000027363, 0.0000027354, 0.0000027336, 0.0000027301, + 0.0000027251, 0.0000027240, 0.0000027322, 0.0000027442, 0.0000027456, + 0.0000027345, 0.0000027207, 0.0000027139, 0.0000027144, 0.0000027186, + 0.0000027248, 0.0000027302, 0.0000027331, 0.0000027342, 0.0000027350, + 0.0000027364, 0.0000027389, 0.0000027432, 0.0000027491, 0.0000027586, + 0.0000027723, 0.0000027847, 0.0000027911, 0.0000027863, 0.0000027745, + 0.0000027675, 0.0000027673, 0.0000027654, 0.0000027530, 0.0000027083, + 0.0000026893, 0.0000027143, 0.0000027436, 0.0000027708, 0.0000027900, + 0.0000027977, 0.0000027957, 0.0000027758, 0.0000027515, 0.0000027465, + 0.0000027475, 0.0000027494, 0.0000027639, 0.0000027761, 0.0000027628, + 0.0000027577, 0.0000027588, 0.0000027558, 0.0000027508, 0.0000027481, + 0.0000027405, 0.0000027279, 0.0000027160, 0.0000027068, 0.0000027042, + 0.0000027062, 0.0000027098, 0.0000027212, 0.0000027297, 0.0000027282, + 0.0000027203, 0.0000027128, 0.0000027280, 0.0000027471, 0.0000027437, + 0.0000027324, 0.0000027290, 0.0000027300, 0.0000027287, 0.0000027059, + 0.0000026884, 0.0000026826, 0.0000026717, 0.0000026750, 0.0000026901, + 0.0000026974, 0.0000027052, 0.0000027135, 0.0000027177, 0.0000027173, + 0.0000027178, 0.0000027173, 0.0000027122, 0.0000027072, 0.0000027056, + 0.0000027059, 0.0000027067, 0.0000027071, 0.0000027074, 0.0000027101, + 0.0000027127, 0.0000027158, 0.0000027174, 0.0000027162, 0.0000027155, + 0.0000027164, 0.0000027181, 0.0000027199, 0.0000027214, 0.0000027209, + 0.0000027173, 0.0000027124, 0.0000027066, 0.0000027001, 0.0000026941, + 0.0000026893, 0.0000026861, 0.0000026843, 0.0000026826, 0.0000026814, + 0.0000026836, 0.0000026948, 0.0000027113, 0.0000027214, 0.0000027269, + 0.0000027316, 0.0000027266, 0.0000027108, 0.0000027003, 0.0000026998, + 0.0000027005, 0.0000027028, 0.0000027059, 0.0000027074, 0.0000027073, + 0.0000027053, 0.0000027034, 0.0000027043, 0.0000027098, 0.0000027202, + 0.0000027324, 0.0000027413, 0.0000027423, 0.0000027363, 0.0000027320, + 0.0000027359, 0.0000027415, 0.0000027401, 0.0000027349, 0.0000027320, + 0.0000027318, 0.0000027315, 0.0000027299, 0.0000027292, 0.0000027248, + 0.0000027106, 0.0000026964, 0.0000026918, 0.0000026861, 0.0000026785, + 0.0000026822, 0.0000026888, 0.0000026865, 0.0000026836, 0.0000026868, + 0.0000026928, 0.0000026956, 0.0000026968, 0.0000026971, 0.0000026969, + 0.0000026982, 0.0000027019, 0.0000027047, 0.0000027029, 0.0000026981, + 0.0000026948, 0.0000026937, 0.0000026953, 0.0000026980, 0.0000026979, + 0.0000026960, 0.0000026952, 0.0000026946, 0.0000026950, 0.0000026982, + 0.0000027025, 0.0000027059, 0.0000027069, 0.0000027019, 0.0000026825, + 0.0000026612, 0.0000026549, 0.0000026602, 0.0000026729, 0.0000026821, + 0.0000026862, 0.0000026925, 0.0000026996, 0.0000027043, 0.0000027084, + 0.0000027115, 0.0000027128, 0.0000027115, 0.0000027073, 0.0000027046, + 0.0000027046, 0.0000027069, 0.0000027150, 0.0000027264, 0.0000027338, + 0.0000027338, 0.0000027261, 0.0000027115, 0.0000026935, 0.0000026733, + 0.0000026543, 0.0000026408, 0.0000026351, 0.0000026348, 0.0000026376, + 0.0000026416, 0.0000026470, 0.0000026527, 0.0000026566, 0.0000026578, + 0.0000026581, 0.0000026595, 0.0000026620, 0.0000026636, 0.0000026641, + 0.0000026659, 0.0000026691, 0.0000026731, 0.0000026771, 0.0000026803, + 0.0000026820, 0.0000026823, 0.0000026804, 0.0000026760, 0.0000026707, + 0.0000026674, 0.0000026680, 0.0000026717, 0.0000026776, 0.0000026848, + 0.0000026912, 0.0000026954, 0.0000026977, 0.0000027006, 0.0000027056, + 0.0000027108, 0.0000027142, 0.0000027157, 0.0000027165, 0.0000027172, + 0.0000027169, 0.0000027145, 0.0000027083, 0.0000026993, 0.0000026906, + 0.0000026837, 0.0000026785, 0.0000026748, 0.0000026716, 0.0000026674, + 0.0000026630, 0.0000026588, 0.0000026556, 0.0000026541, 0.0000026538, + 0.0000026530, 0.0000026496, 0.0000026439, 0.0000026396, 0.0000026393, + 0.0000026424, 0.0000026483, 0.0000026570, 0.0000026675, 0.0000026785, + 0.0000026893, 0.0000026979, 0.0000027029, 0.0000027062, 0.0000027108, + 0.0000027170, 0.0000027221, 0.0000027225, 0.0000027207, 0.0000027164, + 0.0000027126, 0.0000027110, 0.0000027105, 0.0000027098, 0.0000027085, + 0.0000027076, 0.0000027069, 0.0000027055, 0.0000027039, 0.0000027035, + 0.0000027048, 0.0000027072, 0.0000027099, 0.0000027124, 0.0000027150, + 0.0000027189, 0.0000027253, 0.0000027336, 0.0000027420, 0.0000027487, + 0.0000027524, 0.0000027529, 0.0000027514, 0.0000027489, 0.0000027469, + 0.0000027534, 0.0000027533, 0.0000027536, 0.0000027541, 0.0000027551, + 0.0000027566, 0.0000027580, 0.0000027579, 0.0000027534, 0.0000027460, + 0.0000027420, 0.0000027447, 0.0000027534, 0.0000027565, 0.0000027481, + 0.0000027331, 0.0000027212, 0.0000027161, 0.0000027163, 0.0000027204, + 0.0000027270, 0.0000027329, 0.0000027360, 0.0000027376, 0.0000027395, + 0.0000027430, 0.0000027478, 0.0000027523, 0.0000027567, 0.0000027609, + 0.0000027663, 0.0000027728, 0.0000027792, 0.0000027829, 0.0000027821, + 0.0000027738, 0.0000027663, 0.0000027680, 0.0000027690, 0.0000027676, + 0.0000027462, 0.0000026981, 0.0000026934, 0.0000027194, 0.0000027492, + 0.0000027738, 0.0000027884, 0.0000027948, 0.0000027932, 0.0000027755, + 0.0000027538, 0.0000027464, 0.0000027447, 0.0000027469, 0.0000027638, + 0.0000027712, 0.0000027581, 0.0000027561, 0.0000027583, 0.0000027545, + 0.0000027519, 0.0000027517, 0.0000027435, 0.0000027300, 0.0000027178, + 0.0000027094, 0.0000027088, 0.0000027130, 0.0000027203, 0.0000027306, + 0.0000027327, 0.0000027274, 0.0000027163, 0.0000027170, 0.0000027399, + 0.0000027474, 0.0000027391, 0.0000027302, 0.0000027278, 0.0000027301, + 0.0000027251, 0.0000026992, 0.0000026841, 0.0000026808, 0.0000026702, + 0.0000026707, 0.0000026861, 0.0000026948, 0.0000026985, 0.0000027059, + 0.0000027118, 0.0000027134, 0.0000027154, 0.0000027154, 0.0000027097, + 0.0000027046, 0.0000027030, 0.0000027027, 0.0000027023, 0.0000027009, + 0.0000026985, 0.0000026983, 0.0000027005, 0.0000027050, 0.0000027102, + 0.0000027122, 0.0000027133, 0.0000027152, 0.0000027169, 0.0000027176, + 0.0000027190, 0.0000027210, 0.0000027214, 0.0000027196, 0.0000027154, + 0.0000027073, 0.0000026968, 0.0000026877, 0.0000026833, 0.0000026810, + 0.0000026801, 0.0000026803, 0.0000026801, 0.0000026826, 0.0000026933, + 0.0000027095, 0.0000027193, 0.0000027222, 0.0000027257, 0.0000027216, + 0.0000027067, 0.0000026959, 0.0000026953, 0.0000026978, 0.0000027017, + 0.0000027046, 0.0000027055, 0.0000027052, 0.0000027036, 0.0000027032, + 0.0000027051, 0.0000027113, 0.0000027232, 0.0000027359, 0.0000027418, + 0.0000027388, 0.0000027309, 0.0000027287, 0.0000027346, 0.0000027388, + 0.0000027365, 0.0000027314, 0.0000027295, 0.0000027318, 0.0000027331, + 0.0000027303, 0.0000027288, 0.0000027262, 0.0000027149, 0.0000027011, + 0.0000026955, 0.0000026903, 0.0000026797, 0.0000026801, 0.0000026875, + 0.0000026858, 0.0000026809, 0.0000026818, 0.0000026886, 0.0000026953, + 0.0000026997, 0.0000027017, 0.0000027023, 0.0000027029, 0.0000027045, + 0.0000027070, 0.0000027070, 0.0000027021, 0.0000026959, 0.0000026929, + 0.0000026939, 0.0000026974, 0.0000026984, 0.0000026973, 0.0000026970, + 0.0000026974, 0.0000026977, 0.0000026997, 0.0000027028, 0.0000027057, + 0.0000027081, 0.0000027091, 0.0000027008, 0.0000026825, 0.0000026678, + 0.0000026667, 0.0000026752, 0.0000026834, 0.0000026870, 0.0000026919, + 0.0000026980, 0.0000027012, 0.0000027044, 0.0000027096, 0.0000027144, + 0.0000027159, 0.0000027123, 0.0000027081, 0.0000027053, 0.0000027053, + 0.0000027106, 0.0000027220, 0.0000027318, 0.0000027340, 0.0000027281, + 0.0000027152, 0.0000026992, 0.0000026816, 0.0000026633, 0.0000026468, + 0.0000026355, 0.0000026319, 0.0000026336, 0.0000026379, 0.0000026424, + 0.0000026466, 0.0000026502, 0.0000026526, 0.0000026533, 0.0000026534, + 0.0000026540, 0.0000026549, 0.0000026557, 0.0000026574, 0.0000026605, + 0.0000026652, 0.0000026710, 0.0000026769, 0.0000026824, 0.0000026863, + 0.0000026874, 0.0000026848, 0.0000026781, 0.0000026700, 0.0000026638, + 0.0000026630, 0.0000026656, 0.0000026714, 0.0000026793, 0.0000026887, + 0.0000026967, 0.0000027013, 0.0000027040, 0.0000027081, 0.0000027137, + 0.0000027180, 0.0000027194, 0.0000027198, 0.0000027201, 0.0000027198, + 0.0000027176, 0.0000027121, 0.0000027035, 0.0000026943, 0.0000026872, + 0.0000026827, 0.0000026795, 0.0000026764, 0.0000026723, 0.0000026665, + 0.0000026608, 0.0000026572, 0.0000026560, 0.0000026555, 0.0000026538, + 0.0000026506, 0.0000026467, 0.0000026433, 0.0000026430, 0.0000026444, + 0.0000026475, 0.0000026530, 0.0000026638, 0.0000026799, 0.0000026966, + 0.0000027086, 0.0000027141, 0.0000027144, 0.0000027130, 0.0000027135, + 0.0000027176, 0.0000027228, 0.0000027251, 0.0000027244, 0.0000027207, + 0.0000027164, 0.0000027130, 0.0000027105, 0.0000027092, 0.0000027092, + 0.0000027100, 0.0000027102, 0.0000027090, 0.0000027075, 0.0000027065, + 0.0000027066, 0.0000027074, 0.0000027086, 0.0000027102, 0.0000027125, + 0.0000027167, 0.0000027231, 0.0000027309, 0.0000027393, 0.0000027473, + 0.0000027530, 0.0000027566, 0.0000027570, 0.0000027557, 0.0000027541, + 0.0000027635, 0.0000027656, 0.0000027674, 0.0000027688, 0.0000027693, + 0.0000027682, 0.0000027650, 0.0000027613, 0.0000027606, 0.0000027646, + 0.0000027701, 0.0000027683, 0.0000027571, 0.0000027418, 0.0000027290, + 0.0000027222, 0.0000027200, 0.0000027223, 0.0000027271, 0.0000027323, + 0.0000027370, 0.0000027407, 0.0000027439, 0.0000027471, 0.0000027512, + 0.0000027559, 0.0000027599, 0.0000027625, 0.0000027634, 0.0000027637, + 0.0000027659, 0.0000027700, 0.0000027743, 0.0000027757, 0.0000027748, + 0.0000027701, 0.0000027645, 0.0000027658, 0.0000027692, 0.0000027703, + 0.0000027680, 0.0000027359, 0.0000026937, 0.0000026983, 0.0000027240, + 0.0000027540, 0.0000027753, 0.0000027856, 0.0000027909, 0.0000027904, + 0.0000027748, 0.0000027567, 0.0000027475, 0.0000027431, 0.0000027450, + 0.0000027636, 0.0000027661, 0.0000027540, 0.0000027552, 0.0000027573, + 0.0000027527, 0.0000027535, 0.0000027556, 0.0000027473, 0.0000027337, + 0.0000027209, 0.0000027145, 0.0000027160, 0.0000027223, 0.0000027300, + 0.0000027347, 0.0000027330, 0.0000027225, 0.0000027147, 0.0000027277, + 0.0000027456, 0.0000027436, 0.0000027338, 0.0000027287, 0.0000027275, + 0.0000027300, 0.0000027171, 0.0000026901, 0.0000026805, 0.0000026783, + 0.0000026676, 0.0000026682, 0.0000026838, 0.0000026939, 0.0000026952, + 0.0000027004, 0.0000027064, 0.0000027094, 0.0000027121, 0.0000027119, + 0.0000027051, 0.0000026997, 0.0000026993, 0.0000027001, 0.0000027001, + 0.0000026981, 0.0000026939, 0.0000026902, 0.0000026906, 0.0000026940, + 0.0000027004, 0.0000027053, 0.0000027080, 0.0000027114, 0.0000027145, + 0.0000027158, 0.0000027165, 0.0000027175, 0.0000027189, 0.0000027200, + 0.0000027191, 0.0000027154, 0.0000027058, 0.0000026921, 0.0000026824, + 0.0000026776, 0.0000026758, 0.0000026767, 0.0000026791, 0.0000026807, + 0.0000026829, 0.0000026910, 0.0000027060, 0.0000027154, 0.0000027165, + 0.0000027191, 0.0000027168, 0.0000027041, 0.0000026927, 0.0000026922, + 0.0000026963, 0.0000027003, 0.0000027024, 0.0000027029, 0.0000027021, + 0.0000027014, 0.0000027030, 0.0000027068, 0.0000027141, 0.0000027263, + 0.0000027377, 0.0000027401, 0.0000027335, 0.0000027257, 0.0000027264, + 0.0000027331, 0.0000027364, 0.0000027336, 0.0000027283, 0.0000027274, + 0.0000027324, 0.0000027348, 0.0000027311, 0.0000027286, 0.0000027273, + 0.0000027191, 0.0000027067, 0.0000027001, 0.0000026952, 0.0000026835, + 0.0000026786, 0.0000026849, 0.0000026845, 0.0000026773, 0.0000026759, + 0.0000026832, 0.0000026943, 0.0000027028, 0.0000027067, 0.0000027084, + 0.0000027089, 0.0000027084, 0.0000027088, 0.0000027090, 0.0000027063, + 0.0000027005, 0.0000026954, 0.0000026947, 0.0000026978, 0.0000026998, + 0.0000026991, 0.0000026985, 0.0000026989, 0.0000026995, 0.0000027008, + 0.0000027024, 0.0000027035, 0.0000027055, 0.0000027089, 0.0000027089, + 0.0000026998, 0.0000026852, 0.0000026770, 0.0000026788, 0.0000026837, + 0.0000026869, 0.0000026915, 0.0000026973, 0.0000026993, 0.0000027001, + 0.0000027051, 0.0000027130, 0.0000027186, 0.0000027185, 0.0000027145, + 0.0000027084, 0.0000027042, 0.0000027067, 0.0000027161, 0.0000027272, + 0.0000027314, 0.0000027281, 0.0000027173, 0.0000027032, 0.0000026880, + 0.0000026721, 0.0000026564, 0.0000026422, 0.0000026330, 0.0000026316, + 0.0000026357, 0.0000026409, 0.0000026452, 0.0000026482, 0.0000026503, + 0.0000026505, 0.0000026498, 0.0000026489, 0.0000026489, 0.0000026494, + 0.0000026509, 0.0000026544, 0.0000026602, 0.0000026677, 0.0000026768, + 0.0000026860, 0.0000026933, 0.0000026971, 0.0000026970, 0.0000026921, + 0.0000026825, 0.0000026718, 0.0000026642, 0.0000026623, 0.0000026646, + 0.0000026690, 0.0000026754, 0.0000026848, 0.0000026958, 0.0000027037, + 0.0000027076, 0.0000027108, 0.0000027159, 0.0000027209, 0.0000027219, + 0.0000027213, 0.0000027213, 0.0000027214, 0.0000027199, 0.0000027153, + 0.0000027076, 0.0000026992, 0.0000026921, 0.0000026879, 0.0000026855, + 0.0000026825, 0.0000026777, 0.0000026712, 0.0000026640, 0.0000026589, + 0.0000026572, 0.0000026571, 0.0000026558, 0.0000026528, 0.0000026494, + 0.0000026475, 0.0000026471, 0.0000026472, 0.0000026475, 0.0000026505, + 0.0000026620, 0.0000026824, 0.0000027033, 0.0000027175, 0.0000027250, + 0.0000027272, 0.0000027255, 0.0000027208, 0.0000027173, 0.0000027174, + 0.0000027203, 0.0000027238, 0.0000027239, 0.0000027208, 0.0000027172, + 0.0000027139, 0.0000027122, 0.0000027122, 0.0000027129, 0.0000027136, + 0.0000027137, 0.0000027130, 0.0000027113, 0.0000027101, 0.0000027097, + 0.0000027094, 0.0000027088, 0.0000027083, 0.0000027093, 0.0000027130, + 0.0000027188, 0.0000027249, 0.0000027313, 0.0000027383, 0.0000027456, + 0.0000027524, 0.0000027567, 0.0000027588, 0.0000027613, 0.0000027550, + 0.0000027586, 0.0000027618, 0.0000027650, 0.0000027688, 0.0000027732, + 0.0000027777, 0.0000027813, 0.0000027819, 0.0000027766, 0.0000027637, + 0.0000027469, 0.0000027326, 0.0000027252, 0.0000027237, 0.0000027264, + 0.0000027315, 0.0000027368, 0.0000027409, 0.0000027439, 0.0000027474, + 0.0000027520, 0.0000027571, 0.0000027610, 0.0000027628, 0.0000027635, + 0.0000027643, 0.0000027663, 0.0000027680, 0.0000027673, 0.0000027664, + 0.0000027677, 0.0000027699, 0.0000027700, 0.0000027673, 0.0000027639, + 0.0000027613, 0.0000027635, 0.0000027676, 0.0000027700, 0.0000027723, + 0.0000027646, 0.0000027221, 0.0000026889, 0.0000027045, 0.0000027292, + 0.0000027580, 0.0000027750, 0.0000027818, 0.0000027866, 0.0000027856, + 0.0000027731, 0.0000027590, 0.0000027489, 0.0000027418, 0.0000027439, + 0.0000027631, 0.0000027598, 0.0000027507, 0.0000027553, 0.0000027555, + 0.0000027515, 0.0000027567, 0.0000027598, 0.0000027516, 0.0000027376, + 0.0000027254, 0.0000027215, 0.0000027247, 0.0000027304, 0.0000027353, + 0.0000027357, 0.0000027285, 0.0000027162, 0.0000027193, 0.0000027388, + 0.0000027446, 0.0000027374, 0.0000027302, 0.0000027285, 0.0000027287, + 0.0000027271, 0.0000027046, 0.0000026821, 0.0000026784, 0.0000026744, + 0.0000026647, 0.0000026677, 0.0000026842, 0.0000026932, 0.0000026932, + 0.0000026966, 0.0000027022, 0.0000027056, 0.0000027086, 0.0000027071, + 0.0000026991, 0.0000026945, 0.0000026955, 0.0000026986, 0.0000026999, + 0.0000026991, 0.0000026952, 0.0000026903, 0.0000026891, 0.0000026915, + 0.0000026975, 0.0000027038, 0.0000027065, 0.0000027088, 0.0000027118, + 0.0000027136, 0.0000027147, 0.0000027150, 0.0000027160, 0.0000027166, + 0.0000027166, 0.0000027162, 0.0000027124, 0.0000027012, 0.0000026872, + 0.0000026774, 0.0000026723, 0.0000026715, 0.0000026742, 0.0000026789, + 0.0000026820, 0.0000026828, 0.0000026893, 0.0000027030, 0.0000027112, + 0.0000027113, 0.0000027131, 0.0000027131, 0.0000027025, 0.0000026909, + 0.0000026903, 0.0000026950, 0.0000026981, 0.0000026998, 0.0000026996, + 0.0000026983, 0.0000026995, 0.0000027042, 0.0000027095, 0.0000027166, + 0.0000027283, 0.0000027371, 0.0000027361, 0.0000027273, 0.0000027219, + 0.0000027242, 0.0000027310, 0.0000027339, 0.0000027309, 0.0000027257, + 0.0000027265, 0.0000027339, 0.0000027369, 0.0000027322, 0.0000027286, + 0.0000027283, 0.0000027233, 0.0000027128, 0.0000027049, 0.0000027003, + 0.0000026895, 0.0000026788, 0.0000026810, 0.0000026824, 0.0000026744, + 0.0000026702, 0.0000026775, 0.0000026924, 0.0000027054, 0.0000027117, + 0.0000027142, 0.0000027152, 0.0000027141, 0.0000027120, 0.0000027104, + 0.0000027088, 0.0000027055, 0.0000027012, 0.0000026994, 0.0000027013, + 0.0000027036, 0.0000027031, 0.0000027015, 0.0000027015, 0.0000027025, + 0.0000027035, 0.0000027041, 0.0000027031, 0.0000027022, 0.0000027044, + 0.0000027077, 0.0000027061, 0.0000026975, 0.0000026870, 0.0000026829, + 0.0000026839, 0.0000026857, 0.0000026899, 0.0000026963, 0.0000026987, + 0.0000026975, 0.0000026998, 0.0000027083, 0.0000027186, 0.0000027223, + 0.0000027213, 0.0000027146, 0.0000027062, 0.0000027047, 0.0000027110, + 0.0000027211, 0.0000027274, 0.0000027253, 0.0000027170, 0.0000027060, + 0.0000026932, 0.0000026786, 0.0000026643, 0.0000026510, 0.0000026391, + 0.0000026326, 0.0000026342, 0.0000026401, 0.0000026457, 0.0000026498, + 0.0000026521, 0.0000026531, 0.0000026528, 0.0000026514, 0.0000026503, + 0.0000026500, 0.0000026512, 0.0000026547, 0.0000026613, 0.0000026708, + 0.0000026819, 0.0000026927, 0.0000027008, 0.0000027051, 0.0000027057, + 0.0000027032, 0.0000026964, 0.0000026852, 0.0000026731, 0.0000026657, + 0.0000026647, 0.0000026670, 0.0000026706, 0.0000026748, 0.0000026829, + 0.0000026942, 0.0000027041, 0.0000027098, 0.0000027131, 0.0000027174, + 0.0000027220, 0.0000027230, 0.0000027214, 0.0000027204, 0.0000027206, + 0.0000027203, 0.0000027168, 0.0000027097, 0.0000027018, 0.0000026959, + 0.0000026920, 0.0000026900, 0.0000026883, 0.0000026849, 0.0000026793, + 0.0000026719, 0.0000026651, 0.0000026612, 0.0000026596, 0.0000026580, + 0.0000026551, 0.0000026524, 0.0000026511, 0.0000026513, 0.0000026516, + 0.0000026510, 0.0000026519, 0.0000026629, 0.0000026847, 0.0000027063, + 0.0000027199, 0.0000027269, 0.0000027311, 0.0000027328, 0.0000027312, + 0.0000027264, 0.0000027209, 0.0000027167, 0.0000027155, 0.0000027172, + 0.0000027180, 0.0000027177, 0.0000027167, 0.0000027170, 0.0000027186, + 0.0000027198, 0.0000027196, 0.0000027187, 0.0000027175, 0.0000027149, + 0.0000027121, 0.0000027114, 0.0000027124, 0.0000027129, 0.0000027118, + 0.0000027098, 0.0000027094, 0.0000027111, 0.0000027142, 0.0000027180, + 0.0000027225, 0.0000027281, 0.0000027342, 0.0000027401, 0.0000027444, + 0.0000027477, 0.0000027512, 0.0000027576, 0.0000027636, 0.0000027693, + 0.0000027746, 0.0000027786, 0.0000027794, 0.0000027769, 0.0000027691, + 0.0000027562, 0.0000027428, 0.0000027338, 0.0000027297, 0.0000027298, + 0.0000027324, 0.0000027362, 0.0000027405, 0.0000027447, 0.0000027482, + 0.0000027519, 0.0000027562, 0.0000027610, 0.0000027657, 0.0000027690, + 0.0000027709, 0.0000027727, 0.0000027754, 0.0000027782, 0.0000027814, + 0.0000027842, 0.0000027842, 0.0000027813, 0.0000027776, 0.0000027748, + 0.0000027712, 0.0000027657, 0.0000027609, 0.0000027591, 0.0000027613, + 0.0000027664, 0.0000027678, 0.0000027713, 0.0000027745, 0.0000027550, + 0.0000027067, 0.0000026898, 0.0000027100, 0.0000027345, 0.0000027609, + 0.0000027731, 0.0000027782, 0.0000027818, 0.0000027795, 0.0000027695, + 0.0000027591, 0.0000027487, 0.0000027397, 0.0000027447, 0.0000027628, + 0.0000027539, 0.0000027495, 0.0000027546, 0.0000027524, 0.0000027525, + 0.0000027623, 0.0000027640, 0.0000027556, 0.0000027415, 0.0000027308, + 0.0000027285, 0.0000027313, 0.0000027347, 0.0000027367, 0.0000027331, + 0.0000027201, 0.0000027145, 0.0000027292, 0.0000027417, 0.0000027390, + 0.0000027318, 0.0000027296, 0.0000027301, 0.0000027293, 0.0000027180, + 0.0000026906, 0.0000026772, 0.0000026757, 0.0000026696, 0.0000026629, + 0.0000026702, 0.0000026861, 0.0000026920, 0.0000026912, 0.0000026944, + 0.0000026990, 0.0000027024, 0.0000027047, 0.0000027010, 0.0000026933, + 0.0000026914, 0.0000026946, 0.0000027005, 0.0000027057, 0.0000027064, + 0.0000027049, 0.0000027008, 0.0000026983, 0.0000026983, 0.0000027014, + 0.0000027059, 0.0000027083, 0.0000027095, 0.0000027111, 0.0000027121, + 0.0000027131, 0.0000027136, 0.0000027145, 0.0000027140, 0.0000027122, + 0.0000027115, 0.0000027114, 0.0000027062, 0.0000026939, 0.0000026807, + 0.0000026723, 0.0000026680, 0.0000026684, 0.0000026730, 0.0000026795, + 0.0000026828, 0.0000026842, 0.0000026902, 0.0000027017, 0.0000027074, + 0.0000027060, 0.0000027085, 0.0000027108, 0.0000027016, 0.0000026894, + 0.0000026886, 0.0000026931, 0.0000026956, 0.0000026963, 0.0000026952, + 0.0000026947, 0.0000026994, 0.0000027068, 0.0000027118, 0.0000027181, + 0.0000027288, 0.0000027346, 0.0000027306, 0.0000027216, 0.0000027186, + 0.0000027218, 0.0000027284, 0.0000027311, 0.0000027281, 0.0000027241, + 0.0000027272, 0.0000027363, 0.0000027393, 0.0000027332, 0.0000027285, + 0.0000027290, 0.0000027272, 0.0000027186, 0.0000027094, 0.0000027050, + 0.0000026966, 0.0000026820, 0.0000026776, 0.0000026790, 0.0000026728, + 0.0000026664, 0.0000026710, 0.0000026884, 0.0000027063, 0.0000027160, + 0.0000027196, 0.0000027210, 0.0000027204, 0.0000027175, 0.0000027138, + 0.0000027113, 0.0000027092, 0.0000027069, 0.0000027058, 0.0000027070, + 0.0000027090, 0.0000027088, 0.0000027070, 0.0000027063, 0.0000027072, + 0.0000027083, 0.0000027087, 0.0000027070, 0.0000027035, 0.0000027021, + 0.0000027033, 0.0000027045, 0.0000027014, 0.0000026929, 0.0000026855, + 0.0000026834, 0.0000026838, 0.0000026870, 0.0000026940, 0.0000026989, + 0.0000026976, 0.0000026965, 0.0000027018, 0.0000027145, 0.0000027240, + 0.0000027254, 0.0000027209, 0.0000027109, 0.0000027063, 0.0000027090, + 0.0000027164, 0.0000027226, 0.0000027215, 0.0000027141, 0.0000027062, + 0.0000026977, 0.0000026853, 0.0000026710, 0.0000026582, 0.0000026465, + 0.0000026377, 0.0000026356, 0.0000026392, 0.0000026452, 0.0000026505, + 0.0000026549, 0.0000026581, 0.0000026595, 0.0000026593, 0.0000026586, + 0.0000026589, 0.0000026609, 0.0000026648, 0.0000026709, 0.0000026798, + 0.0000026903, 0.0000027003, 0.0000027071, 0.0000027100, 0.0000027102, + 0.0000027085, 0.0000027044, 0.0000026968, 0.0000026852, 0.0000026728, + 0.0000026661, 0.0000026668, 0.0000026705, 0.0000026748, 0.0000026783, + 0.0000026842, 0.0000026937, 0.0000027030, 0.0000027092, 0.0000027130, + 0.0000027168, 0.0000027209, 0.0000027220, 0.0000027203, 0.0000027180, + 0.0000027180, 0.0000027185, 0.0000027163, 0.0000027100, 0.0000027027, + 0.0000026982, 0.0000026963, 0.0000026950, 0.0000026937, 0.0000026922, + 0.0000026884, 0.0000026817, 0.0000026744, 0.0000026691, 0.0000026665, + 0.0000026640, 0.0000026602, 0.0000026567, 0.0000026553, 0.0000026556, + 0.0000026561, 0.0000026562, 0.0000026582, 0.0000026677, 0.0000026854, + 0.0000027035, 0.0000027162, 0.0000027237, 0.0000027283, 0.0000027317, + 0.0000027333, 0.0000027324, 0.0000027283, 0.0000027216, 0.0000027143, + 0.0000027101, 0.0000027088, 0.0000027094, 0.0000027114, 0.0000027146, + 0.0000027186, 0.0000027231, 0.0000027253, 0.0000027252, 0.0000027235, + 0.0000027197, 0.0000027146, 0.0000027103, 0.0000027093, 0.0000027114, + 0.0000027131, 0.0000027139, 0.0000027140, 0.0000027147, 0.0000027163, + 0.0000027185, 0.0000027207, 0.0000027237, 0.0000027283, 0.0000027337, + 0.0000027389, 0.0000027432, 0.0000027471, 0.0000027518, 0.0000027451, + 0.0000027478, 0.0000027501, 0.0000027504, 0.0000027482, 0.0000027434, + 0.0000027372, 0.0000027321, 0.0000027304, 0.0000027322, 0.0000027364, + 0.0000027401, 0.0000027425, 0.0000027443, 0.0000027469, 0.0000027513, + 0.0000027568, 0.0000027621, 0.0000027664, 0.0000027694, 0.0000027715, + 0.0000027741, 0.0000027785, 0.0000027840, 0.0000027888, 0.0000027911, + 0.0000027918, 0.0000027927, 0.0000027953, 0.0000027966, 0.0000027962, + 0.0000027946, 0.0000027901, 0.0000027830, 0.0000027730, 0.0000027638, + 0.0000027603, 0.0000027609, 0.0000027650, 0.0000027666, 0.0000027684, + 0.0000027746, 0.0000027728, 0.0000027389, 0.0000026940, 0.0000026941, + 0.0000027145, 0.0000027397, 0.0000027620, 0.0000027700, 0.0000027748, + 0.0000027759, 0.0000027721, 0.0000027650, 0.0000027564, 0.0000027470, + 0.0000027379, 0.0000027480, 0.0000027612, 0.0000027497, 0.0000027487, + 0.0000027524, 0.0000027505, 0.0000027578, 0.0000027684, 0.0000027680, + 0.0000027590, 0.0000027451, 0.0000027352, 0.0000027326, 0.0000027336, + 0.0000027357, 0.0000027352, 0.0000027252, 0.0000027140, 0.0000027205, + 0.0000027370, 0.0000027390, 0.0000027324, 0.0000027297, 0.0000027316, + 0.0000027317, 0.0000027251, 0.0000027025, 0.0000026801, 0.0000026754, + 0.0000026730, 0.0000026653, 0.0000026641, 0.0000026751, 0.0000026875, + 0.0000026896, 0.0000026895, 0.0000026934, 0.0000026967, 0.0000026993, + 0.0000026992, 0.0000026941, 0.0000026896, 0.0000026914, 0.0000026986, + 0.0000027093, 0.0000027180, 0.0000027204, 0.0000027179, 0.0000027119, + 0.0000027063, 0.0000027036, 0.0000027035, 0.0000027051, 0.0000027078, + 0.0000027084, 0.0000027088, 0.0000027096, 0.0000027105, 0.0000027104, + 0.0000027105, 0.0000027102, 0.0000027082, 0.0000027067, 0.0000027063, + 0.0000027037, 0.0000026948, 0.0000026830, 0.0000026736, 0.0000026677, + 0.0000026652, 0.0000026671, 0.0000026737, 0.0000026809, 0.0000026848, + 0.0000026869, 0.0000026922, 0.0000027007, 0.0000027030, 0.0000027010, + 0.0000027055, 0.0000027099, 0.0000027010, 0.0000026877, 0.0000026865, + 0.0000026909, 0.0000026922, 0.0000026918, 0.0000026909, 0.0000026932, + 0.0000027015, 0.0000027096, 0.0000027128, 0.0000027185, 0.0000027281, + 0.0000027312, 0.0000027244, 0.0000027169, 0.0000027156, 0.0000027192, + 0.0000027255, 0.0000027280, 0.0000027255, 0.0000027234, 0.0000027292, + 0.0000027394, 0.0000027416, 0.0000027341, 0.0000027284, 0.0000027294, + 0.0000027298, 0.0000027234, 0.0000027140, 0.0000027090, 0.0000027036, + 0.0000026888, 0.0000026767, 0.0000026746, 0.0000026712, 0.0000026635, + 0.0000026641, 0.0000026811, 0.0000027037, 0.0000027185, 0.0000027245, + 0.0000027265, 0.0000027266, 0.0000027244, 0.0000027204, 0.0000027165, + 0.0000027135, 0.0000027118, 0.0000027114, 0.0000027124, 0.0000027140, + 0.0000027145, 0.0000027132, 0.0000027115, 0.0000027115, 0.0000027123, + 0.0000027129, 0.0000027121, 0.0000027086, 0.0000027047, 0.0000027025, + 0.0000027019, 0.0000027003, 0.0000026948, 0.0000026871, 0.0000026819, + 0.0000026813, 0.0000026837, 0.0000026902, 0.0000026975, 0.0000026993, + 0.0000026966, 0.0000026972, 0.0000027080, 0.0000027219, 0.0000027284, + 0.0000027262, 0.0000027167, 0.0000027089, 0.0000027097, 0.0000027145, + 0.0000027186, 0.0000027180, 0.0000027114, 0.0000027047, 0.0000026999, + 0.0000026915, 0.0000026781, 0.0000026648, 0.0000026534, 0.0000026441, + 0.0000026398, 0.0000026408, 0.0000026452, 0.0000026502, 0.0000026554, + 0.0000026603, 0.0000026641, 0.0000026666, 0.0000026683, 0.0000026704, + 0.0000026740, 0.0000026787, 0.0000026837, 0.0000026896, 0.0000026973, + 0.0000027055, 0.0000027118, 0.0000027142, 0.0000027131, 0.0000027107, + 0.0000027084, 0.0000027046, 0.0000026972, 0.0000026854, 0.0000026726, + 0.0000026657, 0.0000026673, 0.0000026734, 0.0000026791, 0.0000026837, + 0.0000026881, 0.0000026948, 0.0000027017, 0.0000027068, 0.0000027101, + 0.0000027129, 0.0000027164, 0.0000027187, 0.0000027172, 0.0000027138, + 0.0000027131, 0.0000027143, 0.0000027134, 0.0000027084, 0.0000027021, + 0.0000026988, 0.0000026988, 0.0000026991, 0.0000026985, 0.0000026973, + 0.0000026950, 0.0000026897, 0.0000026828, 0.0000026779, 0.0000026760, + 0.0000026742, 0.0000026704, 0.0000026657, 0.0000026629, 0.0000026626, + 0.0000026633, 0.0000026646, 0.0000026678, 0.0000026745, 0.0000026852, + 0.0000026971, 0.0000027086, 0.0000027183, 0.0000027240, 0.0000027266, + 0.0000027291, 0.0000027309, 0.0000027302, 0.0000027263, 0.0000027189, + 0.0000027106, 0.0000027057, 0.0000027033, 0.0000027035, 0.0000027057, + 0.0000027103, 0.0000027165, 0.0000027224, 0.0000027260, 0.0000027272, + 0.0000027258, 0.0000027206, 0.0000027136, 0.0000027074, 0.0000027048, + 0.0000027057, 0.0000027075, 0.0000027092, 0.0000027114, 0.0000027142, + 0.0000027171, 0.0000027196, 0.0000027214, 0.0000027238, 0.0000027266, + 0.0000027299, 0.0000027331, 0.0000027364, 0.0000027396, 0.0000027423, + 0.0000027126, 0.0000027134, 0.0000027154, 0.0000027182, 0.0000027213, + 0.0000027245, 0.0000027283, 0.0000027325, 0.0000027368, 0.0000027401, + 0.0000027430, 0.0000027467, 0.0000027515, 0.0000027570, 0.0000027621, + 0.0000027664, 0.0000027701, 0.0000027733, 0.0000027756, 0.0000027773, + 0.0000027789, 0.0000027816, 0.0000027855, 0.0000027893, 0.0000027906, + 0.0000027903, 0.0000027893, 0.0000027887, 0.0000027898, 0.0000027922, + 0.0000027945, 0.0000027953, 0.0000027947, 0.0000027907, 0.0000027824, + 0.0000027726, 0.0000027660, 0.0000027629, 0.0000027624, 0.0000027652, + 0.0000027661, 0.0000027714, 0.0000027779, 0.0000027629, 0.0000027186, + 0.0000026877, 0.0000027002, 0.0000027185, 0.0000027439, 0.0000027607, + 0.0000027672, 0.0000027705, 0.0000027688, 0.0000027641, 0.0000027585, + 0.0000027526, 0.0000027440, 0.0000027375, 0.0000027528, 0.0000027581, + 0.0000027474, 0.0000027485, 0.0000027496, 0.0000027513, 0.0000027658, + 0.0000027733, 0.0000027711, 0.0000027613, 0.0000027466, 0.0000027360, + 0.0000027328, 0.0000027333, 0.0000027344, 0.0000027287, 0.0000027157, + 0.0000027150, 0.0000027301, 0.0000027369, 0.0000027331, 0.0000027278, + 0.0000027306, 0.0000027341, 0.0000027296, 0.0000027130, 0.0000026874, + 0.0000026764, 0.0000026743, 0.0000026695, 0.0000026648, 0.0000026691, + 0.0000026810, 0.0000026873, 0.0000026876, 0.0000026894, 0.0000026930, + 0.0000026949, 0.0000026946, 0.0000026924, 0.0000026888, 0.0000026891, + 0.0000026964, 0.0000027085, 0.0000027207, 0.0000027272, 0.0000027266, + 0.0000027216, 0.0000027132, 0.0000027046, 0.0000026994, 0.0000026970, + 0.0000026973, 0.0000026992, 0.0000027011, 0.0000027020, 0.0000027027, + 0.0000027041, 0.0000027045, 0.0000027042, 0.0000027038, 0.0000027028, + 0.0000027017, 0.0000027004, 0.0000026971, 0.0000026902, 0.0000026813, + 0.0000026734, 0.0000026680, 0.0000026646, 0.0000026645, 0.0000026692, + 0.0000026770, 0.0000026838, 0.0000026872, 0.0000026894, 0.0000026944, + 0.0000026992, 0.0000026986, 0.0000026979, 0.0000027051, 0.0000027096, + 0.0000026990, 0.0000026850, 0.0000026839, 0.0000026878, 0.0000026879, + 0.0000026872, 0.0000026881, 0.0000026943, 0.0000027050, 0.0000027109, + 0.0000027123, 0.0000027182, 0.0000027266, 0.0000027263, 0.0000027180, + 0.0000027120, 0.0000027119, 0.0000027160, 0.0000027222, 0.0000027252, + 0.0000027240, 0.0000027242, 0.0000027323, 0.0000027429, 0.0000027440, + 0.0000027352, 0.0000027282, 0.0000027290, 0.0000027308, 0.0000027274, + 0.0000027190, 0.0000027127, 0.0000027088, 0.0000026977, 0.0000026798, + 0.0000026709, 0.0000026684, 0.0000026616, 0.0000026582, 0.0000026708, + 0.0000026964, 0.0000027177, 0.0000027281, 0.0000027324, 0.0000027332, + 0.0000027320, 0.0000027295, 0.0000027259, 0.0000027215, 0.0000027182, + 0.0000027169, 0.0000027173, 0.0000027186, 0.0000027193, 0.0000027183, + 0.0000027154, 0.0000027130, 0.0000027131, 0.0000027137, 0.0000027137, + 0.0000027114, 0.0000027086, 0.0000027055, 0.0000027029, 0.0000027001, + 0.0000026948, 0.0000026878, 0.0000026813, 0.0000026792, 0.0000026805, + 0.0000026860, 0.0000026940, 0.0000026994, 0.0000026992, 0.0000026964, + 0.0000027023, 0.0000027175, 0.0000027288, 0.0000027303, 0.0000027226, + 0.0000027136, 0.0000027118, 0.0000027147, 0.0000027169, 0.0000027149, + 0.0000027092, 0.0000027040, 0.0000027016, 0.0000026971, 0.0000026856, + 0.0000026714, 0.0000026597, 0.0000026502, 0.0000026450, 0.0000026453, + 0.0000026484, 0.0000026520, 0.0000026562, 0.0000026618, 0.0000026677, + 0.0000026730, 0.0000026777, 0.0000026822, 0.0000026866, 0.0000026907, + 0.0000026939, 0.0000026968, 0.0000027005, 0.0000027063, 0.0000027125, + 0.0000027163, 0.0000027165, 0.0000027138, 0.0000027106, 0.0000027083, + 0.0000027056, 0.0000026992, 0.0000026875, 0.0000026743, 0.0000026671, + 0.0000026691, 0.0000026761, 0.0000026832, 0.0000026887, 0.0000026931, + 0.0000026974, 0.0000027018, 0.0000027046, 0.0000027055, 0.0000027061, + 0.0000027080, 0.0000027106, 0.0000027110, 0.0000027087, 0.0000027071, + 0.0000027077, 0.0000027075, 0.0000027037, 0.0000026985, 0.0000026964, + 0.0000026977, 0.0000026996, 0.0000026999, 0.0000026989, 0.0000026969, + 0.0000026932, 0.0000026881, 0.0000026840, 0.0000026832, 0.0000026839, + 0.0000026826, 0.0000026787, 0.0000026752, 0.0000026741, 0.0000026747, + 0.0000026760, 0.0000026781, 0.0000026809, 0.0000026846, 0.0000026905, + 0.0000027000, 0.0000027113, 0.0000027189, 0.0000027206, 0.0000027216, + 0.0000027246, 0.0000027267, 0.0000027260, 0.0000027219, 0.0000027146, + 0.0000027084, 0.0000027047, 0.0000027032, 0.0000027035, 0.0000027059, + 0.0000027098, 0.0000027142, 0.0000027186, 0.0000027224, 0.0000027247, + 0.0000027244, 0.0000027206, 0.0000027141, 0.0000027072, 0.0000027029, + 0.0000027013, 0.0000027012, 0.0000027019, 0.0000027035, 0.0000027059, + 0.0000027085, 0.0000027098, 0.0000027098, 0.0000027092, 0.0000027090, + 0.0000027092, 0.0000027098, 0.0000027109, 0.0000027118, 0.0000027123, + 0.0000027167, 0.0000027173, 0.0000027188, 0.0000027212, 0.0000027242, + 0.0000027272, 0.0000027299, 0.0000027339, 0.0000027405, 0.0000027487, + 0.0000027563, 0.0000027620, 0.0000027663, 0.0000027695, 0.0000027722, + 0.0000027746, 0.0000027764, 0.0000027782, 0.0000027787, 0.0000027775, + 0.0000027758, 0.0000027751, 0.0000027755, 0.0000027773, 0.0000027793, + 0.0000027798, 0.0000027790, 0.0000027776, 0.0000027770, 0.0000027782, + 0.0000027818, 0.0000027849, 0.0000027869, 0.0000027866, 0.0000027825, + 0.0000027757, 0.0000027691, 0.0000027647, 0.0000027608, 0.0000027610, + 0.0000027637, 0.0000027677, 0.0000027772, 0.0000027751, 0.0000027446, + 0.0000026989, 0.0000026881, 0.0000027057, 0.0000027226, 0.0000027462, + 0.0000027589, 0.0000027644, 0.0000027654, 0.0000027615, 0.0000027561, + 0.0000027512, 0.0000027478, 0.0000027404, 0.0000027386, 0.0000027564, + 0.0000027543, 0.0000027452, 0.0000027474, 0.0000027471, 0.0000027563, + 0.0000027735, 0.0000027765, 0.0000027728, 0.0000027610, 0.0000027441, + 0.0000027333, 0.0000027311, 0.0000027324, 0.0000027291, 0.0000027184, + 0.0000027131, 0.0000027238, 0.0000027347, 0.0000027330, 0.0000027273, + 0.0000027270, 0.0000027336, 0.0000027342, 0.0000027216, 0.0000026972, + 0.0000026798, 0.0000026763, 0.0000026726, 0.0000026675, 0.0000026682, + 0.0000026767, 0.0000026852, 0.0000026865, 0.0000026879, 0.0000026911, + 0.0000026925, 0.0000026910, 0.0000026883, 0.0000026868, 0.0000026871, + 0.0000026920, 0.0000027053, 0.0000027176, 0.0000027244, 0.0000027271, + 0.0000027258, 0.0000027192, 0.0000027102, 0.0000027007, 0.0000026934, + 0.0000026896, 0.0000026896, 0.0000026908, 0.0000026933, 0.0000026943, + 0.0000026943, 0.0000026959, 0.0000026976, 0.0000026975, 0.0000026962, + 0.0000026951, 0.0000026935, 0.0000026917, 0.0000026891, 0.0000026843, + 0.0000026780, 0.0000026722, 0.0000026682, 0.0000026659, 0.0000026651, + 0.0000026682, 0.0000026744, 0.0000026818, 0.0000026864, 0.0000026887, + 0.0000026919, 0.0000026964, 0.0000026975, 0.0000026958, 0.0000026973, + 0.0000027063, 0.0000027090, 0.0000026949, 0.0000026817, 0.0000026821, + 0.0000026845, 0.0000026838, 0.0000026843, 0.0000026883, 0.0000026982, + 0.0000027087, 0.0000027107, 0.0000027108, 0.0000027172, 0.0000027228, + 0.0000027193, 0.0000027102, 0.0000027058, 0.0000027064, 0.0000027117, + 0.0000027188, 0.0000027229, 0.0000027235, 0.0000027263, 0.0000027359, + 0.0000027460, 0.0000027465, 0.0000027372, 0.0000027286, 0.0000027283, + 0.0000027310, 0.0000027302, 0.0000027239, 0.0000027165, 0.0000027121, + 0.0000027053, 0.0000026887, 0.0000026719, 0.0000026653, 0.0000026604, + 0.0000026551, 0.0000026607, 0.0000026841, 0.0000027116, 0.0000027289, + 0.0000027373, 0.0000027391, 0.0000027386, 0.0000027379, 0.0000027366, + 0.0000027326, 0.0000027275, 0.0000027241, 0.0000027230, 0.0000027233, + 0.0000027230, 0.0000027210, 0.0000027168, 0.0000027123, 0.0000027099, + 0.0000027096, 0.0000027100, 0.0000027095, 0.0000027086, 0.0000027075, + 0.0000027057, 0.0000027026, 0.0000026975, 0.0000026902, 0.0000026831, + 0.0000026787, 0.0000026781, 0.0000026818, 0.0000026892, 0.0000026973, + 0.0000027009, 0.0000026991, 0.0000026990, 0.0000027118, 0.0000027270, + 0.0000027319, 0.0000027279, 0.0000027191, 0.0000027156, 0.0000027161, + 0.0000027172, 0.0000027137, 0.0000027072, 0.0000027040, 0.0000027035, + 0.0000027027, 0.0000026948, 0.0000026795, 0.0000026654, 0.0000026556, + 0.0000026492, 0.0000026489, 0.0000026530, 0.0000026574, 0.0000026611, + 0.0000026658, 0.0000026723, 0.0000026792, 0.0000026850, 0.0000026899, + 0.0000026940, 0.0000026972, 0.0000026995, 0.0000027012, 0.0000027033, + 0.0000027066, 0.0000027120, 0.0000027173, 0.0000027200, 0.0000027191, + 0.0000027155, 0.0000027111, 0.0000027084, 0.0000027063, 0.0000027008, + 0.0000026897, 0.0000026773, 0.0000026707, 0.0000026732, 0.0000026804, + 0.0000026872, 0.0000026925, 0.0000026973, 0.0000027009, 0.0000027032, + 0.0000027041, 0.0000027030, 0.0000027004, 0.0000026987, 0.0000026992, + 0.0000027003, 0.0000027004, 0.0000027001, 0.0000027003, 0.0000027004, + 0.0000026984, 0.0000026948, 0.0000026936, 0.0000026952, 0.0000026975, + 0.0000026982, 0.0000026977, 0.0000026967, 0.0000026943, 0.0000026904, + 0.0000026869, 0.0000026867, 0.0000026896, 0.0000026920, 0.0000026911, + 0.0000026887, 0.0000026879, 0.0000026881, 0.0000026876, 0.0000026861, + 0.0000026845, 0.0000026840, 0.0000026863, 0.0000026936, 0.0000027054, + 0.0000027139, 0.0000027154, 0.0000027152, 0.0000027179, 0.0000027221, + 0.0000027238, 0.0000027224, 0.0000027180, 0.0000027128, 0.0000027097, + 0.0000027080, 0.0000027077, 0.0000027088, 0.0000027110, 0.0000027131, + 0.0000027153, 0.0000027174, 0.0000027184, 0.0000027195, 0.0000027197, + 0.0000027182, 0.0000027150, 0.0000027108, 0.0000027074, 0.0000027061, + 0.0000027061, 0.0000027073, 0.0000027093, 0.0000027121, 0.0000027149, + 0.0000027161, 0.0000027156, 0.0000027145, 0.0000027139, 0.0000027143, + 0.0000027151, 0.0000027160, 0.0000027165, 0.0000027166, 0.0000027310, + 0.0000027301, 0.0000027297, 0.0000027302, 0.0000027326, 0.0000027379, + 0.0000027456, 0.0000027535, 0.0000027593, 0.0000027622, 0.0000027642, + 0.0000027671, 0.0000027711, 0.0000027746, 0.0000027767, 0.0000027761, + 0.0000027733, 0.0000027692, 0.0000027646, 0.0000027612, 0.0000027598, + 0.0000027606, 0.0000027634, 0.0000027678, 0.0000027717, 0.0000027734, + 0.0000027721, 0.0000027692, 0.0000027660, 0.0000027645, 0.0000027660, + 0.0000027692, 0.0000027713, 0.0000027728, 0.0000027723, 0.0000027696, + 0.0000027657, 0.0000027618, 0.0000027574, 0.0000027559, 0.0000027591, + 0.0000027645, 0.0000027737, 0.0000027799, 0.0000027637, 0.0000027226, + 0.0000026898, 0.0000026931, 0.0000027099, 0.0000027269, 0.0000027474, + 0.0000027570, 0.0000027609, 0.0000027599, 0.0000027545, 0.0000027481, + 0.0000027444, 0.0000027428, 0.0000027364, 0.0000027418, 0.0000027589, + 0.0000027495, 0.0000027439, 0.0000027448, 0.0000027462, 0.0000027639, + 0.0000027789, 0.0000027789, 0.0000027725, 0.0000027570, 0.0000027384, + 0.0000027287, 0.0000027289, 0.0000027290, 0.0000027198, 0.0000027121, + 0.0000027189, 0.0000027325, 0.0000027338, 0.0000027277, 0.0000027242, + 0.0000027297, 0.0000027352, 0.0000027294, 0.0000027080, 0.0000026860, + 0.0000026789, 0.0000026758, 0.0000026713, 0.0000026696, 0.0000026754, + 0.0000026836, 0.0000026870, 0.0000026878, 0.0000026910, 0.0000026925, + 0.0000026899, 0.0000026863, 0.0000026847, 0.0000026854, 0.0000026897, + 0.0000026994, 0.0000027110, 0.0000027186, 0.0000027232, 0.0000027242, + 0.0000027223, 0.0000027175, 0.0000027109, 0.0000027027, 0.0000026948, + 0.0000026901, 0.0000026894, 0.0000026891, 0.0000026889, 0.0000026884, + 0.0000026866, 0.0000026871, 0.0000026890, 0.0000026903, 0.0000026904, + 0.0000026893, 0.0000026877, 0.0000026853, 0.0000026830, 0.0000026801, + 0.0000026764, 0.0000026732, 0.0000026698, 0.0000026685, 0.0000026689, + 0.0000026721, 0.0000026768, 0.0000026822, 0.0000026858, 0.0000026874, + 0.0000026899, 0.0000026945, 0.0000026975, 0.0000026962, 0.0000026950, + 0.0000026993, 0.0000027089, 0.0000027069, 0.0000026896, 0.0000026802, + 0.0000026816, 0.0000026822, 0.0000026819, 0.0000026844, 0.0000026913, + 0.0000027034, 0.0000027106, 0.0000027091, 0.0000027096, 0.0000027154, + 0.0000027171, 0.0000027099, 0.0000027005, 0.0000026979, 0.0000027005, + 0.0000027075, 0.0000027154, 0.0000027205, 0.0000027232, 0.0000027288, + 0.0000027392, 0.0000027483, 0.0000027489, 0.0000027402, 0.0000027304, + 0.0000027279, 0.0000027300, 0.0000027309, 0.0000027275, 0.0000027206, + 0.0000027147, 0.0000027100, 0.0000026991, 0.0000026796, 0.0000026652, + 0.0000026593, 0.0000026546, 0.0000026544, 0.0000026702, 0.0000026992, + 0.0000027253, 0.0000027391, 0.0000027422, 0.0000027416, 0.0000027410, + 0.0000027421, 0.0000027405, 0.0000027359, 0.0000027315, 0.0000027288, + 0.0000027272, 0.0000027253, 0.0000027215, 0.0000027159, 0.0000027095, + 0.0000027050, 0.0000027037, 0.0000027039, 0.0000027042, 0.0000027047, + 0.0000027058, 0.0000027067, 0.0000027060, 0.0000027021, 0.0000026952, + 0.0000026872, 0.0000026809, 0.0000026779, 0.0000026785, 0.0000026839, + 0.0000026925, 0.0000027008, 0.0000027026, 0.0000026991, 0.0000027056, + 0.0000027226, 0.0000027331, 0.0000027317, 0.0000027246, 0.0000027198, + 0.0000027187, 0.0000027185, 0.0000027147, 0.0000027067, 0.0000027033, + 0.0000027054, 0.0000027072, 0.0000027043, 0.0000026911, 0.0000026737, + 0.0000026606, 0.0000026533, 0.0000026513, 0.0000026557, 0.0000026630, + 0.0000026686, 0.0000026732, 0.0000026783, 0.0000026840, 0.0000026894, + 0.0000026938, 0.0000026973, 0.0000027001, 0.0000027024, 0.0000027048, + 0.0000027072, 0.0000027099, 0.0000027134, 0.0000027188, 0.0000027235, + 0.0000027250, 0.0000027231, 0.0000027172, 0.0000027106, 0.0000027064, + 0.0000027043, 0.0000026998, 0.0000026898, 0.0000026780, 0.0000026731, + 0.0000026766, 0.0000026852, 0.0000026919, 0.0000026963, 0.0000027002, + 0.0000027036, 0.0000027046, 0.0000027044, 0.0000027026, 0.0000026984, + 0.0000026930, 0.0000026896, 0.0000026887, 0.0000026893, 0.0000026910, + 0.0000026922, 0.0000026927, 0.0000026925, 0.0000026912, 0.0000026904, + 0.0000026917, 0.0000026943, 0.0000026957, 0.0000026957, 0.0000026955, + 0.0000026948, 0.0000026925, 0.0000026899, 0.0000026893, 0.0000026925, + 0.0000026976, 0.0000026997, 0.0000026987, 0.0000026975, 0.0000026975, + 0.0000026959, 0.0000026909, 0.0000026855, 0.0000026834, 0.0000026848, + 0.0000026907, 0.0000027017, 0.0000027106, 0.0000027119, 0.0000027106, + 0.0000027130, 0.0000027188, 0.0000027231, 0.0000027234, 0.0000027213, + 0.0000027182, 0.0000027168, 0.0000027160, 0.0000027157, 0.0000027160, + 0.0000027171, 0.0000027180, 0.0000027187, 0.0000027191, 0.0000027186, + 0.0000027178, 0.0000027169, 0.0000027159, 0.0000027147, 0.0000027129, + 0.0000027106, 0.0000027097, 0.0000027111, 0.0000027145, 0.0000027186, + 0.0000027225, 0.0000027265, 0.0000027296, 0.0000027308, 0.0000027308, + 0.0000027308, 0.0000027313, 0.0000027320, 0.0000027327, 0.0000027331, + 0.0000027329, 0.0000027321, 0.0000027515, 0.0000027544, 0.0000027577, + 0.0000027606, 0.0000027627, 0.0000027639, 0.0000027648, 0.0000027657, + 0.0000027679, 0.0000027707, 0.0000027723, 0.0000027723, 0.0000027714, + 0.0000027702, 0.0000027686, 0.0000027655, 0.0000027607, 0.0000027550, + 0.0000027510, 0.0000027507, 0.0000027537, 0.0000027573, 0.0000027620, + 0.0000027667, 0.0000027693, 0.0000027692, 0.0000027645, 0.0000027581, + 0.0000027524, 0.0000027483, 0.0000027476, 0.0000027496, 0.0000027512, + 0.0000027523, 0.0000027527, 0.0000027524, 0.0000027521, 0.0000027511, + 0.0000027499, 0.0000027501, 0.0000027533, 0.0000027603, 0.0000027703, + 0.0000027797, 0.0000027752, 0.0000027449, 0.0000027019, 0.0000026858, + 0.0000027002, 0.0000027136, 0.0000027318, 0.0000027478, 0.0000027551, + 0.0000027567, 0.0000027538, 0.0000027474, 0.0000027410, 0.0000027387, + 0.0000027378, 0.0000027342, 0.0000027482, 0.0000027576, 0.0000027453, + 0.0000027421, 0.0000027415, 0.0000027491, 0.0000027714, 0.0000027811, + 0.0000027797, 0.0000027695, 0.0000027503, 0.0000027314, 0.0000027246, + 0.0000027255, 0.0000027216, 0.0000027121, 0.0000027142, 0.0000027292, + 0.0000027348, 0.0000027304, 0.0000027237, 0.0000027252, 0.0000027333, + 0.0000027342, 0.0000027188, 0.0000026946, 0.0000026826, 0.0000026795, + 0.0000026752, 0.0000026732, 0.0000026761, 0.0000026831, 0.0000026883, + 0.0000026895, 0.0000026921, 0.0000026935, 0.0000026916, 0.0000026877, + 0.0000026852, 0.0000026859, 0.0000026898, 0.0000026964, 0.0000027032, + 0.0000027097, 0.0000027147, 0.0000027179, 0.0000027190, 0.0000027183, + 0.0000027163, 0.0000027129, 0.0000027068, 0.0000026995, 0.0000026940, + 0.0000026920, 0.0000026903, 0.0000026889, 0.0000026870, 0.0000026847, + 0.0000026832, 0.0000026838, 0.0000026859, 0.0000026889, 0.0000026893, + 0.0000026886, 0.0000026867, 0.0000026838, 0.0000026811, 0.0000026793, + 0.0000026781, 0.0000026770, 0.0000026765, 0.0000026767, 0.0000026789, + 0.0000026824, 0.0000026856, 0.0000026868, 0.0000026865, 0.0000026874, + 0.0000026915, 0.0000026966, 0.0000026975, 0.0000026954, 0.0000026957, + 0.0000027034, 0.0000027104, 0.0000027028, 0.0000026854, 0.0000026800, + 0.0000026817, 0.0000026812, 0.0000026823, 0.0000026864, 0.0000026965, + 0.0000027081, 0.0000027106, 0.0000027074, 0.0000027086, 0.0000027122, + 0.0000027100, 0.0000026998, 0.0000026919, 0.0000026918, 0.0000026969, + 0.0000027047, 0.0000027125, 0.0000027178, 0.0000027228, 0.0000027309, + 0.0000027417, 0.0000027499, 0.0000027510, 0.0000027439, 0.0000027339, + 0.0000027287, 0.0000027287, 0.0000027301, 0.0000027289, 0.0000027240, + 0.0000027178, 0.0000027129, 0.0000027071, 0.0000026915, 0.0000026709, + 0.0000026596, 0.0000026551, 0.0000026533, 0.0000026597, 0.0000026833, + 0.0000027147, 0.0000027370, 0.0000027427, 0.0000027415, 0.0000027397, + 0.0000027412, 0.0000027417, 0.0000027386, 0.0000027351, 0.0000027322, + 0.0000027294, 0.0000027260, 0.0000027211, 0.0000027150, 0.0000027082, + 0.0000027028, 0.0000027006, 0.0000027003, 0.0000027006, 0.0000027010, + 0.0000027023, 0.0000027051, 0.0000027069, 0.0000027059, 0.0000027010, + 0.0000026932, 0.0000026854, 0.0000026801, 0.0000026777, 0.0000026795, + 0.0000026862, 0.0000026964, 0.0000027045, 0.0000027021, 0.0000027013, + 0.0000027149, 0.0000027311, 0.0000027348, 0.0000027291, 0.0000027240, + 0.0000027218, 0.0000027204, 0.0000027173, 0.0000027088, 0.0000027033, + 0.0000027066, 0.0000027126, 0.0000027133, 0.0000027047, 0.0000026869, + 0.0000026686, 0.0000026572, 0.0000026537, 0.0000026570, 0.0000026662, + 0.0000026750, 0.0000026814, 0.0000026858, 0.0000026893, 0.0000026932, + 0.0000026964, 0.0000026987, 0.0000027010, 0.0000027040, 0.0000027081, + 0.0000027127, 0.0000027163, 0.0000027190, 0.0000027216, 0.0000027255, + 0.0000027280, 0.0000027277, 0.0000027230, 0.0000027147, 0.0000027065, + 0.0000027019, 0.0000027006, 0.0000026975, 0.0000026885, 0.0000026768, + 0.0000026727, 0.0000026770, 0.0000026879, 0.0000026962, 0.0000027002, + 0.0000027030, 0.0000027053, 0.0000027060, 0.0000027048, 0.0000027024, + 0.0000026979, 0.0000026915, 0.0000026858, 0.0000026818, 0.0000026795, + 0.0000026799, 0.0000026812, 0.0000026823, 0.0000026833, 0.0000026842, + 0.0000026853, 0.0000026872, 0.0000026896, 0.0000026917, 0.0000026925, + 0.0000026930, 0.0000026932, 0.0000026925, 0.0000026910, 0.0000026905, + 0.0000026930, 0.0000026981, 0.0000027029, 0.0000027041, 0.0000027021, + 0.0000027003, 0.0000026983, 0.0000026927, 0.0000026852, 0.0000026821, + 0.0000026842, 0.0000026909, 0.0000027010, 0.0000027096, 0.0000027106, + 0.0000027079, 0.0000027100, 0.0000027171, 0.0000027240, 0.0000027270, + 0.0000027265, 0.0000027254, 0.0000027261, 0.0000027274, 0.0000027276, + 0.0000027276, 0.0000027275, 0.0000027279, 0.0000027287, 0.0000027293, + 0.0000027285, 0.0000027257, 0.0000027222, 0.0000027196, 0.0000027170, + 0.0000027143, 0.0000027118, 0.0000027093, 0.0000027083, 0.0000027106, + 0.0000027162, 0.0000027225, 0.0000027278, 0.0000027319, 0.0000027352, + 0.0000027368, 0.0000027379, 0.0000027394, 0.0000027409, 0.0000027423, + 0.0000027439, 0.0000027457, 0.0000027473, 0.0000027491, 0.0000027816, + 0.0000027811, 0.0000027794, 0.0000027774, 0.0000027762, 0.0000027766, + 0.0000027785, 0.0000027803, 0.0000027795, 0.0000027746, 0.0000027683, + 0.0000027641, 0.0000027629, 0.0000027628, 0.0000027620, 0.0000027585, + 0.0000027529, 0.0000027481, 0.0000027467, 0.0000027492, 0.0000027534, + 0.0000027572, 0.0000027606, 0.0000027633, 0.0000027631, 0.0000027585, + 0.0000027517, 0.0000027439, 0.0000027382, 0.0000027340, 0.0000027313, + 0.0000027307, 0.0000027310, 0.0000027308, 0.0000027309, 0.0000027318, + 0.0000027344, 0.0000027370, 0.0000027393, 0.0000027429, 0.0000027481, + 0.0000027551, 0.0000027674, 0.0000027797, 0.0000027817, 0.0000027628, + 0.0000027231, 0.0000026904, 0.0000026913, 0.0000027062, 0.0000027196, + 0.0000027361, 0.0000027477, 0.0000027518, 0.0000027512, 0.0000027466, + 0.0000027400, 0.0000027349, 0.0000027343, 0.0000027331, 0.0000027352, + 0.0000027547, 0.0000027540, 0.0000027418, 0.0000027391, 0.0000027392, + 0.0000027552, 0.0000027769, 0.0000027819, 0.0000027783, 0.0000027637, + 0.0000027419, 0.0000027245, 0.0000027201, 0.0000027194, 0.0000027129, + 0.0000027118, 0.0000027245, 0.0000027355, 0.0000027336, 0.0000027269, + 0.0000027228, 0.0000027291, 0.0000027338, 0.0000027266, 0.0000027049, + 0.0000026873, 0.0000026837, 0.0000026810, 0.0000026776, 0.0000026777, + 0.0000026834, 0.0000026894, 0.0000026924, 0.0000026943, 0.0000026961, + 0.0000026947, 0.0000026924, 0.0000026900, 0.0000026899, 0.0000026925, + 0.0000026964, 0.0000026991, 0.0000027017, 0.0000027043, 0.0000027069, + 0.0000027094, 0.0000027124, 0.0000027141, 0.0000027143, 0.0000027131, + 0.0000027094, 0.0000027042, 0.0000026997, 0.0000026975, 0.0000026957, + 0.0000026939, 0.0000026915, 0.0000026896, 0.0000026870, 0.0000026852, + 0.0000026858, 0.0000026889, 0.0000026917, 0.0000026926, 0.0000026930, + 0.0000026925, 0.0000026909, 0.0000026903, 0.0000026911, 0.0000026910, + 0.0000026896, 0.0000026880, 0.0000026878, 0.0000026888, 0.0000026894, + 0.0000026884, 0.0000026860, 0.0000026849, 0.0000026881, 0.0000026943, + 0.0000026980, 0.0000026969, 0.0000026954, 0.0000026988, 0.0000027076, + 0.0000027102, 0.0000026980, 0.0000026831, 0.0000026808, 0.0000026816, + 0.0000026815, 0.0000026836, 0.0000026904, 0.0000027028, 0.0000027104, + 0.0000027090, 0.0000027063, 0.0000027080, 0.0000027091, 0.0000027030, + 0.0000026928, 0.0000026883, 0.0000026904, 0.0000026964, 0.0000027037, + 0.0000027101, 0.0000027152, 0.0000027219, 0.0000027321, 0.0000027433, + 0.0000027510, 0.0000027523, 0.0000027469, 0.0000027382, 0.0000027313, + 0.0000027284, 0.0000027282, 0.0000027281, 0.0000027258, 0.0000027213, + 0.0000027161, 0.0000027119, 0.0000027026, 0.0000026822, 0.0000026632, + 0.0000026559, 0.0000026545, 0.0000026553, 0.0000026691, 0.0000026990, + 0.0000027292, 0.0000027423, 0.0000027404, 0.0000027364, 0.0000027374, + 0.0000027394, 0.0000027382, 0.0000027355, 0.0000027331, 0.0000027304, + 0.0000027267, 0.0000027216, 0.0000027157, 0.0000027094, 0.0000027036, + 0.0000027005, 0.0000026995, 0.0000026993, 0.0000026994, 0.0000026998, + 0.0000027023, 0.0000027059, 0.0000027068, 0.0000027043, 0.0000026987, + 0.0000026907, 0.0000026835, 0.0000026787, 0.0000026774, 0.0000026801, + 0.0000026891, 0.0000027019, 0.0000027061, 0.0000027014, 0.0000027066, + 0.0000027238, 0.0000027353, 0.0000027331, 0.0000027275, 0.0000027241, + 0.0000027218, 0.0000027199, 0.0000027127, 0.0000027045, 0.0000027062, + 0.0000027154, 0.0000027199, 0.0000027175, 0.0000027043, 0.0000026833, + 0.0000026642, 0.0000026559, 0.0000026580, 0.0000026679, 0.0000026794, + 0.0000026878, 0.0000026930, 0.0000026954, 0.0000026968, 0.0000026989, + 0.0000027013, 0.0000027039, 0.0000027073, 0.0000027114, 0.0000027153, + 0.0000027186, 0.0000027209, 0.0000027231, 0.0000027256, 0.0000027280, + 0.0000027282, 0.0000027252, 0.0000027184, 0.0000027096, 0.0000027024, + 0.0000026996, 0.0000026996, 0.0000026980, 0.0000026896, 0.0000026774, + 0.0000026721, 0.0000026763, 0.0000026884, 0.0000026983, 0.0000027030, + 0.0000027053, 0.0000027073, 0.0000027079, 0.0000027064, 0.0000027024, + 0.0000026977, 0.0000026917, 0.0000026855, 0.0000026801, 0.0000026761, + 0.0000026740, 0.0000026730, 0.0000026724, 0.0000026730, 0.0000026744, + 0.0000026760, 0.0000026778, 0.0000026799, 0.0000026824, 0.0000026842, + 0.0000026854, 0.0000026861, 0.0000026860, 0.0000026853, 0.0000026855, + 0.0000026880, 0.0000026929, 0.0000026987, 0.0000027023, 0.0000027025, + 0.0000027005, 0.0000026974, 0.0000026925, 0.0000026859, 0.0000026827, + 0.0000026842, 0.0000026913, 0.0000027019, 0.0000027115, 0.0000027128, + 0.0000027092, 0.0000027095, 0.0000027169, 0.0000027262, 0.0000027319, + 0.0000027336, 0.0000027338, 0.0000027354, 0.0000027391, 0.0000027413, + 0.0000027415, 0.0000027409, 0.0000027407, 0.0000027416, 0.0000027430, + 0.0000027431, 0.0000027413, 0.0000027379, 0.0000027338, 0.0000027304, + 0.0000027267, 0.0000027224, 0.0000027182, 0.0000027151, 0.0000027137, + 0.0000027162, 0.0000027221, 0.0000027284, 0.0000027337, 0.0000027380, + 0.0000027416, 0.0000027453, 0.0000027496, 0.0000027550, 0.0000027605, + 0.0000027661, 0.0000027713, 0.0000027758, 0.0000027792, 0.0000027811, + 0.0000027961, 0.0000027973, 0.0000027982, 0.0000027984, 0.0000027974, + 0.0000027939, 0.0000027872, 0.0000027784, 0.0000027693, 0.0000027631, + 0.0000027607, 0.0000027604, 0.0000027605, 0.0000027596, 0.0000027569, + 0.0000027516, 0.0000027460, 0.0000027434, 0.0000027447, 0.0000027481, + 0.0000027505, 0.0000027513, 0.0000027524, 0.0000027533, 0.0000027522, + 0.0000027481, 0.0000027419, 0.0000027364, 0.0000027322, 0.0000027287, + 0.0000027249, 0.0000027217, 0.0000027197, 0.0000027181, 0.0000027173, + 0.0000027193, 0.0000027230, 0.0000027269, 0.0000027313, 0.0000027369, + 0.0000027439, 0.0000027521, 0.0000027640, 0.0000027779, 0.0000027835, + 0.0000027744, 0.0000027436, 0.0000027055, 0.0000026900, 0.0000026995, + 0.0000027123, 0.0000027260, 0.0000027388, 0.0000027459, 0.0000027469, + 0.0000027439, 0.0000027380, 0.0000027324, 0.0000027299, 0.0000027310, + 0.0000027301, 0.0000027399, 0.0000027579, 0.0000027482, 0.0000027390, + 0.0000027361, 0.0000027402, 0.0000027628, 0.0000027800, 0.0000027817, + 0.0000027741, 0.0000027560, 0.0000027333, 0.0000027182, 0.0000027141, + 0.0000027112, 0.0000027095, 0.0000027203, 0.0000027349, 0.0000027365, + 0.0000027310, 0.0000027244, 0.0000027262, 0.0000027325, 0.0000027305, + 0.0000027144, 0.0000026944, 0.0000026869, 0.0000026865, 0.0000026836, + 0.0000026814, 0.0000026841, 0.0000026900, 0.0000026942, 0.0000026972, + 0.0000026990, 0.0000026993, 0.0000026993, 0.0000026996, 0.0000026989, + 0.0000026994, 0.0000027001, 0.0000026991, 0.0000026979, 0.0000026980, + 0.0000026973, 0.0000026971, 0.0000027011, 0.0000027075, 0.0000027124, + 0.0000027144, 0.0000027156, 0.0000027148, 0.0000027133, 0.0000027132, + 0.0000027139, 0.0000027126, 0.0000027097, 0.0000027058, 0.0000027022, + 0.0000026981, 0.0000026932, 0.0000026916, 0.0000026927, 0.0000026952, + 0.0000026973, 0.0000027010, 0.0000027050, 0.0000027063, 0.0000027061, + 0.0000027066, 0.0000027060, 0.0000027027, 0.0000026985, 0.0000026959, + 0.0000026942, 0.0000026917, 0.0000026892, 0.0000026851, 0.0000026824, + 0.0000026849, 0.0000026920, 0.0000026978, 0.0000026984, 0.0000026962, + 0.0000026966, 0.0000027031, 0.0000027108, 0.0000027086, 0.0000026941, + 0.0000026824, 0.0000026813, 0.0000026815, 0.0000026822, 0.0000026862, + 0.0000026967, 0.0000027083, 0.0000027107, 0.0000027074, 0.0000027065, + 0.0000027084, 0.0000027070, 0.0000026988, 0.0000026904, 0.0000026884, + 0.0000026920, 0.0000026980, 0.0000027043, 0.0000027092, 0.0000027136, + 0.0000027210, 0.0000027324, 0.0000027441, 0.0000027513, 0.0000027525, + 0.0000027488, 0.0000027417, 0.0000027348, 0.0000027294, 0.0000027267, + 0.0000027262, 0.0000027257, 0.0000027241, 0.0000027201, 0.0000027155, + 0.0000027099, 0.0000026950, 0.0000026723, 0.0000026584, 0.0000026563, + 0.0000026560, 0.0000026605, 0.0000026821, 0.0000027156, 0.0000027374, + 0.0000027388, 0.0000027338, 0.0000027341, 0.0000027373, 0.0000027374, + 0.0000027354, 0.0000027334, 0.0000027308, 0.0000027269, 0.0000027221, + 0.0000027163, 0.0000027103, 0.0000027042, 0.0000026999, 0.0000026983, + 0.0000026979, 0.0000026980, 0.0000026984, 0.0000026999, 0.0000027031, + 0.0000027059, 0.0000027054, 0.0000027011, 0.0000026943, 0.0000026865, + 0.0000026801, 0.0000026760, 0.0000026755, 0.0000026811, 0.0000026941, + 0.0000027061, 0.0000027051, 0.0000027019, 0.0000027129, 0.0000027305, + 0.0000027350, 0.0000027306, 0.0000027262, 0.0000027225, 0.0000027207, + 0.0000027167, 0.0000027081, 0.0000027054, 0.0000027141, 0.0000027235, + 0.0000027254, 0.0000027200, 0.0000027031, 0.0000026799, 0.0000026614, + 0.0000026589, 0.0000026677, 0.0000026816, 0.0000026922, 0.0000026986, + 0.0000027011, 0.0000027010, 0.0000027017, 0.0000027054, 0.0000027094, + 0.0000027116, 0.0000027129, 0.0000027147, 0.0000027168, 0.0000027185, + 0.0000027194, 0.0000027212, 0.0000027247, 0.0000027268, 0.0000027262, + 0.0000027222, 0.0000027153, 0.0000027079, 0.0000027025, 0.0000027011, + 0.0000027019, 0.0000027014, 0.0000026943, 0.0000026819, 0.0000026741, + 0.0000026779, 0.0000026899, 0.0000026999, 0.0000027043, 0.0000027067, + 0.0000027090, 0.0000027101, 0.0000027091, 0.0000027046, 0.0000026980, + 0.0000026913, 0.0000026854, 0.0000026808, 0.0000026781, 0.0000026758, + 0.0000026735, 0.0000026721, 0.0000026715, 0.0000026717, 0.0000026722, + 0.0000026723, 0.0000026719, 0.0000026722, 0.0000026737, 0.0000026750, + 0.0000026756, 0.0000026758, 0.0000026758, 0.0000026761, 0.0000026785, + 0.0000026838, 0.0000026905, 0.0000026962, 0.0000026996, 0.0000027004, + 0.0000026989, 0.0000026946, 0.0000026886, 0.0000026853, 0.0000026865, + 0.0000026922, 0.0000027026, 0.0000027151, 0.0000027188, 0.0000027138, + 0.0000027121, 0.0000027184, 0.0000027276, 0.0000027349, 0.0000027389, + 0.0000027406, 0.0000027427, 0.0000027469, 0.0000027508, 0.0000027522, + 0.0000027524, 0.0000027526, 0.0000027531, 0.0000027536, 0.0000027533, + 0.0000027520, 0.0000027497, 0.0000027465, 0.0000027425, 0.0000027392, + 0.0000027358, 0.0000027318, 0.0000027276, 0.0000027243, 0.0000027233, + 0.0000027273, 0.0000027342, 0.0000027422, 0.0000027494, 0.0000027552, + 0.0000027595, 0.0000027639, 0.0000027684, 0.0000027726, 0.0000027768, + 0.0000027813, 0.0000027857, 0.0000027894, 0.0000027923, 0.0000027944, + 0.0000028119, 0.0000028108, 0.0000028080, 0.0000028033, 0.0000027959, + 0.0000027855, 0.0000027744, 0.0000027668, 0.0000027637, 0.0000027627, + 0.0000027606, 0.0000027573, 0.0000027547, 0.0000027533, 0.0000027499, + 0.0000027436, 0.0000027390, 0.0000027388, 0.0000027417, 0.0000027441, + 0.0000027437, 0.0000027426, 0.0000027444, 0.0000027473, 0.0000027485, + 0.0000027468, 0.0000027420, 0.0000027367, 0.0000027322, 0.0000027282, + 0.0000027240, 0.0000027200, 0.0000027174, 0.0000027161, 0.0000027161, + 0.0000027182, 0.0000027215, 0.0000027249, 0.0000027283, 0.0000027333, + 0.0000027409, 0.0000027507, 0.0000027634, 0.0000027777, 0.0000027851, + 0.0000027815, 0.0000027597, 0.0000027236, 0.0000026966, 0.0000026958, + 0.0000027073, 0.0000027180, 0.0000027311, 0.0000027397, 0.0000027424, + 0.0000027404, 0.0000027347, 0.0000027292, 0.0000027264, 0.0000027276, + 0.0000027285, 0.0000027298, 0.0000027482, 0.0000027568, 0.0000027431, + 0.0000027358, 0.0000027333, 0.0000027450, 0.0000027699, 0.0000027806, + 0.0000027796, 0.0000027683, 0.0000027478, 0.0000027256, 0.0000027116, + 0.0000027065, 0.0000027059, 0.0000027154, 0.0000027327, 0.0000027384, + 0.0000027344, 0.0000027278, 0.0000027254, 0.0000027308, 0.0000027312, + 0.0000027209, 0.0000027019, 0.0000026904, 0.0000026891, 0.0000026895, + 0.0000026857, 0.0000026858, 0.0000026909, 0.0000026947, 0.0000026972, + 0.0000027009, 0.0000027034, 0.0000027058, 0.0000027089, 0.0000027100, + 0.0000027088, 0.0000027075, 0.0000027049, 0.0000027002, 0.0000026964, + 0.0000026936, 0.0000026903, 0.0000026896, 0.0000026966, 0.0000027061, + 0.0000027143, 0.0000027207, 0.0000027261, 0.0000027293, 0.0000027316, + 0.0000027345, 0.0000027367, 0.0000027354, 0.0000027312, 0.0000027260, + 0.0000027203, 0.0000027142, 0.0000027086, 0.0000027051, 0.0000027043, + 0.0000027054, 0.0000027072, 0.0000027112, 0.0000027171, 0.0000027204, + 0.0000027200, 0.0000027181, 0.0000027152, 0.0000027105, 0.0000027053, + 0.0000027006, 0.0000026970, 0.0000026931, 0.0000026881, 0.0000026823, + 0.0000026791, 0.0000026818, 0.0000026900, 0.0000026979, 0.0000026995, + 0.0000026973, 0.0000026966, 0.0000027005, 0.0000027083, 0.0000027132, + 0.0000027073, 0.0000026921, 0.0000026822, 0.0000026812, 0.0000026818, + 0.0000026837, 0.0000026910, 0.0000027038, 0.0000027106, 0.0000027092, + 0.0000027075, 0.0000027085, 0.0000027099, 0.0000027069, 0.0000026980, + 0.0000026911, 0.0000026912, 0.0000026954, 0.0000027005, 0.0000027054, + 0.0000027093, 0.0000027131, 0.0000027204, 0.0000027318, 0.0000027436, + 0.0000027508, 0.0000027524, 0.0000027497, 0.0000027439, 0.0000027377, + 0.0000027315, 0.0000027263, 0.0000027240, 0.0000027240, 0.0000027246, + 0.0000027238, 0.0000027194, 0.0000027141, 0.0000027048, 0.0000026847, + 0.0000026647, 0.0000026582, 0.0000026577, 0.0000026577, 0.0000026687, + 0.0000026989, 0.0000027278, 0.0000027354, 0.0000027326, 0.0000027322, + 0.0000027362, 0.0000027370, 0.0000027352, 0.0000027331, 0.0000027300, + 0.0000027253, 0.0000027201, 0.0000027146, 0.0000027090, 0.0000027032, + 0.0000026989, 0.0000026968, 0.0000026962, 0.0000026966, 0.0000026975, + 0.0000026987, 0.0000027008, 0.0000027037, 0.0000027048, 0.0000027026, + 0.0000026967, 0.0000026889, 0.0000026816, 0.0000026760, 0.0000026734, + 0.0000026748, 0.0000026836, 0.0000027000, 0.0000027087, 0.0000027038, + 0.0000027030, 0.0000027192, 0.0000027328, 0.0000027323, 0.0000027283, + 0.0000027230, 0.0000027198, 0.0000027183, 0.0000027123, 0.0000027072, + 0.0000027116, 0.0000027221, 0.0000027292, 0.0000027297, 0.0000027207, + 0.0000027012, 0.0000026763, 0.0000026614, 0.0000026652, 0.0000026802, + 0.0000026933, 0.0000027009, 0.0000027049, 0.0000027051, 0.0000027051, + 0.0000027083, 0.0000027138, 0.0000027175, 0.0000027184, 0.0000027181, + 0.0000027173, 0.0000027168, 0.0000027165, 0.0000027168, 0.0000027190, + 0.0000027224, 0.0000027252, 0.0000027258, 0.0000027231, 0.0000027172, + 0.0000027103, 0.0000027051, 0.0000027036, 0.0000027049, 0.0000027053, + 0.0000026996, 0.0000026884, 0.0000026804, 0.0000026834, 0.0000026952, + 0.0000027048, 0.0000027075, 0.0000027082, 0.0000027102, 0.0000027120, + 0.0000027117, 0.0000027079, 0.0000027010, 0.0000026935, 0.0000026876, + 0.0000026840, 0.0000026829, 0.0000026826, 0.0000026809, 0.0000026782, + 0.0000026767, 0.0000026758, 0.0000026754, 0.0000026744, 0.0000026730, + 0.0000026717, 0.0000026710, 0.0000026707, 0.0000026703, 0.0000026702, + 0.0000026704, 0.0000026710, 0.0000026730, 0.0000026778, 0.0000026848, + 0.0000026918, 0.0000026972, 0.0000027008, 0.0000027020, 0.0000026994, + 0.0000026942, 0.0000026909, 0.0000026914, 0.0000026948, 0.0000027031, + 0.0000027162, 0.0000027235, 0.0000027210, 0.0000027194, 0.0000027238, + 0.0000027299, 0.0000027353, 0.0000027395, 0.0000027424, 0.0000027450, + 0.0000027490, 0.0000027542, 0.0000027572, 0.0000027588, 0.0000027600, + 0.0000027604, 0.0000027603, 0.0000027608, 0.0000027612, 0.0000027606, + 0.0000027588, 0.0000027560, 0.0000027529, 0.0000027507, 0.0000027483, + 0.0000027452, 0.0000027418, 0.0000027401, 0.0000027414, 0.0000027462, + 0.0000027520, 0.0000027570, 0.0000027605, 0.0000027633, 0.0000027664, + 0.0000027713, 0.0000027782, 0.0000027853, 0.0000027922, 0.0000027987, + 0.0000028044, 0.0000028087, 0.0000028111, 0.0000028120, 0.0000028017, + 0.0000027975, 0.0000027927, 0.0000027872, 0.0000027819, 0.0000027763, + 0.0000027723, 0.0000027709, 0.0000027700, 0.0000027650, 0.0000027565, + 0.0000027494, 0.0000027473, 0.0000027464, 0.0000027419, 0.0000027350, + 0.0000027321, 0.0000027336, 0.0000027373, 0.0000027395, 0.0000027402, + 0.0000027416, 0.0000027455, 0.0000027497, 0.0000027516, 0.0000027505, + 0.0000027453, 0.0000027384, 0.0000027333, 0.0000027293, 0.0000027252, + 0.0000027209, 0.0000027180, 0.0000027182, 0.0000027212, 0.0000027249, + 0.0000027279, 0.0000027296, 0.0000027306, 0.0000027333, 0.0000027399, + 0.0000027505, 0.0000027647, 0.0000027792, 0.0000027866, 0.0000027854, + 0.0000027709, 0.0000027403, 0.0000027102, 0.0000026991, 0.0000027033, + 0.0000027122, 0.0000027228, 0.0000027337, 0.0000027379, 0.0000027370, + 0.0000027320, 0.0000027260, 0.0000027230, 0.0000027237, 0.0000027270, + 0.0000027271, 0.0000027345, 0.0000027545, 0.0000027517, 0.0000027391, + 0.0000027317, 0.0000027322, 0.0000027525, 0.0000027750, 0.0000027801, + 0.0000027763, 0.0000027620, 0.0000027402, 0.0000027182, 0.0000027038, + 0.0000027008, 0.0000027088, 0.0000027285, 0.0000027402, 0.0000027375, + 0.0000027309, 0.0000027267, 0.0000027295, 0.0000027324, 0.0000027248, + 0.0000027083, 0.0000026940, 0.0000026915, 0.0000026927, 0.0000026920, + 0.0000026884, 0.0000026909, 0.0000026947, 0.0000026962, 0.0000026990, + 0.0000027037, 0.0000027101, 0.0000027165, 0.0000027198, 0.0000027191, + 0.0000027159, 0.0000027118, 0.0000027062, 0.0000026985, 0.0000026914, + 0.0000026869, 0.0000026860, 0.0000026884, 0.0000026971, 0.0000027111, + 0.0000027248, 0.0000027360, 0.0000027443, 0.0000027482, 0.0000027504, + 0.0000027524, 0.0000027538, 0.0000027524, 0.0000027483, 0.0000027429, + 0.0000027370, 0.0000027306, 0.0000027247, 0.0000027199, 0.0000027175, + 0.0000027169, 0.0000027176, 0.0000027203, 0.0000027243, 0.0000027268, + 0.0000027262, 0.0000027231, 0.0000027183, 0.0000027131, 0.0000027080, + 0.0000027028, 0.0000026978, 0.0000026919, 0.0000026851, 0.0000026780, + 0.0000026747, 0.0000026780, 0.0000026879, 0.0000026973, 0.0000026997, + 0.0000026982, 0.0000026972, 0.0000027004, 0.0000027067, 0.0000027145, + 0.0000027168, 0.0000027073, 0.0000026915, 0.0000026819, 0.0000026814, + 0.0000026829, 0.0000026868, 0.0000026977, 0.0000027084, 0.0000027099, + 0.0000027084, 0.0000027095, 0.0000027125, 0.0000027135, 0.0000027086, + 0.0000026997, 0.0000026941, 0.0000026943, 0.0000026975, 0.0000027018, + 0.0000027057, 0.0000027088, 0.0000027125, 0.0000027194, 0.0000027302, + 0.0000027419, 0.0000027498, 0.0000027521, 0.0000027506, 0.0000027457, + 0.0000027403, 0.0000027343, 0.0000027275, 0.0000027226, 0.0000027214, + 0.0000027233, 0.0000027251, 0.0000027230, 0.0000027174, 0.0000027104, + 0.0000026965, 0.0000026754, 0.0000026620, 0.0000026591, 0.0000026581, + 0.0000026614, 0.0000026829, 0.0000027147, 0.0000027309, 0.0000027312, + 0.0000027307, 0.0000027347, 0.0000027355, 0.0000027329, 0.0000027299, + 0.0000027266, 0.0000027218, 0.0000027167, 0.0000027123, 0.0000027080, + 0.0000027035, 0.0000026996, 0.0000026978, 0.0000026972, 0.0000026975, + 0.0000026981, 0.0000026984, 0.0000026994, 0.0000027017, 0.0000027037, + 0.0000027034, 0.0000026998, 0.0000026932, 0.0000026854, 0.0000026785, + 0.0000026731, 0.0000026715, 0.0000026745, 0.0000026880, 0.0000027063, + 0.0000027104, 0.0000027026, 0.0000027063, 0.0000027235, 0.0000027318, + 0.0000027293, 0.0000027246, 0.0000027186, 0.0000027173, 0.0000027152, + 0.0000027097, 0.0000027105, 0.0000027189, 0.0000027280, 0.0000027327, + 0.0000027313, 0.0000027204, 0.0000026985, 0.0000026735, 0.0000026645, + 0.0000026748, 0.0000026914, 0.0000027003, 0.0000027045, 0.0000027063, + 0.0000027068, 0.0000027093, 0.0000027150, 0.0000027205, 0.0000027236, + 0.0000027240, 0.0000027225, 0.0000027203, 0.0000027181, 0.0000027171, + 0.0000027176, 0.0000027197, 0.0000027228, 0.0000027259, 0.0000027276, + 0.0000027267, 0.0000027220, 0.0000027150, 0.0000027089, 0.0000027065, + 0.0000027075, 0.0000027081, 0.0000027033, 0.0000026937, 0.0000026864, + 0.0000026898, 0.0000027027, 0.0000027133, 0.0000027150, 0.0000027137, + 0.0000027130, 0.0000027137, 0.0000027137, 0.0000027114, 0.0000027064, + 0.0000027003, 0.0000026955, 0.0000026925, 0.0000026912, 0.0000026909, + 0.0000026894, 0.0000026869, 0.0000026842, 0.0000026827, 0.0000026817, + 0.0000026807, 0.0000026792, 0.0000026775, 0.0000026758, 0.0000026735, + 0.0000026710, 0.0000026694, 0.0000026687, 0.0000026694, 0.0000026714, + 0.0000026759, 0.0000026821, 0.0000026888, 0.0000026949, 0.0000027006, + 0.0000027043, 0.0000027044, 0.0000027011, 0.0000026982, 0.0000026986, + 0.0000027006, 0.0000027060, 0.0000027180, 0.0000027271, 0.0000027271, + 0.0000027276, 0.0000027325, 0.0000027358, 0.0000027365, 0.0000027378, + 0.0000027403, 0.0000027429, 0.0000027467, 0.0000027524, 0.0000027578, + 0.0000027611, 0.0000027631, 0.0000027651, 0.0000027676, 0.0000027706, + 0.0000027724, 0.0000027718, 0.0000027693, 0.0000027666, 0.0000027645, + 0.0000027629, 0.0000027618, 0.0000027605, 0.0000027579, 0.0000027546, + 0.0000027519, 0.0000027512, 0.0000027521, 0.0000027550, 0.0000027605, + 0.0000027691, 0.0000027793, 0.0000027877, 0.0000027933, 0.0000027982, + 0.0000028018, 0.0000028043, 0.0000028063, 0.0000028074, 0.0000028081, + 0.0000028075, 0.0000028052, 0.0000027848, 0.0000027830, 0.0000027826, + 0.0000027826, 0.0000027828, 0.0000027833, 0.0000027838, 0.0000027824, + 0.0000027754, 0.0000027635, 0.0000027507, 0.0000027432, 0.0000027411, + 0.0000027387, 0.0000027330, 0.0000027270, 0.0000027255, 0.0000027285, + 0.0000027340, 0.0000027390, 0.0000027431, 0.0000027476, 0.0000027523, + 0.0000027557, 0.0000027569, 0.0000027559, 0.0000027514, 0.0000027449, + 0.0000027405, 0.0000027372, 0.0000027328, 0.0000027277, 0.0000027242, + 0.0000027250, 0.0000027300, 0.0000027358, 0.0000027392, 0.0000027396, + 0.0000027384, 0.0000027377, 0.0000027415, 0.0000027516, 0.0000027669, + 0.0000027818, 0.0000027879, 0.0000027872, 0.0000027779, 0.0000027529, + 0.0000027226, 0.0000027037, 0.0000027025, 0.0000027095, 0.0000027160, + 0.0000027252, 0.0000027321, 0.0000027327, 0.0000027294, 0.0000027242, + 0.0000027204, 0.0000027199, 0.0000027242, 0.0000027270, 0.0000027280, + 0.0000027433, 0.0000027563, 0.0000027454, 0.0000027352, 0.0000027277, + 0.0000027356, 0.0000027612, 0.0000027786, 0.0000027799, 0.0000027721, + 0.0000027556, 0.0000027324, 0.0000027096, 0.0000026982, 0.0000027016, + 0.0000027212, 0.0000027402, 0.0000027419, 0.0000027341, 0.0000027275, + 0.0000027287, 0.0000027325, 0.0000027293, 0.0000027136, 0.0000026968, + 0.0000026916, 0.0000026944, 0.0000026966, 0.0000026946, 0.0000026926, + 0.0000026942, 0.0000026948, 0.0000026964, 0.0000027004, 0.0000027083, + 0.0000027204, 0.0000027287, 0.0000027298, 0.0000027263, 0.0000027201, + 0.0000027122, 0.0000027025, 0.0000026914, 0.0000026839, 0.0000026836, + 0.0000026867, 0.0000026949, 0.0000027081, 0.0000027258, 0.0000027427, + 0.0000027535, 0.0000027585, 0.0000027596, 0.0000027588, 0.0000027584, + 0.0000027585, 0.0000027571, 0.0000027537, 0.0000027488, 0.0000027441, + 0.0000027382, 0.0000027315, 0.0000027257, 0.0000027213, 0.0000027194, + 0.0000027191, 0.0000027209, 0.0000027238, 0.0000027256, 0.0000027250, + 0.0000027223, 0.0000027182, 0.0000027131, 0.0000027077, 0.0000027019, + 0.0000026956, 0.0000026878, 0.0000026797, 0.0000026728, 0.0000026705, + 0.0000026747, 0.0000026847, 0.0000026949, 0.0000026984, 0.0000026978, + 0.0000026978, 0.0000027018, 0.0000027075, 0.0000027144, 0.0000027212, + 0.0000027202, 0.0000027081, 0.0000026908, 0.0000026819, 0.0000026821, + 0.0000026848, 0.0000026924, 0.0000027040, 0.0000027090, 0.0000027084, + 0.0000027091, 0.0000027130, 0.0000027171, 0.0000027166, 0.0000027099, + 0.0000027010, 0.0000026955, 0.0000026946, 0.0000026967, 0.0000027003, + 0.0000027038, 0.0000027067, 0.0000027108, 0.0000027178, 0.0000027281, + 0.0000027398, 0.0000027489, 0.0000027526, 0.0000027521, 0.0000027479, + 0.0000027431, 0.0000027380, 0.0000027306, 0.0000027230, 0.0000027190, + 0.0000027201, 0.0000027239, 0.0000027245, 0.0000027209, 0.0000027138, + 0.0000027047, 0.0000026884, 0.0000026704, 0.0000026619, 0.0000026593, + 0.0000026589, 0.0000026708, 0.0000026994, 0.0000027233, 0.0000027284, + 0.0000027288, 0.0000027319, 0.0000027321, 0.0000027283, 0.0000027252, + 0.0000027226, 0.0000027182, 0.0000027142, 0.0000027120, 0.0000027101, + 0.0000027069, 0.0000027037, 0.0000027023, 0.0000027026, 0.0000027039, + 0.0000027047, 0.0000027033, 0.0000027007, 0.0000026999, 0.0000027011, + 0.0000027022, 0.0000027011, 0.0000026971, 0.0000026913, 0.0000026845, + 0.0000026773, 0.0000026714, 0.0000026698, 0.0000026758, 0.0000026949, + 0.0000027113, 0.0000027102, 0.0000027027, 0.0000027096, 0.0000027255, + 0.0000027292, 0.0000027258, 0.0000027187, 0.0000027145, 0.0000027151, + 0.0000027123, 0.0000027107, 0.0000027159, 0.0000027247, 0.0000027319, + 0.0000027346, 0.0000027316, 0.0000027190, 0.0000026955, 0.0000026728, + 0.0000026696, 0.0000026849, 0.0000026988, 0.0000027030, 0.0000027049, + 0.0000027060, 0.0000027077, 0.0000027119, 0.0000027180, 0.0000027234, + 0.0000027262, 0.0000027263, 0.0000027247, 0.0000027225, 0.0000027209, + 0.0000027205, 0.0000027213, 0.0000027230, 0.0000027254, 0.0000027286, + 0.0000027311, 0.0000027309, 0.0000027267, 0.0000027200, 0.0000027140, + 0.0000027110, 0.0000027111, 0.0000027109, 0.0000027065, 0.0000026979, + 0.0000026913, 0.0000026945, 0.0000027083, 0.0000027213, 0.0000027248, + 0.0000027230, 0.0000027199, 0.0000027180, 0.0000027163, 0.0000027145, + 0.0000027118, 0.0000027079, 0.0000027049, 0.0000027042, 0.0000027048, + 0.0000027056, 0.0000027049, 0.0000027027, 0.0000026993, 0.0000026963, + 0.0000026940, 0.0000026918, 0.0000026903, 0.0000026893, 0.0000026881, + 0.0000026854, 0.0000026815, 0.0000026778, 0.0000026750, 0.0000026738, + 0.0000026754, 0.0000026792, 0.0000026841, 0.0000026893, 0.0000026946, + 0.0000027009, 0.0000027072, 0.0000027104, 0.0000027097, 0.0000027073, + 0.0000027065, 0.0000027070, 0.0000027112, 0.0000027211, 0.0000027299, + 0.0000027320, 0.0000027348, 0.0000027410, 0.0000027436, 0.0000027408, + 0.0000027377, 0.0000027375, 0.0000027397, 0.0000027435, 0.0000027487, + 0.0000027549, 0.0000027596, 0.0000027634, 0.0000027690, 0.0000027760, + 0.0000027803, 0.0000027805, 0.0000027768, 0.0000027723, 0.0000027692, + 0.0000027678, 0.0000027678, 0.0000027681, 0.0000027683, 0.0000027673, + 0.0000027633, 0.0000027575, 0.0000027525, 0.0000027516, 0.0000027560, + 0.0000027696, 0.0000027844, 0.0000027951, 0.0000028009, 0.0000028028, + 0.0000028028, 0.0000028025, 0.0000028024, 0.0000028014, 0.0000027993, + 0.0000027966, 0.0000027940, 0.0000027909, 0.0000027877, 0.0000027788, + 0.0000027808, 0.0000027837, 0.0000027879, 0.0000027922, 0.0000027946, + 0.0000027946, 0.0000027898, 0.0000027779, 0.0000027624, 0.0000027487, + 0.0000027400, 0.0000027354, 0.0000027311, 0.0000027253, 0.0000027201, + 0.0000027188, 0.0000027224, 0.0000027311, 0.0000027412, 0.0000027494, + 0.0000027551, 0.0000027587, 0.0000027613, 0.0000027634, 0.0000027638, + 0.0000027613, 0.0000027564, 0.0000027523, 0.0000027494, 0.0000027448, + 0.0000027388, 0.0000027346, 0.0000027356, 0.0000027418, 0.0000027491, + 0.0000027532, 0.0000027536, 0.0000027510, 0.0000027473, 0.0000027470, + 0.0000027544, 0.0000027695, 0.0000027842, 0.0000027895, 0.0000027885, + 0.0000027820, 0.0000027619, 0.0000027342, 0.0000027130, 0.0000027056, + 0.0000027085, 0.0000027143, 0.0000027189, 0.0000027245, 0.0000027273, + 0.0000027263, 0.0000027229, 0.0000027187, 0.0000027172, 0.0000027206, + 0.0000027262, 0.0000027277, 0.0000027330, 0.0000027516, 0.0000027519, + 0.0000027404, 0.0000027294, 0.0000027251, 0.0000027430, 0.0000027700, + 0.0000027802, 0.0000027780, 0.0000027669, 0.0000027480, 0.0000027228, + 0.0000027020, 0.0000026973, 0.0000027116, 0.0000027357, 0.0000027441, + 0.0000027391, 0.0000027293, 0.0000027273, 0.0000027322, 0.0000027320, + 0.0000027209, 0.0000027009, 0.0000026902, 0.0000026923, 0.0000026975, + 0.0000026998, 0.0000026994, 0.0000026986, 0.0000026955, 0.0000026934, + 0.0000026962, 0.0000027033, 0.0000027163, 0.0000027314, 0.0000027380, + 0.0000027373, 0.0000027313, 0.0000027212, 0.0000027089, 0.0000026939, + 0.0000026820, 0.0000026799, 0.0000026851, 0.0000026958, 0.0000027120, + 0.0000027298, 0.0000027452, 0.0000027570, 0.0000027619, 0.0000027629, + 0.0000027621, 0.0000027600, 0.0000027588, 0.0000027581, 0.0000027572, + 0.0000027544, 0.0000027505, 0.0000027462, 0.0000027413, 0.0000027341, + 0.0000027267, 0.0000027207, 0.0000027166, 0.0000027146, 0.0000027152, + 0.0000027184, 0.0000027197, 0.0000027192, 0.0000027174, 0.0000027146, + 0.0000027106, 0.0000027048, 0.0000026975, 0.0000026897, 0.0000026808, + 0.0000026732, 0.0000026688, 0.0000026684, 0.0000026723, 0.0000026816, + 0.0000026905, 0.0000026946, 0.0000026952, 0.0000026973, 0.0000027033, + 0.0000027103, 0.0000027157, 0.0000027224, 0.0000027265, 0.0000027227, + 0.0000027077, 0.0000026889, 0.0000026824, 0.0000026834, 0.0000026887, + 0.0000026994, 0.0000027070, 0.0000027082, 0.0000027086, 0.0000027122, + 0.0000027177, 0.0000027205, 0.0000027172, 0.0000027087, 0.0000026996, + 0.0000026935, 0.0000026913, 0.0000026923, 0.0000026958, 0.0000026993, + 0.0000027028, 0.0000027080, 0.0000027159, 0.0000027267, 0.0000027390, + 0.0000027490, 0.0000027537, 0.0000027535, 0.0000027501, 0.0000027458, + 0.0000027416, 0.0000027350, 0.0000027260, 0.0000027186, 0.0000027168, + 0.0000027200, 0.0000027240, 0.0000027236, 0.0000027171, 0.0000027094, + 0.0000026996, 0.0000026828, 0.0000026678, 0.0000026614, 0.0000026595, + 0.0000026637, 0.0000026850, 0.0000027114, 0.0000027235, 0.0000027258, + 0.0000027281, 0.0000027274, 0.0000027234, 0.0000027216, 0.0000027203, + 0.0000027168, 0.0000027143, 0.0000027144, 0.0000027142, 0.0000027115, + 0.0000027078, 0.0000027059, 0.0000027067, 0.0000027102, 0.0000027138, + 0.0000027141, 0.0000027101, 0.0000027040, 0.0000027000, 0.0000026989, + 0.0000026991, 0.0000026979, 0.0000026949, 0.0000026907, 0.0000026852, + 0.0000026775, 0.0000026703, 0.0000026691, 0.0000026803, 0.0000027028, + 0.0000027154, 0.0000027100, 0.0000027030, 0.0000027122, 0.0000027255, + 0.0000027270, 0.0000027204, 0.0000027120, 0.0000027117, 0.0000027131, + 0.0000027118, 0.0000027138, 0.0000027210, 0.0000027289, 0.0000027341, + 0.0000027348, 0.0000027295, 0.0000027162, 0.0000026932, 0.0000026753, + 0.0000026780, 0.0000026938, 0.0000027029, 0.0000027044, 0.0000027052, + 0.0000027061, 0.0000027086, 0.0000027140, 0.0000027199, 0.0000027240, + 0.0000027255, 0.0000027249, 0.0000027232, 0.0000027220, 0.0000027219, + 0.0000027224, 0.0000027242, 0.0000027265, 0.0000027295, 0.0000027332, + 0.0000027357, 0.0000027352, 0.0000027317, 0.0000027261, 0.0000027206, + 0.0000027175, 0.0000027161, 0.0000027144, 0.0000027104, 0.0000027032, + 0.0000026972, 0.0000026991, 0.0000027120, 0.0000027269, 0.0000027331, + 0.0000027324, 0.0000027293, 0.0000027262, 0.0000027231, 0.0000027203, + 0.0000027178, 0.0000027148, 0.0000027126, 0.0000027130, 0.0000027158, + 0.0000027190, 0.0000027204, 0.0000027194, 0.0000027166, 0.0000027120, + 0.0000027078, 0.0000027030, 0.0000026989, 0.0000026966, 0.0000026950, + 0.0000026921, 0.0000026872, 0.0000026830, 0.0000026820, 0.0000026838, + 0.0000026876, 0.0000026926, 0.0000026974, 0.0000027011, 0.0000027041, + 0.0000027085, 0.0000027145, 0.0000027194, 0.0000027205, 0.0000027180, + 0.0000027142, 0.0000027131, 0.0000027173, 0.0000027258, 0.0000027323, + 0.0000027354, 0.0000027410, 0.0000027481, 0.0000027503, 0.0000027470, + 0.0000027409, 0.0000027372, 0.0000027376, 0.0000027412, 0.0000027459, + 0.0000027503, 0.0000027555, 0.0000027619, 0.0000027717, 0.0000027821, + 0.0000027864, 0.0000027835, 0.0000027772, 0.0000027719, 0.0000027703, + 0.0000027704, 0.0000027710, 0.0000027714, 0.0000027712, 0.0000027691, + 0.0000027655, 0.0000027606, 0.0000027578, 0.0000027606, 0.0000027705, + 0.0000027829, 0.0000027939, 0.0000028015, 0.0000028054, 0.0000028060, + 0.0000028037, 0.0000027991, 0.0000027933, 0.0000027888, 0.0000027853, + 0.0000027826, 0.0000027805, 0.0000027787, 0.0000027778, 0.0000027779, + 0.0000027754, 0.0000027802, 0.0000027865, 0.0000027934, 0.0000027989, + 0.0000028007, 0.0000027992, 0.0000027921, 0.0000027799, 0.0000027645, + 0.0000027501, 0.0000027396, 0.0000027319, 0.0000027262, 0.0000027208, + 0.0000027145, 0.0000027108, 0.0000027140, 0.0000027263, 0.0000027420, + 0.0000027537, 0.0000027598, 0.0000027627, 0.0000027655, 0.0000027691, + 0.0000027719, 0.0000027714, 0.0000027670, 0.0000027611, 0.0000027563, + 0.0000027508, 0.0000027446, 0.0000027406, 0.0000027420, 0.0000027492, + 0.0000027583, 0.0000027648, 0.0000027666, 0.0000027648, 0.0000027600, + 0.0000027568, 0.0000027601, 0.0000027721, 0.0000027851, 0.0000027905, + 0.0000027900, 0.0000027840, 0.0000027683, 0.0000027437, 0.0000027227, + 0.0000027107, 0.0000027089, 0.0000027138, 0.0000027189, 0.0000027214, + 0.0000027228, 0.0000027228, 0.0000027210, 0.0000027175, 0.0000027147, + 0.0000027166, 0.0000027239, 0.0000027287, 0.0000027290, 0.0000027418, + 0.0000027533, 0.0000027451, 0.0000027353, 0.0000027231, 0.0000027275, + 0.0000027547, 0.0000027771, 0.0000027801, 0.0000027738, 0.0000027595, + 0.0000027377, 0.0000027136, 0.0000027005, 0.0000027046, 0.0000027273, + 0.0000027439, 0.0000027433, 0.0000027333, 0.0000027258, 0.0000027297, + 0.0000027335, 0.0000027270, 0.0000027089, 0.0000026907, 0.0000026881, + 0.0000026934, 0.0000026987, 0.0000027028, 0.0000027052, 0.0000027035, + 0.0000026977, 0.0000026947, 0.0000026977, 0.0000027094, 0.0000027261, + 0.0000027395, 0.0000027432, 0.0000027400, 0.0000027323, 0.0000027201, + 0.0000027035, 0.0000026844, 0.0000026758, 0.0000026803, 0.0000026929, + 0.0000027123, 0.0000027343, 0.0000027512, 0.0000027592, 0.0000027629, + 0.0000027636, 0.0000027626, 0.0000027614, 0.0000027607, 0.0000027603, + 0.0000027606, 0.0000027604, 0.0000027599, 0.0000027580, 0.0000027546, + 0.0000027496, 0.0000027416, 0.0000027321, 0.0000027230, 0.0000027157, + 0.0000027111, 0.0000027093, 0.0000027115, 0.0000027131, 0.0000027127, + 0.0000027109, 0.0000027091, 0.0000027056, 0.0000026994, 0.0000026908, + 0.0000026820, 0.0000026732, 0.0000026680, 0.0000026674, 0.0000026680, + 0.0000026721, 0.0000026795, 0.0000026863, 0.0000026901, 0.0000026923, + 0.0000026954, 0.0000027042, 0.0000027137, 0.0000027190, 0.0000027238, + 0.0000027293, 0.0000027305, 0.0000027233, 0.0000027041, 0.0000026863, + 0.0000026828, 0.0000026861, 0.0000026950, 0.0000027049, 0.0000027076, + 0.0000027076, 0.0000027107, 0.0000027168, 0.0000027214, 0.0000027212, + 0.0000027151, 0.0000027049, 0.0000026950, 0.0000026878, 0.0000026853, + 0.0000026864, 0.0000026899, 0.0000026933, 0.0000026975, 0.0000027040, + 0.0000027134, 0.0000027256, 0.0000027390, 0.0000027497, 0.0000027549, + 0.0000027548, 0.0000027518, 0.0000027476, 0.0000027442, 0.0000027393, + 0.0000027305, 0.0000027205, 0.0000027145, 0.0000027151, 0.0000027205, + 0.0000027235, 0.0000027203, 0.0000027131, 0.0000027064, 0.0000026953, + 0.0000026776, 0.0000026653, 0.0000026611, 0.0000026616, 0.0000026742, + 0.0000026976, 0.0000027151, 0.0000027213, 0.0000027239, 0.0000027223, + 0.0000027187, 0.0000027189, 0.0000027191, 0.0000027172, 0.0000027169, + 0.0000027179, 0.0000027175, 0.0000027138, 0.0000027084, 0.0000027049, + 0.0000027057, 0.0000027104, 0.0000027162, 0.0000027203, 0.0000027202, + 0.0000027150, 0.0000027065, 0.0000026992, 0.0000026954, 0.0000026944, + 0.0000026936, 0.0000026920, 0.0000026895, 0.0000026853, 0.0000026771, + 0.0000026691, 0.0000026695, 0.0000026870, 0.0000027100, 0.0000027167, + 0.0000027086, 0.0000027038, 0.0000027136, 0.0000027244, 0.0000027239, + 0.0000027132, 0.0000027073, 0.0000027100, 0.0000027127, 0.0000027134, + 0.0000027178, 0.0000027256, 0.0000027320, 0.0000027345, 0.0000027331, + 0.0000027258, 0.0000027122, 0.0000026926, 0.0000026803, 0.0000026858, + 0.0000027001, 0.0000027070, 0.0000027082, 0.0000027087, 0.0000027101, + 0.0000027141, 0.0000027198, 0.0000027248, 0.0000027272, 0.0000027269, + 0.0000027237, 0.0000027196, 0.0000027181, 0.0000027190, 0.0000027218, + 0.0000027252, 0.0000027295, 0.0000027349, 0.0000027392, 0.0000027408, + 0.0000027401, 0.0000027378, 0.0000027336, 0.0000027285, 0.0000027234, + 0.0000027203, 0.0000027181, 0.0000027153, 0.0000027102, 0.0000027051, + 0.0000027063, 0.0000027178, 0.0000027329, 0.0000027410, 0.0000027416, + 0.0000027391, 0.0000027362, 0.0000027335, 0.0000027314, 0.0000027298, + 0.0000027280, 0.0000027268, 0.0000027282, 0.0000027325, 0.0000027379, + 0.0000027420, 0.0000027427, 0.0000027409, 0.0000027372, 0.0000027324, + 0.0000027267, 0.0000027204, 0.0000027149, 0.0000027098, 0.0000027038, + 0.0000026962, 0.0000026886, 0.0000026853, 0.0000026865, 0.0000026928, + 0.0000027014, 0.0000027097, 0.0000027156, 0.0000027187, 0.0000027209, + 0.0000027242, 0.0000027278, 0.0000027291, 0.0000027266, 0.0000027223, + 0.0000027212, 0.0000027254, 0.0000027312, 0.0000027347, 0.0000027381, + 0.0000027455, 0.0000027532, 0.0000027551, 0.0000027526, 0.0000027476, + 0.0000027419, 0.0000027383, 0.0000027391, 0.0000027430, 0.0000027469, + 0.0000027516, 0.0000027601, 0.0000027730, 0.0000027843, 0.0000027873, + 0.0000027834, 0.0000027761, 0.0000027737, 0.0000027741, 0.0000027746, + 0.0000027731, 0.0000027708, 0.0000027689, 0.0000027675, 0.0000027665, + 0.0000027670, 0.0000027718, 0.0000027795, 0.0000027866, 0.0000027914, + 0.0000027962, 0.0000028016, 0.0000028048, 0.0000028047, 0.0000028001, + 0.0000027926, 0.0000027849, 0.0000027787, 0.0000027749, 0.0000027725, + 0.0000027707, 0.0000027700, 0.0000027698, 0.0000027705, 0.0000027723, + 0.0000027719, 0.0000027787, 0.0000027873, 0.0000027958, 0.0000028016, + 0.0000028030, 0.0000027996, 0.0000027919, 0.0000027807, 0.0000027675, + 0.0000027537, 0.0000027412, 0.0000027316, 0.0000027249, 0.0000027189, + 0.0000027108, 0.0000027028, 0.0000027040, 0.0000027191, 0.0000027395, + 0.0000027536, 0.0000027605, 0.0000027647, 0.0000027681, 0.0000027712, + 0.0000027743, 0.0000027758, 0.0000027739, 0.0000027681, 0.0000027612, + 0.0000027537, 0.0000027466, 0.0000027425, 0.0000027433, 0.0000027495, + 0.0000027591, 0.0000027679, 0.0000027742, 0.0000027762, 0.0000027741, + 0.0000027695, 0.0000027688, 0.0000027748, 0.0000027847, 0.0000027909, + 0.0000027916, 0.0000027863, 0.0000027729, 0.0000027516, 0.0000027320, + 0.0000027194, 0.0000027133, 0.0000027139, 0.0000027190, 0.0000027232, + 0.0000027236, 0.0000027225, 0.0000027198, 0.0000027162, 0.0000027127, + 0.0000027122, 0.0000027198, 0.0000027285, 0.0000027294, 0.0000027337, + 0.0000027493, 0.0000027483, 0.0000027395, 0.0000027277, 0.0000027194, + 0.0000027371, 0.0000027671, 0.0000027793, 0.0000027778, 0.0000027661, + 0.0000027487, 0.0000027272, 0.0000027092, 0.0000027051, 0.0000027198, + 0.0000027395, 0.0000027441, 0.0000027385, 0.0000027274, 0.0000027267, + 0.0000027318, 0.0000027299, 0.0000027173, 0.0000026967, 0.0000026864, + 0.0000026878, 0.0000026933, 0.0000026994, 0.0000027057, 0.0000027085, + 0.0000027066, 0.0000027024, 0.0000027001, 0.0000027054, 0.0000027205, + 0.0000027348, 0.0000027422, 0.0000027441, 0.0000027392, 0.0000027306, + 0.0000027177, 0.0000026977, 0.0000026774, 0.0000026738, 0.0000026859, + 0.0000027069, 0.0000027310, 0.0000027508, 0.0000027619, 0.0000027650, + 0.0000027657, 0.0000027649, 0.0000027632, 0.0000027629, 0.0000027649, + 0.0000027685, 0.0000027726, 0.0000027749, 0.0000027759, 0.0000027746, + 0.0000027714, 0.0000027656, 0.0000027570, 0.0000027453, 0.0000027325, + 0.0000027214, 0.0000027133, 0.0000027084, 0.0000027078, 0.0000027082, + 0.0000027072, 0.0000027049, 0.0000027031, 0.0000027000, 0.0000026936, + 0.0000026855, 0.0000026773, 0.0000026698, 0.0000026665, 0.0000026673, + 0.0000026696, 0.0000026729, 0.0000026786, 0.0000026835, 0.0000026866, + 0.0000026903, 0.0000026955, 0.0000027056, 0.0000027168, 0.0000027234, + 0.0000027270, 0.0000027313, 0.0000027341, 0.0000027322, 0.0000027191, + 0.0000026971, 0.0000026846, 0.0000026845, 0.0000026915, 0.0000027019, + 0.0000027073, 0.0000027067, 0.0000027081, 0.0000027141, 0.0000027206, + 0.0000027225, 0.0000027192, 0.0000027100, 0.0000026982, 0.0000026877, + 0.0000026814, 0.0000026804, 0.0000026832, 0.0000026865, 0.0000026898, + 0.0000026943, 0.0000027010, 0.0000027106, 0.0000027233, 0.0000027376, + 0.0000027498, 0.0000027559, 0.0000027563, 0.0000027534, 0.0000027488, + 0.0000027455, 0.0000027425, 0.0000027351, 0.0000027238, 0.0000027141, + 0.0000027114, 0.0000027148, 0.0000027201, 0.0000027210, 0.0000027170, + 0.0000027106, 0.0000027039, 0.0000026899, 0.0000026725, 0.0000026636, + 0.0000026624, 0.0000026680, 0.0000026846, 0.0000027032, 0.0000027137, + 0.0000027189, 0.0000027176, 0.0000027136, 0.0000027149, 0.0000027173, + 0.0000027177, 0.0000027197, 0.0000027210, 0.0000027189, 0.0000027141, + 0.0000027083, 0.0000027040, 0.0000027040, 0.0000027082, 0.0000027146, + 0.0000027206, 0.0000027237, 0.0000027226, 0.0000027164, 0.0000027071, + 0.0000026978, 0.0000026909, 0.0000026885, 0.0000026888, 0.0000026890, + 0.0000026876, 0.0000026827, 0.0000026744, 0.0000026677, 0.0000026729, + 0.0000026943, 0.0000027146, 0.0000027173, 0.0000027065, 0.0000027040, + 0.0000027133, 0.0000027223, 0.0000027187, 0.0000027060, 0.0000027032, + 0.0000027095, 0.0000027146, 0.0000027167, 0.0000027222, 0.0000027299, + 0.0000027341, 0.0000027339, 0.0000027295, 0.0000027203, 0.0000027082, + 0.0000026938, 0.0000026858, 0.0000026908, 0.0000027030, 0.0000027113, + 0.0000027137, 0.0000027139, 0.0000027155, 0.0000027196, 0.0000027237, + 0.0000027266, 0.0000027283, 0.0000027282, 0.0000027247, 0.0000027185, + 0.0000027139, 0.0000027140, 0.0000027181, 0.0000027240, 0.0000027318, + 0.0000027404, 0.0000027454, 0.0000027457, 0.0000027448, 0.0000027441, + 0.0000027412, 0.0000027355, 0.0000027284, 0.0000027233, 0.0000027220, + 0.0000027213, 0.0000027183, 0.0000027150, 0.0000027164, 0.0000027264, + 0.0000027402, 0.0000027487, 0.0000027500, 0.0000027485, 0.0000027454, + 0.0000027430, 0.0000027425, 0.0000027432, 0.0000027438, 0.0000027445, + 0.0000027473, 0.0000027527, 0.0000027592, 0.0000027644, 0.0000027665, + 0.0000027659, 0.0000027634, 0.0000027599, 0.0000027565, 0.0000027523, + 0.0000027475, 0.0000027410, 0.0000027312, 0.0000027187, 0.0000027059, + 0.0000026968, 0.0000026937, 0.0000026971, 0.0000027057, 0.0000027150, + 0.0000027224, 0.0000027268, 0.0000027291, 0.0000027308, 0.0000027331, + 0.0000027347, 0.0000027345, 0.0000027331, 0.0000027332, 0.0000027352, + 0.0000027365, 0.0000027375, 0.0000027419, 0.0000027498, 0.0000027560, + 0.0000027575, 0.0000027566, 0.0000027539, 0.0000027493, 0.0000027430, + 0.0000027388, 0.0000027403, 0.0000027451, 0.0000027515, 0.0000027607, + 0.0000027730, 0.0000027828, 0.0000027849, 0.0000027804, 0.0000027760, + 0.0000027767, 0.0000027794, 0.0000027792, 0.0000027752, 0.0000027716, + 0.0000027698, 0.0000027691, 0.0000027701, 0.0000027757, 0.0000027843, + 0.0000027915, 0.0000027948, 0.0000027964, 0.0000027988, 0.0000028021, + 0.0000028039, 0.0000028021, 0.0000027952, 0.0000027864, 0.0000027796, + 0.0000027758, 0.0000027735, 0.0000027715, 0.0000027693, 0.0000027669, + 0.0000027652, 0.0000027642, 0.0000027646, 0.0000027673, 0.0000027707, + 0.0000027784, 0.0000027872, 0.0000027950, 0.0000027996, 0.0000028002, + 0.0000027963, 0.0000027886, 0.0000027792, 0.0000027692, 0.0000027582, + 0.0000027466, 0.0000027355, 0.0000027263, 0.0000027185, 0.0000027079, + 0.0000026962, 0.0000026946, 0.0000027099, 0.0000027335, 0.0000027502, + 0.0000027587, 0.0000027640, 0.0000027679, 0.0000027703, 0.0000027730, + 0.0000027765, 0.0000027783, 0.0000027767, 0.0000027716, 0.0000027645, + 0.0000027567, 0.0000027510, 0.0000027499, 0.0000027533, 0.0000027598, + 0.0000027670, 0.0000027740, 0.0000027805, 0.0000027842, 0.0000027832, + 0.0000027798, 0.0000027793, 0.0000027836, 0.0000027893, 0.0000027920, + 0.0000027891, 0.0000027784, 0.0000027599, 0.0000027407, 0.0000027285, + 0.0000027221, 0.0000027192, 0.0000027196, 0.0000027231, 0.0000027259, + 0.0000027254, 0.0000027217, 0.0000027162, 0.0000027112, 0.0000027090, + 0.0000027141, 0.0000027257, 0.0000027305, 0.0000027301, 0.0000027421, + 0.0000027494, 0.0000027409, 0.0000027336, 0.0000027189, 0.0000027219, + 0.0000027518, 0.0000027751, 0.0000027785, 0.0000027698, 0.0000027543, + 0.0000027377, 0.0000027212, 0.0000027117, 0.0000027170, 0.0000027350, + 0.0000027437, 0.0000027413, 0.0000027315, 0.0000027257, 0.0000027301, + 0.0000027308, 0.0000027225, 0.0000027053, 0.0000026875, 0.0000026847, + 0.0000026867, 0.0000026912, 0.0000026990, 0.0000027071, 0.0000027097, + 0.0000027093, 0.0000027083, 0.0000027097, 0.0000027207, 0.0000027341, + 0.0000027400, 0.0000027412, 0.0000027411, 0.0000027362, 0.0000027281, + 0.0000027141, 0.0000026925, 0.0000026745, 0.0000026758, 0.0000026959, + 0.0000027234, 0.0000027446, 0.0000027569, 0.0000027637, 0.0000027676, + 0.0000027689, 0.0000027681, 0.0000027670, 0.0000027691, 0.0000027754, + 0.0000027836, 0.0000027895, 0.0000027913, 0.0000027902, 0.0000027868, + 0.0000027829, 0.0000027771, 0.0000027688, 0.0000027577, 0.0000027447, + 0.0000027315, 0.0000027205, 0.0000027126, 0.0000027079, 0.0000027063, + 0.0000027045, 0.0000027009, 0.0000026985, 0.0000026961, 0.0000026911, + 0.0000026849, 0.0000026782, 0.0000026717, 0.0000026684, 0.0000026692, + 0.0000026716, 0.0000026744, 0.0000026788, 0.0000026826, 0.0000026854, + 0.0000026896, 0.0000026970, 0.0000027084, 0.0000027200, 0.0000027276, + 0.0000027314, 0.0000027342, 0.0000027365, 0.0000027361, 0.0000027293, + 0.0000027104, 0.0000026901, 0.0000026849, 0.0000026886, 0.0000026983, + 0.0000027056, 0.0000027061, 0.0000027056, 0.0000027097, 0.0000027168, + 0.0000027214, 0.0000027208, 0.0000027133, 0.0000027015, 0.0000026895, + 0.0000026814, 0.0000026792, 0.0000026809, 0.0000026852, 0.0000026886, + 0.0000026915, 0.0000026958, 0.0000027016, 0.0000027103, 0.0000027211, + 0.0000027342, 0.0000027470, 0.0000027552, 0.0000027569, 0.0000027547, + 0.0000027499, 0.0000027461, 0.0000027441, 0.0000027388, 0.0000027280, + 0.0000027160, 0.0000027092, 0.0000027092, 0.0000027146, 0.0000027192, + 0.0000027195, 0.0000027151, 0.0000027087, 0.0000027003, 0.0000026840, + 0.0000026686, 0.0000026638, 0.0000026653, 0.0000026750, 0.0000026905, + 0.0000027031, 0.0000027120, 0.0000027138, 0.0000027088, 0.0000027089, + 0.0000027135, 0.0000027170, 0.0000027210, 0.0000027225, 0.0000027199, + 0.0000027154, 0.0000027106, 0.0000027060, 0.0000027050, 0.0000027078, + 0.0000027134, 0.0000027205, 0.0000027259, 0.0000027272, 0.0000027237, + 0.0000027156, 0.0000027054, 0.0000026951, 0.0000026868, 0.0000026831, + 0.0000026839, 0.0000026845, 0.0000026826, 0.0000026772, 0.0000026695, + 0.0000026668, 0.0000026771, 0.0000027003, 0.0000027162, 0.0000027145, + 0.0000027039, 0.0000027024, 0.0000027112, 0.0000027191, 0.0000027128, + 0.0000027008, 0.0000027011, 0.0000027113, 0.0000027178, 0.0000027210, + 0.0000027266, 0.0000027336, 0.0000027356, 0.0000027329, 0.0000027255, + 0.0000027156, 0.0000027053, 0.0000026959, 0.0000026907, 0.0000026931, + 0.0000027013, 0.0000027098, 0.0000027142, 0.0000027150, 0.0000027167, + 0.0000027189, 0.0000027197, 0.0000027202, 0.0000027217, 0.0000027242, + 0.0000027247, 0.0000027204, 0.0000027136, 0.0000027106, 0.0000027131, + 0.0000027211, 0.0000027332, 0.0000027452, 0.0000027509, 0.0000027503, + 0.0000027492, 0.0000027493, 0.0000027471, 0.0000027407, 0.0000027326, + 0.0000027274, 0.0000027265, 0.0000027273, 0.0000027261, 0.0000027244, + 0.0000027262, 0.0000027341, 0.0000027453, 0.0000027534, 0.0000027555, + 0.0000027543, 0.0000027508, 0.0000027477, 0.0000027471, 0.0000027487, + 0.0000027503, 0.0000027521, 0.0000027552, 0.0000027597, 0.0000027645, + 0.0000027682, 0.0000027696, 0.0000027689, 0.0000027668, 0.0000027643, + 0.0000027616, 0.0000027597, 0.0000027589, 0.0000027581, 0.0000027546, + 0.0000027467, 0.0000027351, 0.0000027224, 0.0000027135, 0.0000027115, + 0.0000027158, 0.0000027233, 0.0000027308, 0.0000027357, 0.0000027380, + 0.0000027401, 0.0000027423, 0.0000027444, 0.0000027453, 0.0000027451, + 0.0000027444, 0.0000027435, 0.0000027425, 0.0000027430, 0.0000027474, + 0.0000027538, 0.0000027579, 0.0000027590, 0.0000027589, 0.0000027579, + 0.0000027549, 0.0000027503, 0.0000027460, 0.0000027452, 0.0000027496, + 0.0000027573, 0.0000027654, 0.0000027731, 0.0000027782, 0.0000027788, + 0.0000027754, 0.0000027746, 0.0000027792, 0.0000027833, 0.0000027825, + 0.0000027794, 0.0000027769, 0.0000027750, 0.0000027740, 0.0000027757, + 0.0000027814, 0.0000027888, 0.0000027943, 0.0000027979, 0.0000028011, + 0.0000028033, 0.0000028038, 0.0000028024, 0.0000027983, 0.0000027913, + 0.0000027836, 0.0000027777, 0.0000027744, 0.0000027730, 0.0000027719, + 0.0000027702, 0.0000027681, 0.0000027665, 0.0000027654, 0.0000027645, + 0.0000027642, 0.0000027658, 0.0000027749, 0.0000027811, 0.0000027870, + 0.0000027914, 0.0000027933, 0.0000027928, 0.0000027898, 0.0000027843, + 0.0000027780, 0.0000027717, 0.0000027652, 0.0000027562, 0.0000027439, + 0.0000027311, 0.0000027200, 0.0000027069, 0.0000026922, 0.0000026877, + 0.0000027013, 0.0000027254, 0.0000027439, 0.0000027536, 0.0000027597, + 0.0000027642, 0.0000027665, 0.0000027692, 0.0000027747, 0.0000027804, + 0.0000027827, 0.0000027820, 0.0000027781, 0.0000027723, 0.0000027669, + 0.0000027648, 0.0000027658, 0.0000027698, 0.0000027742, 0.0000027776, + 0.0000027808, 0.0000027850, 0.0000027884, 0.0000027884, 0.0000027855, + 0.0000027840, 0.0000027865, 0.0000027897, 0.0000027904, 0.0000027840, + 0.0000027698, 0.0000027517, 0.0000027377, 0.0000027311, 0.0000027281, + 0.0000027261, 0.0000027257, 0.0000027269, 0.0000027272, 0.0000027250, + 0.0000027192, 0.0000027122, 0.0000027080, 0.0000027099, 0.0000027208, + 0.0000027301, 0.0000027294, 0.0000027351, 0.0000027476, 0.0000027423, + 0.0000027356, 0.0000027242, 0.0000027147, 0.0000027335, 0.0000027650, + 0.0000027761, 0.0000027715, 0.0000027565, 0.0000027425, 0.0000027310, + 0.0000027205, 0.0000027205, 0.0000027326, 0.0000027435, 0.0000027425, + 0.0000027344, 0.0000027274, 0.0000027286, 0.0000027310, 0.0000027252, + 0.0000027118, 0.0000026931, 0.0000026822, 0.0000026820, 0.0000026833, + 0.0000026881, 0.0000026975, 0.0000027050, 0.0000027092, 0.0000027122, + 0.0000027146, 0.0000027226, 0.0000027373, 0.0000027440, 0.0000027428, + 0.0000027395, 0.0000027358, 0.0000027320, 0.0000027261, 0.0000027106, + 0.0000026887, 0.0000026755, 0.0000026816, 0.0000027077, 0.0000027356, + 0.0000027506, 0.0000027569, 0.0000027629, 0.0000027686, 0.0000027713, + 0.0000027725, 0.0000027749, 0.0000027806, 0.0000027889, 0.0000027962, + 0.0000027996, 0.0000027992, 0.0000027962, 0.0000027914, 0.0000027857, + 0.0000027797, 0.0000027719, 0.0000027625, 0.0000027520, 0.0000027404, + 0.0000027297, 0.0000027213, 0.0000027143, 0.0000027095, 0.0000027067, + 0.0000027021, 0.0000026983, 0.0000026962, 0.0000026924, 0.0000026877, + 0.0000026823, 0.0000026768, 0.0000026728, 0.0000026726, 0.0000026744, + 0.0000026767, 0.0000026803, 0.0000026838, 0.0000026868, 0.0000026917, + 0.0000026998, 0.0000027112, 0.0000027227, 0.0000027308, 0.0000027355, + 0.0000027379, 0.0000027389, 0.0000027381, 0.0000027345, 0.0000027214, + 0.0000026998, 0.0000026872, 0.0000026870, 0.0000026948, 0.0000027033, + 0.0000027051, 0.0000027041, 0.0000027056, 0.0000027113, 0.0000027178, + 0.0000027193, 0.0000027146, 0.0000027038, 0.0000026923, 0.0000026849, + 0.0000026811, 0.0000026820, 0.0000026863, 0.0000026912, 0.0000026945, + 0.0000026974, 0.0000027015, 0.0000027069, 0.0000027138, 0.0000027220, + 0.0000027315, 0.0000027419, 0.0000027508, 0.0000027549, 0.0000027545, + 0.0000027501, 0.0000027463, 0.0000027447, 0.0000027412, 0.0000027320, + 0.0000027193, 0.0000027091, 0.0000027059, 0.0000027090, 0.0000027150, + 0.0000027191, 0.0000027191, 0.0000027138, 0.0000027062, 0.0000026955, + 0.0000026785, 0.0000026657, 0.0000026633, 0.0000026691, 0.0000026800, + 0.0000026915, 0.0000027027, 0.0000027099, 0.0000027064, 0.0000027032, + 0.0000027069, 0.0000027132, 0.0000027195, 0.0000027221, 0.0000027207, + 0.0000027175, 0.0000027144, 0.0000027099, 0.0000027074, 0.0000027084, + 0.0000027129, 0.0000027201, 0.0000027275, 0.0000027313, 0.0000027309, + 0.0000027249, 0.0000027137, 0.0000027018, 0.0000026918, 0.0000026835, + 0.0000026780, 0.0000026774, 0.0000026776, 0.0000026747, 0.0000026691, + 0.0000026635, 0.0000026650, 0.0000026820, 0.0000027043, 0.0000027152, + 0.0000027105, 0.0000027006, 0.0000026996, 0.0000027077, 0.0000027151, + 0.0000027079, 0.0000026969, 0.0000027007, 0.0000027134, 0.0000027214, + 0.0000027255, 0.0000027306, 0.0000027369, 0.0000027379, 0.0000027323, + 0.0000027232, 0.0000027131, 0.0000027043, 0.0000026978, 0.0000026943, + 0.0000026945, 0.0000026978, 0.0000027025, 0.0000027060, 0.0000027084, + 0.0000027108, 0.0000027129, 0.0000027137, 0.0000027132, 0.0000027134, + 0.0000027171, 0.0000027224, 0.0000027234, 0.0000027171, 0.0000027091, + 0.0000027082, 0.0000027172, 0.0000027340, 0.0000027493, 0.0000027554, + 0.0000027542, 0.0000027525, 0.0000027525, 0.0000027502, 0.0000027440, + 0.0000027371, 0.0000027328, 0.0000027320, 0.0000027319, 0.0000027316, + 0.0000027313, 0.0000027331, 0.0000027381, 0.0000027463, 0.0000027539, + 0.0000027566, 0.0000027560, 0.0000027535, 0.0000027503, 0.0000027487, + 0.0000027494, 0.0000027507, 0.0000027524, 0.0000027555, 0.0000027597, + 0.0000027639, 0.0000027668, 0.0000027677, 0.0000027665, 0.0000027641, + 0.0000027611, 0.0000027580, 0.0000027556, 0.0000027553, 0.0000027564, + 0.0000027561, 0.0000027521, 0.0000027470, 0.0000027418, 0.0000027378, + 0.0000027371, 0.0000027385, 0.0000027421, 0.0000027472, 0.0000027514, + 0.0000027534, 0.0000027538, 0.0000027550, 0.0000027564, 0.0000027565, + 0.0000027552, 0.0000027536, 0.0000027525, 0.0000027523, 0.0000027526, + 0.0000027539, 0.0000027563, 0.0000027590, 0.0000027605, 0.0000027611, + 0.0000027617, 0.0000027620, 0.0000027620, 0.0000027620, 0.0000027622, + 0.0000027638, 0.0000027674, 0.0000027714, 0.0000027736, 0.0000027741, + 0.0000027718, 0.0000027696, 0.0000027719, 0.0000027792, 0.0000027839, + 0.0000027836, 0.0000027833, 0.0000027840, 0.0000027822, 0.0000027792, + 0.0000027793, 0.0000027826, 0.0000027870, 0.0000027923, 0.0000027991, + 0.0000028054, 0.0000028086, 0.0000028074, 0.0000028022, 0.0000027955, + 0.0000027900, 0.0000027862, 0.0000027829, 0.0000027798, 0.0000027772, + 0.0000027751, 0.0000027730, 0.0000027710, 0.0000027696, 0.0000027694, + 0.0000027694, 0.0000027690, 0.0000027688, 0.0000027703, 0.0000027820, + 0.0000027863, 0.0000027881, 0.0000027879, 0.0000027875, 0.0000027868, + 0.0000027857, 0.0000027837, 0.0000027809, 0.0000027781, 0.0000027747, + 0.0000027673, 0.0000027536, 0.0000027376, 0.0000027240, 0.0000027093, + 0.0000026912, 0.0000026838, 0.0000026946, 0.0000027183, 0.0000027370, + 0.0000027466, 0.0000027520, 0.0000027562, 0.0000027593, 0.0000027628, + 0.0000027689, 0.0000027765, 0.0000027817, 0.0000027840, 0.0000027833, + 0.0000027808, 0.0000027775, 0.0000027758, 0.0000027763, 0.0000027796, + 0.0000027847, 0.0000027891, 0.0000027901, 0.0000027890, 0.0000027885, + 0.0000027893, 0.0000027890, 0.0000027860, 0.0000027847, 0.0000027867, + 0.0000027889, 0.0000027871, 0.0000027787, 0.0000027647, 0.0000027498, + 0.0000027401, 0.0000027359, 0.0000027340, 0.0000027323, 0.0000027313, + 0.0000027307, 0.0000027288, 0.0000027241, 0.0000027161, 0.0000027094, + 0.0000027083, 0.0000027165, 0.0000027280, 0.0000027298, 0.0000027305, + 0.0000027442, 0.0000027452, 0.0000027352, 0.0000027289, 0.0000027140, + 0.0000027180, 0.0000027495, 0.0000027705, 0.0000027707, 0.0000027576, + 0.0000027432, 0.0000027358, 0.0000027290, 0.0000027264, 0.0000027340, + 0.0000027430, 0.0000027439, 0.0000027364, 0.0000027285, 0.0000027282, + 0.0000027305, 0.0000027271, 0.0000027161, 0.0000026989, 0.0000026830, + 0.0000026783, 0.0000026779, 0.0000026790, 0.0000026847, 0.0000026943, + 0.0000027017, 0.0000027088, 0.0000027161, 0.0000027243, 0.0000027368, + 0.0000027475, 0.0000027471, 0.0000027440, 0.0000027391, 0.0000027322, + 0.0000027283, 0.0000027228, 0.0000027071, 0.0000026864, 0.0000026781, + 0.0000026891, 0.0000027173, 0.0000027403, 0.0000027503, 0.0000027558, + 0.0000027611, 0.0000027673, 0.0000027716, 0.0000027759, 0.0000027830, + 0.0000027915, 0.0000027988, 0.0000028031, 0.0000028053, 0.0000028045, + 0.0000028008, 0.0000027960, 0.0000027893, 0.0000027815, 0.0000027726, + 0.0000027638, 0.0000027546, 0.0000027456, 0.0000027375, 0.0000027313, + 0.0000027257, 0.0000027198, 0.0000027157, 0.0000027106, 0.0000027048, + 0.0000027010, 0.0000026983, 0.0000026937, 0.0000026881, 0.0000026826, + 0.0000026781, 0.0000026768, 0.0000026779, 0.0000026801, 0.0000026832, + 0.0000026866, 0.0000026902, 0.0000026957, 0.0000027035, 0.0000027134, + 0.0000027239, 0.0000027322, 0.0000027380, 0.0000027410, 0.0000027414, + 0.0000027394, 0.0000027364, 0.0000027283, 0.0000027102, 0.0000026923, + 0.0000026885, 0.0000026928, 0.0000027014, 0.0000027047, 0.0000027029, + 0.0000027028, 0.0000027060, 0.0000027118, 0.0000027158, 0.0000027137, + 0.0000027051, 0.0000026951, 0.0000026886, 0.0000026861, 0.0000026861, + 0.0000026885, 0.0000026933, 0.0000026979, 0.0000027011, 0.0000027045, + 0.0000027094, 0.0000027152, 0.0000027214, 0.0000027272, 0.0000027326, + 0.0000027383, 0.0000027443, 0.0000027492, 0.0000027505, 0.0000027485, + 0.0000027460, 0.0000027451, 0.0000027429, 0.0000027355, 0.0000027235, + 0.0000027118, 0.0000027058, 0.0000027055, 0.0000027096, 0.0000027153, + 0.0000027193, 0.0000027187, 0.0000027111, 0.0000027016, 0.0000026898, + 0.0000026737, 0.0000026636, 0.0000026648, 0.0000026720, 0.0000026807, + 0.0000026908, 0.0000027027, 0.0000027052, 0.0000027008, 0.0000027004, + 0.0000027054, 0.0000027128, 0.0000027183, 0.0000027188, 0.0000027177, + 0.0000027164, 0.0000027128, 0.0000027096, 0.0000027093, 0.0000027124, + 0.0000027181, 0.0000027252, 0.0000027310, 0.0000027334, 0.0000027323, + 0.0000027246, 0.0000027108, 0.0000026972, 0.0000026883, 0.0000026806, + 0.0000026730, 0.0000026700, 0.0000026689, 0.0000026659, 0.0000026610, + 0.0000026588, 0.0000026663, 0.0000026874, 0.0000027066, 0.0000027124, + 0.0000027062, 0.0000026969, 0.0000026959, 0.0000027035, 0.0000027119, + 0.0000027041, 0.0000026939, 0.0000027013, 0.0000027151, 0.0000027241, + 0.0000027297, 0.0000027346, 0.0000027397, 0.0000027397, 0.0000027330, + 0.0000027233, 0.0000027136, 0.0000027055, 0.0000027001, 0.0000026970, + 0.0000026958, 0.0000026965, 0.0000026973, 0.0000026982, 0.0000026995, + 0.0000027014, 0.0000027034, 0.0000027049, 0.0000027063, 0.0000027080, + 0.0000027128, 0.0000027212, 0.0000027261, 0.0000027219, 0.0000027097, + 0.0000027049, 0.0000027135, 0.0000027344, 0.0000027526, 0.0000027586, + 0.0000027570, 0.0000027544, 0.0000027537, 0.0000027512, 0.0000027464, + 0.0000027416, 0.0000027388, 0.0000027375, 0.0000027361, 0.0000027347, + 0.0000027349, 0.0000027361, 0.0000027387, 0.0000027442, 0.0000027508, + 0.0000027548, 0.0000027563, 0.0000027565, 0.0000027550, 0.0000027528, + 0.0000027525, 0.0000027536, 0.0000027553, 0.0000027586, 0.0000027626, + 0.0000027657, 0.0000027676, 0.0000027683, 0.0000027671, 0.0000027643, + 0.0000027605, 0.0000027554, 0.0000027509, 0.0000027494, 0.0000027507, + 0.0000027510, 0.0000027483, 0.0000027442, 0.0000027420, 0.0000027440, + 0.0000027509, 0.0000027584, 0.0000027652, 0.0000027716, 0.0000027762, + 0.0000027782, 0.0000027777, 0.0000027757, 0.0000027745, 0.0000027729, + 0.0000027702, 0.0000027672, 0.0000027657, 0.0000027648, 0.0000027631, + 0.0000027604, 0.0000027588, 0.0000027594, 0.0000027620, 0.0000027650, + 0.0000027690, 0.0000027743, 0.0000027786, 0.0000027808, 0.0000027808, + 0.0000027792, 0.0000027775, 0.0000027759, 0.0000027735, 0.0000027701, + 0.0000027658, 0.0000027642, 0.0000027692, 0.0000027778, 0.0000027821, + 0.0000027826, 0.0000027855, 0.0000027888, 0.0000027881, 0.0000027843, + 0.0000027811, 0.0000027808, 0.0000027829, 0.0000027887, 0.0000027988, + 0.0000028096, 0.0000028153, 0.0000028145, 0.0000028086, 0.0000028003, + 0.0000027939, 0.0000027906, 0.0000027888, 0.0000027868, 0.0000027840, + 0.0000027808, 0.0000027781, 0.0000027767, 0.0000027770, 0.0000027780, + 0.0000027781, 0.0000027769, 0.0000027752, 0.0000027748, 0.0000027771, + 0.0000027897, 0.0000027914, 0.0000027903, 0.0000027880, 0.0000027863, + 0.0000027857, 0.0000027861, 0.0000027868, 0.0000027870, 0.0000027865, + 0.0000027836, 0.0000027759, 0.0000027614, 0.0000027438, 0.0000027294, + 0.0000027148, 0.0000026952, 0.0000026842, 0.0000026909, 0.0000027131, + 0.0000027313, 0.0000027399, 0.0000027434, 0.0000027458, 0.0000027484, + 0.0000027526, 0.0000027586, 0.0000027652, 0.0000027715, 0.0000027773, + 0.0000027805, 0.0000027813, 0.0000027799, 0.0000027785, 0.0000027792, + 0.0000027829, 0.0000027875, 0.0000027932, 0.0000027981, 0.0000027993, + 0.0000027969, 0.0000027929, 0.0000027899, 0.0000027867, 0.0000027829, + 0.0000027815, 0.0000027831, 0.0000027842, 0.0000027814, 0.0000027734, + 0.0000027617, 0.0000027504, 0.0000027426, 0.0000027392, 0.0000027380, + 0.0000027370, 0.0000027363, 0.0000027348, 0.0000027306, 0.0000027221, + 0.0000027131, 0.0000027093, 0.0000027145, 0.0000027255, 0.0000027295, + 0.0000027276, 0.0000027387, 0.0000027475, 0.0000027368, 0.0000027303, + 0.0000027186, 0.0000027107, 0.0000027312, 0.0000027601, 0.0000027667, + 0.0000027577, 0.0000027427, 0.0000027361, 0.0000027338, 0.0000027321, + 0.0000027375, 0.0000027444, 0.0000027448, 0.0000027388, 0.0000027305, + 0.0000027287, 0.0000027302, 0.0000027284, 0.0000027197, 0.0000027038, + 0.0000026861, 0.0000026755, 0.0000026737, 0.0000026736, 0.0000026760, + 0.0000026822, 0.0000026915, 0.0000027004, 0.0000027104, 0.0000027233, + 0.0000027361, 0.0000027463, 0.0000027492, 0.0000027468, 0.0000027448, + 0.0000027405, 0.0000027327, 0.0000027271, 0.0000027188, 0.0000027032, + 0.0000026857, 0.0000026820, 0.0000026965, 0.0000027220, 0.0000027395, + 0.0000027481, 0.0000027538, 0.0000027581, 0.0000027627, 0.0000027679, + 0.0000027762, 0.0000027874, 0.0000027975, 0.0000028045, 0.0000028088, + 0.0000028115, 0.0000028113, 0.0000028076, 0.0000028030, 0.0000027962, + 0.0000027870, 0.0000027770, 0.0000027672, 0.0000027579, 0.0000027500, + 0.0000027435, 0.0000027391, 0.0000027360, 0.0000027314, 0.0000027272, + 0.0000027225, 0.0000027162, 0.0000027111, 0.0000027079, 0.0000027030, + 0.0000026957, 0.0000026888, 0.0000026838, 0.0000026817, 0.0000026825, + 0.0000026846, 0.0000026873, 0.0000026909, 0.0000026953, 0.0000027008, + 0.0000027079, 0.0000027159, 0.0000027244, 0.0000027324, 0.0000027387, + 0.0000027428, 0.0000027432, 0.0000027407, 0.0000027367, 0.0000027313, + 0.0000027184, 0.0000026993, 0.0000026898, 0.0000026928, 0.0000027005, + 0.0000027051, 0.0000027038, 0.0000027010, 0.0000027022, 0.0000027060, + 0.0000027101, 0.0000027110, 0.0000027059, 0.0000026975, 0.0000026917, + 0.0000026902, 0.0000026908, 0.0000026923, 0.0000026957, 0.0000027006, + 0.0000027047, 0.0000027079, 0.0000027121, 0.0000027177, 0.0000027240, + 0.0000027300, 0.0000027341, 0.0000027365, 0.0000027379, 0.0000027394, + 0.0000027414, 0.0000027427, 0.0000027433, 0.0000027442, 0.0000027453, + 0.0000027445, 0.0000027385, 0.0000027279, 0.0000027163, 0.0000027078, + 0.0000027046, 0.0000027052, 0.0000027094, 0.0000027148, 0.0000027185, + 0.0000027161, 0.0000027066, 0.0000026960, 0.0000026844, 0.0000026702, + 0.0000026630, 0.0000026656, 0.0000026721, 0.0000026786, 0.0000026907, + 0.0000027022, 0.0000027027, 0.0000026986, 0.0000026979, 0.0000027016, + 0.0000027081, 0.0000027118, 0.0000027125, 0.0000027130, 0.0000027122, + 0.0000027105, 0.0000027106, 0.0000027132, 0.0000027172, 0.0000027219, + 0.0000027266, 0.0000027299, 0.0000027313, 0.0000027299, 0.0000027232, + 0.0000027083, 0.0000026930, 0.0000026851, 0.0000026784, 0.0000026696, + 0.0000026633, 0.0000026607, 0.0000026585, 0.0000026555, 0.0000026571, + 0.0000026714, 0.0000026924, 0.0000027074, 0.0000027098, 0.0000027015, + 0.0000026935, 0.0000026926, 0.0000026994, 0.0000027091, 0.0000027015, + 0.0000026938, 0.0000027018, 0.0000027155, 0.0000027263, 0.0000027344, + 0.0000027394, 0.0000027422, 0.0000027411, 0.0000027348, 0.0000027258, + 0.0000027167, 0.0000027091, 0.0000027039, 0.0000027010, 0.0000026993, + 0.0000026985, 0.0000026978, 0.0000026979, 0.0000026992, 0.0000027014, + 0.0000027033, 0.0000027046, 0.0000027057, 0.0000027076, 0.0000027121, + 0.0000027212, 0.0000027296, 0.0000027258, 0.0000027110, 0.0000027033, + 0.0000027109, 0.0000027355, 0.0000027553, 0.0000027605, 0.0000027590, + 0.0000027557, 0.0000027543, 0.0000027523, 0.0000027494, 0.0000027466, + 0.0000027446, 0.0000027428, 0.0000027405, 0.0000027380, 0.0000027363, + 0.0000027364, 0.0000027368, 0.0000027392, 0.0000027445, 0.0000027507, + 0.0000027565, 0.0000027609, 0.0000027616, 0.0000027589, 0.0000027560, + 0.0000027554, 0.0000027567, 0.0000027598, 0.0000027642, 0.0000027678, + 0.0000027703, 0.0000027716, 0.0000027709, 0.0000027684, 0.0000027643, + 0.0000027583, 0.0000027521, 0.0000027480, 0.0000027469, 0.0000027472, + 0.0000027454, 0.0000027420, 0.0000027400, 0.0000027415, 0.0000027499, + 0.0000027607, 0.0000027717, 0.0000027826, 0.0000027918, 0.0000027973, + 0.0000027989, 0.0000027977, 0.0000027939, 0.0000027902, 0.0000027864, + 0.0000027823, 0.0000027785, 0.0000027753, 0.0000027710, 0.0000027655, + 0.0000027613, 0.0000027606, 0.0000027647, 0.0000027728, 0.0000027818, + 0.0000027887, 0.0000027925, 0.0000027933, 0.0000027918, 0.0000027885, + 0.0000027835, 0.0000027775, 0.0000027723, 0.0000027663, 0.0000027622, + 0.0000027620, 0.0000027680, 0.0000027766, 0.0000027794, 0.0000027802, + 0.0000027857, 0.0000027909, 0.0000027910, 0.0000027878, 0.0000027833, + 0.0000027786, 0.0000027784, 0.0000027852, 0.0000027982, 0.0000028128, + 0.0000028225, 0.0000028232, 0.0000028161, 0.0000028059, 0.0000027964, + 0.0000027901, 0.0000027869, 0.0000027854, 0.0000027849, 0.0000027845, + 0.0000027835, 0.0000027826, 0.0000027836, 0.0000027866, 0.0000027892, + 0.0000027886, 0.0000027857, 0.0000027829, 0.0000027828, 0.0000027858, + 0.0000027957, 0.0000027951, 0.0000027934, 0.0000027918, 0.0000027909, + 0.0000027907, 0.0000027913, 0.0000027924, 0.0000027927, 0.0000027918, + 0.0000027882, 0.0000027804, 0.0000027666, 0.0000027494, 0.0000027355, + 0.0000027228, 0.0000027055, 0.0000026919, 0.0000026947, 0.0000027116, + 0.0000027281, 0.0000027359, 0.0000027384, 0.0000027388, 0.0000027395, + 0.0000027420, 0.0000027466, 0.0000027515, 0.0000027566, 0.0000027628, + 0.0000027689, 0.0000027733, 0.0000027753, 0.0000027758, 0.0000027770, + 0.0000027810, 0.0000027863, 0.0000027915, 0.0000027972, 0.0000028019, + 0.0000028034, 0.0000028021, 0.0000027979, 0.0000027913, 0.0000027834, + 0.0000027768, 0.0000027740, 0.0000027751, 0.0000027757, 0.0000027729, + 0.0000027669, 0.0000027590, 0.0000027512, 0.0000027457, 0.0000027434, + 0.0000027427, 0.0000027421, 0.0000027413, 0.0000027381, 0.0000027301, + 0.0000027188, 0.0000027119, 0.0000027139, 0.0000027247, 0.0000027296, + 0.0000027252, 0.0000027318, 0.0000027476, 0.0000027419, 0.0000027306, + 0.0000027231, 0.0000027095, 0.0000027152, 0.0000027459, 0.0000027606, + 0.0000027561, 0.0000027425, 0.0000027340, 0.0000027340, 0.0000027356, + 0.0000027413, 0.0000027476, 0.0000027467, 0.0000027399, 0.0000027323, + 0.0000027300, 0.0000027311, 0.0000027295, 0.0000027230, 0.0000027092, + 0.0000026899, 0.0000026761, 0.0000026713, 0.0000026699, 0.0000026709, + 0.0000026751, 0.0000026817, 0.0000026915, 0.0000027024, 0.0000027169, + 0.0000027326, 0.0000027430, 0.0000027477, 0.0000027464, 0.0000027447, + 0.0000027448, 0.0000027431, 0.0000027371, 0.0000027294, 0.0000027172, + 0.0000026998, 0.0000026861, 0.0000026868, 0.0000027024, 0.0000027225, + 0.0000027360, 0.0000027442, 0.0000027507, 0.0000027541, 0.0000027565, + 0.0000027617, 0.0000027728, 0.0000027863, 0.0000027979, 0.0000028063, + 0.0000028125, 0.0000028162, 0.0000028164, 0.0000028136, 0.0000028093, + 0.0000028030, 0.0000027948, 0.0000027842, 0.0000027734, 0.0000027648, + 0.0000027572, 0.0000027503, 0.0000027465, 0.0000027440, 0.0000027400, + 0.0000027361, 0.0000027326, 0.0000027273, 0.0000027221, 0.0000027184, + 0.0000027135, 0.0000027054, 0.0000026965, 0.0000026902, 0.0000026876, + 0.0000026880, 0.0000026902, 0.0000026930, 0.0000026968, 0.0000027020, + 0.0000027077, 0.0000027138, 0.0000027200, 0.0000027264, 0.0000027331, + 0.0000027393, 0.0000027436, 0.0000027444, 0.0000027416, 0.0000027366, + 0.0000027319, 0.0000027237, 0.0000027070, 0.0000026936, 0.0000026925, + 0.0000027008, 0.0000027061, 0.0000027062, 0.0000027027, 0.0000027005, + 0.0000027022, 0.0000027053, 0.0000027075, 0.0000027062, 0.0000027001, + 0.0000026941, 0.0000026922, 0.0000026933, 0.0000026957, 0.0000026993, + 0.0000027044, 0.0000027094, 0.0000027132, 0.0000027170, 0.0000027220, + 0.0000027279, 0.0000027336, 0.0000027379, 0.0000027400, 0.0000027400, + 0.0000027384, 0.0000027365, 0.0000027354, 0.0000027355, 0.0000027373, + 0.0000027412, 0.0000027450, 0.0000027457, 0.0000027411, 0.0000027318, + 0.0000027214, 0.0000027127, 0.0000027064, 0.0000027034, 0.0000027039, + 0.0000027078, 0.0000027125, 0.0000027156, 0.0000027125, 0.0000027021, + 0.0000026908, 0.0000026793, 0.0000026669, 0.0000026620, 0.0000026650, + 0.0000026693, 0.0000026767, 0.0000026925, 0.0000027042, 0.0000027023, + 0.0000026970, 0.0000026945, 0.0000026959, 0.0000026997, 0.0000027022, + 0.0000027031, 0.0000027045, 0.0000027056, 0.0000027085, 0.0000027130, + 0.0000027172, 0.0000027214, 0.0000027243, 0.0000027256, 0.0000027248, + 0.0000027246, 0.0000027254, 0.0000027215, 0.0000027069, 0.0000026906, + 0.0000026826, 0.0000026775, 0.0000026682, 0.0000026596, 0.0000026556, + 0.0000026541, 0.0000026540, 0.0000026610, 0.0000026778, 0.0000026959, + 0.0000027064, 0.0000027065, 0.0000026984, 0.0000026915, 0.0000026890, + 0.0000026955, 0.0000027061, 0.0000027006, 0.0000026942, 0.0000027017, + 0.0000027146, 0.0000027271, 0.0000027378, 0.0000027443, 0.0000027452, + 0.0000027433, 0.0000027375, 0.0000027296, 0.0000027217, 0.0000027150, + 0.0000027104, 0.0000027083, 0.0000027075, 0.0000027071, 0.0000027068, + 0.0000027074, 0.0000027089, 0.0000027102, 0.0000027104, 0.0000027098, + 0.0000027099, 0.0000027112, 0.0000027147, 0.0000027227, 0.0000027313, + 0.0000027280, 0.0000027111, 0.0000027015, 0.0000027106, 0.0000027378, + 0.0000027574, 0.0000027620, 0.0000027611, 0.0000027579, 0.0000027565, + 0.0000027557, 0.0000027543, 0.0000027525, 0.0000027505, 0.0000027480, + 0.0000027454, 0.0000027415, 0.0000027364, 0.0000027336, 0.0000027322, + 0.0000027330, 0.0000027384, 0.0000027474, 0.0000027577, 0.0000027653, + 0.0000027668, 0.0000027631, 0.0000027567, 0.0000027537, 0.0000027554, + 0.0000027608, 0.0000027684, 0.0000027753, 0.0000027792, 0.0000027796, + 0.0000027772, 0.0000027729, 0.0000027681, 0.0000027622, 0.0000027555, + 0.0000027498, 0.0000027465, 0.0000027457, 0.0000027448, 0.0000027426, + 0.0000027404, 0.0000027411, 0.0000027481, 0.0000027585, 0.0000027694, + 0.0000027813, 0.0000027927, 0.0000028013, 0.0000028059, 0.0000028069, + 0.0000028049, 0.0000027994, 0.0000027943, 0.0000027903, 0.0000027861, + 0.0000027818, 0.0000027766, 0.0000027704, 0.0000027651, 0.0000027648, + 0.0000027722, 0.0000027843, 0.0000027946, 0.0000027993, 0.0000027992, + 0.0000027967, 0.0000027942, 0.0000027915, 0.0000027865, 0.0000027782, + 0.0000027697, 0.0000027637, 0.0000027610, 0.0000027624, 0.0000027691, + 0.0000027756, 0.0000027769, 0.0000027778, 0.0000027844, 0.0000027905, + 0.0000027913, 0.0000027893, 0.0000027846, 0.0000027784, 0.0000027766, + 0.0000027826, 0.0000027980, 0.0000028147, 0.0000028254, 0.0000028265, + 0.0000028184, 0.0000028055, 0.0000027926, 0.0000027826, 0.0000027761, + 0.0000027737, 0.0000027743, 0.0000027774, 0.0000027821, 0.0000027863, + 0.0000027901, 0.0000027942, 0.0000027981, 0.0000027991, 0.0000027969, + 0.0000027936, 0.0000027924, 0.0000027933, 0.0000027950, 0.0000028008, + 0.0000028005, 0.0000028004, 0.0000028001, 0.0000027994, 0.0000027984, + 0.0000027972, 0.0000027957, 0.0000027946, 0.0000027925, 0.0000027895, + 0.0000027826, 0.0000027696, 0.0000027535, 0.0000027408, 0.0000027306, + 0.0000027172, 0.0000027052, 0.0000027045, 0.0000027145, 0.0000027263, + 0.0000027337, 0.0000027381, 0.0000027389, 0.0000027382, 0.0000027386, + 0.0000027410, 0.0000027448, 0.0000027495, 0.0000027542, 0.0000027581, + 0.0000027607, 0.0000027633, 0.0000027665, 0.0000027703, 0.0000027753, + 0.0000027816, 0.0000027878, 0.0000027938, 0.0000027995, 0.0000028035, + 0.0000028053, 0.0000028051, 0.0000028016, 0.0000027933, 0.0000027817, + 0.0000027717, 0.0000027666, 0.0000027663, 0.0000027664, 0.0000027645, + 0.0000027618, 0.0000027590, 0.0000027558, 0.0000027534, 0.0000027524, + 0.0000027510, 0.0000027488, 0.0000027453, 0.0000027385, 0.0000027272, + 0.0000027169, 0.0000027155, 0.0000027243, 0.0000027310, 0.0000027253, + 0.0000027243, 0.0000027432, 0.0000027479, 0.0000027338, 0.0000027257, + 0.0000027127, 0.0000027070, 0.0000027281, 0.0000027517, 0.0000027525, + 0.0000027426, 0.0000027319, 0.0000027306, 0.0000027346, 0.0000027431, + 0.0000027510, 0.0000027500, 0.0000027411, 0.0000027324, 0.0000027308, + 0.0000027322, 0.0000027310, 0.0000027255, 0.0000027151, 0.0000026965, + 0.0000026783, 0.0000026721, 0.0000026705, 0.0000026687, 0.0000026711, + 0.0000026765, 0.0000026850, 0.0000026969, 0.0000027105, 0.0000027262, + 0.0000027377, 0.0000027421, 0.0000027434, 0.0000027410, 0.0000027414, + 0.0000027440, 0.0000027449, 0.0000027422, 0.0000027344, 0.0000027190, + 0.0000026996, 0.0000026881, 0.0000026912, 0.0000027069, 0.0000027211, + 0.0000027308, 0.0000027391, 0.0000027462, 0.0000027490, 0.0000027501, + 0.0000027549, 0.0000027670, 0.0000027822, 0.0000027944, 0.0000028030, + 0.0000028101, 0.0000028154, 0.0000028170, 0.0000028152, 0.0000028115, + 0.0000028056, 0.0000027979, 0.0000027888, 0.0000027792, 0.0000027717, + 0.0000027657, 0.0000027598, 0.0000027556, 0.0000027526, 0.0000027483, + 0.0000027441, 0.0000027410, 0.0000027369, 0.0000027324, 0.0000027280, + 0.0000027232, 0.0000027156, 0.0000027057, 0.0000026971, 0.0000026932, + 0.0000026932, 0.0000026961, 0.0000027000, 0.0000027044, 0.0000027098, + 0.0000027156, 0.0000027210, 0.0000027258, 0.0000027305, 0.0000027354, + 0.0000027407, 0.0000027448, 0.0000027457, 0.0000027429, 0.0000027373, + 0.0000027320, 0.0000027261, 0.0000027133, 0.0000026982, 0.0000026943, + 0.0000027003, 0.0000027077, 0.0000027089, 0.0000027068, 0.0000027034, + 0.0000027017, 0.0000027025, 0.0000027053, 0.0000027064, 0.0000027029, + 0.0000026965, 0.0000026932, 0.0000026937, 0.0000026970, 0.0000027017, + 0.0000027078, 0.0000027141, 0.0000027194, 0.0000027245, 0.0000027301, + 0.0000027359, 0.0000027404, 0.0000027430, 0.0000027437, 0.0000027428, + 0.0000027404, 0.0000027372, 0.0000027338, 0.0000027319, 0.0000027319, + 0.0000027345, 0.0000027398, 0.0000027446, 0.0000027465, 0.0000027431, + 0.0000027348, 0.0000027260, 0.0000027189, 0.0000027122, 0.0000027053, + 0.0000027010, 0.0000027013, 0.0000027047, 0.0000027088, 0.0000027123, + 0.0000027098, 0.0000026982, 0.0000026851, 0.0000026747, 0.0000026650, + 0.0000026602, 0.0000026622, 0.0000026654, 0.0000026765, 0.0000026962, + 0.0000027074, 0.0000027045, 0.0000026972, 0.0000026923, 0.0000026897, + 0.0000026909, 0.0000026921, 0.0000026937, 0.0000026956, 0.0000026992, + 0.0000027055, 0.0000027126, 0.0000027189, 0.0000027235, 0.0000027250, + 0.0000027226, 0.0000027175, 0.0000027165, 0.0000027194, 0.0000027186, + 0.0000027080, 0.0000026922, 0.0000026831, 0.0000026780, 0.0000026696, + 0.0000026602, 0.0000026543, 0.0000026530, 0.0000026553, 0.0000026663, + 0.0000026831, 0.0000026973, 0.0000027049, 0.0000027052, 0.0000026988, + 0.0000026914, 0.0000026874, 0.0000026916, 0.0000027032, 0.0000027011, + 0.0000026953, 0.0000027013, 0.0000027124, 0.0000027255, 0.0000027392, + 0.0000027485, 0.0000027502, 0.0000027473, 0.0000027412, 0.0000027341, + 0.0000027273, 0.0000027212, 0.0000027176, 0.0000027169, 0.0000027170, + 0.0000027165, 0.0000027154, 0.0000027149, 0.0000027151, 0.0000027151, + 0.0000027144, 0.0000027135, 0.0000027135, 0.0000027153, 0.0000027189, + 0.0000027257, 0.0000027331, 0.0000027285, 0.0000027099, 0.0000027010, + 0.0000027131, 0.0000027415, 0.0000027596, 0.0000027643, 0.0000027646, + 0.0000027627, 0.0000027612, 0.0000027610, 0.0000027600, 0.0000027580, + 0.0000027553, 0.0000027519, 0.0000027485, 0.0000027429, 0.0000027346, + 0.0000027278, 0.0000027260, 0.0000027269, 0.0000027329, 0.0000027442, + 0.0000027576, 0.0000027670, 0.0000027686, 0.0000027639, 0.0000027553, + 0.0000027520, 0.0000027571, 0.0000027700, 0.0000027839, 0.0000027948, + 0.0000027998, 0.0000027993, 0.0000027947, 0.0000027873, 0.0000027780, + 0.0000027682, 0.0000027584, 0.0000027500, 0.0000027446, 0.0000027425, + 0.0000027423, 0.0000027418, 0.0000027407, 0.0000027412, 0.0000027473, + 0.0000027579, 0.0000027682, 0.0000027795, 0.0000027913, 0.0000028005, + 0.0000028065, 0.0000028094, 0.0000028092, 0.0000028048, 0.0000027977, + 0.0000027927, 0.0000027891, 0.0000027852, 0.0000027807, 0.0000027761, + 0.0000027739, 0.0000027758, 0.0000027840, 0.0000027945, 0.0000028013, + 0.0000028026, 0.0000028007, 0.0000027975, 0.0000027938, 0.0000027905, + 0.0000027855, 0.0000027776, 0.0000027689, 0.0000027635, 0.0000027629, + 0.0000027673, 0.0000027732, 0.0000027757, 0.0000027742, 0.0000027763, + 0.0000027831, 0.0000027878, 0.0000027886, 0.0000027874, 0.0000027834, + 0.0000027780, 0.0000027764, 0.0000027812, 0.0000027962, 0.0000028136, + 0.0000028242, 0.0000028252, 0.0000028164, 0.0000028016, 0.0000027872, + 0.0000027747, 0.0000027650, 0.0000027601, 0.0000027602, 0.0000027644, + 0.0000027716, 0.0000027808, 0.0000027907, 0.0000028000, 0.0000028058, + 0.0000028073, 0.0000028055, 0.0000028027, 0.0000028019, 0.0000028026, + 0.0000028025, 0.0000028015, 0.0000028087, 0.0000028083, 0.0000028076, + 0.0000028067, 0.0000028051, 0.0000028019, 0.0000027984, 0.0000027950, + 0.0000027928, 0.0000027918, 0.0000027890, 0.0000027823, 0.0000027705, + 0.0000027565, 0.0000027459, 0.0000027388, 0.0000027306, 0.0000027225, + 0.0000027200, 0.0000027233, 0.0000027288, 0.0000027346, 0.0000027406, + 0.0000027443, 0.0000027444, 0.0000027442, 0.0000027460, 0.0000027490, + 0.0000027527, 0.0000027568, 0.0000027593, 0.0000027594, 0.0000027583, + 0.0000027592, 0.0000027625, 0.0000027660, 0.0000027717, 0.0000027786, + 0.0000027861, 0.0000027936, 0.0000028001, 0.0000028051, 0.0000028076, + 0.0000028077, 0.0000028038, 0.0000027944, 0.0000027810, 0.0000027693, + 0.0000027623, 0.0000027603, 0.0000027601, 0.0000027600, 0.0000027603, + 0.0000027606, 0.0000027609, 0.0000027610, 0.0000027607, 0.0000027579, + 0.0000027532, 0.0000027468, 0.0000027372, 0.0000027259, 0.0000027207, + 0.0000027251, 0.0000027317, 0.0000027271, 0.0000027201, 0.0000027348, + 0.0000027494, 0.0000027402, 0.0000027287, 0.0000027172, 0.0000027049, + 0.0000027129, 0.0000027381, 0.0000027457, 0.0000027410, 0.0000027315, + 0.0000027261, 0.0000027298, 0.0000027412, 0.0000027530, 0.0000027540, + 0.0000027441, 0.0000027323, 0.0000027297, 0.0000027327, 0.0000027329, + 0.0000027287, 0.0000027201, 0.0000027051, 0.0000026856, 0.0000026742, + 0.0000026732, 0.0000026725, 0.0000026715, 0.0000026751, 0.0000026825, + 0.0000026945, 0.0000027092, 0.0000027226, 0.0000027325, 0.0000027361, + 0.0000027360, 0.0000027365, 0.0000027352, 0.0000027383, 0.0000027428, + 0.0000027449, 0.0000027442, 0.0000027383, 0.0000027233, 0.0000027023, + 0.0000026909, 0.0000026953, 0.0000027104, 0.0000027195, 0.0000027252, + 0.0000027331, 0.0000027409, 0.0000027428, 0.0000027432, 0.0000027485, + 0.0000027613, 0.0000027775, 0.0000027887, 0.0000027947, 0.0000027997, + 0.0000028048, 0.0000028082, 0.0000028086, 0.0000028076, 0.0000028047, + 0.0000027977, 0.0000027888, 0.0000027808, 0.0000027754, 0.0000027725, + 0.0000027690, 0.0000027656, 0.0000027621, 0.0000027574, 0.0000027530, + 0.0000027500, 0.0000027460, 0.0000027416, 0.0000027368, 0.0000027317, + 0.0000027251, 0.0000027160, 0.0000027059, 0.0000026993, 0.0000026985, + 0.0000027017, 0.0000027070, 0.0000027123, 0.0000027175, 0.0000027228, + 0.0000027273, 0.0000027311, 0.0000027344, 0.0000027377, 0.0000027418, + 0.0000027458, 0.0000027471, 0.0000027448, 0.0000027395, 0.0000027335, + 0.0000027278, 0.0000027177, 0.0000027027, 0.0000026950, 0.0000026997, + 0.0000027082, 0.0000027119, 0.0000027114, 0.0000027089, 0.0000027063, + 0.0000027050, 0.0000027056, 0.0000027076, 0.0000027059, 0.0000026995, + 0.0000026941, 0.0000026939, 0.0000026971, 0.0000027023, 0.0000027088, + 0.0000027162, 0.0000027239, 0.0000027318, 0.0000027399, 0.0000027466, + 0.0000027501, 0.0000027503, 0.0000027480, 0.0000027447, 0.0000027419, + 0.0000027385, 0.0000027351, 0.0000027323, 0.0000027313, 0.0000027326, + 0.0000027361, 0.0000027415, 0.0000027462, 0.0000027478, 0.0000027446, + 0.0000027371, 0.0000027299, 0.0000027250, 0.0000027197, 0.0000027115, + 0.0000027026, 0.0000026975, 0.0000026976, 0.0000027008, 0.0000027054, + 0.0000027103, 0.0000027070, 0.0000026924, 0.0000026794, 0.0000026718, + 0.0000026625, 0.0000026584, 0.0000026588, 0.0000026633, 0.0000026790, + 0.0000027015, 0.0000027123, 0.0000027080, 0.0000026986, 0.0000026908, + 0.0000026872, 0.0000026853, 0.0000026861, 0.0000026876, 0.0000026897, + 0.0000026943, 0.0000027008, 0.0000027082, 0.0000027160, 0.0000027222, + 0.0000027230, 0.0000027180, 0.0000027099, 0.0000027075, 0.0000027120, + 0.0000027170, 0.0000027128, 0.0000026985, 0.0000026861, 0.0000026799, + 0.0000026732, 0.0000026644, 0.0000026571, 0.0000026541, 0.0000026586, + 0.0000026715, 0.0000026874, 0.0000026989, 0.0000027068, 0.0000027092, + 0.0000027024, 0.0000026932, 0.0000026865, 0.0000026888, 0.0000027004, + 0.0000027007, 0.0000026965, 0.0000027004, 0.0000027096, 0.0000027212, + 0.0000027362, 0.0000027498, 0.0000027551, 0.0000027528, 0.0000027468, + 0.0000027400, 0.0000027329, 0.0000027262, 0.0000027221, 0.0000027212, + 0.0000027214, 0.0000027211, 0.0000027202, 0.0000027193, 0.0000027189, + 0.0000027190, 0.0000027188, 0.0000027177, 0.0000027171, 0.0000027188, + 0.0000027225, 0.0000027287, 0.0000027335, 0.0000027272, 0.0000027074, + 0.0000026997, 0.0000027183, 0.0000027471, 0.0000027633, 0.0000027681, + 0.0000027693, 0.0000027681, 0.0000027656, 0.0000027647, 0.0000027625, + 0.0000027598, 0.0000027565, 0.0000027527, 0.0000027487, 0.0000027418, + 0.0000027317, 0.0000027234, 0.0000027211, 0.0000027219, 0.0000027280, + 0.0000027401, 0.0000027552, 0.0000027659, 0.0000027674, 0.0000027616, + 0.0000027544, 0.0000027553, 0.0000027691, 0.0000027884, 0.0000028006, + 0.0000028079, 0.0000028101, 0.0000028097, 0.0000028081, 0.0000028050, + 0.0000027976, 0.0000027855, 0.0000027711, 0.0000027565, 0.0000027458, + 0.0000027396, 0.0000027367, 0.0000027355, 0.0000027353, 0.0000027372, + 0.0000027439, 0.0000027546, 0.0000027655, 0.0000027770, 0.0000027889, + 0.0000027990, 0.0000028056, 0.0000028096, 0.0000028110, 0.0000028085, + 0.0000028017, 0.0000027944, 0.0000027905, 0.0000027881, 0.0000027863, + 0.0000027856, 0.0000027861, 0.0000027890, 0.0000027936, 0.0000027980, + 0.0000028010, 0.0000028017, 0.0000028003, 0.0000027967, 0.0000027918, + 0.0000027873, 0.0000027831, 0.0000027779, 0.0000027725, 0.0000027683, + 0.0000027700, 0.0000027758, 0.0000027786, 0.0000027764, 0.0000027734, + 0.0000027766, 0.0000027843, 0.0000027869, 0.0000027858, 0.0000027842, + 0.0000027809, 0.0000027766, 0.0000027754, 0.0000027810, 0.0000027945, + 0.0000028106, 0.0000028207, 0.0000028230, 0.0000028162, 0.0000028020, + 0.0000027850, 0.0000027702, 0.0000027570, 0.0000027488, 0.0000027478, + 0.0000027522, 0.0000027604, 0.0000027711, 0.0000027844, 0.0000027991, + 0.0000028102, 0.0000028126, 0.0000028112, 0.0000028087, 0.0000028087, + 0.0000028099, 0.0000028104, 0.0000028092, 0.0000028086, 0.0000028157, + 0.0000028129, 0.0000028107, 0.0000028092, 0.0000028065, 0.0000028019, + 0.0000027969, 0.0000027938, 0.0000027930, 0.0000027915, 0.0000027881, + 0.0000027815, 0.0000027714, 0.0000027604, 0.0000027528, 0.0000027489, + 0.0000027459, 0.0000027429, 0.0000027413, 0.0000027414, 0.0000027427, + 0.0000027461, 0.0000027521, 0.0000027577, 0.0000027593, 0.0000027585, + 0.0000027585, 0.0000027599, 0.0000027624, 0.0000027654, 0.0000027674, + 0.0000027673, 0.0000027650, 0.0000027638, 0.0000027641, 0.0000027647, + 0.0000027654, 0.0000027680, 0.0000027730, 0.0000027814, 0.0000027898, + 0.0000027979, 0.0000028050, 0.0000028093, 0.0000028105, 0.0000028076, + 0.0000027970, 0.0000027818, 0.0000027689, 0.0000027612, 0.0000027586, + 0.0000027579, 0.0000027579, 0.0000027590, 0.0000027604, 0.0000027620, + 0.0000027632, 0.0000027628, 0.0000027595, 0.0000027541, 0.0000027469, + 0.0000027376, 0.0000027298, 0.0000027294, 0.0000027329, 0.0000027289, + 0.0000027188, 0.0000027265, 0.0000027461, 0.0000027452, 0.0000027336, + 0.0000027228, 0.0000027066, 0.0000027039, 0.0000027239, 0.0000027378, + 0.0000027366, 0.0000027314, 0.0000027231, 0.0000027226, 0.0000027352, + 0.0000027517, 0.0000027562, 0.0000027484, 0.0000027342, 0.0000027286, + 0.0000027313, 0.0000027333, 0.0000027314, 0.0000027255, 0.0000027138, + 0.0000026969, 0.0000026817, 0.0000026783, 0.0000026796, 0.0000026799, + 0.0000026809, 0.0000026860, 0.0000026955, 0.0000027086, 0.0000027218, + 0.0000027305, 0.0000027329, 0.0000027310, 0.0000027297, 0.0000027296, + 0.0000027306, 0.0000027357, 0.0000027414, 0.0000027441, 0.0000027440, + 0.0000027398, 0.0000027264, 0.0000027069, 0.0000026952, 0.0000026997, + 0.0000027128, 0.0000027176, 0.0000027198, 0.0000027264, 0.0000027344, + 0.0000027355, 0.0000027366, 0.0000027433, 0.0000027572, 0.0000027732, + 0.0000027828, 0.0000027857, 0.0000027870, 0.0000027892, 0.0000027919, + 0.0000027934, 0.0000027948, 0.0000027970, 0.0000027949, 0.0000027876, + 0.0000027792, 0.0000027746, 0.0000027746, 0.0000027753, 0.0000027737, + 0.0000027714, 0.0000027663, 0.0000027613, 0.0000027585, 0.0000027551, + 0.0000027504, 0.0000027456, 0.0000027409, 0.0000027349, 0.0000027273, + 0.0000027179, 0.0000027096, 0.0000027067, 0.0000027091, 0.0000027150, + 0.0000027206, 0.0000027251, 0.0000027288, 0.0000027317, 0.0000027342, + 0.0000027363, 0.0000027383, 0.0000027412, 0.0000027452, 0.0000027475, + 0.0000027464, 0.0000027419, 0.0000027359, 0.0000027297, 0.0000027211, + 0.0000027076, 0.0000026975, 0.0000026979, 0.0000027072, 0.0000027140, + 0.0000027153, 0.0000027146, 0.0000027129, 0.0000027115, 0.0000027115, + 0.0000027123, 0.0000027104, 0.0000027034, 0.0000026959, 0.0000026937, + 0.0000026965, 0.0000027017, 0.0000027083, 0.0000027162, 0.0000027258, + 0.0000027370, 0.0000027481, 0.0000027562, 0.0000027590, 0.0000027570, + 0.0000027524, 0.0000027473, 0.0000027434, 0.0000027406, 0.0000027385, + 0.0000027368, 0.0000027366, 0.0000027379, 0.0000027409, 0.0000027449, + 0.0000027487, 0.0000027508, 0.0000027503, 0.0000027462, 0.0000027398, + 0.0000027342, 0.0000027308, 0.0000027269, 0.0000027193, 0.0000027083, + 0.0000026980, 0.0000026930, 0.0000026942, 0.0000026984, 0.0000027039, + 0.0000027078, 0.0000027011, 0.0000026849, 0.0000026748, 0.0000026689, + 0.0000026611, 0.0000026570, 0.0000026568, 0.0000026636, 0.0000026835, + 0.0000027070, 0.0000027163, 0.0000027113, 0.0000027017, 0.0000026931, + 0.0000026876, 0.0000026852, 0.0000026860, 0.0000026873, 0.0000026903, + 0.0000026928, 0.0000026975, 0.0000027043, 0.0000027123, 0.0000027185, + 0.0000027189, 0.0000027123, 0.0000027017, 0.0000026978, 0.0000027049, + 0.0000027176, 0.0000027189, 0.0000027063, 0.0000026912, 0.0000026829, + 0.0000026772, 0.0000026701, 0.0000026627, 0.0000026591, 0.0000026644, + 0.0000026787, 0.0000026931, 0.0000027037, 0.0000027137, 0.0000027151, + 0.0000027067, 0.0000026957, 0.0000026881, 0.0000026882, 0.0000026968, + 0.0000027003, 0.0000026973, 0.0000026991, 0.0000027065, 0.0000027161, + 0.0000027299, 0.0000027457, 0.0000027555, 0.0000027563, 0.0000027531, + 0.0000027477, 0.0000027403, 0.0000027324, 0.0000027265, 0.0000027236, + 0.0000027230, 0.0000027237, 0.0000027253, 0.0000027270, 0.0000027283, + 0.0000027291, 0.0000027290, 0.0000027264, 0.0000027232, 0.0000027228, + 0.0000027256, 0.0000027309, 0.0000027334, 0.0000027246, 0.0000027050, + 0.0000027025, 0.0000027267, 0.0000027545, 0.0000027684, 0.0000027723, + 0.0000027726, 0.0000027703, 0.0000027663, 0.0000027635, 0.0000027604, + 0.0000027568, 0.0000027536, 0.0000027502, 0.0000027462, 0.0000027402, + 0.0000027311, 0.0000027235, 0.0000027193, 0.0000027191, 0.0000027237, + 0.0000027357, 0.0000027516, 0.0000027625, 0.0000027633, 0.0000027592, + 0.0000027589, 0.0000027683, 0.0000027842, 0.0000027959, 0.0000027995, + 0.0000027993, 0.0000027987, 0.0000027993, 0.0000028018, 0.0000028040, + 0.0000028046, 0.0000028017, 0.0000027948, 0.0000027814, 0.0000027652, + 0.0000027505, 0.0000027397, 0.0000027333, 0.0000027297, 0.0000027290, + 0.0000027346, 0.0000027457, 0.0000027584, 0.0000027709, 0.0000027838, + 0.0000027951, 0.0000028033, 0.0000028083, 0.0000028110, 0.0000028109, + 0.0000028066, 0.0000027999, 0.0000027947, 0.0000027932, 0.0000027935, + 0.0000027950, 0.0000027960, 0.0000027958, 0.0000027955, 0.0000027961, + 0.0000027978, 0.0000027994, 0.0000027986, 0.0000027951, 0.0000027898, + 0.0000027858, 0.0000027836, 0.0000027813, 0.0000027801, 0.0000027802, + 0.0000027821, 0.0000027839, 0.0000027826, 0.0000027772, 0.0000027747, + 0.0000027793, 0.0000027856, 0.0000027871, 0.0000027852, 0.0000027824, + 0.0000027786, 0.0000027749, 0.0000027747, 0.0000027805, 0.0000027931, + 0.0000028078, 0.0000028176, 0.0000028200, 0.0000028171, 0.0000028062, + 0.0000027909, 0.0000027741, 0.0000027594, 0.0000027461, 0.0000027394, + 0.0000027414, 0.0000027496, 0.0000027601, 0.0000027738, 0.0000027920, + 0.0000028087, 0.0000028156, 0.0000028141, 0.0000028116, 0.0000028117, + 0.0000028141, 0.0000028159, 0.0000028168, 0.0000028174, 0.0000028174, + 0.0000028170, 0.0000028135, 0.0000028117, 0.0000028102, 0.0000028073, + 0.0000028028, 0.0000027988, 0.0000027970, 0.0000027952, 0.0000027915, + 0.0000027861, 0.0000027792, 0.0000027717, 0.0000027656, 0.0000027623, + 0.0000027614, 0.0000027619, 0.0000027633, 0.0000027646, 0.0000027647, + 0.0000027641, 0.0000027647, 0.0000027676, 0.0000027689, 0.0000027681, + 0.0000027641, 0.0000027610, 0.0000027610, 0.0000027634, 0.0000027667, + 0.0000027696, 0.0000027707, 0.0000027701, 0.0000027702, 0.0000027710, + 0.0000027719, 0.0000027718, 0.0000027702, 0.0000027685, 0.0000027703, + 0.0000027746, 0.0000027814, 0.0000027904, 0.0000028004, 0.0000028090, + 0.0000028127, 0.0000028112, 0.0000028006, 0.0000027854, 0.0000027726, + 0.0000027640, 0.0000027592, 0.0000027567, 0.0000027564, 0.0000027576, + 0.0000027592, 0.0000027606, 0.0000027616, 0.0000027614, 0.0000027590, + 0.0000027553, 0.0000027496, 0.0000027432, 0.0000027384, 0.0000027353, + 0.0000027294, 0.0000027191, 0.0000027216, 0.0000027406, 0.0000027455, + 0.0000027372, 0.0000027288, 0.0000027130, 0.0000027001, 0.0000027105, + 0.0000027303, 0.0000027320, 0.0000027292, 0.0000027228, 0.0000027165, + 0.0000027261, 0.0000027467, 0.0000027564, 0.0000027518, 0.0000027375, + 0.0000027293, 0.0000027302, 0.0000027323, 0.0000027318, 0.0000027292, + 0.0000027223, 0.0000027097, 0.0000026947, 0.0000026865, 0.0000026882, + 0.0000026910, 0.0000026937, 0.0000026968, 0.0000027023, 0.0000027107, + 0.0000027204, 0.0000027278, 0.0000027308, 0.0000027294, 0.0000027266, + 0.0000027264, 0.0000027265, 0.0000027288, 0.0000027330, 0.0000027386, + 0.0000027420, 0.0000027435, 0.0000027395, 0.0000027283, 0.0000027102, + 0.0000027001, 0.0000027056, 0.0000027146, 0.0000027148, 0.0000027143, + 0.0000027199, 0.0000027265, 0.0000027276, 0.0000027306, 0.0000027400, + 0.0000027544, 0.0000027686, 0.0000027764, 0.0000027779, 0.0000027761, + 0.0000027749, 0.0000027760, 0.0000027769, 0.0000027778, 0.0000027816, + 0.0000027845, 0.0000027838, 0.0000027785, 0.0000027727, 0.0000027722, + 0.0000027758, 0.0000027784, 0.0000027780, 0.0000027742, 0.0000027686, + 0.0000027649, 0.0000027624, 0.0000027588, 0.0000027549, 0.0000027516, + 0.0000027469, 0.0000027408, 0.0000027332, 0.0000027248, 0.0000027196, + 0.0000027198, 0.0000027252, 0.0000027305, 0.0000027335, 0.0000027351, + 0.0000027353, 0.0000027358, 0.0000027370, 0.0000027381, 0.0000027401, + 0.0000027436, 0.0000027465, 0.0000027468, 0.0000027436, 0.0000027382, + 0.0000027317, 0.0000027237, 0.0000027118, 0.0000027000, 0.0000026976, + 0.0000027045, 0.0000027137, 0.0000027185, 0.0000027197, 0.0000027196, + 0.0000027187, 0.0000027186, 0.0000027194, 0.0000027177, 0.0000027095, + 0.0000026997, 0.0000026944, 0.0000026950, 0.0000026998, 0.0000027071, + 0.0000027160, 0.0000027268, 0.0000027398, 0.0000027529, 0.0000027618, + 0.0000027641, 0.0000027609, 0.0000027558, 0.0000027512, 0.0000027480, + 0.0000027469, 0.0000027473, 0.0000027480, 0.0000027488, 0.0000027501, + 0.0000027521, 0.0000027547, 0.0000027570, 0.0000027577, 0.0000027566, + 0.0000027537, 0.0000027489, 0.0000027436, 0.0000027394, 0.0000027361, + 0.0000027319, 0.0000027249, 0.0000027143, 0.0000027015, 0.0000026919, + 0.0000026898, 0.0000026933, 0.0000026976, 0.0000027015, 0.0000027023, + 0.0000026925, 0.0000026773, 0.0000026705, 0.0000026673, 0.0000026606, + 0.0000026565, 0.0000026577, 0.0000026672, 0.0000026889, 0.0000027111, + 0.0000027171, 0.0000027130, 0.0000027043, 0.0000026959, 0.0000026904, + 0.0000026894, 0.0000026908, 0.0000026921, 0.0000026928, 0.0000026947, + 0.0000026985, 0.0000027038, 0.0000027097, 0.0000027138, 0.0000027134, + 0.0000027052, 0.0000026934, 0.0000026898, 0.0000027004, 0.0000027194, + 0.0000027261, 0.0000027146, 0.0000026970, 0.0000026862, 0.0000026803, + 0.0000026753, 0.0000026696, 0.0000026678, 0.0000026744, 0.0000026884, + 0.0000027006, 0.0000027115, 0.0000027201, 0.0000027201, 0.0000027094, + 0.0000026983, 0.0000026904, 0.0000026881, 0.0000026928, 0.0000026976, + 0.0000026967, 0.0000026974, 0.0000027037, 0.0000027131, 0.0000027240, + 0.0000027367, 0.0000027484, 0.0000027549, 0.0000027560, 0.0000027540, + 0.0000027487, 0.0000027418, 0.0000027359, 0.0000027324, 0.0000027310, + 0.0000027313, 0.0000027331, 0.0000027358, 0.0000027384, 0.0000027399, + 0.0000027394, 0.0000027354, 0.0000027298, 0.0000027272, 0.0000027282, + 0.0000027323, 0.0000027335, 0.0000027208, 0.0000027044, 0.0000027099, + 0.0000027376, 0.0000027623, 0.0000027723, 0.0000027734, 0.0000027721, + 0.0000027679, 0.0000027623, 0.0000027573, 0.0000027537, 0.0000027508, + 0.0000027491, 0.0000027477, 0.0000027454, 0.0000027414, 0.0000027341, + 0.0000027268, 0.0000027209, 0.0000027181, 0.0000027203, 0.0000027316, + 0.0000027470, 0.0000027571, 0.0000027597, 0.0000027618, 0.0000027700, + 0.0000027791, 0.0000027854, 0.0000027870, 0.0000027868, 0.0000027858, + 0.0000027856, 0.0000027869, 0.0000027882, 0.0000027902, 0.0000027934, + 0.0000027971, 0.0000027992, 0.0000027959, 0.0000027875, 0.0000027761, + 0.0000027632, 0.0000027500, 0.0000027382, 0.0000027310, 0.0000027309, + 0.0000027376, 0.0000027504, 0.0000027639, 0.0000027778, 0.0000027907, + 0.0000028010, 0.0000028085, 0.0000028125, 0.0000028130, 0.0000028112, + 0.0000028060, 0.0000028002, 0.0000027966, 0.0000027962, 0.0000027962, + 0.0000027958, 0.0000027935, 0.0000027916, 0.0000027924, 0.0000027951, + 0.0000027974, 0.0000027973, 0.0000027941, 0.0000027895, 0.0000027870, + 0.0000027876, 0.0000027899, 0.0000027923, 0.0000027947, 0.0000027937, + 0.0000027888, 0.0000027828, 0.0000027799, 0.0000027809, 0.0000027854, + 0.0000027877, 0.0000027872, 0.0000027854, 0.0000027829, 0.0000027784, + 0.0000027745, 0.0000027740, 0.0000027785, 0.0000027891, 0.0000028019, + 0.0000028120, 0.0000028156, 0.0000028135, 0.0000028065, 0.0000027962, + 0.0000027851, 0.0000027730, 0.0000027595, 0.0000027448, 0.0000027375, + 0.0000027415, 0.0000027511, 0.0000027627, 0.0000027805, 0.0000028019, + 0.0000028146, 0.0000028160, 0.0000028127, 0.0000028120, 0.0000028141, + 0.0000028184, 0.0000028226, 0.0000028250, 0.0000028248, 0.0000028214, + 0.0000028157, 0.0000028135, 0.0000028125, 0.0000028113, 0.0000028098, + 0.0000028075, 0.0000028065, 0.0000028045, 0.0000027996, 0.0000027918, + 0.0000027833, 0.0000027764, 0.0000027725, 0.0000027716, 0.0000027727, + 0.0000027746, 0.0000027765, 0.0000027788, 0.0000027804, 0.0000027795, + 0.0000027762, 0.0000027726, 0.0000027700, 0.0000027668, 0.0000027624, + 0.0000027574, 0.0000027554, 0.0000027580, 0.0000027628, 0.0000027667, + 0.0000027687, 0.0000027698, 0.0000027702, 0.0000027703, 0.0000027712, + 0.0000027733, 0.0000027764, 0.0000027792, 0.0000027786, 0.0000027759, + 0.0000027733, 0.0000027713, 0.0000027716, 0.0000027789, 0.0000027914, + 0.0000028046, 0.0000028121, 0.0000028109, 0.0000028019, 0.0000027900, + 0.0000027787, 0.0000027685, 0.0000027606, 0.0000027564, 0.0000027563, + 0.0000027575, 0.0000027585, 0.0000027595, 0.0000027608, 0.0000027614, + 0.0000027611, 0.0000027597, 0.0000027560, 0.0000027492, 0.0000027400, + 0.0000027293, 0.0000027184, 0.0000027194, 0.0000027368, 0.0000027438, + 0.0000027376, 0.0000027324, 0.0000027207, 0.0000027027, 0.0000027006, + 0.0000027196, 0.0000027293, 0.0000027276, 0.0000027232, 0.0000027141, + 0.0000027165, 0.0000027379, 0.0000027545, 0.0000027537, 0.0000027405, + 0.0000027304, 0.0000027304, 0.0000027322, 0.0000027317, 0.0000027308, + 0.0000027281, 0.0000027211, 0.0000027101, 0.0000027013, 0.0000027006, + 0.0000027037, 0.0000027073, 0.0000027107, 0.0000027136, 0.0000027174, + 0.0000027221, 0.0000027263, 0.0000027283, 0.0000027284, 0.0000027272, + 0.0000027262, 0.0000027271, 0.0000027274, 0.0000027290, 0.0000027315, + 0.0000027360, 0.0000027404, 0.0000027417, 0.0000027382, 0.0000027274, + 0.0000027113, 0.0000027047, 0.0000027120, 0.0000027159, 0.0000027113, + 0.0000027084, 0.0000027141, 0.0000027182, 0.0000027198, 0.0000027257, + 0.0000027382, 0.0000027530, 0.0000027653, 0.0000027713, 0.0000027720, + 0.0000027691, 0.0000027654, 0.0000027644, 0.0000027641, 0.0000027640, + 0.0000027663, 0.0000027691, 0.0000027717, 0.0000027737, 0.0000027724, + 0.0000027703, 0.0000027717, 0.0000027764, 0.0000027799, 0.0000027793, + 0.0000027753, 0.0000027707, 0.0000027677, 0.0000027659, 0.0000027642, + 0.0000027626, 0.0000027604, 0.0000027565, 0.0000027512, 0.0000027434, + 0.0000027357, 0.0000027331, 0.0000027361, 0.0000027404, 0.0000027420, + 0.0000027409, 0.0000027385, 0.0000027372, 0.0000027376, 0.0000027386, + 0.0000027403, 0.0000027431, 0.0000027459, 0.0000027464, 0.0000027442, + 0.0000027398, 0.0000027339, 0.0000027263, 0.0000027156, 0.0000027032, + 0.0000026971, 0.0000027014, 0.0000027110, 0.0000027193, 0.0000027240, + 0.0000027258, 0.0000027257, 0.0000027255, 0.0000027261, 0.0000027247, + 0.0000027171, 0.0000027062, 0.0000026974, 0.0000026947, 0.0000026971, + 0.0000027051, 0.0000027161, 0.0000027280, 0.0000027412, 0.0000027547, + 0.0000027637, 0.0000027648, 0.0000027623, 0.0000027583, 0.0000027554, + 0.0000027553, 0.0000027567, 0.0000027587, 0.0000027609, 0.0000027622, + 0.0000027626, 0.0000027625, 0.0000027628, 0.0000027640, 0.0000027646, + 0.0000027637, 0.0000027611, 0.0000027572, 0.0000027521, 0.0000027471, + 0.0000027426, 0.0000027381, 0.0000027329, 0.0000027259, 0.0000027163, + 0.0000027036, 0.0000026923, 0.0000026886, 0.0000026907, 0.0000026941, + 0.0000026956, 0.0000026975, 0.0000026959, 0.0000026836, 0.0000026699, + 0.0000026675, 0.0000026671, 0.0000026625, 0.0000026592, 0.0000026618, + 0.0000026724, 0.0000026943, 0.0000027132, 0.0000027167, 0.0000027126, + 0.0000027038, 0.0000026959, 0.0000026925, 0.0000026937, 0.0000026959, + 0.0000026966, 0.0000026965, 0.0000026981, 0.0000027014, 0.0000027046, + 0.0000027074, 0.0000027081, 0.0000027057, 0.0000026969, 0.0000026868, + 0.0000026842, 0.0000026982, 0.0000027210, 0.0000027313, 0.0000027213, + 0.0000027023, 0.0000026889, 0.0000026823, 0.0000026783, 0.0000026752, + 0.0000026764, 0.0000026853, 0.0000026969, 0.0000027072, 0.0000027165, + 0.0000027229, 0.0000027218, 0.0000027112, 0.0000026998, 0.0000026920, + 0.0000026877, 0.0000026889, 0.0000026929, 0.0000026939, 0.0000026949, + 0.0000027020, 0.0000027122, 0.0000027200, 0.0000027267, 0.0000027352, + 0.0000027449, 0.0000027528, 0.0000027545, 0.0000027531, 0.0000027494, + 0.0000027461, 0.0000027439, 0.0000027426, 0.0000027418, 0.0000027420, + 0.0000027436, 0.0000027464, 0.0000027480, 0.0000027469, 0.0000027414, + 0.0000027346, 0.0000027303, 0.0000027300, 0.0000027329, 0.0000027317, + 0.0000027170, 0.0000027060, 0.0000027193, 0.0000027490, 0.0000027678, + 0.0000027725, 0.0000027716, 0.0000027684, 0.0000027631, 0.0000027564, + 0.0000027508, 0.0000027475, 0.0000027469, 0.0000027477, 0.0000027482, + 0.0000027475, 0.0000027449, 0.0000027394, 0.0000027325, 0.0000027254, + 0.0000027187, 0.0000027191, 0.0000027286, 0.0000027427, 0.0000027532, + 0.0000027621, 0.0000027722, 0.0000027789, 0.0000027783, 0.0000027755, + 0.0000027781, 0.0000027823, 0.0000027846, 0.0000027859, 0.0000027874, + 0.0000027882, 0.0000027873, 0.0000027866, 0.0000027875, 0.0000027886, + 0.0000027870, 0.0000027843, 0.0000027800, 0.0000027754, 0.0000027686, + 0.0000027590, 0.0000027491, 0.0000027423, 0.0000027421, 0.0000027487, + 0.0000027589, 0.0000027703, 0.0000027825, 0.0000027940, 0.0000028036, + 0.0000028104, 0.0000028130, 0.0000028113, 0.0000028067, 0.0000028003, + 0.0000027946, 0.0000027909, 0.0000027886, 0.0000027865, 0.0000027854, + 0.0000027862, 0.0000027896, 0.0000027941, 0.0000027970, 0.0000027966, + 0.0000027940, 0.0000027907, 0.0000027896, 0.0000027937, 0.0000028007, + 0.0000028058, 0.0000028059, 0.0000027992, 0.0000027895, 0.0000027831, + 0.0000027846, 0.0000027910, 0.0000027952, 0.0000027938, 0.0000027898, + 0.0000027865, 0.0000027838, 0.0000027804, 0.0000027764, 0.0000027750, + 0.0000027779, 0.0000027860, 0.0000027957, 0.0000028031, 0.0000028071, + 0.0000028062, 0.0000028025, 0.0000027972, 0.0000027915, 0.0000027852, + 0.0000027764, 0.0000027624, 0.0000027460, 0.0000027406, 0.0000027454, + 0.0000027550, 0.0000027693, 0.0000027912, 0.0000028101, 0.0000028158, + 0.0000028140, 0.0000028111, 0.0000028122, 0.0000028178, 0.0000028248, + 0.0000028297, 0.0000028298, 0.0000028264, 0.0000028207, 0.0000028131, + 0.0000028123, 0.0000028118, 0.0000028107, 0.0000028096, 0.0000028103, + 0.0000028110, 0.0000028099, 0.0000028041, 0.0000027941, 0.0000027839, + 0.0000027771, 0.0000027757, 0.0000027775, 0.0000027813, 0.0000027851, + 0.0000027870, 0.0000027871, 0.0000027860, 0.0000027827, 0.0000027771, + 0.0000027707, 0.0000027643, 0.0000027584, 0.0000027547, 0.0000027529, + 0.0000027540, 0.0000027597, 0.0000027659, 0.0000027696, 0.0000027699, + 0.0000027694, 0.0000027691, 0.0000027690, 0.0000027696, 0.0000027708, + 0.0000027736, 0.0000027788, 0.0000027833, 0.0000027839, 0.0000027830, + 0.0000027780, 0.0000027712, 0.0000027676, 0.0000027696, 0.0000027810, + 0.0000027960, 0.0000028054, 0.0000028058, 0.0000028001, 0.0000027927, + 0.0000027826, 0.0000027710, 0.0000027615, 0.0000027575, 0.0000027577, + 0.0000027580, 0.0000027581, 0.0000027592, 0.0000027613, 0.0000027634, + 0.0000027651, 0.0000027645, 0.0000027576, 0.0000027452, 0.0000027290, + 0.0000027173, 0.0000027191, 0.0000027360, 0.0000027437, 0.0000027363, + 0.0000027319, 0.0000027264, 0.0000027095, 0.0000026969, 0.0000027067, + 0.0000027251, 0.0000027279, 0.0000027252, 0.0000027154, 0.0000027112, + 0.0000027274, 0.0000027493, 0.0000027535, 0.0000027430, 0.0000027317, + 0.0000027312, 0.0000027330, 0.0000027325, 0.0000027322, 0.0000027317, + 0.0000027290, 0.0000027229, 0.0000027164, 0.0000027152, 0.0000027178, + 0.0000027207, 0.0000027225, 0.0000027233, 0.0000027240, 0.0000027252, + 0.0000027270, 0.0000027280, 0.0000027287, 0.0000027296, 0.0000027312, + 0.0000027318, 0.0000027323, 0.0000027316, 0.0000027312, 0.0000027322, + 0.0000027354, 0.0000027398, 0.0000027406, 0.0000027360, 0.0000027243, + 0.0000027104, 0.0000027089, 0.0000027177, 0.0000027173, 0.0000027074, + 0.0000027029, 0.0000027091, 0.0000027107, 0.0000027132, 0.0000027231, + 0.0000027376, 0.0000027523, 0.0000027627, 0.0000027671, 0.0000027679, + 0.0000027661, 0.0000027624, 0.0000027595, 0.0000027571, 0.0000027553, + 0.0000027557, 0.0000027576, 0.0000027584, 0.0000027616, 0.0000027669, + 0.0000027695, 0.0000027694, 0.0000027703, 0.0000027757, 0.0000027793, + 0.0000027790, 0.0000027762, 0.0000027728, 0.0000027715, 0.0000027717, + 0.0000027720, 0.0000027722, 0.0000027711, 0.0000027683, 0.0000027621, + 0.0000027529, 0.0000027467, 0.0000027469, 0.0000027493, 0.0000027492, + 0.0000027456, 0.0000027404, 0.0000027378, 0.0000027375, 0.0000027392, + 0.0000027416, 0.0000027443, 0.0000027465, 0.0000027464, 0.0000027441, + 0.0000027403, 0.0000027354, 0.0000027283, 0.0000027187, 0.0000027069, + 0.0000026984, 0.0000026987, 0.0000027070, 0.0000027177, 0.0000027266, + 0.0000027313, 0.0000027322, 0.0000027320, 0.0000027323, 0.0000027307, + 0.0000027238, 0.0000027127, 0.0000027019, 0.0000026960, 0.0000026961, + 0.0000027033, 0.0000027166, 0.0000027298, 0.0000027420, 0.0000027542, + 0.0000027632, 0.0000027648, 0.0000027621, 0.0000027599, 0.0000027596, + 0.0000027619, 0.0000027652, 0.0000027683, 0.0000027706, 0.0000027718, + 0.0000027712, 0.0000027693, 0.0000027673, 0.0000027663, 0.0000027666, + 0.0000027668, 0.0000027649, 0.0000027623, 0.0000027582, 0.0000027524, + 0.0000027462, 0.0000027404, 0.0000027347, 0.0000027290, 0.0000027225, + 0.0000027138, 0.0000027029, 0.0000026932, 0.0000026897, 0.0000026913, + 0.0000026933, 0.0000026924, 0.0000026928, 0.0000026945, 0.0000026890, + 0.0000026737, 0.0000026639, 0.0000026662, 0.0000026689, 0.0000026668, + 0.0000026647, 0.0000026672, 0.0000026797, 0.0000027000, 0.0000027140, + 0.0000027150, 0.0000027095, 0.0000027005, 0.0000026940, 0.0000026934, + 0.0000026959, 0.0000026980, 0.0000026986, 0.0000026983, 0.0000027002, + 0.0000027033, 0.0000027044, 0.0000027037, 0.0000027009, 0.0000026965, + 0.0000026897, 0.0000026831, 0.0000026824, 0.0000026975, 0.0000027213, + 0.0000027322, 0.0000027245, 0.0000027055, 0.0000026909, 0.0000026835, + 0.0000026799, 0.0000026794, 0.0000026838, 0.0000026923, 0.0000027015, + 0.0000027103, 0.0000027190, 0.0000027234, 0.0000027217, 0.0000027128, + 0.0000027010, 0.0000026928, 0.0000026876, 0.0000026858, 0.0000026871, + 0.0000026888, 0.0000026916, 0.0000026999, 0.0000027098, 0.0000027168, + 0.0000027195, 0.0000027221, 0.0000027294, 0.0000027403, 0.0000027478, + 0.0000027512, 0.0000027515, 0.0000027519, 0.0000027519, 0.0000027514, + 0.0000027496, 0.0000027481, 0.0000027487, 0.0000027514, 0.0000027532, + 0.0000027517, 0.0000027455, 0.0000027379, 0.0000027321, 0.0000027308, + 0.0000027328, 0.0000027283, 0.0000027131, 0.0000027091, 0.0000027317, + 0.0000027588, 0.0000027692, 0.0000027693, 0.0000027678, 0.0000027654, + 0.0000027600, 0.0000027528, 0.0000027473, 0.0000027450, 0.0000027462, + 0.0000027492, 0.0000027517, 0.0000027528, 0.0000027526, 0.0000027505, + 0.0000027458, 0.0000027398, 0.0000027316, 0.0000027285, 0.0000027340, + 0.0000027466, 0.0000027600, 0.0000027739, 0.0000027804, 0.0000027752, + 0.0000027667, 0.0000027677, 0.0000027778, 0.0000027878, 0.0000027921, + 0.0000027944, 0.0000027974, 0.0000027985, 0.0000027974, 0.0000027953, + 0.0000027936, 0.0000027911, 0.0000027853, 0.0000027774, 0.0000027708, + 0.0000027668, 0.0000027645, 0.0000027618, 0.0000027583, 0.0000027553, + 0.0000027538, 0.0000027551, 0.0000027598, 0.0000027656, 0.0000027727, + 0.0000027809, 0.0000027899, 0.0000027983, 0.0000028037, 0.0000028044, + 0.0000028001, 0.0000027935, 0.0000027862, 0.0000027808, 0.0000027773, + 0.0000027762, 0.0000027781, 0.0000027828, 0.0000027882, 0.0000027937, + 0.0000027969, 0.0000027964, 0.0000027941, 0.0000027923, 0.0000027932, + 0.0000028000, 0.0000028094, 0.0000028139, 0.0000028100, 0.0000027998, + 0.0000027900, 0.0000027880, 0.0000027941, 0.0000028019, 0.0000028052, + 0.0000028028, 0.0000027963, 0.0000027899, 0.0000027856, 0.0000027828, + 0.0000027806, 0.0000027795, 0.0000027812, 0.0000027868, 0.0000027936, + 0.0000027978, 0.0000027987, 0.0000027986, 0.0000027969, 0.0000027954, + 0.0000027926, 0.0000027888, 0.0000027843, 0.0000027767, 0.0000027615, + 0.0000027464, 0.0000027436, 0.0000027505, 0.0000027622, 0.0000027807, + 0.0000028017, 0.0000028134, 0.0000028146, 0.0000028124, 0.0000028117, + 0.0000028156, 0.0000028238, 0.0000028302, 0.0000028317, 0.0000028292, + 0.0000028228, 0.0000028164, 0.0000028083, 0.0000028083, 0.0000028082, + 0.0000028072, 0.0000028069, 0.0000028089, 0.0000028109, 0.0000028105, + 0.0000028065, 0.0000027990, 0.0000027907, 0.0000027854, 0.0000027845, + 0.0000027871, 0.0000027908, 0.0000027934, 0.0000027935, 0.0000027918, + 0.0000027885, 0.0000027841, 0.0000027784, 0.0000027717, 0.0000027650, + 0.0000027597, 0.0000027551, 0.0000027524, 0.0000027523, 0.0000027565, + 0.0000027623, 0.0000027652, 0.0000027649, 0.0000027637, 0.0000027631, + 0.0000027638, 0.0000027658, 0.0000027682, 0.0000027698, 0.0000027729, + 0.0000027785, 0.0000027824, 0.0000027825, 0.0000027810, 0.0000027770, + 0.0000027719, 0.0000027689, 0.0000027700, 0.0000027769, 0.0000027858, + 0.0000027930, 0.0000027955, 0.0000027954, 0.0000027906, 0.0000027809, + 0.0000027699, 0.0000027610, 0.0000027581, 0.0000027578, 0.0000027575, + 0.0000027579, 0.0000027599, 0.0000027628, 0.0000027654, 0.0000027662, + 0.0000027611, 0.0000027477, 0.0000027291, 0.0000027175, 0.0000027203, + 0.0000027372, 0.0000027451, 0.0000027371, 0.0000027298, 0.0000027278, + 0.0000027158, 0.0000026988, 0.0000026973, 0.0000027153, 0.0000027279, + 0.0000027283, 0.0000027198, 0.0000027100, 0.0000027179, 0.0000027416, + 0.0000027513, 0.0000027452, 0.0000027335, 0.0000027315, 0.0000027344, + 0.0000027341, 0.0000027338, 0.0000027349, 0.0000027343, 0.0000027309, + 0.0000027263, 0.0000027239, 0.0000027257, 0.0000027285, 0.0000027292, + 0.0000027275, 0.0000027264, 0.0000027260, 0.0000027271, 0.0000027291, + 0.0000027308, 0.0000027334, 0.0000027370, 0.0000027398, 0.0000027397, + 0.0000027382, 0.0000027361, 0.0000027347, 0.0000027344, 0.0000027366, + 0.0000027404, 0.0000027401, 0.0000027326, 0.0000027194, 0.0000027097, + 0.0000027137, 0.0000027215, 0.0000027169, 0.0000027035, 0.0000026987, + 0.0000027040, 0.0000027037, 0.0000027080, 0.0000027209, 0.0000027364, + 0.0000027503, 0.0000027586, 0.0000027621, 0.0000027645, 0.0000027654, + 0.0000027635, 0.0000027607, 0.0000027568, 0.0000027523, 0.0000027501, + 0.0000027517, 0.0000027525, 0.0000027530, 0.0000027561, 0.0000027625, + 0.0000027684, 0.0000027683, 0.0000027696, 0.0000027735, 0.0000027776, + 0.0000027790, 0.0000027776, 0.0000027762, 0.0000027774, 0.0000027788, + 0.0000027803, 0.0000027809, 0.0000027804, 0.0000027769, 0.0000027685, + 0.0000027604, 0.0000027581, 0.0000027583, 0.0000027564, 0.0000027504, + 0.0000027423, 0.0000027372, 0.0000027366, 0.0000027390, 0.0000027429, + 0.0000027462, 0.0000027478, 0.0000027464, 0.0000027431, 0.0000027396, + 0.0000027354, 0.0000027290, 0.0000027204, 0.0000027099, 0.0000027002, + 0.0000026978, 0.0000027030, 0.0000027147, 0.0000027272, 0.0000027351, + 0.0000027376, 0.0000027378, 0.0000027375, 0.0000027346, 0.0000027283, + 0.0000027173, 0.0000027062, 0.0000026980, 0.0000026963, 0.0000027035, + 0.0000027187, 0.0000027329, 0.0000027431, 0.0000027530, 0.0000027613, + 0.0000027636, 0.0000027618, 0.0000027607, 0.0000027627, 0.0000027671, + 0.0000027718, 0.0000027758, 0.0000027788, 0.0000027805, 0.0000027803, + 0.0000027778, 0.0000027740, 0.0000027708, 0.0000027686, 0.0000027676, + 0.0000027664, 0.0000027636, 0.0000027592, 0.0000027536, 0.0000027467, + 0.0000027397, 0.0000027336, 0.0000027283, 0.0000027230, 0.0000027176, + 0.0000027109, 0.0000027031, 0.0000026973, 0.0000026954, 0.0000026956, + 0.0000026943, 0.0000026908, 0.0000026891, 0.0000026903, 0.0000026895, + 0.0000026797, 0.0000026648, 0.0000026604, 0.0000026659, 0.0000026706, + 0.0000026731, 0.0000026726, 0.0000026761, 0.0000026889, 0.0000027050, + 0.0000027126, 0.0000027116, 0.0000027039, 0.0000026960, 0.0000026929, + 0.0000026941, 0.0000026961, 0.0000026974, 0.0000026972, 0.0000026975, + 0.0000027006, 0.0000027034, 0.0000027022, 0.0000026975, 0.0000026922, + 0.0000026893, 0.0000026866, 0.0000026828, 0.0000026833, 0.0000026973, + 0.0000027198, 0.0000027315, 0.0000027251, 0.0000027065, 0.0000026917, + 0.0000026847, 0.0000026818, 0.0000026826, 0.0000026884, 0.0000026958, + 0.0000027028, 0.0000027106, 0.0000027187, 0.0000027223, 0.0000027220, + 0.0000027147, 0.0000027024, 0.0000026931, 0.0000026879, 0.0000026844, + 0.0000026826, 0.0000026836, 0.0000026881, 0.0000026952, 0.0000027043, + 0.0000027121, 0.0000027150, 0.0000027145, 0.0000027164, 0.0000027241, + 0.0000027332, 0.0000027411, 0.0000027476, 0.0000027526, 0.0000027564, + 0.0000027572, 0.0000027552, 0.0000027524, 0.0000027517, 0.0000027543, + 0.0000027563, 0.0000027546, 0.0000027482, 0.0000027399, 0.0000027329, + 0.0000027315, 0.0000027323, 0.0000027242, 0.0000027110, 0.0000027168, + 0.0000027451, 0.0000027650, 0.0000027666, 0.0000027653, 0.0000027662, + 0.0000027650, 0.0000027589, 0.0000027513, 0.0000027466, 0.0000027462, + 0.0000027492, 0.0000027554, 0.0000027616, 0.0000027666, 0.0000027711, + 0.0000027738, 0.0000027722, 0.0000027673, 0.0000027596, 0.0000027533, + 0.0000027563, 0.0000027664, 0.0000027776, 0.0000027834, 0.0000027772, + 0.0000027620, 0.0000027580, 0.0000027690, 0.0000027865, 0.0000027978, + 0.0000028019, 0.0000028031, 0.0000028044, 0.0000028046, 0.0000028034, + 0.0000028025, 0.0000028026, 0.0000028012, 0.0000027964, 0.0000027891, + 0.0000027814, 0.0000027733, 0.0000027657, 0.0000027579, 0.0000027521, + 0.0000027503, 0.0000027522, 0.0000027557, 0.0000027604, 0.0000027644, + 0.0000027676, 0.0000027709, 0.0000027760, 0.0000027830, 0.0000027896, + 0.0000027925, 0.0000027909, 0.0000027844, 0.0000027768, 0.0000027712, + 0.0000027698, 0.0000027708, 0.0000027749, 0.0000027812, 0.0000027879, + 0.0000027927, 0.0000027951, 0.0000027954, 0.0000027939, 0.0000027938, + 0.0000027976, 0.0000028058, 0.0000028137, 0.0000028150, 0.0000028083, + 0.0000027987, 0.0000027943, 0.0000027970, 0.0000028042, 0.0000028106, + 0.0000028133, 0.0000028113, 0.0000028039, 0.0000027951, 0.0000027897, + 0.0000027879, 0.0000027872, 0.0000027870, 0.0000027881, 0.0000027913, + 0.0000027950, 0.0000027971, 0.0000027964, 0.0000027934, 0.0000027912, + 0.0000027898, 0.0000027894, 0.0000027879, 0.0000027859, 0.0000027836, + 0.0000027756, 0.0000027590, 0.0000027468, 0.0000027474, 0.0000027570, + 0.0000027734, 0.0000027930, 0.0000028078, 0.0000028134, 0.0000028129, + 0.0000028120, 0.0000028148, 0.0000028217, 0.0000028282, 0.0000028310, + 0.0000028297, 0.0000028242, 0.0000028166, 0.0000028107, 0.0000028024, + 0.0000028031, 0.0000028035, 0.0000028029, 0.0000028040, 0.0000028059, + 0.0000028074, 0.0000028074, 0.0000028061, 0.0000028041, 0.0000028022, + 0.0000028014, 0.0000028016, 0.0000028029, 0.0000028045, 0.0000028046, + 0.0000028030, 0.0000027998, 0.0000027961, 0.0000027927, 0.0000027888, + 0.0000027828, 0.0000027744, 0.0000027643, 0.0000027527, 0.0000027417, + 0.0000027374, 0.0000027396, 0.0000027464, 0.0000027522, 0.0000027561, + 0.0000027573, 0.0000027579, 0.0000027595, 0.0000027629, 0.0000027664, + 0.0000027674, 0.0000027675, 0.0000027701, 0.0000027752, 0.0000027773, + 0.0000027756, 0.0000027724, 0.0000027701, 0.0000027704, 0.0000027735, + 0.0000027782, 0.0000027806, 0.0000027807, 0.0000027804, 0.0000027819, + 0.0000027844, 0.0000027818, 0.0000027740, 0.0000027648, 0.0000027581, + 0.0000027559, 0.0000027552, 0.0000027556, 0.0000027573, 0.0000027595, + 0.0000027610, 0.0000027611, 0.0000027562, 0.0000027441, 0.0000027285, + 0.0000027190, 0.0000027226, 0.0000027395, 0.0000027480, 0.0000027405, + 0.0000027306, 0.0000027276, 0.0000027196, 0.0000027031, 0.0000026934, + 0.0000027035, 0.0000027223, 0.0000027293, 0.0000027251, 0.0000027126, + 0.0000027131, 0.0000027327, 0.0000027483, 0.0000027464, 0.0000027360, + 0.0000027323, 0.0000027356, 0.0000027367, 0.0000027365, 0.0000027382, + 0.0000027387, 0.0000027356, 0.0000027312, 0.0000027278, 0.0000027272, + 0.0000027290, 0.0000027303, 0.0000027298, 0.0000027275, 0.0000027261, + 0.0000027266, 0.0000027287, 0.0000027318, 0.0000027352, 0.0000027398, + 0.0000027443, 0.0000027463, 0.0000027442, 0.0000027415, 0.0000027400, + 0.0000027389, 0.0000027373, 0.0000027389, 0.0000027417, 0.0000027387, + 0.0000027271, 0.0000027136, 0.0000027108, 0.0000027206, 0.0000027237, + 0.0000027142, 0.0000026995, 0.0000026959, 0.0000026985, 0.0000026975, + 0.0000027031, 0.0000027172, 0.0000027333, 0.0000027458, 0.0000027527, + 0.0000027572, 0.0000027625, 0.0000027662, 0.0000027670, 0.0000027653, + 0.0000027608, 0.0000027551, 0.0000027508, 0.0000027507, 0.0000027515, + 0.0000027515, 0.0000027508, 0.0000027525, 0.0000027614, 0.0000027687, + 0.0000027691, 0.0000027693, 0.0000027720, 0.0000027769, 0.0000027798, + 0.0000027802, 0.0000027823, 0.0000027845, 0.0000027859, 0.0000027865, + 0.0000027867, 0.0000027856, 0.0000027799, 0.0000027722, 0.0000027683, + 0.0000027670, 0.0000027641, 0.0000027567, 0.0000027464, 0.0000027388, + 0.0000027365, 0.0000027384, 0.0000027433, 0.0000027472, 0.0000027480, + 0.0000027461, 0.0000027416, 0.0000027377, 0.0000027340, 0.0000027281, + 0.0000027203, 0.0000027114, 0.0000027017, 0.0000026965, 0.0000026995, + 0.0000027108, 0.0000027258, 0.0000027365, 0.0000027404, 0.0000027416, + 0.0000027416, 0.0000027383, 0.0000027303, 0.0000027194, 0.0000027089, + 0.0000027005, 0.0000026975, 0.0000027051, 0.0000027221, 0.0000027377, + 0.0000027460, 0.0000027524, 0.0000027595, 0.0000027623, 0.0000027614, + 0.0000027613, 0.0000027651, 0.0000027713, 0.0000027774, 0.0000027829, + 0.0000027876, 0.0000027906, 0.0000027910, 0.0000027887, 0.0000027839, + 0.0000027785, 0.0000027743, 0.0000027705, 0.0000027670, 0.0000027633, + 0.0000027582, 0.0000027522, 0.0000027459, 0.0000027394, 0.0000027335, + 0.0000027295, 0.0000027256, 0.0000027209, 0.0000027167, 0.0000027129, + 0.0000027093, 0.0000027067, 0.0000027043, 0.0000027010, 0.0000026956, + 0.0000026899, 0.0000026870, 0.0000026868, 0.0000026868, 0.0000026824, + 0.0000026699, 0.0000026587, 0.0000026579, 0.0000026664, 0.0000026752, + 0.0000026790, 0.0000026798, 0.0000026855, 0.0000026971, 0.0000027069, + 0.0000027086, 0.0000027034, 0.0000026960, 0.0000026915, 0.0000026918, + 0.0000026926, 0.0000026931, 0.0000026932, 0.0000026933, 0.0000026960, + 0.0000027010, 0.0000027020, 0.0000026968, 0.0000026894, 0.0000026864, + 0.0000026881, 0.0000026877, 0.0000026845, 0.0000026855, 0.0000026973, + 0.0000027170, 0.0000027285, 0.0000027234, 0.0000027062, 0.0000026919, + 0.0000026864, 0.0000026846, 0.0000026858, 0.0000026913, 0.0000026978, + 0.0000027030, 0.0000027104, 0.0000027176, 0.0000027219, 0.0000027233, + 0.0000027177, 0.0000027049, 0.0000026938, 0.0000026884, 0.0000026845, + 0.0000026811, 0.0000026814, 0.0000026847, 0.0000026888, 0.0000026955, + 0.0000027038, 0.0000027098, 0.0000027108, 0.0000027100, 0.0000027130, + 0.0000027196, 0.0000027282, 0.0000027384, 0.0000027491, 0.0000027575, + 0.0000027607, 0.0000027593, 0.0000027555, 0.0000027541, 0.0000027567, + 0.0000027584, 0.0000027562, 0.0000027493, 0.0000027405, 0.0000027333, + 0.0000027324, 0.0000027315, 0.0000027201, 0.0000027136, 0.0000027292, + 0.0000027571, 0.0000027664, 0.0000027640, 0.0000027644, 0.0000027663, + 0.0000027649, 0.0000027588, 0.0000027530, 0.0000027523, 0.0000027548, + 0.0000027604, 0.0000027701, 0.0000027795, 0.0000027865, 0.0000027914, + 0.0000027935, 0.0000027920, 0.0000027860, 0.0000027786, 0.0000027736, + 0.0000027762, 0.0000027827, 0.0000027854, 0.0000027784, 0.0000027610, + 0.0000027503, 0.0000027585, 0.0000027798, 0.0000027984, 0.0000028068, + 0.0000028072, 0.0000028050, 0.0000028039, 0.0000028022, 0.0000027995, + 0.0000027981, 0.0000027982, 0.0000027970, 0.0000027944, 0.0000027911, + 0.0000027892, 0.0000027870, 0.0000027825, 0.0000027744, 0.0000027624, + 0.0000027508, 0.0000027444, 0.0000027439, 0.0000027492, 0.0000027579, + 0.0000027642, 0.0000027670, 0.0000027692, 0.0000027736, 0.0000027790, + 0.0000027827, 0.0000027829, 0.0000027787, 0.0000027719, 0.0000027664, + 0.0000027657, 0.0000027693, 0.0000027753, 0.0000027824, 0.0000027874, + 0.0000027902, 0.0000027920, 0.0000027925, 0.0000027925, 0.0000027941, + 0.0000028008, 0.0000028097, 0.0000028144, 0.0000028114, 0.0000028031, + 0.0000027977, 0.0000027999, 0.0000028067, 0.0000028126, 0.0000028166, + 0.0000028185, 0.0000028171, 0.0000028099, 0.0000028011, 0.0000027961, + 0.0000027950, 0.0000027948, 0.0000027943, 0.0000027949, 0.0000027967, + 0.0000027982, 0.0000027984, 0.0000027968, 0.0000027932, 0.0000027886, + 0.0000027864, 0.0000027859, 0.0000027857, 0.0000027854, 0.0000027861, + 0.0000027847, 0.0000027727, 0.0000027558, 0.0000027488, 0.0000027528, + 0.0000027675, 0.0000027870, 0.0000028024, 0.0000028104, 0.0000028122, + 0.0000028123, 0.0000028148, 0.0000028204, 0.0000028254, 0.0000028282, + 0.0000028277, 0.0000028236, 0.0000028169, 0.0000028095, 0.0000028041, + 0.0000027971, 0.0000027985, 0.0000027994, 0.0000028003, 0.0000028019, + 0.0000028034, 0.0000028041, 0.0000028041, 0.0000028051, 0.0000028076, + 0.0000028114, 0.0000028146, 0.0000028166, 0.0000028179, 0.0000028182, + 0.0000028174, 0.0000028150, 0.0000028112, 0.0000028072, 0.0000028023, + 0.0000027977, 0.0000027901, 0.0000027761, 0.0000027558, 0.0000027341, + 0.0000027191, 0.0000027158, 0.0000027243, 0.0000027359, 0.0000027473, + 0.0000027558, 0.0000027607, 0.0000027635, 0.0000027659, 0.0000027689, + 0.0000027712, 0.0000027708, 0.0000027686, 0.0000027685, 0.0000027719, + 0.0000027748, 0.0000027735, 0.0000027687, 0.0000027634, 0.0000027624, + 0.0000027672, 0.0000027769, 0.0000027857, 0.0000027883, 0.0000027836, + 0.0000027759, 0.0000027714, 0.0000027685, 0.0000027652, 0.0000027596, + 0.0000027535, 0.0000027489, 0.0000027467, 0.0000027466, 0.0000027479, + 0.0000027497, 0.0000027501, 0.0000027480, 0.0000027439, 0.0000027365, + 0.0000027285, 0.0000027236, 0.0000027278, 0.0000027420, 0.0000027494, + 0.0000027431, 0.0000027338, 0.0000027297, 0.0000027221, 0.0000027072, + 0.0000026914, 0.0000026942, 0.0000027136, 0.0000027280, 0.0000027289, + 0.0000027179, 0.0000027131, 0.0000027269, 0.0000027437, 0.0000027459, + 0.0000027378, 0.0000027336, 0.0000027367, 0.0000027394, 0.0000027400, + 0.0000027418, 0.0000027425, 0.0000027399, 0.0000027346, 0.0000027297, + 0.0000027274, 0.0000027284, 0.0000027303, 0.0000027306, 0.0000027288, + 0.0000027261, 0.0000027254, 0.0000027270, 0.0000027294, 0.0000027332, + 0.0000027378, 0.0000027432, 0.0000027467, 0.0000027468, 0.0000027445, + 0.0000027440, 0.0000027445, 0.0000027423, 0.0000027403, 0.0000027418, + 0.0000027426, 0.0000027346, 0.0000027195, 0.0000027103, 0.0000027159, + 0.0000027264, 0.0000027232, 0.0000027098, 0.0000026963, 0.0000026934, + 0.0000026924, 0.0000026913, 0.0000026971, 0.0000027113, 0.0000027287, + 0.0000027409, 0.0000027480, 0.0000027552, 0.0000027634, 0.0000027696, + 0.0000027721, 0.0000027713, 0.0000027676, 0.0000027631, 0.0000027597, + 0.0000027574, 0.0000027548, 0.0000027523, 0.0000027507, 0.0000027492, + 0.0000027533, 0.0000027647, 0.0000027720, 0.0000027714, 0.0000027698, + 0.0000027721, 0.0000027772, 0.0000027815, 0.0000027862, 0.0000027904, + 0.0000027924, 0.0000027925, 0.0000027914, 0.0000027907, 0.0000027872, + 0.0000027806, 0.0000027760, 0.0000027741, 0.0000027709, 0.0000027638, + 0.0000027528, 0.0000027432, 0.0000027387, 0.0000027387, 0.0000027426, + 0.0000027463, 0.0000027475, 0.0000027449, 0.0000027397, 0.0000027351, + 0.0000027314, 0.0000027262, 0.0000027189, 0.0000027106, 0.0000027014, + 0.0000026952, 0.0000026969, 0.0000027072, 0.0000027227, 0.0000027349, + 0.0000027399, 0.0000027419, 0.0000027427, 0.0000027395, 0.0000027307, + 0.0000027193, 0.0000027097, 0.0000027026, 0.0000027002, 0.0000027084, + 0.0000027265, 0.0000027426, 0.0000027495, 0.0000027537, 0.0000027593, + 0.0000027622, 0.0000027616, 0.0000027618, 0.0000027665, 0.0000027743, + 0.0000027818, 0.0000027886, 0.0000027947, 0.0000027985, 0.0000027990, + 0.0000027950, 0.0000027907, 0.0000027845, 0.0000027789, 0.0000027740, + 0.0000027687, 0.0000027631, 0.0000027585, 0.0000027531, 0.0000027482, + 0.0000027431, 0.0000027383, 0.0000027344, 0.0000027317, 0.0000027292, + 0.0000027263, 0.0000027236, 0.0000027216, 0.0000027195, 0.0000027160, + 0.0000027108, 0.0000027039, 0.0000026964, 0.0000026902, 0.0000026870, + 0.0000026857, 0.0000026845, 0.0000026817, 0.0000026733, 0.0000026613, + 0.0000026543, 0.0000026576, 0.0000026680, 0.0000026767, 0.0000026810, + 0.0000026850, 0.0000026918, 0.0000026994, 0.0000027017, 0.0000026982, + 0.0000026920, 0.0000026880, 0.0000026873, 0.0000026874, 0.0000026871, + 0.0000026874, 0.0000026881, 0.0000026911, 0.0000026975, 0.0000027010, + 0.0000026974, 0.0000026889, 0.0000026844, 0.0000026875, 0.0000026912, + 0.0000026893, 0.0000026861, 0.0000026874, 0.0000026967, 0.0000027129, + 0.0000027235, 0.0000027203, 0.0000027055, 0.0000026928, 0.0000026885, + 0.0000026874, 0.0000026882, 0.0000026930, 0.0000026987, 0.0000027032, + 0.0000027095, 0.0000027165, 0.0000027225, 0.0000027257, 0.0000027220, + 0.0000027096, 0.0000026966, 0.0000026896, 0.0000026855, 0.0000026830, + 0.0000026836, 0.0000026846, 0.0000026842, 0.0000026862, 0.0000026924, + 0.0000027001, 0.0000027054, 0.0000027074, 0.0000027094, 0.0000027127, + 0.0000027196, 0.0000027310, 0.0000027453, 0.0000027577, 0.0000027631, + 0.0000027616, 0.0000027572, 0.0000027557, 0.0000027588, 0.0000027603, + 0.0000027562, 0.0000027489, 0.0000027399, 0.0000027338, 0.0000027331, + 0.0000027289, 0.0000027170, 0.0000027185, 0.0000027439, 0.0000027649, + 0.0000027659, 0.0000027631, 0.0000027650, 0.0000027668, 0.0000027661, + 0.0000027650, 0.0000027656, 0.0000027677, 0.0000027715, 0.0000027773, + 0.0000027851, 0.0000027921, 0.0000027958, 0.0000027980, 0.0000027991, + 0.0000027968, 0.0000027893, 0.0000027810, 0.0000027770, 0.0000027781, + 0.0000027817, 0.0000027779, 0.0000027613, 0.0000027461, 0.0000027483, + 0.0000027686, 0.0000027928, 0.0000028077, 0.0000028105, 0.0000028081, + 0.0000028045, 0.0000028014, 0.0000027971, 0.0000027910, 0.0000027868, + 0.0000027845, 0.0000027828, 0.0000027813, 0.0000027818, 0.0000027847, + 0.0000027873, 0.0000027867, 0.0000027832, 0.0000027761, 0.0000027673, + 0.0000027576, 0.0000027470, 0.0000027404, 0.0000027414, 0.0000027478, + 0.0000027558, 0.0000027636, 0.0000027700, 0.0000027744, 0.0000027771, + 0.0000027776, 0.0000027755, 0.0000027708, 0.0000027668, 0.0000027658, + 0.0000027681, 0.0000027743, 0.0000027813, 0.0000027859, 0.0000027879, + 0.0000027881, 0.0000027879, 0.0000027886, 0.0000027914, 0.0000027998, + 0.0000028099, 0.0000028125, 0.0000028066, 0.0000027976, 0.0000027964, + 0.0000028038, 0.0000028132, 0.0000028187, 0.0000028210, 0.0000028221, + 0.0000028202, 0.0000028136, 0.0000028063, 0.0000028026, 0.0000028021, + 0.0000028017, 0.0000028010, 0.0000028011, 0.0000028024, 0.0000028033, + 0.0000028027, 0.0000028003, 0.0000027969, 0.0000027933, 0.0000027893, + 0.0000027862, 0.0000027842, 0.0000027839, 0.0000027860, 0.0000027883, + 0.0000027829, 0.0000027666, 0.0000027543, 0.0000027528, 0.0000027621, + 0.0000027818, 0.0000027999, 0.0000028095, 0.0000028122, 0.0000028124, + 0.0000028147, 0.0000028191, 0.0000028227, 0.0000028242, 0.0000028235, + 0.0000028202, 0.0000028146, 0.0000028082, 0.0000028019, 0.0000027977, + 0.0000027911, 0.0000027937, 0.0000027959, 0.0000027989, 0.0000028014, + 0.0000028028, 0.0000028030, 0.0000028033, 0.0000028053, 0.0000028102, + 0.0000028161, 0.0000028203, 0.0000028222, 0.0000028226, 0.0000028230, + 0.0000028223, 0.0000028204, 0.0000028159, 0.0000028087, 0.0000028006, + 0.0000027915, 0.0000027787, 0.0000027590, 0.0000027340, 0.0000027136, + 0.0000027069, 0.0000027106, 0.0000027228, 0.0000027379, 0.0000027518, + 0.0000027630, 0.0000027710, 0.0000027760, 0.0000027786, 0.0000027799, + 0.0000027804, 0.0000027791, 0.0000027768, 0.0000027755, 0.0000027771, + 0.0000027799, 0.0000027793, 0.0000027741, 0.0000027657, 0.0000027593, + 0.0000027593, 0.0000027659, 0.0000027773, 0.0000027880, 0.0000027923, + 0.0000027902, 0.0000027815, 0.0000027695, 0.0000027579, 0.0000027489, + 0.0000027396, 0.0000027339, 0.0000027294, 0.0000027278, 0.0000027287, + 0.0000027302, 0.0000027314, 0.0000027319, 0.0000027319, 0.0000027331, + 0.0000027323, 0.0000027317, 0.0000027356, 0.0000027450, 0.0000027495, + 0.0000027439, 0.0000027363, 0.0000027330, 0.0000027262, 0.0000027116, + 0.0000026929, 0.0000026875, 0.0000027041, 0.0000027233, 0.0000027290, + 0.0000027217, 0.0000027148, 0.0000027240, 0.0000027405, 0.0000027451, + 0.0000027385, 0.0000027344, 0.0000027380, 0.0000027417, 0.0000027432, + 0.0000027453, 0.0000027465, 0.0000027443, 0.0000027389, 0.0000027327, + 0.0000027284, 0.0000027272, 0.0000027287, 0.0000027307, 0.0000027299, + 0.0000027275, 0.0000027253, 0.0000027259, 0.0000027285, 0.0000027321, + 0.0000027368, 0.0000027418, 0.0000027454, 0.0000027458, 0.0000027439, + 0.0000027437, 0.0000027470, 0.0000027473, 0.0000027440, 0.0000027424, + 0.0000027438, 0.0000027409, 0.0000027266, 0.0000027125, 0.0000027122, + 0.0000027240, 0.0000027280, 0.0000027195, 0.0000027050, 0.0000026948, + 0.0000026897, 0.0000026853, 0.0000026839, 0.0000026910, 0.0000027078, + 0.0000027262, 0.0000027389, 0.0000027463, 0.0000027553, 0.0000027664, + 0.0000027744, 0.0000027786, 0.0000027794, 0.0000027772, 0.0000027735, + 0.0000027721, 0.0000027709, 0.0000027650, 0.0000027560, 0.0000027520, + 0.0000027505, 0.0000027515, 0.0000027595, 0.0000027707, 0.0000027753, + 0.0000027732, 0.0000027711, 0.0000027733, 0.0000027785, 0.0000027867, + 0.0000027953, 0.0000028003, 0.0000028010, 0.0000027989, 0.0000027970, + 0.0000027935, 0.0000027866, 0.0000027809, 0.0000027783, 0.0000027760, + 0.0000027705, 0.0000027607, 0.0000027499, 0.0000027421, 0.0000027396, + 0.0000027409, 0.0000027439, 0.0000027449, 0.0000027425, 0.0000027375, + 0.0000027326, 0.0000027284, 0.0000027233, 0.0000027161, 0.0000027079, + 0.0000026995, 0.0000026935, 0.0000026951, 0.0000027051, 0.0000027194, + 0.0000027314, 0.0000027374, 0.0000027400, 0.0000027411, 0.0000027379, + 0.0000027291, 0.0000027184, 0.0000027101, 0.0000027053, 0.0000027036, + 0.0000027128, 0.0000027311, 0.0000027469, 0.0000027526, 0.0000027550, + 0.0000027601, 0.0000027634, 0.0000027624, 0.0000027626, 0.0000027674, + 0.0000027756, 0.0000027841, 0.0000027919, 0.0000027985, 0.0000028021, + 0.0000028012, 0.0000027977, 0.0000027912, 0.0000027849, 0.0000027797, + 0.0000027749, 0.0000027699, 0.0000027646, 0.0000027596, 0.0000027567, + 0.0000027535, 0.0000027507, 0.0000027483, 0.0000027459, 0.0000027438, + 0.0000027422, 0.0000027403, 0.0000027374, 0.0000027340, 0.0000027302, + 0.0000027254, 0.0000027193, 0.0000027121, 0.0000027048, 0.0000026977, + 0.0000026929, 0.0000026901, 0.0000026873, 0.0000026840, 0.0000026799, + 0.0000026740, 0.0000026645, 0.0000026560, 0.0000026548, 0.0000026607, + 0.0000026698, 0.0000026773, 0.0000026819, 0.0000026865, 0.0000026915, + 0.0000026933, 0.0000026909, 0.0000026869, 0.0000026834, 0.0000026810, + 0.0000026800, 0.0000026797, 0.0000026808, 0.0000026827, 0.0000026868, + 0.0000026949, 0.0000027008, 0.0000026983, 0.0000026892, 0.0000026837, + 0.0000026868, 0.0000026930, 0.0000026926, 0.0000026882, 0.0000026865, + 0.0000026880, 0.0000026952, 0.0000027080, 0.0000027173, 0.0000027161, + 0.0000027058, 0.0000026952, 0.0000026905, 0.0000026891, 0.0000026895, + 0.0000026933, 0.0000026978, 0.0000027024, 0.0000027078, 0.0000027150, + 0.0000027228, 0.0000027271, 0.0000027262, 0.0000027160, 0.0000027025, + 0.0000026926, 0.0000026876, 0.0000026872, 0.0000026879, 0.0000026866, + 0.0000026831, 0.0000026804, 0.0000026809, 0.0000026859, 0.0000026931, + 0.0000027009, 0.0000027069, 0.0000027102, 0.0000027155, 0.0000027267, + 0.0000027421, 0.0000027559, 0.0000027629, 0.0000027621, 0.0000027580, + 0.0000027574, 0.0000027604, 0.0000027600, 0.0000027549, 0.0000027475, + 0.0000027390, 0.0000027342, 0.0000027329, 0.0000027246, 0.0000027165, + 0.0000027296, 0.0000027566, 0.0000027674, 0.0000027650, 0.0000027646, + 0.0000027677, 0.0000027717, 0.0000027768, 0.0000027811, 0.0000027836, + 0.0000027839, 0.0000027834, 0.0000027851, 0.0000027893, 0.0000027955, + 0.0000028005, 0.0000028038, 0.0000028046, 0.0000028010, 0.0000027922, + 0.0000027818, 0.0000027767, 0.0000027742, 0.0000027729, 0.0000027641, + 0.0000027506, 0.0000027455, 0.0000027571, 0.0000027819, 0.0000028025, + 0.0000028107, 0.0000028113, 0.0000028084, 0.0000028038, 0.0000027969, + 0.0000027881, 0.0000027788, 0.0000027722, 0.0000027681, 0.0000027653, + 0.0000027626, 0.0000027626, 0.0000027666, 0.0000027720, 0.0000027764, + 0.0000027777, 0.0000027761, 0.0000027713, 0.0000027678, 0.0000027637, + 0.0000027565, 0.0000027465, 0.0000027407, 0.0000027404, 0.0000027465, + 0.0000027570, 0.0000027666, 0.0000027723, 0.0000027746, 0.0000027740, + 0.0000027712, 0.0000027677, 0.0000027666, 0.0000027684, 0.0000027721, + 0.0000027774, 0.0000027820, 0.0000027838, 0.0000027839, 0.0000027833, + 0.0000027833, 0.0000027863, 0.0000027947, 0.0000028052, 0.0000028080, + 0.0000028023, 0.0000027945, 0.0000027955, 0.0000028056, 0.0000028158, + 0.0000028219, 0.0000028246, 0.0000028250, 0.0000028225, 0.0000028166, + 0.0000028110, 0.0000028086, 0.0000028084, 0.0000028088, 0.0000028089, + 0.0000028085, 0.0000028084, 0.0000028090, 0.0000028087, 0.0000028066, + 0.0000028030, 0.0000027988, 0.0000027947, 0.0000027900, 0.0000027853, + 0.0000027824, 0.0000027845, 0.0000027899, 0.0000027881, 0.0000027753, + 0.0000027612, 0.0000027558, 0.0000027599, 0.0000027764, 0.0000027966, + 0.0000028096, 0.0000028135, 0.0000028136, 0.0000028157, 0.0000028193, + 0.0000028210, 0.0000028208, 0.0000028194, 0.0000028158, 0.0000028103, + 0.0000028042, 0.0000027983, 0.0000027930, 0.0000027904, 0.0000027832, + 0.0000027881, 0.0000027927, 0.0000027973, 0.0000028008, 0.0000028024, + 0.0000028027, 0.0000028035, 0.0000028059, 0.0000028110, 0.0000028170, + 0.0000028207, 0.0000028219, 0.0000028219, 0.0000028217, 0.0000028206, + 0.0000028173, 0.0000028097, 0.0000027981, 0.0000027846, 0.0000027700, + 0.0000027535, 0.0000027351, 0.0000027185, 0.0000027095, 0.0000027095, + 0.0000027171, 0.0000027301, 0.0000027441, 0.0000027566, 0.0000027671, + 0.0000027764, 0.0000027838, 0.0000027875, 0.0000027884, 0.0000027886, + 0.0000027877, 0.0000027854, 0.0000027834, 0.0000027834, 0.0000027853, + 0.0000027856, 0.0000027824, 0.0000027739, 0.0000027639, 0.0000027589, + 0.0000027602, 0.0000027675, 0.0000027774, 0.0000027857, 0.0000027907, + 0.0000027918, 0.0000027880, 0.0000027765, 0.0000027594, 0.0000027418, + 0.0000027270, 0.0000027161, 0.0000027088, 0.0000027071, 0.0000027100, + 0.0000027145, 0.0000027205, 0.0000027269, 0.0000027350, 0.0000027423, + 0.0000027455, 0.0000027462, 0.0000027471, 0.0000027477, 0.0000027434, + 0.0000027379, 0.0000027359, 0.0000027304, 0.0000027173, 0.0000026976, + 0.0000026839, 0.0000026935, 0.0000027164, 0.0000027264, 0.0000027234, + 0.0000027171, 0.0000027226, 0.0000027381, 0.0000027448, 0.0000027403, + 0.0000027352, 0.0000027388, 0.0000027442, 0.0000027462, 0.0000027486, + 0.0000027503, 0.0000027491, 0.0000027438, 0.0000027367, 0.0000027304, + 0.0000027276, 0.0000027279, 0.0000027303, 0.0000027325, 0.0000027322, + 0.0000027301, 0.0000027293, 0.0000027309, 0.0000027339, 0.0000027384, + 0.0000027434, 0.0000027478, 0.0000027488, 0.0000027462, 0.0000027431, + 0.0000027453, 0.0000027488, 0.0000027485, 0.0000027442, 0.0000027430, + 0.0000027422, 0.0000027340, 0.0000027178, 0.0000027111, 0.0000027200, + 0.0000027295, 0.0000027262, 0.0000027143, 0.0000027024, 0.0000026931, + 0.0000026833, 0.0000026771, 0.0000026780, 0.0000026902, 0.0000027099, + 0.0000027281, 0.0000027381, 0.0000027450, 0.0000027549, 0.0000027678, + 0.0000027776, 0.0000027840, 0.0000027881, 0.0000027881, 0.0000027848, + 0.0000027835, 0.0000027839, 0.0000027778, 0.0000027634, 0.0000027550, + 0.0000027533, 0.0000027551, 0.0000027590, 0.0000027668, 0.0000027756, + 0.0000027779, 0.0000027746, 0.0000027732, 0.0000027753, 0.0000027835, + 0.0000027963, 0.0000028063, 0.0000028096, 0.0000028086, 0.0000028062, + 0.0000028019, 0.0000027931, 0.0000027846, 0.0000027809, 0.0000027794, + 0.0000027759, 0.0000027679, 0.0000027569, 0.0000027461, 0.0000027397, + 0.0000027389, 0.0000027401, 0.0000027405, 0.0000027387, 0.0000027347, + 0.0000027301, 0.0000027254, 0.0000027194, 0.0000027114, 0.0000027033, + 0.0000026968, 0.0000026941, 0.0000026957, 0.0000027056, 0.0000027184, + 0.0000027288, 0.0000027347, 0.0000027378, 0.0000027387, 0.0000027357, + 0.0000027276, 0.0000027183, 0.0000027117, 0.0000027081, 0.0000027085, + 0.0000027177, 0.0000027352, 0.0000027500, 0.0000027552, 0.0000027567, + 0.0000027611, 0.0000027646, 0.0000027639, 0.0000027628, 0.0000027672, + 0.0000027753, 0.0000027834, 0.0000027918, 0.0000027991, 0.0000028018, + 0.0000028012, 0.0000027959, 0.0000027890, 0.0000027825, 0.0000027777, + 0.0000027738, 0.0000027702, 0.0000027673, 0.0000027636, 0.0000027615, + 0.0000027616, 0.0000027621, 0.0000027623, 0.0000027619, 0.0000027605, + 0.0000027584, 0.0000027557, 0.0000027516, 0.0000027457, 0.0000027392, + 0.0000027329, 0.0000027266, 0.0000027202, 0.0000027139, 0.0000027076, + 0.0000027024, 0.0000026987, 0.0000026957, 0.0000026914, 0.0000026854, + 0.0000026787, 0.0000026726, 0.0000026660, 0.0000026601, 0.0000026582, + 0.0000026611, 0.0000026679, 0.0000026752, 0.0000026796, 0.0000026822, + 0.0000026846, 0.0000026857, 0.0000026850, 0.0000026829, 0.0000026793, + 0.0000026741, 0.0000026709, 0.0000026710, 0.0000026738, 0.0000026777, + 0.0000026845, 0.0000026949, 0.0000027021, 0.0000026997, 0.0000026895, + 0.0000026833, 0.0000026868, 0.0000026945, 0.0000026947, 0.0000026896, + 0.0000026857, 0.0000026855, 0.0000026872, 0.0000026934, 0.0000027042, + 0.0000027121, 0.0000027129, 0.0000027075, 0.0000026982, 0.0000026915, + 0.0000026893, 0.0000026895, 0.0000026917, 0.0000026954, 0.0000026998, + 0.0000027055, 0.0000027127, 0.0000027211, 0.0000027270, 0.0000027267, + 0.0000027214, 0.0000027103, 0.0000026987, 0.0000026920, 0.0000026914, + 0.0000026918, 0.0000026900, 0.0000026852, 0.0000026790, 0.0000026740, + 0.0000026725, 0.0000026762, 0.0000026864, 0.0000026976, 0.0000027050, + 0.0000027123, 0.0000027244, 0.0000027397, 0.0000027532, 0.0000027608, + 0.0000027609, 0.0000027577, 0.0000027587, 0.0000027614, 0.0000027586, + 0.0000027525, 0.0000027460, 0.0000027380, 0.0000027340, 0.0000027304, + 0.0000027201, 0.0000027200, 0.0000027440, 0.0000027654, 0.0000027676, + 0.0000027661, 0.0000027693, 0.0000027763, 0.0000027854, 0.0000027926, + 0.0000027930, 0.0000027904, 0.0000027875, 0.0000027871, 0.0000027895, + 0.0000027956, 0.0000028037, 0.0000028101, 0.0000028118, 0.0000028104, + 0.0000028050, 0.0000027958, 0.0000027847, 0.0000027782, 0.0000027744, + 0.0000027684, 0.0000027604, 0.0000027544, 0.0000027563, 0.0000027714, + 0.0000027932, 0.0000028068, 0.0000028103, 0.0000028101, 0.0000028063, + 0.0000027995, 0.0000027915, 0.0000027836, 0.0000027765, 0.0000027709, + 0.0000027657, 0.0000027606, 0.0000027556, 0.0000027535, 0.0000027546, + 0.0000027578, 0.0000027599, 0.0000027594, 0.0000027576, 0.0000027579, + 0.0000027616, 0.0000027645, 0.0000027669, 0.0000027648, 0.0000027584, + 0.0000027502, 0.0000027438, 0.0000027462, 0.0000027526, 0.0000027603, + 0.0000027661, 0.0000027689, 0.0000027689, 0.0000027670, 0.0000027656, + 0.0000027664, 0.0000027692, 0.0000027727, 0.0000027757, 0.0000027772, + 0.0000027774, 0.0000027775, 0.0000027777, 0.0000027801, 0.0000027879, + 0.0000027985, 0.0000028023, 0.0000027977, 0.0000027927, 0.0000027952, + 0.0000028052, 0.0000028152, 0.0000028209, 0.0000028246, 0.0000028258, + 0.0000028245, 0.0000028202, 0.0000028162, 0.0000028148, 0.0000028149, + 0.0000028156, 0.0000028166, 0.0000028171, 0.0000028170, 0.0000028171, + 0.0000028165, 0.0000028137, 0.0000028097, 0.0000028053, 0.0000028005, + 0.0000027959, 0.0000027905, 0.0000027843, 0.0000027835, 0.0000027901, + 0.0000027920, 0.0000027812, 0.0000027681, 0.0000027609, 0.0000027627, + 0.0000027752, 0.0000027937, 0.0000028089, 0.0000028152, 0.0000028155, + 0.0000028172, 0.0000028207, 0.0000028218, 0.0000028207, 0.0000028183, + 0.0000028138, 0.0000028072, 0.0000027996, 0.0000027926, 0.0000027863, + 0.0000027816, 0.0000027806, 0.0000027752, 0.0000027822, 0.0000027886, + 0.0000027940, 0.0000027977, 0.0000027992, 0.0000027999, 0.0000028012, + 0.0000028039, 0.0000028084, 0.0000028141, 0.0000028180, 0.0000028187, + 0.0000028175, 0.0000028150, 0.0000028110, 0.0000028040, 0.0000027933, + 0.0000027792, 0.0000027633, 0.0000027473, 0.0000027339, 0.0000027252, + 0.0000027189, 0.0000027163, 0.0000027181, 0.0000027243, 0.0000027340, + 0.0000027457, 0.0000027571, 0.0000027675, 0.0000027784, 0.0000027893, + 0.0000027969, 0.0000027998, 0.0000028002, 0.0000027989, 0.0000027953, + 0.0000027906, 0.0000027876, 0.0000027873, 0.0000027876, 0.0000027856, + 0.0000027790, 0.0000027688, 0.0000027605, 0.0000027583, 0.0000027627, + 0.0000027715, 0.0000027803, 0.0000027862, 0.0000027889, 0.0000027894, + 0.0000027870, 0.0000027803, 0.0000027688, 0.0000027509, 0.0000027321, + 0.0000027164, 0.0000027075, 0.0000027074, 0.0000027120, 0.0000027188, + 0.0000027292, 0.0000027425, 0.0000027545, 0.0000027595, 0.0000027560, + 0.0000027488, 0.0000027451, 0.0000027417, 0.0000027385, 0.0000027381, + 0.0000027344, 0.0000027230, 0.0000027040, 0.0000026838, 0.0000026841, + 0.0000027072, 0.0000027254, 0.0000027239, 0.0000027164, 0.0000027208, + 0.0000027365, 0.0000027461, 0.0000027433, 0.0000027372, 0.0000027397, + 0.0000027461, 0.0000027491, 0.0000027515, 0.0000027535, 0.0000027527, + 0.0000027482, 0.0000027403, 0.0000027329, 0.0000027293, 0.0000027305, + 0.0000027344, 0.0000027383, 0.0000027395, 0.0000027370, 0.0000027337, + 0.0000027326, 0.0000027335, 0.0000027356, 0.0000027402, 0.0000027453, + 0.0000027496, 0.0000027503, 0.0000027476, 0.0000027457, 0.0000027485, + 0.0000027517, 0.0000027501, 0.0000027445, 0.0000027414, 0.0000027357, + 0.0000027239, 0.0000027136, 0.0000027163, 0.0000027278, 0.0000027297, + 0.0000027227, 0.0000027121, 0.0000027020, 0.0000026887, 0.0000026750, + 0.0000026712, 0.0000026785, 0.0000026959, 0.0000027148, 0.0000027281, + 0.0000027353, 0.0000027409, 0.0000027515, 0.0000027659, 0.0000027776, + 0.0000027862, 0.0000027941, 0.0000027968, 0.0000027944, 0.0000027920, + 0.0000027923, 0.0000027872, 0.0000027719, 0.0000027602, 0.0000027576, + 0.0000027604, 0.0000027633, 0.0000027661, 0.0000027733, 0.0000027798, + 0.0000027792, 0.0000027765, 0.0000027758, 0.0000027803, 0.0000027934, + 0.0000028081, 0.0000028158, 0.0000028169, 0.0000028156, 0.0000028116, + 0.0000028012, 0.0000027891, 0.0000027832, 0.0000027823, 0.0000027800, + 0.0000027731, 0.0000027622, 0.0000027496, 0.0000027400, 0.0000027366, + 0.0000027361, 0.0000027357, 0.0000027343, 0.0000027313, 0.0000027271, + 0.0000027222, 0.0000027150, 0.0000027058, 0.0000026984, 0.0000026956, + 0.0000026958, 0.0000027009, 0.0000027110, 0.0000027223, 0.0000027308, + 0.0000027357, 0.0000027385, 0.0000027395, 0.0000027364, 0.0000027288, + 0.0000027203, 0.0000027149, 0.0000027124, 0.0000027140, 0.0000027230, + 0.0000027386, 0.0000027517, 0.0000027567, 0.0000027584, 0.0000027625, + 0.0000027659, 0.0000027654, 0.0000027638, 0.0000027659, 0.0000027730, + 0.0000027809, 0.0000027893, 0.0000027974, 0.0000028010, 0.0000027996, + 0.0000027930, 0.0000027856, 0.0000027798, 0.0000027757, 0.0000027730, + 0.0000027717, 0.0000027708, 0.0000027711, 0.0000027720, 0.0000027735, + 0.0000027762, 0.0000027781, 0.0000027789, 0.0000027778, 0.0000027748, + 0.0000027703, 0.0000027642, 0.0000027567, 0.0000027483, 0.0000027404, + 0.0000027343, 0.0000027296, 0.0000027254, 0.0000027214, 0.0000027169, + 0.0000027119, 0.0000027070, 0.0000027020, 0.0000026957, 0.0000026875, + 0.0000026785, 0.0000026712, 0.0000026657, 0.0000026620, 0.0000026615, + 0.0000026649, 0.0000026716, 0.0000026778, 0.0000026809, 0.0000026811, + 0.0000026807, 0.0000026802, 0.0000026799, 0.0000026784, 0.0000026731, + 0.0000026651, 0.0000026602, 0.0000026621, 0.0000026672, 0.0000026751, + 0.0000026865, 0.0000026988, 0.0000027052, 0.0000027010, 0.0000026894, + 0.0000026829, 0.0000026876, 0.0000026962, 0.0000026959, 0.0000026900, + 0.0000026846, 0.0000026836, 0.0000026843, 0.0000026865, 0.0000026938, + 0.0000027038, 0.0000027107, 0.0000027127, 0.0000027096, 0.0000027003, + 0.0000026911, 0.0000026875, 0.0000026875, 0.0000026882, 0.0000026906, + 0.0000026950, 0.0000027016, 0.0000027089, 0.0000027168, 0.0000027230, + 0.0000027252, 0.0000027225, 0.0000027164, 0.0000027073, 0.0000027000, + 0.0000026968, 0.0000026955, 0.0000026933, 0.0000026884, 0.0000026812, + 0.0000026727, 0.0000026668, 0.0000026653, 0.0000026705, 0.0000026814, + 0.0000026930, 0.0000027065, 0.0000027223, 0.0000027372, 0.0000027494, + 0.0000027573, 0.0000027585, 0.0000027575, 0.0000027602, 0.0000027611, + 0.0000027555, 0.0000027503, 0.0000027450, 0.0000027372, 0.0000027326, + 0.0000027260, 0.0000027181, 0.0000027295, 0.0000027577, 0.0000027700, + 0.0000027678, 0.0000027700, 0.0000027795, 0.0000027911, 0.0000027988, + 0.0000027986, 0.0000027938, 0.0000027899, 0.0000027902, 0.0000027938, + 0.0000027989, 0.0000028055, 0.0000028121, 0.0000028165, 0.0000028154, + 0.0000028110, 0.0000028054, 0.0000027989, 0.0000027910, 0.0000027840, + 0.0000027790, 0.0000027719, 0.0000027673, 0.0000027663, 0.0000027701, + 0.0000027845, 0.0000027996, 0.0000028071, 0.0000028079, 0.0000028057, + 0.0000028013, 0.0000027974, 0.0000027932, 0.0000027891, 0.0000027838, + 0.0000027768, 0.0000027700, 0.0000027637, 0.0000027574, 0.0000027529, + 0.0000027525, 0.0000027544, 0.0000027554, 0.0000027525, 0.0000027469, + 0.0000027423, 0.0000027413, 0.0000027467, 0.0000027572, 0.0000027659, + 0.0000027699, 0.0000027698, 0.0000027670, 0.0000027622, 0.0000027585, + 0.0000027566, 0.0000027588, 0.0000027599, 0.0000027604, 0.0000027605, + 0.0000027594, 0.0000027589, 0.0000027601, 0.0000027629, 0.0000027662, + 0.0000027684, 0.0000027700, 0.0000027715, 0.0000027722, 0.0000027737, + 0.0000027802, 0.0000027905, 0.0000027960, 0.0000027938, 0.0000027906, + 0.0000027939, 0.0000028027, 0.0000028108, 0.0000028168, 0.0000028212, + 0.0000028243, 0.0000028248, 0.0000028231, 0.0000028203, 0.0000028183, + 0.0000028177, 0.0000028182, 0.0000028199, 0.0000028214, 0.0000028221, + 0.0000028226, 0.0000028227, 0.0000028207, 0.0000028159, 0.0000028103, + 0.0000028053, 0.0000028010, 0.0000027955, 0.0000027879, 0.0000027863, + 0.0000027914, 0.0000027929, 0.0000027849, 0.0000027741, 0.0000027672, + 0.0000027674, 0.0000027783, 0.0000027937, 0.0000028081, 0.0000028163, + 0.0000028184, 0.0000028199, 0.0000028230, 0.0000028242, 0.0000028232, + 0.0000028212, 0.0000028168, 0.0000028088, 0.0000027990, 0.0000027891, + 0.0000027798, 0.0000027724, 0.0000027686, 0.0000027694, 0.0000027686, + 0.0000027768, 0.0000027838, 0.0000027885, 0.0000027911, 0.0000027925, + 0.0000027935, 0.0000027950, 0.0000027968, 0.0000027994, 0.0000028040, + 0.0000028082, 0.0000028090, 0.0000028067, 0.0000028015, 0.0000027946, + 0.0000027863, 0.0000027757, 0.0000027631, 0.0000027513, 0.0000027406, + 0.0000027332, 0.0000027288, 0.0000027253, 0.0000027225, 0.0000027223, + 0.0000027272, 0.0000027373, 0.0000027499, 0.0000027626, 0.0000027742, + 0.0000027851, 0.0000027965, 0.0000028064, 0.0000028116, 0.0000028127, + 0.0000028109, 0.0000028062, 0.0000028001, 0.0000027957, 0.0000027944, + 0.0000027943, 0.0000027931, 0.0000027877, 0.0000027778, 0.0000027663, + 0.0000027588, 0.0000027591, 0.0000027655, 0.0000027742, 0.0000027825, + 0.0000027872, 0.0000027886, 0.0000027868, 0.0000027821, 0.0000027762, + 0.0000027678, 0.0000027561, 0.0000027429, 0.0000027314, 0.0000027252, + 0.0000027258, 0.0000027311, 0.0000027394, 0.0000027510, 0.0000027606, + 0.0000027643, 0.0000027608, 0.0000027524, 0.0000027451, 0.0000027402, + 0.0000027379, 0.0000027393, 0.0000027376, 0.0000027280, 0.0000027113, + 0.0000026877, 0.0000026783, 0.0000026958, 0.0000027207, 0.0000027251, + 0.0000027154, 0.0000027168, 0.0000027331, 0.0000027468, 0.0000027474, + 0.0000027414, 0.0000027414, 0.0000027480, 0.0000027517, 0.0000027538, + 0.0000027558, 0.0000027551, 0.0000027507, 0.0000027431, 0.0000027362, + 0.0000027337, 0.0000027369, 0.0000027426, 0.0000027459, 0.0000027450, + 0.0000027407, 0.0000027342, 0.0000027292, 0.0000027283, 0.0000027296, + 0.0000027330, 0.0000027382, 0.0000027441, 0.0000027486, 0.0000027499, + 0.0000027482, 0.0000027487, 0.0000027531, 0.0000027551, 0.0000027515, + 0.0000027443, 0.0000027374, 0.0000027271, 0.0000027174, 0.0000027155, + 0.0000027228, 0.0000027285, 0.0000027265, 0.0000027213, 0.0000027138, + 0.0000027012, 0.0000026828, 0.0000026709, 0.0000026721, 0.0000026857, + 0.0000027028, 0.0000027157, 0.0000027236, 0.0000027277, 0.0000027333, + 0.0000027447, 0.0000027612, 0.0000027755, 0.0000027862, 0.0000027963, + 0.0000028013, 0.0000028000, 0.0000027965, 0.0000027953, 0.0000027900, + 0.0000027762, 0.0000027652, 0.0000027629, 0.0000027663, 0.0000027691, + 0.0000027691, 0.0000027725, 0.0000027797, 0.0000027820, 0.0000027807, + 0.0000027801, 0.0000027814, 0.0000027904, 0.0000028060, 0.0000028181, + 0.0000028227, 0.0000028231, 0.0000028201, 0.0000028094, 0.0000027947, + 0.0000027856, 0.0000027843, 0.0000027824, 0.0000027755, 0.0000027644, + 0.0000027517, 0.0000027409, 0.0000027351, 0.0000027326, 0.0000027310, + 0.0000027294, 0.0000027274, 0.0000027241, 0.0000027186, 0.0000027101, + 0.0000027011, 0.0000026967, 0.0000026964, 0.0000027025, 0.0000027119, + 0.0000027228, 0.0000027324, 0.0000027391, 0.0000027427, 0.0000027442, + 0.0000027442, 0.0000027409, 0.0000027334, 0.0000027252, 0.0000027198, + 0.0000027180, 0.0000027198, 0.0000027275, 0.0000027406, 0.0000027520, + 0.0000027573, 0.0000027597, 0.0000027636, 0.0000027675, 0.0000027671, + 0.0000027648, 0.0000027652, 0.0000027697, 0.0000027767, 0.0000027855, + 0.0000027948, 0.0000027993, 0.0000027981, 0.0000027905, 0.0000027817, + 0.0000027763, 0.0000027742, 0.0000027739, 0.0000027749, 0.0000027776, + 0.0000027815, 0.0000027853, 0.0000027881, 0.0000027899, 0.0000027916, + 0.0000027915, 0.0000027901, 0.0000027869, 0.0000027802, 0.0000027731, + 0.0000027645, 0.0000027559, 0.0000027475, 0.0000027403, 0.0000027359, + 0.0000027336, 0.0000027322, 0.0000027307, 0.0000027281, 0.0000027232, + 0.0000027163, 0.0000027083, 0.0000026991, 0.0000026884, 0.0000026775, + 0.0000026691, 0.0000026631, 0.0000026600, 0.0000026603, 0.0000026648, + 0.0000026727, 0.0000026792, 0.0000026809, 0.0000026791, 0.0000026753, + 0.0000026721, 0.0000026708, 0.0000026689, 0.0000026631, 0.0000026547, + 0.0000026503, 0.0000026560, 0.0000026651, 0.0000026783, 0.0000026941, + 0.0000027062, 0.0000027087, 0.0000027012, 0.0000026887, 0.0000026833, + 0.0000026894, 0.0000026978, 0.0000026964, 0.0000026888, 0.0000026833, + 0.0000026825, 0.0000026837, 0.0000026849, 0.0000026894, 0.0000026982, + 0.0000027074, 0.0000027126, 0.0000027134, 0.0000027105, 0.0000027014, + 0.0000026912, 0.0000026859, 0.0000026840, 0.0000026837, 0.0000026844, + 0.0000026881, 0.0000026949, 0.0000027021, 0.0000027091, 0.0000027149, + 0.0000027189, 0.0000027209, 0.0000027200, 0.0000027159, 0.0000027101, + 0.0000027048, 0.0000027007, 0.0000026964, 0.0000026910, 0.0000026839, + 0.0000026758, 0.0000026683, 0.0000026634, 0.0000026629, 0.0000026691, + 0.0000026813, 0.0000026986, 0.0000027169, 0.0000027318, 0.0000027447, + 0.0000027544, 0.0000027566, 0.0000027579, 0.0000027613, 0.0000027590, + 0.0000027523, 0.0000027492, 0.0000027443, 0.0000027365, 0.0000027298, + 0.0000027207, 0.0000027188, 0.0000027424, 0.0000027676, 0.0000027705, + 0.0000027692, 0.0000027792, 0.0000027936, 0.0000028010, 0.0000028010, + 0.0000027962, 0.0000027931, 0.0000027938, 0.0000027962, 0.0000028014, + 0.0000028077, 0.0000028138, 0.0000028185, 0.0000028202, 0.0000028161, + 0.0000028095, 0.0000028044, 0.0000028012, 0.0000027970, 0.0000027903, + 0.0000027851, 0.0000027800, 0.0000027764, 0.0000027772, 0.0000027840, + 0.0000027943, 0.0000028017, 0.0000028052, 0.0000028033, 0.0000028001, + 0.0000028004, 0.0000028020, 0.0000028003, 0.0000027960, 0.0000027913, + 0.0000027876, 0.0000027847, 0.0000027811, 0.0000027753, 0.0000027683, + 0.0000027641, 0.0000027630, 0.0000027619, 0.0000027563, 0.0000027482, + 0.0000027401, 0.0000027340, 0.0000027334, 0.0000027391, 0.0000027492, + 0.0000027613, 0.0000027708, 0.0000027771, 0.0000027802, 0.0000027797, + 0.0000027764, 0.0000027715, 0.0000027668, 0.0000027615, 0.0000027577, + 0.0000027544, 0.0000027517, 0.0000027504, 0.0000027513, 0.0000027546, + 0.0000027587, 0.0000027621, 0.0000027653, 0.0000027676, 0.0000027698, + 0.0000027755, 0.0000027848, 0.0000027909, 0.0000027906, 0.0000027889, + 0.0000027921, 0.0000027997, 0.0000028051, 0.0000028092, 0.0000028148, + 0.0000028200, 0.0000028218, 0.0000028213, 0.0000028193, 0.0000028169, + 0.0000028152, 0.0000028150, 0.0000028167, 0.0000028197, 0.0000028224, + 0.0000028239, 0.0000028239, 0.0000028223, 0.0000028179, 0.0000028128, + 0.0000028086, 0.0000028046, 0.0000027988, 0.0000027917, 0.0000027917, + 0.0000027955, 0.0000027934, 0.0000027863, 0.0000027790, 0.0000027738, + 0.0000027756, 0.0000027845, 0.0000027971, 0.0000028092, 0.0000028172, + 0.0000028200, 0.0000028222, 0.0000028253, 0.0000028269, 0.0000028268, + 0.0000028253, 0.0000028220, 0.0000028149, 0.0000028045, 0.0000027922, + 0.0000027790, 0.0000027670, 0.0000027594, 0.0000027576, 0.0000027609, + 0.0000027640, 0.0000027723, 0.0000027787, 0.0000027824, 0.0000027845, + 0.0000027858, 0.0000027864, 0.0000027868, 0.0000027871, 0.0000027880, + 0.0000027912, 0.0000027958, 0.0000027977, 0.0000027957, 0.0000027902, + 0.0000027840, 0.0000027785, 0.0000027707, 0.0000027615, 0.0000027535, + 0.0000027464, 0.0000027401, 0.0000027341, 0.0000027284, 0.0000027254, + 0.0000027273, 0.0000027355, 0.0000027488, 0.0000027624, 0.0000027736, + 0.0000027827, 0.0000027901, 0.0000027986, 0.0000028079, 0.0000028150, + 0.0000028175, 0.0000028169, 0.0000028129, 0.0000028075, 0.0000028039, + 0.0000028033, 0.0000028041, 0.0000028039, 0.0000028010, 0.0000027935, + 0.0000027822, 0.0000027707, 0.0000027647, 0.0000027655, 0.0000027709, + 0.0000027777, 0.0000027830, 0.0000027856, 0.0000027858, 0.0000027831, + 0.0000027776, 0.0000027696, 0.0000027592, 0.0000027479, 0.0000027372, + 0.0000027304, 0.0000027302, 0.0000027345, 0.0000027402, 0.0000027467, + 0.0000027543, 0.0000027599, 0.0000027604, 0.0000027568, 0.0000027496, + 0.0000027416, 0.0000027383, 0.0000027407, 0.0000027402, 0.0000027318, + 0.0000027178, 0.0000026941, 0.0000026769, 0.0000026849, 0.0000027124, + 0.0000027252, 0.0000027152, 0.0000027115, 0.0000027268, 0.0000027452, + 0.0000027505, 0.0000027465, 0.0000027446, 0.0000027497, 0.0000027539, + 0.0000027558, 0.0000027572, 0.0000027561, 0.0000027513, 0.0000027453, + 0.0000027408, 0.0000027411, 0.0000027456, 0.0000027512, 0.0000027534, + 0.0000027503, 0.0000027433, 0.0000027350, 0.0000027277, 0.0000027242, + 0.0000027250, 0.0000027290, 0.0000027342, 0.0000027399, 0.0000027459, + 0.0000027502, 0.0000027498, 0.0000027493, 0.0000027537, 0.0000027576, + 0.0000027570, 0.0000027512, 0.0000027430, 0.0000027334, 0.0000027224, + 0.0000027184, 0.0000027209, 0.0000027242, 0.0000027250, 0.0000027240, + 0.0000027218, 0.0000027150, 0.0000026984, 0.0000026805, 0.0000026737, + 0.0000026799, 0.0000026918, 0.0000027030, 0.0000027108, 0.0000027149, + 0.0000027175, 0.0000027245, 0.0000027373, 0.0000027550, 0.0000027720, + 0.0000027847, 0.0000027958, 0.0000028022, 0.0000028016, 0.0000027968, + 0.0000027936, 0.0000027873, 0.0000027743, 0.0000027667, 0.0000027675, + 0.0000027721, 0.0000027751, 0.0000027742, 0.0000027751, 0.0000027808, + 0.0000027844, 0.0000027839, 0.0000027846, 0.0000027863, 0.0000027911, + 0.0000028037, 0.0000028178, 0.0000028261, 0.0000028283, 0.0000028265, + 0.0000028160, 0.0000028004, 0.0000027886, 0.0000027855, 0.0000027826, + 0.0000027747, 0.0000027637, 0.0000027522, 0.0000027426, 0.0000027358, + 0.0000027309, 0.0000027269, 0.0000027240, 0.0000027225, 0.0000027203, + 0.0000027152, 0.0000027073, 0.0000026991, 0.0000026970, 0.0000027022, + 0.0000027129, 0.0000027257, 0.0000027369, 0.0000027449, 0.0000027496, + 0.0000027514, 0.0000027513, 0.0000027496, 0.0000027452, 0.0000027384, + 0.0000027310, 0.0000027262, 0.0000027248, 0.0000027259, 0.0000027316, + 0.0000027418, 0.0000027516, 0.0000027575, 0.0000027607, 0.0000027640, + 0.0000027677, 0.0000027688, 0.0000027668, 0.0000027658, 0.0000027677, + 0.0000027721, 0.0000027804, 0.0000027912, 0.0000027973, 0.0000027969, + 0.0000027888, 0.0000027787, 0.0000027727, 0.0000027721, 0.0000027751, + 0.0000027797, 0.0000027846, 0.0000027898, 0.0000027938, 0.0000027969, + 0.0000027975, 0.0000027957, 0.0000027957, 0.0000027935, 0.0000027901, + 0.0000027849, 0.0000027771, 0.0000027682, 0.0000027596, 0.0000027518, + 0.0000027440, 0.0000027373, 0.0000027339, 0.0000027336, 0.0000027338, + 0.0000027343, 0.0000027338, 0.0000027306, 0.0000027239, 0.0000027143, + 0.0000027026, 0.0000026893, 0.0000026762, 0.0000026665, 0.0000026597, + 0.0000026560, 0.0000026559, 0.0000026597, 0.0000026662, 0.0000026709, + 0.0000026714, 0.0000026680, 0.0000026622, 0.0000026576, 0.0000026564, + 0.0000026558, 0.0000026530, 0.0000026501, 0.0000026486, 0.0000026563, + 0.0000026709, 0.0000026883, 0.0000027041, 0.0000027120, 0.0000027102, + 0.0000026997, 0.0000026882, 0.0000026856, 0.0000026926, 0.0000026981, + 0.0000026943, 0.0000026859, 0.0000026819, 0.0000026824, 0.0000026844, + 0.0000026863, 0.0000026891, 0.0000026953, 0.0000027036, 0.0000027106, + 0.0000027133, 0.0000027131, 0.0000027095, 0.0000027021, 0.0000026927, + 0.0000026852, 0.0000026814, 0.0000026799, 0.0000026794, 0.0000026815, + 0.0000026866, 0.0000026929, 0.0000026991, 0.0000027051, 0.0000027117, + 0.0000027180, 0.0000027207, 0.0000027214, 0.0000027192, 0.0000027142, + 0.0000027077, 0.0000027006, 0.0000026933, 0.0000026864, 0.0000026802, + 0.0000026736, 0.0000026666, 0.0000026643, 0.0000026668, 0.0000026761, + 0.0000026929, 0.0000027110, 0.0000027261, 0.0000027412, 0.0000027525, + 0.0000027558, 0.0000027588, 0.0000027610, 0.0000027558, 0.0000027505, + 0.0000027494, 0.0000027436, 0.0000027349, 0.0000027263, 0.0000027180, + 0.0000027263, 0.0000027569, 0.0000027735, 0.0000027704, 0.0000027746, + 0.0000027918, 0.0000028025, 0.0000028013, 0.0000027972, 0.0000027949, + 0.0000027955, 0.0000027980, 0.0000028022, 0.0000028090, 0.0000028178, + 0.0000028230, 0.0000028239, 0.0000028212, 0.0000028152, 0.0000028081, + 0.0000028038, 0.0000028027, 0.0000028001, 0.0000027940, 0.0000027892, + 0.0000027859, 0.0000027841, 0.0000027893, 0.0000027958, 0.0000027998, + 0.0000028024, 0.0000028016, 0.0000027978, 0.0000027995, 0.0000028059, + 0.0000028082, 0.0000028054, 0.0000028032, 0.0000028033, 0.0000028050, + 0.0000028058, 0.0000028031, 0.0000027962, 0.0000027868, 0.0000027803, + 0.0000027777, 0.0000027769, 0.0000027716, 0.0000027616, 0.0000027492, + 0.0000027382, 0.0000027340, 0.0000027354, 0.0000027398, 0.0000027469, + 0.0000027568, 0.0000027676, 0.0000027779, 0.0000027842, 0.0000027868, + 0.0000027861, 0.0000027824, 0.0000027771, 0.0000027698, 0.0000027627, + 0.0000027563, 0.0000027510, 0.0000027489, 0.0000027497, 0.0000027535, + 0.0000027577, 0.0000027614, 0.0000027645, 0.0000027677, 0.0000027742, + 0.0000027826, 0.0000027878, 0.0000027885, 0.0000027888, 0.0000027925, + 0.0000027992, 0.0000028031, 0.0000028037, 0.0000028075, 0.0000028142, + 0.0000028177, 0.0000028170, 0.0000028143, 0.0000028126, 0.0000028125, + 0.0000028134, 0.0000028149, 0.0000028168, 0.0000028193, 0.0000028216, + 0.0000028221, 0.0000028201, 0.0000028159, 0.0000028128, 0.0000028111, + 0.0000028085, 0.0000028029, 0.0000027966, 0.0000027985, 0.0000028019, + 0.0000027974, 0.0000027901, 0.0000027840, 0.0000027815, 0.0000027850, + 0.0000027940, 0.0000028031, 0.0000028131, 0.0000028200, 0.0000028221, + 0.0000028237, 0.0000028266, 0.0000028279, 0.0000028280, 0.0000028277, + 0.0000028256, 0.0000028201, 0.0000028117, 0.0000028008, 0.0000027869, + 0.0000027714, 0.0000027585, 0.0000027521, 0.0000027516, 0.0000027561, + 0.0000027621, 0.0000027691, 0.0000027743, 0.0000027777, 0.0000027800, + 0.0000027810, 0.0000027808, 0.0000027803, 0.0000027803, 0.0000027813, + 0.0000027844, 0.0000027893, 0.0000027928, 0.0000027924, 0.0000027890, + 0.0000027844, 0.0000027793, 0.0000027738, 0.0000027680, 0.0000027613, + 0.0000027530, 0.0000027443, 0.0000027374, 0.0000027337, 0.0000027341, + 0.0000027392, 0.0000027496, 0.0000027633, 0.0000027758, 0.0000027845, + 0.0000027902, 0.0000027945, 0.0000027988, 0.0000028056, 0.0000028129, + 0.0000028175, 0.0000028184, 0.0000028161, 0.0000028118, 0.0000028086, + 0.0000028082, 0.0000028093, 0.0000028108, 0.0000028101, 0.0000028058, + 0.0000027974, 0.0000027867, 0.0000027785, 0.0000027762, 0.0000027791, + 0.0000027842, 0.0000027873, 0.0000027875, 0.0000027858, 0.0000027831, + 0.0000027799, 0.0000027743, 0.0000027649, 0.0000027520, 0.0000027377, + 0.0000027258, 0.0000027204, 0.0000027208, 0.0000027256, 0.0000027316, + 0.0000027398, 0.0000027505, 0.0000027582, 0.0000027601, 0.0000027558, + 0.0000027466, 0.0000027411, 0.0000027418, 0.0000027417, 0.0000027347, + 0.0000027229, 0.0000027009, 0.0000026776, 0.0000026777, 0.0000027019, + 0.0000027229, 0.0000027179, 0.0000027065, 0.0000027183, 0.0000027403, + 0.0000027517, 0.0000027505, 0.0000027476, 0.0000027514, 0.0000027555, + 0.0000027570, 0.0000027577, 0.0000027565, 0.0000027519, 0.0000027469, + 0.0000027469, 0.0000027502, 0.0000027549, 0.0000027588, 0.0000027599, + 0.0000027569, 0.0000027502, 0.0000027418, 0.0000027333, 0.0000027267, + 0.0000027246, 0.0000027273, 0.0000027332, 0.0000027396, 0.0000027452, + 0.0000027504, 0.0000027520, 0.0000027503, 0.0000027533, 0.0000027583, + 0.0000027598, 0.0000027563, 0.0000027501, 0.0000027420, 0.0000027318, + 0.0000027234, 0.0000027225, 0.0000027227, 0.0000027215, 0.0000027225, + 0.0000027229, 0.0000027218, 0.0000027134, 0.0000026974, 0.0000026849, + 0.0000026821, 0.0000026853, 0.0000026900, 0.0000026959, 0.0000027014, + 0.0000027056, 0.0000027094, 0.0000027177, 0.0000027313, 0.0000027482, + 0.0000027662, 0.0000027813, 0.0000027938, 0.0000028010, 0.0000028009, + 0.0000027951, 0.0000027883, 0.0000027793, 0.0000027686, 0.0000027658, + 0.0000027703, 0.0000027771, 0.0000027804, 0.0000027803, 0.0000027815, + 0.0000027857, 0.0000027885, 0.0000027877, 0.0000027886, 0.0000027920, + 0.0000027953, 0.0000028038, 0.0000028172, 0.0000028278, 0.0000028317, + 0.0000028308, 0.0000028215, 0.0000028054, 0.0000027920, 0.0000027866, + 0.0000027816, 0.0000027723, 0.0000027614, 0.0000027517, 0.0000027441, + 0.0000027382, 0.0000027316, 0.0000027243, 0.0000027186, 0.0000027171, + 0.0000027161, 0.0000027125, 0.0000027065, 0.0000027021, 0.0000027032, + 0.0000027110, 0.0000027233, 0.0000027360, 0.0000027462, 0.0000027520, + 0.0000027548, 0.0000027550, 0.0000027541, 0.0000027515, 0.0000027471, + 0.0000027415, 0.0000027365, 0.0000027334, 0.0000027322, 0.0000027321, + 0.0000027354, 0.0000027430, 0.0000027514, 0.0000027575, 0.0000027614, + 0.0000027643, 0.0000027672, 0.0000027694, 0.0000027696, 0.0000027689, + 0.0000027685, 0.0000027693, 0.0000027750, 0.0000027858, 0.0000027948, + 0.0000027956, 0.0000027879, 0.0000027768, 0.0000027705, 0.0000027705, + 0.0000027754, 0.0000027826, 0.0000027881, 0.0000027922, 0.0000027945, + 0.0000027957, 0.0000027960, 0.0000027948, 0.0000027926, 0.0000027903, + 0.0000027880, 0.0000027845, 0.0000027788, 0.0000027718, 0.0000027650, + 0.0000027574, 0.0000027503, 0.0000027425, 0.0000027355, 0.0000027318, + 0.0000027318, 0.0000027325, 0.0000027331, 0.0000027333, 0.0000027320, + 0.0000027270, 0.0000027186, 0.0000027068, 0.0000026927, 0.0000026786, + 0.0000026676, 0.0000026600, 0.0000026559, 0.0000026547, 0.0000026551, + 0.0000026563, 0.0000026565, 0.0000026547, 0.0000026509, 0.0000026473, + 0.0000026448, 0.0000026455, 0.0000026504, 0.0000026517, 0.0000026545, + 0.0000026592, 0.0000026689, 0.0000026844, 0.0000027001, 0.0000027104, + 0.0000027122, 0.0000027063, 0.0000026961, 0.0000026894, 0.0000026911, + 0.0000026970, 0.0000026978, 0.0000026905, 0.0000026822, 0.0000026802, + 0.0000026826, 0.0000026861, 0.0000026883, 0.0000026899, 0.0000026928, + 0.0000026983, 0.0000027043, 0.0000027083, 0.0000027098, 0.0000027092, + 0.0000027062, 0.0000026998, 0.0000026915, 0.0000026838, 0.0000026794, + 0.0000026773, 0.0000026765, 0.0000026771, 0.0000026800, 0.0000026847, + 0.0000026907, 0.0000026984, 0.0000027078, 0.0000027154, 0.0000027198, + 0.0000027226, 0.0000027240, 0.0000027219, 0.0000027157, 0.0000027071, + 0.0000026980, 0.0000026905, 0.0000026849, 0.0000026795, 0.0000026733, + 0.0000026703, 0.0000026707, 0.0000026769, 0.0000026906, 0.0000027069, + 0.0000027232, 0.0000027404, 0.0000027520, 0.0000027563, 0.0000027603, + 0.0000027600, 0.0000027534, 0.0000027511, 0.0000027512, 0.0000027433, + 0.0000027323, 0.0000027228, 0.0000027200, 0.0000027373, 0.0000027678, + 0.0000027751, 0.0000027725, 0.0000027845, 0.0000028011, 0.0000028031, + 0.0000027967, 0.0000027942, 0.0000027951, 0.0000027971, 0.0000028020, + 0.0000028111, 0.0000028196, 0.0000028273, 0.0000028294, 0.0000028262, + 0.0000028195, 0.0000028128, 0.0000028064, 0.0000028030, 0.0000028021, + 0.0000027996, 0.0000027946, 0.0000027909, 0.0000027906, 0.0000027938, + 0.0000028005, 0.0000028038, 0.0000028038, 0.0000028024, 0.0000027980, + 0.0000027972, 0.0000028046, 0.0000028119, 0.0000028124, 0.0000028103, + 0.0000028117, 0.0000028152, 0.0000028192, 0.0000028208, 0.0000028179, + 0.0000028096, 0.0000027987, 0.0000027902, 0.0000027861, 0.0000027837, + 0.0000027792, 0.0000027736, 0.0000027659, 0.0000027550, 0.0000027446, + 0.0000027402, 0.0000027409, 0.0000027439, 0.0000027484, 0.0000027552, + 0.0000027638, 0.0000027731, 0.0000027808, 0.0000027840, 0.0000027833, + 0.0000027803, 0.0000027775, 0.0000027726, 0.0000027672, 0.0000027605, + 0.0000027546, 0.0000027527, 0.0000027541, 0.0000027577, 0.0000027617, + 0.0000027653, 0.0000027693, 0.0000027753, 0.0000027818, 0.0000027855, + 0.0000027867, 0.0000027889, 0.0000027947, 0.0000028022, 0.0000028057, + 0.0000028048, 0.0000028044, 0.0000028081, 0.0000028130, 0.0000028145, + 0.0000028130, 0.0000028120, 0.0000028126, 0.0000028143, 0.0000028160, + 0.0000028178, 0.0000028192, 0.0000028206, 0.0000028203, 0.0000028164, + 0.0000028122, 0.0000028114, 0.0000028123, 0.0000028121, 0.0000028075, + 0.0000028031, 0.0000028062, 0.0000028071, 0.0000028024, 0.0000027956, + 0.0000027902, 0.0000027909, 0.0000027979, 0.0000028051, 0.0000028125, + 0.0000028198, 0.0000028249, 0.0000028261, 0.0000028267, 0.0000028281, + 0.0000028282, 0.0000028276, 0.0000028271, 0.0000028259, 0.0000028223, + 0.0000028164, 0.0000028082, 0.0000027974, 0.0000027834, 0.0000027689, + 0.0000027570, 0.0000027513, 0.0000027514, 0.0000027555, 0.0000027612, + 0.0000027659, 0.0000027698, 0.0000027731, 0.0000027758, 0.0000027771, + 0.0000027769, 0.0000027765, 0.0000027772, 0.0000027794, 0.0000027829, + 0.0000027872, 0.0000027906, 0.0000027913, 0.0000027900, 0.0000027873, + 0.0000027844, 0.0000027806, 0.0000027758, 0.0000027679, 0.0000027577, + 0.0000027481, 0.0000027428, 0.0000027425, 0.0000027462, 0.0000027531, + 0.0000027633, 0.0000027761, 0.0000027879, 0.0000027956, 0.0000027995, + 0.0000028012, 0.0000028024, 0.0000028047, 0.0000028098, 0.0000028150, + 0.0000028177, 0.0000028172, 0.0000028137, 0.0000028098, 0.0000028077, + 0.0000028076, 0.0000028098, 0.0000028117, 0.0000028111, 0.0000028064, + 0.0000027983, 0.0000027900, 0.0000027858, 0.0000027871, 0.0000027927, + 0.0000027978, 0.0000027992, 0.0000027969, 0.0000027927, 0.0000027878, + 0.0000027815, 0.0000027726, 0.0000027609, 0.0000027471, 0.0000027332, + 0.0000027225, 0.0000027181, 0.0000027184, 0.0000027236, 0.0000027324, + 0.0000027448, 0.0000027573, 0.0000027631, 0.0000027612, 0.0000027533, + 0.0000027459, 0.0000027432, 0.0000027419, 0.0000027367, 0.0000027269, + 0.0000027068, 0.0000026818, 0.0000026749, 0.0000026929, 0.0000027186, + 0.0000027199, 0.0000027044, 0.0000027082, 0.0000027319, 0.0000027500, + 0.0000027534, 0.0000027508, 0.0000027527, 0.0000027565, 0.0000027575, + 0.0000027579, 0.0000027563, 0.0000027529, 0.0000027506, 0.0000027528, + 0.0000027590, 0.0000027637, 0.0000027660, 0.0000027670, 0.0000027657, + 0.0000027609, 0.0000027526, 0.0000027427, 0.0000027338, 0.0000027282, + 0.0000027277, 0.0000027325, 0.0000027403, 0.0000027473, 0.0000027526, + 0.0000027546, 0.0000027517, 0.0000027515, 0.0000027564, 0.0000027592, + 0.0000027586, 0.0000027549, 0.0000027501, 0.0000027417, 0.0000027330, + 0.0000027277, 0.0000027250, 0.0000027207, 0.0000027194, 0.0000027211, + 0.0000027217, 0.0000027198, 0.0000027125, 0.0000027026, 0.0000026939, + 0.0000026875, 0.0000026839, 0.0000026824, 0.0000026862, 0.0000026930, + 0.0000026990, 0.0000027048, 0.0000027140, 0.0000027267, 0.0000027419, + 0.0000027586, 0.0000027760, 0.0000027904, 0.0000027990, 0.0000027993, + 0.0000027930, 0.0000027822, 0.0000027690, 0.0000027597, 0.0000027636, + 0.0000027727, 0.0000027808, 0.0000027854, 0.0000027885, 0.0000027918, + 0.0000027945, 0.0000027954, 0.0000027937, 0.0000027942, 0.0000027985, + 0.0000028015, 0.0000028066, 0.0000028178, 0.0000028287, 0.0000028334, + 0.0000028332, 0.0000028248, 0.0000028088, 0.0000027948, 0.0000027876, + 0.0000027805, 0.0000027699, 0.0000027591, 0.0000027510, 0.0000027454, + 0.0000027405, 0.0000027333, 0.0000027228, 0.0000027141, 0.0000027124, + 0.0000027128, 0.0000027114, 0.0000027088, 0.0000027082, 0.0000027127, + 0.0000027205, 0.0000027300, 0.0000027392, 0.0000027464, 0.0000027518, + 0.0000027537, 0.0000027540, 0.0000027530, 0.0000027508, 0.0000027476, + 0.0000027440, 0.0000027419, 0.0000027407, 0.0000027396, 0.0000027384, + 0.0000027391, 0.0000027440, 0.0000027514, 0.0000027574, 0.0000027613, + 0.0000027639, 0.0000027666, 0.0000027699, 0.0000027725, 0.0000027732, + 0.0000027715, 0.0000027690, 0.0000027708, 0.0000027799, 0.0000027900, + 0.0000027934, 0.0000027875, 0.0000027763, 0.0000027689, 0.0000027693, + 0.0000027751, 0.0000027824, 0.0000027870, 0.0000027895, 0.0000027903, + 0.0000027904, 0.0000027903, 0.0000027902, 0.0000027902, 0.0000027897, + 0.0000027874, 0.0000027853, 0.0000027822, 0.0000027780, 0.0000027733, + 0.0000027687, 0.0000027635, 0.0000027569, 0.0000027489, 0.0000027410, + 0.0000027356, 0.0000027338, 0.0000027333, 0.0000027326, 0.0000027321, + 0.0000027309, 0.0000027271, 0.0000027200, 0.0000027102, 0.0000026985, + 0.0000026861, 0.0000026755, 0.0000026674, 0.0000026623, 0.0000026590, + 0.0000026556, 0.0000026522, 0.0000026480, 0.0000026462, 0.0000026445, + 0.0000026433, 0.0000026459, 0.0000026496, 0.0000026566, 0.0000026640, + 0.0000026708, 0.0000026782, 0.0000026870, 0.0000026975, 0.0000027072, + 0.0000027108, 0.0000027074, 0.0000027003, 0.0000026950, 0.0000026936, + 0.0000026984, 0.0000027012, 0.0000026962, 0.0000026863, 0.0000026794, + 0.0000026792, 0.0000026825, 0.0000026863, 0.0000026885, 0.0000026892, + 0.0000026900, 0.0000026939, 0.0000027002, 0.0000027047, 0.0000027080, + 0.0000027091, 0.0000027080, 0.0000027033, 0.0000026961, 0.0000026878, + 0.0000026807, 0.0000026754, 0.0000026732, 0.0000026730, 0.0000026738, + 0.0000026759, 0.0000026801, 0.0000026876, 0.0000026982, 0.0000027087, + 0.0000027150, 0.0000027186, 0.0000027221, 0.0000027252, 0.0000027262, + 0.0000027228, 0.0000027155, 0.0000027060, 0.0000026967, 0.0000026893, + 0.0000026837, 0.0000026784, 0.0000026757, 0.0000026753, 0.0000026797, + 0.0000026906, 0.0000027055, 0.0000027240, 0.0000027432, 0.0000027542, + 0.0000027595, 0.0000027630, 0.0000027593, 0.0000027525, 0.0000027533, + 0.0000027530, 0.0000027430, 0.0000027296, 0.0000027203, 0.0000027238, + 0.0000027504, 0.0000027744, 0.0000027756, 0.0000027772, 0.0000027947, + 0.0000028034, 0.0000027982, 0.0000027929, 0.0000027923, 0.0000027954, + 0.0000028009, 0.0000028106, 0.0000028215, 0.0000028278, 0.0000028307, + 0.0000028308, 0.0000028250, 0.0000028171, 0.0000028102, 0.0000028044, + 0.0000028008, 0.0000027980, 0.0000027943, 0.0000027910, 0.0000027911, + 0.0000027962, 0.0000028024, 0.0000028066, 0.0000028083, 0.0000028062, + 0.0000028008, 0.0000027979, 0.0000028008, 0.0000028083, 0.0000028132, + 0.0000028144, 0.0000028158, 0.0000028206, 0.0000028245, 0.0000028271, + 0.0000028266, 0.0000028212, 0.0000028102, 0.0000027974, 0.0000027868, + 0.0000027820, 0.0000027811, 0.0000027795, 0.0000027759, 0.0000027709, + 0.0000027679, 0.0000027637, 0.0000027570, 0.0000027515, 0.0000027471, + 0.0000027470, 0.0000027501, 0.0000027558, 0.0000027619, 0.0000027679, + 0.0000027726, 0.0000027742, 0.0000027740, 0.0000027740, 0.0000027731, + 0.0000027687, 0.0000027623, 0.0000027556, 0.0000027530, 0.0000027539, + 0.0000027573, 0.0000027620, 0.0000027670, 0.0000027719, 0.0000027764, + 0.0000027799, 0.0000027820, 0.0000027840, 0.0000027886, 0.0000027968, + 0.0000028057, 0.0000028097, 0.0000028081, 0.0000028040, 0.0000028034, + 0.0000028080, 0.0000028136, 0.0000028159, 0.0000028151, 0.0000028151, + 0.0000028169, 0.0000028196, 0.0000028226, 0.0000028242, 0.0000028238, + 0.0000028202, 0.0000028138, 0.0000028097, 0.0000028101, 0.0000028135, + 0.0000028145, 0.0000028115, 0.0000028100, 0.0000028133, 0.0000028125, + 0.0000028078, 0.0000028018, 0.0000027970, 0.0000028008, 0.0000028102, + 0.0000028176, 0.0000028236, 0.0000028297, 0.0000028318, 0.0000028319, + 0.0000028318, 0.0000028308, 0.0000028286, 0.0000028260, 0.0000028243, + 0.0000028232, 0.0000028209, 0.0000028171, 0.0000028123, 0.0000028053, + 0.0000027948, 0.0000027831, 0.0000027707, 0.0000027606, 0.0000027551, + 0.0000027543, 0.0000027568, 0.0000027607, 0.0000027623, 0.0000027650, + 0.0000027688, 0.0000027721, 0.0000027741, 0.0000027750, 0.0000027755, + 0.0000027766, 0.0000027785, 0.0000027808, 0.0000027831, 0.0000027850, + 0.0000027866, 0.0000027886, 0.0000027904, 0.0000027912, 0.0000027897, + 0.0000027848, 0.0000027760, 0.0000027654, 0.0000027558, 0.0000027496, + 0.0000027485, 0.0000027527, 0.0000027615, 0.0000027736, 0.0000027871, + 0.0000027990, 0.0000028067, 0.0000028099, 0.0000028096, 0.0000028075, + 0.0000028064, 0.0000028078, 0.0000028121, 0.0000028164, 0.0000028180, + 0.0000028169, 0.0000028130, 0.0000028089, 0.0000028056, 0.0000028055, + 0.0000028085, 0.0000028107, 0.0000028102, 0.0000028054, 0.0000027982, + 0.0000027922, 0.0000027908, 0.0000027944, 0.0000028001, 0.0000028047, + 0.0000028064, 0.0000028060, 0.0000028039, 0.0000027990, 0.0000027888, + 0.0000027741, 0.0000027579, 0.0000027436, 0.0000027324, 0.0000027254, + 0.0000027234, 0.0000027264, 0.0000027351, 0.0000027475, 0.0000027597, + 0.0000027669, 0.0000027656, 0.0000027583, 0.0000027500, 0.0000027437, + 0.0000027403, 0.0000027377, 0.0000027297, 0.0000027106, 0.0000026858, + 0.0000026758, 0.0000026860, 0.0000027129, 0.0000027227, 0.0000027064, + 0.0000027003, 0.0000027210, 0.0000027449, 0.0000027548, 0.0000027535, + 0.0000027537, 0.0000027572, 0.0000027573, 0.0000027573, 0.0000027559, + 0.0000027537, 0.0000027547, 0.0000027597, 0.0000027662, 0.0000027716, + 0.0000027741, 0.0000027760, 0.0000027768, 0.0000027741, 0.0000027665, + 0.0000027550, 0.0000027427, 0.0000027334, 0.0000027298, 0.0000027314, + 0.0000027391, 0.0000027491, 0.0000027569, 0.0000027595, 0.0000027557, + 0.0000027496, 0.0000027521, 0.0000027572, 0.0000027589, 0.0000027583, + 0.0000027559, 0.0000027506, 0.0000027423, 0.0000027365, 0.0000027311, + 0.0000027237, 0.0000027180, 0.0000027174, 0.0000027191, 0.0000027197, + 0.0000027186, 0.0000027156, 0.0000027086, 0.0000026973, 0.0000026870, + 0.0000026799, 0.0000026771, 0.0000026807, 0.0000026886, 0.0000026967, + 0.0000027038, 0.0000027129, 0.0000027234, 0.0000027356, 0.0000027512, + 0.0000027693, 0.0000027861, 0.0000027965, 0.0000027975, 0.0000027912, + 0.0000027775, 0.0000027603, 0.0000027525, 0.0000027617, 0.0000027765, + 0.0000027851, 0.0000027926, 0.0000028002, 0.0000028056, 0.0000028070, + 0.0000028049, 0.0000028024, 0.0000028029, 0.0000028072, 0.0000028098, + 0.0000028119, 0.0000028197, 0.0000028293, 0.0000028339, 0.0000028344, + 0.0000028268, 0.0000028109, 0.0000027961, 0.0000027879, 0.0000027796, + 0.0000027683, 0.0000027583, 0.0000027515, 0.0000027473, 0.0000027426, + 0.0000027344, 0.0000027215, 0.0000027105, 0.0000027090, 0.0000027116, + 0.0000027126, 0.0000027133, 0.0000027158, 0.0000027204, 0.0000027252, + 0.0000027300, 0.0000027363, 0.0000027420, 0.0000027479, 0.0000027523, + 0.0000027534, 0.0000027528, 0.0000027512, 0.0000027494, 0.0000027476, + 0.0000027471, 0.0000027469, 0.0000027455, 0.0000027433, 0.0000027425, + 0.0000027452, 0.0000027508, 0.0000027567, 0.0000027609, 0.0000027633, + 0.0000027658, 0.0000027703, 0.0000027751, 0.0000027771, 0.0000027746, + 0.0000027689, 0.0000027672, 0.0000027740, 0.0000027849, 0.0000027899, + 0.0000027868, 0.0000027764, 0.0000027681, 0.0000027683, 0.0000027746, + 0.0000027811, 0.0000027839, 0.0000027847, 0.0000027849, 0.0000027855, + 0.0000027863, 0.0000027881, 0.0000027904, 0.0000027920, 0.0000027920, + 0.0000027903, 0.0000027872, 0.0000027840, 0.0000027810, 0.0000027781, + 0.0000027748, 0.0000027707, 0.0000027651, 0.0000027580, 0.0000027505, + 0.0000027445, 0.0000027411, 0.0000027393, 0.0000027370, 0.0000027342, + 0.0000027316, 0.0000027275, 0.0000027208, 0.0000027127, 0.0000027042, + 0.0000026951, 0.0000026868, 0.0000026794, 0.0000026732, 0.0000026679, + 0.0000026624, 0.0000026567, 0.0000026528, 0.0000026518, 0.0000026536, + 0.0000026576, 0.0000026627, 0.0000026683, 0.0000026747, 0.0000026818, + 0.0000026887, 0.0000026944, 0.0000026990, 0.0000027036, 0.0000027069, + 0.0000027066, 0.0000027019, 0.0000026974, 0.0000026963, 0.0000027001, + 0.0000027040, 0.0000027022, 0.0000026930, 0.0000026828, 0.0000026785, + 0.0000026792, 0.0000026822, 0.0000026848, 0.0000026865, 0.0000026887, + 0.0000026906, 0.0000026955, 0.0000027034, 0.0000027113, 0.0000027172, + 0.0000027200, 0.0000027195, 0.0000027150, 0.0000027074, 0.0000026982, + 0.0000026881, 0.0000026787, 0.0000026720, 0.0000026684, 0.0000026687, + 0.0000026702, 0.0000026727, 0.0000026783, 0.0000026892, 0.0000027021, + 0.0000027122, 0.0000027173, 0.0000027198, 0.0000027228, 0.0000027255, + 0.0000027271, 0.0000027265, 0.0000027216, 0.0000027127, 0.0000027016, + 0.0000026916, 0.0000026849, 0.0000026810, 0.0000026794, 0.0000026790, + 0.0000026823, 0.0000026918, 0.0000027073, 0.0000027289, 0.0000027481, + 0.0000027581, 0.0000027642, 0.0000027649, 0.0000027575, 0.0000027538, + 0.0000027570, 0.0000027544, 0.0000027420, 0.0000027275, 0.0000027200, + 0.0000027308, 0.0000027619, 0.0000027776, 0.0000027770, 0.0000027854, + 0.0000028003, 0.0000028004, 0.0000027927, 0.0000027903, 0.0000027923, + 0.0000027987, 0.0000028092, 0.0000028195, 0.0000028260, 0.0000028294, + 0.0000028291, 0.0000028282, 0.0000028228, 0.0000028151, 0.0000028075, + 0.0000028010, 0.0000027951, 0.0000027896, 0.0000027861, 0.0000027871, + 0.0000027930, 0.0000028010, 0.0000028069, 0.0000028095, 0.0000028097, + 0.0000028048, 0.0000028003, 0.0000028007, 0.0000028044, 0.0000028092, + 0.0000028141, 0.0000028188, 0.0000028230, 0.0000028262, 0.0000028264, + 0.0000028249, 0.0000028223, 0.0000028168, 0.0000028069, 0.0000027947, + 0.0000027827, 0.0000027734, 0.0000027676, 0.0000027679, 0.0000027723, + 0.0000027736, 0.0000027720, 0.0000027717, 0.0000027728, 0.0000027719, + 0.0000027649, 0.0000027559, 0.0000027501, 0.0000027505, 0.0000027553, + 0.0000027606, 0.0000027641, 0.0000027654, 0.0000027663, 0.0000027683, + 0.0000027697, 0.0000027675, 0.0000027609, 0.0000027532, 0.0000027489, + 0.0000027488, 0.0000027513, 0.0000027558, 0.0000027617, 0.0000027679, + 0.0000027732, 0.0000027764, 0.0000027782, 0.0000027810, 0.0000027872, + 0.0000027973, 0.0000028069, 0.0000028110, 0.0000028100, 0.0000028061, + 0.0000028036, 0.0000028062, 0.0000028137, 0.0000028197, 0.0000028208, + 0.0000028209, 0.0000028229, 0.0000028267, 0.0000028297, 0.0000028299, + 0.0000028264, 0.0000028194, 0.0000028128, 0.0000028099, 0.0000028111, + 0.0000028142, 0.0000028150, 0.0000028132, 0.0000028149, 0.0000028193, + 0.0000028176, 0.0000028128, 0.0000028071, 0.0000028034, 0.0000028095, + 0.0000028195, 0.0000028272, 0.0000028345, 0.0000028394, 0.0000028400, + 0.0000028388, 0.0000028382, 0.0000028360, 0.0000028307, 0.0000028254, + 0.0000028218, 0.0000028195, 0.0000028172, 0.0000028144, 0.0000028118, + 0.0000028083, 0.0000028024, 0.0000027947, 0.0000027856, 0.0000027759, + 0.0000027677, 0.0000027621, 0.0000027599, 0.0000027597, 0.0000027630, + 0.0000027613, 0.0000027620, 0.0000027650, 0.0000027687, 0.0000027714, + 0.0000027735, 0.0000027750, 0.0000027759, 0.0000027760, 0.0000027756, + 0.0000027755, 0.0000027763, 0.0000027796, 0.0000027865, 0.0000027944, + 0.0000027990, 0.0000027986, 0.0000027940, 0.0000027863, 0.0000027771, + 0.0000027666, 0.0000027566, 0.0000027515, 0.0000027539, 0.0000027637, + 0.0000027772, 0.0000027917, 0.0000028051, 0.0000028148, 0.0000028188, + 0.0000028179, 0.0000028131, 0.0000028075, 0.0000028044, 0.0000028058, + 0.0000028102, 0.0000028152, 0.0000028170, 0.0000028157, 0.0000028123, + 0.0000028077, 0.0000028050, 0.0000028068, 0.0000028110, 0.0000028131, + 0.0000028121, 0.0000028070, 0.0000027992, 0.0000027938, 0.0000027942, + 0.0000027985, 0.0000028032, 0.0000028068, 0.0000028092, 0.0000028105, + 0.0000028108, 0.0000028062, 0.0000027941, 0.0000027764, 0.0000027574, + 0.0000027416, 0.0000027316, 0.0000027282, 0.0000027301, 0.0000027389, + 0.0000027514, 0.0000027626, 0.0000027680, 0.0000027666, 0.0000027588, + 0.0000027492, 0.0000027418, 0.0000027386, 0.0000027384, 0.0000027321, + 0.0000027124, 0.0000026882, 0.0000026776, 0.0000026824, 0.0000027066, + 0.0000027232, 0.0000027100, 0.0000026957, 0.0000027097, 0.0000027366, + 0.0000027531, 0.0000027552, 0.0000027543, 0.0000027571, 0.0000027569, + 0.0000027556, 0.0000027552, 0.0000027549, 0.0000027577, 0.0000027653, + 0.0000027725, 0.0000027767, 0.0000027805, 0.0000027846, 0.0000027879, + 0.0000027884, 0.0000027829, 0.0000027717, 0.0000027567, 0.0000027421, + 0.0000027325, 0.0000027304, 0.0000027356, 0.0000027472, 0.0000027596, + 0.0000027666, 0.0000027639, 0.0000027533, 0.0000027478, 0.0000027524, + 0.0000027574, 0.0000027607, 0.0000027617, 0.0000027583, 0.0000027505, + 0.0000027441, 0.0000027404, 0.0000027323, 0.0000027215, 0.0000027155, + 0.0000027142, 0.0000027161, 0.0000027183, 0.0000027198, 0.0000027177, + 0.0000027086, 0.0000026949, 0.0000026837, 0.0000026777, 0.0000026764, + 0.0000026803, 0.0000026885, 0.0000026978, 0.0000027061, 0.0000027141, + 0.0000027222, 0.0000027309, 0.0000027443, 0.0000027636, 0.0000027817, + 0.0000027939, 0.0000027970, 0.0000027909, 0.0000027756, 0.0000027559, + 0.0000027514, 0.0000027654, 0.0000027823, 0.0000027929, 0.0000028043, + 0.0000028153, 0.0000028211, 0.0000028213, 0.0000028174, 0.0000028137, + 0.0000028140, 0.0000028171, 0.0000028187, 0.0000028187, 0.0000028228, + 0.0000028299, 0.0000028333, 0.0000028340, 0.0000028278, 0.0000028120, + 0.0000027962, 0.0000027871, 0.0000027787, 0.0000027680, 0.0000027588, + 0.0000027536, 0.0000027500, 0.0000027450, 0.0000027347, 0.0000027190, + 0.0000027079, 0.0000027077, 0.0000027116, 0.0000027158, 0.0000027189, + 0.0000027214, 0.0000027226, 0.0000027238, 0.0000027255, 0.0000027309, + 0.0000027383, 0.0000027466, 0.0000027540, 0.0000027567, 0.0000027560, + 0.0000027539, 0.0000027519, 0.0000027508, 0.0000027508, 0.0000027508, + 0.0000027498, 0.0000027476, 0.0000027461, 0.0000027469, 0.0000027506, + 0.0000027556, 0.0000027604, 0.0000027637, 0.0000027661, 0.0000027707, + 0.0000027768, 0.0000027799, 0.0000027765, 0.0000027679, 0.0000027629, + 0.0000027673, 0.0000027787, 0.0000027869, 0.0000027858, 0.0000027771, + 0.0000027684, 0.0000027678, 0.0000027741, 0.0000027798, 0.0000027808, + 0.0000027796, 0.0000027800, 0.0000027821, 0.0000027846, 0.0000027871, + 0.0000027907, 0.0000027941, 0.0000027954, 0.0000027947, 0.0000027918, + 0.0000027875, 0.0000027835, 0.0000027808, 0.0000027782, 0.0000027749, + 0.0000027707, 0.0000027657, 0.0000027602, 0.0000027546, 0.0000027513, + 0.0000027487, 0.0000027469, 0.0000027442, 0.0000027402, 0.0000027359, + 0.0000027307, 0.0000027239, 0.0000027170, 0.0000027106, 0.0000027038, + 0.0000026971, 0.0000026903, 0.0000026839, 0.0000026787, 0.0000026744, + 0.0000026713, 0.0000026701, 0.0000026718, 0.0000026762, 0.0000026817, + 0.0000026859, 0.0000026883, 0.0000026906, 0.0000026941, 0.0000026982, + 0.0000027016, 0.0000027032, 0.0000027037, 0.0000027039, 0.0000027021, + 0.0000026998, 0.0000026982, 0.0000027005, 0.0000027048, 0.0000027050, + 0.0000026991, 0.0000026895, 0.0000026815, 0.0000026789, 0.0000026794, + 0.0000026812, 0.0000026833, 0.0000026861, 0.0000026909, 0.0000026973, + 0.0000027058, 0.0000027162, 0.0000027256, 0.0000027319, 0.0000027345, + 0.0000027340, 0.0000027300, 0.0000027226, 0.0000027131, 0.0000027024, + 0.0000026908, 0.0000026800, 0.0000026722, 0.0000026695, 0.0000026694, + 0.0000026701, 0.0000026728, 0.0000026797, 0.0000026923, 0.0000027054, + 0.0000027155, 0.0000027213, 0.0000027242, 0.0000027259, 0.0000027268, + 0.0000027272, 0.0000027261, 0.0000027223, 0.0000027137, 0.0000027016, + 0.0000026909, 0.0000026849, 0.0000026827, 0.0000026820, 0.0000026821, + 0.0000026856, 0.0000026950, 0.0000027132, 0.0000027368, 0.0000027542, + 0.0000027641, 0.0000027682, 0.0000027642, 0.0000027561, 0.0000027575, + 0.0000027623, 0.0000027561, 0.0000027401, 0.0000027256, 0.0000027226, + 0.0000027410, 0.0000027696, 0.0000027775, 0.0000027802, 0.0000027937, + 0.0000028006, 0.0000027946, 0.0000027884, 0.0000027892, 0.0000027962, + 0.0000028067, 0.0000028165, 0.0000028226, 0.0000028257, 0.0000028265, + 0.0000028250, 0.0000028246, 0.0000028213, 0.0000028128, 0.0000028027, + 0.0000027938, 0.0000027863, 0.0000027825, 0.0000027829, 0.0000027883, + 0.0000027961, 0.0000028047, 0.0000028110, 0.0000028115, 0.0000028096, + 0.0000028050, 0.0000028037, 0.0000028059, 0.0000028099, 0.0000028153, + 0.0000028214, 0.0000028249, 0.0000028249, 0.0000028213, 0.0000028186, + 0.0000028190, 0.0000028205, 0.0000028185, 0.0000028111, 0.0000027995, + 0.0000027877, 0.0000027769, 0.0000027677, 0.0000027618, 0.0000027619, + 0.0000027694, 0.0000027767, 0.0000027775, 0.0000027769, 0.0000027812, + 0.0000027814, 0.0000027759, 0.0000027662, 0.0000027568, 0.0000027532, + 0.0000027534, 0.0000027557, 0.0000027583, 0.0000027614, 0.0000027651, + 0.0000027672, 0.0000027662, 0.0000027600, 0.0000027528, 0.0000027494, + 0.0000027492, 0.0000027498, 0.0000027520, 0.0000027563, 0.0000027625, + 0.0000027689, 0.0000027737, 0.0000027772, 0.0000027816, 0.0000027878, + 0.0000027956, 0.0000028031, 0.0000028082, 0.0000028100, 0.0000028097, + 0.0000028097, 0.0000028125, 0.0000028189, 0.0000028262, 0.0000028296, + 0.0000028302, 0.0000028313, 0.0000028323, 0.0000028321, 0.0000028291, + 0.0000028228, 0.0000028157, 0.0000028121, 0.0000028129, 0.0000028154, + 0.0000028154, 0.0000028137, 0.0000028132, 0.0000028182, 0.0000028229, + 0.0000028215, 0.0000028172, 0.0000028109, 0.0000028097, 0.0000028171, + 0.0000028262, 0.0000028327, 0.0000028408, 0.0000028452, 0.0000028460, + 0.0000028461, 0.0000028448, 0.0000028414, 0.0000028362, 0.0000028296, + 0.0000028237, 0.0000028190, 0.0000028152, 0.0000028116, 0.0000028086, + 0.0000028066, 0.0000028034, 0.0000027986, 0.0000027949, 0.0000027900, + 0.0000027834, 0.0000027768, 0.0000027712, 0.0000027675, 0.0000027652, + 0.0000027709, 0.0000027658, 0.0000027627, 0.0000027630, 0.0000027652, + 0.0000027675, 0.0000027701, 0.0000027727, 0.0000027735, 0.0000027722, + 0.0000027696, 0.0000027683, 0.0000027694, 0.0000027746, 0.0000027847, + 0.0000027961, 0.0000028035, 0.0000028042, 0.0000028019, 0.0000027981, + 0.0000027916, 0.0000027804, 0.0000027661, 0.0000027556, 0.0000027537, + 0.0000027610, 0.0000027736, 0.0000027881, 0.0000028033, 0.0000028159, + 0.0000028229, 0.0000028235, 0.0000028180, 0.0000028086, 0.0000027995, + 0.0000027946, 0.0000027960, 0.0000028009, 0.0000028058, 0.0000028087, + 0.0000028092, 0.0000028072, 0.0000028046, 0.0000028051, 0.0000028097, + 0.0000028150, 0.0000028175, 0.0000028166, 0.0000028099, 0.0000028015, + 0.0000027978, 0.0000027986, 0.0000028017, 0.0000028043, 0.0000028062, + 0.0000028082, 0.0000028102, 0.0000028103, 0.0000028051, 0.0000027938, + 0.0000027785, 0.0000027611, 0.0000027451, 0.0000027345, 0.0000027322, + 0.0000027380, 0.0000027499, 0.0000027604, 0.0000027633, 0.0000027592, + 0.0000027505, 0.0000027417, 0.0000027369, 0.0000027378, 0.0000027409, + 0.0000027353, 0.0000027133, 0.0000026891, 0.0000026778, 0.0000026816, + 0.0000027014, 0.0000027228, 0.0000027154, 0.0000026931, 0.0000026994, + 0.0000027268, 0.0000027487, 0.0000027552, 0.0000027548, 0.0000027563, + 0.0000027564, 0.0000027539, 0.0000027535, 0.0000027551, 0.0000027597, + 0.0000027686, 0.0000027765, 0.0000027800, 0.0000027828, 0.0000027889, + 0.0000027958, 0.0000027994, 0.0000027976, 0.0000027892, 0.0000027753, + 0.0000027585, 0.0000027426, 0.0000027330, 0.0000027330, 0.0000027421, + 0.0000027571, 0.0000027706, 0.0000027737, 0.0000027642, 0.0000027500, + 0.0000027480, 0.0000027537, 0.0000027605, 0.0000027662, 0.0000027665, + 0.0000027590, 0.0000027501, 0.0000027462, 0.0000027427, 0.0000027326, + 0.0000027212, 0.0000027136, 0.0000027108, 0.0000027130, 0.0000027169, + 0.0000027202, 0.0000027175, 0.0000027059, 0.0000026914, 0.0000026818, + 0.0000026781, 0.0000026785, 0.0000026847, 0.0000026946, 0.0000027044, + 0.0000027119, 0.0000027182, 0.0000027231, 0.0000027285, 0.0000027388, + 0.0000027583, 0.0000027781, 0.0000027914, 0.0000027964, 0.0000027919, + 0.0000027764, 0.0000027580, 0.0000027570, 0.0000027730, 0.0000027910, + 0.0000028054, 0.0000028196, 0.0000028312, 0.0000028359, 0.0000028354, + 0.0000028311, 0.0000028263, 0.0000028251, 0.0000028257, 0.0000028258, + 0.0000028248, 0.0000028266, 0.0000028309, 0.0000028331, 0.0000028335, + 0.0000028282, 0.0000028129, 0.0000027957, 0.0000027851, 0.0000027776, + 0.0000027687, 0.0000027614, 0.0000027565, 0.0000027542, 0.0000027485, + 0.0000027353, 0.0000027166, 0.0000027049, 0.0000027061, 0.0000027136, + 0.0000027200, 0.0000027236, 0.0000027235, 0.0000027212, 0.0000027187, + 0.0000027197, 0.0000027267, 0.0000027381, 0.0000027498, 0.0000027588, + 0.0000027620, 0.0000027609, 0.0000027580, 0.0000027556, 0.0000027547, + 0.0000027547, 0.0000027549, 0.0000027546, 0.0000027532, 0.0000027512, + 0.0000027503, 0.0000027520, 0.0000027559, 0.0000027604, 0.0000027647, + 0.0000027682, 0.0000027720, 0.0000027770, 0.0000027796, 0.0000027762, + 0.0000027653, 0.0000027582, 0.0000027609, 0.0000027718, 0.0000027817, + 0.0000027839, 0.0000027771, 0.0000027689, 0.0000027682, 0.0000027744, + 0.0000027793, 0.0000027788, 0.0000027759, 0.0000027756, 0.0000027785, + 0.0000027823, 0.0000027853, 0.0000027883, 0.0000027922, 0.0000027951, + 0.0000027957, 0.0000027940, 0.0000027900, 0.0000027846, 0.0000027796, + 0.0000027758, 0.0000027725, 0.0000027683, 0.0000027632, 0.0000027578, + 0.0000027535, 0.0000027512, 0.0000027504, 0.0000027504, 0.0000027500, + 0.0000027491, 0.0000027458, 0.0000027409, 0.0000027350, 0.0000027281, + 0.0000027218, 0.0000027163, 0.0000027103, 0.0000027042, 0.0000026978, + 0.0000026920, 0.0000026886, 0.0000026875, 0.0000026884, 0.0000026905, + 0.0000026938, 0.0000026980, 0.0000027011, 0.0000027018, 0.0000027000, + 0.0000026982, 0.0000026985, 0.0000027008, 0.0000027034, 0.0000027046, + 0.0000027042, 0.0000027030, 0.0000027019, 0.0000027004, 0.0000027007, + 0.0000027025, 0.0000027041, 0.0000027011, 0.0000026943, 0.0000026879, + 0.0000026834, 0.0000026809, 0.0000026798, 0.0000026804, 0.0000026833, + 0.0000026901, 0.0000026994, 0.0000027088, 0.0000027178, 0.0000027273, + 0.0000027361, 0.0000027417, 0.0000027431, 0.0000027415, 0.0000027377, + 0.0000027316, 0.0000027232, 0.0000027132, 0.0000027024, 0.0000026920, + 0.0000026842, 0.0000026804, 0.0000026791, 0.0000026781, 0.0000026770, + 0.0000026787, 0.0000026858, 0.0000026971, 0.0000027083, 0.0000027182, + 0.0000027256, 0.0000027298, 0.0000027311, 0.0000027301, 0.0000027275, + 0.0000027242, 0.0000027187, 0.0000027090, 0.0000026974, 0.0000026891, + 0.0000026853, 0.0000026843, 0.0000026831, 0.0000026840, 0.0000026895, + 0.0000027021, 0.0000027240, 0.0000027470, 0.0000027622, 0.0000027696, + 0.0000027689, 0.0000027609, 0.0000027569, 0.0000027634, 0.0000027669, + 0.0000027561, 0.0000027381, 0.0000027253, 0.0000027289, 0.0000027530, + 0.0000027734, 0.0000027780, 0.0000027869, 0.0000027998, 0.0000028001, + 0.0000027904, 0.0000027872, 0.0000027933, 0.0000028057, 0.0000028142, + 0.0000028190, 0.0000028212, 0.0000028218, 0.0000028214, 0.0000028208, + 0.0000028210, 0.0000028188, 0.0000028087, 0.0000027960, 0.0000027869, + 0.0000027834, 0.0000027845, 0.0000027879, 0.0000027927, 0.0000028002, + 0.0000028100, 0.0000028161, 0.0000028164, 0.0000028153, 0.0000028143, + 0.0000028155, 0.0000028187, 0.0000028223, 0.0000028256, 0.0000028267, + 0.0000028234, 0.0000028176, 0.0000028124, 0.0000028124, 0.0000028172, + 0.0000028216, 0.0000028220, 0.0000028166, 0.0000028069, 0.0000027962, + 0.0000027844, 0.0000027735, 0.0000027659, 0.0000027625, 0.0000027636, + 0.0000027736, 0.0000027820, 0.0000027821, 0.0000027824, 0.0000027847, + 0.0000027862, 0.0000027826, 0.0000027751, 0.0000027661, 0.0000027566, + 0.0000027506, 0.0000027504, 0.0000027540, 0.0000027602, 0.0000027645, + 0.0000027645, 0.0000027592, 0.0000027520, 0.0000027491, 0.0000027503, + 0.0000027530, 0.0000027554, 0.0000027587, 0.0000027641, 0.0000027702, + 0.0000027758, 0.0000027801, 0.0000027847, 0.0000027893, 0.0000027934, + 0.0000027974, 0.0000028019, 0.0000028082, 0.0000028148, 0.0000028215, + 0.0000028269, 0.0000028304, 0.0000028342, 0.0000028372, 0.0000028370, + 0.0000028345, 0.0000028304, 0.0000028253, 0.0000028206, 0.0000028174, + 0.0000028151, 0.0000028154, 0.0000028184, 0.0000028205, 0.0000028179, + 0.0000028127, 0.0000028126, 0.0000028196, 0.0000028239, 0.0000028232, + 0.0000028192, 0.0000028122, 0.0000028119, 0.0000028209, 0.0000028302, + 0.0000028355, 0.0000028418, 0.0000028466, 0.0000028484, 0.0000028503, + 0.0000028499, 0.0000028469, 0.0000028411, 0.0000028359, 0.0000028305, + 0.0000028246, 0.0000028183, 0.0000028127, 0.0000028083, 0.0000028042, + 0.0000028006, 0.0000027979, 0.0000027964, 0.0000027959, 0.0000027945, + 0.0000027911, 0.0000027868, 0.0000027819, 0.0000027781, 0.0000027751, + 0.0000027837, 0.0000027771, 0.0000027707, 0.0000027666, 0.0000027652, + 0.0000027655, 0.0000027674, 0.0000027705, 0.0000027720, 0.0000027706, + 0.0000027675, 0.0000027657, 0.0000027670, 0.0000027716, 0.0000027808, + 0.0000027928, 0.0000028025, 0.0000028063, 0.0000028073, 0.0000028074, + 0.0000028045, 0.0000027954, 0.0000027801, 0.0000027638, 0.0000027554, + 0.0000027576, 0.0000027668, 0.0000027793, 0.0000027939, 0.0000028091, + 0.0000028207, 0.0000028241, 0.0000028214, 0.0000028120, 0.0000028000, + 0.0000027893, 0.0000027840, 0.0000027853, 0.0000027895, 0.0000027942, + 0.0000027986, 0.0000028001, 0.0000027994, 0.0000027989, 0.0000028018, + 0.0000028087, 0.0000028154, 0.0000028184, 0.0000028171, 0.0000028114, + 0.0000028057, 0.0000028036, 0.0000028034, 0.0000028035, 0.0000028037, + 0.0000028041, 0.0000028053, 0.0000028061, 0.0000028043, 0.0000027985, + 0.0000027912, 0.0000027826, 0.0000027700, 0.0000027550, 0.0000027452, + 0.0000027448, 0.0000027515, 0.0000027587, 0.0000027585, 0.0000027502, + 0.0000027393, 0.0000027323, 0.0000027317, 0.0000027379, 0.0000027454, + 0.0000027403, 0.0000027161, 0.0000026909, 0.0000026803, 0.0000026830, + 0.0000026992, 0.0000027208, 0.0000027189, 0.0000026957, 0.0000026914, + 0.0000027159, 0.0000027424, 0.0000027544, 0.0000027548, 0.0000027551, + 0.0000027560, 0.0000027528, 0.0000027511, 0.0000027536, 0.0000027598, + 0.0000027696, 0.0000027779, 0.0000027811, 0.0000027829, 0.0000027882, + 0.0000027973, 0.0000028047, 0.0000028067, 0.0000028017, 0.0000027904, + 0.0000027759, 0.0000027596, 0.0000027446, 0.0000027369, 0.0000027386, + 0.0000027507, 0.0000027684, 0.0000027809, 0.0000027783, 0.0000027623, + 0.0000027484, 0.0000027494, 0.0000027574, 0.0000027670, 0.0000027721, + 0.0000027689, 0.0000027574, 0.0000027498, 0.0000027483, 0.0000027443, + 0.0000027341, 0.0000027226, 0.0000027129, 0.0000027091, 0.0000027113, + 0.0000027166, 0.0000027200, 0.0000027173, 0.0000027051, 0.0000026917, + 0.0000026830, 0.0000026799, 0.0000026825, 0.0000026917, 0.0000027035, + 0.0000027136, 0.0000027203, 0.0000027243, 0.0000027261, 0.0000027283, + 0.0000027355, 0.0000027535, 0.0000027751, 0.0000027901, 0.0000027961, + 0.0000027935, 0.0000027794, 0.0000027636, 0.0000027658, 0.0000027833, + 0.0000028026, 0.0000028203, 0.0000028347, 0.0000028446, 0.0000028482, + 0.0000028476, 0.0000028428, 0.0000028369, 0.0000028334, 0.0000028316, + 0.0000028301, 0.0000028289, 0.0000028301, 0.0000028329, 0.0000028340, + 0.0000028338, 0.0000028287, 0.0000028138, 0.0000027948, 0.0000027820, + 0.0000027756, 0.0000027700, 0.0000027647, 0.0000027617, 0.0000027593, + 0.0000027529, 0.0000027369, 0.0000027159, 0.0000027054, 0.0000027061, + 0.0000027164, 0.0000027244, 0.0000027269, 0.0000027244, 0.0000027189, + 0.0000027150, 0.0000027171, 0.0000027260, 0.0000027399, 0.0000027538, + 0.0000027643, 0.0000027692, 0.0000027691, 0.0000027666, 0.0000027641, + 0.0000027631, 0.0000027630, 0.0000027625, 0.0000027614, 0.0000027597, + 0.0000027571, 0.0000027550, 0.0000027554, 0.0000027586, 0.0000027621, + 0.0000027656, 0.0000027696, 0.0000027740, 0.0000027774, 0.0000027779, + 0.0000027722, 0.0000027608, 0.0000027531, 0.0000027557, 0.0000027652, + 0.0000027764, 0.0000027808, 0.0000027759, 0.0000027676, 0.0000027673, + 0.0000027751, 0.0000027810, 0.0000027797, 0.0000027748, 0.0000027723, + 0.0000027737, 0.0000027772, 0.0000027810, 0.0000027847, 0.0000027891, + 0.0000027936, 0.0000027958, 0.0000027951, 0.0000027919, 0.0000027862, + 0.0000027792, 0.0000027725, 0.0000027670, 0.0000027624, 0.0000027574, + 0.0000027517, 0.0000027466, 0.0000027433, 0.0000027424, 0.0000027434, + 0.0000027455, 0.0000027471, 0.0000027482, 0.0000027469, 0.0000027423, + 0.0000027372, 0.0000027309, 0.0000027247, 0.0000027186, 0.0000027122, + 0.0000027065, 0.0000027014, 0.0000026975, 0.0000026964, 0.0000026987, + 0.0000027026, 0.0000027061, 0.0000027085, 0.0000027100, 0.0000027102, + 0.0000027080, 0.0000027038, 0.0000027005, 0.0000026996, 0.0000027016, + 0.0000027046, 0.0000027065, 0.0000027071, 0.0000027063, 0.0000027048, + 0.0000027040, 0.0000027026, 0.0000027012, 0.0000026996, 0.0000026960, + 0.0000026917, 0.0000026891, 0.0000026869, 0.0000026836, 0.0000026805, + 0.0000026810, 0.0000026872, 0.0000026980, 0.0000027092, 0.0000027185, + 0.0000027254, 0.0000027321, 0.0000027394, 0.0000027453, 0.0000027472, + 0.0000027461, 0.0000027430, 0.0000027387, 0.0000027324, 0.0000027240, + 0.0000027143, 0.0000027044, 0.0000026963, 0.0000026923, 0.0000026914, + 0.0000026910, 0.0000026900, 0.0000026896, 0.0000026913, 0.0000026965, + 0.0000027044, 0.0000027132, 0.0000027222, 0.0000027295, 0.0000027339, + 0.0000027349, 0.0000027322, 0.0000027268, 0.0000027202, 0.0000027121, + 0.0000027022, 0.0000026937, 0.0000026895, 0.0000026872, 0.0000026841, + 0.0000026831, 0.0000026869, 0.0000026966, 0.0000027154, 0.0000027395, + 0.0000027590, 0.0000027703, 0.0000027722, 0.0000027648, 0.0000027561, + 0.0000027597, 0.0000027705, 0.0000027697, 0.0000027545, 0.0000027361, + 0.0000027268, 0.0000027372, 0.0000027623, 0.0000027753, 0.0000027811, + 0.0000027943, 0.0000028022, 0.0000027982, 0.0000027891, 0.0000027894, + 0.0000028018, 0.0000028129, 0.0000028168, 0.0000028185, 0.0000028188, + 0.0000028175, 0.0000028162, 0.0000028165, 0.0000028170, 0.0000028147, + 0.0000028049, 0.0000027930, 0.0000027869, 0.0000027882, 0.0000027925, + 0.0000027953, 0.0000027983, 0.0000028041, 0.0000028137, 0.0000028208, + 0.0000028238, 0.0000028246, 0.0000028253, 0.0000028264, 0.0000028274, + 0.0000028272, 0.0000028261, 0.0000028218, 0.0000028151, 0.0000028105, + 0.0000028085, 0.0000028097, 0.0000028162, 0.0000028228, 0.0000028258, + 0.0000028229, 0.0000028156, 0.0000028060, 0.0000027955, 0.0000027842, + 0.0000027744, 0.0000027682, 0.0000027650, 0.0000027672, 0.0000027780, + 0.0000027863, 0.0000027876, 0.0000027875, 0.0000027896, 0.0000027917, + 0.0000027893, 0.0000027828, 0.0000027744, 0.0000027633, 0.0000027525, + 0.0000027500, 0.0000027543, 0.0000027605, 0.0000027623, 0.0000027594, + 0.0000027537, 0.0000027505, 0.0000027519, 0.0000027551, 0.0000027590, + 0.0000027635, 0.0000027684, 0.0000027744, 0.0000027794, 0.0000027831, + 0.0000027858, 0.0000027888, 0.0000027918, 0.0000027948, 0.0000027996, + 0.0000028083, 0.0000028208, 0.0000028323, 0.0000028392, 0.0000028421, + 0.0000028424, 0.0000028408, 0.0000028361, 0.0000028282, 0.0000028216, + 0.0000028184, 0.0000028173, 0.0000028182, 0.0000028203, 0.0000028228, + 0.0000028246, 0.0000028237, 0.0000028190, 0.0000028130, 0.0000028131, + 0.0000028203, 0.0000028238, 0.0000028237, 0.0000028193, 0.0000028123, + 0.0000028127, 0.0000028210, 0.0000028285, 0.0000028338, 0.0000028393, + 0.0000028430, 0.0000028472, 0.0000028512, 0.0000028528, 0.0000028507, + 0.0000028472, 0.0000028417, 0.0000028365, 0.0000028309, 0.0000028247, + 0.0000028176, 0.0000028109, 0.0000028053, 0.0000027997, 0.0000027953, + 0.0000027936, 0.0000027953, 0.0000027979, 0.0000027990, 0.0000027980, + 0.0000027961, 0.0000027936, 0.0000027910, 0.0000027883, 0.0000027957, + 0.0000027894, 0.0000027823, 0.0000027763, 0.0000027723, 0.0000027703, + 0.0000027699, 0.0000027711, 0.0000027726, 0.0000027720, 0.0000027697, + 0.0000027680, 0.0000027680, 0.0000027703, 0.0000027751, 0.0000027841, + 0.0000027950, 0.0000028031, 0.0000028077, 0.0000028102, 0.0000028107, + 0.0000028065, 0.0000027948, 0.0000027784, 0.0000027647, 0.0000027607, + 0.0000027639, 0.0000027727, 0.0000027843, 0.0000027994, 0.0000028143, + 0.0000028230, 0.0000028242, 0.0000028188, 0.0000028080, 0.0000027951, + 0.0000027847, 0.0000027813, 0.0000027828, 0.0000027870, 0.0000027925, + 0.0000027961, 0.0000027964, 0.0000027947, 0.0000027942, 0.0000027971, + 0.0000028037, 0.0000028101, 0.0000028132, 0.0000028129, 0.0000028113, + 0.0000028111, 0.0000028106, 0.0000028074, 0.0000028032, 0.0000028009, + 0.0000028009, 0.0000028010, 0.0000027994, 0.0000027956, 0.0000027932, + 0.0000027924, 0.0000027886, 0.0000027787, 0.0000027677, 0.0000027633, + 0.0000027640, 0.0000027649, 0.0000027592, 0.0000027478, 0.0000027362, + 0.0000027301, 0.0000027310, 0.0000027400, 0.0000027490, 0.0000027438, + 0.0000027199, 0.0000026964, 0.0000026860, 0.0000026873, 0.0000026995, + 0.0000027205, 0.0000027239, 0.0000027005, 0.0000026883, 0.0000027053, + 0.0000027342, 0.0000027515, 0.0000027537, 0.0000027531, 0.0000027545, + 0.0000027526, 0.0000027487, 0.0000027501, 0.0000027573, 0.0000027681, + 0.0000027778, 0.0000027814, 0.0000027819, 0.0000027855, 0.0000027939, + 0.0000028033, 0.0000028086, 0.0000028082, 0.0000028005, 0.0000027880, + 0.0000027745, 0.0000027609, 0.0000027480, 0.0000027416, 0.0000027452, + 0.0000027609, 0.0000027798, 0.0000027879, 0.0000027802, 0.0000027609, + 0.0000027501, 0.0000027519, 0.0000027628, 0.0000027739, 0.0000027764, + 0.0000027684, 0.0000027556, 0.0000027498, 0.0000027505, 0.0000027468, + 0.0000027371, 0.0000027262, 0.0000027159, 0.0000027117, 0.0000027129, + 0.0000027183, 0.0000027211, 0.0000027172, 0.0000027064, 0.0000026954, + 0.0000026870, 0.0000026835, 0.0000026875, 0.0000026977, 0.0000027101, + 0.0000027212, 0.0000027285, 0.0000027313, 0.0000027311, 0.0000027310, + 0.0000027348, 0.0000027496, 0.0000027714, 0.0000027881, 0.0000027968, + 0.0000027958, 0.0000027829, 0.0000027699, 0.0000027748, 0.0000027941, + 0.0000028154, 0.0000028342, 0.0000028472, 0.0000028548, 0.0000028577, + 0.0000028568, 0.0000028517, 0.0000028448, 0.0000028393, 0.0000028358, + 0.0000028334, 0.0000028327, 0.0000028340, 0.0000028367, 0.0000028374, + 0.0000028361, 0.0000028300, 0.0000028144, 0.0000027935, 0.0000027783, + 0.0000027729, 0.0000027715, 0.0000027691, 0.0000027680, 0.0000027652, + 0.0000027568, 0.0000027393, 0.0000027172, 0.0000027067, 0.0000027087, + 0.0000027201, 0.0000027282, 0.0000027292, 0.0000027249, 0.0000027195, + 0.0000027163, 0.0000027189, 0.0000027283, 0.0000027430, 0.0000027587, + 0.0000027719, 0.0000027799, 0.0000027824, 0.0000027811, 0.0000027775, + 0.0000027750, 0.0000027735, 0.0000027710, 0.0000027676, 0.0000027633, + 0.0000027601, 0.0000027579, 0.0000027588, 0.0000027626, 0.0000027659, + 0.0000027675, 0.0000027695, 0.0000027730, 0.0000027760, 0.0000027746, + 0.0000027660, 0.0000027540, 0.0000027476, 0.0000027510, 0.0000027608, + 0.0000027716, 0.0000027764, 0.0000027735, 0.0000027654, 0.0000027649, + 0.0000027732, 0.0000027820, 0.0000027823, 0.0000027776, 0.0000027722, + 0.0000027704, 0.0000027711, 0.0000027744, 0.0000027801, 0.0000027865, + 0.0000027933, 0.0000027974, 0.0000027971, 0.0000027934, 0.0000027859, + 0.0000027767, 0.0000027676, 0.0000027599, 0.0000027541, 0.0000027497, + 0.0000027455, 0.0000027408, 0.0000027367, 0.0000027345, 0.0000027343, + 0.0000027355, 0.0000027380, 0.0000027405, 0.0000027418, 0.0000027420, + 0.0000027395, 0.0000027357, 0.0000027306, 0.0000027246, 0.0000027184, + 0.0000027116, 0.0000027062, 0.0000027023, 0.0000027005, 0.0000027011, + 0.0000027051, 0.0000027103, 0.0000027129, 0.0000027123, 0.0000027123, + 0.0000027112, 0.0000027085, 0.0000027045, 0.0000027011, 0.0000027001, + 0.0000027018, 0.0000027056, 0.0000027091, 0.0000027112, 0.0000027115, + 0.0000027098, 0.0000027071, 0.0000027043, 0.0000027012, 0.0000026978, + 0.0000026946, 0.0000026922, 0.0000026914, 0.0000026899, 0.0000026862, + 0.0000026833, 0.0000026862, 0.0000026950, 0.0000027063, 0.0000027155, + 0.0000027224, 0.0000027279, 0.0000027331, 0.0000027394, 0.0000027464, + 0.0000027512, 0.0000027525, 0.0000027518, 0.0000027496, 0.0000027453, + 0.0000027382, 0.0000027293, 0.0000027197, 0.0000027112, 0.0000027058, + 0.0000027033, 0.0000027021, 0.0000027016, 0.0000027014, 0.0000027024, + 0.0000027048, 0.0000027091, 0.0000027150, 0.0000027215, 0.0000027273, + 0.0000027317, 0.0000027346, 0.0000027348, 0.0000027306, 0.0000027230, + 0.0000027147, 0.0000027055, 0.0000026969, 0.0000026922, 0.0000026887, + 0.0000026847, 0.0000026828, 0.0000026858, 0.0000026933, 0.0000027102, + 0.0000027349, 0.0000027574, 0.0000027698, 0.0000027720, 0.0000027669, + 0.0000027567, 0.0000027545, 0.0000027664, 0.0000027756, 0.0000027689, + 0.0000027502, 0.0000027330, 0.0000027299, 0.0000027471, 0.0000027675, + 0.0000027775, 0.0000027888, 0.0000028005, 0.0000028026, 0.0000027968, + 0.0000027912, 0.0000027980, 0.0000028093, 0.0000028149, 0.0000028171, + 0.0000028183, 0.0000028170, 0.0000028138, 0.0000028117, 0.0000028123, + 0.0000028134, 0.0000028118, 0.0000028044, 0.0000027954, 0.0000027922, + 0.0000027951, 0.0000027979, 0.0000027978, 0.0000027987, 0.0000028028, + 0.0000028101, 0.0000028173, 0.0000028210, 0.0000028222, 0.0000028220, + 0.0000028218, 0.0000028214, 0.0000028201, 0.0000028175, 0.0000028134, + 0.0000028099, 0.0000028069, 0.0000028063, 0.0000028102, 0.0000028188, + 0.0000028272, 0.0000028299, 0.0000028281, 0.0000028218, 0.0000028141, + 0.0000028055, 0.0000027967, 0.0000027880, 0.0000027782, 0.0000027701, + 0.0000027669, 0.0000027697, 0.0000027814, 0.0000027911, 0.0000027929, + 0.0000027937, 0.0000027974, 0.0000027988, 0.0000027958, 0.0000027892, + 0.0000027806, 0.0000027693, 0.0000027589, 0.0000027557, 0.0000027590, + 0.0000027623, 0.0000027616, 0.0000027579, 0.0000027560, 0.0000027575, + 0.0000027616, 0.0000027663, 0.0000027713, 0.0000027767, 0.0000027815, + 0.0000027854, 0.0000027883, 0.0000027899, 0.0000027911, 0.0000027934, + 0.0000027971, 0.0000028035, 0.0000028136, 0.0000028253, 0.0000028367, + 0.0000028444, 0.0000028474, 0.0000028462, 0.0000028406, 0.0000028328, + 0.0000028261, 0.0000028221, 0.0000028209, 0.0000028221, 0.0000028251, + 0.0000028285, 0.0000028288, 0.0000028275, 0.0000028235, 0.0000028184, + 0.0000028150, 0.0000028168, 0.0000028221, 0.0000028242, 0.0000028237, + 0.0000028188, 0.0000028105, 0.0000028107, 0.0000028181, 0.0000028253, + 0.0000028290, 0.0000028334, 0.0000028364, 0.0000028405, 0.0000028477, + 0.0000028522, 0.0000028530, 0.0000028513, 0.0000028479, 0.0000028423, + 0.0000028362, 0.0000028296, 0.0000028225, 0.0000028150, 0.0000028083, + 0.0000028018, 0.0000027957, 0.0000027917, 0.0000027912, 0.0000027941, + 0.0000027985, 0.0000028019, 0.0000028031, 0.0000028032, 0.0000028031, + 0.0000028022, 0.0000027999, 0.0000028025, 0.0000027977, 0.0000027923, + 0.0000027871, 0.0000027826, 0.0000027795, 0.0000027780, 0.0000027775, + 0.0000027775, 0.0000027771, 0.0000027759, 0.0000027744, 0.0000027734, + 0.0000027728, 0.0000027727, 0.0000027750, 0.0000027824, 0.0000027923, + 0.0000028007, 0.0000028062, 0.0000028094, 0.0000028090, 0.0000028030, + 0.0000027918, 0.0000027787, 0.0000027702, 0.0000027688, 0.0000027727, + 0.0000027815, 0.0000027942, 0.0000028085, 0.0000028202, 0.0000028258, + 0.0000028244, 0.0000028167, 0.0000028053, 0.0000027931, 0.0000027860, + 0.0000027845, 0.0000027864, 0.0000027926, 0.0000027985, 0.0000028007, + 0.0000027989, 0.0000027955, 0.0000027939, 0.0000027953, 0.0000027998, + 0.0000028044, 0.0000028064, 0.0000028078, 0.0000028115, 0.0000028155, + 0.0000028153, 0.0000028087, 0.0000028008, 0.0000027967, 0.0000027960, + 0.0000027949, 0.0000027932, 0.0000027931, 0.0000027947, 0.0000027953, + 0.0000027916, 0.0000027845, 0.0000027790, 0.0000027772, 0.0000027738, + 0.0000027646, 0.0000027514, 0.0000027403, 0.0000027342, 0.0000027345, + 0.0000027427, 0.0000027492, 0.0000027441, 0.0000027231, 0.0000027031, + 0.0000026939, 0.0000026939, 0.0000027020, 0.0000027193, 0.0000027246, + 0.0000027047, 0.0000026872, 0.0000026955, 0.0000027248, 0.0000027472, + 0.0000027529, 0.0000027507, 0.0000027511, 0.0000027517, 0.0000027474, + 0.0000027458, 0.0000027523, 0.0000027643, 0.0000027762, 0.0000027824, + 0.0000027826, 0.0000027839, 0.0000027894, 0.0000027987, 0.0000028062, + 0.0000028093, 0.0000028058, 0.0000027965, 0.0000027854, 0.0000027744, + 0.0000027631, 0.0000027516, 0.0000027464, 0.0000027533, 0.0000027721, + 0.0000027891, 0.0000027923, 0.0000027807, 0.0000027609, 0.0000027526, + 0.0000027561, 0.0000027688, 0.0000027785, 0.0000027777, 0.0000027660, + 0.0000027520, 0.0000027480, 0.0000027517, 0.0000027499, 0.0000027420, + 0.0000027336, 0.0000027255, 0.0000027181, 0.0000027165, 0.0000027189, + 0.0000027201, 0.0000027164, 0.0000027098, 0.0000027019, 0.0000026939, + 0.0000026901, 0.0000026922, 0.0000027013, 0.0000027141, 0.0000027264, + 0.0000027350, 0.0000027379, 0.0000027378, 0.0000027372, 0.0000027383, + 0.0000027480, 0.0000027678, 0.0000027860, 0.0000027967, 0.0000027978, + 0.0000027866, 0.0000027758, 0.0000027840, 0.0000028041, 0.0000028269, + 0.0000028459, 0.0000028576, 0.0000028637, 0.0000028662, 0.0000028656, + 0.0000028608, 0.0000028536, 0.0000028472, 0.0000028423, 0.0000028397, + 0.0000028395, 0.0000028411, 0.0000028434, 0.0000028434, 0.0000028405, + 0.0000028317, 0.0000028143, 0.0000027914, 0.0000027743, 0.0000027702, + 0.0000027722, 0.0000027737, 0.0000027740, 0.0000027703, 0.0000027604, + 0.0000027430, 0.0000027223, 0.0000027109, 0.0000027130, 0.0000027245, + 0.0000027320, 0.0000027320, 0.0000027277, 0.0000027228, 0.0000027205, + 0.0000027234, 0.0000027336, 0.0000027503, 0.0000027686, 0.0000027838, + 0.0000027937, 0.0000027972, 0.0000027950, 0.0000027893, 0.0000027840, + 0.0000027804, 0.0000027756, 0.0000027697, 0.0000027632, 0.0000027581, + 0.0000027568, 0.0000027598, 0.0000027656, 0.0000027698, 0.0000027703, + 0.0000027693, 0.0000027701, 0.0000027709, 0.0000027678, 0.0000027589, + 0.0000027475, 0.0000027422, 0.0000027469, 0.0000027576, 0.0000027682, + 0.0000027728, 0.0000027699, 0.0000027621, 0.0000027606, 0.0000027694, + 0.0000027800, 0.0000027833, 0.0000027808, 0.0000027752, 0.0000027703, + 0.0000027687, 0.0000027701, 0.0000027760, 0.0000027848, 0.0000027932, + 0.0000027981, 0.0000027981, 0.0000027930, 0.0000027836, 0.0000027723, + 0.0000027613, 0.0000027524, 0.0000027464, 0.0000027425, 0.0000027402, + 0.0000027379, 0.0000027344, 0.0000027313, 0.0000027299, 0.0000027300, + 0.0000027311, 0.0000027328, 0.0000027339, 0.0000027342, 0.0000027336, + 0.0000027321, 0.0000027296, 0.0000027260, 0.0000027206, 0.0000027143, + 0.0000027077, 0.0000027030, 0.0000027002, 0.0000026995, 0.0000027005, + 0.0000027046, 0.0000027092, 0.0000027107, 0.0000027094, 0.0000027076, + 0.0000027064, 0.0000027047, 0.0000027021, 0.0000026998, 0.0000026992, + 0.0000027013, 0.0000027064, 0.0000027118, 0.0000027153, 0.0000027160, + 0.0000027141, 0.0000027106, 0.0000027071, 0.0000027040, 0.0000027007, + 0.0000026967, 0.0000026940, 0.0000026928, 0.0000026919, 0.0000026903, + 0.0000026905, 0.0000026953, 0.0000027037, 0.0000027116, 0.0000027173, + 0.0000027225, 0.0000027281, 0.0000027332, 0.0000027388, 0.0000027468, + 0.0000027553, 0.0000027603, 0.0000027615, 0.0000027609, 0.0000027578, + 0.0000027515, 0.0000027426, 0.0000027328, 0.0000027238, 0.0000027181, + 0.0000027158, 0.0000027149, 0.0000027134, 0.0000027117, 0.0000027110, + 0.0000027125, 0.0000027155, 0.0000027203, 0.0000027251, 0.0000027280, + 0.0000027290, 0.0000027301, 0.0000027311, 0.0000027296, 0.0000027244, + 0.0000027177, 0.0000027092, 0.0000027000, 0.0000026940, 0.0000026893, + 0.0000026840, 0.0000026820, 0.0000026848, 0.0000026916, 0.0000027078, + 0.0000027331, 0.0000027576, 0.0000027710, 0.0000027729, 0.0000027682, + 0.0000027579, 0.0000027526, 0.0000027596, 0.0000027750, 0.0000027772, + 0.0000027636, 0.0000027450, 0.0000027315, 0.0000027369, 0.0000027567, + 0.0000027705, 0.0000027826, 0.0000027975, 0.0000028044, 0.0000028034, + 0.0000027971, 0.0000027967, 0.0000028055, 0.0000028118, 0.0000028148, + 0.0000028183, 0.0000028194, 0.0000028157, 0.0000028099, 0.0000028069, + 0.0000028080, 0.0000028101, 0.0000028102, 0.0000028063, 0.0000028001, + 0.0000027974, 0.0000027968, 0.0000027949, 0.0000027908, 0.0000027885, + 0.0000027884, 0.0000027914, 0.0000027962, 0.0000028005, 0.0000028038, + 0.0000028046, 0.0000028057, 0.0000028080, 0.0000028099, 0.0000028102, + 0.0000028086, 0.0000028067, 0.0000028060, 0.0000028093, 0.0000028157, + 0.0000028218, 0.0000028289, 0.0000028303, 0.0000028287, 0.0000028247, + 0.0000028192, 0.0000028127, 0.0000028069, 0.0000028010, 0.0000027924, + 0.0000027810, 0.0000027708, 0.0000027670, 0.0000027699, 0.0000027826, + 0.0000027934, 0.0000027969, 0.0000028007, 0.0000028059, 0.0000028058, + 0.0000028011, 0.0000027944, 0.0000027851, 0.0000027758, 0.0000027696, + 0.0000027674, 0.0000027674, 0.0000027664, 0.0000027648, 0.0000027652, + 0.0000027680, 0.0000027717, 0.0000027759, 0.0000027809, 0.0000027872, + 0.0000027934, 0.0000027970, 0.0000027994, 0.0000028018, 0.0000028035, + 0.0000028054, 0.0000028085, 0.0000028132, 0.0000028200, 0.0000028277, + 0.0000028350, 0.0000028409, 0.0000028445, 0.0000028458, 0.0000028439, + 0.0000028387, 0.0000028328, 0.0000028288, 0.0000028283, 0.0000028290, + 0.0000028301, 0.0000028307, 0.0000028293, 0.0000028255, 0.0000028202, + 0.0000028167, 0.0000028172, 0.0000028222, 0.0000028260, 0.0000028255, + 0.0000028241, 0.0000028176, 0.0000028076, 0.0000028067, 0.0000028129, + 0.0000028190, 0.0000028217, 0.0000028251, 0.0000028275, 0.0000028312, + 0.0000028392, 0.0000028475, 0.0000028521, 0.0000028533, 0.0000028521, + 0.0000028477, 0.0000028411, 0.0000028331, 0.0000028252, 0.0000028176, + 0.0000028108, 0.0000028053, 0.0000027997, 0.0000027940, 0.0000027900, + 0.0000027891, 0.0000027917, 0.0000027965, 0.0000028013, 0.0000028041, + 0.0000028056, 0.0000028068, 0.0000028072, 0.0000028059, 0.0000028039, + 0.0000028017, 0.0000027992, 0.0000027957, 0.0000027912, 0.0000027870, + 0.0000027849, 0.0000027847, 0.0000027851, 0.0000027857, 0.0000027863, + 0.0000027864, 0.0000027856, 0.0000027831, 0.0000027787, 0.0000027747, + 0.0000027756, 0.0000027803, 0.0000027878, 0.0000027947, 0.0000028002, + 0.0000028032, 0.0000028021, 0.0000027966, 0.0000027880, 0.0000027802, + 0.0000027776, 0.0000027791, 0.0000027849, 0.0000027944, 0.0000028058, + 0.0000028172, 0.0000028255, 0.0000028275, 0.0000028228, 0.0000028141, + 0.0000028040, 0.0000027962, 0.0000027931, 0.0000027946, 0.0000027997, + 0.0000028054, 0.0000028089, 0.0000028078, 0.0000028038, 0.0000027988, + 0.0000027954, 0.0000027969, 0.0000028003, 0.0000028028, 0.0000028045, + 0.0000028080, 0.0000028133, 0.0000028171, 0.0000028154, 0.0000028069, + 0.0000027962, 0.0000027907, 0.0000027901, 0.0000027916, 0.0000027940, + 0.0000027963, 0.0000027973, 0.0000027960, 0.0000027917, 0.0000027865, + 0.0000027826, 0.0000027772, 0.0000027673, 0.0000027553, 0.0000027456, + 0.0000027402, 0.0000027403, 0.0000027460, 0.0000027501, 0.0000027436, + 0.0000027266, 0.0000027105, 0.0000027018, 0.0000027012, 0.0000027074, + 0.0000027209, 0.0000027287, 0.0000027107, 0.0000026875, 0.0000026896, + 0.0000027143, 0.0000027403, 0.0000027510, 0.0000027485, 0.0000027461, + 0.0000027488, 0.0000027472, 0.0000027434, 0.0000027464, 0.0000027585, + 0.0000027730, 0.0000027827, 0.0000027845, 0.0000027840, 0.0000027873, + 0.0000027937, 0.0000028015, 0.0000028062, 0.0000028060, 0.0000028003, + 0.0000027925, 0.0000027845, 0.0000027763, 0.0000027664, 0.0000027561, + 0.0000027531, 0.0000027634, 0.0000027824, 0.0000027954, 0.0000027945, + 0.0000027806, 0.0000027634, 0.0000027574, 0.0000027623, 0.0000027739, + 0.0000027789, 0.0000027758, 0.0000027623, 0.0000027481, 0.0000027457, + 0.0000027517, 0.0000027527, 0.0000027472, 0.0000027418, 0.0000027339, + 0.0000027246, 0.0000027178, 0.0000027168, 0.0000027181, 0.0000027174, + 0.0000027148, 0.0000027107, 0.0000027037, 0.0000026982, 0.0000026983, + 0.0000027054, 0.0000027179, 0.0000027312, 0.0000027408, 0.0000027443, + 0.0000027459, 0.0000027466, 0.0000027465, 0.0000027507, 0.0000027663, + 0.0000027854, 0.0000027982, 0.0000028006, 0.0000027907, 0.0000027826, + 0.0000027925, 0.0000028129, 0.0000028367, 0.0000028559, 0.0000028675, + 0.0000028728, 0.0000028754, 0.0000028759, 0.0000028725, 0.0000028663, + 0.0000028599, 0.0000028540, 0.0000028508, 0.0000028511, 0.0000028521, + 0.0000028530, 0.0000028508, 0.0000028442, 0.0000028328, 0.0000028128, + 0.0000027884, 0.0000027707, 0.0000027688, 0.0000027735, 0.0000027784, + 0.0000027788, 0.0000027733, 0.0000027624, 0.0000027462, 0.0000027292, + 0.0000027186, 0.0000027199, 0.0000027297, 0.0000027367, 0.0000027365, + 0.0000027325, 0.0000027280, 0.0000027266, 0.0000027319, 0.0000027457, + 0.0000027653, 0.0000027847, 0.0000027979, 0.0000028043, 0.0000028061, + 0.0000028026, 0.0000027960, 0.0000027884, 0.0000027824, 0.0000027765, + 0.0000027685, 0.0000027597, 0.0000027536, 0.0000027534, 0.0000027588, + 0.0000027660, 0.0000027708, 0.0000027711, 0.0000027686, 0.0000027661, + 0.0000027641, 0.0000027596, 0.0000027517, 0.0000027438, 0.0000027407, + 0.0000027435, 0.0000027542, 0.0000027645, 0.0000027683, 0.0000027649, + 0.0000027578, 0.0000027567, 0.0000027651, 0.0000027763, 0.0000027814, + 0.0000027808, 0.0000027767, 0.0000027715, 0.0000027692, 0.0000027702, + 0.0000027764, 0.0000027853, 0.0000027927, 0.0000027962, 0.0000027948, + 0.0000027888, 0.0000027793, 0.0000027687, 0.0000027584, 0.0000027503, + 0.0000027461, 0.0000027428, 0.0000027410, 0.0000027401, 0.0000027384, + 0.0000027349, 0.0000027313, 0.0000027300, 0.0000027299, 0.0000027306, + 0.0000027315, 0.0000027301, 0.0000027283, 0.0000027264, 0.0000027246, + 0.0000027224, 0.0000027192, 0.0000027137, 0.0000027078, 0.0000027024, + 0.0000026986, 0.0000026964, 0.0000026954, 0.0000026960, 0.0000026988, + 0.0000027018, 0.0000027020, 0.0000026999, 0.0000026978, 0.0000026973, + 0.0000026974, 0.0000026977, 0.0000026980, 0.0000026991, 0.0000027022, + 0.0000027076, 0.0000027136, 0.0000027168, 0.0000027175, 0.0000027165, + 0.0000027138, 0.0000027111, 0.0000027081, 0.0000027042, 0.0000026999, + 0.0000026962, 0.0000026952, 0.0000026960, 0.0000026972, 0.0000026995, + 0.0000027044, 0.0000027100, 0.0000027137, 0.0000027172, 0.0000027223, + 0.0000027282, 0.0000027334, 0.0000027390, 0.0000027480, 0.0000027593, + 0.0000027667, 0.0000027681, 0.0000027670, 0.0000027645, 0.0000027595, + 0.0000027520, 0.0000027426, 0.0000027328, 0.0000027250, 0.0000027223, + 0.0000027229, 0.0000027233, 0.0000027219, 0.0000027191, 0.0000027177, + 0.0000027187, 0.0000027216, 0.0000027250, 0.0000027272, 0.0000027254, + 0.0000027236, 0.0000027238, 0.0000027236, 0.0000027220, 0.0000027188, + 0.0000027123, 0.0000027029, 0.0000026950, 0.0000026882, 0.0000026823, + 0.0000026812, 0.0000026839, 0.0000026909, 0.0000027076, 0.0000027333, + 0.0000027579, 0.0000027714, 0.0000027732, 0.0000027682, 0.0000027583, + 0.0000027505, 0.0000027537, 0.0000027684, 0.0000027791, 0.0000027731, + 0.0000027560, 0.0000027383, 0.0000027342, 0.0000027469, 0.0000027628, + 0.0000027749, 0.0000027914, 0.0000028047, 0.0000028064, 0.0000028028, + 0.0000028003, 0.0000028048, 0.0000028098, 0.0000028116, 0.0000028151, + 0.0000028205, 0.0000028215, 0.0000028149, 0.0000028064, 0.0000028021, + 0.0000028031, 0.0000028059, 0.0000028076, 0.0000028068, 0.0000028031, + 0.0000027991, 0.0000027932, 0.0000027863, 0.0000027794, 0.0000027750, + 0.0000027725, 0.0000027728, 0.0000027757, 0.0000027800, 0.0000027845, + 0.0000027882, 0.0000027924, 0.0000027972, 0.0000028015, 0.0000028047, + 0.0000028065, 0.0000028087, 0.0000028122, 0.0000028173, 0.0000028204, + 0.0000028224, 0.0000028244, 0.0000028241, 0.0000028211, 0.0000028193, + 0.0000028182, 0.0000028156, 0.0000028134, 0.0000028099, 0.0000028041, + 0.0000027958, 0.0000027844, 0.0000027730, 0.0000027671, 0.0000027682, + 0.0000027814, 0.0000027945, 0.0000028009, 0.0000028081, 0.0000028120, + 0.0000028105, 0.0000028055, 0.0000027990, 0.0000027900, 0.0000027850, + 0.0000027821, 0.0000027803, 0.0000027791, 0.0000027779, 0.0000027773, + 0.0000027795, 0.0000027836, 0.0000027879, 0.0000027925, 0.0000027988, + 0.0000028062, 0.0000028119, 0.0000028147, 0.0000028174, 0.0000028200, + 0.0000028214, 0.0000028219, 0.0000028225, 0.0000028249, 0.0000028285, + 0.0000028334, 0.0000028385, 0.0000028429, 0.0000028465, 0.0000028475, + 0.0000028459, 0.0000028423, 0.0000028383, 0.0000028355, 0.0000028336, + 0.0000028310, 0.0000028284, 0.0000028244, 0.0000028197, 0.0000028159, + 0.0000028154, 0.0000028185, 0.0000028262, 0.0000028308, 0.0000028289, + 0.0000028260, 0.0000028194, 0.0000028064, 0.0000028018, 0.0000028064, + 0.0000028124, 0.0000028136, 0.0000028139, 0.0000028161, 0.0000028191, + 0.0000028272, 0.0000028379, 0.0000028467, 0.0000028524, 0.0000028541, + 0.0000028525, 0.0000028464, 0.0000028381, 0.0000028285, 0.0000028206, + 0.0000028144, 0.0000028093, 0.0000028053, 0.0000028008, 0.0000027952, + 0.0000027905, 0.0000027889, 0.0000027905, 0.0000027941, 0.0000027982, + 0.0000028014, 0.0000028037, 0.0000028056, 0.0000028067, 0.0000028060, + 0.0000028028, 0.0000028016, 0.0000028010, 0.0000028007, 0.0000027983, + 0.0000027939, 0.0000027901, 0.0000027892, 0.0000027905, 0.0000027928, + 0.0000027960, 0.0000027994, 0.0000028017, 0.0000028010, 0.0000027957, + 0.0000027879, 0.0000027819, 0.0000027794, 0.0000027807, 0.0000027831, + 0.0000027876, 0.0000027919, 0.0000027939, 0.0000027922, 0.0000027881, + 0.0000027830, 0.0000027810, 0.0000027836, 0.0000027898, 0.0000027989, + 0.0000028090, 0.0000028194, 0.0000028283, 0.0000028328, 0.0000028314, + 0.0000028248, 0.0000028157, 0.0000028081, 0.0000028066, 0.0000028090, + 0.0000028135, 0.0000028170, 0.0000028188, 0.0000028173, 0.0000028127, + 0.0000028058, 0.0000027994, 0.0000027974, 0.0000028002, 0.0000028039, + 0.0000028070, 0.0000028088, 0.0000028104, 0.0000028132, 0.0000028155, + 0.0000028129, 0.0000028005, 0.0000027879, 0.0000027847, 0.0000027891, + 0.0000027954, 0.0000027989, 0.0000027990, 0.0000027969, 0.0000027932, + 0.0000027882, 0.0000027828, 0.0000027764, 0.0000027684, 0.0000027595, + 0.0000027513, 0.0000027461, 0.0000027459, 0.0000027500, 0.0000027520, + 0.0000027451, 0.0000027311, 0.0000027173, 0.0000027090, 0.0000027086, + 0.0000027135, 0.0000027230, 0.0000027291, 0.0000027143, 0.0000026908, + 0.0000026869, 0.0000027051, 0.0000027316, 0.0000027481, 0.0000027480, + 0.0000027416, 0.0000027420, 0.0000027444, 0.0000027417, 0.0000027421, + 0.0000027516, 0.0000027670, 0.0000027799, 0.0000027847, 0.0000027842, + 0.0000027853, 0.0000027896, 0.0000027959, 0.0000028014, 0.0000028034, + 0.0000028005, 0.0000027952, 0.0000027904, 0.0000027859, 0.0000027798, + 0.0000027703, 0.0000027610, 0.0000027610, 0.0000027736, 0.0000027903, + 0.0000027986, 0.0000027953, 0.0000027808, 0.0000027675, 0.0000027641, + 0.0000027695, 0.0000027770, 0.0000027784, 0.0000027712, 0.0000027579, + 0.0000027448, 0.0000027433, 0.0000027499, 0.0000027528, 0.0000027491, + 0.0000027446, 0.0000027375, 0.0000027274, 0.0000027179, 0.0000027153, + 0.0000027180, 0.0000027205, 0.0000027214, 0.0000027200, 0.0000027141, + 0.0000027076, 0.0000027064, 0.0000027117, 0.0000027230, 0.0000027366, + 0.0000027463, 0.0000027499, 0.0000027533, 0.0000027566, 0.0000027561, + 0.0000027561, 0.0000027669, 0.0000027863, 0.0000028010, 0.0000028044, + 0.0000027966, 0.0000027908, 0.0000028008, 0.0000028205, 0.0000028453, + 0.0000028654, 0.0000028771, 0.0000028822, 0.0000028849, 0.0000028863, + 0.0000028848, 0.0000028801, 0.0000028748, 0.0000028685, 0.0000028645, + 0.0000028647, 0.0000028648, 0.0000028627, 0.0000028570, 0.0000028474, + 0.0000028316, 0.0000028095, 0.0000027849, 0.0000027680, 0.0000027675, + 0.0000027747, 0.0000027811, 0.0000027809, 0.0000027743, 0.0000027624, + 0.0000027483, 0.0000027349, 0.0000027269, 0.0000027279, 0.0000027352, + 0.0000027417, 0.0000027417, 0.0000027382, 0.0000027346, 0.0000027365, + 0.0000027473, 0.0000027652, 0.0000027847, 0.0000028004, 0.0000028083, + 0.0000028102, 0.0000028085, 0.0000028059, 0.0000027989, 0.0000027905, + 0.0000027830, 0.0000027755, 0.0000027669, 0.0000027567, 0.0000027497, + 0.0000027494, 0.0000027552, 0.0000027627, 0.0000027678, 0.0000027680, + 0.0000027654, 0.0000027622, 0.0000027594, 0.0000027553, 0.0000027489, + 0.0000027427, 0.0000027409, 0.0000027433, 0.0000027513, 0.0000027593, + 0.0000027623, 0.0000027582, 0.0000027530, 0.0000027536, 0.0000027613, + 0.0000027720, 0.0000027775, 0.0000027777, 0.0000027751, 0.0000027717, + 0.0000027698, 0.0000027728, 0.0000027794, 0.0000027870, 0.0000027914, + 0.0000027925, 0.0000027893, 0.0000027834, 0.0000027758, 0.0000027682, + 0.0000027611, 0.0000027547, 0.0000027517, 0.0000027511, 0.0000027513, + 0.0000027508, 0.0000027488, 0.0000027454, 0.0000027406, 0.0000027362, + 0.0000027345, 0.0000027341, 0.0000027337, 0.0000027326, 0.0000027297, + 0.0000027262, 0.0000027236, 0.0000027211, 0.0000027182, 0.0000027136, + 0.0000027075, 0.0000027018, 0.0000026973, 0.0000026943, 0.0000026923, + 0.0000026909, 0.0000026904, 0.0000026911, 0.0000026921, 0.0000026914, + 0.0000026894, 0.0000026881, 0.0000026895, 0.0000026927, 0.0000026963, + 0.0000026995, 0.0000027016, 0.0000027040, 0.0000027069, 0.0000027102, + 0.0000027132, 0.0000027154, 0.0000027164, 0.0000027155, 0.0000027138, + 0.0000027115, 0.0000027079, 0.0000027042, 0.0000027017, 0.0000027016, + 0.0000027037, 0.0000027054, 0.0000027067, 0.0000027095, 0.0000027132, + 0.0000027155, 0.0000027180, 0.0000027232, 0.0000027288, 0.0000027339, + 0.0000027407, 0.0000027509, 0.0000027625, 0.0000027695, 0.0000027699, + 0.0000027674, 0.0000027650, 0.0000027620, 0.0000027572, 0.0000027502, + 0.0000027411, 0.0000027313, 0.0000027251, 0.0000027243, 0.0000027260, + 0.0000027266, 0.0000027244, 0.0000027205, 0.0000027189, 0.0000027191, + 0.0000027200, 0.0000027203, 0.0000027176, 0.0000027151, 0.0000027151, + 0.0000027169, 0.0000027187, 0.0000027188, 0.0000027144, 0.0000027048, + 0.0000026943, 0.0000026857, 0.0000026800, 0.0000026792, 0.0000026829, + 0.0000026923, 0.0000027110, 0.0000027361, 0.0000027584, 0.0000027702, + 0.0000027722, 0.0000027676, 0.0000027571, 0.0000027496, 0.0000027501, + 0.0000027612, 0.0000027761, 0.0000027778, 0.0000027656, 0.0000027477, + 0.0000027349, 0.0000027400, 0.0000027554, 0.0000027675, 0.0000027832, + 0.0000028002, 0.0000028076, 0.0000028067, 0.0000028028, 0.0000028049, + 0.0000028104, 0.0000028107, 0.0000028118, 0.0000028172, 0.0000028228, + 0.0000028240, 0.0000028162, 0.0000028054, 0.0000027994, 0.0000027992, + 0.0000028009, 0.0000028034, 0.0000028046, 0.0000028029, 0.0000027975, + 0.0000027896, 0.0000027824, 0.0000027769, 0.0000027735, 0.0000027712, + 0.0000027702, 0.0000027711, 0.0000027732, 0.0000027761, 0.0000027805, + 0.0000027864, 0.0000027922, 0.0000027987, 0.0000028053, 0.0000028117, + 0.0000028177, 0.0000028203, 0.0000028203, 0.0000028163, 0.0000028127, + 0.0000028082, 0.0000028055, 0.0000028022, 0.0000028001, 0.0000028001, + 0.0000028035, 0.0000028074, 0.0000028100, 0.0000028089, 0.0000028057, + 0.0000027983, 0.0000027891, 0.0000027772, 0.0000027669, 0.0000027669, + 0.0000027779, 0.0000027945, 0.0000028051, 0.0000028130, 0.0000028152, + 0.0000028135, 0.0000028101, 0.0000028047, 0.0000028000, 0.0000027975, + 0.0000027953, 0.0000027946, 0.0000027952, 0.0000027960, 0.0000027955, + 0.0000027961, 0.0000027980, 0.0000028019, 0.0000028082, 0.0000028158, + 0.0000028222, 0.0000028262, 0.0000028274, 0.0000028287, 0.0000028296, + 0.0000028294, 0.0000028274, 0.0000028265, 0.0000028292, 0.0000028368, + 0.0000028455, 0.0000028499, 0.0000028498, 0.0000028482, 0.0000028478, + 0.0000028482, 0.0000028477, 0.0000028439, 0.0000028378, 0.0000028315, + 0.0000028249, 0.0000028198, 0.0000028153, 0.0000028137, 0.0000028143, + 0.0000028191, 0.0000028273, 0.0000028338, 0.0000028335, 0.0000028289, + 0.0000028235, 0.0000028105, 0.0000027996, 0.0000027992, 0.0000028050, + 0.0000028070, 0.0000028051, 0.0000028036, 0.0000028053, 0.0000028115, + 0.0000028235, 0.0000028361, 0.0000028462, 0.0000028528, 0.0000028543, + 0.0000028521, 0.0000028449, 0.0000028361, 0.0000028266, 0.0000028196, + 0.0000028146, 0.0000028118, 0.0000028088, 0.0000028053, 0.0000027999, + 0.0000027952, 0.0000027933, 0.0000027942, 0.0000027960, 0.0000027981, + 0.0000027999, 0.0000028015, 0.0000028031, 0.0000028041, 0.0000028036, + 0.0000028003, 0.0000027999, 0.0000028007, 0.0000028021, 0.0000028029, + 0.0000028014, 0.0000027973, 0.0000027943, 0.0000027949, 0.0000027972, + 0.0000028006, 0.0000028058, 0.0000028116, 0.0000028150, 0.0000028145, + 0.0000028095, 0.0000028019, 0.0000027939, 0.0000027871, 0.0000027828, + 0.0000027823, 0.0000027847, 0.0000027879, 0.0000027877, 0.0000027852, + 0.0000027821, 0.0000027808, 0.0000027837, 0.0000027918, 0.0000028026, + 0.0000028142, 0.0000028258, 0.0000028356, 0.0000028417, 0.0000028425, + 0.0000028376, 0.0000028277, 0.0000028178, 0.0000028152, 0.0000028183, + 0.0000028242, 0.0000028269, 0.0000028269, 0.0000028248, 0.0000028205, + 0.0000028129, 0.0000028036, 0.0000027982, 0.0000028007, 0.0000028068, + 0.0000028128, 0.0000028142, 0.0000028116, 0.0000028092, 0.0000028113, + 0.0000028133, 0.0000028050, 0.0000027884, 0.0000027806, 0.0000027845, + 0.0000027949, 0.0000028016, 0.0000028012, 0.0000027961, 0.0000027892, + 0.0000027834, 0.0000027792, 0.0000027754, 0.0000027707, 0.0000027648, + 0.0000027582, 0.0000027535, 0.0000027532, 0.0000027560, 0.0000027566, + 0.0000027505, 0.0000027380, 0.0000027234, 0.0000027141, 0.0000027145, + 0.0000027201, 0.0000027266, 0.0000027299, 0.0000027176, 0.0000026948, + 0.0000026863, 0.0000026982, 0.0000027222, 0.0000027431, 0.0000027492, + 0.0000027421, 0.0000027369, 0.0000027387, 0.0000027400, 0.0000027397, + 0.0000027456, 0.0000027592, 0.0000027736, 0.0000027820, 0.0000027831, + 0.0000027828, 0.0000027858, 0.0000027895, 0.0000027950, 0.0000027987, + 0.0000027986, 0.0000027947, 0.0000027919, 0.0000027909, 0.0000027891, + 0.0000027833, 0.0000027735, 0.0000027661, 0.0000027685, 0.0000027817, + 0.0000027957, 0.0000028006, 0.0000027958, 0.0000027836, 0.0000027742, + 0.0000027728, 0.0000027759, 0.0000027775, 0.0000027744, 0.0000027659, + 0.0000027545, 0.0000027439, 0.0000027423, 0.0000027465, 0.0000027477, + 0.0000027446, 0.0000027406, 0.0000027351, 0.0000027259, 0.0000027186, + 0.0000027180, 0.0000027204, 0.0000027252, 0.0000027286, 0.0000027283, + 0.0000027235, 0.0000027162, 0.0000027141, 0.0000027203, 0.0000027315, + 0.0000027439, 0.0000027520, 0.0000027554, 0.0000027604, 0.0000027662, + 0.0000027657, 0.0000027627, 0.0000027691, 0.0000027870, 0.0000028033, + 0.0000028086, 0.0000028029, 0.0000027996, 0.0000028086, 0.0000028272, + 0.0000028535, 0.0000028744, 0.0000028853, 0.0000028902, 0.0000028930, + 0.0000028946, 0.0000028941, 0.0000028911, 0.0000028868, 0.0000028808, + 0.0000028757, 0.0000028751, 0.0000028739, 0.0000028691, 0.0000028605, + 0.0000028471, 0.0000028274, 0.0000028044, 0.0000027817, 0.0000027677, + 0.0000027675, 0.0000027757, 0.0000027815, 0.0000027810, 0.0000027728, + 0.0000027613, 0.0000027503, 0.0000027411, 0.0000027356, 0.0000027355, + 0.0000027399, 0.0000027456, 0.0000027462, 0.0000027448, 0.0000027449, + 0.0000027523, 0.0000027681, 0.0000027858, 0.0000027999, 0.0000028094, + 0.0000028131, 0.0000028125, 0.0000028102, 0.0000028068, 0.0000027996, + 0.0000027906, 0.0000027829, 0.0000027754, 0.0000027658, 0.0000027555, + 0.0000027474, 0.0000027455, 0.0000027495, 0.0000027564, 0.0000027616, + 0.0000027632, 0.0000027625, 0.0000027622, 0.0000027608, 0.0000027584, + 0.0000027532, 0.0000027471, 0.0000027438, 0.0000027446, 0.0000027497, + 0.0000027547, 0.0000027548, 0.0000027506, 0.0000027476, 0.0000027505, + 0.0000027588, 0.0000027680, 0.0000027726, 0.0000027727, 0.0000027712, + 0.0000027702, 0.0000027717, 0.0000027764, 0.0000027831, 0.0000027880, + 0.0000027893, 0.0000027870, 0.0000027833, 0.0000027797, 0.0000027759, + 0.0000027723, 0.0000027688, 0.0000027649, 0.0000027626, 0.0000027628, + 0.0000027641, 0.0000027646, 0.0000027633, 0.0000027592, 0.0000027533, + 0.0000027472, 0.0000027425, 0.0000027404, 0.0000027397, 0.0000027381, + 0.0000027354, 0.0000027312, 0.0000027269, 0.0000027240, 0.0000027214, + 0.0000027170, 0.0000027107, 0.0000027035, 0.0000026973, 0.0000026929, + 0.0000026898, 0.0000026881, 0.0000026869, 0.0000026861, 0.0000026857, + 0.0000026853, 0.0000026847, 0.0000026840, 0.0000026840, 0.0000026870, + 0.0000026930, 0.0000026987, 0.0000027024, 0.0000027024, 0.0000027003, + 0.0000026987, 0.0000027000, 0.0000027049, 0.0000027106, 0.0000027154, + 0.0000027172, 0.0000027176, 0.0000027174, 0.0000027158, 0.0000027135, + 0.0000027118, 0.0000027109, 0.0000027110, 0.0000027106, 0.0000027098, + 0.0000027110, 0.0000027150, 0.0000027187, 0.0000027214, 0.0000027257, + 0.0000027312, 0.0000027366, 0.0000027440, 0.0000027540, 0.0000027635, + 0.0000027679, 0.0000027670, 0.0000027643, 0.0000027631, 0.0000027628, + 0.0000027611, 0.0000027564, 0.0000027490, 0.0000027395, 0.0000027299, + 0.0000027248, 0.0000027250, 0.0000027265, 0.0000027253, 0.0000027203, + 0.0000027149, 0.0000027123, 0.0000027104, 0.0000027082, 0.0000027065, + 0.0000027056, 0.0000027072, 0.0000027117, 0.0000027170, 0.0000027191, + 0.0000027161, 0.0000027055, 0.0000026919, 0.0000026821, 0.0000026779, + 0.0000026771, 0.0000026815, 0.0000026954, 0.0000027175, 0.0000027415, + 0.0000027595, 0.0000027684, 0.0000027700, 0.0000027656, 0.0000027551, + 0.0000027485, 0.0000027494, 0.0000027569, 0.0000027702, 0.0000027766, + 0.0000027711, 0.0000027560, 0.0000027395, 0.0000027376, 0.0000027493, + 0.0000027617, 0.0000027753, 0.0000027948, 0.0000028061, 0.0000028077, + 0.0000028060, 0.0000028047, 0.0000028101, 0.0000028127, 0.0000028107, + 0.0000028130, 0.0000028192, 0.0000028257, 0.0000028276, 0.0000028208, + 0.0000028086, 0.0000028020, 0.0000028012, 0.0000028020, 0.0000028051, + 0.0000028090, 0.0000028094, 0.0000028069, 0.0000028022, 0.0000027981, + 0.0000027952, 0.0000027914, 0.0000027893, 0.0000027877, 0.0000027871, + 0.0000027869, 0.0000027868, 0.0000027892, 0.0000027943, 0.0000027991, + 0.0000028058, 0.0000028144, 0.0000028200, 0.0000028229, 0.0000028188, + 0.0000028122, 0.0000028029, 0.0000027972, 0.0000027938, 0.0000027937, + 0.0000027927, 0.0000027905, 0.0000027877, 0.0000027863, 0.0000027886, + 0.0000027919, 0.0000027968, 0.0000028027, 0.0000028038, 0.0000028000, + 0.0000027924, 0.0000027815, 0.0000027696, 0.0000027649, 0.0000027737, + 0.0000027932, 0.0000028077, 0.0000028159, 0.0000028196, 0.0000028204, + 0.0000028191, 0.0000028145, 0.0000028114, 0.0000028097, 0.0000028093, + 0.0000028110, 0.0000028150, 0.0000028174, 0.0000028159, 0.0000028121, + 0.0000028097, 0.0000028120, 0.0000028180, 0.0000028236, 0.0000028267, + 0.0000028271, 0.0000028267, 0.0000028278, 0.0000028294, 0.0000028308, + 0.0000028329, 0.0000028379, 0.0000028446, 0.0000028499, 0.0000028534, + 0.0000028537, 0.0000028527, 0.0000028526, 0.0000028541, 0.0000028550, + 0.0000028529, 0.0000028466, 0.0000028377, 0.0000028288, 0.0000028209, + 0.0000028158, 0.0000028142, 0.0000028150, 0.0000028188, 0.0000028263, + 0.0000028335, 0.0000028364, 0.0000028336, 0.0000028279, 0.0000028189, + 0.0000028042, 0.0000027959, 0.0000027962, 0.0000028003, 0.0000028005, + 0.0000027969, 0.0000027940, 0.0000027965, 0.0000028054, 0.0000028196, + 0.0000028341, 0.0000028456, 0.0000028528, 0.0000028539, 0.0000028515, + 0.0000028443, 0.0000028357, 0.0000028267, 0.0000028201, 0.0000028165, + 0.0000028153, 0.0000028133, 0.0000028100, 0.0000028047, 0.0000028007, + 0.0000027993, 0.0000027994, 0.0000028001, 0.0000028004, 0.0000028002, + 0.0000028003, 0.0000028009, 0.0000028012, 0.0000028010, 0.0000027964, + 0.0000027971, 0.0000027995, 0.0000028027, 0.0000028057, 0.0000028065, + 0.0000028041, 0.0000028005, 0.0000028001, 0.0000028015, 0.0000028037, + 0.0000028077, 0.0000028138, 0.0000028200, 0.0000028238, 0.0000028244, + 0.0000028219, 0.0000028152, 0.0000028048, 0.0000027941, 0.0000027867, + 0.0000027853, 0.0000027881, 0.0000027895, 0.0000027880, 0.0000027848, + 0.0000027832, 0.0000027858, 0.0000027945, 0.0000028059, 0.0000028184, + 0.0000028311, 0.0000028418, 0.0000028482, 0.0000028496, 0.0000028469, + 0.0000028379, 0.0000028269, 0.0000028207, 0.0000028223, 0.0000028281, + 0.0000028304, 0.0000028288, 0.0000028260, 0.0000028235, 0.0000028184, + 0.0000028091, 0.0000028011, 0.0000028011, 0.0000028088, 0.0000028180, + 0.0000028207, 0.0000028149, 0.0000028074, 0.0000028063, 0.0000028096, + 0.0000028058, 0.0000027903, 0.0000027776, 0.0000027796, 0.0000027918, + 0.0000028020, 0.0000028032, 0.0000027952, 0.0000027835, 0.0000027760, + 0.0000027747, 0.0000027750, 0.0000027737, 0.0000027700, 0.0000027656, + 0.0000027628, 0.0000027631, 0.0000027648, 0.0000027643, 0.0000027589, + 0.0000027458, 0.0000027281, 0.0000027170, 0.0000027189, 0.0000027258, + 0.0000027308, 0.0000027318, 0.0000027203, 0.0000026987, 0.0000026885, + 0.0000026938, 0.0000027135, 0.0000027354, 0.0000027485, 0.0000027461, + 0.0000027361, 0.0000027327, 0.0000027359, 0.0000027386, 0.0000027420, + 0.0000027514, 0.0000027647, 0.0000027752, 0.0000027792, 0.0000027790, + 0.0000027800, 0.0000027827, 0.0000027863, 0.0000027918, 0.0000027944, + 0.0000027923, 0.0000027902, 0.0000027915, 0.0000027937, 0.0000027922, + 0.0000027852, 0.0000027754, 0.0000027703, 0.0000027738, 0.0000027870, + 0.0000027998, 0.0000028040, 0.0000027987, 0.0000027884, 0.0000027815, + 0.0000027804, 0.0000027808, 0.0000027780, 0.0000027709, 0.0000027620, + 0.0000027533, 0.0000027458, 0.0000027426, 0.0000027417, 0.0000027389, + 0.0000027349, 0.0000027311, 0.0000027279, 0.0000027239, 0.0000027225, + 0.0000027240, 0.0000027258, 0.0000027302, 0.0000027353, 0.0000027363, + 0.0000027326, 0.0000027260, 0.0000027239, 0.0000027305, 0.0000027423, + 0.0000027525, 0.0000027587, 0.0000027621, 0.0000027676, 0.0000027752, + 0.0000027751, 0.0000027709, 0.0000027732, 0.0000027877, 0.0000028048, + 0.0000028113, 0.0000028080, 0.0000028073, 0.0000028154, 0.0000028331, + 0.0000028609, 0.0000028820, 0.0000028912, 0.0000028958, 0.0000028987, + 0.0000029001, 0.0000028998, 0.0000028975, 0.0000028937, 0.0000028878, + 0.0000028818, 0.0000028794, 0.0000028770, 0.0000028706, 0.0000028589, + 0.0000028418, 0.0000028204, 0.0000027986, 0.0000027796, 0.0000027695, + 0.0000027697, 0.0000027769, 0.0000027810, 0.0000027783, 0.0000027691, + 0.0000027592, 0.0000027528, 0.0000027475, 0.0000027440, 0.0000027422, + 0.0000027437, 0.0000027479, 0.0000027502, 0.0000027533, 0.0000027601, + 0.0000027723, 0.0000027877, 0.0000028002, 0.0000028074, 0.0000028122, + 0.0000028142, 0.0000028136, 0.0000028118, 0.0000028069, 0.0000027984, + 0.0000027891, 0.0000027816, 0.0000027748, 0.0000027658, 0.0000027551, + 0.0000027469, 0.0000027442, 0.0000027456, 0.0000027501, 0.0000027558, + 0.0000027603, 0.0000027626, 0.0000027649, 0.0000027669, 0.0000027670, + 0.0000027633, 0.0000027558, 0.0000027489, 0.0000027454, 0.0000027468, + 0.0000027489, 0.0000027471, 0.0000027431, 0.0000027428, 0.0000027489, + 0.0000027577, 0.0000027648, 0.0000027676, 0.0000027673, 0.0000027673, + 0.0000027691, 0.0000027731, 0.0000027789, 0.0000027845, 0.0000027869, + 0.0000027862, 0.0000027833, 0.0000027799, 0.0000027791, 0.0000027786, + 0.0000027794, 0.0000027793, 0.0000027778, 0.0000027756, 0.0000027744, + 0.0000027743, 0.0000027745, 0.0000027740, 0.0000027723, 0.0000027675, + 0.0000027606, 0.0000027538, 0.0000027485, 0.0000027449, 0.0000027431, + 0.0000027409, 0.0000027377, 0.0000027330, 0.0000027282, 0.0000027249, + 0.0000027218, 0.0000027164, 0.0000027094, 0.0000027020, 0.0000026954, + 0.0000026905, 0.0000026877, 0.0000026868, 0.0000026860, 0.0000026857, + 0.0000026850, 0.0000026841, 0.0000026837, 0.0000026835, 0.0000026841, + 0.0000026876, 0.0000026936, 0.0000026989, 0.0000027004, 0.0000026966, + 0.0000026904, 0.0000026883, 0.0000026928, 0.0000027014, 0.0000027119, + 0.0000027192, 0.0000027234, 0.0000027257, 0.0000027272, 0.0000027269, + 0.0000027244, 0.0000027208, 0.0000027169, 0.0000027143, 0.0000027122, + 0.0000027113, 0.0000027132, 0.0000027184, 0.0000027242, 0.0000027282, + 0.0000027317, 0.0000027367, 0.0000027424, 0.0000027485, 0.0000027553, + 0.0000027613, 0.0000027636, 0.0000027623, 0.0000027607, 0.0000027619, + 0.0000027646, 0.0000027662, 0.0000027635, 0.0000027569, 0.0000027484, + 0.0000027376, 0.0000027277, 0.0000027232, 0.0000027231, 0.0000027214, + 0.0000027149, 0.0000027069, 0.0000027021, 0.0000027000, 0.0000026973, + 0.0000026957, 0.0000026973, 0.0000027015, 0.0000027083, 0.0000027161, + 0.0000027193, 0.0000027158, 0.0000027035, 0.0000026887, 0.0000026792, + 0.0000026759, 0.0000026760, 0.0000026824, 0.0000027009, 0.0000027260, + 0.0000027469, 0.0000027592, 0.0000027657, 0.0000027675, 0.0000027619, + 0.0000027519, 0.0000027487, 0.0000027522, 0.0000027575, 0.0000027669, + 0.0000027751, 0.0000027730, 0.0000027620, 0.0000027465, 0.0000027388, + 0.0000027462, 0.0000027573, 0.0000027686, 0.0000027874, 0.0000028049, + 0.0000028088, 0.0000028070, 0.0000028055, 0.0000028076, 0.0000028129, + 0.0000028130, 0.0000028118, 0.0000028151, 0.0000028226, 0.0000028296, + 0.0000028340, 0.0000028321, 0.0000028214, 0.0000028151, 0.0000028150, + 0.0000028181, 0.0000028248, 0.0000028317, 0.0000028308, 0.0000028265, + 0.0000028169, 0.0000028056, 0.0000027962, 0.0000027895, 0.0000027862, + 0.0000027871, 0.0000027901, 0.0000027926, 0.0000027938, 0.0000027966, + 0.0000028011, 0.0000028060, 0.0000028104, 0.0000028158, 0.0000028184, + 0.0000028166, 0.0000028076, 0.0000027996, 0.0000027938, 0.0000027923, + 0.0000027921, 0.0000027925, 0.0000027932, 0.0000027927, 0.0000027898, + 0.0000027844, 0.0000027803, 0.0000027761, 0.0000027743, 0.0000027810, + 0.0000027915, 0.0000027991, 0.0000028003, 0.0000027948, 0.0000027861, + 0.0000027756, 0.0000027684, 0.0000027726, 0.0000027929, 0.0000028121, + 0.0000028219, 0.0000028264, 0.0000028299, 0.0000028288, 0.0000028239, + 0.0000028205, 0.0000028202, 0.0000028218, 0.0000028271, 0.0000028325, + 0.0000028349, 0.0000028323, 0.0000028262, 0.0000028223, 0.0000028224, + 0.0000028244, 0.0000028267, 0.0000028262, 0.0000028265, 0.0000028278, + 0.0000028336, 0.0000028398, 0.0000028447, 0.0000028464, 0.0000028474, + 0.0000028495, 0.0000028541, 0.0000028592, 0.0000028620, 0.0000028636, + 0.0000028645, 0.0000028643, 0.0000028623, 0.0000028585, 0.0000028521, + 0.0000028427, 0.0000028325, 0.0000028232, 0.0000028178, 0.0000028172, + 0.0000028188, 0.0000028234, 0.0000028301, 0.0000028355, 0.0000028373, + 0.0000028338, 0.0000028268, 0.0000028157, 0.0000028009, 0.0000027925, + 0.0000027916, 0.0000027941, 0.0000027943, 0.0000027912, 0.0000027885, + 0.0000027912, 0.0000028008, 0.0000028159, 0.0000028311, 0.0000028436, + 0.0000028506, 0.0000028514, 0.0000028492, 0.0000028428, 0.0000028344, + 0.0000028253, 0.0000028185, 0.0000028157, 0.0000028152, 0.0000028141, + 0.0000028107, 0.0000028056, 0.0000028017, 0.0000028003, 0.0000028005, + 0.0000028007, 0.0000027997, 0.0000027981, 0.0000027970, 0.0000027968, + 0.0000027970, 0.0000027971, 0.0000027946, 0.0000027953, 0.0000027985, + 0.0000028028, 0.0000028067, 0.0000028085, 0.0000028078, 0.0000028048, + 0.0000028030, 0.0000028033, 0.0000028055, 0.0000028091, 0.0000028143, + 0.0000028206, 0.0000028267, 0.0000028307, 0.0000028324, 0.0000028299, + 0.0000028215, 0.0000028096, 0.0000027986, 0.0000027923, 0.0000027915, + 0.0000027931, 0.0000027936, 0.0000027924, 0.0000027910, 0.0000027925, + 0.0000027993, 0.0000028095, 0.0000028211, 0.0000028333, 0.0000028438, + 0.0000028512, 0.0000028543, 0.0000028528, 0.0000028457, 0.0000028358, + 0.0000028290, 0.0000028285, 0.0000028322, 0.0000028333, 0.0000028297, + 0.0000028244, 0.0000028213, 0.0000028192, 0.0000028138, 0.0000028066, + 0.0000028035, 0.0000028097, 0.0000028199, 0.0000028239, 0.0000028177, + 0.0000028063, 0.0000028025, 0.0000028051, 0.0000028038, 0.0000027910, + 0.0000027774, 0.0000027762, 0.0000027872, 0.0000028001, 0.0000028035, + 0.0000027942, 0.0000027796, 0.0000027710, 0.0000027708, 0.0000027736, + 0.0000027748, 0.0000027733, 0.0000027714, 0.0000027713, 0.0000027730, + 0.0000027741, 0.0000027730, 0.0000027673, 0.0000027529, 0.0000027320, + 0.0000027197, 0.0000027211, 0.0000027295, 0.0000027350, 0.0000027353, + 0.0000027242, 0.0000027032, 0.0000026897, 0.0000026916, 0.0000027064, + 0.0000027271, 0.0000027449, 0.0000027498, 0.0000027416, 0.0000027313, + 0.0000027300, 0.0000027346, 0.0000027394, 0.0000027451, 0.0000027547, + 0.0000027649, 0.0000027711, 0.0000027732, 0.0000027739, 0.0000027750, + 0.0000027763, 0.0000027812, 0.0000027865, 0.0000027878, 0.0000027867, + 0.0000027889, 0.0000027943, 0.0000027965, 0.0000027934, 0.0000027846, + 0.0000027753, 0.0000027716, 0.0000027764, 0.0000027901, 0.0000028036, + 0.0000028085, 0.0000028044, 0.0000027943, 0.0000027876, 0.0000027861, + 0.0000027846, 0.0000027791, 0.0000027693, 0.0000027600, 0.0000027532, + 0.0000027487, 0.0000027448, 0.0000027409, 0.0000027356, 0.0000027304, + 0.0000027270, 0.0000027255, 0.0000027256, 0.0000027285, 0.0000027316, + 0.0000027330, 0.0000027355, 0.0000027407, 0.0000027438, 0.0000027420, + 0.0000027376, 0.0000027367, 0.0000027436, 0.0000027528, 0.0000027592, + 0.0000027652, 0.0000027707, 0.0000027769, 0.0000027851, 0.0000027853, + 0.0000027793, 0.0000027790, 0.0000027894, 0.0000028055, 0.0000028123, + 0.0000028114, 0.0000028136, 0.0000028207, 0.0000028379, 0.0000028666, + 0.0000028870, 0.0000028945, 0.0000028991, 0.0000029024, 0.0000029035, + 0.0000029030, 0.0000029005, 0.0000028961, 0.0000028902, 0.0000028834, + 0.0000028794, 0.0000028741, 0.0000028649, 0.0000028508, 0.0000028326, + 0.0000028126, 0.0000027939, 0.0000027785, 0.0000027717, 0.0000027723, + 0.0000027767, 0.0000027783, 0.0000027732, 0.0000027647, 0.0000027581, + 0.0000027550, 0.0000027533, 0.0000027507, 0.0000027471, 0.0000027462, + 0.0000027496, 0.0000027558, 0.0000027653, 0.0000027781, 0.0000027911, + 0.0000028008, 0.0000028066, 0.0000028102, 0.0000028138, 0.0000028154, + 0.0000028143, 0.0000028116, 0.0000028055, 0.0000027953, 0.0000027852, + 0.0000027784, 0.0000027726, 0.0000027648, 0.0000027553, 0.0000027481, + 0.0000027449, 0.0000027452, 0.0000027477, 0.0000027525, 0.0000027587, + 0.0000027648, 0.0000027702, 0.0000027750, 0.0000027767, 0.0000027734, + 0.0000027646, 0.0000027546, 0.0000027458, 0.0000027422, 0.0000027419, + 0.0000027408, 0.0000027386, 0.0000027399, 0.0000027466, 0.0000027562, + 0.0000027625, 0.0000027642, 0.0000027637, 0.0000027642, 0.0000027676, + 0.0000027730, 0.0000027783, 0.0000027817, 0.0000027827, 0.0000027823, + 0.0000027818, 0.0000027812, 0.0000027817, 0.0000027838, 0.0000027863, + 0.0000027882, 0.0000027884, 0.0000027865, 0.0000027835, 0.0000027811, + 0.0000027797, 0.0000027794, 0.0000027791, 0.0000027783, 0.0000027748, + 0.0000027688, 0.0000027621, 0.0000027555, 0.0000027495, 0.0000027458, + 0.0000027439, 0.0000027414, 0.0000027368, 0.0000027313, 0.0000027268, + 0.0000027226, 0.0000027171, 0.0000027105, 0.0000027039, 0.0000026976, + 0.0000026931, 0.0000026904, 0.0000026905, 0.0000026907, 0.0000026903, + 0.0000026888, 0.0000026869, 0.0000026854, 0.0000026849, 0.0000026855, + 0.0000026886, 0.0000026933, 0.0000026967, 0.0000026966, 0.0000026913, + 0.0000026871, 0.0000026870, 0.0000026966, 0.0000027100, 0.0000027223, + 0.0000027295, 0.0000027324, 0.0000027336, 0.0000027340, 0.0000027331, + 0.0000027297, 0.0000027250, 0.0000027200, 0.0000027181, 0.0000027179, + 0.0000027189, 0.0000027218, 0.0000027274, 0.0000027341, 0.0000027392, + 0.0000027426, 0.0000027462, 0.0000027499, 0.0000027521, 0.0000027542, + 0.0000027575, 0.0000027591, 0.0000027587, 0.0000027592, 0.0000027620, + 0.0000027676, 0.0000027721, 0.0000027715, 0.0000027652, 0.0000027569, + 0.0000027467, 0.0000027338, 0.0000027226, 0.0000027170, 0.0000027133, + 0.0000027065, 0.0000026982, 0.0000026934, 0.0000026928, 0.0000026926, + 0.0000026916, 0.0000026928, 0.0000026976, 0.0000027062, 0.0000027154, + 0.0000027191, 0.0000027131, 0.0000026982, 0.0000026835, 0.0000026760, + 0.0000026742, 0.0000026752, 0.0000026847, 0.0000027083, 0.0000027353, + 0.0000027526, 0.0000027593, 0.0000027627, 0.0000027636, 0.0000027579, + 0.0000027514, 0.0000027514, 0.0000027575, 0.0000027622, 0.0000027669, + 0.0000027738, 0.0000027732, 0.0000027649, 0.0000027521, 0.0000027411, + 0.0000027460, 0.0000027565, 0.0000027640, 0.0000027794, 0.0000028006, + 0.0000028100, 0.0000028099, 0.0000028080, 0.0000028066, 0.0000028102, + 0.0000028139, 0.0000028134, 0.0000028139, 0.0000028194, 0.0000028276, + 0.0000028355, 0.0000028432, 0.0000028450, 0.0000028369, 0.0000028304, + 0.0000028311, 0.0000028342, 0.0000028383, 0.0000028378, 0.0000028295, + 0.0000028159, 0.0000028002, 0.0000027855, 0.0000027737, 0.0000027657, + 0.0000027624, 0.0000027639, 0.0000027704, 0.0000027775, 0.0000027838, + 0.0000027888, 0.0000027935, 0.0000027992, 0.0000028034, 0.0000028064, + 0.0000028071, 0.0000028064, 0.0000028005, 0.0000027945, 0.0000027902, + 0.0000027863, 0.0000027846, 0.0000027822, 0.0000027829, 0.0000027850, + 0.0000027870, 0.0000027856, 0.0000027803, 0.0000027745, 0.0000027673, + 0.0000027641, 0.0000027696, 0.0000027812, 0.0000027918, 0.0000027972, + 0.0000027946, 0.0000027886, 0.0000027823, 0.0000027783, 0.0000027805, + 0.0000027962, 0.0000028171, 0.0000028281, 0.0000028331, 0.0000028366, + 0.0000028354, 0.0000028307, 0.0000028274, 0.0000028285, 0.0000028331, + 0.0000028384, 0.0000028414, 0.0000028428, 0.0000028404, 0.0000028365, + 0.0000028347, 0.0000028347, 0.0000028359, 0.0000028360, 0.0000028357, + 0.0000028380, 0.0000028421, 0.0000028472, 0.0000028498, 0.0000028496, + 0.0000028485, 0.0000028504, 0.0000028569, 0.0000028640, 0.0000028694, + 0.0000028729, 0.0000028731, 0.0000028708, 0.0000028669, 0.0000028629, + 0.0000028600, 0.0000028567, 0.0000028512, 0.0000028424, 0.0000028319, + 0.0000028235, 0.0000028203, 0.0000028210, 0.0000028253, 0.0000028309, + 0.0000028359, 0.0000028381, 0.0000028343, 0.0000028264, 0.0000028155, + 0.0000028008, 0.0000027905, 0.0000027874, 0.0000027890, 0.0000027906, + 0.0000027902, 0.0000027888, 0.0000027912, 0.0000028001, 0.0000028128, + 0.0000028268, 0.0000028389, 0.0000028455, 0.0000028460, 0.0000028433, + 0.0000028368, 0.0000028278, 0.0000028179, 0.0000028105, 0.0000028087, + 0.0000028092, 0.0000028085, 0.0000028053, 0.0000028008, 0.0000027975, + 0.0000027965, 0.0000027975, 0.0000027978, 0.0000027963, 0.0000027937, + 0.0000027920, 0.0000027921, 0.0000027940, 0.0000027948, 0.0000027978, + 0.0000027989, 0.0000028002, 0.0000028036, 0.0000028072, 0.0000028089, + 0.0000028086, 0.0000028060, 0.0000028032, 0.0000028027, 0.0000028044, + 0.0000028084, 0.0000028134, 0.0000028193, 0.0000028260, 0.0000028323, + 0.0000028365, 0.0000028377, 0.0000028326, 0.0000028229, 0.0000028123, + 0.0000028043, 0.0000027996, 0.0000027975, 0.0000027968, 0.0000027971, + 0.0000027979, 0.0000027993, 0.0000028039, 0.0000028127, 0.0000028235, + 0.0000028342, 0.0000028433, 0.0000028505, 0.0000028551, 0.0000028555, + 0.0000028503, 0.0000028418, 0.0000028359, 0.0000028352, 0.0000028364, + 0.0000028362, 0.0000028326, 0.0000028257, 0.0000028195, 0.0000028166, + 0.0000028146, 0.0000028109, 0.0000028082, 0.0000028105, 0.0000028185, + 0.0000028229, 0.0000028177, 0.0000028054, 0.0000027994, 0.0000028006, + 0.0000028000, 0.0000027901, 0.0000027765, 0.0000027725, 0.0000027823, + 0.0000027960, 0.0000028005, 0.0000027928, 0.0000027780, 0.0000027679, + 0.0000027664, 0.0000027698, 0.0000027729, 0.0000027739, 0.0000027744, + 0.0000027764, 0.0000027797, 0.0000027814, 0.0000027805, 0.0000027740, + 0.0000027570, 0.0000027336, 0.0000027205, 0.0000027222, 0.0000027320, + 0.0000027382, 0.0000027380, 0.0000027274, 0.0000027069, 0.0000026935, + 0.0000026920, 0.0000027012, 0.0000027190, 0.0000027380, 0.0000027499, + 0.0000027485, 0.0000027374, 0.0000027276, 0.0000027278, 0.0000027329, + 0.0000027379, 0.0000027440, 0.0000027524, 0.0000027601, 0.0000027648, + 0.0000027663, 0.0000027670, 0.0000027681, 0.0000027709, 0.0000027766, + 0.0000027805, 0.0000027817, 0.0000027843, 0.0000027914, 0.0000027980, + 0.0000027982, 0.0000027920, 0.0000027820, 0.0000027731, 0.0000027705, + 0.0000027778, 0.0000027929, 0.0000028082, 0.0000028147, 0.0000028114, + 0.0000028004, 0.0000027925, 0.0000027904, 0.0000027877, 0.0000027807, + 0.0000027700, 0.0000027598, 0.0000027533, 0.0000027512, 0.0000027494, + 0.0000027455, 0.0000027401, 0.0000027345, 0.0000027308, 0.0000027290, + 0.0000027300, 0.0000027332, 0.0000027365, 0.0000027380, 0.0000027407, + 0.0000027469, 0.0000027516, 0.0000027511, 0.0000027508, 0.0000027549, + 0.0000027611, 0.0000027634, 0.0000027661, 0.0000027717, 0.0000027798, + 0.0000027884, 0.0000027953, 0.0000027946, 0.0000027879, 0.0000027858, + 0.0000027921, 0.0000028053, 0.0000028122, 0.0000028132, 0.0000028179, + 0.0000028249, 0.0000028417, 0.0000028699, 0.0000028890, 0.0000028955, + 0.0000029006, 0.0000029046, 0.0000029056, 0.0000029047, 0.0000029013, + 0.0000028963, 0.0000028892, 0.0000028808, 0.0000028739, 0.0000028651, + 0.0000028534, 0.0000028391, 0.0000028231, 0.0000028069, 0.0000027916, + 0.0000027790, 0.0000027739, 0.0000027743, 0.0000027758, 0.0000027735, + 0.0000027671, 0.0000027605, 0.0000027580, 0.0000027578, 0.0000027578, + 0.0000027543, 0.0000027493, 0.0000027478, 0.0000027528, 0.0000027647, + 0.0000027803, 0.0000027952, 0.0000028037, 0.0000028068, 0.0000028092, + 0.0000028135, 0.0000028166, 0.0000028164, 0.0000028129, 0.0000028083, + 0.0000028019, 0.0000027911, 0.0000027801, 0.0000027733, 0.0000027683, + 0.0000027622, 0.0000027549, 0.0000027492, 0.0000027473, 0.0000027468, + 0.0000027473, 0.0000027503, 0.0000027569, 0.0000027655, 0.0000027736, + 0.0000027798, 0.0000027827, 0.0000027798, 0.0000027709, 0.0000027579, + 0.0000027456, 0.0000027384, 0.0000027374, 0.0000027376, 0.0000027375, + 0.0000027385, 0.0000027434, 0.0000027515, 0.0000027588, 0.0000027619, + 0.0000027629, 0.0000027639, 0.0000027669, 0.0000027706, 0.0000027738, + 0.0000027754, 0.0000027762, 0.0000027778, 0.0000027804, 0.0000027832, + 0.0000027862, 0.0000027896, 0.0000027928, 0.0000027940, 0.0000027934, + 0.0000027911, 0.0000027882, 0.0000027846, 0.0000027814, 0.0000027801, + 0.0000027802, 0.0000027803, 0.0000027802, 0.0000027786, 0.0000027744, + 0.0000027690, 0.0000027623, 0.0000027553, 0.0000027504, 0.0000027491, + 0.0000027478, 0.0000027443, 0.0000027393, 0.0000027344, 0.0000027301, + 0.0000027257, 0.0000027207, 0.0000027155, 0.0000027100, 0.0000027058, + 0.0000027033, 0.0000027030, 0.0000027025, 0.0000027005, 0.0000026975, + 0.0000026945, 0.0000026923, 0.0000026911, 0.0000026914, 0.0000026935, + 0.0000026966, 0.0000026988, 0.0000026989, 0.0000026962, 0.0000026942, + 0.0000026989, 0.0000027107, 0.0000027238, 0.0000027333, 0.0000027375, + 0.0000027378, 0.0000027372, 0.0000027376, 0.0000027381, 0.0000027371, + 0.0000027351, 0.0000027329, 0.0000027338, 0.0000027364, 0.0000027389, + 0.0000027412, 0.0000027445, 0.0000027492, 0.0000027535, 0.0000027554, + 0.0000027561, 0.0000027558, 0.0000027542, 0.0000027525, 0.0000027533, + 0.0000027554, 0.0000027575, 0.0000027592, 0.0000027635, 0.0000027703, + 0.0000027762, 0.0000027774, 0.0000027728, 0.0000027645, 0.0000027549, + 0.0000027423, 0.0000027267, 0.0000027134, 0.0000027052, 0.0000026987, + 0.0000026924, 0.0000026896, 0.0000026908, 0.0000026926, 0.0000026935, + 0.0000026938, 0.0000026978, 0.0000027057, 0.0000027137, 0.0000027161, + 0.0000027077, 0.0000026912, 0.0000026783, 0.0000026740, 0.0000026736, + 0.0000026751, 0.0000026886, 0.0000027166, 0.0000027443, 0.0000027579, + 0.0000027604, 0.0000027605, 0.0000027593, 0.0000027562, 0.0000027554, + 0.0000027592, 0.0000027644, 0.0000027668, 0.0000027687, 0.0000027735, + 0.0000027730, 0.0000027656, 0.0000027546, 0.0000027434, 0.0000027455, + 0.0000027572, 0.0000027639, 0.0000027730, 0.0000027932, 0.0000028095, + 0.0000028120, 0.0000028120, 0.0000028120, 0.0000028118, 0.0000028142, + 0.0000028166, 0.0000028165, 0.0000028185, 0.0000028246, 0.0000028327, + 0.0000028414, 0.0000028502, 0.0000028520, 0.0000028446, 0.0000028353, + 0.0000028322, 0.0000028304, 0.0000028256, 0.0000028162, 0.0000028033, + 0.0000027917, 0.0000027816, 0.0000027734, 0.0000027650, 0.0000027590, + 0.0000027546, 0.0000027508, 0.0000027501, 0.0000027528, 0.0000027593, + 0.0000027670, 0.0000027742, 0.0000027826, 0.0000027904, 0.0000027950, + 0.0000027971, 0.0000027985, 0.0000027943, 0.0000027848, 0.0000027740, + 0.0000027632, 0.0000027596, 0.0000027565, 0.0000027582, 0.0000027616, + 0.0000027680, 0.0000027728, 0.0000027736, 0.0000027713, 0.0000027657, + 0.0000027603, 0.0000027592, 0.0000027642, 0.0000027752, 0.0000027863, + 0.0000027924, 0.0000027937, 0.0000027927, 0.0000027921, 0.0000027923, + 0.0000027922, 0.0000027996, 0.0000028182, 0.0000028320, 0.0000028374, + 0.0000028407, 0.0000028403, 0.0000028354, 0.0000028333, 0.0000028365, + 0.0000028416, 0.0000028429, 0.0000028422, 0.0000028421, 0.0000028408, + 0.0000028405, 0.0000028424, 0.0000028443, 0.0000028455, 0.0000028455, + 0.0000028449, 0.0000028459, 0.0000028484, 0.0000028510, 0.0000028521, + 0.0000028522, 0.0000028545, 0.0000028589, 0.0000028654, 0.0000028718, + 0.0000028765, 0.0000028788, 0.0000028773, 0.0000028720, 0.0000028649, + 0.0000028593, 0.0000028564, 0.0000028556, 0.0000028548, 0.0000028528, + 0.0000028442, 0.0000028324, 0.0000028238, 0.0000028218, 0.0000028244, + 0.0000028292, 0.0000028350, 0.0000028386, 0.0000028355, 0.0000028280, + 0.0000028191, 0.0000028059, 0.0000027931, 0.0000027869, 0.0000027869, + 0.0000027898, 0.0000027926, 0.0000027936, 0.0000027964, 0.0000028034, + 0.0000028137, 0.0000028248, 0.0000028341, 0.0000028386, 0.0000028380, + 0.0000028339, 0.0000028261, 0.0000028156, 0.0000028046, 0.0000027975, + 0.0000027967, 0.0000027981, 0.0000027979, 0.0000027958, 0.0000027932, + 0.0000027920, 0.0000027928, 0.0000027950, 0.0000027958, 0.0000027941, + 0.0000027901, 0.0000027871, 0.0000027873, 0.0000027909, 0.0000027949, + 0.0000027992, 0.0000028038, 0.0000028060, 0.0000028078, 0.0000028098, + 0.0000028104, 0.0000028092, 0.0000028058, 0.0000028019, 0.0000027998, + 0.0000028002, 0.0000028033, 0.0000028077, 0.0000028126, 0.0000028190, + 0.0000028269, 0.0000028343, 0.0000028383, 0.0000028369, 0.0000028314, + 0.0000028226, 0.0000028150, 0.0000028100, 0.0000028058, 0.0000028025, + 0.0000028019, 0.0000028028, 0.0000028034, 0.0000028059, 0.0000028132, + 0.0000028235, 0.0000028338, 0.0000028419, 0.0000028474, 0.0000028523, + 0.0000028547, 0.0000028524, 0.0000028448, 0.0000028394, 0.0000028388, + 0.0000028382, 0.0000028365, 0.0000028337, 0.0000028280, 0.0000028198, + 0.0000028146, 0.0000028140, 0.0000028132, 0.0000028119, 0.0000028105, + 0.0000028150, 0.0000028187, 0.0000028148, 0.0000028042, 0.0000027973, + 0.0000027969, 0.0000027955, 0.0000027882, 0.0000027776, 0.0000027729, + 0.0000027783, 0.0000027906, 0.0000027948, 0.0000027901, 0.0000027774, + 0.0000027670, 0.0000027634, 0.0000027649, 0.0000027689, 0.0000027725, + 0.0000027752, 0.0000027787, 0.0000027833, 0.0000027864, 0.0000027855, + 0.0000027773, 0.0000027581, 0.0000027343, 0.0000027203, 0.0000027231, + 0.0000027333, 0.0000027404, 0.0000027410, 0.0000027304, 0.0000027103, + 0.0000026957, 0.0000026936, 0.0000026979, 0.0000027115, 0.0000027301, + 0.0000027472, 0.0000027527, 0.0000027474, 0.0000027333, 0.0000027243, + 0.0000027243, 0.0000027276, 0.0000027319, 0.0000027387, 0.0000027473, + 0.0000027538, 0.0000027570, 0.0000027585, 0.0000027609, 0.0000027639, + 0.0000027692, 0.0000027735, 0.0000027759, 0.0000027787, 0.0000027857, + 0.0000027952, 0.0000027996, 0.0000027973, 0.0000027888, 0.0000027782, + 0.0000027706, 0.0000027705, 0.0000027801, 0.0000027970, 0.0000028144, + 0.0000028215, 0.0000028185, 0.0000028063, 0.0000027964, 0.0000027934, + 0.0000027908, 0.0000027836, 0.0000027728, 0.0000027616, 0.0000027548, + 0.0000027540, 0.0000027544, 0.0000027524, 0.0000027491, 0.0000027449, + 0.0000027394, 0.0000027341, 0.0000027333, 0.0000027358, 0.0000027393, + 0.0000027421, 0.0000027469, 0.0000027546, 0.0000027596, 0.0000027609, + 0.0000027672, 0.0000027771, 0.0000027782, 0.0000027728, 0.0000027736, + 0.0000027807, 0.0000027914, 0.0000028008, 0.0000028051, 0.0000028023, + 0.0000027957, 0.0000027927, 0.0000027954, 0.0000028039, 0.0000028100, + 0.0000028146, 0.0000028224, 0.0000028294, 0.0000028446, 0.0000028698, + 0.0000028869, 0.0000028941, 0.0000029002, 0.0000029054, 0.0000029067, + 0.0000029055, 0.0000029016, 0.0000028953, 0.0000028866, 0.0000028755, + 0.0000028646, 0.0000028526, 0.0000028398, 0.0000028277, 0.0000028160, + 0.0000028039, 0.0000027907, 0.0000027798, 0.0000027758, 0.0000027755, + 0.0000027738, 0.0000027687, 0.0000027622, 0.0000027579, 0.0000027573, + 0.0000027590, 0.0000027594, 0.0000027558, 0.0000027509, 0.0000027501, + 0.0000027597, 0.0000027771, 0.0000027960, 0.0000028076, 0.0000028092, + 0.0000028083, 0.0000028116, 0.0000028187, 0.0000028212, 0.0000028163, + 0.0000028089, 0.0000028026, 0.0000027966, 0.0000027871, 0.0000027758, + 0.0000027678, 0.0000027626, 0.0000027578, 0.0000027528, 0.0000027493, + 0.0000027483, 0.0000027483, 0.0000027476, 0.0000027482, 0.0000027534, + 0.0000027627, 0.0000027723, 0.0000027796, 0.0000027833, 0.0000027822, + 0.0000027734, 0.0000027589, 0.0000027458, 0.0000027387, 0.0000027373, + 0.0000027382, 0.0000027381, 0.0000027380, 0.0000027397, 0.0000027447, + 0.0000027525, 0.0000027595, 0.0000027638, 0.0000027664, 0.0000027680, + 0.0000027686, 0.0000027682, 0.0000027682, 0.0000027700, 0.0000027739, + 0.0000027783, 0.0000027829, 0.0000027877, 0.0000027932, 0.0000027978, + 0.0000027994, 0.0000027971, 0.0000027927, 0.0000027871, 0.0000027829, + 0.0000027794, 0.0000027770, 0.0000027765, 0.0000027771, 0.0000027772, + 0.0000027770, 0.0000027767, 0.0000027753, 0.0000027724, 0.0000027673, + 0.0000027613, 0.0000027556, 0.0000027526, 0.0000027518, 0.0000027498, + 0.0000027475, 0.0000027448, 0.0000027425, 0.0000027410, 0.0000027387, + 0.0000027348, 0.0000027298, 0.0000027256, 0.0000027229, 0.0000027213, + 0.0000027190, 0.0000027153, 0.0000027113, 0.0000027082, 0.0000027056, + 0.0000027035, 0.0000027027, 0.0000027033, 0.0000027052, 0.0000027073, + 0.0000027088, 0.0000027096, 0.0000027107, 0.0000027151, 0.0000027241, + 0.0000027337, 0.0000027402, 0.0000027438, 0.0000027455, 0.0000027475, + 0.0000027517, 0.0000027570, 0.0000027601, 0.0000027607, 0.0000027602, + 0.0000027610, 0.0000027629, 0.0000027640, 0.0000027639, 0.0000027634, + 0.0000027634, 0.0000027642, 0.0000027638, 0.0000027615, 0.0000027579, + 0.0000027546, 0.0000027517, 0.0000027511, 0.0000027534, 0.0000027577, + 0.0000027615, 0.0000027652, 0.0000027703, 0.0000027763, 0.0000027797, + 0.0000027781, 0.0000027714, 0.0000027622, 0.0000027512, 0.0000027362, + 0.0000027178, 0.0000027029, 0.0000026949, 0.0000026908, 0.0000026893, + 0.0000026906, 0.0000026944, 0.0000026984, 0.0000027005, 0.0000027027, + 0.0000027075, 0.0000027109, 0.0000027103, 0.0000026997, 0.0000026837, + 0.0000026730, 0.0000026716, 0.0000026729, 0.0000026771, 0.0000026939, + 0.0000027244, 0.0000027520, 0.0000027634, 0.0000027631, 0.0000027596, + 0.0000027571, 0.0000027586, 0.0000027641, 0.0000027689, 0.0000027709, + 0.0000027704, 0.0000027699, 0.0000027739, 0.0000027744, 0.0000027659, + 0.0000027544, 0.0000027437, 0.0000027438, 0.0000027571, 0.0000027655, + 0.0000027715, 0.0000027866, 0.0000028050, 0.0000028129, 0.0000028139, + 0.0000028164, 0.0000028179, 0.0000028177, 0.0000028187, 0.0000028197, + 0.0000028210, 0.0000028238, 0.0000028291, 0.0000028371, 0.0000028458, + 0.0000028520, 0.0000028524, 0.0000028442, 0.0000028310, 0.0000028189, + 0.0000028100, 0.0000028010, 0.0000027948, 0.0000027924, 0.0000027892, + 0.0000027816, 0.0000027725, 0.0000027629, 0.0000027573, 0.0000027559, + 0.0000027549, 0.0000027526, 0.0000027513, 0.0000027517, 0.0000027505, + 0.0000027509, 0.0000027537, 0.0000027623, 0.0000027699, 0.0000027734, + 0.0000027760, 0.0000027731, 0.0000027644, 0.0000027539, 0.0000027427, + 0.0000027394, 0.0000027368, 0.0000027375, 0.0000027432, 0.0000027504, + 0.0000027585, 0.0000027629, 0.0000027635, 0.0000027622, 0.0000027579, + 0.0000027526, 0.0000027525, 0.0000027599, 0.0000027724, 0.0000027848, + 0.0000027908, 0.0000027933, 0.0000027945, 0.0000027964, 0.0000028016, + 0.0000028036, 0.0000028056, 0.0000028170, 0.0000028336, 0.0000028402, + 0.0000028450, 0.0000028462, 0.0000028426, 0.0000028402, 0.0000028434, + 0.0000028458, 0.0000028429, 0.0000028407, 0.0000028400, 0.0000028413, + 0.0000028448, 0.0000028481, 0.0000028499, 0.0000028506, 0.0000028498, + 0.0000028491, 0.0000028498, 0.0000028526, 0.0000028547, 0.0000028562, + 0.0000028581, 0.0000028611, 0.0000028658, 0.0000028721, 0.0000028785, + 0.0000028816, 0.0000028820, 0.0000028783, 0.0000028717, 0.0000028640, + 0.0000028578, 0.0000028535, 0.0000028521, 0.0000028540, 0.0000028564, + 0.0000028545, 0.0000028439, 0.0000028300, 0.0000028219, 0.0000028212, + 0.0000028250, 0.0000028324, 0.0000028387, 0.0000028376, 0.0000028324, + 0.0000028251, 0.0000028145, 0.0000028019, 0.0000027922, 0.0000027893, + 0.0000027932, 0.0000027975, 0.0000028004, 0.0000028050, 0.0000028120, + 0.0000028198, 0.0000028264, 0.0000028308, 0.0000028322, 0.0000028301, + 0.0000028243, 0.0000028148, 0.0000028031, 0.0000027918, 0.0000027853, + 0.0000027846, 0.0000027867, 0.0000027877, 0.0000027872, 0.0000027870, + 0.0000027898, 0.0000027926, 0.0000027957, 0.0000027964, 0.0000027941, + 0.0000027885, 0.0000027836, 0.0000027818, 0.0000027847, 0.0000027918, + 0.0000027982, 0.0000028060, 0.0000028108, 0.0000028132, 0.0000028144, + 0.0000028145, 0.0000028128, 0.0000028088, 0.0000028036, 0.0000027998, + 0.0000027976, 0.0000027984, 0.0000027996, 0.0000028025, 0.0000028064, + 0.0000028130, 0.0000028218, 0.0000028296, 0.0000028330, 0.0000028314, + 0.0000028253, 0.0000028186, 0.0000028143, 0.0000028113, 0.0000028092, + 0.0000028080, 0.0000028076, 0.0000028062, 0.0000028054, 0.0000028092, + 0.0000028190, 0.0000028306, 0.0000028383, 0.0000028415, 0.0000028448, + 0.0000028494, 0.0000028505, 0.0000028457, 0.0000028412, 0.0000028402, + 0.0000028386, 0.0000028345, 0.0000028315, 0.0000028278, 0.0000028200, + 0.0000028140, 0.0000028139, 0.0000028157, 0.0000028154, 0.0000028124, + 0.0000028114, 0.0000028126, 0.0000028102, 0.0000028027, 0.0000027967, + 0.0000027944, 0.0000027911, 0.0000027854, 0.0000027786, 0.0000027733, + 0.0000027759, 0.0000027852, 0.0000027893, 0.0000027860, 0.0000027770, + 0.0000027682, 0.0000027624, 0.0000027615, 0.0000027646, 0.0000027695, + 0.0000027740, 0.0000027788, 0.0000027843, 0.0000027879, 0.0000027868, + 0.0000027766, 0.0000027553, 0.0000027325, 0.0000027214, 0.0000027249, + 0.0000027358, 0.0000027421, 0.0000027426, 0.0000027329, 0.0000027133, + 0.0000026971, 0.0000026934, 0.0000026957, 0.0000027051, 0.0000027222, + 0.0000027413, 0.0000027547, 0.0000027553, 0.0000027443, 0.0000027290, + 0.0000027204, 0.0000027191, 0.0000027201, 0.0000027251, 0.0000027335, + 0.0000027411, 0.0000027455, 0.0000027480, 0.0000027523, 0.0000027582, + 0.0000027638, 0.0000027682, 0.0000027708, 0.0000027736, 0.0000027793, + 0.0000027891, 0.0000027977, 0.0000027996, 0.0000027947, 0.0000027846, + 0.0000027744, 0.0000027700, 0.0000027730, 0.0000027848, 0.0000028031, + 0.0000028213, 0.0000028285, 0.0000028241, 0.0000028105, 0.0000027992, + 0.0000027953, 0.0000027934, 0.0000027871, 0.0000027769, 0.0000027661, + 0.0000027601, 0.0000027593, 0.0000027592, 0.0000027583, 0.0000027576, + 0.0000027544, 0.0000027461, 0.0000027375, 0.0000027352, 0.0000027381, + 0.0000027430, 0.0000027479, 0.0000027553, 0.0000027634, 0.0000027673, + 0.0000027732, 0.0000027875, 0.0000027970, 0.0000027910, 0.0000027820, + 0.0000027843, 0.0000027947, 0.0000028054, 0.0000028123, 0.0000028129, + 0.0000028073, 0.0000028019, 0.0000027996, 0.0000027994, 0.0000028021, + 0.0000028062, 0.0000028150, 0.0000028265, 0.0000028348, 0.0000028486, + 0.0000028682, 0.0000028826, 0.0000028902, 0.0000028978, 0.0000029045, + 0.0000029068, 0.0000029061, 0.0000029020, 0.0000028949, 0.0000028847, + 0.0000028707, 0.0000028562, 0.0000028415, 0.0000028283, 0.0000028181, + 0.0000028102, 0.0000028010, 0.0000027892, 0.0000027799, 0.0000027770, + 0.0000027762, 0.0000027721, 0.0000027659, 0.0000027602, 0.0000027572, + 0.0000027567, 0.0000027582, 0.0000027588, 0.0000027555, 0.0000027523, + 0.0000027550, 0.0000027697, 0.0000027905, 0.0000028090, 0.0000028154, + 0.0000028110, 0.0000028079, 0.0000028142, 0.0000028238, 0.0000028246, + 0.0000028162, 0.0000028043, 0.0000027967, 0.0000027916, 0.0000027840, + 0.0000027737, 0.0000027641, 0.0000027569, 0.0000027520, 0.0000027488, + 0.0000027472, 0.0000027480, 0.0000027493, 0.0000027487, 0.0000027475, + 0.0000027496, 0.0000027570, 0.0000027670, 0.0000027750, 0.0000027795, + 0.0000027799, 0.0000027738, 0.0000027608, 0.0000027481, 0.0000027418, + 0.0000027409, 0.0000027411, 0.0000027394, 0.0000027367, 0.0000027361, + 0.0000027392, 0.0000027466, 0.0000027570, 0.0000027649, 0.0000027687, + 0.0000027694, 0.0000027679, 0.0000027654, 0.0000027643, 0.0000027661, + 0.0000027702, 0.0000027752, 0.0000027801, 0.0000027853, 0.0000027916, + 0.0000027980, 0.0000028003, 0.0000027996, 0.0000027934, 0.0000027849, + 0.0000027777, 0.0000027732, 0.0000027708, 0.0000027699, 0.0000027695, + 0.0000027696, 0.0000027699, 0.0000027713, 0.0000027741, 0.0000027759, + 0.0000027753, 0.0000027718, 0.0000027660, 0.0000027588, 0.0000027527, + 0.0000027503, 0.0000027497, 0.0000027494, 0.0000027493, 0.0000027499, + 0.0000027513, 0.0000027512, 0.0000027485, 0.0000027443, 0.0000027405, + 0.0000027376, 0.0000027349, 0.0000027319, 0.0000027277, 0.0000027237, + 0.0000027205, 0.0000027178, 0.0000027157, 0.0000027143, 0.0000027141, + 0.0000027156, 0.0000027183, 0.0000027210, 0.0000027236, 0.0000027259, + 0.0000027292, 0.0000027359, 0.0000027449, 0.0000027528, 0.0000027592, + 0.0000027652, 0.0000027709, 0.0000027776, 0.0000027845, 0.0000027877, + 0.0000027873, 0.0000027834, 0.0000027804, 0.0000027790, 0.0000027772, + 0.0000027739, 0.0000027703, 0.0000027683, 0.0000027670, 0.0000027657, + 0.0000027626, 0.0000027585, 0.0000027549, 0.0000027523, 0.0000027519, + 0.0000027545, 0.0000027603, 0.0000027645, 0.0000027657, 0.0000027674, + 0.0000027721, 0.0000027784, 0.0000027808, 0.0000027780, 0.0000027705, + 0.0000027598, 0.0000027466, 0.0000027293, 0.0000027098, 0.0000026970, + 0.0000026920, 0.0000026913, 0.0000026924, 0.0000026960, 0.0000027019, + 0.0000027072, 0.0000027099, 0.0000027110, 0.0000027097, 0.0000027028, + 0.0000026907, 0.0000026771, 0.0000026692, 0.0000026690, 0.0000026716, + 0.0000026790, 0.0000026997, 0.0000027308, 0.0000027571, 0.0000027672, + 0.0000027655, 0.0000027598, 0.0000027577, 0.0000027631, 0.0000027718, + 0.0000027744, 0.0000027745, 0.0000027746, 0.0000027730, 0.0000027741, + 0.0000027749, 0.0000027666, 0.0000027541, 0.0000027415, 0.0000027396, + 0.0000027554, 0.0000027682, 0.0000027732, 0.0000027843, 0.0000028004, + 0.0000028105, 0.0000028130, 0.0000028162, 0.0000028214, 0.0000028230, + 0.0000028226, 0.0000028227, 0.0000028239, 0.0000028264, 0.0000028289, + 0.0000028333, 0.0000028413, 0.0000028482, 0.0000028505, 0.0000028469, + 0.0000028352, 0.0000028204, 0.0000028041, 0.0000027946, 0.0000027933, + 0.0000027950, 0.0000027942, 0.0000027863, 0.0000027735, 0.0000027598, + 0.0000027473, 0.0000027402, 0.0000027383, 0.0000027397, 0.0000027430, + 0.0000027464, 0.0000027528, 0.0000027567, 0.0000027553, 0.0000027514, + 0.0000027507, 0.0000027536, 0.0000027572, 0.0000027614, 0.0000027639, + 0.0000027633, 0.0000027576, 0.0000027490, 0.0000027454, 0.0000027421, + 0.0000027392, 0.0000027423, 0.0000027472, 0.0000027542, 0.0000027600, + 0.0000027625, 0.0000027628, 0.0000027603, 0.0000027545, 0.0000027496, + 0.0000027489, 0.0000027558, 0.0000027696, 0.0000027827, 0.0000027914, + 0.0000027941, 0.0000027927, 0.0000027947, 0.0000028036, 0.0000028102, + 0.0000028126, 0.0000028178, 0.0000028304, 0.0000028425, 0.0000028492, + 0.0000028544, 0.0000028544, 0.0000028507, 0.0000028490, 0.0000028466, + 0.0000028428, 0.0000028407, 0.0000028418, 0.0000028450, 0.0000028508, + 0.0000028545, 0.0000028559, 0.0000028563, 0.0000028547, 0.0000028529, + 0.0000028532, 0.0000028549, 0.0000028564, 0.0000028580, 0.0000028617, + 0.0000028674, 0.0000028725, 0.0000028771, 0.0000028810, 0.0000028813, + 0.0000028799, 0.0000028738, 0.0000028664, 0.0000028601, 0.0000028561, + 0.0000028528, 0.0000028507, 0.0000028522, 0.0000028554, 0.0000028565, + 0.0000028526, 0.0000028391, 0.0000028251, 0.0000028188, 0.0000028198, + 0.0000028269, 0.0000028361, 0.0000028398, 0.0000028377, 0.0000028319, + 0.0000028252, 0.0000028146, 0.0000028029, 0.0000027978, 0.0000027997, + 0.0000028035, 0.0000028070, 0.0000028124, 0.0000028202, 0.0000028271, + 0.0000028303, 0.0000028306, 0.0000028297, 0.0000028256, 0.0000028185, + 0.0000028083, 0.0000027973, 0.0000027867, 0.0000027807, 0.0000027794, + 0.0000027817, 0.0000027840, 0.0000027859, 0.0000027885, 0.0000027936, + 0.0000028001, 0.0000028048, 0.0000028053, 0.0000028019, 0.0000027939, + 0.0000027849, 0.0000027797, 0.0000027806, 0.0000027880, 0.0000027991, + 0.0000028094, 0.0000028161, 0.0000028192, 0.0000028199, 0.0000028193, + 0.0000028177, 0.0000028151, 0.0000028115, 0.0000028077, 0.0000028035, + 0.0000028002, 0.0000027985, 0.0000027983, 0.0000027987, 0.0000027996, + 0.0000028048, 0.0000028123, 0.0000028183, 0.0000028203, 0.0000028189, + 0.0000028153, 0.0000028119, 0.0000028097, 0.0000028085, 0.0000028087, + 0.0000028092, 0.0000028077, 0.0000028047, 0.0000028039, 0.0000028101, + 0.0000028218, 0.0000028306, 0.0000028327, 0.0000028335, 0.0000028379, + 0.0000028423, 0.0000028427, 0.0000028417, 0.0000028407, 0.0000028382, + 0.0000028327, 0.0000028286, 0.0000028250, 0.0000028178, 0.0000028128, + 0.0000028146, 0.0000028191, 0.0000028190, 0.0000028144, 0.0000028078, + 0.0000028057, 0.0000028042, 0.0000028004, 0.0000027960, 0.0000027925, + 0.0000027873, 0.0000027820, 0.0000027790, 0.0000027762, 0.0000027759, + 0.0000027803, 0.0000027829, 0.0000027806, 0.0000027760, 0.0000027710, + 0.0000027646, 0.0000027609, 0.0000027627, 0.0000027671, 0.0000027715, + 0.0000027767, 0.0000027828, 0.0000027856, 0.0000027829, 0.0000027704, + 0.0000027499, 0.0000027301, 0.0000027223, 0.0000027261, 0.0000027380, + 0.0000027435, 0.0000027426, 0.0000027343, 0.0000027159, 0.0000026989, + 0.0000026923, 0.0000026931, 0.0000026995, 0.0000027144, 0.0000027342, + 0.0000027524, 0.0000027602, 0.0000027553, 0.0000027405, 0.0000027246, + 0.0000027150, 0.0000027127, 0.0000027143, 0.0000027208, 0.0000027281, + 0.0000027329, 0.0000027368, 0.0000027423, 0.0000027500, 0.0000027568, + 0.0000027628, 0.0000027662, 0.0000027689, 0.0000027735, 0.0000027822, + 0.0000027930, 0.0000027997, 0.0000027994, 0.0000027922, 0.0000027810, + 0.0000027729, 0.0000027721, 0.0000027792, 0.0000027928, 0.0000028110, + 0.0000028281, 0.0000028336, 0.0000028262, 0.0000028116, 0.0000027998, + 0.0000027954, 0.0000027939, 0.0000027893, 0.0000027817, 0.0000027728, + 0.0000027664, 0.0000027640, 0.0000027640, 0.0000027649, 0.0000027652, + 0.0000027603, 0.0000027485, 0.0000027392, 0.0000027378, 0.0000027419, + 0.0000027478, 0.0000027549, 0.0000027637, 0.0000027713, 0.0000027780, + 0.0000027909, 0.0000028058, 0.0000028087, 0.0000028013, 0.0000027968, + 0.0000028008, 0.0000028098, 0.0000028164, 0.0000028182, 0.0000028156, + 0.0000028106, 0.0000028082, 0.0000028073, 0.0000028045, 0.0000028003, + 0.0000028019, 0.0000028156, 0.0000028304, 0.0000028410, 0.0000028541, + 0.0000028667, 0.0000028755, 0.0000028829, 0.0000028926, 0.0000029017, + 0.0000029059, 0.0000029056, 0.0000029018, 0.0000028945, 0.0000028833, + 0.0000028678, 0.0000028516, 0.0000028361, 0.0000028229, 0.0000028131, + 0.0000028055, 0.0000027973, 0.0000027872, 0.0000027797, 0.0000027775, + 0.0000027761, 0.0000027714, 0.0000027657, 0.0000027608, 0.0000027576, + 0.0000027559, 0.0000027566, 0.0000027581, 0.0000027572, 0.0000027570, + 0.0000027638, 0.0000027815, 0.0000028029, 0.0000028172, 0.0000028177, + 0.0000028097, 0.0000028062, 0.0000028156, 0.0000028278, 0.0000028283, + 0.0000028173, 0.0000028022, 0.0000027929, 0.0000027889, 0.0000027831, + 0.0000027743, 0.0000027643, 0.0000027545, 0.0000027470, 0.0000027435, + 0.0000027429, 0.0000027449, 0.0000027482, 0.0000027494, 0.0000027477, + 0.0000027469, 0.0000027501, 0.0000027575, 0.0000027654, 0.0000027713, + 0.0000027735, 0.0000027715, 0.0000027625, 0.0000027510, 0.0000027441, + 0.0000027432, 0.0000027436, 0.0000027418, 0.0000027379, 0.0000027356, + 0.0000027373, 0.0000027448, 0.0000027556, 0.0000027643, 0.0000027680, + 0.0000027686, 0.0000027667, 0.0000027650, 0.0000027652, 0.0000027666, + 0.0000027689, 0.0000027727, 0.0000027770, 0.0000027819, 0.0000027873, + 0.0000027931, 0.0000027971, 0.0000027967, 0.0000027911, 0.0000027826, + 0.0000027752, 0.0000027704, 0.0000027680, 0.0000027668, 0.0000027657, + 0.0000027646, 0.0000027649, 0.0000027675, 0.0000027706, 0.0000027757, + 0.0000027797, 0.0000027802, 0.0000027769, 0.0000027701, 0.0000027612, + 0.0000027534, 0.0000027487, 0.0000027482, 0.0000027485, 0.0000027494, + 0.0000027519, 0.0000027541, 0.0000027540, 0.0000027524, 0.0000027492, + 0.0000027457, 0.0000027427, 0.0000027399, 0.0000027372, 0.0000027338, + 0.0000027300, 0.0000027271, 0.0000027257, 0.0000027255, 0.0000027258, + 0.0000027260, 0.0000027270, 0.0000027288, 0.0000027313, 0.0000027354, + 0.0000027407, 0.0000027466, 0.0000027547, 0.0000027649, 0.0000027738, + 0.0000027809, 0.0000027870, 0.0000027919, 0.0000027961, 0.0000027994, + 0.0000028003, 0.0000027959, 0.0000027899, 0.0000027829, 0.0000027789, + 0.0000027766, 0.0000027734, 0.0000027695, 0.0000027663, 0.0000027652, + 0.0000027647, 0.0000027628, 0.0000027595, 0.0000027567, 0.0000027560, + 0.0000027574, 0.0000027597, 0.0000027640, 0.0000027666, 0.0000027641, + 0.0000027617, 0.0000027650, 0.0000027740, 0.0000027816, 0.0000027826, + 0.0000027791, 0.0000027697, 0.0000027556, 0.0000027398, 0.0000027225, + 0.0000027053, 0.0000026950, 0.0000026933, 0.0000026948, 0.0000026982, + 0.0000027037, 0.0000027104, 0.0000027147, 0.0000027149, 0.0000027086, + 0.0000026957, 0.0000026817, 0.0000026722, 0.0000026681, 0.0000026681, + 0.0000026702, 0.0000026798, 0.0000027038, 0.0000027359, 0.0000027603, + 0.0000027686, 0.0000027672, 0.0000027607, 0.0000027584, 0.0000027661, + 0.0000027741, 0.0000027748, 0.0000027749, 0.0000027783, 0.0000027788, + 0.0000027773, 0.0000027761, 0.0000027675, 0.0000027533, 0.0000027385, + 0.0000027349, 0.0000027504, 0.0000027691, 0.0000027771, 0.0000027866, + 0.0000027992, 0.0000028085, 0.0000028109, 0.0000028131, 0.0000028198, + 0.0000028255, 0.0000028268, 0.0000028266, 0.0000028271, 0.0000028297, + 0.0000028329, 0.0000028354, 0.0000028388, 0.0000028450, 0.0000028484, + 0.0000028462, 0.0000028376, 0.0000028269, 0.0000028139, 0.0000028012, + 0.0000027966, 0.0000027971, 0.0000027955, 0.0000027885, 0.0000027791, + 0.0000027686, 0.0000027560, 0.0000027439, 0.0000027356, 0.0000027296, + 0.0000027251, 0.0000027246, 0.0000027260, 0.0000027331, 0.0000027441, + 0.0000027534, 0.0000027582, 0.0000027597, 0.0000027615, 0.0000027646, + 0.0000027697, 0.0000027751, 0.0000027787, 0.0000027763, 0.0000027671, + 0.0000027620, 0.0000027579, 0.0000027518, 0.0000027524, 0.0000027550, + 0.0000027589, 0.0000027629, 0.0000027656, 0.0000027681, 0.0000027687, + 0.0000027653, 0.0000027589, 0.0000027537, 0.0000027523, 0.0000027582, + 0.0000027694, 0.0000027806, 0.0000027901, 0.0000027928, 0.0000027904, + 0.0000027913, 0.0000027985, 0.0000028097, 0.0000028193, 0.0000028227, + 0.0000028287, 0.0000028407, 0.0000028519, 0.0000028605, 0.0000028650, + 0.0000028625, 0.0000028544, 0.0000028464, 0.0000028432, 0.0000028430, + 0.0000028459, 0.0000028506, 0.0000028561, 0.0000028597, 0.0000028613, + 0.0000028605, 0.0000028578, 0.0000028546, 0.0000028545, 0.0000028552, + 0.0000028572, 0.0000028609, 0.0000028671, 0.0000028736, 0.0000028774, + 0.0000028795, 0.0000028797, 0.0000028769, 0.0000028720, 0.0000028645, + 0.0000028570, 0.0000028519, 0.0000028507, 0.0000028503, 0.0000028508, + 0.0000028518, 0.0000028533, 0.0000028542, 0.0000028530, 0.0000028460, + 0.0000028306, 0.0000028183, 0.0000028153, 0.0000028200, 0.0000028313, + 0.0000028406, 0.0000028431, 0.0000028394, 0.0000028343, 0.0000028264, + 0.0000028156, 0.0000028081, 0.0000028069, 0.0000028086, 0.0000028119, + 0.0000028176, 0.0000028255, 0.0000028315, 0.0000028328, 0.0000028313, + 0.0000028288, 0.0000028248, 0.0000028184, 0.0000028102, 0.0000028013, + 0.0000027937, 0.0000027887, 0.0000027871, 0.0000027891, 0.0000027926, + 0.0000027965, 0.0000028012, 0.0000028082, 0.0000028162, 0.0000028216, + 0.0000028217, 0.0000028175, 0.0000028072, 0.0000027942, 0.0000027839, + 0.0000027813, 0.0000027876, 0.0000028013, 0.0000028137, 0.0000028234, + 0.0000028279, 0.0000028281, 0.0000028259, 0.0000028228, 0.0000028208, + 0.0000028195, 0.0000028180, 0.0000028148, 0.0000028109, 0.0000028076, + 0.0000028050, 0.0000028022, 0.0000027987, 0.0000027976, 0.0000027996, + 0.0000028040, 0.0000028068, 0.0000028070, 0.0000028056, 0.0000028034, + 0.0000028015, 0.0000028008, 0.0000028017, 0.0000028040, 0.0000028045, + 0.0000028016, 0.0000027982, 0.0000028006, 0.0000028102, 0.0000028198, + 0.0000028232, 0.0000028236, 0.0000028260, 0.0000028298, 0.0000028341, + 0.0000028387, 0.0000028405, 0.0000028376, 0.0000028313, 0.0000028270, + 0.0000028224, 0.0000028143, 0.0000028099, 0.0000028141, 0.0000028219, + 0.0000028226, 0.0000028161, 0.0000028069, 0.0000028008, 0.0000027985, + 0.0000027972, 0.0000027953, 0.0000027919, 0.0000027856, 0.0000027797, + 0.0000027788, 0.0000027793, 0.0000027778, 0.0000027777, 0.0000027778, + 0.0000027754, 0.0000027738, 0.0000027741, 0.0000027709, 0.0000027654, + 0.0000027641, 0.0000027668, 0.0000027703, 0.0000027741, 0.0000027781, + 0.0000027792, 0.0000027744, 0.0000027619, 0.0000027441, 0.0000027285, + 0.0000027234, 0.0000027281, 0.0000027387, 0.0000027433, 0.0000027411, + 0.0000027342, 0.0000027186, 0.0000027020, 0.0000026925, 0.0000026913, + 0.0000026948, 0.0000027065, 0.0000027259, 0.0000027467, 0.0000027612, + 0.0000027630, 0.0000027538, 0.0000027376, 0.0000027213, 0.0000027109, + 0.0000027085, 0.0000027118, 0.0000027178, 0.0000027230, 0.0000027271, + 0.0000027320, 0.0000027399, 0.0000027482, 0.0000027563, 0.0000027618, + 0.0000027651, 0.0000027691, 0.0000027767, 0.0000027877, 0.0000027978, + 0.0000028023, 0.0000027997, 0.0000027897, 0.0000027788, 0.0000027747, + 0.0000027780, 0.0000027875, 0.0000028010, 0.0000028183, 0.0000028325, + 0.0000028343, 0.0000028244, 0.0000028090, 0.0000027979, 0.0000027939, + 0.0000027924, 0.0000027894, 0.0000027838, 0.0000027754, 0.0000027689, + 0.0000027677, 0.0000027696, 0.0000027714, 0.0000027695, 0.0000027611, + 0.0000027478, 0.0000027403, 0.0000027410, 0.0000027456, 0.0000027528, + 0.0000027629, 0.0000027727, 0.0000027817, 0.0000027934, 0.0000028068, + 0.0000028156, 0.0000028180, 0.0000028165, 0.0000028144, 0.0000028160, + 0.0000028193, 0.0000028203, 0.0000028179, 0.0000028144, 0.0000028137, + 0.0000028159, 0.0000028156, 0.0000028090, 0.0000027985, 0.0000028000, + 0.0000028177, 0.0000028350, 0.0000028481, 0.0000028599, 0.0000028646, + 0.0000028678, 0.0000028739, 0.0000028855, 0.0000028973, 0.0000029033, + 0.0000029035, 0.0000028999, 0.0000028924, 0.0000028808, 0.0000028654, + 0.0000028502, 0.0000028364, 0.0000028253, 0.0000028149, 0.0000028056, + 0.0000027962, 0.0000027874, 0.0000027808, 0.0000027777, 0.0000027758, + 0.0000027717, 0.0000027673, 0.0000027624, 0.0000027582, 0.0000027558, + 0.0000027564, 0.0000027598, 0.0000027625, 0.0000027660, 0.0000027755, + 0.0000027931, 0.0000028121, 0.0000028209, 0.0000028172, 0.0000028046, + 0.0000028014, 0.0000028145, 0.0000028291, 0.0000028307, 0.0000028203, + 0.0000028039, 0.0000027927, 0.0000027885, 0.0000027842, 0.0000027775, + 0.0000027694, 0.0000027590, 0.0000027490, 0.0000027410, 0.0000027388, + 0.0000027400, 0.0000027435, 0.0000027469, 0.0000027466, 0.0000027436, + 0.0000027422, 0.0000027448, 0.0000027502, 0.0000027560, 0.0000027611, + 0.0000027621, 0.0000027584, 0.0000027502, 0.0000027439, 0.0000027428, + 0.0000027450, 0.0000027460, 0.0000027445, 0.0000027420, 0.0000027424, + 0.0000027477, 0.0000027560, 0.0000027621, 0.0000027645, 0.0000027646, + 0.0000027641, 0.0000027647, 0.0000027675, 0.0000027703, 0.0000027712, + 0.0000027722, 0.0000027758, 0.0000027803, 0.0000027842, 0.0000027874, + 0.0000027895, 0.0000027893, 0.0000027856, 0.0000027799, 0.0000027754, + 0.0000027732, 0.0000027715, 0.0000027705, 0.0000027695, 0.0000027680, + 0.0000027667, 0.0000027670, 0.0000027706, 0.0000027760, 0.0000027817, + 0.0000027860, 0.0000027866, 0.0000027832, 0.0000027755, 0.0000027653, + 0.0000027567, 0.0000027515, 0.0000027497, 0.0000027501, 0.0000027517, + 0.0000027540, 0.0000027551, 0.0000027547, 0.0000027531, 0.0000027507, + 0.0000027478, 0.0000027455, 0.0000027432, 0.0000027414, 0.0000027388, + 0.0000027360, 0.0000027346, 0.0000027357, 0.0000027383, 0.0000027401, + 0.0000027397, 0.0000027387, 0.0000027386, 0.0000027419, 0.0000027504, + 0.0000027618, 0.0000027714, 0.0000027785, 0.0000027845, 0.0000027896, + 0.0000027937, 0.0000027973, 0.0000027997, 0.0000028011, 0.0000028017, + 0.0000028006, 0.0000027957, 0.0000027875, 0.0000027807, 0.0000027760, + 0.0000027752, 0.0000027731, 0.0000027694, 0.0000027662, 0.0000027655, + 0.0000027657, 0.0000027650, 0.0000027634, 0.0000027625, 0.0000027641, + 0.0000027662, 0.0000027672, 0.0000027670, 0.0000027654, 0.0000027591, + 0.0000027535, 0.0000027565, 0.0000027681, 0.0000027796, 0.0000027848, + 0.0000027843, 0.0000027781, 0.0000027645, 0.0000027465, 0.0000027309, + 0.0000027175, 0.0000027043, 0.0000026959, 0.0000026958, 0.0000027010, + 0.0000027069, 0.0000027122, 0.0000027164, 0.0000027168, 0.0000027094, + 0.0000026919, 0.0000026747, 0.0000026673, 0.0000026681, 0.0000026698, + 0.0000026714, 0.0000026807, 0.0000027053, 0.0000027383, 0.0000027619, + 0.0000027687, 0.0000027673, 0.0000027613, 0.0000027590, 0.0000027663, + 0.0000027731, 0.0000027723, 0.0000027734, 0.0000027814, 0.0000027849, + 0.0000027828, 0.0000027781, 0.0000027686, 0.0000027532, 0.0000027353, + 0.0000027293, 0.0000027446, 0.0000027668, 0.0000027783, 0.0000027907, + 0.0000028027, 0.0000028080, 0.0000028093, 0.0000028093, 0.0000028149, + 0.0000028232, 0.0000028279, 0.0000028307, 0.0000028327, 0.0000028336, + 0.0000028378, 0.0000028430, 0.0000028445, 0.0000028446, 0.0000028467, + 0.0000028452, 0.0000028394, 0.0000028312, 0.0000028225, 0.0000028145, + 0.0000028095, 0.0000028049, 0.0000027990, 0.0000027909, 0.0000027853, + 0.0000027798, 0.0000027723, 0.0000027608, 0.0000027489, 0.0000027408, + 0.0000027343, 0.0000027267, 0.0000027212, 0.0000027184, 0.0000027182, + 0.0000027244, 0.0000027327, 0.0000027418, 0.0000027505, 0.0000027583, + 0.0000027645, 0.0000027708, 0.0000027776, 0.0000027836, 0.0000027839, + 0.0000027762, 0.0000027688, 0.0000027651, 0.0000027595, 0.0000027573, + 0.0000027604, 0.0000027650, 0.0000027690, 0.0000027712, 0.0000027725, + 0.0000027747, 0.0000027745, 0.0000027721, 0.0000027680, 0.0000027632, + 0.0000027627, 0.0000027675, 0.0000027733, 0.0000027801, 0.0000027852, + 0.0000027881, 0.0000027904, 0.0000027903, 0.0000027925, 0.0000028032, + 0.0000028184, 0.0000028295, 0.0000028326, 0.0000028374, 0.0000028511, + 0.0000028632, 0.0000028705, 0.0000028696, 0.0000028610, 0.0000028500, + 0.0000028447, 0.0000028457, 0.0000028503, 0.0000028558, 0.0000028604, + 0.0000028640, 0.0000028646, 0.0000028625, 0.0000028595, 0.0000028571, + 0.0000028567, 0.0000028574, 0.0000028615, 0.0000028676, 0.0000028750, + 0.0000028815, 0.0000028854, 0.0000028855, 0.0000028815, 0.0000028733, + 0.0000028639, 0.0000028543, 0.0000028463, 0.0000028418, 0.0000028416, + 0.0000028450, 0.0000028493, 0.0000028524, 0.0000028529, 0.0000028517, + 0.0000028493, 0.0000028459, 0.0000028350, 0.0000028213, 0.0000028141, + 0.0000028150, 0.0000028260, 0.0000028408, 0.0000028480, 0.0000028476, + 0.0000028434, 0.0000028372, 0.0000028272, 0.0000028180, 0.0000028135, + 0.0000028130, 0.0000028159, 0.0000028223, 0.0000028293, 0.0000028334, + 0.0000028335, 0.0000028313, 0.0000028293, 0.0000028283, 0.0000028264, + 0.0000028223, 0.0000028170, 0.0000028116, 0.0000028063, 0.0000028027, + 0.0000028025, 0.0000028044, 0.0000028079, 0.0000028131, 0.0000028206, + 0.0000028289, 0.0000028346, 0.0000028351, 0.0000028312, 0.0000028218, + 0.0000028083, 0.0000027953, 0.0000027884, 0.0000027910, 0.0000028060, + 0.0000028177, 0.0000028291, 0.0000028360, 0.0000028377, 0.0000028363, + 0.0000028325, 0.0000028287, 0.0000028270, 0.0000028261, 0.0000028237, + 0.0000028201, 0.0000028180, 0.0000028166, 0.0000028141, 0.0000028085, + 0.0000028019, 0.0000027997, 0.0000028011, 0.0000028031, 0.0000028027, + 0.0000028014, 0.0000027996, 0.0000027975, 0.0000027958, 0.0000027955, + 0.0000027973, 0.0000027989, 0.0000027977, 0.0000027944, 0.0000027953, + 0.0000028036, 0.0000028138, 0.0000028194, 0.0000028212, 0.0000028223, + 0.0000028218, 0.0000028230, 0.0000028306, 0.0000028377, 0.0000028365, + 0.0000028307, 0.0000028263, 0.0000028208, 0.0000028111, 0.0000028065, + 0.0000028123, 0.0000028230, 0.0000028252, 0.0000028176, 0.0000028077, + 0.0000027985, 0.0000027942, 0.0000027933, 0.0000027932, 0.0000027910, + 0.0000027851, 0.0000027787, 0.0000027781, 0.0000027819, 0.0000027814, + 0.0000027780, 0.0000027757, 0.0000027726, 0.0000027711, 0.0000027755, + 0.0000027790, 0.0000027764, 0.0000027714, 0.0000027701, 0.0000027714, + 0.0000027726, 0.0000027732, 0.0000027725, 0.0000027675, 0.0000027568, + 0.0000027420, 0.0000027286, 0.0000027241, 0.0000027282, 0.0000027373, + 0.0000027414, 0.0000027397, 0.0000027335, 0.0000027208, 0.0000027045, + 0.0000026934, 0.0000026892, 0.0000026902, 0.0000026996, 0.0000027173, + 0.0000027379, 0.0000027559, 0.0000027643, 0.0000027626, 0.0000027531, + 0.0000027366, 0.0000027200, 0.0000027099, 0.0000027083, 0.0000027119, + 0.0000027162, 0.0000027200, 0.0000027243, 0.0000027316, 0.0000027408, + 0.0000027502, 0.0000027575, 0.0000027622, 0.0000027659, 0.0000027725, + 0.0000027831, 0.0000027948, 0.0000028036, 0.0000028056, 0.0000027990, + 0.0000027872, 0.0000027783, 0.0000027777, 0.0000027842, 0.0000027942, + 0.0000028069, 0.0000028231, 0.0000028340, 0.0000028317, 0.0000028181, + 0.0000028034, 0.0000027952, 0.0000027927, 0.0000027911, 0.0000027880, + 0.0000027817, 0.0000027740, 0.0000027706, 0.0000027725, 0.0000027759, + 0.0000027759, 0.0000027704, 0.0000027592, 0.0000027480, 0.0000027441, + 0.0000027450, 0.0000027502, 0.0000027614, 0.0000027751, 0.0000027863, + 0.0000027959, 0.0000028057, 0.0000028158, 0.0000028258, 0.0000028312, + 0.0000028301, 0.0000028254, 0.0000028228, 0.0000028216, 0.0000028183, + 0.0000028144, 0.0000028145, 0.0000028197, 0.0000028253, 0.0000028233, + 0.0000028109, 0.0000027987, 0.0000028023, 0.0000028226, 0.0000028402, + 0.0000028551, 0.0000028637, 0.0000028625, 0.0000028598, 0.0000028646, + 0.0000028782, 0.0000028923, 0.0000028994, 0.0000028999, 0.0000028963, + 0.0000028881, 0.0000028764, 0.0000028626, 0.0000028505, 0.0000028404, + 0.0000028315, 0.0000028215, 0.0000028107, 0.0000028002, 0.0000027912, + 0.0000027833, 0.0000027788, 0.0000027763, 0.0000027730, 0.0000027695, + 0.0000027646, 0.0000027606, 0.0000027583, 0.0000027608, 0.0000027664, + 0.0000027716, 0.0000027776, 0.0000027882, 0.0000028040, 0.0000028185, + 0.0000028219, 0.0000028133, 0.0000027975, 0.0000027950, 0.0000028108, + 0.0000028271, 0.0000028305, 0.0000028238, 0.0000028091, 0.0000027964, + 0.0000027900, 0.0000027860, 0.0000027808, 0.0000027764, 0.0000027706, + 0.0000027604, 0.0000027483, 0.0000027395, 0.0000027375, 0.0000027389, + 0.0000027419, 0.0000027434, 0.0000027415, 0.0000027368, 0.0000027333, + 0.0000027334, 0.0000027363, 0.0000027412, 0.0000027457, 0.0000027463, + 0.0000027441, 0.0000027418, 0.0000027426, 0.0000027472, 0.0000027527, + 0.0000027561, 0.0000027567, 0.0000027554, 0.0000027549, 0.0000027570, + 0.0000027592, 0.0000027593, 0.0000027589, 0.0000027602, 0.0000027637, + 0.0000027685, 0.0000027730, 0.0000027743, 0.0000027740, 0.0000027761, + 0.0000027807, 0.0000027839, 0.0000027846, 0.0000027840, 0.0000027824, + 0.0000027794, 0.0000027771, 0.0000027764, 0.0000027779, 0.0000027792, + 0.0000027794, 0.0000027784, 0.0000027764, 0.0000027745, 0.0000027739, + 0.0000027749, 0.0000027776, 0.0000027835, 0.0000027891, 0.0000027924, + 0.0000027932, 0.0000027899, 0.0000027819, 0.0000027712, 0.0000027617, + 0.0000027555, 0.0000027529, 0.0000027529, 0.0000027534, 0.0000027545, + 0.0000027545, 0.0000027538, 0.0000027528, 0.0000027514, 0.0000027502, + 0.0000027495, 0.0000027487, 0.0000027479, 0.0000027466, 0.0000027455, + 0.0000027467, 0.0000027504, 0.0000027540, 0.0000027550, 0.0000027525, + 0.0000027492, 0.0000027500, 0.0000027583, 0.0000027733, 0.0000027880, + 0.0000027941, 0.0000027934, 0.0000027916, 0.0000027920, 0.0000027961, + 0.0000028008, 0.0000028034, 0.0000028040, 0.0000028029, 0.0000027995, + 0.0000027937, 0.0000027873, 0.0000027826, 0.0000027808, 0.0000027806, + 0.0000027805, 0.0000027781, 0.0000027746, 0.0000027729, 0.0000027728, + 0.0000027725, 0.0000027720, 0.0000027719, 0.0000027735, 0.0000027738, + 0.0000027719, 0.0000027677, 0.0000027603, 0.0000027522, 0.0000027462, + 0.0000027489, 0.0000027615, 0.0000027759, 0.0000027842, 0.0000027855, + 0.0000027822, 0.0000027711, 0.0000027527, 0.0000027345, 0.0000027230, + 0.0000027155, 0.0000027064, 0.0000027000, 0.0000027024, 0.0000027102, + 0.0000027154, 0.0000027171, 0.0000027174, 0.0000027117, 0.0000026941, + 0.0000026730, 0.0000026638, 0.0000026661, 0.0000026719, 0.0000026751, + 0.0000026829, 0.0000027053, 0.0000027381, 0.0000027627, 0.0000027686, + 0.0000027667, 0.0000027616, 0.0000027603, 0.0000027652, 0.0000027693, + 0.0000027691, 0.0000027722, 0.0000027836, 0.0000027909, 0.0000027879, + 0.0000027799, 0.0000027687, 0.0000027537, 0.0000027343, 0.0000027245, + 0.0000027385, 0.0000027631, 0.0000027772, 0.0000027920, 0.0000028081, + 0.0000028120, 0.0000028086, 0.0000028070, 0.0000028092, 0.0000028185, + 0.0000028255, 0.0000028304, 0.0000028369, 0.0000028402, 0.0000028419, + 0.0000028479, 0.0000028532, 0.0000028529, 0.0000028498, 0.0000028447, + 0.0000028393, 0.0000028338, 0.0000028298, 0.0000028226, 0.0000028216, + 0.0000028204, 0.0000028094, 0.0000027964, 0.0000027896, 0.0000027868, + 0.0000027829, 0.0000027760, 0.0000027675, 0.0000027583, 0.0000027530, + 0.0000027483, 0.0000027402, 0.0000027289, 0.0000027211, 0.0000027173, + 0.0000027202, 0.0000027244, 0.0000027271, 0.0000027313, 0.0000027376, + 0.0000027460, 0.0000027549, 0.0000027636, 0.0000027733, 0.0000027783, + 0.0000027741, 0.0000027682, 0.0000027660, 0.0000027626, 0.0000027605, + 0.0000027641, 0.0000027682, 0.0000027739, 0.0000027786, 0.0000027809, + 0.0000027817, 0.0000027814, 0.0000027794, 0.0000027777, 0.0000027775, + 0.0000027773, 0.0000027789, 0.0000027800, 0.0000027806, 0.0000027818, + 0.0000027831, 0.0000027872, 0.0000027914, 0.0000027913, 0.0000027905, + 0.0000027967, 0.0000028108, 0.0000028274, 0.0000028372, 0.0000028404, + 0.0000028472, 0.0000028606, 0.0000028695, 0.0000028699, 0.0000028663, + 0.0000028582, 0.0000028507, 0.0000028492, 0.0000028529, 0.0000028594, + 0.0000028660, 0.0000028696, 0.0000028690, 0.0000028660, 0.0000028620, + 0.0000028604, 0.0000028600, 0.0000028618, 0.0000028678, 0.0000028760, + 0.0000028848, 0.0000028927, 0.0000028978, 0.0000028961, 0.0000028877, + 0.0000028747, 0.0000028601, 0.0000028472, 0.0000028361, 0.0000028314, + 0.0000028321, 0.0000028390, 0.0000028473, 0.0000028533, 0.0000028539, + 0.0000028504, 0.0000028452, 0.0000028416, 0.0000028363, 0.0000028266, + 0.0000028168, 0.0000028151, 0.0000028254, 0.0000028433, 0.0000028542, + 0.0000028560, 0.0000028523, 0.0000028470, 0.0000028375, 0.0000028264, + 0.0000028192, 0.0000028164, 0.0000028198, 0.0000028266, 0.0000028317, + 0.0000028340, 0.0000028338, 0.0000028329, 0.0000028328, 0.0000028345, + 0.0000028354, 0.0000028333, 0.0000028290, 0.0000028237, 0.0000028175, + 0.0000028120, 0.0000028088, 0.0000028092, 0.0000028120, 0.0000028172, + 0.0000028251, 0.0000028337, 0.0000028399, 0.0000028411, 0.0000028385, + 0.0000028311, 0.0000028200, 0.0000028078, 0.0000028000, 0.0000027994, + 0.0000028127, 0.0000028226, 0.0000028342, 0.0000028427, 0.0000028463, + 0.0000028463, 0.0000028442, 0.0000028408, 0.0000028379, 0.0000028361, + 0.0000028334, 0.0000028283, 0.0000028259, 0.0000028262, 0.0000028258, + 0.0000028218, 0.0000028137, 0.0000028067, 0.0000028047, 0.0000028044, + 0.0000028035, 0.0000028021, 0.0000028013, 0.0000028000, 0.0000027978, + 0.0000027967, 0.0000027981, 0.0000027999, 0.0000027992, 0.0000027966, + 0.0000027969, 0.0000028049, 0.0000028161, 0.0000028222, 0.0000028246, + 0.0000028258, 0.0000028227, 0.0000028171, 0.0000028211, 0.0000028316, + 0.0000028339, 0.0000028296, 0.0000028260, 0.0000028204, 0.0000028091, + 0.0000028034, 0.0000028097, 0.0000028223, 0.0000028257, 0.0000028192, + 0.0000028097, 0.0000027993, 0.0000027915, 0.0000027898, 0.0000027905, + 0.0000027897, 0.0000027852, 0.0000027794, 0.0000027781, 0.0000027834, + 0.0000027864, 0.0000027820, 0.0000027765, 0.0000027725, 0.0000027709, + 0.0000027749, 0.0000027845, 0.0000027884, 0.0000027836, 0.0000027774, + 0.0000027743, 0.0000027725, 0.0000027709, 0.0000027688, 0.0000027645, + 0.0000027558, 0.0000027431, 0.0000027307, 0.0000027248, 0.0000027272, + 0.0000027344, 0.0000027376, 0.0000027368, 0.0000027337, 0.0000027237, + 0.0000027085, 0.0000026954, 0.0000026879, 0.0000026874, 0.0000026943, + 0.0000027098, 0.0000027277, 0.0000027460, 0.0000027607, 0.0000027654, + 0.0000027626, 0.0000027526, 0.0000027373, 0.0000027219, 0.0000027129, + 0.0000027115, 0.0000027132, 0.0000027156, 0.0000027192, 0.0000027254, + 0.0000027353, 0.0000027459, 0.0000027541, 0.0000027593, 0.0000027633, + 0.0000027687, 0.0000027783, 0.0000027913, 0.0000028034, 0.0000028097, + 0.0000028077, 0.0000027977, 0.0000027853, 0.0000027804, 0.0000027826, + 0.0000027902, 0.0000027985, 0.0000028106, 0.0000028253, 0.0000028313, + 0.0000028252, 0.0000028103, 0.0000027989, 0.0000027946, 0.0000027930, + 0.0000027902, 0.0000027858, 0.0000027798, 0.0000027755, 0.0000027770, + 0.0000027815, 0.0000027831, 0.0000027801, 0.0000027719, 0.0000027606, + 0.0000027527, 0.0000027519, 0.0000027565, 0.0000027673, 0.0000027804, + 0.0000027909, 0.0000027982, 0.0000028053, 0.0000028162, 0.0000028289, + 0.0000028372, 0.0000028389, 0.0000028354, 0.0000028288, 0.0000028232, + 0.0000028189, 0.0000028151, 0.0000028145, 0.0000028193, 0.0000028284, + 0.0000028324, 0.0000028259, 0.0000028104, 0.0000028010, 0.0000028105, + 0.0000028296, 0.0000028459, 0.0000028612, 0.0000028666, 0.0000028588, + 0.0000028520, 0.0000028558, 0.0000028713, 0.0000028871, 0.0000028948, + 0.0000028959, 0.0000028924, 0.0000028835, 0.0000028717, 0.0000028597, + 0.0000028509, 0.0000028450, 0.0000028386, 0.0000028294, 0.0000028181, + 0.0000028074, 0.0000027984, 0.0000027901, 0.0000027838, 0.0000027806, + 0.0000027780, 0.0000027751, 0.0000027708, 0.0000027676, 0.0000027667, + 0.0000027700, 0.0000027760, 0.0000027821, 0.0000027897, 0.0000028013, + 0.0000028148, 0.0000028232, 0.0000028219, 0.0000028091, 0.0000027908, + 0.0000027880, 0.0000028049, 0.0000028228, 0.0000028278, 0.0000028250, + 0.0000028154, 0.0000028028, 0.0000027936, 0.0000027884, 0.0000027831, + 0.0000027802, 0.0000027800, 0.0000027770, 0.0000027679, 0.0000027543, + 0.0000027432, 0.0000027393, 0.0000027402, 0.0000027417, 0.0000027422, + 0.0000027386, 0.0000027313, 0.0000027255, 0.0000027224, 0.0000027231, + 0.0000027274, 0.0000027320, 0.0000027352, 0.0000027392, 0.0000027440, + 0.0000027510, 0.0000027603, 0.0000027684, 0.0000027724, 0.0000027712, + 0.0000027649, 0.0000027584, 0.0000027550, 0.0000027540, 0.0000027549, + 0.0000027572, 0.0000027619, 0.0000027675, 0.0000027724, 0.0000027753, + 0.0000027762, 0.0000027779, 0.0000027811, 0.0000027839, 0.0000027843, + 0.0000027831, 0.0000027814, 0.0000027784, 0.0000027766, 0.0000027769, + 0.0000027812, 0.0000027856, 0.0000027880, 0.0000027889, 0.0000027882, + 0.0000027857, 0.0000027838, 0.0000027835, 0.0000027840, 0.0000027852, + 0.0000027892, 0.0000027943, 0.0000027966, 0.0000027975, 0.0000027945, + 0.0000027867, 0.0000027758, 0.0000027650, 0.0000027575, 0.0000027528, + 0.0000027512, 0.0000027502, 0.0000027488, 0.0000027481, 0.0000027482, + 0.0000027493, 0.0000027500, 0.0000027509, 0.0000027524, 0.0000027538, + 0.0000027548, 0.0000027558, 0.0000027571, 0.0000027604, 0.0000027653, + 0.0000027683, 0.0000027675, 0.0000027634, 0.0000027612, 0.0000027669, + 0.0000027816, 0.0000027987, 0.0000028076, 0.0000028053, 0.0000027963, + 0.0000027901, 0.0000027913, 0.0000027980, 0.0000028060, 0.0000028099, + 0.0000028088, 0.0000028048, 0.0000027992, 0.0000027946, 0.0000027915, + 0.0000027918, 0.0000027937, 0.0000027948, 0.0000027947, 0.0000027919, + 0.0000027872, 0.0000027839, 0.0000027828, 0.0000027824, 0.0000027815, + 0.0000027798, 0.0000027789, 0.0000027765, 0.0000027713, 0.0000027640, + 0.0000027548, 0.0000027470, 0.0000027432, 0.0000027455, 0.0000027571, + 0.0000027721, 0.0000027823, 0.0000027850, 0.0000027831, 0.0000027745, + 0.0000027581, 0.0000027390, 0.0000027259, 0.0000027201, 0.0000027181, + 0.0000027125, 0.0000027080, 0.0000027116, 0.0000027183, 0.0000027196, + 0.0000027173, 0.0000027133, 0.0000027000, 0.0000026783, 0.0000026645, + 0.0000026650, 0.0000026727, 0.0000026789, 0.0000026865, 0.0000027055, + 0.0000027360, 0.0000027620, 0.0000027693, 0.0000027664, 0.0000027610, + 0.0000027601, 0.0000027635, 0.0000027657, 0.0000027657, 0.0000027714, + 0.0000027855, 0.0000027943, 0.0000027917, 0.0000027813, 0.0000027686, + 0.0000027533, 0.0000027331, 0.0000027235, 0.0000027358, 0.0000027588, + 0.0000027736, 0.0000027924, 0.0000028112, 0.0000028175, 0.0000028121, + 0.0000028056, 0.0000028051, 0.0000028124, 0.0000028212, 0.0000028273, + 0.0000028373, 0.0000028462, 0.0000028493, 0.0000028523, 0.0000028568, + 0.0000028595, 0.0000028582, 0.0000028522, 0.0000028403, 0.0000028341, + 0.0000028317, 0.0000028276, 0.0000028271, 0.0000028286, 0.0000028263, + 0.0000028101, 0.0000027964, 0.0000027910, 0.0000027886, 0.0000027860, + 0.0000027811, 0.0000027768, 0.0000027725, 0.0000027700, 0.0000027683, + 0.0000027626, 0.0000027496, 0.0000027354, 0.0000027257, 0.0000027242, + 0.0000027257, 0.0000027264, 0.0000027270, 0.0000027283, 0.0000027311, + 0.0000027371, 0.0000027445, 0.0000027548, 0.0000027622, 0.0000027630, + 0.0000027604, 0.0000027626, 0.0000027621, 0.0000027609, 0.0000027656, + 0.0000027735, 0.0000027826, 0.0000027891, 0.0000027933, 0.0000027965, + 0.0000027961, 0.0000027915, 0.0000027857, 0.0000027836, 0.0000027869, + 0.0000027921, 0.0000027927, 0.0000027886, 0.0000027862, 0.0000027862, + 0.0000027891, 0.0000027930, 0.0000027942, 0.0000027917, 0.0000027908, + 0.0000027948, 0.0000028031, 0.0000028154, 0.0000028320, 0.0000028436, + 0.0000028477, 0.0000028539, 0.0000028625, 0.0000028659, 0.0000028653, + 0.0000028630, 0.0000028603, 0.0000028576, 0.0000028579, 0.0000028645, + 0.0000028728, 0.0000028772, 0.0000028765, 0.0000028741, 0.0000028705, + 0.0000028702, 0.0000028714, 0.0000028749, 0.0000028811, 0.0000028886, + 0.0000028967, 0.0000029036, 0.0000029063, 0.0000029025, 0.0000028927, + 0.0000028780, 0.0000028597, 0.0000028421, 0.0000028293, 0.0000028237, + 0.0000028251, 0.0000028337, 0.0000028452, 0.0000028542, 0.0000028555, + 0.0000028509, 0.0000028427, 0.0000028392, 0.0000028364, 0.0000028317, + 0.0000028246, 0.0000028221, 0.0000028324, 0.0000028505, 0.0000028614, + 0.0000028630, 0.0000028600, 0.0000028552, 0.0000028454, 0.0000028331, + 0.0000028241, 0.0000028198, 0.0000028230, 0.0000028292, 0.0000028329, + 0.0000028347, 0.0000028348, 0.0000028340, 0.0000028336, 0.0000028349, + 0.0000028361, 0.0000028346, 0.0000028311, 0.0000028268, 0.0000028220, + 0.0000028174, 0.0000028145, 0.0000028150, 0.0000028183, 0.0000028238, + 0.0000028313, 0.0000028391, 0.0000028448, 0.0000028469, 0.0000028455, + 0.0000028397, 0.0000028298, 0.0000028186, 0.0000028108, 0.0000028089, + 0.0000028199, 0.0000028276, 0.0000028391, 0.0000028496, 0.0000028550, + 0.0000028554, 0.0000028537, 0.0000028510, 0.0000028480, 0.0000028463, + 0.0000028447, 0.0000028397, 0.0000028356, 0.0000028360, 0.0000028376, + 0.0000028361, 0.0000028293, 0.0000028208, 0.0000028154, 0.0000028124, + 0.0000028094, 0.0000028072, 0.0000028063, 0.0000028052, 0.0000028026, + 0.0000028013, 0.0000028037, 0.0000028076, 0.0000028092, 0.0000028078, + 0.0000028075, 0.0000028142, 0.0000028246, 0.0000028297, 0.0000028304, + 0.0000028312, 0.0000028285, 0.0000028188, 0.0000028150, 0.0000028233, + 0.0000028290, 0.0000028277, 0.0000028253, 0.0000028198, 0.0000028082, + 0.0000028020, 0.0000028076, 0.0000028199, 0.0000028253, 0.0000028213, + 0.0000028124, 0.0000028021, 0.0000027913, 0.0000027882, 0.0000027886, + 0.0000027878, 0.0000027845, 0.0000027800, 0.0000027783, 0.0000027828, + 0.0000027892, 0.0000027884, 0.0000027806, 0.0000027745, 0.0000027737, + 0.0000027755, 0.0000027847, 0.0000027946, 0.0000027964, 0.0000027894, + 0.0000027804, 0.0000027738, 0.0000027697, 0.0000027670, 0.0000027635, + 0.0000027566, 0.0000027456, 0.0000027337, 0.0000027261, 0.0000027253, + 0.0000027294, 0.0000027330, 0.0000027338, 0.0000027329, 0.0000027257, + 0.0000027125, 0.0000026980, 0.0000026876, 0.0000026854, 0.0000026907, + 0.0000027041, 0.0000027192, 0.0000027334, 0.0000027481, 0.0000027594, + 0.0000027627, 0.0000027605, 0.0000027509, 0.0000027366, 0.0000027236, + 0.0000027170, 0.0000027156, 0.0000027158, 0.0000027171, 0.0000027212, + 0.0000027309, 0.0000027432, 0.0000027532, 0.0000027583, 0.0000027615, + 0.0000027653, 0.0000027732, 0.0000027859, 0.0000028004, 0.0000028122, + 0.0000028154, 0.0000028094, 0.0000027958, 0.0000027849, 0.0000027829, + 0.0000027881, 0.0000027949, 0.0000028021, 0.0000028141, 0.0000028262, + 0.0000028277, 0.0000028166, 0.0000028032, 0.0000027966, 0.0000027947, + 0.0000027925, 0.0000027886, 0.0000027850, 0.0000027829, 0.0000027841, + 0.0000027880, 0.0000027911, 0.0000027898, 0.0000027827, 0.0000027719, + 0.0000027626, 0.0000027608, 0.0000027682, 0.0000027821, 0.0000027959, + 0.0000028019, 0.0000028021, 0.0000028069, 0.0000028190, 0.0000028317, + 0.0000028388, 0.0000028410, 0.0000028411, 0.0000028367, 0.0000028287, + 0.0000028207, 0.0000028161, 0.0000028163, 0.0000028214, 0.0000028301, + 0.0000028356, 0.0000028331, 0.0000028225, 0.0000028087, 0.0000028084, + 0.0000028216, 0.0000028371, 0.0000028529, 0.0000028672, 0.0000028667, + 0.0000028533, 0.0000028442, 0.0000028479, 0.0000028648, 0.0000028818, + 0.0000028910, 0.0000028930, 0.0000028897, 0.0000028806, 0.0000028691, + 0.0000028590, 0.0000028529, 0.0000028496, 0.0000028450, 0.0000028363, + 0.0000028263, 0.0000028171, 0.0000028098, 0.0000028033, 0.0000027972, + 0.0000027932, 0.0000027902, 0.0000027876, 0.0000027833, 0.0000027799, + 0.0000027789, 0.0000027810, 0.0000027857, 0.0000027923, 0.0000028021, + 0.0000028145, 0.0000028250, 0.0000028277, 0.0000028209, 0.0000028056, + 0.0000027874, 0.0000027832, 0.0000027969, 0.0000028165, 0.0000028248, + 0.0000028242, 0.0000028198, 0.0000028116, 0.0000028020, 0.0000027941, + 0.0000027872, 0.0000027820, 0.0000027823, 0.0000027848, 0.0000027837, + 0.0000027771, 0.0000027640, 0.0000027519, 0.0000027460, 0.0000027447, + 0.0000027448, 0.0000027439, 0.0000027390, 0.0000027310, 0.0000027234, + 0.0000027188, 0.0000027177, 0.0000027216, 0.0000027275, 0.0000027349, + 0.0000027436, 0.0000027539, 0.0000027648, 0.0000027761, 0.0000027829, + 0.0000027827, 0.0000027742, 0.0000027621, 0.0000027519, 0.0000027492, + 0.0000027524, 0.0000027566, 0.0000027612, 0.0000027663, 0.0000027701, + 0.0000027732, 0.0000027764, 0.0000027800, 0.0000027829, 0.0000027833, + 0.0000027837, 0.0000027843, 0.0000027850, 0.0000027838, 0.0000027812, + 0.0000027805, 0.0000027835, 0.0000027879, 0.0000027916, 0.0000027945, + 0.0000027971, 0.0000027983, 0.0000027969, 0.0000027952, 0.0000027945, + 0.0000027939, 0.0000027937, 0.0000027958, 0.0000028004, 0.0000028032, + 0.0000028038, 0.0000028019, 0.0000027950, 0.0000027841, 0.0000027719, + 0.0000027618, 0.0000027547, 0.0000027507, 0.0000027460, 0.0000027433, + 0.0000027424, 0.0000027441, 0.0000027480, 0.0000027498, 0.0000027521, + 0.0000027555, 0.0000027594, 0.0000027628, 0.0000027664, 0.0000027697, + 0.0000027738, 0.0000027781, 0.0000027800, 0.0000027786, 0.0000027764, + 0.0000027785, 0.0000027895, 0.0000028048, 0.0000028138, 0.0000028117, + 0.0000028039, 0.0000027929, 0.0000027888, 0.0000027925, 0.0000028033, + 0.0000028124, 0.0000028149, 0.0000028114, 0.0000028057, 0.0000028005, + 0.0000027984, 0.0000028003, 0.0000028043, 0.0000028075, 0.0000028076, + 0.0000028049, 0.0000027995, 0.0000027929, 0.0000027883, 0.0000027863, + 0.0000027860, 0.0000027849, 0.0000027826, 0.0000027791, 0.0000027751, + 0.0000027682, 0.0000027597, 0.0000027518, 0.0000027472, 0.0000027452, + 0.0000027480, 0.0000027575, 0.0000027700, 0.0000027801, 0.0000027845, + 0.0000027838, 0.0000027768, 0.0000027631, 0.0000027453, 0.0000027309, + 0.0000027241, 0.0000027241, 0.0000027260, 0.0000027219, 0.0000027173, + 0.0000027195, 0.0000027219, 0.0000027189, 0.0000027133, 0.0000027049, + 0.0000026868, 0.0000026692, 0.0000026656, 0.0000026729, 0.0000026809, + 0.0000026889, 0.0000027057, 0.0000027337, 0.0000027608, 0.0000027703, + 0.0000027667, 0.0000027602, 0.0000027589, 0.0000027614, 0.0000027631, + 0.0000027647, 0.0000027719, 0.0000027860, 0.0000027960, 0.0000027940, + 0.0000027821, 0.0000027688, 0.0000027513, 0.0000027301, 0.0000027242, + 0.0000027375, 0.0000027557, 0.0000027677, 0.0000027896, 0.0000028138, + 0.0000028216, 0.0000028161, 0.0000028079, 0.0000028036, 0.0000028069, + 0.0000028168, 0.0000028227, 0.0000028330, 0.0000028489, 0.0000028548, + 0.0000028574, 0.0000028607, 0.0000028645, 0.0000028639, 0.0000028584, + 0.0000028510, 0.0000028379, 0.0000028322, 0.0000028297, 0.0000028292, + 0.0000028322, 0.0000028334, 0.0000028269, 0.0000028118, 0.0000028002, + 0.0000027944, 0.0000027927, 0.0000027918, 0.0000027897, 0.0000027881, + 0.0000027870, 0.0000027856, 0.0000027853, 0.0000027831, 0.0000027734, + 0.0000027579, 0.0000027440, 0.0000027360, 0.0000027335, 0.0000027319, + 0.0000027310, 0.0000027304, 0.0000027308, 0.0000027333, 0.0000027377, + 0.0000027465, 0.0000027543, 0.0000027573, 0.0000027542, 0.0000027556, + 0.0000027578, 0.0000027603, 0.0000027679, 0.0000027796, 0.0000027929, + 0.0000028027, 0.0000028078, 0.0000028105, 0.0000028117, 0.0000028093, + 0.0000028024, 0.0000027933, 0.0000027909, 0.0000027969, 0.0000028021, + 0.0000028010, 0.0000027943, 0.0000027899, 0.0000027927, 0.0000027989, + 0.0000028026, 0.0000027989, 0.0000027933, 0.0000027918, 0.0000027939, + 0.0000027985, 0.0000028064, 0.0000028189, 0.0000028348, 0.0000028479, + 0.0000028515, 0.0000028532, 0.0000028583, 0.0000028612, 0.0000028618, + 0.0000028633, 0.0000028653, 0.0000028687, 0.0000028759, 0.0000028832, + 0.0000028873, 0.0000028869, 0.0000028848, 0.0000028825, 0.0000028827, + 0.0000028845, 0.0000028865, 0.0000028902, 0.0000028960, 0.0000029018, + 0.0000029062, 0.0000029068, 0.0000029019, 0.0000028930, 0.0000028788, + 0.0000028590, 0.0000028389, 0.0000028251, 0.0000028197, 0.0000028204, + 0.0000028290, 0.0000028431, 0.0000028554, 0.0000028582, 0.0000028531, + 0.0000028436, 0.0000028407, 0.0000028393, 0.0000028390, 0.0000028357, + 0.0000028338, 0.0000028437, 0.0000028595, 0.0000028678, 0.0000028682, + 0.0000028658, 0.0000028615, 0.0000028526, 0.0000028409, 0.0000028315, + 0.0000028270, 0.0000028283, 0.0000028318, 0.0000028337, 0.0000028347, + 0.0000028332, 0.0000028294, 0.0000028265, 0.0000028280, 0.0000028320, + 0.0000028344, 0.0000028340, 0.0000028318, 0.0000028283, 0.0000028246, + 0.0000028228, 0.0000028237, 0.0000028268, 0.0000028317, 0.0000028384, + 0.0000028449, 0.0000028493, 0.0000028518, 0.0000028515, 0.0000028477, + 0.0000028402, 0.0000028307, 0.0000028223, 0.0000028185, 0.0000028292, + 0.0000028349, 0.0000028448, 0.0000028558, 0.0000028636, 0.0000028651, + 0.0000028625, 0.0000028581, 0.0000028541, 0.0000028518, 0.0000028508, + 0.0000028483, 0.0000028448, 0.0000028455, 0.0000028493, 0.0000028514, + 0.0000028473, 0.0000028389, 0.0000028325, 0.0000028282, 0.0000028232, + 0.0000028188, 0.0000028161, 0.0000028132, 0.0000028088, 0.0000028064, + 0.0000028088, 0.0000028148, 0.0000028190, 0.0000028198, 0.0000028197, + 0.0000028238, 0.0000028316, 0.0000028354, 0.0000028339, 0.0000028330, + 0.0000028318, 0.0000028229, 0.0000028136, 0.0000028157, 0.0000028221, + 0.0000028238, 0.0000028235, 0.0000028184, 0.0000028084, 0.0000028021, + 0.0000028070, 0.0000028184, 0.0000028251, 0.0000028231, 0.0000028149, + 0.0000028053, 0.0000027943, 0.0000027879, 0.0000027870, 0.0000027862, + 0.0000027838, 0.0000027798, 0.0000027774, 0.0000027807, 0.0000027879, + 0.0000027921, 0.0000027870, 0.0000027786, 0.0000027762, 0.0000027778, + 0.0000027823, 0.0000027937, 0.0000028028, 0.0000028024, 0.0000027922, + 0.0000027790, 0.0000027696, 0.0000027648, 0.0000027622, 0.0000027574, + 0.0000027482, 0.0000027364, 0.0000027265, 0.0000027234, 0.0000027251, + 0.0000027278, 0.0000027290, 0.0000027306, 0.0000027287, 0.0000027179, + 0.0000027023, 0.0000026886, 0.0000026825, 0.0000026863, 0.0000026990, + 0.0000027135, 0.0000027237, 0.0000027331, 0.0000027446, 0.0000027547, + 0.0000027586, 0.0000027563, 0.0000027466, 0.0000027332, 0.0000027231, + 0.0000027191, 0.0000027184, 0.0000027184, 0.0000027193, 0.0000027259, + 0.0000027382, 0.0000027519, 0.0000027597, 0.0000027625, 0.0000027638, + 0.0000027683, 0.0000027792, 0.0000027940, 0.0000028092, 0.0000028194, + 0.0000028199, 0.0000028094, 0.0000027948, 0.0000027869, 0.0000027882, + 0.0000027939, 0.0000027994, 0.0000028065, 0.0000028171, 0.0000028247, + 0.0000028197, 0.0000028063, 0.0000027968, 0.0000027940, 0.0000027920, + 0.0000027889, 0.0000027863, 0.0000027865, 0.0000027889, 0.0000027931, + 0.0000027970, 0.0000027971, 0.0000027907, 0.0000027788, 0.0000027694, + 0.0000027691, 0.0000027808, 0.0000027988, 0.0000028133, 0.0000028165, + 0.0000028140, 0.0000028158, 0.0000028258, 0.0000028363, 0.0000028414, + 0.0000028422, 0.0000028422, 0.0000028407, 0.0000028352, 0.0000028265, + 0.0000028194, 0.0000028182, 0.0000028235, 0.0000028315, 0.0000028361, + 0.0000028345, 0.0000028265, 0.0000028164, 0.0000028125, 0.0000028193, + 0.0000028312, 0.0000028443, 0.0000028609, 0.0000028706, 0.0000028650, + 0.0000028468, 0.0000028369, 0.0000028417, 0.0000028592, 0.0000028765, + 0.0000028880, 0.0000028918, 0.0000028892, 0.0000028808, 0.0000028706, + 0.0000028617, 0.0000028579, 0.0000028567, 0.0000028531, 0.0000028451, + 0.0000028373, 0.0000028316, 0.0000028274, 0.0000028228, 0.0000028170, + 0.0000028119, 0.0000028074, 0.0000028037, 0.0000027987, 0.0000027928, + 0.0000027903, 0.0000027911, 0.0000027956, 0.0000028032, 0.0000028141, + 0.0000028258, 0.0000028330, 0.0000028319, 0.0000028220, 0.0000028048, + 0.0000027873, 0.0000027818, 0.0000027887, 0.0000028066, 0.0000028189, + 0.0000028215, 0.0000028209, 0.0000028180, 0.0000028130, 0.0000028062, + 0.0000027978, 0.0000027890, 0.0000027842, 0.0000027852, 0.0000027875, + 0.0000027881, 0.0000027838, 0.0000027733, 0.0000027625, 0.0000027558, + 0.0000027527, 0.0000027510, 0.0000027489, 0.0000027438, 0.0000027358, + 0.0000027268, 0.0000027199, 0.0000027192, 0.0000027225, 0.0000027294, + 0.0000027392, 0.0000027520, 0.0000027655, 0.0000027777, 0.0000027868, + 0.0000027888, 0.0000027822, 0.0000027685, 0.0000027540, 0.0000027471, + 0.0000027488, 0.0000027554, 0.0000027621, 0.0000027661, 0.0000027685, + 0.0000027702, 0.0000027742, 0.0000027802, 0.0000027855, 0.0000027857, + 0.0000027831, 0.0000027844, 0.0000027891, 0.0000027925, 0.0000027918, + 0.0000027897, 0.0000027894, 0.0000027916, 0.0000027933, 0.0000027957, + 0.0000027998, 0.0000028051, 0.0000028092, 0.0000028106, 0.0000028108, + 0.0000028110, 0.0000028106, 0.0000028110, 0.0000028138, 0.0000028177, + 0.0000028211, 0.0000028218, 0.0000028206, 0.0000028151, 0.0000028049, + 0.0000027923, 0.0000027803, 0.0000027699, 0.0000027607, 0.0000027529, + 0.0000027482, 0.0000027476, 0.0000027498, 0.0000027541, 0.0000027576, + 0.0000027603, 0.0000027644, 0.0000027696, 0.0000027743, 0.0000027791, + 0.0000027836, 0.0000027879, 0.0000027913, 0.0000027927, 0.0000027927, + 0.0000027940, 0.0000028002, 0.0000028113, 0.0000028183, 0.0000028162, + 0.0000028076, 0.0000027967, 0.0000027899, 0.0000027895, 0.0000027971, + 0.0000028091, 0.0000028166, 0.0000028165, 0.0000028120, 0.0000028063, + 0.0000028035, 0.0000028050, 0.0000028092, 0.0000028134, 0.0000028151, + 0.0000028127, 0.0000028061, 0.0000027979, 0.0000027906, 0.0000027855, + 0.0000027840, 0.0000027845, 0.0000027839, 0.0000027815, 0.0000027772, + 0.0000027730, 0.0000027673, 0.0000027611, 0.0000027556, 0.0000027534, + 0.0000027536, 0.0000027558, 0.0000027618, 0.0000027705, 0.0000027781, + 0.0000027828, 0.0000027836, 0.0000027789, 0.0000027681, 0.0000027530, + 0.0000027382, 0.0000027299, 0.0000027291, 0.0000027338, 0.0000027368, + 0.0000027308, 0.0000027237, 0.0000027232, 0.0000027213, 0.0000027143, + 0.0000027071, 0.0000026946, 0.0000026766, 0.0000026681, 0.0000026728, + 0.0000026819, 0.0000026900, 0.0000027047, 0.0000027313, 0.0000027588, + 0.0000027707, 0.0000027669, 0.0000027602, 0.0000027587, 0.0000027601, + 0.0000027612, 0.0000027646, 0.0000027734, 0.0000027869, 0.0000027957, + 0.0000027936, 0.0000027830, 0.0000027690, 0.0000027478, 0.0000027271, + 0.0000027244, 0.0000027423, 0.0000027564, 0.0000027622, 0.0000027833, + 0.0000028125, 0.0000028224, 0.0000028191, 0.0000028096, 0.0000028046, + 0.0000028047, 0.0000028120, 0.0000028204, 0.0000028294, 0.0000028453, + 0.0000028581, 0.0000028595, 0.0000028606, 0.0000028643, 0.0000028678, + 0.0000028635, 0.0000028536, 0.0000028486, 0.0000028387, 0.0000028301, + 0.0000028286, 0.0000028318, 0.0000028351, 0.0000028326, 0.0000028230, + 0.0000028136, 0.0000028038, 0.0000027983, 0.0000027972, 0.0000027975, + 0.0000027978, 0.0000027976, 0.0000027974, 0.0000027971, 0.0000027976, + 0.0000027979, 0.0000027915, 0.0000027764, 0.0000027609, 0.0000027484, + 0.0000027429, 0.0000027398, 0.0000027377, 0.0000027361, 0.0000027347, + 0.0000027355, 0.0000027385, 0.0000027445, 0.0000027521, 0.0000027573, + 0.0000027569, 0.0000027569, 0.0000027583, 0.0000027615, 0.0000027712, + 0.0000027849, 0.0000027980, 0.0000028078, 0.0000028137, 0.0000028167, + 0.0000028185, 0.0000028186, 0.0000028157, 0.0000028084, 0.0000028000, + 0.0000027977, 0.0000028034, 0.0000028076, 0.0000028050, 0.0000028001, + 0.0000027969, 0.0000028011, 0.0000028077, 0.0000028102, 0.0000028063, + 0.0000028005, 0.0000027959, 0.0000027937, 0.0000027951, 0.0000028017, + 0.0000028086, 0.0000028185, 0.0000028359, 0.0000028486, 0.0000028498, + 0.0000028497, 0.0000028529, 0.0000028571, 0.0000028615, 0.0000028661, + 0.0000028746, 0.0000028833, 0.0000028909, 0.0000028947, 0.0000028930, + 0.0000028893, 0.0000028873, 0.0000028866, 0.0000028861, 0.0000028870, + 0.0000028902, 0.0000028949, 0.0000028989, 0.0000029022, 0.0000029026, + 0.0000028986, 0.0000028906, 0.0000028776, 0.0000028582, 0.0000028379, + 0.0000028244, 0.0000028179, 0.0000028177, 0.0000028249, 0.0000028406, + 0.0000028562, 0.0000028613, 0.0000028567, 0.0000028478, 0.0000028462, + 0.0000028463, 0.0000028473, 0.0000028459, 0.0000028452, 0.0000028539, + 0.0000028661, 0.0000028716, 0.0000028714, 0.0000028689, 0.0000028648, + 0.0000028588, 0.0000028504, 0.0000028427, 0.0000028379, 0.0000028354, + 0.0000028339, 0.0000028319, 0.0000028293, 0.0000028249, 0.0000028203, + 0.0000028183, 0.0000028227, 0.0000028308, 0.0000028375, 0.0000028397, + 0.0000028381, 0.0000028338, 0.0000028304, 0.0000028304, 0.0000028324, + 0.0000028353, 0.0000028391, 0.0000028447, 0.0000028499, 0.0000028533, + 0.0000028552, 0.0000028551, 0.0000028526, 0.0000028480, 0.0000028414, + 0.0000028336, 0.0000028289, 0.0000028373, 0.0000028430, 0.0000028522, + 0.0000028623, 0.0000028706, 0.0000028736, 0.0000028712, 0.0000028652, + 0.0000028594, 0.0000028556, 0.0000028535, 0.0000028519, 0.0000028497, + 0.0000028508, 0.0000028562, 0.0000028616, 0.0000028618, 0.0000028549, + 0.0000028476, 0.0000028435, 0.0000028394, 0.0000028345, 0.0000028298, + 0.0000028241, 0.0000028167, 0.0000028117, 0.0000028136, 0.0000028208, + 0.0000028263, 0.0000028278, 0.0000028273, 0.0000028287, 0.0000028336, + 0.0000028370, 0.0000028357, 0.0000028333, 0.0000028315, 0.0000028255, + 0.0000028156, 0.0000028120, 0.0000028152, 0.0000028184, 0.0000028193, + 0.0000028161, 0.0000028088, 0.0000028039, 0.0000028077, 0.0000028188, + 0.0000028261, 0.0000028253, 0.0000028186, 0.0000028095, 0.0000027997, + 0.0000027903, 0.0000027879, 0.0000027867, 0.0000027842, 0.0000027792, + 0.0000027754, 0.0000027770, 0.0000027840, 0.0000027932, 0.0000027947, + 0.0000027851, 0.0000027782, 0.0000027800, 0.0000027839, 0.0000027904, + 0.0000028015, 0.0000028082, 0.0000028052, 0.0000027911, 0.0000027747, + 0.0000027644, 0.0000027598, 0.0000027559, 0.0000027485, 0.0000027375, + 0.0000027261, 0.0000027198, 0.0000027204, 0.0000027227, 0.0000027237, + 0.0000027267, 0.0000027291, 0.0000027237, 0.0000027091, 0.0000026930, + 0.0000026838, 0.0000026856, 0.0000026960, 0.0000027097, 0.0000027194, + 0.0000027252, 0.0000027316, 0.0000027408, 0.0000027491, 0.0000027517, + 0.0000027488, 0.0000027388, 0.0000027277, 0.0000027212, 0.0000027202, + 0.0000027205, 0.0000027200, 0.0000027221, 0.0000027307, 0.0000027457, + 0.0000027588, 0.0000027654, 0.0000027661, 0.0000027662, 0.0000027724, + 0.0000027857, 0.0000028017, 0.0000028164, 0.0000028245, 0.0000028216, + 0.0000028091, 0.0000027956, 0.0000027919, 0.0000027947, 0.0000027997, + 0.0000028042, 0.0000028102, 0.0000028174, 0.0000028183, 0.0000028081, + 0.0000027959, 0.0000027905, 0.0000027890, 0.0000027861, 0.0000027837, + 0.0000027847, 0.0000027887, 0.0000027947, 0.0000028002, 0.0000028023, + 0.0000027971, 0.0000027841, 0.0000027735, 0.0000027758, 0.0000027918, + 0.0000028119, 0.0000028268, 0.0000028308, 0.0000028297, 0.0000028313, + 0.0000028371, 0.0000028442, 0.0000028479, 0.0000028468, 0.0000028441, + 0.0000028416, 0.0000028381, 0.0000028324, 0.0000028260, 0.0000028227, + 0.0000028242, 0.0000028296, 0.0000028324, 0.0000028309, 0.0000028232, + 0.0000028180, 0.0000028175, 0.0000028221, 0.0000028289, 0.0000028373, + 0.0000028519, 0.0000028692, 0.0000028739, 0.0000028613, 0.0000028408, + 0.0000028310, 0.0000028370, 0.0000028547, 0.0000028723, 0.0000028858, + 0.0000028927, 0.0000028909, 0.0000028833, 0.0000028748, 0.0000028684, + 0.0000028659, 0.0000028663, 0.0000028640, 0.0000028571, 0.0000028515, + 0.0000028491, 0.0000028473, 0.0000028428, 0.0000028357, 0.0000028287, + 0.0000028228, 0.0000028181, 0.0000028125, 0.0000028047, 0.0000027997, + 0.0000028003, 0.0000028061, 0.0000028141, 0.0000028232, 0.0000028322, + 0.0000028374, 0.0000028356, 0.0000028264, 0.0000028095, 0.0000027916, + 0.0000027829, 0.0000027845, 0.0000027954, 0.0000028074, 0.0000028136, + 0.0000028161, 0.0000028175, 0.0000028178, 0.0000028161, 0.0000028113, + 0.0000028034, 0.0000027947, 0.0000027890, 0.0000027876, 0.0000027889, + 0.0000027898, 0.0000027869, 0.0000027793, 0.0000027709, 0.0000027651, + 0.0000027614, 0.0000027581, 0.0000027551, 0.0000027507, 0.0000027432, + 0.0000027337, 0.0000027262, 0.0000027239, 0.0000027260, 0.0000027330, + 0.0000027455, 0.0000027613, 0.0000027759, 0.0000027859, 0.0000027898, + 0.0000027873, 0.0000027756, 0.0000027603, 0.0000027497, 0.0000027469, + 0.0000027520, 0.0000027611, 0.0000027673, 0.0000027683, 0.0000027685, + 0.0000027712, 0.0000027784, 0.0000027863, 0.0000027891, 0.0000027868, + 0.0000027856, 0.0000027909, 0.0000027981, 0.0000028014, 0.0000028004, + 0.0000027989, 0.0000027983, 0.0000027988, 0.0000027988, 0.0000028012, + 0.0000028073, 0.0000028158, 0.0000028243, 0.0000028304, 0.0000028342, + 0.0000028363, 0.0000028379, 0.0000028394, 0.0000028424, 0.0000028447, + 0.0000028475, 0.0000028476, 0.0000028445, 0.0000028397, 0.0000028313, + 0.0000028204, 0.0000028086, 0.0000027964, 0.0000027840, 0.0000027730, + 0.0000027662, 0.0000027650, 0.0000027671, 0.0000027709, 0.0000027743, + 0.0000027769, 0.0000027806, 0.0000027859, 0.0000027906, 0.0000027948, + 0.0000027996, 0.0000028041, 0.0000028072, 0.0000028089, 0.0000028105, + 0.0000028137, 0.0000028197, 0.0000028244, 0.0000028205, 0.0000028111, + 0.0000027987, 0.0000027910, 0.0000027890, 0.0000027922, 0.0000028024, + 0.0000028136, 0.0000028184, 0.0000028170, 0.0000028126, 0.0000028088, + 0.0000028092, 0.0000028131, 0.0000028177, 0.0000028200, 0.0000028203, + 0.0000028164, 0.0000028082, 0.0000027984, 0.0000027902, 0.0000027857, + 0.0000027842, 0.0000027840, 0.0000027832, 0.0000027799, 0.0000027750, + 0.0000027714, 0.0000027687, 0.0000027662, 0.0000027659, 0.0000027669, + 0.0000027675, 0.0000027670, 0.0000027676, 0.0000027713, 0.0000027760, + 0.0000027796, 0.0000027808, 0.0000027784, 0.0000027710, 0.0000027597, + 0.0000027473, 0.0000027375, 0.0000027348, 0.0000027382, 0.0000027448, + 0.0000027447, 0.0000027335, 0.0000027246, 0.0000027219, 0.0000027159, + 0.0000027079, 0.0000026997, 0.0000026850, 0.0000026718, 0.0000026726, + 0.0000026822, 0.0000026907, 0.0000027029, 0.0000027274, 0.0000027571, + 0.0000027717, 0.0000027682, 0.0000027601, 0.0000027581, 0.0000027600, + 0.0000027608, 0.0000027652, 0.0000027751, 0.0000027879, 0.0000027954, + 0.0000027924, 0.0000027827, 0.0000027669, 0.0000027430, 0.0000027255, + 0.0000027284, 0.0000027469, 0.0000027594, 0.0000027607, 0.0000027782, + 0.0000028074, 0.0000028224, 0.0000028183, 0.0000028109, 0.0000028042, + 0.0000028039, 0.0000028085, 0.0000028165, 0.0000028274, 0.0000028436, + 0.0000028579, 0.0000028620, 0.0000028605, 0.0000028593, 0.0000028606, + 0.0000028635, 0.0000028588, 0.0000028498, 0.0000028447, 0.0000028367, + 0.0000028278, 0.0000028298, 0.0000028346, 0.0000028329, 0.0000028249, + 0.0000028200, 0.0000028140, 0.0000028060, 0.0000027996, 0.0000027980, + 0.0000027994, 0.0000028024, 0.0000028034, 0.0000028048, 0.0000028067, + 0.0000028084, 0.0000028095, 0.0000028038, 0.0000027880, 0.0000027703, + 0.0000027549, 0.0000027481, 0.0000027450, 0.0000027432, 0.0000027418, + 0.0000027405, 0.0000027404, 0.0000027431, 0.0000027499, 0.0000027573, + 0.0000027625, 0.0000027645, 0.0000027659, 0.0000027691, 0.0000027719, + 0.0000027784, 0.0000027881, 0.0000027962, 0.0000028030, 0.0000028090, + 0.0000028129, 0.0000028159, 0.0000028180, 0.0000028172, 0.0000028144, + 0.0000028087, 0.0000028015, 0.0000028006, 0.0000028053, 0.0000028095, + 0.0000028096, 0.0000028072, 0.0000028062, 0.0000028106, 0.0000028141, + 0.0000028144, 0.0000028142, 0.0000028107, 0.0000028042, 0.0000027974, + 0.0000027959, 0.0000027974, 0.0000028018, 0.0000028066, 0.0000028165, + 0.0000028338, 0.0000028463, 0.0000028482, 0.0000028460, 0.0000028469, + 0.0000028540, 0.0000028643, 0.0000028749, 0.0000028836, 0.0000028918, + 0.0000028953, 0.0000028933, 0.0000028907, 0.0000028887, 0.0000028865, + 0.0000028843, 0.0000028840, 0.0000028858, 0.0000028890, 0.0000028918, + 0.0000028942, 0.0000028946, 0.0000028925, 0.0000028863, 0.0000028750, + 0.0000028591, 0.0000028420, 0.0000028270, 0.0000028178, 0.0000028162, + 0.0000028216, 0.0000028374, 0.0000028564, 0.0000028643, 0.0000028613, + 0.0000028541, 0.0000028535, 0.0000028541, 0.0000028546, 0.0000028539, + 0.0000028540, 0.0000028609, 0.0000028686, 0.0000028722, 0.0000028712, + 0.0000028682, 0.0000028643, 0.0000028616, 0.0000028578, 0.0000028524, + 0.0000028457, 0.0000028387, 0.0000028321, 0.0000028264, 0.0000028221, + 0.0000028191, 0.0000028169, 0.0000028171, 0.0000028235, 0.0000028331, + 0.0000028405, 0.0000028425, 0.0000028402, 0.0000028365, 0.0000028355, + 0.0000028379, 0.0000028410, 0.0000028432, 0.0000028452, 0.0000028483, + 0.0000028521, 0.0000028548, 0.0000028567, 0.0000028574, 0.0000028559, + 0.0000028528, 0.0000028480, 0.0000028416, 0.0000028370, 0.0000028403, + 0.0000028471, 0.0000028576, 0.0000028682, 0.0000028763, 0.0000028796, + 0.0000028779, 0.0000028713, 0.0000028643, 0.0000028598, 0.0000028571, + 0.0000028548, 0.0000028527, 0.0000028535, 0.0000028583, 0.0000028653, + 0.0000028681, 0.0000028633, 0.0000028554, 0.0000028508, 0.0000028478, + 0.0000028442, 0.0000028400, 0.0000028331, 0.0000028231, 0.0000028155, + 0.0000028157, 0.0000028240, 0.0000028322, 0.0000028345, 0.0000028330, + 0.0000028317, 0.0000028336, 0.0000028365, 0.0000028367, 0.0000028345, + 0.0000028313, 0.0000028255, 0.0000028168, 0.0000028106, 0.0000028102, + 0.0000028120, 0.0000028145, 0.0000028129, 0.0000028079, 0.0000028056, + 0.0000028102, 0.0000028203, 0.0000028282, 0.0000028284, 0.0000028225, + 0.0000028141, 0.0000028063, 0.0000027966, 0.0000027910, 0.0000027895, + 0.0000027867, 0.0000027807, 0.0000027728, 0.0000027723, 0.0000027795, + 0.0000027900, 0.0000027970, 0.0000027928, 0.0000027825, 0.0000027801, + 0.0000027850, 0.0000027896, 0.0000027975, 0.0000028063, 0.0000028094, + 0.0000028046, 0.0000027889, 0.0000027715, 0.0000027599, 0.0000027533, + 0.0000027465, 0.0000027362, 0.0000027251, 0.0000027186, 0.0000027177, + 0.0000027186, 0.0000027187, 0.0000027213, 0.0000027269, 0.0000027278, + 0.0000027179, 0.0000027018, 0.0000026888, 0.0000026875, 0.0000026946, + 0.0000027063, 0.0000027164, 0.0000027225, 0.0000027272, 0.0000027338, + 0.0000027409, 0.0000027444, 0.0000027443, 0.0000027391, 0.0000027299, + 0.0000027227, 0.0000027212, 0.0000027228, 0.0000027230, 0.0000027223, + 0.0000027253, 0.0000027362, 0.0000027520, 0.0000027649, 0.0000027700, + 0.0000027687, 0.0000027687, 0.0000027767, 0.0000027914, 0.0000028078, + 0.0000028218, 0.0000028277, 0.0000028235, 0.0000028097, 0.0000027987, + 0.0000027968, 0.0000028007, 0.0000028048, 0.0000028072, 0.0000028106, + 0.0000028135, 0.0000028091, 0.0000027965, 0.0000027866, 0.0000027839, + 0.0000027824, 0.0000027803, 0.0000027813, 0.0000027859, 0.0000027939, + 0.0000028019, 0.0000028054, 0.0000028023, 0.0000027907, 0.0000027800, + 0.0000027826, 0.0000027993, 0.0000028200, 0.0000028352, 0.0000028431, + 0.0000028466, 0.0000028494, 0.0000028524, 0.0000028554, 0.0000028569, + 0.0000028549, 0.0000028494, 0.0000028436, 0.0000028391, 0.0000028356, + 0.0000028322, 0.0000028291, 0.0000028268, 0.0000028259, 0.0000028257, + 0.0000028226, 0.0000028175, 0.0000028150, 0.0000028191, 0.0000028267, + 0.0000028313, 0.0000028335, 0.0000028421, 0.0000028606, 0.0000028746, + 0.0000028730, 0.0000028562, 0.0000028356, 0.0000028269, 0.0000028341, + 0.0000028515, 0.0000028696, 0.0000028852, 0.0000028941, 0.0000028931, + 0.0000028867, 0.0000028804, 0.0000028767, 0.0000028755, 0.0000028764, + 0.0000028749, 0.0000028687, 0.0000028640, 0.0000028630, 0.0000028622, + 0.0000028570, 0.0000028483, 0.0000028404, 0.0000028345, 0.0000028300, + 0.0000028251, 0.0000028173, 0.0000028105, 0.0000028096, 0.0000028143, + 0.0000028205, 0.0000028268, 0.0000028332, 0.0000028377, 0.0000028376, + 0.0000028318, 0.0000028188, 0.0000028015, 0.0000027889, 0.0000027861, + 0.0000027897, 0.0000027972, 0.0000028025, 0.0000028049, 0.0000028077, + 0.0000028113, 0.0000028145, 0.0000028147, 0.0000028122, 0.0000028074, + 0.0000028005, 0.0000027939, 0.0000027905, 0.0000027908, 0.0000027913, + 0.0000027887, 0.0000027820, 0.0000027748, 0.0000027708, 0.0000027686, + 0.0000027659, 0.0000027627, 0.0000027586, 0.0000027519, 0.0000027432, + 0.0000027360, 0.0000027327, 0.0000027332, 0.0000027392, 0.0000027526, + 0.0000027696, 0.0000027828, 0.0000027887, 0.0000027893, 0.0000027827, + 0.0000027693, 0.0000027566, 0.0000027493, 0.0000027486, 0.0000027571, + 0.0000027672, 0.0000027698, 0.0000027680, 0.0000027690, 0.0000027751, + 0.0000027846, 0.0000027909, 0.0000027911, 0.0000027911, 0.0000027948, + 0.0000028008, 0.0000028054, 0.0000028065, 0.0000028068, 0.0000028069, + 0.0000028067, 0.0000028067, 0.0000028069, 0.0000028107, 0.0000028198, + 0.0000028319, 0.0000028443, 0.0000028545, 0.0000028611, 0.0000028641, + 0.0000028671, 0.0000028690, 0.0000028693, 0.0000028698, 0.0000028696, + 0.0000028682, 0.0000028633, 0.0000028576, 0.0000028512, 0.0000028429, + 0.0000028332, 0.0000028216, 0.0000028085, 0.0000027965, 0.0000027888, + 0.0000027869, 0.0000027882, 0.0000027909, 0.0000027941, 0.0000027969, + 0.0000028003, 0.0000028051, 0.0000028092, 0.0000028129, 0.0000028175, + 0.0000028216, 0.0000028242, 0.0000028255, 0.0000028267, 0.0000028280, + 0.0000028293, 0.0000028266, 0.0000028173, 0.0000028019, 0.0000027914, + 0.0000027879, 0.0000027884, 0.0000027947, 0.0000028067, 0.0000028167, + 0.0000028197, 0.0000028183, 0.0000028156, 0.0000028149, 0.0000028179, + 0.0000028238, 0.0000028290, 0.0000028310, 0.0000028315, 0.0000028284, + 0.0000028211, 0.0000028114, 0.0000028034, 0.0000027995, 0.0000027981, + 0.0000027961, 0.0000027920, 0.0000027852, 0.0000027771, 0.0000027715, + 0.0000027704, 0.0000027722, 0.0000027771, 0.0000027815, 0.0000027822, + 0.0000027782, 0.0000027728, 0.0000027713, 0.0000027735, 0.0000027761, + 0.0000027766, 0.0000027748, 0.0000027705, 0.0000027636, 0.0000027544, + 0.0000027454, 0.0000027405, 0.0000027417, 0.0000027473, 0.0000027507, + 0.0000027438, 0.0000027289, 0.0000027208, 0.0000027163, 0.0000027081, + 0.0000027012, 0.0000026923, 0.0000026786, 0.0000026743, 0.0000026815, + 0.0000026913, 0.0000027011, 0.0000027216, 0.0000027525, 0.0000027724, + 0.0000027706, 0.0000027602, 0.0000027574, 0.0000027594, 0.0000027620, + 0.0000027677, 0.0000027775, 0.0000027882, 0.0000027944, 0.0000027908, + 0.0000027791, 0.0000027606, 0.0000027385, 0.0000027285, 0.0000027360, + 0.0000027521, 0.0000027605, 0.0000027638, 0.0000027774, 0.0000028041, + 0.0000028189, 0.0000028178, 0.0000028085, 0.0000028031, 0.0000028023, + 0.0000028061, 0.0000028118, 0.0000028235, 0.0000028401, 0.0000028559, + 0.0000028636, 0.0000028608, 0.0000028556, 0.0000028522, 0.0000028532, + 0.0000028546, 0.0000028531, 0.0000028446, 0.0000028370, 0.0000028332, + 0.0000028284, 0.0000028325, 0.0000028328, 0.0000028238, 0.0000028162, + 0.0000028151, 0.0000028122, 0.0000028049, 0.0000027972, 0.0000027962, + 0.0000028011, 0.0000028062, 0.0000028069, 0.0000028086, 0.0000028134, + 0.0000028176, 0.0000028176, 0.0000028108, 0.0000027964, 0.0000027803, + 0.0000027659, 0.0000027605, 0.0000027579, 0.0000027567, 0.0000027562, + 0.0000027562, 0.0000027567, 0.0000027586, 0.0000027639, 0.0000027719, + 0.0000027786, 0.0000027817, 0.0000027829, 0.0000027846, 0.0000027851, + 0.0000027854, 0.0000027883, 0.0000027927, 0.0000027961, 0.0000027987, + 0.0000028029, 0.0000028073, 0.0000028115, 0.0000028139, 0.0000028137, + 0.0000028111, 0.0000028074, 0.0000028018, 0.0000028021, 0.0000028067, + 0.0000028111, 0.0000028118, 0.0000028118, 0.0000028134, 0.0000028165, + 0.0000028169, 0.0000028175, 0.0000028200, 0.0000028198, 0.0000028138, + 0.0000028062, 0.0000028001, 0.0000027957, 0.0000027961, 0.0000027996, + 0.0000028039, 0.0000028141, 0.0000028322, 0.0000028454, 0.0000028461, + 0.0000028426, 0.0000028441, 0.0000028545, 0.0000028679, 0.0000028789, + 0.0000028872, 0.0000028909, 0.0000028914, 0.0000028918, 0.0000028902, + 0.0000028876, 0.0000028860, 0.0000028855, 0.0000028870, 0.0000028890, + 0.0000028902, 0.0000028904, 0.0000028897, 0.0000028878, 0.0000028816, + 0.0000028732, 0.0000028617, 0.0000028468, 0.0000028309, 0.0000028189, + 0.0000028154, 0.0000028192, 0.0000028336, 0.0000028547, 0.0000028663, + 0.0000028666, 0.0000028619, 0.0000028617, 0.0000028621, 0.0000028613, + 0.0000028602, 0.0000028599, 0.0000028642, 0.0000028690, 0.0000028719, + 0.0000028714, 0.0000028680, 0.0000028635, 0.0000028620, 0.0000028605, + 0.0000028556, 0.0000028471, 0.0000028390, 0.0000028314, 0.0000028259, + 0.0000028220, 0.0000028195, 0.0000028183, 0.0000028191, 0.0000028259, + 0.0000028339, 0.0000028395, 0.0000028405, 0.0000028387, 0.0000028371, + 0.0000028392, 0.0000028430, 0.0000028455, 0.0000028460, 0.0000028462, + 0.0000028476, 0.0000028501, 0.0000028526, 0.0000028555, 0.0000028571, + 0.0000028563, 0.0000028538, 0.0000028494, 0.0000028433, 0.0000028394, + 0.0000028412, 0.0000028494, 0.0000028613, 0.0000028731, 0.0000028814, + 0.0000028843, 0.0000028824, 0.0000028749, 0.0000028670, 0.0000028623, + 0.0000028597, 0.0000028572, 0.0000028551, 0.0000028549, 0.0000028584, + 0.0000028650, 0.0000028687, 0.0000028659, 0.0000028588, 0.0000028539, + 0.0000028511, 0.0000028482, 0.0000028446, 0.0000028375, 0.0000028260, + 0.0000028161, 0.0000028140, 0.0000028225, 0.0000028336, 0.0000028384, + 0.0000028375, 0.0000028343, 0.0000028333, 0.0000028347, 0.0000028361, + 0.0000028355, 0.0000028319, 0.0000028248, 0.0000028171, 0.0000028109, + 0.0000028077, 0.0000028070, 0.0000028085, 0.0000028077, 0.0000028051, + 0.0000028066, 0.0000028137, 0.0000028232, 0.0000028304, 0.0000028313, + 0.0000028263, 0.0000028195, 0.0000028126, 0.0000028055, 0.0000027973, + 0.0000027948, 0.0000027917, 0.0000027852, 0.0000027751, 0.0000027698, + 0.0000027743, 0.0000027859, 0.0000027969, 0.0000027977, 0.0000027903, + 0.0000027822, 0.0000027847, 0.0000027918, 0.0000027966, 0.0000028018, + 0.0000028067, 0.0000028078, 0.0000028023, 0.0000027881, 0.0000027701, + 0.0000027547, 0.0000027444, 0.0000027348, 0.0000027242, 0.0000027180, + 0.0000027173, 0.0000027175, 0.0000027155, 0.0000027162, 0.0000027232, + 0.0000027286, 0.0000027262, 0.0000027146, 0.0000026996, 0.0000026917, + 0.0000026953, 0.0000027044, 0.0000027131, 0.0000027194, 0.0000027243, + 0.0000027306, 0.0000027381, 0.0000027425, 0.0000027417, 0.0000027391, + 0.0000027319, 0.0000027243, 0.0000027223, 0.0000027251, 0.0000027283, + 0.0000027269, 0.0000027259, 0.0000027302, 0.0000027428, 0.0000027588, + 0.0000027708, 0.0000027734, 0.0000027706, 0.0000027707, 0.0000027795, + 0.0000027948, 0.0000028116, 0.0000028254, 0.0000028296, 0.0000028248, + 0.0000028119, 0.0000028023, 0.0000028015, 0.0000028048, 0.0000028067, + 0.0000028070, 0.0000028085, 0.0000028085, 0.0000028001, 0.0000027863, + 0.0000027788, 0.0000027776, 0.0000027769, 0.0000027776, 0.0000027827, + 0.0000027920, 0.0000028027, 0.0000028089, 0.0000028065, 0.0000027966, + 0.0000027880, 0.0000027907, 0.0000028043, 0.0000028223, 0.0000028393, + 0.0000028531, 0.0000028622, 0.0000028666, 0.0000028683, 0.0000028695, + 0.0000028695, 0.0000028663, 0.0000028578, 0.0000028471, 0.0000028393, + 0.0000028364, 0.0000028360, 0.0000028352, 0.0000028324, 0.0000028271, + 0.0000028201, 0.0000028141, 0.0000028119, 0.0000028140, 0.0000028207, + 0.0000028297, 0.0000028338, 0.0000028342, 0.0000028360, 0.0000028496, + 0.0000028683, 0.0000028755, 0.0000028689, 0.0000028503, 0.0000028318, + 0.0000028256, 0.0000028331, 0.0000028498, 0.0000028682, 0.0000028852, + 0.0000028951, 0.0000028947, 0.0000028895, 0.0000028850, 0.0000028834, + 0.0000028833, 0.0000028844, 0.0000028826, 0.0000028770, 0.0000028720, + 0.0000028706, 0.0000028701, 0.0000028659, 0.0000028581, 0.0000028509, + 0.0000028457, 0.0000028416, 0.0000028374, 0.0000028308, 0.0000028231, + 0.0000028189, 0.0000028188, 0.0000028204, 0.0000028241, 0.0000028295, + 0.0000028348, 0.0000028367, 0.0000028344, 0.0000028263, 0.0000028141, + 0.0000028018, 0.0000027941, 0.0000027920, 0.0000027943, 0.0000027969, + 0.0000027970, 0.0000027971, 0.0000027993, 0.0000028028, 0.0000028060, + 0.0000028072, 0.0000028070, 0.0000028053, 0.0000028013, 0.0000027961, + 0.0000027925, 0.0000027925, 0.0000027937, 0.0000027919, 0.0000027845, + 0.0000027759, 0.0000027727, 0.0000027735, 0.0000027741, 0.0000027721, + 0.0000027682, 0.0000027625, 0.0000027547, 0.0000027481, 0.0000027441, + 0.0000027428, 0.0000027468, 0.0000027595, 0.0000027755, 0.0000027862, + 0.0000027892, 0.0000027882, 0.0000027792, 0.0000027665, 0.0000027561, + 0.0000027506, 0.0000027530, 0.0000027645, 0.0000027719, 0.0000027698, + 0.0000027674, 0.0000027714, 0.0000027802, 0.0000027887, 0.0000027925, + 0.0000027946, 0.0000028004, 0.0000028060, 0.0000028088, 0.0000028097, + 0.0000028099, 0.0000028121, 0.0000028147, 0.0000028169, 0.0000028184, + 0.0000028201, 0.0000028251, 0.0000028361, 0.0000028493, 0.0000028619, + 0.0000028730, 0.0000028801, 0.0000028834, 0.0000028869, 0.0000028895, + 0.0000028890, 0.0000028881, 0.0000028855, 0.0000028821, 0.0000028759, + 0.0000028686, 0.0000028634, 0.0000028577, 0.0000028505, 0.0000028409, + 0.0000028288, 0.0000028168, 0.0000028085, 0.0000028059, 0.0000028066, + 0.0000028087, 0.0000028115, 0.0000028142, 0.0000028176, 0.0000028218, + 0.0000028254, 0.0000028286, 0.0000028325, 0.0000028356, 0.0000028365, + 0.0000028363, 0.0000028347, 0.0000028320, 0.0000028295, 0.0000028223, + 0.0000028085, 0.0000027943, 0.0000027869, 0.0000027854, 0.0000027872, + 0.0000027964, 0.0000028097, 0.0000028192, 0.0000028227, 0.0000028230, + 0.0000028230, 0.0000028244, 0.0000028286, 0.0000028354, 0.0000028417, + 0.0000028445, 0.0000028455, 0.0000028434, 0.0000028368, 0.0000028283, + 0.0000028208, 0.0000028167, 0.0000028157, 0.0000028149, 0.0000028114, + 0.0000028037, 0.0000027918, 0.0000027811, 0.0000027770, 0.0000027784, + 0.0000027847, 0.0000027909, 0.0000027922, 0.0000027863, 0.0000027762, + 0.0000027703, 0.0000027706, 0.0000027723, 0.0000027723, 0.0000027704, + 0.0000027680, 0.0000027647, 0.0000027590, 0.0000027519, 0.0000027462, + 0.0000027454, 0.0000027486, 0.0000027517, 0.0000027491, 0.0000027348, + 0.0000027207, 0.0000027153, 0.0000027089, 0.0000027014, 0.0000026961, + 0.0000026861, 0.0000026775, 0.0000026805, 0.0000026908, 0.0000027003, + 0.0000027162, 0.0000027453, 0.0000027696, 0.0000027720, 0.0000027604, + 0.0000027551, 0.0000027579, 0.0000027629, 0.0000027710, 0.0000027809, + 0.0000027886, 0.0000027914, 0.0000027865, 0.0000027713, 0.0000027519, + 0.0000027366, 0.0000027342, 0.0000027472, 0.0000027580, 0.0000027612, + 0.0000027669, 0.0000027813, 0.0000028026, 0.0000028161, 0.0000028156, + 0.0000028077, 0.0000028000, 0.0000027993, 0.0000028032, 0.0000028089, + 0.0000028183, 0.0000028352, 0.0000028515, 0.0000028596, 0.0000028616, + 0.0000028547, 0.0000028448, 0.0000028416, 0.0000028447, 0.0000028454, + 0.0000028463, 0.0000028395, 0.0000028331, 0.0000028341, 0.0000028321, + 0.0000028301, 0.0000028222, 0.0000028108, 0.0000028075, 0.0000028072, + 0.0000028048, 0.0000027980, 0.0000027933, 0.0000027956, 0.0000028032, + 0.0000028084, 0.0000028085, 0.0000028097, 0.0000028163, 0.0000028221, + 0.0000028217, 0.0000028164, 0.0000028066, 0.0000027950, 0.0000027847, + 0.0000027794, 0.0000027762, 0.0000027752, 0.0000027744, 0.0000027751, + 0.0000027778, 0.0000027802, 0.0000027843, 0.0000027886, 0.0000027946, + 0.0000027987, 0.0000027996, 0.0000027982, 0.0000027946, 0.0000027918, + 0.0000027911, 0.0000027914, 0.0000027927, 0.0000027932, 0.0000027953, + 0.0000028008, 0.0000028059, 0.0000028101, 0.0000028125, 0.0000028131, + 0.0000028137, 0.0000028108, 0.0000028083, 0.0000028084, 0.0000028125, + 0.0000028145, 0.0000028141, 0.0000028142, 0.0000028158, 0.0000028166, + 0.0000028154, 0.0000028186, 0.0000028230, 0.0000028241, 0.0000028204, + 0.0000028134, 0.0000028056, 0.0000027982, 0.0000027953, 0.0000027963, + 0.0000027994, 0.0000028031, 0.0000028137, 0.0000028307, 0.0000028428, + 0.0000028456, 0.0000028464, 0.0000028507, 0.0000028568, 0.0000028633, + 0.0000028708, 0.0000028774, 0.0000028826, 0.0000028852, 0.0000028858, + 0.0000028855, 0.0000028862, 0.0000028875, 0.0000028904, 0.0000028936, + 0.0000028955, 0.0000028958, 0.0000028931, 0.0000028881, 0.0000028813, + 0.0000028729, 0.0000028633, 0.0000028495, 0.0000028342, 0.0000028209, + 0.0000028150, 0.0000028172, 0.0000028289, 0.0000028500, 0.0000028672, + 0.0000028718, 0.0000028702, 0.0000028703, 0.0000028700, 0.0000028672, + 0.0000028638, 0.0000028618, 0.0000028636, 0.0000028668, 0.0000028707, + 0.0000028727, 0.0000028708, 0.0000028673, 0.0000028671, 0.0000028668, + 0.0000028617, 0.0000028523, 0.0000028443, 0.0000028361, 0.0000028306, + 0.0000028271, 0.0000028259, 0.0000028240, 0.0000028227, 0.0000028272, + 0.0000028328, 0.0000028363, 0.0000028374, 0.0000028369, 0.0000028368, + 0.0000028394, 0.0000028430, 0.0000028445, 0.0000028443, 0.0000028439, + 0.0000028446, 0.0000028470, 0.0000028511, 0.0000028547, 0.0000028562, + 0.0000028548, 0.0000028522, 0.0000028478, 0.0000028423, 0.0000028391, + 0.0000028462, 0.0000028556, 0.0000028678, 0.0000028798, 0.0000028879, + 0.0000028899, 0.0000028872, 0.0000028786, 0.0000028692, 0.0000028638, + 0.0000028611, 0.0000028588, 0.0000028570, 0.0000028574, 0.0000028601, + 0.0000028651, 0.0000028686, 0.0000028668, 0.0000028608, 0.0000028565, + 0.0000028548, 0.0000028527, 0.0000028488, 0.0000028406, 0.0000028274, + 0.0000028155, 0.0000028122, 0.0000028188, 0.0000028312, 0.0000028395, + 0.0000028402, 0.0000028362, 0.0000028324, 0.0000028323, 0.0000028341, + 0.0000028353, 0.0000028326, 0.0000028246, 0.0000028164, 0.0000028109, + 0.0000028071, 0.0000028039, 0.0000028025, 0.0000028016, 0.0000028010, + 0.0000028063, 0.0000028170, 0.0000028271, 0.0000028323, 0.0000028330, + 0.0000028291, 0.0000028233, 0.0000028187, 0.0000028143, 0.0000028072, + 0.0000028028, 0.0000028003, 0.0000027941, 0.0000027822, 0.0000027713, + 0.0000027697, 0.0000027787, 0.0000027932, 0.0000027982, 0.0000027951, + 0.0000027882, 0.0000027853, 0.0000027914, 0.0000027978, 0.0000028018, + 0.0000028028, 0.0000028039, 0.0000028041, 0.0000028005, 0.0000027884, + 0.0000027676, 0.0000027478, 0.0000027349, 0.0000027252, 0.0000027193, + 0.0000027189, 0.0000027195, 0.0000027166, 0.0000027133, 0.0000027180, + 0.0000027284, 0.0000027329, 0.0000027287, 0.0000027166, 0.0000027040, + 0.0000027011, 0.0000027044, 0.0000027099, 0.0000027152, 0.0000027203, + 0.0000027262, 0.0000027337, 0.0000027408, 0.0000027427, 0.0000027409, + 0.0000027359, 0.0000027280, 0.0000027231, 0.0000027255, 0.0000027314, + 0.0000027333, 0.0000027313, 0.0000027308, 0.0000027372, 0.0000027501, + 0.0000027652, 0.0000027753, 0.0000027757, 0.0000027711, 0.0000027710, + 0.0000027801, 0.0000027957, 0.0000028131, 0.0000028271, 0.0000028313, + 0.0000028276, 0.0000028146, 0.0000028044, 0.0000028035, 0.0000028059, + 0.0000028063, 0.0000028057, 0.0000028062, 0.0000028040, 0.0000027921, + 0.0000027778, 0.0000027723, 0.0000027721, 0.0000027728, 0.0000027779, + 0.0000027890, 0.0000028025, 0.0000028116, 0.0000028107, 0.0000028017, + 0.0000027945, 0.0000027974, 0.0000028083, 0.0000028224, 0.0000028399, + 0.0000028597, 0.0000028746, 0.0000028810, 0.0000028828, 0.0000028841, + 0.0000028841, 0.0000028803, 0.0000028698, 0.0000028549, 0.0000028421, + 0.0000028373, 0.0000028384, 0.0000028403, 0.0000028391, 0.0000028325, + 0.0000028221, 0.0000028125, 0.0000028095, 0.0000028141, 0.0000028253, + 0.0000028347, 0.0000028370, 0.0000028348, 0.0000028345, 0.0000028424, + 0.0000028592, 0.0000028722, 0.0000028730, 0.0000028625, 0.0000028446, + 0.0000028293, 0.0000028262, 0.0000028347, 0.0000028498, 0.0000028672, + 0.0000028847, 0.0000028951, 0.0000028955, 0.0000028914, 0.0000028881, + 0.0000028873, 0.0000028877, 0.0000028891, 0.0000028879, 0.0000028829, + 0.0000028780, 0.0000028760, 0.0000028761, 0.0000028742, 0.0000028690, + 0.0000028632, 0.0000028580, 0.0000028527, 0.0000028475, 0.0000028413, + 0.0000028343, 0.0000028280, 0.0000028232, 0.0000028198, 0.0000028191, + 0.0000028214, 0.0000028253, 0.0000028281, 0.0000028280, 0.0000028253, + 0.0000028191, 0.0000028114, 0.0000028049, 0.0000027999, 0.0000027977, + 0.0000027973, 0.0000027960, 0.0000027937, 0.0000027930, 0.0000027943, + 0.0000027955, 0.0000027962, 0.0000027961, 0.0000027960, 0.0000027963, + 0.0000027954, 0.0000027934, 0.0000027915, 0.0000027920, 0.0000027952, + 0.0000027966, 0.0000027900, 0.0000027791, 0.0000027740, 0.0000027762, + 0.0000027806, 0.0000027815, 0.0000027793, 0.0000027742, 0.0000027673, + 0.0000027612, 0.0000027568, 0.0000027536, 0.0000027551, 0.0000027656, + 0.0000027797, 0.0000027885, 0.0000027904, 0.0000027878, 0.0000027773, + 0.0000027661, 0.0000027576, 0.0000027541, 0.0000027605, 0.0000027720, + 0.0000027738, 0.0000027688, 0.0000027677, 0.0000027746, 0.0000027829, + 0.0000027888, 0.0000027930, 0.0000028012, 0.0000028104, 0.0000028142, + 0.0000028152, 0.0000028145, 0.0000028150, 0.0000028192, 0.0000028251, + 0.0000028318, 0.0000028361, 0.0000028385, 0.0000028420, 0.0000028508, + 0.0000028615, 0.0000028712, 0.0000028803, 0.0000028870, 0.0000028911, + 0.0000028944, 0.0000028981, 0.0000029006, 0.0000029002, 0.0000028975, + 0.0000028926, 0.0000028847, 0.0000028769, 0.0000028709, 0.0000028671, + 0.0000028621, 0.0000028542, 0.0000028433, 0.0000028311, 0.0000028218, + 0.0000028182, 0.0000028184, 0.0000028201, 0.0000028222, 0.0000028244, + 0.0000028271, 0.0000028304, 0.0000028331, 0.0000028355, 0.0000028385, + 0.0000028397, 0.0000028391, 0.0000028375, 0.0000028338, 0.0000028288, + 0.0000028221, 0.0000028124, 0.0000028002, 0.0000027900, 0.0000027844, + 0.0000027830, 0.0000027861, 0.0000027980, 0.0000028124, 0.0000028223, + 0.0000028278, 0.0000028310, 0.0000028332, 0.0000028351, 0.0000028383, + 0.0000028440, 0.0000028499, 0.0000028529, 0.0000028525, 0.0000028496, + 0.0000028427, 0.0000028342, 0.0000028263, 0.0000028212, 0.0000028198, + 0.0000028209, 0.0000028225, 0.0000028200, 0.0000028126, 0.0000028009, + 0.0000027912, 0.0000027871, 0.0000027895, 0.0000027942, 0.0000027950, + 0.0000027892, 0.0000027767, 0.0000027679, 0.0000027667, 0.0000027683, + 0.0000027680, 0.0000027668, 0.0000027659, 0.0000027649, 0.0000027622, + 0.0000027578, 0.0000027533, 0.0000027507, 0.0000027510, 0.0000027518, + 0.0000027495, 0.0000027381, 0.0000027223, 0.0000027143, 0.0000027098, + 0.0000027023, 0.0000026971, 0.0000026914, 0.0000026821, 0.0000026808, + 0.0000026893, 0.0000026986, 0.0000027113, 0.0000027379, 0.0000027652, + 0.0000027710, 0.0000027607, 0.0000027531, 0.0000027550, 0.0000027631, + 0.0000027741, 0.0000027844, 0.0000027894, 0.0000027894, 0.0000027798, + 0.0000027613, 0.0000027443, 0.0000027383, 0.0000027434, 0.0000027593, + 0.0000027654, 0.0000027639, 0.0000027694, 0.0000027841, 0.0000028024, + 0.0000028128, 0.0000028122, 0.0000028045, 0.0000027970, 0.0000027950, + 0.0000027981, 0.0000028052, 0.0000028162, 0.0000028295, 0.0000028439, + 0.0000028545, 0.0000028576, 0.0000028544, 0.0000028457, 0.0000028344, + 0.0000028338, 0.0000028389, 0.0000028418, 0.0000028439, 0.0000028396, + 0.0000028348, 0.0000028348, 0.0000028300, 0.0000028161, 0.0000028062, + 0.0000027986, 0.0000027952, 0.0000027938, 0.0000027931, 0.0000027908, + 0.0000027911, 0.0000027959, 0.0000028038, 0.0000028087, 0.0000028090, + 0.0000028097, 0.0000028170, 0.0000028242, 0.0000028241, 0.0000028209, + 0.0000028168, 0.0000028082, 0.0000027974, 0.0000027877, 0.0000027819, + 0.0000027809, 0.0000027804, 0.0000027800, 0.0000027818, 0.0000027843, + 0.0000027876, 0.0000027911, 0.0000027964, 0.0000028013, 0.0000028044, + 0.0000028047, 0.0000028001, 0.0000027963, 0.0000027966, 0.0000027964, + 0.0000027969, 0.0000027964, 0.0000027961, 0.0000027984, 0.0000028032, + 0.0000028083, 0.0000028132, 0.0000028184, 0.0000028230, 0.0000028254, + 0.0000028244, 0.0000028228, 0.0000028203, 0.0000028214, 0.0000028216, + 0.0000028204, 0.0000028191, 0.0000028173, 0.0000028139, 0.0000028140, + 0.0000028185, 0.0000028236, 0.0000028250, 0.0000028229, 0.0000028168, + 0.0000028091, 0.0000028036, 0.0000028011, 0.0000027998, 0.0000027996, + 0.0000027996, 0.0000028024, 0.0000028124, 0.0000028283, 0.0000028414, + 0.0000028491, 0.0000028544, 0.0000028576, 0.0000028586, 0.0000028606, + 0.0000028639, 0.0000028665, 0.0000028689, 0.0000028711, 0.0000028743, + 0.0000028786, 0.0000028839, 0.0000028914, 0.0000028972, 0.0000029026, + 0.0000029036, 0.0000029005, 0.0000028943, 0.0000028857, 0.0000028765, + 0.0000028657, 0.0000028508, 0.0000028365, 0.0000028233, 0.0000028155, + 0.0000028164, 0.0000028246, 0.0000028433, 0.0000028655, 0.0000028753, + 0.0000028781, 0.0000028785, 0.0000028785, 0.0000028733, 0.0000028662, + 0.0000028608, 0.0000028600, 0.0000028631, 0.0000028691, 0.0000028744, + 0.0000028759, 0.0000028763, 0.0000028774, 0.0000028762, 0.0000028685, + 0.0000028576, 0.0000028489, 0.0000028412, 0.0000028388, 0.0000028378, + 0.0000028359, 0.0000028301, 0.0000028260, 0.0000028295, 0.0000028342, + 0.0000028365, 0.0000028373, 0.0000028367, 0.0000028363, 0.0000028375, + 0.0000028396, 0.0000028410, 0.0000028421, 0.0000028428, 0.0000028445, + 0.0000028484, 0.0000028539, 0.0000028581, 0.0000028582, 0.0000028552, + 0.0000028518, 0.0000028480, 0.0000028439, 0.0000028426, 0.0000028544, + 0.0000028636, 0.0000028753, 0.0000028871, 0.0000028953, 0.0000028974, + 0.0000028945, 0.0000028855, 0.0000028744, 0.0000028674, 0.0000028640, + 0.0000028617, 0.0000028603, 0.0000028607, 0.0000028630, 0.0000028665, + 0.0000028685, 0.0000028666, 0.0000028611, 0.0000028578, 0.0000028574, + 0.0000028563, 0.0000028520, 0.0000028430, 0.0000028286, 0.0000028147, + 0.0000028104, 0.0000028151, 0.0000028281, 0.0000028387, 0.0000028409, + 0.0000028376, 0.0000028322, 0.0000028301, 0.0000028318, 0.0000028335, + 0.0000028324, 0.0000028247, 0.0000028152, 0.0000028099, 0.0000028069, + 0.0000028033, 0.0000027990, 0.0000027950, 0.0000027950, 0.0000028042, + 0.0000028188, 0.0000028297, 0.0000028335, 0.0000028335, 0.0000028310, + 0.0000028261, 0.0000028235, 0.0000028215, 0.0000028172, 0.0000028099, + 0.0000028079, 0.0000028030, 0.0000027921, 0.0000027768, 0.0000027692, + 0.0000027707, 0.0000027852, 0.0000027978, 0.0000027977, 0.0000027930, + 0.0000027888, 0.0000027909, 0.0000027983, 0.0000028046, 0.0000028051, + 0.0000028008, 0.0000027988, 0.0000027993, 0.0000027982, 0.0000027873, + 0.0000027639, 0.0000027424, 0.0000027301, 0.0000027243, 0.0000027230, + 0.0000027231, 0.0000027206, 0.0000027148, 0.0000027148, 0.0000027247, + 0.0000027360, 0.0000027393, 0.0000027347, 0.0000027227, 0.0000027121, + 0.0000027088, 0.0000027098, 0.0000027119, 0.0000027168, 0.0000027238, + 0.0000027313, 0.0000027385, 0.0000027431, 0.0000027424, 0.0000027407, + 0.0000027342, 0.0000027269, 0.0000027255, 0.0000027313, 0.0000027366, + 0.0000027368, 0.0000027352, 0.0000027369, 0.0000027451, 0.0000027573, + 0.0000027702, 0.0000027771, 0.0000027753, 0.0000027700, 0.0000027696, + 0.0000027785, 0.0000027943, 0.0000028125, 0.0000028279, 0.0000028345, + 0.0000028306, 0.0000028165, 0.0000028052, 0.0000028040, 0.0000028056, + 0.0000028055, 0.0000028054, 0.0000028056, 0.0000028006, 0.0000027854, + 0.0000027715, 0.0000027675, 0.0000027675, 0.0000027708, 0.0000027819, + 0.0000027994, 0.0000028130, 0.0000028151, 0.0000028067, 0.0000027995, + 0.0000028021, 0.0000028113, 0.0000028222, 0.0000028387, 0.0000028620, + 0.0000028825, 0.0000028918, 0.0000028937, 0.0000028963, 0.0000028989, + 0.0000028957, 0.0000028841, 0.0000028663, 0.0000028496, 0.0000028418, + 0.0000028430, 0.0000028471, 0.0000028473, 0.0000028402, 0.0000028277, + 0.0000028171, 0.0000028136, 0.0000028189, 0.0000028307, 0.0000028404, + 0.0000028420, 0.0000028379, 0.0000028352, 0.0000028394, 0.0000028532, + 0.0000028669, 0.0000028711, 0.0000028670, 0.0000028551, 0.0000028397, + 0.0000028295, 0.0000028296, 0.0000028383, 0.0000028516, 0.0000028672, + 0.0000028833, 0.0000028940, 0.0000028960, 0.0000028936, 0.0000028913, + 0.0000028897, 0.0000028897, 0.0000028916, 0.0000028924, 0.0000028893, + 0.0000028855, 0.0000028835, 0.0000028835, 0.0000028833, 0.0000028798, + 0.0000028746, 0.0000028691, 0.0000028625, 0.0000028552, 0.0000028485, + 0.0000028426, 0.0000028375, 0.0000028315, 0.0000028244, 0.0000028188, + 0.0000028167, 0.0000028154, 0.0000028155, 0.0000028150, 0.0000028136, + 0.0000028116, 0.0000028087, 0.0000028059, 0.0000028027, 0.0000027996, + 0.0000027977, 0.0000027956, 0.0000027930, 0.0000027901, 0.0000027900, + 0.0000027909, 0.0000027905, 0.0000027886, 0.0000027856, 0.0000027838, + 0.0000027842, 0.0000027853, 0.0000027869, 0.0000027871, 0.0000027884, + 0.0000027943, 0.0000027992, 0.0000027979, 0.0000027881, 0.0000027792, + 0.0000027788, 0.0000027838, 0.0000027890, 0.0000027894, 0.0000027858, + 0.0000027799, 0.0000027742, 0.0000027695, 0.0000027651, 0.0000027641, + 0.0000027715, 0.0000027835, 0.0000027914, 0.0000027929, 0.0000027883, + 0.0000027768, 0.0000027669, 0.0000027604, 0.0000027593, 0.0000027695, + 0.0000027771, 0.0000027743, 0.0000027691, 0.0000027700, 0.0000027767, + 0.0000027827, 0.0000027863, 0.0000027948, 0.0000028084, 0.0000028171, + 0.0000028206, 0.0000028222, 0.0000028222, 0.0000028243, 0.0000028309, + 0.0000028404, 0.0000028507, 0.0000028569, 0.0000028581, 0.0000028585, + 0.0000028623, 0.0000028689, 0.0000028754, 0.0000028813, 0.0000028868, + 0.0000028916, 0.0000028942, 0.0000028983, 0.0000029032, 0.0000029044, + 0.0000029036, 0.0000028986, 0.0000028903, 0.0000028815, 0.0000028748, + 0.0000028716, 0.0000028677, 0.0000028605, 0.0000028498, 0.0000028374, + 0.0000028273, 0.0000028227, 0.0000028225, 0.0000028231, 0.0000028242, + 0.0000028258, 0.0000028276, 0.0000028300, 0.0000028319, 0.0000028330, + 0.0000028350, 0.0000028358, 0.0000028346, 0.0000028312, 0.0000028263, + 0.0000028200, 0.0000028122, 0.0000028033, 0.0000027947, 0.0000027882, + 0.0000027836, 0.0000027822, 0.0000027862, 0.0000028002, 0.0000028157, + 0.0000028265, 0.0000028344, 0.0000028403, 0.0000028436, 0.0000028446, + 0.0000028453, 0.0000028478, 0.0000028516, 0.0000028535, 0.0000028519, + 0.0000028479, 0.0000028400, 0.0000028301, 0.0000028213, 0.0000028152, + 0.0000028133, 0.0000028147, 0.0000028184, 0.0000028219, 0.0000028212, + 0.0000028162, 0.0000028075, 0.0000027980, 0.0000027936, 0.0000027938, + 0.0000027942, 0.0000027871, 0.0000027735, 0.0000027637, 0.0000027620, + 0.0000027634, 0.0000027645, 0.0000027647, 0.0000027653, 0.0000027654, + 0.0000027648, 0.0000027632, 0.0000027606, 0.0000027575, 0.0000027551, + 0.0000027534, 0.0000027501, 0.0000027394, 0.0000027239, 0.0000027144, + 0.0000027105, 0.0000027042, 0.0000026979, 0.0000026939, 0.0000026862, + 0.0000026830, 0.0000026884, 0.0000026966, 0.0000027062, 0.0000027300, + 0.0000027594, 0.0000027686, 0.0000027607, 0.0000027522, 0.0000027520, + 0.0000027613, 0.0000027754, 0.0000027865, 0.0000027907, 0.0000027880, + 0.0000027737, 0.0000027533, 0.0000027404, 0.0000027401, 0.0000027522, + 0.0000027697, 0.0000027724, 0.0000027686, 0.0000027728, 0.0000027844, + 0.0000028001, 0.0000028079, 0.0000028070, 0.0000028009, 0.0000027922, + 0.0000027886, 0.0000027915, 0.0000027990, 0.0000028126, 0.0000028273, + 0.0000028382, 0.0000028453, 0.0000028509, 0.0000028512, 0.0000028447, + 0.0000028375, 0.0000028327, 0.0000028348, 0.0000028412, 0.0000028464, + 0.0000028463, 0.0000028413, 0.0000028322, 0.0000028233, 0.0000028129, + 0.0000028013, 0.0000027930, 0.0000027870, 0.0000027797, 0.0000027806, + 0.0000027833, 0.0000027847, 0.0000027868, 0.0000027923, 0.0000028012, + 0.0000028066, 0.0000028080, 0.0000028084, 0.0000028159, 0.0000028247, + 0.0000028249, 0.0000028240, 0.0000028238, 0.0000028158, 0.0000028045, + 0.0000027922, 0.0000027853, 0.0000027838, 0.0000027846, 0.0000027845, + 0.0000027849, 0.0000027854, 0.0000027863, 0.0000027870, 0.0000027911, + 0.0000027977, 0.0000028033, 0.0000028067, 0.0000028056, 0.0000028028, + 0.0000028043, 0.0000028052, 0.0000028057, 0.0000028035, 0.0000028019, + 0.0000028033, 0.0000028073, 0.0000028131, 0.0000028204, 0.0000028274, + 0.0000028317, 0.0000028347, 0.0000028350, 0.0000028336, 0.0000028310, + 0.0000028282, 0.0000028291, 0.0000028303, 0.0000028300, 0.0000028270, + 0.0000028224, 0.0000028172, 0.0000028182, 0.0000028226, 0.0000028263, + 0.0000028265, 0.0000028235, 0.0000028169, 0.0000028107, 0.0000028086, + 0.0000028091, 0.0000028086, 0.0000028050, 0.0000028014, 0.0000028005, + 0.0000028026, 0.0000028119, 0.0000028271, 0.0000028406, 0.0000028494, + 0.0000028548, 0.0000028586, 0.0000028616, 0.0000028641, 0.0000028643, + 0.0000028626, 0.0000028608, 0.0000028615, 0.0000028655, 0.0000028742, + 0.0000028864, 0.0000028969, 0.0000029049, 0.0000029063, 0.0000029056, + 0.0000029014, 0.0000028934, 0.0000028843, 0.0000028713, 0.0000028547, + 0.0000028387, 0.0000028256, 0.0000028171, 0.0000028165, 0.0000028216, + 0.0000028357, 0.0000028588, 0.0000028764, 0.0000028834, 0.0000028854, + 0.0000028853, 0.0000028795, 0.0000028694, 0.0000028598, 0.0000028557, + 0.0000028585, 0.0000028652, 0.0000028716, 0.0000028755, 0.0000028783, + 0.0000028800, 0.0000028776, 0.0000028688, 0.0000028589, 0.0000028532, + 0.0000028496, 0.0000028497, 0.0000028490, 0.0000028448, 0.0000028370, + 0.0000028326, 0.0000028355, 0.0000028386, 0.0000028395, 0.0000028394, + 0.0000028378, 0.0000028356, 0.0000028346, 0.0000028355, 0.0000028383, + 0.0000028420, 0.0000028460, 0.0000028510, 0.0000028572, 0.0000028632, + 0.0000028663, 0.0000028651, 0.0000028597, 0.0000028551, 0.0000028520, + 0.0000028501, 0.0000028501, 0.0000028609, 0.0000028688, 0.0000028796, + 0.0000028908, 0.0000028994, 0.0000029021, 0.0000029001, 0.0000028922, + 0.0000028812, 0.0000028725, 0.0000028677, 0.0000028650, 0.0000028631, + 0.0000028621, 0.0000028635, 0.0000028659, 0.0000028675, 0.0000028652, + 0.0000028598, 0.0000028572, 0.0000028576, 0.0000028569, 0.0000028523, + 0.0000028427, 0.0000028278, 0.0000028128, 0.0000028076, 0.0000028126, + 0.0000028270, 0.0000028394, 0.0000028429, 0.0000028396, 0.0000028329, + 0.0000028291, 0.0000028301, 0.0000028326, 0.0000028321, 0.0000028246, + 0.0000028137, 0.0000028078, 0.0000028060, 0.0000028037, 0.0000027977, + 0.0000027898, 0.0000027889, 0.0000028004, 0.0000028184, 0.0000028301, + 0.0000028333, 0.0000028330, 0.0000028313, 0.0000028280, 0.0000028272, + 0.0000028277, 0.0000028252, 0.0000028170, 0.0000028125, 0.0000028092, + 0.0000028009, 0.0000027859, 0.0000027719, 0.0000027669, 0.0000027757, + 0.0000027928, 0.0000027996, 0.0000027966, 0.0000027927, 0.0000027937, + 0.0000027987, 0.0000028058, 0.0000028107, 0.0000028056, 0.0000027962, + 0.0000027930, 0.0000027950, 0.0000027957, 0.0000027861, 0.0000027624, + 0.0000027416, 0.0000027316, 0.0000027290, 0.0000027287, 0.0000027264, + 0.0000027198, 0.0000027160, 0.0000027206, 0.0000027336, 0.0000027448, + 0.0000027473, 0.0000027425, 0.0000027307, 0.0000027210, 0.0000027161, + 0.0000027159, 0.0000027187, 0.0000027256, 0.0000027345, 0.0000027417, + 0.0000027469, 0.0000027482, 0.0000027463, 0.0000027420, 0.0000027345, + 0.0000027294, 0.0000027315, 0.0000027373, 0.0000027401, 0.0000027394, + 0.0000027391, 0.0000027443, 0.0000027543, 0.0000027655, 0.0000027745, + 0.0000027772, 0.0000027735, 0.0000027670, 0.0000027670, 0.0000027766, + 0.0000027923, 0.0000028113, 0.0000028284, 0.0000028364, 0.0000028327, + 0.0000028177, 0.0000028054, 0.0000028036, 0.0000028050, 0.0000028058, + 0.0000028071, 0.0000028070, 0.0000027978, 0.0000027802, 0.0000027678, + 0.0000027653, 0.0000027656, 0.0000027719, 0.0000027896, 0.0000028099, + 0.0000028176, 0.0000028122, 0.0000028036, 0.0000028044, 0.0000028140, + 0.0000028239, 0.0000028374, 0.0000028604, 0.0000028852, 0.0000028990, + 0.0000029015, 0.0000029036, 0.0000029093, 0.0000029107, 0.0000029011, + 0.0000028809, 0.0000028599, 0.0000028486, 0.0000028488, 0.0000028547, + 0.0000028565, 0.0000028500, 0.0000028366, 0.0000028246, 0.0000028209, + 0.0000028262, 0.0000028376, 0.0000028471, 0.0000028490, 0.0000028437, + 0.0000028381, 0.0000028392, 0.0000028498, 0.0000028634, 0.0000028694, + 0.0000028676, 0.0000028593, 0.0000028473, 0.0000028358, 0.0000028311, + 0.0000028333, 0.0000028427, 0.0000028553, 0.0000028691, 0.0000028826, + 0.0000028927, 0.0000028964, 0.0000028966, 0.0000028950, 0.0000028919, + 0.0000028901, 0.0000028925, 0.0000028959, 0.0000028961, 0.0000028943, + 0.0000028927, 0.0000028915, 0.0000028904, 0.0000028869, 0.0000028817, + 0.0000028763, 0.0000028700, 0.0000028623, 0.0000028548, 0.0000028493, + 0.0000028458, 0.0000028418, 0.0000028354, 0.0000028278, 0.0000028212, + 0.0000028167, 0.0000028130, 0.0000028095, 0.0000028066, 0.0000028033, + 0.0000028003, 0.0000027983, 0.0000027976, 0.0000027960, 0.0000027941, + 0.0000027922, 0.0000027901, 0.0000027871, 0.0000027847, 0.0000027848, + 0.0000027857, 0.0000027856, 0.0000027826, 0.0000027778, 0.0000027742, + 0.0000027735, 0.0000027756, 0.0000027792, 0.0000027817, 0.0000027841, + 0.0000027904, 0.0000027992, 0.0000028053, 0.0000028008, 0.0000027903, + 0.0000027836, 0.0000027862, 0.0000027933, 0.0000027967, 0.0000027949, + 0.0000027910, 0.0000027862, 0.0000027817, 0.0000027768, 0.0000027736, + 0.0000027779, 0.0000027878, 0.0000027948, 0.0000027957, 0.0000027888, + 0.0000027769, 0.0000027685, 0.0000027641, 0.0000027662, 0.0000027774, + 0.0000027803, 0.0000027755, 0.0000027714, 0.0000027726, 0.0000027769, + 0.0000027797, 0.0000027841, 0.0000027982, 0.0000028141, 0.0000028225, + 0.0000028276, 0.0000028308, 0.0000028328, 0.0000028375, 0.0000028460, + 0.0000028570, 0.0000028680, 0.0000028738, 0.0000028739, 0.0000028716, + 0.0000028715, 0.0000028747, 0.0000028786, 0.0000028816, 0.0000028852, + 0.0000028895, 0.0000028923, 0.0000028950, 0.0000028996, 0.0000029036, + 0.0000029050, 0.0000029010, 0.0000028937, 0.0000028837, 0.0000028766, + 0.0000028713, 0.0000028678, 0.0000028609, 0.0000028505, 0.0000028381, + 0.0000028281, 0.0000028233, 0.0000028220, 0.0000028217, 0.0000028216, + 0.0000028225, 0.0000028239, 0.0000028255, 0.0000028268, 0.0000028274, + 0.0000028286, 0.0000028291, 0.0000028283, 0.0000028250, 0.0000028194, + 0.0000028123, 0.0000028049, 0.0000027979, 0.0000027923, 0.0000027884, + 0.0000027845, 0.0000027835, 0.0000027890, 0.0000028037, 0.0000028193, + 0.0000028308, 0.0000028402, 0.0000028479, 0.0000028515, 0.0000028516, + 0.0000028498, 0.0000028489, 0.0000028502, 0.0000028505, 0.0000028473, + 0.0000028426, 0.0000028338, 0.0000028235, 0.0000028147, 0.0000028090, + 0.0000028059, 0.0000028050, 0.0000028073, 0.0000028127, 0.0000028177, + 0.0000028190, 0.0000028152, 0.0000028072, 0.0000027977, 0.0000027928, + 0.0000027910, 0.0000027833, 0.0000027693, 0.0000027595, 0.0000027579, + 0.0000027590, 0.0000027613, 0.0000027641, 0.0000027660, 0.0000027667, + 0.0000027671, 0.0000027674, 0.0000027667, 0.0000027640, 0.0000027597, + 0.0000027553, 0.0000027506, 0.0000027402, 0.0000027251, 0.0000027148, + 0.0000027110, 0.0000027060, 0.0000026997, 0.0000026949, 0.0000026886, + 0.0000026838, 0.0000026876, 0.0000026945, 0.0000027012, 0.0000027210, + 0.0000027519, 0.0000027654, 0.0000027598, 0.0000027517, 0.0000027505, + 0.0000027592, 0.0000027747, 0.0000027871, 0.0000027918, 0.0000027885, + 0.0000027707, 0.0000027503, 0.0000027404, 0.0000027438, 0.0000027601, + 0.0000027773, 0.0000027788, 0.0000027739, 0.0000027767, 0.0000027839, + 0.0000027951, 0.0000028018, 0.0000028013, 0.0000027964, 0.0000027910, + 0.0000027842, 0.0000027850, 0.0000027923, 0.0000028070, 0.0000028230, + 0.0000028338, 0.0000028408, 0.0000028435, 0.0000028450, 0.0000028429, + 0.0000028383, 0.0000028364, 0.0000028376, 0.0000028407, 0.0000028452, + 0.0000028464, 0.0000028412, 0.0000028309, 0.0000028140, 0.0000028029, + 0.0000027980, 0.0000027917, 0.0000027811, 0.0000027719, 0.0000027664, + 0.0000027709, 0.0000027742, 0.0000027753, 0.0000027781, 0.0000027858, + 0.0000027952, 0.0000028005, 0.0000028021, 0.0000028032, 0.0000028116, + 0.0000028226, 0.0000028260, 0.0000028265, 0.0000028278, 0.0000028214, + 0.0000028100, 0.0000027974, 0.0000027914, 0.0000027889, 0.0000027895, + 0.0000027919, 0.0000027944, 0.0000027950, 0.0000027931, 0.0000027893, + 0.0000027889, 0.0000027952, 0.0000028040, 0.0000028116, 0.0000028145, + 0.0000028128, 0.0000028112, 0.0000028118, 0.0000028128, 0.0000028139, + 0.0000028149, 0.0000028173, 0.0000028209, 0.0000028236, 0.0000028261, + 0.0000028302, 0.0000028336, 0.0000028357, 0.0000028375, 0.0000028378, + 0.0000028377, 0.0000028345, 0.0000028324, 0.0000028336, 0.0000028359, + 0.0000028362, 0.0000028341, 0.0000028296, 0.0000028281, 0.0000028298, + 0.0000028324, 0.0000028336, 0.0000028326, 0.0000028271, 0.0000028192, + 0.0000028145, 0.0000028153, 0.0000028185, 0.0000028189, 0.0000028140, + 0.0000028061, 0.0000028022, 0.0000027997, 0.0000028025, 0.0000028137, + 0.0000028278, 0.0000028387, 0.0000028457, 0.0000028512, 0.0000028558, + 0.0000028600, 0.0000028630, 0.0000028640, 0.0000028631, 0.0000028621, + 0.0000028620, 0.0000028663, 0.0000028761, 0.0000028886, 0.0000029001, + 0.0000029046, 0.0000029050, 0.0000029035, 0.0000029005, 0.0000028941, + 0.0000028816, 0.0000028640, 0.0000028439, 0.0000028279, 0.0000028185, + 0.0000028169, 0.0000028195, 0.0000028287, 0.0000028479, 0.0000028709, + 0.0000028851, 0.0000028898, 0.0000028903, 0.0000028859, 0.0000028755, + 0.0000028630, 0.0000028548, 0.0000028551, 0.0000028596, 0.0000028659, + 0.0000028714, 0.0000028748, 0.0000028764, 0.0000028750, 0.0000028684, + 0.0000028628, 0.0000028608, 0.0000028592, 0.0000028594, 0.0000028584, + 0.0000028544, 0.0000028468, 0.0000028405, 0.0000028407, 0.0000028417, + 0.0000028421, 0.0000028411, 0.0000028386, 0.0000028349, 0.0000028328, + 0.0000028345, 0.0000028381, 0.0000028451, 0.0000028544, 0.0000028638, + 0.0000028712, 0.0000028758, 0.0000028766, 0.0000028734, 0.0000028664, + 0.0000028606, 0.0000028578, 0.0000028567, 0.0000028571, 0.0000028654, + 0.0000028719, 0.0000028814, 0.0000028914, 0.0000028996, 0.0000029022, + 0.0000029008, 0.0000028944, 0.0000028850, 0.0000028762, 0.0000028699, + 0.0000028659, 0.0000028630, 0.0000028615, 0.0000028615, 0.0000028635, + 0.0000028645, 0.0000028612, 0.0000028559, 0.0000028537, 0.0000028539, + 0.0000028530, 0.0000028486, 0.0000028392, 0.0000028244, 0.0000028094, + 0.0000028046, 0.0000028108, 0.0000028268, 0.0000028404, 0.0000028451, + 0.0000028419, 0.0000028345, 0.0000028294, 0.0000028294, 0.0000028311, + 0.0000028302, 0.0000028230, 0.0000028112, 0.0000028042, 0.0000028042, + 0.0000028040, 0.0000027979, 0.0000027868, 0.0000027839, 0.0000027953, + 0.0000028151, 0.0000028285, 0.0000028310, 0.0000028300, 0.0000028296, + 0.0000028282, 0.0000028292, 0.0000028319, 0.0000028303, 0.0000028228, + 0.0000028139, 0.0000028119, 0.0000028062, 0.0000027945, 0.0000027790, + 0.0000027710, 0.0000027721, 0.0000027869, 0.0000027998, 0.0000028018, + 0.0000027961, 0.0000027941, 0.0000028010, 0.0000028083, 0.0000028145, + 0.0000028144, 0.0000028027, 0.0000027904, 0.0000027870, 0.0000027914, + 0.0000027938, 0.0000027848, 0.0000027638, 0.0000027460, 0.0000027381, + 0.0000027363, 0.0000027339, 0.0000027278, 0.0000027222, 0.0000027219, + 0.0000027300, 0.0000027434, 0.0000027541, 0.0000027560, 0.0000027510, + 0.0000027406, 0.0000027320, 0.0000027278, 0.0000027283, 0.0000027333, + 0.0000027412, 0.0000027496, 0.0000027554, 0.0000027580, 0.0000027563, + 0.0000027528, 0.0000027458, 0.0000027374, 0.0000027339, 0.0000027356, + 0.0000027392, 0.0000027405, 0.0000027408, 0.0000027429, 0.0000027521, + 0.0000027644, 0.0000027739, 0.0000027776, 0.0000027754, 0.0000027687, + 0.0000027636, 0.0000027658, 0.0000027765, 0.0000027914, 0.0000028094, + 0.0000028275, 0.0000028374, 0.0000028342, 0.0000028193, 0.0000028055, + 0.0000028027, 0.0000028042, 0.0000028072, 0.0000028102, 0.0000028086, + 0.0000027952, 0.0000027769, 0.0000027672, 0.0000027660, 0.0000027668, + 0.0000027774, 0.0000027987, 0.0000028161, 0.0000028174, 0.0000028080, + 0.0000028060, 0.0000028147, 0.0000028269, 0.0000028384, 0.0000028577, + 0.0000028836, 0.0000029021, 0.0000029071, 0.0000029078, 0.0000029138, + 0.0000029207, 0.0000029179, 0.0000029010, 0.0000028760, 0.0000028581, + 0.0000028546, 0.0000028609, 0.0000028656, 0.0000028610, 0.0000028480, + 0.0000028355, 0.0000028302, 0.0000028331, 0.0000028434, 0.0000028532, + 0.0000028559, 0.0000028523, 0.0000028455, 0.0000028430, 0.0000028492, + 0.0000028612, 0.0000028690, 0.0000028686, 0.0000028619, 0.0000028512, + 0.0000028404, 0.0000028334, 0.0000028321, 0.0000028369, 0.0000028482, + 0.0000028616, 0.0000028737, 0.0000028843, 0.0000028923, 0.0000028971, + 0.0000028983, 0.0000028977, 0.0000028941, 0.0000028908, 0.0000028920, + 0.0000028969, 0.0000029005, 0.0000029010, 0.0000029001, 0.0000028978, + 0.0000028937, 0.0000028888, 0.0000028835, 0.0000028785, 0.0000028732, + 0.0000028670, 0.0000028602, 0.0000028547, 0.0000028513, 0.0000028487, + 0.0000028450, 0.0000028398, 0.0000028338, 0.0000028279, 0.0000028228, + 0.0000028178, 0.0000028129, 0.0000028078, 0.0000028032, 0.0000027981, + 0.0000027963, 0.0000027951, 0.0000027933, 0.0000027909, 0.0000027883, + 0.0000027856, 0.0000027826, 0.0000027800, 0.0000027792, 0.0000027796, + 0.0000027792, 0.0000027762, 0.0000027714, 0.0000027678, 0.0000027670, + 0.0000027688, 0.0000027732, 0.0000027778, 0.0000027810, 0.0000027862, + 0.0000027963, 0.0000028079, 0.0000028124, 0.0000028043, 0.0000027924, + 0.0000027901, 0.0000027956, 0.0000028004, 0.0000028011, 0.0000027996, + 0.0000027966, 0.0000027929, 0.0000027883, 0.0000027839, 0.0000027855, + 0.0000027927, 0.0000027982, 0.0000027974, 0.0000027888, 0.0000027774, + 0.0000027705, 0.0000027679, 0.0000027732, 0.0000027836, 0.0000027836, + 0.0000027782, 0.0000027745, 0.0000027744, 0.0000027760, 0.0000027768, + 0.0000027845, 0.0000028029, 0.0000028196, 0.0000028286, 0.0000028356, + 0.0000028406, 0.0000028446, 0.0000028506, 0.0000028585, 0.0000028681, + 0.0000028769, 0.0000028816, 0.0000028814, 0.0000028785, 0.0000028773, + 0.0000028787, 0.0000028807, 0.0000028819, 0.0000028829, 0.0000028860, + 0.0000028892, 0.0000028915, 0.0000028944, 0.0000028996, 0.0000029034, + 0.0000029022, 0.0000028950, 0.0000028854, 0.0000028763, 0.0000028694, + 0.0000028647, 0.0000028583, 0.0000028487, 0.0000028379, 0.0000028293, + 0.0000028247, 0.0000028225, 0.0000028211, 0.0000028207, 0.0000028215, + 0.0000028228, 0.0000028241, 0.0000028252, 0.0000028258, 0.0000028267, + 0.0000028269, 0.0000028265, 0.0000028230, 0.0000028166, 0.0000028090, + 0.0000028026, 0.0000027974, 0.0000027932, 0.0000027913, 0.0000027894, + 0.0000027897, 0.0000027957, 0.0000028088, 0.0000028230, 0.0000028342, + 0.0000028437, 0.0000028517, 0.0000028554, 0.0000028553, 0.0000028524, + 0.0000028496, 0.0000028487, 0.0000028480, 0.0000028437, 0.0000028377, + 0.0000028288, 0.0000028187, 0.0000028108, 0.0000028066, 0.0000028039, + 0.0000028009, 0.0000028000, 0.0000028026, 0.0000028073, 0.0000028124, + 0.0000028148, 0.0000028113, 0.0000028019, 0.0000027922, 0.0000027873, + 0.0000027801, 0.0000027671, 0.0000027572, 0.0000027557, 0.0000027571, + 0.0000027602, 0.0000027646, 0.0000027676, 0.0000027689, 0.0000027693, + 0.0000027702, 0.0000027704, 0.0000027686, 0.0000027635, 0.0000027572, + 0.0000027496, 0.0000027385, 0.0000027251, 0.0000027155, 0.0000027120, + 0.0000027082, 0.0000027017, 0.0000026958, 0.0000026896, 0.0000026847, + 0.0000026864, 0.0000026922, 0.0000026967, 0.0000027121, 0.0000027432, + 0.0000027622, 0.0000027592, 0.0000027514, 0.0000027501, 0.0000027574, + 0.0000027722, 0.0000027853, 0.0000027926, 0.0000027900, 0.0000027719, + 0.0000027515, 0.0000027442, 0.0000027488, 0.0000027665, 0.0000027819, + 0.0000027829, 0.0000027800, 0.0000027806, 0.0000027833, 0.0000027886, + 0.0000027933, 0.0000027936, 0.0000027927, 0.0000027878, 0.0000027828, + 0.0000027815, 0.0000027886, 0.0000028016, 0.0000028172, 0.0000028282, + 0.0000028354, 0.0000028408, 0.0000028416, 0.0000028417, 0.0000028380, + 0.0000028361, 0.0000028352, 0.0000028360, 0.0000028352, 0.0000028340, + 0.0000028305, 0.0000028232, 0.0000028123, 0.0000027980, 0.0000027899, + 0.0000027847, 0.0000027775, 0.0000027692, 0.0000027637, 0.0000027604, + 0.0000027623, 0.0000027653, 0.0000027686, 0.0000027721, 0.0000027808, + 0.0000027892, 0.0000027930, 0.0000027933, 0.0000027958, 0.0000028048, + 0.0000028184, 0.0000028265, 0.0000028272, 0.0000028288, 0.0000028240, + 0.0000028133, 0.0000028017, 0.0000027980, 0.0000027956, 0.0000027975, + 0.0000028028, 0.0000028082, 0.0000028109, 0.0000028090, 0.0000028026, + 0.0000027966, 0.0000027975, 0.0000028052, 0.0000028145, 0.0000028204, + 0.0000028217, 0.0000028203, 0.0000028212, 0.0000028223, 0.0000028243, + 0.0000028251, 0.0000028260, 0.0000028281, 0.0000028293, 0.0000028297, + 0.0000028322, 0.0000028365, 0.0000028412, 0.0000028453, 0.0000028479, + 0.0000028494, 0.0000028489, 0.0000028454, 0.0000028453, 0.0000028466, + 0.0000028464, 0.0000028440, 0.0000028393, 0.0000028366, 0.0000028388, + 0.0000028406, 0.0000028413, 0.0000028403, 0.0000028382, 0.0000028315, + 0.0000028234, 0.0000028204, 0.0000028235, 0.0000028288, 0.0000028291, + 0.0000028228, 0.0000028117, 0.0000028033, 0.0000027998, 0.0000028005, + 0.0000028074, 0.0000028183, 0.0000028290, 0.0000028381, 0.0000028448, + 0.0000028491, 0.0000028521, 0.0000028554, 0.0000028594, 0.0000028629, + 0.0000028660, 0.0000028678, 0.0000028693, 0.0000028731, 0.0000028781, + 0.0000028884, 0.0000028957, 0.0000028994, 0.0000029007, 0.0000029014, + 0.0000029001, 0.0000028930, 0.0000028787, 0.0000028574, 0.0000028352, + 0.0000028203, 0.0000028168, 0.0000028177, 0.0000028236, 0.0000028369, + 0.0000028581, 0.0000028785, 0.0000028899, 0.0000028913, 0.0000028886, + 0.0000028806, 0.0000028696, 0.0000028599, 0.0000028572, 0.0000028597, + 0.0000028636, 0.0000028682, 0.0000028715, 0.0000028743, 0.0000028755, + 0.0000028735, 0.0000028703, 0.0000028678, 0.0000028650, 0.0000028654, + 0.0000028660, 0.0000028639, 0.0000028563, 0.0000028476, 0.0000028446, + 0.0000028440, 0.0000028442, 0.0000028423, 0.0000028393, 0.0000028347, + 0.0000028331, 0.0000028355, 0.0000028411, 0.0000028512, 0.0000028644, + 0.0000028766, 0.0000028843, 0.0000028868, 0.0000028855, 0.0000028805, + 0.0000028735, 0.0000028675, 0.0000028643, 0.0000028627, 0.0000028627, + 0.0000028683, 0.0000028732, 0.0000028817, 0.0000028909, 0.0000028976, + 0.0000028997, 0.0000028985, 0.0000028935, 0.0000028860, 0.0000028777, + 0.0000028705, 0.0000028646, 0.0000028604, 0.0000028585, 0.0000028582, + 0.0000028586, 0.0000028579, 0.0000028529, 0.0000028475, 0.0000028457, + 0.0000028461, 0.0000028462, 0.0000028436, 0.0000028357, 0.0000028216, + 0.0000028072, 0.0000028024, 0.0000028094, 0.0000028262, 0.0000028409, + 0.0000028469, 0.0000028437, 0.0000028355, 0.0000028291, 0.0000028277, + 0.0000028278, 0.0000028255, 0.0000028193, 0.0000028088, 0.0000028014, + 0.0000028029, 0.0000028047, 0.0000027990, 0.0000027865, 0.0000027802, + 0.0000027893, 0.0000028089, 0.0000028240, 0.0000028270, 0.0000028260, + 0.0000028258, 0.0000028268, 0.0000028288, 0.0000028323, 0.0000028321, + 0.0000028255, 0.0000028136, 0.0000028112, 0.0000028094, 0.0000028022, + 0.0000027898, 0.0000027799, 0.0000027769, 0.0000027852, 0.0000027980, + 0.0000028046, 0.0000028035, 0.0000027976, 0.0000027999, 0.0000028114, + 0.0000028173, 0.0000028189, 0.0000028126, 0.0000027977, 0.0000027842, + 0.0000027811, 0.0000027886, 0.0000027930, 0.0000027862, 0.0000027686, + 0.0000027529, 0.0000027459, 0.0000027432, 0.0000027378, 0.0000027317, + 0.0000027296, 0.0000027321, 0.0000027410, 0.0000027535, 0.0000027626, + 0.0000027642, 0.0000027601, 0.0000027517, 0.0000027442, 0.0000027414, + 0.0000027437, 0.0000027505, 0.0000027598, 0.0000027673, 0.0000027712, + 0.0000027707, 0.0000027667, 0.0000027600, 0.0000027499, 0.0000027400, + 0.0000027352, 0.0000027350, 0.0000027363, 0.0000027379, 0.0000027406, + 0.0000027472, 0.0000027591, 0.0000027724, 0.0000027796, 0.0000027782, + 0.0000027706, 0.0000027627, 0.0000027601, 0.0000027662, 0.0000027783, + 0.0000027906, 0.0000028070, 0.0000028263, 0.0000028376, 0.0000028361, + 0.0000028220, 0.0000028054, 0.0000028007, 0.0000028026, 0.0000028083, + 0.0000028135, 0.0000028099, 0.0000027933, 0.0000027749, 0.0000027678, + 0.0000027677, 0.0000027707, 0.0000027850, 0.0000028063, 0.0000028180, + 0.0000028143, 0.0000028078, 0.0000028140, 0.0000028289, 0.0000028415, + 0.0000028556, 0.0000028786, 0.0000029019, 0.0000029120, 0.0000029118, + 0.0000029145, 0.0000029237, 0.0000029280, 0.0000029208, 0.0000028989, + 0.0000028751, 0.0000028639, 0.0000028657, 0.0000028732, 0.0000028733, + 0.0000028623, 0.0000028480, 0.0000028390, 0.0000028392, 0.0000028480, + 0.0000028583, 0.0000028630, 0.0000028614, 0.0000028550, 0.0000028492, + 0.0000028502, 0.0000028592, 0.0000028683, 0.0000028704, 0.0000028662, + 0.0000028568, 0.0000028457, 0.0000028368, 0.0000028322, 0.0000028335, + 0.0000028421, 0.0000028565, 0.0000028701, 0.0000028799, 0.0000028866, + 0.0000028921, 0.0000028964, 0.0000028980, 0.0000028979, 0.0000028950, + 0.0000028911, 0.0000028908, 0.0000028952, 0.0000029004, 0.0000029033, + 0.0000029024, 0.0000029001, 0.0000028943, 0.0000028873, 0.0000028807, + 0.0000028758, 0.0000028720, 0.0000028675, 0.0000028619, 0.0000028566, + 0.0000028528, 0.0000028498, 0.0000028469, 0.0000028435, 0.0000028395, + 0.0000028352, 0.0000028304, 0.0000028254, 0.0000028209, 0.0000028172, + 0.0000028122, 0.0000028072, 0.0000028034, 0.0000028007, 0.0000027989, + 0.0000027965, 0.0000027930, 0.0000027887, 0.0000027852, 0.0000027814, + 0.0000027779, 0.0000027761, 0.0000027743, 0.0000027723, 0.0000027690, + 0.0000027654, 0.0000027636, 0.0000027638, 0.0000027663, 0.0000027708, + 0.0000027761, 0.0000027800, 0.0000027840, 0.0000027927, 0.0000028068, + 0.0000028170, 0.0000028155, 0.0000028044, 0.0000027969, 0.0000027984, + 0.0000028024, 0.0000028048, 0.0000028055, 0.0000028051, 0.0000028032, + 0.0000027995, 0.0000027944, 0.0000027929, 0.0000027979, 0.0000028015, + 0.0000027990, 0.0000027892, 0.0000027783, 0.0000027729, 0.0000027715, + 0.0000027796, 0.0000027882, 0.0000027865, 0.0000027820, 0.0000027782, + 0.0000027758, 0.0000027751, 0.0000027760, 0.0000027872, 0.0000028086, + 0.0000028246, 0.0000028350, 0.0000028434, 0.0000028496, 0.0000028541, + 0.0000028593, 0.0000028646, 0.0000028709, 0.0000028779, 0.0000028816, + 0.0000028814, 0.0000028791, 0.0000028782, 0.0000028793, 0.0000028810, + 0.0000028814, 0.0000028804, 0.0000028810, 0.0000028840, 0.0000028880, + 0.0000028900, 0.0000028948, 0.0000029010, 0.0000029023, 0.0000028958, + 0.0000028867, 0.0000028754, 0.0000028676, 0.0000028617, 0.0000028570, + 0.0000028488, 0.0000028408, 0.0000028354, 0.0000028321, 0.0000028296, + 0.0000028278, 0.0000028271, 0.0000028274, 0.0000028278, 0.0000028284, + 0.0000028291, 0.0000028288, 0.0000028281, 0.0000028275, 0.0000028267, + 0.0000028236, 0.0000028173, 0.0000028111, 0.0000028063, 0.0000028031, + 0.0000028012, 0.0000028005, 0.0000027996, 0.0000028007, 0.0000028058, + 0.0000028149, 0.0000028258, 0.0000028356, 0.0000028444, 0.0000028517, + 0.0000028562, 0.0000028566, 0.0000028542, 0.0000028511, 0.0000028495, + 0.0000028481, 0.0000028430, 0.0000028344, 0.0000028238, 0.0000028144, + 0.0000028084, 0.0000028059, 0.0000028042, 0.0000028005, 0.0000027973, + 0.0000027980, 0.0000028001, 0.0000028024, 0.0000028064, 0.0000028094, + 0.0000028056, 0.0000027950, 0.0000027856, 0.0000027779, 0.0000027662, + 0.0000027566, 0.0000027547, 0.0000027564, 0.0000027608, 0.0000027662, + 0.0000027697, 0.0000027706, 0.0000027709, 0.0000027715, 0.0000027719, + 0.0000027712, 0.0000027669, 0.0000027587, 0.0000027481, 0.0000027356, + 0.0000027240, 0.0000027170, 0.0000027142, 0.0000027115, 0.0000027052, + 0.0000026973, 0.0000026907, 0.0000026863, 0.0000026857, 0.0000026897, + 0.0000026931, 0.0000027049, 0.0000027344, 0.0000027578, 0.0000027586, + 0.0000027513, 0.0000027501, 0.0000027568, 0.0000027688, 0.0000027812, + 0.0000027914, 0.0000027917, 0.0000027760, 0.0000027556, 0.0000027497, + 0.0000027558, 0.0000027734, 0.0000027845, 0.0000027854, 0.0000027845, + 0.0000027841, 0.0000027838, 0.0000027838, 0.0000027849, 0.0000027852, + 0.0000027842, 0.0000027844, 0.0000027824, 0.0000027828, 0.0000027878, + 0.0000027991, 0.0000028119, 0.0000028245, 0.0000028332, 0.0000028380, + 0.0000028409, 0.0000028390, 0.0000028344, 0.0000028260, 0.0000028197, + 0.0000028170, 0.0000028153, 0.0000028145, 0.0000028144, 0.0000028122, + 0.0000028070, 0.0000027976, 0.0000027851, 0.0000027744, 0.0000027681, + 0.0000027660, 0.0000027665, 0.0000027632, 0.0000027604, 0.0000027590, + 0.0000027614, 0.0000027639, 0.0000027686, 0.0000027778, 0.0000027860, + 0.0000027886, 0.0000027882, 0.0000027913, 0.0000027995, 0.0000028141, + 0.0000028251, 0.0000028271, 0.0000028284, 0.0000028258, 0.0000028152, + 0.0000028047, 0.0000028025, 0.0000028023, 0.0000028057, 0.0000028113, + 0.0000028153, 0.0000028177, 0.0000028179, 0.0000028135, 0.0000028068, + 0.0000028062, 0.0000028128, 0.0000028219, 0.0000028308, 0.0000028351, + 0.0000028338, 0.0000028308, 0.0000028283, 0.0000028278, 0.0000028294, + 0.0000028322, 0.0000028365, 0.0000028403, 0.0000028421, 0.0000028431, + 0.0000028453, 0.0000028476, 0.0000028499, 0.0000028507, 0.0000028504, + 0.0000028507, 0.0000028489, 0.0000028486, 0.0000028522, 0.0000028558, + 0.0000028556, 0.0000028525, 0.0000028489, 0.0000028473, 0.0000028474, + 0.0000028472, 0.0000028460, 0.0000028440, 0.0000028408, 0.0000028340, + 0.0000028271, 0.0000028254, 0.0000028298, 0.0000028362, 0.0000028365, + 0.0000028294, 0.0000028167, 0.0000028068, 0.0000028031, 0.0000028034, + 0.0000028068, 0.0000028134, 0.0000028221, 0.0000028320, 0.0000028396, + 0.0000028446, 0.0000028479, 0.0000028515, 0.0000028562, 0.0000028614, + 0.0000028672, 0.0000028718, 0.0000028740, 0.0000028757, 0.0000028758, + 0.0000028792, 0.0000028829, 0.0000028876, 0.0000028912, 0.0000028959, + 0.0000028994, 0.0000028977, 0.0000028921, 0.0000028773, 0.0000028533, + 0.0000028292, 0.0000028166, 0.0000028153, 0.0000028191, 0.0000028282, + 0.0000028441, 0.0000028635, 0.0000028820, 0.0000028884, 0.0000028871, + 0.0000028798, 0.0000028708, 0.0000028647, 0.0000028637, 0.0000028659, + 0.0000028681, 0.0000028713, 0.0000028748, 0.0000028781, 0.0000028809, + 0.0000028796, 0.0000028748, 0.0000028701, 0.0000028660, 0.0000028671, + 0.0000028689, 0.0000028692, 0.0000028636, 0.0000028539, 0.0000028486, + 0.0000028465, 0.0000028460, 0.0000028437, 0.0000028407, 0.0000028361, + 0.0000028355, 0.0000028393, 0.0000028465, 0.0000028574, 0.0000028712, + 0.0000028838, 0.0000028915, 0.0000028927, 0.0000028903, 0.0000028857, + 0.0000028805, 0.0000028758, 0.0000028720, 0.0000028691, 0.0000028674, + 0.0000028686, 0.0000028726, 0.0000028803, 0.0000028882, 0.0000028937, + 0.0000028959, 0.0000028950, 0.0000028914, 0.0000028856, 0.0000028780, + 0.0000028695, 0.0000028618, 0.0000028561, 0.0000028534, 0.0000028529, + 0.0000028518, 0.0000028479, 0.0000028410, 0.0000028358, 0.0000028357, + 0.0000028381, 0.0000028401, 0.0000028398, 0.0000028335, 0.0000028205, + 0.0000028067, 0.0000028021, 0.0000028096, 0.0000028265, 0.0000028411, + 0.0000028467, 0.0000028435, 0.0000028345, 0.0000028269, 0.0000028238, + 0.0000028222, 0.0000028194, 0.0000028149, 0.0000028067, 0.0000027998, + 0.0000028019, 0.0000028057, 0.0000027999, 0.0000027863, 0.0000027793, + 0.0000027838, 0.0000028012, 0.0000028170, 0.0000028217, 0.0000028208, + 0.0000028205, 0.0000028236, 0.0000028265, 0.0000028305, 0.0000028315, + 0.0000028263, 0.0000028142, 0.0000028091, 0.0000028111, 0.0000028090, + 0.0000028007, 0.0000027904, 0.0000027855, 0.0000027883, 0.0000027986, + 0.0000028056, 0.0000028066, 0.0000028045, 0.0000028016, 0.0000028088, + 0.0000028212, 0.0000028251, 0.0000028200, 0.0000028087, 0.0000027914, + 0.0000027763, 0.0000027763, 0.0000027882, 0.0000027953, 0.0000027895, + 0.0000027743, 0.0000027602, 0.0000027543, 0.0000027505, 0.0000027441, + 0.0000027389, 0.0000027381, 0.0000027422, 0.0000027512, 0.0000027615, + 0.0000027686, 0.0000027705, 0.0000027677, 0.0000027616, 0.0000027573, + 0.0000027583, 0.0000027633, 0.0000027711, 0.0000027790, 0.0000027835, + 0.0000027836, 0.0000027801, 0.0000027749, 0.0000027665, 0.0000027557, + 0.0000027453, 0.0000027382, 0.0000027350, 0.0000027344, 0.0000027361, + 0.0000027418, 0.0000027517, 0.0000027644, 0.0000027761, 0.0000027802, + 0.0000027762, 0.0000027652, 0.0000027572, 0.0000027576, 0.0000027676, + 0.0000027801, 0.0000027904, 0.0000028053, 0.0000028254, 0.0000028386, + 0.0000028390, 0.0000028253, 0.0000028056, 0.0000027978, 0.0000028002, + 0.0000028088, 0.0000028157, 0.0000028105, 0.0000027921, 0.0000027742, + 0.0000027690, 0.0000027696, 0.0000027759, 0.0000027930, 0.0000028131, + 0.0000028191, 0.0000028141, 0.0000028135, 0.0000028271, 0.0000028438, + 0.0000028562, 0.0000028724, 0.0000028962, 0.0000029146, 0.0000029186, + 0.0000029173, 0.0000029222, 0.0000029316, 0.0000029336, 0.0000029210, + 0.0000028985, 0.0000028790, 0.0000028729, 0.0000028772, 0.0000028806, + 0.0000028769, 0.0000028639, 0.0000028521, 0.0000028481, 0.0000028521, + 0.0000028619, 0.0000028691, 0.0000028696, 0.0000028641, 0.0000028573, + 0.0000028547, 0.0000028582, 0.0000028657, 0.0000028709, 0.0000028700, + 0.0000028637, 0.0000028535, 0.0000028431, 0.0000028352, 0.0000028326, + 0.0000028364, 0.0000028494, 0.0000028658, 0.0000028779, 0.0000028843, + 0.0000028873, 0.0000028903, 0.0000028927, 0.0000028945, 0.0000028950, + 0.0000028936, 0.0000028907, 0.0000028897, 0.0000028923, 0.0000028976, + 0.0000029010, 0.0000029007, 0.0000028963, 0.0000028890, 0.0000028808, + 0.0000028728, 0.0000028686, 0.0000028660, 0.0000028621, 0.0000028578, + 0.0000028527, 0.0000028479, 0.0000028442, 0.0000028412, 0.0000028384, + 0.0000028352, 0.0000028319, 0.0000028288, 0.0000028256, 0.0000028220, + 0.0000028188, 0.0000028151, 0.0000028110, 0.0000028080, 0.0000028046, + 0.0000028024, 0.0000028016, 0.0000028003, 0.0000027969, 0.0000027927, + 0.0000027881, 0.0000027833, 0.0000027787, 0.0000027753, 0.0000027715, + 0.0000027675, 0.0000027629, 0.0000027600, 0.0000027601, 0.0000027634, + 0.0000027676, 0.0000027719, 0.0000027769, 0.0000027808, 0.0000027843, + 0.0000027905, 0.0000028026, 0.0000028162, 0.0000028215, 0.0000028154, + 0.0000028057, 0.0000028026, 0.0000028047, 0.0000028071, 0.0000028092, + 0.0000028116, 0.0000028124, 0.0000028106, 0.0000028047, 0.0000028000, + 0.0000028023, 0.0000028044, 0.0000028010, 0.0000027903, 0.0000027795, + 0.0000027752, 0.0000027755, 0.0000027850, 0.0000027912, 0.0000027893, + 0.0000027865, 0.0000027822, 0.0000027769, 0.0000027749, 0.0000027770, + 0.0000027923, 0.0000028134, 0.0000028283, 0.0000028395, 0.0000028485, + 0.0000028548, 0.0000028589, 0.0000028626, 0.0000028657, 0.0000028697, + 0.0000028744, 0.0000028773, 0.0000028771, 0.0000028753, 0.0000028743, + 0.0000028751, 0.0000028779, 0.0000028794, 0.0000028773, 0.0000028754, + 0.0000028772, 0.0000028827, 0.0000028855, 0.0000028893, 0.0000028976, + 0.0000029008, 0.0000028973, 0.0000028879, 0.0000028770, 0.0000028685, + 0.0000028627, 0.0000028592, 0.0000028544, 0.0000028501, 0.0000028477, + 0.0000028460, 0.0000028438, 0.0000028420, 0.0000028407, 0.0000028394, + 0.0000028386, 0.0000028386, 0.0000028382, 0.0000028359, 0.0000028330, + 0.0000028312, 0.0000028297, 0.0000028270, 0.0000028239, 0.0000028212, + 0.0000028190, 0.0000028172, 0.0000028149, 0.0000028129, 0.0000028112, + 0.0000028120, 0.0000028151, 0.0000028200, 0.0000028269, 0.0000028348, + 0.0000028428, 0.0000028498, 0.0000028553, 0.0000028573, 0.0000028565, + 0.0000028543, 0.0000028524, 0.0000028496, 0.0000028438, 0.0000028326, + 0.0000028191, 0.0000028094, 0.0000028055, 0.0000028050, 0.0000028044, + 0.0000028007, 0.0000027961, 0.0000027955, 0.0000027979, 0.0000027980, + 0.0000027967, 0.0000028006, 0.0000028055, 0.0000028006, 0.0000027883, + 0.0000027771, 0.0000027660, 0.0000027565, 0.0000027538, 0.0000027550, + 0.0000027598, 0.0000027668, 0.0000027716, 0.0000027724, 0.0000027719, + 0.0000027717, 0.0000027722, 0.0000027721, 0.0000027703, 0.0000027626, + 0.0000027497, 0.0000027351, 0.0000027239, 0.0000027197, 0.0000027181, + 0.0000027164, 0.0000027104, 0.0000027008, 0.0000026925, 0.0000026884, + 0.0000026865, 0.0000026873, 0.0000026899, 0.0000027000, 0.0000027267, + 0.0000027527, 0.0000027568, 0.0000027511, 0.0000027503, 0.0000027567, + 0.0000027663, 0.0000027751, 0.0000027875, 0.0000027912, 0.0000027808, + 0.0000027616, 0.0000027558, 0.0000027626, 0.0000027785, 0.0000027890, + 0.0000027889, 0.0000027884, 0.0000027863, 0.0000027850, 0.0000027818, + 0.0000027785, 0.0000027764, 0.0000027747, 0.0000027747, 0.0000027772, + 0.0000027826, 0.0000027901, 0.0000027985, 0.0000028082, 0.0000028199, + 0.0000028296, 0.0000028359, 0.0000028383, 0.0000028333, 0.0000028205, + 0.0000028049, 0.0000027938, 0.0000027929, 0.0000027965, 0.0000028001, + 0.0000028001, 0.0000027996, 0.0000027978, 0.0000027920, 0.0000027839, + 0.0000027743, 0.0000027674, 0.0000027638, 0.0000027655, 0.0000027703, + 0.0000027698, 0.0000027665, 0.0000027612, 0.0000027587, 0.0000027599, + 0.0000027664, 0.0000027766, 0.0000027849, 0.0000027873, 0.0000027869, + 0.0000027887, 0.0000027957, 0.0000028099, 0.0000028227, 0.0000028276, + 0.0000028294, 0.0000028269, 0.0000028162, 0.0000028066, 0.0000028043, + 0.0000028064, 0.0000028119, 0.0000028167, 0.0000028176, 0.0000028176, + 0.0000028216, 0.0000028255, 0.0000028238, 0.0000028234, 0.0000028287, + 0.0000028347, 0.0000028408, 0.0000028439, 0.0000028416, 0.0000028357, + 0.0000028334, 0.0000028345, 0.0000028396, 0.0000028446, 0.0000028482, + 0.0000028505, 0.0000028510, 0.0000028489, 0.0000028475, 0.0000028469, + 0.0000028465, 0.0000028466, 0.0000028450, 0.0000028437, 0.0000028416, + 0.0000028407, 0.0000028427, 0.0000028476, 0.0000028517, 0.0000028533, + 0.0000028551, 0.0000028562, 0.0000028563, 0.0000028543, 0.0000028521, + 0.0000028491, 0.0000028458, 0.0000028417, 0.0000028362, 0.0000028301, + 0.0000028282, 0.0000028320, 0.0000028377, 0.0000028377, 0.0000028321, + 0.0000028212, 0.0000028119, 0.0000028074, 0.0000028068, 0.0000028083, + 0.0000028122, 0.0000028190, 0.0000028272, 0.0000028347, 0.0000028406, + 0.0000028456, 0.0000028518, 0.0000028579, 0.0000028635, 0.0000028701, + 0.0000028746, 0.0000028765, 0.0000028764, 0.0000028759, 0.0000028771, + 0.0000028764, 0.0000028765, 0.0000028786, 0.0000028840, 0.0000028900, + 0.0000028933, 0.0000028939, 0.0000028885, 0.0000028756, 0.0000028514, + 0.0000028285, 0.0000028150, 0.0000028148, 0.0000028202, 0.0000028326, + 0.0000028474, 0.0000028658, 0.0000028779, 0.0000028815, 0.0000028765, + 0.0000028676, 0.0000028631, 0.0000028642, 0.0000028693, 0.0000028734, + 0.0000028765, 0.0000028794, 0.0000028818, 0.0000028834, 0.0000028810, + 0.0000028753, 0.0000028696, 0.0000028648, 0.0000028655, 0.0000028682, + 0.0000028695, 0.0000028667, 0.0000028586, 0.0000028521, 0.0000028488, + 0.0000028472, 0.0000028452, 0.0000028430, 0.0000028395, 0.0000028392, + 0.0000028435, 0.0000028508, 0.0000028601, 0.0000028727, 0.0000028847, + 0.0000028926, 0.0000028939, 0.0000028921, 0.0000028893, 0.0000028863, + 0.0000028829, 0.0000028787, 0.0000028741, 0.0000028691, 0.0000028661, + 0.0000028695, 0.0000028767, 0.0000028831, 0.0000028875, 0.0000028898, + 0.0000028897, 0.0000028871, 0.0000028822, 0.0000028745, 0.0000028652, + 0.0000028565, 0.0000028505, 0.0000028481, 0.0000028475, 0.0000028449, + 0.0000028385, 0.0000028308, 0.0000028268, 0.0000028292, 0.0000028343, + 0.0000028375, 0.0000028375, 0.0000028318, 0.0000028196, 0.0000028073, + 0.0000028036, 0.0000028119, 0.0000028269, 0.0000028396, 0.0000028440, + 0.0000028404, 0.0000028310, 0.0000028234, 0.0000028207, 0.0000028193, + 0.0000028166, 0.0000028131, 0.0000028071, 0.0000028011, 0.0000028033, + 0.0000028067, 0.0000028000, 0.0000027862, 0.0000027784, 0.0000027798, + 0.0000027928, 0.0000028079, 0.0000028151, 0.0000028152, 0.0000028153, + 0.0000028197, 0.0000028254, 0.0000028282, 0.0000028292, 0.0000028248, + 0.0000028147, 0.0000028074, 0.0000028123, 0.0000028145, 0.0000028115, + 0.0000028031, 0.0000027964, 0.0000027946, 0.0000028013, 0.0000028076, + 0.0000028086, 0.0000028075, 0.0000028071, 0.0000028096, 0.0000028184, + 0.0000028280, 0.0000028276, 0.0000028166, 0.0000028015, 0.0000027821, + 0.0000027698, 0.0000027758, 0.0000027919, 0.0000027985, 0.0000027933, + 0.0000027807, 0.0000027701, 0.0000027657, 0.0000027610, 0.0000027533, + 0.0000027484, 0.0000027486, 0.0000027531, 0.0000027599, 0.0000027670, + 0.0000027724, 0.0000027742, 0.0000027728, 0.0000027690, 0.0000027675, + 0.0000027695, 0.0000027741, 0.0000027803, 0.0000027861, 0.0000027890, + 0.0000027888, 0.0000027864, 0.0000027830, 0.0000027769, 0.0000027680, + 0.0000027573, 0.0000027478, 0.0000027404, 0.0000027359, 0.0000027369, + 0.0000027441, 0.0000027550, 0.0000027671, 0.0000027765, 0.0000027790, + 0.0000027726, 0.0000027616, 0.0000027546, 0.0000027563, 0.0000027676, + 0.0000027810, 0.0000027916, 0.0000028054, 0.0000028253, 0.0000028403, + 0.0000028425, 0.0000028282, 0.0000028058, 0.0000027949, 0.0000027977, + 0.0000028084, 0.0000028171, 0.0000028118, 0.0000027918, 0.0000027741, + 0.0000027704, 0.0000027725, 0.0000027825, 0.0000028024, 0.0000028201, + 0.0000028228, 0.0000028187, 0.0000028237, 0.0000028409, 0.0000028573, + 0.0000028695, 0.0000028868, 0.0000029098, 0.0000029242, 0.0000029252, + 0.0000029243, 0.0000029300, 0.0000029371, 0.0000029349, 0.0000029209, + 0.0000029010, 0.0000028866, 0.0000028837, 0.0000028862, 0.0000028861, + 0.0000028794, 0.0000028676, 0.0000028586, 0.0000028574, 0.0000028636, + 0.0000028722, 0.0000028751, 0.0000028732, 0.0000028662, 0.0000028606, + 0.0000028604, 0.0000028645, 0.0000028698, 0.0000028717, 0.0000028689, + 0.0000028609, 0.0000028503, 0.0000028408, 0.0000028345, 0.0000028331, + 0.0000028401, 0.0000028558, 0.0000028719, 0.0000028816, 0.0000028852, + 0.0000028862, 0.0000028863, 0.0000028869, 0.0000028886, 0.0000028903, + 0.0000028906, 0.0000028894, 0.0000028882, 0.0000028886, 0.0000028912, + 0.0000028930, 0.0000028918, 0.0000028862, 0.0000028776, 0.0000028693, + 0.0000028623, 0.0000028582, 0.0000028570, 0.0000028544, 0.0000028495, + 0.0000028451, 0.0000028408, 0.0000028370, 0.0000028340, 0.0000028315, + 0.0000028304, 0.0000028288, 0.0000028274, 0.0000028262, 0.0000028245, + 0.0000028219, 0.0000028193, 0.0000028154, 0.0000028124, 0.0000028087, + 0.0000028042, 0.0000028013, 0.0000028004, 0.0000027995, 0.0000027980, + 0.0000027951, 0.0000027909, 0.0000027861, 0.0000027818, 0.0000027776, + 0.0000027721, 0.0000027657, 0.0000027597, 0.0000027570, 0.0000027583, + 0.0000027648, 0.0000027712, 0.0000027755, 0.0000027792, 0.0000027824, + 0.0000027853, 0.0000027900, 0.0000027991, 0.0000028127, 0.0000028224, + 0.0000028223, 0.0000028143, 0.0000028084, 0.0000028082, 0.0000028097, + 0.0000028122, 0.0000028164, 0.0000028203, 0.0000028206, 0.0000028143, + 0.0000028061, 0.0000028056, 0.0000028068, 0.0000028033, 0.0000027922, + 0.0000027811, 0.0000027774, 0.0000027797, 0.0000027888, 0.0000027929, + 0.0000027920, 0.0000027908, 0.0000027861, 0.0000027784, 0.0000027758, + 0.0000027808, 0.0000027980, 0.0000028169, 0.0000028299, 0.0000028402, + 0.0000028493, 0.0000028557, 0.0000028598, 0.0000028626, 0.0000028645, + 0.0000028671, 0.0000028706, 0.0000028733, 0.0000028740, 0.0000028731, + 0.0000028707, 0.0000028689, 0.0000028711, 0.0000028740, 0.0000028731, + 0.0000028710, 0.0000028712, 0.0000028762, 0.0000028804, 0.0000028832, + 0.0000028921, 0.0000028985, 0.0000028980, 0.0000028906, 0.0000028820, + 0.0000028738, 0.0000028699, 0.0000028674, 0.0000028653, 0.0000028634, + 0.0000028623, 0.0000028612, 0.0000028596, 0.0000028583, 0.0000028569, + 0.0000028549, 0.0000028538, 0.0000028533, 0.0000028515, 0.0000028476, + 0.0000028436, 0.0000028413, 0.0000028402, 0.0000028393, 0.0000028390, + 0.0000028384, 0.0000028360, 0.0000028329, 0.0000028281, 0.0000028237, + 0.0000028206, 0.0000028205, 0.0000028214, 0.0000028234, 0.0000028275, + 0.0000028342, 0.0000028416, 0.0000028487, 0.0000028551, 0.0000028592, + 0.0000028604, 0.0000028595, 0.0000028567, 0.0000028511, 0.0000028436, + 0.0000028308, 0.0000028158, 0.0000028056, 0.0000028030, 0.0000028041, + 0.0000028045, 0.0000028016, 0.0000027960, 0.0000027936, 0.0000027959, + 0.0000027979, 0.0000027940, 0.0000027909, 0.0000027985, 0.0000028038, + 0.0000027956, 0.0000027804, 0.0000027669, 0.0000027567, 0.0000027516, + 0.0000027520, 0.0000027564, 0.0000027647, 0.0000027723, 0.0000027751, + 0.0000027747, 0.0000027731, 0.0000027731, 0.0000027744, 0.0000027745, + 0.0000027701, 0.0000027574, 0.0000027412, 0.0000027269, 0.0000027215, + 0.0000027222, 0.0000027222, 0.0000027169, 0.0000027058, 0.0000026956, + 0.0000026907, 0.0000026887, 0.0000026869, 0.0000026872, 0.0000026960, + 0.0000027214, 0.0000027471, 0.0000027531, 0.0000027496, 0.0000027503, + 0.0000027568, 0.0000027653, 0.0000027697, 0.0000027808, 0.0000027902, + 0.0000027847, 0.0000027685, 0.0000027612, 0.0000027684, 0.0000027820, + 0.0000027925, 0.0000027939, 0.0000027932, 0.0000027908, 0.0000027865, + 0.0000027824, 0.0000027753, 0.0000027698, 0.0000027660, 0.0000027654, + 0.0000027696, 0.0000027782, 0.0000027878, 0.0000027967, 0.0000028035, + 0.0000028133, 0.0000028243, 0.0000028283, 0.0000028246, 0.0000028151, + 0.0000028020, 0.0000027863, 0.0000027742, 0.0000027712, 0.0000027775, + 0.0000027854, 0.0000027931, 0.0000027931, 0.0000027910, 0.0000027899, + 0.0000027858, 0.0000027823, 0.0000027756, 0.0000027707, 0.0000027680, + 0.0000027705, 0.0000027749, 0.0000027749, 0.0000027711, 0.0000027654, + 0.0000027602, 0.0000027601, 0.0000027655, 0.0000027760, 0.0000027849, + 0.0000027881, 0.0000027872, 0.0000027871, 0.0000027919, 0.0000028043, + 0.0000028189, 0.0000028268, 0.0000028293, 0.0000028277, 0.0000028175, + 0.0000028066, 0.0000028025, 0.0000028075, 0.0000028163, 0.0000028221, + 0.0000028221, 0.0000028191, 0.0000028217, 0.0000028309, 0.0000028360, + 0.0000028358, 0.0000028374, 0.0000028402, 0.0000028438, 0.0000028477, + 0.0000028485, 0.0000028464, 0.0000028459, 0.0000028468, 0.0000028507, + 0.0000028539, 0.0000028553, 0.0000028553, 0.0000028539, 0.0000028499, + 0.0000028470, 0.0000028445, 0.0000028430, 0.0000028435, 0.0000028437, + 0.0000028413, 0.0000028371, 0.0000028347, 0.0000028356, 0.0000028384, + 0.0000028413, 0.0000028417, 0.0000028449, 0.0000028505, 0.0000028556, + 0.0000028580, 0.0000028575, 0.0000028559, 0.0000028533, 0.0000028493, + 0.0000028452, 0.0000028400, 0.0000028326, 0.0000028281, 0.0000028297, + 0.0000028345, 0.0000028354, 0.0000028319, 0.0000028239, 0.0000028161, + 0.0000028114, 0.0000028099, 0.0000028100, 0.0000028123, 0.0000028178, + 0.0000028242, 0.0000028311, 0.0000028380, 0.0000028456, 0.0000028548, + 0.0000028633, 0.0000028701, 0.0000028764, 0.0000028799, 0.0000028805, + 0.0000028781, 0.0000028756, 0.0000028763, 0.0000028751, 0.0000028721, + 0.0000028701, 0.0000028715, 0.0000028744, 0.0000028780, 0.0000028824, + 0.0000028842, 0.0000028815, 0.0000028726, 0.0000028559, 0.0000028314, + 0.0000028167, 0.0000028140, 0.0000028214, 0.0000028339, 0.0000028487, + 0.0000028600, 0.0000028677, 0.0000028672, 0.0000028613, 0.0000028573, + 0.0000028589, 0.0000028656, 0.0000028719, 0.0000028755, 0.0000028794, + 0.0000028816, 0.0000028824, 0.0000028800, 0.0000028744, 0.0000028685, + 0.0000028631, 0.0000028625, 0.0000028645, 0.0000028674, 0.0000028664, + 0.0000028613, 0.0000028551, 0.0000028506, 0.0000028476, 0.0000028460, + 0.0000028446, 0.0000028424, 0.0000028425, 0.0000028461, 0.0000028520, + 0.0000028599, 0.0000028701, 0.0000028814, 0.0000028898, 0.0000028925, + 0.0000028919, 0.0000028911, 0.0000028895, 0.0000028868, 0.0000028821, + 0.0000028751, 0.0000028679, 0.0000028604, 0.0000028638, 0.0000028703, + 0.0000028754, 0.0000028792, 0.0000028815, 0.0000028816, 0.0000028796, + 0.0000028751, 0.0000028675, 0.0000028582, 0.0000028504, 0.0000028464, + 0.0000028459, 0.0000028453, 0.0000028412, 0.0000028340, 0.0000028256, + 0.0000028225, 0.0000028260, 0.0000028329, 0.0000028368, 0.0000028362, + 0.0000028294, 0.0000028174, 0.0000028072, 0.0000028052, 0.0000028129, + 0.0000028254, 0.0000028356, 0.0000028390, 0.0000028358, 0.0000028274, + 0.0000028212, 0.0000028199, 0.0000028186, 0.0000028151, 0.0000028119, + 0.0000028085, 0.0000028050, 0.0000028065, 0.0000028079, 0.0000027995, + 0.0000027853, 0.0000027785, 0.0000027789, 0.0000027860, 0.0000027990, + 0.0000028079, 0.0000028095, 0.0000028099, 0.0000028157, 0.0000028235, + 0.0000028264, 0.0000028267, 0.0000028227, 0.0000028137, 0.0000028067, + 0.0000028119, 0.0000028194, 0.0000028219, 0.0000028166, 0.0000028085, + 0.0000028042, 0.0000028058, 0.0000028099, 0.0000028103, 0.0000028092, + 0.0000028093, 0.0000028132, 0.0000028191, 0.0000028259, 0.0000028310, + 0.0000028260, 0.0000028098, 0.0000027911, 0.0000027726, 0.0000027669, + 0.0000027796, 0.0000027984, 0.0000028032, 0.0000027986, 0.0000027901, + 0.0000027841, 0.0000027798, 0.0000027724, 0.0000027638, 0.0000027600, + 0.0000027609, 0.0000027648, 0.0000027688, 0.0000027719, 0.0000027739, + 0.0000027730, 0.0000027692, 0.0000027656, 0.0000027656, 0.0000027683, + 0.0000027735, 0.0000027798, 0.0000027849, 0.0000027877, 0.0000027878, + 0.0000027880, 0.0000027874, 0.0000027857, 0.0000027800, 0.0000027705, + 0.0000027595, 0.0000027485, 0.0000027406, 0.0000027400, 0.0000027466, + 0.0000027568, 0.0000027674, 0.0000027741, 0.0000027751, 0.0000027698, + 0.0000027604, 0.0000027529, 0.0000027546, 0.0000027660, 0.0000027812, + 0.0000027938, 0.0000028072, 0.0000028258, 0.0000028418, 0.0000028450, + 0.0000028299, 0.0000028058, 0.0000027931, 0.0000027957, 0.0000028076, + 0.0000028178, 0.0000028133, 0.0000027930, 0.0000027760, 0.0000027727, + 0.0000027765, 0.0000027904, 0.0000028125, 0.0000028274, 0.0000028276, + 0.0000028268, 0.0000028354, 0.0000028535, 0.0000028685, 0.0000028804, + 0.0000028981, 0.0000029199, 0.0000029322, 0.0000029323, 0.0000029322, + 0.0000029378, 0.0000029405, 0.0000029361, 0.0000029223, 0.0000029062, + 0.0000028957, 0.0000028932, 0.0000028932, 0.0000028905, 0.0000028832, + 0.0000028729, 0.0000028655, 0.0000028654, 0.0000028721, 0.0000028802, + 0.0000028827, 0.0000028787, 0.0000028706, 0.0000028654, 0.0000028657, + 0.0000028687, 0.0000028711, 0.0000028712, 0.0000028670, 0.0000028574, + 0.0000028464, 0.0000028382, 0.0000028342, 0.0000028347, 0.0000028430, + 0.0000028585, 0.0000028729, 0.0000028810, 0.0000028839, 0.0000028835, + 0.0000028807, 0.0000028793, 0.0000028813, 0.0000028843, 0.0000028855, + 0.0000028856, 0.0000028850, 0.0000028839, 0.0000028826, 0.0000028814, + 0.0000028787, 0.0000028728, 0.0000028648, 0.0000028581, 0.0000028531, + 0.0000028502, 0.0000028487, 0.0000028471, 0.0000028446, 0.0000028415, + 0.0000028384, 0.0000028360, 0.0000028342, 0.0000028323, 0.0000028310, + 0.0000028305, 0.0000028303, 0.0000028303, 0.0000028297, 0.0000028282, + 0.0000028269, 0.0000028253, 0.0000028232, 0.0000028212, 0.0000028168, + 0.0000028109, 0.0000028055, 0.0000028014, 0.0000027993, 0.0000027967, + 0.0000027941, 0.0000027906, 0.0000027866, 0.0000027836, 0.0000027809, + 0.0000027758, 0.0000027682, 0.0000027607, 0.0000027572, 0.0000027594, + 0.0000027673, 0.0000027753, 0.0000027799, 0.0000027826, 0.0000027844, + 0.0000027865, 0.0000027901, 0.0000027964, 0.0000028085, 0.0000028209, + 0.0000028257, 0.0000028211, 0.0000028144, 0.0000028124, 0.0000028129, + 0.0000028150, 0.0000028199, 0.0000028269, 0.0000028294, 0.0000028224, + 0.0000028108, 0.0000028077, 0.0000028085, 0.0000028055, 0.0000027948, + 0.0000027832, 0.0000027792, 0.0000027829, 0.0000027912, 0.0000027933, + 0.0000027939, 0.0000027944, 0.0000027894, 0.0000027803, 0.0000027784, + 0.0000027862, 0.0000028032, 0.0000028193, 0.0000028296, 0.0000028379, + 0.0000028470, 0.0000028542, 0.0000028593, 0.0000028624, 0.0000028646, + 0.0000028674, 0.0000028706, 0.0000028736, 0.0000028754, 0.0000028757, + 0.0000028734, 0.0000028687, 0.0000028662, 0.0000028665, 0.0000028669, + 0.0000028671, 0.0000028675, 0.0000028725, 0.0000028760, 0.0000028774, + 0.0000028849, 0.0000028952, 0.0000028987, 0.0000028966, 0.0000028897, + 0.0000028835, 0.0000028807, 0.0000028789, 0.0000028783, 0.0000028769, + 0.0000028755, 0.0000028745, 0.0000028740, 0.0000028742, 0.0000028738, + 0.0000028726, 0.0000028715, 0.0000028701, 0.0000028675, 0.0000028636, + 0.0000028598, 0.0000028578, 0.0000028579, 0.0000028587, 0.0000028592, + 0.0000028580, 0.0000028534, 0.0000028480, 0.0000028405, 0.0000028340, + 0.0000028300, 0.0000028289, 0.0000028282, 0.0000028287, 0.0000028308, + 0.0000028367, 0.0000028437, 0.0000028507, 0.0000028574, 0.0000028624, + 0.0000028646, 0.0000028642, 0.0000028601, 0.0000028518, 0.0000028415, + 0.0000028275, 0.0000028130, 0.0000028038, 0.0000028020, 0.0000028035, + 0.0000028041, 0.0000028020, 0.0000027968, 0.0000027928, 0.0000027936, + 0.0000027974, 0.0000027963, 0.0000027880, 0.0000027884, 0.0000027994, + 0.0000028026, 0.0000027898, 0.0000027717, 0.0000027585, 0.0000027502, + 0.0000027486, 0.0000027524, 0.0000027614, 0.0000027719, 0.0000027781, + 0.0000027790, 0.0000027769, 0.0000027756, 0.0000027775, 0.0000027806, + 0.0000027800, 0.0000027703, 0.0000027526, 0.0000027346, 0.0000027246, + 0.0000027246, 0.0000027271, 0.0000027244, 0.0000027124, 0.0000026994, + 0.0000026932, 0.0000026909, 0.0000026881, 0.0000026868, 0.0000026934, + 0.0000027176, 0.0000027440, 0.0000027502, 0.0000027470, 0.0000027484, + 0.0000027562, 0.0000027649, 0.0000027671, 0.0000027732, 0.0000027859, + 0.0000027868, 0.0000027753, 0.0000027664, 0.0000027732, 0.0000027851, + 0.0000027946, 0.0000027974, 0.0000027982, 0.0000027950, 0.0000027892, + 0.0000027830, 0.0000027759, 0.0000027695, 0.0000027659, 0.0000027641, + 0.0000027654, 0.0000027741, 0.0000027850, 0.0000027921, 0.0000027969, + 0.0000027998, 0.0000028034, 0.0000028047, 0.0000027988, 0.0000027900, + 0.0000027811, 0.0000027750, 0.0000027698, 0.0000027652, 0.0000027673, + 0.0000027769, 0.0000027846, 0.0000027930, 0.0000027928, 0.0000027896, + 0.0000027877, 0.0000027856, 0.0000027865, 0.0000027820, 0.0000027761, + 0.0000027698, 0.0000027695, 0.0000027721, 0.0000027777, 0.0000027766, + 0.0000027737, 0.0000027682, 0.0000027642, 0.0000027651, 0.0000027751, + 0.0000027855, 0.0000027900, 0.0000027899, 0.0000027886, 0.0000027906, + 0.0000028004, 0.0000028148, 0.0000028246, 0.0000028279, 0.0000028278, + 0.0000028196, 0.0000028072, 0.0000028004, 0.0000028055, 0.0000028174, + 0.0000028280, 0.0000028281, 0.0000028226, 0.0000028218, 0.0000028307, + 0.0000028402, 0.0000028412, 0.0000028430, 0.0000028448, 0.0000028476, + 0.0000028519, 0.0000028560, 0.0000028590, 0.0000028605, 0.0000028614, + 0.0000028625, 0.0000028640, 0.0000028639, 0.0000028628, 0.0000028604, + 0.0000028548, 0.0000028487, 0.0000028449, 0.0000028430, 0.0000028440, + 0.0000028470, 0.0000028475, 0.0000028447, 0.0000028420, 0.0000028424, + 0.0000028441, 0.0000028448, 0.0000028420, 0.0000028400, 0.0000028401, + 0.0000028440, 0.0000028488, 0.0000028516, 0.0000028535, 0.0000028549, + 0.0000028560, 0.0000028547, 0.0000028518, 0.0000028456, 0.0000028358, + 0.0000028276, 0.0000028276, 0.0000028311, 0.0000028327, 0.0000028303, + 0.0000028242, 0.0000028177, 0.0000028127, 0.0000028107, 0.0000028099, + 0.0000028118, 0.0000028179, 0.0000028249, 0.0000028320, 0.0000028407, + 0.0000028502, 0.0000028604, 0.0000028695, 0.0000028772, 0.0000028832, + 0.0000028870, 0.0000028872, 0.0000028831, 0.0000028781, 0.0000028761, + 0.0000028742, 0.0000028707, 0.0000028673, 0.0000028655, 0.0000028639, + 0.0000028626, 0.0000028634, 0.0000028657, 0.0000028679, 0.0000028709, + 0.0000028710, 0.0000028601, 0.0000028383, 0.0000028202, 0.0000028148, + 0.0000028194, 0.0000028318, 0.0000028423, 0.0000028493, 0.0000028513, + 0.0000028496, 0.0000028482, 0.0000028512, 0.0000028587, 0.0000028663, + 0.0000028705, 0.0000028753, 0.0000028779, 0.0000028794, 0.0000028778, + 0.0000028730, 0.0000028673, 0.0000028617, 0.0000028601, 0.0000028608, + 0.0000028635, 0.0000028644, 0.0000028623, 0.0000028585, 0.0000028531, + 0.0000028482, 0.0000028459, 0.0000028443, 0.0000028430, 0.0000028435, + 0.0000028469, 0.0000028519, 0.0000028580, 0.0000028657, 0.0000028757, + 0.0000028848, 0.0000028894, 0.0000028906, 0.0000028908, 0.0000028900, + 0.0000028874, 0.0000028815, 0.0000028719, 0.0000028629, 0.0000028530, + 0.0000028570, 0.0000028637, 0.0000028693, 0.0000028736, 0.0000028761, + 0.0000028761, 0.0000028741, 0.0000028696, 0.0000028621, 0.0000028534, + 0.0000028475, 0.0000028459, 0.0000028458, 0.0000028442, 0.0000028386, + 0.0000028308, 0.0000028235, 0.0000028209, 0.0000028253, 0.0000028326, + 0.0000028360, 0.0000028339, 0.0000028251, 0.0000028132, 0.0000028052, + 0.0000028046, 0.0000028118, 0.0000028225, 0.0000028310, 0.0000028340, + 0.0000028308, 0.0000028229, 0.0000028176, 0.0000028165, 0.0000028152, + 0.0000028115, 0.0000028089, 0.0000028080, 0.0000028072, 0.0000028087, + 0.0000028093, 0.0000027990, 0.0000027843, 0.0000027773, 0.0000027786, + 0.0000027839, 0.0000027919, 0.0000028003, 0.0000028042, 0.0000028062, + 0.0000028127, 0.0000028216, 0.0000028267, 0.0000028263, 0.0000028208, + 0.0000028109, 0.0000028047, 0.0000028094, 0.0000028209, 0.0000028285, + 0.0000028276, 0.0000028193, 0.0000028137, 0.0000028114, 0.0000028139, + 0.0000028127, 0.0000028098, 0.0000028096, 0.0000028126, 0.0000028208, + 0.0000028266, 0.0000028294, 0.0000028315, 0.0000028211, 0.0000028005, + 0.0000027823, 0.0000027696, 0.0000027705, 0.0000027892, 0.0000028065, + 0.0000028092, 0.0000028061, 0.0000028025, 0.0000028000, 0.0000027943, + 0.0000027840, 0.0000027753, 0.0000027721, 0.0000027726, 0.0000027734, + 0.0000027728, 0.0000027723, 0.0000027700, 0.0000027666, 0.0000027622, + 0.0000027595, 0.0000027605, 0.0000027644, 0.0000027697, 0.0000027750, + 0.0000027786, 0.0000027806, 0.0000027821, 0.0000027840, 0.0000027865, + 0.0000027879, 0.0000027854, 0.0000027778, 0.0000027664, 0.0000027541, + 0.0000027453, 0.0000027438, 0.0000027490, 0.0000027571, 0.0000027655, + 0.0000027705, 0.0000027712, 0.0000027674, 0.0000027592, 0.0000027521, + 0.0000027530, 0.0000027645, 0.0000027815, 0.0000027971, 0.0000028105, + 0.0000028267, 0.0000028422, 0.0000028455, 0.0000028302, 0.0000028054, + 0.0000027918, 0.0000027940, 0.0000028064, 0.0000028187, 0.0000028149, + 0.0000027949, 0.0000027787, 0.0000027758, 0.0000027812, 0.0000027991, + 0.0000028225, 0.0000028346, 0.0000028337, 0.0000028344, 0.0000028465, + 0.0000028641, 0.0000028778, 0.0000028893, 0.0000029066, 0.0000029269, + 0.0000029382, 0.0000029392, 0.0000029410, 0.0000029455, 0.0000029456, + 0.0000029382, 0.0000029256, 0.0000029128, 0.0000029041, 0.0000029009, + 0.0000028991, 0.0000028954, 0.0000028884, 0.0000028788, 0.0000028719, + 0.0000028719, 0.0000028785, 0.0000028866, 0.0000028895, 0.0000028853, + 0.0000028762, 0.0000028698, 0.0000028687, 0.0000028695, 0.0000028705, + 0.0000028703, 0.0000028659, 0.0000028554, 0.0000028438, 0.0000028368, + 0.0000028348, 0.0000028362, 0.0000028452, 0.0000028599, 0.0000028723, + 0.0000028788, 0.0000028807, 0.0000028787, 0.0000028733, 0.0000028698, + 0.0000028710, 0.0000028747, 0.0000028771, 0.0000028775, 0.0000028775, + 0.0000028767, 0.0000028736, 0.0000028689, 0.0000028642, 0.0000028583, + 0.0000028517, 0.0000028470, 0.0000028438, 0.0000028421, 0.0000028414, + 0.0000028409, 0.0000028416, 0.0000028421, 0.0000028416, 0.0000028413, + 0.0000028407, 0.0000028396, 0.0000028383, 0.0000028370, 0.0000028358, + 0.0000028353, 0.0000028344, 0.0000028322, 0.0000028301, 0.0000028282, + 0.0000028271, 0.0000028264, 0.0000028258, 0.0000028229, 0.0000028194, + 0.0000028136, 0.0000028090, 0.0000028041, 0.0000027995, 0.0000027947, + 0.0000027897, 0.0000027849, 0.0000027827, 0.0000027822, 0.0000027798, + 0.0000027739, 0.0000027659, 0.0000027615, 0.0000027629, 0.0000027703, + 0.0000027788, 0.0000027840, 0.0000027860, 0.0000027866, 0.0000027875, + 0.0000027898, 0.0000027941, 0.0000028048, 0.0000028187, 0.0000028269, + 0.0000028254, 0.0000028192, 0.0000028163, 0.0000028162, 0.0000028175, + 0.0000028228, 0.0000028324, 0.0000028365, 0.0000028287, 0.0000028144, + 0.0000028090, 0.0000028096, 0.0000028073, 0.0000027975, 0.0000027855, + 0.0000027807, 0.0000027853, 0.0000027925, 0.0000027929, 0.0000027947, + 0.0000027966, 0.0000027923, 0.0000027834, 0.0000027824, 0.0000027917, + 0.0000028080, 0.0000028213, 0.0000028292, 0.0000028354, 0.0000028442, + 0.0000028530, 0.0000028606, 0.0000028652, 0.0000028681, 0.0000028702, + 0.0000028714, 0.0000028741, 0.0000028764, 0.0000028787, 0.0000028792, + 0.0000028756, 0.0000028692, 0.0000028631, 0.0000028593, 0.0000028610, + 0.0000028650, 0.0000028706, 0.0000028741, 0.0000028736, 0.0000028775, + 0.0000028904, 0.0000028995, 0.0000029024, 0.0000028981, 0.0000028943, + 0.0000028919, 0.0000028914, 0.0000028907, 0.0000028888, 0.0000028875, + 0.0000028877, 0.0000028892, 0.0000028907, 0.0000028914, 0.0000028902, + 0.0000028880, 0.0000028851, 0.0000028816, 0.0000028780, 0.0000028746, + 0.0000028729, 0.0000028738, 0.0000028753, 0.0000028755, 0.0000028734, + 0.0000028675, 0.0000028609, 0.0000028523, 0.0000028449, 0.0000028398, + 0.0000028372, 0.0000028355, 0.0000028355, 0.0000028364, 0.0000028406, + 0.0000028470, 0.0000028534, 0.0000028598, 0.0000028646, 0.0000028664, + 0.0000028655, 0.0000028601, 0.0000028500, 0.0000028384, 0.0000028233, + 0.0000028093, 0.0000028014, 0.0000028006, 0.0000028020, 0.0000028018, + 0.0000027992, 0.0000027950, 0.0000027917, 0.0000027920, 0.0000027954, + 0.0000027972, 0.0000027906, 0.0000027831, 0.0000027860, 0.0000027998, + 0.0000028010, 0.0000027854, 0.0000027651, 0.0000027525, 0.0000027468, + 0.0000027486, 0.0000027572, 0.0000027695, 0.0000027797, 0.0000027833, + 0.0000027819, 0.0000027794, 0.0000027801, 0.0000027854, 0.0000027881, + 0.0000027838, 0.0000027677, 0.0000027464, 0.0000027313, 0.0000027275, + 0.0000027304, 0.0000027305, 0.0000027213, 0.0000027057, 0.0000026963, + 0.0000026932, 0.0000026903, 0.0000026882, 0.0000026932, 0.0000027153, + 0.0000027429, 0.0000027501, 0.0000027455, 0.0000027460, 0.0000027549, + 0.0000027640, 0.0000027658, 0.0000027666, 0.0000027794, 0.0000027863, + 0.0000027806, 0.0000027727, 0.0000027760, 0.0000027877, 0.0000027966, + 0.0000028000, 0.0000028009, 0.0000027982, 0.0000027921, 0.0000027863, + 0.0000027799, 0.0000027737, 0.0000027719, 0.0000027713, 0.0000027709, + 0.0000027741, 0.0000027817, 0.0000027868, 0.0000027860, 0.0000027792, + 0.0000027737, 0.0000027716, 0.0000027707, 0.0000027707, 0.0000027721, + 0.0000027733, 0.0000027740, 0.0000027735, 0.0000027712, 0.0000027719, + 0.0000027789, 0.0000027853, 0.0000027894, 0.0000027900, 0.0000027865, + 0.0000027807, 0.0000027809, 0.0000027841, 0.0000027815, 0.0000027758, + 0.0000027673, 0.0000027659, 0.0000027730, 0.0000027838, 0.0000027864, + 0.0000027844, 0.0000027769, 0.0000027688, 0.0000027669, 0.0000027771, + 0.0000027897, 0.0000027968, 0.0000027976, 0.0000027947, 0.0000027943, + 0.0000028009, 0.0000028134, 0.0000028239, 0.0000028288, 0.0000028298, + 0.0000028229, 0.0000028098, 0.0000028005, 0.0000028042, 0.0000028173, + 0.0000028315, 0.0000028340, 0.0000028279, 0.0000028217, 0.0000028271, + 0.0000028392, 0.0000028438, 0.0000028469, 0.0000028503, 0.0000028529, + 0.0000028561, 0.0000028618, 0.0000028686, 0.0000028725, 0.0000028728, + 0.0000028719, 0.0000028733, 0.0000028732, 0.0000028717, 0.0000028691, + 0.0000028641, 0.0000028579, 0.0000028528, 0.0000028498, 0.0000028497, + 0.0000028534, 0.0000028566, 0.0000028555, 0.0000028530, 0.0000028525, + 0.0000028548, 0.0000028572, 0.0000028576, 0.0000028548, 0.0000028502, + 0.0000028447, 0.0000028434, 0.0000028415, 0.0000028423, 0.0000028449, + 0.0000028510, 0.0000028556, 0.0000028572, 0.0000028554, 0.0000028509, + 0.0000028415, 0.0000028326, 0.0000028308, 0.0000028328, 0.0000028339, + 0.0000028318, 0.0000028267, 0.0000028207, 0.0000028156, 0.0000028136, + 0.0000028138, 0.0000028158, 0.0000028205, 0.0000028255, 0.0000028306, + 0.0000028367, 0.0000028443, 0.0000028537, 0.0000028635, 0.0000028729, + 0.0000028816, 0.0000028875, 0.0000028892, 0.0000028861, 0.0000028806, + 0.0000028769, 0.0000028732, 0.0000028696, 0.0000028666, 0.0000028630, + 0.0000028590, 0.0000028552, 0.0000028512, 0.0000028463, 0.0000028437, + 0.0000028484, 0.0000028565, 0.0000028623, 0.0000028595, 0.0000028466, + 0.0000028274, 0.0000028160, 0.0000028169, 0.0000028236, 0.0000028316, + 0.0000028347, 0.0000028340, 0.0000028341, 0.0000028396, 0.0000028492, + 0.0000028590, 0.0000028636, 0.0000028678, 0.0000028712, 0.0000028740, + 0.0000028732, 0.0000028698, 0.0000028656, 0.0000028609, 0.0000028594, + 0.0000028599, 0.0000028608, 0.0000028619, 0.0000028624, 0.0000028618, + 0.0000028582, 0.0000028523, 0.0000028475, 0.0000028437, 0.0000028416, + 0.0000028425, 0.0000028465, 0.0000028513, 0.0000028560, 0.0000028614, + 0.0000028699, 0.0000028790, 0.0000028854, 0.0000028882, 0.0000028889, + 0.0000028884, 0.0000028855, 0.0000028774, 0.0000028650, 0.0000028553, + 0.0000028476, 0.0000028542, 0.0000028619, 0.0000028689, 0.0000028737, + 0.0000028757, 0.0000028754, 0.0000028722, 0.0000028661, 0.0000028570, + 0.0000028479, 0.0000028433, 0.0000028427, 0.0000028420, 0.0000028393, + 0.0000028340, 0.0000028272, 0.0000028221, 0.0000028212, 0.0000028258, + 0.0000028317, 0.0000028335, 0.0000028283, 0.0000028179, 0.0000028075, + 0.0000028022, 0.0000028042, 0.0000028127, 0.0000028218, 0.0000028267, + 0.0000028274, 0.0000028229, 0.0000028154, 0.0000028106, 0.0000028093, + 0.0000028071, 0.0000028026, 0.0000028008, 0.0000028024, 0.0000028052, + 0.0000028086, 0.0000028088, 0.0000027978, 0.0000027833, 0.0000027770, + 0.0000027787, 0.0000027847, 0.0000027902, 0.0000027951, 0.0000027995, + 0.0000028028, 0.0000028102, 0.0000028202, 0.0000028268, 0.0000028269, + 0.0000028221, 0.0000028106, 0.0000028027, 0.0000028056, 0.0000028189, + 0.0000028299, 0.0000028334, 0.0000028277, 0.0000028193, 0.0000028150, + 0.0000028163, 0.0000028155, 0.0000028102, 0.0000028078, 0.0000028099, + 0.0000028171, 0.0000028258, 0.0000028291, 0.0000028294, 0.0000028284, + 0.0000028125, 0.0000027924, 0.0000027802, 0.0000027757, 0.0000027810, + 0.0000028003, 0.0000028150, 0.0000028169, 0.0000028158, 0.0000028154, + 0.0000028142, 0.0000028076, 0.0000027973, 0.0000027889, 0.0000027844, + 0.0000027819, 0.0000027788, 0.0000027756, 0.0000027729, 0.0000027696, + 0.0000027650, 0.0000027611, 0.0000027605, 0.0000027622, 0.0000027655, + 0.0000027689, 0.0000027715, 0.0000027729, 0.0000027740, 0.0000027770, + 0.0000027812, 0.0000027863, 0.0000027889, 0.0000027870, 0.0000027796, + 0.0000027689, 0.0000027570, 0.0000027480, 0.0000027459, 0.0000027496, + 0.0000027550, 0.0000027612, 0.0000027656, 0.0000027668, 0.0000027646, + 0.0000027583, 0.0000027523, 0.0000027535, 0.0000027650, 0.0000027836, + 0.0000028016, 0.0000028148, 0.0000028281, 0.0000028417, 0.0000028447, + 0.0000028288, 0.0000028037, 0.0000027897, 0.0000027917, 0.0000028050, + 0.0000028195, 0.0000028162, 0.0000027971, 0.0000027815, 0.0000027786, + 0.0000027868, 0.0000028082, 0.0000028314, 0.0000028399, 0.0000028393, + 0.0000028423, 0.0000028556, 0.0000028724, 0.0000028853, 0.0000028965, + 0.0000029127, 0.0000029319, 0.0000029437, 0.0000029469, 0.0000029503, + 0.0000029534, 0.0000029505, 0.0000029413, 0.0000029301, 0.0000029194, + 0.0000029117, 0.0000029075, 0.0000029043, 0.0000029002, 0.0000028932, + 0.0000028833, 0.0000028762, 0.0000028765, 0.0000028827, 0.0000028902, + 0.0000028945, 0.0000028919, 0.0000028823, 0.0000028736, 0.0000028698, + 0.0000028691, 0.0000028696, 0.0000028699, 0.0000028667, 0.0000028574, + 0.0000028455, 0.0000028379, 0.0000028362, 0.0000028394, 0.0000028485, + 0.0000028617, 0.0000028718, 0.0000028754, 0.0000028757, 0.0000028726, + 0.0000028658, 0.0000028592, 0.0000028579, 0.0000028603, 0.0000028634, + 0.0000028649, 0.0000028655, 0.0000028652, 0.0000028620, 0.0000028550, + 0.0000028466, 0.0000028392, 0.0000028337, 0.0000028313, 0.0000028300, + 0.0000028302, 0.0000028319, 0.0000028354, 0.0000028400, 0.0000028442, + 0.0000028466, 0.0000028479, 0.0000028483, 0.0000028476, 0.0000028468, + 0.0000028457, 0.0000028443, 0.0000028426, 0.0000028409, 0.0000028387, + 0.0000028352, 0.0000028320, 0.0000028285, 0.0000028258, 0.0000028233, + 0.0000028215, 0.0000028200, 0.0000028181, 0.0000028155, 0.0000028134, + 0.0000028109, 0.0000028062, 0.0000028002, 0.0000027920, 0.0000027846, + 0.0000027816, 0.0000027826, 0.0000027833, 0.0000027797, 0.0000027723, + 0.0000027673, 0.0000027676, 0.0000027735, 0.0000027816, 0.0000027868, + 0.0000027886, 0.0000027884, 0.0000027878, 0.0000027886, 0.0000027914, + 0.0000028018, 0.0000028175, 0.0000028279, 0.0000028275, 0.0000028220, + 0.0000028192, 0.0000028188, 0.0000028197, 0.0000028255, 0.0000028367, + 0.0000028418, 0.0000028335, 0.0000028171, 0.0000028099, 0.0000028102, + 0.0000028082, 0.0000027997, 0.0000027878, 0.0000027825, 0.0000027877, + 0.0000027933, 0.0000027922, 0.0000027946, 0.0000027973, 0.0000027950, + 0.0000027877, 0.0000027873, 0.0000027973, 0.0000028129, 0.0000028239, + 0.0000028305, 0.0000028355, 0.0000028443, 0.0000028547, 0.0000028645, + 0.0000028691, 0.0000028703, 0.0000028701, 0.0000028685, 0.0000028681, + 0.0000028700, 0.0000028745, 0.0000028785, 0.0000028808, 0.0000028779, + 0.0000028663, 0.0000028552, 0.0000028542, 0.0000028617, 0.0000028691, + 0.0000028738, 0.0000028721, 0.0000028724, 0.0000028843, 0.0000028989, + 0.0000029056, 0.0000029063, 0.0000029034, 0.0000029021, 0.0000029024, + 0.0000029013, 0.0000028998, 0.0000028996, 0.0000029019, 0.0000029049, + 0.0000029066, 0.0000029065, 0.0000029037, 0.0000028989, 0.0000028929, + 0.0000028865, 0.0000028816, 0.0000028784, 0.0000028765, 0.0000028771, + 0.0000028787, 0.0000028786, 0.0000028760, 0.0000028702, 0.0000028642, + 0.0000028561, 0.0000028483, 0.0000028427, 0.0000028396, 0.0000028386, + 0.0000028388, 0.0000028392, 0.0000028419, 0.0000028472, 0.0000028528, + 0.0000028589, 0.0000028630, 0.0000028641, 0.0000028622, 0.0000028558, + 0.0000028458, 0.0000028342, 0.0000028191, 0.0000028035, 0.0000027956, + 0.0000027957, 0.0000027976, 0.0000027969, 0.0000027927, 0.0000027879, + 0.0000027859, 0.0000027887, 0.0000027932, 0.0000027951, 0.0000027914, + 0.0000027822, 0.0000027764, 0.0000027830, 0.0000027982, 0.0000028000, + 0.0000027842, 0.0000027620, 0.0000027482, 0.0000027466, 0.0000027523, + 0.0000027641, 0.0000027768, 0.0000027855, 0.0000027866, 0.0000027844, + 0.0000027835, 0.0000027870, 0.0000027928, 0.0000027935, 0.0000027839, + 0.0000027622, 0.0000027416, 0.0000027330, 0.0000027337, 0.0000027358, + 0.0000027303, 0.0000027149, 0.0000027016, 0.0000026962, 0.0000026933, + 0.0000026912, 0.0000026949, 0.0000027142, 0.0000027415, 0.0000027530, + 0.0000027464, 0.0000027436, 0.0000027526, 0.0000027641, 0.0000027658, + 0.0000027629, 0.0000027719, 0.0000027840, 0.0000027838, 0.0000027788, + 0.0000027793, 0.0000027883, 0.0000027980, 0.0000028012, 0.0000028026, + 0.0000028000, 0.0000027950, 0.0000027904, 0.0000027877, 0.0000027841, + 0.0000027833, 0.0000027842, 0.0000027828, 0.0000027794, 0.0000027771, + 0.0000027769, 0.0000027719, 0.0000027634, 0.0000027553, 0.0000027526, + 0.0000027563, 0.0000027628, 0.0000027706, 0.0000027774, 0.0000027829, + 0.0000027840, 0.0000027815, 0.0000027765, 0.0000027728, 0.0000027741, + 0.0000027785, 0.0000027806, 0.0000027825, 0.0000027786, 0.0000027735, + 0.0000027743, 0.0000027781, 0.0000027788, 0.0000027762, 0.0000027680, + 0.0000027677, 0.0000027791, 0.0000027941, 0.0000027973, 0.0000027933, + 0.0000027854, 0.0000027765, 0.0000027746, 0.0000027859, 0.0000028009, + 0.0000028104, 0.0000028109, 0.0000028068, 0.0000028049, 0.0000028094, + 0.0000028189, 0.0000028288, 0.0000028354, 0.0000028361, 0.0000028288, + 0.0000028149, 0.0000028054, 0.0000028070, 0.0000028196, 0.0000028342, + 0.0000028401, 0.0000028347, 0.0000028247, 0.0000028232, 0.0000028339, + 0.0000028426, 0.0000028482, 0.0000028544, 0.0000028586, 0.0000028608, + 0.0000028669, 0.0000028750, 0.0000028780, 0.0000028770, 0.0000028755, + 0.0000028783, 0.0000028813, 0.0000028815, 0.0000028794, 0.0000028739, + 0.0000028659, 0.0000028599, 0.0000028559, 0.0000028538, 0.0000028547, + 0.0000028570, 0.0000028564, 0.0000028533, 0.0000028525, 0.0000028550, + 0.0000028585, 0.0000028604, 0.0000028617, 0.0000028622, 0.0000028618, + 0.0000028576, 0.0000028498, 0.0000028409, 0.0000028380, 0.0000028394, + 0.0000028446, 0.0000028484, 0.0000028509, 0.0000028514, 0.0000028490, + 0.0000028423, 0.0000028349, 0.0000028331, 0.0000028349, 0.0000028357, + 0.0000028338, 0.0000028299, 0.0000028251, 0.0000028205, 0.0000028177, + 0.0000028162, 0.0000028134, 0.0000028100, 0.0000028087, 0.0000028108, + 0.0000028171, 0.0000028272, 0.0000028385, 0.0000028496, 0.0000028601, + 0.0000028703, 0.0000028782, 0.0000028816, 0.0000028800, 0.0000028764, + 0.0000028723, 0.0000028682, 0.0000028647, 0.0000028628, 0.0000028597, + 0.0000028543, 0.0000028495, 0.0000028454, 0.0000028396, 0.0000028327, + 0.0000028286, 0.0000028305, 0.0000028390, 0.0000028495, 0.0000028560, + 0.0000028505, 0.0000028353, 0.0000028200, 0.0000028124, 0.0000028118, + 0.0000028165, 0.0000028198, 0.0000028201, 0.0000028245, 0.0000028342, + 0.0000028464, 0.0000028540, 0.0000028591, 0.0000028631, 0.0000028655, + 0.0000028650, 0.0000028635, 0.0000028618, 0.0000028589, 0.0000028592, + 0.0000028604, 0.0000028612, 0.0000028606, 0.0000028615, 0.0000028636, + 0.0000028645, 0.0000028610, 0.0000028537, 0.0000028453, 0.0000028406, + 0.0000028409, 0.0000028456, 0.0000028503, 0.0000028540, 0.0000028576, + 0.0000028645, 0.0000028730, 0.0000028805, 0.0000028850, 0.0000028860, + 0.0000028854, 0.0000028812, 0.0000028701, 0.0000028555, 0.0000028472, + 0.0000028471, 0.0000028554, 0.0000028635, 0.0000028705, 0.0000028746, + 0.0000028748, 0.0000028719, 0.0000028657, 0.0000028563, 0.0000028454, + 0.0000028372, 0.0000028348, 0.0000028354, 0.0000028350, 0.0000028330, + 0.0000028296, 0.0000028253, 0.0000028218, 0.0000028227, 0.0000028259, + 0.0000028295, 0.0000028289, 0.0000028216, 0.0000028115, 0.0000028048, + 0.0000028028, 0.0000028070, 0.0000028153, 0.0000028214, 0.0000028226, + 0.0000028206, 0.0000028150, 0.0000028087, 0.0000028053, 0.0000028033, + 0.0000027995, 0.0000027941, 0.0000027908, 0.0000027930, 0.0000027990, + 0.0000028056, 0.0000028068, 0.0000027963, 0.0000027820, 0.0000027756, + 0.0000027778, 0.0000027857, 0.0000027914, 0.0000027930, 0.0000027963, + 0.0000027992, 0.0000028073, 0.0000028181, 0.0000028254, 0.0000028280, + 0.0000028251, 0.0000028149, 0.0000028045, 0.0000028035, 0.0000028147, + 0.0000028278, 0.0000028339, 0.0000028304, 0.0000028208, 0.0000028145, + 0.0000028133, 0.0000028143, 0.0000028109, 0.0000028063, 0.0000028064, + 0.0000028109, 0.0000028191, 0.0000028267, 0.0000028278, 0.0000028254, + 0.0000028203, 0.0000028049, 0.0000027907, 0.0000027851, 0.0000027844, + 0.0000027919, 0.0000028105, 0.0000028231, 0.0000028257, 0.0000028262, + 0.0000028268, 0.0000028247, 0.0000028176, 0.0000028088, 0.0000028009, + 0.0000027946, 0.0000027888, 0.0000027829, 0.0000027791, 0.0000027749, + 0.0000027712, 0.0000027675, 0.0000027658, 0.0000027660, 0.0000027665, + 0.0000027674, 0.0000027677, 0.0000027672, 0.0000027670, 0.0000027692, + 0.0000027750, 0.0000027820, 0.0000027878, 0.0000027892, 0.0000027866, + 0.0000027799, 0.0000027700, 0.0000027589, 0.0000027501, 0.0000027475, + 0.0000027493, 0.0000027519, 0.0000027561, 0.0000027611, 0.0000027641, + 0.0000027631, 0.0000027590, 0.0000027547, 0.0000027565, 0.0000027681, + 0.0000027875, 0.0000028069, 0.0000028197, 0.0000028297, 0.0000028400, + 0.0000028419, 0.0000028261, 0.0000028008, 0.0000027866, 0.0000027891, + 0.0000028045, 0.0000028197, 0.0000028170, 0.0000027989, 0.0000027841, + 0.0000027816, 0.0000027928, 0.0000028169, 0.0000028389, 0.0000028447, + 0.0000028451, 0.0000028494, 0.0000028623, 0.0000028783, 0.0000028914, + 0.0000029027, 0.0000029177, 0.0000029361, 0.0000029490, 0.0000029543, + 0.0000029585, 0.0000029605, 0.0000029563, 0.0000029459, 0.0000029347, + 0.0000029250, 0.0000029179, 0.0000029127, 0.0000029077, 0.0000029030, + 0.0000028965, 0.0000028869, 0.0000028794, 0.0000028793, 0.0000028844, + 0.0000028905, 0.0000028960, 0.0000028958, 0.0000028882, 0.0000028779, + 0.0000028713, 0.0000028687, 0.0000028691, 0.0000028704, 0.0000028689, + 0.0000028624, 0.0000028513, 0.0000028424, 0.0000028404, 0.0000028439, + 0.0000028520, 0.0000028625, 0.0000028707, 0.0000028733, 0.0000028726, + 0.0000028687, 0.0000028619, 0.0000028537, 0.0000028482, 0.0000028471, + 0.0000028482, 0.0000028494, 0.0000028503, 0.0000028500, 0.0000028463, + 0.0000028379, 0.0000028269, 0.0000028178, 0.0000028133, 0.0000028135, + 0.0000028163, 0.0000028197, 0.0000028250, 0.0000028319, 0.0000028407, + 0.0000028481, 0.0000028523, 0.0000028543, 0.0000028542, 0.0000028521, + 0.0000028507, 0.0000028497, 0.0000028485, 0.0000028468, 0.0000028450, + 0.0000028428, 0.0000028416, 0.0000028388, 0.0000028356, 0.0000028318, + 0.0000028270, 0.0000028214, 0.0000028166, 0.0000028120, 0.0000028107, + 0.0000028109, 0.0000028120, 0.0000028120, 0.0000028108, 0.0000028059, + 0.0000027974, 0.0000027881, 0.0000027835, 0.0000027843, 0.0000027861, + 0.0000027839, 0.0000027771, 0.0000027721, 0.0000027719, 0.0000027755, + 0.0000027825, 0.0000027881, 0.0000027898, 0.0000027887, 0.0000027867, + 0.0000027862, 0.0000027883, 0.0000028001, 0.0000028177, 0.0000028281, + 0.0000028279, 0.0000028228, 0.0000028208, 0.0000028207, 0.0000028216, + 0.0000028279, 0.0000028402, 0.0000028461, 0.0000028370, 0.0000028192, + 0.0000028106, 0.0000028102, 0.0000028078, 0.0000028010, 0.0000027907, + 0.0000027856, 0.0000027904, 0.0000027941, 0.0000027916, 0.0000027938, + 0.0000027971, 0.0000027967, 0.0000027918, 0.0000027922, 0.0000028031, + 0.0000028180, 0.0000028278, 0.0000028339, 0.0000028389, 0.0000028474, + 0.0000028581, 0.0000028667, 0.0000028686, 0.0000028674, 0.0000028641, + 0.0000028608, 0.0000028590, 0.0000028600, 0.0000028634, 0.0000028692, + 0.0000028776, 0.0000028833, 0.0000028756, 0.0000028569, 0.0000028494, + 0.0000028567, 0.0000028677, 0.0000028737, 0.0000028731, 0.0000028693, + 0.0000028780, 0.0000028953, 0.0000029064, 0.0000029108, 0.0000029096, + 0.0000029095, 0.0000029097, 0.0000029086, 0.0000029081, 0.0000029091, + 0.0000029123, 0.0000029152, 0.0000029158, 0.0000029136, 0.0000029072, + 0.0000029001, 0.0000028904, 0.0000028811, 0.0000028736, 0.0000028696, + 0.0000028679, 0.0000028691, 0.0000028697, 0.0000028686, 0.0000028657, + 0.0000028600, 0.0000028539, 0.0000028463, 0.0000028391, 0.0000028333, + 0.0000028312, 0.0000028317, 0.0000028342, 0.0000028356, 0.0000028381, + 0.0000028426, 0.0000028482, 0.0000028532, 0.0000028568, 0.0000028575, + 0.0000028554, 0.0000028493, 0.0000028397, 0.0000028277, 0.0000028122, + 0.0000027942, 0.0000027850, 0.0000027860, 0.0000027900, 0.0000027903, + 0.0000027856, 0.0000027791, 0.0000027767, 0.0000027796, 0.0000027879, + 0.0000027920, 0.0000027888, 0.0000027806, 0.0000027723, 0.0000027706, + 0.0000027792, 0.0000027943, 0.0000027972, 0.0000027857, 0.0000027639, + 0.0000027492, 0.0000027487, 0.0000027567, 0.0000027698, 0.0000027819, + 0.0000027878, 0.0000027889, 0.0000027884, 0.0000027894, 0.0000027934, + 0.0000027973, 0.0000027960, 0.0000027804, 0.0000027568, 0.0000027409, + 0.0000027384, 0.0000027399, 0.0000027370, 0.0000027245, 0.0000027096, + 0.0000027009, 0.0000026969, 0.0000026951, 0.0000026977, 0.0000027138, + 0.0000027396, 0.0000027551, 0.0000027502, 0.0000027422, 0.0000027483, + 0.0000027620, 0.0000027677, 0.0000027620, 0.0000027652, 0.0000027799, + 0.0000027846, 0.0000027836, 0.0000027832, 0.0000027881, 0.0000027982, + 0.0000028027, 0.0000028030, 0.0000028017, 0.0000027974, 0.0000027959, + 0.0000027960, 0.0000027971, 0.0000027971, 0.0000027959, 0.0000027925, + 0.0000027841, 0.0000027758, 0.0000027695, 0.0000027653, 0.0000027612, + 0.0000027575, 0.0000027540, 0.0000027570, 0.0000027648, 0.0000027746, + 0.0000027848, 0.0000027891, 0.0000027897, 0.0000027865, 0.0000027831, + 0.0000027764, 0.0000027711, 0.0000027711, 0.0000027761, 0.0000027794, + 0.0000027826, 0.0000027804, 0.0000027763, 0.0000027771, 0.0000027804, + 0.0000027825, 0.0000027829, 0.0000027779, 0.0000027768, 0.0000027876, + 0.0000028017, 0.0000028077, 0.0000028036, 0.0000027971, 0.0000027896, + 0.0000027884, 0.0000027993, 0.0000028157, 0.0000028261, 0.0000028263, + 0.0000028224, 0.0000028204, 0.0000028230, 0.0000028299, 0.0000028396, + 0.0000028467, 0.0000028456, 0.0000028360, 0.0000028215, 0.0000028131, + 0.0000028141, 0.0000028265, 0.0000028397, 0.0000028457, 0.0000028414, + 0.0000028297, 0.0000028210, 0.0000028258, 0.0000028365, 0.0000028470, + 0.0000028565, 0.0000028624, 0.0000028655, 0.0000028724, 0.0000028788, + 0.0000028788, 0.0000028762, 0.0000028763, 0.0000028809, 0.0000028868, + 0.0000028884, 0.0000028860, 0.0000028790, 0.0000028694, 0.0000028620, + 0.0000028577, 0.0000028549, 0.0000028521, 0.0000028508, 0.0000028494, + 0.0000028467, 0.0000028469, 0.0000028520, 0.0000028573, 0.0000028589, + 0.0000028597, 0.0000028611, 0.0000028639, 0.0000028673, 0.0000028685, + 0.0000028642, 0.0000028538, 0.0000028461, 0.0000028421, 0.0000028414, + 0.0000028385, 0.0000028380, 0.0000028386, 0.0000028379, 0.0000028319, + 0.0000028252, 0.0000028241, 0.0000028253, 0.0000028251, 0.0000028227, + 0.0000028191, 0.0000028145, 0.0000028094, 0.0000028049, 0.0000028002, + 0.0000027952, 0.0000027916, 0.0000027940, 0.0000028051, 0.0000028200, + 0.0000028348, 0.0000028474, 0.0000028578, 0.0000028661, 0.0000028730, + 0.0000028767, 0.0000028755, 0.0000028707, 0.0000028654, 0.0000028606, + 0.0000028560, 0.0000028528, 0.0000028522, 0.0000028517, 0.0000028502, + 0.0000028479, 0.0000028445, 0.0000028384, 0.0000028319, 0.0000028276, + 0.0000028231, 0.0000028205, 0.0000028223, 0.0000028346, 0.0000028466, + 0.0000028507, 0.0000028418, 0.0000028239, 0.0000028087, 0.0000028008, + 0.0000028002, 0.0000028056, 0.0000028117, 0.0000028188, 0.0000028306, + 0.0000028407, 0.0000028485, 0.0000028531, 0.0000028552, 0.0000028550, + 0.0000028533, 0.0000028524, 0.0000028520, 0.0000028548, 0.0000028589, + 0.0000028615, 0.0000028604, 0.0000028600, 0.0000028630, 0.0000028674, + 0.0000028689, 0.0000028628, 0.0000028510, 0.0000028415, 0.0000028406, + 0.0000028447, 0.0000028492, 0.0000028522, 0.0000028545, 0.0000028596, + 0.0000028673, 0.0000028758, 0.0000028820, 0.0000028830, 0.0000028820, + 0.0000028757, 0.0000028608, 0.0000028462, 0.0000028421, 0.0000028495, + 0.0000028568, 0.0000028637, 0.0000028692, 0.0000028708, 0.0000028676, + 0.0000028604, 0.0000028511, 0.0000028403, 0.0000028312, 0.0000028274, + 0.0000028278, 0.0000028294, 0.0000028301, 0.0000028303, 0.0000028289, + 0.0000028265, 0.0000028246, 0.0000028260, 0.0000028271, 0.0000028276, + 0.0000028245, 0.0000028172, 0.0000028095, 0.0000028057, 0.0000028068, + 0.0000028126, 0.0000028195, 0.0000028222, 0.0000028203, 0.0000028133, + 0.0000028040, 0.0000027971, 0.0000027948, 0.0000027937, 0.0000027916, + 0.0000027886, 0.0000027852, 0.0000027864, 0.0000027926, 0.0000027998, + 0.0000028024, 0.0000027930, 0.0000027785, 0.0000027723, 0.0000027760, + 0.0000027849, 0.0000027920, 0.0000027936, 0.0000027945, 0.0000027972, + 0.0000028038, 0.0000028142, 0.0000028230, 0.0000028268, 0.0000028262, + 0.0000028196, 0.0000028092, 0.0000028059, 0.0000028136, 0.0000028246, + 0.0000028306, 0.0000028288, 0.0000028203, 0.0000028106, 0.0000028060, + 0.0000028073, 0.0000028063, 0.0000028030, 0.0000028033, 0.0000028067, + 0.0000028119, 0.0000028179, 0.0000028237, 0.0000028227, 0.0000028181, + 0.0000028142, 0.0000028038, 0.0000027953, 0.0000027932, 0.0000027931, + 0.0000028023, 0.0000028190, 0.0000028305, 0.0000028343, 0.0000028352, + 0.0000028346, 0.0000028297, 0.0000028213, 0.0000028119, 0.0000028031, + 0.0000027950, 0.0000027882, 0.0000027836, 0.0000027796, 0.0000027767, + 0.0000027738, 0.0000027709, 0.0000027685, 0.0000027666, 0.0000027648, + 0.0000027629, 0.0000027609, 0.0000027595, 0.0000027602, 0.0000027657, + 0.0000027749, 0.0000027836, 0.0000027883, 0.0000027893, 0.0000027863, + 0.0000027797, 0.0000027706, 0.0000027611, 0.0000027537, 0.0000027510, + 0.0000027507, 0.0000027513, 0.0000027545, 0.0000027603, 0.0000027647, + 0.0000027652, 0.0000027623, 0.0000027603, 0.0000027627, 0.0000027743, + 0.0000027933, 0.0000028124, 0.0000028239, 0.0000028308, 0.0000028374, + 0.0000028381, 0.0000028226, 0.0000027974, 0.0000027834, 0.0000027875, + 0.0000028040, 0.0000028193, 0.0000028171, 0.0000027999, 0.0000027864, + 0.0000027852, 0.0000027989, 0.0000028250, 0.0000028454, 0.0000028497, + 0.0000028500, 0.0000028546, 0.0000028670, 0.0000028824, 0.0000028963, + 0.0000029081, 0.0000029224, 0.0000029403, 0.0000029542, 0.0000029607, + 0.0000029653, 0.0000029673, 0.0000029631, 0.0000029517, 0.0000029391, + 0.0000029288, 0.0000029218, 0.0000029163, 0.0000029094, 0.0000029026, + 0.0000028969, 0.0000028899, 0.0000028829, 0.0000028808, 0.0000028838, + 0.0000028897, 0.0000028952, 0.0000028970, 0.0000028935, 0.0000028836, + 0.0000028748, 0.0000028698, 0.0000028689, 0.0000028699, 0.0000028702, + 0.0000028673, 0.0000028601, 0.0000028519, 0.0000028482, 0.0000028505, + 0.0000028572, 0.0000028639, 0.0000028690, 0.0000028726, 0.0000028734, + 0.0000028702, 0.0000028639, 0.0000028560, 0.0000028486, 0.0000028446, + 0.0000028412, 0.0000028391, 0.0000028375, 0.0000028359, 0.0000028319, + 0.0000028239, 0.0000028134, 0.0000028051, 0.0000028027, 0.0000028067, + 0.0000028113, 0.0000028186, 0.0000028248, 0.0000028331, 0.0000028427, + 0.0000028504, 0.0000028540, 0.0000028549, 0.0000028536, 0.0000028506, + 0.0000028475, 0.0000028441, 0.0000028424, 0.0000028412, 0.0000028403, + 0.0000028399, 0.0000028398, 0.0000028400, 0.0000028388, 0.0000028363, + 0.0000028338, 0.0000028293, 0.0000028226, 0.0000028149, 0.0000028097, + 0.0000028083, 0.0000028082, 0.0000028098, 0.0000028103, 0.0000028096, + 0.0000028066, 0.0000028008, 0.0000027936, 0.0000027882, 0.0000027874, + 0.0000027888, 0.0000027863, 0.0000027790, 0.0000027743, 0.0000027735, + 0.0000027753, 0.0000027816, 0.0000027877, 0.0000027889, 0.0000027872, + 0.0000027843, 0.0000027826, 0.0000027857, 0.0000028006, 0.0000028191, + 0.0000028278, 0.0000028264, 0.0000028219, 0.0000028211, 0.0000028220, + 0.0000028232, 0.0000028299, 0.0000028430, 0.0000028493, 0.0000028396, + 0.0000028208, 0.0000028111, 0.0000028097, 0.0000028073, 0.0000028027, + 0.0000027948, 0.0000027900, 0.0000027938, 0.0000027956, 0.0000027917, + 0.0000027930, 0.0000027960, 0.0000027967, 0.0000027955, 0.0000027978, + 0.0000028090, 0.0000028225, 0.0000028323, 0.0000028388, 0.0000028447, + 0.0000028519, 0.0000028593, 0.0000028631, 0.0000028620, 0.0000028591, + 0.0000028572, 0.0000028566, 0.0000028555, 0.0000028562, 0.0000028570, + 0.0000028597, 0.0000028682, 0.0000028817, 0.0000028840, 0.0000028662, + 0.0000028497, 0.0000028516, 0.0000028643, 0.0000028734, 0.0000028750, + 0.0000028696, 0.0000028733, 0.0000028888, 0.0000029042, 0.0000029116, + 0.0000029136, 0.0000029133, 0.0000029134, 0.0000029127, 0.0000029117, + 0.0000029121, 0.0000029139, 0.0000029163, 0.0000029150, 0.0000029098, + 0.0000029013, 0.0000028914, 0.0000028798, 0.0000028673, 0.0000028571, + 0.0000028526, 0.0000028519, 0.0000028542, 0.0000028560, 0.0000028561, + 0.0000028539, 0.0000028487, 0.0000028421, 0.0000028336, 0.0000028237, + 0.0000028157, 0.0000028122, 0.0000028134, 0.0000028176, 0.0000028208, + 0.0000028245, 0.0000028293, 0.0000028354, 0.0000028406, 0.0000028453, + 0.0000028470, 0.0000028463, 0.0000028414, 0.0000028318, 0.0000028185, + 0.0000028017, 0.0000027823, 0.0000027716, 0.0000027727, 0.0000027788, + 0.0000027824, 0.0000027800, 0.0000027738, 0.0000027692, 0.0000027685, + 0.0000027767, 0.0000027862, 0.0000027861, 0.0000027789, 0.0000027692, + 0.0000027638, 0.0000027652, 0.0000027744, 0.0000027873, 0.0000027936, + 0.0000027861, 0.0000027705, 0.0000027569, 0.0000027535, 0.0000027611, + 0.0000027731, 0.0000027836, 0.0000027888, 0.0000027920, 0.0000027947, + 0.0000027961, 0.0000027982, 0.0000028001, 0.0000027953, 0.0000027754, + 0.0000027535, 0.0000027433, 0.0000027430, 0.0000027417, 0.0000027325, + 0.0000027193, 0.0000027087, 0.0000027023, 0.0000026997, 0.0000027017, + 0.0000027137, 0.0000027366, 0.0000027555, 0.0000027549, 0.0000027444, + 0.0000027440, 0.0000027567, 0.0000027673, 0.0000027639, 0.0000027609, + 0.0000027736, 0.0000027842, 0.0000027860, 0.0000027878, 0.0000027895, + 0.0000027966, 0.0000028037, 0.0000028045, 0.0000028031, 0.0000028003, + 0.0000027996, 0.0000028028, 0.0000028054, 0.0000028062, 0.0000028027, + 0.0000027964, 0.0000027872, 0.0000027790, 0.0000027731, 0.0000027698, + 0.0000027686, 0.0000027681, 0.0000027684, 0.0000027714, 0.0000027758, + 0.0000027803, 0.0000027845, 0.0000027898, 0.0000027918, 0.0000027917, + 0.0000027886, 0.0000027833, 0.0000027792, 0.0000027744, 0.0000027768, + 0.0000027826, 0.0000027866, 0.0000027890, 0.0000027885, 0.0000027879, + 0.0000027900, 0.0000027940, 0.0000027961, 0.0000027953, 0.0000027888, + 0.0000027859, 0.0000027963, 0.0000028095, 0.0000028191, 0.0000028154, + 0.0000028091, 0.0000028029, 0.0000028026, 0.0000028129, 0.0000028294, + 0.0000028403, 0.0000028423, 0.0000028405, 0.0000028381, 0.0000028382, + 0.0000028428, 0.0000028510, 0.0000028570, 0.0000028537, 0.0000028428, + 0.0000028306, 0.0000028242, 0.0000028256, 0.0000028378, 0.0000028475, + 0.0000028503, 0.0000028464, 0.0000028347, 0.0000028223, 0.0000028194, + 0.0000028271, 0.0000028432, 0.0000028582, 0.0000028651, 0.0000028682, + 0.0000028746, 0.0000028810, 0.0000028803, 0.0000028762, 0.0000028761, + 0.0000028813, 0.0000028877, 0.0000028895, 0.0000028871, 0.0000028808, + 0.0000028716, 0.0000028632, 0.0000028576, 0.0000028531, 0.0000028491, + 0.0000028441, 0.0000028402, 0.0000028385, 0.0000028407, 0.0000028494, + 0.0000028580, 0.0000028612, 0.0000028612, 0.0000028603, 0.0000028615, + 0.0000028654, 0.0000028698, 0.0000028740, 0.0000028731, 0.0000028700, + 0.0000028667, 0.0000028602, 0.0000028505, 0.0000028404, 0.0000028356, + 0.0000028340, 0.0000028289, 0.0000028187, 0.0000028103, 0.0000028075, + 0.0000028067, 0.0000028047, 0.0000028008, 0.0000027965, 0.0000027927, + 0.0000027904, 0.0000027919, 0.0000027957, 0.0000027991, 0.0000028039, + 0.0000028141, 0.0000028276, 0.0000028401, 0.0000028533, 0.0000028643, + 0.0000028739, 0.0000028821, 0.0000028898, 0.0000028920, 0.0000028882, + 0.0000028791, 0.0000028685, 0.0000028600, 0.0000028537, 0.0000028496, + 0.0000028493, 0.0000028513, 0.0000028528, 0.0000028538, 0.0000028536, + 0.0000028491, 0.0000028430, 0.0000028372, 0.0000028306, 0.0000028228, + 0.0000028154, 0.0000028155, 0.0000028233, 0.0000028373, 0.0000028453, + 0.0000028409, 0.0000028259, 0.0000028061, 0.0000027907, 0.0000027875, + 0.0000027947, 0.0000028053, 0.0000028163, 0.0000028267, 0.0000028358, + 0.0000028410, 0.0000028435, 0.0000028427, 0.0000028396, 0.0000028384, + 0.0000028386, 0.0000028418, 0.0000028481, 0.0000028555, 0.0000028585, + 0.0000028581, 0.0000028603, 0.0000028667, 0.0000028711, 0.0000028687, + 0.0000028572, 0.0000028449, 0.0000028413, 0.0000028440, 0.0000028480, + 0.0000028507, 0.0000028522, 0.0000028556, 0.0000028630, 0.0000028727, + 0.0000028799, 0.0000028805, 0.0000028786, 0.0000028692, 0.0000028514, + 0.0000028404, 0.0000028418, 0.0000028506, 0.0000028554, 0.0000028598, + 0.0000028627, 0.0000028613, 0.0000028545, 0.0000028452, 0.0000028362, + 0.0000028289, 0.0000028251, 0.0000028248, 0.0000028258, 0.0000028273, + 0.0000028292, 0.0000028304, 0.0000028305, 0.0000028306, 0.0000028310, + 0.0000028317, 0.0000028309, 0.0000028280, 0.0000028235, 0.0000028168, + 0.0000028122, 0.0000028121, 0.0000028156, 0.0000028202, 0.0000028223, + 0.0000028190, 0.0000028090, 0.0000027950, 0.0000027832, 0.0000027781, + 0.0000027777, 0.0000027793, 0.0000027805, 0.0000027814, 0.0000027815, + 0.0000027833, 0.0000027883, 0.0000027933, 0.0000027948, 0.0000027864, + 0.0000027726, 0.0000027675, 0.0000027727, 0.0000027820, 0.0000027914, + 0.0000027946, 0.0000027943, 0.0000027964, 0.0000028016, 0.0000028093, + 0.0000028169, 0.0000028222, 0.0000028242, 0.0000028213, 0.0000028135, + 0.0000028079, 0.0000028127, 0.0000028216, 0.0000028275, 0.0000028261, + 0.0000028199, 0.0000028102, 0.0000028033, 0.0000028004, 0.0000027989, + 0.0000027952, 0.0000027950, 0.0000027990, 0.0000028046, 0.0000028095, + 0.0000028149, 0.0000028194, 0.0000028172, 0.0000028134, 0.0000028135, + 0.0000028080, 0.0000028023, 0.0000028024, 0.0000028034, 0.0000028112, + 0.0000028255, 0.0000028363, 0.0000028404, 0.0000028406, 0.0000028372, + 0.0000028296, 0.0000028193, 0.0000028090, 0.0000027997, 0.0000027922, + 0.0000027859, 0.0000027816, 0.0000027787, 0.0000027765, 0.0000027735, + 0.0000027703, 0.0000027669, 0.0000027628, 0.0000027590, 0.0000027556, + 0.0000027530, 0.0000027526, 0.0000027567, 0.0000027650, 0.0000027755, + 0.0000027841, 0.0000027893, 0.0000027898, 0.0000027865, 0.0000027799, + 0.0000027714, 0.0000027641, 0.0000027596, 0.0000027578, 0.0000027565, + 0.0000027563, 0.0000027594, 0.0000027653, 0.0000027698, 0.0000027702, + 0.0000027679, 0.0000027671, 0.0000027711, 0.0000027826, 0.0000027997, + 0.0000028161, 0.0000028264, 0.0000028315, 0.0000028351, 0.0000028340, + 0.0000028184, 0.0000027942, 0.0000027820, 0.0000027871, 0.0000028037, + 0.0000028188, 0.0000028171, 0.0000028012, 0.0000027887, 0.0000027888, + 0.0000028050, 0.0000028325, 0.0000028511, 0.0000028542, 0.0000028545, + 0.0000028593, 0.0000028705, 0.0000028852, 0.0000029001, 0.0000029131, + 0.0000029274, 0.0000029446, 0.0000029587, 0.0000029660, 0.0000029701, + 0.0000029718, 0.0000029691, 0.0000029580, 0.0000029434, 0.0000029308, + 0.0000029226, 0.0000029175, 0.0000029110, 0.0000029015, 0.0000028936, + 0.0000028884, 0.0000028841, 0.0000028815, 0.0000028833, 0.0000028896, + 0.0000028946, 0.0000028968, 0.0000028956, 0.0000028892, 0.0000028803, + 0.0000028731, 0.0000028697, 0.0000028695, 0.0000028702, 0.0000028706, + 0.0000028686, 0.0000028645, 0.0000028602, 0.0000028593, 0.0000028622, + 0.0000028664, 0.0000028689, 0.0000028721, 0.0000028749, 0.0000028745, + 0.0000028697, 0.0000028631, 0.0000028570, 0.0000028514, 0.0000028463, + 0.0000028414, 0.0000028364, 0.0000028327, 0.0000028286, 0.0000028221, + 0.0000028138, 0.0000028078, 0.0000028066, 0.0000028115, 0.0000028188, + 0.0000028254, 0.0000028306, 0.0000028353, 0.0000028416, 0.0000028469, + 0.0000028486, 0.0000028479, 0.0000028444, 0.0000028404, 0.0000028361, + 0.0000028313, 0.0000028281, 0.0000028266, 0.0000028258, 0.0000028262, + 0.0000028286, 0.0000028319, 0.0000028347, 0.0000028354, 0.0000028342, + 0.0000028327, 0.0000028307, 0.0000028257, 0.0000028186, 0.0000028142, + 0.0000028132, 0.0000028131, 0.0000028120, 0.0000028094, 0.0000028061, + 0.0000028030, 0.0000028005, 0.0000027985, 0.0000027943, 0.0000027923, + 0.0000027918, 0.0000027866, 0.0000027778, 0.0000027733, 0.0000027717, + 0.0000027731, 0.0000027798, 0.0000027857, 0.0000027862, 0.0000027833, + 0.0000027805, 0.0000027792, 0.0000027848, 0.0000028033, 0.0000028209, + 0.0000028263, 0.0000028237, 0.0000028199, 0.0000028208, 0.0000028226, + 0.0000028240, 0.0000028308, 0.0000028444, 0.0000028512, 0.0000028415, + 0.0000028224, 0.0000028117, 0.0000028099, 0.0000028081, 0.0000028056, + 0.0000028004, 0.0000027968, 0.0000027997, 0.0000027997, 0.0000027931, + 0.0000027929, 0.0000027950, 0.0000027965, 0.0000027984, 0.0000028037, + 0.0000028147, 0.0000028262, 0.0000028362, 0.0000028439, 0.0000028498, + 0.0000028541, 0.0000028568, 0.0000028563, 0.0000028542, 0.0000028533, + 0.0000028553, 0.0000028574, 0.0000028583, 0.0000028583, 0.0000028578, + 0.0000028572, 0.0000028605, 0.0000028755, 0.0000028861, 0.0000028796, + 0.0000028576, 0.0000028501, 0.0000028583, 0.0000028708, 0.0000028756, + 0.0000028728, 0.0000028712, 0.0000028826, 0.0000028975, 0.0000029086, + 0.0000029138, 0.0000029144, 0.0000029150, 0.0000029144, 0.0000029125, + 0.0000029108, 0.0000029101, 0.0000029086, 0.0000029047, 0.0000028973, + 0.0000028888, 0.0000028805, 0.0000028698, 0.0000028559, 0.0000028431, + 0.0000028370, 0.0000028366, 0.0000028397, 0.0000028438, 0.0000028468, + 0.0000028474, 0.0000028447, 0.0000028395, 0.0000028316, 0.0000028193, + 0.0000028084, 0.0000028016, 0.0000028003, 0.0000028033, 0.0000028064, + 0.0000028102, 0.0000028148, 0.0000028207, 0.0000028259, 0.0000028311, + 0.0000028343, 0.0000028348, 0.0000028316, 0.0000028225, 0.0000028081, + 0.0000027899, 0.0000027712, 0.0000027586, 0.0000027588, 0.0000027645, + 0.0000027716, 0.0000027742, 0.0000027720, 0.0000027676, 0.0000027637, + 0.0000027658, 0.0000027758, 0.0000027816, 0.0000027788, 0.0000027709, + 0.0000027609, 0.0000027565, 0.0000027596, 0.0000027677, 0.0000027774, + 0.0000027830, 0.0000027815, 0.0000027749, 0.0000027680, 0.0000027637, + 0.0000027667, 0.0000027736, 0.0000027830, 0.0000027896, 0.0000027966, + 0.0000028014, 0.0000028017, 0.0000028022, 0.0000028026, 0.0000027928, + 0.0000027703, 0.0000027525, 0.0000027462, 0.0000027451, 0.0000027400, + 0.0000027294, 0.0000027187, 0.0000027106, 0.0000027066, 0.0000027071, + 0.0000027149, 0.0000027329, 0.0000027529, 0.0000027578, 0.0000027494, + 0.0000027446, 0.0000027514, 0.0000027637, 0.0000027659, 0.0000027588, + 0.0000027656, 0.0000027812, 0.0000027869, 0.0000027907, 0.0000027927, + 0.0000027952, 0.0000028023, 0.0000028060, 0.0000028054, 0.0000028031, + 0.0000028025, 0.0000028049, 0.0000028070, 0.0000028069, 0.0000028030, + 0.0000027954, 0.0000027884, 0.0000027832, 0.0000027805, 0.0000027791, + 0.0000027793, 0.0000027806, 0.0000027829, 0.0000027853, 0.0000027868, + 0.0000027873, 0.0000027861, 0.0000027893, 0.0000027940, 0.0000027969, + 0.0000027963, 0.0000027927, 0.0000027868, 0.0000027830, 0.0000027820, + 0.0000027834, 0.0000027892, 0.0000027930, 0.0000027940, 0.0000027941, + 0.0000027963, 0.0000028010, 0.0000028055, 0.0000028078, 0.0000028062, + 0.0000027993, 0.0000027946, 0.0000028056, 0.0000028184, 0.0000028287, + 0.0000028255, 0.0000028195, 0.0000028149, 0.0000028160, 0.0000028253, + 0.0000028407, 0.0000028525, 0.0000028577, 0.0000028577, 0.0000028540, + 0.0000028528, 0.0000028540, 0.0000028572, 0.0000028602, 0.0000028578, + 0.0000028503, 0.0000028437, 0.0000028404, 0.0000028423, 0.0000028510, + 0.0000028555, 0.0000028557, 0.0000028511, 0.0000028395, 0.0000028249, + 0.0000028172, 0.0000028210, 0.0000028385, 0.0000028577, 0.0000028668, + 0.0000028698, 0.0000028742, 0.0000028810, 0.0000028814, 0.0000028776, + 0.0000028774, 0.0000028806, 0.0000028852, 0.0000028869, 0.0000028845, + 0.0000028799, 0.0000028727, 0.0000028643, 0.0000028577, 0.0000028524, + 0.0000028471, 0.0000028422, 0.0000028362, 0.0000028333, 0.0000028349, + 0.0000028449, 0.0000028567, 0.0000028637, 0.0000028662, 0.0000028661, + 0.0000028642, 0.0000028650, 0.0000028683, 0.0000028737, 0.0000028760, + 0.0000028766, 0.0000028797, 0.0000028798, 0.0000028762, 0.0000028689, + 0.0000028603, 0.0000028547, 0.0000028481, 0.0000028366, 0.0000028220, + 0.0000028119, 0.0000028079, 0.0000028057, 0.0000028036, 0.0000028002, + 0.0000027971, 0.0000027970, 0.0000028025, 0.0000028130, 0.0000028242, + 0.0000028313, 0.0000028322, 0.0000028318, 0.0000028344, 0.0000028422, + 0.0000028523, 0.0000028617, 0.0000028726, 0.0000028838, 0.0000028926, + 0.0000028970, 0.0000028962, 0.0000028915, 0.0000028821, 0.0000028726, + 0.0000028653, 0.0000028603, 0.0000028597, 0.0000028618, 0.0000028642, + 0.0000028658, 0.0000028669, 0.0000028655, 0.0000028620, 0.0000028571, + 0.0000028496, 0.0000028402, 0.0000028300, 0.0000028212, 0.0000028168, + 0.0000028213, 0.0000028305, 0.0000028362, 0.0000028338, 0.0000028221, + 0.0000028037, 0.0000027873, 0.0000027823, 0.0000027871, 0.0000028001, + 0.0000028117, 0.0000028210, 0.0000028283, 0.0000028330, 0.0000028324, + 0.0000028295, 0.0000028286, 0.0000028278, 0.0000028284, 0.0000028319, + 0.0000028403, 0.0000028491, 0.0000028536, 0.0000028567, 0.0000028632, + 0.0000028690, 0.0000028685, 0.0000028597, 0.0000028476, 0.0000028418, + 0.0000028439, 0.0000028473, 0.0000028496, 0.0000028505, 0.0000028528, + 0.0000028605, 0.0000028711, 0.0000028782, 0.0000028785, 0.0000028751, + 0.0000028620, 0.0000028443, 0.0000028386, 0.0000028436, 0.0000028485, + 0.0000028508, 0.0000028534, 0.0000028544, 0.0000028508, 0.0000028430, + 0.0000028352, 0.0000028296, 0.0000028267, 0.0000028253, 0.0000028249, + 0.0000028247, 0.0000028260, 0.0000028287, 0.0000028306, 0.0000028323, + 0.0000028346, 0.0000028367, 0.0000028373, 0.0000028360, 0.0000028316, + 0.0000028263, 0.0000028212, 0.0000028180, 0.0000028180, 0.0000028193, + 0.0000028185, 0.0000028122, 0.0000027998, 0.0000027858, 0.0000027736, + 0.0000027655, 0.0000027632, 0.0000027641, 0.0000027677, 0.0000027701, + 0.0000027723, 0.0000027752, 0.0000027795, 0.0000027847, 0.0000027879, + 0.0000027861, 0.0000027783, 0.0000027670, 0.0000027634, 0.0000027690, + 0.0000027779, 0.0000027878, 0.0000027944, 0.0000027958, 0.0000027967, + 0.0000028004, 0.0000028050, 0.0000028094, 0.0000028150, 0.0000028201, + 0.0000028212, 0.0000028169, 0.0000028113, 0.0000028119, 0.0000028176, + 0.0000028236, 0.0000028250, 0.0000028219, 0.0000028145, 0.0000028070, + 0.0000028014, 0.0000027989, 0.0000027937, 0.0000027895, 0.0000027889, + 0.0000027925, 0.0000027987, 0.0000028056, 0.0000028129, 0.0000028163, + 0.0000028141, 0.0000028132, 0.0000028173, 0.0000028141, 0.0000028105, + 0.0000028118, 0.0000028129, 0.0000028179, 0.0000028292, 0.0000028391, + 0.0000028432, 0.0000028420, 0.0000028359, 0.0000028268, 0.0000028166, + 0.0000028072, 0.0000027996, 0.0000027927, 0.0000027867, 0.0000027819, + 0.0000027797, 0.0000027770, 0.0000027741, 0.0000027706, 0.0000027662, + 0.0000027618, 0.0000027577, 0.0000027540, 0.0000027524, 0.0000027535, + 0.0000027600, 0.0000027707, 0.0000027821, 0.0000027900, 0.0000027919, + 0.0000027901, 0.0000027861, 0.0000027796, 0.0000027723, 0.0000027674, + 0.0000027661, 0.0000027660, 0.0000027656, 0.0000027657, 0.0000027689, + 0.0000027743, 0.0000027776, 0.0000027769, 0.0000027752, 0.0000027755, + 0.0000027802, 0.0000027906, 0.0000028044, 0.0000028180, 0.0000028275, + 0.0000028321, 0.0000028333, 0.0000028305, 0.0000028146, 0.0000027925, + 0.0000027827, 0.0000027876, 0.0000028040, 0.0000028188, 0.0000028182, + 0.0000028040, 0.0000027916, 0.0000027928, 0.0000028118, 0.0000028397, + 0.0000028559, 0.0000028580, 0.0000028589, 0.0000028632, 0.0000028725, + 0.0000028866, 0.0000029029, 0.0000029179, 0.0000029325, 0.0000029485, + 0.0000029615, 0.0000029686, 0.0000029724, 0.0000029747, 0.0000029732, + 0.0000029643, 0.0000029488, 0.0000029330, 0.0000029222, 0.0000029172, + 0.0000029127, 0.0000029031, 0.0000028918, 0.0000028846, 0.0000028832, + 0.0000028832, 0.0000028856, 0.0000028907, 0.0000028952, 0.0000028966, + 0.0000028953, 0.0000028907, 0.0000028851, 0.0000028790, 0.0000028743, + 0.0000028717, 0.0000028707, 0.0000028711, 0.0000028726, 0.0000028735, + 0.0000028733, 0.0000028716, 0.0000028693, 0.0000028687, 0.0000028696, + 0.0000028726, 0.0000028769, 0.0000028785, 0.0000028760, 0.0000028697, + 0.0000028644, 0.0000028611, 0.0000028582, 0.0000028544, 0.0000028492, + 0.0000028429, 0.0000028368, 0.0000028316, 0.0000028271, 0.0000028232, + 0.0000028216, 0.0000028248, 0.0000028301, 0.0000028340, 0.0000028340, + 0.0000028336, 0.0000028341, 0.0000028361, 0.0000028368, 0.0000028359, + 0.0000028340, 0.0000028310, 0.0000028272, 0.0000028218, 0.0000028161, + 0.0000028122, 0.0000028094, 0.0000028090, 0.0000028110, 0.0000028161, + 0.0000028228, 0.0000028286, 0.0000028316, 0.0000028321, 0.0000028331, + 0.0000028341, 0.0000028316, 0.0000028254, 0.0000028214, 0.0000028213, + 0.0000028210, 0.0000028176, 0.0000028106, 0.0000028035, 0.0000027991, + 0.0000028010, 0.0000028030, 0.0000028004, 0.0000027972, 0.0000027937, + 0.0000027843, 0.0000027742, 0.0000027694, 0.0000027676, 0.0000027705, + 0.0000027782, 0.0000027828, 0.0000027816, 0.0000027782, 0.0000027759, + 0.0000027758, 0.0000027862, 0.0000028070, 0.0000028220, 0.0000028243, + 0.0000028196, 0.0000028172, 0.0000028198, 0.0000028222, 0.0000028235, + 0.0000028296, 0.0000028438, 0.0000028519, 0.0000028438, 0.0000028246, + 0.0000028126, 0.0000028104, 0.0000028098, 0.0000028094, 0.0000028068, + 0.0000028045, 0.0000028064, 0.0000028043, 0.0000027966, 0.0000027943, + 0.0000027952, 0.0000027968, 0.0000028011, 0.0000028096, 0.0000028201, + 0.0000028296, 0.0000028393, 0.0000028476, 0.0000028525, 0.0000028542, + 0.0000028537, 0.0000028521, 0.0000028512, 0.0000028525, 0.0000028556, + 0.0000028596, 0.0000028620, 0.0000028627, 0.0000028618, 0.0000028589, + 0.0000028588, 0.0000028690, 0.0000028849, 0.0000028896, 0.0000028725, + 0.0000028534, 0.0000028524, 0.0000028645, 0.0000028746, 0.0000028762, + 0.0000028726, 0.0000028764, 0.0000028882, 0.0000029011, 0.0000029094, + 0.0000029143, 0.0000029152, 0.0000029162, 0.0000029145, 0.0000029103, + 0.0000029047, 0.0000028983, 0.0000028918, 0.0000028852, 0.0000028796, + 0.0000028738, 0.0000028640, 0.0000028489, 0.0000028339, 0.0000028264, + 0.0000028257, 0.0000028282, 0.0000028332, 0.0000028382, 0.0000028419, + 0.0000028427, 0.0000028404, 0.0000028349, 0.0000028246, 0.0000028134, + 0.0000028047, 0.0000028015, 0.0000028028, 0.0000028053, 0.0000028079, + 0.0000028115, 0.0000028152, 0.0000028195, 0.0000028227, 0.0000028249, + 0.0000028247, 0.0000028216, 0.0000028134, 0.0000027994, 0.0000027815, + 0.0000027643, 0.0000027511, 0.0000027492, 0.0000027529, 0.0000027608, + 0.0000027680, 0.0000027713, 0.0000027702, 0.0000027659, 0.0000027631, + 0.0000027678, 0.0000027757, 0.0000027785, 0.0000027750, 0.0000027666, + 0.0000027562, 0.0000027506, 0.0000027523, 0.0000027586, 0.0000027654, + 0.0000027698, 0.0000027717, 0.0000027738, 0.0000027754, 0.0000027744, + 0.0000027714, 0.0000027745, 0.0000027828, 0.0000027915, 0.0000028012, + 0.0000028070, 0.0000028065, 0.0000028061, 0.0000028044, 0.0000027890, + 0.0000027669, 0.0000027535, 0.0000027486, 0.0000027461, 0.0000027402, + 0.0000027307, 0.0000027206, 0.0000027150, 0.0000027145, 0.0000027188, + 0.0000027295, 0.0000027487, 0.0000027592, 0.0000027546, 0.0000027472, + 0.0000027487, 0.0000027582, 0.0000027662, 0.0000027601, 0.0000027582, + 0.0000027737, 0.0000027862, 0.0000027915, 0.0000027956, 0.0000027962, + 0.0000028002, 0.0000028065, 0.0000028084, 0.0000028074, 0.0000028056, + 0.0000028061, 0.0000028056, 0.0000028017, 0.0000027964, 0.0000027905, + 0.0000027867, 0.0000027853, 0.0000027851, 0.0000027852, 0.0000027865, + 0.0000027900, 0.0000027941, 0.0000027960, 0.0000027969, 0.0000027953, + 0.0000027943, 0.0000027944, 0.0000027966, 0.0000027989, 0.0000027979, + 0.0000027950, 0.0000027897, 0.0000027854, 0.0000027833, 0.0000027837, + 0.0000027844, 0.0000027893, 0.0000027934, 0.0000027950, 0.0000027945, + 0.0000027983, 0.0000028049, 0.0000028105, 0.0000028137, 0.0000028125, + 0.0000028064, 0.0000028025, 0.0000028123, 0.0000028250, 0.0000028355, + 0.0000028331, 0.0000028284, 0.0000028265, 0.0000028285, 0.0000028356, + 0.0000028506, 0.0000028645, 0.0000028717, 0.0000028716, 0.0000028669, + 0.0000028621, 0.0000028582, 0.0000028574, 0.0000028600, 0.0000028623, + 0.0000028613, 0.0000028585, 0.0000028567, 0.0000028570, 0.0000028603, + 0.0000028619, 0.0000028610, 0.0000028567, 0.0000028448, 0.0000028289, + 0.0000028187, 0.0000028194, 0.0000028353, 0.0000028549, 0.0000028657, + 0.0000028695, 0.0000028730, 0.0000028794, 0.0000028812, 0.0000028782, + 0.0000028773, 0.0000028794, 0.0000028826, 0.0000028846, 0.0000028831, + 0.0000028798, 0.0000028739, 0.0000028661, 0.0000028597, 0.0000028549, + 0.0000028501, 0.0000028439, 0.0000028369, 0.0000028308, 0.0000028315, + 0.0000028410, 0.0000028531, 0.0000028635, 0.0000028698, 0.0000028722, + 0.0000028697, 0.0000028665, 0.0000028677, 0.0000028739, 0.0000028772, + 0.0000028769, 0.0000028772, 0.0000028805, 0.0000028798, 0.0000028783, + 0.0000028755, 0.0000028738, 0.0000028737, 0.0000028698, 0.0000028598, + 0.0000028469, 0.0000028380, 0.0000028337, 0.0000028324, 0.0000028307, + 0.0000028281, 0.0000028260, 0.0000028270, 0.0000028327, 0.0000028394, + 0.0000028435, 0.0000028424, 0.0000028358, 0.0000028310, 0.0000028305, + 0.0000028368, 0.0000028470, 0.0000028569, 0.0000028685, 0.0000028804, + 0.0000028893, 0.0000028942, 0.0000028946, 0.0000028898, 0.0000028819, + 0.0000028725, 0.0000028649, 0.0000028605, 0.0000028597, 0.0000028613, + 0.0000028639, 0.0000028657, 0.0000028673, 0.0000028664, 0.0000028654, + 0.0000028634, 0.0000028603, 0.0000028554, 0.0000028481, 0.0000028393, + 0.0000028307, 0.0000028252, 0.0000028231, 0.0000028251, 0.0000028255, + 0.0000028226, 0.0000028142, 0.0000028027, 0.0000027886, 0.0000027802, + 0.0000027837, 0.0000027945, 0.0000028053, 0.0000028153, 0.0000028230, + 0.0000028254, 0.0000028257, 0.0000028269, 0.0000028265, 0.0000028254, + 0.0000028235, 0.0000028250, 0.0000028331, 0.0000028434, 0.0000028516, + 0.0000028588, 0.0000028646, 0.0000028650, 0.0000028586, 0.0000028480, + 0.0000028414, 0.0000028431, 0.0000028466, 0.0000028489, 0.0000028494, + 0.0000028512, 0.0000028594, 0.0000028701, 0.0000028764, 0.0000028764, + 0.0000028707, 0.0000028543, 0.0000028394, 0.0000028383, 0.0000028439, + 0.0000028439, 0.0000028455, 0.0000028478, 0.0000028481, 0.0000028441, + 0.0000028374, 0.0000028324, 0.0000028293, 0.0000028269, 0.0000028245, + 0.0000028222, 0.0000028213, 0.0000028226, 0.0000028247, 0.0000028260, + 0.0000028281, 0.0000028318, 0.0000028343, 0.0000028349, 0.0000028336, + 0.0000028286, 0.0000028226, 0.0000028177, 0.0000028137, 0.0000028111, + 0.0000028077, 0.0000028011, 0.0000027915, 0.0000027817, 0.0000027735, + 0.0000027664, 0.0000027609, 0.0000027588, 0.0000027599, 0.0000027635, + 0.0000027664, 0.0000027676, 0.0000027692, 0.0000027732, 0.0000027777, + 0.0000027806, 0.0000027780, 0.0000027707, 0.0000027630, 0.0000027603, + 0.0000027651, 0.0000027722, 0.0000027811, 0.0000027920, 0.0000027977, + 0.0000027986, 0.0000027999, 0.0000028014, 0.0000028019, 0.0000028072, + 0.0000028152, 0.0000028204, 0.0000028199, 0.0000028163, 0.0000028133, + 0.0000028152, 0.0000028195, 0.0000028237, 0.0000028254, 0.0000028228, + 0.0000028163, 0.0000028111, 0.0000028065, 0.0000028015, 0.0000027950, + 0.0000027898, 0.0000027866, 0.0000027867, 0.0000027928, 0.0000028027, + 0.0000028125, 0.0000028157, 0.0000028134, 0.0000028148, 0.0000028211, + 0.0000028207, 0.0000028175, 0.0000028193, 0.0000028207, 0.0000028232, + 0.0000028295, 0.0000028369, 0.0000028405, 0.0000028386, 0.0000028318, + 0.0000028228, 0.0000028145, 0.0000028079, 0.0000028014, 0.0000027943, + 0.0000027878, 0.0000027850, 0.0000027834, 0.0000027818, 0.0000027790, + 0.0000027746, 0.0000027689, 0.0000027630, 0.0000027566, 0.0000027510, + 0.0000027487, 0.0000027504, 0.0000027597, 0.0000027750, 0.0000027906, + 0.0000027992, 0.0000027985, 0.0000027931, 0.0000027860, 0.0000027787, + 0.0000027733, 0.0000027711, 0.0000027714, 0.0000027719, 0.0000027724, + 0.0000027737, 0.0000027776, 0.0000027834, 0.0000027870, 0.0000027868, + 0.0000027849, 0.0000027847, 0.0000027889, 0.0000027969, 0.0000028072, + 0.0000028187, 0.0000028285, 0.0000028329, 0.0000028329, 0.0000028283, + 0.0000028122, 0.0000027923, 0.0000027840, 0.0000027889, 0.0000028053, + 0.0000028199, 0.0000028203, 0.0000028070, 0.0000027941, 0.0000027969, + 0.0000028190, 0.0000028466, 0.0000028600, 0.0000028614, 0.0000028624, + 0.0000028655, 0.0000028728, 0.0000028867, 0.0000029049, 0.0000029222, + 0.0000029373, 0.0000029514, 0.0000029623, 0.0000029685, 0.0000029721, + 0.0000029742, 0.0000029738, 0.0000029686, 0.0000029558, 0.0000029389, + 0.0000029249, 0.0000029177, 0.0000029139, 0.0000029065, 0.0000028949, + 0.0000028845, 0.0000028814, 0.0000028826, 0.0000028874, 0.0000028937, + 0.0000028986, 0.0000029001, 0.0000028972, 0.0000028895, 0.0000028836, + 0.0000028816, 0.0000028807, 0.0000028784, 0.0000028749, 0.0000028724, + 0.0000028728, 0.0000028756, 0.0000028793, 0.0000028819, 0.0000028806, + 0.0000028759, 0.0000028726, 0.0000028739, 0.0000028792, 0.0000028835, + 0.0000028831, 0.0000028773, 0.0000028698, 0.0000028652, 0.0000028640, + 0.0000028638, 0.0000028622, 0.0000028581, 0.0000028523, 0.0000028467, + 0.0000028423, 0.0000028390, 0.0000028355, 0.0000028335, 0.0000028340, + 0.0000028353, 0.0000028326, 0.0000028276, 0.0000028240, 0.0000028244, + 0.0000028268, 0.0000028283, 0.0000028304, 0.0000028298, 0.0000028276, + 0.0000028226, 0.0000028157, 0.0000028085, 0.0000028016, 0.0000027975, + 0.0000027973, 0.0000028010, 0.0000028080, 0.0000028170, 0.0000028249, + 0.0000028301, 0.0000028334, 0.0000028372, 0.0000028400, 0.0000028377, + 0.0000028305, 0.0000028262, 0.0000028266, 0.0000028271, 0.0000028233, + 0.0000028130, 0.0000028017, 0.0000027985, 0.0000028029, 0.0000028074, + 0.0000028048, 0.0000028005, 0.0000027925, 0.0000027789, 0.0000027687, + 0.0000027637, 0.0000027631, 0.0000027688, 0.0000027764, 0.0000027788, + 0.0000027762, 0.0000027725, 0.0000027711, 0.0000027733, 0.0000027895, + 0.0000028112, 0.0000028221, 0.0000028207, 0.0000028149, 0.0000028139, + 0.0000028177, 0.0000028204, 0.0000028214, 0.0000028266, 0.0000028420, + 0.0000028522, 0.0000028462, 0.0000028273, 0.0000028134, 0.0000028103, + 0.0000028106, 0.0000028122, 0.0000028123, 0.0000028115, 0.0000028129, + 0.0000028093, 0.0000028008, 0.0000027974, 0.0000027966, 0.0000027979, + 0.0000028041, 0.0000028154, 0.0000028255, 0.0000028331, 0.0000028414, + 0.0000028494, 0.0000028537, 0.0000028543, 0.0000028530, 0.0000028518, + 0.0000028518, 0.0000028529, 0.0000028547, 0.0000028579, 0.0000028613, + 0.0000028636, 0.0000028648, 0.0000028625, 0.0000028606, 0.0000028658, + 0.0000028809, 0.0000028924, 0.0000028879, 0.0000028656, 0.0000028517, + 0.0000028566, 0.0000028698, 0.0000028771, 0.0000028762, 0.0000028745, + 0.0000028804, 0.0000028897, 0.0000028998, 0.0000029078, 0.0000029139, + 0.0000029172, 0.0000029186, 0.0000029138, 0.0000029044, 0.0000028943, + 0.0000028850, 0.0000028798, 0.0000028768, 0.0000028712, 0.0000028601, + 0.0000028450, 0.0000028308, 0.0000028226, 0.0000028214, 0.0000028226, + 0.0000028258, 0.0000028301, 0.0000028347, 0.0000028382, 0.0000028392, + 0.0000028370, 0.0000028298, 0.0000028214, 0.0000028137, 0.0000028104, + 0.0000028111, 0.0000028143, 0.0000028174, 0.0000028211, 0.0000028232, + 0.0000028259, 0.0000028265, 0.0000028260, 0.0000028235, 0.0000028186, + 0.0000028092, 0.0000027970, 0.0000027821, 0.0000027672, 0.0000027543, + 0.0000027493, 0.0000027517, 0.0000027575, 0.0000027658, 0.0000027728, + 0.0000027757, 0.0000027739, 0.0000027704, 0.0000027690, 0.0000027732, + 0.0000027783, 0.0000027803, 0.0000027767, 0.0000027682, 0.0000027569, + 0.0000027494, 0.0000027469, 0.0000027495, 0.0000027542, 0.0000027571, + 0.0000027597, 0.0000027656, 0.0000027748, 0.0000027790, 0.0000027772, + 0.0000027777, 0.0000027845, 0.0000027946, 0.0000028057, 0.0000028120, + 0.0000028113, 0.0000028098, 0.0000028042, 0.0000027854, 0.0000027663, + 0.0000027556, 0.0000027513, 0.0000027484, 0.0000027424, 0.0000027332, + 0.0000027253, 0.0000027231, 0.0000027245, 0.0000027297, 0.0000027426, + 0.0000027585, 0.0000027603, 0.0000027519, 0.0000027494, 0.0000027540, + 0.0000027618, 0.0000027631, 0.0000027544, 0.0000027626, 0.0000027815, + 0.0000027911, 0.0000027961, 0.0000027986, 0.0000027998, 0.0000028052, + 0.0000028108, 0.0000028122, 0.0000028097, 0.0000028073, 0.0000028046, + 0.0000027962, 0.0000027876, 0.0000027840, 0.0000027828, 0.0000027841, + 0.0000027852, 0.0000027861, 0.0000027900, 0.0000027958, 0.0000028018, + 0.0000028049, 0.0000028044, 0.0000028045, 0.0000028030, 0.0000028001, + 0.0000027981, 0.0000027971, 0.0000027950, 0.0000027919, 0.0000027881, + 0.0000027839, 0.0000027822, 0.0000027813, 0.0000027817, 0.0000027833, + 0.0000027878, 0.0000027907, 0.0000027925, 0.0000027922, 0.0000027955, + 0.0000028025, 0.0000028097, 0.0000028146, 0.0000028138, 0.0000028085, + 0.0000028067, 0.0000028168, 0.0000028303, 0.0000028398, 0.0000028381, + 0.0000028359, 0.0000028370, 0.0000028383, 0.0000028436, 0.0000028596, + 0.0000028753, 0.0000028831, 0.0000028815, 0.0000028734, 0.0000028644, + 0.0000028589, 0.0000028584, 0.0000028630, 0.0000028692, 0.0000028716, + 0.0000028691, 0.0000028640, 0.0000028609, 0.0000028605, 0.0000028636, + 0.0000028642, 0.0000028615, 0.0000028501, 0.0000028336, 0.0000028222, + 0.0000028212, 0.0000028336, 0.0000028512, 0.0000028622, 0.0000028664, + 0.0000028703, 0.0000028770, 0.0000028806, 0.0000028783, 0.0000028766, + 0.0000028773, 0.0000028801, 0.0000028837, 0.0000028841, 0.0000028814, + 0.0000028768, 0.0000028703, 0.0000028644, 0.0000028601, 0.0000028555, + 0.0000028480, 0.0000028398, 0.0000028321, 0.0000028322, 0.0000028423, + 0.0000028543, 0.0000028642, 0.0000028722, 0.0000028760, 0.0000028748, + 0.0000028678, 0.0000028671, 0.0000028720, 0.0000028766, 0.0000028778, + 0.0000028762, 0.0000028761, 0.0000028759, 0.0000028744, 0.0000028729, + 0.0000028720, 0.0000028738, 0.0000028746, 0.0000028732, 0.0000028672, + 0.0000028592, 0.0000028520, 0.0000028479, 0.0000028464, 0.0000028443, + 0.0000028407, 0.0000028372, 0.0000028361, 0.0000028379, 0.0000028408, + 0.0000028430, 0.0000028417, 0.0000028366, 0.0000028317, 0.0000028298, + 0.0000028340, 0.0000028418, 0.0000028504, 0.0000028608, 0.0000028715, + 0.0000028804, 0.0000028856, 0.0000028877, 0.0000028851, 0.0000028781, + 0.0000028682, 0.0000028602, 0.0000028547, 0.0000028534, 0.0000028550, + 0.0000028589, 0.0000028617, 0.0000028639, 0.0000028647, 0.0000028650, + 0.0000028633, 0.0000028603, 0.0000028561, 0.0000028505, 0.0000028441, + 0.0000028391, 0.0000028369, 0.0000028313, 0.0000028244, 0.0000028200, + 0.0000028159, 0.0000028109, 0.0000028073, 0.0000028020, 0.0000027911, + 0.0000027831, 0.0000027834, 0.0000027904, 0.0000028004, 0.0000028100, + 0.0000028160, 0.0000028206, 0.0000028251, 0.0000028267, 0.0000028262, + 0.0000028232, 0.0000028181, 0.0000028189, 0.0000028294, 0.0000028437, + 0.0000028544, 0.0000028608, 0.0000028613, 0.0000028564, 0.0000028469, + 0.0000028400, 0.0000028414, 0.0000028458, 0.0000028487, 0.0000028490, + 0.0000028509, 0.0000028589, 0.0000028686, 0.0000028739, 0.0000028737, + 0.0000028650, 0.0000028467, 0.0000028361, 0.0000028373, 0.0000028418, + 0.0000028388, 0.0000028414, 0.0000028448, 0.0000028452, 0.0000028414, + 0.0000028358, 0.0000028316, 0.0000028276, 0.0000028231, 0.0000028183, + 0.0000028147, 0.0000028143, 0.0000028151, 0.0000028153, 0.0000028150, + 0.0000028161, 0.0000028196, 0.0000028218, 0.0000028220, 0.0000028193, + 0.0000028132, 0.0000028069, 0.0000028021, 0.0000027995, 0.0000027980, + 0.0000027953, 0.0000027899, 0.0000027831, 0.0000027763, 0.0000027707, + 0.0000027651, 0.0000027610, 0.0000027596, 0.0000027607, 0.0000027628, + 0.0000027652, 0.0000027659, 0.0000027659, 0.0000027666, 0.0000027675, + 0.0000027691, 0.0000027674, 0.0000027629, 0.0000027596, 0.0000027587, + 0.0000027619, 0.0000027660, 0.0000027734, 0.0000027878, 0.0000027989, + 0.0000028022, 0.0000028007, 0.0000027985, 0.0000027975, 0.0000028006, + 0.0000028099, 0.0000028186, 0.0000028219, 0.0000028211, 0.0000028188, + 0.0000028173, 0.0000028184, 0.0000028234, 0.0000028291, 0.0000028320, + 0.0000028295, 0.0000028254, 0.0000028205, 0.0000028150, 0.0000028082, + 0.0000028018, 0.0000027939, 0.0000027860, 0.0000027859, 0.0000027910, + 0.0000028023, 0.0000028128, 0.0000028149, 0.0000028141, 0.0000028163, + 0.0000028239, 0.0000028257, 0.0000028228, 0.0000028238, 0.0000028266, + 0.0000028276, 0.0000028287, 0.0000028305, 0.0000028305, 0.0000028272, + 0.0000028206, 0.0000028132, 0.0000028076, 0.0000028035, 0.0000027979, + 0.0000027921, 0.0000027900, 0.0000027897, 0.0000027886, 0.0000027851, + 0.0000027797, 0.0000027731, 0.0000027663, 0.0000027588, 0.0000027508, + 0.0000027441, 0.0000027401, 0.0000027412, 0.0000027519, 0.0000027711, + 0.0000027908, 0.0000028026, 0.0000028046, 0.0000027988, 0.0000027884, + 0.0000027788, 0.0000027743, 0.0000027739, 0.0000027744, 0.0000027741, + 0.0000027743, 0.0000027763, 0.0000027813, 0.0000027892, 0.0000027962, + 0.0000027980, 0.0000027956, 0.0000027942, 0.0000027967, 0.0000028020, + 0.0000028097, 0.0000028200, 0.0000028301, 0.0000028340, 0.0000028335, + 0.0000028276, 0.0000028114, 0.0000027917, 0.0000027851, 0.0000027905, + 0.0000028075, 0.0000028221, 0.0000028225, 0.0000028093, 0.0000027962, + 0.0000028010, 0.0000028260, 0.0000028528, 0.0000028634, 0.0000028639, + 0.0000028645, 0.0000028661, 0.0000028718, 0.0000028860, 0.0000029063, + 0.0000029258, 0.0000029417, 0.0000029541, 0.0000029620, 0.0000029658, + 0.0000029686, 0.0000029716, 0.0000029724, 0.0000029692, 0.0000029608, + 0.0000029477, 0.0000029335, 0.0000029231, 0.0000029165, 0.0000029097, + 0.0000029003, 0.0000028895, 0.0000028827, 0.0000028816, 0.0000028860, + 0.0000028944, 0.0000029024, 0.0000029061, 0.0000029037, 0.0000028931, + 0.0000028805, 0.0000028753, 0.0000028777, 0.0000028814, 0.0000028817, + 0.0000028789, 0.0000028762, 0.0000028761, 0.0000028787, 0.0000028825, + 0.0000028849, 0.0000028837, 0.0000028802, 0.0000028789, 0.0000028820, + 0.0000028865, 0.0000028881, 0.0000028849, 0.0000028774, 0.0000028697, + 0.0000028655, 0.0000028650, 0.0000028651, 0.0000028636, 0.0000028597, + 0.0000028543, 0.0000028493, 0.0000028444, 0.0000028402, 0.0000028350, + 0.0000028314, 0.0000028288, 0.0000028248, 0.0000028195, 0.0000028164, + 0.0000028188, 0.0000028244, 0.0000028285, 0.0000028320, 0.0000028335, + 0.0000028327, 0.0000028288, 0.0000028222, 0.0000028140, 0.0000028055, + 0.0000027977, 0.0000027940, 0.0000027945, 0.0000027991, 0.0000028069, + 0.0000028161, 0.0000028242, 0.0000028313, 0.0000028381, 0.0000028439, + 0.0000028457, 0.0000028410, 0.0000028322, 0.0000028281, 0.0000028294, + 0.0000028310, 0.0000028269, 0.0000028138, 0.0000028008, 0.0000027990, + 0.0000028061, 0.0000028107, 0.0000028079, 0.0000028011, 0.0000027873, + 0.0000027720, 0.0000027626, 0.0000027587, 0.0000027606, 0.0000027681, + 0.0000027746, 0.0000027749, 0.0000027704, 0.0000027673, 0.0000027670, + 0.0000027732, 0.0000027932, 0.0000028138, 0.0000028205, 0.0000028166, + 0.0000028098, 0.0000028097, 0.0000028141, 0.0000028172, 0.0000028184, + 0.0000028231, 0.0000028382, 0.0000028507, 0.0000028479, 0.0000028301, + 0.0000028140, 0.0000028089, 0.0000028098, 0.0000028133, 0.0000028156, + 0.0000028166, 0.0000028185, 0.0000028141, 0.0000028047, 0.0000028004, + 0.0000027987, 0.0000027994, 0.0000028073, 0.0000028207, 0.0000028310, + 0.0000028369, 0.0000028432, 0.0000028499, 0.0000028541, 0.0000028551, + 0.0000028537, 0.0000028535, 0.0000028534, 0.0000028510, 0.0000028472, + 0.0000028481, 0.0000028532, 0.0000028596, 0.0000028643, 0.0000028644, + 0.0000028626, 0.0000028656, 0.0000028773, 0.0000028915, 0.0000028964, + 0.0000028831, 0.0000028613, 0.0000028542, 0.0000028620, 0.0000028729, + 0.0000028773, 0.0000028768, 0.0000028755, 0.0000028791, 0.0000028868, + 0.0000028941, 0.0000029031, 0.0000029124, 0.0000029199, 0.0000029186, + 0.0000029106, 0.0000028985, 0.0000028875, 0.0000028804, 0.0000028775, + 0.0000028722, 0.0000028601, 0.0000028454, 0.0000028329, 0.0000028258, + 0.0000028228, 0.0000028221, 0.0000028237, 0.0000028263, 0.0000028302, + 0.0000028347, 0.0000028384, 0.0000028391, 0.0000028353, 0.0000028294, + 0.0000028238, 0.0000028204, 0.0000028199, 0.0000028225, 0.0000028267, + 0.0000028327, 0.0000028380, 0.0000028433, 0.0000028445, 0.0000028423, + 0.0000028369, 0.0000028289, 0.0000028181, 0.0000028059, 0.0000027937, + 0.0000027821, 0.0000027721, 0.0000027652, 0.0000027654, 0.0000027682, + 0.0000027725, 0.0000027781, 0.0000027815, 0.0000027810, 0.0000027800, + 0.0000027781, 0.0000027784, 0.0000027813, 0.0000027865, 0.0000027880, + 0.0000027839, 0.0000027755, 0.0000027636, 0.0000027532, 0.0000027474, + 0.0000027476, 0.0000027480, 0.0000027491, 0.0000027507, 0.0000027558, + 0.0000027663, 0.0000027800, 0.0000027846, 0.0000027824, 0.0000027889, + 0.0000027991, 0.0000028109, 0.0000028173, 0.0000028156, 0.0000028120, + 0.0000028029, 0.0000027834, 0.0000027679, 0.0000027590, 0.0000027550, + 0.0000027515, 0.0000027450, 0.0000027375, 0.0000027332, 0.0000027322, + 0.0000027335, 0.0000027391, 0.0000027533, 0.0000027633, 0.0000027586, + 0.0000027512, 0.0000027518, 0.0000027573, 0.0000027625, 0.0000027589, + 0.0000027542, 0.0000027690, 0.0000027872, 0.0000027949, 0.0000027984, + 0.0000028003, 0.0000028036, 0.0000028090, 0.0000028134, 0.0000028145, + 0.0000028101, 0.0000028045, 0.0000027946, 0.0000027829, 0.0000027790, + 0.0000027801, 0.0000027823, 0.0000027840, 0.0000027856, 0.0000027896, + 0.0000027973, 0.0000028049, 0.0000028087, 0.0000028110, 0.0000028102, + 0.0000028090, 0.0000028048, 0.0000027971, 0.0000027927, 0.0000027907, + 0.0000027905, 0.0000027887, 0.0000027862, 0.0000027836, 0.0000027826, + 0.0000027817, 0.0000027827, 0.0000027869, 0.0000027901, 0.0000027916, + 0.0000027917, 0.0000027907, 0.0000027922, 0.0000027982, 0.0000028050, + 0.0000028096, 0.0000028098, 0.0000028084, 0.0000028101, 0.0000028205, + 0.0000028349, 0.0000028421, 0.0000028416, 0.0000028423, 0.0000028450, + 0.0000028444, 0.0000028505, 0.0000028682, 0.0000028841, 0.0000028896, + 0.0000028853, 0.0000028738, 0.0000028642, 0.0000028607, 0.0000028628, + 0.0000028685, 0.0000028727, 0.0000028741, 0.0000028705, 0.0000028638, + 0.0000028583, 0.0000028570, 0.0000028607, 0.0000028640, 0.0000028638, + 0.0000028536, 0.0000028376, 0.0000028255, 0.0000028237, 0.0000028336, + 0.0000028487, 0.0000028589, 0.0000028630, 0.0000028667, 0.0000028743, + 0.0000028797, 0.0000028784, 0.0000028755, 0.0000028752, 0.0000028775, + 0.0000028825, 0.0000028851, 0.0000028840, 0.0000028811, 0.0000028764, + 0.0000028709, 0.0000028667, 0.0000028615, 0.0000028532, 0.0000028454, + 0.0000028394, 0.0000028390, 0.0000028486, 0.0000028592, 0.0000028667, + 0.0000028723, 0.0000028757, 0.0000028760, 0.0000028687, 0.0000028648, + 0.0000028673, 0.0000028740, 0.0000028761, 0.0000028760, 0.0000028720, + 0.0000028711, 0.0000028691, 0.0000028673, 0.0000028657, 0.0000028651, + 0.0000028666, 0.0000028675, 0.0000028655, 0.0000028603, 0.0000028531, + 0.0000028462, 0.0000028427, 0.0000028415, 0.0000028398, 0.0000028374, + 0.0000028336, 0.0000028324, 0.0000028346, 0.0000028388, 0.0000028425, + 0.0000028427, 0.0000028398, 0.0000028337, 0.0000028271, 0.0000028256, + 0.0000028278, 0.0000028336, 0.0000028421, 0.0000028513, 0.0000028593, + 0.0000028650, 0.0000028687, 0.0000028681, 0.0000028637, 0.0000028554, + 0.0000028479, 0.0000028431, 0.0000028425, 0.0000028447, 0.0000028499, + 0.0000028543, 0.0000028581, 0.0000028615, 0.0000028643, 0.0000028651, + 0.0000028644, 0.0000028618, 0.0000028560, 0.0000028470, 0.0000028394, + 0.0000028367, 0.0000028349, 0.0000028300, 0.0000028226, 0.0000028148, + 0.0000028072, 0.0000028035, 0.0000028025, 0.0000028002, 0.0000027937, + 0.0000027857, 0.0000027840, 0.0000027869, 0.0000027942, 0.0000028022, + 0.0000028108, 0.0000028191, 0.0000028246, 0.0000028254, 0.0000028230, + 0.0000028172, 0.0000028123, 0.0000028177, 0.0000028339, 0.0000028493, + 0.0000028585, 0.0000028594, 0.0000028549, 0.0000028458, 0.0000028379, + 0.0000028395, 0.0000028448, 0.0000028486, 0.0000028493, 0.0000028514, + 0.0000028586, 0.0000028664, 0.0000028707, 0.0000028704, 0.0000028581, + 0.0000028399, 0.0000028329, 0.0000028347, 0.0000028376, 0.0000028344, + 0.0000028394, 0.0000028439, 0.0000028438, 0.0000028393, 0.0000028333, + 0.0000028276, 0.0000028214, 0.0000028157, 0.0000028108, 0.0000028093, + 0.0000028097, 0.0000028102, 0.0000028089, 0.0000028073, 0.0000028081, + 0.0000028113, 0.0000028126, 0.0000028112, 0.0000028066, 0.0000028015, + 0.0000027973, 0.0000027955, 0.0000027965, 0.0000027968, 0.0000027949, + 0.0000027892, 0.0000027814, 0.0000027745, 0.0000027694, 0.0000027650, + 0.0000027628, 0.0000027625, 0.0000027637, 0.0000027643, 0.0000027642, + 0.0000027632, 0.0000027618, 0.0000027605, 0.0000027583, 0.0000027565, + 0.0000027555, 0.0000027542, 0.0000027542, 0.0000027554, 0.0000027577, + 0.0000027608, 0.0000027677, 0.0000027831, 0.0000027990, 0.0000028060, + 0.0000028041, 0.0000027984, 0.0000027959, 0.0000027977, 0.0000028062, + 0.0000028167, 0.0000028243, 0.0000028286, 0.0000028291, 0.0000028284, + 0.0000028279, 0.0000028305, 0.0000028359, 0.0000028414, 0.0000028424, + 0.0000028396, 0.0000028342, 0.0000028276, 0.0000028216, 0.0000028171, + 0.0000028088, 0.0000027966, 0.0000027898, 0.0000027893, 0.0000027939, + 0.0000028037, 0.0000028095, 0.0000028122, 0.0000028145, 0.0000028163, + 0.0000028235, 0.0000028290, 0.0000028275, 0.0000028267, 0.0000028288, + 0.0000028300, 0.0000028294, 0.0000028267, 0.0000028223, 0.0000028163, + 0.0000028103, 0.0000028057, 0.0000028033, 0.0000028002, 0.0000027969, + 0.0000027953, 0.0000027944, 0.0000027932, 0.0000027899, 0.0000027848, + 0.0000027800, 0.0000027758, 0.0000027709, 0.0000027645, 0.0000027572, + 0.0000027501, 0.0000027450, 0.0000027448, 0.0000027535, 0.0000027694, + 0.0000027858, 0.0000027987, 0.0000028043, 0.0000028017, 0.0000027927, + 0.0000027815, 0.0000027753, 0.0000027750, 0.0000027755, 0.0000027750, + 0.0000027752, 0.0000027774, 0.0000027830, 0.0000027934, 0.0000028039, + 0.0000028074, 0.0000028048, 0.0000028020, 0.0000028027, 0.0000028064, + 0.0000028125, 0.0000028220, 0.0000028323, 0.0000028359, 0.0000028348, + 0.0000028278, 0.0000028099, 0.0000027902, 0.0000027854, 0.0000027923, + 0.0000028105, 0.0000028248, 0.0000028239, 0.0000028102, 0.0000027986, + 0.0000028057, 0.0000028329, 0.0000028582, 0.0000028661, 0.0000028661, + 0.0000028663, 0.0000028668, 0.0000028705, 0.0000028848, 0.0000029066, + 0.0000029281, 0.0000029450, 0.0000029562, 0.0000029608, 0.0000029612, + 0.0000029620, 0.0000029652, 0.0000029676, 0.0000029664, 0.0000029614, + 0.0000029532, 0.0000029430, 0.0000029328, 0.0000029244, 0.0000029168, + 0.0000029077, 0.0000028990, 0.0000028908, 0.0000028858, 0.0000028861, + 0.0000028924, 0.0000029019, 0.0000029091, 0.0000029098, 0.0000029015, + 0.0000028867, 0.0000028739, 0.0000028693, 0.0000028716, 0.0000028775, + 0.0000028825, 0.0000028846, 0.0000028830, 0.0000028814, 0.0000028807, + 0.0000028805, 0.0000028805, 0.0000028809, 0.0000028831, 0.0000028868, + 0.0000028904, 0.0000028915, 0.0000028893, 0.0000028837, 0.0000028759, + 0.0000028690, 0.0000028659, 0.0000028651, 0.0000028635, 0.0000028599, + 0.0000028549, 0.0000028496, 0.0000028444, 0.0000028388, 0.0000028323, + 0.0000028253, 0.0000028213, 0.0000028168, 0.0000028127, 0.0000028116, + 0.0000028161, 0.0000028248, 0.0000028311, 0.0000028346, 0.0000028361, + 0.0000028353, 0.0000028326, 0.0000028278, 0.0000028226, 0.0000028162, + 0.0000028079, 0.0000027992, 0.0000027951, 0.0000027971, 0.0000028031, + 0.0000028109, 0.0000028186, 0.0000028252, 0.0000028348, 0.0000028448, + 0.0000028503, 0.0000028487, 0.0000028413, 0.0000028330, 0.0000028306, + 0.0000028328, 0.0000028338, 0.0000028276, 0.0000028123, 0.0000028004, + 0.0000028010, 0.0000028096, 0.0000028133, 0.0000028097, 0.0000027975, + 0.0000027797, 0.0000027660, 0.0000027586, 0.0000027565, 0.0000027598, + 0.0000027681, 0.0000027733, 0.0000027714, 0.0000027660, 0.0000027643, + 0.0000027654, 0.0000027751, 0.0000027959, 0.0000028137, 0.0000028173, + 0.0000028117, 0.0000028047, 0.0000028046, 0.0000028091, 0.0000028133, + 0.0000028159, 0.0000028197, 0.0000028322, 0.0000028460, 0.0000028466, + 0.0000028326, 0.0000028147, 0.0000028065, 0.0000028074, 0.0000028128, + 0.0000028164, 0.0000028185, 0.0000028218, 0.0000028179, 0.0000028074, + 0.0000028022, 0.0000028003, 0.0000028007, 0.0000028096, 0.0000028239, + 0.0000028351, 0.0000028405, 0.0000028442, 0.0000028489, 0.0000028534, + 0.0000028550, 0.0000028551, 0.0000028557, 0.0000028530, 0.0000028430, + 0.0000028326, 0.0000028319, 0.0000028394, 0.0000028511, 0.0000028607, + 0.0000028639, 0.0000028636, 0.0000028662, 0.0000028754, 0.0000028884, + 0.0000028976, 0.0000028953, 0.0000028784, 0.0000028618, 0.0000028593, + 0.0000028656, 0.0000028733, 0.0000028770, 0.0000028745, 0.0000028742, + 0.0000028761, 0.0000028804, 0.0000028852, 0.0000028952, 0.0000029081, + 0.0000029156, 0.0000029141, 0.0000029072, 0.0000028976, 0.0000028880, + 0.0000028824, 0.0000028778, 0.0000028676, 0.0000028522, 0.0000028395, + 0.0000028329, 0.0000028285, 0.0000028254, 0.0000028248, 0.0000028270, + 0.0000028307, 0.0000028356, 0.0000028419, 0.0000028444, 0.0000028434, + 0.0000028394, 0.0000028350, 0.0000028301, 0.0000028271, 0.0000028269, + 0.0000028288, 0.0000028344, 0.0000028426, 0.0000028521, 0.0000028599, + 0.0000028625, 0.0000028596, 0.0000028521, 0.0000028409, 0.0000028283, + 0.0000028170, 0.0000028070, 0.0000027981, 0.0000027898, 0.0000027855, + 0.0000027853, 0.0000027849, 0.0000027849, 0.0000027856, 0.0000027847, + 0.0000027831, 0.0000027820, 0.0000027831, 0.0000027846, 0.0000027888, + 0.0000027947, 0.0000027963, 0.0000027926, 0.0000027843, 0.0000027735, + 0.0000027632, 0.0000027561, 0.0000027516, 0.0000027491, 0.0000027485, + 0.0000027478, 0.0000027496, 0.0000027586, 0.0000027802, 0.0000027926, + 0.0000027899, 0.0000027939, 0.0000028045, 0.0000028167, 0.0000028226, + 0.0000028192, 0.0000028133, 0.0000028021, 0.0000027834, 0.0000027712, + 0.0000027635, 0.0000027595, 0.0000027550, 0.0000027484, 0.0000027431, + 0.0000027405, 0.0000027395, 0.0000027397, 0.0000027472, 0.0000027612, + 0.0000027653, 0.0000027574, 0.0000027519, 0.0000027535, 0.0000027586, + 0.0000027619, 0.0000027558, 0.0000027549, 0.0000027744, 0.0000027907, + 0.0000027964, 0.0000027987, 0.0000028020, 0.0000028063, 0.0000028104, + 0.0000028140, 0.0000028139, 0.0000028078, 0.0000027962, 0.0000027831, + 0.0000027769, 0.0000027789, 0.0000027823, 0.0000027840, 0.0000027867, + 0.0000027909, 0.0000027983, 0.0000028049, 0.0000028087, 0.0000028094, + 0.0000028116, 0.0000028114, 0.0000028090, 0.0000028014, 0.0000027891, + 0.0000027835, 0.0000027846, 0.0000027863, 0.0000027863, 0.0000027857, + 0.0000027840, 0.0000027825, 0.0000027830, 0.0000027869, 0.0000027930, + 0.0000027959, 0.0000027957, 0.0000027933, 0.0000027901, 0.0000027896, + 0.0000027917, 0.0000027955, 0.0000027998, 0.0000028026, 0.0000028060, + 0.0000028112, 0.0000028228, 0.0000028379, 0.0000028443, 0.0000028460, + 0.0000028497, 0.0000028497, 0.0000028488, 0.0000028577, 0.0000028759, + 0.0000028898, 0.0000028927, 0.0000028846, 0.0000028730, 0.0000028661, + 0.0000028643, 0.0000028665, 0.0000028712, 0.0000028720, 0.0000028709, + 0.0000028664, 0.0000028588, 0.0000028530, 0.0000028531, 0.0000028567, + 0.0000028616, 0.0000028629, 0.0000028554, 0.0000028404, 0.0000028289, + 0.0000028274, 0.0000028348, 0.0000028470, 0.0000028560, 0.0000028597, + 0.0000028637, 0.0000028720, 0.0000028779, 0.0000028774, 0.0000028738, + 0.0000028732, 0.0000028754, 0.0000028814, 0.0000028857, 0.0000028862, + 0.0000028850, 0.0000028822, 0.0000028781, 0.0000028733, 0.0000028671, + 0.0000028593, 0.0000028540, 0.0000028519, 0.0000028498, 0.0000028555, + 0.0000028643, 0.0000028704, 0.0000028721, 0.0000028730, 0.0000028729, + 0.0000028676, 0.0000028620, 0.0000028641, 0.0000028688, 0.0000028733, + 0.0000028739, 0.0000028707, 0.0000028673, 0.0000028639, 0.0000028615, + 0.0000028593, 0.0000028586, 0.0000028593, 0.0000028613, 0.0000028619, + 0.0000028594, 0.0000028537, 0.0000028450, 0.0000028392, 0.0000028366, + 0.0000028354, 0.0000028348, 0.0000028329, 0.0000028296, 0.0000028292, + 0.0000028323, 0.0000028382, 0.0000028426, 0.0000028431, 0.0000028386, + 0.0000028285, 0.0000028164, 0.0000028090, 0.0000028082, 0.0000028134, + 0.0000028225, 0.0000028322, 0.0000028406, 0.0000028479, 0.0000028532, + 0.0000028545, 0.0000028518, 0.0000028451, 0.0000028386, 0.0000028347, + 0.0000028348, 0.0000028377, 0.0000028438, 0.0000028496, 0.0000028547, + 0.0000028589, 0.0000028615, 0.0000028625, 0.0000028625, 0.0000028622, + 0.0000028599, 0.0000028542, 0.0000028467, 0.0000028407, 0.0000028348, + 0.0000028290, 0.0000028236, 0.0000028166, 0.0000028090, 0.0000028033, + 0.0000028005, 0.0000027996, 0.0000027980, 0.0000027938, 0.0000027884, + 0.0000027847, 0.0000027850, 0.0000027890, 0.0000027975, 0.0000028092, + 0.0000028187, 0.0000028209, 0.0000028192, 0.0000028153, 0.0000028102, + 0.0000028112, 0.0000028241, 0.0000028421, 0.0000028557, 0.0000028583, + 0.0000028542, 0.0000028452, 0.0000028361, 0.0000028376, 0.0000028432, + 0.0000028487, 0.0000028504, 0.0000028523, 0.0000028583, 0.0000028639, + 0.0000028675, 0.0000028661, 0.0000028508, 0.0000028340, 0.0000028292, + 0.0000028307, 0.0000028325, 0.0000028318, 0.0000028392, 0.0000028432, + 0.0000028411, 0.0000028344, 0.0000028275, 0.0000028213, 0.0000028156, + 0.0000028122, 0.0000028104, 0.0000028110, 0.0000028113, 0.0000028104, + 0.0000028080, 0.0000028060, 0.0000028076, 0.0000028101, 0.0000028104, + 0.0000028081, 0.0000028039, 0.0000028007, 0.0000027989, 0.0000027990, + 0.0000027996, 0.0000027990, 0.0000027948, 0.0000027880, 0.0000027797, + 0.0000027723, 0.0000027671, 0.0000027638, 0.0000027628, 0.0000027640, + 0.0000027665, 0.0000027685, 0.0000027665, 0.0000027625, 0.0000027580, + 0.0000027549, 0.0000027515, 0.0000027487, 0.0000027476, 0.0000027473, + 0.0000027479, 0.0000027502, 0.0000027530, 0.0000027565, 0.0000027642, + 0.0000027790, 0.0000027983, 0.0000028098, 0.0000028088, 0.0000028007, + 0.0000027971, 0.0000027982, 0.0000028053, 0.0000028166, 0.0000028270, + 0.0000028363, 0.0000028405, 0.0000028423, 0.0000028421, 0.0000028417, + 0.0000028437, 0.0000028484, 0.0000028521, 0.0000028513, 0.0000028457, + 0.0000028370, 0.0000028301, 0.0000028292, 0.0000028250, 0.0000028116, + 0.0000028003, 0.0000027970, 0.0000027966, 0.0000027994, 0.0000028014, + 0.0000028035, 0.0000028087, 0.0000028129, 0.0000028149, 0.0000028214, + 0.0000028297, 0.0000028319, 0.0000028311, 0.0000028306, 0.0000028305, + 0.0000028292, 0.0000028253, 0.0000028196, 0.0000028136, 0.0000028086, + 0.0000028060, 0.0000028043, 0.0000028035, 0.0000028035, 0.0000028049, + 0.0000028057, 0.0000028045, 0.0000028007, 0.0000027955, 0.0000027909, + 0.0000027870, 0.0000027815, 0.0000027747, 0.0000027670, 0.0000027590, + 0.0000027544, 0.0000027557, 0.0000027637, 0.0000027746, 0.0000027849, + 0.0000027929, 0.0000027984, 0.0000027997, 0.0000027959, 0.0000027865, + 0.0000027778, 0.0000027750, 0.0000027750, 0.0000027762, 0.0000027788, + 0.0000027823, 0.0000027883, 0.0000027986, 0.0000028095, 0.0000028133, + 0.0000028109, 0.0000028067, 0.0000028070, 0.0000028107, 0.0000028157, + 0.0000028246, 0.0000028354, 0.0000028388, 0.0000028363, 0.0000028275, + 0.0000028075, 0.0000027881, 0.0000027844, 0.0000027945, 0.0000028141, + 0.0000028278, 0.0000028245, 0.0000028102, 0.0000028023, 0.0000028118, + 0.0000028403, 0.0000028631, 0.0000028681, 0.0000028682, 0.0000028681, + 0.0000028676, 0.0000028703, 0.0000028837, 0.0000029056, 0.0000029281, + 0.0000029458, 0.0000029565, 0.0000029591, 0.0000029567, 0.0000029550, + 0.0000029558, 0.0000029584, 0.0000029594, 0.0000029579, 0.0000029534, + 0.0000029472, 0.0000029405, 0.0000029348, 0.0000029284, 0.0000029205, + 0.0000029126, 0.0000029051, 0.0000028982, 0.0000028935, 0.0000028941, + 0.0000028999, 0.0000029074, 0.0000029103, 0.0000029069, 0.0000028956, + 0.0000028815, 0.0000028704, 0.0000028654, 0.0000028661, 0.0000028728, + 0.0000028828, 0.0000028903, 0.0000028912, 0.0000028870, 0.0000028808, + 0.0000028751, 0.0000028729, 0.0000028757, 0.0000028829, 0.0000028899, + 0.0000028920, 0.0000028915, 0.0000028876, 0.0000028817, 0.0000028753, + 0.0000028708, 0.0000028683, 0.0000028652, 0.0000028605, 0.0000028555, + 0.0000028502, 0.0000028448, 0.0000028393, 0.0000028325, 0.0000028247, + 0.0000028190, 0.0000028159, 0.0000028117, 0.0000028098, 0.0000028131, + 0.0000028224, 0.0000028303, 0.0000028336, 0.0000028349, 0.0000028336, + 0.0000028307, 0.0000028272, 0.0000028242, 0.0000028217, 0.0000028190, + 0.0000028134, 0.0000028060, 0.0000028018, 0.0000028034, 0.0000028097, + 0.0000028167, 0.0000028219, 0.0000028281, 0.0000028400, 0.0000028511, + 0.0000028533, 0.0000028481, 0.0000028409, 0.0000028356, 0.0000028358, + 0.0000028381, 0.0000028364, 0.0000028258, 0.0000028097, 0.0000028013, + 0.0000028042, 0.0000028123, 0.0000028151, 0.0000028083, 0.0000027907, + 0.0000027732, 0.0000027636, 0.0000027576, 0.0000027561, 0.0000027601, + 0.0000027691, 0.0000027733, 0.0000027698, 0.0000027647, 0.0000027643, + 0.0000027671, 0.0000027779, 0.0000027962, 0.0000028101, 0.0000028122, + 0.0000028057, 0.0000027994, 0.0000027997, 0.0000028042, 0.0000028097, + 0.0000028139, 0.0000028172, 0.0000028253, 0.0000028375, 0.0000028425, + 0.0000028337, 0.0000028161, 0.0000028046, 0.0000028040, 0.0000028100, + 0.0000028153, 0.0000028182, 0.0000028221, 0.0000028198, 0.0000028090, + 0.0000028028, 0.0000028012, 0.0000028019, 0.0000028098, 0.0000028247, + 0.0000028364, 0.0000028418, 0.0000028435, 0.0000028457, 0.0000028501, + 0.0000028538, 0.0000028562, 0.0000028560, 0.0000028476, 0.0000028299, + 0.0000028157, 0.0000028144, 0.0000028232, 0.0000028387, 0.0000028541, + 0.0000028625, 0.0000028638, 0.0000028659, 0.0000028739, 0.0000028851, + 0.0000028953, 0.0000028984, 0.0000028923, 0.0000028769, 0.0000028654, + 0.0000028633, 0.0000028663, 0.0000028709, 0.0000028718, 0.0000028698, + 0.0000028693, 0.0000028717, 0.0000028730, 0.0000028769, 0.0000028863, + 0.0000028989, 0.0000029054, 0.0000029065, 0.0000029037, 0.0000028979, + 0.0000028911, 0.0000028866, 0.0000028811, 0.0000028701, 0.0000028564, + 0.0000028459, 0.0000028379, 0.0000028311, 0.0000028275, 0.0000028283, + 0.0000028315, 0.0000028372, 0.0000028468, 0.0000028519, 0.0000028519, + 0.0000028480, 0.0000028444, 0.0000028386, 0.0000028336, 0.0000028289, + 0.0000028279, 0.0000028299, 0.0000028375, 0.0000028477, 0.0000028596, + 0.0000028683, 0.0000028732, 0.0000028719, 0.0000028645, 0.0000028529, + 0.0000028416, 0.0000028310, 0.0000028211, 0.0000028111, 0.0000028026, + 0.0000027982, 0.0000027949, 0.0000027907, 0.0000027879, 0.0000027868, + 0.0000027842, 0.0000027803, 0.0000027795, 0.0000027809, 0.0000027839, + 0.0000027899, 0.0000027966, 0.0000027989, 0.0000027963, 0.0000027893, + 0.0000027804, 0.0000027723, 0.0000027657, 0.0000027599, 0.0000027547, + 0.0000027505, 0.0000027484, 0.0000027483, 0.0000027549, 0.0000027807, + 0.0000028006, 0.0000027979, 0.0000027999, 0.0000028101, 0.0000028217, + 0.0000028269, 0.0000028222, 0.0000028147, 0.0000028026, 0.0000027858, + 0.0000027761, 0.0000027695, 0.0000027643, 0.0000027585, 0.0000027520, + 0.0000027479, 0.0000027459, 0.0000027441, 0.0000027443, 0.0000027544, + 0.0000027671, 0.0000027676, 0.0000027574, 0.0000027524, 0.0000027544, + 0.0000027591, 0.0000027613, 0.0000027546, 0.0000027565, 0.0000027761, + 0.0000027909, 0.0000027960, 0.0000027981, 0.0000028033, 0.0000028075, + 0.0000028110, 0.0000028127, 0.0000028105, 0.0000028022, 0.0000027875, + 0.0000027787, 0.0000027784, 0.0000027842, 0.0000027888, 0.0000027898, + 0.0000027930, 0.0000027998, 0.0000028059, 0.0000028087, 0.0000028086, + 0.0000028076, 0.0000028086, 0.0000028082, 0.0000028040, 0.0000027937, + 0.0000027801, 0.0000027747, 0.0000027764, 0.0000027788, 0.0000027812, + 0.0000027829, 0.0000027828, 0.0000027824, 0.0000027850, 0.0000027922, + 0.0000027979, 0.0000027987, 0.0000027961, 0.0000027922, 0.0000027877, + 0.0000027844, 0.0000027824, 0.0000027833, 0.0000027880, 0.0000027965, + 0.0000028042, 0.0000028123, 0.0000028255, 0.0000028399, 0.0000028457, + 0.0000028517, 0.0000028567, 0.0000028543, 0.0000028544, 0.0000028645, + 0.0000028808, 0.0000028912, 0.0000028911, 0.0000028832, 0.0000028739, + 0.0000028687, 0.0000028666, 0.0000028681, 0.0000028719, 0.0000028722, + 0.0000028679, 0.0000028613, 0.0000028523, 0.0000028468, 0.0000028472, + 0.0000028518, 0.0000028582, 0.0000028613, 0.0000028568, 0.0000028445, + 0.0000028335, 0.0000028316, 0.0000028370, 0.0000028469, 0.0000028534, + 0.0000028565, 0.0000028616, 0.0000028697, 0.0000028749, 0.0000028745, + 0.0000028715, 0.0000028712, 0.0000028732, 0.0000028788, 0.0000028838, + 0.0000028859, 0.0000028863, 0.0000028858, 0.0000028837, 0.0000028790, + 0.0000028718, 0.0000028656, 0.0000028636, 0.0000028629, 0.0000028600, + 0.0000028627, 0.0000028698, 0.0000028736, 0.0000028739, 0.0000028712, + 0.0000028701, 0.0000028681, 0.0000028644, 0.0000028664, 0.0000028703, + 0.0000028731, 0.0000028735, 0.0000028724, 0.0000028681, 0.0000028627, + 0.0000028580, 0.0000028534, 0.0000028512, 0.0000028506, 0.0000028520, + 0.0000028544, 0.0000028545, 0.0000028526, 0.0000028471, 0.0000028398, + 0.0000028343, 0.0000028308, 0.0000028291, 0.0000028285, 0.0000028273, + 0.0000028267, 0.0000028278, 0.0000028309, 0.0000028354, 0.0000028381, + 0.0000028369, 0.0000028288, 0.0000028163, 0.0000028031, 0.0000027955, + 0.0000027954, 0.0000028034, 0.0000028153, 0.0000028272, 0.0000028377, + 0.0000028466, 0.0000028528, 0.0000028547, 0.0000028535, 0.0000028500, + 0.0000028452, 0.0000028419, 0.0000028420, 0.0000028449, 0.0000028510, + 0.0000028568, 0.0000028621, 0.0000028663, 0.0000028672, 0.0000028651, + 0.0000028622, 0.0000028599, 0.0000028572, 0.0000028531, 0.0000028497, + 0.0000028484, 0.0000028424, 0.0000028316, 0.0000028222, 0.0000028152, + 0.0000028099, 0.0000028064, 0.0000028031, 0.0000028001, 0.0000027971, + 0.0000027950, 0.0000027932, 0.0000027897, 0.0000027857, 0.0000027847, + 0.0000027882, 0.0000027994, 0.0000028103, 0.0000028147, 0.0000028133, + 0.0000028105, 0.0000028082, 0.0000028079, 0.0000028161, 0.0000028330, + 0.0000028502, 0.0000028562, 0.0000028535, 0.0000028445, 0.0000028347, + 0.0000028356, 0.0000028414, 0.0000028492, 0.0000028523, 0.0000028537, + 0.0000028579, 0.0000028615, 0.0000028644, 0.0000028604, 0.0000028435, + 0.0000028286, 0.0000028248, 0.0000028262, 0.0000028275, 0.0000028313, + 0.0000028390, 0.0000028406, 0.0000028356, 0.0000028278, 0.0000028224, + 0.0000028189, 0.0000028166, 0.0000028160, 0.0000028164, 0.0000028166, + 0.0000028136, 0.0000028099, 0.0000028065, 0.0000028055, 0.0000028078, + 0.0000028090, 0.0000028083, 0.0000028058, 0.0000028033, 0.0000028020, + 0.0000028011, 0.0000027996, 0.0000027977, 0.0000027951, 0.0000027908, + 0.0000027841, 0.0000027756, 0.0000027676, 0.0000027626, 0.0000027608, + 0.0000027612, 0.0000027638, 0.0000027676, 0.0000027703, 0.0000027691, + 0.0000027647, 0.0000027573, 0.0000027517, 0.0000027474, 0.0000027452, + 0.0000027451, 0.0000027450, 0.0000027447, 0.0000027457, 0.0000027487, + 0.0000027530, 0.0000027620, 0.0000027772, 0.0000027972, 0.0000028122, + 0.0000028125, 0.0000028042, 0.0000027998, 0.0000028019, 0.0000028082, + 0.0000028180, 0.0000028285, 0.0000028404, 0.0000028488, 0.0000028516, + 0.0000028515, 0.0000028489, 0.0000028474, 0.0000028505, 0.0000028560, + 0.0000028577, 0.0000028540, 0.0000028449, 0.0000028348, 0.0000028329, + 0.0000028350, 0.0000028274, 0.0000028127, 0.0000028063, 0.0000028052, + 0.0000028049, 0.0000028019, 0.0000027983, 0.0000027980, 0.0000028039, + 0.0000028109, 0.0000028144, 0.0000028189, 0.0000028270, 0.0000028342, + 0.0000028369, 0.0000028368, 0.0000028354, 0.0000028328, 0.0000028283, + 0.0000028238, 0.0000028209, 0.0000028203, 0.0000028215, 0.0000028232, + 0.0000028248, 0.0000028268, 0.0000028268, 0.0000028223, 0.0000028143, + 0.0000028058, 0.0000027982, 0.0000027938, 0.0000027899, 0.0000027850, + 0.0000027783, 0.0000027696, 0.0000027615, 0.0000027593, 0.0000027634, + 0.0000027729, 0.0000027817, 0.0000027873, 0.0000027901, 0.0000027917, + 0.0000027941, 0.0000027955, 0.0000027910, 0.0000027816, 0.0000027747, + 0.0000027738, 0.0000027776, 0.0000027844, 0.0000027904, 0.0000027965, + 0.0000028054, 0.0000028147, 0.0000028177, 0.0000028142, 0.0000028100, + 0.0000028112, 0.0000028152, 0.0000028192, 0.0000028279, 0.0000028387, + 0.0000028418, 0.0000028381, 0.0000028263, 0.0000028038, 0.0000027859, + 0.0000027844, 0.0000027977, 0.0000028180, 0.0000028296, 0.0000028246, + 0.0000028102, 0.0000028053, 0.0000028189, 0.0000028480, 0.0000028671, + 0.0000028700, 0.0000028698, 0.0000028696, 0.0000028687, 0.0000028705, + 0.0000028820, 0.0000029024, 0.0000029252, 0.0000029436, 0.0000029542, + 0.0000029566, 0.0000029534, 0.0000029492, 0.0000029474, 0.0000029473, + 0.0000029479, 0.0000029483, 0.0000029472, 0.0000029444, 0.0000029421, + 0.0000029412, 0.0000029392, 0.0000029344, 0.0000029275, 0.0000029213, + 0.0000029159, 0.0000029100, 0.0000029056, 0.0000029050, 0.0000029075, + 0.0000029092, 0.0000029058, 0.0000028981, 0.0000028885, 0.0000028784, + 0.0000028697, 0.0000028652, 0.0000028655, 0.0000028717, 0.0000028824, + 0.0000028911, 0.0000028934, 0.0000028900, 0.0000028810, 0.0000028720, + 0.0000028694, 0.0000028727, 0.0000028794, 0.0000028846, 0.0000028864, + 0.0000028848, 0.0000028817, 0.0000028781, 0.0000028764, 0.0000028744, + 0.0000028714, 0.0000028665, 0.0000028606, 0.0000028553, 0.0000028509, + 0.0000028462, 0.0000028396, 0.0000028313, 0.0000028232, 0.0000028188, + 0.0000028143, 0.0000028098, 0.0000028097, 0.0000028168, 0.0000028247, + 0.0000028283, 0.0000028299, 0.0000028290, 0.0000028255, 0.0000028212, + 0.0000028175, 0.0000028166, 0.0000028183, 0.0000028197, 0.0000028202, + 0.0000028166, 0.0000028120, 0.0000028116, 0.0000028163, 0.0000028220, + 0.0000028257, 0.0000028319, 0.0000028451, 0.0000028543, 0.0000028527, + 0.0000028467, 0.0000028416, 0.0000028401, 0.0000028425, 0.0000028434, + 0.0000028378, 0.0000028230, 0.0000028087, 0.0000028036, 0.0000028066, + 0.0000028141, 0.0000028154, 0.0000028035, 0.0000027838, 0.0000027706, + 0.0000027657, 0.0000027596, 0.0000027564, 0.0000027613, 0.0000027709, + 0.0000027750, 0.0000027717, 0.0000027671, 0.0000027664, 0.0000027700, + 0.0000027800, 0.0000027931, 0.0000028026, 0.0000028045, 0.0000027992, + 0.0000027947, 0.0000027955, 0.0000027998, 0.0000028057, 0.0000028113, + 0.0000028153, 0.0000028196, 0.0000028274, 0.0000028339, 0.0000028308, + 0.0000028177, 0.0000028040, 0.0000028005, 0.0000028056, 0.0000028118, + 0.0000028149, 0.0000028197, 0.0000028194, 0.0000028105, 0.0000028026, + 0.0000028011, 0.0000028022, 0.0000028084, 0.0000028219, 0.0000028341, + 0.0000028398, 0.0000028407, 0.0000028416, 0.0000028458, 0.0000028522, + 0.0000028556, 0.0000028519, 0.0000028359, 0.0000028147, 0.0000028002, + 0.0000027991, 0.0000028069, 0.0000028229, 0.0000028426, 0.0000028578, + 0.0000028631, 0.0000028648, 0.0000028718, 0.0000028825, 0.0000028924, + 0.0000028978, 0.0000028965, 0.0000028895, 0.0000028785, 0.0000028691, + 0.0000028656, 0.0000028653, 0.0000028665, 0.0000028638, 0.0000028630, + 0.0000028630, 0.0000028650, 0.0000028653, 0.0000028697, 0.0000028795, + 0.0000028887, 0.0000028944, 0.0000028978, 0.0000028977, 0.0000028942, + 0.0000028921, 0.0000028900, 0.0000028865, 0.0000028787, 0.0000028686, + 0.0000028574, 0.0000028457, 0.0000028357, 0.0000028300, 0.0000028299, + 0.0000028328, 0.0000028428, 0.0000028530, 0.0000028580, 0.0000028568, + 0.0000028530, 0.0000028466, 0.0000028411, 0.0000028339, 0.0000028290, + 0.0000028271, 0.0000028307, 0.0000028381, 0.0000028492, 0.0000028607, + 0.0000028703, 0.0000028753, 0.0000028753, 0.0000028689, 0.0000028601, + 0.0000028498, 0.0000028389, 0.0000028271, 0.0000028158, 0.0000028079, + 0.0000028025, 0.0000027959, 0.0000027906, 0.0000027888, 0.0000027873, + 0.0000027826, 0.0000027769, 0.0000027730, 0.0000027719, 0.0000027753, + 0.0000027811, 0.0000027886, 0.0000027933, 0.0000027930, 0.0000027880, + 0.0000027816, 0.0000027757, 0.0000027702, 0.0000027643, 0.0000027583, + 0.0000027536, 0.0000027514, 0.0000027497, 0.0000027552, 0.0000027834, + 0.0000028087, 0.0000028056, 0.0000028056, 0.0000028150, 0.0000028258, + 0.0000028303, 0.0000028251, 0.0000028166, 0.0000028052, 0.0000027906, + 0.0000027822, 0.0000027762, 0.0000027689, 0.0000027610, 0.0000027547, + 0.0000027513, 0.0000027496, 0.0000027476, 0.0000027489, 0.0000027606, + 0.0000027718, 0.0000027697, 0.0000027582, 0.0000027525, 0.0000027545, + 0.0000027596, 0.0000027615, 0.0000027546, 0.0000027562, 0.0000027735, + 0.0000027877, 0.0000027932, 0.0000027970, 0.0000028043, 0.0000028094, + 0.0000028109, 0.0000028104, 0.0000028058, 0.0000027961, 0.0000027842, + 0.0000027801, 0.0000027840, 0.0000027916, 0.0000027967, 0.0000027987, + 0.0000028021, 0.0000028075, 0.0000028117, 0.0000028119, 0.0000028082, + 0.0000028051, 0.0000028034, 0.0000028011, 0.0000027955, 0.0000027844, + 0.0000027716, 0.0000027663, 0.0000027674, 0.0000027709, 0.0000027768, + 0.0000027813, 0.0000027817, 0.0000027830, 0.0000027891, 0.0000027966, + 0.0000027999, 0.0000027979, 0.0000027918, 0.0000027854, 0.0000027803, + 0.0000027755, 0.0000027728, 0.0000027732, 0.0000027794, 0.0000027918, + 0.0000028030, 0.0000028148, 0.0000028288, 0.0000028413, 0.0000028480, + 0.0000028573, 0.0000028614, 0.0000028586, 0.0000028609, 0.0000028707, + 0.0000028826, 0.0000028894, 0.0000028890, 0.0000028829, 0.0000028749, + 0.0000028703, 0.0000028700, 0.0000028721, 0.0000028754, 0.0000028758, + 0.0000028710, 0.0000028617, 0.0000028510, 0.0000028426, 0.0000028409, + 0.0000028449, 0.0000028526, 0.0000028601, 0.0000028596, 0.0000028500, + 0.0000028391, 0.0000028356, 0.0000028397, 0.0000028477, 0.0000028518, + 0.0000028544, 0.0000028597, 0.0000028666, 0.0000028711, 0.0000028711, + 0.0000028688, 0.0000028685, 0.0000028696, 0.0000028742, 0.0000028792, + 0.0000028830, 0.0000028857, 0.0000028882, 0.0000028876, 0.0000028833, + 0.0000028769, 0.0000028715, 0.0000028705, 0.0000028707, 0.0000028691, + 0.0000028688, 0.0000028741, 0.0000028774, 0.0000028773, 0.0000028735, + 0.0000028712, 0.0000028718, 0.0000028723, 0.0000028751, 0.0000028770, + 0.0000028752, 0.0000028738, 0.0000028722, 0.0000028671, 0.0000028615, + 0.0000028545, 0.0000028480, 0.0000028430, 0.0000028419, 0.0000028430, + 0.0000028467, 0.0000028494, 0.0000028503, 0.0000028484, 0.0000028435, + 0.0000028377, 0.0000028309, 0.0000028252, 0.0000028226, 0.0000028209, + 0.0000028201, 0.0000028205, 0.0000028207, 0.0000028225, 0.0000028248, + 0.0000028259, 0.0000028226, 0.0000028143, 0.0000028029, 0.0000027951, + 0.0000027931, 0.0000027964, 0.0000028060, 0.0000028182, 0.0000028285, + 0.0000028369, 0.0000028441, 0.0000028489, 0.0000028515, 0.0000028507, + 0.0000028480, 0.0000028439, 0.0000028409, 0.0000028412, 0.0000028453, + 0.0000028509, 0.0000028570, 0.0000028640, 0.0000028704, 0.0000028727, + 0.0000028709, 0.0000028681, 0.0000028627, 0.0000028556, 0.0000028493, + 0.0000028468, 0.0000028487, 0.0000028483, 0.0000028402, 0.0000028267, + 0.0000028140, 0.0000028072, 0.0000028059, 0.0000028059, 0.0000028042, + 0.0000027990, 0.0000027941, 0.0000027923, 0.0000027921, 0.0000027907, + 0.0000027880, 0.0000027877, 0.0000027937, 0.0000028021, 0.0000028080, + 0.0000028075, 0.0000028041, 0.0000028037, 0.0000028059, 0.0000028118, + 0.0000028245, 0.0000028422, 0.0000028521, 0.0000028515, 0.0000028432, + 0.0000028332, 0.0000028337, 0.0000028402, 0.0000028506, 0.0000028544, + 0.0000028551, 0.0000028573, 0.0000028593, 0.0000028607, 0.0000028535, + 0.0000028363, 0.0000028231, 0.0000028202, 0.0000028217, 0.0000028243, + 0.0000028315, 0.0000028370, 0.0000028353, 0.0000028289, 0.0000028236, + 0.0000028215, 0.0000028212, 0.0000028218, 0.0000028218, 0.0000028209, + 0.0000028184, 0.0000028129, 0.0000028080, 0.0000028061, 0.0000028066, + 0.0000028085, 0.0000028086, 0.0000028073, 0.0000028062, 0.0000028057, + 0.0000028048, 0.0000028030, 0.0000027992, 0.0000027942, 0.0000027894, + 0.0000027849, 0.0000027787, 0.0000027706, 0.0000027650, 0.0000027620, + 0.0000027609, 0.0000027628, 0.0000027659, 0.0000027690, 0.0000027701, + 0.0000027689, 0.0000027647, 0.0000027575, 0.0000027505, 0.0000027443, + 0.0000027417, 0.0000027432, 0.0000027449, 0.0000027448, 0.0000027447, + 0.0000027464, 0.0000027520, 0.0000027621, 0.0000027771, 0.0000027957, + 0.0000028123, 0.0000028150, 0.0000028078, 0.0000028032, 0.0000028068, + 0.0000028144, 0.0000028217, 0.0000028303, 0.0000028424, 0.0000028542, + 0.0000028580, 0.0000028580, 0.0000028541, 0.0000028494, 0.0000028501, + 0.0000028551, 0.0000028588, 0.0000028578, 0.0000028500, 0.0000028382, + 0.0000028326, 0.0000028358, 0.0000028356, 0.0000028257, 0.0000028170, + 0.0000028133, 0.0000028124, 0.0000028095, 0.0000028039, 0.0000027987, + 0.0000027980, 0.0000028040, 0.0000028101, 0.0000028132, 0.0000028156, + 0.0000028206, 0.0000028279, 0.0000028345, 0.0000028389, 0.0000028411, + 0.0000028417, 0.0000028412, 0.0000028425, 0.0000028454, 0.0000028470, + 0.0000028467, 0.0000028441, 0.0000028404, 0.0000028354, 0.0000028283, + 0.0000028201, 0.0000028106, 0.0000028021, 0.0000027967, 0.0000027938, + 0.0000027912, 0.0000027866, 0.0000027789, 0.0000027700, 0.0000027629, + 0.0000027623, 0.0000027693, 0.0000027797, 0.0000027871, 0.0000027899, + 0.0000027891, 0.0000027876, 0.0000027885, 0.0000027921, 0.0000027923, + 0.0000027851, 0.0000027763, 0.0000027739, 0.0000027796, 0.0000027890, + 0.0000027968, 0.0000028038, 0.0000028124, 0.0000028195, 0.0000028206, + 0.0000028165, 0.0000028143, 0.0000028164, 0.0000028196, 0.0000028230, + 0.0000028322, 0.0000028423, 0.0000028446, 0.0000028395, 0.0000028236, + 0.0000027990, 0.0000027841, 0.0000027863, 0.0000028024, 0.0000028230, + 0.0000028309, 0.0000028250, 0.0000028111, 0.0000028082, 0.0000028270, + 0.0000028551, 0.0000028699, 0.0000028710, 0.0000028708, 0.0000028712, + 0.0000028702, 0.0000028707, 0.0000028790, 0.0000028962, 0.0000029175, + 0.0000029361, 0.0000029478, 0.0000029511, 0.0000029489, 0.0000029448, + 0.0000029415, 0.0000029393, 0.0000029375, 0.0000029356, 0.0000029332, + 0.0000029322, 0.0000029346, 0.0000029395, 0.0000029426, 0.0000029429, + 0.0000029404, 0.0000029367, 0.0000029324, 0.0000029271, 0.0000029222, + 0.0000029203, 0.0000029198, 0.0000029162, 0.0000029080, 0.0000028981, + 0.0000028890, 0.0000028816, 0.0000028747, 0.0000028688, 0.0000028668, + 0.0000028689, 0.0000028751, 0.0000028825, 0.0000028869, 0.0000028888, + 0.0000028841, 0.0000028781, 0.0000028735, 0.0000028727, 0.0000028748, + 0.0000028766, 0.0000028769, 0.0000028747, 0.0000028719, 0.0000028706, + 0.0000028711, 0.0000028712, 0.0000028702, 0.0000028672, 0.0000028628, + 0.0000028582, 0.0000028543, 0.0000028507, 0.0000028457, 0.0000028370, + 0.0000028266, 0.0000028183, 0.0000028131, 0.0000028076, 0.0000028047, + 0.0000028074, 0.0000028150, 0.0000028205, 0.0000028237, 0.0000028239, + 0.0000028209, 0.0000028163, 0.0000028110, 0.0000028079, 0.0000028095, + 0.0000028150, 0.0000028210, 0.0000028255, 0.0000028265, 0.0000028226, + 0.0000028197, 0.0000028216, 0.0000028260, 0.0000028285, 0.0000028356, + 0.0000028491, 0.0000028550, 0.0000028513, 0.0000028458, 0.0000028439, + 0.0000028450, 0.0000028476, 0.0000028471, 0.0000028378, 0.0000028219, + 0.0000028105, 0.0000028062, 0.0000028080, 0.0000028132, 0.0000028125, + 0.0000027983, 0.0000027809, 0.0000027734, 0.0000027709, 0.0000027629, + 0.0000027581, 0.0000027628, 0.0000027728, 0.0000027785, 0.0000027769, + 0.0000027724, 0.0000027705, 0.0000027737, 0.0000027805, 0.0000027869, + 0.0000027926, 0.0000027956, 0.0000027936, 0.0000027917, 0.0000027924, + 0.0000027955, 0.0000028012, 0.0000028074, 0.0000028126, 0.0000028157, + 0.0000028191, 0.0000028234, 0.0000028248, 0.0000028170, 0.0000028058, + 0.0000027994, 0.0000028012, 0.0000028063, 0.0000028092, 0.0000028143, + 0.0000028180, 0.0000028117, 0.0000028028, 0.0000028004, 0.0000028017, + 0.0000028070, 0.0000028180, 0.0000028292, 0.0000028354, 0.0000028374, + 0.0000028385, 0.0000028426, 0.0000028489, 0.0000028501, 0.0000028408, + 0.0000028208, 0.0000028012, 0.0000027898, 0.0000027901, 0.0000027955, + 0.0000028075, 0.0000028268, 0.0000028479, 0.0000028605, 0.0000028636, + 0.0000028687, 0.0000028793, 0.0000028900, 0.0000028960, 0.0000028961, + 0.0000028930, 0.0000028876, 0.0000028801, 0.0000028724, 0.0000028680, + 0.0000028661, 0.0000028629, 0.0000028577, 0.0000028551, 0.0000028552, + 0.0000028543, 0.0000028556, 0.0000028623, 0.0000028733, 0.0000028820, + 0.0000028869, 0.0000028888, 0.0000028883, 0.0000028879, 0.0000028883, + 0.0000028892, 0.0000028885, 0.0000028860, 0.0000028801, 0.0000028703, + 0.0000028575, 0.0000028441, 0.0000028345, 0.0000028299, 0.0000028308, + 0.0000028395, 0.0000028519, 0.0000028595, 0.0000028631, 0.0000028583, + 0.0000028519, 0.0000028439, 0.0000028351, 0.0000028294, 0.0000028287, + 0.0000028327, 0.0000028402, 0.0000028490, 0.0000028586, 0.0000028670, + 0.0000028714, 0.0000028710, 0.0000028665, 0.0000028604, 0.0000028515, + 0.0000028400, 0.0000028271, 0.0000028168, 0.0000028092, 0.0000028020, + 0.0000027958, 0.0000027919, 0.0000027903, 0.0000027890, 0.0000027838, + 0.0000027756, 0.0000027682, 0.0000027650, 0.0000027655, 0.0000027693, + 0.0000027756, 0.0000027814, 0.0000027841, 0.0000027828, 0.0000027789, + 0.0000027746, 0.0000027695, 0.0000027639, 0.0000027590, 0.0000027564, + 0.0000027562, 0.0000027545, 0.0000027591, 0.0000027875, 0.0000028157, + 0.0000028136, 0.0000028103, 0.0000028184, 0.0000028283, 0.0000028308, + 0.0000028269, 0.0000028189, 0.0000028088, 0.0000027971, 0.0000027889, + 0.0000027826, 0.0000027733, 0.0000027632, 0.0000027569, 0.0000027540, + 0.0000027527, 0.0000027513, 0.0000027540, 0.0000027660, 0.0000027757, + 0.0000027717, 0.0000027595, 0.0000027523, 0.0000027540, 0.0000027593, + 0.0000027623, 0.0000027556, 0.0000027545, 0.0000027677, 0.0000027818, + 0.0000027887, 0.0000027953, 0.0000028052, 0.0000028105, 0.0000028107, + 0.0000028070, 0.0000028005, 0.0000027932, 0.0000027856, 0.0000027849, + 0.0000027894, 0.0000027958, 0.0000028010, 0.0000028058, 0.0000028102, + 0.0000028146, 0.0000028173, 0.0000028171, 0.0000028118, 0.0000028048, + 0.0000027985, 0.0000027930, 0.0000027869, 0.0000027774, 0.0000027669, + 0.0000027619, 0.0000027627, 0.0000027664, 0.0000027752, 0.0000027806, + 0.0000027827, 0.0000027859, 0.0000027946, 0.0000028006, 0.0000027992, + 0.0000027935, 0.0000027860, 0.0000027783, 0.0000027724, 0.0000027684, + 0.0000027666, 0.0000027689, 0.0000027769, 0.0000027897, 0.0000028038, + 0.0000028181, 0.0000028307, 0.0000028410, 0.0000028505, 0.0000028617, + 0.0000028650, 0.0000028634, 0.0000028672, 0.0000028745, 0.0000028814, + 0.0000028866, 0.0000028870, 0.0000028821, 0.0000028757, 0.0000028743, + 0.0000028771, 0.0000028799, 0.0000028803, 0.0000028788, 0.0000028732, + 0.0000028620, 0.0000028511, 0.0000028411, 0.0000028377, 0.0000028394, + 0.0000028456, 0.0000028554, 0.0000028611, 0.0000028567, 0.0000028458, + 0.0000028395, 0.0000028425, 0.0000028493, 0.0000028519, 0.0000028539, + 0.0000028578, 0.0000028631, 0.0000028669, 0.0000028675, 0.0000028668, + 0.0000028664, 0.0000028667, 0.0000028701, 0.0000028753, 0.0000028807, + 0.0000028860, 0.0000028906, 0.0000028906, 0.0000028861, 0.0000028807, + 0.0000028783, 0.0000028764, 0.0000028766, 0.0000028762, 0.0000028744, + 0.0000028792, 0.0000028835, 0.0000028823, 0.0000028785, 0.0000028748, + 0.0000028758, 0.0000028781, 0.0000028809, 0.0000028799, 0.0000028750, + 0.0000028680, 0.0000028626, 0.0000028570, 0.0000028525, 0.0000028459, + 0.0000028384, 0.0000028311, 0.0000028283, 0.0000028285, 0.0000028333, + 0.0000028386, 0.0000028413, 0.0000028416, 0.0000028393, 0.0000028352, + 0.0000028280, 0.0000028193, 0.0000028131, 0.0000028092, 0.0000028063, + 0.0000028060, 0.0000028056, 0.0000028053, 0.0000028076, 0.0000028094, + 0.0000028099, 0.0000028070, 0.0000028027, 0.0000027978, 0.0000027956, + 0.0000027972, 0.0000028018, 0.0000028088, 0.0000028150, 0.0000028196, + 0.0000028240, 0.0000028292, 0.0000028331, 0.0000028355, 0.0000028353, + 0.0000028338, 0.0000028301, 0.0000028279, 0.0000028291, 0.0000028338, + 0.0000028393, 0.0000028457, 0.0000028537, 0.0000028617, 0.0000028659, + 0.0000028673, 0.0000028680, 0.0000028664, 0.0000028598, 0.0000028487, + 0.0000028419, 0.0000028442, 0.0000028477, 0.0000028448, 0.0000028345, + 0.0000028180, 0.0000028053, 0.0000028021, 0.0000028040, 0.0000028063, + 0.0000028031, 0.0000027962, 0.0000027910, 0.0000027900, 0.0000027909, + 0.0000027914, 0.0000027923, 0.0000027939, 0.0000027967, 0.0000028005, + 0.0000028009, 0.0000027981, 0.0000027983, 0.0000028032, 0.0000028105, + 0.0000028188, 0.0000028338, 0.0000028471, 0.0000028490, 0.0000028415, + 0.0000028316, 0.0000028321, 0.0000028408, 0.0000028529, 0.0000028567, + 0.0000028567, 0.0000028565, 0.0000028572, 0.0000028570, 0.0000028464, + 0.0000028290, 0.0000028175, 0.0000028158, 0.0000028185, 0.0000028237, + 0.0000028310, 0.0000028329, 0.0000028287, 0.0000028243, 0.0000028230, + 0.0000028233, 0.0000028245, 0.0000028248, 0.0000028235, 0.0000028213, + 0.0000028169, 0.0000028115, 0.0000028086, 0.0000028090, 0.0000028104, + 0.0000028118, 0.0000028123, 0.0000028125, 0.0000028127, 0.0000028127, + 0.0000028119, 0.0000028091, 0.0000028035, 0.0000027960, 0.0000027891, + 0.0000027840, 0.0000027789, 0.0000027732, 0.0000027700, 0.0000027685, + 0.0000027680, 0.0000027686, 0.0000027704, 0.0000027721, 0.0000027722, + 0.0000027694, 0.0000027635, 0.0000027562, 0.0000027490, 0.0000027427, + 0.0000027386, 0.0000027391, 0.0000027417, 0.0000027432, 0.0000027434, + 0.0000027451, 0.0000027519, 0.0000027630, 0.0000027775, 0.0000027944, + 0.0000028097, 0.0000028151, 0.0000028107, 0.0000028072, 0.0000028118, + 0.0000028207, 0.0000028269, 0.0000028328, 0.0000028436, 0.0000028556, + 0.0000028615, 0.0000028622, 0.0000028580, 0.0000028504, 0.0000028479, + 0.0000028509, 0.0000028562, 0.0000028577, 0.0000028527, 0.0000028421, + 0.0000028322, 0.0000028312, 0.0000028350, 0.0000028317, 0.0000028269, + 0.0000028230, 0.0000028194, 0.0000028156, 0.0000028123, 0.0000028073, + 0.0000028033, 0.0000028034, 0.0000028057, 0.0000028067, 0.0000028076, + 0.0000028084, 0.0000028092, 0.0000028131, 0.0000028186, 0.0000028229, + 0.0000028264, 0.0000028310, 0.0000028364, 0.0000028414, 0.0000028447, + 0.0000028460, 0.0000028455, 0.0000028440, 0.0000028393, 0.0000028330, + 0.0000028257, 0.0000028159, 0.0000028051, 0.0000027968, 0.0000027927, + 0.0000027911, 0.0000027886, 0.0000027832, 0.0000027758, 0.0000027684, + 0.0000027647, 0.0000027669, 0.0000027752, 0.0000027842, 0.0000027889, + 0.0000027895, 0.0000027879, 0.0000027860, 0.0000027857, 0.0000027884, + 0.0000027900, 0.0000027862, 0.0000027788, 0.0000027759, 0.0000027820, + 0.0000027920, 0.0000028005, 0.0000028090, 0.0000028182, 0.0000028230, + 0.0000028221, 0.0000028190, 0.0000028189, 0.0000028218, 0.0000028240, + 0.0000028271, 0.0000028369, 0.0000028467, 0.0000028482, 0.0000028403, + 0.0000028195, 0.0000027941, 0.0000027840, 0.0000027899, 0.0000028092, + 0.0000028290, 0.0000028342, 0.0000028258, 0.0000028143, 0.0000028152, + 0.0000028354, 0.0000028600, 0.0000028700, 0.0000028703, 0.0000028714, + 0.0000028733, 0.0000028723, 0.0000028714, 0.0000028759, 0.0000028880, + 0.0000029050, 0.0000029223, 0.0000029354, 0.0000029412, 0.0000029405, + 0.0000029375, 0.0000029350, 0.0000029329, 0.0000029302, 0.0000029259, + 0.0000029208, 0.0000029183, 0.0000029215, 0.0000029280, 0.0000029350, + 0.0000029403, 0.0000029432, 0.0000029462, 0.0000029471, 0.0000029431, + 0.0000029366, 0.0000029341, 0.0000029356, 0.0000029350, 0.0000029259, + 0.0000029097, 0.0000028938, 0.0000028828, 0.0000028755, 0.0000028692, + 0.0000028666, 0.0000028681, 0.0000028733, 0.0000028787, 0.0000028810, + 0.0000028802, 0.0000028767, 0.0000028725, 0.0000028713, 0.0000028729, + 0.0000028768, 0.0000028785, 0.0000028775, 0.0000028735, 0.0000028687, + 0.0000028648, 0.0000028619, 0.0000028599, 0.0000028576, 0.0000028545, + 0.0000028508, 0.0000028472, 0.0000028448, 0.0000028435, 0.0000028407, + 0.0000028330, 0.0000028214, 0.0000028103, 0.0000028051, 0.0000028013, + 0.0000027989, 0.0000028003, 0.0000028067, 0.0000028142, 0.0000028204, + 0.0000028224, 0.0000028199, 0.0000028153, 0.0000028102, 0.0000028055, + 0.0000028044, 0.0000028081, 0.0000028139, 0.0000028201, 0.0000028283, + 0.0000028341, 0.0000028314, 0.0000028261, 0.0000028253, 0.0000028282, + 0.0000028308, 0.0000028396, 0.0000028520, 0.0000028548, 0.0000028494, + 0.0000028462, 0.0000028464, 0.0000028485, 0.0000028497, 0.0000028482, + 0.0000028378, 0.0000028237, 0.0000028142, 0.0000028085, 0.0000028070, + 0.0000028093, 0.0000028079, 0.0000027961, 0.0000027833, 0.0000027795, + 0.0000027777, 0.0000027682, 0.0000027617, 0.0000027648, 0.0000027739, + 0.0000027819, 0.0000027836, 0.0000027793, 0.0000027754, 0.0000027764, + 0.0000027790, 0.0000027802, 0.0000027842, 0.0000027895, 0.0000027909, + 0.0000027901, 0.0000027893, 0.0000027913, 0.0000027968, 0.0000028028, + 0.0000028086, 0.0000028125, 0.0000028142, 0.0000028154, 0.0000028168, + 0.0000028145, 0.0000028078, 0.0000028004, 0.0000027978, 0.0000028001, + 0.0000028026, 0.0000028070, 0.0000028126, 0.0000028112, 0.0000028039, + 0.0000028000, 0.0000028007, 0.0000028053, 0.0000028150, 0.0000028254, + 0.0000028319, 0.0000028350, 0.0000028366, 0.0000028391, 0.0000028413, + 0.0000028378, 0.0000028244, 0.0000028064, 0.0000027935, 0.0000027876, + 0.0000027892, 0.0000027930, 0.0000027985, 0.0000028118, 0.0000028336, + 0.0000028541, 0.0000028623, 0.0000028655, 0.0000028744, 0.0000028866, + 0.0000028945, 0.0000028951, 0.0000028927, 0.0000028890, 0.0000028856, + 0.0000028800, 0.0000028751, 0.0000028715, 0.0000028687, 0.0000028607, + 0.0000028563, 0.0000028515, 0.0000028490, 0.0000028441, 0.0000028456, + 0.0000028542, 0.0000028654, 0.0000028750, 0.0000028797, 0.0000028804, + 0.0000028811, 0.0000028822, 0.0000028833, 0.0000028846, 0.0000028861, + 0.0000028861, 0.0000028847, 0.0000028785, 0.0000028680, 0.0000028547, + 0.0000028411, 0.0000028310, 0.0000028276, 0.0000028334, 0.0000028458, + 0.0000028604, 0.0000028659, 0.0000028645, 0.0000028578, 0.0000028473, + 0.0000028375, 0.0000028318, 0.0000028321, 0.0000028373, 0.0000028436, + 0.0000028497, 0.0000028563, 0.0000028611, 0.0000028631, 0.0000028631, + 0.0000028610, 0.0000028561, 0.0000028487, 0.0000028374, 0.0000028262, + 0.0000028168, 0.0000028083, 0.0000028020, 0.0000027966, 0.0000027930, + 0.0000027921, 0.0000027918, 0.0000027874, 0.0000027783, 0.0000027702, + 0.0000027647, 0.0000027622, 0.0000027633, 0.0000027670, 0.0000027717, + 0.0000027756, 0.0000027770, 0.0000027755, 0.0000027720, 0.0000027666, + 0.0000027620, 0.0000027591, 0.0000027596, 0.0000027621, 0.0000027608, + 0.0000027643, 0.0000027910, 0.0000028191, 0.0000028194, 0.0000028134, + 0.0000028190, 0.0000028269, 0.0000028301, 0.0000028276, 0.0000028212, + 0.0000028129, 0.0000028046, 0.0000027962, 0.0000027884, 0.0000027777, + 0.0000027659, 0.0000027586, 0.0000027561, 0.0000027553, 0.0000027549, + 0.0000027592, 0.0000027706, 0.0000027789, 0.0000027745, 0.0000027618, + 0.0000027530, 0.0000027533, 0.0000027577, 0.0000027617, 0.0000027570, + 0.0000027530, 0.0000027610, 0.0000027739, 0.0000027829, 0.0000027927, + 0.0000028045, 0.0000028096, 0.0000028086, 0.0000028023, 0.0000027962, + 0.0000027922, 0.0000027891, 0.0000027884, 0.0000027916, 0.0000027959, + 0.0000028001, 0.0000028061, 0.0000028126, 0.0000028197, 0.0000028224, + 0.0000028218, 0.0000028159, 0.0000028056, 0.0000027948, 0.0000027868, + 0.0000027818, 0.0000027746, 0.0000027665, 0.0000027623, 0.0000027622, + 0.0000027661, 0.0000027763, 0.0000027823, 0.0000027861, 0.0000027908, + 0.0000027986, 0.0000028014, 0.0000027974, 0.0000027902, 0.0000027827, + 0.0000027760, 0.0000027702, 0.0000027669, 0.0000027666, 0.0000027701, + 0.0000027779, 0.0000027893, 0.0000028051, 0.0000028202, 0.0000028307, + 0.0000028399, 0.0000028532, 0.0000028644, 0.0000028689, 0.0000028697, + 0.0000028727, 0.0000028747, 0.0000028789, 0.0000028838, 0.0000028843, + 0.0000028815, 0.0000028797, 0.0000028808, 0.0000028819, 0.0000028815, + 0.0000028786, 0.0000028737, 0.0000028669, 0.0000028555, 0.0000028437, + 0.0000028348, 0.0000028324, 0.0000028345, 0.0000028402, 0.0000028482, + 0.0000028595, 0.0000028620, 0.0000028531, 0.0000028427, 0.0000028432, + 0.0000028500, 0.0000028529, 0.0000028544, 0.0000028565, 0.0000028595, + 0.0000028620, 0.0000028630, 0.0000028644, 0.0000028654, 0.0000028663, + 0.0000028694, 0.0000028744, 0.0000028807, 0.0000028883, 0.0000028935, + 0.0000028927, 0.0000028869, 0.0000028839, 0.0000028839, 0.0000028811, + 0.0000028803, 0.0000028821, 0.0000028822, 0.0000028852, 0.0000028885, + 0.0000028872, 0.0000028828, 0.0000028781, 0.0000028777, 0.0000028787, + 0.0000028804, 0.0000028769, 0.0000028670, 0.0000028548, 0.0000028467, + 0.0000028418, 0.0000028407, 0.0000028363, 0.0000028293, 0.0000028212, + 0.0000028153, 0.0000028138, 0.0000028169, 0.0000028237, 0.0000028280, + 0.0000028294, 0.0000028285, 0.0000028255, 0.0000028208, 0.0000028132, + 0.0000028048, 0.0000027991, 0.0000027935, 0.0000027897, 0.0000027884, + 0.0000027862, 0.0000027864, 0.0000027901, 0.0000027941, 0.0000027986, + 0.0000028010, 0.0000028014, 0.0000028002, 0.0000027989, 0.0000027998, + 0.0000028009, 0.0000028015, 0.0000028019, 0.0000028035, 0.0000028063, + 0.0000028112, 0.0000028157, 0.0000028191, 0.0000028197, 0.0000028184, + 0.0000028151, 0.0000028135, 0.0000028150, 0.0000028194, 0.0000028244, + 0.0000028303, 0.0000028389, 0.0000028483, 0.0000028547, 0.0000028575, + 0.0000028587, 0.0000028599, 0.0000028593, 0.0000028521, 0.0000028417, + 0.0000028390, 0.0000028430, 0.0000028443, 0.0000028395, 0.0000028252, + 0.0000028090, 0.0000028004, 0.0000028003, 0.0000028044, 0.0000028047, + 0.0000028000, 0.0000027926, 0.0000027873, 0.0000027865, 0.0000027902, + 0.0000027948, 0.0000027964, 0.0000027957, 0.0000027941, 0.0000027925, + 0.0000027929, 0.0000027940, 0.0000027989, 0.0000028085, 0.0000028149, + 0.0000028262, 0.0000028423, 0.0000028471, 0.0000028400, 0.0000028301, + 0.0000028310, 0.0000028428, 0.0000028558, 0.0000028591, 0.0000028582, + 0.0000028555, 0.0000028551, 0.0000028528, 0.0000028390, 0.0000028216, + 0.0000028125, 0.0000028131, 0.0000028180, 0.0000028247, 0.0000028285, + 0.0000028274, 0.0000028235, 0.0000028228, 0.0000028241, 0.0000028247, + 0.0000028248, 0.0000028237, 0.0000028209, 0.0000028169, 0.0000028117, + 0.0000028077, 0.0000028067, 0.0000028078, 0.0000028092, 0.0000028107, + 0.0000028121, 0.0000028136, 0.0000028144, 0.0000028145, 0.0000028132, + 0.0000028103, 0.0000028051, 0.0000027978, 0.0000027909, 0.0000027851, + 0.0000027804, 0.0000027759, 0.0000027733, 0.0000027715, 0.0000027699, + 0.0000027696, 0.0000027715, 0.0000027738, 0.0000027744, 0.0000027720, + 0.0000027660, 0.0000027570, 0.0000027470, 0.0000027404, 0.0000027373, + 0.0000027372, 0.0000027383, 0.0000027393, 0.0000027397, 0.0000027422, + 0.0000027494, 0.0000027613, 0.0000027768, 0.0000027931, 0.0000028055, + 0.0000028121, 0.0000028118, 0.0000028103, 0.0000028163, 0.0000028262, + 0.0000028326, 0.0000028368, 0.0000028425, 0.0000028526, 0.0000028605, + 0.0000028623, 0.0000028590, 0.0000028504, 0.0000028445, 0.0000028461, + 0.0000028526, 0.0000028571, 0.0000028551, 0.0000028472, 0.0000028350, + 0.0000028292, 0.0000028311, 0.0000028300, 0.0000028277, 0.0000028283, + 0.0000028281, 0.0000028243, 0.0000028189, 0.0000028143, 0.0000028109, + 0.0000028085, 0.0000028076, 0.0000028057, 0.0000028033, 0.0000028011, + 0.0000027978, 0.0000027953, 0.0000027956, 0.0000027962, 0.0000027965, + 0.0000027990, 0.0000028068, 0.0000028178, 0.0000028282, 0.0000028358, + 0.0000028409, 0.0000028434, 0.0000028419, 0.0000028359, 0.0000028261, + 0.0000028133, 0.0000028003, 0.0000027902, 0.0000027849, 0.0000027832, + 0.0000027824, 0.0000027795, 0.0000027748, 0.0000027699, 0.0000027663, + 0.0000027661, 0.0000027709, 0.0000027790, 0.0000027847, 0.0000027866, + 0.0000027865, 0.0000027860, 0.0000027854, 0.0000027852, 0.0000027860, + 0.0000027868, 0.0000027854, 0.0000027808, 0.0000027790, 0.0000027847, + 0.0000027941, 0.0000028025, 0.0000028123, 0.0000028223, 0.0000028253, + 0.0000028233, 0.0000028217, 0.0000028233, 0.0000028263, 0.0000028277, + 0.0000028312, 0.0000028420, 0.0000028516, 0.0000028514, 0.0000028398, + 0.0000028145, 0.0000027905, 0.0000027861, 0.0000027953, 0.0000028167, + 0.0000028349, 0.0000028378, 0.0000028279, 0.0000028190, 0.0000028226, + 0.0000028417, 0.0000028616, 0.0000028672, 0.0000028679, 0.0000028714, + 0.0000028751, 0.0000028743, 0.0000028726, 0.0000028737, 0.0000028803, + 0.0000028911, 0.0000029042, 0.0000029167, 0.0000029251, 0.0000029271, + 0.0000029261, 0.0000029244, 0.0000029226, 0.0000029200, 0.0000029157, + 0.0000029108, 0.0000029085, 0.0000029111, 0.0000029158, 0.0000029216, + 0.0000029273, 0.0000029332, 0.0000029408, 0.0000029480, 0.0000029524, + 0.0000029518, 0.0000029495, 0.0000029477, 0.0000029460, 0.0000029411, + 0.0000029303, 0.0000029150, 0.0000028994, 0.0000028854, 0.0000028733, + 0.0000028655, 0.0000028638, 0.0000028671, 0.0000028734, 0.0000028777, + 0.0000028757, 0.0000028692, 0.0000028618, 0.0000028586, 0.0000028610, + 0.0000028683, 0.0000028749, 0.0000028778, 0.0000028774, 0.0000028749, + 0.0000028715, 0.0000028675, 0.0000028623, 0.0000028560, 0.0000028506, + 0.0000028435, 0.0000028377, 0.0000028347, 0.0000028338, 0.0000028326, + 0.0000028276, 0.0000028186, 0.0000028091, 0.0000028028, 0.0000028002, + 0.0000027994, 0.0000028008, 0.0000028056, 0.0000028132, 0.0000028208, + 0.0000028253, 0.0000028242, 0.0000028195, 0.0000028143, 0.0000028097, + 0.0000028072, 0.0000028079, 0.0000028114, 0.0000028147, 0.0000028187, + 0.0000028295, 0.0000028376, 0.0000028368, 0.0000028294, 0.0000028269, + 0.0000028293, 0.0000028336, 0.0000028435, 0.0000028533, 0.0000028532, + 0.0000028486, 0.0000028478, 0.0000028489, 0.0000028496, 0.0000028498, + 0.0000028479, 0.0000028386, 0.0000028271, 0.0000028183, 0.0000028101, + 0.0000028053, 0.0000028048, 0.0000028044, 0.0000027972, 0.0000027890, + 0.0000027864, 0.0000027843, 0.0000027755, 0.0000027675, 0.0000027668, + 0.0000027735, 0.0000027840, 0.0000027888, 0.0000027853, 0.0000027796, + 0.0000027775, 0.0000027768, 0.0000027774, 0.0000027820, 0.0000027885, + 0.0000027910, 0.0000027892, 0.0000027865, 0.0000027877, 0.0000027925, + 0.0000027985, 0.0000028044, 0.0000028092, 0.0000028113, 0.0000028116, + 0.0000028118, 0.0000028108, 0.0000028071, 0.0000028006, 0.0000027961, + 0.0000027949, 0.0000027962, 0.0000027996, 0.0000028048, 0.0000028077, + 0.0000028041, 0.0000028003, 0.0000027992, 0.0000028027, 0.0000028111, + 0.0000028210, 0.0000028281, 0.0000028318, 0.0000028326, 0.0000028317, + 0.0000028283, 0.0000028201, 0.0000028071, 0.0000027964, 0.0000027922, + 0.0000027920, 0.0000027945, 0.0000027956, 0.0000027971, 0.0000028019, + 0.0000028182, 0.0000028429, 0.0000028593, 0.0000028631, 0.0000028688, + 0.0000028809, 0.0000028918, 0.0000028949, 0.0000028923, 0.0000028878, + 0.0000028845, 0.0000028816, 0.0000028780, 0.0000028752, 0.0000028737, + 0.0000028687, 0.0000028640, 0.0000028580, 0.0000028535, 0.0000028450, + 0.0000028408, 0.0000028402, 0.0000028465, 0.0000028567, 0.0000028651, + 0.0000028684, 0.0000028714, 0.0000028753, 0.0000028790, 0.0000028801, + 0.0000028804, 0.0000028805, 0.0000028815, 0.0000028816, 0.0000028784, + 0.0000028728, 0.0000028625, 0.0000028489, 0.0000028351, 0.0000028274, + 0.0000028271, 0.0000028397, 0.0000028570, 0.0000028669, 0.0000028695, + 0.0000028624, 0.0000028514, 0.0000028407, 0.0000028360, 0.0000028379, + 0.0000028437, 0.0000028488, 0.0000028534, 0.0000028561, 0.0000028568, + 0.0000028561, 0.0000028548, 0.0000028531, 0.0000028500, 0.0000028436, + 0.0000028354, 0.0000028269, 0.0000028183, 0.0000028112, 0.0000028048, + 0.0000027979, 0.0000027935, 0.0000027932, 0.0000027931, 0.0000027894, + 0.0000027829, 0.0000027758, 0.0000027689, 0.0000027641, 0.0000027631, + 0.0000027644, 0.0000027683, 0.0000027719, 0.0000027729, 0.0000027721, + 0.0000027684, 0.0000027636, 0.0000027610, 0.0000027606, 0.0000027633, + 0.0000027678, 0.0000027672, 0.0000027695, 0.0000027920, 0.0000028226, + 0.0000028267, 0.0000028160, 0.0000028172, 0.0000028232, 0.0000028265, + 0.0000028258, 0.0000028227, 0.0000028168, 0.0000028118, 0.0000028043, + 0.0000027947, 0.0000027831, 0.0000027696, 0.0000027601, 0.0000027574, + 0.0000027574, 0.0000027582, 0.0000027631, 0.0000027742, 0.0000027813, + 0.0000027772, 0.0000027647, 0.0000027541, 0.0000027517, 0.0000027551, + 0.0000027598, 0.0000027579, 0.0000027526, 0.0000027560, 0.0000027655, + 0.0000027764, 0.0000027883, 0.0000028009, 0.0000028060, 0.0000028045, + 0.0000027985, 0.0000027940, 0.0000027923, 0.0000027911, 0.0000027895, + 0.0000027898, 0.0000027921, 0.0000027955, 0.0000028014, 0.0000028109, + 0.0000028205, 0.0000028248, 0.0000028247, 0.0000028184, 0.0000028067, + 0.0000027933, 0.0000027841, 0.0000027802, 0.0000027745, 0.0000027681, + 0.0000027643, 0.0000027643, 0.0000027684, 0.0000027787, 0.0000027855, + 0.0000027901, 0.0000027956, 0.0000028010, 0.0000028008, 0.0000027959, + 0.0000027898, 0.0000027831, 0.0000027769, 0.0000027723, 0.0000027698, + 0.0000027706, 0.0000027756, 0.0000027825, 0.0000027914, 0.0000028079, + 0.0000028225, 0.0000028294, 0.0000028399, 0.0000028556, 0.0000028666, + 0.0000028739, 0.0000028761, 0.0000028755, 0.0000028728, 0.0000028762, + 0.0000028804, 0.0000028820, 0.0000028837, 0.0000028842, 0.0000028822, + 0.0000028776, 0.0000028754, 0.0000028729, 0.0000028674, 0.0000028606, + 0.0000028488, 0.0000028346, 0.0000028242, 0.0000028216, 0.0000028265, + 0.0000028361, 0.0000028431, 0.0000028547, 0.0000028642, 0.0000028590, + 0.0000028451, 0.0000028419, 0.0000028484, 0.0000028540, 0.0000028555, + 0.0000028559, 0.0000028563, 0.0000028565, 0.0000028577, 0.0000028614, + 0.0000028659, 0.0000028693, 0.0000028723, 0.0000028759, 0.0000028836, + 0.0000028932, 0.0000028966, 0.0000028931, 0.0000028873, 0.0000028862, + 0.0000028873, 0.0000028865, 0.0000028858, 0.0000028879, 0.0000028889, + 0.0000028882, 0.0000028896, 0.0000028892, 0.0000028855, 0.0000028803, + 0.0000028778, 0.0000028766, 0.0000028736, 0.0000028659, 0.0000028524, + 0.0000028390, 0.0000028316, 0.0000028311, 0.0000028343, 0.0000028330, + 0.0000028267, 0.0000028166, 0.0000028082, 0.0000028043, 0.0000028053, + 0.0000028122, 0.0000028170, 0.0000028183, 0.0000028167, 0.0000028143, + 0.0000028101, 0.0000028037, 0.0000027949, 0.0000027876, 0.0000027811, + 0.0000027746, 0.0000027725, 0.0000027714, 0.0000027706, 0.0000027751, + 0.0000027830, 0.0000027911, 0.0000027973, 0.0000027998, 0.0000027999, + 0.0000027976, 0.0000027944, 0.0000027922, 0.0000027909, 0.0000027896, + 0.0000027884, 0.0000027888, 0.0000027908, 0.0000027951, 0.0000027999, + 0.0000028037, 0.0000028048, 0.0000028035, 0.0000028009, 0.0000028006, + 0.0000028032, 0.0000028082, 0.0000028120, 0.0000028158, 0.0000028223, + 0.0000028310, 0.0000028398, 0.0000028457, 0.0000028486, 0.0000028503, + 0.0000028512, 0.0000028502, 0.0000028440, 0.0000028377, 0.0000028371, + 0.0000028396, 0.0000028393, 0.0000028307, 0.0000028163, 0.0000028045, + 0.0000028001, 0.0000028017, 0.0000028036, 0.0000028031, 0.0000027965, + 0.0000027872, 0.0000027832, 0.0000027853, 0.0000027923, 0.0000027964, + 0.0000027965, 0.0000027914, 0.0000027848, 0.0000027874, 0.0000027905, + 0.0000027941, 0.0000028045, 0.0000028109, 0.0000028199, 0.0000028388, + 0.0000028459, 0.0000028386, 0.0000028294, 0.0000028316, 0.0000028459, + 0.0000028588, 0.0000028614, 0.0000028594, 0.0000028546, 0.0000028531, + 0.0000028467, 0.0000028309, 0.0000028147, 0.0000028094, 0.0000028125, + 0.0000028193, 0.0000028254, 0.0000028247, 0.0000028219, 0.0000028207, + 0.0000028228, 0.0000028242, 0.0000028222, 0.0000028185, 0.0000028150, + 0.0000028103, 0.0000028045, 0.0000027985, 0.0000027949, 0.0000027945, + 0.0000027960, 0.0000027975, 0.0000027987, 0.0000027994, 0.0000028005, + 0.0000028018, 0.0000028019, 0.0000028007, 0.0000027985, 0.0000027945, + 0.0000027889, 0.0000027830, 0.0000027772, 0.0000027717, 0.0000027674, + 0.0000027654, 0.0000027644, 0.0000027636, 0.0000027638, 0.0000027668, + 0.0000027705, 0.0000027728, 0.0000027719, 0.0000027675, 0.0000027592, + 0.0000027478, 0.0000027389, 0.0000027362, 0.0000027371, 0.0000027388, + 0.0000027395, 0.0000027391, 0.0000027399, 0.0000027459, 0.0000027575, + 0.0000027734, 0.0000027896, 0.0000028011, 0.0000028080, 0.0000028108, + 0.0000028127, 0.0000028192, 0.0000028306, 0.0000028386, 0.0000028403, + 0.0000028415, 0.0000028491, 0.0000028569, 0.0000028599, 0.0000028589, + 0.0000028528, 0.0000028461, 0.0000028464, 0.0000028518, 0.0000028579, + 0.0000028580, 0.0000028527, 0.0000028407, 0.0000028329, 0.0000028291, + 0.0000028265, 0.0000028230, 0.0000028249, 0.0000028288, 0.0000028326, + 0.0000028298, 0.0000028239, 0.0000028175, 0.0000028120, 0.0000028085, + 0.0000028051, 0.0000028024, 0.0000027995, 0.0000027951, 0.0000027900, + 0.0000027864, 0.0000027839, 0.0000027832, 0.0000027855, 0.0000027925, + 0.0000028045, 0.0000028177, 0.0000028281, 0.0000028356, 0.0000028390, + 0.0000028373, 0.0000028298, 0.0000028180, 0.0000028044, 0.0000027924, + 0.0000027846, 0.0000027810, 0.0000027795, 0.0000027790, 0.0000027775, + 0.0000027747, 0.0000027712, 0.0000027679, 0.0000027664, 0.0000027686, + 0.0000027749, 0.0000027810, 0.0000027838, 0.0000027846, 0.0000027854, + 0.0000027866, 0.0000027879, 0.0000027880, 0.0000027870, 0.0000027859, + 0.0000027845, 0.0000027817, 0.0000027818, 0.0000027873, 0.0000027951, + 0.0000028036, 0.0000028148, 0.0000028246, 0.0000028270, 0.0000028249, + 0.0000028245, 0.0000028269, 0.0000028295, 0.0000028308, 0.0000028357, + 0.0000028475, 0.0000028555, 0.0000028532, 0.0000028373, 0.0000028094, + 0.0000027892, 0.0000027884, 0.0000028020, 0.0000028240, 0.0000028396, + 0.0000028404, 0.0000028311, 0.0000028238, 0.0000028283, 0.0000028450, + 0.0000028602, 0.0000028638, 0.0000028641, 0.0000028701, 0.0000028760, + 0.0000028759, 0.0000028730, 0.0000028717, 0.0000028738, 0.0000028791, + 0.0000028870, 0.0000028967, 0.0000029059, 0.0000029110, 0.0000029118, + 0.0000029110, 0.0000029090, 0.0000029058, 0.0000029010, 0.0000028973, + 0.0000028974, 0.0000029010, 0.0000029045, 0.0000029084, 0.0000029131, + 0.0000029194, 0.0000029280, 0.0000029371, 0.0000029450, 0.0000029521, + 0.0000029586, 0.0000029622, 0.0000029599, 0.0000029510, 0.0000029384, + 0.0000029255, 0.0000029144, 0.0000029048, 0.0000028939, 0.0000028808, + 0.0000028695, 0.0000028648, 0.0000028644, 0.0000028679, 0.0000028693, + 0.0000028646, 0.0000028570, 0.0000028506, 0.0000028492, 0.0000028536, + 0.0000028598, 0.0000028654, 0.0000028695, 0.0000028729, 0.0000028747, + 0.0000028761, 0.0000028735, 0.0000028678, 0.0000028602, 0.0000028520, + 0.0000028444, 0.0000028392, 0.0000028365, 0.0000028347, 0.0000028322, + 0.0000028263, 0.0000028182, 0.0000028115, 0.0000028100, 0.0000028103, + 0.0000028114, 0.0000028136, 0.0000028183, 0.0000028254, 0.0000028317, + 0.0000028331, 0.0000028298, 0.0000028241, 0.0000028198, 0.0000028174, + 0.0000028170, 0.0000028179, 0.0000028181, 0.0000028160, 0.0000028174, + 0.0000028291, 0.0000028398, 0.0000028388, 0.0000028305, 0.0000028278, + 0.0000028303, 0.0000028365, 0.0000028467, 0.0000028537, 0.0000028520, + 0.0000028494, 0.0000028503, 0.0000028500, 0.0000028485, 0.0000028484, + 0.0000028466, 0.0000028393, 0.0000028302, 0.0000028214, 0.0000028115, + 0.0000028035, 0.0000028014, 0.0000028021, 0.0000027991, 0.0000027941, + 0.0000027911, 0.0000027890, 0.0000027834, 0.0000027761, 0.0000027705, + 0.0000027727, 0.0000027820, 0.0000027891, 0.0000027872, 0.0000027824, + 0.0000027785, 0.0000027775, 0.0000027793, 0.0000027847, 0.0000027908, + 0.0000027930, 0.0000027899, 0.0000027857, 0.0000027846, 0.0000027883, + 0.0000027944, 0.0000028003, 0.0000028051, 0.0000028088, 0.0000028109, + 0.0000028105, 0.0000028081, 0.0000028038, 0.0000027985, 0.0000027942, + 0.0000027917, 0.0000027918, 0.0000027942, 0.0000027976, 0.0000028011, + 0.0000028023, 0.0000028004, 0.0000027987, 0.0000028003, 0.0000028062, + 0.0000028146, 0.0000028210, 0.0000028242, 0.0000028240, 0.0000028192, + 0.0000028117, 0.0000028022, 0.0000027949, 0.0000027935, 0.0000027961, + 0.0000028002, 0.0000028021, 0.0000028011, 0.0000027983, 0.0000027977, + 0.0000028053, 0.0000028278, 0.0000028519, 0.0000028613, 0.0000028642, + 0.0000028736, 0.0000028862, 0.0000028935, 0.0000028925, 0.0000028877, + 0.0000028819, 0.0000028790, 0.0000028769, 0.0000028751, 0.0000028737, + 0.0000028723, 0.0000028689, 0.0000028673, 0.0000028637, 0.0000028560, + 0.0000028469, 0.0000028406, 0.0000028412, 0.0000028453, 0.0000028514, + 0.0000028538, 0.0000028551, 0.0000028593, 0.0000028675, 0.0000028745, + 0.0000028777, 0.0000028769, 0.0000028755, 0.0000028745, 0.0000028744, + 0.0000028744, 0.0000028714, 0.0000028650, 0.0000028531, 0.0000028388, + 0.0000028264, 0.0000028248, 0.0000028356, 0.0000028545, 0.0000028698, + 0.0000028720, 0.0000028651, 0.0000028546, 0.0000028458, 0.0000028434, + 0.0000028468, 0.0000028521, 0.0000028563, 0.0000028584, 0.0000028586, + 0.0000028560, 0.0000028524, 0.0000028491, 0.0000028466, 0.0000028432, + 0.0000028375, 0.0000028312, 0.0000028260, 0.0000028222, 0.0000028179, + 0.0000028104, 0.0000028011, 0.0000027951, 0.0000027932, 0.0000027907, + 0.0000027866, 0.0000027819, 0.0000027768, 0.0000027710, 0.0000027657, + 0.0000027633, 0.0000027642, 0.0000027677, 0.0000027705, 0.0000027709, + 0.0000027695, 0.0000027652, 0.0000027623, 0.0000027623, 0.0000027635, + 0.0000027670, 0.0000027723, 0.0000027731, 0.0000027742, 0.0000027906, + 0.0000028242, 0.0000028353, 0.0000028222, 0.0000028154, 0.0000028178, + 0.0000028207, 0.0000028216, 0.0000028214, 0.0000028197, 0.0000028173, + 0.0000028121, 0.0000028026, 0.0000027898, 0.0000027743, 0.0000027624, + 0.0000027587, 0.0000027588, 0.0000027602, 0.0000027652, 0.0000027760, + 0.0000027827, 0.0000027795, 0.0000027675, 0.0000027556, 0.0000027504, + 0.0000027512, 0.0000027550, 0.0000027565, 0.0000027544, 0.0000027535, + 0.0000027580, 0.0000027693, 0.0000027831, 0.0000027963, 0.0000028019, + 0.0000028013, 0.0000027986, 0.0000027954, 0.0000027944, 0.0000027927, + 0.0000027891, 0.0000027864, 0.0000027863, 0.0000027885, 0.0000027940, + 0.0000028042, 0.0000028164, 0.0000028242, 0.0000028247, 0.0000028207, + 0.0000028087, 0.0000027942, 0.0000027847, 0.0000027808, 0.0000027760, + 0.0000027702, 0.0000027660, 0.0000027657, 0.0000027712, 0.0000027810, + 0.0000027884, 0.0000027935, 0.0000027989, 0.0000028008, 0.0000027984, + 0.0000027944, 0.0000027912, 0.0000027868, 0.0000027818, 0.0000027781, + 0.0000027756, 0.0000027767, 0.0000027819, 0.0000027877, 0.0000027961, + 0.0000028115, 0.0000028226, 0.0000028276, 0.0000028408, 0.0000028568, + 0.0000028692, 0.0000028791, 0.0000028791, 0.0000028742, 0.0000028698, + 0.0000028730, 0.0000028775, 0.0000028828, 0.0000028861, 0.0000028826, + 0.0000028759, 0.0000028714, 0.0000028727, 0.0000028720, 0.0000028664, + 0.0000028592, 0.0000028464, 0.0000028306, 0.0000028175, 0.0000028125, + 0.0000028173, 0.0000028299, 0.0000028405, 0.0000028496, 0.0000028618, + 0.0000028627, 0.0000028466, 0.0000028393, 0.0000028464, 0.0000028542, + 0.0000028560, 0.0000028553, 0.0000028533, 0.0000028509, 0.0000028521, + 0.0000028584, 0.0000028680, 0.0000028747, 0.0000028769, 0.0000028791, + 0.0000028897, 0.0000028993, 0.0000028995, 0.0000028926, 0.0000028879, + 0.0000028881, 0.0000028901, 0.0000028907, 0.0000028898, 0.0000028890, + 0.0000028892, 0.0000028884, 0.0000028887, 0.0000028894, 0.0000028863, + 0.0000028796, 0.0000028732, 0.0000028680, 0.0000028627, 0.0000028543, + 0.0000028431, 0.0000028318, 0.0000028271, 0.0000028275, 0.0000028298, + 0.0000028272, 0.0000028197, 0.0000028083, 0.0000027991, 0.0000027931, + 0.0000027920, 0.0000027980, 0.0000028027, 0.0000028043, 0.0000028028, + 0.0000027996, 0.0000027959, 0.0000027911, 0.0000027847, 0.0000027781, + 0.0000027736, 0.0000027690, 0.0000027661, 0.0000027659, 0.0000027658, + 0.0000027677, 0.0000027735, 0.0000027805, 0.0000027866, 0.0000027892, + 0.0000027889, 0.0000027872, 0.0000027836, 0.0000027803, 0.0000027790, + 0.0000027787, 0.0000027778, 0.0000027756, 0.0000027748, 0.0000027758, + 0.0000027795, 0.0000027845, 0.0000027885, 0.0000027903, 0.0000027895, + 0.0000027885, 0.0000027910, 0.0000027957, 0.0000028023, 0.0000028064, + 0.0000028097, 0.0000028140, 0.0000028195, 0.0000028258, 0.0000028320, + 0.0000028378, 0.0000028421, 0.0000028432, 0.0000028428, 0.0000028416, + 0.0000028393, 0.0000028354, 0.0000028338, 0.0000028352, 0.0000028315, + 0.0000028228, 0.0000028126, 0.0000028045, 0.0000028019, 0.0000028029, + 0.0000028042, 0.0000028012, 0.0000027917, 0.0000027834, 0.0000027823, + 0.0000027875, 0.0000027932, 0.0000027962, 0.0000027917, 0.0000027815, + 0.0000027811, 0.0000027870, 0.0000027909, 0.0000028003, 0.0000028070, + 0.0000028162, 0.0000028371, 0.0000028452, 0.0000028373, 0.0000028291, + 0.0000028332, 0.0000028493, 0.0000028614, 0.0000028634, 0.0000028599, + 0.0000028537, 0.0000028505, 0.0000028396, 0.0000028226, 0.0000028092, + 0.0000028082, 0.0000028134, 0.0000028209, 0.0000028253, 0.0000028207, + 0.0000028182, 0.0000028201, 0.0000028215, 0.0000028173, 0.0000028107, + 0.0000028052, 0.0000028011, 0.0000027956, 0.0000027887, 0.0000027820, + 0.0000027786, 0.0000027786, 0.0000027810, 0.0000027824, 0.0000027832, + 0.0000027829, 0.0000027829, 0.0000027831, 0.0000027829, 0.0000027819, + 0.0000027796, 0.0000027768, 0.0000027735, 0.0000027685, 0.0000027634, + 0.0000027599, 0.0000027573, 0.0000027572, 0.0000027579, 0.0000027591, + 0.0000027597, 0.0000027616, 0.0000027644, 0.0000027663, 0.0000027657, + 0.0000027628, 0.0000027569, 0.0000027478, 0.0000027395, 0.0000027365, + 0.0000027380, 0.0000027414, 0.0000027427, 0.0000027415, 0.0000027411, + 0.0000027445, 0.0000027542, 0.0000027689, 0.0000027841, 0.0000027960, + 0.0000028036, 0.0000028091, 0.0000028136, 0.0000028203, 0.0000028329, + 0.0000028423, 0.0000028417, 0.0000028409, 0.0000028452, 0.0000028523, + 0.0000028563, 0.0000028586, 0.0000028558, 0.0000028504, 0.0000028494, + 0.0000028535, 0.0000028596, 0.0000028616, 0.0000028577, 0.0000028479, + 0.0000028388, 0.0000028303, 0.0000028253, 0.0000028191, 0.0000028190, + 0.0000028230, 0.0000028308, 0.0000028349, 0.0000028344, 0.0000028295, + 0.0000028215, 0.0000028127, 0.0000028052, 0.0000028007, 0.0000027977, + 0.0000027937, 0.0000027888, 0.0000027847, 0.0000027818, 0.0000027806, + 0.0000027831, 0.0000027890, 0.0000027990, 0.0000028120, 0.0000028222, + 0.0000028286, 0.0000028303, 0.0000028274, 0.0000028192, 0.0000028083, + 0.0000027976, 0.0000027907, 0.0000027872, 0.0000027865, 0.0000027861, + 0.0000027847, 0.0000027822, 0.0000027795, 0.0000027764, 0.0000027729, + 0.0000027703, 0.0000027705, 0.0000027756, 0.0000027825, 0.0000027867, + 0.0000027881, 0.0000027895, 0.0000027918, 0.0000027950, 0.0000027974, + 0.0000027965, 0.0000027921, 0.0000027875, 0.0000027844, 0.0000027825, + 0.0000027841, 0.0000027892, 0.0000027955, 0.0000028046, 0.0000028168, + 0.0000028259, 0.0000028280, 0.0000028279, 0.0000028286, 0.0000028307, + 0.0000028324, 0.0000028336, 0.0000028405, 0.0000028529, 0.0000028573, + 0.0000028528, 0.0000028331, 0.0000028045, 0.0000027895, 0.0000027927, + 0.0000028085, 0.0000028308, 0.0000028444, 0.0000028439, 0.0000028345, + 0.0000028274, 0.0000028313, 0.0000028448, 0.0000028556, 0.0000028573, + 0.0000028587, 0.0000028669, 0.0000028753, 0.0000028761, 0.0000028722, + 0.0000028689, 0.0000028682, 0.0000028698, 0.0000028736, 0.0000028801, + 0.0000028881, 0.0000028943, 0.0000028969, 0.0000028969, 0.0000028956, + 0.0000028922, 0.0000028867, 0.0000028832, 0.0000028861, 0.0000028908, + 0.0000028932, 0.0000028943, 0.0000028963, 0.0000029027, 0.0000029143, + 0.0000029264, 0.0000029338, 0.0000029390, 0.0000029479, 0.0000029593, + 0.0000029662, 0.0000029642, 0.0000029526, 0.0000029357, 0.0000029205, + 0.0000029098, 0.0000029025, 0.0000028957, 0.0000028883, 0.0000028806, + 0.0000028732, 0.0000028674, 0.0000028645, 0.0000028603, 0.0000028543, + 0.0000028502, 0.0000028486, 0.0000028482, 0.0000028482, 0.0000028496, + 0.0000028528, 0.0000028584, 0.0000028661, 0.0000028724, 0.0000028748, + 0.0000028728, 0.0000028686, 0.0000028613, 0.0000028540, 0.0000028482, + 0.0000028442, 0.0000028416, 0.0000028395, 0.0000028363, 0.0000028307, + 0.0000028244, 0.0000028226, 0.0000028247, 0.0000028273, 0.0000028284, + 0.0000028290, 0.0000028320, 0.0000028370, 0.0000028405, 0.0000028397, + 0.0000028354, 0.0000028310, 0.0000028291, 0.0000028292, 0.0000028304, + 0.0000028305, 0.0000028266, 0.0000028185, 0.0000028168, 0.0000028274, + 0.0000028393, 0.0000028390, 0.0000028306, 0.0000028285, 0.0000028321, + 0.0000028399, 0.0000028487, 0.0000028529, 0.0000028512, 0.0000028510, + 0.0000028521, 0.0000028489, 0.0000028454, 0.0000028459, 0.0000028449, + 0.0000028388, 0.0000028309, 0.0000028227, 0.0000028130, 0.0000028038, + 0.0000028005, 0.0000028008, 0.0000027993, 0.0000027956, 0.0000027925, + 0.0000027913, 0.0000027903, 0.0000027861, 0.0000027773, 0.0000027732, + 0.0000027774, 0.0000027835, 0.0000027851, 0.0000027832, 0.0000027813, + 0.0000027822, 0.0000027856, 0.0000027903, 0.0000027957, 0.0000027977, + 0.0000027940, 0.0000027880, 0.0000027851, 0.0000027873, 0.0000027915, + 0.0000027955, 0.0000027994, 0.0000028054, 0.0000028105, 0.0000028113, + 0.0000028081, 0.0000028017, 0.0000027950, 0.0000027905, 0.0000027890, + 0.0000027894, 0.0000027919, 0.0000027945, 0.0000027959, 0.0000027980, + 0.0000027989, 0.0000027988, 0.0000027996, 0.0000028032, 0.0000028092, + 0.0000028128, 0.0000028139, 0.0000028117, 0.0000028052, 0.0000027965, + 0.0000027909, 0.0000027916, 0.0000027972, 0.0000028039, 0.0000028081, + 0.0000028082, 0.0000028061, 0.0000028017, 0.0000027972, 0.0000027980, + 0.0000028125, 0.0000028401, 0.0000028574, 0.0000028611, 0.0000028663, + 0.0000028784, 0.0000028890, 0.0000028918, 0.0000028885, 0.0000028820, + 0.0000028767, 0.0000028742, 0.0000028732, 0.0000028722, 0.0000028723, + 0.0000028695, 0.0000028709, 0.0000028698, 0.0000028665, 0.0000028575, + 0.0000028484, 0.0000028449, 0.0000028455, 0.0000028485, 0.0000028498, + 0.0000028473, 0.0000028458, 0.0000028498, 0.0000028587, 0.0000028670, + 0.0000028711, 0.0000028720, 0.0000028706, 0.0000028682, 0.0000028670, + 0.0000028681, 0.0000028679, 0.0000028627, 0.0000028533, 0.0000028390, + 0.0000028265, 0.0000028233, 0.0000028347, 0.0000028567, 0.0000028716, + 0.0000028718, 0.0000028655, 0.0000028575, 0.0000028520, 0.0000028521, + 0.0000028550, 0.0000028582, 0.0000028605, 0.0000028612, 0.0000028593, + 0.0000028546, 0.0000028497, 0.0000028466, 0.0000028431, 0.0000028371, + 0.0000028291, 0.0000028238, 0.0000028230, 0.0000028237, 0.0000028225, + 0.0000028155, 0.0000028058, 0.0000027980, 0.0000027914, 0.0000027844, + 0.0000027799, 0.0000027770, 0.0000027739, 0.0000027698, 0.0000027651, + 0.0000027624, 0.0000027631, 0.0000027663, 0.0000027693, 0.0000027697, + 0.0000027675, 0.0000027638, 0.0000027637, 0.0000027657, 0.0000027675, + 0.0000027705, 0.0000027762, 0.0000027781, 0.0000027766, 0.0000027866, + 0.0000028167, 0.0000028345, 0.0000028297, 0.0000028159, 0.0000028117, + 0.0000028138, 0.0000028152, 0.0000028176, 0.0000028196, 0.0000028200, + 0.0000028181, 0.0000028108, 0.0000027976, 0.0000027804, 0.0000027661, + 0.0000027598, 0.0000027591, 0.0000027609, 0.0000027663, 0.0000027767, + 0.0000027832, 0.0000027808, 0.0000027698, 0.0000027583, 0.0000027498, + 0.0000027471, 0.0000027487, 0.0000027535, 0.0000027572, 0.0000027553, + 0.0000027556, 0.0000027642, 0.0000027786, 0.0000027928, 0.0000027996, + 0.0000028006, 0.0000028011, 0.0000027994, 0.0000027990, 0.0000027963, + 0.0000027908, 0.0000027863, 0.0000027830, 0.0000027830, 0.0000027867, + 0.0000027957, 0.0000028085, 0.0000028193, 0.0000028237, 0.0000028206, + 0.0000028099, 0.0000027954, 0.0000027851, 0.0000027808, 0.0000027774, + 0.0000027722, 0.0000027676, 0.0000027679, 0.0000027751, 0.0000027839, + 0.0000027906, 0.0000027959, 0.0000027997, 0.0000027990, 0.0000027953, + 0.0000027934, 0.0000027937, 0.0000027923, 0.0000027888, 0.0000027849, + 0.0000027824, 0.0000027833, 0.0000027883, 0.0000027933, 0.0000028016, + 0.0000028138, 0.0000028208, 0.0000028270, 0.0000028408, 0.0000028571, + 0.0000028725, 0.0000028826, 0.0000028780, 0.0000028702, 0.0000028657, + 0.0000028697, 0.0000028784, 0.0000028856, 0.0000028838, 0.0000028763, + 0.0000028704, 0.0000028675, 0.0000028683, 0.0000028657, 0.0000028582, + 0.0000028501, 0.0000028377, 0.0000028235, 0.0000028128, 0.0000028075, + 0.0000028115, 0.0000028235, 0.0000028386, 0.0000028472, 0.0000028564, + 0.0000028606, 0.0000028486, 0.0000028368, 0.0000028419, 0.0000028521, + 0.0000028555, 0.0000028533, 0.0000028496, 0.0000028475, 0.0000028485, + 0.0000028573, 0.0000028712, 0.0000028794, 0.0000028808, 0.0000028839, + 0.0000028972, 0.0000029046, 0.0000029001, 0.0000028918, 0.0000028890, + 0.0000028899, 0.0000028915, 0.0000028906, 0.0000028884, 0.0000028865, + 0.0000028865, 0.0000028879, 0.0000028876, 0.0000028870, 0.0000028811, + 0.0000028731, 0.0000028651, 0.0000028595, 0.0000028566, 0.0000028505, + 0.0000028411, 0.0000028301, 0.0000028221, 0.0000028202, 0.0000028203, + 0.0000028171, 0.0000028093, 0.0000027982, 0.0000027879, 0.0000027811, + 0.0000027774, 0.0000027807, 0.0000027849, 0.0000027875, 0.0000027877, + 0.0000027855, 0.0000027839, 0.0000027812, 0.0000027773, 0.0000027727, + 0.0000027705, 0.0000027673, 0.0000027637, 0.0000027617, 0.0000027602, + 0.0000027596, 0.0000027604, 0.0000027627, 0.0000027657, 0.0000027677, + 0.0000027680, 0.0000027675, 0.0000027661, 0.0000027645, 0.0000027627, + 0.0000027621, 0.0000027621, 0.0000027611, 0.0000027589, 0.0000027574, + 0.0000027579, 0.0000027611, 0.0000027657, 0.0000027696, 0.0000027724, + 0.0000027730, 0.0000027746, 0.0000027803, 0.0000027870, 0.0000027949, + 0.0000028004, 0.0000028042, 0.0000028083, 0.0000028139, 0.0000028182, + 0.0000028211, 0.0000028263, 0.0000028338, 0.0000028370, 0.0000028356, + 0.0000028351, 0.0000028382, 0.0000028376, 0.0000028312, 0.0000028285, + 0.0000028277, 0.0000028256, 0.0000028206, 0.0000028129, 0.0000028069, + 0.0000028051, 0.0000028058, 0.0000028054, 0.0000027983, 0.0000027881, + 0.0000027831, 0.0000027847, 0.0000027888, 0.0000027930, 0.0000027914, + 0.0000027818, 0.0000027762, 0.0000027826, 0.0000027888, 0.0000027968, + 0.0000028040, 0.0000028157, 0.0000028377, 0.0000028448, 0.0000028361, + 0.0000028299, 0.0000028367, 0.0000028528, 0.0000028634, 0.0000028648, + 0.0000028594, 0.0000028527, 0.0000028471, 0.0000028327, 0.0000028150, + 0.0000028065, 0.0000028091, 0.0000028152, 0.0000028218, 0.0000028236, + 0.0000028179, 0.0000028171, 0.0000028182, 0.0000028124, 0.0000028018, + 0.0000027957, 0.0000027929, 0.0000027896, 0.0000027838, 0.0000027766, + 0.0000027699, 0.0000027669, 0.0000027674, 0.0000027712, 0.0000027736, + 0.0000027752, 0.0000027752, 0.0000027755, 0.0000027759, 0.0000027766, + 0.0000027766, 0.0000027755, 0.0000027750, 0.0000027737, 0.0000027699, + 0.0000027653, 0.0000027619, 0.0000027596, 0.0000027600, 0.0000027611, + 0.0000027619, 0.0000027618, 0.0000027623, 0.0000027627, 0.0000027619, + 0.0000027588, 0.0000027546, 0.0000027495, 0.0000027428, 0.0000027390, + 0.0000027389, 0.0000027421, 0.0000027455, 0.0000027464, 0.0000027452, + 0.0000027439, 0.0000027450, 0.0000027519, 0.0000027641, 0.0000027778, + 0.0000027905, 0.0000027991, 0.0000028066, 0.0000028130, 0.0000028206, + 0.0000028347, 0.0000028436, 0.0000028411, 0.0000028394, 0.0000028411, + 0.0000028483, 0.0000028522, 0.0000028567, 0.0000028561, 0.0000028514, + 0.0000028487, 0.0000028511, 0.0000028559, 0.0000028601, 0.0000028586, + 0.0000028519, 0.0000028424, 0.0000028340, 0.0000028274, 0.0000028189, + 0.0000028153, 0.0000028171, 0.0000028236, 0.0000028300, 0.0000028343, + 0.0000028339, 0.0000028307, 0.0000028226, 0.0000028135, 0.0000028054, + 0.0000028003, 0.0000027957, 0.0000027912, 0.0000027867, 0.0000027836, + 0.0000027833, 0.0000027858, 0.0000027918, 0.0000027996, 0.0000028099, + 0.0000028186, 0.0000028224, 0.0000028221, 0.0000028182, 0.0000028115, + 0.0000028053, 0.0000027996, 0.0000027967, 0.0000027973, 0.0000027987, + 0.0000027992, 0.0000027972, 0.0000027929, 0.0000027888, 0.0000027856, + 0.0000027823, 0.0000027797, 0.0000027790, 0.0000027818, 0.0000027884, + 0.0000027939, 0.0000027963, 0.0000027974, 0.0000027995, 0.0000028034, + 0.0000028080, 0.0000028097, 0.0000028056, 0.0000027970, 0.0000027888, + 0.0000027844, 0.0000027835, 0.0000027866, 0.0000027910, 0.0000027963, + 0.0000028060, 0.0000028188, 0.0000028278, 0.0000028310, 0.0000028327, + 0.0000028334, 0.0000028338, 0.0000028339, 0.0000028359, 0.0000028452, + 0.0000028571, 0.0000028593, 0.0000028509, 0.0000028278, 0.0000028003, + 0.0000027910, 0.0000027970, 0.0000028149, 0.0000028372, 0.0000028492, + 0.0000028473, 0.0000028371, 0.0000028291, 0.0000028310, 0.0000028413, + 0.0000028491, 0.0000028498, 0.0000028516, 0.0000028613, 0.0000028722, + 0.0000028745, 0.0000028698, 0.0000028646, 0.0000028618, 0.0000028610, + 0.0000028619, 0.0000028655, 0.0000028718, 0.0000028781, 0.0000028815, + 0.0000028824, 0.0000028817, 0.0000028792, 0.0000028750, 0.0000028732, + 0.0000028784, 0.0000028842, 0.0000028865, 0.0000028861, 0.0000028852, + 0.0000028871, 0.0000028967, 0.0000029110, 0.0000029234, 0.0000029305, + 0.0000029354, 0.0000029424, 0.0000029519, 0.0000029583, 0.0000029561, + 0.0000029472, 0.0000029347, 0.0000029216, 0.0000029090, 0.0000028993, + 0.0000028935, 0.0000028901, 0.0000028871, 0.0000028831, 0.0000028773, + 0.0000028693, 0.0000028610, 0.0000028555, 0.0000028525, 0.0000028498, + 0.0000028472, 0.0000028429, 0.0000028401, 0.0000028424, 0.0000028493, + 0.0000028581, 0.0000028645, 0.0000028669, 0.0000028655, 0.0000028606, + 0.0000028547, 0.0000028501, 0.0000028467, 0.0000028438, 0.0000028421, + 0.0000028395, 0.0000028353, 0.0000028304, 0.0000028288, 0.0000028324, + 0.0000028379, 0.0000028409, 0.0000028399, 0.0000028379, 0.0000028385, + 0.0000028409, 0.0000028414, 0.0000028392, 0.0000028361, 0.0000028354, + 0.0000028374, 0.0000028406, 0.0000028423, 0.0000028411, 0.0000028335, + 0.0000028201, 0.0000028152, 0.0000028259, 0.0000028387, 0.0000028385, + 0.0000028308, 0.0000028295, 0.0000028352, 0.0000028433, 0.0000028492, + 0.0000028512, 0.0000028506, 0.0000028526, 0.0000028528, 0.0000028460, + 0.0000028414, 0.0000028428, 0.0000028422, 0.0000028362, 0.0000028286, + 0.0000028221, 0.0000028144, 0.0000028072, 0.0000028037, 0.0000028016, + 0.0000027980, 0.0000027943, 0.0000027912, 0.0000027922, 0.0000027946, + 0.0000027946, 0.0000027871, 0.0000027782, 0.0000027747, 0.0000027748, + 0.0000027771, 0.0000027797, 0.0000027829, 0.0000027878, 0.0000027921, + 0.0000027971, 0.0000028022, 0.0000028047, 0.0000028013, 0.0000027950, + 0.0000027911, 0.0000027909, 0.0000027923, 0.0000027931, 0.0000027938, + 0.0000027999, 0.0000028081, 0.0000028124, 0.0000028111, 0.0000028042, + 0.0000027945, 0.0000027870, 0.0000027847, 0.0000027870, 0.0000027916, + 0.0000027955, 0.0000027956, 0.0000027957, 0.0000027958, 0.0000027969, + 0.0000027984, 0.0000028017, 0.0000028058, 0.0000028068, 0.0000028045, + 0.0000028001, 0.0000027948, 0.0000027904, 0.0000027895, 0.0000027960, + 0.0000028053, 0.0000028113, 0.0000028135, 0.0000028121, 0.0000028099, + 0.0000028055, 0.0000027987, 0.0000027946, 0.0000028003, 0.0000028259, + 0.0000028505, 0.0000028579, 0.0000028606, 0.0000028700, 0.0000028821, + 0.0000028888, 0.0000028884, 0.0000028843, 0.0000028780, 0.0000028745, + 0.0000028733, 0.0000028732, 0.0000028733, 0.0000028715, 0.0000028723, + 0.0000028728, 0.0000028726, 0.0000028650, 0.0000028567, 0.0000028514, + 0.0000028492, 0.0000028498, 0.0000028511, 0.0000028500, 0.0000028469, + 0.0000028453, 0.0000028486, 0.0000028536, 0.0000028582, 0.0000028620, + 0.0000028653, 0.0000028657, 0.0000028628, 0.0000028612, 0.0000028622, + 0.0000028623, 0.0000028578, 0.0000028487, 0.0000028343, 0.0000028227, + 0.0000028242, 0.0000028428, 0.0000028651, 0.0000028728, 0.0000028705, + 0.0000028650, 0.0000028596, 0.0000028570, 0.0000028558, 0.0000028561, + 0.0000028563, 0.0000028564, 0.0000028556, 0.0000028526, 0.0000028485, + 0.0000028453, 0.0000028424, 0.0000028374, 0.0000028290, 0.0000028199, + 0.0000028169, 0.0000028192, 0.0000028228, 0.0000028221, 0.0000028178, + 0.0000028096, 0.0000027997, 0.0000027881, 0.0000027788, 0.0000027733, + 0.0000027719, 0.0000027709, 0.0000027687, 0.0000027645, 0.0000027615, + 0.0000027613, 0.0000027643, 0.0000027676, 0.0000027680, 0.0000027655, + 0.0000027635, 0.0000027660, 0.0000027701, 0.0000027725, 0.0000027752, + 0.0000027800, 0.0000027817, 0.0000027786, 0.0000027820, 0.0000028022, + 0.0000028282, 0.0000028359, 0.0000028216, 0.0000028106, 0.0000028076, + 0.0000028084, 0.0000028105, 0.0000028159, 0.0000028198, 0.0000028203, + 0.0000028171, 0.0000028057, 0.0000027883, 0.0000027713, 0.0000027614, + 0.0000027597, 0.0000027612, 0.0000027666, 0.0000027770, 0.0000027836, + 0.0000027815, 0.0000027717, 0.0000027612, 0.0000027513, 0.0000027450, + 0.0000027445, 0.0000027499, 0.0000027582, 0.0000027615, 0.0000027606, + 0.0000027663, 0.0000027751, 0.0000027870, 0.0000027955, 0.0000027995, + 0.0000028014, 0.0000028012, 0.0000028018, 0.0000027999, 0.0000027953, + 0.0000027898, 0.0000027852, 0.0000027835, 0.0000027841, 0.0000027896, + 0.0000028006, 0.0000028116, 0.0000028181, 0.0000028168, 0.0000028075, + 0.0000027937, 0.0000027825, 0.0000027779, 0.0000027761, 0.0000027730, + 0.0000027698, 0.0000027722, 0.0000027807, 0.0000027877, 0.0000027923, + 0.0000027971, 0.0000027991, 0.0000027962, 0.0000027930, 0.0000027951, + 0.0000027996, 0.0000028006, 0.0000027973, 0.0000027928, 0.0000027890, + 0.0000027897, 0.0000027940, 0.0000027992, 0.0000028064, 0.0000028141, + 0.0000028196, 0.0000028273, 0.0000028401, 0.0000028587, 0.0000028757, + 0.0000028811, 0.0000028724, 0.0000028647, 0.0000028611, 0.0000028701, + 0.0000028825, 0.0000028852, 0.0000028786, 0.0000028694, 0.0000028614, + 0.0000028574, 0.0000028581, 0.0000028559, 0.0000028486, 0.0000028399, + 0.0000028273, 0.0000028145, 0.0000028078, 0.0000028051, 0.0000028097, + 0.0000028197, 0.0000028356, 0.0000028459, 0.0000028516, 0.0000028593, + 0.0000028514, 0.0000028358, 0.0000028360, 0.0000028487, 0.0000028537, + 0.0000028503, 0.0000028468, 0.0000028476, 0.0000028501, 0.0000028573, + 0.0000028732, 0.0000028822, 0.0000028831, 0.0000028889, 0.0000029037, + 0.0000029070, 0.0000028986, 0.0000028909, 0.0000028890, 0.0000028892, + 0.0000028886, 0.0000028858, 0.0000028834, 0.0000028828, 0.0000028840, + 0.0000028855, 0.0000028837, 0.0000028801, 0.0000028733, 0.0000028658, + 0.0000028603, 0.0000028564, 0.0000028542, 0.0000028488, 0.0000028397, + 0.0000028271, 0.0000028135, 0.0000028063, 0.0000028057, 0.0000028050, + 0.0000027997, 0.0000027911, 0.0000027805, 0.0000027735, 0.0000027687, + 0.0000027702, 0.0000027741, 0.0000027778, 0.0000027795, 0.0000027795, + 0.0000027771, 0.0000027742, 0.0000027694, 0.0000027634, 0.0000027603, + 0.0000027578, 0.0000027542, 0.0000027512, 0.0000027475, 0.0000027441, + 0.0000027436, 0.0000027426, 0.0000027432, 0.0000027448, 0.0000027452, + 0.0000027448, 0.0000027444, 0.0000027441, 0.0000027430, 0.0000027418, + 0.0000027420, 0.0000027428, 0.0000027427, 0.0000027409, 0.0000027385, + 0.0000027382, 0.0000027403, 0.0000027437, 0.0000027478, 0.0000027519, + 0.0000027552, 0.0000027606, 0.0000027695, 0.0000027789, 0.0000027885, + 0.0000027952, 0.0000027994, 0.0000028019, 0.0000028073, 0.0000028127, + 0.0000028152, 0.0000028166, 0.0000028234, 0.0000028303, 0.0000028305, + 0.0000028295, 0.0000028332, 0.0000028372, 0.0000028327, 0.0000028246, + 0.0000028210, 0.0000028225, 0.0000028228, 0.0000028193, 0.0000028139, + 0.0000028101, 0.0000028092, 0.0000028088, 0.0000028041, 0.0000027951, + 0.0000027873, 0.0000027850, 0.0000027868, 0.0000027886, 0.0000027883, + 0.0000027838, 0.0000027747, 0.0000027778, 0.0000027865, 0.0000027942, + 0.0000028014, 0.0000028174, 0.0000028401, 0.0000028445, 0.0000028350, + 0.0000028317, 0.0000028414, 0.0000028562, 0.0000028645, 0.0000028653, + 0.0000028580, 0.0000028515, 0.0000028425, 0.0000028256, 0.0000028087, + 0.0000028062, 0.0000028114, 0.0000028168, 0.0000028217, 0.0000028213, + 0.0000028173, 0.0000028166, 0.0000028099, 0.0000027961, 0.0000027872, + 0.0000027863, 0.0000027856, 0.0000027814, 0.0000027743, 0.0000027669, + 0.0000027606, 0.0000027583, 0.0000027590, 0.0000027629, 0.0000027665, + 0.0000027694, 0.0000027711, 0.0000027727, 0.0000027746, 0.0000027763, + 0.0000027797, 0.0000027816, 0.0000027834, 0.0000027836, 0.0000027813, + 0.0000027774, 0.0000027734, 0.0000027706, 0.0000027703, 0.0000027713, + 0.0000027716, 0.0000027709, 0.0000027694, 0.0000027675, 0.0000027641, + 0.0000027585, 0.0000027512, 0.0000027441, 0.0000027388, 0.0000027380, + 0.0000027405, 0.0000027459, 0.0000027510, 0.0000027522, 0.0000027516, + 0.0000027495, 0.0000027488, 0.0000027523, 0.0000027619, 0.0000027739, + 0.0000027856, 0.0000027949, 0.0000028021, 0.0000028101, 0.0000028212, + 0.0000028368, 0.0000028429, 0.0000028384, 0.0000028360, 0.0000028377, + 0.0000028432, 0.0000028473, 0.0000028521, 0.0000028526, 0.0000028482, + 0.0000028445, 0.0000028462, 0.0000028499, 0.0000028544, 0.0000028547, + 0.0000028512, 0.0000028418, 0.0000028355, 0.0000028283, 0.0000028196, + 0.0000028128, 0.0000028124, 0.0000028168, 0.0000028228, 0.0000028276, + 0.0000028295, 0.0000028281, 0.0000028244, 0.0000028173, 0.0000028100, + 0.0000028047, 0.0000028005, 0.0000027959, 0.0000027916, 0.0000027891, + 0.0000027897, 0.0000027926, 0.0000027971, 0.0000028025, 0.0000028082, + 0.0000028140, 0.0000028160, 0.0000028153, 0.0000028141, 0.0000028120, + 0.0000028082, 0.0000028043, 0.0000028032, 0.0000028058, 0.0000028093, + 0.0000028106, 0.0000028092, 0.0000028045, 0.0000027993, 0.0000027960, + 0.0000027934, 0.0000027906, 0.0000027885, 0.0000027887, 0.0000027926, + 0.0000027980, 0.0000028012, 0.0000028026, 0.0000028040, 0.0000028072, + 0.0000028122, 0.0000028165, 0.0000028164, 0.0000028098, 0.0000027992, + 0.0000027900, 0.0000027858, 0.0000027854, 0.0000027890, 0.0000027925, + 0.0000027978, 0.0000028083, 0.0000028217, 0.0000028314, 0.0000028365, + 0.0000028375, 0.0000028360, 0.0000028347, 0.0000028344, 0.0000028380, + 0.0000028494, 0.0000028591, 0.0000028587, 0.0000028478, 0.0000028219, + 0.0000027980, 0.0000027937, 0.0000028024, 0.0000028208, 0.0000028426, + 0.0000028533, 0.0000028502, 0.0000028383, 0.0000028278, 0.0000028273, + 0.0000028353, 0.0000028419, 0.0000028427, 0.0000028443, 0.0000028532, + 0.0000028645, 0.0000028680, 0.0000028643, 0.0000028576, 0.0000028527, + 0.0000028497, 0.0000028484, 0.0000028501, 0.0000028551, 0.0000028611, + 0.0000028651, 0.0000028669, 0.0000028675, 0.0000028664, 0.0000028642, + 0.0000028655, 0.0000028727, 0.0000028799, 0.0000028829, 0.0000028826, + 0.0000028811, 0.0000028817, 0.0000028875, 0.0000028968, 0.0000029072, + 0.0000029182, 0.0000029278, 0.0000029335, 0.0000029361, 0.0000029382, + 0.0000029395, 0.0000029390, 0.0000029363, 0.0000029320, 0.0000029247, + 0.0000029139, 0.0000029026, 0.0000028935, 0.0000028876, 0.0000028853, + 0.0000028840, 0.0000028828, 0.0000028797, 0.0000028756, 0.0000028698, + 0.0000028610, 0.0000028520, 0.0000028440, 0.0000028373, 0.0000028343, + 0.0000028372, 0.0000028428, 0.0000028491, 0.0000028526, 0.0000028527, + 0.0000028496, 0.0000028457, 0.0000028425, 0.0000028407, 0.0000028399, + 0.0000028391, 0.0000028373, 0.0000028336, 0.0000028291, 0.0000028272, + 0.0000028306, 0.0000028388, 0.0000028445, 0.0000028448, 0.0000028410, + 0.0000028379, 0.0000028376, 0.0000028378, 0.0000028363, 0.0000028342, + 0.0000028349, 0.0000028391, 0.0000028447, 0.0000028491, 0.0000028501, + 0.0000028479, 0.0000028368, 0.0000028193, 0.0000028135, 0.0000028255, + 0.0000028391, 0.0000028379, 0.0000028311, 0.0000028313, 0.0000028391, + 0.0000028458, 0.0000028481, 0.0000028488, 0.0000028502, 0.0000028540, + 0.0000028521, 0.0000028421, 0.0000028376, 0.0000028395, 0.0000028384, + 0.0000028320, 0.0000028253, 0.0000028199, 0.0000028151, 0.0000028130, + 0.0000028116, 0.0000028070, 0.0000027993, 0.0000027927, 0.0000027907, + 0.0000027929, 0.0000027963, 0.0000027995, 0.0000027963, 0.0000027876, + 0.0000027771, 0.0000027699, 0.0000027676, 0.0000027719, 0.0000027803, + 0.0000027888, 0.0000027957, 0.0000028013, 0.0000028080, 0.0000028118, + 0.0000028100, 0.0000028053, 0.0000028021, 0.0000028010, 0.0000027994, + 0.0000027958, 0.0000027928, 0.0000027955, 0.0000028039, 0.0000028126, + 0.0000028158, 0.0000028109, 0.0000027989, 0.0000027865, 0.0000027809, + 0.0000027831, 0.0000027905, 0.0000027974, 0.0000027992, 0.0000027971, + 0.0000027946, 0.0000027936, 0.0000027948, 0.0000027981, 0.0000028013, + 0.0000028020, 0.0000027983, 0.0000027937, 0.0000027922, 0.0000027925, + 0.0000027967, 0.0000028041, 0.0000028117, 0.0000028152, 0.0000028162, + 0.0000028142, 0.0000028121, 0.0000028091, 0.0000028021, 0.0000027943, + 0.0000027939, 0.0000028121, 0.0000028405, 0.0000028542, 0.0000028564, + 0.0000028615, 0.0000028740, 0.0000028847, 0.0000028882, 0.0000028870, + 0.0000028831, 0.0000028795, 0.0000028774, 0.0000028766, 0.0000028760, + 0.0000028757, 0.0000028750, 0.0000028778, 0.0000028781, 0.0000028723, + 0.0000028640, 0.0000028570, 0.0000028529, 0.0000028516, 0.0000028524, + 0.0000028527, 0.0000028520, 0.0000028506, 0.0000028509, 0.0000028522, + 0.0000028532, 0.0000028526, 0.0000028555, 0.0000028606, 0.0000028615, + 0.0000028579, 0.0000028556, 0.0000028568, 0.0000028565, 0.0000028515, + 0.0000028381, 0.0000028250, 0.0000028230, 0.0000028387, 0.0000028615, + 0.0000028728, 0.0000028719, 0.0000028673, 0.0000028613, 0.0000028562, + 0.0000028502, 0.0000028458, 0.0000028436, 0.0000028426, 0.0000028421, + 0.0000028413, 0.0000028397, 0.0000028380, 0.0000028356, 0.0000028316, + 0.0000028247, 0.0000028153, 0.0000028090, 0.0000028090, 0.0000028140, + 0.0000028193, 0.0000028208, 0.0000028190, 0.0000028124, 0.0000028013, + 0.0000027868, 0.0000027744, 0.0000027672, 0.0000027671, 0.0000027692, + 0.0000027702, 0.0000027666, 0.0000027614, 0.0000027602, 0.0000027629, + 0.0000027659, 0.0000027661, 0.0000027634, 0.0000027630, 0.0000027678, + 0.0000027740, 0.0000027779, 0.0000027808, 0.0000027841, 0.0000027853, + 0.0000027820, 0.0000027795, 0.0000027882, 0.0000028123, 0.0000028332, + 0.0000028294, 0.0000028122, 0.0000028018, 0.0000028014, 0.0000028029, + 0.0000028090, 0.0000028164, 0.0000028197, 0.0000028193, 0.0000028122, + 0.0000027968, 0.0000027780, 0.0000027643, 0.0000027608, 0.0000027616, + 0.0000027662, 0.0000027760, 0.0000027836, 0.0000027820, 0.0000027731, + 0.0000027643, 0.0000027552, 0.0000027456, 0.0000027438, 0.0000027482, + 0.0000027586, 0.0000027666, 0.0000027699, 0.0000027730, 0.0000027767, + 0.0000027815, 0.0000027876, 0.0000027932, 0.0000027967, 0.0000027987, + 0.0000028007, 0.0000028013, 0.0000027998, 0.0000027968, 0.0000027927, + 0.0000027898, 0.0000027883, 0.0000027904, 0.0000027957, 0.0000028033, + 0.0000028083, 0.0000028077, 0.0000028008, 0.0000027888, 0.0000027773, + 0.0000027722, 0.0000027719, 0.0000027720, 0.0000027724, 0.0000027783, + 0.0000027864, 0.0000027909, 0.0000027941, 0.0000027980, 0.0000027984, + 0.0000027951, 0.0000027943, 0.0000028011, 0.0000028095, 0.0000028101, + 0.0000028059, 0.0000027998, 0.0000027958, 0.0000027955, 0.0000027989, + 0.0000028040, 0.0000028092, 0.0000028141, 0.0000028207, 0.0000028287, + 0.0000028414, 0.0000028623, 0.0000028768, 0.0000028765, 0.0000028663, + 0.0000028609, 0.0000028614, 0.0000028756, 0.0000028844, 0.0000028823, + 0.0000028705, 0.0000028560, 0.0000028498, 0.0000028510, 0.0000028540, + 0.0000028532, 0.0000028453, 0.0000028348, 0.0000028228, 0.0000028123, + 0.0000028072, 0.0000028053, 0.0000028104, 0.0000028190, 0.0000028328, + 0.0000028444, 0.0000028487, 0.0000028558, 0.0000028529, 0.0000028365, + 0.0000028324, 0.0000028443, 0.0000028512, 0.0000028486, 0.0000028464, + 0.0000028489, 0.0000028531, 0.0000028577, 0.0000028731, 0.0000028831, + 0.0000028844, 0.0000028932, 0.0000029073, 0.0000029062, 0.0000028960, + 0.0000028900, 0.0000028868, 0.0000028835, 0.0000028813, 0.0000028787, + 0.0000028769, 0.0000028769, 0.0000028786, 0.0000028797, 0.0000028774, + 0.0000028730, 0.0000028675, 0.0000028607, 0.0000028572, 0.0000028529, + 0.0000028510, 0.0000028470, 0.0000028365, 0.0000028204, 0.0000028038, + 0.0000027950, 0.0000027949, 0.0000027987, 0.0000027977, 0.0000027924, + 0.0000027836, 0.0000027754, 0.0000027688, 0.0000027666, 0.0000027670, + 0.0000027689, 0.0000027704, 0.0000027716, 0.0000027705, 0.0000027681, + 0.0000027639, 0.0000027575, 0.0000027517, 0.0000027481, 0.0000027435, + 0.0000027391, 0.0000027349, 0.0000027297, 0.0000027266, 0.0000027248, + 0.0000027232, 0.0000027226, 0.0000027235, 0.0000027226, 0.0000027202, + 0.0000027189, 0.0000027193, 0.0000027193, 0.0000027197, 0.0000027212, + 0.0000027229, 0.0000027227, 0.0000027199, 0.0000027165, 0.0000027157, + 0.0000027174, 0.0000027210, 0.0000027262, 0.0000027322, 0.0000027386, + 0.0000027468, 0.0000027575, 0.0000027700, 0.0000027825, 0.0000027912, + 0.0000027960, 0.0000027978, 0.0000028019, 0.0000028067, 0.0000028101, + 0.0000028105, 0.0000028142, 0.0000028226, 0.0000028268, 0.0000028259, + 0.0000028271, 0.0000028326, 0.0000028332, 0.0000028255, 0.0000028170, + 0.0000028163, 0.0000028190, 0.0000028192, 0.0000028170, 0.0000028152, + 0.0000028144, 0.0000028131, 0.0000028090, 0.0000028021, 0.0000027945, + 0.0000027897, 0.0000027892, 0.0000027881, 0.0000027860, 0.0000027843, + 0.0000027756, 0.0000027742, 0.0000027844, 0.0000027934, 0.0000027999, + 0.0000028205, 0.0000028431, 0.0000028437, 0.0000028345, 0.0000028345, + 0.0000028469, 0.0000028589, 0.0000028650, 0.0000028648, 0.0000028565, + 0.0000028496, 0.0000028374, 0.0000028184, 0.0000028048, 0.0000028073, + 0.0000028132, 0.0000028174, 0.0000028202, 0.0000028193, 0.0000028173, + 0.0000028120, 0.0000027957, 0.0000027821, 0.0000027801, 0.0000027814, + 0.0000027786, 0.0000027721, 0.0000027646, 0.0000027579, 0.0000027524, + 0.0000027500, 0.0000027499, 0.0000027528, 0.0000027573, 0.0000027612, + 0.0000027637, 0.0000027661, 0.0000027689, 0.0000027731, 0.0000027781, + 0.0000027814, 0.0000027846, 0.0000027858, 0.0000027842, 0.0000027810, + 0.0000027776, 0.0000027754, 0.0000027754, 0.0000027782, 0.0000027805, + 0.0000027809, 0.0000027790, 0.0000027759, 0.0000027706, 0.0000027636, + 0.0000027544, 0.0000027456, 0.0000027398, 0.0000027389, 0.0000027422, + 0.0000027479, 0.0000027536, 0.0000027560, 0.0000027561, 0.0000027545, + 0.0000027526, 0.0000027534, 0.0000027605, 0.0000027716, 0.0000027818, + 0.0000027909, 0.0000027972, 0.0000028069, 0.0000028225, 0.0000028375, + 0.0000028408, 0.0000028349, 0.0000028309, 0.0000028323, 0.0000028362, + 0.0000028416, 0.0000028440, 0.0000028455, 0.0000028424, 0.0000028403, + 0.0000028422, 0.0000028456, 0.0000028480, 0.0000028502, 0.0000028477, + 0.0000028406, 0.0000028342, 0.0000028253, 0.0000028184, 0.0000028105, + 0.0000028085, 0.0000028110, 0.0000028161, 0.0000028203, 0.0000028226, + 0.0000028220, 0.0000028193, 0.0000028137, 0.0000028077, 0.0000028035, + 0.0000028006, 0.0000027976, 0.0000027944, 0.0000027931, 0.0000027941, + 0.0000027968, 0.0000027984, 0.0000028011, 0.0000028042, 0.0000028082, + 0.0000028105, 0.0000028122, 0.0000028138, 0.0000028136, 0.0000028115, + 0.0000028079, 0.0000028081, 0.0000028119, 0.0000028173, 0.0000028203, + 0.0000028201, 0.0000028164, 0.0000028105, 0.0000028059, 0.0000028030, + 0.0000027998, 0.0000027960, 0.0000027937, 0.0000027948, 0.0000027991, + 0.0000028036, 0.0000028071, 0.0000028097, 0.0000028119, 0.0000028149, + 0.0000028186, 0.0000028211, 0.0000028200, 0.0000028126, 0.0000028015, + 0.0000027918, 0.0000027872, 0.0000027866, 0.0000027901, 0.0000027937, + 0.0000028003, 0.0000028136, 0.0000028283, 0.0000028381, 0.0000028407, + 0.0000028395, 0.0000028366, 0.0000028348, 0.0000028349, 0.0000028408, + 0.0000028527, 0.0000028595, 0.0000028576, 0.0000028437, 0.0000028160, + 0.0000027966, 0.0000027968, 0.0000028071, 0.0000028257, 0.0000028466, + 0.0000028560, 0.0000028517, 0.0000028377, 0.0000028246, 0.0000028220, + 0.0000028285, 0.0000028349, 0.0000028371, 0.0000028387, 0.0000028441, + 0.0000028523, 0.0000028560, 0.0000028536, 0.0000028470, 0.0000028405, + 0.0000028347, 0.0000028310, 0.0000028313, 0.0000028357, 0.0000028423, + 0.0000028474, 0.0000028499, 0.0000028513, 0.0000028518, 0.0000028521, + 0.0000028568, 0.0000028661, 0.0000028760, 0.0000028810, 0.0000028814, + 0.0000028800, 0.0000028797, 0.0000028837, 0.0000028909, 0.0000028970, + 0.0000029038, 0.0000029149, 0.0000029260, 0.0000029293, 0.0000029269, + 0.0000029215, 0.0000029180, 0.0000029195, 0.0000029243, 0.0000029269, + 0.0000029251, 0.0000029198, 0.0000029105, 0.0000028971, 0.0000028843, + 0.0000028769, 0.0000028770, 0.0000028815, 0.0000028863, 0.0000028877, + 0.0000028828, 0.0000028713, 0.0000028579, 0.0000028451, 0.0000028358, + 0.0000028346, 0.0000028361, 0.0000028386, 0.0000028400, 0.0000028395, + 0.0000028373, 0.0000028345, 0.0000028327, 0.0000028317, 0.0000028323, + 0.0000028333, 0.0000028327, 0.0000028300, 0.0000028266, 0.0000028250, + 0.0000028277, 0.0000028375, 0.0000028468, 0.0000028497, 0.0000028478, + 0.0000028432, 0.0000028403, 0.0000028390, 0.0000028371, 0.0000028346, + 0.0000028349, 0.0000028393, 0.0000028456, 0.0000028518, 0.0000028549, + 0.0000028549, 0.0000028506, 0.0000028357, 0.0000028159, 0.0000028123, + 0.0000028283, 0.0000028402, 0.0000028375, 0.0000028325, 0.0000028351, + 0.0000028434, 0.0000028470, 0.0000028459, 0.0000028462, 0.0000028505, + 0.0000028553, 0.0000028503, 0.0000028388, 0.0000028350, 0.0000028362, + 0.0000028336, 0.0000028279, 0.0000028220, 0.0000028167, 0.0000028148, + 0.0000028174, 0.0000028208, 0.0000028166, 0.0000028065, 0.0000027972, + 0.0000027939, 0.0000027952, 0.0000027978, 0.0000028011, 0.0000028016, + 0.0000027963, 0.0000027846, 0.0000027716, 0.0000027646, 0.0000027670, + 0.0000027747, 0.0000027848, 0.0000027935, 0.0000028010, 0.0000028086, + 0.0000028147, 0.0000028164, 0.0000028145, 0.0000028129, 0.0000028122, + 0.0000028099, 0.0000028053, 0.0000027999, 0.0000027975, 0.0000028019, + 0.0000028115, 0.0000028185, 0.0000028175, 0.0000028070, 0.0000027909, + 0.0000027808, 0.0000027800, 0.0000027871, 0.0000027974, 0.0000028020, + 0.0000028016, 0.0000027973, 0.0000027933, 0.0000027922, 0.0000027937, + 0.0000027963, 0.0000027981, 0.0000027969, 0.0000027948, 0.0000027963, + 0.0000028005, 0.0000028054, 0.0000028095, 0.0000028131, 0.0000028152, + 0.0000028162, 0.0000028148, 0.0000028127, 0.0000028113, 0.0000028060, + 0.0000027969, 0.0000027916, 0.0000028004, 0.0000028291, 0.0000028500, + 0.0000028540, 0.0000028554, 0.0000028652, 0.0000028797, 0.0000028886, + 0.0000028906, 0.0000028896, 0.0000028864, 0.0000028844, 0.0000028833, + 0.0000028827, 0.0000028836, 0.0000028833, 0.0000028870, 0.0000028872, + 0.0000028837, 0.0000028744, 0.0000028645, 0.0000028581, 0.0000028544, + 0.0000028538, 0.0000028537, 0.0000028541, 0.0000028545, 0.0000028557, + 0.0000028584, 0.0000028580, 0.0000028532, 0.0000028508, 0.0000028550, + 0.0000028599, 0.0000028569, 0.0000028509, 0.0000028507, 0.0000028522, + 0.0000028486, 0.0000028362, 0.0000028271, 0.0000028320, 0.0000028489, + 0.0000028662, 0.0000028723, 0.0000028707, 0.0000028609, 0.0000028491, + 0.0000028395, 0.0000028320, 0.0000028273, 0.0000028259, 0.0000028262, + 0.0000028262, 0.0000028261, 0.0000028260, 0.0000028259, 0.0000028251, + 0.0000028222, 0.0000028157, 0.0000028059, 0.0000027965, 0.0000027927, + 0.0000027957, 0.0000028038, 0.0000028124, 0.0000028180, 0.0000028175, + 0.0000028141, 0.0000028036, 0.0000027891, 0.0000027741, 0.0000027651, + 0.0000027611, 0.0000027658, 0.0000027701, 0.0000027695, 0.0000027636, + 0.0000027609, 0.0000027625, 0.0000027649, 0.0000027643, 0.0000027613, + 0.0000027613, 0.0000027676, 0.0000027760, 0.0000027818, 0.0000027853, + 0.0000027880, 0.0000027893, 0.0000027866, 0.0000027803, 0.0000027784, + 0.0000027922, 0.0000028161, 0.0000028256, 0.0000028170, 0.0000028025, + 0.0000027961, 0.0000027966, 0.0000028013, 0.0000028102, 0.0000028175, + 0.0000028193, 0.0000028162, 0.0000028050, 0.0000027865, 0.0000027696, + 0.0000027622, 0.0000027618, 0.0000027648, 0.0000027741, 0.0000027825, + 0.0000027817, 0.0000027742, 0.0000027676, 0.0000027601, 0.0000027507, + 0.0000027454, 0.0000027480, 0.0000027577, 0.0000027677, 0.0000027751, + 0.0000027808, 0.0000027831, 0.0000027838, 0.0000027852, 0.0000027886, + 0.0000027920, 0.0000027961, 0.0000028007, 0.0000028046, 0.0000028063, + 0.0000028054, 0.0000028023, 0.0000027990, 0.0000027961, 0.0000027936, + 0.0000027934, 0.0000027954, 0.0000027969, 0.0000027961, 0.0000027916, + 0.0000027829, 0.0000027726, 0.0000027673, 0.0000027682, 0.0000027723, + 0.0000027779, 0.0000027850, 0.0000027907, 0.0000027936, 0.0000027967, + 0.0000028001, 0.0000027997, 0.0000027967, 0.0000027992, 0.0000028107, + 0.0000028199, 0.0000028199, 0.0000028129, 0.0000028056, 0.0000028019, + 0.0000028009, 0.0000028033, 0.0000028074, 0.0000028104, 0.0000028159, + 0.0000028236, 0.0000028310, 0.0000028462, 0.0000028663, 0.0000028738, + 0.0000028706, 0.0000028631, 0.0000028620, 0.0000028686, 0.0000028796, + 0.0000028838, 0.0000028733, 0.0000028558, 0.0000028453, 0.0000028456, + 0.0000028504, 0.0000028526, 0.0000028516, 0.0000028443, 0.0000028356, + 0.0000028262, 0.0000028195, 0.0000028160, 0.0000028131, 0.0000028153, + 0.0000028205, 0.0000028308, 0.0000028422, 0.0000028471, 0.0000028510, + 0.0000028515, 0.0000028391, 0.0000028303, 0.0000028390, 0.0000028484, + 0.0000028487, 0.0000028472, 0.0000028509, 0.0000028555, 0.0000028576, + 0.0000028702, 0.0000028823, 0.0000028844, 0.0000028955, 0.0000029071, + 0.0000029032, 0.0000028931, 0.0000028869, 0.0000028805, 0.0000028744, + 0.0000028718, 0.0000028691, 0.0000028681, 0.0000028680, 0.0000028697, + 0.0000028718, 0.0000028716, 0.0000028680, 0.0000028626, 0.0000028547, + 0.0000028510, 0.0000028478, 0.0000028467, 0.0000028433, 0.0000028336, + 0.0000028180, 0.0000028022, 0.0000027920, 0.0000027902, 0.0000027933, + 0.0000027932, 0.0000027886, 0.0000027815, 0.0000027743, 0.0000027677, + 0.0000027641, 0.0000027604, 0.0000027570, 0.0000027532, 0.0000027507, + 0.0000027474, 0.0000027441, 0.0000027388, 0.0000027315, 0.0000027236, + 0.0000027183, 0.0000027123, 0.0000027060, 0.0000027020, 0.0000026976, + 0.0000026934, 0.0000026911, 0.0000026893, 0.0000026874, 0.0000026869, + 0.0000026876, 0.0000026871, 0.0000026851, 0.0000026848, 0.0000026863, + 0.0000026879, 0.0000026907, 0.0000026949, 0.0000026979, 0.0000026984, + 0.0000026964, 0.0000026938, 0.0000026934, 0.0000026965, 0.0000027019, + 0.0000027088, 0.0000027166, 0.0000027242, 0.0000027322, 0.0000027430, + 0.0000027579, 0.0000027744, 0.0000027876, 0.0000027942, 0.0000027963, + 0.0000027997, 0.0000028025, 0.0000028049, 0.0000028064, 0.0000028086, + 0.0000028152, 0.0000028222, 0.0000028240, 0.0000028233, 0.0000028261, + 0.0000028303, 0.0000028280, 0.0000028195, 0.0000028135, 0.0000028129, + 0.0000028145, 0.0000028152, 0.0000028158, 0.0000028171, 0.0000028169, + 0.0000028137, 0.0000028091, 0.0000028046, 0.0000028002, 0.0000027985, + 0.0000027940, 0.0000027877, 0.0000027847, 0.0000027771, 0.0000027728, + 0.0000027833, 0.0000027942, 0.0000028010, 0.0000028264, 0.0000028453, + 0.0000028420, 0.0000028353, 0.0000028390, 0.0000028519, 0.0000028606, + 0.0000028653, 0.0000028638, 0.0000028550, 0.0000028464, 0.0000028318, + 0.0000028117, 0.0000028037, 0.0000028095, 0.0000028137, 0.0000028166, + 0.0000028183, 0.0000028182, 0.0000028149, 0.0000028012, 0.0000027824, + 0.0000027755, 0.0000027764, 0.0000027755, 0.0000027704, 0.0000027635, + 0.0000027569, 0.0000027511, 0.0000027454, 0.0000027414, 0.0000027395, + 0.0000027412, 0.0000027458, 0.0000027509, 0.0000027535, 0.0000027560, + 0.0000027595, 0.0000027646, 0.0000027697, 0.0000027729, 0.0000027758, + 0.0000027766, 0.0000027747, 0.0000027723, 0.0000027710, 0.0000027703, + 0.0000027720, 0.0000027766, 0.0000027801, 0.0000027823, 0.0000027814, + 0.0000027781, 0.0000027725, 0.0000027660, 0.0000027587, 0.0000027523, + 0.0000027477, 0.0000027461, 0.0000027475, 0.0000027520, 0.0000027564, + 0.0000027585, 0.0000027580, 0.0000027550, 0.0000027514, 0.0000027511, + 0.0000027569, 0.0000027674, 0.0000027774, 0.0000027864, 0.0000027940, + 0.0000028057, 0.0000028237, 0.0000028358, 0.0000028371, 0.0000028310, + 0.0000028255, 0.0000028251, 0.0000028268, 0.0000028322, 0.0000028333, + 0.0000028355, 0.0000028364, 0.0000028380, 0.0000028415, 0.0000028447, + 0.0000028461, 0.0000028479, 0.0000028455, 0.0000028411, 0.0000028337, + 0.0000028247, 0.0000028181, 0.0000028095, 0.0000028065, 0.0000028069, + 0.0000028105, 0.0000028129, 0.0000028156, 0.0000028160, 0.0000028150, + 0.0000028117, 0.0000028054, 0.0000028005, 0.0000027988, 0.0000027976, + 0.0000027956, 0.0000027939, 0.0000027938, 0.0000027957, 0.0000027972, + 0.0000027975, 0.0000027986, 0.0000028019, 0.0000028059, 0.0000028092, + 0.0000028119, 0.0000028138, 0.0000028132, 0.0000028131, 0.0000028155, + 0.0000028205, 0.0000028256, 0.0000028283, 0.0000028286, 0.0000028259, + 0.0000028201, 0.0000028149, 0.0000028117, 0.0000028090, 0.0000028054, + 0.0000028023, 0.0000028023, 0.0000028064, 0.0000028122, 0.0000028182, + 0.0000028236, 0.0000028266, 0.0000028272, 0.0000028271, 0.0000028273, + 0.0000028274, 0.0000028242, 0.0000028154, 0.0000028030, 0.0000027923, + 0.0000027875, 0.0000027873, 0.0000027919, 0.0000027989, 0.0000028106, + 0.0000028258, 0.0000028375, 0.0000028422, 0.0000028422, 0.0000028397, + 0.0000028365, 0.0000028348, 0.0000028364, 0.0000028443, 0.0000028548, + 0.0000028575, 0.0000028548, 0.0000028384, 0.0000028104, 0.0000027965, + 0.0000028001, 0.0000028105, 0.0000028293, 0.0000028493, 0.0000028568, + 0.0000028516, 0.0000028358, 0.0000028210, 0.0000028171, 0.0000028223, + 0.0000028293, 0.0000028335, 0.0000028356, 0.0000028372, 0.0000028391, + 0.0000028398, 0.0000028372, 0.0000028322, 0.0000028260, 0.0000028191, + 0.0000028133, 0.0000028118, 0.0000028152, 0.0000028221, 0.0000028286, + 0.0000028324, 0.0000028344, 0.0000028361, 0.0000028389, 0.0000028458, + 0.0000028571, 0.0000028704, 0.0000028796, 0.0000028831, 0.0000028828, + 0.0000028809, 0.0000028816, 0.0000028860, 0.0000028913, 0.0000028961, + 0.0000029034, 0.0000029143, 0.0000029227, 0.0000029229, 0.0000029154, + 0.0000029052, 0.0000029012, 0.0000029042, 0.0000029125, 0.0000029199, + 0.0000029231, 0.0000029228, 0.0000029152, 0.0000028990, 0.0000028806, + 0.0000028688, 0.0000028674, 0.0000028737, 0.0000028832, 0.0000028879, + 0.0000028858, 0.0000028763, 0.0000028638, 0.0000028510, 0.0000028432, + 0.0000028399, 0.0000028368, 0.0000028347, 0.0000028321, 0.0000028301, + 0.0000028292, 0.0000028292, 0.0000028295, 0.0000028303, 0.0000028319, + 0.0000028330, 0.0000028318, 0.0000028296, 0.0000028286, 0.0000028319, + 0.0000028418, 0.0000028544, 0.0000028621, 0.0000028627, 0.0000028592, + 0.0000028550, 0.0000028515, 0.0000028481, 0.0000028448, 0.0000028435, + 0.0000028451, 0.0000028494, 0.0000028547, 0.0000028581, 0.0000028584, + 0.0000028565, 0.0000028487, 0.0000028298, 0.0000028120, 0.0000028145, + 0.0000028329, 0.0000028422, 0.0000028390, 0.0000028356, 0.0000028405, + 0.0000028473, 0.0000028469, 0.0000028439, 0.0000028448, 0.0000028519, + 0.0000028556, 0.0000028486, 0.0000028376, 0.0000028346, 0.0000028333, + 0.0000028300, 0.0000028251, 0.0000028189, 0.0000028131, 0.0000028127, + 0.0000028194, 0.0000028255, 0.0000028246, 0.0000028173, 0.0000028091, + 0.0000028044, 0.0000028028, 0.0000028030, 0.0000028039, 0.0000028041, + 0.0000028011, 0.0000027927, 0.0000027801, 0.0000027710, 0.0000027693, + 0.0000027734, 0.0000027805, 0.0000027875, 0.0000027939, 0.0000028014, + 0.0000028097, 0.0000028152, 0.0000028171, 0.0000028166, 0.0000028171, + 0.0000028159, 0.0000028130, 0.0000028095, 0.0000028049, 0.0000028052, + 0.0000028122, 0.0000028197, 0.0000028214, 0.0000028147, 0.0000027991, + 0.0000027852, 0.0000027803, 0.0000027839, 0.0000027932, 0.0000028014, + 0.0000028042, 0.0000028019, 0.0000027968, 0.0000027929, 0.0000027925, + 0.0000027940, 0.0000027965, 0.0000027985, 0.0000028003, 0.0000028032, + 0.0000028065, 0.0000028080, 0.0000028086, 0.0000028097, 0.0000028122, + 0.0000028145, 0.0000028145, 0.0000028129, 0.0000028123, 0.0000028093, + 0.0000028007, 0.0000027917, 0.0000027930, 0.0000028189, 0.0000028455, + 0.0000028533, 0.0000028529, 0.0000028579, 0.0000028735, 0.0000028881, + 0.0000028944, 0.0000028955, 0.0000028941, 0.0000028938, 0.0000028948, + 0.0000028957, 0.0000028975, 0.0000028987, 0.0000029013, 0.0000029017, + 0.0000028986, 0.0000028883, 0.0000028756, 0.0000028658, 0.0000028588, + 0.0000028562, 0.0000028557, 0.0000028561, 0.0000028578, 0.0000028603, + 0.0000028645, 0.0000028655, 0.0000028586, 0.0000028517, 0.0000028540, + 0.0000028595, 0.0000028557, 0.0000028469, 0.0000028453, 0.0000028459, + 0.0000028416, 0.0000028362, 0.0000028389, 0.0000028518, 0.0000028643, + 0.0000028669, 0.0000028621, 0.0000028499, 0.0000028353, 0.0000028231, + 0.0000028163, 0.0000028133, 0.0000028125, 0.0000028143, 0.0000028164, + 0.0000028172, 0.0000028167, 0.0000028161, 0.0000028162, 0.0000028158, + 0.0000028137, 0.0000028083, 0.0000027991, 0.0000027870, 0.0000027767, + 0.0000027736, 0.0000027781, 0.0000027884, 0.0000028001, 0.0000028093, + 0.0000028138, 0.0000028110, 0.0000028040, 0.0000027927, 0.0000027787, + 0.0000027640, 0.0000027572, 0.0000027614, 0.0000027698, 0.0000027732, + 0.0000027678, 0.0000027627, 0.0000027632, 0.0000027643, 0.0000027631, + 0.0000027602, 0.0000027604, 0.0000027667, 0.0000027756, 0.0000027830, + 0.0000027868, 0.0000027894, 0.0000027923, 0.0000027915, 0.0000027843, + 0.0000027778, 0.0000027787, 0.0000027935, 0.0000028159, 0.0000028191, + 0.0000028061, 0.0000027946, 0.0000027927, 0.0000027956, 0.0000028039, + 0.0000028138, 0.0000028187, 0.0000028178, 0.0000028114, 0.0000027958, + 0.0000027774, 0.0000027654, 0.0000027619, 0.0000027639, 0.0000027711, + 0.0000027792, 0.0000027797, 0.0000027749, 0.0000027703, 0.0000027655, + 0.0000027577, 0.0000027514, 0.0000027518, 0.0000027580, 0.0000027661, + 0.0000027752, 0.0000027832, 0.0000027872, 0.0000027880, 0.0000027879, + 0.0000027897, 0.0000027926, 0.0000027987, 0.0000028055, 0.0000028111, + 0.0000028141, 0.0000028138, 0.0000028103, 0.0000028053, 0.0000027996, + 0.0000027935, 0.0000027888, 0.0000027859, 0.0000027839, 0.0000027834, + 0.0000027823, 0.0000027782, 0.0000027705, 0.0000027659, 0.0000027684, + 0.0000027771, 0.0000027856, 0.0000027899, 0.0000027916, 0.0000027944, + 0.0000028000, 0.0000028044, 0.0000028026, 0.0000028000, 0.0000028066, + 0.0000028214, 0.0000028296, 0.0000028270, 0.0000028184, 0.0000028110, + 0.0000028080, 0.0000028068, 0.0000028079, 0.0000028095, 0.0000028109, + 0.0000028183, 0.0000028267, 0.0000028358, 0.0000028533, 0.0000028658, + 0.0000028675, 0.0000028666, 0.0000028645, 0.0000028709, 0.0000028753, + 0.0000028793, 0.0000028736, 0.0000028577, 0.0000028468, 0.0000028426, + 0.0000028427, 0.0000028471, 0.0000028500, 0.0000028523, 0.0000028484, + 0.0000028427, 0.0000028365, 0.0000028333, 0.0000028314, 0.0000028277, + 0.0000028264, 0.0000028262, 0.0000028313, 0.0000028396, 0.0000028455, + 0.0000028472, 0.0000028493, 0.0000028427, 0.0000028313, 0.0000028344, + 0.0000028460, 0.0000028500, 0.0000028504, 0.0000028538, 0.0000028572, + 0.0000028582, 0.0000028661, 0.0000028795, 0.0000028840, 0.0000028952, + 0.0000029053, 0.0000028999, 0.0000028907, 0.0000028825, 0.0000028722, + 0.0000028655, 0.0000028618, 0.0000028579, 0.0000028560, 0.0000028565, + 0.0000028588, 0.0000028627, 0.0000028653, 0.0000028628, 0.0000028568, + 0.0000028479, 0.0000028434, 0.0000028410, 0.0000028409, 0.0000028379, + 0.0000028304, 0.0000028200, 0.0000028067, 0.0000027934, 0.0000027845, + 0.0000027826, 0.0000027828, 0.0000027799, 0.0000027769, 0.0000027724, + 0.0000027672, 0.0000027606, 0.0000027518, 0.0000027434, 0.0000027334, + 0.0000027241, 0.0000027151, 0.0000027069, 0.0000027018, 0.0000026948, + 0.0000026875, 0.0000026840, 0.0000026801, 0.0000026741, 0.0000026703, + 0.0000026683, 0.0000026658, 0.0000026647, 0.0000026634, 0.0000026613, + 0.0000026586, 0.0000026568, 0.0000026570, 0.0000026572, 0.0000026563, + 0.0000026571, 0.0000026583, 0.0000026605, 0.0000026657, 0.0000026723, + 0.0000026764, 0.0000026779, 0.0000026771, 0.0000026762, 0.0000026777, + 0.0000026826, 0.0000026900, 0.0000026984, 0.0000027070, 0.0000027145, + 0.0000027219, 0.0000027319, 0.0000027459, 0.0000027635, 0.0000027813, + 0.0000027923, 0.0000027962, 0.0000027994, 0.0000028006, 0.0000028018, + 0.0000028041, 0.0000028067, 0.0000028104, 0.0000028170, 0.0000028234, + 0.0000028236, 0.0000028218, 0.0000028244, 0.0000028267, 0.0000028237, + 0.0000028165, 0.0000028107, 0.0000028095, 0.0000028106, 0.0000028117, + 0.0000028148, 0.0000028162, 0.0000028148, 0.0000028136, 0.0000028131, + 0.0000028113, 0.0000028106, 0.0000028049, 0.0000027950, 0.0000027872, + 0.0000027782, 0.0000027728, 0.0000027838, 0.0000027957, 0.0000028048, + 0.0000028340, 0.0000028458, 0.0000028407, 0.0000028379, 0.0000028444, + 0.0000028555, 0.0000028615, 0.0000028660, 0.0000028627, 0.0000028531, + 0.0000028420, 0.0000028258, 0.0000028064, 0.0000028038, 0.0000028102, + 0.0000028126, 0.0000028143, 0.0000028168, 0.0000028173, 0.0000028075, + 0.0000027884, 0.0000027748, 0.0000027727, 0.0000027722, 0.0000027691, + 0.0000027640, 0.0000027587, 0.0000027528, 0.0000027469, 0.0000027409, + 0.0000027353, 0.0000027321, 0.0000027334, 0.0000027393, 0.0000027454, + 0.0000027487, 0.0000027512, 0.0000027550, 0.0000027594, 0.0000027630, + 0.0000027653, 0.0000027670, 0.0000027660, 0.0000027639, 0.0000027619, + 0.0000027619, 0.0000027622, 0.0000027645, 0.0000027697, 0.0000027751, + 0.0000027784, 0.0000027791, 0.0000027768, 0.0000027713, 0.0000027653, + 0.0000027604, 0.0000027578, 0.0000027573, 0.0000027567, 0.0000027575, + 0.0000027606, 0.0000027638, 0.0000027647, 0.0000027630, 0.0000027576, + 0.0000027510, 0.0000027489, 0.0000027540, 0.0000027641, 0.0000027740, + 0.0000027829, 0.0000027930, 0.0000028075, 0.0000028245, 0.0000028329, + 0.0000028320, 0.0000028274, 0.0000028215, 0.0000028182, 0.0000028176, + 0.0000028191, 0.0000028199, 0.0000028239, 0.0000028308, 0.0000028370, + 0.0000028426, 0.0000028478, 0.0000028487, 0.0000028487, 0.0000028476, + 0.0000028437, 0.0000028358, 0.0000028284, 0.0000028204, 0.0000028121, + 0.0000028062, 0.0000028043, 0.0000028065, 0.0000028070, 0.0000028082, + 0.0000028090, 0.0000028090, 0.0000028078, 0.0000028042, 0.0000028000, + 0.0000027971, 0.0000027964, 0.0000027960, 0.0000027940, 0.0000027921, + 0.0000027923, 0.0000027931, 0.0000027931, 0.0000027933, 0.0000027960, + 0.0000028001, 0.0000028037, 0.0000028077, 0.0000028127, 0.0000028169, + 0.0000028214, 0.0000028260, 0.0000028301, 0.0000028335, 0.0000028357, + 0.0000028361, 0.0000028345, 0.0000028308, 0.0000028272, 0.0000028251, + 0.0000028237, 0.0000028219, 0.0000028206, 0.0000028213, 0.0000028252, + 0.0000028312, 0.0000028377, 0.0000028443, 0.0000028489, 0.0000028496, + 0.0000028471, 0.0000028428, 0.0000028393, 0.0000028364, 0.0000028304, + 0.0000028193, 0.0000028058, 0.0000027954, 0.0000027920, 0.0000027946, + 0.0000028030, 0.0000028148, 0.0000028279, 0.0000028375, 0.0000028419, + 0.0000028429, 0.0000028422, 0.0000028400, 0.0000028370, 0.0000028356, + 0.0000028388, 0.0000028474, 0.0000028551, 0.0000028560, 0.0000028516, + 0.0000028321, 0.0000028051, 0.0000027973, 0.0000028022, 0.0000028128, + 0.0000028315, 0.0000028508, 0.0000028564, 0.0000028503, 0.0000028336, + 0.0000028181, 0.0000028138, 0.0000028175, 0.0000028253, 0.0000028313, + 0.0000028336, 0.0000028331, 0.0000028299, 0.0000028255, 0.0000028207, + 0.0000028164, 0.0000028124, 0.0000028080, 0.0000028040, 0.0000028024, + 0.0000028038, 0.0000028082, 0.0000028135, 0.0000028183, 0.0000028219, + 0.0000028251, 0.0000028299, 0.0000028369, 0.0000028481, 0.0000028629, + 0.0000028761, 0.0000028847, 0.0000028879, 0.0000028869, 0.0000028845, + 0.0000028848, 0.0000028879, 0.0000028917, 0.0000028962, 0.0000029037, + 0.0000029132, 0.0000029177, 0.0000029145, 0.0000029029, 0.0000028922, + 0.0000028894, 0.0000028922, 0.0000029016, 0.0000029129, 0.0000029210, + 0.0000029216, 0.0000029130, 0.0000028950, 0.0000028752, 0.0000028622, + 0.0000028599, 0.0000028643, 0.0000028723, 0.0000028769, 0.0000028758, + 0.0000028704, 0.0000028633, 0.0000028571, 0.0000028526, 0.0000028464, + 0.0000028401, 0.0000028345, 0.0000028306, 0.0000028298, 0.0000028305, + 0.0000028317, 0.0000028327, 0.0000028344, 0.0000028364, 0.0000028368, + 0.0000028356, 0.0000028363, 0.0000028397, 0.0000028480, 0.0000028609, + 0.0000028723, 0.0000028765, 0.0000028752, 0.0000028715, 0.0000028675, + 0.0000028636, 0.0000028595, 0.0000028562, 0.0000028554, 0.0000028567, + 0.0000028596, 0.0000028619, 0.0000028615, 0.0000028590, 0.0000028540, + 0.0000028411, 0.0000028211, 0.0000028103, 0.0000028212, 0.0000028404, + 0.0000028453, 0.0000028414, 0.0000028402, 0.0000028472, 0.0000028512, + 0.0000028469, 0.0000028427, 0.0000028451, 0.0000028528, 0.0000028548, + 0.0000028473, 0.0000028388, 0.0000028353, 0.0000028327, 0.0000028292, + 0.0000028236, 0.0000028159, 0.0000028092, 0.0000028095, 0.0000028180, + 0.0000028258, 0.0000028284, 0.0000028260, 0.0000028226, 0.0000028189, + 0.0000028162, 0.0000028147, 0.0000028126, 0.0000028095, 0.0000028055, + 0.0000027992, 0.0000027908, 0.0000027836, 0.0000027790, 0.0000027782, + 0.0000027810, 0.0000027837, 0.0000027865, 0.0000027921, 0.0000027998, + 0.0000028072, 0.0000028118, 0.0000028138, 0.0000028151, 0.0000028142, + 0.0000028139, 0.0000028136, 0.0000028112, 0.0000028108, 0.0000028161, + 0.0000028216, 0.0000028228, 0.0000028187, 0.0000028069, 0.0000027924, + 0.0000027846, 0.0000027845, 0.0000027891, 0.0000027970, 0.0000028024, + 0.0000028029, 0.0000027997, 0.0000027953, 0.0000027930, 0.0000027935, + 0.0000027963, 0.0000027997, 0.0000028028, 0.0000028056, 0.0000028065, + 0.0000028058, 0.0000028046, 0.0000028053, 0.0000028091, 0.0000028129, + 0.0000028145, 0.0000028138, 0.0000028129, 0.0000028115, 0.0000028046, + 0.0000027941, 0.0000027918, 0.0000028115, 0.0000028419, 0.0000028540, + 0.0000028531, 0.0000028551, 0.0000028691, 0.0000028862, 0.0000028961, + 0.0000029011, 0.0000029042, 0.0000029066, 0.0000029097, 0.0000029112, + 0.0000029128, 0.0000029149, 0.0000029150, 0.0000029149, 0.0000029100, + 0.0000028992, 0.0000028852, 0.0000028728, 0.0000028628, 0.0000028588, + 0.0000028583, 0.0000028602, 0.0000028643, 0.0000028679, 0.0000028705, + 0.0000028699, 0.0000028615, 0.0000028549, 0.0000028573, 0.0000028594, + 0.0000028526, 0.0000028425, 0.0000028386, 0.0000028379, 0.0000028407, + 0.0000028481, 0.0000028573, 0.0000028613, 0.0000028590, 0.0000028481, + 0.0000028346, 0.0000028223, 0.0000028128, 0.0000028099, 0.0000028106, + 0.0000028119, 0.0000028142, 0.0000028181, 0.0000028219, 0.0000028237, + 0.0000028235, 0.0000028224, 0.0000028215, 0.0000028199, 0.0000028164, + 0.0000028102, 0.0000028014, 0.0000027890, 0.0000027743, 0.0000027618, + 0.0000027573, 0.0000027620, 0.0000027738, 0.0000027871, 0.0000027976, + 0.0000028031, 0.0000028028, 0.0000027988, 0.0000027916, 0.0000027817, + 0.0000027677, 0.0000027573, 0.0000027582, 0.0000027686, 0.0000027762, + 0.0000027729, 0.0000027663, 0.0000027641, 0.0000027641, 0.0000027629, + 0.0000027616, 0.0000027626, 0.0000027678, 0.0000027756, 0.0000027826, + 0.0000027863, 0.0000027884, 0.0000027920, 0.0000027956, 0.0000027919, + 0.0000027792, 0.0000027675, 0.0000027719, 0.0000027966, 0.0000028159, + 0.0000028110, 0.0000027951, 0.0000027904, 0.0000027927, 0.0000027994, + 0.0000028090, 0.0000028162, 0.0000028175, 0.0000028151, 0.0000028040, + 0.0000027866, 0.0000027712, 0.0000027634, 0.0000027630, 0.0000027673, + 0.0000027738, 0.0000027769, 0.0000027760, 0.0000027736, 0.0000027699, + 0.0000027638, 0.0000027590, 0.0000027591, 0.0000027627, 0.0000027677, + 0.0000027740, 0.0000027805, 0.0000027852, 0.0000027872, 0.0000027879, + 0.0000027898, 0.0000027927, 0.0000028001, 0.0000028078, 0.0000028133, + 0.0000028160, 0.0000028157, 0.0000028125, 0.0000028062, 0.0000027978, + 0.0000027882, 0.0000027799, 0.0000027743, 0.0000027723, 0.0000027742, + 0.0000027769, 0.0000027759, 0.0000027708, 0.0000027684, 0.0000027723, + 0.0000027830, 0.0000027911, 0.0000027920, 0.0000027916, 0.0000027956, + 0.0000028034, 0.0000028084, 0.0000028060, 0.0000028047, 0.0000028160, + 0.0000028322, 0.0000028366, 0.0000028312, 0.0000028222, 0.0000028170, + 0.0000028153, 0.0000028129, 0.0000028120, 0.0000028112, 0.0000028121, + 0.0000028218, 0.0000028299, 0.0000028422, 0.0000028581, 0.0000028622, + 0.0000028633, 0.0000028670, 0.0000028729, 0.0000028782, 0.0000028755, + 0.0000028689, 0.0000028574, 0.0000028484, 0.0000028429, 0.0000028385, + 0.0000028368, 0.0000028429, 0.0000028517, 0.0000028591, 0.0000028553, + 0.0000028485, 0.0000028420, 0.0000028403, 0.0000028395, 0.0000028373, + 0.0000028370, 0.0000028353, 0.0000028349, 0.0000028384, 0.0000028437, + 0.0000028453, 0.0000028459, 0.0000028442, 0.0000028342, 0.0000028322, + 0.0000028432, 0.0000028524, 0.0000028558, 0.0000028581, 0.0000028594, + 0.0000028590, 0.0000028625, 0.0000028752, 0.0000028826, 0.0000028918, + 0.0000029024, 0.0000028983, 0.0000028891, 0.0000028781, 0.0000028652, + 0.0000028588, 0.0000028533, 0.0000028464, 0.0000028425, 0.0000028440, + 0.0000028479, 0.0000028534, 0.0000028581, 0.0000028574, 0.0000028515, + 0.0000028433, 0.0000028369, 0.0000028340, 0.0000028328, 0.0000028299, + 0.0000028256, 0.0000028194, 0.0000028093, 0.0000027952, 0.0000027820, + 0.0000027772, 0.0000027767, 0.0000027732, 0.0000027678, 0.0000027621, + 0.0000027586, 0.0000027558, 0.0000027488, 0.0000027385, 0.0000027266, + 0.0000027151, 0.0000027083, 0.0000027026, 0.0000026991, 0.0000026971, + 0.0000026913, 0.0000026870, 0.0000026851, 0.0000026795, 0.0000026739, + 0.0000026717, 0.0000026695, 0.0000026685, 0.0000026672, 0.0000026650, + 0.0000026618, 0.0000026588, 0.0000026562, 0.0000026549, 0.0000026538, + 0.0000026542, 0.0000026551, 0.0000026558, 0.0000026573, 0.0000026627, + 0.0000026686, 0.0000026718, 0.0000026725, 0.0000026718, 0.0000026715, + 0.0000026735, 0.0000026790, 0.0000026865, 0.0000026950, 0.0000027038, + 0.0000027111, 0.0000027178, 0.0000027263, 0.0000027379, 0.0000027542, + 0.0000027728, 0.0000027875, 0.0000027956, 0.0000028000, 0.0000028010, + 0.0000028018, 0.0000028045, 0.0000028075, 0.0000028090, 0.0000028129, + 0.0000028218, 0.0000028259, 0.0000028228, 0.0000028205, 0.0000028227, + 0.0000028244, 0.0000028207, 0.0000028130, 0.0000028085, 0.0000028084, + 0.0000028089, 0.0000028111, 0.0000028114, 0.0000028106, 0.0000028125, + 0.0000028147, 0.0000028160, 0.0000028181, 0.0000028148, 0.0000028044, + 0.0000027917, 0.0000027785, 0.0000027728, 0.0000027855, 0.0000027968, + 0.0000028127, 0.0000028411, 0.0000028450, 0.0000028404, 0.0000028418, + 0.0000028492, 0.0000028573, 0.0000028624, 0.0000028671, 0.0000028614, + 0.0000028505, 0.0000028376, 0.0000028198, 0.0000028028, 0.0000028046, + 0.0000028092, 0.0000028104, 0.0000028118, 0.0000028152, 0.0000028146, + 0.0000027972, 0.0000027783, 0.0000027712, 0.0000027707, 0.0000027685, + 0.0000027652, 0.0000027622, 0.0000027581, 0.0000027521, 0.0000027460, + 0.0000027407, 0.0000027354, 0.0000027321, 0.0000027346, 0.0000027404, + 0.0000027475, 0.0000027509, 0.0000027532, 0.0000027564, 0.0000027597, + 0.0000027622, 0.0000027627, 0.0000027628, 0.0000027610, 0.0000027595, + 0.0000027578, 0.0000027589, 0.0000027609, 0.0000027638, 0.0000027696, + 0.0000027749, 0.0000027787, 0.0000027797, 0.0000027776, 0.0000027715, + 0.0000027661, 0.0000027632, 0.0000027635, 0.0000027647, 0.0000027651, + 0.0000027662, 0.0000027675, 0.0000027700, 0.0000027706, 0.0000027706, + 0.0000027665, 0.0000027589, 0.0000027548, 0.0000027584, 0.0000027673, + 0.0000027758, 0.0000027831, 0.0000027942, 0.0000028085, 0.0000028228, + 0.0000028286, 0.0000028271, 0.0000028241, 0.0000028178, 0.0000028129, + 0.0000028090, 0.0000028057, 0.0000028074, 0.0000028151, 0.0000028249, + 0.0000028337, 0.0000028409, 0.0000028471, 0.0000028489, 0.0000028490, + 0.0000028485, 0.0000028441, 0.0000028384, 0.0000028317, 0.0000028240, + 0.0000028185, 0.0000028108, 0.0000028055, 0.0000028057, 0.0000028053, + 0.0000028056, 0.0000028055, 0.0000028045, 0.0000028030, 0.0000028008, + 0.0000027975, 0.0000027952, 0.0000027939, 0.0000027937, 0.0000027922, + 0.0000027894, 0.0000027876, 0.0000027879, 0.0000027888, 0.0000027897, + 0.0000027919, 0.0000027969, 0.0000028021, 0.0000028080, 0.0000028163, + 0.0000028258, 0.0000028330, 0.0000028366, 0.0000028380, 0.0000028401, + 0.0000028427, 0.0000028443, 0.0000028442, 0.0000028433, 0.0000028426, + 0.0000028423, 0.0000028414, 0.0000028399, 0.0000028394, 0.0000028407, + 0.0000028438, 0.0000028479, 0.0000028528, 0.0000028586, 0.0000028640, + 0.0000028666, 0.0000028653, 0.0000028602, 0.0000028534, 0.0000028481, + 0.0000028436, 0.0000028365, 0.0000028258, 0.0000028143, 0.0000028071, + 0.0000028065, 0.0000028121, 0.0000028218, 0.0000028328, 0.0000028398, + 0.0000028420, 0.0000028426, 0.0000028430, 0.0000028429, 0.0000028411, + 0.0000028381, 0.0000028373, 0.0000028413, 0.0000028487, 0.0000028532, + 0.0000028534, 0.0000028487, 0.0000028255, 0.0000028011, 0.0000027979, + 0.0000028042, 0.0000028139, 0.0000028327, 0.0000028511, 0.0000028555, + 0.0000028484, 0.0000028320, 0.0000028166, 0.0000028110, 0.0000028139, + 0.0000028221, 0.0000028289, 0.0000028310, 0.0000028298, 0.0000028242, + 0.0000028170, 0.0000028101, 0.0000028056, 0.0000028043, 0.0000028040, + 0.0000028035, 0.0000028035, 0.0000028044, 0.0000028067, 0.0000028102, + 0.0000028143, 0.0000028183, 0.0000028229, 0.0000028286, 0.0000028351, + 0.0000028443, 0.0000028572, 0.0000028713, 0.0000028838, 0.0000028911, + 0.0000028924, 0.0000028900, 0.0000028884, 0.0000028894, 0.0000028916, + 0.0000028933, 0.0000028967, 0.0000029042, 0.0000029115, 0.0000029126, + 0.0000029048, 0.0000028918, 0.0000028820, 0.0000028797, 0.0000028831, + 0.0000028946, 0.0000029086, 0.0000029168, 0.0000029148, 0.0000029020, + 0.0000028842, 0.0000028680, 0.0000028574, 0.0000028534, 0.0000028553, + 0.0000028588, 0.0000028594, 0.0000028582, 0.0000028573, 0.0000028572, + 0.0000028567, 0.0000028549, 0.0000028507, 0.0000028456, 0.0000028401, + 0.0000028370, 0.0000028371, 0.0000028384, 0.0000028390, 0.0000028394, + 0.0000028404, 0.0000028406, 0.0000028397, 0.0000028407, 0.0000028447, + 0.0000028510, 0.0000028611, 0.0000028727, 0.0000028808, 0.0000028829, + 0.0000028815, 0.0000028783, 0.0000028750, 0.0000028713, 0.0000028665, + 0.0000028634, 0.0000028632, 0.0000028645, 0.0000028656, 0.0000028649, + 0.0000028612, 0.0000028561, 0.0000028471, 0.0000028303, 0.0000028143, + 0.0000028141, 0.0000028334, 0.0000028485, 0.0000028489, 0.0000028445, + 0.0000028467, 0.0000028553, 0.0000028551, 0.0000028461, 0.0000028426, + 0.0000028460, 0.0000028517, 0.0000028524, 0.0000028472, 0.0000028416, + 0.0000028379, 0.0000028351, 0.0000028307, 0.0000028226, 0.0000028131, + 0.0000028071, 0.0000028081, 0.0000028168, 0.0000028253, 0.0000028303, + 0.0000028329, 0.0000028336, 0.0000028325, 0.0000028309, 0.0000028296, + 0.0000028265, 0.0000028215, 0.0000028151, 0.0000028080, 0.0000028026, + 0.0000027973, 0.0000027918, 0.0000027885, 0.0000027868, 0.0000027850, + 0.0000027854, 0.0000027880, 0.0000027931, 0.0000028000, 0.0000028052, + 0.0000028081, 0.0000028090, 0.0000028091, 0.0000028110, 0.0000028131, + 0.0000028125, 0.0000028134, 0.0000028197, 0.0000028247, 0.0000028244, + 0.0000028194, 0.0000028104, 0.0000027980, 0.0000027902, 0.0000027884, + 0.0000027894, 0.0000027935, 0.0000027974, 0.0000027994, 0.0000027980, + 0.0000027951, 0.0000027928, 0.0000027927, 0.0000027954, 0.0000027989, + 0.0000028016, 0.0000028035, 0.0000028032, 0.0000028022, 0.0000028019, + 0.0000028039, 0.0000028084, 0.0000028126, 0.0000028153, 0.0000028154, + 0.0000028137, 0.0000028125, 0.0000028083, 0.0000027978, 0.0000027914, + 0.0000028055, 0.0000028391, 0.0000028551, 0.0000028541, 0.0000028550, + 0.0000028684, 0.0000028848, 0.0000028966, 0.0000029073, 0.0000029156, + 0.0000029192, 0.0000029217, 0.0000029219, 0.0000029219, 0.0000029228, + 0.0000029212, 0.0000029189, 0.0000029121, 0.0000029015, 0.0000028882, + 0.0000028752, 0.0000028650, 0.0000028616, 0.0000028631, 0.0000028680, + 0.0000028742, 0.0000028778, 0.0000028769, 0.0000028711, 0.0000028621, + 0.0000028591, 0.0000028611, 0.0000028575, 0.0000028474, 0.0000028365, + 0.0000028314, 0.0000028371, 0.0000028522, 0.0000028608, 0.0000028581, + 0.0000028466, 0.0000028334, 0.0000028228, 0.0000028174, 0.0000028150, + 0.0000028131, 0.0000028162, 0.0000028204, 0.0000028245, 0.0000028282, + 0.0000028319, 0.0000028353, 0.0000028373, 0.0000028379, 0.0000028381, + 0.0000028387, 0.0000028381, 0.0000028352, 0.0000028298, 0.0000028208, + 0.0000028068, 0.0000027884, 0.0000027692, 0.0000027558, 0.0000027489, + 0.0000027532, 0.0000027647, 0.0000027771, 0.0000027857, 0.0000027902, + 0.0000027907, 0.0000027884, 0.0000027859, 0.0000027801, 0.0000027693, + 0.0000027599, 0.0000027596, 0.0000027680, 0.0000027770, 0.0000027769, + 0.0000027709, 0.0000027664, 0.0000027660, 0.0000027662, 0.0000027668, + 0.0000027681, 0.0000027715, 0.0000027778, 0.0000027838, 0.0000027862, + 0.0000027872, 0.0000027905, 0.0000027965, 0.0000027961, 0.0000027836, + 0.0000027648, 0.0000027614, 0.0000027774, 0.0000028056, 0.0000028118, + 0.0000027985, 0.0000027909, 0.0000027928, 0.0000027975, 0.0000028048, + 0.0000028128, 0.0000028170, 0.0000028161, 0.0000028087, 0.0000027942, + 0.0000027778, 0.0000027663, 0.0000027631, 0.0000027646, 0.0000027682, + 0.0000027737, 0.0000027779, 0.0000027772, 0.0000027732, 0.0000027687, + 0.0000027654, 0.0000027657, 0.0000027688, 0.0000027732, 0.0000027767, + 0.0000027794, 0.0000027813, 0.0000027824, 0.0000027843, 0.0000027871, + 0.0000027907, 0.0000027980, 0.0000028052, 0.0000028098, 0.0000028117, + 0.0000028115, 0.0000028094, 0.0000028044, 0.0000027959, 0.0000027856, + 0.0000027751, 0.0000027686, 0.0000027674, 0.0000027710, 0.0000027768, + 0.0000027777, 0.0000027753, 0.0000027747, 0.0000027788, 0.0000027880, + 0.0000027943, 0.0000027939, 0.0000027932, 0.0000027973, 0.0000028053, + 0.0000028109, 0.0000028094, 0.0000028113, 0.0000028264, 0.0000028407, + 0.0000028413, 0.0000028327, 0.0000028250, 0.0000028232, 0.0000028220, + 0.0000028187, 0.0000028159, 0.0000028130, 0.0000028156, 0.0000028255, + 0.0000028352, 0.0000028484, 0.0000028580, 0.0000028586, 0.0000028627, + 0.0000028737, 0.0000028797, 0.0000028774, 0.0000028639, 0.0000028521, + 0.0000028478, 0.0000028437, 0.0000028385, 0.0000028325, 0.0000028326, + 0.0000028439, 0.0000028581, 0.0000028643, 0.0000028576, 0.0000028523, + 0.0000028478, 0.0000028469, 0.0000028445, 0.0000028398, 0.0000028400, + 0.0000028404, 0.0000028389, 0.0000028382, 0.0000028418, 0.0000028447, + 0.0000028424, 0.0000028419, 0.0000028375, 0.0000028308, 0.0000028388, + 0.0000028531, 0.0000028606, 0.0000028638, 0.0000028625, 0.0000028607, + 0.0000028615, 0.0000028704, 0.0000028801, 0.0000028867, 0.0000028978, + 0.0000028971, 0.0000028888, 0.0000028768, 0.0000028612, 0.0000028531, + 0.0000028465, 0.0000028373, 0.0000028328, 0.0000028330, 0.0000028376, + 0.0000028437, 0.0000028497, 0.0000028507, 0.0000028460, 0.0000028405, + 0.0000028331, 0.0000028277, 0.0000028239, 0.0000028206, 0.0000028167, + 0.0000028120, 0.0000028054, 0.0000027964, 0.0000027858, 0.0000027790, + 0.0000027747, 0.0000027681, 0.0000027588, 0.0000027531, 0.0000027524, + 0.0000027528, 0.0000027497, 0.0000027435, 0.0000027365, 0.0000027299, + 0.0000027248, 0.0000027235, 0.0000027217, 0.0000027196, 0.0000027161, + 0.0000027097, 0.0000027069, 0.0000027011, 0.0000026941, 0.0000026895, + 0.0000026877, 0.0000026861, 0.0000026852, 0.0000026833, 0.0000026800, + 0.0000026754, 0.0000026700, 0.0000026646, 0.0000026612, 0.0000026606, + 0.0000026626, 0.0000026650, 0.0000026662, 0.0000026680, 0.0000026723, + 0.0000026764, 0.0000026785, 0.0000026781, 0.0000026769, 0.0000026766, + 0.0000026786, 0.0000026840, 0.0000026917, 0.0000027004, 0.0000027081, + 0.0000027138, 0.0000027184, 0.0000027229, 0.0000027312, 0.0000027463, + 0.0000027638, 0.0000027803, 0.0000027927, 0.0000028002, 0.0000028026, + 0.0000028041, 0.0000028064, 0.0000028088, 0.0000028092, 0.0000028103, + 0.0000028181, 0.0000028271, 0.0000028274, 0.0000028221, 0.0000028202, + 0.0000028220, 0.0000028222, 0.0000028168, 0.0000028106, 0.0000028086, + 0.0000028088, 0.0000028112, 0.0000028098, 0.0000028077, 0.0000028101, + 0.0000028131, 0.0000028160, 0.0000028198, 0.0000028194, 0.0000028109, + 0.0000027955, 0.0000027774, 0.0000027735, 0.0000027883, 0.0000027985, + 0.0000028236, 0.0000028450, 0.0000028435, 0.0000028422, 0.0000028464, + 0.0000028526, 0.0000028579, 0.0000028641, 0.0000028682, 0.0000028600, + 0.0000028477, 0.0000028336, 0.0000028142, 0.0000028006, 0.0000028049, + 0.0000028068, 0.0000028080, 0.0000028096, 0.0000028121, 0.0000028098, + 0.0000027871, 0.0000027718, 0.0000027693, 0.0000027688, 0.0000027670, + 0.0000027655, 0.0000027643, 0.0000027600, 0.0000027531, 0.0000027474, + 0.0000027435, 0.0000027400, 0.0000027376, 0.0000027413, 0.0000027472, + 0.0000027539, 0.0000027567, 0.0000027584, 0.0000027607, 0.0000027624, + 0.0000027626, 0.0000027607, 0.0000027590, 0.0000027576, 0.0000027570, + 0.0000027562, 0.0000027583, 0.0000027618, 0.0000027668, 0.0000027743, + 0.0000027800, 0.0000027836, 0.0000027840, 0.0000027817, 0.0000027761, + 0.0000027716, 0.0000027697, 0.0000027707, 0.0000027718, 0.0000027714, + 0.0000027716, 0.0000027718, 0.0000027718, 0.0000027715, 0.0000027736, + 0.0000027728, 0.0000027685, 0.0000027668, 0.0000027696, 0.0000027765, + 0.0000027827, 0.0000027889, 0.0000027980, 0.0000028088, 0.0000028183, + 0.0000028228, 0.0000028225, 0.0000028206, 0.0000028145, 0.0000028076, + 0.0000028013, 0.0000027954, 0.0000027978, 0.0000028074, 0.0000028173, + 0.0000028264, 0.0000028342, 0.0000028409, 0.0000028448, 0.0000028461, + 0.0000028448, 0.0000028423, 0.0000028372, 0.0000028298, 0.0000028239, + 0.0000028208, 0.0000028164, 0.0000028121, 0.0000028096, 0.0000028081, + 0.0000028077, 0.0000028072, 0.0000028058, 0.0000028034, 0.0000027999, + 0.0000027955, 0.0000027923, 0.0000027915, 0.0000027895, 0.0000027872, + 0.0000027857, 0.0000027853, 0.0000027865, 0.0000027886, 0.0000027902, + 0.0000027933, 0.0000028000, 0.0000028081, 0.0000028171, 0.0000028284, + 0.0000028391, 0.0000028451, 0.0000028460, 0.0000028454, 0.0000028466, + 0.0000028491, 0.0000028520, 0.0000028544, 0.0000028560, 0.0000028565, + 0.0000028561, 0.0000028526, 0.0000028491, 0.0000028468, 0.0000028470, + 0.0000028490, 0.0000028512, 0.0000028536, 0.0000028576, 0.0000028630, + 0.0000028675, 0.0000028687, 0.0000028669, 0.0000028610, 0.0000028538, + 0.0000028482, 0.0000028432, 0.0000028366, 0.0000028292, 0.0000028223, + 0.0000028195, 0.0000028207, 0.0000028264, 0.0000028342, 0.0000028409, + 0.0000028434, 0.0000028439, 0.0000028442, 0.0000028451, 0.0000028453, + 0.0000028431, 0.0000028398, 0.0000028391, 0.0000028428, 0.0000028479, + 0.0000028508, 0.0000028517, 0.0000028455, 0.0000028191, 0.0000027989, + 0.0000027994, 0.0000028052, 0.0000028145, 0.0000028331, 0.0000028503, + 0.0000028540, 0.0000028466, 0.0000028324, 0.0000028173, 0.0000028088, + 0.0000028103, 0.0000028179, 0.0000028251, 0.0000028276, 0.0000028262, + 0.0000028205, 0.0000028133, 0.0000028069, 0.0000028042, 0.0000028049, + 0.0000028087, 0.0000028120, 0.0000028136, 0.0000028143, 0.0000028150, + 0.0000028167, 0.0000028194, 0.0000028232, 0.0000028281, 0.0000028334, + 0.0000028391, 0.0000028462, 0.0000028562, 0.0000028691, 0.0000028826, + 0.0000028924, 0.0000028953, 0.0000028935, 0.0000028916, 0.0000028924, + 0.0000028942, 0.0000028943, 0.0000028948, 0.0000028998, 0.0000029072, + 0.0000029099, 0.0000029061, 0.0000028952, 0.0000028829, 0.0000028742, + 0.0000028724, 0.0000028792, 0.0000028927, 0.0000029049, 0.0000029079, + 0.0000029001, 0.0000028851, 0.0000028698, 0.0000028582, 0.0000028510, + 0.0000028482, 0.0000028475, 0.0000028456, 0.0000028432, 0.0000028434, + 0.0000028459, 0.0000028493, 0.0000028518, 0.0000028530, 0.0000028528, + 0.0000028495, 0.0000028461, 0.0000028455, 0.0000028466, 0.0000028471, + 0.0000028470, 0.0000028470, 0.0000028464, 0.0000028448, 0.0000028446, + 0.0000028485, 0.0000028538, 0.0000028606, 0.0000028700, 0.0000028794, + 0.0000028856, 0.0000028872, 0.0000028853, 0.0000028815, 0.0000028781, + 0.0000028728, 0.0000028681, 0.0000028669, 0.0000028679, 0.0000028686, + 0.0000028679, 0.0000028638, 0.0000028572, 0.0000028484, 0.0000028349, + 0.0000028198, 0.0000028142, 0.0000028253, 0.0000028468, 0.0000028543, + 0.0000028511, 0.0000028489, 0.0000028560, 0.0000028620, 0.0000028558, + 0.0000028461, 0.0000028446, 0.0000028468, 0.0000028495, 0.0000028503, + 0.0000028477, 0.0000028443, 0.0000028418, 0.0000028386, 0.0000028321, + 0.0000028219, 0.0000028115, 0.0000028060, 0.0000028090, 0.0000028181, + 0.0000028273, 0.0000028349, 0.0000028406, 0.0000028450, 0.0000028460, + 0.0000028451, 0.0000028437, 0.0000028409, 0.0000028365, 0.0000028297, + 0.0000028229, 0.0000028185, 0.0000028129, 0.0000028073, 0.0000028027, + 0.0000027979, 0.0000027922, 0.0000027894, 0.0000027894, 0.0000027926, + 0.0000027982, 0.0000028034, 0.0000028063, 0.0000028066, 0.0000028073, + 0.0000028101, 0.0000028127, 0.0000028121, 0.0000028129, 0.0000028201, + 0.0000028266, 0.0000028266, 0.0000028199, 0.0000028097, 0.0000027988, + 0.0000027925, 0.0000027917, 0.0000027922, 0.0000027941, 0.0000027953, + 0.0000027956, 0.0000027938, 0.0000027918, 0.0000027902, 0.0000027903, + 0.0000027928, 0.0000027965, 0.0000027991, 0.0000028003, 0.0000027998, + 0.0000027996, 0.0000028010, 0.0000028042, 0.0000028087, 0.0000028130, + 0.0000028165, 0.0000028169, 0.0000028144, 0.0000028127, 0.0000028111, + 0.0000028018, 0.0000027909, 0.0000028002, 0.0000028360, 0.0000028557, + 0.0000028547, 0.0000028560, 0.0000028700, 0.0000028852, 0.0000028988, + 0.0000029138, 0.0000029239, 0.0000029264, 0.0000029260, 0.0000029237, + 0.0000029228, 0.0000029219, 0.0000029190, 0.0000029152, 0.0000029087, + 0.0000028990, 0.0000028872, 0.0000028758, 0.0000028676, 0.0000028667, + 0.0000028724, 0.0000028797, 0.0000028852, 0.0000028859, 0.0000028801, + 0.0000028696, 0.0000028629, 0.0000028628, 0.0000028612, 0.0000028520, + 0.0000028395, 0.0000028312, 0.0000028344, 0.0000028513, 0.0000028590, + 0.0000028521, 0.0000028352, 0.0000028219, 0.0000028184, 0.0000028211, + 0.0000028245, 0.0000028277, 0.0000028304, 0.0000028329, 0.0000028345, + 0.0000028362, 0.0000028381, 0.0000028401, 0.0000028413, 0.0000028418, + 0.0000028424, 0.0000028432, 0.0000028448, 0.0000028467, 0.0000028476, + 0.0000028464, 0.0000028426, 0.0000028344, 0.0000028198, 0.0000027999, + 0.0000027785, 0.0000027605, 0.0000027510, 0.0000027544, 0.0000027617, + 0.0000027692, 0.0000027750, 0.0000027778, 0.0000027783, 0.0000027781, + 0.0000027778, 0.0000027751, 0.0000027684, 0.0000027630, 0.0000027626, + 0.0000027687, 0.0000027782, 0.0000027828, 0.0000027771, 0.0000027710, + 0.0000027703, 0.0000027717, 0.0000027737, 0.0000027753, 0.0000027773, + 0.0000027818, 0.0000027871, 0.0000027891, 0.0000027886, 0.0000027895, + 0.0000027943, 0.0000027960, 0.0000027876, 0.0000027674, 0.0000027549, + 0.0000027632, 0.0000027919, 0.0000028093, 0.0000028017, 0.0000027925, + 0.0000027930, 0.0000027978, 0.0000028022, 0.0000028080, 0.0000028133, + 0.0000028139, 0.0000028094, 0.0000027982, 0.0000027828, 0.0000027697, + 0.0000027638, 0.0000027631, 0.0000027654, 0.0000027718, 0.0000027781, + 0.0000027793, 0.0000027772, 0.0000027740, 0.0000027715, 0.0000027714, + 0.0000027731, 0.0000027774, 0.0000027811, 0.0000027822, 0.0000027820, + 0.0000027819, 0.0000027836, 0.0000027868, 0.0000027908, 0.0000027975, + 0.0000028038, 0.0000028079, 0.0000028095, 0.0000028098, 0.0000028088, + 0.0000028060, 0.0000027992, 0.0000027886, 0.0000027778, 0.0000027713, + 0.0000027700, 0.0000027737, 0.0000027802, 0.0000027829, 0.0000027823, + 0.0000027823, 0.0000027856, 0.0000027928, 0.0000027972, 0.0000027964, + 0.0000027959, 0.0000027989, 0.0000028065, 0.0000028129, 0.0000028141, + 0.0000028205, 0.0000028359, 0.0000028459, 0.0000028426, 0.0000028333, + 0.0000028281, 0.0000028292, 0.0000028281, 0.0000028255, 0.0000028202, + 0.0000028163, 0.0000028207, 0.0000028286, 0.0000028418, 0.0000028523, + 0.0000028566, 0.0000028581, 0.0000028676, 0.0000028803, 0.0000028785, + 0.0000028657, 0.0000028453, 0.0000028417, 0.0000028433, 0.0000028408, + 0.0000028352, 0.0000028281, 0.0000028321, 0.0000028486, 0.0000028625, + 0.0000028659, 0.0000028624, 0.0000028639, 0.0000028615, 0.0000028611, + 0.0000028574, 0.0000028488, 0.0000028432, 0.0000028414, 0.0000028397, + 0.0000028379, 0.0000028398, 0.0000028430, 0.0000028398, 0.0000028377, + 0.0000028392, 0.0000028328, 0.0000028350, 0.0000028498, 0.0000028632, + 0.0000028686, 0.0000028668, 0.0000028632, 0.0000028629, 0.0000028670, + 0.0000028758, 0.0000028808, 0.0000028900, 0.0000028954, 0.0000028900, + 0.0000028790, 0.0000028632, 0.0000028500, 0.0000028419, 0.0000028315, + 0.0000028263, 0.0000028260, 0.0000028279, 0.0000028323, 0.0000028375, + 0.0000028405, 0.0000028382, 0.0000028340, 0.0000028280, 0.0000028221, + 0.0000028159, 0.0000028087, 0.0000028021, 0.0000027972, 0.0000027955, + 0.0000027940, 0.0000027887, 0.0000027813, 0.0000027743, 0.0000027649, + 0.0000027548, 0.0000027479, 0.0000027460, 0.0000027468, 0.0000027477, + 0.0000027483, 0.0000027491, 0.0000027471, 0.0000027422, 0.0000027368, + 0.0000027343, 0.0000027324, 0.0000027316, 0.0000027298, 0.0000027283, + 0.0000027269, 0.0000027208, 0.0000027153, 0.0000027125, 0.0000027108, + 0.0000027097, 0.0000027078, 0.0000027051, 0.0000027011, 0.0000026952, + 0.0000026876, 0.0000026795, 0.0000026728, 0.0000026698, 0.0000026696, + 0.0000026700, 0.0000026704, 0.0000026729, 0.0000026773, 0.0000026806, + 0.0000026821, 0.0000026813, 0.0000026811, 0.0000026817, 0.0000026851, + 0.0000026929, 0.0000027028, 0.0000027114, 0.0000027168, 0.0000027191, + 0.0000027195, 0.0000027204, 0.0000027262, 0.0000027387, 0.0000027547, + 0.0000027714, 0.0000027872, 0.0000027988, 0.0000028037, 0.0000028062, + 0.0000028079, 0.0000028094, 0.0000028088, 0.0000028081, 0.0000028134, + 0.0000028249, 0.0000028307, 0.0000028277, 0.0000028212, 0.0000028186, + 0.0000028201, 0.0000028196, 0.0000028153, 0.0000028106, 0.0000028080, + 0.0000028095, 0.0000028096, 0.0000028099, 0.0000028125, 0.0000028138, + 0.0000028157, 0.0000028193, 0.0000028201, 0.0000028134, 0.0000027969, + 0.0000027747, 0.0000027754, 0.0000027919, 0.0000028032, 0.0000028346, + 0.0000028451, 0.0000028431, 0.0000028458, 0.0000028507, 0.0000028544, + 0.0000028583, 0.0000028664, 0.0000028690, 0.0000028588, 0.0000028452, + 0.0000028305, 0.0000028095, 0.0000027992, 0.0000028035, 0.0000028046, + 0.0000028058, 0.0000028071, 0.0000028076, 0.0000028035, 0.0000027787, + 0.0000027680, 0.0000027679, 0.0000027672, 0.0000027677, 0.0000027695, + 0.0000027689, 0.0000027630, 0.0000027551, 0.0000027498, 0.0000027469, + 0.0000027447, 0.0000027430, 0.0000027467, 0.0000027521, 0.0000027572, + 0.0000027593, 0.0000027618, 0.0000027643, 0.0000027650, 0.0000027636, + 0.0000027602, 0.0000027581, 0.0000027580, 0.0000027577, 0.0000027566, + 0.0000027578, 0.0000027610, 0.0000027668, 0.0000027752, 0.0000027819, + 0.0000027859, 0.0000027879, 0.0000027877, 0.0000027838, 0.0000027804, + 0.0000027778, 0.0000027769, 0.0000027773, 0.0000027759, 0.0000027755, + 0.0000027750, 0.0000027735, 0.0000027729, 0.0000027737, 0.0000027738, + 0.0000027721, 0.0000027744, 0.0000027785, 0.0000027847, 0.0000027905, + 0.0000027958, 0.0000028019, 0.0000028095, 0.0000028148, 0.0000028181, + 0.0000028178, 0.0000028141, 0.0000028089, 0.0000028021, 0.0000027952, + 0.0000027906, 0.0000027924, 0.0000028004, 0.0000028089, 0.0000028159, + 0.0000028239, 0.0000028316, 0.0000028382, 0.0000028396, 0.0000028382, + 0.0000028375, 0.0000028331, 0.0000028262, 0.0000028200, 0.0000028154, + 0.0000028136, 0.0000028133, 0.0000028140, 0.0000028140, 0.0000028133, + 0.0000028118, 0.0000028092, 0.0000028056, 0.0000028002, 0.0000027943, + 0.0000027899, 0.0000027878, 0.0000027866, 0.0000027850, 0.0000027851, + 0.0000027882, 0.0000027916, 0.0000027951, 0.0000027977, 0.0000028027, + 0.0000028120, 0.0000028226, 0.0000028335, 0.0000028439, 0.0000028516, + 0.0000028541, 0.0000028540, 0.0000028547, 0.0000028569, 0.0000028597, + 0.0000028621, 0.0000028645, 0.0000028644, 0.0000028633, 0.0000028590, + 0.0000028532, 0.0000028468, 0.0000028420, 0.0000028409, 0.0000028420, + 0.0000028427, 0.0000028423, 0.0000028433, 0.0000028474, 0.0000028524, + 0.0000028561, 0.0000028576, 0.0000028566, 0.0000028522, 0.0000028467, + 0.0000028428, 0.0000028392, 0.0000028342, 0.0000028291, 0.0000028260, + 0.0000028251, 0.0000028274, 0.0000028334, 0.0000028403, 0.0000028450, + 0.0000028471, 0.0000028482, 0.0000028493, 0.0000028503, 0.0000028495, + 0.0000028459, 0.0000028414, 0.0000028401, 0.0000028426, 0.0000028458, + 0.0000028495, 0.0000028520, 0.0000028417, 0.0000028135, 0.0000027995, + 0.0000028020, 0.0000028062, 0.0000028148, 0.0000028329, 0.0000028487, + 0.0000028517, 0.0000028450, 0.0000028334, 0.0000028190, 0.0000028082, + 0.0000028066, 0.0000028122, 0.0000028189, 0.0000028225, 0.0000028222, + 0.0000028186, 0.0000028138, 0.0000028103, 0.0000028101, 0.0000028143, + 0.0000028207, 0.0000028252, 0.0000028263, 0.0000028255, 0.0000028256, + 0.0000028272, 0.0000028301, 0.0000028339, 0.0000028383, 0.0000028427, + 0.0000028473, 0.0000028529, 0.0000028609, 0.0000028721, 0.0000028847, + 0.0000028942, 0.0000028966, 0.0000028946, 0.0000028931, 0.0000028943, + 0.0000028970, 0.0000028978, 0.0000028977, 0.0000029009, 0.0000029068, + 0.0000029095, 0.0000029073, 0.0000028986, 0.0000028867, 0.0000028761, + 0.0000028705, 0.0000028723, 0.0000028816, 0.0000028927, 0.0000028969, + 0.0000028928, 0.0000028800, 0.0000028648, 0.0000028534, 0.0000028474, + 0.0000028450, 0.0000028429, 0.0000028399, 0.0000028381, 0.0000028383, + 0.0000028388, 0.0000028411, 0.0000028448, 0.0000028487, 0.0000028519, + 0.0000028517, 0.0000028502, 0.0000028505, 0.0000028525, 0.0000028543, + 0.0000028555, 0.0000028563, 0.0000028557, 0.0000028542, 0.0000028537, + 0.0000028571, 0.0000028620, 0.0000028668, 0.0000028728, 0.0000028798, + 0.0000028867, 0.0000028909, 0.0000028901, 0.0000028859, 0.0000028817, + 0.0000028761, 0.0000028710, 0.0000028695, 0.0000028707, 0.0000028716, + 0.0000028708, 0.0000028668, 0.0000028589, 0.0000028480, 0.0000028351, + 0.0000028227, 0.0000028166, 0.0000028209, 0.0000028404, 0.0000028566, + 0.0000028572, 0.0000028530, 0.0000028564, 0.0000028656, 0.0000028660, + 0.0000028559, 0.0000028486, 0.0000028477, 0.0000028475, 0.0000028482, + 0.0000028490, 0.0000028479, 0.0000028464, 0.0000028446, 0.0000028403, + 0.0000028322, 0.0000028205, 0.0000028095, 0.0000028047, 0.0000028085, + 0.0000028181, 0.0000028281, 0.0000028373, 0.0000028461, 0.0000028544, + 0.0000028586, 0.0000028594, 0.0000028572, 0.0000028532, 0.0000028491, + 0.0000028448, 0.0000028412, 0.0000028372, 0.0000028310, 0.0000028249, + 0.0000028192, 0.0000028127, 0.0000028054, 0.0000027995, 0.0000027952, + 0.0000027947, 0.0000027989, 0.0000028042, 0.0000028073, 0.0000028084, + 0.0000028092, 0.0000028118, 0.0000028142, 0.0000028130, 0.0000028125, + 0.0000028176, 0.0000028256, 0.0000028273, 0.0000028211, 0.0000028087, + 0.0000027971, 0.0000027909, 0.0000027908, 0.0000027927, 0.0000027953, + 0.0000027964, 0.0000027963, 0.0000027937, 0.0000027906, 0.0000027886, + 0.0000027882, 0.0000027902, 0.0000027940, 0.0000027973, 0.0000027983, + 0.0000027977, 0.0000027975, 0.0000027994, 0.0000028035, 0.0000028084, + 0.0000028137, 0.0000028178, 0.0000028180, 0.0000028149, 0.0000028127, + 0.0000028126, 0.0000028053, 0.0000027913, 0.0000027960, 0.0000028327, + 0.0000028558, 0.0000028547, 0.0000028576, 0.0000028721, 0.0000028879, + 0.0000029039, 0.0000029189, 0.0000029269, 0.0000029273, 0.0000029244, + 0.0000029205, 0.0000029173, 0.0000029146, 0.0000029113, 0.0000029073, + 0.0000029037, 0.0000028966, 0.0000028872, 0.0000028782, 0.0000028738, + 0.0000028764, 0.0000028848, 0.0000028913, 0.0000028930, 0.0000028888, + 0.0000028792, 0.0000028691, 0.0000028651, 0.0000028634, 0.0000028565, + 0.0000028431, 0.0000028331, 0.0000028360, 0.0000028513, 0.0000028562, + 0.0000028447, 0.0000028259, 0.0000028172, 0.0000028200, 0.0000028302, + 0.0000028397, 0.0000028441, 0.0000028448, 0.0000028449, 0.0000028450, + 0.0000028449, 0.0000028460, 0.0000028473, 0.0000028482, 0.0000028476, + 0.0000028466, 0.0000028456, 0.0000028450, 0.0000028452, 0.0000028455, + 0.0000028458, 0.0000028458, 0.0000028452, 0.0000028418, 0.0000028363, + 0.0000028265, 0.0000028125, 0.0000027949, 0.0000027769, 0.0000027652, + 0.0000027612, 0.0000027629, 0.0000027643, 0.0000027658, 0.0000027666, + 0.0000027678, 0.0000027698, 0.0000027711, 0.0000027698, 0.0000027659, + 0.0000027647, 0.0000027673, 0.0000027728, 0.0000027813, 0.0000027879, + 0.0000027843, 0.0000027775, 0.0000027760, 0.0000027774, 0.0000027796, + 0.0000027818, 0.0000027842, 0.0000027884, 0.0000027933, 0.0000027951, + 0.0000027939, 0.0000027923, 0.0000027935, 0.0000027945, 0.0000027900, + 0.0000027721, 0.0000027553, 0.0000027557, 0.0000027782, 0.0000028021, + 0.0000028041, 0.0000027958, 0.0000027948, 0.0000027987, 0.0000028008, + 0.0000028031, 0.0000028072, 0.0000028095, 0.0000028065, 0.0000027981, + 0.0000027843, 0.0000027704, 0.0000027627, 0.0000027622, 0.0000027666, + 0.0000027720, 0.0000027765, 0.0000027798, 0.0000027816, 0.0000027807, + 0.0000027789, 0.0000027778, 0.0000027774, 0.0000027790, 0.0000027816, + 0.0000027833, 0.0000027849, 0.0000027856, 0.0000027876, 0.0000027907, + 0.0000027943, 0.0000028008, 0.0000028074, 0.0000028122, 0.0000028148, + 0.0000028164, 0.0000028180, 0.0000028173, 0.0000028114, 0.0000028010, + 0.0000027891, 0.0000027809, 0.0000027784, 0.0000027807, 0.0000027854, + 0.0000027880, 0.0000027884, 0.0000027887, 0.0000027920, 0.0000027977, + 0.0000027998, 0.0000027983, 0.0000027976, 0.0000028013, 0.0000028096, + 0.0000028173, 0.0000028216, 0.0000028307, 0.0000028434, 0.0000028486, + 0.0000028428, 0.0000028340, 0.0000028325, 0.0000028350, 0.0000028357, + 0.0000028336, 0.0000028262, 0.0000028226, 0.0000028267, 0.0000028334, + 0.0000028482, 0.0000028551, 0.0000028585, 0.0000028632, 0.0000028756, + 0.0000028793, 0.0000028690, 0.0000028446, 0.0000028331, 0.0000028371, + 0.0000028418, 0.0000028403, 0.0000028337, 0.0000028268, 0.0000028354, + 0.0000028531, 0.0000028645, 0.0000028707, 0.0000028720, 0.0000028735, + 0.0000028672, 0.0000028667, 0.0000028644, 0.0000028588, 0.0000028539, + 0.0000028470, 0.0000028401, 0.0000028371, 0.0000028384, 0.0000028403, + 0.0000028383, 0.0000028343, 0.0000028383, 0.0000028373, 0.0000028347, + 0.0000028432, 0.0000028613, 0.0000028712, 0.0000028707, 0.0000028669, + 0.0000028657, 0.0000028670, 0.0000028707, 0.0000028753, 0.0000028798, + 0.0000028887, 0.0000028890, 0.0000028813, 0.0000028689, 0.0000028515, + 0.0000028385, 0.0000028276, 0.0000028210, 0.0000028194, 0.0000028197, + 0.0000028204, 0.0000028222, 0.0000028250, 0.0000028255, 0.0000028223, + 0.0000028170, 0.0000028112, 0.0000028044, 0.0000027941, 0.0000027833, + 0.0000027779, 0.0000027785, 0.0000027821, 0.0000027821, 0.0000027774, + 0.0000027686, 0.0000027606, 0.0000027511, 0.0000027422, 0.0000027370, + 0.0000027374, 0.0000027422, 0.0000027479, 0.0000027522, 0.0000027522, + 0.0000027471, 0.0000027400, 0.0000027360, 0.0000027363, 0.0000027395, + 0.0000027425, 0.0000027438, 0.0000027460, 0.0000027434, 0.0000027370, + 0.0000027325, 0.0000027295, 0.0000027261, 0.0000027237, 0.0000027206, + 0.0000027165, 0.0000027117, 0.0000027055, 0.0000026974, 0.0000026882, + 0.0000026805, 0.0000026763, 0.0000026742, 0.0000026735, 0.0000026738, + 0.0000026761, 0.0000026791, 0.0000026805, 0.0000026805, 0.0000026799, + 0.0000026797, 0.0000026813, 0.0000026868, 0.0000026969, 0.0000027084, + 0.0000027172, 0.0000027225, 0.0000027233, 0.0000027216, 0.0000027210, + 0.0000027235, 0.0000027324, 0.0000027461, 0.0000027619, 0.0000027791, + 0.0000027946, 0.0000028034, 0.0000028067, 0.0000028076, 0.0000028076, + 0.0000028067, 0.0000028054, 0.0000028085, 0.0000028199, 0.0000028301, + 0.0000028318, 0.0000028253, 0.0000028175, 0.0000028163, 0.0000028199, + 0.0000028205, 0.0000028149, 0.0000028078, 0.0000028053, 0.0000028048, + 0.0000028091, 0.0000028153, 0.0000028175, 0.0000028179, 0.0000028191, + 0.0000028200, 0.0000028136, 0.0000027952, 0.0000027724, 0.0000027804, + 0.0000027952, 0.0000028132, 0.0000028416, 0.0000028432, 0.0000028454, + 0.0000028501, 0.0000028534, 0.0000028551, 0.0000028593, 0.0000028689, + 0.0000028700, 0.0000028579, 0.0000028433, 0.0000028280, 0.0000028056, + 0.0000027980, 0.0000028012, 0.0000028029, 0.0000028037, 0.0000028037, + 0.0000028026, 0.0000027970, 0.0000027726, 0.0000027660, 0.0000027666, + 0.0000027665, 0.0000027704, 0.0000027744, 0.0000027728, 0.0000027645, + 0.0000027564, 0.0000027512, 0.0000027481, 0.0000027461, 0.0000027444, + 0.0000027473, 0.0000027518, 0.0000027558, 0.0000027582, 0.0000027616, + 0.0000027647, 0.0000027652, 0.0000027635, 0.0000027605, 0.0000027604, + 0.0000027622, 0.0000027629, 0.0000027615, 0.0000027605, 0.0000027613, + 0.0000027641, 0.0000027694, 0.0000027751, 0.0000027802, 0.0000027860, + 0.0000027883, 0.0000027876, 0.0000027863, 0.0000027836, 0.0000027804, + 0.0000027793, 0.0000027778, 0.0000027769, 0.0000027761, 0.0000027747, + 0.0000027755, 0.0000027755, 0.0000027760, 0.0000027756, 0.0000027793, + 0.0000027841, 0.0000027900, 0.0000027960, 0.0000028012, 0.0000028063, + 0.0000028110, 0.0000028149, 0.0000028164, 0.0000028144, 0.0000028077, + 0.0000028010, 0.0000027934, 0.0000027879, 0.0000027877, 0.0000027902, + 0.0000027955, 0.0000028016, 0.0000028075, 0.0000028135, 0.0000028206, + 0.0000028295, 0.0000028329, 0.0000028327, 0.0000028304, 0.0000028280, + 0.0000028231, 0.0000028168, 0.0000028100, 0.0000028059, 0.0000028058, + 0.0000028094, 0.0000028143, 0.0000028165, 0.0000028153, 0.0000028112, + 0.0000028055, 0.0000027993, 0.0000027932, 0.0000027886, 0.0000027865, + 0.0000027867, 0.0000027891, 0.0000027927, 0.0000027989, 0.0000028040, + 0.0000028076, 0.0000028115, 0.0000028184, 0.0000028278, 0.0000028381, + 0.0000028480, 0.0000028551, 0.0000028590, 0.0000028606, 0.0000028635, + 0.0000028670, 0.0000028702, 0.0000028725, 0.0000028727, 0.0000028693, + 0.0000028662, 0.0000028603, 0.0000028521, 0.0000028434, 0.0000028357, + 0.0000028304, 0.0000028290, 0.0000028305, 0.0000028312, 0.0000028293, + 0.0000028276, 0.0000028291, 0.0000028332, 0.0000028375, 0.0000028403, + 0.0000028407, 0.0000028385, 0.0000028338, 0.0000028297, 0.0000028278, + 0.0000028272, 0.0000028269, 0.0000028269, 0.0000028275, 0.0000028295, + 0.0000028345, 0.0000028414, 0.0000028478, 0.0000028517, 0.0000028537, + 0.0000028554, 0.0000028571, 0.0000028575, 0.0000028543, 0.0000028478, + 0.0000028418, 0.0000028399, 0.0000028417, 0.0000028448, 0.0000028503, + 0.0000028522, 0.0000028365, 0.0000028096, 0.0000028012, 0.0000028043, + 0.0000028070, 0.0000028150, 0.0000028323, 0.0000028469, 0.0000028493, + 0.0000028437, 0.0000028342, 0.0000028207, 0.0000028081, 0.0000028040, + 0.0000028059, 0.0000028107, 0.0000028148, 0.0000028171, 0.0000028177, + 0.0000028170, 0.0000028165, 0.0000028180, 0.0000028233, 0.0000028298, + 0.0000028338, 0.0000028339, 0.0000028331, 0.0000028331, 0.0000028350, + 0.0000028385, 0.0000028430, 0.0000028475, 0.0000028516, 0.0000028558, + 0.0000028609, 0.0000028687, 0.0000028794, 0.0000028903, 0.0000028971, + 0.0000028976, 0.0000028946, 0.0000028932, 0.0000028955, 0.0000028997, + 0.0000029020, 0.0000029030, 0.0000029059, 0.0000029107, 0.0000029125, + 0.0000029106, 0.0000029031, 0.0000028916, 0.0000028801, 0.0000028735, + 0.0000028729, 0.0000028780, 0.0000028856, 0.0000028887, 0.0000028857, + 0.0000028742, 0.0000028589, 0.0000028469, 0.0000028421, 0.0000028420, + 0.0000028418, 0.0000028402, 0.0000028397, 0.0000028407, 0.0000028409, + 0.0000028411, 0.0000028432, 0.0000028469, 0.0000028512, 0.0000028522, + 0.0000028516, 0.0000028529, 0.0000028568, 0.0000028609, 0.0000028641, + 0.0000028666, 0.0000028670, 0.0000028659, 0.0000028655, 0.0000028683, + 0.0000028732, 0.0000028776, 0.0000028811, 0.0000028839, 0.0000028876, + 0.0000028915, 0.0000028922, 0.0000028903, 0.0000028855, 0.0000028786, + 0.0000028737, 0.0000028728, 0.0000028750, 0.0000028761, 0.0000028746, + 0.0000028696, 0.0000028607, 0.0000028473, 0.0000028330, 0.0000028227, + 0.0000028178, 0.0000028197, 0.0000028336, 0.0000028535, 0.0000028598, + 0.0000028573, 0.0000028575, 0.0000028661, 0.0000028717, 0.0000028675, + 0.0000028579, 0.0000028530, 0.0000028510, 0.0000028488, 0.0000028482, + 0.0000028484, 0.0000028483, 0.0000028477, 0.0000028455, 0.0000028402, + 0.0000028305, 0.0000028171, 0.0000028050, 0.0000027999, 0.0000028032, + 0.0000028118, 0.0000028219, 0.0000028329, 0.0000028450, 0.0000028564, + 0.0000028642, 0.0000028689, 0.0000028675, 0.0000028629, 0.0000028591, + 0.0000028578, 0.0000028568, 0.0000028539, 0.0000028483, 0.0000028416, + 0.0000028346, 0.0000028279, 0.0000028216, 0.0000028147, 0.0000028061, + 0.0000027999, 0.0000028001, 0.0000028044, 0.0000028088, 0.0000028118, + 0.0000028125, 0.0000028148, 0.0000028175, 0.0000028166, 0.0000028143, + 0.0000028157, 0.0000028207, 0.0000028240, 0.0000028204, 0.0000028097, + 0.0000027973, 0.0000027888, 0.0000027860, 0.0000027886, 0.0000027937, + 0.0000027971, 0.0000027990, 0.0000027987, 0.0000027958, 0.0000027929, + 0.0000027907, 0.0000027916, 0.0000027941, 0.0000027970, 0.0000027979, + 0.0000027963, 0.0000027951, 0.0000027968, 0.0000028019, 0.0000028084, + 0.0000028148, 0.0000028188, 0.0000028186, 0.0000028150, 0.0000028128, + 0.0000028132, 0.0000028079, 0.0000027925, 0.0000027941, 0.0000028306, + 0.0000028552, 0.0000028549, 0.0000028592, 0.0000028741, 0.0000028927, + 0.0000029104, 0.0000029213, 0.0000029253, 0.0000029245, 0.0000029191, + 0.0000029131, 0.0000029088, 0.0000029052, 0.0000029036, 0.0000029026, + 0.0000029017, 0.0000028976, 0.0000028909, 0.0000028849, 0.0000028842, + 0.0000028888, 0.0000028957, 0.0000028982, 0.0000028949, 0.0000028875, + 0.0000028769, 0.0000028708, 0.0000028661, 0.0000028600, 0.0000028475, + 0.0000028357, 0.0000028375, 0.0000028540, 0.0000028568, 0.0000028385, + 0.0000028188, 0.0000028155, 0.0000028261, 0.0000028422, 0.0000028531, + 0.0000028564, 0.0000028548, 0.0000028524, 0.0000028515, 0.0000028508, + 0.0000028502, 0.0000028509, 0.0000028519, 0.0000028522, 0.0000028513, + 0.0000028510, 0.0000028511, 0.0000028518, 0.0000028515, 0.0000028500, + 0.0000028477, 0.0000028456, 0.0000028433, 0.0000028399, 0.0000028353, + 0.0000028304, 0.0000028242, 0.0000028163, 0.0000028057, 0.0000027941, + 0.0000027834, 0.0000027743, 0.0000027682, 0.0000027640, 0.0000027612, + 0.0000027600, 0.0000027621, 0.0000027648, 0.0000027659, 0.0000027654, + 0.0000027645, 0.0000027661, 0.0000027719, 0.0000027774, 0.0000027842, + 0.0000027909, 0.0000027905, 0.0000027845, 0.0000027813, 0.0000027817, + 0.0000027833, 0.0000027869, 0.0000027922, 0.0000027978, 0.0000028016, + 0.0000028027, 0.0000028017, 0.0000027991, 0.0000027964, 0.0000027947, + 0.0000027913, 0.0000027772, 0.0000027588, 0.0000027545, 0.0000027668, + 0.0000027913, 0.0000028028, 0.0000028004, 0.0000027975, 0.0000027994, + 0.0000028002, 0.0000027999, 0.0000028009, 0.0000028024, 0.0000028012, + 0.0000027942, 0.0000027818, 0.0000027677, 0.0000027594, 0.0000027616, + 0.0000027696, 0.0000027750, 0.0000027772, 0.0000027800, 0.0000027843, + 0.0000027871, 0.0000027877, 0.0000027872, 0.0000027853, 0.0000027821, + 0.0000027807, 0.0000027812, 0.0000027840, 0.0000027865, 0.0000027901, + 0.0000027934, 0.0000027965, 0.0000028032, 0.0000028111, 0.0000028181, + 0.0000028235, 0.0000028271, 0.0000028295, 0.0000028292, 0.0000028236, + 0.0000028133, 0.0000028012, 0.0000027917, 0.0000027874, 0.0000027875, + 0.0000027896, 0.0000027911, 0.0000027922, 0.0000027934, 0.0000027968, + 0.0000028009, 0.0000028017, 0.0000028003, 0.0000028007, 0.0000028060, + 0.0000028154, 0.0000028234, 0.0000028301, 0.0000028402, 0.0000028494, + 0.0000028511, 0.0000028431, 0.0000028354, 0.0000028367, 0.0000028406, + 0.0000028439, 0.0000028416, 0.0000028331, 0.0000028303, 0.0000028326, + 0.0000028406, 0.0000028545, 0.0000028596, 0.0000028644, 0.0000028729, + 0.0000028797, 0.0000028739, 0.0000028517, 0.0000028288, 0.0000028283, + 0.0000028363, 0.0000028420, 0.0000028414, 0.0000028334, 0.0000028284, + 0.0000028406, 0.0000028570, 0.0000028671, 0.0000028754, 0.0000028747, + 0.0000028727, 0.0000028654, 0.0000028669, 0.0000028654, 0.0000028606, + 0.0000028589, 0.0000028561, 0.0000028471, 0.0000028385, 0.0000028363, + 0.0000028360, 0.0000028362, 0.0000028328, 0.0000028360, 0.0000028407, + 0.0000028387, 0.0000028398, 0.0000028525, 0.0000028687, 0.0000028721, + 0.0000028701, 0.0000028681, 0.0000028684, 0.0000028680, 0.0000028676, + 0.0000028703, 0.0000028743, 0.0000028805, 0.0000028794, 0.0000028717, + 0.0000028562, 0.0000028373, 0.0000028226, 0.0000028138, 0.0000028104, + 0.0000028087, 0.0000028073, 0.0000028064, 0.0000028071, 0.0000028073, + 0.0000028043, 0.0000027996, 0.0000027941, 0.0000027883, 0.0000027782, + 0.0000027658, 0.0000027586, 0.0000027581, 0.0000027619, 0.0000027656, + 0.0000027643, 0.0000027574, 0.0000027524, 0.0000027459, 0.0000027378, + 0.0000027320, 0.0000027326, 0.0000027380, 0.0000027447, 0.0000027486, + 0.0000027474, 0.0000027419, 0.0000027364, 0.0000027351, 0.0000027366, + 0.0000027397, 0.0000027431, 0.0000027450, 0.0000027484, 0.0000027501, + 0.0000027476, 0.0000027441, 0.0000027410, 0.0000027379, 0.0000027343, + 0.0000027315, 0.0000027270, 0.0000027214, 0.0000027148, 0.0000027065, + 0.0000026968, 0.0000026863, 0.0000026790, 0.0000026749, 0.0000026723, + 0.0000026712, 0.0000026721, 0.0000026750, 0.0000026784, 0.0000026799, + 0.0000026788, 0.0000026777, 0.0000026778, 0.0000026806, 0.0000026875, + 0.0000026980, 0.0000027092, 0.0000027185, 0.0000027244, 0.0000027263, + 0.0000027251, 0.0000027245, 0.0000027252, 0.0000027297, 0.0000027390, + 0.0000027520, 0.0000027686, 0.0000027864, 0.0000027995, 0.0000028048, + 0.0000028051, 0.0000028042, 0.0000028031, 0.0000028019, 0.0000028035, + 0.0000028143, 0.0000028275, 0.0000028320, 0.0000028275, 0.0000028179, + 0.0000028134, 0.0000028173, 0.0000028228, 0.0000028205, 0.0000028121, + 0.0000028038, 0.0000027980, 0.0000028024, 0.0000028134, 0.0000028202, + 0.0000028212, 0.0000028195, 0.0000028195, 0.0000028123, 0.0000027904, + 0.0000027713, 0.0000027862, 0.0000027983, 0.0000028260, 0.0000028427, + 0.0000028418, 0.0000028497, 0.0000028534, 0.0000028543, 0.0000028554, + 0.0000028607, 0.0000028709, 0.0000028712, 0.0000028573, 0.0000028420, + 0.0000028257, 0.0000028026, 0.0000027973, 0.0000027993, 0.0000028017, + 0.0000028017, 0.0000028004, 0.0000027986, 0.0000027912, 0.0000027690, + 0.0000027647, 0.0000027653, 0.0000027669, 0.0000027726, 0.0000027769, + 0.0000027740, 0.0000027648, 0.0000027566, 0.0000027514, 0.0000027478, + 0.0000027451, 0.0000027434, 0.0000027451, 0.0000027489, 0.0000027518, + 0.0000027550, 0.0000027593, 0.0000027622, 0.0000027616, 0.0000027597, + 0.0000027595, 0.0000027618, 0.0000027666, 0.0000027698, 0.0000027697, + 0.0000027677, 0.0000027657, 0.0000027638, 0.0000027634, 0.0000027653, + 0.0000027690, 0.0000027756, 0.0000027809, 0.0000027848, 0.0000027858, + 0.0000027846, 0.0000027815, 0.0000027801, 0.0000027788, 0.0000027768, + 0.0000027749, 0.0000027728, 0.0000027744, 0.0000027750, 0.0000027776, + 0.0000027797, 0.0000027840, 0.0000027885, 0.0000027931, 0.0000027980, + 0.0000028024, 0.0000028065, 0.0000028104, 0.0000028142, 0.0000028140, + 0.0000028106, 0.0000028028, 0.0000027950, 0.0000027854, 0.0000027790, + 0.0000027809, 0.0000027862, 0.0000027924, 0.0000027972, 0.0000028014, + 0.0000028058, 0.0000028111, 0.0000028187, 0.0000028241, 0.0000028249, + 0.0000028231, 0.0000028226, 0.0000028192, 0.0000028141, 0.0000028077, + 0.0000028014, 0.0000027980, 0.0000027997, 0.0000028065, 0.0000028119, + 0.0000028135, 0.0000028109, 0.0000028050, 0.0000027986, 0.0000027940, + 0.0000027906, 0.0000027888, 0.0000027910, 0.0000027973, 0.0000028058, + 0.0000028136, 0.0000028199, 0.0000028229, 0.0000028263, 0.0000028327, + 0.0000028402, 0.0000028473, 0.0000028547, 0.0000028596, 0.0000028629, + 0.0000028676, 0.0000028737, 0.0000028787, 0.0000028799, 0.0000028787, + 0.0000028761, 0.0000028707, 0.0000028622, 0.0000028514, 0.0000028408, + 0.0000028321, 0.0000028261, 0.0000028228, 0.0000028237, 0.0000028263, + 0.0000028287, 0.0000028278, 0.0000028252, 0.0000028243, 0.0000028259, + 0.0000028282, 0.0000028297, 0.0000028298, 0.0000028277, 0.0000028229, + 0.0000028170, 0.0000028122, 0.0000028103, 0.0000028113, 0.0000028152, + 0.0000028205, 0.0000028262, 0.0000028328, 0.0000028406, 0.0000028481, + 0.0000028538, 0.0000028576, 0.0000028596, 0.0000028617, 0.0000028633, + 0.0000028621, 0.0000028559, 0.0000028476, 0.0000028414, 0.0000028400, + 0.0000028416, 0.0000028459, 0.0000028537, 0.0000028531, 0.0000028306, + 0.0000028062, 0.0000028026, 0.0000028060, 0.0000028076, 0.0000028149, + 0.0000028314, 0.0000028453, 0.0000028479, 0.0000028434, 0.0000028354, + 0.0000028221, 0.0000028073, 0.0000027999, 0.0000027995, 0.0000028026, + 0.0000028080, 0.0000028133, 0.0000028172, 0.0000028189, 0.0000028194, + 0.0000028211, 0.0000028254, 0.0000028307, 0.0000028344, 0.0000028359, + 0.0000028362, 0.0000028370, 0.0000028388, 0.0000028421, 0.0000028470, + 0.0000028519, 0.0000028565, 0.0000028620, 0.0000028688, 0.0000028771, + 0.0000028867, 0.0000028953, 0.0000028995, 0.0000028983, 0.0000028944, + 0.0000028930, 0.0000028961, 0.0000029015, 0.0000029056, 0.0000029085, + 0.0000029122, 0.0000029166, 0.0000029182, 0.0000029153, 0.0000029081, + 0.0000028971, 0.0000028854, 0.0000028775, 0.0000028756, 0.0000028793, + 0.0000028847, 0.0000028867, 0.0000028835, 0.0000028732, 0.0000028580, + 0.0000028450, 0.0000028397, 0.0000028404, 0.0000028420, 0.0000028430, + 0.0000028446, 0.0000028470, 0.0000028476, 0.0000028473, 0.0000028483, + 0.0000028513, 0.0000028554, 0.0000028570, 0.0000028567, 0.0000028578, + 0.0000028622, 0.0000028675, 0.0000028718, 0.0000028751, 0.0000028759, + 0.0000028744, 0.0000028734, 0.0000028749, 0.0000028797, 0.0000028842, + 0.0000028872, 0.0000028879, 0.0000028884, 0.0000028907, 0.0000028925, + 0.0000028920, 0.0000028885, 0.0000028824, 0.0000028774, 0.0000028773, + 0.0000028805, 0.0000028819, 0.0000028788, 0.0000028719, 0.0000028609, + 0.0000028459, 0.0000028308, 0.0000028217, 0.0000028188, 0.0000028195, + 0.0000028297, 0.0000028484, 0.0000028598, 0.0000028600, 0.0000028590, + 0.0000028653, 0.0000028740, 0.0000028748, 0.0000028696, 0.0000028619, + 0.0000028576, 0.0000028544, 0.0000028503, 0.0000028482, 0.0000028489, + 0.0000028495, 0.0000028483, 0.0000028450, 0.0000028388, 0.0000028274, + 0.0000028132, 0.0000028008, 0.0000027946, 0.0000027962, 0.0000028033, + 0.0000028135, 0.0000028256, 0.0000028396, 0.0000028528, 0.0000028631, + 0.0000028696, 0.0000028699, 0.0000028674, 0.0000028653, 0.0000028653, + 0.0000028651, 0.0000028649, 0.0000028620, 0.0000028554, 0.0000028473, + 0.0000028399, 0.0000028352, 0.0000028303, 0.0000028204, 0.0000028085, + 0.0000028025, 0.0000028047, 0.0000028096, 0.0000028131, 0.0000028136, + 0.0000028162, 0.0000028201, 0.0000028210, 0.0000028190, 0.0000028163, + 0.0000028150, 0.0000028161, 0.0000028158, 0.0000028112, 0.0000028015, + 0.0000027897, 0.0000027830, 0.0000027837, 0.0000027893, 0.0000027951, + 0.0000027994, 0.0000028025, 0.0000028034, 0.0000028026, 0.0000028010, + 0.0000028008, 0.0000028014, 0.0000028015, 0.0000028000, 0.0000027971, + 0.0000027947, 0.0000027963, 0.0000028020, 0.0000028099, 0.0000028168, + 0.0000028200, 0.0000028191, 0.0000028150, 0.0000028126, 0.0000028134, + 0.0000028091, 0.0000027932, 0.0000027945, 0.0000028306, 0.0000028546, + 0.0000028558, 0.0000028609, 0.0000028772, 0.0000028989, 0.0000029154, + 0.0000029205, 0.0000029200, 0.0000029177, 0.0000029120, 0.0000029051, + 0.0000029002, 0.0000028981, 0.0000028996, 0.0000029020, 0.0000029026, + 0.0000029016, 0.0000028980, 0.0000028947, 0.0000028959, 0.0000028994, + 0.0000029015, 0.0000028991, 0.0000028932, 0.0000028840, 0.0000028759, + 0.0000028719, 0.0000028646, 0.0000028516, 0.0000028379, 0.0000028381, + 0.0000028554, 0.0000028609, 0.0000028397, 0.0000028132, 0.0000028117, + 0.0000028310, 0.0000028528, 0.0000028631, 0.0000028628, 0.0000028589, + 0.0000028544, 0.0000028507, 0.0000028489, 0.0000028476, 0.0000028469, + 0.0000028472, 0.0000028473, 0.0000028468, 0.0000028450, 0.0000028439, + 0.0000028453, 0.0000028471, 0.0000028488, 0.0000028494, 0.0000028492, + 0.0000028486, 0.0000028471, 0.0000028434, 0.0000028378, 0.0000028317, + 0.0000028260, 0.0000028199, 0.0000028136, 0.0000028086, 0.0000028045, + 0.0000027982, 0.0000027894, 0.0000027796, 0.0000027696, 0.0000027622, + 0.0000027600, 0.0000027620, 0.0000027632, 0.0000027629, 0.0000027631, + 0.0000027642, 0.0000027671, 0.0000027742, 0.0000027817, 0.0000027875, + 0.0000027926, 0.0000027950, 0.0000027914, 0.0000027867, 0.0000027848, + 0.0000027858, 0.0000027920, 0.0000028013, 0.0000028081, 0.0000028103, + 0.0000028104, 0.0000028097, 0.0000028071, 0.0000028023, 0.0000027965, + 0.0000027917, 0.0000027820, 0.0000027653, 0.0000027551, 0.0000027580, + 0.0000027783, 0.0000027993, 0.0000028049, 0.0000028028, 0.0000028006, + 0.0000027995, 0.0000027986, 0.0000027979, 0.0000027967, 0.0000027936, + 0.0000027870, 0.0000027764, 0.0000027636, 0.0000027563, 0.0000027604, + 0.0000027712, 0.0000027789, 0.0000027809, 0.0000027819, 0.0000027858, + 0.0000027915, 0.0000027962, 0.0000027985, 0.0000027973, 0.0000027918, + 0.0000027851, 0.0000027813, 0.0000027815, 0.0000027838, 0.0000027879, + 0.0000027914, 0.0000027951, 0.0000028022, 0.0000028108, 0.0000028194, + 0.0000028262, 0.0000028304, 0.0000028312, 0.0000028301, 0.0000028249, + 0.0000028168, 0.0000028072, 0.0000027985, 0.0000027926, 0.0000027907, + 0.0000027905, 0.0000027915, 0.0000027930, 0.0000027948, 0.0000027988, + 0.0000028032, 0.0000028044, 0.0000028042, 0.0000028055, 0.0000028123, + 0.0000028221, 0.0000028294, 0.0000028370, 0.0000028469, 0.0000028541, + 0.0000028537, 0.0000028428, 0.0000028372, 0.0000028398, 0.0000028468, + 0.0000028521, 0.0000028482, 0.0000028394, 0.0000028375, 0.0000028379, + 0.0000028492, 0.0000028606, 0.0000028661, 0.0000028723, 0.0000028815, + 0.0000028784, 0.0000028650, 0.0000028345, 0.0000028223, 0.0000028267, + 0.0000028367, 0.0000028423, 0.0000028424, 0.0000028339, 0.0000028321, + 0.0000028462, 0.0000028609, 0.0000028689, 0.0000028750, 0.0000028711, + 0.0000028682, 0.0000028648, 0.0000028694, 0.0000028683, 0.0000028623, + 0.0000028583, 0.0000028565, 0.0000028534, 0.0000028464, 0.0000028376, + 0.0000028322, 0.0000028315, 0.0000028312, 0.0000028340, 0.0000028408, + 0.0000028430, 0.0000028411, 0.0000028446, 0.0000028569, 0.0000028669, + 0.0000028699, 0.0000028683, 0.0000028675, 0.0000028659, 0.0000028619, + 0.0000028597, 0.0000028598, 0.0000028633, 0.0000028697, 0.0000028682, + 0.0000028578, 0.0000028407, 0.0000028216, 0.0000028067, 0.0000027990, + 0.0000027946, 0.0000027905, 0.0000027887, 0.0000027894, 0.0000027887, + 0.0000027841, 0.0000027782, 0.0000027751, 0.0000027701, 0.0000027637, + 0.0000027532, 0.0000027429, 0.0000027407, 0.0000027445, 0.0000027518, + 0.0000027531, 0.0000027507, 0.0000027469, 0.0000027450, 0.0000027398, + 0.0000027351, 0.0000027352, 0.0000027385, 0.0000027420, 0.0000027425, + 0.0000027396, 0.0000027342, 0.0000027318, 0.0000027330, 0.0000027365, + 0.0000027394, 0.0000027418, 0.0000027438, 0.0000027459, 0.0000027502, + 0.0000027512, 0.0000027502, 0.0000027491, 0.0000027470, 0.0000027443, + 0.0000027422, 0.0000027397, 0.0000027352, 0.0000027290, 0.0000027212, + 0.0000027104, 0.0000026978, 0.0000026865, 0.0000026794, 0.0000026748, + 0.0000026709, 0.0000026686, 0.0000026677, 0.0000026700, 0.0000026733, + 0.0000026751, 0.0000026753, 0.0000026761, 0.0000026786, 0.0000026832, + 0.0000026915, 0.0000027018, 0.0000027125, 0.0000027213, 0.0000027269, + 0.0000027295, 0.0000027307, 0.0000027313, 0.0000027303, 0.0000027304, + 0.0000027338, 0.0000027426, 0.0000027572, 0.0000027753, 0.0000027917, + 0.0000028008, 0.0000028021, 0.0000028006, 0.0000027988, 0.0000027982, + 0.0000027995, 0.0000028100, 0.0000028247, 0.0000028308, 0.0000028270, + 0.0000028170, 0.0000028106, 0.0000028140, 0.0000028225, 0.0000028242, + 0.0000028171, 0.0000028051, 0.0000027946, 0.0000027960, 0.0000028090, + 0.0000028210, 0.0000028234, 0.0000028194, 0.0000028189, 0.0000028097, + 0.0000027820, 0.0000027736, 0.0000027909, 0.0000028041, 0.0000028357, + 0.0000028396, 0.0000028429, 0.0000028539, 0.0000028550, 0.0000028546, + 0.0000028558, 0.0000028622, 0.0000028723, 0.0000028719, 0.0000028572, + 0.0000028412, 0.0000028234, 0.0000028005, 0.0000027972, 0.0000027987, + 0.0000028005, 0.0000028001, 0.0000027988, 0.0000027962, 0.0000027862, + 0.0000027670, 0.0000027636, 0.0000027640, 0.0000027672, 0.0000027729, + 0.0000027766, 0.0000027738, 0.0000027645, 0.0000027562, 0.0000027512, + 0.0000027471, 0.0000027441, 0.0000027427, 0.0000027443, 0.0000027481, + 0.0000027515, 0.0000027552, 0.0000027585, 0.0000027591, 0.0000027563, + 0.0000027537, 0.0000027552, 0.0000027601, 0.0000027676, 0.0000027735, + 0.0000027759, 0.0000027751, 0.0000027724, 0.0000027674, 0.0000027628, + 0.0000027604, 0.0000027602, 0.0000027635, 0.0000027684, 0.0000027735, + 0.0000027764, 0.0000027786, 0.0000027788, 0.0000027802, 0.0000027806, + 0.0000027782, 0.0000027753, 0.0000027714, 0.0000027706, 0.0000027703, + 0.0000027743, 0.0000027786, 0.0000027833, 0.0000027875, 0.0000027911, + 0.0000027943, 0.0000027972, 0.0000028000, 0.0000028036, 0.0000028072, + 0.0000028067, 0.0000028044, 0.0000027985, 0.0000027897, 0.0000027794, + 0.0000027735, 0.0000027751, 0.0000027797, 0.0000027862, 0.0000027925, + 0.0000027961, 0.0000028003, 0.0000028038, 0.0000028089, 0.0000028141, + 0.0000028160, 0.0000028154, 0.0000028143, 0.0000028130, 0.0000028099, + 0.0000028043, 0.0000027990, 0.0000027953, 0.0000027955, 0.0000028003, + 0.0000028049, 0.0000028069, 0.0000028060, 0.0000028032, 0.0000027992, + 0.0000027962, 0.0000027951, 0.0000027945, 0.0000027973, 0.0000028053, + 0.0000028153, 0.0000028232, 0.0000028292, 0.0000028335, 0.0000028375, + 0.0000028420, 0.0000028466, 0.0000028509, 0.0000028568, 0.0000028616, + 0.0000028675, 0.0000028749, 0.0000028808, 0.0000028833, 0.0000028824, + 0.0000028797, 0.0000028744, 0.0000028659, 0.0000028544, 0.0000028427, + 0.0000028326, 0.0000028254, 0.0000028211, 0.0000028215, 0.0000028234, + 0.0000028290, 0.0000028340, 0.0000028344, 0.0000028312, 0.0000028265, + 0.0000028242, 0.0000028233, 0.0000028222, 0.0000028208, 0.0000028191, + 0.0000028162, 0.0000028119, 0.0000028069, 0.0000028027, 0.0000028012, + 0.0000028029, 0.0000028083, 0.0000028162, 0.0000028248, 0.0000028341, + 0.0000028429, 0.0000028498, 0.0000028551, 0.0000028588, 0.0000028613, + 0.0000028635, 0.0000028642, 0.0000028611, 0.0000028537, 0.0000028457, + 0.0000028414, 0.0000028406, 0.0000028425, 0.0000028496, 0.0000028576, + 0.0000028509, 0.0000028233, 0.0000028036, 0.0000028043, 0.0000028071, + 0.0000028079, 0.0000028148, 0.0000028309, 0.0000028450, 0.0000028478, + 0.0000028442, 0.0000028362, 0.0000028226, 0.0000028062, 0.0000027959, + 0.0000027941, 0.0000027976, 0.0000028044, 0.0000028117, 0.0000028171, + 0.0000028193, 0.0000028192, 0.0000028197, 0.0000028226, 0.0000028273, + 0.0000028322, 0.0000028358, 0.0000028375, 0.0000028384, 0.0000028395, + 0.0000028424, 0.0000028471, 0.0000028518, 0.0000028577, 0.0000028666, + 0.0000028769, 0.0000028861, 0.0000028934, 0.0000028981, 0.0000028994, + 0.0000028975, 0.0000028941, 0.0000028932, 0.0000028964, 0.0000029019, + 0.0000029076, 0.0000029129, 0.0000029180, 0.0000029220, 0.0000029231, + 0.0000029208, 0.0000029144, 0.0000029042, 0.0000028918, 0.0000028819, + 0.0000028791, 0.0000028817, 0.0000028860, 0.0000028872, 0.0000028853, + 0.0000028766, 0.0000028626, 0.0000028491, 0.0000028422, 0.0000028417, + 0.0000028434, 0.0000028459, 0.0000028496, 0.0000028533, 0.0000028546, + 0.0000028545, 0.0000028554, 0.0000028580, 0.0000028616, 0.0000028638, + 0.0000028646, 0.0000028657, 0.0000028693, 0.0000028740, 0.0000028778, + 0.0000028803, 0.0000028802, 0.0000028776, 0.0000028753, 0.0000028760, + 0.0000028792, 0.0000028839, 0.0000028878, 0.0000028891, 0.0000028890, + 0.0000028895, 0.0000028905, 0.0000028914, 0.0000028901, 0.0000028860, + 0.0000028825, 0.0000028825, 0.0000028859, 0.0000028867, 0.0000028813, + 0.0000028708, 0.0000028573, 0.0000028422, 0.0000028290, 0.0000028216, + 0.0000028200, 0.0000028203, 0.0000028270, 0.0000028432, 0.0000028577, + 0.0000028607, 0.0000028603, 0.0000028642, 0.0000028737, 0.0000028783, + 0.0000028777, 0.0000028726, 0.0000028658, 0.0000028615, 0.0000028563, + 0.0000028505, 0.0000028490, 0.0000028509, 0.0000028511, 0.0000028483, + 0.0000028435, 0.0000028358, 0.0000028241, 0.0000028111, 0.0000027995, + 0.0000027932, 0.0000027930, 0.0000027994, 0.0000028099, 0.0000028223, + 0.0000028361, 0.0000028490, 0.0000028593, 0.0000028655, 0.0000028670, + 0.0000028667, 0.0000028662, 0.0000028657, 0.0000028657, 0.0000028683, + 0.0000028693, 0.0000028658, 0.0000028579, 0.0000028487, 0.0000028437, + 0.0000028415, 0.0000028338, 0.0000028194, 0.0000028083, 0.0000028063, + 0.0000028090, 0.0000028112, 0.0000028122, 0.0000028164, 0.0000028214, + 0.0000028246, 0.0000028236, 0.0000028186, 0.0000028123, 0.0000028079, + 0.0000028079, 0.0000028093, 0.0000028054, 0.0000027947, 0.0000027850, + 0.0000027836, 0.0000027872, 0.0000027917, 0.0000027964, 0.0000028012, + 0.0000028059, 0.0000028095, 0.0000028122, 0.0000028145, 0.0000028145, + 0.0000028128, 0.0000028090, 0.0000028039, 0.0000027998, 0.0000028005, + 0.0000028063, 0.0000028139, 0.0000028200, 0.0000028220, 0.0000028205, + 0.0000028152, 0.0000028123, 0.0000028131, 0.0000028090, 0.0000027925, + 0.0000027964, 0.0000028320, 0.0000028538, 0.0000028572, 0.0000028636, + 0.0000028825, 0.0000029048, 0.0000029166, 0.0000029169, 0.0000029131, + 0.0000029102, 0.0000029052, 0.0000028982, 0.0000028941, 0.0000028942, + 0.0000028984, 0.0000029024, 0.0000029047, 0.0000029065, 0.0000029056, + 0.0000029037, 0.0000029046, 0.0000029044, 0.0000029017, 0.0000028963, + 0.0000028885, 0.0000028805, 0.0000028742, 0.0000028702, 0.0000028599, + 0.0000028428, 0.0000028383, 0.0000028554, 0.0000028636, 0.0000028454, + 0.0000028156, 0.0000028108, 0.0000028317, 0.0000028583, 0.0000028677, + 0.0000028653, 0.0000028588, 0.0000028524, 0.0000028484, 0.0000028459, + 0.0000028446, 0.0000028450, 0.0000028466, 0.0000028490, 0.0000028494, + 0.0000028475, 0.0000028441, 0.0000028421, 0.0000028422, 0.0000028424, + 0.0000028434, 0.0000028437, 0.0000028437, 0.0000028443, 0.0000028443, + 0.0000028430, 0.0000028400, 0.0000028359, 0.0000028313, 0.0000028254, + 0.0000028179, 0.0000028111, 0.0000028076, 0.0000028068, 0.0000028051, + 0.0000027991, 0.0000027885, 0.0000027766, 0.0000027683, 0.0000027659, + 0.0000027660, 0.0000027641, 0.0000027623, 0.0000027628, 0.0000027650, + 0.0000027676, 0.0000027746, 0.0000027840, 0.0000027901, 0.0000027943, + 0.0000027968, 0.0000027960, 0.0000027918, 0.0000027879, 0.0000027890, + 0.0000027989, 0.0000028118, 0.0000028184, 0.0000028190, 0.0000028182, + 0.0000028167, 0.0000028135, 0.0000028076, 0.0000027994, 0.0000027932, + 0.0000027872, 0.0000027734, 0.0000027579, 0.0000027552, 0.0000027665, + 0.0000027887, 0.0000028041, 0.0000028089, 0.0000028056, 0.0000028000, + 0.0000027982, 0.0000027979, 0.0000027949, 0.0000027881, 0.0000027786, + 0.0000027688, 0.0000027593, 0.0000027549, 0.0000027592, 0.0000027706, + 0.0000027807, 0.0000027852, 0.0000027860, 0.0000027878, 0.0000027934, + 0.0000028014, 0.0000028079, 0.0000028092, 0.0000028060, 0.0000027979, + 0.0000027896, 0.0000027845, 0.0000027835, 0.0000027849, 0.0000027883, + 0.0000027933, 0.0000028008, 0.0000028094, 0.0000028180, 0.0000028246, + 0.0000028271, 0.0000028268, 0.0000028242, 0.0000028194, 0.0000028134, + 0.0000028065, 0.0000027999, 0.0000027937, 0.0000027900, 0.0000027890, + 0.0000027899, 0.0000027918, 0.0000027951, 0.0000028011, 0.0000028063, + 0.0000028076, 0.0000028068, 0.0000028084, 0.0000028167, 0.0000028267, + 0.0000028336, 0.0000028413, 0.0000028506, 0.0000028570, 0.0000028540, + 0.0000028433, 0.0000028398, 0.0000028430, 0.0000028525, 0.0000028586, + 0.0000028520, 0.0000028443, 0.0000028431, 0.0000028438, 0.0000028579, + 0.0000028670, 0.0000028732, 0.0000028808, 0.0000028856, 0.0000028736, + 0.0000028534, 0.0000028253, 0.0000028208, 0.0000028254, 0.0000028365, + 0.0000028423, 0.0000028425, 0.0000028365, 0.0000028367, 0.0000028497, + 0.0000028624, 0.0000028680, 0.0000028703, 0.0000028651, 0.0000028636, + 0.0000028654, 0.0000028711, 0.0000028702, 0.0000028638, 0.0000028586, + 0.0000028545, 0.0000028510, 0.0000028484, 0.0000028438, 0.0000028348, + 0.0000028296, 0.0000028288, 0.0000028318, 0.0000028392, 0.0000028438, + 0.0000028431, 0.0000028408, 0.0000028441, 0.0000028516, 0.0000028602, + 0.0000028637, 0.0000028636, 0.0000028611, 0.0000028573, 0.0000028514, + 0.0000028476, 0.0000028480, 0.0000028519, 0.0000028567, 0.0000028540, + 0.0000028424, 0.0000028276, 0.0000028090, 0.0000027918, 0.0000027814, + 0.0000027758, 0.0000027732, 0.0000027737, 0.0000027733, 0.0000027687, + 0.0000027623, 0.0000027602, 0.0000027593, 0.0000027559, 0.0000027484, + 0.0000027359, 0.0000027317, 0.0000027359, 0.0000027457, 0.0000027509, + 0.0000027514, 0.0000027485, 0.0000027491, 0.0000027464, 0.0000027424, + 0.0000027410, 0.0000027395, 0.0000027372, 0.0000027340, 0.0000027320, + 0.0000027303, 0.0000027313, 0.0000027341, 0.0000027386, 0.0000027425, + 0.0000027437, 0.0000027432, 0.0000027437, 0.0000027459, 0.0000027483, + 0.0000027477, 0.0000027463, 0.0000027446, 0.0000027420, 0.0000027402, + 0.0000027390, 0.0000027375, 0.0000027350, 0.0000027304, 0.0000027232, + 0.0000027133, 0.0000027006, 0.0000026905, 0.0000026841, 0.0000026793, + 0.0000026750, 0.0000026709, 0.0000026680, 0.0000026682, 0.0000026685, + 0.0000026692, 0.0000026708, 0.0000026746, 0.0000026797, 0.0000026868, + 0.0000026960, 0.0000027060, 0.0000027163, 0.0000027243, 0.0000027290, + 0.0000027320, 0.0000027357, 0.0000027371, 0.0000027360, 0.0000027335, + 0.0000027325, 0.0000027361, 0.0000027473, 0.0000027631, 0.0000027816, + 0.0000027953, 0.0000027991, 0.0000027977, 0.0000027955, 0.0000027950, + 0.0000027972, 0.0000028085, 0.0000028244, 0.0000028308, 0.0000028256, + 0.0000028142, 0.0000028080, 0.0000028113, 0.0000028205, 0.0000028238, + 0.0000028186, 0.0000028059, 0.0000027940, 0.0000027934, 0.0000028064, + 0.0000028211, 0.0000028239, 0.0000028186, 0.0000028179, 0.0000028031, + 0.0000027737, 0.0000027781, 0.0000027950, 0.0000028145, 0.0000028381, + 0.0000028358, 0.0000028471, 0.0000028569, 0.0000028556, 0.0000028550, + 0.0000028565, 0.0000028638, 0.0000028738, 0.0000028726, 0.0000028572, + 0.0000028408, 0.0000028212, 0.0000027996, 0.0000027980, 0.0000027987, + 0.0000027993, 0.0000027990, 0.0000027984, 0.0000027951, 0.0000027824, + 0.0000027657, 0.0000027628, 0.0000027630, 0.0000027666, 0.0000027720, + 0.0000027750, 0.0000027724, 0.0000027637, 0.0000027553, 0.0000027510, + 0.0000027473, 0.0000027448, 0.0000027441, 0.0000027467, 0.0000027508, + 0.0000027554, 0.0000027589, 0.0000027603, 0.0000027590, 0.0000027537, + 0.0000027495, 0.0000027501, 0.0000027552, 0.0000027638, 0.0000027721, + 0.0000027770, 0.0000027779, 0.0000027772, 0.0000027722, 0.0000027649, + 0.0000027600, 0.0000027561, 0.0000027557, 0.0000027582, 0.0000027608, + 0.0000027620, 0.0000027648, 0.0000027683, 0.0000027738, 0.0000027782, + 0.0000027782, 0.0000027761, 0.0000027722, 0.0000027704, 0.0000027697, + 0.0000027719, 0.0000027761, 0.0000027800, 0.0000027830, 0.0000027855, + 0.0000027874, 0.0000027891, 0.0000027901, 0.0000027927, 0.0000027954, + 0.0000027959, 0.0000027944, 0.0000027903, 0.0000027826, 0.0000027736, + 0.0000027697, 0.0000027713, 0.0000027757, 0.0000027815, 0.0000027879, + 0.0000027914, 0.0000027938, 0.0000027959, 0.0000027989, 0.0000028032, + 0.0000028069, 0.0000028081, 0.0000028071, 0.0000028057, 0.0000028037, + 0.0000028003, 0.0000027980, 0.0000027954, 0.0000027960, 0.0000027990, + 0.0000028025, 0.0000028036, 0.0000028020, 0.0000027993, 0.0000027975, + 0.0000027970, 0.0000027980, 0.0000027992, 0.0000028024, 0.0000028088, + 0.0000028176, 0.0000028262, 0.0000028326, 0.0000028384, 0.0000028443, + 0.0000028486, 0.0000028516, 0.0000028543, 0.0000028582, 0.0000028635, + 0.0000028712, 0.0000028798, 0.0000028829, 0.0000028833, 0.0000028815, + 0.0000028758, 0.0000028676, 0.0000028569, 0.0000028455, 0.0000028363, + 0.0000028282, 0.0000028209, 0.0000028186, 0.0000028201, 0.0000028272, + 0.0000028371, 0.0000028439, 0.0000028437, 0.0000028377, 0.0000028294, + 0.0000028223, 0.0000028169, 0.0000028132, 0.0000028113, 0.0000028101, + 0.0000028085, 0.0000028062, 0.0000028032, 0.0000027998, 0.0000027974, + 0.0000027974, 0.0000028009, 0.0000028082, 0.0000028174, 0.0000028265, + 0.0000028352, 0.0000028424, 0.0000028480, 0.0000028531, 0.0000028567, + 0.0000028591, 0.0000028605, 0.0000028602, 0.0000028562, 0.0000028497, + 0.0000028445, 0.0000028427, 0.0000028417, 0.0000028452, 0.0000028551, + 0.0000028597, 0.0000028460, 0.0000028155, 0.0000028024, 0.0000028064, + 0.0000028081, 0.0000028080, 0.0000028148, 0.0000028304, 0.0000028444, + 0.0000028473, 0.0000028437, 0.0000028353, 0.0000028211, 0.0000028046, + 0.0000027943, 0.0000027925, 0.0000027957, 0.0000028030, 0.0000028111, + 0.0000028166, 0.0000028179, 0.0000028172, 0.0000028164, 0.0000028180, + 0.0000028226, 0.0000028291, 0.0000028341, 0.0000028367, 0.0000028374, + 0.0000028384, 0.0000028412, 0.0000028455, 0.0000028508, 0.0000028598, + 0.0000028733, 0.0000028865, 0.0000028947, 0.0000028980, 0.0000028984, + 0.0000028971, 0.0000028953, 0.0000028937, 0.0000028937, 0.0000028965, + 0.0000029020, 0.0000029088, 0.0000029161, 0.0000029223, 0.0000029261, + 0.0000029275, 0.0000029267, 0.0000029217, 0.0000029122, 0.0000028993, + 0.0000028873, 0.0000028820, 0.0000028834, 0.0000028871, 0.0000028886, + 0.0000028874, 0.0000028805, 0.0000028687, 0.0000028564, 0.0000028485, + 0.0000028464, 0.0000028469, 0.0000028490, 0.0000028530, 0.0000028572, + 0.0000028591, 0.0000028596, 0.0000028610, 0.0000028633, 0.0000028652, + 0.0000028673, 0.0000028693, 0.0000028712, 0.0000028744, 0.0000028788, + 0.0000028823, 0.0000028835, 0.0000028818, 0.0000028781, 0.0000028756, + 0.0000028756, 0.0000028777, 0.0000028815, 0.0000028863, 0.0000028891, + 0.0000028891, 0.0000028877, 0.0000028883, 0.0000028909, 0.0000028921, + 0.0000028894, 0.0000028872, 0.0000028879, 0.0000028890, 0.0000028878, + 0.0000028796, 0.0000028653, 0.0000028500, 0.0000028369, 0.0000028276, + 0.0000028229, 0.0000028216, 0.0000028219, 0.0000028260, 0.0000028394, + 0.0000028546, 0.0000028602, 0.0000028611, 0.0000028641, 0.0000028723, + 0.0000028795, 0.0000028811, 0.0000028803, 0.0000028749, 0.0000028689, + 0.0000028641, 0.0000028565, 0.0000028506, 0.0000028510, 0.0000028539, + 0.0000028526, 0.0000028477, 0.0000028406, 0.0000028316, 0.0000028204, + 0.0000028101, 0.0000028004, 0.0000027933, 0.0000027934, 0.0000028003, + 0.0000028112, 0.0000028234, 0.0000028357, 0.0000028471, 0.0000028559, + 0.0000028608, 0.0000028629, 0.0000028641, 0.0000028640, 0.0000028624, + 0.0000028611, 0.0000028638, 0.0000028680, 0.0000028687, 0.0000028661, + 0.0000028574, 0.0000028506, 0.0000028478, 0.0000028421, 0.0000028295, + 0.0000028173, 0.0000028110, 0.0000028088, 0.0000028069, 0.0000028076, + 0.0000028144, 0.0000028218, 0.0000028258, 0.0000028258, 0.0000028215, + 0.0000028128, 0.0000028038, 0.0000027997, 0.0000028032, 0.0000028043, + 0.0000027987, 0.0000027917, 0.0000027895, 0.0000027900, 0.0000027914, + 0.0000027933, 0.0000027968, 0.0000028027, 0.0000028097, 0.0000028165, + 0.0000028224, 0.0000028248, 0.0000028238, 0.0000028202, 0.0000028147, + 0.0000028099, 0.0000028099, 0.0000028138, 0.0000028196, 0.0000028245, + 0.0000028257, 0.0000028230, 0.0000028163, 0.0000028125, 0.0000028129, + 0.0000028078, 0.0000027904, 0.0000027996, 0.0000028338, 0.0000028526, + 0.0000028585, 0.0000028680, 0.0000028894, 0.0000029081, 0.0000029143, + 0.0000029112, 0.0000029066, 0.0000029037, 0.0000028992, 0.0000028933, + 0.0000028908, 0.0000028924, 0.0000028977, 0.0000029024, 0.0000029059, + 0.0000029093, 0.0000029097, 0.0000029082, 0.0000029073, 0.0000029040, + 0.0000028973, 0.0000028907, 0.0000028827, 0.0000028760, 0.0000028707, + 0.0000028659, 0.0000028539, 0.0000028437, 0.0000028548, 0.0000028657, + 0.0000028517, 0.0000028231, 0.0000028148, 0.0000028322, 0.0000028601, + 0.0000028704, 0.0000028663, 0.0000028576, 0.0000028503, 0.0000028463, + 0.0000028451, 0.0000028451, 0.0000028451, 0.0000028487, 0.0000028544, + 0.0000028588, 0.0000028591, 0.0000028571, 0.0000028545, 0.0000028537, + 0.0000028545, 0.0000028543, 0.0000028532, 0.0000028510, 0.0000028478, + 0.0000028445, 0.0000028408, 0.0000028368, 0.0000028333, 0.0000028314, + 0.0000028301, 0.0000028277, 0.0000028224, 0.0000028154, 0.0000028086, + 0.0000028044, 0.0000028037, 0.0000028031, 0.0000027979, 0.0000027899, + 0.0000027810, 0.0000027758, 0.0000027746, 0.0000027729, 0.0000027681, + 0.0000027635, 0.0000027636, 0.0000027663, 0.0000027684, 0.0000027734, + 0.0000027831, 0.0000027914, 0.0000027946, 0.0000027968, 0.0000027989, + 0.0000027964, 0.0000027923, 0.0000027950, 0.0000028090, 0.0000028237, + 0.0000028292, 0.0000028290, 0.0000028274, 0.0000028241, 0.0000028188, + 0.0000028120, 0.0000028032, 0.0000027964, 0.0000027925, 0.0000027818, + 0.0000027643, 0.0000027554, 0.0000027572, 0.0000027737, 0.0000027971, + 0.0000028114, 0.0000028133, 0.0000028070, 0.0000028009, 0.0000027994, + 0.0000027975, 0.0000027891, 0.0000027754, 0.0000027649, 0.0000027569, + 0.0000027544, 0.0000027588, 0.0000027694, 0.0000027810, 0.0000027884, + 0.0000027906, 0.0000027912, 0.0000027944, 0.0000028022, 0.0000028113, + 0.0000028180, 0.0000028184, 0.0000028132, 0.0000028044, 0.0000027963, + 0.0000027906, 0.0000027885, 0.0000027904, 0.0000027960, 0.0000028035, + 0.0000028112, 0.0000028181, 0.0000028228, 0.0000028242, 0.0000028228, + 0.0000028184, 0.0000028131, 0.0000028080, 0.0000028035, 0.0000027989, + 0.0000027934, 0.0000027895, 0.0000027884, 0.0000027898, 0.0000027925, + 0.0000027979, 0.0000028052, 0.0000028088, 0.0000028080, 0.0000028051, + 0.0000028070, 0.0000028178, 0.0000028283, 0.0000028348, 0.0000028424, + 0.0000028512, 0.0000028574, 0.0000028530, 0.0000028439, 0.0000028416, + 0.0000028455, 0.0000028566, 0.0000028616, 0.0000028541, 0.0000028474, + 0.0000028465, 0.0000028500, 0.0000028652, 0.0000028728, 0.0000028798, + 0.0000028881, 0.0000028860, 0.0000028696, 0.0000028429, 0.0000028230, + 0.0000028197, 0.0000028234, 0.0000028358, 0.0000028429, 0.0000028428, + 0.0000028410, 0.0000028413, 0.0000028515, 0.0000028624, 0.0000028648, + 0.0000028634, 0.0000028592, 0.0000028593, 0.0000028637, 0.0000028700, + 0.0000028688, 0.0000028625, 0.0000028575, 0.0000028541, 0.0000028493, + 0.0000028449, 0.0000028423, 0.0000028372, 0.0000028333, 0.0000028299, + 0.0000028303, 0.0000028358, 0.0000028406, 0.0000028420, 0.0000028387, + 0.0000028353, 0.0000028363, 0.0000028419, 0.0000028510, 0.0000028556, + 0.0000028546, 0.0000028511, 0.0000028466, 0.0000028407, 0.0000028366, + 0.0000028363, 0.0000028387, 0.0000028416, 0.0000028381, 0.0000028300, + 0.0000028172, 0.0000027969, 0.0000027780, 0.0000027682, 0.0000027674, + 0.0000027684, 0.0000027671, 0.0000027627, 0.0000027567, 0.0000027559, + 0.0000027573, 0.0000027570, 0.0000027516, 0.0000027393, 0.0000027314, + 0.0000027356, 0.0000027459, 0.0000027538, 0.0000027571, 0.0000027548, + 0.0000027531, 0.0000027499, 0.0000027437, 0.0000027380, 0.0000027329, + 0.0000027294, 0.0000027290, 0.0000027308, 0.0000027337, 0.0000027371, + 0.0000027404, 0.0000027434, 0.0000027457, 0.0000027457, 0.0000027431, + 0.0000027407, 0.0000027391, 0.0000027390, 0.0000027368, 0.0000027327, + 0.0000027291, 0.0000027256, 0.0000027222, 0.0000027212, 0.0000027220, + 0.0000027236, 0.0000027243, 0.0000027227, 0.0000027181, 0.0000027102, + 0.0000027014, 0.0000026950, 0.0000026912, 0.0000026876, 0.0000026839, + 0.0000026789, 0.0000026742, 0.0000026708, 0.0000026682, 0.0000026666, + 0.0000026675, 0.0000026717, 0.0000026782, 0.0000026878, 0.0000026983, + 0.0000027083, 0.0000027170, 0.0000027230, 0.0000027277, 0.0000027328, + 0.0000027370, 0.0000027393, 0.0000027396, 0.0000027376, 0.0000027345, + 0.0000027338, 0.0000027393, 0.0000027510, 0.0000027696, 0.0000027875, + 0.0000027955, 0.0000027950, 0.0000027929, 0.0000027928, 0.0000027965, + 0.0000028093, 0.0000028262, 0.0000028314, 0.0000028235, 0.0000028101, + 0.0000028055, 0.0000028096, 0.0000028194, 0.0000028225, 0.0000028170, + 0.0000028035, 0.0000027937, 0.0000027941, 0.0000028076, 0.0000028226, + 0.0000028234, 0.0000028178, 0.0000028145, 0.0000027917, 0.0000027701, + 0.0000027839, 0.0000027990, 0.0000028262, 0.0000028352, 0.0000028343, + 0.0000028522, 0.0000028586, 0.0000028560, 0.0000028558, 0.0000028574, + 0.0000028660, 0.0000028754, 0.0000028729, 0.0000028567, 0.0000028399, + 0.0000028191, 0.0000027992, 0.0000027986, 0.0000027985, 0.0000027980, + 0.0000027984, 0.0000027986, 0.0000027943, 0.0000027796, 0.0000027646, + 0.0000027623, 0.0000027625, 0.0000027652, 0.0000027701, 0.0000027729, + 0.0000027707, 0.0000027622, 0.0000027544, 0.0000027516, 0.0000027492, + 0.0000027474, 0.0000027468, 0.0000027497, 0.0000027540, 0.0000027591, + 0.0000027621, 0.0000027615, 0.0000027587, 0.0000027527, 0.0000027479, + 0.0000027475, 0.0000027511, 0.0000027573, 0.0000027660, 0.0000027729, + 0.0000027761, 0.0000027768, 0.0000027739, 0.0000027670, 0.0000027601, + 0.0000027542, 0.0000027517, 0.0000027525, 0.0000027528, 0.0000027527, + 0.0000027536, 0.0000027560, 0.0000027600, 0.0000027650, 0.0000027673, + 0.0000027684, 0.0000027682, 0.0000027688, 0.0000027702, 0.0000027718, + 0.0000027750, 0.0000027784, 0.0000027788, 0.0000027794, 0.0000027800, + 0.0000027808, 0.0000027813, 0.0000027831, 0.0000027847, 0.0000027845, + 0.0000027824, 0.0000027785, 0.0000027727, 0.0000027677, 0.0000027661, + 0.0000027683, 0.0000027721, 0.0000027775, 0.0000027844, 0.0000027885, + 0.0000027893, 0.0000027888, 0.0000027884, 0.0000027895, 0.0000027921, + 0.0000027953, 0.0000027974, 0.0000027971, 0.0000027968, 0.0000027960, + 0.0000027958, 0.0000027956, 0.0000027978, 0.0000028006, 0.0000028025, + 0.0000028028, 0.0000028004, 0.0000027971, 0.0000027961, 0.0000027969, + 0.0000027987, 0.0000028002, 0.0000028031, 0.0000028088, 0.0000028164, + 0.0000028255, 0.0000028342, 0.0000028430, 0.0000028498, 0.0000028546, + 0.0000028574, 0.0000028587, 0.0000028605, 0.0000028653, 0.0000028730, + 0.0000028798, 0.0000028826, 0.0000028820, 0.0000028794, 0.0000028698, + 0.0000028580, 0.0000028469, 0.0000028378, 0.0000028313, 0.0000028246, + 0.0000028184, 0.0000028172, 0.0000028234, 0.0000028348, 0.0000028461, + 0.0000028521, 0.0000028492, 0.0000028392, 0.0000028270, 0.0000028173, + 0.0000028106, 0.0000028062, 0.0000028038, 0.0000028030, 0.0000028028, + 0.0000028018, 0.0000027996, 0.0000027966, 0.0000027934, 0.0000027914, + 0.0000027922, 0.0000027982, 0.0000028083, 0.0000028188, 0.0000028276, + 0.0000028345, 0.0000028396, 0.0000028442, 0.0000028484, 0.0000028512, + 0.0000028526, 0.0000028536, 0.0000028534, 0.0000028506, 0.0000028470, + 0.0000028455, 0.0000028442, 0.0000028434, 0.0000028503, 0.0000028609, + 0.0000028609, 0.0000028375, 0.0000028087, 0.0000028031, 0.0000028079, + 0.0000028086, 0.0000028086, 0.0000028158, 0.0000028311, 0.0000028444, + 0.0000028469, 0.0000028426, 0.0000028334, 0.0000028194, 0.0000028044, + 0.0000027954, 0.0000027935, 0.0000027956, 0.0000028028, 0.0000028113, + 0.0000028164, 0.0000028170, 0.0000028155, 0.0000028139, 0.0000028143, + 0.0000028191, 0.0000028252, 0.0000028301, 0.0000028327, 0.0000028345, + 0.0000028367, 0.0000028400, 0.0000028449, 0.0000028533, 0.0000028669, + 0.0000028829, 0.0000028948, 0.0000028990, 0.0000028985, 0.0000028958, + 0.0000028930, 0.0000028924, 0.0000028929, 0.0000028934, 0.0000028961, + 0.0000029021, 0.0000029102, 0.0000029183, 0.0000029248, 0.0000029290, + 0.0000029310, 0.0000029309, 0.0000029274, 0.0000029193, 0.0000029074, + 0.0000028947, 0.0000028872, 0.0000028869, 0.0000028896, 0.0000028904, + 0.0000028891, 0.0000028828, 0.0000028730, 0.0000028627, 0.0000028553, + 0.0000028520, 0.0000028515, 0.0000028528, 0.0000028560, 0.0000028596, + 0.0000028616, 0.0000028628, 0.0000028653, 0.0000028683, 0.0000028690, + 0.0000028690, 0.0000028703, 0.0000028721, 0.0000028751, 0.0000028796, + 0.0000028830, 0.0000028836, 0.0000028820, 0.0000028782, 0.0000028760, + 0.0000028767, 0.0000028785, 0.0000028808, 0.0000028850, 0.0000028885, + 0.0000028885, 0.0000028870, 0.0000028880, 0.0000028915, 0.0000028944, + 0.0000028933, 0.0000028912, 0.0000028909, 0.0000028903, 0.0000028852, + 0.0000028736, 0.0000028572, 0.0000028418, 0.0000028320, 0.0000028272, + 0.0000028247, 0.0000028235, 0.0000028238, 0.0000028266, 0.0000028367, + 0.0000028513, 0.0000028598, 0.0000028617, 0.0000028645, 0.0000028715, + 0.0000028791, 0.0000028826, 0.0000028834, 0.0000028817, 0.0000028766, + 0.0000028716, 0.0000028650, 0.0000028564, 0.0000028528, 0.0000028550, + 0.0000028570, 0.0000028538, 0.0000028464, 0.0000028368, 0.0000028261, + 0.0000028165, 0.0000028092, 0.0000028011, 0.0000027942, 0.0000027950, + 0.0000028029, 0.0000028147, 0.0000028265, 0.0000028373, 0.0000028475, + 0.0000028549, 0.0000028587, 0.0000028603, 0.0000028613, 0.0000028611, + 0.0000028586, 0.0000028551, 0.0000028558, 0.0000028605, 0.0000028667, + 0.0000028685, 0.0000028659, 0.0000028591, 0.0000028523, 0.0000028452, + 0.0000028352, 0.0000028258, 0.0000028183, 0.0000028108, 0.0000028042, + 0.0000028030, 0.0000028103, 0.0000028191, 0.0000028246, 0.0000028260, + 0.0000028235, 0.0000028154, 0.0000028029, 0.0000027959, 0.0000027957, + 0.0000027981, 0.0000027977, 0.0000027969, 0.0000027978, 0.0000027980, + 0.0000027969, 0.0000027957, 0.0000027963, 0.0000028005, 0.0000028075, + 0.0000028160, 0.0000028230, 0.0000028271, 0.0000028276, 0.0000028260, + 0.0000028220, 0.0000028183, 0.0000028177, 0.0000028198, 0.0000028248, + 0.0000028298, 0.0000028306, 0.0000028264, 0.0000028186, 0.0000028140, + 0.0000028138, 0.0000028059, 0.0000027886, 0.0000028040, 0.0000028358, + 0.0000028517, 0.0000028601, 0.0000028740, 0.0000028952, 0.0000029079, + 0.0000029089, 0.0000029047, 0.0000029013, 0.0000028987, 0.0000028945, + 0.0000028905, 0.0000028893, 0.0000028914, 0.0000028963, 0.0000029008, + 0.0000029049, 0.0000029082, 0.0000029092, 0.0000029074, 0.0000029051, + 0.0000028992, 0.0000028910, 0.0000028839, 0.0000028756, 0.0000028705, + 0.0000028659, 0.0000028606, 0.0000028543, 0.0000028598, 0.0000028696, + 0.0000028588, 0.0000028326, 0.0000028196, 0.0000028347, 0.0000028606, + 0.0000028723, 0.0000028667, 0.0000028572, 0.0000028499, 0.0000028467, + 0.0000028465, 0.0000028476, 0.0000028480, 0.0000028492, 0.0000028549, + 0.0000028617, 0.0000028648, 0.0000028641, 0.0000028635, 0.0000028637, + 0.0000028652, 0.0000028665, 0.0000028656, 0.0000028627, 0.0000028590, + 0.0000028548, 0.0000028499, 0.0000028438, 0.0000028367, 0.0000028295, + 0.0000028247, 0.0000028226, 0.0000028213, 0.0000028190, 0.0000028146, + 0.0000028090, 0.0000028032, 0.0000027982, 0.0000027950, 0.0000027925, + 0.0000027896, 0.0000027854, 0.0000027826, 0.0000027818, 0.0000027819, + 0.0000027803, 0.0000027746, 0.0000027681, 0.0000027665, 0.0000027680, + 0.0000027698, 0.0000027721, 0.0000027801, 0.0000027899, 0.0000027943, + 0.0000027966, 0.0000028001, 0.0000028005, 0.0000027981, 0.0000028033, + 0.0000028212, 0.0000028367, 0.0000028406, 0.0000028402, 0.0000028378, + 0.0000028321, 0.0000028243, 0.0000028164, 0.0000028077, 0.0000028012, + 0.0000027981, 0.0000027900, 0.0000027740, 0.0000027592, 0.0000027525, + 0.0000027595, 0.0000027806, 0.0000028043, 0.0000028149, 0.0000028153, + 0.0000028099, 0.0000028056, 0.0000028034, 0.0000027965, 0.0000027830, + 0.0000027684, 0.0000027570, 0.0000027540, 0.0000027578, 0.0000027678, + 0.0000027803, 0.0000027900, 0.0000027948, 0.0000027957, 0.0000027968, + 0.0000028019, 0.0000028116, 0.0000028215, 0.0000028273, 0.0000028266, + 0.0000028213, 0.0000028141, 0.0000028063, 0.0000028004, 0.0000028003, + 0.0000028050, 0.0000028109, 0.0000028161, 0.0000028206, 0.0000028238, + 0.0000028247, 0.0000028223, 0.0000028176, 0.0000028121, 0.0000028071, + 0.0000028037, 0.0000028009, 0.0000027969, 0.0000027938, 0.0000027935, + 0.0000027952, 0.0000027974, 0.0000028023, 0.0000028075, 0.0000028079, + 0.0000028026, 0.0000027971, 0.0000028001, 0.0000028145, 0.0000028263, + 0.0000028321, 0.0000028399, 0.0000028494, 0.0000028556, 0.0000028504, + 0.0000028435, 0.0000028424, 0.0000028475, 0.0000028591, 0.0000028622, + 0.0000028550, 0.0000028496, 0.0000028493, 0.0000028560, 0.0000028698, + 0.0000028767, 0.0000028852, 0.0000028920, 0.0000028843, 0.0000028661, + 0.0000028364, 0.0000028230, 0.0000028187, 0.0000028220, 0.0000028360, + 0.0000028446, 0.0000028456, 0.0000028467, 0.0000028447, 0.0000028520, + 0.0000028612, 0.0000028602, 0.0000028562, 0.0000028540, 0.0000028545, + 0.0000028604, 0.0000028666, 0.0000028652, 0.0000028587, 0.0000028537, + 0.0000028522, 0.0000028494, 0.0000028443, 0.0000028384, 0.0000028333, + 0.0000028317, 0.0000028306, 0.0000028299, 0.0000028323, 0.0000028347, + 0.0000028363, 0.0000028337, 0.0000028288, 0.0000028256, 0.0000028253, + 0.0000028325, 0.0000028422, 0.0000028459, 0.0000028437, 0.0000028411, + 0.0000028374, 0.0000028304, 0.0000028245, 0.0000028227, 0.0000028238, + 0.0000028269, 0.0000028255, 0.0000028203, 0.0000028080, 0.0000027870, + 0.0000027696, 0.0000027656, 0.0000027679, 0.0000027677, 0.0000027640, + 0.0000027595, 0.0000027571, 0.0000027599, 0.0000027627, 0.0000027599, + 0.0000027486, 0.0000027365, 0.0000027379, 0.0000027475, 0.0000027563, + 0.0000027583, 0.0000027542, 0.0000027459, 0.0000027380, 0.0000027293, + 0.0000027236, 0.0000027222, 0.0000027251, 0.0000027296, 0.0000027329, + 0.0000027361, 0.0000027375, 0.0000027382, 0.0000027390, 0.0000027391, + 0.0000027375, 0.0000027338, 0.0000027289, 0.0000027249, 0.0000027234, + 0.0000027219, 0.0000027182, 0.0000027145, 0.0000027108, 0.0000027075, + 0.0000027054, 0.0000027056, 0.0000027079, 0.0000027116, 0.0000027143, + 0.0000027145, 0.0000027118, 0.0000027058, 0.0000027002, 0.0000026975, + 0.0000026969, 0.0000026964, 0.0000026944, 0.0000026901, 0.0000026847, + 0.0000026790, 0.0000026729, 0.0000026683, 0.0000026669, 0.0000026680, + 0.0000026733, 0.0000026838, 0.0000026957, 0.0000027074, 0.0000027148, + 0.0000027183, 0.0000027221, 0.0000027269, 0.0000027321, 0.0000027369, + 0.0000027394, 0.0000027389, 0.0000027363, 0.0000027331, 0.0000027334, + 0.0000027401, 0.0000027577, 0.0000027780, 0.0000027897, 0.0000027910, + 0.0000027901, 0.0000027913, 0.0000027971, 0.0000028127, 0.0000028297, + 0.0000028322, 0.0000028196, 0.0000028057, 0.0000028032, 0.0000028099, + 0.0000028198, 0.0000028210, 0.0000028122, 0.0000027989, 0.0000027936, + 0.0000027969, 0.0000028118, 0.0000028244, 0.0000028204, 0.0000028169, + 0.0000028064, 0.0000027780, 0.0000027719, 0.0000027893, 0.0000028048, + 0.0000028321, 0.0000028290, 0.0000028363, 0.0000028560, 0.0000028590, + 0.0000028565, 0.0000028567, 0.0000028588, 0.0000028687, 0.0000028766, + 0.0000028723, 0.0000028554, 0.0000028383, 0.0000028173, 0.0000027992, + 0.0000027988, 0.0000027980, 0.0000027967, 0.0000027977, 0.0000027987, + 0.0000027929, 0.0000027771, 0.0000027638, 0.0000027622, 0.0000027622, + 0.0000027641, 0.0000027685, 0.0000027709, 0.0000027686, 0.0000027613, + 0.0000027549, 0.0000027534, 0.0000027515, 0.0000027496, 0.0000027491, + 0.0000027517, 0.0000027567, 0.0000027615, 0.0000027634, 0.0000027615, + 0.0000027560, 0.0000027497, 0.0000027452, 0.0000027456, 0.0000027485, + 0.0000027525, 0.0000027582, 0.0000027635, 0.0000027670, 0.0000027689, + 0.0000027694, 0.0000027654, 0.0000027593, 0.0000027535, 0.0000027493, + 0.0000027485, 0.0000027491, 0.0000027498, 0.0000027505, 0.0000027503, + 0.0000027496, 0.0000027509, 0.0000027500, 0.0000027501, 0.0000027510, + 0.0000027537, 0.0000027589, 0.0000027630, 0.0000027679, 0.0000027719, + 0.0000027730, 0.0000027720, 0.0000027723, 0.0000027722, 0.0000027715, + 0.0000027724, 0.0000027731, 0.0000027727, 0.0000027701, 0.0000027672, + 0.0000027635, 0.0000027623, 0.0000027632, 0.0000027657, 0.0000027685, + 0.0000027718, 0.0000027779, 0.0000027831, 0.0000027842, 0.0000027833, + 0.0000027812, 0.0000027787, 0.0000027772, 0.0000027767, 0.0000027787, + 0.0000027812, 0.0000027832, 0.0000027861, 0.0000027901, 0.0000027945, + 0.0000027967, 0.0000027999, 0.0000028025, 0.0000028031, 0.0000027997, + 0.0000027950, 0.0000027943, 0.0000027969, 0.0000027996, 0.0000028009, + 0.0000028023, 0.0000028074, 0.0000028148, 0.0000028242, 0.0000028352, + 0.0000028460, 0.0000028544, 0.0000028594, 0.0000028620, 0.0000028621, + 0.0000028617, 0.0000028649, 0.0000028714, 0.0000028779, 0.0000028796, + 0.0000028789, 0.0000028755, 0.0000028645, 0.0000028504, 0.0000028387, + 0.0000028311, 0.0000028265, 0.0000028216, 0.0000028182, 0.0000028201, + 0.0000028286, 0.0000028420, 0.0000028522, 0.0000028544, 0.0000028489, + 0.0000028366, 0.0000028230, 0.0000028144, 0.0000028091, 0.0000028059, + 0.0000028034, 0.0000028013, 0.0000028000, 0.0000027992, 0.0000027978, + 0.0000027947, 0.0000027903, 0.0000027859, 0.0000027845, 0.0000027881, + 0.0000027972, 0.0000028085, 0.0000028181, 0.0000028250, 0.0000028300, + 0.0000028339, 0.0000028375, 0.0000028404, 0.0000028425, 0.0000028443, + 0.0000028461, 0.0000028471, 0.0000028468, 0.0000028471, 0.0000028478, + 0.0000028457, 0.0000028470, 0.0000028575, 0.0000028648, 0.0000028568, + 0.0000028273, 0.0000028035, 0.0000028033, 0.0000028099, 0.0000028088, + 0.0000028088, 0.0000028177, 0.0000028329, 0.0000028445, 0.0000028461, + 0.0000028404, 0.0000028309, 0.0000028182, 0.0000028058, 0.0000027979, + 0.0000027959, 0.0000027981, 0.0000028055, 0.0000028131, 0.0000028165, + 0.0000028159, 0.0000028128, 0.0000028101, 0.0000028109, 0.0000028149, + 0.0000028201, 0.0000028246, 0.0000028281, 0.0000028312, 0.0000028348, + 0.0000028400, 0.0000028489, 0.0000028622, 0.0000028776, 0.0000028905, + 0.0000028975, 0.0000028986, 0.0000028964, 0.0000028928, 0.0000028900, + 0.0000028900, 0.0000028910, 0.0000028920, 0.0000028953, 0.0000029027, + 0.0000029122, 0.0000029202, 0.0000029256, 0.0000029295, 0.0000029319, + 0.0000029327, 0.0000029313, 0.0000029253, 0.0000029152, 0.0000029038, + 0.0000028960, 0.0000028943, 0.0000028946, 0.0000028940, 0.0000028908, + 0.0000028838, 0.0000028748, 0.0000028664, 0.0000028605, 0.0000028581, + 0.0000028582, 0.0000028598, 0.0000028626, 0.0000028655, 0.0000028677, + 0.0000028694, 0.0000028720, 0.0000028748, 0.0000028753, 0.0000028730, + 0.0000028717, 0.0000028727, 0.0000028748, 0.0000028785, 0.0000028814, + 0.0000028817, 0.0000028799, 0.0000028770, 0.0000028756, 0.0000028778, + 0.0000028813, 0.0000028833, 0.0000028853, 0.0000028877, 0.0000028882, + 0.0000028876, 0.0000028894, 0.0000028936, 0.0000028965, 0.0000028963, + 0.0000028937, 0.0000028916, 0.0000028885, 0.0000028810, 0.0000028673, + 0.0000028500, 0.0000028365, 0.0000028302, 0.0000028287, 0.0000028280, + 0.0000028262, 0.0000028256, 0.0000028277, 0.0000028355, 0.0000028481, + 0.0000028586, 0.0000028620, 0.0000028644, 0.0000028707, 0.0000028785, + 0.0000028833, 0.0000028851, 0.0000028855, 0.0000028834, 0.0000028789, + 0.0000028726, 0.0000028646, 0.0000028583, 0.0000028578, 0.0000028597, + 0.0000028592, 0.0000028541, 0.0000028441, 0.0000028330, 0.0000028228, + 0.0000028158, 0.0000028113, 0.0000028045, 0.0000027981, 0.0000027988, + 0.0000028063, 0.0000028180, 0.0000028301, 0.0000028408, 0.0000028498, + 0.0000028562, 0.0000028592, 0.0000028599, 0.0000028596, 0.0000028583, + 0.0000028546, 0.0000028498, 0.0000028485, 0.0000028523, 0.0000028602, + 0.0000028675, 0.0000028703, 0.0000028667, 0.0000028570, 0.0000028461, + 0.0000028365, 0.0000028304, 0.0000028253, 0.0000028159, 0.0000028045, + 0.0000028016, 0.0000028064, 0.0000028147, 0.0000028206, 0.0000028235, + 0.0000028234, 0.0000028182, 0.0000028058, 0.0000027954, 0.0000027902, + 0.0000027898, 0.0000027924, 0.0000027969, 0.0000028016, 0.0000028046, + 0.0000028041, 0.0000028026, 0.0000028019, 0.0000028037, 0.0000028088, + 0.0000028158, 0.0000028219, 0.0000028256, 0.0000028267, 0.0000028260, + 0.0000028234, 0.0000028208, 0.0000028200, 0.0000028216, 0.0000028281, + 0.0000028346, 0.0000028352, 0.0000028299, 0.0000028216, 0.0000028174, + 0.0000028173, 0.0000028041, 0.0000027886, 0.0000028097, 0.0000028379, + 0.0000028517, 0.0000028626, 0.0000028801, 0.0000028978, 0.0000029034, + 0.0000029021, 0.0000028994, 0.0000028980, 0.0000028953, 0.0000028917, + 0.0000028889, 0.0000028881, 0.0000028903, 0.0000028942, 0.0000028971, + 0.0000029005, 0.0000029032, 0.0000029046, 0.0000029025, 0.0000028995, + 0.0000028933, 0.0000028842, 0.0000028758, 0.0000028680, 0.0000028649, + 0.0000028604, 0.0000028588, 0.0000028650, 0.0000028761, 0.0000028675, + 0.0000028417, 0.0000028258, 0.0000028359, 0.0000028619, 0.0000028740, + 0.0000028701, 0.0000028589, 0.0000028510, 0.0000028488, 0.0000028490, + 0.0000028509, 0.0000028521, 0.0000028512, 0.0000028514, 0.0000028554, + 0.0000028612, 0.0000028629, 0.0000028625, 0.0000028636, 0.0000028657, + 0.0000028678, 0.0000028681, 0.0000028644, 0.0000028591, 0.0000028544, + 0.0000028508, 0.0000028469, 0.0000028419, 0.0000028360, 0.0000028290, + 0.0000028225, 0.0000028183, 0.0000028158, 0.0000028131, 0.0000028088, + 0.0000028035, 0.0000027990, 0.0000027949, 0.0000027906, 0.0000027859, + 0.0000027822, 0.0000027804, 0.0000027806, 0.0000027826, 0.0000027850, + 0.0000027875, 0.0000027877, 0.0000027829, 0.0000027755, 0.0000027713, + 0.0000027710, 0.0000027710, 0.0000027713, 0.0000027771, 0.0000027874, + 0.0000027937, 0.0000027963, 0.0000028008, 0.0000028038, 0.0000028039, + 0.0000028132, 0.0000028344, 0.0000028486, 0.0000028508, 0.0000028502, + 0.0000028464, 0.0000028386, 0.0000028297, 0.0000028214, 0.0000028126, + 0.0000028068, 0.0000028042, 0.0000027979, 0.0000027857, 0.0000027696, + 0.0000027549, 0.0000027521, 0.0000027627, 0.0000027847, 0.0000028061, + 0.0000028161, 0.0000028179, 0.0000028160, 0.0000028136, 0.0000028081, + 0.0000027969, 0.0000027818, 0.0000027668, 0.0000027576, 0.0000027577, + 0.0000027652, 0.0000027779, 0.0000027907, 0.0000027979, 0.0000027998, + 0.0000028002, 0.0000028039, 0.0000028123, 0.0000028232, 0.0000028320, + 0.0000028356, 0.0000028347, 0.0000028300, 0.0000028220, 0.0000028146, + 0.0000028127, 0.0000028158, 0.0000028204, 0.0000028247, 0.0000028283, + 0.0000028308, 0.0000028313, 0.0000028293, 0.0000028260, 0.0000028213, + 0.0000028157, 0.0000028112, 0.0000028083, 0.0000028054, 0.0000028027, + 0.0000028016, 0.0000028011, 0.0000028011, 0.0000028039, 0.0000028063, + 0.0000028029, 0.0000027934, 0.0000027863, 0.0000027904, 0.0000028067, + 0.0000028189, 0.0000028253, 0.0000028354, 0.0000028464, 0.0000028522, + 0.0000028471, 0.0000028425, 0.0000028428, 0.0000028490, 0.0000028602, + 0.0000028621, 0.0000028561, 0.0000028521, 0.0000028523, 0.0000028597, + 0.0000028714, 0.0000028790, 0.0000028885, 0.0000028922, 0.0000028823, + 0.0000028624, 0.0000028330, 0.0000028230, 0.0000028185, 0.0000028223, + 0.0000028363, 0.0000028479, 0.0000028521, 0.0000028526, 0.0000028473, + 0.0000028515, 0.0000028592, 0.0000028567, 0.0000028499, 0.0000028491, + 0.0000028497, 0.0000028567, 0.0000028621, 0.0000028608, 0.0000028546, + 0.0000028505, 0.0000028502, 0.0000028493, 0.0000028455, 0.0000028395, + 0.0000028310, 0.0000028252, 0.0000028237, 0.0000028235, 0.0000028243, + 0.0000028248, 0.0000028257, 0.0000028244, 0.0000028201, 0.0000028150, + 0.0000028117, 0.0000028149, 0.0000028252, 0.0000028338, 0.0000028354, + 0.0000028338, 0.0000028321, 0.0000028265, 0.0000028167, 0.0000028110, + 0.0000028091, 0.0000028108, 0.0000028166, 0.0000028173, 0.0000028125, + 0.0000027989, 0.0000027775, 0.0000027665, 0.0000027675, 0.0000027696, + 0.0000027677, 0.0000027646, 0.0000027617, 0.0000027626, 0.0000027656, + 0.0000027638, 0.0000027535, 0.0000027393, 0.0000027379, 0.0000027457, + 0.0000027528, 0.0000027514, 0.0000027395, 0.0000027274, 0.0000027221, + 0.0000027206, 0.0000027225, 0.0000027257, 0.0000027290, 0.0000027305, + 0.0000027303, 0.0000027288, 0.0000027269, 0.0000027247, 0.0000027232, + 0.0000027217, 0.0000027200, 0.0000027169, 0.0000027122, 0.0000027081, + 0.0000027059, 0.0000027069, 0.0000027076, 0.0000027067, 0.0000027058, + 0.0000027045, 0.0000027031, 0.0000027025, 0.0000027033, 0.0000027062, + 0.0000027095, 0.0000027124, 0.0000027132, 0.0000027114, 0.0000027072, + 0.0000027021, 0.0000026997, 0.0000027008, 0.0000027028, 0.0000027033, + 0.0000027010, 0.0000026958, 0.0000026889, 0.0000026818, 0.0000026753, + 0.0000026707, 0.0000026678, 0.0000026693, 0.0000026772, 0.0000026896, + 0.0000027033, 0.0000027117, 0.0000027141, 0.0000027154, 0.0000027171, + 0.0000027221, 0.0000027289, 0.0000027335, 0.0000027352, 0.0000027345, + 0.0000027319, 0.0000027291, 0.0000027317, 0.0000027476, 0.0000027689, + 0.0000027829, 0.0000027858, 0.0000027864, 0.0000027898, 0.0000027994, + 0.0000028187, 0.0000028334, 0.0000028302, 0.0000028144, 0.0000028029, + 0.0000028040, 0.0000028129, 0.0000028201, 0.0000028163, 0.0000028040, + 0.0000027952, 0.0000027950, 0.0000028033, 0.0000028180, 0.0000028242, + 0.0000028168, 0.0000028135, 0.0000027940, 0.0000027689, 0.0000027780, + 0.0000027935, 0.0000028139, 0.0000028317, 0.0000028231, 0.0000028403, + 0.0000028576, 0.0000028591, 0.0000028573, 0.0000028579, 0.0000028608, + 0.0000028714, 0.0000028771, 0.0000028709, 0.0000028529, 0.0000028360, + 0.0000028152, 0.0000027992, 0.0000027992, 0.0000027976, 0.0000027951, + 0.0000027969, 0.0000027978, 0.0000027911, 0.0000027751, 0.0000027636, + 0.0000027627, 0.0000027622, 0.0000027636, 0.0000027674, 0.0000027691, + 0.0000027672, 0.0000027615, 0.0000027565, 0.0000027552, 0.0000027529, + 0.0000027505, 0.0000027507, 0.0000027537, 0.0000027595, 0.0000027638, + 0.0000027640, 0.0000027600, 0.0000027519, 0.0000027451, 0.0000027412, + 0.0000027420, 0.0000027445, 0.0000027475, 0.0000027508, 0.0000027530, + 0.0000027541, 0.0000027551, 0.0000027575, 0.0000027576, 0.0000027564, + 0.0000027535, 0.0000027489, 0.0000027463, 0.0000027459, 0.0000027471, + 0.0000027478, 0.0000027469, 0.0000027445, 0.0000027444, 0.0000027413, + 0.0000027396, 0.0000027379, 0.0000027378, 0.0000027407, 0.0000027438, + 0.0000027480, 0.0000027512, 0.0000027521, 0.0000027513, 0.0000027532, + 0.0000027549, 0.0000027554, 0.0000027581, 0.0000027605, 0.0000027621, + 0.0000027611, 0.0000027600, 0.0000027576, 0.0000027588, 0.0000027610, + 0.0000027634, 0.0000027654, 0.0000027665, 0.0000027702, 0.0000027753, + 0.0000027774, 0.0000027768, 0.0000027748, 0.0000027716, 0.0000027675, + 0.0000027644, 0.0000027623, 0.0000027622, 0.0000027631, 0.0000027658, + 0.0000027721, 0.0000027835, 0.0000027936, 0.0000027984, 0.0000028001, + 0.0000028008, 0.0000027992, 0.0000027953, 0.0000027933, 0.0000027952, + 0.0000027992, 0.0000028017, 0.0000028025, 0.0000028065, 0.0000028138, + 0.0000028234, 0.0000028357, 0.0000028476, 0.0000028564, 0.0000028619, + 0.0000028641, 0.0000028634, 0.0000028610, 0.0000028619, 0.0000028674, + 0.0000028731, 0.0000028745, 0.0000028738, 0.0000028703, 0.0000028591, + 0.0000028449, 0.0000028331, 0.0000028258, 0.0000028234, 0.0000028203, + 0.0000028187, 0.0000028233, 0.0000028342, 0.0000028474, 0.0000028542, + 0.0000028538, 0.0000028458, 0.0000028335, 0.0000028230, 0.0000028166, + 0.0000028132, 0.0000028092, 0.0000028045, 0.0000028005, 0.0000027983, + 0.0000027974, 0.0000027961, 0.0000027934, 0.0000027886, 0.0000027829, + 0.0000027796, 0.0000027812, 0.0000027882, 0.0000027982, 0.0000028077, + 0.0000028147, 0.0000028198, 0.0000028235, 0.0000028263, 0.0000028290, + 0.0000028319, 0.0000028349, 0.0000028382, 0.0000028418, 0.0000028443, + 0.0000028470, 0.0000028505, 0.0000028505, 0.0000028488, 0.0000028539, + 0.0000028643, 0.0000028664, 0.0000028489, 0.0000028168, 0.0000028014, + 0.0000028068, 0.0000028118, 0.0000028094, 0.0000028102, 0.0000028205, + 0.0000028351, 0.0000028440, 0.0000028434, 0.0000028371, 0.0000028277, + 0.0000028168, 0.0000028067, 0.0000028007, 0.0000027994, 0.0000028037, + 0.0000028115, 0.0000028162, 0.0000028162, 0.0000028134, 0.0000028084, + 0.0000028052, 0.0000028062, 0.0000028098, 0.0000028144, 0.0000028193, + 0.0000028239, 0.0000028283, 0.0000028346, 0.0000028451, 0.0000028596, + 0.0000028744, 0.0000028861, 0.0000028934, 0.0000028959, 0.0000028954, + 0.0000028938, 0.0000028913, 0.0000028885, 0.0000028876, 0.0000028880, + 0.0000028898, 0.0000028951, 0.0000029044, 0.0000029141, 0.0000029211, + 0.0000029252, 0.0000029280, 0.0000029309, 0.0000029332, 0.0000029333, + 0.0000029296, 0.0000029217, 0.0000029121, 0.0000029045, 0.0000029005, + 0.0000028982, 0.0000028953, 0.0000028899, 0.0000028819, 0.0000028735, + 0.0000028667, 0.0000028630, 0.0000028624, 0.0000028646, 0.0000028681, + 0.0000028717, 0.0000028753, 0.0000028784, 0.0000028807, 0.0000028826, + 0.0000028843, 0.0000028837, 0.0000028800, 0.0000028761, 0.0000028752, + 0.0000028766, 0.0000028788, 0.0000028798, 0.0000028789, 0.0000028770, + 0.0000028750, 0.0000028744, 0.0000028778, 0.0000028837, 0.0000028872, + 0.0000028875, 0.0000028875, 0.0000028878, 0.0000028887, 0.0000028913, + 0.0000028949, 0.0000028969, 0.0000028970, 0.0000028949, 0.0000028915, + 0.0000028859, 0.0000028761, 0.0000028625, 0.0000028477, 0.0000028365, + 0.0000028323, 0.0000028325, 0.0000028329, 0.0000028306, 0.0000028281, + 0.0000028292, 0.0000028358, 0.0000028465, 0.0000028566, 0.0000028616, + 0.0000028643, 0.0000028693, 0.0000028769, 0.0000028832, 0.0000028864, + 0.0000028882, 0.0000028885, 0.0000028859, 0.0000028793, 0.0000028712, + 0.0000028653, 0.0000028638, 0.0000028644, 0.0000028636, 0.0000028606, + 0.0000028539, 0.0000028431, 0.0000028328, 0.0000028253, 0.0000028209, + 0.0000028176, 0.0000028105, 0.0000028038, 0.0000028034, 0.0000028083, + 0.0000028183, 0.0000028312, 0.0000028425, 0.0000028507, 0.0000028565, + 0.0000028595, 0.0000028599, 0.0000028581, 0.0000028549, 0.0000028500, + 0.0000028451, 0.0000028440, 0.0000028477, 0.0000028548, 0.0000028626, + 0.0000028691, 0.0000028682, 0.0000028609, 0.0000028469, 0.0000028357, + 0.0000028313, 0.0000028294, 0.0000028219, 0.0000028093, 0.0000028030, + 0.0000028064, 0.0000028137, 0.0000028172, 0.0000028197, 0.0000028221, + 0.0000028202, 0.0000028102, 0.0000027975, 0.0000027885, 0.0000027836, + 0.0000027855, 0.0000027924, 0.0000028006, 0.0000028061, 0.0000028075, + 0.0000028075, 0.0000028083, 0.0000028103, 0.0000028139, 0.0000028187, + 0.0000028233, 0.0000028257, 0.0000028267, 0.0000028263, 0.0000028239, + 0.0000028211, 0.0000028198, 0.0000028216, 0.0000028296, 0.0000028379, + 0.0000028387, 0.0000028329, 0.0000028253, 0.0000028230, 0.0000028211, + 0.0000028023, 0.0000027918, 0.0000028164, 0.0000028402, 0.0000028526, + 0.0000028670, 0.0000028847, 0.0000028962, 0.0000028969, 0.0000028957, + 0.0000028966, 0.0000028967, 0.0000028941, 0.0000028905, 0.0000028871, + 0.0000028861, 0.0000028879, 0.0000028899, 0.0000028907, 0.0000028930, + 0.0000028958, 0.0000028981, 0.0000028965, 0.0000028943, 0.0000028879, + 0.0000028765, 0.0000028669, 0.0000028611, 0.0000028593, 0.0000028570, + 0.0000028650, 0.0000028820, 0.0000028790, 0.0000028537, 0.0000028306, + 0.0000028344, 0.0000028612, 0.0000028775, 0.0000028748, 0.0000028638, + 0.0000028562, 0.0000028520, 0.0000028521, 0.0000028551, 0.0000028570, + 0.0000028555, 0.0000028517, 0.0000028487, 0.0000028489, 0.0000028531, + 0.0000028559, 0.0000028566, 0.0000028598, 0.0000028636, 0.0000028661, + 0.0000028656, 0.0000028605, 0.0000028549, 0.0000028507, 0.0000028478, + 0.0000028454, 0.0000028420, 0.0000028375, 0.0000028317, 0.0000028248, + 0.0000028193, 0.0000028158, 0.0000028123, 0.0000028067, 0.0000027996, + 0.0000027941, 0.0000027911, 0.0000027898, 0.0000027876, 0.0000027838, + 0.0000027800, 0.0000027780, 0.0000027792, 0.0000027829, 0.0000027873, + 0.0000027920, 0.0000027937, 0.0000027910, 0.0000027843, 0.0000027780, + 0.0000027747, 0.0000027735, 0.0000027735, 0.0000027771, 0.0000027863, + 0.0000027934, 0.0000027962, 0.0000028017, 0.0000028070, 0.0000028102, + 0.0000028248, 0.0000028468, 0.0000028576, 0.0000028582, 0.0000028563, + 0.0000028502, 0.0000028411, 0.0000028331, 0.0000028260, 0.0000028178, + 0.0000028132, 0.0000028109, 0.0000028059, 0.0000027973, 0.0000027834, + 0.0000027659, 0.0000027531, 0.0000027534, 0.0000027664, 0.0000027870, + 0.0000028051, 0.0000028168, 0.0000028226, 0.0000028231, 0.0000028204, + 0.0000028122, 0.0000027993, 0.0000027841, 0.0000027710, 0.0000027642, + 0.0000027651, 0.0000027740, 0.0000027880, 0.0000027985, 0.0000028032, + 0.0000028048, 0.0000028080, 0.0000028156, 0.0000028257, 0.0000028340, + 0.0000028389, 0.0000028407, 0.0000028391, 0.0000028330, 0.0000028267, + 0.0000028243, 0.0000028274, 0.0000028334, 0.0000028386, 0.0000028414, + 0.0000028425, 0.0000028420, 0.0000028400, 0.0000028369, 0.0000028317, + 0.0000028240, 0.0000028173, 0.0000028132, 0.0000028103, 0.0000028071, + 0.0000028035, 0.0000028007, 0.0000027998, 0.0000028019, 0.0000028020, + 0.0000027957, 0.0000027849, 0.0000027777, 0.0000027823, 0.0000027987, + 0.0000028099, 0.0000028178, 0.0000028311, 0.0000028435, 0.0000028484, + 0.0000028437, 0.0000028414, 0.0000028426, 0.0000028495, 0.0000028600, + 0.0000028634, 0.0000028594, 0.0000028558, 0.0000028553, 0.0000028615, + 0.0000028707, 0.0000028796, 0.0000028897, 0.0000028908, 0.0000028797, + 0.0000028581, 0.0000028309, 0.0000028230, 0.0000028192, 0.0000028231, + 0.0000028379, 0.0000028526, 0.0000028585, 0.0000028586, 0.0000028494, + 0.0000028498, 0.0000028558, 0.0000028542, 0.0000028459, 0.0000028445, + 0.0000028437, 0.0000028519, 0.0000028571, 0.0000028555, 0.0000028502, + 0.0000028484, 0.0000028499, 0.0000028510, 0.0000028472, 0.0000028405, + 0.0000028318, 0.0000028236, 0.0000028187, 0.0000028147, 0.0000028119, + 0.0000028093, 0.0000028088, 0.0000028088, 0.0000028058, 0.0000028011, + 0.0000027987, 0.0000028014, 0.0000028113, 0.0000028223, 0.0000028270, + 0.0000028266, 0.0000028262, 0.0000028230, 0.0000028115, 0.0000028025, + 0.0000027988, 0.0000027980, 0.0000028066, 0.0000028134, 0.0000028133, + 0.0000028058, 0.0000027867, 0.0000027703, 0.0000027680, 0.0000027691, + 0.0000027684, 0.0000027647, 0.0000027609, 0.0000027602, 0.0000027611, + 0.0000027602, 0.0000027513, 0.0000027388, 0.0000027375, 0.0000027413, + 0.0000027411, 0.0000027337, 0.0000027253, 0.0000027207, 0.0000027224, + 0.0000027259, 0.0000027279, 0.0000027277, 0.0000027257, 0.0000027225, + 0.0000027196, 0.0000027176, 0.0000027168, 0.0000027159, 0.0000027155, + 0.0000027157, 0.0000027157, 0.0000027143, 0.0000027108, 0.0000027066, + 0.0000027038, 0.0000027040, 0.0000027058, 0.0000027068, 0.0000027069, + 0.0000027063, 0.0000027053, 0.0000027047, 0.0000027048, 0.0000027060, + 0.0000027082, 0.0000027109, 0.0000027131, 0.0000027144, 0.0000027138, + 0.0000027115, 0.0000027070, 0.0000027050, 0.0000027058, 0.0000027086, + 0.0000027104, 0.0000027096, 0.0000027051, 0.0000026984, 0.0000026921, + 0.0000026859, 0.0000026791, 0.0000026718, 0.0000026693, 0.0000026720, + 0.0000026828, 0.0000026971, 0.0000027074, 0.0000027111, 0.0000027103, + 0.0000027088, 0.0000027116, 0.0000027173, 0.0000027230, 0.0000027266, + 0.0000027279, 0.0000027268, 0.0000027235, 0.0000027242, 0.0000027387, + 0.0000027608, 0.0000027761, 0.0000027801, 0.0000027822, 0.0000027888, + 0.0000028036, 0.0000028255, 0.0000028350, 0.0000028257, 0.0000028096, + 0.0000028043, 0.0000028086, 0.0000028157, 0.0000028157, 0.0000028061, + 0.0000027971, 0.0000027955, 0.0000028007, 0.0000028127, 0.0000028226, + 0.0000028203, 0.0000028138, 0.0000028049, 0.0000027799, 0.0000027681, + 0.0000027833, 0.0000027976, 0.0000028224, 0.0000028253, 0.0000028195, + 0.0000028438, 0.0000028582, 0.0000028592, 0.0000028585, 0.0000028593, + 0.0000028633, 0.0000028735, 0.0000028767, 0.0000028678, 0.0000028492, + 0.0000028336, 0.0000028123, 0.0000027996, 0.0000027996, 0.0000027964, + 0.0000027936, 0.0000027962, 0.0000027964, 0.0000027888, 0.0000027729, + 0.0000027634, 0.0000027634, 0.0000027629, 0.0000027642, 0.0000027671, + 0.0000027680, 0.0000027673, 0.0000027627, 0.0000027577, 0.0000027556, + 0.0000027530, 0.0000027508, 0.0000027519, 0.0000027557, 0.0000027618, + 0.0000027650, 0.0000027638, 0.0000027571, 0.0000027469, 0.0000027404, + 0.0000027375, 0.0000027379, 0.0000027391, 0.0000027409, 0.0000027425, + 0.0000027432, 0.0000027430, 0.0000027426, 0.0000027441, 0.0000027453, + 0.0000027473, 0.0000027484, 0.0000027459, 0.0000027447, 0.0000027434, + 0.0000027429, 0.0000027423, 0.0000027409, 0.0000027393, 0.0000027403, + 0.0000027381, 0.0000027368, 0.0000027352, 0.0000027339, 0.0000027340, + 0.0000027343, 0.0000027347, 0.0000027351, 0.0000027331, 0.0000027301, + 0.0000027301, 0.0000027304, 0.0000027301, 0.0000027337, 0.0000027372, + 0.0000027414, 0.0000027436, 0.0000027454, 0.0000027459, 0.0000027497, + 0.0000027531, 0.0000027565, 0.0000027587, 0.0000027595, 0.0000027611, + 0.0000027652, 0.0000027677, 0.0000027685, 0.0000027666, 0.0000027636, + 0.0000027584, 0.0000027530, 0.0000027488, 0.0000027468, 0.0000027463, + 0.0000027469, 0.0000027485, 0.0000027553, 0.0000027712, 0.0000027889, + 0.0000027982, 0.0000027991, 0.0000027970, 0.0000027951, 0.0000027946, + 0.0000027959, 0.0000027991, 0.0000028023, 0.0000028033, 0.0000028059, + 0.0000028133, 0.0000028232, 0.0000028358, 0.0000028479, 0.0000028563, + 0.0000028613, 0.0000028638, 0.0000028614, 0.0000028570, 0.0000028568, + 0.0000028612, 0.0000028668, 0.0000028685, 0.0000028682, 0.0000028641, + 0.0000028528, 0.0000028393, 0.0000028284, 0.0000028241, 0.0000028232, + 0.0000028211, 0.0000028212, 0.0000028282, 0.0000028395, 0.0000028505, + 0.0000028554, 0.0000028523, 0.0000028434, 0.0000028334, 0.0000028260, + 0.0000028220, 0.0000028183, 0.0000028127, 0.0000028053, 0.0000027990, + 0.0000027959, 0.0000027945, 0.0000027931, 0.0000027907, 0.0000027862, + 0.0000027800, 0.0000027748, 0.0000027741, 0.0000027777, 0.0000027843, + 0.0000027919, 0.0000027989, 0.0000028046, 0.0000028092, 0.0000028124, + 0.0000028151, 0.0000028189, 0.0000028238, 0.0000028296, 0.0000028359, + 0.0000028413, 0.0000028465, 0.0000028523, 0.0000028551, 0.0000028531, + 0.0000028535, 0.0000028615, 0.0000028680, 0.0000028628, 0.0000028365, + 0.0000028086, 0.0000028037, 0.0000028129, 0.0000028154, 0.0000028127, + 0.0000028143, 0.0000028242, 0.0000028366, 0.0000028416, 0.0000028389, + 0.0000028324, 0.0000028238, 0.0000028141, 0.0000028064, 0.0000028025, + 0.0000028038, 0.0000028104, 0.0000028173, 0.0000028188, 0.0000028157, + 0.0000028090, 0.0000028031, 0.0000028010, 0.0000028015, 0.0000028044, + 0.0000028094, 0.0000028150, 0.0000028208, 0.0000028284, 0.0000028410, + 0.0000028577, 0.0000028733, 0.0000028841, 0.0000028902, 0.0000028934, + 0.0000028945, 0.0000028942, 0.0000028931, 0.0000028901, 0.0000028864, + 0.0000028847, 0.0000028852, 0.0000028883, 0.0000028956, 0.0000029059, + 0.0000029151, 0.0000029211, 0.0000029240, 0.0000029257, 0.0000029283, + 0.0000029314, 0.0000029327, 0.0000029306, 0.0000029246, 0.0000029168, + 0.0000029096, 0.0000029040, 0.0000028997, 0.0000028949, 0.0000028879, + 0.0000028795, 0.0000028720, 0.0000028673, 0.0000028657, 0.0000028670, + 0.0000028709, 0.0000028755, 0.0000028795, 0.0000028834, 0.0000028870, + 0.0000028897, 0.0000028918, 0.0000028932, 0.0000028921, 0.0000028878, + 0.0000028828, 0.0000028800, 0.0000028807, 0.0000028811, 0.0000028797, + 0.0000028771, 0.0000028747, 0.0000028730, 0.0000028731, 0.0000028774, + 0.0000028852, 0.0000028904, 0.0000028906, 0.0000028888, 0.0000028877, + 0.0000028887, 0.0000028915, 0.0000028941, 0.0000028953, 0.0000028957, + 0.0000028952, 0.0000028911, 0.0000028833, 0.0000028719, 0.0000028590, + 0.0000028477, 0.0000028407, 0.0000028379, 0.0000028374, 0.0000028381, + 0.0000028357, 0.0000028320, 0.0000028319, 0.0000028376, 0.0000028469, + 0.0000028549, 0.0000028604, 0.0000028640, 0.0000028685, 0.0000028747, + 0.0000028810, 0.0000028859, 0.0000028894, 0.0000028915, 0.0000028909, + 0.0000028856, 0.0000028771, 0.0000028710, 0.0000028694, 0.0000028704, + 0.0000028701, 0.0000028672, 0.0000028640, 0.0000028571, 0.0000028477, + 0.0000028385, 0.0000028317, 0.0000028275, 0.0000028219, 0.0000028127, + 0.0000028054, 0.0000028040, 0.0000028066, 0.0000028155, 0.0000028283, + 0.0000028391, 0.0000028466, 0.0000028521, 0.0000028557, 0.0000028560, + 0.0000028535, 0.0000028498, 0.0000028457, 0.0000028418, 0.0000028413, + 0.0000028459, 0.0000028517, 0.0000028573, 0.0000028633, 0.0000028662, + 0.0000028601, 0.0000028468, 0.0000028347, 0.0000028318, 0.0000028317, + 0.0000028270, 0.0000028145, 0.0000028080, 0.0000028109, 0.0000028165, + 0.0000028177, 0.0000028184, 0.0000028198, 0.0000028203, 0.0000028152, + 0.0000028026, 0.0000027893, 0.0000027819, 0.0000027806, 0.0000027858, + 0.0000027954, 0.0000028034, 0.0000028067, 0.0000028081, 0.0000028103, + 0.0000028138, 0.0000028179, 0.0000028221, 0.0000028262, 0.0000028284, + 0.0000028298, 0.0000028297, 0.0000028275, 0.0000028238, 0.0000028208, + 0.0000028223, 0.0000028314, 0.0000028403, 0.0000028411, 0.0000028359, + 0.0000028307, 0.0000028301, 0.0000028230, 0.0000028007, 0.0000027981, + 0.0000028242, 0.0000028434, 0.0000028558, 0.0000028725, 0.0000028868, + 0.0000028911, 0.0000028901, 0.0000028913, 0.0000028959, 0.0000028966, + 0.0000028940, 0.0000028895, 0.0000028842, 0.0000028818, 0.0000028825, + 0.0000028819, 0.0000028817, 0.0000028842, 0.0000028884, 0.0000028921, + 0.0000028917, 0.0000028901, 0.0000028824, 0.0000028686, 0.0000028592, + 0.0000028556, 0.0000028549, 0.0000028591, 0.0000028795, 0.0000028891, + 0.0000028694, 0.0000028424, 0.0000028329, 0.0000028560, 0.0000028795, + 0.0000028804, 0.0000028702, 0.0000028611, 0.0000028588, 0.0000028583, + 0.0000028597, 0.0000028630, 0.0000028621, 0.0000028565, 0.0000028500, + 0.0000028430, 0.0000028391, 0.0000028409, 0.0000028455, 0.0000028487, + 0.0000028530, 0.0000028582, 0.0000028618, 0.0000028625, 0.0000028579, + 0.0000028534, 0.0000028508, 0.0000028503, 0.0000028514, 0.0000028518, + 0.0000028500, 0.0000028464, 0.0000028408, 0.0000028347, 0.0000028283, + 0.0000028213, 0.0000028133, 0.0000028044, 0.0000027974, 0.0000027931, + 0.0000027909, 0.0000027899, 0.0000027891, 0.0000027880, 0.0000027851, + 0.0000027825, 0.0000027825, 0.0000027856, 0.0000027907, 0.0000027965, + 0.0000028004, 0.0000027994, 0.0000027927, 0.0000027842, 0.0000027788, + 0.0000027778, 0.0000027779, 0.0000027805, 0.0000027871, 0.0000027935, + 0.0000027974, 0.0000028050, 0.0000028117, 0.0000028183, 0.0000028372, + 0.0000028572, 0.0000028632, 0.0000028622, 0.0000028575, 0.0000028491, + 0.0000028398, 0.0000028337, 0.0000028288, 0.0000028233, 0.0000028202, + 0.0000028182, 0.0000028142, 0.0000028075, 0.0000027966, 0.0000027805, + 0.0000027645, 0.0000027555, 0.0000027579, 0.0000027720, 0.0000027911, + 0.0000028079, 0.0000028189, 0.0000028240, 0.0000028263, 0.0000028237, + 0.0000028154, 0.0000028028, 0.0000027891, 0.0000027776, 0.0000027716, + 0.0000027743, 0.0000027842, 0.0000027963, 0.0000028054, 0.0000028109, + 0.0000028154, 0.0000028222, 0.0000028300, 0.0000028359, 0.0000028401, + 0.0000028427, 0.0000028429, 0.0000028402, 0.0000028367, 0.0000028359, + 0.0000028401, 0.0000028474, 0.0000028516, 0.0000028517, 0.0000028498, + 0.0000028478, 0.0000028450, 0.0000028404, 0.0000028340, 0.0000028253, + 0.0000028175, 0.0000028133, 0.0000028107, 0.0000028065, 0.0000028009, + 0.0000027974, 0.0000027978, 0.0000027995, 0.0000027977, 0.0000027898, + 0.0000027787, 0.0000027729, 0.0000027782, 0.0000027929, 0.0000028023, + 0.0000028118, 0.0000028283, 0.0000028409, 0.0000028448, 0.0000028411, + 0.0000028413, 0.0000028435, 0.0000028497, 0.0000028602, 0.0000028657, + 0.0000028640, 0.0000028598, 0.0000028578, 0.0000028622, 0.0000028702, + 0.0000028798, 0.0000028897, 0.0000028881, 0.0000028772, 0.0000028539, + 0.0000028301, 0.0000028246, 0.0000028217, 0.0000028246, 0.0000028412, + 0.0000028572, 0.0000028640, 0.0000028640, 0.0000028517, 0.0000028474, + 0.0000028511, 0.0000028506, 0.0000028434, 0.0000028392, 0.0000028389, + 0.0000028460, 0.0000028510, 0.0000028485, 0.0000028451, 0.0000028443, + 0.0000028474, 0.0000028503, 0.0000028473, 0.0000028399, 0.0000028306, + 0.0000028236, 0.0000028195, 0.0000028141, 0.0000028077, 0.0000028010, + 0.0000027970, 0.0000027966, 0.0000027946, 0.0000027925, 0.0000027925, + 0.0000027964, 0.0000028057, 0.0000028151, 0.0000028202, 0.0000028209, + 0.0000028216, 0.0000028191, 0.0000028059, 0.0000027962, 0.0000027922, + 0.0000027905, 0.0000027999, 0.0000028093, 0.0000028113, 0.0000028072, + 0.0000027895, 0.0000027724, 0.0000027666, 0.0000027656, 0.0000027623, + 0.0000027566, 0.0000027530, 0.0000027535, 0.0000027540, 0.0000027523, + 0.0000027470, 0.0000027391, 0.0000027353, 0.0000027294, 0.0000027241, + 0.0000027224, 0.0000027233, 0.0000027251, 0.0000027261, 0.0000027259, + 0.0000027241, 0.0000027212, 0.0000027184, 0.0000027168, 0.0000027166, + 0.0000027176, 0.0000027193, 0.0000027203, 0.0000027213, 0.0000027224, + 0.0000027232, 0.0000027229, 0.0000027204, 0.0000027157, 0.0000027120, + 0.0000027101, 0.0000027107, 0.0000027118, 0.0000027118, 0.0000027112, + 0.0000027097, 0.0000027078, 0.0000027069, 0.0000027074, 0.0000027090, + 0.0000027106, 0.0000027115, 0.0000027124, 0.0000027133, 0.0000027133, + 0.0000027113, 0.0000027085, 0.0000027082, 0.0000027107, 0.0000027145, + 0.0000027165, 0.0000027158, 0.0000027120, 0.0000027066, 0.0000027021, + 0.0000026978, 0.0000026903, 0.0000026805, 0.0000026732, 0.0000026720, + 0.0000026792, 0.0000026910, 0.0000027016, 0.0000027072, 0.0000027061, + 0.0000027032, 0.0000027029, 0.0000027058, 0.0000027103, 0.0000027144, + 0.0000027173, 0.0000027183, 0.0000027163, 0.0000027176, 0.0000027316, + 0.0000027538, 0.0000027698, 0.0000027746, 0.0000027791, 0.0000027894, + 0.0000028092, 0.0000028315, 0.0000028348, 0.0000028197, 0.0000028078, + 0.0000028080, 0.0000028131, 0.0000028127, 0.0000028047, 0.0000027971, + 0.0000027957, 0.0000028006, 0.0000028102, 0.0000028205, 0.0000028227, + 0.0000028142, 0.0000028095, 0.0000027916, 0.0000027695, 0.0000027730, + 0.0000027885, 0.0000028025, 0.0000028244, 0.0000028166, 0.0000028180, + 0.0000028457, 0.0000028577, 0.0000028594, 0.0000028599, 0.0000028608, + 0.0000028653, 0.0000028742, 0.0000028746, 0.0000028627, 0.0000028453, + 0.0000028313, 0.0000028093, 0.0000028006, 0.0000027995, 0.0000027947, + 0.0000027924, 0.0000027959, 0.0000027949, 0.0000027864, 0.0000027704, + 0.0000027632, 0.0000027642, 0.0000027643, 0.0000027663, 0.0000027680, + 0.0000027682, 0.0000027678, 0.0000027631, 0.0000027579, 0.0000027552, + 0.0000027518, 0.0000027499, 0.0000027521, 0.0000027565, 0.0000027624, + 0.0000027641, 0.0000027604, 0.0000027507, 0.0000027402, 0.0000027349, + 0.0000027340, 0.0000027347, 0.0000027351, 0.0000027354, 0.0000027351, + 0.0000027344, 0.0000027342, 0.0000027339, 0.0000027348, 0.0000027349, + 0.0000027363, 0.0000027380, 0.0000027372, 0.0000027381, 0.0000027372, + 0.0000027366, 0.0000027356, 0.0000027339, 0.0000027332, 0.0000027352, + 0.0000027350, 0.0000027351, 0.0000027343, 0.0000027334, 0.0000027328, + 0.0000027324, 0.0000027310, 0.0000027298, 0.0000027267, 0.0000027236, + 0.0000027227, 0.0000027220, 0.0000027202, 0.0000027222, 0.0000027240, + 0.0000027269, 0.0000027268, 0.0000027277, 0.0000027284, 0.0000027325, + 0.0000027364, 0.0000027400, 0.0000027430, 0.0000027443, 0.0000027448, + 0.0000027481, 0.0000027517, 0.0000027544, 0.0000027543, 0.0000027536, + 0.0000027495, 0.0000027426, 0.0000027360, 0.0000027313, 0.0000027288, + 0.0000027287, 0.0000027296, 0.0000027314, 0.0000027382, 0.0000027552, + 0.0000027789, 0.0000027943, 0.0000027962, 0.0000027930, 0.0000027942, + 0.0000027989, 0.0000028026, 0.0000028055, 0.0000028061, 0.0000028064, + 0.0000028125, 0.0000028232, 0.0000028360, 0.0000028475, 0.0000028546, + 0.0000028590, 0.0000028595, 0.0000028555, 0.0000028505, 0.0000028506, + 0.0000028548, 0.0000028597, 0.0000028622, 0.0000028618, 0.0000028572, + 0.0000028455, 0.0000028329, 0.0000028242, 0.0000028241, 0.0000028245, + 0.0000028230, 0.0000028254, 0.0000028340, 0.0000028437, 0.0000028512, + 0.0000028544, 0.0000028506, 0.0000028420, 0.0000028338, 0.0000028288, + 0.0000028256, 0.0000028215, 0.0000028152, 0.0000028075, 0.0000028011, + 0.0000027971, 0.0000027949, 0.0000027936, 0.0000027916, 0.0000027878, + 0.0000027808, 0.0000027727, 0.0000027682, 0.0000027680, 0.0000027715, + 0.0000027764, 0.0000027808, 0.0000027852, 0.0000027896, 0.0000027939, + 0.0000027977, 0.0000028022, 0.0000028085, 0.0000028167, 0.0000028267, + 0.0000028365, 0.0000028450, 0.0000028528, 0.0000028581, 0.0000028582, + 0.0000028565, 0.0000028595, 0.0000028663, 0.0000028675, 0.0000028524, + 0.0000028221, 0.0000028050, 0.0000028100, 0.0000028201, 0.0000028204, + 0.0000028175, 0.0000028197, 0.0000028282, 0.0000028365, 0.0000028374, + 0.0000028331, 0.0000028268, 0.0000028188, 0.0000028105, 0.0000028050, + 0.0000028041, 0.0000028088, 0.0000028161, 0.0000028205, 0.0000028192, + 0.0000028124, 0.0000028037, 0.0000027989, 0.0000027977, 0.0000027979, + 0.0000028009, 0.0000028065, 0.0000028127, 0.0000028217, 0.0000028369, + 0.0000028562, 0.0000028736, 0.0000028847, 0.0000028903, 0.0000028929, + 0.0000028942, 0.0000028947, 0.0000028946, 0.0000028930, 0.0000028889, + 0.0000028843, 0.0000028828, 0.0000028834, 0.0000028874, 0.0000028954, + 0.0000029054, 0.0000029145, 0.0000029202, 0.0000029226, 0.0000029233, + 0.0000029249, 0.0000029276, 0.0000029295, 0.0000029288, 0.0000029244, + 0.0000029176, 0.0000029108, 0.0000029057, 0.0000029019, 0.0000028971, + 0.0000028895, 0.0000028810, 0.0000028746, 0.0000028715, 0.0000028715, + 0.0000028744, 0.0000028790, 0.0000028827, 0.0000028855, 0.0000028883, + 0.0000028912, 0.0000028935, 0.0000028960, 0.0000028982, 0.0000028980, + 0.0000028946, 0.0000028900, 0.0000028871, 0.0000028863, 0.0000028850, + 0.0000028814, 0.0000028772, 0.0000028735, 0.0000028713, 0.0000028719, + 0.0000028772, 0.0000028863, 0.0000028930, 0.0000028940, 0.0000028916, + 0.0000028888, 0.0000028884, 0.0000028900, 0.0000028913, 0.0000028921, + 0.0000028937, 0.0000028946, 0.0000028907, 0.0000028809, 0.0000028686, + 0.0000028567, 0.0000028478, 0.0000028442, 0.0000028437, 0.0000028441, + 0.0000028430, 0.0000028410, 0.0000028378, 0.0000028367, 0.0000028412, + 0.0000028492, 0.0000028559, 0.0000028598, 0.0000028635, 0.0000028685, + 0.0000028737, 0.0000028784, 0.0000028834, 0.0000028879, 0.0000028909, + 0.0000028919, 0.0000028891, 0.0000028826, 0.0000028758, 0.0000028725, + 0.0000028731, 0.0000028747, 0.0000028748, 0.0000028741, 0.0000028716, + 0.0000028634, 0.0000028535, 0.0000028436, 0.0000028353, 0.0000028287, + 0.0000028196, 0.0000028092, 0.0000028027, 0.0000028015, 0.0000028064, + 0.0000028144, 0.0000028257, 0.0000028356, 0.0000028414, 0.0000028453, + 0.0000028482, 0.0000028480, 0.0000028455, 0.0000028434, 0.0000028416, + 0.0000028393, 0.0000028402, 0.0000028457, 0.0000028504, 0.0000028536, + 0.0000028558, 0.0000028577, 0.0000028553, 0.0000028442, 0.0000028345, + 0.0000028332, 0.0000028342, 0.0000028301, 0.0000028183, 0.0000028133, + 0.0000028161, 0.0000028216, 0.0000028223, 0.0000028201, 0.0000028189, + 0.0000028204, 0.0000028208, 0.0000028113, 0.0000027953, 0.0000027834, + 0.0000027797, 0.0000027824, 0.0000027912, 0.0000028000, 0.0000028047, + 0.0000028074, 0.0000028104, 0.0000028145, 0.0000028190, 0.0000028232, + 0.0000028278, 0.0000028310, 0.0000028331, 0.0000028338, 0.0000028322, + 0.0000028278, 0.0000028242, 0.0000028263, 0.0000028351, 0.0000028424, + 0.0000028431, 0.0000028407, 0.0000028389, 0.0000028365, 0.0000028218, + 0.0000028013, 0.0000028093, 0.0000028326, 0.0000028480, 0.0000028614, + 0.0000028774, 0.0000028859, 0.0000028851, 0.0000028843, 0.0000028888, + 0.0000028958, 0.0000028965, 0.0000028936, 0.0000028874, 0.0000028796, + 0.0000028753, 0.0000028734, 0.0000028710, 0.0000028714, 0.0000028762, + 0.0000028823, 0.0000028871, 0.0000028875, 0.0000028853, 0.0000028764, + 0.0000028625, 0.0000028543, 0.0000028519, 0.0000028543, 0.0000028693, + 0.0000028904, 0.0000028834, 0.0000028571, 0.0000028394, 0.0000028487, + 0.0000028766, 0.0000028863, 0.0000028783, 0.0000028662, 0.0000028625, + 0.0000028654, 0.0000028668, 0.0000028687, 0.0000028703, 0.0000028649, + 0.0000028554, 0.0000028468, 0.0000028394, 0.0000028327, 0.0000028299, + 0.0000028322, 0.0000028387, 0.0000028450, 0.0000028505, 0.0000028557, + 0.0000028578, 0.0000028537, 0.0000028484, 0.0000028460, 0.0000028481, + 0.0000028522, 0.0000028549, 0.0000028547, 0.0000028533, 0.0000028513, + 0.0000028489, 0.0000028465, 0.0000028429, 0.0000028363, 0.0000028267, + 0.0000028172, 0.0000028095, 0.0000028034, 0.0000027991, 0.0000027957, + 0.0000027942, 0.0000027930, 0.0000027909, 0.0000027883, 0.0000027877, + 0.0000027902, 0.0000027955, 0.0000028019, 0.0000028058, 0.0000028042, + 0.0000027966, 0.0000027876, 0.0000027833, 0.0000027834, 0.0000027837, + 0.0000027842, 0.0000027892, 0.0000027952, 0.0000028010, 0.0000028108, + 0.0000028181, 0.0000028287, 0.0000028495, 0.0000028639, 0.0000028655, + 0.0000028625, 0.0000028568, 0.0000028478, 0.0000028387, 0.0000028331, + 0.0000028299, 0.0000028279, 0.0000028270, 0.0000028256, 0.0000028220, + 0.0000028160, 0.0000028071, 0.0000027941, 0.0000027795, 0.0000027674, + 0.0000027642, 0.0000027706, 0.0000027857, 0.0000028020, 0.0000028124, + 0.0000028174, 0.0000028213, 0.0000028229, 0.0000028223, 0.0000028169, + 0.0000028062, 0.0000027938, 0.0000027849, 0.0000027831, 0.0000027876, + 0.0000027956, 0.0000028061, 0.0000028158, 0.0000028235, 0.0000028302, + 0.0000028366, 0.0000028406, 0.0000028428, 0.0000028446, 0.0000028453, + 0.0000028447, 0.0000028441, 0.0000028446, 0.0000028492, 0.0000028551, + 0.0000028569, 0.0000028548, 0.0000028511, 0.0000028478, 0.0000028437, + 0.0000028379, 0.0000028314, 0.0000028236, 0.0000028171, 0.0000028138, + 0.0000028111, 0.0000028059, 0.0000028003, 0.0000027981, 0.0000027996, + 0.0000028003, 0.0000027965, 0.0000027865, 0.0000027745, 0.0000027694, + 0.0000027762, 0.0000027886, 0.0000027959, 0.0000028079, 0.0000028270, + 0.0000028394, 0.0000028438, 0.0000028412, 0.0000028440, 0.0000028473, + 0.0000028518, 0.0000028618, 0.0000028680, 0.0000028674, 0.0000028627, + 0.0000028595, 0.0000028619, 0.0000028696, 0.0000028806, 0.0000028893, + 0.0000028855, 0.0000028750, 0.0000028508, 0.0000028307, 0.0000028281, + 0.0000028257, 0.0000028285, 0.0000028454, 0.0000028619, 0.0000028690, + 0.0000028682, 0.0000028535, 0.0000028453, 0.0000028457, 0.0000028456, + 0.0000028412, 0.0000028339, 0.0000028333, 0.0000028394, 0.0000028427, + 0.0000028402, 0.0000028384, 0.0000028373, 0.0000028400, 0.0000028431, + 0.0000028414, 0.0000028351, 0.0000028267, 0.0000028210, 0.0000028190, + 0.0000028155, 0.0000028104, 0.0000028046, 0.0000027998, 0.0000027975, + 0.0000027952, 0.0000027941, 0.0000027933, 0.0000027969, 0.0000028041, + 0.0000028109, 0.0000028151, 0.0000028171, 0.0000028171, 0.0000028106, + 0.0000027973, 0.0000027901, 0.0000027867, 0.0000027860, 0.0000027968, + 0.0000028055, 0.0000028074, 0.0000028026, 0.0000027861, 0.0000027712, + 0.0000027642, 0.0000027600, 0.0000027529, 0.0000027470, 0.0000027457, + 0.0000027478, 0.0000027478, 0.0000027458, 0.0000027439, 0.0000027373, + 0.0000027254, 0.0000027163, 0.0000027157, 0.0000027216, 0.0000027267, + 0.0000027278, 0.0000027267, 0.0000027255, 0.0000027251, 0.0000027258, + 0.0000027269, 0.0000027287, 0.0000027307, 0.0000027331, 0.0000027354, + 0.0000027360, 0.0000027360, 0.0000027360, 0.0000027349, 0.0000027320, + 0.0000027282, 0.0000027226, 0.0000027166, 0.0000027126, 0.0000027111, + 0.0000027115, 0.0000027122, 0.0000027124, 0.0000027115, 0.0000027092, + 0.0000027067, 0.0000027060, 0.0000027069, 0.0000027095, 0.0000027114, + 0.0000027119, 0.0000027124, 0.0000027124, 0.0000027114, 0.0000027090, + 0.0000027069, 0.0000027072, 0.0000027110, 0.0000027161, 0.0000027195, + 0.0000027194, 0.0000027162, 0.0000027129, 0.0000027108, 0.0000027087, + 0.0000027028, 0.0000026926, 0.0000026825, 0.0000026785, 0.0000026810, + 0.0000026870, 0.0000026957, 0.0000027016, 0.0000027014, 0.0000026979, + 0.0000026956, 0.0000026956, 0.0000026973, 0.0000027006, 0.0000027056, + 0.0000027097, 0.0000027098, 0.0000027132, 0.0000027269, 0.0000027485, + 0.0000027645, 0.0000027710, 0.0000027782, 0.0000027923, 0.0000028169, + 0.0000028343, 0.0000028295, 0.0000028143, 0.0000028105, 0.0000028136, + 0.0000028123, 0.0000028016, 0.0000027939, 0.0000027952, 0.0000028008, + 0.0000028094, 0.0000028187, 0.0000028234, 0.0000028173, 0.0000028088, + 0.0000028000, 0.0000027783, 0.0000027662, 0.0000027782, 0.0000027937, + 0.0000028086, 0.0000028213, 0.0000028089, 0.0000028176, 0.0000028455, + 0.0000028570, 0.0000028601, 0.0000028614, 0.0000028619, 0.0000028664, + 0.0000028731, 0.0000028707, 0.0000028565, 0.0000028418, 0.0000028285, + 0.0000028069, 0.0000028017, 0.0000027991, 0.0000027928, 0.0000027916, + 0.0000027957, 0.0000027932, 0.0000027833, 0.0000027677, 0.0000027632, + 0.0000027652, 0.0000027664, 0.0000027692, 0.0000027696, 0.0000027690, + 0.0000027674, 0.0000027621, 0.0000027572, 0.0000027535, 0.0000027487, + 0.0000027471, 0.0000027501, 0.0000027557, 0.0000027603, 0.0000027597, + 0.0000027524, 0.0000027408, 0.0000027319, 0.0000027285, 0.0000027301, + 0.0000027318, 0.0000027324, 0.0000027314, 0.0000027300, 0.0000027285, + 0.0000027280, 0.0000027278, 0.0000027293, 0.0000027303, 0.0000027318, + 0.0000027334, 0.0000027325, 0.0000027311, 0.0000027286, 0.0000027271, + 0.0000027264, 0.0000027253, 0.0000027262, 0.0000027291, 0.0000027300, + 0.0000027316, 0.0000027325, 0.0000027333, 0.0000027335, 0.0000027334, + 0.0000027318, 0.0000027296, 0.0000027254, 0.0000027220, 0.0000027206, + 0.0000027203, 0.0000027186, 0.0000027203, 0.0000027228, 0.0000027258, + 0.0000027251, 0.0000027252, 0.0000027250, 0.0000027278, 0.0000027304, + 0.0000027326, 0.0000027344, 0.0000027355, 0.0000027346, 0.0000027346, + 0.0000027367, 0.0000027398, 0.0000027418, 0.0000027436, 0.0000027430, + 0.0000027388, 0.0000027318, 0.0000027234, 0.0000027176, 0.0000027148, + 0.0000027129, 0.0000027124, 0.0000027143, 0.0000027225, 0.0000027392, + 0.0000027627, 0.0000027842, 0.0000027911, 0.0000027931, 0.0000027986, + 0.0000028057, 0.0000028113, 0.0000028121, 0.0000028105, 0.0000028136, + 0.0000028239, 0.0000028362, 0.0000028466, 0.0000028524, 0.0000028547, + 0.0000028534, 0.0000028474, 0.0000028423, 0.0000028434, 0.0000028489, + 0.0000028536, 0.0000028555, 0.0000028547, 0.0000028498, 0.0000028381, + 0.0000028265, 0.0000028219, 0.0000028247, 0.0000028259, 0.0000028268, + 0.0000028313, 0.0000028395, 0.0000028472, 0.0000028521, 0.0000028539, + 0.0000028498, 0.0000028415, 0.0000028345, 0.0000028298, 0.0000028262, + 0.0000028220, 0.0000028164, 0.0000028101, 0.0000028041, 0.0000027997, + 0.0000027978, 0.0000027982, 0.0000027988, 0.0000027962, 0.0000027888, + 0.0000027790, 0.0000027711, 0.0000027675, 0.0000027682, 0.0000027712, + 0.0000027728, 0.0000027735, 0.0000027755, 0.0000027791, 0.0000027838, + 0.0000027894, 0.0000027959, 0.0000028048, 0.0000028157, 0.0000028279, + 0.0000028396, 0.0000028499, 0.0000028576, 0.0000028611, 0.0000028602, + 0.0000028600, 0.0000028642, 0.0000028675, 0.0000028614, 0.0000028356, + 0.0000028104, 0.0000028070, 0.0000028196, 0.0000028271, 0.0000028256, + 0.0000028235, 0.0000028259, 0.0000028317, 0.0000028340, 0.0000028314, + 0.0000028267, 0.0000028205, 0.0000028129, 0.0000028064, 0.0000028039, + 0.0000028064, 0.0000028135, 0.0000028193, 0.0000028208, 0.0000028162, + 0.0000028065, 0.0000027984, 0.0000027953, 0.0000027948, 0.0000027960, + 0.0000028004, 0.0000028062, 0.0000028150, 0.0000028310, 0.0000028523, + 0.0000028719, 0.0000028854, 0.0000028925, 0.0000028953, 0.0000028960, + 0.0000028961, 0.0000028960, 0.0000028955, 0.0000028932, 0.0000028884, + 0.0000028841, 0.0000028822, 0.0000028823, 0.0000028860, 0.0000028924, + 0.0000029009, 0.0000029100, 0.0000029168, 0.0000029198, 0.0000029204, + 0.0000029209, 0.0000029225, 0.0000029241, 0.0000029242, 0.0000029216, + 0.0000029155, 0.0000029092, 0.0000029057, 0.0000029048, 0.0000029026, + 0.0000028963, 0.0000028878, 0.0000028813, 0.0000028782, 0.0000028779, + 0.0000028803, 0.0000028840, 0.0000028864, 0.0000028872, 0.0000028884, + 0.0000028908, 0.0000028930, 0.0000028957, 0.0000028993, 0.0000029009, + 0.0000028997, 0.0000028968, 0.0000028946, 0.0000028932, 0.0000028907, + 0.0000028855, 0.0000028792, 0.0000028734, 0.0000028700, 0.0000028707, + 0.0000028773, 0.0000028873, 0.0000028950, 0.0000028969, 0.0000028950, + 0.0000028915, 0.0000028893, 0.0000028885, 0.0000028882, 0.0000028890, + 0.0000028919, 0.0000028936, 0.0000028900, 0.0000028797, 0.0000028672, + 0.0000028563, 0.0000028492, 0.0000028466, 0.0000028482, 0.0000028506, + 0.0000028508, 0.0000028483, 0.0000028463, 0.0000028459, 0.0000028483, + 0.0000028542, 0.0000028591, 0.0000028616, 0.0000028642, 0.0000028685, + 0.0000028735, 0.0000028772, 0.0000028803, 0.0000028842, 0.0000028873, + 0.0000028892, 0.0000028885, 0.0000028849, 0.0000028794, 0.0000028739, + 0.0000028717, 0.0000028735, 0.0000028769, 0.0000028801, 0.0000028810, + 0.0000028763, 0.0000028657, 0.0000028532, 0.0000028429, 0.0000028339, + 0.0000028256, 0.0000028152, 0.0000028050, 0.0000028012, 0.0000028038, + 0.0000028117, 0.0000028198, 0.0000028299, 0.0000028380, 0.0000028409, + 0.0000028434, 0.0000028435, 0.0000028420, 0.0000028396, 0.0000028385, + 0.0000028378, 0.0000028370, 0.0000028401, 0.0000028467, 0.0000028508, + 0.0000028516, 0.0000028486, 0.0000028464, 0.0000028463, 0.0000028410, + 0.0000028353, 0.0000028356, 0.0000028371, 0.0000028319, 0.0000028202, + 0.0000028166, 0.0000028193, 0.0000028253, 0.0000028275, 0.0000028246, + 0.0000028198, 0.0000028214, 0.0000028266, 0.0000028222, 0.0000028071, + 0.0000027924, 0.0000027849, 0.0000027853, 0.0000027914, 0.0000027988, + 0.0000028041, 0.0000028078, 0.0000028116, 0.0000028162, 0.0000028208, + 0.0000028250, 0.0000028294, 0.0000028330, 0.0000028353, 0.0000028359, + 0.0000028343, 0.0000028308, 0.0000028295, 0.0000028333, 0.0000028399, + 0.0000028450, 0.0000028476, 0.0000028491, 0.0000028483, 0.0000028387, + 0.0000028182, 0.0000028077, 0.0000028228, 0.0000028409, 0.0000028540, + 0.0000028684, 0.0000028804, 0.0000028825, 0.0000028793, 0.0000028801, + 0.0000028873, 0.0000028952, 0.0000028958, 0.0000028928, 0.0000028848, + 0.0000028737, 0.0000028667, 0.0000028622, 0.0000028598, 0.0000028620, + 0.0000028693, 0.0000028773, 0.0000028822, 0.0000028823, 0.0000028792, + 0.0000028714, 0.0000028599, 0.0000028524, 0.0000028510, 0.0000028589, + 0.0000028824, 0.0000028913, 0.0000028710, 0.0000028499, 0.0000028441, + 0.0000028688, 0.0000028892, 0.0000028866, 0.0000028729, 0.0000028652, + 0.0000028670, 0.0000028727, 0.0000028745, 0.0000028756, 0.0000028744, + 0.0000028655, 0.0000028525, 0.0000028432, 0.0000028368, 0.0000028305, + 0.0000028252, 0.0000028225, 0.0000028255, 0.0000028324, 0.0000028402, + 0.0000028469, 0.0000028502, 0.0000028483, 0.0000028405, 0.0000028354, + 0.0000028360, 0.0000028427, 0.0000028475, 0.0000028483, 0.0000028485, + 0.0000028492, 0.0000028495, 0.0000028498, 0.0000028505, 0.0000028505, + 0.0000028483, 0.0000028442, 0.0000028386, 0.0000028309, 0.0000028229, + 0.0000028155, 0.0000028089, 0.0000028031, 0.0000027977, 0.0000027928, + 0.0000027898, 0.0000027895, 0.0000027929, 0.0000027989, 0.0000028045, + 0.0000028059, 0.0000028019, 0.0000027952, 0.0000027903, 0.0000027893, + 0.0000027900, 0.0000027890, 0.0000027883, 0.0000027931, 0.0000028000, + 0.0000028090, 0.0000028190, 0.0000028258, 0.0000028405, 0.0000028591, + 0.0000028657, 0.0000028647, 0.0000028625, 0.0000028577, 0.0000028492, + 0.0000028403, 0.0000028342, 0.0000028312, 0.0000028311, 0.0000028318, + 0.0000028312, 0.0000028279, 0.0000028228, 0.0000028158, 0.0000028062, + 0.0000027948, 0.0000027831, 0.0000027763, 0.0000027780, 0.0000027900, + 0.0000028039, 0.0000028111, 0.0000028113, 0.0000028116, 0.0000028138, + 0.0000028186, 0.0000028194, 0.0000028165, 0.0000028090, 0.0000028021, + 0.0000027985, 0.0000027980, 0.0000028004, 0.0000028092, 0.0000028193, + 0.0000028286, 0.0000028361, 0.0000028422, 0.0000028453, 0.0000028467, + 0.0000028480, 0.0000028487, 0.0000028491, 0.0000028494, 0.0000028494, + 0.0000028516, 0.0000028558, 0.0000028571, 0.0000028549, 0.0000028507, + 0.0000028465, 0.0000028414, 0.0000028355, 0.0000028298, 0.0000028235, + 0.0000028187, 0.0000028166, 0.0000028139, 0.0000028092, 0.0000028057, + 0.0000028056, 0.0000028068, 0.0000028057, 0.0000027985, 0.0000027859, + 0.0000027722, 0.0000027677, 0.0000027748, 0.0000027855, 0.0000027920, + 0.0000028077, 0.0000028290, 0.0000028407, 0.0000028453, 0.0000028455, + 0.0000028502, 0.0000028539, 0.0000028578, 0.0000028658, 0.0000028703, + 0.0000028686, 0.0000028640, 0.0000028599, 0.0000028606, 0.0000028683, + 0.0000028808, 0.0000028900, 0.0000028844, 0.0000028747, 0.0000028503, + 0.0000028330, 0.0000028326, 0.0000028308, 0.0000028336, 0.0000028501, + 0.0000028674, 0.0000028745, 0.0000028720, 0.0000028560, 0.0000028444, + 0.0000028409, 0.0000028402, 0.0000028386, 0.0000028307, 0.0000028297, + 0.0000028333, 0.0000028349, 0.0000028313, 0.0000028310, 0.0000028290, + 0.0000028302, 0.0000028313, 0.0000028289, 0.0000028230, 0.0000028175, + 0.0000028154, 0.0000028165, 0.0000028156, 0.0000028122, 0.0000028085, + 0.0000028050, 0.0000028019, 0.0000028001, 0.0000027969, 0.0000027943, + 0.0000027967, 0.0000028022, 0.0000028071, 0.0000028105, 0.0000028111, + 0.0000028061, 0.0000027963, 0.0000027888, 0.0000027851, 0.0000027822, + 0.0000027864, 0.0000027967, 0.0000028024, 0.0000028026, 0.0000027925, + 0.0000027771, 0.0000027663, 0.0000027573, 0.0000027489, 0.0000027420, + 0.0000027400, 0.0000027433, 0.0000027456, 0.0000027458, 0.0000027443, + 0.0000027420, 0.0000027311, 0.0000027173, 0.0000027134, 0.0000027174, + 0.0000027246, 0.0000027276, 0.0000027274, 0.0000027290, 0.0000027321, + 0.0000027374, 0.0000027420, 0.0000027456, 0.0000027475, 0.0000027483, + 0.0000027479, 0.0000027462, 0.0000027443, 0.0000027416, 0.0000027395, + 0.0000027363, 0.0000027330, 0.0000027299, 0.0000027252, 0.0000027194, + 0.0000027143, 0.0000027111, 0.0000027101, 0.0000027098, 0.0000027100, + 0.0000027101, 0.0000027086, 0.0000027064, 0.0000027045, 0.0000027042, + 0.0000027056, 0.0000027090, 0.0000027116, 0.0000027130, 0.0000027138, + 0.0000027136, 0.0000027123, 0.0000027097, 0.0000027071, 0.0000027067, + 0.0000027089, 0.0000027132, 0.0000027174, 0.0000027188, 0.0000027177, + 0.0000027160, 0.0000027162, 0.0000027169, 0.0000027134, 0.0000027045, + 0.0000026943, 0.0000026892, 0.0000026879, 0.0000026878, 0.0000026913, + 0.0000026952, 0.0000026959, 0.0000026936, 0.0000026891, 0.0000026857, + 0.0000026843, 0.0000026868, 0.0000026952, 0.0000027036, 0.0000027067, + 0.0000027106, 0.0000027231, 0.0000027444, 0.0000027607, 0.0000027691, + 0.0000027788, 0.0000027984, 0.0000028255, 0.0000028334, 0.0000028225, + 0.0000028129, 0.0000028144, 0.0000028135, 0.0000028009, 0.0000027915, + 0.0000027933, 0.0000028012, 0.0000028097, 0.0000028176, 0.0000028224, + 0.0000028192, 0.0000028079, 0.0000028025, 0.0000027863, 0.0000027682, + 0.0000027676, 0.0000027824, 0.0000027971, 0.0000028132, 0.0000028133, + 0.0000028022, 0.0000028173, 0.0000028439, 0.0000028566, 0.0000028613, + 0.0000028625, 0.0000028620, 0.0000028662, 0.0000028710, 0.0000028655, + 0.0000028509, 0.0000028391, 0.0000028251, 0.0000028057, 0.0000028023, + 0.0000027985, 0.0000027916, 0.0000027912, 0.0000027952, 0.0000027916, + 0.0000027792, 0.0000027647, 0.0000027635, 0.0000027664, 0.0000027691, + 0.0000027719, 0.0000027708, 0.0000027692, 0.0000027660, 0.0000027604, + 0.0000027552, 0.0000027492, 0.0000027432, 0.0000027423, 0.0000027460, + 0.0000027524, 0.0000027554, 0.0000027521, 0.0000027411, 0.0000027296, + 0.0000027235, 0.0000027231, 0.0000027263, 0.0000027282, 0.0000027281, + 0.0000027261, 0.0000027249, 0.0000027248, 0.0000027250, 0.0000027263, + 0.0000027279, 0.0000027294, 0.0000027316, 0.0000027338, 0.0000027331, + 0.0000027311, 0.0000027280, 0.0000027249, 0.0000027231, 0.0000027205, + 0.0000027206, 0.0000027226, 0.0000027230, 0.0000027254, 0.0000027279, + 0.0000027304, 0.0000027324, 0.0000027339, 0.0000027337, 0.0000027328, + 0.0000027289, 0.0000027260, 0.0000027240, 0.0000027232, 0.0000027217, + 0.0000027229, 0.0000027244, 0.0000027265, 0.0000027252, 0.0000027248, + 0.0000027234, 0.0000027258, 0.0000027277, 0.0000027297, 0.0000027318, + 0.0000027337, 0.0000027336, 0.0000027324, 0.0000027322, 0.0000027334, + 0.0000027348, 0.0000027371, 0.0000027385, 0.0000027374, 0.0000027333, + 0.0000027248, 0.0000027162, 0.0000027101, 0.0000027057, 0.0000027033, + 0.0000027011, 0.0000027008, 0.0000027078, 0.0000027224, 0.0000027443, + 0.0000027700, 0.0000027881, 0.0000027975, 0.0000028048, 0.0000028133, + 0.0000028176, 0.0000028165, 0.0000028175, 0.0000028258, 0.0000028359, + 0.0000028439, 0.0000028490, 0.0000028488, 0.0000028455, 0.0000028389, + 0.0000028338, 0.0000028354, 0.0000028432, 0.0000028489, 0.0000028495, + 0.0000028472, 0.0000028422, 0.0000028316, 0.0000028211, 0.0000028196, + 0.0000028251, 0.0000028283, 0.0000028308, 0.0000028363, 0.0000028436, + 0.0000028491, 0.0000028524, 0.0000028536, 0.0000028498, 0.0000028429, + 0.0000028364, 0.0000028315, 0.0000028269, 0.0000028224, 0.0000028170, + 0.0000028111, 0.0000028064, 0.0000028031, 0.0000028031, 0.0000028052, + 0.0000028068, 0.0000028055, 0.0000027987, 0.0000027885, 0.0000027804, + 0.0000027768, 0.0000027759, 0.0000027763, 0.0000027756, 0.0000027733, + 0.0000027712, 0.0000027715, 0.0000027751, 0.0000027815, 0.0000027889, + 0.0000027973, 0.0000028076, 0.0000028197, 0.0000028320, 0.0000028434, + 0.0000028529, 0.0000028602, 0.0000028634, 0.0000028629, 0.0000028633, + 0.0000028666, 0.0000028657, 0.0000028451, 0.0000028178, 0.0000028079, + 0.0000028162, 0.0000028304, 0.0000028336, 0.0000028313, 0.0000028298, + 0.0000028316, 0.0000028327, 0.0000028299, 0.0000028256, 0.0000028211, + 0.0000028142, 0.0000028066, 0.0000028028, 0.0000028042, 0.0000028098, + 0.0000028163, 0.0000028194, 0.0000028174, 0.0000028098, 0.0000028005, + 0.0000027943, 0.0000027927, 0.0000027932, 0.0000027959, 0.0000028013, + 0.0000028103, 0.0000028252, 0.0000028452, 0.0000028648, 0.0000028800, + 0.0000028904, 0.0000028969, 0.0000028992, 0.0000028989, 0.0000028979, + 0.0000028970, 0.0000028962, 0.0000028939, 0.0000028900, 0.0000028865, + 0.0000028841, 0.0000028833, 0.0000028845, 0.0000028877, 0.0000028933, + 0.0000029014, 0.0000029093, 0.0000029141, 0.0000029153, 0.0000029152, + 0.0000029158, 0.0000029179, 0.0000029189, 0.0000029173, 0.0000029116, + 0.0000029059, 0.0000029042, 0.0000029051, 0.0000029058, 0.0000029026, + 0.0000028954, 0.0000028881, 0.0000028834, 0.0000028817, 0.0000028824, + 0.0000028837, 0.0000028845, 0.0000028845, 0.0000028846, 0.0000028856, + 0.0000028880, 0.0000028919, 0.0000028971, 0.0000029008, 0.0000029023, + 0.0000029022, 0.0000029017, 0.0000029008, 0.0000028973, 0.0000028912, + 0.0000028831, 0.0000028749, 0.0000028700, 0.0000028708, 0.0000028780, + 0.0000028882, 0.0000028965, 0.0000028998, 0.0000028987, 0.0000028951, + 0.0000028917, 0.0000028886, 0.0000028865, 0.0000028875, 0.0000028908, + 0.0000028928, 0.0000028903, 0.0000028813, 0.0000028693, 0.0000028590, + 0.0000028528, 0.0000028522, 0.0000028551, 0.0000028589, 0.0000028609, + 0.0000028600, 0.0000028578, 0.0000028582, 0.0000028598, 0.0000028622, + 0.0000028644, 0.0000028654, 0.0000028662, 0.0000028693, 0.0000028732, + 0.0000028769, 0.0000028792, 0.0000028806, 0.0000028825, 0.0000028834, + 0.0000028844, 0.0000028831, 0.0000028801, 0.0000028742, 0.0000028691, + 0.0000028690, 0.0000028727, 0.0000028780, 0.0000028816, 0.0000028806, + 0.0000028721, 0.0000028607, 0.0000028496, 0.0000028409, 0.0000028331, + 0.0000028246, 0.0000028140, 0.0000028070, 0.0000028083, 0.0000028169, + 0.0000028271, 0.0000028350, 0.0000028428, 0.0000028477, 0.0000028474, + 0.0000028465, 0.0000028455, 0.0000028433, 0.0000028400, 0.0000028379, + 0.0000028366, 0.0000028367, 0.0000028416, 0.0000028482, 0.0000028513, + 0.0000028506, 0.0000028437, 0.0000028374, 0.0000028377, 0.0000028365, + 0.0000028350, 0.0000028370, 0.0000028390, 0.0000028328, 0.0000028219, + 0.0000028191, 0.0000028218, 0.0000028269, 0.0000028308, 0.0000028298, + 0.0000028243, 0.0000028249, 0.0000028315, 0.0000028331, 0.0000028229, + 0.0000028081, 0.0000027973, 0.0000027938, 0.0000027960, 0.0000028006, + 0.0000028054, 0.0000028091, 0.0000028134, 0.0000028185, 0.0000028240, + 0.0000028292, 0.0000028332, 0.0000028361, 0.0000028372, 0.0000028364, + 0.0000028345, 0.0000028336, 0.0000028357, 0.0000028409, 0.0000028462, + 0.0000028517, 0.0000028570, 0.0000028589, 0.0000028530, 0.0000028352, + 0.0000028169, 0.0000028189, 0.0000028350, 0.0000028488, 0.0000028612, + 0.0000028751, 0.0000028812, 0.0000028782, 0.0000028748, 0.0000028769, + 0.0000028858, 0.0000028936, 0.0000028944, 0.0000028917, 0.0000028823, + 0.0000028677, 0.0000028569, 0.0000028511, 0.0000028502, 0.0000028549, + 0.0000028632, 0.0000028721, 0.0000028774, 0.0000028769, 0.0000028738, + 0.0000028691, 0.0000028603, 0.0000028525, 0.0000028522, 0.0000028690, + 0.0000028907, 0.0000028851, 0.0000028603, 0.0000028479, 0.0000028559, + 0.0000028858, 0.0000028940, 0.0000028832, 0.0000028685, 0.0000028657, + 0.0000028718, 0.0000028779, 0.0000028790, 0.0000028791, 0.0000028754, + 0.0000028640, 0.0000028507, 0.0000028409, 0.0000028333, 0.0000028270, + 0.0000028235, 0.0000028212, 0.0000028182, 0.0000028167, 0.0000028228, + 0.0000028331, 0.0000028397, 0.0000028417, 0.0000028352, 0.0000028238, + 0.0000028187, 0.0000028227, 0.0000028308, 0.0000028353, 0.0000028400, + 0.0000028463, 0.0000028511, 0.0000028519, 0.0000028512, 0.0000028503, + 0.0000028501, 0.0000028510, 0.0000028525, 0.0000028516, 0.0000028471, + 0.0000028405, 0.0000028322, 0.0000028234, 0.0000028143, 0.0000028045, + 0.0000027949, 0.0000027888, 0.0000027877, 0.0000027907, 0.0000027950, + 0.0000027975, 0.0000027973, 0.0000027954, 0.0000027946, 0.0000027953, + 0.0000027964, 0.0000027959, 0.0000027928, 0.0000027933, 0.0000028012, + 0.0000028111, 0.0000028207, 0.0000028269, 0.0000028351, 0.0000028522, + 0.0000028632, 0.0000028640, 0.0000028637, 0.0000028630, 0.0000028585, + 0.0000028508, 0.0000028438, 0.0000028388, 0.0000028356, 0.0000028352, + 0.0000028358, 0.0000028348, 0.0000028318, 0.0000028282, 0.0000028237, + 0.0000028173, 0.0000028084, 0.0000027982, 0.0000027914, 0.0000027914, + 0.0000027992, 0.0000028099, 0.0000028146, 0.0000028120, 0.0000028063, + 0.0000028036, 0.0000028066, 0.0000028129, 0.0000028162, 0.0000028171, + 0.0000028172, 0.0000028175, 0.0000028167, 0.0000028153, 0.0000028177, + 0.0000028242, 0.0000028322, 0.0000028392, 0.0000028448, 0.0000028485, + 0.0000028503, 0.0000028515, 0.0000028526, 0.0000028532, 0.0000028525, + 0.0000028501, 0.0000028499, 0.0000028528, 0.0000028558, 0.0000028547, + 0.0000028506, 0.0000028460, 0.0000028404, 0.0000028347, 0.0000028302, + 0.0000028261, 0.0000028238, 0.0000028237, 0.0000028228, 0.0000028206, + 0.0000028189, 0.0000028177, 0.0000028158, 0.0000028118, 0.0000028034, + 0.0000027891, 0.0000027726, 0.0000027672, 0.0000027746, 0.0000027855, + 0.0000027928, 0.0000028117, 0.0000028342, 0.0000028452, 0.0000028498, + 0.0000028516, 0.0000028577, 0.0000028629, 0.0000028672, 0.0000028737, + 0.0000028751, 0.0000028712, 0.0000028648, 0.0000028585, 0.0000028581, + 0.0000028663, 0.0000028799, 0.0000028901, 0.0000028851, 0.0000028763, + 0.0000028529, 0.0000028373, 0.0000028377, 0.0000028359, 0.0000028379, + 0.0000028546, 0.0000028733, 0.0000028809, 0.0000028772, 0.0000028611, + 0.0000028466, 0.0000028386, 0.0000028357, 0.0000028348, 0.0000028307, + 0.0000028290, 0.0000028301, 0.0000028289, 0.0000028243, 0.0000028239, + 0.0000028214, 0.0000028206, 0.0000028197, 0.0000028151, 0.0000028081, + 0.0000028032, 0.0000028029, 0.0000028071, 0.0000028092, 0.0000028086, + 0.0000028069, 0.0000028051, 0.0000028028, 0.0000028008, 0.0000027970, + 0.0000027934, 0.0000027940, 0.0000027973, 0.0000027997, 0.0000028009, + 0.0000027973, 0.0000027904, 0.0000027850, 0.0000027843, 0.0000027811, + 0.0000027818, 0.0000027912, 0.0000027975, 0.0000027993, 0.0000027929, + 0.0000027783, 0.0000027660, 0.0000027574, 0.0000027475, 0.0000027386, + 0.0000027368, 0.0000027398, 0.0000027459, 0.0000027487, 0.0000027480, + 0.0000027447, 0.0000027368, 0.0000027262, 0.0000027196, 0.0000027198, + 0.0000027232, 0.0000027265, 0.0000027282, 0.0000027313, 0.0000027368, + 0.0000027434, 0.0000027502, 0.0000027563, 0.0000027592, 0.0000027607, + 0.0000027591, 0.0000027554, 0.0000027497, 0.0000027431, 0.0000027383, + 0.0000027356, 0.0000027335, 0.0000027323, 0.0000027322, 0.0000027319, + 0.0000027297, 0.0000027260, 0.0000027230, 0.0000027203, 0.0000027185, + 0.0000027166, 0.0000027149, 0.0000027131, 0.0000027104, 0.0000027072, + 0.0000027051, 0.0000027051, 0.0000027075, 0.0000027115, 0.0000027147, + 0.0000027166, 0.0000027182, 0.0000027192, 0.0000027191, 0.0000027169, + 0.0000027137, 0.0000027112, 0.0000027105, 0.0000027126, 0.0000027145, + 0.0000027157, 0.0000027156, 0.0000027161, 0.0000027191, 0.0000027217, + 0.0000027198, 0.0000027134, 0.0000027057, 0.0000027021, 0.0000026992, + 0.0000026946, 0.0000026907, 0.0000026891, 0.0000026899, 0.0000026888, + 0.0000026826, 0.0000026761, 0.0000026722, 0.0000026755, 0.0000026885, + 0.0000027005, 0.0000027048, 0.0000027075, 0.0000027204, 0.0000027427, + 0.0000027587, 0.0000027683, 0.0000027815, 0.0000028080, 0.0000028317, + 0.0000028297, 0.0000028177, 0.0000028160, 0.0000028163, 0.0000028034, + 0.0000027912, 0.0000027919, 0.0000028012, 0.0000028095, 0.0000028173, + 0.0000028221, 0.0000028198, 0.0000028074, 0.0000027995, 0.0000027926, + 0.0000027737, 0.0000027639, 0.0000027711, 0.0000027865, 0.0000027994, + 0.0000028137, 0.0000028040, 0.0000027979, 0.0000028164, 0.0000028419, + 0.0000028563, 0.0000028625, 0.0000028627, 0.0000028609, 0.0000028647, + 0.0000028676, 0.0000028602, 0.0000028466, 0.0000028361, 0.0000028210, + 0.0000028058, 0.0000028031, 0.0000027982, 0.0000027917, 0.0000027924, + 0.0000027951, 0.0000027900, 0.0000027741, 0.0000027617, 0.0000027638, + 0.0000027679, 0.0000027719, 0.0000027729, 0.0000027707, 0.0000027689, + 0.0000027646, 0.0000027576, 0.0000027505, 0.0000027422, 0.0000027372, + 0.0000027378, 0.0000027421, 0.0000027482, 0.0000027489, 0.0000027424, + 0.0000027301, 0.0000027212, 0.0000027180, 0.0000027197, 0.0000027223, + 0.0000027226, 0.0000027207, 0.0000027185, 0.0000027190, 0.0000027209, + 0.0000027225, 0.0000027247, 0.0000027264, 0.0000027280, 0.0000027307, + 0.0000027330, 0.0000027327, 0.0000027311, 0.0000027291, 0.0000027268, + 0.0000027255, 0.0000027234, 0.0000027229, 0.0000027231, 0.0000027229, + 0.0000027235, 0.0000027241, 0.0000027247, 0.0000027258, 0.0000027272, + 0.0000027284, 0.0000027293, 0.0000027280, 0.0000027269, 0.0000027267, + 0.0000027282, 0.0000027288, 0.0000027309, 0.0000027325, 0.0000027330, + 0.0000027297, 0.0000027280, 0.0000027239, 0.0000027240, 0.0000027238, + 0.0000027241, 0.0000027245, 0.0000027266, 0.0000027278, 0.0000027272, + 0.0000027278, 0.0000027289, 0.0000027296, 0.0000027306, 0.0000027326, + 0.0000027327, 0.0000027313, 0.0000027261, 0.0000027182, 0.0000027096, + 0.0000027021, 0.0000026981, 0.0000026961, 0.0000026949, 0.0000026939, + 0.0000026960, 0.0000027073, 0.0000027266, 0.0000027558, 0.0000027855, + 0.0000028020, 0.0000028109, 0.0000028176, 0.0000028209, 0.0000028222, + 0.0000028280, 0.0000028356, 0.0000028412, 0.0000028444, 0.0000028432, + 0.0000028370, 0.0000028297, 0.0000028251, 0.0000028276, 0.0000028367, + 0.0000028439, 0.0000028443, 0.0000028405, 0.0000028349, 0.0000028257, + 0.0000028165, 0.0000028176, 0.0000028254, 0.0000028314, 0.0000028348, + 0.0000028405, 0.0000028462, 0.0000028499, 0.0000028515, 0.0000028515, + 0.0000028486, 0.0000028438, 0.0000028392, 0.0000028344, 0.0000028295, + 0.0000028245, 0.0000028184, 0.0000028128, 0.0000028090, 0.0000028088, + 0.0000028118, 0.0000028157, 0.0000028166, 0.0000028140, 0.0000028073, + 0.0000027987, 0.0000027920, 0.0000027894, 0.0000027889, 0.0000027886, + 0.0000027865, 0.0000027811, 0.0000027746, 0.0000027707, 0.0000027704, + 0.0000027746, 0.0000027819, 0.0000027906, 0.0000028006, 0.0000028123, + 0.0000028248, 0.0000028363, 0.0000028469, 0.0000028565, 0.0000028636, + 0.0000028654, 0.0000028645, 0.0000028653, 0.0000028660, 0.0000028509, + 0.0000028237, 0.0000028100, 0.0000028147, 0.0000028307, 0.0000028399, + 0.0000028397, 0.0000028365, 0.0000028350, 0.0000028336, 0.0000028298, + 0.0000028253, 0.0000028222, 0.0000028166, 0.0000028073, 0.0000028009, + 0.0000028011, 0.0000028062, 0.0000028121, 0.0000028156, 0.0000028148, + 0.0000028098, 0.0000028026, 0.0000027960, 0.0000027918, 0.0000027913, + 0.0000027928, 0.0000027970, 0.0000028065, 0.0000028219, 0.0000028390, + 0.0000028547, 0.0000028683, 0.0000028807, 0.0000028911, 0.0000028979, + 0.0000029002, 0.0000028998, 0.0000028985, 0.0000028973, 0.0000028964, + 0.0000028950, 0.0000028930, 0.0000028908, 0.0000028882, 0.0000028859, + 0.0000028838, 0.0000028831, 0.0000028846, 0.0000028895, 0.0000028969, + 0.0000029034, 0.0000029066, 0.0000029071, 0.0000029076, 0.0000029102, + 0.0000029125, 0.0000029119, 0.0000029078, 0.0000029026, 0.0000029008, + 0.0000029023, 0.0000029048, 0.0000029041, 0.0000028997, 0.0000028932, + 0.0000028876, 0.0000028845, 0.0000028839, 0.0000028835, 0.0000028824, + 0.0000028816, 0.0000028815, 0.0000028816, 0.0000028829, 0.0000028864, + 0.0000028923, 0.0000028989, 0.0000029040, 0.0000029069, 0.0000029080, + 0.0000029076, 0.0000029038, 0.0000028971, 0.0000028879, 0.0000028783, + 0.0000028722, 0.0000028725, 0.0000028792, 0.0000028890, 0.0000028978, + 0.0000029024, 0.0000029024, 0.0000028991, 0.0000028944, 0.0000028898, + 0.0000028868, 0.0000028872, 0.0000028905, 0.0000028931, 0.0000028919, + 0.0000028847, 0.0000028737, 0.0000028635, 0.0000028589, 0.0000028602, + 0.0000028651, 0.0000028689, 0.0000028708, 0.0000028711, 0.0000028701, + 0.0000028687, 0.0000028700, 0.0000028708, 0.0000028703, 0.0000028689, + 0.0000028686, 0.0000028700, 0.0000028729, 0.0000028761, 0.0000028787, + 0.0000028797, 0.0000028797, 0.0000028798, 0.0000028793, 0.0000028789, + 0.0000028769, 0.0000028727, 0.0000028671, 0.0000028639, 0.0000028652, + 0.0000028693, 0.0000028740, 0.0000028754, 0.0000028715, 0.0000028632, + 0.0000028549, 0.0000028481, 0.0000028434, 0.0000028381, 0.0000028302, + 0.0000028215, 0.0000028196, 0.0000028259, 0.0000028374, 0.0000028477, + 0.0000028541, 0.0000028578, 0.0000028582, 0.0000028546, 0.0000028522, + 0.0000028520, 0.0000028504, 0.0000028472, 0.0000028445, 0.0000028421, + 0.0000028411, 0.0000028448, 0.0000028497, 0.0000028515, 0.0000028498, + 0.0000028414, 0.0000028327, 0.0000028304, 0.0000028309, 0.0000028324, + 0.0000028366, 0.0000028391, 0.0000028329, 0.0000028246, 0.0000028229, + 0.0000028254, 0.0000028285, 0.0000028333, 0.0000028352, 0.0000028314, + 0.0000028311, 0.0000028372, 0.0000028418, 0.0000028378, 0.0000028273, + 0.0000028160, 0.0000028075, 0.0000028047, 0.0000028064, 0.0000028091, + 0.0000028112, 0.0000028150, 0.0000028206, 0.0000028278, 0.0000028340, + 0.0000028373, 0.0000028384, 0.0000028377, 0.0000028359, 0.0000028350, + 0.0000028374, 0.0000028430, 0.0000028503, 0.0000028577, 0.0000028643, + 0.0000028678, 0.0000028643, 0.0000028505, 0.0000028309, 0.0000028230, + 0.0000028323, 0.0000028446, 0.0000028564, 0.0000028688, 0.0000028797, + 0.0000028808, 0.0000028742, 0.0000028715, 0.0000028747, 0.0000028838, + 0.0000028912, 0.0000028929, 0.0000028904, 0.0000028804, 0.0000028625, + 0.0000028474, 0.0000028414, 0.0000028432, 0.0000028499, 0.0000028582, + 0.0000028671, 0.0000028735, 0.0000028728, 0.0000028705, 0.0000028688, + 0.0000028616, 0.0000028534, 0.0000028559, 0.0000028786, 0.0000028916, + 0.0000028751, 0.0000028537, 0.0000028481, 0.0000028696, 0.0000028972, + 0.0000028963, 0.0000028784, 0.0000028663, 0.0000028677, 0.0000028755, + 0.0000028804, 0.0000028799, 0.0000028793, 0.0000028734, 0.0000028610, + 0.0000028498, 0.0000028413, 0.0000028327, 0.0000028244, 0.0000028197, + 0.0000028193, 0.0000028181, 0.0000028108, 0.0000028056, 0.0000028109, + 0.0000028235, 0.0000028324, 0.0000028326, 0.0000028225, 0.0000028073, + 0.0000028019, 0.0000028069, 0.0000028146, 0.0000028246, 0.0000028388, + 0.0000028495, 0.0000028550, 0.0000028558, 0.0000028535, 0.0000028498, + 0.0000028476, 0.0000028485, 0.0000028510, 0.0000028515, 0.0000028509, + 0.0000028476, 0.0000028421, 0.0000028348, 0.0000028261, 0.0000028151, + 0.0000028031, 0.0000027932, 0.0000027891, 0.0000027882, 0.0000027884, + 0.0000027897, 0.0000027926, 0.0000027966, 0.0000028009, 0.0000028039, + 0.0000028036, 0.0000027994, 0.0000027972, 0.0000028048, 0.0000028165, + 0.0000028252, 0.0000028301, 0.0000028342, 0.0000028462, 0.0000028588, + 0.0000028616, 0.0000028622, 0.0000028632, 0.0000028615, 0.0000028557, + 0.0000028498, 0.0000028462, 0.0000028441, 0.0000028421, 0.0000028410, + 0.0000028404, 0.0000028384, 0.0000028356, 0.0000028332, 0.0000028305, + 0.0000028259, 0.0000028191, 0.0000028121, 0.0000028079, 0.0000028075, + 0.0000028115, 0.0000028176, 0.0000028203, 0.0000028169, 0.0000028083, + 0.0000028025, 0.0000028007, 0.0000028040, 0.0000028092, 0.0000028161, + 0.0000028216, 0.0000028287, 0.0000028326, 0.0000028322, 0.0000028319, + 0.0000028348, 0.0000028402, 0.0000028451, 0.0000028498, 0.0000028533, + 0.0000028543, 0.0000028542, 0.0000028544, 0.0000028542, 0.0000028526, + 0.0000028480, 0.0000028457, 0.0000028485, 0.0000028530, 0.0000028535, + 0.0000028503, 0.0000028458, 0.0000028401, 0.0000028359, 0.0000028338, + 0.0000028324, 0.0000028329, 0.0000028354, 0.0000028369, 0.0000028363, + 0.0000028336, 0.0000028289, 0.0000028232, 0.0000028164, 0.0000028092, + 0.0000027967, 0.0000027787, 0.0000027703, 0.0000027769, 0.0000027879, + 0.0000027981, 0.0000028201, 0.0000028414, 0.0000028501, 0.0000028542, + 0.0000028570, 0.0000028642, 0.0000028724, 0.0000028782, 0.0000028835, + 0.0000028840, 0.0000028770, 0.0000028678, 0.0000028579, 0.0000028565, + 0.0000028635, 0.0000028778, 0.0000028886, 0.0000028857, 0.0000028783, + 0.0000028567, 0.0000028421, 0.0000028424, 0.0000028397, 0.0000028405, + 0.0000028583, 0.0000028787, 0.0000028879, 0.0000028846, 0.0000028695, + 0.0000028531, 0.0000028395, 0.0000028336, 0.0000028309, 0.0000028304, + 0.0000028292, 0.0000028290, 0.0000028250, 0.0000028203, 0.0000028183, + 0.0000028157, 0.0000028123, 0.0000028101, 0.0000028036, 0.0000027957, + 0.0000027913, 0.0000027910, 0.0000027947, 0.0000027964, 0.0000027960, + 0.0000027953, 0.0000027952, 0.0000027937, 0.0000027909, 0.0000027877, + 0.0000027837, 0.0000027837, 0.0000027850, 0.0000027861, 0.0000027854, + 0.0000027835, 0.0000027821, 0.0000027817, 0.0000027795, 0.0000027800, + 0.0000027884, 0.0000027957, 0.0000027974, 0.0000027933, 0.0000027791, + 0.0000027644, 0.0000027567, 0.0000027494, 0.0000027403, 0.0000027359, + 0.0000027377, 0.0000027438, 0.0000027491, 0.0000027531, 0.0000027531, + 0.0000027455, 0.0000027360, 0.0000027300, 0.0000027319, 0.0000027371, + 0.0000027383, 0.0000027376, 0.0000027390, 0.0000027437, 0.0000027512, + 0.0000027590, 0.0000027640, 0.0000027696, 0.0000027728, 0.0000027727, + 0.0000027700, 0.0000027642, 0.0000027567, 0.0000027487, 0.0000027436, + 0.0000027423, 0.0000027435, 0.0000027457, 0.0000027479, 0.0000027495, + 0.0000027493, 0.0000027468, 0.0000027429, 0.0000027388, 0.0000027348, + 0.0000027312, 0.0000027272, 0.0000027234, 0.0000027199, 0.0000027157, + 0.0000027109, 0.0000027075, 0.0000027073, 0.0000027106, 0.0000027153, + 0.0000027184, 0.0000027207, 0.0000027232, 0.0000027267, 0.0000027287, + 0.0000027291, 0.0000027271, 0.0000027227, 0.0000027187, 0.0000027164, + 0.0000027154, 0.0000027147, 0.0000027140, 0.0000027147, 0.0000027191, + 0.0000027224, 0.0000027222, 0.0000027178, 0.0000027138, 0.0000027131, + 0.0000027109, 0.0000027042, 0.0000026933, 0.0000026857, 0.0000026844, + 0.0000026831, 0.0000026755, 0.0000026664, 0.0000026620, 0.0000026691, + 0.0000026876, 0.0000027003, 0.0000027021, 0.0000027041, 0.0000027205, + 0.0000027443, 0.0000027588, 0.0000027688, 0.0000027878, 0.0000028188, + 0.0000028316, 0.0000028230, 0.0000028173, 0.0000028189, 0.0000028104, + 0.0000027932, 0.0000027916, 0.0000027989, 0.0000028078, 0.0000028159, + 0.0000028210, 0.0000028209, 0.0000028079, 0.0000027954, 0.0000027926, + 0.0000027799, 0.0000027660, 0.0000027634, 0.0000027739, 0.0000027908, + 0.0000028021, 0.0000028108, 0.0000027955, 0.0000027944, 0.0000028148, + 0.0000028401, 0.0000028558, 0.0000028627, 0.0000028618, 0.0000028587, + 0.0000028621, 0.0000028641, 0.0000028553, 0.0000028430, 0.0000028326, + 0.0000028169, 0.0000028070, 0.0000028040, 0.0000027981, 0.0000027928, + 0.0000027947, 0.0000027955, 0.0000027877, 0.0000027680, 0.0000027589, + 0.0000027642, 0.0000027694, 0.0000027732, 0.0000027720, 0.0000027700, + 0.0000027686, 0.0000027615, 0.0000027517, 0.0000027431, 0.0000027357, + 0.0000027336, 0.0000027356, 0.0000027395, 0.0000027434, 0.0000027409, + 0.0000027324, 0.0000027230, 0.0000027179, 0.0000027167, 0.0000027177, + 0.0000027171, 0.0000027147, 0.0000027119, 0.0000027111, 0.0000027130, + 0.0000027154, 0.0000027165, 0.0000027171, 0.0000027182, 0.0000027199, + 0.0000027228, 0.0000027254, 0.0000027262, 0.0000027255, 0.0000027248, + 0.0000027237, 0.0000027232, 0.0000027237, 0.0000027241, 0.0000027247, + 0.0000027249, 0.0000027246, 0.0000027238, 0.0000027229, 0.0000027218, + 0.0000027205, 0.0000027195, 0.0000027188, 0.0000027171, 0.0000027173, + 0.0000027189, 0.0000027219, 0.0000027244, 0.0000027281, 0.0000027311, + 0.0000027331, 0.0000027311, 0.0000027320, 0.0000027288, 0.0000027289, + 0.0000027279, 0.0000027265, 0.0000027244, 0.0000027232, 0.0000027223, + 0.0000027200, 0.0000027194, 0.0000027205, 0.0000027216, 0.0000027221, + 0.0000027244, 0.0000027248, 0.0000027241, 0.0000027216, 0.0000027171, + 0.0000027100, 0.0000027003, 0.0000026917, 0.0000026875, 0.0000026884, + 0.0000026906, 0.0000026903, 0.0000026892, 0.0000026948, 0.0000027123, + 0.0000027445, 0.0000027814, 0.0000028046, 0.0000028136, 0.0000028193, + 0.0000028243, 0.0000028299, 0.0000028362, 0.0000028399, 0.0000028406, + 0.0000028381, 0.0000028305, 0.0000028219, 0.0000028163, 0.0000028194, + 0.0000028303, 0.0000028375, 0.0000028377, 0.0000028341, 0.0000028287, + 0.0000028207, 0.0000028125, 0.0000028151, 0.0000028245, 0.0000028342, + 0.0000028387, 0.0000028444, 0.0000028491, 0.0000028508, 0.0000028501, + 0.0000028478, 0.0000028455, 0.0000028436, 0.0000028412, 0.0000028379, + 0.0000028331, 0.0000028281, 0.0000028215, 0.0000028153, 0.0000028123, + 0.0000028137, 0.0000028188, 0.0000028248, 0.0000028271, 0.0000028250, + 0.0000028184, 0.0000028103, 0.0000028047, 0.0000028020, 0.0000028008, + 0.0000027992, 0.0000027964, 0.0000027905, 0.0000027822, 0.0000027747, + 0.0000027705, 0.0000027707, 0.0000027749, 0.0000027826, 0.0000027932, + 0.0000028054, 0.0000028183, 0.0000028304, 0.0000028418, 0.0000028526, + 0.0000028617, 0.0000028666, 0.0000028675, 0.0000028672, 0.0000028661, + 0.0000028525, 0.0000028268, 0.0000028117, 0.0000028137, 0.0000028304, + 0.0000028448, 0.0000028466, 0.0000028441, 0.0000028408, 0.0000028373, + 0.0000028311, 0.0000028256, 0.0000028232, 0.0000028197, 0.0000028102, + 0.0000028009, 0.0000027984, 0.0000028024, 0.0000028083, 0.0000028114, + 0.0000028108, 0.0000028062, 0.0000028003, 0.0000027954, 0.0000027918, + 0.0000027900, 0.0000027901, 0.0000027925, 0.0000028016, 0.0000028178, + 0.0000028350, 0.0000028473, 0.0000028568, 0.0000028673, 0.0000028783, + 0.0000028885, 0.0000028957, 0.0000028990, 0.0000028995, 0.0000028985, + 0.0000028976, 0.0000028968, 0.0000028958, 0.0000028944, 0.0000028929, + 0.0000028915, 0.0000028883, 0.0000028837, 0.0000028794, 0.0000028776, + 0.0000028784, 0.0000028824, 0.0000028881, 0.0000028932, 0.0000028956, + 0.0000028970, 0.0000028998, 0.0000029034, 0.0000029045, 0.0000029032, + 0.0000028994, 0.0000028966, 0.0000028972, 0.0000029002, 0.0000029020, + 0.0000029010, 0.0000028975, 0.0000028928, 0.0000028891, 0.0000028875, + 0.0000028857, 0.0000028829, 0.0000028814, 0.0000028819, 0.0000028825, + 0.0000028827, 0.0000028842, 0.0000028893, 0.0000028973, 0.0000029056, + 0.0000029111, 0.0000029126, 0.0000029123, 0.0000029088, 0.0000029022, + 0.0000028931, 0.0000028833, 0.0000028765, 0.0000028757, 0.0000028812, + 0.0000028905, 0.0000028993, 0.0000029049, 0.0000029055, 0.0000029022, + 0.0000028967, 0.0000028909, 0.0000028869, 0.0000028870, 0.0000028905, + 0.0000028936, 0.0000028938, 0.0000028885, 0.0000028785, 0.0000028689, + 0.0000028653, 0.0000028678, 0.0000028741, 0.0000028787, 0.0000028798, + 0.0000028790, 0.0000028784, 0.0000028771, 0.0000028753, 0.0000028755, + 0.0000028742, 0.0000028718, 0.0000028703, 0.0000028707, 0.0000028722, + 0.0000028745, 0.0000028773, 0.0000028792, 0.0000028792, 0.0000028782, + 0.0000028763, 0.0000028744, 0.0000028721, 0.0000028690, 0.0000028657, + 0.0000028620, 0.0000028599, 0.0000028599, 0.0000028618, 0.0000028639, + 0.0000028640, 0.0000028611, 0.0000028578, 0.0000028540, 0.0000028527, + 0.0000028523, 0.0000028491, 0.0000028411, 0.0000028345, 0.0000028356, + 0.0000028444, 0.0000028551, 0.0000028632, 0.0000028657, 0.0000028648, + 0.0000028618, 0.0000028569, 0.0000028553, 0.0000028573, 0.0000028587, + 0.0000028576, 0.0000028560, 0.0000028534, 0.0000028507, 0.0000028507, + 0.0000028519, 0.0000028521, 0.0000028494, 0.0000028408, 0.0000028307, + 0.0000028251, 0.0000028248, 0.0000028288, 0.0000028353, 0.0000028378, + 0.0000028329, 0.0000028286, 0.0000028288, 0.0000028305, 0.0000028322, + 0.0000028366, 0.0000028402, 0.0000028399, 0.0000028400, 0.0000028434, + 0.0000028476, 0.0000028486, 0.0000028453, 0.0000028363, 0.0000028243, + 0.0000028168, 0.0000028150, 0.0000028148, 0.0000028156, 0.0000028196, + 0.0000028259, 0.0000028330, 0.0000028377, 0.0000028389, 0.0000028384, + 0.0000028366, 0.0000028358, 0.0000028382, 0.0000028454, 0.0000028547, + 0.0000028643, 0.0000028728, 0.0000028767, 0.0000028729, 0.0000028611, + 0.0000028447, 0.0000028327, 0.0000028340, 0.0000028425, 0.0000028521, + 0.0000028640, 0.0000028754, 0.0000028818, 0.0000028792, 0.0000028711, + 0.0000028692, 0.0000028732, 0.0000028817, 0.0000028887, 0.0000028916, + 0.0000028895, 0.0000028794, 0.0000028590, 0.0000028398, 0.0000028339, + 0.0000028384, 0.0000028471, 0.0000028547, 0.0000028634, 0.0000028710, + 0.0000028711, 0.0000028695, 0.0000028691, 0.0000028637, 0.0000028558, + 0.0000028614, 0.0000028844, 0.0000028892, 0.0000028658, 0.0000028502, + 0.0000028501, 0.0000028819, 0.0000029049, 0.0000028987, 0.0000028756, + 0.0000028662, 0.0000028698, 0.0000028778, 0.0000028807, 0.0000028787, + 0.0000028760, 0.0000028691, 0.0000028563, 0.0000028467, 0.0000028403, + 0.0000028334, 0.0000028255, 0.0000028182, 0.0000028147, 0.0000028135, + 0.0000028098, 0.0000028013, 0.0000027944, 0.0000028005, 0.0000028164, + 0.0000028256, 0.0000028245, 0.0000028116, 0.0000027939, 0.0000027880, + 0.0000027925, 0.0000028013, 0.0000028175, 0.0000028325, 0.0000028422, + 0.0000028488, 0.0000028528, 0.0000028526, 0.0000028503, 0.0000028480, + 0.0000028466, 0.0000028471, 0.0000028485, 0.0000028487, 0.0000028486, + 0.0000028463, 0.0000028413, 0.0000028338, 0.0000028241, 0.0000028134, + 0.0000028035, 0.0000027963, 0.0000027925, 0.0000027921, 0.0000027957, + 0.0000028022, 0.0000028090, 0.0000028129, 0.0000028114, 0.0000028061, + 0.0000028045, 0.0000028127, 0.0000028243, 0.0000028314, 0.0000028344, + 0.0000028361, 0.0000028436, 0.0000028545, 0.0000028588, 0.0000028597, + 0.0000028611, 0.0000028605, 0.0000028564, 0.0000028508, 0.0000028471, + 0.0000028461, 0.0000028465, 0.0000028462, 0.0000028456, 0.0000028445, + 0.0000028421, 0.0000028397, 0.0000028384, 0.0000028370, 0.0000028335, + 0.0000028282, 0.0000028240, 0.0000028224, 0.0000028226, 0.0000028239, + 0.0000028251, 0.0000028247, 0.0000028211, 0.0000028150, 0.0000028099, + 0.0000028066, 0.0000028047, 0.0000028049, 0.0000028083, 0.0000028157, + 0.0000028260, 0.0000028349, 0.0000028375, 0.0000028397, 0.0000028440, + 0.0000028504, 0.0000028565, 0.0000028612, 0.0000028635, 0.0000028627, + 0.0000028592, 0.0000028559, 0.0000028537, 0.0000028502, 0.0000028447, + 0.0000028415, 0.0000028434, 0.0000028482, 0.0000028505, 0.0000028487, + 0.0000028442, 0.0000028392, 0.0000028382, 0.0000028396, 0.0000028410, + 0.0000028441, 0.0000028486, 0.0000028515, 0.0000028507, 0.0000028454, + 0.0000028369, 0.0000028281, 0.0000028196, 0.0000028140, 0.0000028063, + 0.0000027905, 0.0000027792, 0.0000027837, 0.0000027941, 0.0000028065, + 0.0000028292, 0.0000028477, 0.0000028542, 0.0000028570, 0.0000028601, + 0.0000028686, 0.0000028792, 0.0000028864, 0.0000028917, 0.0000028920, + 0.0000028851, 0.0000028748, 0.0000028627, 0.0000028576, 0.0000028617, + 0.0000028743, 0.0000028851, 0.0000028845, 0.0000028791, 0.0000028605, + 0.0000028462, 0.0000028455, 0.0000028418, 0.0000028417, 0.0000028599, + 0.0000028828, 0.0000028945, 0.0000028931, 0.0000028802, 0.0000028630, + 0.0000028448, 0.0000028335, 0.0000028277, 0.0000028302, 0.0000028301, + 0.0000028283, 0.0000028241, 0.0000028184, 0.0000028148, 0.0000028129, + 0.0000028062, 0.0000028018, 0.0000027953, 0.0000027882, 0.0000027857, + 0.0000027856, 0.0000027870, 0.0000027863, 0.0000027844, 0.0000027823, + 0.0000027802, 0.0000027772, 0.0000027737, 0.0000027708, 0.0000027679, + 0.0000027696, 0.0000027730, 0.0000027762, 0.0000027791, 0.0000027817, + 0.0000027816, 0.0000027781, 0.0000027765, 0.0000027850, 0.0000027956, + 0.0000027983, 0.0000027966, 0.0000027845, 0.0000027670, 0.0000027555, + 0.0000027502, 0.0000027441, 0.0000027376, 0.0000027373, 0.0000027423, + 0.0000027463, 0.0000027515, 0.0000027575, 0.0000027581, 0.0000027503, + 0.0000027446, 0.0000027468, 0.0000027550, 0.0000027615, 0.0000027638, + 0.0000027629, 0.0000027631, 0.0000027661, 0.0000027714, 0.0000027765, + 0.0000027799, 0.0000027816, 0.0000027831, 0.0000027823, 0.0000027787, + 0.0000027736, 0.0000027667, 0.0000027605, 0.0000027578, 0.0000027588, + 0.0000027622, 0.0000027660, 0.0000027682, 0.0000027680, 0.0000027659, + 0.0000027623, 0.0000027577, 0.0000027525, 0.0000027470, 0.0000027420, + 0.0000027381, 0.0000027338, 0.0000027293, 0.0000027248, 0.0000027194, + 0.0000027129, 0.0000027080, 0.0000027075, 0.0000027110, 0.0000027156, + 0.0000027187, 0.0000027207, 0.0000027237, 0.0000027280, 0.0000027329, + 0.0000027366, 0.0000027379, 0.0000027351, 0.0000027312, 0.0000027265, + 0.0000027213, 0.0000027167, 0.0000027142, 0.0000027141, 0.0000027181, + 0.0000027216, 0.0000027216, 0.0000027192, 0.0000027193, 0.0000027212, + 0.0000027205, 0.0000027127, 0.0000026970, 0.0000026836, 0.0000026802, + 0.0000026772, 0.0000026679, 0.0000026576, 0.0000026551, 0.0000026704, + 0.0000026916, 0.0000026994, 0.0000026981, 0.0000027029, 0.0000027259, + 0.0000027491, 0.0000027602, 0.0000027710, 0.0000027983, 0.0000028268, + 0.0000028280, 0.0000028202, 0.0000028198, 0.0000028161, 0.0000027998, + 0.0000027920, 0.0000027965, 0.0000028046, 0.0000028136, 0.0000028209, + 0.0000028204, 0.0000028095, 0.0000027935, 0.0000027882, 0.0000027837, + 0.0000027691, 0.0000027628, 0.0000027641, 0.0000027771, 0.0000027937, + 0.0000028045, 0.0000028048, 0.0000027902, 0.0000027925, 0.0000028128, + 0.0000028379, 0.0000028543, 0.0000028620, 0.0000028597, 0.0000028556, + 0.0000028593, 0.0000028604, 0.0000028505, 0.0000028395, 0.0000028285, + 0.0000028136, 0.0000028085, 0.0000028050, 0.0000027984, 0.0000027941, + 0.0000027968, 0.0000027957, 0.0000027848, 0.0000027622, 0.0000027569, + 0.0000027644, 0.0000027702, 0.0000027721, 0.0000027700, 0.0000027696, + 0.0000027661, 0.0000027549, 0.0000027440, 0.0000027365, 0.0000027325, + 0.0000027326, 0.0000027347, 0.0000027365, 0.0000027366, 0.0000027318, + 0.0000027248, 0.0000027204, 0.0000027177, 0.0000027164, 0.0000027145, + 0.0000027106, 0.0000027065, 0.0000027049, 0.0000027060, 0.0000027079, + 0.0000027088, 0.0000027078, 0.0000027066, 0.0000027074, 0.0000027102, + 0.0000027146, 0.0000027182, 0.0000027196, 0.0000027190, 0.0000027189, + 0.0000027184, 0.0000027184, 0.0000027194, 0.0000027198, 0.0000027194, + 0.0000027191, 0.0000027182, 0.0000027173, 0.0000027169, 0.0000027165, + 0.0000027160, 0.0000027149, 0.0000027138, 0.0000027116, 0.0000027111, + 0.0000027116, 0.0000027131, 0.0000027151, 0.0000027178, 0.0000027198, + 0.0000027210, 0.0000027196, 0.0000027213, 0.0000027203, 0.0000027239, + 0.0000027264, 0.0000027280, 0.0000027282, 0.0000027278, 0.0000027265, + 0.0000027226, 0.0000027191, 0.0000027166, 0.0000027152, 0.0000027145, + 0.0000027170, 0.0000027182, 0.0000027182, 0.0000027161, 0.0000027130, + 0.0000027092, 0.0000027025, 0.0000026914, 0.0000026814, 0.0000026782, + 0.0000026808, 0.0000026857, 0.0000026864, 0.0000026842, 0.0000026872, + 0.0000027049, 0.0000027363, 0.0000027742, 0.0000028026, 0.0000028141, + 0.0000028206, 0.0000028286, 0.0000028360, 0.0000028401, 0.0000028396, + 0.0000028349, 0.0000028269, 0.0000028181, 0.0000028102, 0.0000028113, + 0.0000028230, 0.0000028319, 0.0000028310, 0.0000028267, 0.0000028225, + 0.0000028164, 0.0000028088, 0.0000028106, 0.0000028213, 0.0000028334, + 0.0000028400, 0.0000028465, 0.0000028512, 0.0000028524, 0.0000028493, + 0.0000028443, 0.0000028417, 0.0000028417, 0.0000028421, 0.0000028409, + 0.0000028382, 0.0000028334, 0.0000028262, 0.0000028191, 0.0000028156, + 0.0000028167, 0.0000028224, 0.0000028300, 0.0000028338, 0.0000028333, + 0.0000028283, 0.0000028211, 0.0000028149, 0.0000028116, 0.0000028090, + 0.0000028050, 0.0000028007, 0.0000027952, 0.0000027882, 0.0000027809, + 0.0000027750, 0.0000027712, 0.0000027712, 0.0000027760, 0.0000027862, + 0.0000028007, 0.0000028150, 0.0000028262, 0.0000028364, 0.0000028474, + 0.0000028575, 0.0000028645, 0.0000028679, 0.0000028689, 0.0000028673, + 0.0000028529, 0.0000028280, 0.0000028128, 0.0000028138, 0.0000028304, + 0.0000028485, 0.0000028523, 0.0000028505, 0.0000028482, 0.0000028437, + 0.0000028351, 0.0000028271, 0.0000028247, 0.0000028235, 0.0000028159, + 0.0000028041, 0.0000027982, 0.0000027998, 0.0000028047, 0.0000028079, + 0.0000028074, 0.0000028031, 0.0000027966, 0.0000027918, 0.0000027898, + 0.0000027885, 0.0000027879, 0.0000027896, 0.0000027964, 0.0000028112, + 0.0000028288, 0.0000028411, 0.0000028486, 0.0000028561, 0.0000028645, + 0.0000028737, 0.0000028829, 0.0000028903, 0.0000028951, 0.0000028976, + 0.0000028982, 0.0000028979, 0.0000028965, 0.0000028946, 0.0000028928, + 0.0000028924, 0.0000028917, 0.0000028887, 0.0000028831, 0.0000028769, + 0.0000028722, 0.0000028707, 0.0000028708, 0.0000028728, 0.0000028761, + 0.0000028797, 0.0000028830, 0.0000028865, 0.0000028908, 0.0000028946, + 0.0000028958, 0.0000028948, 0.0000028922, 0.0000028914, 0.0000028939, + 0.0000028978, 0.0000029006, 0.0000029008, 0.0000028982, 0.0000028950, + 0.0000028926, 0.0000028892, 0.0000028847, 0.0000028829, 0.0000028843, + 0.0000028863, 0.0000028859, 0.0000028852, 0.0000028885, 0.0000028970, + 0.0000029068, 0.0000029131, 0.0000029142, 0.0000029136, 0.0000029108, + 0.0000029056, 0.0000028982, 0.0000028896, 0.0000028826, 0.0000028811, + 0.0000028846, 0.0000028934, 0.0000029024, 0.0000029076, 0.0000029081, + 0.0000029042, 0.0000028983, 0.0000028917, 0.0000028865, 0.0000028861, + 0.0000028905, 0.0000028956, 0.0000028970, 0.0000028941, 0.0000028858, + 0.0000028774, 0.0000028747, 0.0000028775, 0.0000028840, 0.0000028896, + 0.0000028912, 0.0000028897, 0.0000028876, 0.0000028863, 0.0000028838, + 0.0000028811, 0.0000028792, 0.0000028766, 0.0000028751, 0.0000028750, + 0.0000028748, 0.0000028749, 0.0000028762, 0.0000028783, 0.0000028793, + 0.0000028780, 0.0000028749, 0.0000028712, 0.0000028687, 0.0000028661, + 0.0000028643, 0.0000028623, 0.0000028585, 0.0000028550, 0.0000028527, + 0.0000028524, 0.0000028538, 0.0000028561, 0.0000028576, 0.0000028595, + 0.0000028615, 0.0000028640, 0.0000028643, 0.0000028591, 0.0000028500, + 0.0000028450, 0.0000028479, 0.0000028561, 0.0000028646, 0.0000028687, + 0.0000028678, 0.0000028645, 0.0000028602, 0.0000028553, 0.0000028551, + 0.0000028599, 0.0000028636, 0.0000028652, 0.0000028660, 0.0000028649, + 0.0000028612, 0.0000028580, 0.0000028560, 0.0000028537, 0.0000028494, + 0.0000028411, 0.0000028310, 0.0000028229, 0.0000028209, 0.0000028263, + 0.0000028338, 0.0000028353, 0.0000028326, 0.0000028327, 0.0000028348, + 0.0000028364, 0.0000028381, 0.0000028413, 0.0000028451, 0.0000028484, + 0.0000028496, 0.0000028499, 0.0000028520, 0.0000028555, 0.0000028579, + 0.0000028521, 0.0000028398, 0.0000028290, 0.0000028243, 0.0000028226, + 0.0000028243, 0.0000028300, 0.0000028349, 0.0000028381, 0.0000028395, + 0.0000028393, 0.0000028380, 0.0000028374, 0.0000028406, 0.0000028498, + 0.0000028609, 0.0000028709, 0.0000028780, 0.0000028825, 0.0000028808, + 0.0000028707, 0.0000028558, 0.0000028444, 0.0000028413, 0.0000028439, + 0.0000028491, 0.0000028594, 0.0000028712, 0.0000028800, 0.0000028821, + 0.0000028770, 0.0000028690, 0.0000028672, 0.0000028719, 0.0000028802, + 0.0000028871, 0.0000028910, 0.0000028895, 0.0000028794, 0.0000028578, + 0.0000028350, 0.0000028282, 0.0000028351, 0.0000028464, 0.0000028536, + 0.0000028618, 0.0000028698, 0.0000028710, 0.0000028695, 0.0000028695, + 0.0000028660, 0.0000028591, 0.0000028669, 0.0000028864, 0.0000028835, + 0.0000028593, 0.0000028488, 0.0000028527, 0.0000028903, 0.0000029102, + 0.0000029004, 0.0000028759, 0.0000028672, 0.0000028717, 0.0000028786, + 0.0000028810, 0.0000028776, 0.0000028712, 0.0000028626, 0.0000028504, + 0.0000028415, 0.0000028363, 0.0000028315, 0.0000028257, 0.0000028193, + 0.0000028134, 0.0000028081, 0.0000028041, 0.0000027994, 0.0000027922, + 0.0000027871, 0.0000027939, 0.0000028104, 0.0000028196, 0.0000028172, + 0.0000028030, 0.0000027840, 0.0000027785, 0.0000027833, 0.0000027970, + 0.0000028122, 0.0000028218, 0.0000028285, 0.0000028349, 0.0000028400, + 0.0000028456, 0.0000028490, 0.0000028495, 0.0000028475, 0.0000028458, + 0.0000028463, 0.0000028476, 0.0000028477, 0.0000028453, 0.0000028405, + 0.0000028342, 0.0000028272, 0.0000028200, 0.0000028131, 0.0000028081, + 0.0000028068, 0.0000028089, 0.0000028139, 0.0000028186, 0.0000028198, + 0.0000028177, 0.0000028156, 0.0000028176, 0.0000028253, 0.0000028330, + 0.0000028374, 0.0000028387, 0.0000028392, 0.0000028441, 0.0000028521, + 0.0000028562, 0.0000028577, 0.0000028594, 0.0000028592, 0.0000028558, + 0.0000028511, 0.0000028466, 0.0000028441, 0.0000028443, 0.0000028458, + 0.0000028465, 0.0000028465, 0.0000028455, 0.0000028437, 0.0000028425, + 0.0000028425, 0.0000028426, 0.0000028413, 0.0000028381, 0.0000028352, + 0.0000028339, 0.0000028341, 0.0000028343, 0.0000028327, 0.0000028290, + 0.0000028252, 0.0000028234, 0.0000028230, 0.0000028203, 0.0000028147, + 0.0000028085, 0.0000028083, 0.0000028090, 0.0000028144, 0.0000028222, + 0.0000028283, 0.0000028337, 0.0000028413, 0.0000028524, 0.0000028620, + 0.0000028711, 0.0000028753, 0.0000028744, 0.0000028689, 0.0000028613, + 0.0000028549, 0.0000028490, 0.0000028432, 0.0000028386, 0.0000028385, + 0.0000028420, 0.0000028459, 0.0000028455, 0.0000028411, 0.0000028371, + 0.0000028389, 0.0000028440, 0.0000028482, 0.0000028536, 0.0000028599, + 0.0000028628, 0.0000028609, 0.0000028525, 0.0000028405, 0.0000028289, + 0.0000028201, 0.0000028152, 0.0000028124, 0.0000028038, 0.0000027919, + 0.0000027929, 0.0000028029, 0.0000028158, 0.0000028360, 0.0000028516, + 0.0000028567, 0.0000028586, 0.0000028615, 0.0000028703, 0.0000028807, + 0.0000028885, 0.0000028943, 0.0000028961, 0.0000028912, 0.0000028836, + 0.0000028725, 0.0000028634, 0.0000028626, 0.0000028702, 0.0000028794, + 0.0000028815, 0.0000028787, 0.0000028627, 0.0000028489, 0.0000028467, + 0.0000028423, 0.0000028415, 0.0000028589, 0.0000028839, 0.0000028983, + 0.0000028991, 0.0000028902, 0.0000028738, 0.0000028535, 0.0000028367, + 0.0000028260, 0.0000028291, 0.0000028313, 0.0000028286, 0.0000028247, + 0.0000028174, 0.0000028122, 0.0000028116, 0.0000028038, 0.0000027956, + 0.0000027896, 0.0000027851, 0.0000027843, 0.0000027852, 0.0000027858, + 0.0000027849, 0.0000027820, 0.0000027782, 0.0000027736, 0.0000027686, + 0.0000027649, 0.0000027632, 0.0000027631, 0.0000027668, 0.0000027739, + 0.0000027800, 0.0000027848, 0.0000027844, 0.0000027792, 0.0000027735, + 0.0000027801, 0.0000027937, 0.0000028000, 0.0000028001, 0.0000027947, + 0.0000027780, 0.0000027615, 0.0000027519, 0.0000027450, 0.0000027391, + 0.0000027364, 0.0000027391, 0.0000027459, 0.0000027514, 0.0000027566, + 0.0000027633, 0.0000027641, 0.0000027582, 0.0000027572, 0.0000027648, + 0.0000027767, 0.0000027847, 0.0000027884, 0.0000027901, 0.0000027912, + 0.0000027932, 0.0000027955, 0.0000027962, 0.0000027951, 0.0000027927, + 0.0000027901, 0.0000027867, 0.0000027828, 0.0000027785, 0.0000027740, + 0.0000027709, 0.0000027693, 0.0000027708, 0.0000027748, 0.0000027793, + 0.0000027810, 0.0000027798, 0.0000027752, 0.0000027693, 0.0000027641, + 0.0000027596, 0.0000027545, 0.0000027485, 0.0000027435, 0.0000027412, + 0.0000027389, 0.0000027357, 0.0000027314, 0.0000027252, 0.0000027169, + 0.0000027100, 0.0000027088, 0.0000027116, 0.0000027154, 0.0000027175, + 0.0000027177, 0.0000027195, 0.0000027239, 0.0000027301, 0.0000027355, + 0.0000027386, 0.0000027395, 0.0000027395, 0.0000027369, 0.0000027311, + 0.0000027229, 0.0000027167, 0.0000027155, 0.0000027191, 0.0000027214, + 0.0000027208, 0.0000027205, 0.0000027243, 0.0000027279, 0.0000027276, + 0.0000027187, 0.0000027002, 0.0000026831, 0.0000026771, 0.0000026713, + 0.0000026603, 0.0000026504, 0.0000026554, 0.0000026781, 0.0000026952, + 0.0000026954, 0.0000026942, 0.0000027079, 0.0000027356, 0.0000027531, + 0.0000027608, 0.0000027770, 0.0000028111, 0.0000028283, 0.0000028235, + 0.0000028219, 0.0000028209, 0.0000028086, 0.0000027960, 0.0000027959, + 0.0000028012, 0.0000028104, 0.0000028205, 0.0000028207, 0.0000028094, + 0.0000027941, 0.0000027847, 0.0000027824, 0.0000027730, 0.0000027636, + 0.0000027613, 0.0000027652, 0.0000027817, 0.0000027951, 0.0000028050, + 0.0000027978, 0.0000027866, 0.0000027916, 0.0000028107, 0.0000028347, + 0.0000028516, 0.0000028605, 0.0000028568, 0.0000028523, 0.0000028563, + 0.0000028566, 0.0000028460, 0.0000028358, 0.0000028242, 0.0000028118, + 0.0000028100, 0.0000028057, 0.0000027988, 0.0000027957, 0.0000027982, + 0.0000027953, 0.0000027807, 0.0000027576, 0.0000027558, 0.0000027644, + 0.0000027691, 0.0000027689, 0.0000027686, 0.0000027675, 0.0000027592, + 0.0000027473, 0.0000027378, 0.0000027326, 0.0000027314, 0.0000027321, + 0.0000027329, 0.0000027312, 0.0000027277, 0.0000027235, 0.0000027212, + 0.0000027195, 0.0000027163, 0.0000027131, 0.0000027085, 0.0000027041, + 0.0000027014, 0.0000027016, 0.0000027034, 0.0000027046, 0.0000027045, + 0.0000027033, 0.0000027031, 0.0000027055, 0.0000027103, 0.0000027148, + 0.0000027182, 0.0000027189, 0.0000027168, 0.0000027159, 0.0000027150, + 0.0000027145, 0.0000027147, 0.0000027140, 0.0000027123, 0.0000027100, + 0.0000027070, 0.0000027059, 0.0000027067, 0.0000027076, 0.0000027074, + 0.0000027069, 0.0000027067, 0.0000027053, 0.0000027052, 0.0000027058, + 0.0000027071, 0.0000027095, 0.0000027127, 0.0000027144, 0.0000027148, + 0.0000027128, 0.0000027126, 0.0000027110, 0.0000027143, 0.0000027162, + 0.0000027177, 0.0000027193, 0.0000027212, 0.0000027237, 0.0000027232, + 0.0000027216, 0.0000027195, 0.0000027166, 0.0000027133, 0.0000027130, + 0.0000027136, 0.0000027146, 0.0000027134, 0.0000027106, 0.0000027074, + 0.0000027027, 0.0000026948, 0.0000026840, 0.0000026752, 0.0000026724, + 0.0000026757, 0.0000026799, 0.0000026819, 0.0000026813, 0.0000026865, + 0.0000027040, 0.0000027299, 0.0000027643, 0.0000027954, 0.0000028125, + 0.0000028236, 0.0000028322, 0.0000028393, 0.0000028400, 0.0000028356, + 0.0000028264, 0.0000028178, 0.0000028088, 0.0000028066, 0.0000028157, + 0.0000028269, 0.0000028266, 0.0000028203, 0.0000028153, 0.0000028119, + 0.0000028057, 0.0000028056, 0.0000028158, 0.0000028289, 0.0000028372, + 0.0000028443, 0.0000028505, 0.0000028529, 0.0000028500, 0.0000028429, + 0.0000028381, 0.0000028386, 0.0000028412, 0.0000028431, 0.0000028434, + 0.0000028399, 0.0000028326, 0.0000028252, 0.0000028207, 0.0000028192, + 0.0000028231, 0.0000028308, 0.0000028352, 0.0000028352, 0.0000028320, + 0.0000028265, 0.0000028214, 0.0000028181, 0.0000028152, 0.0000028102, + 0.0000028034, 0.0000027974, 0.0000027924, 0.0000027878, 0.0000027831, + 0.0000027779, 0.0000027739, 0.0000027744, 0.0000027827, 0.0000027977, + 0.0000028136, 0.0000028246, 0.0000028316, 0.0000028402, 0.0000028505, + 0.0000028592, 0.0000028651, 0.0000028684, 0.0000028663, 0.0000028515, + 0.0000028283, 0.0000028143, 0.0000028149, 0.0000028320, 0.0000028519, + 0.0000028579, 0.0000028562, 0.0000028552, 0.0000028513, 0.0000028420, + 0.0000028313, 0.0000028269, 0.0000028262, 0.0000028210, 0.0000028086, + 0.0000027995, 0.0000027986, 0.0000028019, 0.0000028038, 0.0000028032, + 0.0000027996, 0.0000027936, 0.0000027882, 0.0000027868, 0.0000027874, + 0.0000027871, 0.0000027882, 0.0000027944, 0.0000028066, 0.0000028212, + 0.0000028332, 0.0000028423, 0.0000028502, 0.0000028571, 0.0000028629, + 0.0000028689, 0.0000028759, 0.0000028830, 0.0000028891, 0.0000028938, + 0.0000028964, 0.0000028964, 0.0000028943, 0.0000028917, 0.0000028902, + 0.0000028899, 0.0000028892, 0.0000028866, 0.0000028812, 0.0000028744, + 0.0000028689, 0.0000028659, 0.0000028636, 0.0000028616, 0.0000028611, + 0.0000028628, 0.0000028662, 0.0000028705, 0.0000028759, 0.0000028816, + 0.0000028861, 0.0000028879, 0.0000028874, 0.0000028869, 0.0000028884, + 0.0000028934, 0.0000028995, 0.0000029027, 0.0000029017, 0.0000028994, + 0.0000028973, 0.0000028932, 0.0000028877, 0.0000028859, 0.0000028878, + 0.0000028908, 0.0000028904, 0.0000028884, 0.0000028898, 0.0000028968, + 0.0000029059, 0.0000029118, 0.0000029128, 0.0000029121, 0.0000029101, + 0.0000029062, 0.0000029014, 0.0000028953, 0.0000028893, 0.0000028867, + 0.0000028893, 0.0000028977, 0.0000029069, 0.0000029114, 0.0000029109, + 0.0000029059, 0.0000028990, 0.0000028919, 0.0000028864, 0.0000028859, + 0.0000028916, 0.0000028994, 0.0000029037, 0.0000029026, 0.0000028962, + 0.0000028891, 0.0000028866, 0.0000028886, 0.0000028945, 0.0000029002, + 0.0000029027, 0.0000029019, 0.0000028993, 0.0000028968, 0.0000028947, + 0.0000028913, 0.0000028887, 0.0000028866, 0.0000028858, 0.0000028863, + 0.0000028861, 0.0000028840, 0.0000028825, 0.0000028822, 0.0000028825, + 0.0000028816, 0.0000028783, 0.0000028736, 0.0000028693, 0.0000028667, + 0.0000028643, 0.0000028618, 0.0000028575, 0.0000028522, 0.0000028482, + 0.0000028460, 0.0000028462, 0.0000028508, 0.0000028576, 0.0000028648, + 0.0000028705, 0.0000028740, 0.0000028747, 0.0000028707, 0.0000028620, + 0.0000028532, 0.0000028501, 0.0000028535, 0.0000028610, 0.0000028673, + 0.0000028689, 0.0000028665, 0.0000028624, 0.0000028573, 0.0000028527, + 0.0000028542, 0.0000028602, 0.0000028645, 0.0000028677, 0.0000028707, + 0.0000028716, 0.0000028684, 0.0000028650, 0.0000028613, 0.0000028561, + 0.0000028501, 0.0000028420, 0.0000028329, 0.0000028228, 0.0000028203, + 0.0000028253, 0.0000028313, 0.0000028317, 0.0000028317, 0.0000028362, + 0.0000028398, 0.0000028422, 0.0000028451, 0.0000028474, 0.0000028503, + 0.0000028550, 0.0000028578, 0.0000028563, 0.0000028560, 0.0000028598, + 0.0000028638, 0.0000028605, 0.0000028492, 0.0000028377, 0.0000028329, + 0.0000028330, 0.0000028374, 0.0000028423, 0.0000028427, 0.0000028417, + 0.0000028418, 0.0000028413, 0.0000028418, 0.0000028459, 0.0000028550, + 0.0000028673, 0.0000028769, 0.0000028822, 0.0000028833, 0.0000028828, + 0.0000028778, 0.0000028675, 0.0000028563, 0.0000028505, 0.0000028492, + 0.0000028496, 0.0000028554, 0.0000028665, 0.0000028771, 0.0000028823, + 0.0000028820, 0.0000028747, 0.0000028677, 0.0000028660, 0.0000028708, + 0.0000028792, 0.0000028864, 0.0000028909, 0.0000028903, 0.0000028806, + 0.0000028588, 0.0000028334, 0.0000028243, 0.0000028325, 0.0000028471, + 0.0000028545, 0.0000028618, 0.0000028695, 0.0000028719, 0.0000028708, + 0.0000028707, 0.0000028680, 0.0000028626, 0.0000028709, 0.0000028857, + 0.0000028775, 0.0000028548, 0.0000028480, 0.0000028554, 0.0000028953, + 0.0000029138, 0.0000029026, 0.0000028790, 0.0000028702, 0.0000028737, + 0.0000028785, 0.0000028813, 0.0000028792, 0.0000028708, 0.0000028586, + 0.0000028452, 0.0000028355, 0.0000028307, 0.0000028276, 0.0000028235, + 0.0000028183, 0.0000028127, 0.0000028068, 0.0000028000, 0.0000027944, + 0.0000027910, 0.0000027871, 0.0000027836, 0.0000027895, 0.0000028041, + 0.0000028121, 0.0000028103, 0.0000027958, 0.0000027778, 0.0000027727, + 0.0000027812, 0.0000027982, 0.0000028122, 0.0000028208, 0.0000028255, + 0.0000028279, 0.0000028306, 0.0000028365, 0.0000028453, 0.0000028509, + 0.0000028510, 0.0000028485, 0.0000028476, 0.0000028472, 0.0000028452, + 0.0000028409, 0.0000028350, 0.0000028292, 0.0000028249, 0.0000028222, + 0.0000028205, 0.0000028205, 0.0000028219, 0.0000028238, 0.0000028248, + 0.0000028249, 0.0000028257, 0.0000028288, 0.0000028335, 0.0000028376, + 0.0000028404, 0.0000028423, 0.0000028428, 0.0000028430, 0.0000028466, + 0.0000028515, 0.0000028541, 0.0000028561, 0.0000028580, 0.0000028575, + 0.0000028544, 0.0000028503, 0.0000028462, 0.0000028426, 0.0000028407, + 0.0000028414, 0.0000028436, 0.0000028449, 0.0000028446, 0.0000028437, + 0.0000028428, 0.0000028427, 0.0000028440, 0.0000028463, 0.0000028484, + 0.0000028490, 0.0000028479, 0.0000028461, 0.0000028449, 0.0000028432, + 0.0000028394, 0.0000028337, 0.0000028305, 0.0000028314, 0.0000028332, + 0.0000028321, 0.0000028283, 0.0000028228, 0.0000028180, 0.0000028122, + 0.0000028102, 0.0000028101, 0.0000028120, 0.0000028162, 0.0000028241, + 0.0000028371, 0.0000028532, 0.0000028684, 0.0000028773, 0.0000028807, + 0.0000028777, 0.0000028703, 0.0000028612, 0.0000028533, 0.0000028465, + 0.0000028390, 0.0000028358, 0.0000028381, 0.0000028422, 0.0000028422, + 0.0000028376, 0.0000028339, 0.0000028376, 0.0000028454, 0.0000028522, + 0.0000028595, 0.0000028672, 0.0000028696, 0.0000028661, 0.0000028547, + 0.0000028396, 0.0000028250, 0.0000028151, 0.0000028123, 0.0000028155, + 0.0000028150, 0.0000028071, 0.0000028047, 0.0000028117, 0.0000028224, + 0.0000028386, 0.0000028522, 0.0000028573, 0.0000028592, 0.0000028619, + 0.0000028696, 0.0000028785, 0.0000028857, 0.0000028913, 0.0000028937, + 0.0000028916, 0.0000028880, 0.0000028812, 0.0000028721, 0.0000028665, + 0.0000028678, 0.0000028731, 0.0000028775, 0.0000028766, 0.0000028636, + 0.0000028495, 0.0000028464, 0.0000028414, 0.0000028394, 0.0000028554, + 0.0000028819, 0.0000028980, 0.0000029003, 0.0000028958, 0.0000028831, + 0.0000028632, 0.0000028435, 0.0000028273, 0.0000028275, 0.0000028316, + 0.0000028310, 0.0000028262, 0.0000028166, 0.0000028102, 0.0000028099, + 0.0000028040, 0.0000027929, 0.0000027866, 0.0000027838, 0.0000027840, + 0.0000027875, 0.0000027901, 0.0000027912, 0.0000027882, 0.0000027836, + 0.0000027790, 0.0000027742, 0.0000027721, 0.0000027717, 0.0000027729, + 0.0000027781, 0.0000027851, 0.0000027898, 0.0000027886, 0.0000027827, + 0.0000027749, 0.0000027751, 0.0000027890, 0.0000028006, 0.0000028024, + 0.0000028021, 0.0000027963, 0.0000027789, 0.0000027638, 0.0000027536, + 0.0000027438, 0.0000027364, 0.0000027347, 0.0000027387, 0.0000027472, + 0.0000027546, 0.0000027620, 0.0000027695, 0.0000027708, 0.0000027667, + 0.0000027648, 0.0000027719, 0.0000027857, 0.0000027976, 0.0000028034, + 0.0000028063, 0.0000028093, 0.0000028125, 0.0000028151, 0.0000028155, + 0.0000028129, 0.0000028069, 0.0000027994, 0.0000027926, 0.0000027865, + 0.0000027810, 0.0000027780, 0.0000027768, 0.0000027762, 0.0000027770, + 0.0000027792, 0.0000027835, 0.0000027861, 0.0000027860, 0.0000027831, + 0.0000027767, 0.0000027696, 0.0000027640, 0.0000027596, 0.0000027539, + 0.0000027468, 0.0000027420, 0.0000027412, 0.0000027411, 0.0000027408, + 0.0000027390, 0.0000027341, 0.0000027257, 0.0000027179, 0.0000027154, + 0.0000027168, 0.0000027188, 0.0000027183, 0.0000027162, 0.0000027160, + 0.0000027189, 0.0000027245, 0.0000027298, 0.0000027334, 0.0000027369, + 0.0000027400, 0.0000027409, 0.0000027384, 0.0000027306, 0.0000027230, + 0.0000027203, 0.0000027217, 0.0000027228, 0.0000027226, 0.0000027238, + 0.0000027296, 0.0000027336, 0.0000027329, 0.0000027233, 0.0000027028, + 0.0000026832, 0.0000026741, 0.0000026652, 0.0000026533, 0.0000026484, + 0.0000026638, 0.0000026881, 0.0000026935, 0.0000026898, 0.0000026951, + 0.0000027206, 0.0000027453, 0.0000027547, 0.0000027625, 0.0000027893, + 0.0000028212, 0.0000028256, 0.0000028233, 0.0000028242, 0.0000028165, + 0.0000028038, 0.0000027977, 0.0000027996, 0.0000028074, 0.0000028191, + 0.0000028213, 0.0000028122, 0.0000027948, 0.0000027855, 0.0000027803, + 0.0000027751, 0.0000027658, 0.0000027618, 0.0000027604, 0.0000027680, + 0.0000027855, 0.0000027955, 0.0000028032, 0.0000027915, 0.0000027847, + 0.0000027921, 0.0000028088, 0.0000028304, 0.0000028477, 0.0000028577, + 0.0000028537, 0.0000028490, 0.0000028535, 0.0000028526, 0.0000028415, + 0.0000028321, 0.0000028202, 0.0000028112, 0.0000028106, 0.0000028062, + 0.0000027992, 0.0000027970, 0.0000027990, 0.0000027933, 0.0000027750, + 0.0000027545, 0.0000027551, 0.0000027639, 0.0000027656, 0.0000027661, + 0.0000027666, 0.0000027611, 0.0000027510, 0.0000027413, 0.0000027329, + 0.0000027299, 0.0000027303, 0.0000027306, 0.0000027287, 0.0000027237, + 0.0000027191, 0.0000027186, 0.0000027187, 0.0000027158, 0.0000027104, + 0.0000027053, 0.0000027014, 0.0000027002, 0.0000027001, 0.0000027010, + 0.0000027024, 0.0000027034, 0.0000027033, 0.0000027027, 0.0000027035, + 0.0000027067, 0.0000027108, 0.0000027141, 0.0000027154, 0.0000027139, + 0.0000027108, 0.0000027092, 0.0000027076, 0.0000027057, 0.0000027049, + 0.0000027036, 0.0000027021, 0.0000026999, 0.0000026978, 0.0000026985, + 0.0000027011, 0.0000027026, 0.0000027025, 0.0000027018, 0.0000027014, + 0.0000027000, 0.0000026996, 0.0000026996, 0.0000027009, 0.0000027041, + 0.0000027079, 0.0000027104, 0.0000027119, 0.0000027114, 0.0000027106, + 0.0000027097, 0.0000027131, 0.0000027145, 0.0000027147, 0.0000027147, + 0.0000027143, 0.0000027154, 0.0000027152, 0.0000027147, 0.0000027144, + 0.0000027142, 0.0000027135, 0.0000027140, 0.0000027147, 0.0000027154, + 0.0000027133, 0.0000027100, 0.0000027074, 0.0000027028, 0.0000026954, + 0.0000026865, 0.0000026777, 0.0000026710, 0.0000026697, 0.0000026728, + 0.0000026761, 0.0000026772, 0.0000026801, 0.0000026902, 0.0000027054, + 0.0000027253, 0.0000027517, 0.0000027833, 0.0000028105, 0.0000028259, + 0.0000028347, 0.0000028394, 0.0000028381, 0.0000028294, 0.0000028203, + 0.0000028113, 0.0000028053, 0.0000028099, 0.0000028217, 0.0000028248, + 0.0000028182, 0.0000028100, 0.0000028069, 0.0000028033, 0.0000028009, + 0.0000028085, 0.0000028218, 0.0000028318, 0.0000028388, 0.0000028462, + 0.0000028505, 0.0000028501, 0.0000028439, 0.0000028365, 0.0000028348, + 0.0000028384, 0.0000028433, 0.0000028465, 0.0000028453, 0.0000028390, + 0.0000028325, 0.0000028286, 0.0000028245, 0.0000028237, 0.0000028279, + 0.0000028322, 0.0000028333, 0.0000028320, 0.0000028289, 0.0000028254, + 0.0000028229, 0.0000028210, 0.0000028173, 0.0000028106, 0.0000028028, + 0.0000027982, 0.0000027966, 0.0000027940, 0.0000027895, 0.0000027844, + 0.0000027815, 0.0000027843, 0.0000027962, 0.0000028122, 0.0000028244, + 0.0000028299, 0.0000028340, 0.0000028428, 0.0000028522, 0.0000028591, + 0.0000028630, 0.0000028617, 0.0000028489, 0.0000028285, 0.0000028157, + 0.0000028166, 0.0000028350, 0.0000028566, 0.0000028635, 0.0000028618, + 0.0000028617, 0.0000028595, 0.0000028498, 0.0000028382, 0.0000028319, + 0.0000028310, 0.0000028268, 0.0000028148, 0.0000028022, 0.0000027985, + 0.0000027997, 0.0000028000, 0.0000027987, 0.0000027953, 0.0000027899, + 0.0000027848, 0.0000027838, 0.0000027856, 0.0000027877, 0.0000027887, + 0.0000027944, 0.0000028060, 0.0000028184, 0.0000028278, 0.0000028363, + 0.0000028468, 0.0000028564, 0.0000028613, 0.0000028638, 0.0000028665, + 0.0000028702, 0.0000028755, 0.0000028817, 0.0000028877, 0.0000028916, + 0.0000028925, 0.0000028912, 0.0000028895, 0.0000028886, 0.0000028879, + 0.0000028867, 0.0000028840, 0.0000028789, 0.0000028722, 0.0000028673, + 0.0000028647, 0.0000028614, 0.0000028560, 0.0000028517, 0.0000028503, + 0.0000028509, 0.0000028542, 0.0000028598, 0.0000028668, 0.0000028741, + 0.0000028797, 0.0000028823, 0.0000028833, 0.0000028853, 0.0000028906, + 0.0000028987, 0.0000029037, 0.0000029034, 0.0000029021, 0.0000029012, + 0.0000028975, 0.0000028917, 0.0000028898, 0.0000028922, 0.0000028949, + 0.0000028941, 0.0000028914, 0.0000028914, 0.0000028958, 0.0000029027, + 0.0000029076, 0.0000029082, 0.0000029072, 0.0000029058, 0.0000029038, + 0.0000029013, 0.0000028988, 0.0000028953, 0.0000028923, 0.0000028938, + 0.0000029015, 0.0000029109, 0.0000029155, 0.0000029140, 0.0000029079, + 0.0000028997, 0.0000028923, 0.0000028870, 0.0000028869, 0.0000028936, + 0.0000029033, 0.0000029102, 0.0000029109, 0.0000029057, 0.0000028990, + 0.0000028953, 0.0000028954, 0.0000028994, 0.0000029044, 0.0000029074, + 0.0000029072, 0.0000029044, 0.0000029012, 0.0000028988, 0.0000028963, + 0.0000028935, 0.0000028925, 0.0000028943, 0.0000028963, 0.0000028975, + 0.0000028970, 0.0000028951, 0.0000028931, 0.0000028915, 0.0000028900, + 0.0000028869, 0.0000028815, 0.0000028752, 0.0000028692, 0.0000028645, + 0.0000028599, 0.0000028546, 0.0000028485, 0.0000028448, 0.0000028434, + 0.0000028438, 0.0000028476, 0.0000028579, 0.0000028700, 0.0000028788, + 0.0000028823, 0.0000028821, 0.0000028778, 0.0000028692, 0.0000028595, + 0.0000028526, 0.0000028512, 0.0000028555, 0.0000028631, 0.0000028674, + 0.0000028674, 0.0000028640, 0.0000028597, 0.0000028548, 0.0000028506, + 0.0000028523, 0.0000028579, 0.0000028634, 0.0000028682, 0.0000028715, + 0.0000028728, 0.0000028710, 0.0000028705, 0.0000028670, 0.0000028597, + 0.0000028518, 0.0000028430, 0.0000028336, 0.0000028238, 0.0000028208, + 0.0000028252, 0.0000028285, 0.0000028283, 0.0000028306, 0.0000028388, + 0.0000028441, 0.0000028479, 0.0000028522, 0.0000028551, 0.0000028563, + 0.0000028597, 0.0000028633, 0.0000028618, 0.0000028596, 0.0000028615, + 0.0000028646, 0.0000028624, 0.0000028518, 0.0000028421, 0.0000028407, + 0.0000028447, 0.0000028492, 0.0000028494, 0.0000028473, 0.0000028463, + 0.0000028468, 0.0000028479, 0.0000028537, 0.0000028619, 0.0000028717, + 0.0000028802, 0.0000028839, 0.0000028840, 0.0000028813, 0.0000028780, + 0.0000028745, 0.0000028686, 0.0000028618, 0.0000028564, 0.0000028538, + 0.0000028547, 0.0000028625, 0.0000028726, 0.0000028808, 0.0000028830, + 0.0000028807, 0.0000028729, 0.0000028676, 0.0000028660, 0.0000028698, + 0.0000028783, 0.0000028861, 0.0000028908, 0.0000028907, 0.0000028826, + 0.0000028623, 0.0000028346, 0.0000028222, 0.0000028299, 0.0000028482, + 0.0000028572, 0.0000028634, 0.0000028706, 0.0000028743, 0.0000028738, + 0.0000028730, 0.0000028700, 0.0000028661, 0.0000028734, 0.0000028851, + 0.0000028718, 0.0000028512, 0.0000028475, 0.0000028569, 0.0000028971, + 0.0000029161, 0.0000029056, 0.0000028828, 0.0000028744, 0.0000028768, + 0.0000028792, 0.0000028817, 0.0000028819, 0.0000028759, 0.0000028632, + 0.0000028474, 0.0000028354, 0.0000028273, 0.0000028251, 0.0000028229, + 0.0000028166, 0.0000028098, 0.0000028042, 0.0000027988, 0.0000027921, + 0.0000027879, 0.0000027863, 0.0000027845, 0.0000027814, 0.0000027850, + 0.0000027971, 0.0000028052, 0.0000028042, 0.0000027916, 0.0000027737, + 0.0000027699, 0.0000027824, 0.0000028027, 0.0000028191, 0.0000028269, + 0.0000028276, 0.0000028272, 0.0000028285, 0.0000028329, 0.0000028422, + 0.0000028516, 0.0000028543, 0.0000028530, 0.0000028498, 0.0000028460, + 0.0000028407, 0.0000028339, 0.0000028277, 0.0000028242, 0.0000028232, + 0.0000028232, 0.0000028243, 0.0000028258, 0.0000028274, 0.0000028295, + 0.0000028329, 0.0000028370, 0.0000028409, 0.0000028434, 0.0000028446, + 0.0000028456, 0.0000028462, 0.0000028460, 0.0000028467, 0.0000028496, + 0.0000028521, 0.0000028530, 0.0000028545, 0.0000028562, 0.0000028549, + 0.0000028510, 0.0000028466, 0.0000028429, 0.0000028395, 0.0000028369, + 0.0000028363, 0.0000028378, 0.0000028399, 0.0000028406, 0.0000028405, + 0.0000028408, 0.0000028416, 0.0000028432, 0.0000028463, 0.0000028505, + 0.0000028551, 0.0000028584, 0.0000028588, 0.0000028579, 0.0000028561, + 0.0000028517, 0.0000028445, 0.0000028378, 0.0000028366, 0.0000028387, + 0.0000028404, 0.0000028402, 0.0000028389, 0.0000028371, 0.0000028341, + 0.0000028274, 0.0000028188, 0.0000028102, 0.0000028068, 0.0000028061, + 0.0000028090, 0.0000028175, 0.0000028320, 0.0000028493, 0.0000028652, + 0.0000028750, 0.0000028778, 0.0000028758, 0.0000028692, 0.0000028625, + 0.0000028544, 0.0000028431, 0.0000028372, 0.0000028384, 0.0000028418, + 0.0000028411, 0.0000028354, 0.0000028308, 0.0000028353, 0.0000028459, + 0.0000028544, 0.0000028622, 0.0000028699, 0.0000028721, 0.0000028669, + 0.0000028530, 0.0000028360, 0.0000028200, 0.0000028099, 0.0000028084, + 0.0000028155, 0.0000028237, 0.0000028219, 0.0000028164, 0.0000028179, + 0.0000028241, 0.0000028357, 0.0000028496, 0.0000028569, 0.0000028589, + 0.0000028613, 0.0000028667, 0.0000028728, 0.0000028781, 0.0000028826, + 0.0000028855, 0.0000028850, 0.0000028849, 0.0000028824, 0.0000028772, + 0.0000028716, 0.0000028684, 0.0000028695, 0.0000028746, 0.0000028749, + 0.0000028637, 0.0000028489, 0.0000028447, 0.0000028389, 0.0000028364, + 0.0000028503, 0.0000028780, 0.0000028950, 0.0000028975, 0.0000028964, + 0.0000028892, 0.0000028714, 0.0000028512, 0.0000028311, 0.0000028264, + 0.0000028304, 0.0000028333, 0.0000028288, 0.0000028164, 0.0000028085, + 0.0000028075, 0.0000028057, 0.0000027937, 0.0000027865, 0.0000027841, + 0.0000027851, 0.0000027914, 0.0000027968, 0.0000027990, 0.0000027962, + 0.0000027919, 0.0000027893, 0.0000027872, 0.0000027866, 0.0000027863, + 0.0000027881, 0.0000027914, 0.0000027940, 0.0000027934, 0.0000027869, + 0.0000027797, 0.0000027755, 0.0000027797, 0.0000027955, 0.0000028060, + 0.0000028067, 0.0000028071, 0.0000028055, 0.0000027912, 0.0000027738, + 0.0000027632, 0.0000027538, 0.0000027432, 0.0000027371, 0.0000027377, + 0.0000027448, 0.0000027533, 0.0000027597, 0.0000027665, 0.0000027729, + 0.0000027731, 0.0000027699, 0.0000027710, 0.0000027809, 0.0000027960, + 0.0000028074, 0.0000028130, 0.0000028157, 0.0000028185, 0.0000028232, + 0.0000028257, 0.0000028248, 0.0000028206, 0.0000028133, 0.0000028035, + 0.0000027937, 0.0000027853, 0.0000027792, 0.0000027765, 0.0000027755, + 0.0000027756, 0.0000027764, 0.0000027792, 0.0000027823, 0.0000027839, + 0.0000027833, 0.0000027799, 0.0000027743, 0.0000027680, 0.0000027629, + 0.0000027585, 0.0000027526, 0.0000027447, 0.0000027393, 0.0000027385, + 0.0000027397, 0.0000027418, 0.0000027430, 0.0000027414, 0.0000027358, + 0.0000027293, 0.0000027266, 0.0000027274, 0.0000027278, 0.0000027241, + 0.0000027184, 0.0000027154, 0.0000027161, 0.0000027202, 0.0000027243, + 0.0000027275, 0.0000027317, 0.0000027370, 0.0000027404, 0.0000027396, + 0.0000027356, 0.0000027298, 0.0000027268, 0.0000027260, 0.0000027259, + 0.0000027260, 0.0000027293, 0.0000027352, 0.0000027387, 0.0000027367, + 0.0000027256, 0.0000027025, 0.0000026815, 0.0000026701, 0.0000026586, + 0.0000026474, 0.0000026522, 0.0000026766, 0.0000026914, 0.0000026877, + 0.0000026875, 0.0000027070, 0.0000027363, 0.0000027508, 0.0000027558, + 0.0000027693, 0.0000028052, 0.0000028251, 0.0000028240, 0.0000028257, + 0.0000028228, 0.0000028106, 0.0000028028, 0.0000028003, 0.0000028041, + 0.0000028158, 0.0000028214, 0.0000028149, 0.0000027999, 0.0000027883, + 0.0000027823, 0.0000027756, 0.0000027689, 0.0000027641, 0.0000027604, + 0.0000027607, 0.0000027737, 0.0000027878, 0.0000027962, 0.0000027996, + 0.0000027875, 0.0000027849, 0.0000027932, 0.0000028073, 0.0000028255, + 0.0000028428, 0.0000028536, 0.0000028508, 0.0000028459, 0.0000028503, + 0.0000028483, 0.0000028371, 0.0000028283, 0.0000028163, 0.0000028115, + 0.0000028110, 0.0000028067, 0.0000027993, 0.0000027977, 0.0000027988, + 0.0000027892, 0.0000027680, 0.0000027525, 0.0000027558, 0.0000027617, + 0.0000027622, 0.0000027641, 0.0000027611, 0.0000027529, 0.0000027446, + 0.0000027352, 0.0000027287, 0.0000027281, 0.0000027292, 0.0000027276, + 0.0000027227, 0.0000027171, 0.0000027147, 0.0000027152, 0.0000027127, + 0.0000027071, 0.0000027014, 0.0000026982, 0.0000026983, 0.0000026996, + 0.0000027002, 0.0000027007, 0.0000027003, 0.0000026997, 0.0000026984, + 0.0000026975, 0.0000026979, 0.0000027003, 0.0000027031, 0.0000027052, + 0.0000027048, 0.0000027018, 0.0000026980, 0.0000026955, 0.0000026930, + 0.0000026895, 0.0000026872, 0.0000026847, 0.0000026823, 0.0000026805, + 0.0000026807, 0.0000026834, 0.0000026876, 0.0000026910, 0.0000026926, + 0.0000026938, 0.0000026949, 0.0000026948, 0.0000026957, 0.0000026967, + 0.0000026987, 0.0000027028, 0.0000027073, 0.0000027099, 0.0000027117, + 0.0000027118, 0.0000027098, 0.0000027090, 0.0000027123, 0.0000027145, + 0.0000027153, 0.0000027159, 0.0000027165, 0.0000027177, 0.0000027171, + 0.0000027161, 0.0000027146, 0.0000027115, 0.0000027087, 0.0000027091, + 0.0000027115, 0.0000027150, 0.0000027154, 0.0000027130, 0.0000027103, + 0.0000027057, 0.0000026991, 0.0000026904, 0.0000026812, 0.0000026727, + 0.0000026683, 0.0000026683, 0.0000026719, 0.0000026736, 0.0000026750, + 0.0000026810, 0.0000026940, 0.0000027090, 0.0000027209, 0.0000027375, + 0.0000027689, 0.0000028051, 0.0000028258, 0.0000028350, 0.0000028376, + 0.0000028335, 0.0000028242, 0.0000028160, 0.0000028063, 0.0000028057, + 0.0000028165, 0.0000028244, 0.0000028210, 0.0000028113, 0.0000028055, + 0.0000028034, 0.0000027992, 0.0000028010, 0.0000028117, 0.0000028243, + 0.0000028322, 0.0000028386, 0.0000028448, 0.0000028478, 0.0000028455, + 0.0000028378, 0.0000028317, 0.0000028326, 0.0000028396, 0.0000028466, + 0.0000028479, 0.0000028437, 0.0000028380, 0.0000028358, 0.0000028328, + 0.0000028279, 0.0000028260, 0.0000028269, 0.0000028284, 0.0000028299, + 0.0000028306, 0.0000028300, 0.0000028282, 0.0000028269, 0.0000028256, + 0.0000028216, 0.0000028148, 0.0000028077, 0.0000028054, 0.0000028051, + 0.0000028021, 0.0000027975, 0.0000027932, 0.0000027910, 0.0000027963, + 0.0000028093, 0.0000028223, 0.0000028296, 0.0000028324, 0.0000028376, + 0.0000028448, 0.0000028506, 0.0000028537, 0.0000028533, 0.0000028447, + 0.0000028289, 0.0000028174, 0.0000028200, 0.0000028405, 0.0000028623, + 0.0000028694, 0.0000028683, 0.0000028678, 0.0000028670, 0.0000028574, + 0.0000028448, 0.0000028386, 0.0000028372, 0.0000028332, 0.0000028212, + 0.0000028072, 0.0000027998, 0.0000027986, 0.0000027977, 0.0000027947, + 0.0000027912, 0.0000027868, 0.0000027818, 0.0000027810, 0.0000027839, + 0.0000027880, 0.0000027902, 0.0000027940, 0.0000028049, 0.0000028182, + 0.0000028277, 0.0000028345, 0.0000028437, 0.0000028555, 0.0000028633, + 0.0000028657, 0.0000028661, 0.0000028661, 0.0000028661, 0.0000028680, + 0.0000028727, 0.0000028787, 0.0000028837, 0.0000028865, 0.0000028872, + 0.0000028875, 0.0000028877, 0.0000028881, 0.0000028875, 0.0000028848, + 0.0000028793, 0.0000028725, 0.0000028681, 0.0000028663, 0.0000028630, + 0.0000028560, 0.0000028489, 0.0000028437, 0.0000028415, 0.0000028420, + 0.0000028459, 0.0000028527, 0.0000028616, 0.0000028705, 0.0000028770, + 0.0000028811, 0.0000028845, 0.0000028903, 0.0000028989, 0.0000029046, + 0.0000029049, 0.0000029050, 0.0000029054, 0.0000029019, 0.0000028963, + 0.0000028946, 0.0000028962, 0.0000028978, 0.0000028964, 0.0000028930, + 0.0000028914, 0.0000028929, 0.0000028973, 0.0000029014, 0.0000029016, + 0.0000028998, 0.0000028990, 0.0000028985, 0.0000028981, 0.0000028989, + 0.0000028988, 0.0000028972, 0.0000028976, 0.0000029038, 0.0000029131, + 0.0000029183, 0.0000029174, 0.0000029104, 0.0000029011, 0.0000028930, + 0.0000028881, 0.0000028881, 0.0000028947, 0.0000029049, 0.0000029129, + 0.0000029145, 0.0000029108, 0.0000029044, 0.0000028997, 0.0000028975, + 0.0000028982, 0.0000029022, 0.0000029051, 0.0000029055, 0.0000029029, + 0.0000028991, 0.0000028946, 0.0000028905, 0.0000028877, 0.0000028880, + 0.0000028905, 0.0000028944, 0.0000028975, 0.0000028992, 0.0000028995, + 0.0000028990, 0.0000028971, 0.0000028953, 0.0000028924, 0.0000028870, + 0.0000028795, 0.0000028713, 0.0000028631, 0.0000028564, 0.0000028505, + 0.0000028456, 0.0000028432, 0.0000028429, 0.0000028449, 0.0000028498, + 0.0000028601, 0.0000028734, 0.0000028828, 0.0000028866, 0.0000028863, + 0.0000028822, 0.0000028747, 0.0000028652, 0.0000028563, 0.0000028512, + 0.0000028513, 0.0000028557, 0.0000028622, 0.0000028651, 0.0000028644, + 0.0000028605, 0.0000028563, 0.0000028520, 0.0000028480, 0.0000028492, + 0.0000028548, 0.0000028615, 0.0000028667, 0.0000028695, 0.0000028705, + 0.0000028713, 0.0000028746, 0.0000028728, 0.0000028644, 0.0000028545, + 0.0000028436, 0.0000028326, 0.0000028244, 0.0000028229, 0.0000028258, + 0.0000028276, 0.0000028273, 0.0000028309, 0.0000028413, 0.0000028495, + 0.0000028537, 0.0000028592, 0.0000028635, 0.0000028633, 0.0000028633, + 0.0000028661, 0.0000028653, 0.0000028617, 0.0000028612, 0.0000028638, + 0.0000028611, 0.0000028506, 0.0000028440, 0.0000028465, 0.0000028532, + 0.0000028544, 0.0000028512, 0.0000028504, 0.0000028516, 0.0000028541, + 0.0000028599, 0.0000028693, 0.0000028766, 0.0000028817, 0.0000028836, + 0.0000028827, 0.0000028798, 0.0000028768, 0.0000028746, 0.0000028742, + 0.0000028717, 0.0000028666, 0.0000028605, 0.0000028588, 0.0000028615, + 0.0000028689, 0.0000028770, 0.0000028825, 0.0000028832, 0.0000028794, + 0.0000028722, 0.0000028686, 0.0000028671, 0.0000028693, 0.0000028769, + 0.0000028856, 0.0000028902, 0.0000028902, 0.0000028835, 0.0000028668, + 0.0000028389, 0.0000028223, 0.0000028272, 0.0000028484, 0.0000028605, + 0.0000028662, 0.0000028727, 0.0000028773, 0.0000028778, 0.0000028762, + 0.0000028723, 0.0000028693, 0.0000028747, 0.0000028843, 0.0000028681, + 0.0000028481, 0.0000028466, 0.0000028565, 0.0000028962, 0.0000029168, + 0.0000029090, 0.0000028881, 0.0000028793, 0.0000028809, 0.0000028816, + 0.0000028831, 0.0000028843, 0.0000028823, 0.0000028737, 0.0000028603, + 0.0000028448, 0.0000028308, 0.0000028253, 0.0000028241, 0.0000028188, + 0.0000028100, 0.0000028022, 0.0000027963, 0.0000027908, 0.0000027860, + 0.0000027827, 0.0000027829, 0.0000027825, 0.0000027783, 0.0000027793, + 0.0000027900, 0.0000027988, 0.0000027991, 0.0000027882, 0.0000027704, + 0.0000027681, 0.0000027852, 0.0000028088, 0.0000028251, 0.0000028284, + 0.0000028268, 0.0000028268, 0.0000028301, 0.0000028337, 0.0000028400, + 0.0000028491, 0.0000028550, 0.0000028554, 0.0000028510, 0.0000028441, + 0.0000028363, 0.0000028294, 0.0000028251, 0.0000028240, 0.0000028243, + 0.0000028263, 0.0000028291, 0.0000028321, 0.0000028353, 0.0000028388, + 0.0000028423, 0.0000028450, 0.0000028468, 0.0000028480, 0.0000028484, + 0.0000028480, 0.0000028481, 0.0000028499, 0.0000028524, 0.0000028535, + 0.0000028533, 0.0000028530, 0.0000028526, 0.0000028508, 0.0000028464, + 0.0000028410, 0.0000028367, 0.0000028331, 0.0000028296, 0.0000028275, + 0.0000028282, 0.0000028313, 0.0000028345, 0.0000028370, 0.0000028393, + 0.0000028412, 0.0000028434, 0.0000028466, 0.0000028505, 0.0000028551, + 0.0000028592, 0.0000028619, 0.0000028634, 0.0000028636, 0.0000028625, + 0.0000028570, 0.0000028482, 0.0000028421, 0.0000028423, 0.0000028454, + 0.0000028476, 0.0000028477, 0.0000028464, 0.0000028457, 0.0000028449, + 0.0000028406, 0.0000028314, 0.0000028204, 0.0000028130, 0.0000028096, + 0.0000028087, 0.0000028126, 0.0000028180, 0.0000028285, 0.0000028431, + 0.0000028577, 0.0000028680, 0.0000028726, 0.0000028724, 0.0000028698, + 0.0000028627, 0.0000028501, 0.0000028423, 0.0000028424, 0.0000028434, + 0.0000028416, 0.0000028350, 0.0000028292, 0.0000028334, 0.0000028458, + 0.0000028562, 0.0000028638, 0.0000028700, 0.0000028718, 0.0000028668, + 0.0000028516, 0.0000028332, 0.0000028175, 0.0000028076, 0.0000028074, + 0.0000028145, 0.0000028258, 0.0000028304, 0.0000028246, 0.0000028198, + 0.0000028210, 0.0000028288, 0.0000028441, 0.0000028554, 0.0000028573, + 0.0000028587, 0.0000028621, 0.0000028658, 0.0000028694, 0.0000028723, + 0.0000028744, 0.0000028747, 0.0000028765, 0.0000028774, 0.0000028755, + 0.0000028723, 0.0000028698, 0.0000028686, 0.0000028730, 0.0000028733, + 0.0000028626, 0.0000028468, 0.0000028417, 0.0000028355, 0.0000028330, + 0.0000028439, 0.0000028723, 0.0000028909, 0.0000028933, 0.0000028935, + 0.0000028904, 0.0000028774, 0.0000028578, 0.0000028366, 0.0000028262, + 0.0000028294, 0.0000028349, 0.0000028310, 0.0000028177, 0.0000028075, + 0.0000028037, 0.0000028065, 0.0000027960, 0.0000027885, 0.0000027867, + 0.0000027879, 0.0000027935, 0.0000027982, 0.0000028001, 0.0000027977, + 0.0000027937, 0.0000027924, 0.0000027924, 0.0000027923, 0.0000027918, + 0.0000027936, 0.0000027969, 0.0000027979, 0.0000027949, 0.0000027878, + 0.0000027816, 0.0000027804, 0.0000027830, 0.0000027952, 0.0000028089, + 0.0000028154, 0.0000028165, 0.0000028161, 0.0000028115, 0.0000027985, + 0.0000027829, 0.0000027723, 0.0000027651, 0.0000027562, 0.0000027485, + 0.0000027464, 0.0000027499, 0.0000027567, 0.0000027620, 0.0000027659, + 0.0000027705, 0.0000027732, 0.0000027743, 0.0000027765, 0.0000027844, + 0.0000027967, 0.0000028077, 0.0000028137, 0.0000028162, 0.0000028186, + 0.0000028216, 0.0000028228, 0.0000028214, 0.0000028164, 0.0000028085, + 0.0000027993, 0.0000027900, 0.0000027810, 0.0000027736, 0.0000027685, + 0.0000027661, 0.0000027657, 0.0000027659, 0.0000027667, 0.0000027690, + 0.0000027707, 0.0000027704, 0.0000027681, 0.0000027643, 0.0000027601, + 0.0000027567, 0.0000027536, 0.0000027488, 0.0000027417, 0.0000027358, + 0.0000027341, 0.0000027359, 0.0000027401, 0.0000027435, 0.0000027437, + 0.0000027413, 0.0000027372, 0.0000027358, 0.0000027373, 0.0000027373, + 0.0000027321, 0.0000027233, 0.0000027164, 0.0000027154, 0.0000027179, + 0.0000027207, 0.0000027232, 0.0000027270, 0.0000027328, 0.0000027372, + 0.0000027381, 0.0000027375, 0.0000027349, 0.0000027328, 0.0000027308, + 0.0000027297, 0.0000027307, 0.0000027355, 0.0000027407, 0.0000027432, + 0.0000027386, 0.0000027248, 0.0000026995, 0.0000026786, 0.0000026647, + 0.0000026516, 0.0000026459, 0.0000026640, 0.0000026860, 0.0000026866, + 0.0000026829, 0.0000026968, 0.0000027276, 0.0000027471, 0.0000027535, + 0.0000027586, 0.0000027846, 0.0000028179, 0.0000028240, 0.0000028251, + 0.0000028270, 0.0000028180, 0.0000028078, 0.0000028031, 0.0000028029, + 0.0000028112, 0.0000028182, 0.0000028151, 0.0000028052, 0.0000027948, + 0.0000027869, 0.0000027785, 0.0000027708, 0.0000027672, 0.0000027627, + 0.0000027595, 0.0000027647, 0.0000027797, 0.0000027888, 0.0000027965, + 0.0000027963, 0.0000027858, 0.0000027862, 0.0000027947, 0.0000028059, + 0.0000028202, 0.0000028368, 0.0000028489, 0.0000028483, 0.0000028430, + 0.0000028466, 0.0000028439, 0.0000028329, 0.0000028245, 0.0000028134, + 0.0000028120, 0.0000028115, 0.0000028069, 0.0000027989, 0.0000027980, + 0.0000027971, 0.0000027830, 0.0000027611, 0.0000027521, 0.0000027572, + 0.0000027587, 0.0000027606, 0.0000027604, 0.0000027536, 0.0000027464, + 0.0000027378, 0.0000027287, 0.0000027260, 0.0000027269, 0.0000027271, + 0.0000027233, 0.0000027181, 0.0000027147, 0.0000027128, 0.0000027088, + 0.0000027026, 0.0000026970, 0.0000026945, 0.0000026953, 0.0000026970, + 0.0000026974, 0.0000026964, 0.0000026951, 0.0000026928, 0.0000026905, + 0.0000026889, 0.0000026884, 0.0000026887, 0.0000026908, 0.0000026929, + 0.0000026930, 0.0000026897, 0.0000026845, 0.0000026795, 0.0000026758, + 0.0000026724, 0.0000026683, 0.0000026647, 0.0000026607, 0.0000026567, + 0.0000026552, 0.0000026566, 0.0000026603, 0.0000026647, 0.0000026686, + 0.0000026718, 0.0000026741, 0.0000026762, 0.0000026774, 0.0000026793, + 0.0000026811, 0.0000026846, 0.0000026911, 0.0000026977, 0.0000027031, + 0.0000027069, 0.0000027091, 0.0000027081, 0.0000027087, 0.0000027125, + 0.0000027152, 0.0000027174, 0.0000027172, 0.0000027184, 0.0000027210, + 0.0000027225, 0.0000027232, 0.0000027235, 0.0000027210, 0.0000027166, + 0.0000027129, 0.0000027103, 0.0000027106, 0.0000027109, 0.0000027109, + 0.0000027109, 0.0000027094, 0.0000027048, 0.0000026982, 0.0000026911, + 0.0000026819, 0.0000026725, 0.0000026680, 0.0000026678, 0.0000026699, + 0.0000026723, 0.0000026760, 0.0000026837, 0.0000026970, 0.0000027107, + 0.0000027164, 0.0000027255, 0.0000027543, 0.0000027936, 0.0000028215, + 0.0000028324, 0.0000028347, 0.0000028297, 0.0000028214, 0.0000028110, + 0.0000028026, 0.0000028079, 0.0000028222, 0.0000028248, 0.0000028179, + 0.0000028090, 0.0000028060, 0.0000028033, 0.0000027995, 0.0000028029, + 0.0000028134, 0.0000028244, 0.0000028314, 0.0000028359, 0.0000028407, + 0.0000028432, 0.0000028399, 0.0000028316, 0.0000028269, 0.0000028315, + 0.0000028415, 0.0000028481, 0.0000028467, 0.0000028410, 0.0000028383, + 0.0000028378, 0.0000028352, 0.0000028299, 0.0000028258, 0.0000028249, + 0.0000028262, 0.0000028295, 0.0000028328, 0.0000028338, 0.0000028328, + 0.0000028323, 0.0000028307, 0.0000028264, 0.0000028200, 0.0000028145, + 0.0000028129, 0.0000028120, 0.0000028086, 0.0000028039, 0.0000027994, + 0.0000027985, 0.0000028052, 0.0000028160, 0.0000028250, 0.0000028301, + 0.0000028336, 0.0000028381, 0.0000028416, 0.0000028450, 0.0000028460, + 0.0000028414, 0.0000028284, 0.0000028191, 0.0000028249, 0.0000028487, + 0.0000028696, 0.0000028749, 0.0000028746, 0.0000028750, 0.0000028738, + 0.0000028648, 0.0000028512, 0.0000028451, 0.0000028444, 0.0000028404, + 0.0000028286, 0.0000028134, 0.0000028034, 0.0000027992, 0.0000027966, + 0.0000027928, 0.0000027883, 0.0000027840, 0.0000027793, 0.0000027787, + 0.0000027828, 0.0000027879, 0.0000027911, 0.0000027949, 0.0000028031, + 0.0000028151, 0.0000028258, 0.0000028342, 0.0000028428, 0.0000028530, + 0.0000028623, 0.0000028674, 0.0000028688, 0.0000028684, 0.0000028661, + 0.0000028623, 0.0000028602, 0.0000028617, 0.0000028673, 0.0000028740, + 0.0000028796, 0.0000028836, 0.0000028856, 0.0000028870, 0.0000028890, + 0.0000028900, 0.0000028883, 0.0000028825, 0.0000028755, 0.0000028715, + 0.0000028704, 0.0000028676, 0.0000028606, 0.0000028518, 0.0000028442, + 0.0000028388, 0.0000028368, 0.0000028383, 0.0000028436, 0.0000028515, + 0.0000028618, 0.0000028721, 0.0000028799, 0.0000028860, 0.0000028929, + 0.0000029006, 0.0000029056, 0.0000029073, 0.0000029091, 0.0000029097, + 0.0000029057, 0.0000029002, 0.0000028987, 0.0000028991, 0.0000028990, + 0.0000028966, 0.0000028929, 0.0000028895, 0.0000028878, 0.0000028895, + 0.0000028931, 0.0000028939, 0.0000028924, 0.0000028915, 0.0000028916, + 0.0000028917, 0.0000028939, 0.0000028974, 0.0000028985, 0.0000028995, + 0.0000029040, 0.0000029124, 0.0000029189, 0.0000029196, 0.0000029134, + 0.0000029030, 0.0000028939, 0.0000028886, 0.0000028885, 0.0000028943, + 0.0000029037, 0.0000029121, 0.0000029148, 0.0000029123, 0.0000029064, + 0.0000029017, 0.0000028986, 0.0000028970, 0.0000028978, 0.0000028994, + 0.0000028992, 0.0000028964, 0.0000028925, 0.0000028867, 0.0000028794, + 0.0000028742, 0.0000028739, 0.0000028774, 0.0000028836, 0.0000028889, + 0.0000028924, 0.0000028945, 0.0000028955, 0.0000028962, 0.0000028953, + 0.0000028925, 0.0000028876, 0.0000028803, 0.0000028718, 0.0000028632, + 0.0000028558, 0.0000028503, 0.0000028459, 0.0000028446, 0.0000028462, + 0.0000028501, 0.0000028556, 0.0000028636, 0.0000028734, 0.0000028811, + 0.0000028859, 0.0000028871, 0.0000028845, 0.0000028777, 0.0000028687, + 0.0000028590, 0.0000028510, 0.0000028467, 0.0000028458, 0.0000028492, + 0.0000028540, 0.0000028567, 0.0000028569, 0.0000028543, 0.0000028514, + 0.0000028484, 0.0000028453, 0.0000028465, 0.0000028524, 0.0000028595, + 0.0000028641, 0.0000028661, 0.0000028682, 0.0000028721, 0.0000028778, + 0.0000028788, 0.0000028709, 0.0000028579, 0.0000028440, 0.0000028318, + 0.0000028251, 0.0000028251, 0.0000028280, 0.0000028296, 0.0000028294, + 0.0000028327, 0.0000028444, 0.0000028554, 0.0000028601, 0.0000028658, + 0.0000028719, 0.0000028712, 0.0000028674, 0.0000028676, 0.0000028670, + 0.0000028623, 0.0000028595, 0.0000028616, 0.0000028592, 0.0000028492, + 0.0000028449, 0.0000028503, 0.0000028566, 0.0000028554, 0.0000028517, + 0.0000028528, 0.0000028559, 0.0000028626, 0.0000028728, 0.0000028813, + 0.0000028850, 0.0000028852, 0.0000028825, 0.0000028782, 0.0000028757, + 0.0000028750, 0.0000028740, 0.0000028746, 0.0000028738, 0.0000028705, + 0.0000028664, 0.0000028651, 0.0000028669, 0.0000028740, 0.0000028800, + 0.0000028829, 0.0000028834, 0.0000028787, 0.0000028726, 0.0000028704, + 0.0000028683, 0.0000028687, 0.0000028743, 0.0000028833, 0.0000028882, + 0.0000028880, 0.0000028829, 0.0000028702, 0.0000028459, 0.0000028255, + 0.0000028258, 0.0000028471, 0.0000028634, 0.0000028698, 0.0000028755, + 0.0000028801, 0.0000028815, 0.0000028799, 0.0000028751, 0.0000028721, + 0.0000028753, 0.0000028826, 0.0000028664, 0.0000028459, 0.0000028454, + 0.0000028548, 0.0000028931, 0.0000029161, 0.0000029123, 0.0000028941, + 0.0000028844, 0.0000028850, 0.0000028853, 0.0000028861, 0.0000028881, + 0.0000028879, 0.0000028824, 0.0000028735, 0.0000028622, 0.0000028459, + 0.0000028305, 0.0000028252, 0.0000028221, 0.0000028139, 0.0000028048, + 0.0000027972, 0.0000027902, 0.0000027843, 0.0000027794, 0.0000027787, + 0.0000027807, 0.0000027792, 0.0000027733, 0.0000027732, 0.0000027829, + 0.0000027931, 0.0000027942, 0.0000027837, 0.0000027675, 0.0000027679, + 0.0000027879, 0.0000028133, 0.0000028271, 0.0000028273, 0.0000028247, + 0.0000028265, 0.0000028311, 0.0000028338, 0.0000028368, 0.0000028432, + 0.0000028501, 0.0000028521, 0.0000028498, 0.0000028444, 0.0000028382, + 0.0000028340, 0.0000028325, 0.0000028324, 0.0000028328, 0.0000028335, + 0.0000028343, 0.0000028358, 0.0000028384, 0.0000028423, 0.0000028460, + 0.0000028477, 0.0000028478, 0.0000028477, 0.0000028479, 0.0000028497, + 0.0000028526, 0.0000028544, 0.0000028544, 0.0000028530, 0.0000028503, + 0.0000028476, 0.0000028448, 0.0000028404, 0.0000028343, 0.0000028281, + 0.0000028228, 0.0000028185, 0.0000028166, 0.0000028180, 0.0000028229, + 0.0000028292, 0.0000028349, 0.0000028392, 0.0000028426, 0.0000028453, + 0.0000028474, 0.0000028495, 0.0000028523, 0.0000028558, 0.0000028586, + 0.0000028601, 0.0000028611, 0.0000028622, 0.0000028616, 0.0000028564, + 0.0000028497, 0.0000028467, 0.0000028484, 0.0000028519, 0.0000028546, + 0.0000028550, 0.0000028530, 0.0000028507, 0.0000028485, 0.0000028438, + 0.0000028357, 0.0000028267, 0.0000028207, 0.0000028188, 0.0000028187, + 0.0000028195, 0.0000028184, 0.0000028214, 0.0000028281, 0.0000028391, + 0.0000028513, 0.0000028627, 0.0000028699, 0.0000028719, 0.0000028684, + 0.0000028584, 0.0000028494, 0.0000028461, 0.0000028447, 0.0000028423, + 0.0000028359, 0.0000028287, 0.0000028315, 0.0000028452, 0.0000028576, + 0.0000028648, 0.0000028697, 0.0000028716, 0.0000028682, 0.0000028540, + 0.0000028345, 0.0000028173, 0.0000028079, 0.0000028092, 0.0000028154, + 0.0000028239, 0.0000028320, 0.0000028284, 0.0000028179, 0.0000028147, + 0.0000028203, 0.0000028373, 0.0000028519, 0.0000028545, 0.0000028542, + 0.0000028552, 0.0000028576, 0.0000028603, 0.0000028622, 0.0000028632, + 0.0000028644, 0.0000028673, 0.0000028697, 0.0000028687, 0.0000028674, + 0.0000028677, 0.0000028683, 0.0000028720, 0.0000028722, 0.0000028606, + 0.0000028440, 0.0000028374, 0.0000028314, 0.0000028289, 0.0000028362, + 0.0000028631, 0.0000028849, 0.0000028877, 0.0000028879, 0.0000028871, + 0.0000028793, 0.0000028628, 0.0000028419, 0.0000028252, 0.0000028275, + 0.0000028355, 0.0000028323, 0.0000028203, 0.0000028080, 0.0000027999, + 0.0000028062, 0.0000027989, 0.0000027916, 0.0000027909, 0.0000027916, + 0.0000027938, 0.0000027963, 0.0000027962, 0.0000027946, 0.0000027920, + 0.0000027900, 0.0000027897, 0.0000027891, 0.0000027886, 0.0000027904, + 0.0000027950, 0.0000027978, 0.0000027976, 0.0000027944, 0.0000027914, + 0.0000027897, 0.0000027899, 0.0000027929, 0.0000028035, 0.0000028154, + 0.0000028234, 0.0000028247, 0.0000028224, 0.0000028192, 0.0000028137, + 0.0000028049, 0.0000027941, 0.0000027834, 0.0000027747, 0.0000027690, + 0.0000027654, 0.0000027638, 0.0000027648, 0.0000027668, 0.0000027672, + 0.0000027671, 0.0000027691, 0.0000027741, 0.0000027789, 0.0000027827, + 0.0000027875, 0.0000027940, 0.0000028003, 0.0000028051, 0.0000028084, + 0.0000028102, 0.0000028104, 0.0000028085, 0.0000028047, 0.0000027992, + 0.0000027918, 0.0000027836, 0.0000027756, 0.0000027684, 0.0000027617, + 0.0000027575, 0.0000027551, 0.0000027527, 0.0000027512, 0.0000027518, + 0.0000027530, 0.0000027527, 0.0000027508, 0.0000027481, 0.0000027456, + 0.0000027438, 0.0000027421, 0.0000027393, 0.0000027345, 0.0000027296, + 0.0000027279, 0.0000027302, 0.0000027363, 0.0000027416, 0.0000027425, + 0.0000027397, 0.0000027363, 0.0000027362, 0.0000027390, 0.0000027399, + 0.0000027351, 0.0000027252, 0.0000027169, 0.0000027156, 0.0000027174, + 0.0000027197, 0.0000027211, 0.0000027237, 0.0000027280, 0.0000027325, + 0.0000027362, 0.0000027381, 0.0000027381, 0.0000027367, 0.0000027340, + 0.0000027330, 0.0000027356, 0.0000027410, 0.0000027453, 0.0000027457, + 0.0000027389, 0.0000027216, 0.0000026953, 0.0000026744, 0.0000026580, + 0.0000026465, 0.0000026520, 0.0000026767, 0.0000026850, 0.0000026789, + 0.0000026877, 0.0000027197, 0.0000027452, 0.0000027532, 0.0000027555, + 0.0000027673, 0.0000028042, 0.0000028230, 0.0000028239, 0.0000028271, + 0.0000028244, 0.0000028137, 0.0000028066, 0.0000028030, 0.0000028064, + 0.0000028135, 0.0000028136, 0.0000028074, 0.0000028008, 0.0000027931, + 0.0000027841, 0.0000027740, 0.0000027686, 0.0000027658, 0.0000027598, + 0.0000027604, 0.0000027698, 0.0000027826, 0.0000027898, 0.0000027966, + 0.0000027932, 0.0000027866, 0.0000027883, 0.0000027960, 0.0000028037, + 0.0000028147, 0.0000028302, 0.0000028448, 0.0000028460, 0.0000028406, + 0.0000028425, 0.0000028394, 0.0000028288, 0.0000028203, 0.0000028113, + 0.0000028127, 0.0000028120, 0.0000028063, 0.0000027978, 0.0000027976, + 0.0000027927, 0.0000027749, 0.0000027556, 0.0000027531, 0.0000027574, + 0.0000027567, 0.0000027595, 0.0000027544, 0.0000027475, 0.0000027400, + 0.0000027297, 0.0000027239, 0.0000027238, 0.0000027252, 0.0000027241, + 0.0000027204, 0.0000027179, 0.0000027147, 0.0000027081, 0.0000026983, + 0.0000026917, 0.0000026892, 0.0000026895, 0.0000026912, 0.0000026916, + 0.0000026906, 0.0000026890, 0.0000026873, 0.0000026853, 0.0000026840, + 0.0000026829, 0.0000026815, 0.0000026792, 0.0000026774, 0.0000026760, + 0.0000026729, 0.0000026689, 0.0000026653, 0.0000026618, 0.0000026587, + 0.0000026560, 0.0000026525, 0.0000026480, 0.0000026428, 0.0000026373, + 0.0000026354, 0.0000026376, 0.0000026415, 0.0000026449, 0.0000026480, + 0.0000026508, 0.0000026530, 0.0000026550, 0.0000026560, 0.0000026575, + 0.0000026589, 0.0000026623, 0.0000026693, 0.0000026765, 0.0000026832, + 0.0000026877, 0.0000026902, 0.0000026893, 0.0000026911, 0.0000026961, + 0.0000027010, 0.0000027062, 0.0000027087, 0.0000027128, 0.0000027182, + 0.0000027228, 0.0000027248, 0.0000027265, 0.0000027253, 0.0000027227, + 0.0000027198, 0.0000027180, 0.0000027166, 0.0000027141, 0.0000027111, + 0.0000027077, 0.0000027060, 0.0000027046, 0.0000027025, 0.0000026998, + 0.0000026953, 0.0000026876, 0.0000026783, 0.0000026709, 0.0000026671, + 0.0000026682, 0.0000026726, 0.0000026780, 0.0000026854, 0.0000026986, + 0.0000027103, 0.0000027131, 0.0000027177, 0.0000027399, 0.0000027764, + 0.0000028093, 0.0000028270, 0.0000028313, 0.0000028284, 0.0000028187, + 0.0000028048, 0.0000027997, 0.0000028108, 0.0000028248, 0.0000028262, + 0.0000028191, 0.0000028121, 0.0000028111, 0.0000028083, 0.0000028041, + 0.0000028060, 0.0000028139, 0.0000028232, 0.0000028291, 0.0000028322, + 0.0000028357, 0.0000028375, 0.0000028340, 0.0000028266, 0.0000028245, + 0.0000028314, 0.0000028427, 0.0000028472, 0.0000028438, 0.0000028385, + 0.0000028371, 0.0000028371, 0.0000028355, 0.0000028312, 0.0000028267, + 0.0000028248, 0.0000028260, 0.0000028301, 0.0000028351, 0.0000028372, + 0.0000028370, 0.0000028358, 0.0000028336, 0.0000028294, 0.0000028243, + 0.0000028200, 0.0000028177, 0.0000028157, 0.0000028122, 0.0000028077, + 0.0000028035, 0.0000028039, 0.0000028097, 0.0000028170, 0.0000028233, + 0.0000028282, 0.0000028306, 0.0000028338, 0.0000028382, 0.0000028422, + 0.0000028401, 0.0000028306, 0.0000028228, 0.0000028314, 0.0000028572, + 0.0000028762, 0.0000028798, 0.0000028805, 0.0000028829, 0.0000028805, + 0.0000028705, 0.0000028582, 0.0000028521, 0.0000028516, 0.0000028479, + 0.0000028370, 0.0000028218, 0.0000028090, 0.0000028020, 0.0000027974, + 0.0000027928, 0.0000027874, 0.0000027812, 0.0000027773, 0.0000027773, + 0.0000027826, 0.0000027886, 0.0000027919, 0.0000027953, 0.0000028023, + 0.0000028116, 0.0000028209, 0.0000028297, 0.0000028399, 0.0000028501, + 0.0000028586, 0.0000028651, 0.0000028692, 0.0000028707, 0.0000028701, + 0.0000028669, 0.0000028604, 0.0000028538, 0.0000028522, 0.0000028568, + 0.0000028649, 0.0000028735, 0.0000028800, 0.0000028839, 0.0000028865, + 0.0000028895, 0.0000028916, 0.0000028902, 0.0000028847, 0.0000028778, + 0.0000028737, 0.0000028723, 0.0000028706, 0.0000028662, 0.0000028594, + 0.0000028512, 0.0000028427, 0.0000028378, 0.0000028380, 0.0000028411, + 0.0000028466, 0.0000028563, 0.0000028687, 0.0000028801, 0.0000028895, + 0.0000028976, 0.0000029035, 0.0000029070, 0.0000029101, 0.0000029130, + 0.0000029125, 0.0000029075, 0.0000029028, 0.0000029015, 0.0000029009, + 0.0000028984, 0.0000028943, 0.0000028902, 0.0000028861, 0.0000028822, + 0.0000028813, 0.0000028833, 0.0000028856, 0.0000028858, 0.0000028860, + 0.0000028853, 0.0000028839, 0.0000028846, 0.0000028884, 0.0000028932, + 0.0000028975, 0.0000029020, 0.0000029089, 0.0000029164, 0.0000029188, + 0.0000029152, 0.0000029056, 0.0000028958, 0.0000028890, 0.0000028877, + 0.0000028921, 0.0000029008, 0.0000029094, 0.0000029133, 0.0000029118, + 0.0000029068, 0.0000029025, 0.0000028998, 0.0000028974, 0.0000028956, + 0.0000028945, 0.0000028921, 0.0000028882, 0.0000028845, 0.0000028797, + 0.0000028711, 0.0000028620, 0.0000028596, 0.0000028631, 0.0000028720, + 0.0000028804, 0.0000028855, 0.0000028888, 0.0000028916, 0.0000028941, + 0.0000028961, 0.0000028953, 0.0000028914, 0.0000028851, 0.0000028773, + 0.0000028691, 0.0000028615, 0.0000028558, 0.0000028521, 0.0000028501, + 0.0000028514, 0.0000028554, 0.0000028601, 0.0000028649, 0.0000028703, + 0.0000028763, 0.0000028821, 0.0000028846, 0.0000028829, 0.0000028751, + 0.0000028648, 0.0000028539, 0.0000028427, 0.0000028338, 0.0000028285, + 0.0000028266, 0.0000028286, 0.0000028333, 0.0000028385, 0.0000028418, + 0.0000028428, 0.0000028440, 0.0000028448, 0.0000028440, 0.0000028450, + 0.0000028505, 0.0000028576, 0.0000028620, 0.0000028643, 0.0000028678, + 0.0000028737, 0.0000028809, 0.0000028843, 0.0000028776, 0.0000028626, + 0.0000028459, 0.0000028332, 0.0000028280, 0.0000028284, 0.0000028318, + 0.0000028338, 0.0000028340, 0.0000028365, 0.0000028477, 0.0000028602, + 0.0000028664, 0.0000028718, 0.0000028794, 0.0000028796, 0.0000028729, + 0.0000028693, 0.0000028679, 0.0000028626, 0.0000028582, 0.0000028592, + 0.0000028580, 0.0000028493, 0.0000028459, 0.0000028518, 0.0000028576, + 0.0000028559, 0.0000028528, 0.0000028549, 0.0000028593, 0.0000028702, + 0.0000028822, 0.0000028882, 0.0000028887, 0.0000028857, 0.0000028804, + 0.0000028757, 0.0000028750, 0.0000028750, 0.0000028736, 0.0000028742, + 0.0000028764, 0.0000028766, 0.0000028735, 0.0000028694, 0.0000028698, + 0.0000028774, 0.0000028817, 0.0000028838, 0.0000028837, 0.0000028786, + 0.0000028737, 0.0000028722, 0.0000028689, 0.0000028674, 0.0000028707, + 0.0000028790, 0.0000028839, 0.0000028836, 0.0000028793, 0.0000028706, + 0.0000028535, 0.0000028323, 0.0000028272, 0.0000028451, 0.0000028648, + 0.0000028731, 0.0000028785, 0.0000028826, 0.0000028845, 0.0000028836, + 0.0000028788, 0.0000028744, 0.0000028756, 0.0000028810, 0.0000028660, + 0.0000028446, 0.0000028439, 0.0000028525, 0.0000028880, 0.0000029145, + 0.0000029147, 0.0000029002, 0.0000028894, 0.0000028884, 0.0000028891, + 0.0000028897, 0.0000028920, 0.0000028931, 0.0000028896, 0.0000028825, + 0.0000028743, 0.0000028637, 0.0000028465, 0.0000028294, 0.0000028236, + 0.0000028182, 0.0000028094, 0.0000028012, 0.0000027924, 0.0000027851, + 0.0000027774, 0.0000027742, 0.0000027756, 0.0000027767, 0.0000027742, + 0.0000027683, 0.0000027671, 0.0000027765, 0.0000027864, 0.0000027879, + 0.0000027793, 0.0000027647, 0.0000027669, 0.0000027897, 0.0000028157, + 0.0000028251, 0.0000028233, 0.0000028221, 0.0000028253, 0.0000028305, + 0.0000028331, 0.0000028340, 0.0000028357, 0.0000028388, 0.0000028419, + 0.0000028432, 0.0000028412, 0.0000028382, 0.0000028364, 0.0000028351, + 0.0000028337, 0.0000028329, 0.0000028334, 0.0000028359, 0.0000028397, + 0.0000028433, 0.0000028453, 0.0000028455, 0.0000028453, 0.0000028462, + 0.0000028487, 0.0000028517, 0.0000028541, 0.0000028545, 0.0000028526, + 0.0000028492, 0.0000028457, 0.0000028421, 0.0000028379, 0.0000028326, + 0.0000028258, 0.0000028179, 0.0000028110, 0.0000028076, 0.0000028088, + 0.0000028137, 0.0000028203, 0.0000028281, 0.0000028352, 0.0000028408, + 0.0000028446, 0.0000028471, 0.0000028483, 0.0000028486, 0.0000028490, + 0.0000028503, 0.0000028519, 0.0000028526, 0.0000028526, 0.0000028530, + 0.0000028537, 0.0000028532, 0.0000028503, 0.0000028481, 0.0000028493, + 0.0000028525, 0.0000028558, 0.0000028585, 0.0000028592, 0.0000028572, + 0.0000028537, 0.0000028491, 0.0000028424, 0.0000028341, 0.0000028264, + 0.0000028228, 0.0000028233, 0.0000028271, 0.0000028300, 0.0000028282, + 0.0000028254, 0.0000028254, 0.0000028280, 0.0000028377, 0.0000028525, + 0.0000028652, 0.0000028711, 0.0000028708, 0.0000028656, 0.0000028563, + 0.0000028485, 0.0000028441, 0.0000028419, 0.0000028373, 0.0000028294, + 0.0000028298, 0.0000028435, 0.0000028577, 0.0000028646, 0.0000028685, + 0.0000028706, 0.0000028691, 0.0000028575, 0.0000028391, 0.0000028209, + 0.0000028102, 0.0000028111, 0.0000028172, 0.0000028216, 0.0000028286, + 0.0000028282, 0.0000028166, 0.0000028075, 0.0000028127, 0.0000028313, + 0.0000028481, 0.0000028510, 0.0000028481, 0.0000028451, 0.0000028464, + 0.0000028492, 0.0000028509, 0.0000028524, 0.0000028554, 0.0000028598, + 0.0000028632, 0.0000028623, 0.0000028596, 0.0000028608, 0.0000028661, + 0.0000028714, 0.0000028714, 0.0000028588, 0.0000028411, 0.0000028324, + 0.0000028272, 0.0000028243, 0.0000028285, 0.0000028505, 0.0000028749, + 0.0000028801, 0.0000028802, 0.0000028796, 0.0000028756, 0.0000028652, + 0.0000028467, 0.0000028271, 0.0000028240, 0.0000028347, 0.0000028335, + 0.0000028244, 0.0000028108, 0.0000027985, 0.0000028052, 0.0000028022, + 0.0000027950, 0.0000027950, 0.0000027953, 0.0000027943, 0.0000027928, + 0.0000027923, 0.0000027937, 0.0000027926, 0.0000027901, 0.0000027883, + 0.0000027865, 0.0000027860, 0.0000027877, 0.0000027932, 0.0000027986, + 0.0000028031, 0.0000028043, 0.0000028055, 0.0000028046, 0.0000028021, + 0.0000027994, 0.0000028031, 0.0000028079, 0.0000028120, 0.0000028141, + 0.0000028179, 0.0000028220, 0.0000028254, 0.0000028248, 0.0000028225, + 0.0000028196, 0.0000028127, 0.0000028012, 0.0000027904, 0.0000027841, + 0.0000027815, 0.0000027801, 0.0000027781, 0.0000027742, 0.0000027707, + 0.0000027697, 0.0000027721, 0.0000027769, 0.0000027791, 0.0000027782, + 0.0000027768, 0.0000027790, 0.0000027862, 0.0000027944, 0.0000027992, + 0.0000028000, 0.0000027982, 0.0000027962, 0.0000027936, 0.0000027885, + 0.0000027802, 0.0000027719, 0.0000027648, 0.0000027590, 0.0000027540, + 0.0000027496, 0.0000027447, 0.0000027409, 0.0000027395, 0.0000027396, + 0.0000027392, 0.0000027368, 0.0000027337, 0.0000027317, 0.0000027305, + 0.0000027285, 0.0000027257, 0.0000027228, 0.0000027198, 0.0000027186, + 0.0000027215, 0.0000027296, 0.0000027373, 0.0000027389, 0.0000027346, + 0.0000027302, 0.0000027305, 0.0000027349, 0.0000027370, 0.0000027319, + 0.0000027216, 0.0000027138, 0.0000027131, 0.0000027159, 0.0000027194, + 0.0000027213, 0.0000027221, 0.0000027236, 0.0000027275, 0.0000027338, + 0.0000027381, 0.0000027390, 0.0000027376, 0.0000027352, 0.0000027351, + 0.0000027396, 0.0000027449, 0.0000027480, 0.0000027456, 0.0000027364, + 0.0000027158, 0.0000026895, 0.0000026681, 0.0000026510, 0.0000026455, + 0.0000026648, 0.0000026816, 0.0000026780, 0.0000026801, 0.0000027111, + 0.0000027438, 0.0000027555, 0.0000027572, 0.0000027591, 0.0000027860, + 0.0000028178, 0.0000028228, 0.0000028251, 0.0000028269, 0.0000028187, + 0.0000028113, 0.0000028054, 0.0000028032, 0.0000028080, 0.0000028106, + 0.0000028063, 0.0000028033, 0.0000027986, 0.0000027902, 0.0000027801, + 0.0000027705, 0.0000027664, 0.0000027622, 0.0000027593, 0.0000027639, + 0.0000027739, 0.0000027842, 0.0000027910, 0.0000027954, 0.0000027907, + 0.0000027872, 0.0000027907, 0.0000027971, 0.0000028012, 0.0000028086, + 0.0000028226, 0.0000028390, 0.0000028438, 0.0000028386, 0.0000028386, + 0.0000028350, 0.0000028249, 0.0000028160, 0.0000028097, 0.0000028129, + 0.0000028115, 0.0000028046, 0.0000027966, 0.0000027955, 0.0000027856, + 0.0000027662, 0.0000027527, 0.0000027540, 0.0000027556, 0.0000027566, + 0.0000027570, 0.0000027494, 0.0000027427, 0.0000027320, 0.0000027226, + 0.0000027209, 0.0000027222, 0.0000027226, 0.0000027211, 0.0000027198, + 0.0000027188, 0.0000027114, 0.0000026986, 0.0000026869, 0.0000026810, + 0.0000026806, 0.0000026821, 0.0000026838, 0.0000026853, 0.0000026859, + 0.0000026854, 0.0000026836, 0.0000026806, 0.0000026772, 0.0000026726, + 0.0000026675, 0.0000026620, 0.0000026583, 0.0000026576, 0.0000026573, + 0.0000026587, 0.0000026595, 0.0000026576, 0.0000026540, 0.0000026505, + 0.0000026466, 0.0000026413, 0.0000026352, 0.0000026303, 0.0000026294, + 0.0000026324, 0.0000026365, 0.0000026395, 0.0000026425, 0.0000026450, + 0.0000026467, 0.0000026479, 0.0000026488, 0.0000026502, 0.0000026520, + 0.0000026553, 0.0000026611, 0.0000026663, 0.0000026714, 0.0000026735, + 0.0000026747, 0.0000026721, 0.0000026729, 0.0000026766, 0.0000026811, + 0.0000026848, 0.0000026859, 0.0000026888, 0.0000026949, 0.0000027027, + 0.0000027080, 0.0000027143, 0.0000027177, 0.0000027188, 0.0000027187, + 0.0000027178, 0.0000027175, 0.0000027175, 0.0000027164, 0.0000027130, + 0.0000027092, 0.0000027041, 0.0000027002, 0.0000026989, 0.0000026985, + 0.0000026968, 0.0000026944, 0.0000026877, 0.0000026762, 0.0000026678, + 0.0000026677, 0.0000026735, 0.0000026780, 0.0000026866, 0.0000026993, + 0.0000027086, 0.0000027120, 0.0000027126, 0.0000027267, 0.0000027563, + 0.0000027893, 0.0000028149, 0.0000028272, 0.0000028263, 0.0000028155, + 0.0000027999, 0.0000027987, 0.0000028136, 0.0000028276, 0.0000028290, + 0.0000028223, 0.0000028176, 0.0000028180, 0.0000028163, 0.0000028125, + 0.0000028115, 0.0000028160, 0.0000028219, 0.0000028264, 0.0000028290, + 0.0000028310, 0.0000028317, 0.0000028283, 0.0000028230, 0.0000028228, + 0.0000028313, 0.0000028430, 0.0000028454, 0.0000028403, 0.0000028355, + 0.0000028345, 0.0000028348, 0.0000028345, 0.0000028310, 0.0000028276, + 0.0000028253, 0.0000028265, 0.0000028317, 0.0000028376, 0.0000028403, + 0.0000028393, 0.0000028367, 0.0000028343, 0.0000028321, 0.0000028281, + 0.0000028234, 0.0000028206, 0.0000028185, 0.0000028148, 0.0000028096, + 0.0000028063, 0.0000028066, 0.0000028104, 0.0000028166, 0.0000028228, + 0.0000028262, 0.0000028282, 0.0000028331, 0.0000028384, 0.0000028379, + 0.0000028313, 0.0000028298, 0.0000028418, 0.0000028667, 0.0000028815, + 0.0000028840, 0.0000028857, 0.0000028893, 0.0000028877, 0.0000028760, + 0.0000028641, 0.0000028593, 0.0000028580, 0.0000028543, 0.0000028444, + 0.0000028294, 0.0000028162, 0.0000028072, 0.0000028016, 0.0000027964, + 0.0000027907, 0.0000027829, 0.0000027759, 0.0000027761, 0.0000027836, + 0.0000027912, 0.0000027948, 0.0000027972, 0.0000028027, 0.0000028098, + 0.0000028162, 0.0000028235, 0.0000028332, 0.0000028442, 0.0000028535, + 0.0000028606, 0.0000028663, 0.0000028702, 0.0000028719, 0.0000028710, + 0.0000028666, 0.0000028588, 0.0000028500, 0.0000028462, 0.0000028493, + 0.0000028583, 0.0000028689, 0.0000028774, 0.0000028827, 0.0000028866, + 0.0000028906, 0.0000028931, 0.0000028918, 0.0000028862, 0.0000028790, + 0.0000028744, 0.0000028726, 0.0000028709, 0.0000028686, 0.0000028655, + 0.0000028608, 0.0000028537, 0.0000028473, 0.0000028444, 0.0000028439, + 0.0000028462, 0.0000028547, 0.0000028683, 0.0000028831, 0.0000028953, + 0.0000029028, 0.0000029063, 0.0000029090, 0.0000029127, 0.0000029148, + 0.0000029127, 0.0000029075, 0.0000029042, 0.0000029028, 0.0000028999, + 0.0000028947, 0.0000028893, 0.0000028852, 0.0000028821, 0.0000028781, + 0.0000028748, 0.0000028745, 0.0000028758, 0.0000028773, 0.0000028798, + 0.0000028805, 0.0000028784, 0.0000028762, 0.0000028767, 0.0000028805, + 0.0000028878, 0.0000028962, 0.0000029033, 0.0000029095, 0.0000029145, + 0.0000029147, 0.0000029090, 0.0000029000, 0.0000028922, 0.0000028880, + 0.0000028897, 0.0000028970, 0.0000029053, 0.0000029098, 0.0000029093, + 0.0000029053, 0.0000029016, 0.0000029000, 0.0000028981, 0.0000028954, + 0.0000028926, 0.0000028887, 0.0000028825, 0.0000028766, 0.0000028722, + 0.0000028662, 0.0000028581, 0.0000028535, 0.0000028537, 0.0000028608, + 0.0000028715, 0.0000028789, 0.0000028827, 0.0000028858, 0.0000028898, + 0.0000028944, 0.0000028976, 0.0000028966, 0.0000028921, 0.0000028861, + 0.0000028785, 0.0000028708, 0.0000028645, 0.0000028597, 0.0000028558, + 0.0000028547, 0.0000028564, 0.0000028595, 0.0000028625, 0.0000028651, + 0.0000028690, 0.0000028733, 0.0000028752, 0.0000028726, 0.0000028631, + 0.0000028492, 0.0000028359, 0.0000028231, 0.0000028118, 0.0000028039, + 0.0000027996, 0.0000027982, 0.0000028004, 0.0000028071, 0.0000028144, + 0.0000028199, 0.0000028252, 0.0000028330, 0.0000028402, 0.0000028428, + 0.0000028435, 0.0000028483, 0.0000028556, 0.0000028606, 0.0000028634, + 0.0000028679, 0.0000028747, 0.0000028823, 0.0000028866, 0.0000028830, + 0.0000028688, 0.0000028511, 0.0000028379, 0.0000028333, 0.0000028340, + 0.0000028365, 0.0000028380, 0.0000028387, 0.0000028403, 0.0000028494, + 0.0000028631, 0.0000028715, 0.0000028764, 0.0000028854, 0.0000028877, + 0.0000028797, 0.0000028716, 0.0000028680, 0.0000028632, 0.0000028585, + 0.0000028582, 0.0000028579, 0.0000028516, 0.0000028473, 0.0000028511, + 0.0000028574, 0.0000028561, 0.0000028547, 0.0000028572, 0.0000028616, + 0.0000028749, 0.0000028881, 0.0000028923, 0.0000028901, 0.0000028856, + 0.0000028803, 0.0000028766, 0.0000028758, 0.0000028747, 0.0000028733, + 0.0000028752, 0.0000028819, 0.0000028837, 0.0000028777, 0.0000028705, + 0.0000028715, 0.0000028792, 0.0000028830, 0.0000028853, 0.0000028837, + 0.0000028785, 0.0000028756, 0.0000028739, 0.0000028693, 0.0000028659, + 0.0000028674, 0.0000028742, 0.0000028784, 0.0000028776, 0.0000028732, + 0.0000028678, 0.0000028590, 0.0000028414, 0.0000028315, 0.0000028434, + 0.0000028641, 0.0000028754, 0.0000028813, 0.0000028847, 0.0000028868, + 0.0000028869, 0.0000028830, 0.0000028763, 0.0000028756, 0.0000028795, + 0.0000028662, 0.0000028443, 0.0000028427, 0.0000028504, 0.0000028822, + 0.0000029119, 0.0000029154, 0.0000029056, 0.0000028947, 0.0000028915, + 0.0000028924, 0.0000028925, 0.0000028938, 0.0000028953, 0.0000028940, + 0.0000028901, 0.0000028826, 0.0000028736, 0.0000028633, 0.0000028421, + 0.0000028250, 0.0000028200, 0.0000028138, 0.0000028065, 0.0000027973, + 0.0000027888, 0.0000027789, 0.0000027714, 0.0000027705, 0.0000027715, + 0.0000027725, 0.0000027698, 0.0000027636, 0.0000027620, 0.0000027701, + 0.0000027792, 0.0000027814, 0.0000027747, 0.0000027615, 0.0000027658, + 0.0000027925, 0.0000028156, 0.0000028201, 0.0000028183, 0.0000028187, + 0.0000028235, 0.0000028293, 0.0000028324, 0.0000028321, 0.0000028303, + 0.0000028292, 0.0000028293, 0.0000028296, 0.0000028300, 0.0000028307, + 0.0000028314, 0.0000028324, 0.0000028343, 0.0000028371, 0.0000028401, + 0.0000028421, 0.0000028426, 0.0000028425, 0.0000028432, 0.0000028450, + 0.0000028473, 0.0000028495, 0.0000028517, 0.0000028525, 0.0000028508, + 0.0000028471, 0.0000028438, 0.0000028411, 0.0000028372, 0.0000028317, + 0.0000028251, 0.0000028175, 0.0000028096, 0.0000028040, 0.0000028035, + 0.0000028079, 0.0000028152, 0.0000028226, 0.0000028291, 0.0000028347, + 0.0000028388, 0.0000028418, 0.0000028431, 0.0000028434, 0.0000028433, + 0.0000028430, 0.0000028435, 0.0000028453, 0.0000028462, 0.0000028459, + 0.0000028453, 0.0000028449, 0.0000028447, 0.0000028441, 0.0000028438, + 0.0000028458, 0.0000028496, 0.0000028529, 0.0000028563, 0.0000028598, + 0.0000028610, 0.0000028593, 0.0000028554, 0.0000028498, 0.0000028423, + 0.0000028346, 0.0000028280, 0.0000028245, 0.0000028256, 0.0000028311, + 0.0000028363, 0.0000028365, 0.0000028325, 0.0000028276, 0.0000028265, + 0.0000028329, 0.0000028477, 0.0000028609, 0.0000028686, 0.0000028707, + 0.0000028692, 0.0000028609, 0.0000028496, 0.0000028431, 0.0000028416, + 0.0000028387, 0.0000028311, 0.0000028301, 0.0000028405, 0.0000028547, + 0.0000028617, 0.0000028650, 0.0000028671, 0.0000028666, 0.0000028586, + 0.0000028445, 0.0000028281, 0.0000028157, 0.0000028141, 0.0000028192, + 0.0000028221, 0.0000028262, 0.0000028296, 0.0000028185, 0.0000028045, + 0.0000028069, 0.0000028263, 0.0000028448, 0.0000028483, 0.0000028427, + 0.0000028345, 0.0000028338, 0.0000028369, 0.0000028384, 0.0000028404, + 0.0000028459, 0.0000028531, 0.0000028582, 0.0000028583, 0.0000028542, + 0.0000028533, 0.0000028604, 0.0000028687, 0.0000028691, 0.0000028568, + 0.0000028388, 0.0000028281, 0.0000028236, 0.0000028212, 0.0000028229, + 0.0000028379, 0.0000028607, 0.0000028700, 0.0000028712, 0.0000028697, + 0.0000028674, 0.0000028636, 0.0000028508, 0.0000028313, 0.0000028204, + 0.0000028303, 0.0000028337, 0.0000028283, 0.0000028151, 0.0000028009, + 0.0000028040, 0.0000028058, 0.0000027980, 0.0000027986, 0.0000027987, + 0.0000027952, 0.0000027903, 0.0000027914, 0.0000027959, 0.0000027957, + 0.0000027926, 0.0000027893, 0.0000027875, 0.0000027868, 0.0000027879, + 0.0000027932, 0.0000028013, 0.0000028090, 0.0000028138, 0.0000028165, + 0.0000028176, 0.0000028141, 0.0000028107, 0.0000028119, 0.0000028120, + 0.0000028112, 0.0000028102, 0.0000028097, 0.0000028111, 0.0000028131, + 0.0000028161, 0.0000028198, 0.0000028223, 0.0000028216, 0.0000028182, + 0.0000028134, 0.0000028097, 0.0000028065, 0.0000028020, 0.0000027966, + 0.0000027912, 0.0000027866, 0.0000027829, 0.0000027810, 0.0000027804, + 0.0000027798, 0.0000027786, 0.0000027763, 0.0000027725, 0.0000027684, + 0.0000027682, 0.0000027759, 0.0000027851, 0.0000027904, 0.0000027920, + 0.0000027919, 0.0000027909, 0.0000027872, 0.0000027792, 0.0000027699, + 0.0000027626, 0.0000027575, 0.0000027523, 0.0000027466, 0.0000027408, + 0.0000027357, 0.0000027329, 0.0000027323, 0.0000027315, 0.0000027283, + 0.0000027245, 0.0000027228, 0.0000027219, 0.0000027191, 0.0000027152, + 0.0000027118, 0.0000027092, 0.0000027082, 0.0000027105, 0.0000027196, + 0.0000027305, 0.0000027343, 0.0000027297, 0.0000027240, 0.0000027239, + 0.0000027294, 0.0000027319, 0.0000027274, 0.0000027164, 0.0000027083, + 0.0000027072, 0.0000027115, 0.0000027173, 0.0000027209, 0.0000027212, + 0.0000027208, 0.0000027237, 0.0000027306, 0.0000027368, 0.0000027388, + 0.0000027367, 0.0000027350, 0.0000027370, 0.0000027425, 0.0000027472, + 0.0000027484, 0.0000027435, 0.0000027323, 0.0000027096, 0.0000026828, + 0.0000026599, 0.0000026458, 0.0000026528, 0.0000026749, 0.0000026757, + 0.0000026752, 0.0000027005, 0.0000027406, 0.0000027583, 0.0000027603, + 0.0000027596, 0.0000027716, 0.0000028071, 0.0000028217, 0.0000028225, + 0.0000028262, 0.0000028235, 0.0000028150, 0.0000028103, 0.0000028042, + 0.0000028031, 0.0000028066, 0.0000028059, 0.0000028018, 0.0000028005, + 0.0000027948, 0.0000027860, 0.0000027755, 0.0000027670, 0.0000027625, + 0.0000027597, 0.0000027615, 0.0000027674, 0.0000027766, 0.0000027866, + 0.0000027926, 0.0000027937, 0.0000027893, 0.0000027885, 0.0000027929, + 0.0000027981, 0.0000027989, 0.0000028026, 0.0000028141, 0.0000028325, + 0.0000028413, 0.0000028370, 0.0000028351, 0.0000028309, 0.0000028209, + 0.0000028120, 0.0000028085, 0.0000028121, 0.0000028102, 0.0000028021, + 0.0000027948, 0.0000027910, 0.0000027768, 0.0000027587, 0.0000027521, + 0.0000027540, 0.0000027534, 0.0000027570, 0.0000027536, 0.0000027467, + 0.0000027370, 0.0000027237, 0.0000027178, 0.0000027182, 0.0000027203, + 0.0000027192, 0.0000027189, 0.0000027197, 0.0000027152, 0.0000027013, + 0.0000026861, 0.0000026757, 0.0000026705, 0.0000026716, 0.0000026770, + 0.0000026820, 0.0000026846, 0.0000026838, 0.0000026795, 0.0000026732, + 0.0000026667, 0.0000026618, 0.0000026567, 0.0000026516, 0.0000026473, + 0.0000026463, 0.0000026501, 0.0000026546, 0.0000026585, 0.0000026597, + 0.0000026571, 0.0000026512, 0.0000026446, 0.0000026377, 0.0000026306, + 0.0000026243, 0.0000026216, 0.0000026219, 0.0000026243, 0.0000026273, + 0.0000026299, 0.0000026326, 0.0000026349, 0.0000026368, 0.0000026383, + 0.0000026396, 0.0000026413, 0.0000026448, 0.0000026503, 0.0000026575, + 0.0000026640, 0.0000026702, 0.0000026731, 0.0000026725, 0.0000026715, + 0.0000026700, 0.0000026709, 0.0000026724, 0.0000026716, 0.0000026686, + 0.0000026671, 0.0000026698, 0.0000026769, 0.0000026816, 0.0000026877, + 0.0000026918, 0.0000026947, 0.0000026984, 0.0000027026, 0.0000027066, + 0.0000027111, 0.0000027137, 0.0000027132, 0.0000027118, 0.0000027097, + 0.0000027056, 0.0000027005, 0.0000026963, 0.0000026946, 0.0000026964, + 0.0000026982, 0.0000026948, 0.0000026834, 0.0000026720, 0.0000026696, + 0.0000026730, 0.0000026781, 0.0000026868, 0.0000026987, 0.0000027083, + 0.0000027107, 0.0000027094, 0.0000027160, 0.0000027373, 0.0000027646, + 0.0000027954, 0.0000028175, 0.0000028208, 0.0000028117, 0.0000027995, + 0.0000028007, 0.0000028167, 0.0000028295, 0.0000028319, 0.0000028267, + 0.0000028227, 0.0000028236, 0.0000028245, 0.0000028218, 0.0000028192, + 0.0000028198, 0.0000028221, 0.0000028244, 0.0000028259, 0.0000028267, + 0.0000028262, 0.0000028232, 0.0000028198, 0.0000028213, 0.0000028314, + 0.0000028426, 0.0000028427, 0.0000028366, 0.0000028317, 0.0000028301, + 0.0000028302, 0.0000028301, 0.0000028282, 0.0000028265, 0.0000028267, + 0.0000028296, 0.0000028354, 0.0000028406, 0.0000028418, 0.0000028391, + 0.0000028363, 0.0000028358, 0.0000028354, 0.0000028317, 0.0000028262, + 0.0000028228, 0.0000028195, 0.0000028144, 0.0000028091, 0.0000028062, + 0.0000028070, 0.0000028115, 0.0000028175, 0.0000028217, 0.0000028244, + 0.0000028292, 0.0000028340, 0.0000028359, 0.0000028332, 0.0000028367, + 0.0000028548, 0.0000028772, 0.0000028863, 0.0000028872, 0.0000028902, + 0.0000028946, 0.0000028925, 0.0000028810, 0.0000028705, 0.0000028666, + 0.0000028641, 0.0000028591, 0.0000028500, 0.0000028369, 0.0000028237, + 0.0000028145, 0.0000028087, 0.0000028043, 0.0000027979, 0.0000027891, + 0.0000027808, 0.0000027787, 0.0000027856, 0.0000027945, 0.0000027991, + 0.0000028022, 0.0000028064, 0.0000028114, 0.0000028154, 0.0000028199, + 0.0000028278, 0.0000028383, 0.0000028481, 0.0000028560, 0.0000028622, + 0.0000028674, 0.0000028709, 0.0000028719, 0.0000028698, 0.0000028645, + 0.0000028568, 0.0000028484, 0.0000028446, 0.0000028470, 0.0000028556, + 0.0000028663, 0.0000028762, 0.0000028831, 0.0000028880, 0.0000028926, + 0.0000028947, 0.0000028930, 0.0000028872, 0.0000028802, 0.0000028754, + 0.0000028730, 0.0000028711, 0.0000028695, 0.0000028688, 0.0000028685, + 0.0000028664, 0.0000028616, 0.0000028556, 0.0000028506, 0.0000028500, + 0.0000028574, 0.0000028730, 0.0000028904, 0.0000029024, 0.0000029068, + 0.0000029080, 0.0000029106, 0.0000029135, 0.0000029135, 0.0000029097, + 0.0000029058, 0.0000029042, 0.0000029017, 0.0000028958, 0.0000028887, + 0.0000028829, 0.0000028798, 0.0000028788, 0.0000028760, 0.0000028714, + 0.0000028686, 0.0000028679, 0.0000028683, 0.0000028709, 0.0000028739, + 0.0000028742, 0.0000028728, 0.0000028713, 0.0000028709, 0.0000028744, + 0.0000028840, 0.0000028948, 0.0000029017, 0.0000029064, 0.0000029094, + 0.0000029090, 0.0000029033, 0.0000028985, 0.0000028939, 0.0000028923, + 0.0000028953, 0.0000029015, 0.0000029060, 0.0000029062, 0.0000029028, + 0.0000028987, 0.0000028970, 0.0000028961, 0.0000028937, 0.0000028906, + 0.0000028868, 0.0000028813, 0.0000028740, 0.0000028673, 0.0000028613, + 0.0000028568, 0.0000028554, 0.0000028544, 0.0000028555, 0.0000028606, + 0.0000028683, 0.0000028718, 0.0000028725, 0.0000028745, 0.0000028794, + 0.0000028860, 0.0000028905, 0.0000028906, 0.0000028869, 0.0000028805, + 0.0000028733, 0.0000028666, 0.0000028612, 0.0000028568, 0.0000028541, + 0.0000028534, 0.0000028539, 0.0000028549, 0.0000028556, 0.0000028562, + 0.0000028565, 0.0000028550, 0.0000028496, 0.0000028389, 0.0000028240, + 0.0000028097, 0.0000027992, 0.0000027906, 0.0000027854, 0.0000027821, + 0.0000027801, 0.0000027797, 0.0000027829, 0.0000027898, 0.0000027948, + 0.0000027997, 0.0000028067, 0.0000028183, 0.0000028307, 0.0000028381, + 0.0000028404, 0.0000028450, 0.0000028524, 0.0000028586, 0.0000028620, + 0.0000028669, 0.0000028738, 0.0000028810, 0.0000028866, 0.0000028858, + 0.0000028761, 0.0000028602, 0.0000028460, 0.0000028407, 0.0000028411, + 0.0000028415, 0.0000028409, 0.0000028415, 0.0000028428, 0.0000028491, + 0.0000028638, 0.0000028738, 0.0000028794, 0.0000028884, 0.0000028930, + 0.0000028862, 0.0000028751, 0.0000028681, 0.0000028641, 0.0000028610, + 0.0000028594, 0.0000028588, 0.0000028550, 0.0000028497, 0.0000028486, + 0.0000028533, 0.0000028551, 0.0000028562, 0.0000028589, 0.0000028627, + 0.0000028767, 0.0000028916, 0.0000028951, 0.0000028908, 0.0000028859, + 0.0000028815, 0.0000028787, 0.0000028767, 0.0000028748, 0.0000028747, + 0.0000028799, 0.0000028884, 0.0000028884, 0.0000028781, 0.0000028707, + 0.0000028734, 0.0000028807, 0.0000028846, 0.0000028860, 0.0000028833, + 0.0000028789, 0.0000028774, 0.0000028747, 0.0000028693, 0.0000028645, + 0.0000028650, 0.0000028701, 0.0000028729, 0.0000028708, 0.0000028657, + 0.0000028628, 0.0000028602, 0.0000028501, 0.0000028378, 0.0000028423, + 0.0000028620, 0.0000028761, 0.0000028833, 0.0000028863, 0.0000028890, + 0.0000028903, 0.0000028873, 0.0000028782, 0.0000028759, 0.0000028783, + 0.0000028667, 0.0000028448, 0.0000028420, 0.0000028485, 0.0000028762, + 0.0000029081, 0.0000029159, 0.0000029098, 0.0000029002, 0.0000028950, + 0.0000028955, 0.0000028949, 0.0000028938, 0.0000028937, 0.0000028935, + 0.0000028929, 0.0000028896, 0.0000028813, 0.0000028721, 0.0000028574, + 0.0000028309, 0.0000028198, 0.0000028163, 0.0000028109, 0.0000028026, + 0.0000027942, 0.0000027836, 0.0000027722, 0.0000027664, 0.0000027661, + 0.0000027684, 0.0000027696, 0.0000027659, 0.0000027584, 0.0000027561, + 0.0000027639, 0.0000027731, 0.0000027760, 0.0000027703, 0.0000027592, + 0.0000027678, 0.0000027952, 0.0000028129, 0.0000028141, 0.0000028117, + 0.0000028130, 0.0000028191, 0.0000028267, 0.0000028310, 0.0000028310, + 0.0000028288, 0.0000028262, 0.0000028247, 0.0000028256, 0.0000028285, + 0.0000028317, 0.0000028350, 0.0000028371, 0.0000028384, 0.0000028389, + 0.0000028384, 0.0000028385, 0.0000028405, 0.0000028439, 0.0000028465, + 0.0000028478, 0.0000028485, 0.0000028486, 0.0000028474, 0.0000028447, + 0.0000028417, 0.0000028401, 0.0000028386, 0.0000028352, 0.0000028296, + 0.0000028223, 0.0000028144, 0.0000028083, 0.0000028056, 0.0000028072, + 0.0000028131, 0.0000028201, 0.0000028256, 0.0000028292, 0.0000028317, + 0.0000028334, 0.0000028341, 0.0000028338, 0.0000028329, 0.0000028324, + 0.0000028328, 0.0000028340, 0.0000028365, 0.0000028397, 0.0000028421, + 0.0000028435, 0.0000028442, 0.0000028447, 0.0000028449, 0.0000028453, + 0.0000028464, 0.0000028484, 0.0000028507, 0.0000028534, 0.0000028571, + 0.0000028615, 0.0000028634, 0.0000028623, 0.0000028587, 0.0000028532, + 0.0000028466, 0.0000028414, 0.0000028369, 0.0000028332, 0.0000028323, + 0.0000028351, 0.0000028392, 0.0000028409, 0.0000028386, 0.0000028328, + 0.0000028297, 0.0000028357, 0.0000028481, 0.0000028591, 0.0000028660, + 0.0000028691, 0.0000028688, 0.0000028625, 0.0000028507, 0.0000028435, + 0.0000028423, 0.0000028402, 0.0000028333, 0.0000028292, 0.0000028352, + 0.0000028477, 0.0000028563, 0.0000028602, 0.0000028620, 0.0000028621, + 0.0000028576, 0.0000028488, 0.0000028375, 0.0000028267, 0.0000028216, + 0.0000028232, 0.0000028250, 0.0000028274, 0.0000028329, 0.0000028255, + 0.0000028065, 0.0000028030, 0.0000028211, 0.0000028411, 0.0000028459, + 0.0000028392, 0.0000028279, 0.0000028250, 0.0000028282, 0.0000028294, + 0.0000028298, 0.0000028348, 0.0000028445, 0.0000028529, 0.0000028549, + 0.0000028515, 0.0000028484, 0.0000028528, 0.0000028606, 0.0000028617, + 0.0000028526, 0.0000028371, 0.0000028272, 0.0000028230, 0.0000028209, + 0.0000028219, 0.0000028285, 0.0000028447, 0.0000028558, 0.0000028593, + 0.0000028581, 0.0000028568, 0.0000028567, 0.0000028520, 0.0000028362, + 0.0000028190, 0.0000028218, 0.0000028325, 0.0000028310, 0.0000028197, + 0.0000028054, 0.0000028039, 0.0000028083, 0.0000028000, 0.0000028010, + 0.0000028021, 0.0000027971, 0.0000027897, 0.0000027913, 0.0000027980, + 0.0000027973, 0.0000027943, 0.0000027927, 0.0000027922, 0.0000027921, + 0.0000027927, 0.0000027972, 0.0000028063, 0.0000028153, 0.0000028217, + 0.0000028235, 0.0000028247, 0.0000028225, 0.0000028214, 0.0000028230, + 0.0000028246, 0.0000028255, 0.0000028239, 0.0000028236, 0.0000028237, + 0.0000028229, 0.0000028214, 0.0000028193, 0.0000028173, 0.0000028158, + 0.0000028150, 0.0000028143, 0.0000028131, 0.0000028125, 0.0000028123, + 0.0000028115, 0.0000028099, 0.0000028065, 0.0000028012, 0.0000027964, + 0.0000027947, 0.0000027934, 0.0000027901, 0.0000027848, 0.0000027785, + 0.0000027725, 0.0000027675, 0.0000027641, 0.0000027628, 0.0000027675, + 0.0000027760, 0.0000027836, 0.0000027879, 0.0000027884, 0.0000027849, + 0.0000027778, 0.0000027684, 0.0000027607, 0.0000027554, 0.0000027502, + 0.0000027436, 0.0000027374, 0.0000027325, 0.0000027294, 0.0000027283, + 0.0000027271, 0.0000027235, 0.0000027193, 0.0000027178, 0.0000027175, + 0.0000027155, 0.0000027108, 0.0000027057, 0.0000027016, 0.0000027000, + 0.0000027010, 0.0000027081, 0.0000027193, 0.0000027264, 0.0000027254, + 0.0000027204, 0.0000027203, 0.0000027251, 0.0000027273, 0.0000027234, + 0.0000027129, 0.0000027040, 0.0000027022, 0.0000027060, 0.0000027123, + 0.0000027170, 0.0000027189, 0.0000027192, 0.0000027212, 0.0000027267, + 0.0000027336, 0.0000027368, 0.0000027352, 0.0000027342, 0.0000027380, + 0.0000027443, 0.0000027477, 0.0000027468, 0.0000027400, 0.0000027267, + 0.0000027022, 0.0000026743, 0.0000026512, 0.0000026447, 0.0000026623, + 0.0000026742, 0.0000026678, 0.0000026856, 0.0000027332, 0.0000027610, + 0.0000027639, 0.0000027622, 0.0000027646, 0.0000027926, 0.0000028192, + 0.0000028216, 0.0000028231, 0.0000028253, 0.0000028195, 0.0000028136, + 0.0000028085, 0.0000028030, 0.0000028033, 0.0000028055, 0.0000028028, + 0.0000027993, 0.0000027974, 0.0000027910, 0.0000027815, 0.0000027707, + 0.0000027632, 0.0000027603, 0.0000027600, 0.0000027642, 0.0000027699, + 0.0000027802, 0.0000027904, 0.0000027943, 0.0000027924, 0.0000027889, + 0.0000027894, 0.0000027938, 0.0000027982, 0.0000027974, 0.0000027980, + 0.0000028057, 0.0000028253, 0.0000028383, 0.0000028355, 0.0000028323, + 0.0000028272, 0.0000028169, 0.0000028085, 0.0000028074, 0.0000028106, + 0.0000028084, 0.0000027992, 0.0000027917, 0.0000027842, 0.0000027677, + 0.0000027547, 0.0000027535, 0.0000027533, 0.0000027526, 0.0000027566, + 0.0000027514, 0.0000027440, 0.0000027299, 0.0000027176, 0.0000027146, + 0.0000027158, 0.0000027175, 0.0000027158, 0.0000027173, 0.0000027159, + 0.0000027043, 0.0000026885, 0.0000026746, 0.0000026656, 0.0000026650, + 0.0000026713, 0.0000026790, 0.0000026824, 0.0000026800, 0.0000026733, + 0.0000026654, 0.0000026585, 0.0000026527, 0.0000026485, 0.0000026446, + 0.0000026418, 0.0000026417, 0.0000026440, 0.0000026481, 0.0000026512, + 0.0000026519, 0.0000026498, 0.0000026444, 0.0000026362, 0.0000026274, + 0.0000026192, 0.0000026121, 0.0000026072, 0.0000026057, 0.0000026058, + 0.0000026068, 0.0000026082, 0.0000026102, 0.0000026123, 0.0000026136, + 0.0000026139, 0.0000026136, 0.0000026137, 0.0000026149, 0.0000026179, + 0.0000026233, 0.0000026320, 0.0000026414, 0.0000026512, 0.0000026589, + 0.0000026602, 0.0000026620, 0.0000026608, 0.0000026621, 0.0000026640, + 0.0000026629, 0.0000026596, 0.0000026554, 0.0000026535, 0.0000026569, + 0.0000026579, 0.0000026607, 0.0000026637, 0.0000026671, 0.0000026725, + 0.0000026783, 0.0000026833, 0.0000026887, 0.0000026941, 0.0000026987, + 0.0000027021, 0.0000027045, 0.0000027055, 0.0000027053, 0.0000027030, + 0.0000026980, 0.0000026945, 0.0000026954, 0.0000026976, 0.0000026969, + 0.0000026910, 0.0000026802, 0.0000026724, 0.0000026727, 0.0000026791, + 0.0000026870, 0.0000026977, 0.0000027072, 0.0000027090, 0.0000027063, + 0.0000027080, 0.0000027219, 0.0000027430, 0.0000027724, 0.0000027988, + 0.0000028105, 0.0000028077, 0.0000028006, 0.0000028044, 0.0000028196, + 0.0000028324, 0.0000028354, 0.0000028304, 0.0000028268, 0.0000028278, + 0.0000028290, 0.0000028277, 0.0000028253, 0.0000028234, 0.0000028226, + 0.0000028227, 0.0000028236, 0.0000028241, 0.0000028225, 0.0000028188, + 0.0000028168, 0.0000028204, 0.0000028314, 0.0000028403, 0.0000028396, + 0.0000028321, 0.0000028271, 0.0000028246, 0.0000028235, 0.0000028227, + 0.0000028223, 0.0000028244, 0.0000028296, 0.0000028349, 0.0000028396, + 0.0000028422, 0.0000028417, 0.0000028386, 0.0000028367, 0.0000028373, + 0.0000028374, 0.0000028337, 0.0000028270, 0.0000028212, 0.0000028157, + 0.0000028106, 0.0000028061, 0.0000028043, 0.0000028068, 0.0000028114, + 0.0000028148, 0.0000028189, 0.0000028243, 0.0000028304, 0.0000028334, + 0.0000028368, 0.0000028467, 0.0000028685, 0.0000028866, 0.0000028909, + 0.0000028910, 0.0000028946, 0.0000028987, 0.0000028960, 0.0000028842, + 0.0000028759, 0.0000028741, 0.0000028708, 0.0000028638, 0.0000028545, + 0.0000028434, 0.0000028322, 0.0000028227, 0.0000028168, 0.0000028129, + 0.0000028079, 0.0000027987, 0.0000027898, 0.0000027871, 0.0000027913, + 0.0000027986, 0.0000028039, 0.0000028081, 0.0000028131, 0.0000028175, + 0.0000028205, 0.0000028239, 0.0000028300, 0.0000028381, 0.0000028464, + 0.0000028540, 0.0000028606, 0.0000028660, 0.0000028699, 0.0000028723, + 0.0000028726, 0.0000028700, 0.0000028656, 0.0000028603, 0.0000028547, + 0.0000028517, 0.0000028531, 0.0000028585, 0.0000028670, 0.0000028768, + 0.0000028852, 0.0000028912, 0.0000028953, 0.0000028965, 0.0000028944, + 0.0000028888, 0.0000028827, 0.0000028783, 0.0000028753, 0.0000028730, + 0.0000028719, 0.0000028732, 0.0000028756, 0.0000028765, 0.0000028739, + 0.0000028664, 0.0000028585, 0.0000028570, 0.0000028660, 0.0000028835, + 0.0000029001, 0.0000029074, 0.0000029079, 0.0000029083, 0.0000029105, + 0.0000029115, 0.0000029091, 0.0000029052, 0.0000029036, 0.0000029028, + 0.0000028981, 0.0000028897, 0.0000028822, 0.0000028774, 0.0000028759, + 0.0000028763, 0.0000028752, 0.0000028708, 0.0000028668, 0.0000028643, + 0.0000028624, 0.0000028626, 0.0000028650, 0.0000028673, 0.0000028695, + 0.0000028709, 0.0000028701, 0.0000028702, 0.0000028737, 0.0000028828, + 0.0000028916, 0.0000028976, 0.0000029009, 0.0000029017, 0.0000029004, + 0.0000028992, 0.0000028985, 0.0000028981, 0.0000028985, 0.0000029011, + 0.0000029041, 0.0000029043, 0.0000029019, 0.0000028974, 0.0000028937, + 0.0000028914, 0.0000028883, 0.0000028851, 0.0000028815, 0.0000028779, + 0.0000028731, 0.0000028673, 0.0000028611, 0.0000028560, 0.0000028563, + 0.0000028581, 0.0000028579, 0.0000028571, 0.0000028586, 0.0000028610, + 0.0000028601, 0.0000028572, 0.0000028575, 0.0000028625, 0.0000028698, + 0.0000028742, 0.0000028745, 0.0000028702, 0.0000028637, 0.0000028575, + 0.0000028521, 0.0000028479, 0.0000028446, 0.0000028420, 0.0000028399, + 0.0000028377, 0.0000028354, 0.0000028331, 0.0000028294, 0.0000028239, + 0.0000028170, 0.0000028085, 0.0000027981, 0.0000027883, 0.0000027824, + 0.0000027801, 0.0000027800, 0.0000027798, 0.0000027795, 0.0000027790, + 0.0000027796, 0.0000027827, 0.0000027869, 0.0000027894, 0.0000027931, + 0.0000027956, 0.0000028039, 0.0000028162, 0.0000028278, 0.0000028338, + 0.0000028394, 0.0000028471, 0.0000028550, 0.0000028598, 0.0000028645, + 0.0000028709, 0.0000028778, 0.0000028845, 0.0000028861, 0.0000028824, + 0.0000028709, 0.0000028571, 0.0000028501, 0.0000028491, 0.0000028476, + 0.0000028441, 0.0000028431, 0.0000028438, 0.0000028471, 0.0000028608, + 0.0000028739, 0.0000028811, 0.0000028894, 0.0000028940, 0.0000028911, + 0.0000028807, 0.0000028707, 0.0000028657, 0.0000028648, 0.0000028631, + 0.0000028608, 0.0000028581, 0.0000028534, 0.0000028477, 0.0000028463, + 0.0000028505, 0.0000028567, 0.0000028607, 0.0000028634, 0.0000028754, + 0.0000028926, 0.0000028978, 0.0000028919, 0.0000028865, 0.0000028827, + 0.0000028806, 0.0000028777, 0.0000028763, 0.0000028789, 0.0000028865, + 0.0000028925, 0.0000028886, 0.0000028773, 0.0000028723, 0.0000028764, + 0.0000028834, 0.0000028868, 0.0000028859, 0.0000028820, 0.0000028784, + 0.0000028778, 0.0000028743, 0.0000028675, 0.0000028618, 0.0000028619, + 0.0000028663, 0.0000028682, 0.0000028648, 0.0000028582, 0.0000028559, + 0.0000028586, 0.0000028564, 0.0000028447, 0.0000028435, 0.0000028589, + 0.0000028749, 0.0000028840, 0.0000028880, 0.0000028912, 0.0000028939, + 0.0000028909, 0.0000028804, 0.0000028767, 0.0000028778, 0.0000028670, + 0.0000028458, 0.0000028420, 0.0000028471, 0.0000028705, 0.0000029034, + 0.0000029159, 0.0000029130, 0.0000029053, 0.0000028996, 0.0000028991, + 0.0000028978, 0.0000028946, 0.0000028916, 0.0000028902, 0.0000028911, + 0.0000028910, 0.0000028875, 0.0000028784, 0.0000028670, 0.0000028410, + 0.0000028208, 0.0000028167, 0.0000028137, 0.0000028071, 0.0000027992, + 0.0000027896, 0.0000027748, 0.0000027644, 0.0000027624, 0.0000027647, + 0.0000027679, 0.0000027668, 0.0000027606, 0.0000027512, 0.0000027490, + 0.0000027590, 0.0000027673, 0.0000027715, 0.0000027664, 0.0000027597, + 0.0000027710, 0.0000027970, 0.0000028087, 0.0000028073, 0.0000028036, + 0.0000028052, 0.0000028129, 0.0000028218, 0.0000028265, 0.0000028279, + 0.0000028269, 0.0000028256, 0.0000028262, 0.0000028284, 0.0000028309, + 0.0000028320, 0.0000028313, 0.0000028300, 0.0000028292, 0.0000028304, + 0.0000028340, 0.0000028390, 0.0000028428, 0.0000028444, 0.0000028451, + 0.0000028450, 0.0000028438, 0.0000028408, 0.0000028384, 0.0000028379, + 0.0000028381, 0.0000028381, 0.0000028365, 0.0000028322, 0.0000028254, + 0.0000028181, 0.0000028144, 0.0000028140, 0.0000028158, 0.0000028198, + 0.0000028244, 0.0000028275, 0.0000028287, 0.0000028287, 0.0000028282, + 0.0000028281, 0.0000028281, 0.0000028279, 0.0000028280, 0.0000028294, + 0.0000028311, 0.0000028328, 0.0000028359, 0.0000028401, 0.0000028435, + 0.0000028464, 0.0000028501, 0.0000028542, 0.0000028578, 0.0000028605, + 0.0000028618, 0.0000028616, 0.0000028608, 0.0000028609, 0.0000028628, + 0.0000028650, 0.0000028656, 0.0000028639, 0.0000028608, 0.0000028567, + 0.0000028534, 0.0000028515, 0.0000028494, 0.0000028462, 0.0000028430, + 0.0000028422, 0.0000028441, 0.0000028459, 0.0000028447, 0.0000028393, + 0.0000028366, 0.0000028407, 0.0000028503, 0.0000028589, 0.0000028642, + 0.0000028668, 0.0000028669, 0.0000028622, 0.0000028526, 0.0000028461, + 0.0000028446, 0.0000028426, 0.0000028362, 0.0000028290, 0.0000028300, + 0.0000028396, 0.0000028507, 0.0000028564, 0.0000028581, 0.0000028582, + 0.0000028563, 0.0000028518, 0.0000028462, 0.0000028396, 0.0000028335, + 0.0000028299, 0.0000028294, 0.0000028302, 0.0000028348, 0.0000028328, + 0.0000028139, 0.0000028030, 0.0000028154, 0.0000028360, 0.0000028423, + 0.0000028369, 0.0000028265, 0.0000028230, 0.0000028251, 0.0000028267, + 0.0000028249, 0.0000028264, 0.0000028346, 0.0000028447, 0.0000028501, + 0.0000028489, 0.0000028454, 0.0000028464, 0.0000028514, 0.0000028519, + 0.0000028456, 0.0000028352, 0.0000028281, 0.0000028251, 0.0000028230, + 0.0000028229, 0.0000028247, 0.0000028308, 0.0000028422, 0.0000028463, + 0.0000028447, 0.0000028448, 0.0000028469, 0.0000028480, 0.0000028400, + 0.0000028205, 0.0000028121, 0.0000028288, 0.0000028317, 0.0000028235, + 0.0000028106, 0.0000028050, 0.0000028099, 0.0000028031, 0.0000028018, + 0.0000028051, 0.0000027996, 0.0000027898, 0.0000027902, 0.0000027974, + 0.0000027971, 0.0000027955, 0.0000027969, 0.0000027987, 0.0000027999, + 0.0000028001, 0.0000028035, 0.0000028118, 0.0000028207, 0.0000028265, + 0.0000028276, 0.0000028261, 0.0000028233, 0.0000028228, 0.0000028239, + 0.0000028259, 0.0000028273, 0.0000028260, 0.0000028262, 0.0000028277, + 0.0000028282, 0.0000028282, 0.0000028279, 0.0000028263, 0.0000028238, + 0.0000028200, 0.0000028166, 0.0000028136, 0.0000028116, 0.0000028115, + 0.0000028115, 0.0000028104, 0.0000028079, 0.0000028058, 0.0000028049, + 0.0000028054, 0.0000028055, 0.0000028041, 0.0000027985, 0.0000027914, + 0.0000027833, 0.0000027758, 0.0000027699, 0.0000027650, 0.0000027604, + 0.0000027577, 0.0000027610, 0.0000027719, 0.0000027818, 0.0000027848, + 0.0000027819, 0.0000027754, 0.0000027666, 0.0000027585, 0.0000027530, + 0.0000027475, 0.0000027401, 0.0000027341, 0.0000027301, 0.0000027269, + 0.0000027255, 0.0000027239, 0.0000027201, 0.0000027163, 0.0000027154, + 0.0000027156, 0.0000027142, 0.0000027099, 0.0000027037, 0.0000026987, + 0.0000026971, 0.0000026963, 0.0000026989, 0.0000027066, 0.0000027153, + 0.0000027185, 0.0000027178, 0.0000027182, 0.0000027214, 0.0000027229, + 0.0000027197, 0.0000027107, 0.0000027027, 0.0000027008, 0.0000027024, + 0.0000027058, 0.0000027101, 0.0000027141, 0.0000027170, 0.0000027196, + 0.0000027228, 0.0000027292, 0.0000027334, 0.0000027333, 0.0000027335, + 0.0000027391, 0.0000027451, 0.0000027465, 0.0000027433, 0.0000027353, + 0.0000027211, 0.0000026936, 0.0000026636, 0.0000026443, 0.0000026478, + 0.0000026684, 0.0000026676, 0.0000026709, 0.0000027177, 0.0000027605, + 0.0000027685, 0.0000027658, 0.0000027646, 0.0000027788, 0.0000028113, + 0.0000028227, 0.0000028219, 0.0000028239, 0.0000028229, 0.0000028163, + 0.0000028125, 0.0000028065, 0.0000028023, 0.0000028038, 0.0000028068, + 0.0000028044, 0.0000027991, 0.0000027950, 0.0000027882, 0.0000027773, + 0.0000027665, 0.0000027614, 0.0000027610, 0.0000027623, 0.0000027667, + 0.0000027740, 0.0000027857, 0.0000027948, 0.0000027961, 0.0000027914, + 0.0000027879, 0.0000027891, 0.0000027926, 0.0000027966, 0.0000027960, + 0.0000027952, 0.0000027987, 0.0000028172, 0.0000028347, 0.0000028343, + 0.0000028302, 0.0000028238, 0.0000028133, 0.0000028055, 0.0000028065, + 0.0000028092, 0.0000028061, 0.0000027959, 0.0000027872, 0.0000027764, + 0.0000027606, 0.0000027545, 0.0000027548, 0.0000027520, 0.0000027533, + 0.0000027552, 0.0000027501, 0.0000027390, 0.0000027228, 0.0000027138, + 0.0000027117, 0.0000027137, 0.0000027136, 0.0000027129, 0.0000027129, + 0.0000027046, 0.0000026907, 0.0000026776, 0.0000026661, 0.0000026618, + 0.0000026665, 0.0000026742, 0.0000026767, 0.0000026731, 0.0000026665, + 0.0000026606, 0.0000026547, 0.0000026484, 0.0000026425, 0.0000026395, + 0.0000026391, 0.0000026393, 0.0000026388, 0.0000026375, 0.0000026348, + 0.0000026318, 0.0000026290, 0.0000026258, 0.0000026209, 0.0000026145, + 0.0000026080, 0.0000026019, 0.0000025975, 0.0000025958, 0.0000025961, + 0.0000025969, 0.0000025977, 0.0000025992, 0.0000026016, 0.0000026031, + 0.0000026030, 0.0000026011, 0.0000025973, 0.0000025927, 0.0000025897, + 0.0000025882, 0.0000025903, 0.0000025964, 0.0000026044, 0.0000026136, + 0.0000026235, 0.0000026296, 0.0000026349, 0.0000026371, 0.0000026430, + 0.0000026485, 0.0000026489, 0.0000026469, 0.0000026414, 0.0000026374, + 0.0000026393, 0.0000026405, 0.0000026424, 0.0000026441, 0.0000026443, + 0.0000026462, 0.0000026482, 0.0000026522, 0.0000026596, 0.0000026683, + 0.0000026759, 0.0000026805, 0.0000026851, 0.0000026907, 0.0000026964, + 0.0000027002, 0.0000027008, 0.0000027009, 0.0000026991, 0.0000026965, + 0.0000026949, 0.0000026950, 0.0000026940, 0.0000026877, 0.0000026773, + 0.0000026747, 0.0000026801, 0.0000026880, 0.0000026961, 0.0000027046, + 0.0000027067, 0.0000027046, 0.0000027041, 0.0000027114, 0.0000027290, + 0.0000027523, 0.0000027758, 0.0000027928, 0.0000027994, 0.0000028006, + 0.0000028097, 0.0000028246, 0.0000028352, 0.0000028387, 0.0000028361, + 0.0000028336, 0.0000028335, 0.0000028336, 0.0000028325, 0.0000028303, + 0.0000028264, 0.0000028225, 0.0000028212, 0.0000028224, 0.0000028233, + 0.0000028216, 0.0000028178, 0.0000028154, 0.0000028202, 0.0000028314, + 0.0000028397, 0.0000028359, 0.0000028274, 0.0000028223, 0.0000028185, + 0.0000028163, 0.0000028151, 0.0000028164, 0.0000028230, 0.0000028335, + 0.0000028410, 0.0000028428, 0.0000028429, 0.0000028416, 0.0000028387, + 0.0000028369, 0.0000028379, 0.0000028377, 0.0000028329, 0.0000028244, + 0.0000028168, 0.0000028101, 0.0000028052, 0.0000028022, 0.0000028021, + 0.0000028041, 0.0000028062, 0.0000028113, 0.0000028195, 0.0000028270, + 0.0000028335, 0.0000028418, 0.0000028583, 0.0000028782, 0.0000028917, + 0.0000028950, 0.0000028955, 0.0000028992, 0.0000029018, 0.0000028975, + 0.0000028867, 0.0000028806, 0.0000028803, 0.0000028772, 0.0000028684, + 0.0000028588, 0.0000028496, 0.0000028405, 0.0000028324, 0.0000028260, + 0.0000028219, 0.0000028171, 0.0000028095, 0.0000028023, 0.0000027999, + 0.0000028016, 0.0000028044, 0.0000028092, 0.0000028150, 0.0000028212, + 0.0000028269, 0.0000028308, 0.0000028352, 0.0000028411, 0.0000028478, + 0.0000028536, 0.0000028581, 0.0000028626, 0.0000028676, 0.0000028723, + 0.0000028758, 0.0000028777, 0.0000028776, 0.0000028754, 0.0000028724, + 0.0000028695, 0.0000028670, 0.0000028659, 0.0000028670, 0.0000028690, + 0.0000028733, 0.0000028812, 0.0000028899, 0.0000028962, 0.0000028996, + 0.0000029001, 0.0000028977, 0.0000028927, 0.0000028875, 0.0000028831, + 0.0000028796, 0.0000028777, 0.0000028775, 0.0000028799, 0.0000028827, + 0.0000028834, 0.0000028806, 0.0000028729, 0.0000028663, 0.0000028673, + 0.0000028791, 0.0000028961, 0.0000029069, 0.0000029086, 0.0000029071, + 0.0000029066, 0.0000029071, 0.0000029058, 0.0000029027, 0.0000029012, + 0.0000029012, 0.0000028997, 0.0000028922, 0.0000028814, 0.0000028737, + 0.0000028703, 0.0000028700, 0.0000028720, 0.0000028726, 0.0000028706, + 0.0000028675, 0.0000028638, 0.0000028595, 0.0000028561, 0.0000028561, + 0.0000028576, 0.0000028615, 0.0000028668, 0.0000028705, 0.0000028724, + 0.0000028746, 0.0000028785, 0.0000028839, 0.0000028889, 0.0000028920, + 0.0000028927, 0.0000028920, 0.0000028921, 0.0000028942, 0.0000028963, + 0.0000028981, 0.0000029004, 0.0000029025, 0.0000029032, 0.0000029019, + 0.0000028988, 0.0000028946, 0.0000028902, 0.0000028851, 0.0000028797, + 0.0000028756, 0.0000028718, 0.0000028680, 0.0000028642, 0.0000028609, + 0.0000028586, 0.0000028583, 0.0000028591, 0.0000028599, 0.0000028592, + 0.0000028575, 0.0000028560, 0.0000028546, 0.0000028507, 0.0000028454, + 0.0000028446, 0.0000028485, 0.0000028532, 0.0000028535, 0.0000028496, + 0.0000028432, 0.0000028365, 0.0000028312, 0.0000028269, 0.0000028237, + 0.0000028203, 0.0000028164, 0.0000028122, 0.0000028078, 0.0000028039, + 0.0000027998, 0.0000027949, 0.0000027891, 0.0000027845, 0.0000027807, + 0.0000027773, 0.0000027755, 0.0000027767, 0.0000027794, 0.0000027818, + 0.0000027839, 0.0000027848, 0.0000027861, 0.0000027876, 0.0000027898, + 0.0000027933, 0.0000027962, 0.0000027961, 0.0000027957, 0.0000027972, + 0.0000028026, 0.0000028132, 0.0000028217, 0.0000028296, 0.0000028394, + 0.0000028496, 0.0000028566, 0.0000028620, 0.0000028677, 0.0000028740, + 0.0000028809, 0.0000028850, 0.0000028844, 0.0000028794, 0.0000028692, + 0.0000028613, 0.0000028576, 0.0000028546, 0.0000028489, 0.0000028448, + 0.0000028440, 0.0000028450, 0.0000028560, 0.0000028711, 0.0000028813, + 0.0000028884, 0.0000028933, 0.0000028935, 0.0000028872, 0.0000028768, + 0.0000028697, 0.0000028687, 0.0000028671, 0.0000028640, 0.0000028609, + 0.0000028570, 0.0000028491, 0.0000028414, 0.0000028432, 0.0000028552, + 0.0000028623, 0.0000028642, 0.0000028715, 0.0000028917, 0.0000029003, + 0.0000028937, 0.0000028867, 0.0000028834, 0.0000028820, 0.0000028794, + 0.0000028791, 0.0000028840, 0.0000028918, 0.0000028937, 0.0000028868, + 0.0000028769, 0.0000028757, 0.0000028809, 0.0000028874, 0.0000028891, + 0.0000028858, 0.0000028801, 0.0000028763, 0.0000028756, 0.0000028707, + 0.0000028625, 0.0000028557, 0.0000028558, 0.0000028613, 0.0000028644, + 0.0000028602, 0.0000028518, 0.0000028485, 0.0000028543, 0.0000028599, + 0.0000028519, 0.0000028456, 0.0000028554, 0.0000028719, 0.0000028837, + 0.0000028898, 0.0000028939, 0.0000028974, 0.0000028935, 0.0000028825, + 0.0000028781, 0.0000028778, 0.0000028666, 0.0000028469, 0.0000028427, + 0.0000028473, 0.0000028660, 0.0000028976, 0.0000029147, 0.0000029148, + 0.0000029095, 0.0000029043, 0.0000029027, 0.0000029011, 0.0000028972, + 0.0000028928, 0.0000028894, 0.0000028881, 0.0000028887, 0.0000028887, + 0.0000028836, 0.0000028725, 0.0000028513, 0.0000028233, 0.0000028160, + 0.0000028151, 0.0000028101, 0.0000028032, 0.0000027951, 0.0000027781, + 0.0000027629, 0.0000027600, 0.0000027626, 0.0000027664, 0.0000027661, + 0.0000027627, 0.0000027518, 0.0000027410, 0.0000027431, 0.0000027547, + 0.0000027625, 0.0000027685, 0.0000027632, 0.0000027595, 0.0000027737, + 0.0000027978, 0.0000028053, 0.0000028005, 0.0000027950, 0.0000027963, + 0.0000028044, 0.0000028122, 0.0000028164, 0.0000028178, 0.0000028180, + 0.0000028187, 0.0000028195, 0.0000028198, 0.0000028191, 0.0000028180, + 0.0000028178, 0.0000028201, 0.0000028251, 0.0000028314, 0.0000028359, + 0.0000028379, 0.0000028386, 0.0000028393, 0.0000028387, 0.0000028357, + 0.0000028332, 0.0000028325, 0.0000028347, 0.0000028380, 0.0000028394, + 0.0000028391, 0.0000028370, 0.0000028326, 0.0000028280, 0.0000028250, + 0.0000028237, 0.0000028235, 0.0000028242, 0.0000028255, 0.0000028263, + 0.0000028260, 0.0000028249, 0.0000028241, 0.0000028244, 0.0000028262, + 0.0000028279, 0.0000028295, 0.0000028322, 0.0000028355, 0.0000028377, + 0.0000028400, 0.0000028433, 0.0000028468, 0.0000028505, 0.0000028552, + 0.0000028608, 0.0000028664, 0.0000028712, 0.0000028748, 0.0000028769, + 0.0000028767, 0.0000028761, 0.0000028760, 0.0000028760, 0.0000028748, + 0.0000028717, 0.0000028672, 0.0000028627, 0.0000028592, 0.0000028585, + 0.0000028591, 0.0000028588, 0.0000028572, 0.0000028543, 0.0000028528, + 0.0000028535, 0.0000028542, 0.0000028524, 0.0000028471, 0.0000028433, + 0.0000028450, 0.0000028519, 0.0000028585, 0.0000028619, 0.0000028633, + 0.0000028641, 0.0000028616, 0.0000028550, 0.0000028496, 0.0000028477, + 0.0000028454, 0.0000028393, 0.0000028307, 0.0000028285, 0.0000028349, + 0.0000028474, 0.0000028551, 0.0000028573, 0.0000028574, 0.0000028566, + 0.0000028542, 0.0000028515, 0.0000028485, 0.0000028439, 0.0000028373, + 0.0000028330, 0.0000028318, 0.0000028345, 0.0000028351, 0.0000028213, + 0.0000028032, 0.0000028073, 0.0000028270, 0.0000028376, 0.0000028359, + 0.0000028284, 0.0000028242, 0.0000028249, 0.0000028269, 0.0000028255, + 0.0000028243, 0.0000028276, 0.0000028354, 0.0000028425, 0.0000028439, + 0.0000028418, 0.0000028416, 0.0000028437, 0.0000028431, 0.0000028394, + 0.0000028345, 0.0000028308, 0.0000028287, 0.0000028270, 0.0000028262, + 0.0000028242, 0.0000028242, 0.0000028316, 0.0000028367, 0.0000028337, + 0.0000028330, 0.0000028366, 0.0000028411, 0.0000028404, 0.0000028258, + 0.0000028061, 0.0000028194, 0.0000028309, 0.0000028264, 0.0000028149, + 0.0000028069, 0.0000028097, 0.0000028072, 0.0000028024, 0.0000028065, + 0.0000028033, 0.0000027910, 0.0000027880, 0.0000027948, 0.0000027966, + 0.0000027960, 0.0000027985, 0.0000028011, 0.0000028028, 0.0000028053, + 0.0000028082, 0.0000028158, 0.0000028251, 0.0000028287, 0.0000028280, + 0.0000028246, 0.0000028189, 0.0000028163, 0.0000028143, 0.0000028135, + 0.0000028124, 0.0000028082, 0.0000028053, 0.0000028053, 0.0000028057, + 0.0000028054, 0.0000028054, 0.0000028056, 0.0000028057, 0.0000028056, + 0.0000028043, 0.0000028042, 0.0000028035, 0.0000028023, 0.0000028017, + 0.0000028017, 0.0000028013, 0.0000028000, 0.0000027985, 0.0000027982, + 0.0000028015, 0.0000028058, 0.0000028073, 0.0000028036, 0.0000027966, + 0.0000027870, 0.0000027787, 0.0000027724, 0.0000027671, 0.0000027606, + 0.0000027540, 0.0000027521, 0.0000027600, 0.0000027727, 0.0000027793, + 0.0000027783, 0.0000027726, 0.0000027642, 0.0000027564, 0.0000027508, + 0.0000027439, 0.0000027361, 0.0000027313, 0.0000027278, 0.0000027245, + 0.0000027226, 0.0000027208, 0.0000027173, 0.0000027150, 0.0000027151, + 0.0000027153, 0.0000027143, 0.0000027110, 0.0000027051, 0.0000026997, + 0.0000026968, 0.0000026957, 0.0000026952, 0.0000026965, 0.0000027026, + 0.0000027087, 0.0000027125, 0.0000027151, 0.0000027175, 0.0000027182, + 0.0000027150, 0.0000027076, 0.0000027021, 0.0000027010, 0.0000027009, + 0.0000027005, 0.0000027025, 0.0000027074, 0.0000027136, 0.0000027178, + 0.0000027192, 0.0000027235, 0.0000027294, 0.0000027315, 0.0000027334, + 0.0000027397, 0.0000027450, 0.0000027448, 0.0000027394, 0.0000027314, + 0.0000027143, 0.0000026833, 0.0000026524, 0.0000026403, 0.0000026539, + 0.0000026675, 0.0000026642, 0.0000026943, 0.0000027507, 0.0000027716, + 0.0000027705, 0.0000027670, 0.0000027707, 0.0000027971, 0.0000028212, + 0.0000028236, 0.0000028228, 0.0000028242, 0.0000028208, 0.0000028145, + 0.0000028109, 0.0000028051, 0.0000028009, 0.0000028032, 0.0000028079, + 0.0000028085, 0.0000028016, 0.0000027940, 0.0000027864, 0.0000027742, + 0.0000027642, 0.0000027617, 0.0000027632, 0.0000027655, 0.0000027695, + 0.0000027787, 0.0000027912, 0.0000028001, 0.0000027986, 0.0000027912, + 0.0000027868, 0.0000027873, 0.0000027895, 0.0000027931, 0.0000027929, + 0.0000027924, 0.0000027939, 0.0000028095, 0.0000028312, 0.0000028332, + 0.0000028281, 0.0000028206, 0.0000028097, 0.0000028026, 0.0000028058, + 0.0000028074, 0.0000028028, 0.0000027920, 0.0000027811, 0.0000027689, + 0.0000027576, 0.0000027563, 0.0000027550, 0.0000027509, 0.0000027545, + 0.0000027543, 0.0000027480, 0.0000027315, 0.0000027163, 0.0000027110, + 0.0000027096, 0.0000027110, 0.0000027099, 0.0000027093, 0.0000027036, + 0.0000026904, 0.0000026795, 0.0000026694, 0.0000026625, 0.0000026628, + 0.0000026674, 0.0000026680, 0.0000026638, 0.0000026597, 0.0000026577, + 0.0000026535, 0.0000026457, 0.0000026388, 0.0000026356, 0.0000026350, + 0.0000026340, 0.0000026300, 0.0000026228, 0.0000026142, 0.0000026067, + 0.0000026030, 0.0000026025, 0.0000026036, 0.0000026034, 0.0000026014, + 0.0000025984, 0.0000025953, 0.0000025937, 0.0000025946, 0.0000025951, + 0.0000025952, 0.0000025959, 0.0000025975, 0.0000025997, 0.0000026012, + 0.0000026011, 0.0000025993, 0.0000025955, 0.0000025903, 0.0000025854, + 0.0000025813, 0.0000025800, 0.0000025818, 0.0000025857, 0.0000025898, + 0.0000025912, 0.0000025931, 0.0000025948, 0.0000025962, 0.0000026032, + 0.0000026130, 0.0000026194, 0.0000026251, 0.0000026260, 0.0000026271, + 0.0000026291, 0.0000026294, 0.0000026284, 0.0000026274, 0.0000026259, + 0.0000026270, 0.0000026291, 0.0000026321, 0.0000026365, 0.0000026400, + 0.0000026432, 0.0000026485, 0.0000026578, 0.0000026682, 0.0000026766, + 0.0000026837, 0.0000026895, 0.0000026950, 0.0000026990, 0.0000027008, + 0.0000026996, 0.0000026955, 0.0000026922, 0.0000026913, 0.0000026888, + 0.0000026831, 0.0000026790, 0.0000026819, 0.0000026893, 0.0000026947, + 0.0000027003, 0.0000027042, 0.0000027033, 0.0000027021, 0.0000027064, + 0.0000027207, 0.0000027381, 0.0000027533, 0.0000027685, 0.0000027854, + 0.0000027997, 0.0000028140, 0.0000028272, 0.0000028370, 0.0000028422, + 0.0000028431, 0.0000028429, 0.0000028427, 0.0000028423, 0.0000028415, + 0.0000028393, 0.0000028340, 0.0000028265, 0.0000028209, 0.0000028204, + 0.0000028236, 0.0000028234, 0.0000028181, 0.0000028156, 0.0000028214, + 0.0000028326, 0.0000028386, 0.0000028322, 0.0000028232, 0.0000028173, + 0.0000028123, 0.0000028101, 0.0000028100, 0.0000028132, 0.0000028227, + 0.0000028376, 0.0000028457, 0.0000028452, 0.0000028434, 0.0000028418, + 0.0000028388, 0.0000028374, 0.0000028386, 0.0000028369, 0.0000028304, + 0.0000028213, 0.0000028127, 0.0000028059, 0.0000028020, 0.0000028012, + 0.0000028002, 0.0000028005, 0.0000028049, 0.0000028150, 0.0000028253, + 0.0000028363, 0.0000028494, 0.0000028665, 0.0000028833, 0.0000028923, + 0.0000028966, 0.0000028997, 0.0000029033, 0.0000029036, 0.0000028963, + 0.0000028870, 0.0000028850, 0.0000028850, 0.0000028812, 0.0000028712, + 0.0000028625, 0.0000028555, 0.0000028484, 0.0000028416, 0.0000028363, + 0.0000028319, 0.0000028264, 0.0000028192, 0.0000028146, 0.0000028136, + 0.0000028132, 0.0000028131, 0.0000028154, 0.0000028217, 0.0000028297, + 0.0000028370, 0.0000028441, 0.0000028508, 0.0000028575, 0.0000028627, + 0.0000028660, 0.0000028679, 0.0000028695, 0.0000028725, 0.0000028775, + 0.0000028823, 0.0000028849, 0.0000028849, 0.0000028824, 0.0000028790, + 0.0000028760, 0.0000028744, 0.0000028745, 0.0000028761, 0.0000028788, + 0.0000028807, 0.0000028831, 0.0000028893, 0.0000028973, 0.0000029031, + 0.0000029054, 0.0000029052, 0.0000029026, 0.0000028979, 0.0000028928, + 0.0000028882, 0.0000028849, 0.0000028839, 0.0000028848, 0.0000028865, + 0.0000028872, 0.0000028859, 0.0000028823, 0.0000028772, 0.0000028756, + 0.0000028805, 0.0000028934, 0.0000029045, 0.0000029082, 0.0000029067, + 0.0000029036, 0.0000029018, 0.0000029004, 0.0000028980, 0.0000028966, + 0.0000028975, 0.0000028974, 0.0000028928, 0.0000028832, 0.0000028718, + 0.0000028643, 0.0000028625, 0.0000028632, 0.0000028660, 0.0000028688, + 0.0000028691, 0.0000028681, 0.0000028650, 0.0000028599, 0.0000028543, + 0.0000028508, 0.0000028491, 0.0000028504, 0.0000028551, 0.0000028624, + 0.0000028705, 0.0000028768, 0.0000028823, 0.0000028861, 0.0000028881, + 0.0000028888, 0.0000028868, 0.0000028841, 0.0000028824, 0.0000028844, + 0.0000028871, 0.0000028901, 0.0000028932, 0.0000028960, 0.0000028973, + 0.0000028975, 0.0000028965, 0.0000028948, 0.0000028916, 0.0000028864, + 0.0000028799, 0.0000028741, 0.0000028699, 0.0000028648, 0.0000028599, + 0.0000028564, 0.0000028562, 0.0000028587, 0.0000028603, 0.0000028606, + 0.0000028595, 0.0000028574, 0.0000028554, 0.0000028533, 0.0000028505, + 0.0000028460, 0.0000028410, 0.0000028391, 0.0000028398, 0.0000028368, + 0.0000028282, 0.0000028191, 0.0000028120, 0.0000028067, 0.0000028031, + 0.0000028001, 0.0000027979, 0.0000027952, 0.0000027921, 0.0000027887, + 0.0000027855, 0.0000027834, 0.0000027803, 0.0000027772, 0.0000027737, + 0.0000027717, 0.0000027710, 0.0000027708, 0.0000027728, 0.0000027766, + 0.0000027814, 0.0000027846, 0.0000027866, 0.0000027887, 0.0000027909, + 0.0000027924, 0.0000027950, 0.0000028003, 0.0000028053, 0.0000028066, + 0.0000028039, 0.0000027986, 0.0000027964, 0.0000027998, 0.0000028060, + 0.0000028146, 0.0000028276, 0.0000028409, 0.0000028519, 0.0000028602, + 0.0000028661, 0.0000028713, 0.0000028765, 0.0000028807, 0.0000028829, + 0.0000028823, 0.0000028779, 0.0000028718, 0.0000028665, 0.0000028620, + 0.0000028550, 0.0000028476, 0.0000028441, 0.0000028446, 0.0000028517, + 0.0000028660, 0.0000028786, 0.0000028865, 0.0000028915, 0.0000028938, + 0.0000028914, 0.0000028838, 0.0000028762, 0.0000028730, 0.0000028701, + 0.0000028668, 0.0000028626, 0.0000028583, 0.0000028509, 0.0000028411, + 0.0000028376, 0.0000028492, 0.0000028620, 0.0000028648, 0.0000028679, + 0.0000028870, 0.0000029002, 0.0000028960, 0.0000028868, 0.0000028836, + 0.0000028829, 0.0000028814, 0.0000028826, 0.0000028882, 0.0000028939, + 0.0000028932, 0.0000028843, 0.0000028774, 0.0000028799, 0.0000028864, + 0.0000028914, 0.0000028913, 0.0000028857, 0.0000028781, 0.0000028728, + 0.0000028704, 0.0000028635, 0.0000028540, 0.0000028458, 0.0000028458, + 0.0000028536, 0.0000028600, 0.0000028569, 0.0000028476, 0.0000028420, + 0.0000028476, 0.0000028597, 0.0000028584, 0.0000028486, 0.0000028524, + 0.0000028680, 0.0000028826, 0.0000028918, 0.0000028973, 0.0000029002, + 0.0000028951, 0.0000028846, 0.0000028803, 0.0000028775, 0.0000028652, + 0.0000028475, 0.0000028438, 0.0000028489, 0.0000028634, 0.0000028913, + 0.0000029119, 0.0000029161, 0.0000029129, 0.0000029086, 0.0000029059, + 0.0000029039, 0.0000029002, 0.0000028962, 0.0000028916, 0.0000028875, + 0.0000028858, 0.0000028864, 0.0000028858, 0.0000028758, 0.0000028582, + 0.0000028267, 0.0000028157, 0.0000028156, 0.0000028117, 0.0000028058, + 0.0000027993, 0.0000027813, 0.0000027613, 0.0000027566, 0.0000027603, + 0.0000027648, 0.0000027643, 0.0000027616, 0.0000027537, 0.0000027393, + 0.0000027335, 0.0000027413, 0.0000027527, 0.0000027596, 0.0000027656, + 0.0000027592, 0.0000027560, 0.0000027755, 0.0000027984, 0.0000028008, + 0.0000027932, 0.0000027858, 0.0000027861, 0.0000027928, 0.0000027989, + 0.0000028019, 0.0000028029, 0.0000028036, 0.0000028044, 0.0000028051, + 0.0000028060, 0.0000028074, 0.0000028103, 0.0000028153, 0.0000028214, + 0.0000028262, 0.0000028283, 0.0000028285, 0.0000028287, 0.0000028284, + 0.0000028265, 0.0000028243, 0.0000028248, 0.0000028289, 0.0000028335, + 0.0000028376, 0.0000028401, 0.0000028413, 0.0000028413, 0.0000028398, + 0.0000028370, 0.0000028328, 0.0000028285, 0.0000028256, 0.0000028243, + 0.0000028232, 0.0000028220, 0.0000028210, 0.0000028206, 0.0000028212, + 0.0000028223, 0.0000028247, 0.0000028274, 0.0000028294, 0.0000028320, + 0.0000028356, 0.0000028391, 0.0000028414, 0.0000028441, 0.0000028474, + 0.0000028516, 0.0000028569, 0.0000028620, 0.0000028662, 0.0000028701, + 0.0000028738, 0.0000028761, 0.0000028780, 0.0000028788, 0.0000028813, + 0.0000028838, 0.0000028852, 0.0000028849, 0.0000028822, 0.0000028781, + 0.0000028739, 0.0000028704, 0.0000028681, 0.0000028664, 0.0000028652, + 0.0000028645, 0.0000028642, 0.0000028654, 0.0000028670, 0.0000028664, + 0.0000028625, 0.0000028563, 0.0000028502, 0.0000028498, 0.0000028538, + 0.0000028580, 0.0000028593, 0.0000028595, 0.0000028604, 0.0000028602, + 0.0000028566, 0.0000028524, 0.0000028495, 0.0000028464, 0.0000028407, + 0.0000028336, 0.0000028304, 0.0000028348, 0.0000028464, 0.0000028562, + 0.0000028603, 0.0000028611, 0.0000028604, 0.0000028574, 0.0000028538, + 0.0000028517, 0.0000028493, 0.0000028433, 0.0000028358, 0.0000028321, + 0.0000028321, 0.0000028340, 0.0000028269, 0.0000028068, 0.0000028008, + 0.0000028149, 0.0000028310, 0.0000028345, 0.0000028304, 0.0000028261, + 0.0000028253, 0.0000028266, 0.0000028268, 0.0000028259, 0.0000028270, + 0.0000028310, 0.0000028358, 0.0000028379, 0.0000028377, 0.0000028373, + 0.0000028378, 0.0000028375, 0.0000028363, 0.0000028355, 0.0000028350, + 0.0000028335, 0.0000028320, 0.0000028309, 0.0000028260, 0.0000028217, + 0.0000028257, 0.0000028307, 0.0000028281, 0.0000028245, 0.0000028284, + 0.0000028331, 0.0000028367, 0.0000028304, 0.0000028081, 0.0000028073, + 0.0000028266, 0.0000028276, 0.0000028180, 0.0000028102, 0.0000028082, + 0.0000028112, 0.0000028042, 0.0000028058, 0.0000028060, 0.0000027948, + 0.0000027869, 0.0000027911, 0.0000027960, 0.0000027961, 0.0000027981, + 0.0000027996, 0.0000028011, 0.0000028043, 0.0000028081, 0.0000028161, + 0.0000028248, 0.0000028281, 0.0000028258, 0.0000028212, 0.0000028141, + 0.0000028094, 0.0000028057, 0.0000028032, 0.0000028000, 0.0000027939, + 0.0000027882, 0.0000027864, 0.0000027863, 0.0000027843, 0.0000027821, + 0.0000027796, 0.0000027765, 0.0000027746, 0.0000027734, 0.0000027743, + 0.0000027769, 0.0000027787, 0.0000027805, 0.0000027837, 0.0000027866, + 0.0000027877, 0.0000027884, 0.0000027885, 0.0000027896, 0.0000027932, + 0.0000027975, 0.0000028006, 0.0000028011, 0.0000027971, 0.0000027886, + 0.0000027788, 0.0000027720, 0.0000027675, 0.0000027610, 0.0000027527, + 0.0000027486, 0.0000027521, 0.0000027644, 0.0000027744, 0.0000027751, + 0.0000027698, 0.0000027614, 0.0000027542, 0.0000027473, 0.0000027390, + 0.0000027327, 0.0000027292, 0.0000027254, 0.0000027221, 0.0000027207, + 0.0000027185, 0.0000027162, 0.0000027160, 0.0000027166, 0.0000027160, + 0.0000027143, 0.0000027118, 0.0000027075, 0.0000027023, 0.0000026983, + 0.0000026965, 0.0000026944, 0.0000026921, 0.0000026920, 0.0000026975, + 0.0000027041, 0.0000027093, 0.0000027129, 0.0000027142, 0.0000027104, + 0.0000027030, 0.0000026993, 0.0000026996, 0.0000026995, 0.0000026966, + 0.0000026955, 0.0000027004, 0.0000027092, 0.0000027150, 0.0000027153, + 0.0000027181, 0.0000027251, 0.0000027303, 0.0000027346, 0.0000027411, + 0.0000027442, 0.0000027416, 0.0000027343, 0.0000027270, 0.0000027054, + 0.0000026712, 0.0000026429, 0.0000026369, 0.0000026572, 0.0000026630, + 0.0000026706, 0.0000027271, 0.0000027695, 0.0000027736, 0.0000027708, + 0.0000027696, 0.0000027832, 0.0000028116, 0.0000028246, 0.0000028240, + 0.0000028239, 0.0000028243, 0.0000028204, 0.0000028131, 0.0000028087, + 0.0000028040, 0.0000028004, 0.0000028015, 0.0000028076, 0.0000028111, + 0.0000028059, 0.0000027959, 0.0000027867, 0.0000027745, 0.0000027644, + 0.0000027628, 0.0000027656, 0.0000027693, 0.0000027740, 0.0000027827, + 0.0000027958, 0.0000028050, 0.0000028021, 0.0000027919, 0.0000027856, + 0.0000027845, 0.0000027849, 0.0000027873, 0.0000027879, 0.0000027882, + 0.0000027914, 0.0000028030, 0.0000028265, 0.0000028311, 0.0000028260, + 0.0000028173, 0.0000028060, 0.0000028001, 0.0000028045, 0.0000028053, + 0.0000027990, 0.0000027872, 0.0000027751, 0.0000027635, 0.0000027582, + 0.0000027590, 0.0000027540, 0.0000027510, 0.0000027552, 0.0000027535, + 0.0000027434, 0.0000027230, 0.0000027113, 0.0000027081, 0.0000027069, + 0.0000027077, 0.0000027069, 0.0000027037, 0.0000026909, 0.0000026781, + 0.0000026703, 0.0000026639, 0.0000026623, 0.0000026620, 0.0000026596, + 0.0000026544, 0.0000026522, 0.0000026529, 0.0000026513, 0.0000026450, + 0.0000026377, 0.0000026329, 0.0000026299, 0.0000026255, 0.0000026167, + 0.0000026046, 0.0000025936, 0.0000025865, 0.0000025838, 0.0000025842, + 0.0000025869, 0.0000025909, 0.0000025927, 0.0000025923, 0.0000025912, + 0.0000025902, 0.0000025899, 0.0000025896, 0.0000025883, 0.0000025865, + 0.0000025863, 0.0000025874, 0.0000025889, 0.0000025896, 0.0000025891, + 0.0000025870, 0.0000025841, 0.0000025807, 0.0000025773, 0.0000025756, + 0.0000025759, 0.0000025785, 0.0000025824, 0.0000025865, 0.0000025884, + 0.0000025874, 0.0000025833, 0.0000025771, 0.0000025752, 0.0000025770, + 0.0000025774, 0.0000025800, 0.0000025818, 0.0000025910, 0.0000026035, + 0.0000026148, 0.0000026202, 0.0000026219, 0.0000026192, 0.0000026169, + 0.0000026151, 0.0000026147, 0.0000026177, 0.0000026221, 0.0000026272, + 0.0000026314, 0.0000026339, 0.0000026372, 0.0000026442, 0.0000026559, + 0.0000026679, 0.0000026767, 0.0000026849, 0.0000026928, 0.0000026984, + 0.0000027003, 0.0000026984, 0.0000026923, 0.0000026864, 0.0000026850, + 0.0000026856, 0.0000026847, 0.0000026857, 0.0000026898, 0.0000026931, + 0.0000026957, 0.0000027003, 0.0000027025, 0.0000027022, 0.0000027042, + 0.0000027157, 0.0000027278, 0.0000027361, 0.0000027469, 0.0000027662, + 0.0000027888, 0.0000028108, 0.0000028269, 0.0000028373, 0.0000028439, + 0.0000028462, 0.0000028467, 0.0000028470, 0.0000028469, 0.0000028470, + 0.0000028453, 0.0000028417, 0.0000028342, 0.0000028237, 0.0000028207, + 0.0000028247, 0.0000028260, 0.0000028204, 0.0000028173, 0.0000028227, + 0.0000028335, 0.0000028370, 0.0000028298, 0.0000028200, 0.0000028122, + 0.0000028076, 0.0000028069, 0.0000028089, 0.0000028129, 0.0000028226, + 0.0000028399, 0.0000028490, 0.0000028470, 0.0000028438, 0.0000028415, + 0.0000028402, 0.0000028397, 0.0000028391, 0.0000028347, 0.0000028277, + 0.0000028187, 0.0000028101, 0.0000028050, 0.0000028040, 0.0000028020, + 0.0000028000, 0.0000028035, 0.0000028138, 0.0000028261, 0.0000028395, + 0.0000028539, 0.0000028681, 0.0000028813, 0.0000028897, 0.0000028963, + 0.0000029022, 0.0000029060, 0.0000029043, 0.0000028942, 0.0000028874, + 0.0000028881, 0.0000028886, 0.0000028832, 0.0000028730, 0.0000028647, + 0.0000028601, 0.0000028556, 0.0000028504, 0.0000028457, 0.0000028420, + 0.0000028369, 0.0000028302, 0.0000028261, 0.0000028250, 0.0000028235, + 0.0000028223, 0.0000028241, 0.0000028292, 0.0000028375, 0.0000028463, + 0.0000028547, 0.0000028635, 0.0000028713, 0.0000028762, 0.0000028777, + 0.0000028779, 0.0000028785, 0.0000028807, 0.0000028844, 0.0000028884, + 0.0000028889, 0.0000028876, 0.0000028850, 0.0000028818, 0.0000028787, + 0.0000028769, 0.0000028765, 0.0000028772, 0.0000028806, 0.0000028862, + 0.0000028900, 0.0000028930, 0.0000028992, 0.0000029064, 0.0000029103, + 0.0000029109, 0.0000029096, 0.0000029065, 0.0000029019, 0.0000028971, + 0.0000028930, 0.0000028905, 0.0000028899, 0.0000028902, 0.0000028899, + 0.0000028885, 0.0000028860, 0.0000028840, 0.0000028836, 0.0000028858, + 0.0000028936, 0.0000029021, 0.0000029057, 0.0000029047, 0.0000029012, + 0.0000028971, 0.0000028938, 0.0000028911, 0.0000028895, 0.0000028898, + 0.0000028906, 0.0000028890, 0.0000028836, 0.0000028754, 0.0000028665, + 0.0000028603, 0.0000028586, 0.0000028592, 0.0000028620, 0.0000028648, + 0.0000028654, 0.0000028655, 0.0000028646, 0.0000028610, 0.0000028556, + 0.0000028507, 0.0000028472, 0.0000028455, 0.0000028459, 0.0000028489, + 0.0000028560, 0.0000028668, 0.0000028787, 0.0000028867, 0.0000028912, + 0.0000028914, 0.0000028890, 0.0000028836, 0.0000028776, 0.0000028760, + 0.0000028769, 0.0000028788, 0.0000028810, 0.0000028841, 0.0000028864, + 0.0000028873, 0.0000028880, 0.0000028886, 0.0000028886, 0.0000028861, + 0.0000028809, 0.0000028752, 0.0000028709, 0.0000028664, 0.0000028604, + 0.0000028543, 0.0000028515, 0.0000028539, 0.0000028579, 0.0000028599, + 0.0000028598, 0.0000028575, 0.0000028539, 0.0000028510, 0.0000028494, + 0.0000028475, 0.0000028437, 0.0000028395, 0.0000028380, 0.0000028347, + 0.0000028220, 0.0000028054, 0.0000027955, 0.0000027923, 0.0000027908, + 0.0000027895, 0.0000027886, 0.0000027889, 0.0000027879, 0.0000027865, + 0.0000027844, 0.0000027824, 0.0000027797, 0.0000027750, 0.0000027711, + 0.0000027672, 0.0000027657, 0.0000027675, 0.0000027691, 0.0000027750, + 0.0000027816, 0.0000027871, 0.0000027902, 0.0000027925, 0.0000027948, + 0.0000027958, 0.0000027956, 0.0000027973, 0.0000028029, 0.0000028094, + 0.0000028130, 0.0000028116, 0.0000028054, 0.0000027973, 0.0000027950, + 0.0000027933, 0.0000027978, 0.0000028103, 0.0000028276, 0.0000028442, + 0.0000028574, 0.0000028656, 0.0000028698, 0.0000028725, 0.0000028748, + 0.0000028778, 0.0000028807, 0.0000028796, 0.0000028777, 0.0000028740, + 0.0000028693, 0.0000028619, 0.0000028526, 0.0000028465, 0.0000028450, + 0.0000028494, 0.0000028597, 0.0000028724, 0.0000028830, 0.0000028895, + 0.0000028930, 0.0000028921, 0.0000028891, 0.0000028831, 0.0000028778, + 0.0000028726, 0.0000028682, 0.0000028625, 0.0000028565, 0.0000028498, + 0.0000028420, 0.0000028368, 0.0000028420, 0.0000028570, 0.0000028645, + 0.0000028653, 0.0000028784, 0.0000028973, 0.0000028975, 0.0000028879, + 0.0000028834, 0.0000028833, 0.0000028833, 0.0000028859, 0.0000028917, + 0.0000028941, 0.0000028905, 0.0000028817, 0.0000028783, 0.0000028845, + 0.0000028915, 0.0000028944, 0.0000028927, 0.0000028855, 0.0000028765, + 0.0000028691, 0.0000028639, 0.0000028552, 0.0000028446, 0.0000028345, + 0.0000028326, 0.0000028420, 0.0000028537, 0.0000028534, 0.0000028453, + 0.0000028382, 0.0000028399, 0.0000028556, 0.0000028628, 0.0000028535, + 0.0000028518, 0.0000028646, 0.0000028811, 0.0000028936, 0.0000029009, + 0.0000029024, 0.0000028956, 0.0000028864, 0.0000028828, 0.0000028766, + 0.0000028629, 0.0000028474, 0.0000028451, 0.0000028515, 0.0000028630, + 0.0000028855, 0.0000029074, 0.0000029164, 0.0000029153, 0.0000029126, + 0.0000029093, 0.0000029066, 0.0000029020, 0.0000028975, 0.0000028926, + 0.0000028876, 0.0000028838, 0.0000028832, 0.0000028843, 0.0000028776, + 0.0000028619, 0.0000028303, 0.0000028155, 0.0000028155, 0.0000028124, + 0.0000028068, 0.0000028016, 0.0000027838, 0.0000027605, 0.0000027521, + 0.0000027557, 0.0000027609, 0.0000027603, 0.0000027573, 0.0000027530, + 0.0000027410, 0.0000027296, 0.0000027313, 0.0000027446, 0.0000027509, + 0.0000027566, 0.0000027618, 0.0000027546, 0.0000027541, 0.0000027780, + 0.0000027975, 0.0000027958, 0.0000027858, 0.0000027771, 0.0000027765, + 0.0000027807, 0.0000027856, 0.0000027891, 0.0000027915, 0.0000027940, + 0.0000027962, 0.0000027987, 0.0000028020, 0.0000028061, 0.0000028108, + 0.0000028151, 0.0000028173, 0.0000028176, 0.0000028167, 0.0000028152, + 0.0000028134, 0.0000028120, 0.0000028130, 0.0000028180, 0.0000028253, + 0.0000028308, 0.0000028336, 0.0000028368, 0.0000028394, 0.0000028410, + 0.0000028410, 0.0000028388, 0.0000028339, 0.0000028279, 0.0000028229, + 0.0000028199, 0.0000028182, 0.0000028170, 0.0000028168, 0.0000028175, + 0.0000028187, 0.0000028203, 0.0000028220, 0.0000028234, 0.0000028241, + 0.0000028251, 0.0000028272, 0.0000028299, 0.0000028322, 0.0000028335, + 0.0000028353, 0.0000028393, 0.0000028447, 0.0000028499, 0.0000028543, + 0.0000028580, 0.0000028612, 0.0000028636, 0.0000028650, 0.0000028670, + 0.0000028709, 0.0000028760, 0.0000028807, 0.0000028847, 0.0000028861, + 0.0000028884, 0.0000028887, 0.0000028881, 0.0000028861, 0.0000028830, + 0.0000028792, 0.0000028761, 0.0000028746, 0.0000028753, 0.0000028782, + 0.0000028805, 0.0000028797, 0.0000028752, 0.0000028680, 0.0000028592, + 0.0000028550, 0.0000028561, 0.0000028582, 0.0000028582, 0.0000028574, + 0.0000028575, 0.0000028578, 0.0000028561, 0.0000028531, 0.0000028496, + 0.0000028450, 0.0000028396, 0.0000028349, 0.0000028336, 0.0000028370, + 0.0000028470, 0.0000028589, 0.0000028661, 0.0000028677, 0.0000028664, + 0.0000028616, 0.0000028556, 0.0000028517, 0.0000028497, 0.0000028463, + 0.0000028385, 0.0000028319, 0.0000028291, 0.0000028294, 0.0000028269, + 0.0000028117, 0.0000027992, 0.0000028050, 0.0000028219, 0.0000028311, + 0.0000028305, 0.0000028273, 0.0000028254, 0.0000028254, 0.0000028260, + 0.0000028270, 0.0000028294, 0.0000028323, 0.0000028348, 0.0000028351, + 0.0000028346, 0.0000028328, 0.0000028331, 0.0000028336, 0.0000028338, + 0.0000028352, 0.0000028361, 0.0000028365, 0.0000028359, 0.0000028343, + 0.0000028287, 0.0000028222, 0.0000028229, 0.0000028261, 0.0000028259, + 0.0000028219, 0.0000028228, 0.0000028256, 0.0000028297, 0.0000028310, + 0.0000028154, 0.0000027985, 0.0000028156, 0.0000028265, 0.0000028207, + 0.0000028142, 0.0000028072, 0.0000028123, 0.0000028076, 0.0000028036, + 0.0000028064, 0.0000028013, 0.0000027892, 0.0000027874, 0.0000027940, + 0.0000027965, 0.0000027973, 0.0000027991, 0.0000027999, 0.0000028007, + 0.0000028033, 0.0000028111, 0.0000028206, 0.0000028253, 0.0000028241, + 0.0000028210, 0.0000028152, 0.0000028116, 0.0000028085, 0.0000028081, + 0.0000028066, 0.0000028031, 0.0000027975, 0.0000027936, 0.0000027911, + 0.0000027868, 0.0000027822, 0.0000027768, 0.0000027715, 0.0000027659, + 0.0000027606, 0.0000027558, 0.0000027537, 0.0000027525, 0.0000027520, + 0.0000027544, 0.0000027597, 0.0000027648, 0.0000027698, 0.0000027735, + 0.0000027756, 0.0000027790, 0.0000027835, 0.0000027875, 0.0000027896, + 0.0000027906, 0.0000027902, 0.0000027850, 0.0000027761, 0.0000027691, + 0.0000027648, 0.0000027588, 0.0000027507, 0.0000027450, 0.0000027467, + 0.0000027587, 0.0000027707, 0.0000027723, 0.0000027655, 0.0000027572, + 0.0000027499, 0.0000027409, 0.0000027335, 0.0000027301, 0.0000027269, + 0.0000027230, 0.0000027213, 0.0000027201, 0.0000027182, 0.0000027179, + 0.0000027189, 0.0000027187, 0.0000027167, 0.0000027139, 0.0000027113, + 0.0000027089, 0.0000027051, 0.0000027008, 0.0000026985, 0.0000026962, + 0.0000026912, 0.0000026878, 0.0000026885, 0.0000026940, 0.0000027006, + 0.0000027070, 0.0000027104, 0.0000027065, 0.0000026994, 0.0000026953, + 0.0000026957, 0.0000026955, 0.0000026918, 0.0000026895, 0.0000026938, + 0.0000027036, 0.0000027105, 0.0000027114, 0.0000027125, 0.0000027210, + 0.0000027305, 0.0000027358, 0.0000027410, 0.0000027428, 0.0000027377, + 0.0000027299, 0.0000027227, 0.0000026948, 0.0000026588, 0.0000026337, + 0.0000026374, 0.0000026585, 0.0000026607, 0.0000026916, 0.0000027534, + 0.0000027751, 0.0000027740, 0.0000027723, 0.0000027759, 0.0000027971, + 0.0000028192, 0.0000028252, 0.0000028245, 0.0000028245, 0.0000028248, + 0.0000028214, 0.0000028128, 0.0000028070, 0.0000028036, 0.0000027998, + 0.0000027991, 0.0000028042, 0.0000028092, 0.0000028076, 0.0000027998, + 0.0000027896, 0.0000027789, 0.0000027693, 0.0000027662, 0.0000027686, + 0.0000027734, 0.0000027792, 0.0000027860, 0.0000027984, 0.0000028089, + 0.0000028065, 0.0000027942, 0.0000027845, 0.0000027810, 0.0000027797, + 0.0000027808, 0.0000027820, 0.0000027829, 0.0000027893, 0.0000027980, + 0.0000028212, 0.0000028285, 0.0000028234, 0.0000028138, 0.0000028023, + 0.0000027975, 0.0000028030, 0.0000028031, 0.0000027948, 0.0000027817, + 0.0000027695, 0.0000027612, 0.0000027608, 0.0000027604, 0.0000027525, + 0.0000027522, 0.0000027553, 0.0000027524, 0.0000027367, 0.0000027154, + 0.0000027079, 0.0000027047, 0.0000027036, 0.0000027044, 0.0000027043, + 0.0000026964, 0.0000026792, 0.0000026677, 0.0000026626, 0.0000026608, + 0.0000026597, 0.0000026546, 0.0000026475, 0.0000026449, 0.0000026463, + 0.0000026471, 0.0000026438, 0.0000026374, 0.0000026314, 0.0000026253, + 0.0000026159, 0.0000026035, 0.0000025908, 0.0000025811, 0.0000025762, + 0.0000025758, 0.0000025763, 0.0000025767, 0.0000025779, 0.0000025806, + 0.0000025831, 0.0000025838, 0.0000025836, 0.0000025830, 0.0000025827, + 0.0000025816, 0.0000025798, 0.0000025775, 0.0000025760, 0.0000025760, + 0.0000025768, 0.0000025773, 0.0000025763, 0.0000025737, 0.0000025704, + 0.0000025662, 0.0000025615, 0.0000025584, 0.0000025582, 0.0000025610, + 0.0000025653, 0.0000025697, 0.0000025735, 0.0000025752, 0.0000025744, + 0.0000025721, 0.0000025720, 0.0000025732, 0.0000025695, 0.0000025627, + 0.0000025517, 0.0000025458, 0.0000025526, 0.0000025680, 0.0000025821, + 0.0000025964, 0.0000026042, 0.0000026068, 0.0000026064, 0.0000026060, + 0.0000026082, 0.0000026116, 0.0000026140, 0.0000026154, 0.0000026170, + 0.0000026216, 0.0000026281, 0.0000026338, 0.0000026391, 0.0000026477, + 0.0000026612, 0.0000026736, 0.0000026828, 0.0000026908, 0.0000026964, + 0.0000026971, 0.0000026923, 0.0000026854, 0.0000026824, 0.0000026847, + 0.0000026893, 0.0000026908, 0.0000026908, 0.0000026907, 0.0000026919, + 0.0000026959, 0.0000027011, 0.0000027027, 0.0000027041, 0.0000027108, + 0.0000027205, 0.0000027267, 0.0000027325, 0.0000027459, 0.0000027673, + 0.0000027961, 0.0000028193, 0.0000028322, 0.0000028406, 0.0000028434, + 0.0000028431, 0.0000028420, 0.0000028418, 0.0000028414, 0.0000028407, + 0.0000028408, 0.0000028381, 0.0000028315, 0.0000028251, 0.0000028264, + 0.0000028297, 0.0000028238, 0.0000028187, 0.0000028246, 0.0000028346, + 0.0000028372, 0.0000028293, 0.0000028177, 0.0000028091, 0.0000028059, + 0.0000028068, 0.0000028106, 0.0000028143, 0.0000028228, 0.0000028413, + 0.0000028507, 0.0000028475, 0.0000028432, 0.0000028423, 0.0000028439, + 0.0000028425, 0.0000028385, 0.0000028317, 0.0000028242, 0.0000028162, + 0.0000028113, 0.0000028096, 0.0000028082, 0.0000028050, 0.0000028068, + 0.0000028155, 0.0000028275, 0.0000028392, 0.0000028512, 0.0000028625, + 0.0000028746, 0.0000028853, 0.0000028937, 0.0000029017, 0.0000029056, + 0.0000029021, 0.0000028931, 0.0000028887, 0.0000028908, 0.0000028908, + 0.0000028826, 0.0000028726, 0.0000028668, 0.0000028629, 0.0000028600, + 0.0000028562, 0.0000028529, 0.0000028507, 0.0000028480, 0.0000028442, + 0.0000028403, 0.0000028362, 0.0000028326, 0.0000028315, 0.0000028346, + 0.0000028399, 0.0000028464, 0.0000028547, 0.0000028642, 0.0000028733, + 0.0000028803, 0.0000028840, 0.0000028849, 0.0000028852, 0.0000028869, + 0.0000028895, 0.0000028921, 0.0000028912, 0.0000028891, 0.0000028857, + 0.0000028830, 0.0000028817, 0.0000028811, 0.0000028810, 0.0000028805, + 0.0000028785, 0.0000028783, 0.0000028839, 0.0000028930, 0.0000028981, + 0.0000029023, 0.0000029095, 0.0000029149, 0.0000029159, 0.0000029147, + 0.0000029123, 0.0000029088, 0.0000029048, 0.0000029007, 0.0000028972, + 0.0000028946, 0.0000028935, 0.0000028930, 0.0000028913, 0.0000028891, + 0.0000028877, 0.0000028888, 0.0000028908, 0.0000028948, 0.0000028999, + 0.0000029029, 0.0000029022, 0.0000028987, 0.0000028936, 0.0000028881, + 0.0000028836, 0.0000028810, 0.0000028796, 0.0000028798, 0.0000028810, + 0.0000028804, 0.0000028772, 0.0000028721, 0.0000028661, 0.0000028609, + 0.0000028583, 0.0000028582, 0.0000028599, 0.0000028609, 0.0000028598, + 0.0000028586, 0.0000028572, 0.0000028543, 0.0000028503, 0.0000028458, + 0.0000028417, 0.0000028401, 0.0000028402, 0.0000028421, 0.0000028458, + 0.0000028517, 0.0000028612, 0.0000028733, 0.0000028840, 0.0000028904, + 0.0000028910, 0.0000028871, 0.0000028810, 0.0000028765, 0.0000028748, + 0.0000028735, 0.0000028726, 0.0000028728, 0.0000028740, 0.0000028746, + 0.0000028751, 0.0000028764, 0.0000028786, 0.0000028791, 0.0000028761, + 0.0000028719, 0.0000028687, 0.0000028656, 0.0000028613, 0.0000028555, + 0.0000028510, 0.0000028508, 0.0000028538, 0.0000028565, 0.0000028574, + 0.0000028571, 0.0000028547, 0.0000028504, 0.0000028462, 0.0000028446, + 0.0000028441, 0.0000028418, 0.0000028388, 0.0000028378, 0.0000028327, + 0.0000028130, 0.0000027943, 0.0000027865, 0.0000027884, 0.0000027901, + 0.0000027900, 0.0000027898, 0.0000027901, 0.0000027893, 0.0000027877, + 0.0000027854, 0.0000027817, 0.0000027779, 0.0000027717, 0.0000027692, + 0.0000027688, 0.0000027722, 0.0000027780, 0.0000027845, 0.0000027931, + 0.0000028002, 0.0000028037, 0.0000028059, 0.0000028082, 0.0000028099, + 0.0000028095, 0.0000028070, 0.0000028056, 0.0000028072, 0.0000028108, + 0.0000028131, 0.0000028130, 0.0000028097, 0.0000028028, 0.0000027957, + 0.0000027898, 0.0000027860, 0.0000027917, 0.0000028083, 0.0000028302, + 0.0000028494, 0.0000028624, 0.0000028684, 0.0000028702, 0.0000028704, + 0.0000028722, 0.0000028757, 0.0000028776, 0.0000028779, 0.0000028771, + 0.0000028747, 0.0000028690, 0.0000028606, 0.0000028535, 0.0000028499, + 0.0000028506, 0.0000028552, 0.0000028646, 0.0000028762, 0.0000028848, + 0.0000028899, 0.0000028921, 0.0000028921, 0.0000028884, 0.0000028827, + 0.0000028760, 0.0000028692, 0.0000028611, 0.0000028521, 0.0000028458, + 0.0000028402, 0.0000028365, 0.0000028381, 0.0000028478, 0.0000028605, + 0.0000028630, 0.0000028691, 0.0000028895, 0.0000028969, 0.0000028903, + 0.0000028836, 0.0000028835, 0.0000028853, 0.0000028891, 0.0000028944, + 0.0000028950, 0.0000028877, 0.0000028792, 0.0000028787, 0.0000028866, + 0.0000028939, 0.0000028957, 0.0000028934, 0.0000028853, 0.0000028757, + 0.0000028670, 0.0000028594, 0.0000028495, 0.0000028375, 0.0000028253, + 0.0000028200, 0.0000028278, 0.0000028445, 0.0000028492, 0.0000028439, + 0.0000028376, 0.0000028354, 0.0000028489, 0.0000028647, 0.0000028599, + 0.0000028531, 0.0000028617, 0.0000028793, 0.0000028951, 0.0000029040, + 0.0000029044, 0.0000028955, 0.0000028877, 0.0000028847, 0.0000028753, + 0.0000028602, 0.0000028467, 0.0000028460, 0.0000028545, 0.0000028645, + 0.0000028813, 0.0000029016, 0.0000029143, 0.0000029165, 0.0000029152, + 0.0000029119, 0.0000029079, 0.0000029015, 0.0000028946, 0.0000028877, + 0.0000028827, 0.0000028805, 0.0000028799, 0.0000028813, 0.0000028783, + 0.0000028635, 0.0000028327, 0.0000028155, 0.0000028150, 0.0000028121, + 0.0000028060, 0.0000028023, 0.0000027863, 0.0000027614, 0.0000027486, + 0.0000027489, 0.0000027531, 0.0000027539, 0.0000027514, 0.0000027496, + 0.0000027429, 0.0000027316, 0.0000027290, 0.0000027380, 0.0000027458, + 0.0000027462, 0.0000027535, 0.0000027578, 0.0000027501, 0.0000027535, + 0.0000027796, 0.0000027945, 0.0000027903, 0.0000027800, 0.0000027704, + 0.0000027672, 0.0000027699, 0.0000027747, 0.0000027799, 0.0000027852, + 0.0000027894, 0.0000027928, 0.0000027960, 0.0000027989, 0.0000028017, + 0.0000028044, 0.0000028060, 0.0000028061, 0.0000028042, 0.0000028008, + 0.0000027988, 0.0000027994, 0.0000028036, 0.0000028109, 0.0000028183, + 0.0000028231, 0.0000028249, 0.0000028265, 0.0000028294, 0.0000028319, + 0.0000028329, 0.0000028316, 0.0000028275, 0.0000028217, 0.0000028159, + 0.0000028124, 0.0000028115, 0.0000028115, 0.0000028120, 0.0000028131, + 0.0000028140, 0.0000028154, 0.0000028173, 0.0000028189, 0.0000028192, + 0.0000028188, 0.0000028193, 0.0000028214, 0.0000028238, 0.0000028249, + 0.0000028248, 0.0000028253, 0.0000028281, 0.0000028319, 0.0000028355, + 0.0000028392, 0.0000028427, 0.0000028451, 0.0000028461, 0.0000028469, + 0.0000028502, 0.0000028557, 0.0000028620, 0.0000028677, 0.0000028732, + 0.0000028782, 0.0000028833, 0.0000028881, 0.0000028903, 0.0000028928, + 0.0000028932, 0.0000028927, 0.0000028915, 0.0000028910, 0.0000028915, + 0.0000028925, 0.0000028929, 0.0000028917, 0.0000028879, 0.0000028806, + 0.0000028706, 0.0000028630, 0.0000028600, 0.0000028592, 0.0000028582, + 0.0000028571, 0.0000028565, 0.0000028560, 0.0000028551, 0.0000028527, + 0.0000028489, 0.0000028435, 0.0000028383, 0.0000028352, 0.0000028361, + 0.0000028407, 0.0000028496, 0.0000028617, 0.0000028702, 0.0000028725, + 0.0000028707, 0.0000028652, 0.0000028579, 0.0000028513, 0.0000028474, + 0.0000028453, 0.0000028398, 0.0000028317, 0.0000028263, 0.0000028240, + 0.0000028219, 0.0000028138, 0.0000028024, 0.0000028027, 0.0000028143, + 0.0000028258, 0.0000028286, 0.0000028266, 0.0000028238, 0.0000028225, + 0.0000028229, 0.0000028253, 0.0000028291, 0.0000028332, 0.0000028367, + 0.0000028371, 0.0000028349, 0.0000028306, 0.0000028294, 0.0000028299, + 0.0000028302, 0.0000028314, 0.0000028331, 0.0000028353, 0.0000028363, + 0.0000028346, 0.0000028302, 0.0000028252, 0.0000028237, 0.0000028246, + 0.0000028258, 0.0000028243, 0.0000028199, 0.0000028196, 0.0000028225, + 0.0000028278, 0.0000028222, 0.0000027992, 0.0000028003, 0.0000028200, + 0.0000028217, 0.0000028176, 0.0000028092, 0.0000028095, 0.0000028106, + 0.0000028024, 0.0000028033, 0.0000028053, 0.0000027970, 0.0000027874, + 0.0000027892, 0.0000027945, 0.0000027970, 0.0000027987, 0.0000028021, + 0.0000028038, 0.0000028058, 0.0000028111, 0.0000028191, 0.0000028242, + 0.0000028251, 0.0000028237, 0.0000028198, 0.0000028177, 0.0000028149, + 0.0000028144, 0.0000028132, 0.0000028105, 0.0000028057, 0.0000028020, + 0.0000028012, 0.0000028000, 0.0000027980, 0.0000027923, 0.0000027826, + 0.0000027720, 0.0000027625, 0.0000027542, 0.0000027482, 0.0000027443, + 0.0000027414, 0.0000027400, 0.0000027417, 0.0000027450, 0.0000027490, + 0.0000027531, 0.0000027561, 0.0000027593, 0.0000027643, 0.0000027703, + 0.0000027748, 0.0000027773, 0.0000027791, 0.0000027800, 0.0000027777, + 0.0000027707, 0.0000027641, 0.0000027602, 0.0000027545, 0.0000027471, + 0.0000027412, 0.0000027431, 0.0000027564, 0.0000027682, 0.0000027669, + 0.0000027587, 0.0000027508, 0.0000027413, 0.0000027322, 0.0000027289, + 0.0000027270, 0.0000027236, 0.0000027221, 0.0000027220, 0.0000027207, + 0.0000027199, 0.0000027203, 0.0000027202, 0.0000027190, 0.0000027166, + 0.0000027135, 0.0000027109, 0.0000027091, 0.0000027068, 0.0000027032, + 0.0000027007, 0.0000026992, 0.0000026943, 0.0000026868, 0.0000026836, + 0.0000026855, 0.0000026916, 0.0000026995, 0.0000027042, 0.0000027034, + 0.0000026978, 0.0000026936, 0.0000026919, 0.0000026895, 0.0000026854, + 0.0000026834, 0.0000026871, 0.0000026972, 0.0000027053, 0.0000027073, + 0.0000027079, 0.0000027172, 0.0000027295, 0.0000027365, 0.0000027414, + 0.0000027411, 0.0000027337, 0.0000027264, 0.0000027164, 0.0000026830, + 0.0000026478, 0.0000026267, 0.0000026401, 0.0000026577, 0.0000026620, + 0.0000027157, 0.0000027666, 0.0000027752, 0.0000027740, 0.0000027758, + 0.0000027853, 0.0000028076, 0.0000028222, 0.0000028247, 0.0000028244, + 0.0000028244, 0.0000028251, 0.0000028229, 0.0000028148, 0.0000028070, + 0.0000028039, 0.0000028010, 0.0000027990, 0.0000027997, 0.0000028024, + 0.0000028035, 0.0000028004, 0.0000027930, 0.0000027836, 0.0000027760, + 0.0000027726, 0.0000027739, 0.0000027778, 0.0000027832, 0.0000027890, + 0.0000027995, 0.0000028109, 0.0000028105, 0.0000027980, 0.0000027849, + 0.0000027777, 0.0000027741, 0.0000027741, 0.0000027757, 0.0000027775, + 0.0000027868, 0.0000027942, 0.0000028162, 0.0000028256, 0.0000028204, + 0.0000028100, 0.0000027986, 0.0000027949, 0.0000028013, 0.0000028006, + 0.0000027902, 0.0000027761, 0.0000027647, 0.0000027609, 0.0000027636, + 0.0000027603, 0.0000027518, 0.0000027535, 0.0000027548, 0.0000027500, + 0.0000027288, 0.0000027094, 0.0000027052, 0.0000027011, 0.0000027003, + 0.0000027022, 0.0000027011, 0.0000026881, 0.0000026694, 0.0000026599, + 0.0000026580, 0.0000026569, 0.0000026521, 0.0000026445, 0.0000026392, + 0.0000026388, 0.0000026403, 0.0000026413, 0.0000026380, 0.0000026301, + 0.0000026208, 0.0000026089, 0.0000025938, 0.0000025812, 0.0000025758, + 0.0000025746, 0.0000025748, 0.0000025760, 0.0000025762, 0.0000025747, + 0.0000025731, 0.0000025729, 0.0000025739, 0.0000025743, 0.0000025747, + 0.0000025751, 0.0000025769, 0.0000025770, 0.0000025766, 0.0000025759, + 0.0000025751, 0.0000025755, 0.0000025765, 0.0000025770, 0.0000025758, + 0.0000025731, 0.0000025696, 0.0000025654, 0.0000025598, 0.0000025542, + 0.0000025512, 0.0000025512, 0.0000025524, 0.0000025540, 0.0000025549, + 0.0000025559, 0.0000025549, 0.0000025540, 0.0000025545, 0.0000025576, + 0.0000025576, 0.0000025567, 0.0000025512, 0.0000025447, 0.0000025375, + 0.0000025391, 0.0000025362, 0.0000025456, 0.0000025584, 0.0000025712, + 0.0000025822, 0.0000025899, 0.0000025948, 0.0000025979, 0.0000026006, + 0.0000026040, 0.0000026061, 0.0000026078, 0.0000026106, 0.0000026170, + 0.0000026261, 0.0000026344, 0.0000026396, 0.0000026461, 0.0000026578, + 0.0000026706, 0.0000026797, 0.0000026856, 0.0000026888, 0.0000026888, + 0.0000026869, 0.0000026842, 0.0000026854, 0.0000026911, 0.0000026945, + 0.0000026922, 0.0000026881, 0.0000026875, 0.0000026909, 0.0000026978, + 0.0000027028, 0.0000027051, 0.0000027080, 0.0000027147, 0.0000027212, + 0.0000027247, 0.0000027313, 0.0000027459, 0.0000027715, 0.0000027987, + 0.0000028162, 0.0000028270, 0.0000028316, 0.0000028292, 0.0000028250, + 0.0000028233, 0.0000028228, 0.0000028240, 0.0000028292, 0.0000028359, + 0.0000028357, 0.0000028304, 0.0000028300, 0.0000028325, 0.0000028268, + 0.0000028200, 0.0000028266, 0.0000028358, 0.0000028387, 0.0000028306, + 0.0000028181, 0.0000028083, 0.0000028063, 0.0000028093, 0.0000028135, + 0.0000028158, 0.0000028233, 0.0000028407, 0.0000028497, 0.0000028464, + 0.0000028428, 0.0000028452, 0.0000028478, 0.0000028441, 0.0000028364, + 0.0000028273, 0.0000028194, 0.0000028152, 0.0000028140, 0.0000028135, + 0.0000028124, 0.0000028125, 0.0000028176, 0.0000028254, 0.0000028346, + 0.0000028435, 0.0000028540, 0.0000028665, 0.0000028796, 0.0000028900, + 0.0000028980, 0.0000029008, 0.0000028977, 0.0000028923, 0.0000028918, + 0.0000028924, 0.0000028899, 0.0000028812, 0.0000028725, 0.0000028684, + 0.0000028655, 0.0000028611, 0.0000028582, 0.0000028567, 0.0000028574, + 0.0000028590, 0.0000028593, 0.0000028566, 0.0000028494, 0.0000028423, + 0.0000028412, 0.0000028455, 0.0000028521, 0.0000028589, 0.0000028649, + 0.0000028725, 0.0000028807, 0.0000028857, 0.0000028881, 0.0000028890, + 0.0000028904, 0.0000028936, 0.0000028966, 0.0000028957, 0.0000028934, + 0.0000028885, 0.0000028817, 0.0000028757, 0.0000028737, 0.0000028754, + 0.0000028797, 0.0000028835, 0.0000028834, 0.0000028792, 0.0000028792, + 0.0000028886, 0.0000028999, 0.0000029051, 0.0000029113, 0.0000029186, + 0.0000029206, 0.0000029189, 0.0000029161, 0.0000029134, 0.0000029107, + 0.0000029078, 0.0000029041, 0.0000028999, 0.0000028971, 0.0000028966, + 0.0000028962, 0.0000028939, 0.0000028923, 0.0000028930, 0.0000028954, + 0.0000028969, 0.0000028981, 0.0000028992, 0.0000028990, 0.0000028963, + 0.0000028912, 0.0000028849, 0.0000028788, 0.0000028742, 0.0000028708, + 0.0000028684, 0.0000028691, 0.0000028728, 0.0000028747, 0.0000028733, + 0.0000028695, 0.0000028649, 0.0000028612, 0.0000028585, 0.0000028579, + 0.0000028588, 0.0000028593, 0.0000028577, 0.0000028552, 0.0000028522, + 0.0000028483, 0.0000028439, 0.0000028389, 0.0000028336, 0.0000028292, + 0.0000028278, 0.0000028296, 0.0000028345, 0.0000028406, 0.0000028475, + 0.0000028561, 0.0000028660, 0.0000028748, 0.0000028809, 0.0000028829, + 0.0000028808, 0.0000028786, 0.0000028769, 0.0000028757, 0.0000028736, + 0.0000028705, 0.0000028684, 0.0000028667, 0.0000028649, 0.0000028645, + 0.0000028661, 0.0000028676, 0.0000028653, 0.0000028613, 0.0000028579, + 0.0000028567, 0.0000028549, 0.0000028523, 0.0000028497, 0.0000028495, + 0.0000028520, 0.0000028546, 0.0000028555, 0.0000028551, 0.0000028536, + 0.0000028508, 0.0000028464, 0.0000028415, 0.0000028390, 0.0000028391, + 0.0000028389, 0.0000028381, 0.0000028380, 0.0000028328, 0.0000028092, + 0.0000027878, 0.0000027840, 0.0000027888, 0.0000027916, 0.0000027916, + 0.0000027902, 0.0000027890, 0.0000027876, 0.0000027866, 0.0000027854, + 0.0000027838, 0.0000027831, 0.0000027828, 0.0000027863, 0.0000027927, + 0.0000027998, 0.0000028059, 0.0000028118, 0.0000028173, 0.0000028197, + 0.0000028204, 0.0000028217, 0.0000028246, 0.0000028269, 0.0000028269, + 0.0000028244, 0.0000028217, 0.0000028194, 0.0000028178, 0.0000028152, + 0.0000028125, 0.0000028095, 0.0000028057, 0.0000027994, 0.0000027914, + 0.0000027832, 0.0000027794, 0.0000027884, 0.0000028086, 0.0000028319, + 0.0000028511, 0.0000028629, 0.0000028678, 0.0000028678, 0.0000028682, + 0.0000028706, 0.0000028728, 0.0000028741, 0.0000028752, 0.0000028756, + 0.0000028739, 0.0000028692, 0.0000028635, 0.0000028587, 0.0000028558, + 0.0000028553, 0.0000028590, 0.0000028670, 0.0000028753, 0.0000028816, + 0.0000028875, 0.0000028907, 0.0000028891, 0.0000028854, 0.0000028791, + 0.0000028704, 0.0000028603, 0.0000028484, 0.0000028407, 0.0000028347, + 0.0000028325, 0.0000028357, 0.0000028394, 0.0000028514, 0.0000028590, + 0.0000028622, 0.0000028780, 0.0000028943, 0.0000028930, 0.0000028847, + 0.0000028836, 0.0000028875, 0.0000028926, 0.0000028970, 0.0000028964, + 0.0000028866, 0.0000028774, 0.0000028777, 0.0000028854, 0.0000028930, + 0.0000028951, 0.0000028925, 0.0000028843, 0.0000028753, 0.0000028668, + 0.0000028583, 0.0000028477, 0.0000028345, 0.0000028205, 0.0000028116, + 0.0000028151, 0.0000028331, 0.0000028439, 0.0000028423, 0.0000028379, + 0.0000028346, 0.0000028420, 0.0000028635, 0.0000028659, 0.0000028563, + 0.0000028597, 0.0000028771, 0.0000028962, 0.0000029067, 0.0000029061, + 0.0000028957, 0.0000028889, 0.0000028854, 0.0000028734, 0.0000028575, + 0.0000028457, 0.0000028464, 0.0000028570, 0.0000028666, 0.0000028787, + 0.0000028953, 0.0000029097, 0.0000029157, 0.0000029150, 0.0000029117, + 0.0000029057, 0.0000028980, 0.0000028904, 0.0000028819, 0.0000028747, + 0.0000028737, 0.0000028758, 0.0000028782, 0.0000028775, 0.0000028636, + 0.0000028336, 0.0000028152, 0.0000028144, 0.0000028108, 0.0000028044, + 0.0000028021, 0.0000027895, 0.0000027650, 0.0000027488, 0.0000027446, + 0.0000027455, 0.0000027464, 0.0000027458, 0.0000027456, 0.0000027437, + 0.0000027362, 0.0000027309, 0.0000027349, 0.0000027422, 0.0000027426, + 0.0000027418, 0.0000027516, 0.0000027541, 0.0000027468, 0.0000027536, + 0.0000027789, 0.0000027906, 0.0000027866, 0.0000027762, 0.0000027651, + 0.0000027602, 0.0000027613, 0.0000027656, 0.0000027718, 0.0000027775, + 0.0000027812, 0.0000027836, 0.0000027852, 0.0000027869, 0.0000027893, + 0.0000027912, 0.0000027911, 0.0000027890, 0.0000027864, 0.0000027858, + 0.0000027892, 0.0000027951, 0.0000028019, 0.0000028075, 0.0000028111, + 0.0000028130, 0.0000028131, 0.0000028149, 0.0000028178, 0.0000028191, + 0.0000028182, 0.0000028152, 0.0000028116, 0.0000028073, 0.0000028040, + 0.0000028032, 0.0000028036, 0.0000028039, 0.0000028047, 0.0000028056, + 0.0000028067, 0.0000028086, 0.0000028105, 0.0000028112, 0.0000028104, + 0.0000028095, 0.0000028101, 0.0000028129, 0.0000028160, 0.0000028175, + 0.0000028180, 0.0000028190, 0.0000028216, 0.0000028252, 0.0000028293, + 0.0000028335, 0.0000028366, 0.0000028381, 0.0000028386, 0.0000028407, + 0.0000028436, 0.0000028472, 0.0000028504, 0.0000028524, 0.0000028542, + 0.0000028569, 0.0000028619, 0.0000028693, 0.0000028783, 0.0000028868, + 0.0000028949, 0.0000029012, 0.0000029053, 0.0000029084, 0.0000029099, + 0.0000029093, 0.0000029071, 0.0000029039, 0.0000028995, 0.0000028925, + 0.0000028832, 0.0000028740, 0.0000028674, 0.0000028633, 0.0000028607, + 0.0000028589, 0.0000028574, 0.0000028562, 0.0000028552, 0.0000028529, + 0.0000028493, 0.0000028446, 0.0000028410, 0.0000028389, 0.0000028410, + 0.0000028469, 0.0000028553, 0.0000028650, 0.0000028718, 0.0000028732, + 0.0000028710, 0.0000028662, 0.0000028595, 0.0000028510, 0.0000028434, + 0.0000028400, 0.0000028372, 0.0000028313, 0.0000028245, 0.0000028201, + 0.0000028166, 0.0000028115, 0.0000028045, 0.0000028049, 0.0000028136, + 0.0000028237, 0.0000028272, 0.0000028245, 0.0000028203, 0.0000028180, + 0.0000028182, 0.0000028210, 0.0000028253, 0.0000028312, 0.0000028370, + 0.0000028402, 0.0000028385, 0.0000028333, 0.0000028292, 0.0000028288, + 0.0000028278, 0.0000028266, 0.0000028267, 0.0000028296, 0.0000028328, + 0.0000028325, 0.0000028313, 0.0000028303, 0.0000028282, 0.0000028269, + 0.0000028288, 0.0000028278, 0.0000028207, 0.0000028165, 0.0000028164, + 0.0000028216, 0.0000028230, 0.0000028086, 0.0000027910, 0.0000028048, + 0.0000028185, 0.0000028187, 0.0000028150, 0.0000028076, 0.0000028088, + 0.0000028050, 0.0000027991, 0.0000028025, 0.0000028038, 0.0000027964, + 0.0000027895, 0.0000027883, 0.0000027895, 0.0000027930, 0.0000027973, + 0.0000028009, 0.0000028052, 0.0000028103, 0.0000028175, 0.0000028226, + 0.0000028230, 0.0000028207, 0.0000028162, 0.0000028113, 0.0000028071, + 0.0000028040, 0.0000028018, 0.0000027994, 0.0000027955, 0.0000027920, + 0.0000027927, 0.0000027953, 0.0000027976, 0.0000027982, 0.0000027964, + 0.0000027910, 0.0000027815, 0.0000027686, 0.0000027552, 0.0000027459, + 0.0000027411, 0.0000027379, 0.0000027360, 0.0000027366, 0.0000027384, + 0.0000027401, 0.0000027410, 0.0000027412, 0.0000027436, 0.0000027490, + 0.0000027559, 0.0000027619, 0.0000027664, 0.0000027696, 0.0000027711, + 0.0000027696, 0.0000027634, 0.0000027577, 0.0000027538, 0.0000027485, + 0.0000027420, 0.0000027379, 0.0000027421, 0.0000027558, 0.0000027622, + 0.0000027586, 0.0000027508, 0.0000027408, 0.0000027306, 0.0000027264, + 0.0000027253, 0.0000027227, 0.0000027217, 0.0000027226, 0.0000027222, + 0.0000027210, 0.0000027201, 0.0000027191, 0.0000027182, 0.0000027173, + 0.0000027159, 0.0000027138, 0.0000027113, 0.0000027090, 0.0000027072, + 0.0000027050, 0.0000027030, 0.0000027023, 0.0000026984, 0.0000026890, + 0.0000026814, 0.0000026801, 0.0000026835, 0.0000026910, 0.0000026975, + 0.0000026998, 0.0000026974, 0.0000026941, 0.0000026904, 0.0000026847, + 0.0000026782, 0.0000026754, 0.0000026796, 0.0000026904, 0.0000027004, + 0.0000027033, 0.0000027034, 0.0000027129, 0.0000027281, 0.0000027371, + 0.0000027402, 0.0000027372, 0.0000027295, 0.0000027233, 0.0000027082, + 0.0000026722, 0.0000026372, 0.0000026225, 0.0000026436, 0.0000026555, + 0.0000026709, 0.0000027352, 0.0000027714, 0.0000027750, 0.0000027753, + 0.0000027801, 0.0000027945, 0.0000028142, 0.0000028239, 0.0000028244, + 0.0000028236, 0.0000028237, 0.0000028242, 0.0000028232, 0.0000028173, + 0.0000028083, 0.0000028040, 0.0000028028, 0.0000028014, 0.0000027971, + 0.0000027941, 0.0000027938, 0.0000027945, 0.0000027929, 0.0000027867, + 0.0000027806, 0.0000027779, 0.0000027798, 0.0000027821, 0.0000027859, + 0.0000027922, 0.0000027999, 0.0000028103, 0.0000028118, 0.0000028016, + 0.0000027869, 0.0000027763, 0.0000027698, 0.0000027680, 0.0000027693, + 0.0000027728, 0.0000027839, 0.0000027912, 0.0000028115, 0.0000028221, + 0.0000028172, 0.0000028065, 0.0000027949, 0.0000027919, 0.0000027989, + 0.0000027975, 0.0000027853, 0.0000027706, 0.0000027613, 0.0000027613, + 0.0000027652, 0.0000027583, 0.0000027509, 0.0000027540, 0.0000027546, + 0.0000027457, 0.0000027209, 0.0000027057, 0.0000027030, 0.0000026981, + 0.0000026983, 0.0000027007, 0.0000026962, 0.0000026786, 0.0000026611, + 0.0000026555, 0.0000026543, 0.0000026492, 0.0000026419, 0.0000026366, + 0.0000026331, 0.0000026316, 0.0000026334, 0.0000026352, 0.0000026316, + 0.0000026196, 0.0000026036, 0.0000025884, 0.0000025770, 0.0000025730, + 0.0000025744, 0.0000025767, 0.0000025786, 0.0000025792, 0.0000025768, + 0.0000025710, 0.0000025645, 0.0000025619, 0.0000025634, 0.0000025663, + 0.0000025698, 0.0000025739, 0.0000025781, 0.0000025800, 0.0000025803, + 0.0000025812, 0.0000025822, 0.0000025821, 0.0000025832, 0.0000025845, + 0.0000025839, 0.0000025810, 0.0000025773, 0.0000025730, 0.0000025667, + 0.0000025606, 0.0000025573, 0.0000025563, 0.0000025561, 0.0000025569, + 0.0000025570, 0.0000025560, 0.0000025530, 0.0000025496, 0.0000025457, + 0.0000025443, 0.0000025375, 0.0000025336, 0.0000025310, 0.0000025333, + 0.0000025371, 0.0000025414, 0.0000025395, 0.0000025344, 0.0000025296, + 0.0000025257, 0.0000025317, 0.0000025487, 0.0000025677, 0.0000025809, + 0.0000025863, 0.0000025875, 0.0000025885, 0.0000025910, 0.0000025957, + 0.0000026026, 0.0000026096, 0.0000026151, 0.0000026221, 0.0000026324, + 0.0000026400, 0.0000026445, 0.0000026535, 0.0000026652, 0.0000026729, + 0.0000026774, 0.0000026823, 0.0000026870, 0.0000026887, 0.0000026891, + 0.0000026926, 0.0000026956, 0.0000026930, 0.0000026858, 0.0000026822, + 0.0000026851, 0.0000026939, 0.0000027015, 0.0000027061, 0.0000027084, + 0.0000027105, 0.0000027151, 0.0000027202, 0.0000027243, 0.0000027319, + 0.0000027488, 0.0000027711, 0.0000027888, 0.0000028007, 0.0000028061, + 0.0000028038, 0.0000027977, 0.0000027933, 0.0000027932, 0.0000027966, + 0.0000028075, 0.0000028251, 0.0000028359, 0.0000028356, 0.0000028335, + 0.0000028347, 0.0000028290, 0.0000028218, 0.0000028275, 0.0000028377, + 0.0000028404, 0.0000028328, 0.0000028208, 0.0000028111, 0.0000028094, + 0.0000028136, 0.0000028166, 0.0000028179, 0.0000028241, 0.0000028382, + 0.0000028463, 0.0000028441, 0.0000028431, 0.0000028483, 0.0000028496, + 0.0000028430, 0.0000028326, 0.0000028219, 0.0000028166, 0.0000028157, + 0.0000028153, 0.0000028158, 0.0000028162, 0.0000028196, 0.0000028235, + 0.0000028290, 0.0000028365, 0.0000028454, 0.0000028588, 0.0000028729, + 0.0000028841, 0.0000028909, 0.0000028929, 0.0000028916, 0.0000028925, + 0.0000028939, 0.0000028936, 0.0000028869, 0.0000028773, 0.0000028710, + 0.0000028682, 0.0000028649, 0.0000028604, 0.0000028581, 0.0000028602, + 0.0000028649, 0.0000028693, 0.0000028709, 0.0000028684, 0.0000028618, + 0.0000028546, 0.0000028527, 0.0000028558, 0.0000028641, 0.0000028721, + 0.0000028776, 0.0000028821, 0.0000028868, 0.0000028892, 0.0000028898, + 0.0000028915, 0.0000028947, 0.0000028971, 0.0000028983, 0.0000028961, + 0.0000028916, 0.0000028857, 0.0000028773, 0.0000028681, 0.0000028620, + 0.0000028614, 0.0000028672, 0.0000028765, 0.0000028831, 0.0000028824, + 0.0000028779, 0.0000028819, 0.0000028953, 0.0000029054, 0.0000029112, + 0.0000029195, 0.0000029245, 0.0000029232, 0.0000029191, 0.0000029157, + 0.0000029146, 0.0000029142, 0.0000029115, 0.0000029064, 0.0000029021, + 0.0000029011, 0.0000029024, 0.0000029017, 0.0000028989, 0.0000028978, + 0.0000028987, 0.0000028986, 0.0000028973, 0.0000028960, 0.0000028953, + 0.0000028936, 0.0000028893, 0.0000028835, 0.0000028783, 0.0000028731, + 0.0000028676, 0.0000028625, 0.0000028610, 0.0000028632, 0.0000028673, + 0.0000028688, 0.0000028671, 0.0000028631, 0.0000028590, 0.0000028565, + 0.0000028552, 0.0000028551, 0.0000028562, 0.0000028567, 0.0000028558, + 0.0000028535, 0.0000028498, 0.0000028454, 0.0000028408, 0.0000028356, + 0.0000028301, 0.0000028246, 0.0000028206, 0.0000028199, 0.0000028220, + 0.0000028259, 0.0000028312, 0.0000028388, 0.0000028484, 0.0000028575, + 0.0000028645, 0.0000028683, 0.0000028688, 0.0000028688, 0.0000028705, + 0.0000028723, 0.0000028727, 0.0000028703, 0.0000028668, 0.0000028639, + 0.0000028608, 0.0000028585, 0.0000028588, 0.0000028599, 0.0000028578, + 0.0000028519, 0.0000028457, 0.0000028423, 0.0000028408, 0.0000028398, + 0.0000028399, 0.0000028423, 0.0000028473, 0.0000028522, 0.0000028549, + 0.0000028552, 0.0000028537, 0.0000028499, 0.0000028453, 0.0000028411, + 0.0000028362, 0.0000028319, 0.0000028317, 0.0000028343, 0.0000028363, + 0.0000028376, 0.0000028325, 0.0000028079, 0.0000027838, 0.0000027798, + 0.0000027868, 0.0000027907, 0.0000027884, 0.0000027849, 0.0000027834, + 0.0000027856, 0.0000027913, 0.0000027971, 0.0000028027, 0.0000028065, + 0.0000028103, 0.0000028149, 0.0000028201, 0.0000028239, 0.0000028253, + 0.0000028272, 0.0000028284, 0.0000028276, 0.0000028273, 0.0000028288, + 0.0000028325, 0.0000028358, 0.0000028371, 0.0000028365, 0.0000028359, + 0.0000028337, 0.0000028306, 0.0000028248, 0.0000028177, 0.0000028113, + 0.0000028061, 0.0000028000, 0.0000027933, 0.0000027846, 0.0000027768, + 0.0000027761, 0.0000027869, 0.0000028068, 0.0000028286, 0.0000028471, + 0.0000028597, 0.0000028642, 0.0000028651, 0.0000028666, 0.0000028679, + 0.0000028689, 0.0000028696, 0.0000028718, 0.0000028740, 0.0000028735, + 0.0000028712, 0.0000028674, 0.0000028632, 0.0000028592, 0.0000028583, + 0.0000028597, 0.0000028631, 0.0000028670, 0.0000028736, 0.0000028797, + 0.0000028829, 0.0000028815, 0.0000028774, 0.0000028693, 0.0000028591, + 0.0000028468, 0.0000028375, 0.0000028292, 0.0000028250, 0.0000028296, + 0.0000028341, 0.0000028407, 0.0000028515, 0.0000028572, 0.0000028673, + 0.0000028870, 0.0000028943, 0.0000028870, 0.0000028830, 0.0000028889, + 0.0000028965, 0.0000029003, 0.0000028981, 0.0000028871, 0.0000028774, + 0.0000028762, 0.0000028808, 0.0000028875, 0.0000028904, 0.0000028884, + 0.0000028820, 0.0000028749, 0.0000028676, 0.0000028593, 0.0000028482, + 0.0000028347, 0.0000028200, 0.0000028086, 0.0000028081, 0.0000028225, + 0.0000028374, 0.0000028407, 0.0000028386, 0.0000028352, 0.0000028379, + 0.0000028592, 0.0000028712, 0.0000028625, 0.0000028599, 0.0000028748, + 0.0000028961, 0.0000029088, 0.0000029079, 0.0000028969, 0.0000028906, + 0.0000028858, 0.0000028716, 0.0000028554, 0.0000028447, 0.0000028462, + 0.0000028584, 0.0000028680, 0.0000028770, 0.0000028890, 0.0000029027, + 0.0000029106, 0.0000029107, 0.0000029073, 0.0000029013, 0.0000028955, + 0.0000028903, 0.0000028825, 0.0000028719, 0.0000028670, 0.0000028701, + 0.0000028746, 0.0000028753, 0.0000028628, 0.0000028332, 0.0000028148, + 0.0000028137, 0.0000028090, 0.0000028028, 0.0000028015, 0.0000027938, + 0.0000027715, 0.0000027525, 0.0000027454, 0.0000027432, 0.0000027425, + 0.0000027425, 0.0000027430, 0.0000027426, 0.0000027402, 0.0000027357, + 0.0000027357, 0.0000027402, 0.0000027414, 0.0000027375, 0.0000027384, + 0.0000027503, 0.0000027515, 0.0000027446, 0.0000027517, 0.0000027756, + 0.0000027866, 0.0000027834, 0.0000027731, 0.0000027615, 0.0000027545, + 0.0000027536, 0.0000027561, 0.0000027611, 0.0000027650, 0.0000027672, + 0.0000027681, 0.0000027693, 0.0000027714, 0.0000027731, 0.0000027735, + 0.0000027731, 0.0000027735, 0.0000027753, 0.0000027793, 0.0000027847, + 0.0000027902, 0.0000027948, 0.0000027980, 0.0000028000, 0.0000028007, + 0.0000028010, 0.0000028033, 0.0000028049, 0.0000028044, 0.0000028023, + 0.0000028001, 0.0000027969, 0.0000027937, 0.0000027920, 0.0000027915, + 0.0000027914, 0.0000027916, 0.0000027923, 0.0000027926, 0.0000027929, + 0.0000027928, 0.0000027924, 0.0000027911, 0.0000027890, 0.0000027881, + 0.0000027894, 0.0000027923, 0.0000027942, 0.0000027946, 0.0000027946, + 0.0000027952, 0.0000027974, 0.0000028013, 0.0000028058, 0.0000028103, + 0.0000028149, 0.0000028198, 0.0000028259, 0.0000028322, 0.0000028375, + 0.0000028420, 0.0000028448, 0.0000028448, 0.0000028430, 0.0000028421, + 0.0000028440, 0.0000028497, 0.0000028591, 0.0000028714, 0.0000028855, + 0.0000028988, 0.0000029089, 0.0000029176, 0.0000029222, 0.0000029226, + 0.0000029203, 0.0000029160, 0.0000029106, 0.0000029037, 0.0000028946, + 0.0000028849, 0.0000028762, 0.0000028701, 0.0000028668, 0.0000028647, + 0.0000028627, 0.0000028613, 0.0000028599, 0.0000028570, 0.0000028540, + 0.0000028517, 0.0000028506, 0.0000028485, 0.0000028490, 0.0000028545, + 0.0000028619, 0.0000028684, 0.0000028728, 0.0000028726, 0.0000028699, + 0.0000028654, 0.0000028596, 0.0000028510, 0.0000028405, 0.0000028323, + 0.0000028295, 0.0000028278, 0.0000028234, 0.0000028181, 0.0000028135, + 0.0000028067, 0.0000028013, 0.0000028058, 0.0000028180, 0.0000028282, + 0.0000028300, 0.0000028260, 0.0000028194, 0.0000028157, 0.0000028150, + 0.0000028173, 0.0000028223, 0.0000028291, 0.0000028357, 0.0000028399, + 0.0000028404, 0.0000028387, 0.0000028361, 0.0000028340, 0.0000028313, + 0.0000028265, 0.0000028227, 0.0000028229, 0.0000028265, 0.0000028285, + 0.0000028306, 0.0000028327, 0.0000028319, 0.0000028325, 0.0000028333, + 0.0000028321, 0.0000028244, 0.0000028165, 0.0000028135, 0.0000028150, + 0.0000028197, 0.0000028164, 0.0000027956, 0.0000027881, 0.0000028069, + 0.0000028179, 0.0000028174, 0.0000028123, 0.0000028049, 0.0000028051, + 0.0000028012, 0.0000027971, 0.0000028001, 0.0000028024, 0.0000027998, + 0.0000027937, 0.0000027878, 0.0000027848, 0.0000027857, 0.0000027880, + 0.0000027912, 0.0000027961, 0.0000028025, 0.0000028074, 0.0000028086, + 0.0000028081, 0.0000028063, 0.0000028028, 0.0000027997, 0.0000027971, + 0.0000027948, 0.0000027925, 0.0000027882, 0.0000027823, 0.0000027794, + 0.0000027796, 0.0000027830, 0.0000027890, 0.0000027939, 0.0000027953, + 0.0000027948, 0.0000027901, 0.0000027777, 0.0000027612, 0.0000027485, + 0.0000027405, 0.0000027357, 0.0000027348, 0.0000027355, 0.0000027363, + 0.0000027360, 0.0000027338, 0.0000027328, 0.0000027320, 0.0000027363, + 0.0000027435, 0.0000027514, 0.0000027582, 0.0000027630, 0.0000027646, + 0.0000027618, 0.0000027555, 0.0000027504, 0.0000027464, 0.0000027418, + 0.0000027370, 0.0000027350, 0.0000027426, 0.0000027540, 0.0000027553, + 0.0000027492, 0.0000027393, 0.0000027283, 0.0000027240, 0.0000027228, + 0.0000027204, 0.0000027200, 0.0000027217, 0.0000027218, 0.0000027197, + 0.0000027175, 0.0000027159, 0.0000027152, 0.0000027154, 0.0000027159, + 0.0000027157, 0.0000027149, 0.0000027127, 0.0000027096, 0.0000027074, + 0.0000027063, 0.0000027054, 0.0000027051, 0.0000027018, 0.0000026912, + 0.0000026802, 0.0000026767, 0.0000026783, 0.0000026832, 0.0000026900, + 0.0000026954, 0.0000026970, 0.0000026947, 0.0000026894, 0.0000026809, + 0.0000026710, 0.0000026665, 0.0000026710, 0.0000026832, 0.0000026948, + 0.0000026998, 0.0000027006, 0.0000027087, 0.0000027244, 0.0000027356, + 0.0000027387, 0.0000027348, 0.0000027254, 0.0000027192, 0.0000026990, + 0.0000026622, 0.0000026274, 0.0000026189, 0.0000026444, 0.0000026545, + 0.0000026810, 0.0000027457, 0.0000027725, 0.0000027746, 0.0000027757, + 0.0000027828, 0.0000028004, 0.0000028184, 0.0000028251, 0.0000028242, + 0.0000028222, 0.0000028224, 0.0000028220, 0.0000028216, 0.0000028176, + 0.0000028100, 0.0000028043, 0.0000028029, 0.0000028032, 0.0000027980, + 0.0000027903, 0.0000027857, 0.0000027857, 0.0000027880, 0.0000027878, + 0.0000027837, 0.0000027813, 0.0000027838, 0.0000027862, 0.0000027891, + 0.0000027946, 0.0000028000, 0.0000028077, 0.0000028108, 0.0000028024, + 0.0000027881, 0.0000027762, 0.0000027669, 0.0000027629, 0.0000027636, + 0.0000027682, 0.0000027810, 0.0000027886, 0.0000028075, 0.0000028184, + 0.0000028143, 0.0000028032, 0.0000027916, 0.0000027890, 0.0000027962, + 0.0000027940, 0.0000027799, 0.0000027653, 0.0000027593, 0.0000027623, + 0.0000027650, 0.0000027553, 0.0000027505, 0.0000027538, 0.0000027548, + 0.0000027399, 0.0000027144, 0.0000027047, 0.0000027015, 0.0000026969, + 0.0000026980, 0.0000026990, 0.0000026893, 0.0000026690, 0.0000026560, + 0.0000026538, 0.0000026487, 0.0000026396, 0.0000026331, 0.0000026298, + 0.0000026263, 0.0000026240, 0.0000026254, 0.0000026272, 0.0000026222, + 0.0000026057, 0.0000025868, 0.0000025757, 0.0000025725, 0.0000025730, + 0.0000025764, 0.0000025794, 0.0000025804, 0.0000025789, 0.0000025739, + 0.0000025657, 0.0000025580, 0.0000025572, 0.0000025618, 0.0000025671, + 0.0000025721, 0.0000025780, 0.0000025824, 0.0000025839, 0.0000025850, + 0.0000025878, 0.0000025892, 0.0000025900, 0.0000025928, 0.0000025959, + 0.0000025970, 0.0000025961, 0.0000025937, 0.0000025891, 0.0000025807, + 0.0000025727, 0.0000025693, 0.0000025689, 0.0000025688, 0.0000025696, + 0.0000025705, 0.0000025698, 0.0000025664, 0.0000025634, 0.0000025585, + 0.0000025532, 0.0000025410, 0.0000025276, 0.0000025155, 0.0000025074, + 0.0000025120, 0.0000025240, 0.0000025353, 0.0000025418, 0.0000025397, + 0.0000025325, 0.0000025218, 0.0000025170, 0.0000025217, 0.0000025394, + 0.0000025603, 0.0000025748, 0.0000025797, 0.0000025791, 0.0000025799, + 0.0000025850, 0.0000025931, 0.0000026011, 0.0000026076, 0.0000026130, + 0.0000026193, 0.0000026287, 0.0000026372, 0.0000026414, 0.0000026484, + 0.0000026593, 0.0000026681, 0.0000026758, 0.0000026845, 0.0000026910, + 0.0000026939, 0.0000026945, 0.0000026944, 0.0000026920, 0.0000026837, + 0.0000026755, 0.0000026783, 0.0000026888, 0.0000026993, 0.0000027068, + 0.0000027095, 0.0000027096, 0.0000027103, 0.0000027145, 0.0000027200, + 0.0000027260, 0.0000027358, 0.0000027495, 0.0000027627, 0.0000027702, + 0.0000027747, 0.0000027737, 0.0000027680, 0.0000027636, 0.0000027628, + 0.0000027672, 0.0000027810, 0.0000028059, 0.0000028301, 0.0000028381, + 0.0000028363, 0.0000028364, 0.0000028302, 0.0000028221, 0.0000028285, + 0.0000028389, 0.0000028419, 0.0000028352, 0.0000028251, 0.0000028156, + 0.0000028137, 0.0000028183, 0.0000028207, 0.0000028212, 0.0000028250, + 0.0000028342, 0.0000028416, 0.0000028419, 0.0000028439, 0.0000028497, + 0.0000028484, 0.0000028399, 0.0000028277, 0.0000028193, 0.0000028173, + 0.0000028170, 0.0000028173, 0.0000028194, 0.0000028225, 0.0000028256, + 0.0000028272, 0.0000028317, 0.0000028398, 0.0000028515, 0.0000028657, + 0.0000028762, 0.0000028815, 0.0000028843, 0.0000028873, 0.0000028927, + 0.0000028960, 0.0000028927, 0.0000028825, 0.0000028730, 0.0000028677, + 0.0000028644, 0.0000028604, 0.0000028577, 0.0000028578, 0.0000028632, + 0.0000028721, 0.0000028784, 0.0000028790, 0.0000028755, 0.0000028712, + 0.0000028671, 0.0000028645, 0.0000028665, 0.0000028744, 0.0000028834, + 0.0000028892, 0.0000028925, 0.0000028927, 0.0000028931, 0.0000028946, + 0.0000028960, 0.0000028963, 0.0000028966, 0.0000028956, 0.0000028930, + 0.0000028884, 0.0000028828, 0.0000028766, 0.0000028686, 0.0000028625, + 0.0000028599, 0.0000028608, 0.0000028668, 0.0000028762, 0.0000028814, + 0.0000028788, 0.0000028783, 0.0000028881, 0.0000029022, 0.0000029096, + 0.0000029175, 0.0000029258, 0.0000029269, 0.0000029227, 0.0000029177, + 0.0000029164, 0.0000029185, 0.0000029184, 0.0000029138, 0.0000029082, + 0.0000029064, 0.0000029084, 0.0000029099, 0.0000029076, 0.0000029039, + 0.0000029015, 0.0000029000, 0.0000028966, 0.0000028935, 0.0000028920, + 0.0000028910, 0.0000028888, 0.0000028847, 0.0000028805, 0.0000028769, + 0.0000028714, 0.0000028654, 0.0000028611, 0.0000028603, 0.0000028615, + 0.0000028625, 0.0000028610, 0.0000028572, 0.0000028526, 0.0000028488, + 0.0000028476, 0.0000028481, 0.0000028489, 0.0000028498, 0.0000028496, + 0.0000028482, 0.0000028457, 0.0000028422, 0.0000028373, 0.0000028318, + 0.0000028269, 0.0000028216, 0.0000028157, 0.0000028119, 0.0000028111, + 0.0000028118, 0.0000028140, 0.0000028169, 0.0000028212, 0.0000028280, + 0.0000028361, 0.0000028440, 0.0000028502, 0.0000028535, 0.0000028556, + 0.0000028594, 0.0000028633, 0.0000028657, 0.0000028648, 0.0000028609, + 0.0000028572, 0.0000028542, 0.0000028522, 0.0000028527, 0.0000028544, + 0.0000028538, 0.0000028489, 0.0000028413, 0.0000028347, 0.0000028306, + 0.0000028278, 0.0000028263, 0.0000028278, 0.0000028337, 0.0000028416, + 0.0000028479, 0.0000028521, 0.0000028535, 0.0000028515, 0.0000028461, + 0.0000028400, 0.0000028351, 0.0000028292, 0.0000028232, 0.0000028228, + 0.0000028282, 0.0000028336, 0.0000028353, 0.0000028310, 0.0000028073, + 0.0000027796, 0.0000027733, 0.0000027811, 0.0000027842, 0.0000027804, + 0.0000027783, 0.0000027828, 0.0000027958, 0.0000028107, 0.0000028209, + 0.0000028262, 0.0000028261, 0.0000028264, 0.0000028273, 0.0000028295, + 0.0000028312, 0.0000028311, 0.0000028314, 0.0000028306, 0.0000028291, + 0.0000028292, 0.0000028313, 0.0000028349, 0.0000028381, 0.0000028404, + 0.0000028416, 0.0000028432, 0.0000028432, 0.0000028422, 0.0000028381, + 0.0000028306, 0.0000028212, 0.0000028108, 0.0000028007, 0.0000027922, + 0.0000027839, 0.0000027765, 0.0000027739, 0.0000027751, 0.0000027843, + 0.0000028001, 0.0000028200, 0.0000028401, 0.0000028535, 0.0000028603, + 0.0000028631, 0.0000028638, 0.0000028636, 0.0000028631, 0.0000028647, + 0.0000028687, 0.0000028723, 0.0000028735, 0.0000028728, 0.0000028693, + 0.0000028646, 0.0000028603, 0.0000028577, 0.0000028547, 0.0000028540, + 0.0000028576, 0.0000028629, 0.0000028675, 0.0000028695, 0.0000028677, + 0.0000028632, 0.0000028549, 0.0000028448, 0.0000028364, 0.0000028272, + 0.0000028186, 0.0000028200, 0.0000028286, 0.0000028330, 0.0000028409, + 0.0000028513, 0.0000028598, 0.0000028765, 0.0000028927, 0.0000028898, + 0.0000028828, 0.0000028890, 0.0000028994, 0.0000029042, 0.0000029009, + 0.0000028898, 0.0000028796, 0.0000028763, 0.0000028774, 0.0000028811, + 0.0000028840, 0.0000028834, 0.0000028798, 0.0000028745, 0.0000028693, + 0.0000028614, 0.0000028494, 0.0000028359, 0.0000028219, 0.0000028091, + 0.0000028054, 0.0000028146, 0.0000028304, 0.0000028382, 0.0000028386, + 0.0000028369, 0.0000028378, 0.0000028531, 0.0000028722, 0.0000028705, + 0.0000028625, 0.0000028724, 0.0000028942, 0.0000029099, 0.0000029103, + 0.0000028994, 0.0000028930, 0.0000028863, 0.0000028713, 0.0000028546, + 0.0000028443, 0.0000028453, 0.0000028584, 0.0000028684, 0.0000028754, + 0.0000028835, 0.0000028947, 0.0000029030, 0.0000029041, 0.0000029024, + 0.0000028989, 0.0000028962, 0.0000028933, 0.0000028878, 0.0000028762, + 0.0000028654, 0.0000028652, 0.0000028703, 0.0000028719, 0.0000028612, + 0.0000028317, 0.0000028138, 0.0000028129, 0.0000028072, 0.0000028012, + 0.0000028011, 0.0000027979, 0.0000027803, 0.0000027605, 0.0000027509, + 0.0000027464, 0.0000027437, 0.0000027423, 0.0000027411, 0.0000027409, + 0.0000027405, 0.0000027391, 0.0000027380, 0.0000027391, 0.0000027402, + 0.0000027373, 0.0000027314, 0.0000027365, 0.0000027488, 0.0000027483, + 0.0000027412, 0.0000027479, 0.0000027711, 0.0000027825, 0.0000027797, + 0.0000027699, 0.0000027579, 0.0000027491, 0.0000027457, 0.0000027464, + 0.0000027487, 0.0000027512, 0.0000027528, 0.0000027538, 0.0000027544, + 0.0000027549, 0.0000027562, 0.0000027592, 0.0000027631, 0.0000027662, + 0.0000027682, 0.0000027706, 0.0000027742, 0.0000027784, 0.0000027823, + 0.0000027858, 0.0000027885, 0.0000027893, 0.0000027895, 0.0000027902, + 0.0000027899, 0.0000027886, 0.0000027865, 0.0000027832, 0.0000027794, + 0.0000027765, 0.0000027744, 0.0000027725, 0.0000027710, 0.0000027709, + 0.0000027712, 0.0000027709, 0.0000027703, 0.0000027694, 0.0000027689, + 0.0000027676, 0.0000027658, 0.0000027655, 0.0000027666, 0.0000027669, + 0.0000027651, 0.0000027622, 0.0000027586, 0.0000027564, 0.0000027567, + 0.0000027591, 0.0000027621, 0.0000027662, 0.0000027723, 0.0000027802, + 0.0000027895, 0.0000027983, 0.0000028059, 0.0000028121, 0.0000028178, + 0.0000028233, 0.0000028286, 0.0000028344, 0.0000028400, 0.0000028461, + 0.0000028533, 0.0000028624, 0.0000028748, 0.0000028888, 0.0000029024, + 0.0000029135, 0.0000029222, 0.0000029250, 0.0000029247, 0.0000029219, + 0.0000029172, 0.0000029103, 0.0000029012, 0.0000028914, 0.0000028821, + 0.0000028758, 0.0000028730, 0.0000028717, 0.0000028707, 0.0000028705, + 0.0000028699, 0.0000028680, 0.0000028668, 0.0000028677, 0.0000028675, + 0.0000028626, 0.0000028585, 0.0000028609, 0.0000028657, 0.0000028695, + 0.0000028724, 0.0000028723, 0.0000028695, 0.0000028649, 0.0000028597, + 0.0000028525, 0.0000028415, 0.0000028287, 0.0000028210, 0.0000028205, + 0.0000028204, 0.0000028164, 0.0000028110, 0.0000028028, 0.0000027953, + 0.0000028004, 0.0000028176, 0.0000028335, 0.0000028388, 0.0000028346, + 0.0000028258, 0.0000028193, 0.0000028164, 0.0000028173, 0.0000028222, + 0.0000028295, 0.0000028362, 0.0000028396, 0.0000028400, 0.0000028397, + 0.0000028411, 0.0000028426, 0.0000028422, 0.0000028371, 0.0000028292, + 0.0000028239, 0.0000028244, 0.0000028257, 0.0000028279, 0.0000028309, + 0.0000028338, 0.0000028374, 0.0000028375, 0.0000028356, 0.0000028287, + 0.0000028191, 0.0000028132, 0.0000028114, 0.0000028135, 0.0000028160, + 0.0000028068, 0.0000027867, 0.0000027869, 0.0000028093, 0.0000028173, + 0.0000028152, 0.0000028082, 0.0000028033, 0.0000028026, 0.0000028006, + 0.0000027978, 0.0000027972, 0.0000027998, 0.0000028008, 0.0000027975, + 0.0000027950, 0.0000027936, 0.0000027938, 0.0000027949, 0.0000027979, + 0.0000028031, 0.0000028079, 0.0000028099, 0.0000028101, 0.0000028089, + 0.0000028060, 0.0000028021, 0.0000027986, 0.0000027961, 0.0000027934, + 0.0000027896, 0.0000027840, 0.0000027794, 0.0000027775, 0.0000027786, + 0.0000027808, 0.0000027838, 0.0000027888, 0.0000027943, 0.0000027969, + 0.0000027943, 0.0000027836, 0.0000027689, 0.0000027560, 0.0000027478, + 0.0000027449, 0.0000027453, 0.0000027469, 0.0000027464, 0.0000027429, + 0.0000027384, 0.0000027332, 0.0000027289, 0.0000027282, 0.0000027334, + 0.0000027425, 0.0000027511, 0.0000027565, 0.0000027578, 0.0000027537, + 0.0000027475, 0.0000027431, 0.0000027394, 0.0000027358, 0.0000027319, + 0.0000027330, 0.0000027430, 0.0000027485, 0.0000027456, 0.0000027364, + 0.0000027253, 0.0000027208, 0.0000027199, 0.0000027175, 0.0000027174, + 0.0000027194, 0.0000027187, 0.0000027154, 0.0000027129, 0.0000027129, + 0.0000027142, 0.0000027158, 0.0000027167, 0.0000027168, 0.0000027166, + 0.0000027161, 0.0000027144, 0.0000027112, 0.0000027085, 0.0000027078, + 0.0000027077, 0.0000027073, 0.0000027037, 0.0000026930, 0.0000026806, + 0.0000026746, 0.0000026748, 0.0000026781, 0.0000026840, 0.0000026905, + 0.0000026943, 0.0000026932, 0.0000026867, 0.0000026765, 0.0000026641, + 0.0000026567, 0.0000026605, 0.0000026744, 0.0000026882, 0.0000026967, + 0.0000026988, 0.0000027037, 0.0000027194, 0.0000027331, 0.0000027366, + 0.0000027315, 0.0000027210, 0.0000027135, 0.0000026899, 0.0000026531, + 0.0000026214, 0.0000026186, 0.0000026445, 0.0000026546, 0.0000026875, + 0.0000027495, 0.0000027725, 0.0000027727, 0.0000027736, 0.0000027836, + 0.0000028014, 0.0000028184, 0.0000028241, 0.0000028219, 0.0000028199, + 0.0000028199, 0.0000028188, 0.0000028181, 0.0000028157, 0.0000028104, + 0.0000028055, 0.0000028031, 0.0000028040, 0.0000028004, 0.0000027915, + 0.0000027831, 0.0000027802, 0.0000027820, 0.0000027850, 0.0000027852, + 0.0000027849, 0.0000027868, 0.0000027899, 0.0000027930, 0.0000027965, + 0.0000027998, 0.0000028040, 0.0000028071, 0.0000028007, 0.0000027863, + 0.0000027747, 0.0000027655, 0.0000027595, 0.0000027594, 0.0000027640, + 0.0000027781, 0.0000027865, 0.0000028048, 0.0000028157, 0.0000028118, + 0.0000028001, 0.0000027882, 0.0000027861, 0.0000027936, 0.0000027907, + 0.0000027747, 0.0000027606, 0.0000027578, 0.0000027634, 0.0000027631, + 0.0000027523, 0.0000027503, 0.0000027537, 0.0000027547, 0.0000027333, + 0.0000027103, 0.0000027054, 0.0000027009, 0.0000026968, 0.0000026977, + 0.0000026960, 0.0000026808, 0.0000026611, 0.0000026542, 0.0000026515, + 0.0000026418, 0.0000026311, 0.0000026257, 0.0000026221, 0.0000026183, + 0.0000026152, 0.0000026154, 0.0000026166, 0.0000026111, 0.0000025939, + 0.0000025770, 0.0000025720, 0.0000025725, 0.0000025741, 0.0000025767, + 0.0000025783, 0.0000025778, 0.0000025753, 0.0000025714, 0.0000025660, + 0.0000025636, 0.0000025655, 0.0000025709, 0.0000025754, 0.0000025790, + 0.0000025832, 0.0000025864, 0.0000025889, 0.0000025927, 0.0000025973, + 0.0000025995, 0.0000026001, 0.0000026008, 0.0000026022, 0.0000026026, + 0.0000026019, 0.0000025995, 0.0000025943, 0.0000025847, 0.0000025755, + 0.0000025712, 0.0000025711, 0.0000025715, 0.0000025739, 0.0000025776, + 0.0000025807, 0.0000025810, 0.0000025837, 0.0000025808, 0.0000025766, + 0.0000025638, 0.0000025459, 0.0000025249, 0.0000025065, 0.0000024996, + 0.0000025002, 0.0000025122, 0.0000025245, 0.0000025332, 0.0000025365, + 0.0000025353, 0.0000025309, 0.0000025239, 0.0000025200, 0.0000025245, + 0.0000025341, 0.0000025543, 0.0000025704, 0.0000025775, 0.0000025808, + 0.0000025856, 0.0000025903, 0.0000025942, 0.0000025995, 0.0000026058, + 0.0000026117, 0.0000026173, 0.0000026252, 0.0000026337, 0.0000026391, + 0.0000026478, 0.0000026611, 0.0000026720, 0.0000026805, 0.0000026892, + 0.0000026953, 0.0000026957, 0.0000026927, 0.0000026888, 0.0000026806, + 0.0000026716, 0.0000026712, 0.0000026818, 0.0000026966, 0.0000027062, + 0.0000027101, 0.0000027108, 0.0000027089, 0.0000027094, 0.0000027144, + 0.0000027211, 0.0000027293, 0.0000027384, 0.0000027452, 0.0000027484, + 0.0000027504, 0.0000027513, 0.0000027480, 0.0000027437, 0.0000027425, + 0.0000027457, 0.0000027577, 0.0000027854, 0.0000028191, 0.0000028371, + 0.0000028386, 0.0000028374, 0.0000028305, 0.0000028216, 0.0000028293, + 0.0000028395, 0.0000028429, 0.0000028372, 0.0000028294, 0.0000028205, + 0.0000028182, 0.0000028234, 0.0000028253, 0.0000028245, 0.0000028252, + 0.0000028297, 0.0000028374, 0.0000028410, 0.0000028448, 0.0000028481, + 0.0000028449, 0.0000028345, 0.0000028246, 0.0000028210, 0.0000028206, + 0.0000028203, 0.0000028228, 0.0000028276, 0.0000028302, 0.0000028308, + 0.0000028314, 0.0000028361, 0.0000028461, 0.0000028580, 0.0000028677, + 0.0000028734, 0.0000028782, 0.0000028855, 0.0000028923, 0.0000028954, + 0.0000028894, 0.0000028770, 0.0000028672, 0.0000028630, 0.0000028599, + 0.0000028558, 0.0000028551, 0.0000028593, 0.0000028683, 0.0000028767, + 0.0000028813, 0.0000028814, 0.0000028804, 0.0000028795, 0.0000028788, + 0.0000028777, 0.0000028792, 0.0000028847, 0.0000028917, 0.0000028971, + 0.0000029000, 0.0000029004, 0.0000028991, 0.0000028994, 0.0000028992, + 0.0000028966, 0.0000028932, 0.0000028898, 0.0000028881, 0.0000028865, + 0.0000028852, 0.0000028834, 0.0000028797, 0.0000028757, 0.0000028728, + 0.0000028705, 0.0000028694, 0.0000028721, 0.0000028781, 0.0000028802, + 0.0000028772, 0.0000028824, 0.0000028969, 0.0000029079, 0.0000029148, + 0.0000029242, 0.0000029285, 0.0000029256, 0.0000029200, 0.0000029178, + 0.0000029207, 0.0000029230, 0.0000029201, 0.0000029139, 0.0000029110, + 0.0000029127, 0.0000029160, 0.0000029152, 0.0000029105, 0.0000029056, + 0.0000029015, 0.0000028969, 0.0000028919, 0.0000028898, 0.0000028891, + 0.0000028889, 0.0000028878, 0.0000028856, 0.0000028834, 0.0000028787, + 0.0000028719, 0.0000028676, 0.0000028656, 0.0000028636, 0.0000028612, + 0.0000028574, 0.0000028527, 0.0000028478, 0.0000028439, 0.0000028420, + 0.0000028420, 0.0000028435, 0.0000028449, 0.0000028460, 0.0000028454, + 0.0000028436, 0.0000028407, 0.0000028368, 0.0000028322, 0.0000028271, + 0.0000028216, 0.0000028161, 0.0000028101, 0.0000028047, 0.0000028025, + 0.0000028025, 0.0000028032, 0.0000028046, 0.0000028070, 0.0000028117, + 0.0000028170, 0.0000028220, 0.0000028270, 0.0000028312, 0.0000028354, + 0.0000028414, 0.0000028482, 0.0000028540, 0.0000028563, 0.0000028547, + 0.0000028512, 0.0000028485, 0.0000028469, 0.0000028476, 0.0000028501, + 0.0000028508, 0.0000028482, 0.0000028422, 0.0000028356, 0.0000028304, + 0.0000028262, 0.0000028220, 0.0000028194, 0.0000028206, 0.0000028256, + 0.0000028322, 0.0000028390, 0.0000028442, 0.0000028464, 0.0000028460, + 0.0000028423, 0.0000028362, 0.0000028285, 0.0000028204, 0.0000028141, + 0.0000028138, 0.0000028213, 0.0000028300, 0.0000028325, 0.0000028295, + 0.0000028077, 0.0000027755, 0.0000027650, 0.0000027721, 0.0000027754, + 0.0000027727, 0.0000027751, 0.0000027915, 0.0000028143, 0.0000028307, + 0.0000028363, 0.0000028348, 0.0000028303, 0.0000028276, 0.0000028282, + 0.0000028313, 0.0000028338, 0.0000028340, 0.0000028329, 0.0000028303, + 0.0000028288, 0.0000028296, 0.0000028320, 0.0000028355, 0.0000028388, + 0.0000028416, 0.0000028443, 0.0000028474, 0.0000028486, 0.0000028492, + 0.0000028475, 0.0000028426, 0.0000028343, 0.0000028220, 0.0000028073, + 0.0000027930, 0.0000027821, 0.0000027765, 0.0000027734, 0.0000027721, + 0.0000027723, 0.0000027774, 0.0000027902, 0.0000028105, 0.0000028315, + 0.0000028479, 0.0000028571, 0.0000028592, 0.0000028575, 0.0000028565, + 0.0000028571, 0.0000028604, 0.0000028658, 0.0000028711, 0.0000028734, + 0.0000028721, 0.0000028691, 0.0000028649, 0.0000028596, 0.0000028543, + 0.0000028509, 0.0000028512, 0.0000028535, 0.0000028564, 0.0000028583, + 0.0000028573, 0.0000028542, 0.0000028478, 0.0000028414, 0.0000028363, + 0.0000028278, 0.0000028168, 0.0000028113, 0.0000028195, 0.0000028278, + 0.0000028308, 0.0000028429, 0.0000028541, 0.0000028666, 0.0000028865, + 0.0000028907, 0.0000028838, 0.0000028875, 0.0000029005, 0.0000029076, + 0.0000029050, 0.0000028945, 0.0000028842, 0.0000028790, 0.0000028776, + 0.0000028781, 0.0000028793, 0.0000028794, 0.0000028777, 0.0000028733, + 0.0000028688, 0.0000028615, 0.0000028494, 0.0000028362, 0.0000028241, + 0.0000028113, 0.0000028051, 0.0000028095, 0.0000028244, 0.0000028346, + 0.0000028375, 0.0000028387, 0.0000028411, 0.0000028489, 0.0000028690, + 0.0000028775, 0.0000028681, 0.0000028711, 0.0000028905, 0.0000029093, + 0.0000029121, 0.0000029024, 0.0000028958, 0.0000028878, 0.0000028722, + 0.0000028556, 0.0000028444, 0.0000028447, 0.0000028567, 0.0000028677, + 0.0000028734, 0.0000028789, 0.0000028873, 0.0000028952, 0.0000028982, + 0.0000028990, 0.0000028986, 0.0000028974, 0.0000028957, 0.0000028917, + 0.0000028828, 0.0000028686, 0.0000028628, 0.0000028660, 0.0000028684, + 0.0000028588, 0.0000028296, 0.0000028124, 0.0000028120, 0.0000028057, + 0.0000027994, 0.0000028002, 0.0000028000, 0.0000027890, 0.0000027703, + 0.0000027591, 0.0000027550, 0.0000027511, 0.0000027458, 0.0000027411, + 0.0000027386, 0.0000027381, 0.0000027389, 0.0000027393, 0.0000027385, + 0.0000027382, 0.0000027371, 0.0000027318, 0.0000027289, 0.0000027366, + 0.0000027472, 0.0000027444, 0.0000027374, 0.0000027440, 0.0000027654, + 0.0000027775, 0.0000027746, 0.0000027653, 0.0000027540, 0.0000027445, + 0.0000027396, 0.0000027380, 0.0000027381, 0.0000027404, 0.0000027428, + 0.0000027434, 0.0000027425, 0.0000027426, 0.0000027468, 0.0000027528, + 0.0000027562, 0.0000027562, 0.0000027555, 0.0000027566, 0.0000027600, + 0.0000027647, 0.0000027693, 0.0000027728, 0.0000027739, 0.0000027719, + 0.0000027698, 0.0000027682, 0.0000027672, 0.0000027664, 0.0000027646, + 0.0000027620, 0.0000027591, 0.0000027564, 0.0000027534, 0.0000027503, + 0.0000027487, 0.0000027494, 0.0000027510, 0.0000027519, 0.0000027525, + 0.0000027522, 0.0000027502, 0.0000027469, 0.0000027438, 0.0000027426, + 0.0000027422, 0.0000027407, 0.0000027380, 0.0000027347, 0.0000027310, + 0.0000027276, 0.0000027266, 0.0000027274, 0.0000027303, 0.0000027345, + 0.0000027404, 0.0000027487, 0.0000027569, 0.0000027637, 0.0000027688, + 0.0000027728, 0.0000027784, 0.0000027873, 0.0000027994, 0.0000028140, + 0.0000028291, 0.0000028435, 0.0000028549, 0.0000028643, 0.0000028746, + 0.0000028836, 0.0000028913, 0.0000028992, 0.0000029073, 0.0000029136, + 0.0000029166, 0.0000029174, 0.0000029151, 0.0000029095, 0.0000029008, + 0.0000028921, 0.0000028836, 0.0000028781, 0.0000028758, 0.0000028754, + 0.0000028761, 0.0000028786, 0.0000028811, 0.0000028836, 0.0000028864, + 0.0000028893, 0.0000028881, 0.0000028797, 0.0000028697, 0.0000028663, + 0.0000028668, 0.0000028677, 0.0000028694, 0.0000028704, 0.0000028687, + 0.0000028649, 0.0000028602, 0.0000028548, 0.0000028468, 0.0000028339, + 0.0000028206, 0.0000028165, 0.0000028162, 0.0000028138, 0.0000028081, + 0.0000028000, 0.0000027923, 0.0000027933, 0.0000028077, 0.0000028286, + 0.0000028410, 0.0000028426, 0.0000028361, 0.0000028281, 0.0000028237, + 0.0000028226, 0.0000028245, 0.0000028296, 0.0000028369, 0.0000028412, + 0.0000028410, 0.0000028393, 0.0000028399, 0.0000028441, 0.0000028484, + 0.0000028478, 0.0000028423, 0.0000028356, 0.0000028311, 0.0000028293, + 0.0000028287, 0.0000028304, 0.0000028363, 0.0000028421, 0.0000028423, + 0.0000028389, 0.0000028327, 0.0000028233, 0.0000028153, 0.0000028114, + 0.0000028094, 0.0000028114, 0.0000028109, 0.0000027988, 0.0000027814, + 0.0000027875, 0.0000028085, 0.0000028158, 0.0000028118, 0.0000028073, + 0.0000028039, 0.0000028029, 0.0000028021, 0.0000028003, 0.0000027979, + 0.0000027958, 0.0000027934, 0.0000027936, 0.0000027951, 0.0000027966, + 0.0000027977, 0.0000027987, 0.0000028018, 0.0000028053, 0.0000028066, + 0.0000028057, 0.0000028035, 0.0000028007, 0.0000027977, 0.0000027949, + 0.0000027933, 0.0000027923, 0.0000027907, 0.0000027881, 0.0000027851, + 0.0000027823, 0.0000027813, 0.0000027813, 0.0000027817, 0.0000027828, + 0.0000027869, 0.0000027934, 0.0000027975, 0.0000027962, 0.0000027886, + 0.0000027793, 0.0000027709, 0.0000027655, 0.0000027633, 0.0000027636, + 0.0000027632, 0.0000027603, 0.0000027561, 0.0000027507, 0.0000027430, + 0.0000027338, 0.0000027271, 0.0000027271, 0.0000027356, 0.0000027442, + 0.0000027493, 0.0000027496, 0.0000027455, 0.0000027405, 0.0000027365, + 0.0000027333, 0.0000027298, 0.0000027275, 0.0000027324, 0.0000027405, + 0.0000027409, 0.0000027334, 0.0000027223, 0.0000027175, 0.0000027167, + 0.0000027144, 0.0000027145, 0.0000027162, 0.0000027145, 0.0000027102, + 0.0000027088, 0.0000027118, 0.0000027168, 0.0000027209, 0.0000027225, + 0.0000027223, 0.0000027209, 0.0000027192, 0.0000027177, 0.0000027158, + 0.0000027132, 0.0000027106, 0.0000027096, 0.0000027097, 0.0000027085, + 0.0000027039, 0.0000026941, 0.0000026809, 0.0000026734, 0.0000026730, + 0.0000026754, 0.0000026800, 0.0000026854, 0.0000026898, 0.0000026893, + 0.0000026826, 0.0000026720, 0.0000026581, 0.0000026467, 0.0000026479, + 0.0000026628, 0.0000026807, 0.0000026930, 0.0000026954, 0.0000026986, + 0.0000027130, 0.0000027280, 0.0000027337, 0.0000027278, 0.0000027153, + 0.0000027080, 0.0000026821, 0.0000026466, 0.0000026184, 0.0000026177, + 0.0000026458, 0.0000026546, 0.0000026879, 0.0000027499, 0.0000027703, + 0.0000027695, 0.0000027698, 0.0000027802, 0.0000027975, 0.0000028150, + 0.0000028212, 0.0000028177, 0.0000028157, 0.0000028162, 0.0000028153, + 0.0000028141, 0.0000028123, 0.0000028098, 0.0000028072, 0.0000028054, + 0.0000028051, 0.0000028023, 0.0000027942, 0.0000027842, 0.0000027794, + 0.0000027787, 0.0000027806, 0.0000027840, 0.0000027880, 0.0000027902, + 0.0000027918, 0.0000027946, 0.0000027975, 0.0000027991, 0.0000028002, + 0.0000028014, 0.0000027965, 0.0000027824, 0.0000027713, 0.0000027645, + 0.0000027586, 0.0000027566, 0.0000027601, 0.0000027748, 0.0000027847, + 0.0000028033, 0.0000028134, 0.0000028095, 0.0000027970, 0.0000027851, + 0.0000027834, 0.0000027918, 0.0000027874, 0.0000027700, 0.0000027570, + 0.0000027571, 0.0000027634, 0.0000027599, 0.0000027503, 0.0000027505, + 0.0000027542, 0.0000027532, 0.0000027271, 0.0000027088, 0.0000027067, + 0.0000027007, 0.0000026974, 0.0000026975, 0.0000026910, 0.0000026717, + 0.0000026551, 0.0000026527, 0.0000026482, 0.0000026349, 0.0000026231, + 0.0000026175, 0.0000026135, 0.0000026098, 0.0000026061, 0.0000026047, + 0.0000026049, 0.0000026001, 0.0000025861, 0.0000025732, 0.0000025705, + 0.0000025717, 0.0000025732, 0.0000025748, 0.0000025750, 0.0000025742, + 0.0000025736, 0.0000025741, 0.0000025751, 0.0000025782, 0.0000025815, + 0.0000025836, 0.0000025838, 0.0000025844, 0.0000025872, 0.0000025920, + 0.0000025979, 0.0000026044, 0.0000026087, 0.0000026076, 0.0000026041, + 0.0000025995, 0.0000025954, 0.0000025913, 0.0000025879, 0.0000025839, + 0.0000025769, 0.0000025671, 0.0000025578, 0.0000025524, 0.0000025507, + 0.0000025504, 0.0000025523, 0.0000025578, 0.0000025649, 0.0000025720, + 0.0000025810, 0.0000025871, 0.0000025899, 0.0000025836, 0.0000025723, + 0.0000025525, 0.0000025299, 0.0000025115, 0.0000025017, 0.0000025040, + 0.0000025100, 0.0000025168, 0.0000025216, 0.0000025253, 0.0000025281, + 0.0000025298, 0.0000025303, 0.0000025283, 0.0000025225, 0.0000025212, + 0.0000025277, 0.0000025499, 0.0000025723, 0.0000025838, 0.0000025882, + 0.0000025922, 0.0000025953, 0.0000025962, 0.0000025990, 0.0000026051, + 0.0000026112, 0.0000026166, 0.0000026258, 0.0000026366, 0.0000026443, + 0.0000026553, 0.0000026691, 0.0000026780, 0.0000026851, 0.0000026920, + 0.0000026946, 0.0000026916, 0.0000026857, 0.0000026783, 0.0000026701, + 0.0000026665, 0.0000026745, 0.0000026913, 0.0000027041, 0.0000027099, + 0.0000027117, 0.0000027100, 0.0000027083, 0.0000027104, 0.0000027143, + 0.0000027221, 0.0000027297, 0.0000027338, 0.0000027363, 0.0000027376, + 0.0000027391, 0.0000027372, 0.0000027341, 0.0000027340, 0.0000027354, + 0.0000027437, 0.0000027683, 0.0000028048, 0.0000028329, 0.0000028402, + 0.0000028383, 0.0000028302, 0.0000028210, 0.0000028299, 0.0000028390, + 0.0000028434, 0.0000028395, 0.0000028340, 0.0000028255, 0.0000028224, + 0.0000028277, 0.0000028292, 0.0000028260, 0.0000028248, 0.0000028253, + 0.0000028348, 0.0000028412, 0.0000028445, 0.0000028443, 0.0000028387, + 0.0000028289, 0.0000028241, 0.0000028234, 0.0000028235, 0.0000028253, + 0.0000028301, 0.0000028338, 0.0000028340, 0.0000028336, 0.0000028351, + 0.0000028413, 0.0000028518, 0.0000028610, 0.0000028680, 0.0000028757, + 0.0000028848, 0.0000028906, 0.0000028899, 0.0000028813, 0.0000028686, + 0.0000028605, 0.0000028571, 0.0000028545, 0.0000028536, 0.0000028556, + 0.0000028629, 0.0000028719, 0.0000028776, 0.0000028802, 0.0000028820, + 0.0000028830, 0.0000028851, 0.0000028876, 0.0000028897, 0.0000028925, + 0.0000028961, 0.0000028986, 0.0000029019, 0.0000029047, 0.0000029060, + 0.0000029058, 0.0000029035, 0.0000028993, 0.0000028932, 0.0000028876, + 0.0000028851, 0.0000028856, 0.0000028881, 0.0000028912, 0.0000028925, + 0.0000028916, 0.0000028889, 0.0000028859, 0.0000028841, 0.0000028813, + 0.0000028774, 0.0000028768, 0.0000028791, 0.0000028794, 0.0000028811, + 0.0000028928, 0.0000029056, 0.0000029129, 0.0000029209, 0.0000029282, + 0.0000029274, 0.0000029213, 0.0000029188, 0.0000029226, 0.0000029255, + 0.0000029240, 0.0000029186, 0.0000029141, 0.0000029145, 0.0000029176, + 0.0000029196, 0.0000029171, 0.0000029109, 0.0000029043, 0.0000028982, + 0.0000028932, 0.0000028896, 0.0000028887, 0.0000028893, 0.0000028910, + 0.0000028919, 0.0000028913, 0.0000028880, 0.0000028809, 0.0000028742, + 0.0000028717, 0.0000028708, 0.0000028673, 0.0000028616, 0.0000028555, + 0.0000028502, 0.0000028468, 0.0000028449, 0.0000028446, 0.0000028457, + 0.0000028480, 0.0000028506, 0.0000028526, 0.0000028516, 0.0000028498, + 0.0000028477, 0.0000028441, 0.0000028399, 0.0000028355, 0.0000028303, + 0.0000028235, 0.0000028164, 0.0000028094, 0.0000028047, 0.0000028025, + 0.0000028019, 0.0000028015, 0.0000028013, 0.0000028034, 0.0000028069, + 0.0000028097, 0.0000028120, 0.0000028136, 0.0000028159, 0.0000028200, + 0.0000028263, 0.0000028331, 0.0000028380, 0.0000028395, 0.0000028387, + 0.0000028373, 0.0000028365, 0.0000028376, 0.0000028409, 0.0000028440, + 0.0000028450, 0.0000028432, 0.0000028380, 0.0000028347, 0.0000028308, + 0.0000028262, 0.0000028219, 0.0000028195, 0.0000028196, 0.0000028209, + 0.0000028243, 0.0000028288, 0.0000028325, 0.0000028351, 0.0000028376, + 0.0000028384, 0.0000028330, 0.0000028223, 0.0000028115, 0.0000028056, + 0.0000028058, 0.0000028141, 0.0000028261, 0.0000028304, 0.0000028285, + 0.0000028087, 0.0000027722, 0.0000027566, 0.0000027623, 0.0000027675, + 0.0000027673, 0.0000027768, 0.0000028028, 0.0000028267, 0.0000028386, + 0.0000028401, 0.0000028358, 0.0000028313, 0.0000028292, 0.0000028310, + 0.0000028343, 0.0000028361, 0.0000028347, 0.0000028312, 0.0000028277, + 0.0000028273, 0.0000028291, 0.0000028317, 0.0000028348, 0.0000028382, + 0.0000028417, 0.0000028462, 0.0000028511, 0.0000028529, 0.0000028532, + 0.0000028510, 0.0000028470, 0.0000028413, 0.0000028320, 0.0000028183, + 0.0000028018, 0.0000027874, 0.0000027783, 0.0000027737, 0.0000027723, + 0.0000027693, 0.0000027678, 0.0000027701, 0.0000027820, 0.0000028013, + 0.0000028246, 0.0000028433, 0.0000028516, 0.0000028514, 0.0000028495, + 0.0000028500, 0.0000028522, 0.0000028562, 0.0000028625, 0.0000028685, + 0.0000028712, 0.0000028723, 0.0000028715, 0.0000028683, 0.0000028632, + 0.0000028580, 0.0000028559, 0.0000028558, 0.0000028563, 0.0000028567, + 0.0000028549, 0.0000028513, 0.0000028441, 0.0000028389, 0.0000028363, + 0.0000028297, 0.0000028175, 0.0000028077, 0.0000028098, 0.0000028220, + 0.0000028242, 0.0000028323, 0.0000028476, 0.0000028600, 0.0000028774, + 0.0000028895, 0.0000028854, 0.0000028859, 0.0000028995, 0.0000029089, + 0.0000029086, 0.0000029001, 0.0000028908, 0.0000028840, 0.0000028806, + 0.0000028781, 0.0000028758, 0.0000028747, 0.0000028718, 0.0000028660, + 0.0000028611, 0.0000028561, 0.0000028471, 0.0000028359, 0.0000028254, + 0.0000028144, 0.0000028067, 0.0000028081, 0.0000028199, 0.0000028312, + 0.0000028351, 0.0000028392, 0.0000028450, 0.0000028496, 0.0000028625, + 0.0000028786, 0.0000028767, 0.0000028727, 0.0000028858, 0.0000029066, + 0.0000029141, 0.0000029059, 0.0000028986, 0.0000028904, 0.0000028742, + 0.0000028577, 0.0000028459, 0.0000028439, 0.0000028534, 0.0000028658, + 0.0000028714, 0.0000028744, 0.0000028797, 0.0000028868, 0.0000028911, + 0.0000028935, 0.0000028955, 0.0000028960, 0.0000028953, 0.0000028920, + 0.0000028858, 0.0000028741, 0.0000028625, 0.0000028623, 0.0000028649, + 0.0000028560, 0.0000028272, 0.0000028109, 0.0000028111, 0.0000028044, + 0.0000027973, 0.0000027975, 0.0000027995, 0.0000027945, 0.0000027789, + 0.0000027664, 0.0000027630, 0.0000027608, 0.0000027541, 0.0000027448, + 0.0000027381, 0.0000027348, 0.0000027356, 0.0000027382, 0.0000027384, + 0.0000027370, 0.0000027359, 0.0000027346, 0.0000027296, 0.0000027291, + 0.0000027378, 0.0000027455, 0.0000027413, 0.0000027345, 0.0000027404, + 0.0000027593, 0.0000027716, 0.0000027687, 0.0000027593, 0.0000027498, + 0.0000027417, 0.0000027366, 0.0000027324, 0.0000027312, 0.0000027336, + 0.0000027367, 0.0000027370, 0.0000027353, 0.0000027362, 0.0000027413, + 0.0000027453, 0.0000027450, 0.0000027423, 0.0000027413, 0.0000027433, + 0.0000027473, 0.0000027516, 0.0000027542, 0.0000027540, 0.0000027512, + 0.0000027474, 0.0000027448, 0.0000027430, 0.0000027429, 0.0000027432, + 0.0000027424, 0.0000027411, 0.0000027396, 0.0000027378, 0.0000027356, + 0.0000027338, 0.0000027337, 0.0000027346, 0.0000027350, 0.0000027349, + 0.0000027334, 0.0000027305, 0.0000027269, 0.0000027239, 0.0000027226, + 0.0000027227, 0.0000027224, 0.0000027214, 0.0000027200, 0.0000027183, + 0.0000027168, 0.0000027154, 0.0000027147, 0.0000027163, 0.0000027186, + 0.0000027210, 0.0000027255, 0.0000027327, 0.0000027389, 0.0000027441, + 0.0000027484, 0.0000027521, 0.0000027572, 0.0000027656, 0.0000027770, + 0.0000027914, 0.0000028083, 0.0000028262, 0.0000028434, 0.0000028599, + 0.0000028744, 0.0000028836, 0.0000028874, 0.0000028886, 0.0000028892, + 0.0000028910, 0.0000028942, 0.0000028977, 0.0000028995, 0.0000028984, + 0.0000028951, 0.0000028892, 0.0000028824, 0.0000028786, 0.0000028774, + 0.0000028777, 0.0000028800, 0.0000028850, 0.0000028916, 0.0000028988, + 0.0000029042, 0.0000029065, 0.0000029044, 0.0000028946, 0.0000028818, + 0.0000028734, 0.0000028692, 0.0000028664, 0.0000028655, 0.0000028662, + 0.0000028661, 0.0000028641, 0.0000028604, 0.0000028563, 0.0000028525, + 0.0000028450, 0.0000028315, 0.0000028199, 0.0000028145, 0.0000028120, + 0.0000028062, 0.0000027979, 0.0000027916, 0.0000027911, 0.0000027986, + 0.0000028164, 0.0000028351, 0.0000028435, 0.0000028404, 0.0000028342, + 0.0000028301, 0.0000028290, 0.0000028292, 0.0000028308, 0.0000028365, + 0.0000028425, 0.0000028435, 0.0000028409, 0.0000028391, 0.0000028412, + 0.0000028455, 0.0000028485, 0.0000028466, 0.0000028430, 0.0000028389, + 0.0000028354, 0.0000028311, 0.0000028317, 0.0000028387, 0.0000028464, + 0.0000028480, 0.0000028437, 0.0000028370, 0.0000028284, 0.0000028193, + 0.0000028138, 0.0000028096, 0.0000028077, 0.0000028097, 0.0000028068, + 0.0000027941, 0.0000027831, 0.0000027868, 0.0000028020, 0.0000028111, + 0.0000028102, 0.0000028082, 0.0000028072, 0.0000028062, 0.0000028049, + 0.0000028022, 0.0000028005, 0.0000027983, 0.0000027964, 0.0000027961, + 0.0000027960, 0.0000027959, 0.0000027954, 0.0000027962, 0.0000027985, + 0.0000028003, 0.0000028001, 0.0000027989, 0.0000027978, 0.0000027966, + 0.0000027951, 0.0000027934, 0.0000027923, 0.0000027918, 0.0000027909, + 0.0000027898, 0.0000027892, 0.0000027887, 0.0000027876, 0.0000027850, + 0.0000027830, 0.0000027834, 0.0000027870, 0.0000027934, 0.0000027976, + 0.0000027961, 0.0000027907, 0.0000027827, 0.0000027742, 0.0000027682, + 0.0000027665, 0.0000027661, 0.0000027636, 0.0000027597, 0.0000027560, + 0.0000027531, 0.0000027489, 0.0000027409, 0.0000027307, 0.0000027262, + 0.0000027309, 0.0000027377, 0.0000027412, 0.0000027416, 0.0000027389, + 0.0000027347, 0.0000027306, 0.0000027273, 0.0000027232, 0.0000027237, + 0.0000027307, 0.0000027339, 0.0000027305, 0.0000027201, 0.0000027149, + 0.0000027141, 0.0000027120, 0.0000027123, 0.0000027134, 0.0000027101, + 0.0000027061, 0.0000027067, 0.0000027129, 0.0000027214, 0.0000027279, + 0.0000027307, 0.0000027306, 0.0000027289, 0.0000027264, 0.0000027234, + 0.0000027201, 0.0000027172, 0.0000027151, 0.0000027129, 0.0000027118, + 0.0000027114, 0.0000027086, 0.0000027033, 0.0000026937, 0.0000026810, + 0.0000026731, 0.0000026725, 0.0000026745, 0.0000026777, 0.0000026812, + 0.0000026834, 0.0000026824, 0.0000026779, 0.0000026683, 0.0000026533, + 0.0000026395, 0.0000026361, 0.0000026491, 0.0000026707, 0.0000026876, + 0.0000026933, 0.0000026947, 0.0000027058, 0.0000027218, 0.0000027289, + 0.0000027226, 0.0000027094, 0.0000027017, 0.0000026746, 0.0000026439, + 0.0000026182, 0.0000026167, 0.0000026455, 0.0000026533, 0.0000026828, + 0.0000027447, 0.0000027663, 0.0000027652, 0.0000027634, 0.0000027734, + 0.0000027892, 0.0000028060, 0.0000028138, 0.0000028108, 0.0000028093, + 0.0000028110, 0.0000028120, 0.0000028108, 0.0000028092, 0.0000028080, + 0.0000028078, 0.0000028082, 0.0000028080, 0.0000028056, 0.0000027993, + 0.0000027892, 0.0000027816, 0.0000027788, 0.0000027785, 0.0000027829, + 0.0000027893, 0.0000027925, 0.0000027932, 0.0000027940, 0.0000027965, + 0.0000027980, 0.0000027970, 0.0000027951, 0.0000027901, 0.0000027773, + 0.0000027674, 0.0000027636, 0.0000027588, 0.0000027544, 0.0000027567, + 0.0000027716, 0.0000027838, 0.0000028024, 0.0000028112, 0.0000028071, + 0.0000027938, 0.0000027825, 0.0000027813, 0.0000027906, 0.0000027842, + 0.0000027655, 0.0000027551, 0.0000027570, 0.0000027627, 0.0000027565, + 0.0000027500, 0.0000027508, 0.0000027545, 0.0000027500, 0.0000027220, + 0.0000027090, 0.0000027072, 0.0000027002, 0.0000026981, 0.0000026965, + 0.0000026849, 0.0000026638, 0.0000026513, 0.0000026511, 0.0000026451, + 0.0000026297, 0.0000026161, 0.0000026092, 0.0000026052, 0.0000026016, + 0.0000025976, 0.0000025953, 0.0000025948, 0.0000025902, 0.0000025801, + 0.0000025709, 0.0000025688, 0.0000025693, 0.0000025706, 0.0000025723, + 0.0000025732, 0.0000025736, 0.0000025766, 0.0000025820, 0.0000025873, + 0.0000025911, 0.0000025921, 0.0000025908, 0.0000025881, 0.0000025878, + 0.0000025917, 0.0000025991, 0.0000026067, 0.0000026106, 0.0000026106, + 0.0000026042, 0.0000025941, 0.0000025830, 0.0000025746, 0.0000025694, + 0.0000025666, 0.0000025644, 0.0000025602, 0.0000025537, 0.0000025466, + 0.0000025414, 0.0000025389, 0.0000025372, 0.0000025353, 0.0000025356, + 0.0000025394, 0.0000025450, 0.0000025533, 0.0000025626, 0.0000025727, + 0.0000025772, 0.0000025759, 0.0000025673, 0.0000025521, 0.0000025374, + 0.0000025241, 0.0000025165, 0.0000025135, 0.0000025139, 0.0000025157, + 0.0000025154, 0.0000025147, 0.0000025159, 0.0000025203, 0.0000025271, + 0.0000025310, 0.0000025276, 0.0000025193, 0.0000025162, 0.0000025262, + 0.0000025552, 0.0000025811, 0.0000025911, 0.0000025956, 0.0000025986, + 0.0000025998, 0.0000026009, 0.0000026032, 0.0000026084, 0.0000026152, + 0.0000026221, 0.0000026322, 0.0000026441, 0.0000026528, 0.0000026632, + 0.0000026748, 0.0000026815, 0.0000026863, 0.0000026903, 0.0000026900, + 0.0000026854, 0.0000026767, 0.0000026684, 0.0000026656, 0.0000026699, + 0.0000026829, 0.0000026977, 0.0000027082, 0.0000027125, 0.0000027117, + 0.0000027095, 0.0000027090, 0.0000027100, 0.0000027146, 0.0000027206, + 0.0000027236, 0.0000027265, 0.0000027284, 0.0000027291, 0.0000027291, + 0.0000027303, 0.0000027314, 0.0000027322, 0.0000027369, 0.0000027558, + 0.0000027902, 0.0000028274, 0.0000028415, 0.0000028391, 0.0000028298, + 0.0000028198, 0.0000028297, 0.0000028378, 0.0000028434, 0.0000028421, + 0.0000028382, 0.0000028301, 0.0000028254, 0.0000028309, 0.0000028317, + 0.0000028269, 0.0000028247, 0.0000028227, 0.0000028338, 0.0000028424, + 0.0000028429, 0.0000028389, 0.0000028308, 0.0000028244, 0.0000028229, + 0.0000028239, 0.0000028261, 0.0000028296, 0.0000028333, 0.0000028339, + 0.0000028335, 0.0000028334, 0.0000028368, 0.0000028462, 0.0000028569, + 0.0000028676, 0.0000028762, 0.0000028829, 0.0000028854, 0.0000028806, + 0.0000028700, 0.0000028592, 0.0000028537, 0.0000028519, 0.0000028515, + 0.0000028527, 0.0000028580, 0.0000028662, 0.0000028714, 0.0000028749, + 0.0000028779, 0.0000028813, 0.0000028841, 0.0000028867, 0.0000028915, + 0.0000028971, 0.0000029008, 0.0000029040, 0.0000029049, 0.0000029057, + 0.0000029088, 0.0000029117, 0.0000029106, 0.0000029047, 0.0000028960, + 0.0000028872, 0.0000028816, 0.0000028817, 0.0000028859, 0.0000028922, + 0.0000028967, 0.0000028968, 0.0000028957, 0.0000028937, 0.0000028912, + 0.0000028888, 0.0000028883, 0.0000028865, 0.0000028802, 0.0000028771, + 0.0000028780, 0.0000028804, 0.0000028901, 0.0000029034, 0.0000029123, + 0.0000029189, 0.0000029251, 0.0000029270, 0.0000029218, 0.0000029184, + 0.0000029228, 0.0000029273, 0.0000029262, 0.0000029216, 0.0000029174, + 0.0000029158, 0.0000029173, 0.0000029193, 0.0000029199, 0.0000029167, + 0.0000029097, 0.0000029029, 0.0000028975, 0.0000028937, 0.0000028915, + 0.0000028914, 0.0000028937, 0.0000028971, 0.0000028981, 0.0000028967, + 0.0000028910, 0.0000028832, 0.0000028777, 0.0000028750, 0.0000028732, + 0.0000028692, 0.0000028633, 0.0000028581, 0.0000028551, 0.0000028552, + 0.0000028560, 0.0000028571, 0.0000028586, 0.0000028608, 0.0000028632, + 0.0000028654, 0.0000028657, 0.0000028648, 0.0000028630, 0.0000028609, + 0.0000028580, 0.0000028543, 0.0000028499, 0.0000028435, 0.0000028352, + 0.0000028269, 0.0000028201, 0.0000028148, 0.0000028103, 0.0000028066, + 0.0000028040, 0.0000028038, 0.0000028063, 0.0000028088, 0.0000028103, + 0.0000028113, 0.0000028118, 0.0000028126, 0.0000028155, 0.0000028196, + 0.0000028237, 0.0000028258, 0.0000028258, 0.0000028243, 0.0000028226, + 0.0000028219, 0.0000028232, 0.0000028260, 0.0000028288, 0.0000028302, + 0.0000028306, 0.0000028309, 0.0000028317, 0.0000028303, 0.0000028280, + 0.0000028252, 0.0000028239, 0.0000028225, 0.0000028208, 0.0000028208, + 0.0000028211, 0.0000028214, 0.0000028230, 0.0000028284, 0.0000028327, + 0.0000028283, 0.0000028166, 0.0000028047, 0.0000027984, 0.0000027985, + 0.0000028068, 0.0000028218, 0.0000028286, 0.0000028274, 0.0000028092, + 0.0000027716, 0.0000027520, 0.0000027532, 0.0000027606, 0.0000027637, + 0.0000027784, 0.0000028078, 0.0000028315, 0.0000028405, 0.0000028416, + 0.0000028382, 0.0000028348, 0.0000028335, 0.0000028354, 0.0000028372, + 0.0000028363, 0.0000028320, 0.0000028270, 0.0000028247, 0.0000028264, + 0.0000028299, 0.0000028329, 0.0000028350, 0.0000028376, 0.0000028414, + 0.0000028474, 0.0000028531, 0.0000028554, 0.0000028549, 0.0000028507, + 0.0000028454, 0.0000028403, 0.0000028339, 0.0000028252, 0.0000028130, + 0.0000027999, 0.0000027892, 0.0000027810, 0.0000027745, 0.0000027692, + 0.0000027671, 0.0000027648, 0.0000027656, 0.0000027755, 0.0000027964, + 0.0000028200, 0.0000028380, 0.0000028443, 0.0000028432, 0.0000028441, + 0.0000028463, 0.0000028488, 0.0000028532, 0.0000028602, 0.0000028672, + 0.0000028734, 0.0000028787, 0.0000028806, 0.0000028780, 0.0000028735, + 0.0000028701, 0.0000028678, 0.0000028660, 0.0000028641, 0.0000028609, + 0.0000028549, 0.0000028455, 0.0000028393, 0.0000028360, 0.0000028308, + 0.0000028196, 0.0000028074, 0.0000028021, 0.0000028139, 0.0000028204, + 0.0000028229, 0.0000028396, 0.0000028551, 0.0000028690, 0.0000028848, + 0.0000028859, 0.0000028838, 0.0000028954, 0.0000029083, 0.0000029105, + 0.0000029049, 0.0000028975, 0.0000028902, 0.0000028845, 0.0000028787, + 0.0000028719, 0.0000028664, 0.0000028588, 0.0000028501, 0.0000028458, + 0.0000028449, 0.0000028413, 0.0000028338, 0.0000028258, 0.0000028184, + 0.0000028116, 0.0000028099, 0.0000028184, 0.0000028294, 0.0000028332, + 0.0000028384, 0.0000028475, 0.0000028535, 0.0000028601, 0.0000028740, + 0.0000028828, 0.0000028792, 0.0000028836, 0.0000029017, 0.0000029147, + 0.0000029107, 0.0000029010, 0.0000028937, 0.0000028779, 0.0000028609, + 0.0000028487, 0.0000028432, 0.0000028481, 0.0000028613, 0.0000028695, + 0.0000028713, 0.0000028729, 0.0000028776, 0.0000028819, 0.0000028845, + 0.0000028881, 0.0000028909, 0.0000028918, 0.0000028898, 0.0000028858, + 0.0000028785, 0.0000028636, 0.0000028596, 0.0000028611, 0.0000028528, + 0.0000028245, 0.0000028099, 0.0000028102, 0.0000028030, 0.0000027942, + 0.0000027927, 0.0000027965, 0.0000027954, 0.0000027849, 0.0000027724, + 0.0000027673, 0.0000027667, 0.0000027629, 0.0000027530, 0.0000027418, + 0.0000027336, 0.0000027312, 0.0000027340, 0.0000027372, 0.0000027365, + 0.0000027350, 0.0000027357, 0.0000027345, 0.0000027302, 0.0000027306, + 0.0000027392, 0.0000027448, 0.0000027398, 0.0000027338, 0.0000027377, + 0.0000027537, 0.0000027656, 0.0000027636, 0.0000027537, 0.0000027448, + 0.0000027396, 0.0000027353, 0.0000027302, 0.0000027275, 0.0000027290, + 0.0000027316, 0.0000027319, 0.0000027302, 0.0000027305, 0.0000027335, + 0.0000027353, 0.0000027338, 0.0000027313, 0.0000027305, 0.0000027317, + 0.0000027335, 0.0000027346, 0.0000027339, 0.0000027314, 0.0000027277, + 0.0000027247, 0.0000027227, 0.0000027217, 0.0000027225, 0.0000027233, + 0.0000027232, 0.0000027231, 0.0000027227, 0.0000027214, 0.0000027193, + 0.0000027168, 0.0000027137, 0.0000027103, 0.0000027071, 0.0000027048, + 0.0000027033, 0.0000027026, 0.0000027026, 0.0000027038, 0.0000027060, + 0.0000027072, 0.0000027073, 0.0000027071, 0.0000027074, 0.0000027084, + 0.0000027101, 0.0000027111, 0.0000027118, 0.0000027118, 0.0000027108, + 0.0000027102, 0.0000027132, 0.0000027190, 0.0000027255, 0.0000027325, + 0.0000027390, 0.0000027447, 0.0000027513, 0.0000027599, 0.0000027700, + 0.0000027810, 0.0000027932, 0.0000028066, 0.0000028219, 0.0000028394, + 0.0000028572, 0.0000028717, 0.0000028797, 0.0000028815, 0.0000028792, + 0.0000028754, 0.0000028728, 0.0000028720, 0.0000028733, 0.0000028759, + 0.0000028786, 0.0000028800, 0.0000028799, 0.0000028805, 0.0000028825, + 0.0000028851, 0.0000028886, 0.0000028946, 0.0000029021, 0.0000029090, + 0.0000029131, 0.0000029135, 0.0000029099, 0.0000029015, 0.0000028900, + 0.0000028806, 0.0000028732, 0.0000028669, 0.0000028640, 0.0000028634, + 0.0000028638, 0.0000028639, 0.0000028620, 0.0000028590, 0.0000028576, + 0.0000028555, 0.0000028473, 0.0000028342, 0.0000028222, 0.0000028139, + 0.0000028060, 0.0000027975, 0.0000027921, 0.0000027920, 0.0000027976, + 0.0000028090, 0.0000028257, 0.0000028374, 0.0000028383, 0.0000028343, + 0.0000028299, 0.0000028297, 0.0000028310, 0.0000028328, 0.0000028368, + 0.0000028427, 0.0000028459, 0.0000028440, 0.0000028404, 0.0000028393, + 0.0000028407, 0.0000028427, 0.0000028423, 0.0000028402, 0.0000028379, + 0.0000028349, 0.0000028300, 0.0000028295, 0.0000028374, 0.0000028470, + 0.0000028498, 0.0000028476, 0.0000028409, 0.0000028330, 0.0000028239, + 0.0000028165, 0.0000028125, 0.0000028086, 0.0000028076, 0.0000028077, + 0.0000028028, 0.0000027953, 0.0000027867, 0.0000027847, 0.0000027916, + 0.0000028008, 0.0000028081, 0.0000028095, 0.0000028106, 0.0000028099, + 0.0000028074, 0.0000028049, 0.0000028016, 0.0000027979, 0.0000027962, + 0.0000027958, 0.0000027948, 0.0000027930, 0.0000027907, 0.0000027893, + 0.0000027877, 0.0000027854, 0.0000027839, 0.0000027834, 0.0000027832, + 0.0000027828, 0.0000027825, 0.0000027823, 0.0000027828, 0.0000027844, + 0.0000027869, 0.0000027901, 0.0000027935, 0.0000027944, 0.0000027918, + 0.0000027872, 0.0000027846, 0.0000027852, 0.0000027886, 0.0000027931, + 0.0000027946, 0.0000027911, 0.0000027817, 0.0000027708, 0.0000027646, + 0.0000027637, 0.0000027632, 0.0000027595, 0.0000027548, 0.0000027523, + 0.0000027508, 0.0000027507, 0.0000027496, 0.0000027460, 0.0000027362, + 0.0000027264, 0.0000027269, 0.0000027323, 0.0000027348, 0.0000027359, + 0.0000027342, 0.0000027299, 0.0000027256, 0.0000027207, 0.0000027184, + 0.0000027215, 0.0000027266, 0.0000027259, 0.0000027178, 0.0000027127, + 0.0000027119, 0.0000027104, 0.0000027114, 0.0000027120, 0.0000027076, + 0.0000027036, 0.0000027060, 0.0000027147, 0.0000027259, 0.0000027345, + 0.0000027378, 0.0000027373, 0.0000027350, 0.0000027328, 0.0000027305, + 0.0000027273, 0.0000027228, 0.0000027190, 0.0000027168, 0.0000027150, + 0.0000027139, 0.0000027125, 0.0000027079, 0.0000027015, 0.0000026918, + 0.0000026807, 0.0000026735, 0.0000026728, 0.0000026738, 0.0000026755, + 0.0000026775, 0.0000026776, 0.0000026766, 0.0000026735, 0.0000026653, + 0.0000026504, 0.0000026333, 0.0000026260, 0.0000026348, 0.0000026580, + 0.0000026802, 0.0000026911, 0.0000026922, 0.0000026988, 0.0000027143, + 0.0000027221, 0.0000027161, 0.0000027032, 0.0000026951, 0.0000026708, + 0.0000026450, 0.0000026193, 0.0000026170, 0.0000026440, 0.0000026509, + 0.0000026737, 0.0000027329, 0.0000027611, 0.0000027603, 0.0000027576, + 0.0000027652, 0.0000027778, 0.0000027925, 0.0000028025, 0.0000028026, + 0.0000028018, 0.0000028042, 0.0000028072, 0.0000028075, 0.0000028061, + 0.0000028052, 0.0000028060, 0.0000028089, 0.0000028112, 0.0000028108, + 0.0000028063, 0.0000027977, 0.0000027874, 0.0000027798, 0.0000027786, + 0.0000027828, 0.0000027896, 0.0000027933, 0.0000027944, 0.0000027941, + 0.0000027946, 0.0000027964, 0.0000027943, 0.0000027889, 0.0000027826, + 0.0000027721, 0.0000027650, 0.0000027628, 0.0000027586, 0.0000027521, + 0.0000027540, 0.0000027692, 0.0000027837, 0.0000028019, 0.0000028090, + 0.0000028047, 0.0000027908, 0.0000027806, 0.0000027807, 0.0000027903, + 0.0000027807, 0.0000027615, 0.0000027537, 0.0000027572, 0.0000027604, + 0.0000027538, 0.0000027503, 0.0000027512, 0.0000027546, 0.0000027456, + 0.0000027182, 0.0000027102, 0.0000027073, 0.0000027001, 0.0000026993, + 0.0000026943, 0.0000026789, 0.0000026586, 0.0000026495, 0.0000026493, + 0.0000026428, 0.0000026275, 0.0000026124, 0.0000026031, 0.0000025984, + 0.0000025953, 0.0000025913, 0.0000025890, 0.0000025877, 0.0000025834, + 0.0000025752, 0.0000025682, 0.0000025666, 0.0000025667, 0.0000025675, + 0.0000025696, 0.0000025722, 0.0000025755, 0.0000025814, 0.0000025892, + 0.0000025949, 0.0000025958, 0.0000025945, 0.0000025917, 0.0000025892, + 0.0000025901, 0.0000025952, 0.0000026017, 0.0000026068, 0.0000026070, + 0.0000026012, 0.0000025906, 0.0000025777, 0.0000025649, 0.0000025563, + 0.0000025533, 0.0000025528, 0.0000025532, 0.0000025526, 0.0000025498, + 0.0000025457, 0.0000025412, 0.0000025387, 0.0000025375, 0.0000025352, + 0.0000025353, 0.0000025366, 0.0000025381, 0.0000025409, 0.0000025427, + 0.0000025477, 0.0000025518, 0.0000025546, 0.0000025548, 0.0000025503, + 0.0000025435, 0.0000025378, 0.0000025359, 0.0000025333, 0.0000025292, + 0.0000025232, 0.0000025170, 0.0000025123, 0.0000025083, 0.0000025077, + 0.0000025105, 0.0000025167, 0.0000025237, 0.0000025262, 0.0000025230, + 0.0000025179, 0.0000025191, 0.0000025366, 0.0000025710, 0.0000025932, + 0.0000026002, 0.0000026034, 0.0000026038, 0.0000026041, 0.0000026038, + 0.0000026056, 0.0000026118, 0.0000026201, 0.0000026281, 0.0000026387, + 0.0000026496, 0.0000026568, 0.0000026663, 0.0000026773, 0.0000026825, + 0.0000026850, 0.0000026868, 0.0000026846, 0.0000026773, 0.0000026698, + 0.0000026669, 0.0000026677, 0.0000026747, 0.0000026875, 0.0000027028, + 0.0000027122, 0.0000027131, 0.0000027109, 0.0000027090, 0.0000027077, + 0.0000027092, 0.0000027142, 0.0000027180, 0.0000027193, 0.0000027189, + 0.0000027183, 0.0000027211, 0.0000027240, 0.0000027270, 0.0000027303, + 0.0000027340, 0.0000027479, 0.0000027808, 0.0000028221, 0.0000028418, + 0.0000028394, 0.0000028293, 0.0000028188, 0.0000028288, 0.0000028359, + 0.0000028426, 0.0000028440, 0.0000028425, 0.0000028340, 0.0000028277, + 0.0000028323, 0.0000028317, 0.0000028271, 0.0000028242, 0.0000028205, + 0.0000028337, 0.0000028434, 0.0000028410, 0.0000028323, 0.0000028244, + 0.0000028209, 0.0000028218, 0.0000028255, 0.0000028278, 0.0000028304, + 0.0000028312, 0.0000028298, 0.0000028291, 0.0000028316, 0.0000028397, + 0.0000028535, 0.0000028668, 0.0000028757, 0.0000028792, 0.0000028783, + 0.0000028699, 0.0000028594, 0.0000028537, 0.0000028511, 0.0000028497, + 0.0000028510, 0.0000028563, 0.0000028635, 0.0000028679, 0.0000028698, + 0.0000028722, 0.0000028762, 0.0000028800, 0.0000028826, 0.0000028856, + 0.0000028920, 0.0000028996, 0.0000029048, 0.0000029072, 0.0000029097, + 0.0000029114, 0.0000029141, 0.0000029151, 0.0000029134, 0.0000029044, + 0.0000028920, 0.0000028816, 0.0000028776, 0.0000028803, 0.0000028871, + 0.0000028946, 0.0000028982, 0.0000028973, 0.0000028953, 0.0000028946, + 0.0000028941, 0.0000028916, 0.0000028892, 0.0000028889, 0.0000028865, + 0.0000028783, 0.0000028748, 0.0000028782, 0.0000028863, 0.0000029002, + 0.0000029123, 0.0000029200, 0.0000029250, 0.0000029256, 0.0000029215, + 0.0000029168, 0.0000029199, 0.0000029268, 0.0000029276, 0.0000029235, + 0.0000029196, 0.0000029176, 0.0000029174, 0.0000029181, 0.0000029188, + 0.0000029184, 0.0000029157, 0.0000029103, 0.0000029055, 0.0000029019, + 0.0000028991, 0.0000028970, 0.0000028968, 0.0000028995, 0.0000029029, + 0.0000029034, 0.0000029006, 0.0000028946, 0.0000028883, 0.0000028837, + 0.0000028799, 0.0000028768, 0.0000028729, 0.0000028686, 0.0000028661, + 0.0000028662, 0.0000028684, 0.0000028707, 0.0000028720, 0.0000028719, + 0.0000028723, 0.0000028732, 0.0000028746, 0.0000028745, 0.0000028737, + 0.0000028715, 0.0000028691, 0.0000028676, 0.0000028656, 0.0000028624, + 0.0000028580, 0.0000028520, 0.0000028456, 0.0000028391, 0.0000028319, + 0.0000028247, 0.0000028185, 0.0000028130, 0.0000028094, 0.0000028091, + 0.0000028111, 0.0000028137, 0.0000028162, 0.0000028173, 0.0000028171, + 0.0000028173, 0.0000028180, 0.0000028201, 0.0000028224, 0.0000028230, + 0.0000028221, 0.0000028195, 0.0000028165, 0.0000028148, 0.0000028146, + 0.0000028154, 0.0000028153, 0.0000028141, 0.0000028145, 0.0000028177, + 0.0000028211, 0.0000028238, 0.0000028249, 0.0000028268, 0.0000028279, + 0.0000028262, 0.0000028233, 0.0000028203, 0.0000028169, 0.0000028138, + 0.0000028146, 0.0000028201, 0.0000028250, 0.0000028229, 0.0000028129, + 0.0000028003, 0.0000027935, 0.0000027928, 0.0000028003, 0.0000028165, + 0.0000028259, 0.0000028243, 0.0000028100, 0.0000027747, 0.0000027460, + 0.0000027434, 0.0000027531, 0.0000027602, 0.0000027758, 0.0000028036, + 0.0000028277, 0.0000028398, 0.0000028407, 0.0000028396, 0.0000028375, + 0.0000028369, 0.0000028376, 0.0000028373, 0.0000028326, 0.0000028258, + 0.0000028218, 0.0000028220, 0.0000028265, 0.0000028319, 0.0000028354, + 0.0000028374, 0.0000028395, 0.0000028429, 0.0000028483, 0.0000028540, + 0.0000028554, 0.0000028540, 0.0000028487, 0.0000028425, 0.0000028369, + 0.0000028310, 0.0000028245, 0.0000028177, 0.0000028105, 0.0000028041, + 0.0000027960, 0.0000027866, 0.0000027767, 0.0000027696, 0.0000027646, + 0.0000027631, 0.0000027637, 0.0000027750, 0.0000027948, 0.0000028175, + 0.0000028333, 0.0000028390, 0.0000028427, 0.0000028453, 0.0000028477, + 0.0000028501, 0.0000028554, 0.0000028629, 0.0000028724, 0.0000028815, + 0.0000028884, 0.0000028901, 0.0000028884, 0.0000028861, 0.0000028836, + 0.0000028795, 0.0000028745, 0.0000028691, 0.0000028614, 0.0000028504, + 0.0000028418, 0.0000028355, 0.0000028303, 0.0000028208, 0.0000028086, + 0.0000028000, 0.0000028060, 0.0000028170, 0.0000028172, 0.0000028298, + 0.0000028492, 0.0000028638, 0.0000028774, 0.0000028843, 0.0000028817, + 0.0000028897, 0.0000029049, 0.0000029105, 0.0000029078, 0.0000029021, + 0.0000028954, 0.0000028878, 0.0000028788, 0.0000028665, 0.0000028537, + 0.0000028404, 0.0000028297, 0.0000028270, 0.0000028292, 0.0000028298, + 0.0000028271, 0.0000028244, 0.0000028234, 0.0000028203, 0.0000028175, + 0.0000028212, 0.0000028304, 0.0000028337, 0.0000028377, 0.0000028479, + 0.0000028574, 0.0000028626, 0.0000028695, 0.0000028810, 0.0000028864, + 0.0000028862, 0.0000028959, 0.0000029123, 0.0000029157, 0.0000029051, + 0.0000028966, 0.0000028840, 0.0000028659, 0.0000028524, 0.0000028446, + 0.0000028442, 0.0000028534, 0.0000028645, 0.0000028693, 0.0000028700, + 0.0000028721, 0.0000028753, 0.0000028776, 0.0000028809, 0.0000028844, + 0.0000028859, 0.0000028856, 0.0000028840, 0.0000028810, 0.0000028654, + 0.0000028568, 0.0000028573, 0.0000028494, 0.0000028216, 0.0000028087, + 0.0000028090, 0.0000028014, 0.0000027902, 0.0000027859, 0.0000027897, + 0.0000027921, 0.0000027875, 0.0000027783, 0.0000027706, 0.0000027685, + 0.0000027670, 0.0000027618, 0.0000027507, 0.0000027375, 0.0000027290, + 0.0000027281, 0.0000027329, 0.0000027353, 0.0000027345, 0.0000027352, + 0.0000027368, 0.0000027350, 0.0000027311, 0.0000027327, 0.0000027404, + 0.0000027443, 0.0000027400, 0.0000027338, 0.0000027356, 0.0000027479, + 0.0000027593, 0.0000027595, 0.0000027495, 0.0000027402, 0.0000027361, + 0.0000027335, 0.0000027287, 0.0000027248, 0.0000027247, 0.0000027262, + 0.0000027267, 0.0000027254, 0.0000027244, 0.0000027250, 0.0000027262, + 0.0000027257, 0.0000027241, 0.0000027230, 0.0000027221, 0.0000027211, + 0.0000027195, 0.0000027170, 0.0000027137, 0.0000027102, 0.0000027074, + 0.0000027054, 0.0000027047, 0.0000027049, 0.0000027051, 0.0000027048, + 0.0000027032, 0.0000027005, 0.0000026968, 0.0000026921, 0.0000026868, + 0.0000026823, 0.0000026794, 0.0000026786, 0.0000026793, 0.0000026807, + 0.0000026819, 0.0000026840, 0.0000026869, 0.0000026893, 0.0000026909, + 0.0000026924, 0.0000026945, 0.0000026973, 0.0000027000, 0.0000027012, + 0.0000027015, 0.0000027012, 0.0000027000, 0.0000026991, 0.0000027003, + 0.0000027040, 0.0000027102, 0.0000027189, 0.0000027278, 0.0000027346, + 0.0000027404, 0.0000027476, 0.0000027565, 0.0000027664, 0.0000027769, + 0.0000027865, 0.0000027954, 0.0000028051, 0.0000028167, 0.0000028300, + 0.0000028431, 0.0000028538, 0.0000028610, 0.0000028643, 0.0000028633, + 0.0000028597, 0.0000028545, 0.0000028513, 0.0000028521, 0.0000028570, + 0.0000028645, 0.0000028735, 0.0000028819, 0.0000028903, 0.0000028966, + 0.0000029010, 0.0000029058, 0.0000029104, 0.0000029127, 0.0000029136, + 0.0000029123, 0.0000029083, 0.0000029014, 0.0000028926, 0.0000028841, + 0.0000028755, 0.0000028684, 0.0000028651, 0.0000028641, 0.0000028649, + 0.0000028667, 0.0000028668, 0.0000028649, 0.0000028638, 0.0000028636, + 0.0000028603, 0.0000028522, 0.0000028405, 0.0000028265, 0.0000028124, + 0.0000028002, 0.0000027939, 0.0000027942, 0.0000027999, 0.0000028093, + 0.0000028219, 0.0000028330, 0.0000028363, 0.0000028329, 0.0000028261, + 0.0000028247, 0.0000028279, 0.0000028321, 0.0000028372, 0.0000028430, + 0.0000028477, 0.0000028476, 0.0000028434, 0.0000028398, 0.0000028379, + 0.0000028371, 0.0000028360, 0.0000028335, 0.0000028314, 0.0000028291, + 0.0000028256, 0.0000028246, 0.0000028311, 0.0000028411, 0.0000028475, + 0.0000028472, 0.0000028416, 0.0000028343, 0.0000028271, 0.0000028188, + 0.0000028145, 0.0000028121, 0.0000028091, 0.0000028067, 0.0000028045, + 0.0000028025, 0.0000028000, 0.0000027947, 0.0000027888, 0.0000027863, + 0.0000027889, 0.0000027941, 0.0000028004, 0.0000028061, 0.0000028086, + 0.0000028070, 0.0000028041, 0.0000027998, 0.0000027956, 0.0000027915, + 0.0000027886, 0.0000027852, 0.0000027813, 0.0000027774, 0.0000027726, + 0.0000027679, 0.0000027658, 0.0000027660, 0.0000027673, 0.0000027689, + 0.0000027703, 0.0000027718, 0.0000027735, 0.0000027753, 0.0000027773, + 0.0000027807, 0.0000027871, 0.0000027946, 0.0000027972, 0.0000027946, + 0.0000027888, 0.0000027866, 0.0000027873, 0.0000027887, 0.0000027886, + 0.0000027847, 0.0000027758, 0.0000027675, 0.0000027647, 0.0000027644, + 0.0000027619, 0.0000027568, 0.0000027536, 0.0000027532, 0.0000027552, + 0.0000027558, 0.0000027535, 0.0000027508, 0.0000027487, 0.0000027388, + 0.0000027247, 0.0000027237, 0.0000027280, 0.0000027308, 0.0000027325, + 0.0000027307, 0.0000027262, 0.0000027204, 0.0000027152, 0.0000027153, + 0.0000027200, 0.0000027214, 0.0000027147, 0.0000027102, 0.0000027099, + 0.0000027090, 0.0000027111, 0.0000027121, 0.0000027075, 0.0000027033, + 0.0000027051, 0.0000027145, 0.0000027280, 0.0000027388, 0.0000027424, + 0.0000027411, 0.0000027374, 0.0000027342, 0.0000027329, 0.0000027324, + 0.0000027300, 0.0000027252, 0.0000027211, 0.0000027182, 0.0000027162, + 0.0000027154, 0.0000027129, 0.0000027070, 0.0000026989, 0.0000026900, + 0.0000026806, 0.0000026744, 0.0000026725, 0.0000026723, 0.0000026726, + 0.0000026735, 0.0000026737, 0.0000026725, 0.0000026697, 0.0000026627, + 0.0000026481, 0.0000026299, 0.0000026202, 0.0000026234, 0.0000026430, + 0.0000026703, 0.0000026885, 0.0000026908, 0.0000026933, 0.0000027056, + 0.0000027141, 0.0000027094, 0.0000026968, 0.0000026885, 0.0000026710, + 0.0000026487, 0.0000026224, 0.0000026178, 0.0000026406, 0.0000026490, + 0.0000026627, 0.0000027130, 0.0000027527, 0.0000027549, 0.0000027527, + 0.0000027554, 0.0000027642, 0.0000027769, 0.0000027874, 0.0000027934, + 0.0000027964, 0.0000027976, 0.0000028008, 0.0000028036, 0.0000028044, + 0.0000028041, 0.0000028045, 0.0000028083, 0.0000028128, 0.0000028150, + 0.0000028136, 0.0000028084, 0.0000027977, 0.0000027860, 0.0000027803, + 0.0000027833, 0.0000027895, 0.0000027926, 0.0000027935, 0.0000027947, + 0.0000027939, 0.0000027938, 0.0000027907, 0.0000027834, 0.0000027761, + 0.0000027681, 0.0000027640, 0.0000027617, 0.0000027572, 0.0000027493, + 0.0000027525, 0.0000027675, 0.0000027840, 0.0000028016, 0.0000028070, + 0.0000028024, 0.0000027881, 0.0000027795, 0.0000027812, 0.0000027903, + 0.0000027772, 0.0000027585, 0.0000027538, 0.0000027574, 0.0000027578, + 0.0000027526, 0.0000027504, 0.0000027517, 0.0000027537, 0.0000027400, + 0.0000027153, 0.0000027111, 0.0000027078, 0.0000027010, 0.0000026996, + 0.0000026910, 0.0000026742, 0.0000026558, 0.0000026479, 0.0000026474, + 0.0000026418, 0.0000026287, 0.0000026136, 0.0000026016, 0.0000025944, + 0.0000025908, 0.0000025867, 0.0000025844, 0.0000025832, 0.0000025800, + 0.0000025730, 0.0000025655, 0.0000025630, 0.0000025632, 0.0000025646, + 0.0000025668, 0.0000025704, 0.0000025756, 0.0000025830, 0.0000025907, + 0.0000025950, 0.0000025948, 0.0000025921, 0.0000025888, 0.0000025877, + 0.0000025904, 0.0000025956, 0.0000025993, 0.0000025998, 0.0000025975, + 0.0000025912, 0.0000025814, 0.0000025710, 0.0000025606, 0.0000025533, + 0.0000025503, 0.0000025497, 0.0000025492, 0.0000025473, 0.0000025444, + 0.0000025404, 0.0000025358, 0.0000025336, 0.0000025331, 0.0000025313, + 0.0000025317, 0.0000025353, 0.0000025384, 0.0000025407, 0.0000025418, + 0.0000025413, 0.0000025395, 0.0000025382, 0.0000025367, 0.0000025344, + 0.0000025326, 0.0000025327, 0.0000025352, 0.0000025390, 0.0000025415, + 0.0000025389, 0.0000025325, 0.0000025218, 0.0000025107, 0.0000025052, + 0.0000025054, 0.0000025061, 0.0000025070, 0.0000025113, 0.0000025184, + 0.0000025241, 0.0000025252, 0.0000025239, 0.0000025314, 0.0000025530, + 0.0000025864, 0.0000026027, 0.0000026062, 0.0000026069, 0.0000026052, + 0.0000026042, 0.0000026048, 0.0000026076, 0.0000026155, 0.0000026249, + 0.0000026319, 0.0000026405, 0.0000026503, 0.0000026588, 0.0000026704, + 0.0000026809, 0.0000026835, 0.0000026829, 0.0000026815, 0.0000026780, + 0.0000026724, 0.0000026677, 0.0000026657, 0.0000026689, 0.0000026783, + 0.0000026938, 0.0000027073, 0.0000027125, 0.0000027124, 0.0000027092, + 0.0000027054, 0.0000027050, 0.0000027101, 0.0000027158, 0.0000027164, + 0.0000027149, 0.0000027152, 0.0000027166, 0.0000027176, 0.0000027206, + 0.0000027248, 0.0000027312, 0.0000027463, 0.0000027750, 0.0000028170, + 0.0000028414, 0.0000028394, 0.0000028288, 0.0000028178, 0.0000028275, + 0.0000028338, 0.0000028402, 0.0000028453, 0.0000028457, 0.0000028368, + 0.0000028291, 0.0000028320, 0.0000028310, 0.0000028271, 0.0000028228, + 0.0000028184, 0.0000028317, 0.0000028429, 0.0000028384, 0.0000028271, + 0.0000028207, 0.0000028191, 0.0000028226, 0.0000028258, 0.0000028269, + 0.0000028268, 0.0000028262, 0.0000028253, 0.0000028276, 0.0000028355, + 0.0000028488, 0.0000028624, 0.0000028703, 0.0000028710, 0.0000028664, + 0.0000028587, 0.0000028526, 0.0000028516, 0.0000028516, 0.0000028522, + 0.0000028557, 0.0000028614, 0.0000028664, 0.0000028684, 0.0000028701, + 0.0000028725, 0.0000028755, 0.0000028773, 0.0000028797, 0.0000028834, + 0.0000028905, 0.0000028985, 0.0000029052, 0.0000029106, 0.0000029146, + 0.0000029185, 0.0000029208, 0.0000029191, 0.0000029121, 0.0000029001, + 0.0000028867, 0.0000028806, 0.0000028787, 0.0000028816, 0.0000028881, + 0.0000028920, 0.0000028940, 0.0000028932, 0.0000028909, 0.0000028908, + 0.0000028933, 0.0000028937, 0.0000028910, 0.0000028886, 0.0000028884, + 0.0000028826, 0.0000028739, 0.0000028739, 0.0000028824, 0.0000028947, + 0.0000029091, 0.0000029205, 0.0000029275, 0.0000029281, 0.0000029238, + 0.0000029165, 0.0000029158, 0.0000029219, 0.0000029261, 0.0000029243, + 0.0000029208, 0.0000029182, 0.0000029184, 0.0000029190, 0.0000029190, + 0.0000029191, 0.0000029182, 0.0000029162, 0.0000029134, 0.0000029114, + 0.0000029092, 0.0000029062, 0.0000029027, 0.0000029016, 0.0000029027, + 0.0000029054, 0.0000029060, 0.0000029043, 0.0000029008, 0.0000028970, + 0.0000028930, 0.0000028890, 0.0000028854, 0.0000028821, 0.0000028787, + 0.0000028775, 0.0000028774, 0.0000028784, 0.0000028792, 0.0000028791, + 0.0000028772, 0.0000028754, 0.0000028744, 0.0000028750, 0.0000028742, + 0.0000028728, 0.0000028707, 0.0000028681, 0.0000028661, 0.0000028651, + 0.0000028630, 0.0000028591, 0.0000028553, 0.0000028522, 0.0000028496, + 0.0000028450, 0.0000028377, 0.0000028303, 0.0000028243, 0.0000028199, + 0.0000028165, 0.0000028147, 0.0000028146, 0.0000028162, 0.0000028193, + 0.0000028219, 0.0000028223, 0.0000028223, 0.0000028218, 0.0000028216, + 0.0000028219, 0.0000028219, 0.0000028205, 0.0000028180, 0.0000028162, + 0.0000028156, 0.0000028161, 0.0000028161, 0.0000028135, 0.0000028096, + 0.0000028101, 0.0000028097, 0.0000028108, 0.0000028127, 0.0000028165, + 0.0000028227, 0.0000028274, 0.0000028272, 0.0000028254, 0.0000028211, + 0.0000028157, 0.0000028119, 0.0000028120, 0.0000028149, 0.0000028185, + 0.0000028185, 0.0000028108, 0.0000027989, 0.0000027911, 0.0000027895, + 0.0000027949, 0.0000028097, 0.0000028207, 0.0000028219, 0.0000028117, + 0.0000027824, 0.0000027480, 0.0000027385, 0.0000027449, 0.0000027549, + 0.0000027693, 0.0000027916, 0.0000028150, 0.0000028305, 0.0000028366, + 0.0000028379, 0.0000028372, 0.0000028372, 0.0000028367, 0.0000028329, + 0.0000028251, 0.0000028181, 0.0000028164, 0.0000028185, 0.0000028251, + 0.0000028325, 0.0000028374, 0.0000028414, 0.0000028439, 0.0000028461, + 0.0000028491, 0.0000028531, 0.0000028536, 0.0000028514, 0.0000028461, + 0.0000028395, 0.0000028331, 0.0000028267, 0.0000028210, 0.0000028161, + 0.0000028130, 0.0000028124, 0.0000028099, 0.0000028045, 0.0000027937, + 0.0000027813, 0.0000027712, 0.0000027657, 0.0000027632, 0.0000027672, + 0.0000027780, 0.0000027950, 0.0000028159, 0.0000028339, 0.0000028436, + 0.0000028491, 0.0000028508, 0.0000028527, 0.0000028563, 0.0000028615, + 0.0000028698, 0.0000028795, 0.0000028882, 0.0000028928, 0.0000028944, + 0.0000028952, 0.0000028938, 0.0000028888, 0.0000028805, 0.0000028726, + 0.0000028633, 0.0000028533, 0.0000028436, 0.0000028350, 0.0000028289, + 0.0000028209, 0.0000028102, 0.0000028006, 0.0000028009, 0.0000028124, + 0.0000028153, 0.0000028204, 0.0000028417, 0.0000028604, 0.0000028705, + 0.0000028797, 0.0000028790, 0.0000028834, 0.0000028989, 0.0000029077, + 0.0000029078, 0.0000029038, 0.0000028977, 0.0000028885, 0.0000028751, + 0.0000028569, 0.0000028386, 0.0000028222, 0.0000028114, 0.0000028093, + 0.0000028117, 0.0000028135, 0.0000028149, 0.0000028198, 0.0000028275, + 0.0000028304, 0.0000028289, 0.0000028295, 0.0000028364, 0.0000028395, + 0.0000028400, 0.0000028479, 0.0000028596, 0.0000028672, 0.0000028711, + 0.0000028760, 0.0000028857, 0.0000028918, 0.0000028948, 0.0000029060, + 0.0000029168, 0.0000029124, 0.0000029008, 0.0000028903, 0.0000028743, + 0.0000028581, 0.0000028480, 0.0000028439, 0.0000028459, 0.0000028544, + 0.0000028622, 0.0000028656, 0.0000028682, 0.0000028716, 0.0000028739, + 0.0000028760, 0.0000028778, 0.0000028784, 0.0000028799, 0.0000028815, + 0.0000028815, 0.0000028667, 0.0000028541, 0.0000028534, 0.0000028457, + 0.0000028185, 0.0000028074, 0.0000028083, 0.0000027998, 0.0000027859, + 0.0000027791, 0.0000027802, 0.0000027840, 0.0000027853, 0.0000027817, + 0.0000027751, 0.0000027693, 0.0000027670, 0.0000027655, 0.0000027595, + 0.0000027478, 0.0000027331, 0.0000027243, 0.0000027243, 0.0000027309, + 0.0000027342, 0.0000027346, 0.0000027364, 0.0000027377, 0.0000027353, + 0.0000027328, 0.0000027347, 0.0000027407, 0.0000027437, 0.0000027405, + 0.0000027338, 0.0000027339, 0.0000027413, 0.0000027517, 0.0000027534, + 0.0000027478, 0.0000027379, 0.0000027320, 0.0000027293, 0.0000027253, + 0.0000027213, 0.0000027204, 0.0000027211, 0.0000027216, 0.0000027209, + 0.0000027193, 0.0000027183, 0.0000027184, 0.0000027186, 0.0000027181, + 0.0000027170, 0.0000027151, 0.0000027123, 0.0000027089, 0.0000027052, + 0.0000027015, 0.0000026979, 0.0000026949, 0.0000026927, 0.0000026909, + 0.0000026897, 0.0000026886, 0.0000026862, 0.0000026817, 0.0000026755, + 0.0000026685, 0.0000026626, 0.0000026589, 0.0000026579, 0.0000026588, + 0.0000026612, 0.0000026631, 0.0000026642, 0.0000026659, 0.0000026686, + 0.0000026711, 0.0000026735, 0.0000026760, 0.0000026790, 0.0000026826, + 0.0000026862, 0.0000026873, 0.0000026859, 0.0000026844, 0.0000026847, + 0.0000026876, 0.0000026921, 0.0000026968, 0.0000027015, 0.0000027086, + 0.0000027181, 0.0000027263, 0.0000027313, 0.0000027362, 0.0000027433, + 0.0000027522, 0.0000027624, 0.0000027725, 0.0000027803, 0.0000027867, + 0.0000027930, 0.0000027989, 0.0000028050, 0.0000028112, 0.0000028179, + 0.0000028253, 0.0000028329, 0.0000028392, 0.0000028435, 0.0000028442, + 0.0000028426, 0.0000028419, 0.0000028437, 0.0000028507, 0.0000028633, + 0.0000028786, 0.0000028926, 0.0000029018, 0.0000029081, 0.0000029118, + 0.0000029136, 0.0000029127, 0.0000029109, 0.0000029085, 0.0000029051, + 0.0000029003, 0.0000028935, 0.0000028854, 0.0000028766, 0.0000028705, + 0.0000028683, 0.0000028678, 0.0000028689, 0.0000028715, 0.0000028732, + 0.0000028726, 0.0000028713, 0.0000028712, 0.0000028693, 0.0000028650, + 0.0000028584, 0.0000028464, 0.0000028283, 0.0000028099, 0.0000027987, + 0.0000027969, 0.0000028012, 0.0000028109, 0.0000028226, 0.0000028333, + 0.0000028380, 0.0000028342, 0.0000028251, 0.0000028199, 0.0000028220, + 0.0000028279, 0.0000028356, 0.0000028424, 0.0000028476, 0.0000028485, + 0.0000028468, 0.0000028429, 0.0000028390, 0.0000028360, 0.0000028321, + 0.0000028280, 0.0000028253, 0.0000028233, 0.0000028216, 0.0000028214, + 0.0000028259, 0.0000028343, 0.0000028414, 0.0000028424, 0.0000028383, + 0.0000028322, 0.0000028270, 0.0000028201, 0.0000028150, 0.0000028140, + 0.0000028127, 0.0000028088, 0.0000028050, 0.0000028041, 0.0000028053, + 0.0000028063, 0.0000028037, 0.0000027985, 0.0000027938, 0.0000027908, + 0.0000027896, 0.0000027901, 0.0000027904, 0.0000027892, 0.0000027867, + 0.0000027819, 0.0000027754, 0.0000027694, 0.0000027640, 0.0000027609, + 0.0000027583, 0.0000027551, 0.0000027509, 0.0000027464, 0.0000027440, + 0.0000027443, 0.0000027466, 0.0000027505, 0.0000027548, 0.0000027602, + 0.0000027656, 0.0000027698, 0.0000027724, 0.0000027739, 0.0000027766, + 0.0000027839, 0.0000027936, 0.0000027992, 0.0000027962, 0.0000027901, + 0.0000027879, 0.0000027877, 0.0000027861, 0.0000027814, 0.0000027743, + 0.0000027685, 0.0000027661, 0.0000027635, 0.0000027586, 0.0000027544, + 0.0000027539, 0.0000027568, 0.0000027611, 0.0000027630, 0.0000027622, + 0.0000027588, 0.0000027535, 0.0000027492, 0.0000027377, 0.0000027223, + 0.0000027214, 0.0000027255, 0.0000027291, 0.0000027306, 0.0000027279, + 0.0000027222, 0.0000027146, 0.0000027116, 0.0000027151, 0.0000027172, + 0.0000027118, 0.0000027071, 0.0000027077, 0.0000027078, 0.0000027103, + 0.0000027123, 0.0000027085, 0.0000027042, 0.0000027049, 0.0000027122, + 0.0000027260, 0.0000027386, 0.0000027433, 0.0000027427, 0.0000027385, + 0.0000027335, 0.0000027312, 0.0000027319, 0.0000027331, 0.0000027316, + 0.0000027273, 0.0000027228, 0.0000027187, 0.0000027167, 0.0000027159, + 0.0000027130, 0.0000027058, 0.0000026963, 0.0000026884, 0.0000026808, + 0.0000026747, 0.0000026718, 0.0000026703, 0.0000026691, 0.0000026694, + 0.0000026703, 0.0000026695, 0.0000026664, 0.0000026604, 0.0000026480, + 0.0000026298, 0.0000026157, 0.0000026129, 0.0000026265, 0.0000026574, + 0.0000026839, 0.0000026907, 0.0000026903, 0.0000026965, 0.0000027052, + 0.0000027030, 0.0000026900, 0.0000026831, 0.0000026744, 0.0000026540, + 0.0000026273, 0.0000026131, 0.0000026327, 0.0000026479, 0.0000026529, + 0.0000026863, 0.0000027338, 0.0000027505, 0.0000027494, 0.0000027477, + 0.0000027511, 0.0000027586, 0.0000027688, 0.0000027822, 0.0000027906, + 0.0000027928, 0.0000027955, 0.0000027994, 0.0000028033, 0.0000028054, + 0.0000028060, 0.0000028090, 0.0000028128, 0.0000028161, 0.0000028190, + 0.0000028183, 0.0000028105, 0.0000027982, 0.0000027875, 0.0000027851, + 0.0000027893, 0.0000027920, 0.0000027916, 0.0000027928, 0.0000027931, + 0.0000027909, 0.0000027859, 0.0000027781, 0.0000027711, 0.0000027659, + 0.0000027624, 0.0000027598, 0.0000027540, 0.0000027464, 0.0000027524, + 0.0000027661, 0.0000027846, 0.0000028011, 0.0000028049, 0.0000028004, + 0.0000027858, 0.0000027791, 0.0000027823, 0.0000027903, 0.0000027741, + 0.0000027579, 0.0000027552, 0.0000027568, 0.0000027554, 0.0000027524, + 0.0000027500, 0.0000027519, 0.0000027510, 0.0000027344, 0.0000027140, + 0.0000027125, 0.0000027087, 0.0000027022, 0.0000026990, 0.0000026877, + 0.0000026713, 0.0000026555, 0.0000026472, 0.0000026448, 0.0000026404, + 0.0000026310, 0.0000026188, 0.0000026063, 0.0000025958, 0.0000025893, + 0.0000025838, 0.0000025797, 0.0000025792, 0.0000025775, 0.0000025731, + 0.0000025659, 0.0000025606, 0.0000025599, 0.0000025618, 0.0000025644, + 0.0000025690, 0.0000025751, 0.0000025823, 0.0000025886, 0.0000025909, + 0.0000025899, 0.0000025865, 0.0000025842, 0.0000025851, 0.0000025894, + 0.0000025939, 0.0000025954, 0.0000025947, 0.0000025933, 0.0000025897, + 0.0000025835, 0.0000025747, 0.0000025656, 0.0000025582, 0.0000025538, + 0.0000025521, 0.0000025510, 0.0000025486, 0.0000025446, 0.0000025392, + 0.0000025332, 0.0000025294, 0.0000025266, 0.0000025240, 0.0000025223, + 0.0000025248, 0.0000025294, 0.0000025331, 0.0000025367, 0.0000025372, + 0.0000025358, 0.0000025332, 0.0000025296, 0.0000025247, 0.0000025212, + 0.0000025211, 0.0000025246, 0.0000025311, 0.0000025361, 0.0000025386, + 0.0000025379, 0.0000025342, 0.0000025260, 0.0000025159, 0.0000025082, + 0.0000025046, 0.0000025037, 0.0000025028, 0.0000025023, 0.0000025094, + 0.0000025217, 0.0000025302, 0.0000025334, 0.0000025329, 0.0000025421, + 0.0000025701, 0.0000025979, 0.0000026081, 0.0000026083, 0.0000026065, + 0.0000026052, 0.0000026048, 0.0000026058, 0.0000026100, 0.0000026185, + 0.0000026267, 0.0000026322, 0.0000026411, 0.0000026528, 0.0000026623, + 0.0000026726, 0.0000026812, 0.0000026820, 0.0000026792, 0.0000026756, + 0.0000026720, 0.0000026681, 0.0000026653, 0.0000026655, 0.0000026721, + 0.0000026847, 0.0000026986, 0.0000027083, 0.0000027111, 0.0000027089, + 0.0000027042, 0.0000027018, 0.0000027053, 0.0000027119, 0.0000027146, + 0.0000027173, 0.0000027180, 0.0000027167, 0.0000027168, 0.0000027159, + 0.0000027177, 0.0000027287, 0.0000027473, 0.0000027719, 0.0000028122, + 0.0000028400, 0.0000028392, 0.0000028281, 0.0000028166, 0.0000028267, + 0.0000028324, 0.0000028365, 0.0000028442, 0.0000028471, 0.0000028388, + 0.0000028296, 0.0000028305, 0.0000028290, 0.0000028274, 0.0000028203, + 0.0000028152, 0.0000028281, 0.0000028412, 0.0000028356, 0.0000028243, + 0.0000028194, 0.0000028208, 0.0000028232, 0.0000028237, 0.0000028246, + 0.0000028253, 0.0000028267, 0.0000028283, 0.0000028342, 0.0000028432, + 0.0000028537, 0.0000028587, 0.0000028565, 0.0000028517, 0.0000028484, + 0.0000028491, 0.0000028505, 0.0000028536, 0.0000028580, 0.0000028633, + 0.0000028671, 0.0000028692, 0.0000028714, 0.0000028747, 0.0000028756, + 0.0000028758, 0.0000028771, 0.0000028800, 0.0000028842, 0.0000028906, + 0.0000028997, 0.0000029077, 0.0000029147, 0.0000029222, 0.0000029260, + 0.0000029255, 0.0000029186, 0.0000029067, 0.0000028933, 0.0000028820, + 0.0000028788, 0.0000028816, 0.0000028856, 0.0000028878, 0.0000028891, + 0.0000028875, 0.0000028854, 0.0000028838, 0.0000028840, 0.0000028867, + 0.0000028905, 0.0000028911, 0.0000028889, 0.0000028868, 0.0000028853, + 0.0000028768, 0.0000028714, 0.0000028771, 0.0000028883, 0.0000029031, + 0.0000029176, 0.0000029281, 0.0000029313, 0.0000029281, 0.0000029203, + 0.0000029153, 0.0000029166, 0.0000029220, 0.0000029238, 0.0000029208, + 0.0000029175, 0.0000029164, 0.0000029185, 0.0000029202, 0.0000029210, + 0.0000029211, 0.0000029195, 0.0000029179, 0.0000029173, 0.0000029173, + 0.0000029152, 0.0000029120, 0.0000029080, 0.0000029056, 0.0000029052, + 0.0000029066, 0.0000029077, 0.0000029078, 0.0000029070, 0.0000029051, + 0.0000029020, 0.0000028986, 0.0000028953, 0.0000028921, 0.0000028880, + 0.0000028847, 0.0000028823, 0.0000028803, 0.0000028782, 0.0000028759, + 0.0000028718, 0.0000028670, 0.0000028635, 0.0000028633, 0.0000028629, + 0.0000028618, 0.0000028602, 0.0000028577, 0.0000028554, 0.0000028546, + 0.0000028531, 0.0000028501, 0.0000028477, 0.0000028471, 0.0000028476, + 0.0000028476, 0.0000028458, 0.0000028406, 0.0000028339, 0.0000028286, + 0.0000028252, 0.0000028221, 0.0000028187, 0.0000028164, 0.0000028178, + 0.0000028212, 0.0000028230, 0.0000028229, 0.0000028226, 0.0000028215, + 0.0000028205, 0.0000028205, 0.0000028204, 0.0000028195, 0.0000028185, + 0.0000028186, 0.0000028203, 0.0000028223, 0.0000028228, 0.0000028203, + 0.0000028180, 0.0000028157, 0.0000028126, 0.0000028079, 0.0000028059, + 0.0000028083, 0.0000028161, 0.0000028235, 0.0000028262, 0.0000028256, + 0.0000028224, 0.0000028175, 0.0000028144, 0.0000028138, 0.0000028147, + 0.0000028157, 0.0000028153, 0.0000028093, 0.0000027990, 0.0000027911, + 0.0000027891, 0.0000027913, 0.0000028020, 0.0000028148, 0.0000028197, + 0.0000028137, 0.0000027930, 0.0000027590, 0.0000027381, 0.0000027371, + 0.0000027468, 0.0000027596, 0.0000027758, 0.0000027954, 0.0000028112, + 0.0000028226, 0.0000028285, 0.0000028314, 0.0000028330, 0.0000028318, + 0.0000028269, 0.0000028183, 0.0000028118, 0.0000028108, 0.0000028140, + 0.0000028218, 0.0000028306, 0.0000028381, 0.0000028440, 0.0000028476, + 0.0000028491, 0.0000028496, 0.0000028504, 0.0000028497, 0.0000028473, + 0.0000028431, 0.0000028365, 0.0000028295, 0.0000028228, 0.0000028173, + 0.0000028135, 0.0000028121, 0.0000028127, 0.0000028138, 0.0000028149, + 0.0000028104, 0.0000028007, 0.0000027875, 0.0000027756, 0.0000027677, + 0.0000027688, 0.0000027719, 0.0000027791, 0.0000027959, 0.0000028206, + 0.0000028421, 0.0000028531, 0.0000028571, 0.0000028581, 0.0000028597, + 0.0000028627, 0.0000028678, 0.0000028743, 0.0000028817, 0.0000028878, + 0.0000028923, 0.0000028952, 0.0000028947, 0.0000028892, 0.0000028788, + 0.0000028688, 0.0000028589, 0.0000028501, 0.0000028416, 0.0000028340, + 0.0000028275, 0.0000028203, 0.0000028114, 0.0000028033, 0.0000027994, + 0.0000028066, 0.0000028148, 0.0000028136, 0.0000028326, 0.0000028557, + 0.0000028666, 0.0000028739, 0.0000028753, 0.0000028770, 0.0000028914, + 0.0000029024, 0.0000029049, 0.0000029026, 0.0000028953, 0.0000028829, + 0.0000028638, 0.0000028425, 0.0000028244, 0.0000028091, 0.0000027990, + 0.0000027961, 0.0000027970, 0.0000027978, 0.0000028009, 0.0000028125, + 0.0000028282, 0.0000028375, 0.0000028389, 0.0000028386, 0.0000028446, + 0.0000028492, 0.0000028478, 0.0000028503, 0.0000028608, 0.0000028694, + 0.0000028748, 0.0000028767, 0.0000028810, 0.0000028907, 0.0000028980, + 0.0000029027, 0.0000029118, 0.0000029163, 0.0000029094, 0.0000028975, + 0.0000028843, 0.0000028683, 0.0000028542, 0.0000028465, 0.0000028441, + 0.0000028460, 0.0000028504, 0.0000028542, 0.0000028579, 0.0000028622, + 0.0000028654, 0.0000028675, 0.0000028692, 0.0000028698, 0.0000028735, + 0.0000028788, 0.0000028811, 0.0000028667, 0.0000028509, 0.0000028492, + 0.0000028418, 0.0000028152, 0.0000028067, 0.0000028079, 0.0000027984, + 0.0000027824, 0.0000027733, 0.0000027713, 0.0000027720, 0.0000027758, + 0.0000027794, 0.0000027773, 0.0000027707, 0.0000027657, 0.0000027641, + 0.0000027625, 0.0000027568, 0.0000027450, 0.0000027287, 0.0000027198, + 0.0000027219, 0.0000027303, 0.0000027347, 0.0000027355, 0.0000027369, + 0.0000027372, 0.0000027356, 0.0000027344, 0.0000027355, 0.0000027390, + 0.0000027414, 0.0000027390, 0.0000027326, 0.0000027292, 0.0000027333, + 0.0000027427, 0.0000027494, 0.0000027488, 0.0000027398, 0.0000027302, + 0.0000027239, 0.0000027197, 0.0000027161, 0.0000027152, 0.0000027161, + 0.0000027173, 0.0000027172, 0.0000027159, 0.0000027140, 0.0000027127, + 0.0000027122, 0.0000027126, 0.0000027124, 0.0000027110, 0.0000027080, + 0.0000027038, 0.0000026996, 0.0000026955, 0.0000026913, 0.0000026880, + 0.0000026858, 0.0000026841, 0.0000026823, 0.0000026795, 0.0000026755, + 0.0000026701, 0.0000026627, 0.0000026549, 0.0000026488, 0.0000026459, + 0.0000026458, 0.0000026475, 0.0000026495, 0.0000026508, 0.0000026525, + 0.0000026549, 0.0000026567, 0.0000026577, 0.0000026589, 0.0000026613, + 0.0000026650, 0.0000026696, 0.0000026729, 0.0000026730, 0.0000026704, + 0.0000026691, 0.0000026721, 0.0000026792, 0.0000026872, 0.0000026942, + 0.0000027009, 0.0000027092, 0.0000027180, 0.0000027237, 0.0000027274, + 0.0000027329, 0.0000027402, 0.0000027487, 0.0000027581, 0.0000027660, + 0.0000027715, 0.0000027758, 0.0000027793, 0.0000027816, 0.0000027840, + 0.0000027863, 0.0000027895, 0.0000027937, 0.0000027992, 0.0000028074, + 0.0000028190, 0.0000028308, 0.0000028391, 0.0000028414, 0.0000028420, + 0.0000028441, 0.0000028521, 0.0000028661, 0.0000028826, 0.0000028970, + 0.0000029059, 0.0000029115, 0.0000029137, 0.0000029127, 0.0000029100, + 0.0000029071, 0.0000029048, 0.0000029022, 0.0000028971, 0.0000028890, + 0.0000028811, 0.0000028767, 0.0000028747, 0.0000028735, 0.0000028735, + 0.0000028758, 0.0000028783, 0.0000028783, 0.0000028772, 0.0000028774, + 0.0000028759, 0.0000028719, 0.0000028687, 0.0000028630, 0.0000028489, + 0.0000028291, 0.0000028115, 0.0000028023, 0.0000028027, 0.0000028108, + 0.0000028235, 0.0000028359, 0.0000028423, 0.0000028393, 0.0000028292, + 0.0000028207, 0.0000028203, 0.0000028240, 0.0000028317, 0.0000028392, + 0.0000028443, 0.0000028466, 0.0000028471, 0.0000028456, 0.0000028430, + 0.0000028388, 0.0000028332, 0.0000028271, 0.0000028223, 0.0000028193, + 0.0000028188, 0.0000028200, 0.0000028230, 0.0000028295, 0.0000028369, + 0.0000028397, 0.0000028366, 0.0000028296, 0.0000028239, 0.0000028185, + 0.0000028136, 0.0000028129, 0.0000028141, 0.0000028135, 0.0000028099, + 0.0000028064, 0.0000028071, 0.0000028099, 0.0000028106, 0.0000028088, + 0.0000028062, 0.0000028039, 0.0000028027, 0.0000028025, 0.0000028020, + 0.0000027998, 0.0000027966, 0.0000027926, 0.0000027869, 0.0000027805, + 0.0000027758, 0.0000027724, 0.0000027714, 0.0000027698, 0.0000027671, + 0.0000027637, 0.0000027612, 0.0000027611, 0.0000027618, 0.0000027614, + 0.0000027586, 0.0000027549, 0.0000027534, 0.0000027586, 0.0000027653, + 0.0000027705, 0.0000027719, 0.0000027742, 0.0000027816, 0.0000027936, + 0.0000028001, 0.0000027970, 0.0000027905, 0.0000027866, 0.0000027845, + 0.0000027812, 0.0000027754, 0.0000027702, 0.0000027668, 0.0000027621, + 0.0000027567, 0.0000027542, 0.0000027554, 0.0000027604, 0.0000027641, + 0.0000027635, 0.0000027620, 0.0000027631, 0.0000027615, 0.0000027554, + 0.0000027483, 0.0000027335, 0.0000027199, 0.0000027205, 0.0000027251, + 0.0000027288, 0.0000027290, 0.0000027249, 0.0000027163, 0.0000027093, + 0.0000027114, 0.0000027151, 0.0000027096, 0.0000027040, 0.0000027053, + 0.0000027064, 0.0000027088, 0.0000027117, 0.0000027087, 0.0000027049, + 0.0000027048, 0.0000027089, 0.0000027206, 0.0000027342, 0.0000027412, + 0.0000027419, 0.0000027386, 0.0000027326, 0.0000027279, 0.0000027278, + 0.0000027313, 0.0000027336, 0.0000027327, 0.0000027294, 0.0000027239, + 0.0000027188, 0.0000027167, 0.0000027155, 0.0000027125, 0.0000027040, + 0.0000026944, 0.0000026872, 0.0000026805, 0.0000026742, 0.0000026703, + 0.0000026675, 0.0000026651, 0.0000026656, 0.0000026672, 0.0000026668, + 0.0000026642, 0.0000026583, 0.0000026478, 0.0000026304, 0.0000026131, + 0.0000026060, 0.0000026124, 0.0000026413, 0.0000026760, 0.0000026904, + 0.0000026873, 0.0000026881, 0.0000026956, 0.0000026960, 0.0000026847, + 0.0000026801, 0.0000026796, 0.0000026608, 0.0000026339, 0.0000026129, + 0.0000026220, 0.0000026443, 0.0000026472, 0.0000026614, 0.0000027011, + 0.0000027365, 0.0000027459, 0.0000027427, 0.0000027410, 0.0000027417, + 0.0000027494, 0.0000027637, 0.0000027767, 0.0000027857, 0.0000027912, + 0.0000027959, 0.0000028008, 0.0000028058, 0.0000028090, 0.0000028122, + 0.0000028141, 0.0000028162, 0.0000028211, 0.0000028242, 0.0000028209, + 0.0000028122, 0.0000028001, 0.0000027919, 0.0000027905, 0.0000027917, + 0.0000027910, 0.0000027884, 0.0000027886, 0.0000027869, 0.0000027808, + 0.0000027728, 0.0000027668, 0.0000027633, 0.0000027597, 0.0000027570, + 0.0000027499, 0.0000027447, 0.0000027532, 0.0000027659, 0.0000027854, + 0.0000028006, 0.0000028027, 0.0000027982, 0.0000027839, 0.0000027791, + 0.0000027838, 0.0000027903, 0.0000027718, 0.0000027591, 0.0000027567, + 0.0000027557, 0.0000027540, 0.0000027522, 0.0000027494, 0.0000027514, + 0.0000027474, 0.0000027299, 0.0000027137, 0.0000027136, 0.0000027095, + 0.0000027027, 0.0000026977, 0.0000026841, 0.0000026685, 0.0000026556, + 0.0000026472, 0.0000026425, 0.0000026377, 0.0000026314, 0.0000026239, + 0.0000026149, 0.0000026048, 0.0000025952, 0.0000025858, 0.0000025778, + 0.0000025751, 0.0000025751, 0.0000025735, 0.0000025685, 0.0000025621, + 0.0000025589, 0.0000025599, 0.0000025633, 0.0000025692, 0.0000025763, + 0.0000025831, 0.0000025876, 0.0000025885, 0.0000025861, 0.0000025824, + 0.0000025813, 0.0000025842, 0.0000025893, 0.0000025936, 0.0000025949, + 0.0000025942, 0.0000025938, 0.0000025922, 0.0000025883, 0.0000025811, + 0.0000025733, 0.0000025675, 0.0000025642, 0.0000025627, 0.0000025617, + 0.0000025596, 0.0000025547, 0.0000025477, 0.0000025402, 0.0000025341, + 0.0000025296, 0.0000025257, 0.0000025217, 0.0000025192, 0.0000025184, + 0.0000025205, 0.0000025218, 0.0000025221, 0.0000025240, 0.0000025267, + 0.0000025275, 0.0000025248, 0.0000025196, 0.0000025144, 0.0000025121, + 0.0000025173, 0.0000025242, 0.0000025299, 0.0000025320, 0.0000025301, + 0.0000025266, 0.0000025248, 0.0000025209, 0.0000025155, 0.0000025072, + 0.0000025017, 0.0000025001, 0.0000025016, 0.0000025058, 0.0000025168, + 0.0000025317, 0.0000025395, 0.0000025418, 0.0000025417, 0.0000025542, + 0.0000025858, 0.0000026046, 0.0000026072, 0.0000026075, 0.0000026068, + 0.0000026056, 0.0000026050, 0.0000026062, 0.0000026104, 0.0000026184, + 0.0000026270, 0.0000026336, 0.0000026415, 0.0000026519, 0.0000026604, + 0.0000026695, 0.0000026782, 0.0000026777, 0.0000026739, 0.0000026698, + 0.0000026668, 0.0000026650, 0.0000026649, 0.0000026691, 0.0000026780, + 0.0000026894, 0.0000027000, 0.0000027060, 0.0000027060, 0.0000027037, + 0.0000027009, 0.0000027012, 0.0000027058, 0.0000027128, 0.0000027185, + 0.0000027206, 0.0000027188, 0.0000027171, 0.0000027134, 0.0000027129, + 0.0000027266, 0.0000027487, 0.0000027698, 0.0000028074, 0.0000028385, + 0.0000028390, 0.0000028276, 0.0000028157, 0.0000028257, 0.0000028320, + 0.0000028331, 0.0000028416, 0.0000028471, 0.0000028398, 0.0000028287, + 0.0000028286, 0.0000028271, 0.0000028262, 0.0000028170, 0.0000028111, + 0.0000028232, 0.0000028372, 0.0000028329, 0.0000028243, 0.0000028218, + 0.0000028237, 0.0000028249, 0.0000028249, 0.0000028271, 0.0000028303, + 0.0000028326, 0.0000028335, 0.0000028368, 0.0000028401, 0.0000028407, + 0.0000028396, 0.0000028385, 0.0000028420, 0.0000028466, 0.0000028519, + 0.0000028572, 0.0000028636, 0.0000028696, 0.0000028737, 0.0000028768, + 0.0000028795, 0.0000028820, 0.0000028843, 0.0000028838, 0.0000028844, + 0.0000028876, 0.0000028932, 0.0000028995, 0.0000029066, 0.0000029151, + 0.0000029223, 0.0000029259, 0.0000029283, 0.0000029240, 0.0000029141, + 0.0000029002, 0.0000028859, 0.0000028799, 0.0000028791, 0.0000028840, + 0.0000028889, 0.0000028893, 0.0000028879, 0.0000028856, 0.0000028824, + 0.0000028808, 0.0000028822, 0.0000028843, 0.0000028865, 0.0000028871, + 0.0000028868, 0.0000028849, 0.0000028833, 0.0000028802, 0.0000028721, + 0.0000028721, 0.0000028816, 0.0000028946, 0.0000029114, 0.0000029253, + 0.0000029328, 0.0000029313, 0.0000029249, 0.0000029180, 0.0000029155, + 0.0000029176, 0.0000029207, 0.0000029203, 0.0000029175, 0.0000029140, + 0.0000029132, 0.0000029159, 0.0000029188, 0.0000029214, 0.0000029227, + 0.0000029219, 0.0000029212, 0.0000029211, 0.0000029217, 0.0000029200, + 0.0000029171, 0.0000029140, 0.0000029111, 0.0000029099, 0.0000029099, + 0.0000029103, 0.0000029107, 0.0000029100, 0.0000029084, 0.0000029058, + 0.0000029027, 0.0000028990, 0.0000028948, 0.0000028891, 0.0000028832, + 0.0000028773, 0.0000028710, 0.0000028648, 0.0000028589, 0.0000028528, + 0.0000028468, 0.0000028425, 0.0000028423, 0.0000028436, 0.0000028445, + 0.0000028442, 0.0000028420, 0.0000028399, 0.0000028396, 0.0000028390, + 0.0000028370, 0.0000028356, 0.0000028365, 0.0000028391, 0.0000028419, + 0.0000028439, 0.0000028440, 0.0000028420, 0.0000028369, 0.0000028315, + 0.0000028271, 0.0000028231, 0.0000028196, 0.0000028189, 0.0000028205, + 0.0000028222, 0.0000028217, 0.0000028199, 0.0000028188, 0.0000028176, + 0.0000028175, 0.0000028188, 0.0000028199, 0.0000028203, 0.0000028211, + 0.0000028230, 0.0000028255, 0.0000028278, 0.0000028284, 0.0000028287, + 0.0000028288, 0.0000028266, 0.0000028207, 0.0000028121, 0.0000028062, + 0.0000028073, 0.0000028128, 0.0000028193, 0.0000028234, 0.0000028245, + 0.0000028225, 0.0000028198, 0.0000028186, 0.0000028177, 0.0000028161, + 0.0000028148, 0.0000028127, 0.0000028080, 0.0000028012, 0.0000027946, + 0.0000027910, 0.0000027911, 0.0000027957, 0.0000028078, 0.0000028156, + 0.0000028126, 0.0000028035, 0.0000027768, 0.0000027475, 0.0000027344, + 0.0000027373, 0.0000027475, 0.0000027597, 0.0000027744, 0.0000027874, + 0.0000027998, 0.0000028089, 0.0000028160, 0.0000028220, 0.0000028247, + 0.0000028220, 0.0000028144, 0.0000028079, 0.0000028064, 0.0000028096, + 0.0000028170, 0.0000028260, 0.0000028345, 0.0000028422, 0.0000028478, + 0.0000028500, 0.0000028488, 0.0000028466, 0.0000028438, 0.0000028412, + 0.0000028385, 0.0000028331, 0.0000028264, 0.0000028200, 0.0000028156, + 0.0000028128, 0.0000028108, 0.0000028090, 0.0000028098, 0.0000028136, + 0.0000028155, 0.0000028168, 0.0000028084, 0.0000027937, 0.0000027787, + 0.0000027728, 0.0000027726, 0.0000027732, 0.0000027811, 0.0000028018, + 0.0000028289, 0.0000028506, 0.0000028595, 0.0000028619, 0.0000028626, + 0.0000028646, 0.0000028677, 0.0000028704, 0.0000028738, 0.0000028791, + 0.0000028853, 0.0000028891, 0.0000028886, 0.0000028824, 0.0000028709, + 0.0000028595, 0.0000028485, 0.0000028402, 0.0000028333, 0.0000028294, + 0.0000028257, 0.0000028193, 0.0000028122, 0.0000028063, 0.0000028006, + 0.0000028021, 0.0000028134, 0.0000028106, 0.0000028223, 0.0000028490, + 0.0000028650, 0.0000028701, 0.0000028714, 0.0000028703, 0.0000028817, + 0.0000028946, 0.0000028980, 0.0000028955, 0.0000028847, 0.0000028687, + 0.0000028479, 0.0000028282, 0.0000028144, 0.0000028024, 0.0000027935, + 0.0000027903, 0.0000027890, 0.0000027875, 0.0000027900, 0.0000028047, + 0.0000028244, 0.0000028387, 0.0000028446, 0.0000028444, 0.0000028496, + 0.0000028566, 0.0000028568, 0.0000028563, 0.0000028625, 0.0000028702, + 0.0000028762, 0.0000028806, 0.0000028821, 0.0000028863, 0.0000028956, + 0.0000029027, 0.0000029076, 0.0000029134, 0.0000029151, 0.0000029076, + 0.0000028953, 0.0000028815, 0.0000028661, 0.0000028530, 0.0000028461, + 0.0000028439, 0.0000028440, 0.0000028443, 0.0000028454, 0.0000028480, + 0.0000028506, 0.0000028535, 0.0000028575, 0.0000028610, 0.0000028677, + 0.0000028767, 0.0000028807, 0.0000028652, 0.0000028471, 0.0000028452, + 0.0000028384, 0.0000028126, 0.0000028065, 0.0000028076, 0.0000027969, + 0.0000027805, 0.0000027705, 0.0000027658, 0.0000027629, 0.0000027637, + 0.0000027693, 0.0000027736, 0.0000027707, 0.0000027655, 0.0000027613, + 0.0000027603, 0.0000027590, 0.0000027543, 0.0000027432, 0.0000027271, + 0.0000027190, 0.0000027211, 0.0000027301, 0.0000027350, 0.0000027346, + 0.0000027342, 0.0000027342, 0.0000027347, 0.0000027346, 0.0000027347, + 0.0000027361, 0.0000027377, 0.0000027365, 0.0000027297, 0.0000027239, + 0.0000027245, 0.0000027328, 0.0000027430, 0.0000027478, 0.0000027447, + 0.0000027344, 0.0000027230, 0.0000027159, 0.0000027119, 0.0000027111, + 0.0000027118, 0.0000027128, 0.0000027129, 0.0000027118, 0.0000027103, + 0.0000027090, 0.0000027083, 0.0000027086, 0.0000027090, 0.0000027087, + 0.0000027068, 0.0000027033, 0.0000026985, 0.0000026936, 0.0000026891, + 0.0000026858, 0.0000026838, 0.0000026832, 0.0000026824, 0.0000026805, + 0.0000026773, 0.0000026726, 0.0000026669, 0.0000026614, 0.0000026563, + 0.0000026520, 0.0000026494, 0.0000026495, 0.0000026502, 0.0000026512, + 0.0000026525, 0.0000026533, 0.0000026531, 0.0000026523, 0.0000026513, + 0.0000026507, 0.0000026514, 0.0000026537, 0.0000026568, 0.0000026581, + 0.0000026575, 0.0000026579, 0.0000026618, 0.0000026689, 0.0000026787, + 0.0000026884, 0.0000026971, 0.0000027066, 0.0000027147, 0.0000027198, + 0.0000027248, 0.0000027311, 0.0000027380, 0.0000027453, 0.0000027524, + 0.0000027583, 0.0000027624, 0.0000027649, 0.0000027660, 0.0000027666, + 0.0000027679, 0.0000027695, 0.0000027719, 0.0000027753, 0.0000027795, + 0.0000027856, 0.0000027960, 0.0000028115, 0.0000028279, 0.0000028386, + 0.0000028420, 0.0000028427, 0.0000028446, 0.0000028520, 0.0000028661, + 0.0000028828, 0.0000028971, 0.0000029075, 0.0000029134, 0.0000029149, + 0.0000029134, 0.0000029113, 0.0000029095, 0.0000029081, 0.0000029040, + 0.0000028971, 0.0000028911, 0.0000028875, 0.0000028842, 0.0000028805, + 0.0000028787, 0.0000028798, 0.0000028813, 0.0000028804, 0.0000028792, + 0.0000028801, 0.0000028796, 0.0000028758, 0.0000028733, 0.0000028716, + 0.0000028645, 0.0000028506, 0.0000028330, 0.0000028172, 0.0000028105, + 0.0000028136, 0.0000028248, 0.0000028395, 0.0000028476, 0.0000028459, + 0.0000028370, 0.0000028273, 0.0000028222, 0.0000028231, 0.0000028282, + 0.0000028346, 0.0000028393, 0.0000028418, 0.0000028432, 0.0000028434, + 0.0000028428, 0.0000028398, 0.0000028345, 0.0000028275, 0.0000028214, + 0.0000028180, 0.0000028176, 0.0000028189, 0.0000028206, 0.0000028249, + 0.0000028322, 0.0000028378, 0.0000028374, 0.0000028307, 0.0000028231, + 0.0000028169, 0.0000028120, 0.0000028102, 0.0000028121, 0.0000028153, + 0.0000028157, 0.0000028142, 0.0000028125, 0.0000028121, 0.0000028121, + 0.0000028111, 0.0000028095, 0.0000028086, 0.0000028087, 0.0000028096, + 0.0000028100, 0.0000028088, 0.0000028064, 0.0000028030, 0.0000027980, + 0.0000027919, 0.0000027856, 0.0000027802, 0.0000027759, 0.0000027724, + 0.0000027689, 0.0000027657, 0.0000027641, 0.0000027653, 0.0000027697, + 0.0000027747, 0.0000027787, 0.0000027806, 0.0000027748, 0.0000027644, + 0.0000027583, 0.0000027615, 0.0000027687, 0.0000027715, 0.0000027731, + 0.0000027808, 0.0000027929, 0.0000027996, 0.0000027966, 0.0000027889, + 0.0000027830, 0.0000027793, 0.0000027750, 0.0000027711, 0.0000027675, + 0.0000027625, 0.0000027581, 0.0000027566, 0.0000027586, 0.0000027628, + 0.0000027633, 0.0000027579, 0.0000027543, 0.0000027581, 0.0000027634, + 0.0000027624, 0.0000027559, 0.0000027455, 0.0000027282, 0.0000027191, + 0.0000027211, 0.0000027258, 0.0000027283, 0.0000027271, 0.0000027194, + 0.0000027099, 0.0000027095, 0.0000027137, 0.0000027086, 0.0000027013, + 0.0000027026, 0.0000027044, 0.0000027067, 0.0000027099, 0.0000027078, + 0.0000027042, 0.0000027039, 0.0000027061, 0.0000027145, 0.0000027274, + 0.0000027366, 0.0000027391, 0.0000027375, 0.0000027320, 0.0000027246, + 0.0000027218, 0.0000027251, 0.0000027308, 0.0000027339, 0.0000027332, + 0.0000027311, 0.0000027245, 0.0000027192, 0.0000027165, 0.0000027150, + 0.0000027110, 0.0000027021, 0.0000026929, 0.0000026861, 0.0000026793, + 0.0000026725, 0.0000026680, 0.0000026643, 0.0000026619, 0.0000026622, + 0.0000026638, 0.0000026638, 0.0000026625, 0.0000026578, 0.0000026483, + 0.0000026310, 0.0000026104, 0.0000025993, 0.0000026001, 0.0000026237, + 0.0000026643, 0.0000026884, 0.0000026859, 0.0000026811, 0.0000026856, + 0.0000026867, 0.0000026808, 0.0000026786, 0.0000026835, 0.0000026677, + 0.0000026415, 0.0000026147, 0.0000026143, 0.0000026360, 0.0000026433, + 0.0000026457, 0.0000026644, 0.0000027021, 0.0000027304, 0.0000027380, + 0.0000027362, 0.0000027339, 0.0000027373, 0.0000027449, 0.0000027550, + 0.0000027678, 0.0000027811, 0.0000027909, 0.0000027965, 0.0000028024, + 0.0000028092, 0.0000028148, 0.0000028171, 0.0000028178, 0.0000028210, + 0.0000028249, 0.0000028260, 0.0000028220, 0.0000028129, 0.0000028031, + 0.0000027956, 0.0000027917, 0.0000027910, 0.0000027847, 0.0000027795, + 0.0000027788, 0.0000027748, 0.0000027676, 0.0000027624, 0.0000027591, + 0.0000027565, 0.0000027532, 0.0000027452, 0.0000027448, 0.0000027539, + 0.0000027670, 0.0000027859, 0.0000027996, 0.0000028005, 0.0000027957, + 0.0000027825, 0.0000027793, 0.0000027854, 0.0000027897, 0.0000027704, + 0.0000027612, 0.0000027574, 0.0000027548, 0.0000027542, 0.0000027527, + 0.0000027497, 0.0000027506, 0.0000027433, 0.0000027266, 0.0000027134, + 0.0000027139, 0.0000027095, 0.0000027020, 0.0000026955, 0.0000026800, + 0.0000026641, 0.0000026534, 0.0000026461, 0.0000026407, 0.0000026354, + 0.0000026302, 0.0000026258, 0.0000026219, 0.0000026162, 0.0000026075, + 0.0000025971, 0.0000025851, 0.0000025760, 0.0000025737, 0.0000025735, + 0.0000025709, 0.0000025658, 0.0000025610, 0.0000025604, 0.0000025638, + 0.0000025718, 0.0000025804, 0.0000025874, 0.0000025907, 0.0000025897, + 0.0000025857, 0.0000025813, 0.0000025806, 0.0000025843, 0.0000025899, + 0.0000025942, 0.0000025956, 0.0000025950, 0.0000025941, 0.0000025932, + 0.0000025905, 0.0000025848, 0.0000025784, 0.0000025745, 0.0000025729, + 0.0000025724, 0.0000025718, 0.0000025704, 0.0000025660, 0.0000025597, + 0.0000025533, 0.0000025478, 0.0000025441, 0.0000025406, 0.0000025357, + 0.0000025295, 0.0000025237, 0.0000025186, 0.0000025145, 0.0000025070, + 0.0000025051, 0.0000025084, 0.0000025140, 0.0000025177, 0.0000025182, + 0.0000025159, 0.0000025125, 0.0000025099, 0.0000025088, 0.0000025121, + 0.0000025184, 0.0000025235, 0.0000025241, 0.0000025199, 0.0000025184, + 0.0000025216, 0.0000025210, 0.0000025129, 0.0000025021, 0.0000024998, + 0.0000025046, 0.0000025092, 0.0000025165, 0.0000025288, 0.0000025427, + 0.0000025471, 0.0000025441, 0.0000025452, 0.0000025698, 0.0000025970, + 0.0000026055, 0.0000026069, 0.0000026074, 0.0000026063, 0.0000026041, + 0.0000026029, 0.0000026039, 0.0000026091, 0.0000026180, 0.0000026262, + 0.0000026315, 0.0000026374, 0.0000026454, 0.0000026531, 0.0000026622, + 0.0000026713, 0.0000026719, 0.0000026682, 0.0000026643, 0.0000026636, + 0.0000026649, 0.0000026690, 0.0000026751, 0.0000026826, 0.0000026902, + 0.0000026964, 0.0000027007, 0.0000027019, 0.0000027005, 0.0000026986, + 0.0000027026, 0.0000027110, 0.0000027179, 0.0000027218, 0.0000027200, + 0.0000027158, 0.0000027111, 0.0000027117, 0.0000027248, 0.0000027499, + 0.0000027682, 0.0000028027, 0.0000028378, 0.0000028383, 0.0000028269, + 0.0000028151, 0.0000028238, 0.0000028320, 0.0000028315, 0.0000028394, + 0.0000028460, 0.0000028394, 0.0000028284, 0.0000028255, 0.0000028259, + 0.0000028240, 0.0000028131, 0.0000028062, 0.0000028173, 0.0000028303, + 0.0000028286, 0.0000028246, 0.0000028259, 0.0000028281, 0.0000028294, + 0.0000028294, 0.0000028306, 0.0000028322, 0.0000028310, 0.0000028270, + 0.0000028241, 0.0000028228, 0.0000028246, 0.0000028300, 0.0000028367, + 0.0000028453, 0.0000028533, 0.0000028602, 0.0000028651, 0.0000028709, + 0.0000028789, 0.0000028857, 0.0000028902, 0.0000028928, 0.0000028951, + 0.0000028984, 0.0000029007, 0.0000029037, 0.0000029086, 0.0000029145, + 0.0000029190, 0.0000029222, 0.0000029249, 0.0000029252, 0.0000029227, + 0.0000029161, 0.0000029056, 0.0000028944, 0.0000028850, 0.0000028794, + 0.0000028800, 0.0000028846, 0.0000028892, 0.0000028907, 0.0000028898, + 0.0000028894, 0.0000028888, 0.0000028885, 0.0000028902, 0.0000028937, + 0.0000028937, 0.0000028895, 0.0000028836, 0.0000028808, 0.0000028791, + 0.0000028780, 0.0000028744, 0.0000028698, 0.0000028744, 0.0000028855, + 0.0000029017, 0.0000029191, 0.0000029313, 0.0000029338, 0.0000029285, + 0.0000029209, 0.0000029167, 0.0000029159, 0.0000029180, 0.0000029197, + 0.0000029183, 0.0000029145, 0.0000029104, 0.0000029086, 0.0000029098, + 0.0000029126, 0.0000029165, 0.0000029198, 0.0000029210, 0.0000029222, + 0.0000029221, 0.0000029227, 0.0000029217, 0.0000029196, 0.0000029175, + 0.0000029156, 0.0000029142, 0.0000029131, 0.0000029120, 0.0000029110, + 0.0000029091, 0.0000029059, 0.0000029021, 0.0000028983, 0.0000028933, + 0.0000028873, 0.0000028799, 0.0000028709, 0.0000028620, 0.0000028530, + 0.0000028450, 0.0000028378, 0.0000028314, 0.0000028262, 0.0000028234, + 0.0000028241, 0.0000028275, 0.0000028307, 0.0000028318, 0.0000028299, + 0.0000028270, 0.0000028259, 0.0000028251, 0.0000028237, 0.0000028231, + 0.0000028248, 0.0000028290, 0.0000028342, 0.0000028380, 0.0000028404, + 0.0000028416, 0.0000028407, 0.0000028373, 0.0000028317, 0.0000028253, + 0.0000028206, 0.0000028193, 0.0000028205, 0.0000028222, 0.0000028222, + 0.0000028200, 0.0000028173, 0.0000028155, 0.0000028150, 0.0000028168, + 0.0000028202, 0.0000028230, 0.0000028256, 0.0000028283, 0.0000028301, + 0.0000028309, 0.0000028306, 0.0000028304, 0.0000028326, 0.0000028340, + 0.0000028325, 0.0000028262, 0.0000028168, 0.0000028108, 0.0000028101, + 0.0000028130, 0.0000028179, 0.0000028218, 0.0000028223, 0.0000028209, + 0.0000028209, 0.0000028212, 0.0000028203, 0.0000028180, 0.0000028145, + 0.0000028105, 0.0000028066, 0.0000028040, 0.0000028003, 0.0000027960, + 0.0000027924, 0.0000027927, 0.0000027993, 0.0000028079, 0.0000028124, + 0.0000028099, 0.0000027959, 0.0000027682, 0.0000027428, 0.0000027342, + 0.0000027353, 0.0000027438, 0.0000027554, 0.0000027662, 0.0000027763, + 0.0000027845, 0.0000027934, 0.0000028040, 0.0000028121, 0.0000028147, + 0.0000028105, 0.0000028058, 0.0000028040, 0.0000028060, 0.0000028113, + 0.0000028186, 0.0000028267, 0.0000028354, 0.0000028432, 0.0000028469, + 0.0000028455, 0.0000028414, 0.0000028367, 0.0000028329, 0.0000028307, + 0.0000028277, 0.0000028230, 0.0000028184, 0.0000028155, 0.0000028134, + 0.0000028101, 0.0000028064, 0.0000028041, 0.0000028067, 0.0000028134, + 0.0000028206, 0.0000028199, 0.0000028124, 0.0000027961, 0.0000027820, + 0.0000027755, 0.0000027736, 0.0000027748, 0.0000027870, 0.0000028085, + 0.0000028337, 0.0000028534, 0.0000028617, 0.0000028635, 0.0000028659, + 0.0000028683, 0.0000028688, 0.0000028688, 0.0000028721, 0.0000028778, + 0.0000028817, 0.0000028807, 0.0000028743, 0.0000028631, 0.0000028510, + 0.0000028390, 0.0000028304, 0.0000028233, 0.0000028216, 0.0000028213, + 0.0000028181, 0.0000028131, 0.0000028087, 0.0000028032, 0.0000028004, + 0.0000028107, 0.0000028102, 0.0000028134, 0.0000028412, 0.0000028630, + 0.0000028692, 0.0000028696, 0.0000028645, 0.0000028705, 0.0000028831, + 0.0000028862, 0.0000028819, 0.0000028688, 0.0000028530, 0.0000028361, + 0.0000028211, 0.0000028120, 0.0000028024, 0.0000027943, 0.0000027909, + 0.0000027879, 0.0000027841, 0.0000027849, 0.0000027979, 0.0000028165, + 0.0000028345, 0.0000028455, 0.0000028472, 0.0000028507, 0.0000028587, + 0.0000028622, 0.0000028619, 0.0000028648, 0.0000028703, 0.0000028760, + 0.0000028817, 0.0000028861, 0.0000028876, 0.0000028908, 0.0000028989, + 0.0000029061, 0.0000029097, 0.0000029129, 0.0000029133, 0.0000029073, + 0.0000028958, 0.0000028823, 0.0000028662, 0.0000028531, 0.0000028453, + 0.0000028435, 0.0000028425, 0.0000028410, 0.0000028403, 0.0000028400, + 0.0000028411, 0.0000028458, 0.0000028525, 0.0000028633, 0.0000028755, + 0.0000028797, 0.0000028623, 0.0000028430, 0.0000028416, 0.0000028354, + 0.0000028106, 0.0000028066, 0.0000028068, 0.0000027950, 0.0000027800, + 0.0000027703, 0.0000027643, 0.0000027599, 0.0000027579, 0.0000027590, + 0.0000027634, 0.0000027654, 0.0000027637, 0.0000027604, 0.0000027576, + 0.0000027566, 0.0000027553, 0.0000027517, 0.0000027443, 0.0000027319, + 0.0000027218, 0.0000027217, 0.0000027291, 0.0000027331, 0.0000027314, + 0.0000027284, 0.0000027286, 0.0000027308, 0.0000027329, 0.0000027331, + 0.0000027336, 0.0000027342, 0.0000027325, 0.0000027263, 0.0000027194, + 0.0000027179, 0.0000027228, 0.0000027335, 0.0000027430, 0.0000027456, + 0.0000027423, 0.0000027326, 0.0000027211, 0.0000027129, 0.0000027103, + 0.0000027102, 0.0000027103, 0.0000027095, 0.0000027073, 0.0000027052, + 0.0000027047, 0.0000027058, 0.0000027071, 0.0000027077, 0.0000027075, + 0.0000027061, 0.0000027036, 0.0000026998, 0.0000026943, 0.0000026887, + 0.0000026847, 0.0000026827, 0.0000026829, 0.0000026839, 0.0000026842, + 0.0000026832, 0.0000026812, 0.0000026789, 0.0000026766, 0.0000026737, + 0.0000026695, 0.0000026640, 0.0000026599, 0.0000026584, 0.0000026583, + 0.0000026584, 0.0000026580, 0.0000026564, 0.0000026536, 0.0000026504, + 0.0000026466, 0.0000026427, 0.0000026404, 0.0000026411, 0.0000026432, + 0.0000026453, 0.0000026477, 0.0000026511, 0.0000026580, 0.0000026680, + 0.0000026781, 0.0000026888, 0.0000026996, 0.0000027082, 0.0000027148, + 0.0000027210, 0.0000027272, 0.0000027335, 0.0000027396, 0.0000027457, + 0.0000027511, 0.0000027549, 0.0000027567, 0.0000027567, 0.0000027565, + 0.0000027565, 0.0000027568, 0.0000027590, 0.0000027647, 0.0000027716, + 0.0000027773, 0.0000027837, 0.0000027947, 0.0000028110, 0.0000028280, + 0.0000028388, 0.0000028424, 0.0000028433, 0.0000028458, 0.0000028546, + 0.0000028705, 0.0000028887, 0.0000029042, 0.0000029140, 0.0000029186, + 0.0000029192, 0.0000029180, 0.0000029164, 0.0000029149, 0.0000029118, + 0.0000029068, 0.0000029023, 0.0000028980, 0.0000028925, 0.0000028870, + 0.0000028841, 0.0000028837, 0.0000028833, 0.0000028806, 0.0000028790, + 0.0000028803, 0.0000028804, 0.0000028783, 0.0000028758, 0.0000028747, + 0.0000028711, 0.0000028640, 0.0000028531, 0.0000028385, 0.0000028269, + 0.0000028246, 0.0000028313, 0.0000028448, 0.0000028532, 0.0000028524, + 0.0000028455, 0.0000028361, 0.0000028278, 0.0000028248, 0.0000028266, + 0.0000028313, 0.0000028356, 0.0000028378, 0.0000028388, 0.0000028392, + 0.0000028389, 0.0000028371, 0.0000028322, 0.0000028252, 0.0000028197, + 0.0000028174, 0.0000028180, 0.0000028188, 0.0000028194, 0.0000028214, + 0.0000028271, 0.0000028340, 0.0000028371, 0.0000028335, 0.0000028253, + 0.0000028173, 0.0000028120, 0.0000028086, 0.0000028083, 0.0000028131, + 0.0000028184, 0.0000028217, 0.0000028218, 0.0000028196, 0.0000028164, + 0.0000028124, 0.0000028097, 0.0000028088, 0.0000028087, 0.0000028094, + 0.0000028100, 0.0000028094, 0.0000028069, 0.0000028033, 0.0000027987, + 0.0000027924, 0.0000027849, 0.0000027779, 0.0000027722, 0.0000027673, + 0.0000027626, 0.0000027588, 0.0000027570, 0.0000027578, 0.0000027624, + 0.0000027690, 0.0000027755, 0.0000027813, 0.0000027862, 0.0000027878, + 0.0000027780, 0.0000027637, 0.0000027615, 0.0000027679, 0.0000027714, + 0.0000027728, 0.0000027804, 0.0000027922, 0.0000027982, 0.0000027950, + 0.0000027868, 0.0000027798, 0.0000027750, 0.0000027721, 0.0000027684, + 0.0000027640, 0.0000027609, 0.0000027604, 0.0000027631, 0.0000027653, + 0.0000027595, 0.0000027488, 0.0000027455, 0.0000027524, 0.0000027615, + 0.0000027642, 0.0000027605, 0.0000027535, 0.0000027389, 0.0000027217, + 0.0000027177, 0.0000027225, 0.0000027266, 0.0000027277, 0.0000027226, + 0.0000027121, 0.0000027090, 0.0000027131, 0.0000027087, 0.0000026991, + 0.0000026992, 0.0000027024, 0.0000027046, 0.0000027078, 0.0000027062, + 0.0000027023, 0.0000027020, 0.0000027038, 0.0000027094, 0.0000027205, + 0.0000027309, 0.0000027359, 0.0000027360, 0.0000027321, 0.0000027240, + 0.0000027161, 0.0000027151, 0.0000027225, 0.0000027299, 0.0000027336, + 0.0000027337, 0.0000027312, 0.0000027251, 0.0000027198, 0.0000027160, + 0.0000027137, 0.0000027087, 0.0000027006, 0.0000026919, 0.0000026852, + 0.0000026778, 0.0000026700, 0.0000026649, 0.0000026618, 0.0000026595, + 0.0000026591, 0.0000026603, 0.0000026611, 0.0000026608, 0.0000026582, + 0.0000026499, 0.0000026332, 0.0000026102, 0.0000025948, 0.0000025926, + 0.0000026080, 0.0000026469, 0.0000026813, 0.0000026861, 0.0000026769, + 0.0000026763, 0.0000026799, 0.0000026776, 0.0000026769, 0.0000026862, + 0.0000026769, 0.0000026494, 0.0000026201, 0.0000026081, 0.0000026218, + 0.0000026372, 0.0000026380, 0.0000026402, 0.0000026573, 0.0000026863, + 0.0000027140, 0.0000027262, 0.0000027301, 0.0000027348, 0.0000027372, + 0.0000027402, 0.0000027485, 0.0000027619, 0.0000027767, 0.0000027878, + 0.0000027959, 0.0000028043, 0.0000028136, 0.0000028186, 0.0000028199, + 0.0000028205, 0.0000028238, 0.0000028273, 0.0000028268, 0.0000028214, + 0.0000028139, 0.0000028039, 0.0000027941, 0.0000027906, 0.0000027833, + 0.0000027708, 0.0000027659, 0.0000027664, 0.0000027621, 0.0000027569, + 0.0000027545, 0.0000027523, 0.0000027478, 0.0000027416, 0.0000027464, + 0.0000027543, 0.0000027698, 0.0000027861, 0.0000027982, 0.0000027984, + 0.0000027931, 0.0000027814, 0.0000027798, 0.0000027872, 0.0000027889, + 0.0000027703, 0.0000027633, 0.0000027571, 0.0000027542, 0.0000027554, + 0.0000027531, 0.0000027501, 0.0000027481, 0.0000027391, 0.0000027239, + 0.0000027108, 0.0000027134, 0.0000027091, 0.0000027001, 0.0000026929, + 0.0000026774, 0.0000026597, 0.0000026481, 0.0000026417, 0.0000026379, + 0.0000026345, 0.0000026309, 0.0000026278, 0.0000026260, 0.0000026237, + 0.0000026184, 0.0000026106, 0.0000025996, 0.0000025866, 0.0000025778, + 0.0000025746, 0.0000025727, 0.0000025688, 0.0000025649, 0.0000025635, + 0.0000025657, 0.0000025746, 0.0000025852, 0.0000025924, 0.0000025943, + 0.0000025919, 0.0000025863, 0.0000025806, 0.0000025795, 0.0000025839, + 0.0000025899, 0.0000025946, 0.0000025964, 0.0000025962, 0.0000025944, + 0.0000025923, 0.0000025888, 0.0000025835, 0.0000025782, 0.0000025745, + 0.0000025730, 0.0000025727, 0.0000025721, 0.0000025711, 0.0000025680, + 0.0000025639, 0.0000025602, 0.0000025570, 0.0000025559, 0.0000025556, + 0.0000025535, 0.0000025487, 0.0000025426, 0.0000025342, 0.0000025235, + 0.0000025124, 0.0000025030, 0.0000024994, 0.0000025019, 0.0000025035, + 0.0000025048, 0.0000025044, 0.0000025059, 0.0000025088, 0.0000025098, + 0.0000025062, 0.0000025026, 0.0000025013, 0.0000025101, 0.0000025187, + 0.0000025200, 0.0000025160, 0.0000025150, 0.0000025183, 0.0000025161, + 0.0000025084, 0.0000025045, 0.0000025099, 0.0000025166, 0.0000025187, + 0.0000025262, 0.0000025417, 0.0000025493, 0.0000025475, 0.0000025441, + 0.0000025562, 0.0000025884, 0.0000026034, 0.0000026059, 0.0000026070, + 0.0000026062, 0.0000026035, 0.0000026006, 0.0000026001, 0.0000026023, + 0.0000026072, 0.0000026151, 0.0000026224, 0.0000026251, 0.0000026286, + 0.0000026343, 0.0000026417, 0.0000026512, 0.0000026616, 0.0000026655, + 0.0000026635, 0.0000026627, 0.0000026646, 0.0000026691, 0.0000026737, + 0.0000026782, 0.0000026824, 0.0000026877, 0.0000026931, 0.0000026966, + 0.0000026970, 0.0000026969, 0.0000027025, 0.0000027106, 0.0000027173, + 0.0000027218, 0.0000027206, 0.0000027138, 0.0000027099, 0.0000027117, + 0.0000027243, 0.0000027507, 0.0000027665, 0.0000027982, 0.0000028368, + 0.0000028374, 0.0000028267, 0.0000028151, 0.0000028205, 0.0000028313, + 0.0000028314, 0.0000028391, 0.0000028445, 0.0000028388, 0.0000028259, + 0.0000028230, 0.0000028243, 0.0000028211, 0.0000028082, 0.0000028006, + 0.0000028104, 0.0000028208, 0.0000028219, 0.0000028228, 0.0000028271, + 0.0000028296, 0.0000028291, 0.0000028272, 0.0000028242, 0.0000028210, + 0.0000028165, 0.0000028136, 0.0000028145, 0.0000028191, 0.0000028254, + 0.0000028342, 0.0000028430, 0.0000028525, 0.0000028598, 0.0000028661, + 0.0000028721, 0.0000028801, 0.0000028894, 0.0000028971, 0.0000029027, + 0.0000029081, 0.0000029136, 0.0000029187, 0.0000029225, 0.0000029243, + 0.0000029235, 0.0000029241, 0.0000029228, 0.0000029196, 0.0000029158, + 0.0000029101, 0.0000029040, 0.0000028976, 0.0000028922, 0.0000028875, + 0.0000028839, 0.0000028829, 0.0000028846, 0.0000028872, 0.0000028901, + 0.0000028940, 0.0000028991, 0.0000029043, 0.0000029062, 0.0000029063, + 0.0000029085, 0.0000029108, 0.0000029065, 0.0000028924, 0.0000028792, + 0.0000028741, 0.0000028722, 0.0000028720, 0.0000028699, 0.0000028693, + 0.0000028766, 0.0000028894, 0.0000029092, 0.0000029255, 0.0000029342, + 0.0000029331, 0.0000029248, 0.0000029174, 0.0000029152, 0.0000029160, + 0.0000029175, 0.0000029178, 0.0000029156, 0.0000029119, 0.0000029068, + 0.0000029044, 0.0000029044, 0.0000029053, 0.0000029069, 0.0000029093, + 0.0000029113, 0.0000029135, 0.0000029144, 0.0000029156, 0.0000029163, + 0.0000029150, 0.0000029139, 0.0000029131, 0.0000029118, 0.0000029101, + 0.0000029077, 0.0000029039, 0.0000028990, 0.0000028937, 0.0000028878, + 0.0000028827, 0.0000028771, 0.0000028706, 0.0000028634, 0.0000028550, + 0.0000028469, 0.0000028395, 0.0000028331, 0.0000028270, 0.0000028208, + 0.0000028152, 0.0000028127, 0.0000028141, 0.0000028189, 0.0000028236, + 0.0000028262, 0.0000028258, 0.0000028236, 0.0000028208, 0.0000028184, + 0.0000028166, 0.0000028159, 0.0000028173, 0.0000028205, 0.0000028251, + 0.0000028304, 0.0000028346, 0.0000028375, 0.0000028387, 0.0000028378, + 0.0000028339, 0.0000028272, 0.0000028200, 0.0000028171, 0.0000028183, + 0.0000028212, 0.0000028231, 0.0000028228, 0.0000028201, 0.0000028170, + 0.0000028149, 0.0000028154, 0.0000028192, 0.0000028249, 0.0000028304, + 0.0000028352, 0.0000028375, 0.0000028364, 0.0000028329, 0.0000028292, + 0.0000028304, 0.0000028329, 0.0000028335, 0.0000028313, 0.0000028252, + 0.0000028181, 0.0000028138, 0.0000028132, 0.0000028151, 0.0000028193, + 0.0000028219, 0.0000028212, 0.0000028205, 0.0000028213, 0.0000028214, + 0.0000028203, 0.0000028182, 0.0000028140, 0.0000028086, 0.0000028053, + 0.0000028054, 0.0000028060, 0.0000028031, 0.0000027975, 0.0000027920, + 0.0000027915, 0.0000027998, 0.0000028076, 0.0000028107, 0.0000028097, + 0.0000027928, 0.0000027669, 0.0000027443, 0.0000027308, 0.0000027308, + 0.0000027375, 0.0000027473, 0.0000027563, 0.0000027637, 0.0000027719, + 0.0000027828, 0.0000027935, 0.0000028000, 0.0000028018, 0.0000028022, + 0.0000028024, 0.0000028029, 0.0000028053, 0.0000028101, 0.0000028169, + 0.0000028257, 0.0000028346, 0.0000028389, 0.0000028381, 0.0000028339, + 0.0000028282, 0.0000028228, 0.0000028197, 0.0000028191, 0.0000028184, + 0.0000028167, 0.0000028151, 0.0000028135, 0.0000028108, 0.0000028057, + 0.0000028008, 0.0000027995, 0.0000028040, 0.0000028125, 0.0000028192, + 0.0000028218, 0.0000028123, 0.0000027976, 0.0000027844, 0.0000027755, + 0.0000027753, 0.0000027808, 0.0000027932, 0.0000028108, 0.0000028322, + 0.0000028505, 0.0000028613, 0.0000028664, 0.0000028687, 0.0000028684, + 0.0000028659, 0.0000028676, 0.0000028726, 0.0000028758, 0.0000028744, + 0.0000028684, 0.0000028588, 0.0000028472, 0.0000028353, 0.0000028262, + 0.0000028185, 0.0000028153, 0.0000028149, 0.0000028155, 0.0000028142, + 0.0000028112, 0.0000028063, 0.0000028008, 0.0000028077, 0.0000028112, + 0.0000028063, 0.0000028324, 0.0000028596, 0.0000028699, 0.0000028700, + 0.0000028618, 0.0000028600, 0.0000028689, 0.0000028717, 0.0000028665, + 0.0000028550, 0.0000028439, 0.0000028338, 0.0000028236, 0.0000028174, + 0.0000028106, 0.0000028015, 0.0000027961, 0.0000027916, 0.0000027849, + 0.0000027844, 0.0000027936, 0.0000028079, 0.0000028261, 0.0000028431, + 0.0000028477, 0.0000028503, 0.0000028580, 0.0000028638, 0.0000028646, + 0.0000028663, 0.0000028699, 0.0000028743, 0.0000028805, 0.0000028870, + 0.0000028910, 0.0000028918, 0.0000028941, 0.0000029005, 0.0000029062, + 0.0000029093, 0.0000029112, 0.0000029130, 0.0000029090, 0.0000028994, + 0.0000028847, 0.0000028677, 0.0000028531, 0.0000028459, 0.0000028439, + 0.0000028418, 0.0000028398, 0.0000028378, 0.0000028357, 0.0000028382, + 0.0000028458, 0.0000028602, 0.0000028752, 0.0000028785, 0.0000028579, + 0.0000028389, 0.0000028389, 0.0000028327, 0.0000028090, 0.0000028066, + 0.0000028054, 0.0000027930, 0.0000027799, 0.0000027715, 0.0000027654, + 0.0000027611, 0.0000027575, 0.0000027547, 0.0000027544, 0.0000027572, + 0.0000027594, 0.0000027580, 0.0000027559, 0.0000027546, 0.0000027533, + 0.0000027521, 0.0000027510, 0.0000027490, 0.0000027415, 0.0000027299, + 0.0000027243, 0.0000027268, 0.0000027294, 0.0000027280, 0.0000027240, + 0.0000027218, 0.0000027235, 0.0000027277, 0.0000027313, 0.0000027326, + 0.0000027320, 0.0000027292, 0.0000027235, 0.0000027169, 0.0000027128, + 0.0000027143, 0.0000027216, 0.0000027310, 0.0000027388, 0.0000027422, + 0.0000027410, 0.0000027352, 0.0000027265, 0.0000027184, 0.0000027136, + 0.0000027110, 0.0000027084, 0.0000027047, 0.0000027013, 0.0000027005, + 0.0000027023, 0.0000027051, 0.0000027070, 0.0000027073, 0.0000027058, + 0.0000027037, 0.0000027013, 0.0000026977, 0.0000026936, 0.0000026895, + 0.0000026861, 0.0000026846, 0.0000026845, 0.0000026846, 0.0000026845, + 0.0000026842, 0.0000026840, 0.0000026836, 0.0000026824, 0.0000026797, + 0.0000026758, 0.0000026716, 0.0000026684, 0.0000026663, 0.0000026647, + 0.0000026627, 0.0000026599, 0.0000026564, 0.0000026527, 0.0000026473, + 0.0000026408, 0.0000026359, 0.0000026333, 0.0000026331, 0.0000026351, + 0.0000026386, 0.0000026435, 0.0000026501, 0.0000026575, 0.0000026665, + 0.0000026775, 0.0000026887, 0.0000026980, 0.0000027053, 0.0000027115, + 0.0000027179, 0.0000027243, 0.0000027309, 0.0000027377, 0.0000027440, + 0.0000027487, 0.0000027505, 0.0000027500, 0.0000027482, 0.0000027469, + 0.0000027471, 0.0000027507, 0.0000027583, 0.0000027676, 0.0000027757, + 0.0000027813, 0.0000027873, 0.0000027980, 0.0000028143, 0.0000028311, + 0.0000028418, 0.0000028454, 0.0000028473, 0.0000028533, 0.0000028665, + 0.0000028860, 0.0000029044, 0.0000029168, 0.0000029228, 0.0000029243, + 0.0000029234, 0.0000029213, 0.0000029193, 0.0000029166, 0.0000029130, + 0.0000029090, 0.0000029036, 0.0000028967, 0.0000028909, 0.0000028871, + 0.0000028853, 0.0000028838, 0.0000028804, 0.0000028784, 0.0000028790, + 0.0000028794, 0.0000028782, 0.0000028768, 0.0000028761, 0.0000028726, + 0.0000028672, 0.0000028621, 0.0000028544, 0.0000028453, 0.0000028399, + 0.0000028427, 0.0000028517, 0.0000028581, 0.0000028571, 0.0000028511, + 0.0000028423, 0.0000028331, 0.0000028272, 0.0000028267, 0.0000028299, + 0.0000028342, 0.0000028364, 0.0000028366, 0.0000028359, 0.0000028349, + 0.0000028330, 0.0000028285, 0.0000028230, 0.0000028207, 0.0000028208, + 0.0000028208, 0.0000028203, 0.0000028198, 0.0000028208, 0.0000028246, + 0.0000028310, 0.0000028355, 0.0000028345, 0.0000028288, 0.0000028196, + 0.0000028124, 0.0000028084, 0.0000028064, 0.0000028087, 0.0000028166, + 0.0000028234, 0.0000028271, 0.0000028274, 0.0000028254, 0.0000028200, + 0.0000028145, 0.0000028109, 0.0000028095, 0.0000028100, 0.0000028106, + 0.0000028102, 0.0000028078, 0.0000028042, 0.0000027998, 0.0000027934, + 0.0000027851, 0.0000027765, 0.0000027690, 0.0000027634, 0.0000027588, + 0.0000027549, 0.0000027528, 0.0000027526, 0.0000027543, 0.0000027588, + 0.0000027648, 0.0000027727, 0.0000027809, 0.0000027879, 0.0000027913, + 0.0000027861, 0.0000027700, 0.0000027632, 0.0000027687, 0.0000027719, + 0.0000027731, 0.0000027801, 0.0000027902, 0.0000027950, 0.0000027923, + 0.0000027851, 0.0000027786, 0.0000027740, 0.0000027695, 0.0000027657, + 0.0000027638, 0.0000027642, 0.0000027665, 0.0000027658, 0.0000027542, + 0.0000027420, 0.0000027419, 0.0000027519, 0.0000027607, 0.0000027638, + 0.0000027619, 0.0000027565, 0.0000027469, 0.0000027286, 0.0000027171, + 0.0000027191, 0.0000027243, 0.0000027271, 0.0000027248, 0.0000027152, + 0.0000027099, 0.0000027132, 0.0000027097, 0.0000026980, 0.0000026962, + 0.0000027004, 0.0000027029, 0.0000027064, 0.0000027058, 0.0000027008, + 0.0000026993, 0.0000027010, 0.0000027053, 0.0000027144, 0.0000027256, + 0.0000027326, 0.0000027342, 0.0000027330, 0.0000027266, 0.0000027161, + 0.0000027092, 0.0000027118, 0.0000027203, 0.0000027281, 0.0000027315, + 0.0000027322, 0.0000027299, 0.0000027255, 0.0000027198, 0.0000027158, + 0.0000027124, 0.0000027075, 0.0000026994, 0.0000026913, 0.0000026846, + 0.0000026760, 0.0000026670, 0.0000026616, 0.0000026595, 0.0000026577, + 0.0000026567, 0.0000026573, 0.0000026584, 0.0000026593, 0.0000026588, + 0.0000026521, 0.0000026363, 0.0000026126, 0.0000025914, 0.0000025868, + 0.0000025954, 0.0000026260, 0.0000026662, 0.0000026831, 0.0000026754, + 0.0000026687, 0.0000026726, 0.0000026744, 0.0000026751, 0.0000026846, + 0.0000026849, 0.0000026576, 0.0000026290, 0.0000026094, 0.0000026102, + 0.0000026242, 0.0000026334, 0.0000026298, 0.0000026290, 0.0000026377, + 0.0000026590, 0.0000026826, 0.0000027028, 0.0000027178, 0.0000027263, + 0.0000027323, 0.0000027393, 0.0000027464, 0.0000027567, 0.0000027713, + 0.0000027854, 0.0000027966, 0.0000028066, 0.0000028161, 0.0000028198, + 0.0000028192, 0.0000028218, 0.0000028275, 0.0000028287, 0.0000028265, + 0.0000028221, 0.0000028131, 0.0000028002, 0.0000027910, 0.0000027826, + 0.0000027665, 0.0000027542, 0.0000027530, 0.0000027525, 0.0000027495, + 0.0000027484, 0.0000027465, 0.0000027419, 0.0000027409, 0.0000027492, + 0.0000027563, 0.0000027738, 0.0000027866, 0.0000027960, 0.0000027961, + 0.0000027900, 0.0000027808, 0.0000027805, 0.0000027896, 0.0000027884, + 0.0000027707, 0.0000027645, 0.0000027558, 0.0000027540, 0.0000027566, + 0.0000027531, 0.0000027498, 0.0000027443, 0.0000027348, 0.0000027207, + 0.0000027067, 0.0000027111, 0.0000027088, 0.0000026972, 0.0000026893, + 0.0000026777, 0.0000026604, 0.0000026452, 0.0000026357, 0.0000026314, + 0.0000026299, 0.0000026302, 0.0000026306, 0.0000026303, 0.0000026287, + 0.0000026248, 0.0000026196, 0.0000026127, 0.0000026026, 0.0000025898, + 0.0000025801, 0.0000025756, 0.0000025712, 0.0000025678, 0.0000025676, + 0.0000025700, 0.0000025778, 0.0000025880, 0.0000025948, 0.0000025961, + 0.0000025930, 0.0000025862, 0.0000025799, 0.0000025784, 0.0000025842, + 0.0000025914, 0.0000025964, 0.0000025982, 0.0000025975, 0.0000025945, + 0.0000025900, 0.0000025840, 0.0000025776, 0.0000025728, 0.0000025699, + 0.0000025687, 0.0000025686, 0.0000025684, 0.0000025682, 0.0000025668, + 0.0000025651, 0.0000025637, 0.0000025629, 0.0000025635, 0.0000025652, + 0.0000025650, 0.0000025621, 0.0000025578, 0.0000025508, 0.0000025404, + 0.0000025282, 0.0000025165, 0.0000025084, 0.0000025056, 0.0000025041, + 0.0000025011, 0.0000024963, 0.0000024920, 0.0000024936, 0.0000024988, + 0.0000025028, 0.0000025032, 0.0000024981, 0.0000024941, 0.0000024953, + 0.0000025096, 0.0000025209, 0.0000025194, 0.0000025096, 0.0000025095, + 0.0000025179, 0.0000025191, 0.0000025149, 0.0000025179, 0.0000025229, + 0.0000025240, 0.0000025272, 0.0000025375, 0.0000025478, 0.0000025489, + 0.0000025443, 0.0000025497, 0.0000025804, 0.0000026033, 0.0000026080, + 0.0000026077, 0.0000026055, 0.0000026017, 0.0000025980, 0.0000025968, + 0.0000025976, 0.0000025994, 0.0000026041, 0.0000026107, 0.0000026156, + 0.0000026175, 0.0000026190, 0.0000026231, 0.0000026292, 0.0000026391, + 0.0000026521, 0.0000026608, 0.0000026633, 0.0000026652, 0.0000026686, + 0.0000026720, 0.0000026748, 0.0000026782, 0.0000026819, 0.0000026856, + 0.0000026894, 0.0000026911, 0.0000026947, 0.0000027029, 0.0000027113, + 0.0000027173, 0.0000027212, 0.0000027199, 0.0000027116, 0.0000027093, + 0.0000027113, 0.0000027253, 0.0000027514, 0.0000027636, 0.0000027936, + 0.0000028352, 0.0000028362, 0.0000028266, 0.0000028154, 0.0000028167, + 0.0000028279, 0.0000028320, 0.0000028403, 0.0000028439, 0.0000028356, + 0.0000028236, 0.0000028200, 0.0000028214, 0.0000028172, 0.0000028031, + 0.0000027961, 0.0000028039, 0.0000028099, 0.0000028110, 0.0000028156, + 0.0000028219, 0.0000028228, 0.0000028200, 0.0000028152, 0.0000028104, + 0.0000028095, 0.0000028098, 0.0000028118, 0.0000028174, 0.0000028263, + 0.0000028347, 0.0000028426, 0.0000028512, 0.0000028592, 0.0000028671, + 0.0000028747, 0.0000028821, 0.0000028901, 0.0000029003, 0.0000029104, + 0.0000029194, 0.0000029253, 0.0000029286, 0.0000029307, 0.0000029295, + 0.0000029253, 0.0000029180, 0.0000029109, 0.0000029050, 0.0000028989, + 0.0000028943, 0.0000028912, 0.0000028905, 0.0000028914, 0.0000028914, + 0.0000028889, 0.0000028857, 0.0000028846, 0.0000028861, 0.0000028900, + 0.0000028978, 0.0000029089, 0.0000029189, 0.0000029224, 0.0000029206, + 0.0000029187, 0.0000029211, 0.0000029223, 0.0000029143, 0.0000028929, + 0.0000028744, 0.0000028675, 0.0000028654, 0.0000028673, 0.0000028677, + 0.0000028686, 0.0000028781, 0.0000028939, 0.0000029153, 0.0000029296, + 0.0000029348, 0.0000029320, 0.0000029214, 0.0000029147, 0.0000029138, + 0.0000029159, 0.0000029166, 0.0000029155, 0.0000029122, 0.0000029085, + 0.0000029037, 0.0000029011, 0.0000029018, 0.0000029017, 0.0000029006, + 0.0000028991, 0.0000028987, 0.0000028985, 0.0000028991, 0.0000028997, + 0.0000029003, 0.0000028992, 0.0000028977, 0.0000028973, 0.0000028961, + 0.0000028941, 0.0000028914, 0.0000028874, 0.0000028825, 0.0000028774, + 0.0000028716, 0.0000028666, 0.0000028621, 0.0000028572, 0.0000028518, + 0.0000028463, 0.0000028411, 0.0000028370, 0.0000028326, 0.0000028278, + 0.0000028217, 0.0000028141, 0.0000028081, 0.0000028074, 0.0000028113, + 0.0000028170, 0.0000028213, 0.0000028231, 0.0000028229, 0.0000028212, + 0.0000028182, 0.0000028160, 0.0000028157, 0.0000028167, 0.0000028183, + 0.0000028203, 0.0000028234, 0.0000028271, 0.0000028312, 0.0000028347, + 0.0000028354, 0.0000028339, 0.0000028294, 0.0000028223, 0.0000028160, + 0.0000028144, 0.0000028164, 0.0000028205, 0.0000028234, 0.0000028232, + 0.0000028199, 0.0000028158, 0.0000028136, 0.0000028157, 0.0000028224, + 0.0000028314, 0.0000028390, 0.0000028433, 0.0000028425, 0.0000028374, + 0.0000028295, 0.0000028256, 0.0000028273, 0.0000028292, 0.0000028291, + 0.0000028260, 0.0000028208, 0.0000028162, 0.0000028146, 0.0000028144, + 0.0000028168, 0.0000028212, 0.0000028235, 0.0000028221, 0.0000028210, + 0.0000028210, 0.0000028203, 0.0000028187, 0.0000028165, 0.0000028125, + 0.0000028070, 0.0000028039, 0.0000028067, 0.0000028098, 0.0000028083, + 0.0000028020, 0.0000027930, 0.0000027875, 0.0000027909, 0.0000028011, + 0.0000028115, 0.0000028146, 0.0000028107, 0.0000027949, 0.0000027695, + 0.0000027441, 0.0000027292, 0.0000027240, 0.0000027291, 0.0000027379, + 0.0000027466, 0.0000027547, 0.0000027642, 0.0000027737, 0.0000027809, + 0.0000027872, 0.0000027935, 0.0000027978, 0.0000027996, 0.0000028008, + 0.0000028028, 0.0000028072, 0.0000028150, 0.0000028238, 0.0000028281, + 0.0000028279, 0.0000028238, 0.0000028177, 0.0000028117, 0.0000028077, + 0.0000028077, 0.0000028107, 0.0000028132, 0.0000028136, 0.0000028129, + 0.0000028113, 0.0000028063, 0.0000027993, 0.0000027935, 0.0000027934, + 0.0000028000, 0.0000028103, 0.0000028179, 0.0000028164, 0.0000028116, + 0.0000027991, 0.0000027846, 0.0000027783, 0.0000027818, 0.0000027876, + 0.0000027953, 0.0000028084, 0.0000028270, 0.0000028457, 0.0000028596, + 0.0000028667, 0.0000028668, 0.0000028640, 0.0000028652, 0.0000028700, + 0.0000028725, 0.0000028707, 0.0000028650, 0.0000028569, 0.0000028467, + 0.0000028367, 0.0000028271, 0.0000028185, 0.0000028134, 0.0000028102, + 0.0000028122, 0.0000028154, 0.0000028141, 0.0000028099, 0.0000028026, + 0.0000028068, 0.0000028130, 0.0000028042, 0.0000028232, 0.0000028550, + 0.0000028702, 0.0000028712, 0.0000028620, 0.0000028533, 0.0000028565, + 0.0000028592, 0.0000028547, 0.0000028475, 0.0000028426, 0.0000028397, + 0.0000028342, 0.0000028281, 0.0000028202, 0.0000028092, 0.0000028013, + 0.0000027964, 0.0000027889, 0.0000027861, 0.0000027922, 0.0000028020, + 0.0000028176, 0.0000028371, 0.0000028464, 0.0000028495, 0.0000028568, + 0.0000028639, 0.0000028655, 0.0000028670, 0.0000028687, 0.0000028713, + 0.0000028765, 0.0000028840, 0.0000028907, 0.0000028943, 0.0000028947, + 0.0000028953, 0.0000028987, 0.0000029041, 0.0000029082, 0.0000029107, + 0.0000029131, 0.0000029123, 0.0000029033, 0.0000028875, 0.0000028696, + 0.0000028552, 0.0000028473, 0.0000028433, 0.0000028410, 0.0000028381, + 0.0000028345, 0.0000028344, 0.0000028414, 0.0000028581, 0.0000028753, + 0.0000028773, 0.0000028528, 0.0000028354, 0.0000028370, 0.0000028305, + 0.0000028078, 0.0000028064, 0.0000028035, 0.0000027907, 0.0000027793, + 0.0000027721, 0.0000027663, 0.0000027620, 0.0000027581, 0.0000027539, + 0.0000027505, 0.0000027507, 0.0000027544, 0.0000027558, 0.0000027533, + 0.0000027514, 0.0000027510, 0.0000027508, 0.0000027509, 0.0000027508, + 0.0000027513, 0.0000027493, 0.0000027408, 0.0000027300, 0.0000027259, + 0.0000027266, 0.0000027258, 0.0000027224, 0.0000027189, 0.0000027188, + 0.0000027219, 0.0000027277, 0.0000027316, 0.0000027320, 0.0000027294, + 0.0000027246, 0.0000027185, 0.0000027129, 0.0000027105, 0.0000027119, + 0.0000027171, 0.0000027244, 0.0000027317, 0.0000027375, 0.0000027411, + 0.0000027410, 0.0000027363, 0.0000027290, 0.0000027220, 0.0000027153, + 0.0000027085, 0.0000027028, 0.0000027003, 0.0000027004, 0.0000027027, + 0.0000027063, 0.0000027088, 0.0000027092, 0.0000027079, 0.0000027056, + 0.0000027031, 0.0000027009, 0.0000026984, 0.0000026950, 0.0000026914, + 0.0000026879, 0.0000026852, 0.0000026844, 0.0000026848, 0.0000026855, + 0.0000026855, 0.0000026847, 0.0000026839, 0.0000026829, 0.0000026812, + 0.0000026788, 0.0000026759, 0.0000026716, 0.0000026664, 0.0000026614, + 0.0000026574, 0.0000026543, 0.0000026498, 0.0000026441, 0.0000026383, + 0.0000026331, 0.0000026307, 0.0000026308, 0.0000026343, 0.0000026405, + 0.0000026457, 0.0000026504, 0.0000026555, 0.0000026641, 0.0000026757, + 0.0000026852, 0.0000026913, 0.0000026975, 0.0000027048, 0.0000027117, + 0.0000027192, 0.0000027271, 0.0000027350, 0.0000027412, 0.0000027431, + 0.0000027420, 0.0000027401, 0.0000027398, 0.0000027426, 0.0000027484, + 0.0000027560, 0.0000027645, 0.0000027739, 0.0000027818, 0.0000027872, + 0.0000027928, 0.0000028041, 0.0000028231, 0.0000028409, 0.0000028503, + 0.0000028535, 0.0000028575, 0.0000028686, 0.0000028870, 0.0000029063, + 0.0000029193, 0.0000029260, 0.0000029274, 0.0000029256, 0.0000029223, + 0.0000029197, 0.0000029172, 0.0000029141, 0.0000029103, 0.0000029047, + 0.0000028976, 0.0000028912, 0.0000028863, 0.0000028842, 0.0000028832, + 0.0000028808, 0.0000028788, 0.0000028784, 0.0000028778, 0.0000028769, + 0.0000028767, 0.0000028765, 0.0000028728, 0.0000028665, 0.0000028621, + 0.0000028597, 0.0000028564, 0.0000028524, 0.0000028528, 0.0000028567, + 0.0000028597, 0.0000028576, 0.0000028517, 0.0000028437, 0.0000028353, + 0.0000028289, 0.0000028269, 0.0000028290, 0.0000028335, 0.0000028360, + 0.0000028360, 0.0000028344, 0.0000028325, 0.0000028308, 0.0000028281, + 0.0000028253, 0.0000028261, 0.0000028275, 0.0000028268, 0.0000028244, + 0.0000028225, 0.0000028221, 0.0000028253, 0.0000028317, 0.0000028363, + 0.0000028360, 0.0000028324, 0.0000028239, 0.0000028151, 0.0000028095, + 0.0000028056, 0.0000028057, 0.0000028123, 0.0000028215, 0.0000028274, + 0.0000028290, 0.0000028283, 0.0000028255, 0.0000028209, 0.0000028160, + 0.0000028128, 0.0000028117, 0.0000028110, 0.0000028110, 0.0000028105, + 0.0000028093, 0.0000028070, 0.0000028026, 0.0000027955, 0.0000027872, + 0.0000027799, 0.0000027744, 0.0000027703, 0.0000027671, 0.0000027650, + 0.0000027644, 0.0000027643, 0.0000027640, 0.0000027642, 0.0000027663, + 0.0000027714, 0.0000027787, 0.0000027875, 0.0000027939, 0.0000027903, + 0.0000027741, 0.0000027662, 0.0000027699, 0.0000027723, 0.0000027729, + 0.0000027786, 0.0000027863, 0.0000027894, 0.0000027872, 0.0000027819, + 0.0000027761, 0.0000027712, 0.0000027683, 0.0000027668, 0.0000027670, + 0.0000027680, 0.0000027628, 0.0000027476, 0.0000027388, 0.0000027451, + 0.0000027554, 0.0000027594, 0.0000027592, 0.0000027582, 0.0000027556, + 0.0000027511, 0.0000027368, 0.0000027200, 0.0000027170, 0.0000027216, + 0.0000027260, 0.0000027260, 0.0000027180, 0.0000027118, 0.0000027144, + 0.0000027116, 0.0000026984, 0.0000026941, 0.0000026985, 0.0000027014, + 0.0000027053, 0.0000027070, 0.0000027021, 0.0000026970, 0.0000026976, + 0.0000027013, 0.0000027081, 0.0000027191, 0.0000027291, 0.0000027329, + 0.0000027331, 0.0000027303, 0.0000027209, 0.0000027098, 0.0000027048, + 0.0000027092, 0.0000027178, 0.0000027247, 0.0000027276, 0.0000027288, + 0.0000027281, 0.0000027251, 0.0000027201, 0.0000027158, 0.0000027115, + 0.0000027070, 0.0000026989, 0.0000026912, 0.0000026843, 0.0000026748, + 0.0000026647, 0.0000026593, 0.0000026577, 0.0000026559, 0.0000026544, + 0.0000026544, 0.0000026560, 0.0000026581, 0.0000026586, 0.0000026535, + 0.0000026397, 0.0000026168, 0.0000025919, 0.0000025821, 0.0000025858, + 0.0000026049, 0.0000026439, 0.0000026753, 0.0000026760, 0.0000026646, + 0.0000026649, 0.0000026700, 0.0000026731, 0.0000026811, 0.0000026867, + 0.0000026673, 0.0000026391, 0.0000026164, 0.0000026044, 0.0000026083, + 0.0000026216, 0.0000026247, 0.0000026198, 0.0000026158, 0.0000026168, + 0.0000026264, 0.0000026447, 0.0000026631, 0.0000026797, 0.0000026966, + 0.0000027111, 0.0000027257, 0.0000027384, 0.0000027524, 0.0000027678, + 0.0000027837, 0.0000027966, 0.0000028080, 0.0000028157, 0.0000028176, + 0.0000028199, 0.0000028260, 0.0000028291, 0.0000028287, 0.0000028274, + 0.0000028204, 0.0000028076, 0.0000027934, 0.0000027811, 0.0000027664, + 0.0000027513, 0.0000027428, 0.0000027400, 0.0000027409, 0.0000027419, + 0.0000027418, 0.0000027397, 0.0000027437, 0.0000027510, 0.0000027621, + 0.0000027771, 0.0000027875, 0.0000027934, 0.0000027936, 0.0000027864, + 0.0000027810, 0.0000027820, 0.0000027918, 0.0000027881, 0.0000027711, + 0.0000027645, 0.0000027539, 0.0000027540, 0.0000027570, 0.0000027530, + 0.0000027485, 0.0000027398, 0.0000027308, 0.0000027166, 0.0000027013, + 0.0000027071, 0.0000027081, 0.0000026962, 0.0000026862, 0.0000026775, + 0.0000026648, 0.0000026497, 0.0000026372, 0.0000026284, 0.0000026242, + 0.0000026236, 0.0000026273, 0.0000026313, 0.0000026332, 0.0000026314, + 0.0000026259, 0.0000026207, 0.0000026152, 0.0000026043, 0.0000025904, + 0.0000025806, 0.0000025740, 0.0000025691, 0.0000025695, 0.0000025740, + 0.0000025815, 0.0000025901, 0.0000025956, 0.0000025958, 0.0000025918, + 0.0000025859, 0.0000025819, 0.0000025810, 0.0000025873, 0.0000025956, + 0.0000025995, 0.0000026005, 0.0000025983, 0.0000025940, 0.0000025880, + 0.0000025807, 0.0000025740, 0.0000025693, 0.0000025665, 0.0000025657, + 0.0000025659, 0.0000025662, 0.0000025666, 0.0000025667, 0.0000025669, + 0.0000025675, 0.0000025685, 0.0000025702, 0.0000025725, 0.0000025728, + 0.0000025699, 0.0000025657, 0.0000025588, 0.0000025496, 0.0000025392, + 0.0000025280, 0.0000025190, 0.0000025154, 0.0000025145, 0.0000025106, + 0.0000025034, 0.0000024948, 0.0000024889, 0.0000024875, 0.0000024867, + 0.0000024904, 0.0000024951, 0.0000024961, 0.0000024932, 0.0000024924, + 0.0000024988, 0.0000025149, 0.0000025214, 0.0000025115, 0.0000025042, + 0.0000025149, 0.0000025272, 0.0000025282, 0.0000025269, 0.0000025286, + 0.0000025298, 0.0000025291, 0.0000025330, 0.0000025434, 0.0000025490, + 0.0000025471, 0.0000025501, 0.0000025779, 0.0000026082, 0.0000026151, + 0.0000026122, 0.0000026056, 0.0000025989, 0.0000025945, 0.0000025917, + 0.0000025913, 0.0000025927, 0.0000025957, 0.0000026003, 0.0000026059, + 0.0000026095, 0.0000026107, 0.0000026116, 0.0000026140, 0.0000026197, + 0.0000026313, 0.0000026475, 0.0000026604, 0.0000026665, 0.0000026685, + 0.0000026696, 0.0000026711, 0.0000026744, 0.0000026771, 0.0000026805, + 0.0000026832, 0.0000026868, 0.0000026924, 0.0000027018, 0.0000027118, + 0.0000027171, 0.0000027202, 0.0000027177, 0.0000027102, 0.0000027086, + 0.0000027103, 0.0000027264, 0.0000027511, 0.0000027599, 0.0000027893, + 0.0000028332, 0.0000028347, 0.0000028261, 0.0000028159, 0.0000028135, + 0.0000028221, 0.0000028314, 0.0000028429, 0.0000028436, 0.0000028321, + 0.0000028207, 0.0000028171, 0.0000028174, 0.0000028129, 0.0000027985, + 0.0000027930, 0.0000027985, 0.0000028003, 0.0000028005, 0.0000028055, + 0.0000028108, 0.0000028108, 0.0000028083, 0.0000028057, 0.0000028065, + 0.0000028094, 0.0000028127, 0.0000028182, 0.0000028271, 0.0000028366, + 0.0000028450, 0.0000028538, 0.0000028633, 0.0000028715, 0.0000028799, + 0.0000028873, 0.0000028962, 0.0000029050, 0.0000029145, 0.0000029215, + 0.0000029266, 0.0000029271, 0.0000029258, 0.0000029212, 0.0000029130, + 0.0000029042, 0.0000028944, 0.0000028863, 0.0000028820, 0.0000028803, + 0.0000028817, 0.0000028843, 0.0000028877, 0.0000028893, 0.0000028890, + 0.0000028865, 0.0000028845, 0.0000028856, 0.0000028925, 0.0000029025, + 0.0000029142, 0.0000029246, 0.0000029292, 0.0000029278, 0.0000029248, + 0.0000029243, 0.0000029271, 0.0000029273, 0.0000029164, 0.0000028920, + 0.0000028703, 0.0000028622, 0.0000028613, 0.0000028658, 0.0000028667, + 0.0000028680, 0.0000028790, 0.0000028974, 0.0000029189, 0.0000029312, + 0.0000029343, 0.0000029307, 0.0000029193, 0.0000029130, 0.0000029124, + 0.0000029138, 0.0000029148, 0.0000029126, 0.0000029093, 0.0000029040, + 0.0000028992, 0.0000028967, 0.0000028973, 0.0000028978, 0.0000028962, + 0.0000028938, 0.0000028916, 0.0000028889, 0.0000028876, 0.0000028866, + 0.0000028860, 0.0000028847, 0.0000028824, 0.0000028805, 0.0000028786, + 0.0000028768, 0.0000028750, 0.0000028732, 0.0000028710, 0.0000028687, + 0.0000028654, 0.0000028612, 0.0000028572, 0.0000028542, 0.0000028499, + 0.0000028454, 0.0000028414, 0.0000028377, 0.0000028343, 0.0000028308, + 0.0000028256, 0.0000028177, 0.0000028095, 0.0000028054, 0.0000028063, + 0.0000028104, 0.0000028157, 0.0000028189, 0.0000028199, 0.0000028200, + 0.0000028192, 0.0000028184, 0.0000028181, 0.0000028183, 0.0000028184, + 0.0000028187, 0.0000028199, 0.0000028223, 0.0000028253, 0.0000028285, + 0.0000028309, 0.0000028313, 0.0000028297, 0.0000028259, 0.0000028200, + 0.0000028144, 0.0000028126, 0.0000028148, 0.0000028194, 0.0000028221, + 0.0000028209, 0.0000028164, 0.0000028120, 0.0000028115, 0.0000028165, + 0.0000028266, 0.0000028369, 0.0000028446, 0.0000028462, 0.0000028425, + 0.0000028338, 0.0000028239, 0.0000028205, 0.0000028210, 0.0000028220, + 0.0000028216, 0.0000028188, 0.0000028162, 0.0000028151, 0.0000028144, + 0.0000028145, 0.0000028173, 0.0000028220, 0.0000028247, 0.0000028239, + 0.0000028222, 0.0000028206, 0.0000028183, 0.0000028155, 0.0000028132, + 0.0000028101, 0.0000028059, 0.0000028045, 0.0000028081, 0.0000028103, + 0.0000028092, 0.0000028044, 0.0000027954, 0.0000027864, 0.0000027855, + 0.0000027944, 0.0000028070, 0.0000028155, 0.0000028184, 0.0000028144, + 0.0000027982, 0.0000027722, 0.0000027478, 0.0000027285, 0.0000027229, + 0.0000027235, 0.0000027293, 0.0000027375, 0.0000027475, 0.0000027561, + 0.0000027626, 0.0000027704, 0.0000027797, 0.0000027882, 0.0000027941, + 0.0000027971, 0.0000027983, 0.0000028002, 0.0000028054, 0.0000028127, + 0.0000028172, 0.0000028170, 0.0000028122, 0.0000028058, 0.0000028003, + 0.0000027962, 0.0000027961, 0.0000028005, 0.0000028067, 0.0000028106, + 0.0000028112, 0.0000028104, 0.0000028061, 0.0000027984, 0.0000027898, + 0.0000027848, 0.0000027879, 0.0000027969, 0.0000028054, 0.0000028111, + 0.0000028138, 0.0000028083, 0.0000027979, 0.0000027886, 0.0000027862, + 0.0000027881, 0.0000027894, 0.0000027935, 0.0000028027, 0.0000028186, + 0.0000028382, 0.0000028540, 0.0000028610, 0.0000028621, 0.0000028645, + 0.0000028693, 0.0000028716, 0.0000028698, 0.0000028638, 0.0000028573, + 0.0000028495, 0.0000028416, 0.0000028305, 0.0000028200, 0.0000028129, + 0.0000028090, 0.0000028104, 0.0000028164, 0.0000028172, 0.0000028137, + 0.0000028060, 0.0000028075, 0.0000028153, 0.0000028048, 0.0000028149, + 0.0000028501, 0.0000028693, 0.0000028725, 0.0000028639, 0.0000028517, + 0.0000028494, 0.0000028516, 0.0000028492, 0.0000028459, 0.0000028457, + 0.0000028469, 0.0000028421, 0.0000028322, 0.0000028220, 0.0000028101, + 0.0000028019, 0.0000027985, 0.0000027936, 0.0000027892, 0.0000027925, + 0.0000027994, 0.0000028116, 0.0000028297, 0.0000028420, 0.0000028472, + 0.0000028545, 0.0000028633, 0.0000028661, 0.0000028676, 0.0000028675, + 0.0000028678, 0.0000028708, 0.0000028775, 0.0000028855, 0.0000028928, + 0.0000028958, 0.0000028953, 0.0000028936, 0.0000028955, 0.0000029024, + 0.0000029078, 0.0000029107, 0.0000029147, 0.0000029147, 0.0000029055, + 0.0000028898, 0.0000028728, 0.0000028581, 0.0000028472, 0.0000028419, + 0.0000028389, 0.0000028347, 0.0000028334, 0.0000028392, 0.0000028574, + 0.0000028758, 0.0000028749, 0.0000028471, 0.0000028328, 0.0000028361, + 0.0000028286, 0.0000028068, 0.0000028052, 0.0000028008, 0.0000027884, + 0.0000027785, 0.0000027719, 0.0000027658, 0.0000027610, 0.0000027574, + 0.0000027538, 0.0000027497, 0.0000027478, 0.0000027491, 0.0000027530, + 0.0000027528, 0.0000027492, 0.0000027461, 0.0000027458, 0.0000027480, + 0.0000027497, 0.0000027496, 0.0000027498, 0.0000027502, 0.0000027486, + 0.0000027419, 0.0000027320, 0.0000027270, 0.0000027249, 0.0000027233, + 0.0000027207, 0.0000027193, 0.0000027198, 0.0000027228, 0.0000027277, + 0.0000027313, 0.0000027319, 0.0000027306, 0.0000027269, 0.0000027212, + 0.0000027151, 0.0000027109, 0.0000027100, 0.0000027122, 0.0000027178, + 0.0000027251, 0.0000027333, 0.0000027401, 0.0000027436, 0.0000027436, + 0.0000027404, 0.0000027342, 0.0000027260, 0.0000027175, 0.0000027100, + 0.0000027053, 0.0000027050, 0.0000027080, 0.0000027116, 0.0000027139, + 0.0000027142, 0.0000027130, 0.0000027103, 0.0000027069, 0.0000027030, + 0.0000026993, 0.0000026962, 0.0000026931, 0.0000026903, 0.0000026891, + 0.0000026887, 0.0000026878, 0.0000026862, 0.0000026850, 0.0000026847, + 0.0000026847, 0.0000026844, 0.0000026837, 0.0000026821, 0.0000026781, + 0.0000026721, 0.0000026650, 0.0000026588, 0.0000026543, 0.0000026509, + 0.0000026475, 0.0000026434, 0.0000026389, 0.0000026351, 0.0000026340, + 0.0000026363, 0.0000026405, 0.0000026450, 0.0000026472, 0.0000026480, + 0.0000026528, 0.0000026622, 0.0000026700, 0.0000026746, 0.0000026808, + 0.0000026892, 0.0000026970, 0.0000027046, 0.0000027133, 0.0000027224, + 0.0000027289, 0.0000027314, 0.0000027324, 0.0000027340, 0.0000027366, + 0.0000027417, 0.0000027488, 0.0000027554, 0.0000027616, 0.0000027698, + 0.0000027792, 0.0000027869, 0.0000027916, 0.0000027994, 0.0000028166, + 0.0000028381, 0.0000028527, 0.0000028602, 0.0000028638, 0.0000028708, + 0.0000028849, 0.0000029027, 0.0000029177, 0.0000029251, 0.0000029262, + 0.0000029234, 0.0000029190, 0.0000029156, 0.0000029137, 0.0000029122, + 0.0000029094, 0.0000029040, 0.0000028972, 0.0000028907, 0.0000028853, + 0.0000028833, 0.0000028823, 0.0000028808, 0.0000028790, 0.0000028783, + 0.0000028771, 0.0000028758, 0.0000028759, 0.0000028758, 0.0000028723, + 0.0000028656, 0.0000028605, 0.0000028596, 0.0000028592, 0.0000028577, + 0.0000028568, 0.0000028573, 0.0000028576, 0.0000028544, 0.0000028489, + 0.0000028421, 0.0000028353, 0.0000028297, 0.0000028275, 0.0000028295, + 0.0000028342, 0.0000028368, 0.0000028373, 0.0000028357, 0.0000028329, + 0.0000028317, 0.0000028304, 0.0000028302, 0.0000028326, 0.0000028349, + 0.0000028342, 0.0000028311, 0.0000028285, 0.0000028276, 0.0000028303, + 0.0000028362, 0.0000028407, 0.0000028403, 0.0000028366, 0.0000028285, + 0.0000028183, 0.0000028106, 0.0000028061, 0.0000028040, 0.0000028066, + 0.0000028143, 0.0000028220, 0.0000028252, 0.0000028242, 0.0000028208, + 0.0000028173, 0.0000028147, 0.0000028140, 0.0000028149, 0.0000028166, + 0.0000028189, 0.0000028206, 0.0000028206, 0.0000028183, 0.0000028143, + 0.0000028084, 0.0000028005, 0.0000027929, 0.0000027873, 0.0000027834, + 0.0000027798, 0.0000027775, 0.0000027773, 0.0000027781, 0.0000027781, + 0.0000027764, 0.0000027747, 0.0000027737, 0.0000027742, 0.0000027784, + 0.0000027866, 0.0000027947, 0.0000027919, 0.0000027756, 0.0000027679, + 0.0000027709, 0.0000027720, 0.0000027716, 0.0000027756, 0.0000027806, + 0.0000027823, 0.0000027810, 0.0000027771, 0.0000027732, 0.0000027703, + 0.0000027682, 0.0000027684, 0.0000027680, 0.0000027580, 0.0000027423, + 0.0000027393, 0.0000027479, 0.0000027544, 0.0000027513, 0.0000027472, + 0.0000027469, 0.0000027487, 0.0000027507, 0.0000027429, 0.0000027245, + 0.0000027164, 0.0000027190, 0.0000027247, 0.0000027266, 0.0000027206, + 0.0000027143, 0.0000027164, 0.0000027150, 0.0000027016, 0.0000026934, + 0.0000026965, 0.0000027005, 0.0000027040, 0.0000027083, 0.0000027063, + 0.0000026987, 0.0000026954, 0.0000026976, 0.0000027025, 0.0000027104, + 0.0000027220, 0.0000027305, 0.0000027326, 0.0000027322, 0.0000027269, + 0.0000027161, 0.0000027058, 0.0000027023, 0.0000027062, 0.0000027141, + 0.0000027197, 0.0000027225, 0.0000027246, 0.0000027259, 0.0000027239, + 0.0000027206, 0.0000027160, 0.0000027122, 0.0000027072, 0.0000026993, + 0.0000026918, 0.0000026845, 0.0000026742, 0.0000026636, 0.0000026581, + 0.0000026567, 0.0000026547, 0.0000026524, 0.0000026517, 0.0000026536, + 0.0000026565, 0.0000026578, 0.0000026548, 0.0000026428, 0.0000026222, + 0.0000025969, 0.0000025805, 0.0000025787, 0.0000025877, 0.0000026185, + 0.0000026589, 0.0000026737, 0.0000026654, 0.0000026592, 0.0000026641, + 0.0000026702, 0.0000026772, 0.0000026845, 0.0000026776, 0.0000026508, + 0.0000026252, 0.0000026073, 0.0000026008, 0.0000026060, 0.0000026122, + 0.0000026139, 0.0000026098, 0.0000026091, 0.0000026100, 0.0000026137, + 0.0000026179, 0.0000026278, 0.0000026398, 0.0000026543, 0.0000026761, + 0.0000026994, 0.0000027240, 0.0000027463, 0.0000027641, 0.0000027816, + 0.0000027965, 0.0000028068, 0.0000028140, 0.0000028173, 0.0000028234, + 0.0000028286, 0.0000028298, 0.0000028302, 0.0000028260, 0.0000028150, + 0.0000027978, 0.0000027809, 0.0000027688, 0.0000027560, 0.0000027432, + 0.0000027372, 0.0000027382, 0.0000027405, 0.0000027423, 0.0000027435, + 0.0000027481, 0.0000027538, 0.0000027695, 0.0000027790, 0.0000027883, + 0.0000027911, 0.0000027917, 0.0000027831, 0.0000027817, 0.0000027840, + 0.0000027941, 0.0000027875, 0.0000027713, 0.0000027631, 0.0000027519, + 0.0000027540, 0.0000027566, 0.0000027526, 0.0000027463, 0.0000027351, + 0.0000027270, 0.0000027120, 0.0000026964, 0.0000026995, 0.0000027051, + 0.0000026983, 0.0000026877, 0.0000026787, 0.0000026693, 0.0000026585, + 0.0000026471, 0.0000026359, 0.0000026270, 0.0000026224, 0.0000026221, + 0.0000026258, 0.0000026317, 0.0000026348, 0.0000026325, 0.0000026270, + 0.0000026222, 0.0000026158, 0.0000026031, 0.0000025889, 0.0000025785, + 0.0000025707, 0.0000025690, 0.0000025744, 0.0000025826, 0.0000025909, + 0.0000025958, 0.0000025948, 0.0000025901, 0.0000025863, 0.0000025859, + 0.0000025870, 0.0000025937, 0.0000026017, 0.0000026040, 0.0000026038, + 0.0000026004, 0.0000025954, 0.0000025891, 0.0000025823, 0.0000025760, + 0.0000025710, 0.0000025674, 0.0000025662, 0.0000025668, 0.0000025678, + 0.0000025680, 0.0000025685, 0.0000025693, 0.0000025707, 0.0000025722, + 0.0000025739, 0.0000025760, 0.0000025773, 0.0000025756, 0.0000025713, + 0.0000025639, 0.0000025544, 0.0000025442, 0.0000025335, 0.0000025239, + 0.0000025194, 0.0000025193, 0.0000025182, 0.0000025128, 0.0000025040, + 0.0000024963, 0.0000024914, 0.0000024855, 0.0000024801, 0.0000024796, + 0.0000024855, 0.0000024927, 0.0000024952, 0.0000024945, 0.0000024964, + 0.0000025047, 0.0000025174, 0.0000025164, 0.0000025062, 0.0000025105, + 0.0000025309, 0.0000025377, 0.0000025360, 0.0000025358, 0.0000025351, + 0.0000025318, 0.0000025299, 0.0000025375, 0.0000025484, 0.0000025506, + 0.0000025538, 0.0000025814, 0.0000026154, 0.0000026225, 0.0000026179, + 0.0000026083, 0.0000025992, 0.0000025932, 0.0000025886, 0.0000025848, + 0.0000025840, 0.0000025873, 0.0000025921, 0.0000025978, 0.0000026028, + 0.0000026057, 0.0000026065, 0.0000026075, 0.0000026106, 0.0000026168, + 0.0000026293, 0.0000026475, 0.0000026620, 0.0000026672, 0.0000026673, + 0.0000026680, 0.0000026700, 0.0000026727, 0.0000026760, 0.0000026796, + 0.0000026845, 0.0000026901, 0.0000027005, 0.0000027113, 0.0000027166, + 0.0000027184, 0.0000027154, 0.0000027098, 0.0000027069, 0.0000027095, + 0.0000027274, 0.0000027494, 0.0000027556, 0.0000027857, 0.0000028311, + 0.0000028327, 0.0000028248, 0.0000028166, 0.0000028115, 0.0000028168, + 0.0000028297, 0.0000028437, 0.0000028435, 0.0000028280, 0.0000028172, + 0.0000028142, 0.0000028140, 0.0000028096, 0.0000027950, 0.0000027910, + 0.0000027941, 0.0000027937, 0.0000027940, 0.0000027995, 0.0000028027, + 0.0000028025, 0.0000028031, 0.0000028049, 0.0000028098, 0.0000028158, + 0.0000028217, 0.0000028284, 0.0000028371, 0.0000028470, 0.0000028558, + 0.0000028664, 0.0000028763, 0.0000028843, 0.0000028923, 0.0000028991, + 0.0000029058, 0.0000029110, 0.0000029145, 0.0000029161, 0.0000029147, + 0.0000029102, 0.0000029038, 0.0000028960, 0.0000028874, 0.0000028802, + 0.0000028751, 0.0000028724, 0.0000028719, 0.0000028737, 0.0000028769, + 0.0000028793, 0.0000028810, 0.0000028804, 0.0000028798, 0.0000028813, + 0.0000028852, 0.0000028941, 0.0000029051, 0.0000029146, 0.0000029220, + 0.0000029285, 0.0000029306, 0.0000029293, 0.0000029278, 0.0000029282, + 0.0000029300, 0.0000029281, 0.0000029155, 0.0000028910, 0.0000028673, + 0.0000028583, 0.0000028600, 0.0000028663, 0.0000028651, 0.0000028661, + 0.0000028788, 0.0000028991, 0.0000029201, 0.0000029306, 0.0000029329, + 0.0000029289, 0.0000029195, 0.0000029129, 0.0000029116, 0.0000029116, + 0.0000029114, 0.0000029100, 0.0000029064, 0.0000029007, 0.0000028953, + 0.0000028916, 0.0000028900, 0.0000028890, 0.0000028866, 0.0000028839, + 0.0000028814, 0.0000028790, 0.0000028771, 0.0000028761, 0.0000028752, + 0.0000028748, 0.0000028735, 0.0000028716, 0.0000028694, 0.0000028682, + 0.0000028673, 0.0000028673, 0.0000028677, 0.0000028677, 0.0000028661, + 0.0000028626, 0.0000028582, 0.0000028553, 0.0000028526, 0.0000028480, + 0.0000028433, 0.0000028397, 0.0000028368, 0.0000028339, 0.0000028301, + 0.0000028244, 0.0000028168, 0.0000028109, 0.0000028090, 0.0000028100, + 0.0000028138, 0.0000028170, 0.0000028179, 0.0000028180, 0.0000028178, + 0.0000028185, 0.0000028204, 0.0000028217, 0.0000028209, 0.0000028189, + 0.0000028178, 0.0000028186, 0.0000028211, 0.0000028239, 0.0000028256, + 0.0000028262, 0.0000028260, 0.0000028255, 0.0000028242, 0.0000028205, + 0.0000028158, 0.0000028143, 0.0000028163, 0.0000028191, 0.0000028200, + 0.0000028179, 0.0000028128, 0.0000028100, 0.0000028116, 0.0000028191, + 0.0000028305, 0.0000028407, 0.0000028464, 0.0000028462, 0.0000028395, + 0.0000028286, 0.0000028202, 0.0000028158, 0.0000028139, 0.0000028138, + 0.0000028132, 0.0000028119, 0.0000028121, 0.0000028131, 0.0000028134, + 0.0000028139, 0.0000028163, 0.0000028217, 0.0000028253, 0.0000028254, + 0.0000028228, 0.0000028193, 0.0000028153, 0.0000028117, 0.0000028095, + 0.0000028079, 0.0000028067, 0.0000028071, 0.0000028092, 0.0000028094, + 0.0000028073, 0.0000028036, 0.0000027976, 0.0000027893, 0.0000027856, + 0.0000027902, 0.0000028010, 0.0000028120, 0.0000028194, 0.0000028229, + 0.0000028165, 0.0000028005, 0.0000027797, 0.0000027555, 0.0000027376, + 0.0000027246, 0.0000027224, 0.0000027231, 0.0000027307, 0.0000027387, + 0.0000027455, 0.0000027541, 0.0000027649, 0.0000027751, 0.0000027836, + 0.0000027904, 0.0000027946, 0.0000027967, 0.0000027992, 0.0000028037, + 0.0000028074, 0.0000028072, 0.0000028017, 0.0000027947, 0.0000027895, + 0.0000027862, 0.0000027861, 0.0000027896, 0.0000027976, 0.0000028050, + 0.0000028087, 0.0000028078, 0.0000028040, 0.0000027976, 0.0000027883, + 0.0000027799, 0.0000027780, 0.0000027836, 0.0000027902, 0.0000027962, + 0.0000028024, 0.0000028059, 0.0000028056, 0.0000028012, 0.0000027959, + 0.0000027910, 0.0000027879, 0.0000027868, 0.0000027873, 0.0000027934, + 0.0000028088, 0.0000028286, 0.0000028447, 0.0000028549, 0.0000028624, + 0.0000028690, 0.0000028715, 0.0000028700, 0.0000028647, 0.0000028600, + 0.0000028539, 0.0000028463, 0.0000028340, 0.0000028217, 0.0000028127, + 0.0000028096, 0.0000028109, 0.0000028170, 0.0000028203, 0.0000028178, + 0.0000028100, 0.0000028093, 0.0000028182, 0.0000028082, 0.0000028096, + 0.0000028446, 0.0000028674, 0.0000028728, 0.0000028658, 0.0000028522, + 0.0000028473, 0.0000028486, 0.0000028481, 0.0000028473, 0.0000028485, + 0.0000028480, 0.0000028404, 0.0000028271, 0.0000028140, 0.0000028037, + 0.0000027970, 0.0000027973, 0.0000027965, 0.0000027926, 0.0000027936, + 0.0000027987, 0.0000028087, 0.0000028235, 0.0000028358, 0.0000028425, + 0.0000028503, 0.0000028606, 0.0000028658, 0.0000028681, 0.0000028669, + 0.0000028656, 0.0000028658, 0.0000028692, 0.0000028760, 0.0000028857, + 0.0000028934, 0.0000028953, 0.0000028931, 0.0000028904, 0.0000028926, + 0.0000029015, 0.0000029082, 0.0000029109, 0.0000029149, 0.0000029138, + 0.0000029058, 0.0000028916, 0.0000028759, 0.0000028586, 0.0000028457, + 0.0000028400, 0.0000028356, 0.0000028337, 0.0000028379, 0.0000028578, + 0.0000028765, 0.0000028713, 0.0000028413, 0.0000028318, 0.0000028354, + 0.0000028273, 0.0000028060, 0.0000028024, 0.0000027969, 0.0000027859, + 0.0000027778, 0.0000027720, 0.0000027669, 0.0000027617, 0.0000027576, + 0.0000027543, 0.0000027509, 0.0000027475, 0.0000027462, 0.0000027480, + 0.0000027516, 0.0000027507, 0.0000027466, 0.0000027429, 0.0000027425, + 0.0000027447, 0.0000027481, 0.0000027482, 0.0000027462, 0.0000027460, + 0.0000027492, 0.0000027499, 0.0000027450, 0.0000027353, 0.0000027279, + 0.0000027241, 0.0000027223, 0.0000027219, 0.0000027221, 0.0000027223, + 0.0000027229, 0.0000027262, 0.0000027306, 0.0000027336, 0.0000027337, + 0.0000027311, 0.0000027260, 0.0000027195, 0.0000027138, 0.0000027118, + 0.0000027137, 0.0000027188, 0.0000027248, 0.0000027306, 0.0000027359, + 0.0000027404, 0.0000027434, 0.0000027441, 0.0000027431, 0.0000027391, + 0.0000027321, 0.0000027244, 0.0000027186, 0.0000027159, 0.0000027158, + 0.0000027172, 0.0000027185, 0.0000027188, 0.0000027174, 0.0000027139, + 0.0000027086, 0.0000027034, 0.0000027002, 0.0000026989, 0.0000026982, + 0.0000026978, 0.0000026966, 0.0000026935, 0.0000026897, 0.0000026871, + 0.0000026858, 0.0000026849, 0.0000026840, 0.0000026832, 0.0000026820, + 0.0000026797, 0.0000026755, 0.0000026693, 0.0000026633, 0.0000026586, + 0.0000026550, 0.0000026515, 0.0000026477, 0.0000026443, 0.0000026418, + 0.0000026407, 0.0000026414, 0.0000026443, 0.0000026480, 0.0000026489, + 0.0000026480, 0.0000026471, 0.0000026502, 0.0000026540, 0.0000026569, + 0.0000026630, 0.0000026718, 0.0000026800, 0.0000026881, 0.0000026975, + 0.0000027066, 0.0000027125, 0.0000027161, 0.0000027211, 0.0000027276, + 0.0000027336, 0.0000027404, 0.0000027487, 0.0000027552, 0.0000027597, + 0.0000027654, 0.0000027737, 0.0000027827, 0.0000027898, 0.0000027979, + 0.0000028111, 0.0000028302, 0.0000028493, 0.0000028617, 0.0000028667, + 0.0000028703, 0.0000028766, 0.0000028886, 0.0000029026, 0.0000029129, + 0.0000029170, 0.0000029150, 0.0000029109, 0.0000029088, 0.0000029089, + 0.0000029092, 0.0000029078, 0.0000029039, 0.0000028988, 0.0000028934, + 0.0000028879, 0.0000028838, 0.0000028807, 0.0000028782, 0.0000028767, + 0.0000028760, 0.0000028754, 0.0000028749, 0.0000028747, 0.0000028741, + 0.0000028713, 0.0000028657, 0.0000028615, 0.0000028606, 0.0000028607, + 0.0000028600, 0.0000028577, 0.0000028556, 0.0000028535, 0.0000028496, + 0.0000028445, 0.0000028391, 0.0000028343, 0.0000028306, 0.0000028294, + 0.0000028317, 0.0000028372, 0.0000028409, 0.0000028415, 0.0000028398, + 0.0000028367, 0.0000028355, 0.0000028349, 0.0000028351, 0.0000028372, + 0.0000028400, 0.0000028411, 0.0000028399, 0.0000028376, 0.0000028361, + 0.0000028374, 0.0000028419, 0.0000028458, 0.0000028453, 0.0000028408, + 0.0000028320, 0.0000028205, 0.0000028112, 0.0000028058, 0.0000028029, + 0.0000028025, 0.0000028056, 0.0000028120, 0.0000028171, 0.0000028179, + 0.0000028156, 0.0000028133, 0.0000028132, 0.0000028167, 0.0000028219, + 0.0000028265, 0.0000028283, 0.0000028280, 0.0000028241, 0.0000028183, + 0.0000028122, 0.0000028067, 0.0000028015, 0.0000027965, 0.0000027928, + 0.0000027911, 0.0000027902, 0.0000027891, 0.0000027895, 0.0000027912, + 0.0000027920, 0.0000027906, 0.0000027868, 0.0000027831, 0.0000027797, + 0.0000027779, 0.0000027790, 0.0000027860, 0.0000027947, 0.0000027915, + 0.0000027753, 0.0000027685, 0.0000027707, 0.0000027704, 0.0000027689, + 0.0000027709, 0.0000027746, 0.0000027760, 0.0000027752, 0.0000027730, + 0.0000027695, 0.0000027674, 0.0000027689, 0.0000027664, 0.0000027524, + 0.0000027403, 0.0000027414, 0.0000027475, 0.0000027455, 0.0000027370, + 0.0000027317, 0.0000027321, 0.0000027375, 0.0000027470, 0.0000027463, + 0.0000027292, 0.0000027162, 0.0000027173, 0.0000027231, 0.0000027271, + 0.0000027230, 0.0000027164, 0.0000027180, 0.0000027192, 0.0000027077, + 0.0000026957, 0.0000026957, 0.0000027003, 0.0000027034, 0.0000027081, + 0.0000027107, 0.0000027059, 0.0000026974, 0.0000026954, 0.0000026989, + 0.0000027034, 0.0000027114, 0.0000027232, 0.0000027311, 0.0000027321, + 0.0000027303, 0.0000027238, 0.0000027137, 0.0000027035, 0.0000027001, + 0.0000027029, 0.0000027097, 0.0000027142, 0.0000027175, 0.0000027203, + 0.0000027221, 0.0000027218, 0.0000027197, 0.0000027159, 0.0000027125, + 0.0000027070, 0.0000026998, 0.0000026931, 0.0000026855, 0.0000026743, + 0.0000026636, 0.0000026580, 0.0000026561, 0.0000026536, 0.0000026503, + 0.0000026488, 0.0000026510, 0.0000026548, 0.0000026566, 0.0000026553, + 0.0000026458, 0.0000026279, 0.0000026042, 0.0000025813, 0.0000025726, + 0.0000025761, 0.0000025956, 0.0000026349, 0.0000026673, 0.0000026690, + 0.0000026565, 0.0000026567, 0.0000026657, 0.0000026728, 0.0000026790, + 0.0000026790, 0.0000026642, 0.0000026358, 0.0000026157, 0.0000026040, + 0.0000025984, 0.0000025991, 0.0000026003, 0.0000026003, 0.0000026036, + 0.0000026079, 0.0000026105, 0.0000026090, 0.0000026145, 0.0000026174, + 0.0000026224, 0.0000026325, 0.0000026464, 0.0000026715, 0.0000027074, + 0.0000027388, 0.0000027608, 0.0000027800, 0.0000027948, 0.0000028067, + 0.0000028134, 0.0000028198, 0.0000028274, 0.0000028297, 0.0000028301, + 0.0000028287, 0.0000028207, 0.0000028031, 0.0000027819, 0.0000027704, + 0.0000027630, 0.0000027522, 0.0000027453, 0.0000027447, 0.0000027462, + 0.0000027484, 0.0000027496, 0.0000027507, 0.0000027608, 0.0000027749, + 0.0000027812, 0.0000027891, 0.0000027904, 0.0000027892, 0.0000027807, + 0.0000027826, 0.0000027862, 0.0000027955, 0.0000027867, 0.0000027714, + 0.0000027610, 0.0000027497, 0.0000027536, 0.0000027551, 0.0000027519, + 0.0000027433, 0.0000027305, 0.0000027235, 0.0000027085, 0.0000026931, + 0.0000026907, 0.0000026973, 0.0000026986, 0.0000026936, 0.0000026864, + 0.0000026785, 0.0000026701, 0.0000026601, 0.0000026493, 0.0000026391, + 0.0000026312, 0.0000026266, 0.0000026250, 0.0000026269, 0.0000026308, + 0.0000026345, 0.0000026338, 0.0000026280, 0.0000026224, 0.0000026137, + 0.0000025994, 0.0000025858, 0.0000025759, 0.0000025712, 0.0000025736, + 0.0000025805, 0.0000025886, 0.0000025935, 0.0000025930, 0.0000025893, + 0.0000025878, 0.0000025898, 0.0000025927, 0.0000026001, 0.0000026082, + 0.0000026101, 0.0000026097, 0.0000026064, 0.0000026009, 0.0000025945, + 0.0000025882, 0.0000025829, 0.0000025786, 0.0000025749, 0.0000025732, + 0.0000025741, 0.0000025744, 0.0000025733, 0.0000025721, 0.0000025719, + 0.0000025729, 0.0000025743, 0.0000025754, 0.0000025764, 0.0000025777, + 0.0000025771, 0.0000025738, 0.0000025671, 0.0000025582, 0.0000025484, + 0.0000025382, 0.0000025289, 0.0000025231, 0.0000025213, 0.0000025206, + 0.0000025169, 0.0000025094, 0.0000025014, 0.0000024957, 0.0000024900, + 0.0000024843, 0.0000024803, 0.0000024769, 0.0000024797, 0.0000024886, + 0.0000024963, 0.0000024982, 0.0000024970, 0.0000025003, 0.0000025112, + 0.0000025186, 0.0000025122, 0.0000025106, 0.0000025286, 0.0000025442, + 0.0000025462, 0.0000025427, 0.0000025400, 0.0000025338, 0.0000025274, + 0.0000025330, 0.0000025494, 0.0000025560, 0.0000025601, 0.0000025875, + 0.0000026224, 0.0000026281, 0.0000026217, 0.0000026113, 0.0000026031, + 0.0000025971, 0.0000025900, 0.0000025824, 0.0000025770, 0.0000025784, + 0.0000025850, 0.0000025918, 0.0000025977, 0.0000026021, 0.0000026047, + 0.0000026066, 0.0000026089, 0.0000026120, 0.0000026176, 0.0000026303, + 0.0000026476, 0.0000026604, 0.0000026645, 0.0000026652, 0.0000026660, + 0.0000026689, 0.0000026723, 0.0000026780, 0.0000026835, 0.0000026890, + 0.0000026991, 0.0000027095, 0.0000027152, 0.0000027162, 0.0000027133, + 0.0000027093, 0.0000027045, 0.0000027084, 0.0000027281, 0.0000027463, + 0.0000027510, 0.0000027829, 0.0000028284, 0.0000028303, 0.0000028228, + 0.0000028165, 0.0000028110, 0.0000028146, 0.0000028283, 0.0000028443, + 0.0000028421, 0.0000028232, 0.0000028135, 0.0000028119, 0.0000028118, + 0.0000028082, 0.0000027932, 0.0000027896, 0.0000027911, 0.0000027904, + 0.0000027929, 0.0000027989, 0.0000028017, 0.0000028016, 0.0000028039, + 0.0000028095, 0.0000028181, 0.0000028252, 0.0000028314, 0.0000028374, + 0.0000028456, 0.0000028559, 0.0000028648, 0.0000028744, 0.0000028814, + 0.0000028863, 0.0000028929, 0.0000028969, 0.0000028990, 0.0000029002, + 0.0000028997, 0.0000028983, 0.0000028950, 0.0000028910, 0.0000028869, + 0.0000028818, 0.0000028768, 0.0000028717, 0.0000028686, 0.0000028667, + 0.0000028661, 0.0000028672, 0.0000028680, 0.0000028668, 0.0000028661, + 0.0000028670, 0.0000028722, 0.0000028817, 0.0000028921, 0.0000029019, + 0.0000029095, 0.0000029159, 0.0000029233, 0.0000029303, 0.0000029333, + 0.0000029327, 0.0000029314, 0.0000029317, 0.0000029316, 0.0000029265, + 0.0000029129, 0.0000028906, 0.0000028650, 0.0000028552, 0.0000028602, + 0.0000028667, 0.0000028625, 0.0000028635, 0.0000028770, 0.0000028982, + 0.0000029184, 0.0000029280, 0.0000029303, 0.0000029275, 0.0000029207, + 0.0000029141, 0.0000029118, 0.0000029101, 0.0000029084, 0.0000029070, + 0.0000029034, 0.0000028983, 0.0000028915, 0.0000028872, 0.0000028829, + 0.0000028792, 0.0000028744, 0.0000028694, 0.0000028650, 0.0000028615, + 0.0000028590, 0.0000028579, 0.0000028576, 0.0000028585, 0.0000028588, + 0.0000028586, 0.0000028582, 0.0000028586, 0.0000028591, 0.0000028608, + 0.0000028637, 0.0000028661, 0.0000028666, 0.0000028647, 0.0000028613, + 0.0000028590, 0.0000028575, 0.0000028541, 0.0000028498, 0.0000028460, + 0.0000028430, 0.0000028401, 0.0000028371, 0.0000028326, 0.0000028273, + 0.0000028224, 0.0000028188, 0.0000028167, 0.0000028177, 0.0000028199, + 0.0000028205, 0.0000028196, 0.0000028173, 0.0000028163, 0.0000028183, + 0.0000028221, 0.0000028234, 0.0000028214, 0.0000028177, 0.0000028157, + 0.0000028164, 0.0000028192, 0.0000028220, 0.0000028225, 0.0000028214, + 0.0000028211, 0.0000028225, 0.0000028241, 0.0000028232, 0.0000028209, + 0.0000028193, 0.0000028196, 0.0000028209, 0.0000028208, 0.0000028177, + 0.0000028139, 0.0000028130, 0.0000028158, 0.0000028240, 0.0000028340, + 0.0000028424, 0.0000028455, 0.0000028425, 0.0000028341, 0.0000028251, + 0.0000028183, 0.0000028120, 0.0000028077, 0.0000028062, 0.0000028057, + 0.0000028058, 0.0000028069, 0.0000028086, 0.0000028102, 0.0000028114, + 0.0000028141, 0.0000028205, 0.0000028253, 0.0000028250, 0.0000028219, + 0.0000028169, 0.0000028119, 0.0000028081, 0.0000028072, 0.0000028079, + 0.0000028086, 0.0000028090, 0.0000028092, 0.0000028067, 0.0000028039, + 0.0000028014, 0.0000027987, 0.0000027934, 0.0000027898, 0.0000027910, + 0.0000027961, 0.0000028067, 0.0000028176, 0.0000028234, 0.0000028225, + 0.0000028154, 0.0000028048, 0.0000027896, 0.0000027717, 0.0000027501, + 0.0000027327, 0.0000027219, 0.0000027204, 0.0000027228, 0.0000027285, + 0.0000027382, 0.0000027508, 0.0000027616, 0.0000027704, 0.0000027799, + 0.0000027890, 0.0000027953, 0.0000027972, 0.0000027981, 0.0000027998, + 0.0000027996, 0.0000027944, 0.0000027869, 0.0000027809, 0.0000027778, + 0.0000027773, 0.0000027797, 0.0000027871, 0.0000027974, 0.0000028050, + 0.0000028046, 0.0000028005, 0.0000027957, 0.0000027876, 0.0000027774, + 0.0000027705, 0.0000027711, 0.0000027749, 0.0000027793, 0.0000027854, + 0.0000027937, 0.0000028019, 0.0000028054, 0.0000028057, 0.0000027985, + 0.0000027892, 0.0000027828, 0.0000027784, 0.0000027781, 0.0000027852, + 0.0000028002, 0.0000028181, 0.0000028356, 0.0000028513, 0.0000028647, + 0.0000028706, 0.0000028694, 0.0000028654, 0.0000028620, 0.0000028567, + 0.0000028485, 0.0000028361, 0.0000028234, 0.0000028130, 0.0000028106, + 0.0000028124, 0.0000028180, 0.0000028232, 0.0000028223, 0.0000028143, + 0.0000028116, 0.0000028214, 0.0000028129, 0.0000028060, 0.0000028378, + 0.0000028647, 0.0000028719, 0.0000028668, 0.0000028538, 0.0000028479, + 0.0000028487, 0.0000028495, 0.0000028490, 0.0000028480, 0.0000028425, + 0.0000028294, 0.0000028141, 0.0000028025, 0.0000027955, 0.0000027892, + 0.0000027924, 0.0000027967, 0.0000027953, 0.0000027952, 0.0000027993, + 0.0000028084, 0.0000028205, 0.0000028300, 0.0000028365, 0.0000028447, + 0.0000028552, 0.0000028630, 0.0000028672, 0.0000028666, 0.0000028654, + 0.0000028634, 0.0000028626, 0.0000028656, 0.0000028744, 0.0000028856, + 0.0000028917, 0.0000028917, 0.0000028887, 0.0000028867, 0.0000028911, + 0.0000029023, 0.0000029086, 0.0000029104, 0.0000029119, 0.0000029119, + 0.0000029052, 0.0000028930, 0.0000028751, 0.0000028553, 0.0000028431, + 0.0000028377, 0.0000028348, 0.0000028384, 0.0000028594, 0.0000028768, + 0.0000028659, 0.0000028361, 0.0000028318, 0.0000028353, 0.0000028264, + 0.0000028049, 0.0000027978, 0.0000027913, 0.0000027826, 0.0000027768, + 0.0000027735, 0.0000027721, 0.0000027691, 0.0000027631, 0.0000027576, + 0.0000027537, 0.0000027495, 0.0000027457, 0.0000027441, 0.0000027466, + 0.0000027503, 0.0000027501, 0.0000027472, 0.0000027437, 0.0000027427, + 0.0000027436, 0.0000027457, 0.0000027466, 0.0000027440, 0.0000027412, + 0.0000027425, 0.0000027482, 0.0000027518, 0.0000027505, 0.0000027423, + 0.0000027322, 0.0000027255, 0.0000027232, 0.0000027230, 0.0000027239, + 0.0000027248, 0.0000027253, 0.0000027265, 0.0000027294, 0.0000027321, + 0.0000027330, 0.0000027321, 0.0000027298, 0.0000027267, 0.0000027238, + 0.0000027220, 0.0000027223, 0.0000027243, 0.0000027267, 0.0000027282, + 0.0000027298, 0.0000027330, 0.0000027382, 0.0000027436, 0.0000027470, + 0.0000027474, 0.0000027457, 0.0000027405, 0.0000027342, 0.0000027291, + 0.0000027262, 0.0000027247, 0.0000027233, 0.0000027213, 0.0000027183, + 0.0000027136, 0.0000027088, 0.0000027063, 0.0000027053, 0.0000027051, + 0.0000027050, 0.0000027037, 0.0000027008, 0.0000026972, 0.0000026937, + 0.0000026904, 0.0000026875, 0.0000026847, 0.0000026823, 0.0000026801, + 0.0000026773, 0.0000026734, 0.0000026699, 0.0000026681, 0.0000026661, + 0.0000026630, 0.0000026588, 0.0000026543, 0.0000026508, 0.0000026489, + 0.0000026481, 0.0000026486, 0.0000026510, 0.0000026539, 0.0000026544, + 0.0000026516, 0.0000026466, 0.0000026416, 0.0000026398, 0.0000026407, + 0.0000026458, 0.0000026535, 0.0000026614, 0.0000026704, 0.0000026801, + 0.0000026894, 0.0000026955, 0.0000027002, 0.0000027078, 0.0000027176, + 0.0000027269, 0.0000027367, 0.0000027470, 0.0000027547, 0.0000027593, + 0.0000027640, 0.0000027702, 0.0000027777, 0.0000027863, 0.0000027964, + 0.0000028071, 0.0000028204, 0.0000028366, 0.0000028520, 0.0000028625, + 0.0000028659, 0.0000028661, 0.0000028692, 0.0000028775, 0.0000028897, + 0.0000029008, 0.0000029054, 0.0000029051, 0.0000029055, 0.0000029070, + 0.0000029080, 0.0000029076, 0.0000029056, 0.0000029026, 0.0000028982, + 0.0000028911, 0.0000028838, 0.0000028779, 0.0000028735, 0.0000028713, + 0.0000028712, 0.0000028722, 0.0000028730, 0.0000028733, 0.0000028730, + 0.0000028712, 0.0000028681, 0.0000028656, 0.0000028648, 0.0000028645, + 0.0000028630, 0.0000028595, 0.0000028560, 0.0000028528, 0.0000028487, + 0.0000028433, 0.0000028377, 0.0000028335, 0.0000028310, 0.0000028320, + 0.0000028352, 0.0000028414, 0.0000028468, 0.0000028490, 0.0000028475, + 0.0000028440, 0.0000028414, 0.0000028391, 0.0000028379, 0.0000028390, + 0.0000028427, 0.0000028467, 0.0000028480, 0.0000028464, 0.0000028435, + 0.0000028420, 0.0000028436, 0.0000028469, 0.0000028474, 0.0000028444, + 0.0000028370, 0.0000028269, 0.0000028178, 0.0000028119, 0.0000028087, + 0.0000028074, 0.0000028077, 0.0000028101, 0.0000028144, 0.0000028163, + 0.0000028150, 0.0000028131, 0.0000028129, 0.0000028156, 0.0000028196, + 0.0000028228, 0.0000028234, 0.0000028219, 0.0000028180, 0.0000028136, + 0.0000028097, 0.0000028067, 0.0000028039, 0.0000028008, 0.0000027974, + 0.0000027948, 0.0000027932, 0.0000027920, 0.0000027922, 0.0000027957, + 0.0000027999, 0.0000028016, 0.0000028006, 0.0000027952, 0.0000027884, + 0.0000027818, 0.0000027784, 0.0000027788, 0.0000027858, 0.0000027946, + 0.0000027888, 0.0000027721, 0.0000027668, 0.0000027699, 0.0000027674, + 0.0000027647, 0.0000027664, 0.0000027693, 0.0000027700, 0.0000027686, + 0.0000027651, 0.0000027652, 0.0000027680, 0.0000027626, 0.0000027469, + 0.0000027406, 0.0000027447, 0.0000027430, 0.0000027329, 0.0000027249, + 0.0000027244, 0.0000027251, 0.0000027313, 0.0000027444, 0.0000027498, + 0.0000027337, 0.0000027169, 0.0000027157, 0.0000027216, 0.0000027269, + 0.0000027251, 0.0000027183, 0.0000027185, 0.0000027215, 0.0000027149, + 0.0000027007, 0.0000026963, 0.0000027004, 0.0000027046, 0.0000027076, + 0.0000027126, 0.0000027136, 0.0000027067, 0.0000026990, 0.0000026979, + 0.0000027005, 0.0000027039, 0.0000027118, 0.0000027240, 0.0000027314, + 0.0000027316, 0.0000027281, 0.0000027218, 0.0000027128, 0.0000027034, + 0.0000026986, 0.0000026997, 0.0000027052, 0.0000027098, 0.0000027127, + 0.0000027147, 0.0000027158, 0.0000027161, 0.0000027152, 0.0000027134, + 0.0000027105, 0.0000027057, 0.0000027001, 0.0000026947, 0.0000026862, + 0.0000026741, 0.0000026637, 0.0000026582, 0.0000026555, 0.0000026522, + 0.0000026477, 0.0000026459, 0.0000026479, 0.0000026522, 0.0000026553, + 0.0000026554, 0.0000026483, 0.0000026333, 0.0000026110, 0.0000025845, + 0.0000025679, 0.0000025677, 0.0000025788, 0.0000026084, 0.0000026494, + 0.0000026665, 0.0000026581, 0.0000026524, 0.0000026592, 0.0000026674, + 0.0000026728, 0.0000026766, 0.0000026726, 0.0000026510, 0.0000026260, + 0.0000026126, 0.0000026038, 0.0000025973, 0.0000025915, 0.0000025895, + 0.0000025921, 0.0000025964, 0.0000025996, 0.0000026022, 0.0000026043, + 0.0000026058, 0.0000026108, 0.0000026158, 0.0000026213, 0.0000026312, + 0.0000026534, 0.0000026932, 0.0000027334, 0.0000027585, 0.0000027790, + 0.0000027955, 0.0000028073, 0.0000028138, 0.0000028251, 0.0000028286, + 0.0000028288, 0.0000028279, 0.0000028232, 0.0000028083, 0.0000027866, + 0.0000027722, 0.0000027661, 0.0000027609, 0.0000027572, 0.0000027559, + 0.0000027551, 0.0000027538, 0.0000027517, 0.0000027554, 0.0000027697, + 0.0000027776, 0.0000027847, 0.0000027900, 0.0000027902, 0.0000027849, + 0.0000027790, 0.0000027832, 0.0000027883, 0.0000027962, 0.0000027858, + 0.0000027709, 0.0000027582, 0.0000027475, 0.0000027527, 0.0000027529, + 0.0000027503, 0.0000027397, 0.0000027262, 0.0000027201, 0.0000027071, + 0.0000026947, 0.0000026868, 0.0000026870, 0.0000026914, 0.0000026929, + 0.0000026918, 0.0000026884, 0.0000026849, 0.0000026785, 0.0000026698, + 0.0000026587, 0.0000026471, 0.0000026380, 0.0000026321, 0.0000026298, + 0.0000026298, 0.0000026327, 0.0000026355, 0.0000026347, 0.0000026283, + 0.0000026197, 0.0000026084, 0.0000025949, 0.0000025836, 0.0000025765, + 0.0000025759, 0.0000025792, 0.0000025848, 0.0000025889, 0.0000025899, + 0.0000025894, 0.0000025898, 0.0000025931, 0.0000025974, 0.0000026048, + 0.0000026126, 0.0000026153, 0.0000026153, 0.0000026129, 0.0000026080, + 0.0000026013, 0.0000025950, 0.0000025900, 0.0000025864, 0.0000025838, + 0.0000025834, 0.0000025837, 0.0000025830, 0.0000025807, 0.0000025771, + 0.0000025749, 0.0000025748, 0.0000025755, 0.0000025762, 0.0000025762, + 0.0000025769, 0.0000025764, 0.0000025738, 0.0000025684, 0.0000025607, + 0.0000025521, 0.0000025430, 0.0000025349, 0.0000025292, 0.0000025262, + 0.0000025241, 0.0000025206, 0.0000025146, 0.0000025069, 0.0000024994, + 0.0000024908, 0.0000024833, 0.0000024807, 0.0000024815, 0.0000024812, + 0.0000024796, 0.0000024844, 0.0000024943, 0.0000024992, 0.0000025004, + 0.0000025010, 0.0000025059, 0.0000025163, 0.0000025187, 0.0000025146, + 0.0000025241, 0.0000025467, 0.0000025527, 0.0000025488, 0.0000025435, + 0.0000025343, 0.0000025254, 0.0000025299, 0.0000025513, 0.0000025618, + 0.0000025670, 0.0000025952, 0.0000026286, 0.0000026311, 0.0000026237, + 0.0000026149, 0.0000026097, 0.0000026042, 0.0000025958, 0.0000025850, + 0.0000025754, 0.0000025734, 0.0000025788, 0.0000025881, 0.0000025952, + 0.0000026000, 0.0000026030, 0.0000026056, 0.0000026085, 0.0000026109, + 0.0000026127, 0.0000026175, 0.0000026298, 0.0000026461, 0.0000026581, + 0.0000026621, 0.0000026645, 0.0000026676, 0.0000026721, 0.0000026781, + 0.0000026833, 0.0000026886, 0.0000026973, 0.0000027067, 0.0000027125, + 0.0000027136, 0.0000027121, 0.0000027073, 0.0000027014, 0.0000027072, + 0.0000027284, 0.0000027422, 0.0000027463, 0.0000027800, 0.0000028255, + 0.0000028275, 0.0000028196, 0.0000028152, 0.0000028117, 0.0000028156, + 0.0000028284, 0.0000028435, 0.0000028398, 0.0000028186, 0.0000028097, + 0.0000028099, 0.0000028103, 0.0000028082, 0.0000027934, 0.0000027882, + 0.0000027888, 0.0000027895, 0.0000027953, 0.0000028018, 0.0000028040, + 0.0000028047, 0.0000028081, 0.0000028165, 0.0000028257, 0.0000028324, + 0.0000028381, 0.0000028443, 0.0000028521, 0.0000028603, 0.0000028671, + 0.0000028733, 0.0000028762, 0.0000028763, 0.0000028790, 0.0000028812, + 0.0000028820, 0.0000028825, 0.0000028833, 0.0000028846, 0.0000028849, + 0.0000028836, 0.0000028806, 0.0000028764, 0.0000028713, 0.0000028657, + 0.0000028608, 0.0000028574, 0.0000028549, 0.0000028531, 0.0000028510, + 0.0000028496, 0.0000028526, 0.0000028602, 0.0000028716, 0.0000028834, + 0.0000028928, 0.0000029011, 0.0000029083, 0.0000029167, 0.0000029257, + 0.0000029332, 0.0000029365, 0.0000029363, 0.0000029345, 0.0000029340, + 0.0000029320, 0.0000029245, 0.0000029095, 0.0000028905, 0.0000028635, + 0.0000028523, 0.0000028595, 0.0000028663, 0.0000028600, 0.0000028607, + 0.0000028735, 0.0000028936, 0.0000029120, 0.0000029238, 0.0000029273, + 0.0000029264, 0.0000029219, 0.0000029168, 0.0000029131, 0.0000029091, + 0.0000029067, 0.0000029040, 0.0000029012, 0.0000028963, 0.0000028896, + 0.0000028833, 0.0000028761, 0.0000028697, 0.0000028613, 0.0000028536, + 0.0000028466, 0.0000028410, 0.0000028371, 0.0000028350, 0.0000028352, + 0.0000028364, 0.0000028375, 0.0000028385, 0.0000028396, 0.0000028413, + 0.0000028436, 0.0000028470, 0.0000028517, 0.0000028567, 0.0000028609, + 0.0000028625, 0.0000028616, 0.0000028611, 0.0000028610, 0.0000028595, + 0.0000028580, 0.0000028549, 0.0000028517, 0.0000028484, 0.0000028450, + 0.0000028414, 0.0000028371, 0.0000028338, 0.0000028309, 0.0000028273, + 0.0000028255, 0.0000028258, 0.0000028257, 0.0000028239, 0.0000028201, + 0.0000028162, 0.0000028161, 0.0000028199, 0.0000028238, 0.0000028242, + 0.0000028208, 0.0000028161, 0.0000028129, 0.0000028123, 0.0000028141, + 0.0000028177, 0.0000028199, 0.0000028203, 0.0000028205, 0.0000028224, + 0.0000028253, 0.0000028271, 0.0000028269, 0.0000028258, 0.0000028257, + 0.0000028258, 0.0000028244, 0.0000028215, 0.0000028189, 0.0000028186, + 0.0000028221, 0.0000028288, 0.0000028359, 0.0000028409, 0.0000028412, + 0.0000028360, 0.0000028283, 0.0000028221, 0.0000028152, 0.0000028077, + 0.0000028024, 0.0000028001, 0.0000027999, 0.0000028002, 0.0000028005, + 0.0000028020, 0.0000028047, 0.0000028067, 0.0000028102, 0.0000028173, + 0.0000028227, 0.0000028227, 0.0000028187, 0.0000028130, 0.0000028083, + 0.0000028071, 0.0000028086, 0.0000028097, 0.0000028095, 0.0000028088, + 0.0000028074, 0.0000028038, 0.0000028014, 0.0000028001, 0.0000027986, + 0.0000027966, 0.0000027947, 0.0000027937, 0.0000027965, 0.0000028032, + 0.0000028145, 0.0000028224, 0.0000028226, 0.0000028194, 0.0000028149, + 0.0000028111, 0.0000028042, 0.0000027893, 0.0000027670, 0.0000027424, + 0.0000027248, 0.0000027176, 0.0000027156, 0.0000027230, 0.0000027365, + 0.0000027492, 0.0000027590, 0.0000027695, 0.0000027816, 0.0000027928, + 0.0000027969, 0.0000027961, 0.0000027951, 0.0000027940, 0.0000027902, + 0.0000027828, 0.0000027749, 0.0000027706, 0.0000027693, 0.0000027712, + 0.0000027771, 0.0000027881, 0.0000027993, 0.0000028016, 0.0000027972, + 0.0000027918, 0.0000027851, 0.0000027759, 0.0000027671, 0.0000027613, + 0.0000027615, 0.0000027643, 0.0000027693, 0.0000027777, 0.0000027888, + 0.0000028001, 0.0000028070, 0.0000028032, 0.0000027935, 0.0000027817, + 0.0000027722, 0.0000027693, 0.0000027725, 0.0000027812, 0.0000027932, + 0.0000028089, 0.0000028286, 0.0000028494, 0.0000028615, 0.0000028643, + 0.0000028638, 0.0000028615, 0.0000028565, 0.0000028480, 0.0000028359, + 0.0000028243, 0.0000028138, 0.0000028112, 0.0000028145, 0.0000028196, + 0.0000028262, 0.0000028267, 0.0000028186, 0.0000028146, 0.0000028242, + 0.0000028182, 0.0000028049, 0.0000028303, 0.0000028615, 0.0000028708, + 0.0000028669, 0.0000028556, 0.0000028505, 0.0000028514, 0.0000028517, + 0.0000028490, 0.0000028434, 0.0000028309, 0.0000028144, 0.0000028018, + 0.0000027951, 0.0000027913, 0.0000027833, 0.0000027860, 0.0000027951, + 0.0000027967, 0.0000027970, 0.0000028010, 0.0000028102, 0.0000028201, + 0.0000028263, 0.0000028306, 0.0000028391, 0.0000028487, 0.0000028578, + 0.0000028642, 0.0000028659, 0.0000028663, 0.0000028635, 0.0000028597, + 0.0000028586, 0.0000028630, 0.0000028743, 0.0000028843, 0.0000028873, + 0.0000028853, 0.0000028842, 0.0000028849, 0.0000028920, 0.0000029041, + 0.0000029086, 0.0000029067, 0.0000029093, 0.0000029096, 0.0000029046, + 0.0000028906, 0.0000028686, 0.0000028491, 0.0000028408, 0.0000028367, + 0.0000028403, 0.0000028621, 0.0000028762, 0.0000028596, 0.0000028318, + 0.0000028324, 0.0000028354, 0.0000028258, 0.0000028037, 0.0000027916, + 0.0000027837, 0.0000027773, 0.0000027747, 0.0000027760, 0.0000027802, + 0.0000027811, 0.0000027750, 0.0000027653, 0.0000027583, 0.0000027532, + 0.0000027482, 0.0000027433, 0.0000027412, 0.0000027435, 0.0000027486, + 0.0000027504, 0.0000027491, 0.0000027471, 0.0000027457, 0.0000027450, + 0.0000027450, 0.0000027450, 0.0000027438, 0.0000027410, 0.0000027397, + 0.0000027425, 0.0000027484, 0.0000027536, 0.0000027547, 0.0000027519, + 0.0000027434, 0.0000027331, 0.0000027260, 0.0000027240, 0.0000027253, + 0.0000027276, 0.0000027287, 0.0000027280, 0.0000027272, 0.0000027281, + 0.0000027306, 0.0000027332, 0.0000027349, 0.0000027362, 0.0000027355, + 0.0000027327, 0.0000027300, 0.0000027290, 0.0000027290, 0.0000027287, + 0.0000027284, 0.0000027299, 0.0000027345, 0.0000027408, 0.0000027465, + 0.0000027495, 0.0000027499, 0.0000027486, 0.0000027465, 0.0000027436, + 0.0000027395, 0.0000027345, 0.0000027299, 0.0000027255, 0.0000027208, + 0.0000027165, 0.0000027136, 0.0000027120, 0.0000027109, 0.0000027096, + 0.0000027079, 0.0000027061, 0.0000027033, 0.0000026996, 0.0000026959, + 0.0000026923, 0.0000026888, 0.0000026852, 0.0000026814, 0.0000026770, + 0.0000026735, 0.0000026714, 0.0000026711, 0.0000026707, 0.0000026689, + 0.0000026663, 0.0000026635, 0.0000026611, 0.0000026599, 0.0000026589, + 0.0000026584, 0.0000026586, 0.0000026590, 0.0000026590, 0.0000026564, + 0.0000026486, 0.0000026385, 0.0000026308, 0.0000026292, 0.0000026317, + 0.0000026372, 0.0000026440, 0.0000026524, 0.0000026623, 0.0000026722, + 0.0000026796, 0.0000026860, 0.0000026950, 0.0000027062, 0.0000027173, + 0.0000027294, 0.0000027422, 0.0000027526, 0.0000027595, 0.0000027651, + 0.0000027702, 0.0000027752, 0.0000027821, 0.0000027921, 0.0000028031, + 0.0000028131, 0.0000028226, 0.0000028341, 0.0000028462, 0.0000028540, + 0.0000028560, 0.0000028555, 0.0000028574, 0.0000028667, 0.0000028824, + 0.0000028963, 0.0000029034, 0.0000029062, 0.0000029077, 0.0000029082, + 0.0000029079, 0.0000029062, 0.0000029039, 0.0000028993, 0.0000028921, + 0.0000028835, 0.0000028758, 0.0000028701, 0.0000028674, 0.0000028677, + 0.0000028692, 0.0000028712, 0.0000028728, 0.0000028735, 0.0000028733, + 0.0000028724, 0.0000028711, 0.0000028694, 0.0000028670, 0.0000028635, + 0.0000028601, 0.0000028581, 0.0000028561, 0.0000028521, 0.0000028451, + 0.0000028387, 0.0000028337, 0.0000028309, 0.0000028333, 0.0000028382, + 0.0000028449, 0.0000028516, 0.0000028553, 0.0000028547, 0.0000028510, + 0.0000028463, 0.0000028416, 0.0000028387, 0.0000028393, 0.0000028436, + 0.0000028493, 0.0000028521, 0.0000028511, 0.0000028473, 0.0000028435, + 0.0000028425, 0.0000028451, 0.0000028482, 0.0000028487, 0.0000028454, + 0.0000028393, 0.0000028329, 0.0000028281, 0.0000028246, 0.0000028215, + 0.0000028193, 0.0000028182, 0.0000028181, 0.0000028178, 0.0000028157, + 0.0000028134, 0.0000028128, 0.0000028141, 0.0000028170, 0.0000028204, + 0.0000028226, 0.0000028233, 0.0000028218, 0.0000028177, 0.0000028121, + 0.0000028059, 0.0000027991, 0.0000027921, 0.0000027856, 0.0000027800, + 0.0000027762, 0.0000027744, 0.0000027750, 0.0000027801, 0.0000027899, + 0.0000027992, 0.0000028035, 0.0000028030, 0.0000027987, 0.0000027898, + 0.0000027810, 0.0000027768, 0.0000027774, 0.0000027849, 0.0000027924, + 0.0000027842, 0.0000027668, 0.0000027638, 0.0000027664, 0.0000027641, + 0.0000027615, 0.0000027622, 0.0000027638, 0.0000027629, 0.0000027611, + 0.0000027637, 0.0000027654, 0.0000027559, 0.0000027423, 0.0000027413, + 0.0000027454, 0.0000027383, 0.0000027245, 0.0000027220, 0.0000027269, + 0.0000027318, 0.0000027367, 0.0000027476, 0.0000027520, 0.0000027372, + 0.0000027179, 0.0000027143, 0.0000027198, 0.0000027269, 0.0000027279, + 0.0000027214, 0.0000027192, 0.0000027228, 0.0000027203, 0.0000027081, + 0.0000026985, 0.0000026997, 0.0000027056, 0.0000027090, 0.0000027123, + 0.0000027166, 0.0000027160, 0.0000027093, 0.0000027028, 0.0000027012, + 0.0000027025, 0.0000027054, 0.0000027130, 0.0000027251, 0.0000027319, + 0.0000027305, 0.0000027258, 0.0000027208, 0.0000027131, 0.0000027042, + 0.0000026971, 0.0000026970, 0.0000027015, 0.0000027057, 0.0000027076, + 0.0000027084, 0.0000027088, 0.0000027090, 0.0000027086, 0.0000027089, + 0.0000027079, 0.0000027055, 0.0000027019, 0.0000026960, 0.0000026856, + 0.0000026730, 0.0000026635, 0.0000026579, 0.0000026542, 0.0000026500, + 0.0000026447, 0.0000026425, 0.0000026445, 0.0000026497, 0.0000026537, + 0.0000026544, 0.0000026505, 0.0000026372, 0.0000026159, 0.0000025894, + 0.0000025677, 0.0000025622, 0.0000025686, 0.0000025865, 0.0000026227, + 0.0000026569, 0.0000026606, 0.0000026507, 0.0000026506, 0.0000026603, + 0.0000026670, 0.0000026712, 0.0000026721, 0.0000026656, 0.0000026425, + 0.0000026215, 0.0000026130, 0.0000026071, 0.0000025962, 0.0000025892, + 0.0000025878, 0.0000025883, 0.0000025903, 0.0000025944, 0.0000025939, + 0.0000025927, 0.0000025940, 0.0000025951, 0.0000026012, 0.0000026118, + 0.0000026237, 0.0000026434, 0.0000026861, 0.0000027332, 0.0000027596, + 0.0000027824, 0.0000027983, 0.0000028074, 0.0000028201, 0.0000028262, + 0.0000028265, 0.0000028259, 0.0000028231, 0.0000028133, 0.0000027946, + 0.0000027769, 0.0000027674, 0.0000027641, 0.0000027623, 0.0000027608, + 0.0000027583, 0.0000027541, 0.0000027536, 0.0000027633, 0.0000027736, + 0.0000027795, 0.0000027875, 0.0000027907, 0.0000027890, 0.0000027791, + 0.0000027779, 0.0000027835, 0.0000027904, 0.0000027962, 0.0000027845, + 0.0000027696, 0.0000027551, 0.0000027468, 0.0000027513, 0.0000027503, + 0.0000027479, 0.0000027356, 0.0000027218, 0.0000027169, 0.0000027076, + 0.0000027002, 0.0000026905, 0.0000026854, 0.0000026850, 0.0000026853, + 0.0000026868, 0.0000026874, 0.0000026872, 0.0000026861, 0.0000026831, + 0.0000026800, 0.0000026719, 0.0000026597, 0.0000026469, 0.0000026384, + 0.0000026353, 0.0000026352, 0.0000026367, 0.0000026379, 0.0000026353, + 0.0000026260, 0.0000026145, 0.0000026028, 0.0000025918, 0.0000025848, + 0.0000025831, 0.0000025824, 0.0000025832, 0.0000025852, 0.0000025867, + 0.0000025892, 0.0000025919, 0.0000025967, 0.0000026021, 0.0000026090, + 0.0000026157, 0.0000026184, 0.0000026182, 0.0000026160, 0.0000026119, + 0.0000026061, 0.0000026012, 0.0000025973, 0.0000025944, 0.0000025931, + 0.0000025939, 0.0000025933, 0.0000025911, 0.0000025872, 0.0000025818, + 0.0000025778, 0.0000025769, 0.0000025778, 0.0000025773, 0.0000025756, + 0.0000025760, 0.0000025762, 0.0000025743, 0.0000025700, 0.0000025638, + 0.0000025558, 0.0000025472, 0.0000025397, 0.0000025348, 0.0000025325, + 0.0000025307, 0.0000025271, 0.0000025221, 0.0000025157, 0.0000025087, + 0.0000024989, 0.0000024873, 0.0000024792, 0.0000024781, 0.0000024822, + 0.0000024862, 0.0000024839, 0.0000024824, 0.0000024893, 0.0000024987, + 0.0000025025, 0.0000025026, 0.0000025027, 0.0000025117, 0.0000025212, + 0.0000025185, 0.0000025213, 0.0000025433, 0.0000025562, 0.0000025531, + 0.0000025450, 0.0000025334, 0.0000025235, 0.0000025292, 0.0000025549, + 0.0000025668, 0.0000025728, 0.0000026029, 0.0000026308, 0.0000026309, + 0.0000026236, 0.0000026190, 0.0000026166, 0.0000026109, 0.0000026016, + 0.0000025904, 0.0000025804, 0.0000025748, 0.0000025771, 0.0000025865, + 0.0000025952, 0.0000025996, 0.0000026014, 0.0000026028, 0.0000026054, + 0.0000026084, 0.0000026096, 0.0000026112, 0.0000026161, 0.0000026295, + 0.0000026477, 0.0000026606, 0.0000026662, 0.0000026702, 0.0000026750, + 0.0000026799, 0.0000026838, 0.0000026884, 0.0000026955, 0.0000027032, + 0.0000027090, 0.0000027112, 0.0000027104, 0.0000027040, 0.0000026982, + 0.0000027062, 0.0000027282, 0.0000027372, 0.0000027415, 0.0000027771, + 0.0000028221, 0.0000028240, 0.0000028154, 0.0000028126, 0.0000028128, + 0.0000028188, 0.0000028306, 0.0000028414, 0.0000028360, 0.0000028136, + 0.0000028057, 0.0000028080, 0.0000028082, 0.0000028096, 0.0000027955, + 0.0000027874, 0.0000027865, 0.0000027895, 0.0000027979, 0.0000028052, + 0.0000028074, 0.0000028080, 0.0000028111, 0.0000028179, 0.0000028262, + 0.0000028332, 0.0000028396, 0.0000028457, 0.0000028509, 0.0000028555, + 0.0000028611, 0.0000028648, 0.0000028657, 0.0000028651, 0.0000028655, + 0.0000028679, 0.0000028703, 0.0000028728, 0.0000028754, 0.0000028778, + 0.0000028779, 0.0000028763, 0.0000028726, 0.0000028680, 0.0000028621, + 0.0000028555, 0.0000028479, 0.0000028416, 0.0000028380, 0.0000028370, + 0.0000028380, 0.0000028416, 0.0000028489, 0.0000028574, 0.0000028681, + 0.0000028779, 0.0000028865, 0.0000028966, 0.0000029070, 0.0000029183, + 0.0000029281, 0.0000029350, 0.0000029386, 0.0000029383, 0.0000029359, + 0.0000029345, 0.0000029312, 0.0000029216, 0.0000029054, 0.0000028899, + 0.0000028626, 0.0000028482, 0.0000028561, 0.0000028648, 0.0000028585, + 0.0000028576, 0.0000028676, 0.0000028860, 0.0000029017, 0.0000029155, + 0.0000029231, 0.0000029249, 0.0000029233, 0.0000029197, 0.0000029155, + 0.0000029104, 0.0000029063, 0.0000029019, 0.0000028980, 0.0000028922, + 0.0000028856, 0.0000028778, 0.0000028686, 0.0000028601, 0.0000028497, + 0.0000028401, 0.0000028324, 0.0000028259, 0.0000028207, 0.0000028173, + 0.0000028163, 0.0000028158, 0.0000028162, 0.0000028173, 0.0000028184, + 0.0000028193, 0.0000028216, 0.0000028253, 0.0000028299, 0.0000028352, + 0.0000028410, 0.0000028460, 0.0000028486, 0.0000028514, 0.0000028548, + 0.0000028570, 0.0000028585, 0.0000028586, 0.0000028568, 0.0000028535, + 0.0000028494, 0.0000028455, 0.0000028415, 0.0000028391, 0.0000028384, + 0.0000028361, 0.0000028336, 0.0000028326, 0.0000028317, 0.0000028292, + 0.0000028241, 0.0000028185, 0.0000028164, 0.0000028184, 0.0000028226, + 0.0000028248, 0.0000028244, 0.0000028214, 0.0000028165, 0.0000028122, + 0.0000028096, 0.0000028094, 0.0000028122, 0.0000028167, 0.0000028201, + 0.0000028224, 0.0000028249, 0.0000028284, 0.0000028308, 0.0000028309, + 0.0000028305, 0.0000028304, 0.0000028296, 0.0000028273, 0.0000028244, + 0.0000028227, 0.0000028230, 0.0000028258, 0.0000028305, 0.0000028341, + 0.0000028349, 0.0000028320, 0.0000028264, 0.0000028219, 0.0000028166, + 0.0000028094, 0.0000028026, 0.0000027980, 0.0000027959, 0.0000027952, + 0.0000027946, 0.0000027945, 0.0000027957, 0.0000027981, 0.0000028012, + 0.0000028057, 0.0000028131, 0.0000028182, 0.0000028181, 0.0000028134, + 0.0000028080, 0.0000028062, 0.0000028080, 0.0000028115, 0.0000028115, + 0.0000028090, 0.0000028063, 0.0000028033, 0.0000028014, 0.0000028003, + 0.0000027992, 0.0000027969, 0.0000027964, 0.0000027968, 0.0000027980, + 0.0000027995, 0.0000028046, 0.0000028124, 0.0000028190, 0.0000028211, + 0.0000028197, 0.0000028179, 0.0000028191, 0.0000028205, 0.0000028164, + 0.0000028027, 0.0000027781, 0.0000027490, 0.0000027248, 0.0000027131, + 0.0000027141, 0.0000027242, 0.0000027375, 0.0000027497, 0.0000027612, + 0.0000027737, 0.0000027873, 0.0000027953, 0.0000027958, 0.0000027936, + 0.0000027902, 0.0000027870, 0.0000027800, 0.0000027704, 0.0000027642, + 0.0000027625, 0.0000027645, 0.0000027691, 0.0000027786, 0.0000027916, + 0.0000027978, 0.0000027945, 0.0000027875, 0.0000027812, 0.0000027750, + 0.0000027663, 0.0000027574, 0.0000027520, 0.0000027531, 0.0000027571, + 0.0000027632, 0.0000027721, 0.0000027848, 0.0000027970, 0.0000028005, + 0.0000027948, 0.0000027831, 0.0000027693, 0.0000027626, 0.0000027649, + 0.0000027721, 0.0000027803, 0.0000027894, 0.0000028044, 0.0000028241, + 0.0000028399, 0.0000028495, 0.0000028553, 0.0000028557, 0.0000028530, + 0.0000028455, 0.0000028339, 0.0000028232, 0.0000028141, 0.0000028118, + 0.0000028168, 0.0000028221, 0.0000028292, 0.0000028305, 0.0000028226, + 0.0000028171, 0.0000028262, 0.0000028229, 0.0000028050, 0.0000028226, + 0.0000028579, 0.0000028702, 0.0000028668, 0.0000028574, 0.0000028536, + 0.0000028546, 0.0000028528, 0.0000028473, 0.0000028352, 0.0000028175, + 0.0000028030, 0.0000027957, 0.0000027940, 0.0000027914, 0.0000027821, + 0.0000027808, 0.0000027911, 0.0000027964, 0.0000027983, 0.0000028032, + 0.0000028125, 0.0000028209, 0.0000028248, 0.0000028262, 0.0000028336, + 0.0000028431, 0.0000028528, 0.0000028607, 0.0000028654, 0.0000028680, + 0.0000028652, 0.0000028598, 0.0000028551, 0.0000028552, 0.0000028633, + 0.0000028749, 0.0000028809, 0.0000028799, 0.0000028803, 0.0000028831, + 0.0000028859, 0.0000028949, 0.0000029065, 0.0000029049, 0.0000029032, + 0.0000029078, 0.0000029092, 0.0000029014, 0.0000028817, 0.0000028569, + 0.0000028448, 0.0000028390, 0.0000028435, 0.0000028653, 0.0000028746, + 0.0000028528, 0.0000028288, 0.0000028332, 0.0000028355, 0.0000028253, + 0.0000028024, 0.0000027853, 0.0000027758, 0.0000027716, 0.0000027719, + 0.0000027781, 0.0000027862, 0.0000027891, 0.0000027845, 0.0000027729, + 0.0000027622, 0.0000027559, 0.0000027518, 0.0000027466, 0.0000027407, + 0.0000027377, 0.0000027389, 0.0000027449, 0.0000027495, 0.0000027498, + 0.0000027493, 0.0000027493, 0.0000027491, 0.0000027476, 0.0000027459, + 0.0000027445, 0.0000027436, 0.0000027431, 0.0000027432, 0.0000027445, + 0.0000027481, 0.0000027529, 0.0000027584, 0.0000027604, 0.0000027583, + 0.0000027485, 0.0000027370, 0.0000027293, 0.0000027273, 0.0000027287, + 0.0000027300, 0.0000027288, 0.0000027259, 0.0000027250, 0.0000027281, + 0.0000027344, 0.0000027402, 0.0000027428, 0.0000027424, 0.0000027395, + 0.0000027365, 0.0000027345, 0.0000027331, 0.0000027314, 0.0000027297, + 0.0000027297, 0.0000027327, 0.0000027377, 0.0000027425, 0.0000027464, + 0.0000027490, 0.0000027501, 0.0000027496, 0.0000027478, 0.0000027455, + 0.0000027436, 0.0000027412, 0.0000027377, 0.0000027332, 0.0000027294, + 0.0000027264, 0.0000027230, 0.0000027194, 0.0000027161, 0.0000027129, + 0.0000027088, 0.0000027044, 0.0000027002, 0.0000026964, 0.0000026929, + 0.0000026892, 0.0000026856, 0.0000026832, 0.0000026810, 0.0000026792, + 0.0000026778, 0.0000026757, 0.0000026728, 0.0000026709, 0.0000026705, + 0.0000026709, 0.0000026721, 0.0000026724, 0.0000026716, 0.0000026688, + 0.0000026647, 0.0000026613, 0.0000026587, 0.0000026519, 0.0000026392, + 0.0000026285, 0.0000026230, 0.0000026230, 0.0000026253, 0.0000026293, + 0.0000026355, 0.0000026445, 0.0000026547, 0.0000026641, 0.0000026736, + 0.0000026849, 0.0000026965, 0.0000027073, 0.0000027192, 0.0000027333, + 0.0000027471, 0.0000027585, 0.0000027665, 0.0000027717, 0.0000027756, + 0.0000027792, 0.0000027863, 0.0000027970, 0.0000028065, 0.0000028121, + 0.0000028177, 0.0000028255, 0.0000028347, 0.0000028429, 0.0000028478, + 0.0000028500, 0.0000028544, 0.0000028659, 0.0000028819, 0.0000028956, + 0.0000029044, 0.0000029078, 0.0000029088, 0.0000029071, 0.0000029038, + 0.0000029008, 0.0000028971, 0.0000028911, 0.0000028835, 0.0000028762, + 0.0000028705, 0.0000028681, 0.0000028684, 0.0000028699, 0.0000028721, + 0.0000028746, 0.0000028768, 0.0000028778, 0.0000028777, 0.0000028762, + 0.0000028720, 0.0000028657, 0.0000028607, 0.0000028586, 0.0000028589, + 0.0000028588, 0.0000028557, 0.0000028483, 0.0000028405, 0.0000028335, + 0.0000028296, 0.0000028329, 0.0000028394, 0.0000028470, 0.0000028541, + 0.0000028588, 0.0000028594, 0.0000028565, 0.0000028507, 0.0000028442, + 0.0000028396, 0.0000028391, 0.0000028427, 0.0000028484, 0.0000028524, + 0.0000028524, 0.0000028490, 0.0000028447, 0.0000028424, 0.0000028439, + 0.0000028481, 0.0000028516, 0.0000028511, 0.0000028476, 0.0000028426, + 0.0000028386, 0.0000028357, 0.0000028327, 0.0000028294, 0.0000028271, + 0.0000028260, 0.0000028253, 0.0000028242, 0.0000028234, 0.0000028234, + 0.0000028246, 0.0000028264, 0.0000028278, 0.0000028279, 0.0000028260, + 0.0000028220, 0.0000028152, 0.0000028068, 0.0000027982, 0.0000027897, + 0.0000027812, 0.0000027732, 0.0000027663, 0.0000027602, 0.0000027559, + 0.0000027537, 0.0000027548, 0.0000027638, 0.0000027788, 0.0000027928, + 0.0000028007, 0.0000028019, 0.0000027976, 0.0000027878, 0.0000027776, + 0.0000027732, 0.0000027745, 0.0000027840, 0.0000027896, 0.0000027767, + 0.0000027610, 0.0000027613, 0.0000027647, 0.0000027626, 0.0000027594, + 0.0000027591, 0.0000027591, 0.0000027605, 0.0000027641, 0.0000027613, + 0.0000027474, 0.0000027388, 0.0000027428, 0.0000027437, 0.0000027330, + 0.0000027246, 0.0000027278, 0.0000027381, 0.0000027450, 0.0000027482, + 0.0000027542, 0.0000027549, 0.0000027379, 0.0000027183, 0.0000027145, + 0.0000027183, 0.0000027255, 0.0000027293, 0.0000027255, 0.0000027209, + 0.0000027232, 0.0000027240, 0.0000027158, 0.0000027041, 0.0000027001, + 0.0000027037, 0.0000027099, 0.0000027130, 0.0000027164, 0.0000027198, + 0.0000027188, 0.0000027136, 0.0000027080, 0.0000027063, 0.0000027066, + 0.0000027081, 0.0000027151, 0.0000027267, 0.0000027319, 0.0000027292, + 0.0000027242, 0.0000027202, 0.0000027149, 0.0000027053, 0.0000026968, + 0.0000026951, 0.0000026984, 0.0000027018, 0.0000027029, 0.0000027036, + 0.0000027046, 0.0000027050, 0.0000027056, 0.0000027072, 0.0000027078, + 0.0000027064, 0.0000027030, 0.0000026951, 0.0000026828, 0.0000026709, + 0.0000026626, 0.0000026568, 0.0000026521, 0.0000026469, 0.0000026416, + 0.0000026398, 0.0000026418, 0.0000026476, 0.0000026524, 0.0000026540, + 0.0000026514, 0.0000026393, 0.0000026191, 0.0000025943, 0.0000025700, + 0.0000025588, 0.0000025617, 0.0000025717, 0.0000025955, 0.0000026353, + 0.0000026584, 0.0000026532, 0.0000026451, 0.0000026515, 0.0000026603, + 0.0000026658, 0.0000026704, 0.0000026699, 0.0000026584, 0.0000026370, + 0.0000026198, 0.0000026149, 0.0000026111, 0.0000026060, 0.0000026006, + 0.0000025935, 0.0000025954, 0.0000025977, 0.0000025973, 0.0000025968, + 0.0000025932, 0.0000025883, 0.0000025874, 0.0000025874, 0.0000026019, + 0.0000026193, 0.0000026401, 0.0000026900, 0.0000027401, 0.0000027654, + 0.0000027879, 0.0000028003, 0.0000028126, 0.0000028228, 0.0000028228, + 0.0000028228, 0.0000028213, 0.0000028153, 0.0000028024, 0.0000027854, + 0.0000027715, 0.0000027669, 0.0000027645, 0.0000027618, 0.0000027584, + 0.0000027548, 0.0000027585, 0.0000027685, 0.0000027742, 0.0000027827, + 0.0000027890, 0.0000027907, 0.0000027857, 0.0000027736, 0.0000027776, + 0.0000027833, 0.0000027922, 0.0000027957, 0.0000027825, 0.0000027675, + 0.0000027521, 0.0000027469, 0.0000027508, 0.0000027485, 0.0000027456, + 0.0000027319, 0.0000027176, 0.0000027133, 0.0000027085, 0.0000027044, + 0.0000027000, 0.0000026936, 0.0000026884, 0.0000026849, 0.0000026826, + 0.0000026822, 0.0000026817, 0.0000026815, 0.0000026815, 0.0000026819, + 0.0000026818, 0.0000026793, 0.0000026703, 0.0000026570, 0.0000026460, + 0.0000026417, 0.0000026413, 0.0000026409, 0.0000026389, 0.0000026327, + 0.0000026210, 0.0000026085, 0.0000025984, 0.0000025921, 0.0000025908, + 0.0000025891, 0.0000025864, 0.0000025847, 0.0000025853, 0.0000025891, + 0.0000025942, 0.0000026009, 0.0000026077, 0.0000026144, 0.0000026202, + 0.0000026225, 0.0000026223, 0.0000026205, 0.0000026171, 0.0000026126, + 0.0000026088, 0.0000026064, 0.0000026051, 0.0000026050, 0.0000026049, + 0.0000026027, 0.0000025988, 0.0000025927, 0.0000025854, 0.0000025798, + 0.0000025783, 0.0000025802, 0.0000025800, 0.0000025764, 0.0000025748, + 0.0000025755, 0.0000025760, 0.0000025735, 0.0000025687, 0.0000025610, + 0.0000025514, 0.0000025432, 0.0000025380, 0.0000025369, 0.0000025376, + 0.0000025362, 0.0000025318, 0.0000025256, 0.0000025188, 0.0000025099, + 0.0000024991, 0.0000024890, 0.0000024823, 0.0000024813, 0.0000024857, + 0.0000024893, 0.0000024876, 0.0000024824, 0.0000024854, 0.0000024966, + 0.0000025026, 0.0000025029, 0.0000025014, 0.0000025062, 0.0000025178, + 0.0000025208, 0.0000025203, 0.0000025369, 0.0000025559, 0.0000025557, + 0.0000025458, 0.0000025330, 0.0000025229, 0.0000025307, 0.0000025596, + 0.0000025710, 0.0000025776, 0.0000026083, 0.0000026299, 0.0000026283, + 0.0000026218, 0.0000026206, 0.0000026183, 0.0000026124, 0.0000026048, + 0.0000025966, 0.0000025891, 0.0000025821, 0.0000025806, 0.0000025868, + 0.0000025951, 0.0000025991, 0.0000025998, 0.0000025991, 0.0000025996, + 0.0000026024, 0.0000026056, 0.0000026075, 0.0000026088, 0.0000026171, + 0.0000026376, 0.0000026585, 0.0000026692, 0.0000026743, 0.0000026784, + 0.0000026819, 0.0000026848, 0.0000026881, 0.0000026938, 0.0000026996, + 0.0000027052, 0.0000027088, 0.0000027073, 0.0000026991, 0.0000026948, + 0.0000027064, 0.0000027265, 0.0000027315, 0.0000027366, 0.0000027741, + 0.0000028184, 0.0000028202, 0.0000028111, 0.0000028092, 0.0000028138, + 0.0000028233, 0.0000028340, 0.0000028392, 0.0000028315, 0.0000028088, + 0.0000028006, 0.0000028059, 0.0000028065, 0.0000028110, 0.0000027991, + 0.0000027867, 0.0000027836, 0.0000027894, 0.0000027987, 0.0000028062, + 0.0000028083, 0.0000028085, 0.0000028114, 0.0000028161, 0.0000028234, + 0.0000028308, 0.0000028376, 0.0000028436, 0.0000028479, 0.0000028515, + 0.0000028563, 0.0000028612, 0.0000028632, 0.0000028637, 0.0000028641, + 0.0000028648, 0.0000028656, 0.0000028681, 0.0000028704, 0.0000028725, + 0.0000028720, 0.0000028702, 0.0000028660, 0.0000028604, 0.0000028517, + 0.0000028429, 0.0000028353, 0.0000028317, 0.0000028320, 0.0000028350, + 0.0000028375, 0.0000028405, 0.0000028459, 0.0000028529, 0.0000028622, + 0.0000028716, 0.0000028819, 0.0000028940, 0.0000029062, 0.0000029186, + 0.0000029290, 0.0000029358, 0.0000029388, 0.0000029379, 0.0000029351, + 0.0000029335, 0.0000029292, 0.0000029177, 0.0000029005, 0.0000028874, + 0.0000028625, 0.0000028430, 0.0000028495, 0.0000028617, 0.0000028587, + 0.0000028551, 0.0000028614, 0.0000028760, 0.0000028902, 0.0000029026, + 0.0000029127, 0.0000029189, 0.0000029208, 0.0000029192, 0.0000029158, + 0.0000029113, 0.0000029065, 0.0000029014, 0.0000028953, 0.0000028879, + 0.0000028794, 0.0000028714, 0.0000028624, 0.0000028539, 0.0000028437, + 0.0000028340, 0.0000028276, 0.0000028217, 0.0000028164, 0.0000028123, + 0.0000028092, 0.0000028062, 0.0000028040, 0.0000028036, 0.0000028037, + 0.0000028031, 0.0000028033, 0.0000028050, 0.0000028074, 0.0000028105, + 0.0000028146, 0.0000028194, 0.0000028234, 0.0000028277, 0.0000028332, + 0.0000028384, 0.0000028447, 0.0000028505, 0.0000028539, 0.0000028540, + 0.0000028506, 0.0000028463, 0.0000028419, 0.0000028388, 0.0000028384, + 0.0000028384, 0.0000028373, 0.0000028368, 0.0000028368, 0.0000028357, + 0.0000028311, 0.0000028232, 0.0000028173, 0.0000028168, 0.0000028196, + 0.0000028224, 0.0000028235, 0.0000028232, 0.0000028210, 0.0000028175, + 0.0000028134, 0.0000028105, 0.0000028092, 0.0000028104, 0.0000028138, + 0.0000028185, 0.0000028237, 0.0000028283, 0.0000028315, 0.0000028322, + 0.0000028315, 0.0000028310, 0.0000028307, 0.0000028292, 0.0000028280, + 0.0000028258, 0.0000028236, 0.0000028236, 0.0000028253, 0.0000028274, + 0.0000028275, 0.0000028244, 0.0000028195, 0.0000028154, 0.0000028115, + 0.0000028058, 0.0000028001, 0.0000027963, 0.0000027941, 0.0000027921, + 0.0000027898, 0.0000027891, 0.0000027898, 0.0000027904, 0.0000027932, + 0.0000027978, 0.0000028024, 0.0000028083, 0.0000028127, 0.0000028120, + 0.0000028079, 0.0000028048, 0.0000028053, 0.0000028098, 0.0000028134, + 0.0000028129, 0.0000028081, 0.0000028027, 0.0000027982, 0.0000027978, + 0.0000027985, 0.0000027964, 0.0000027934, 0.0000027934, 0.0000027960, + 0.0000027995, 0.0000028034, 0.0000028080, 0.0000028128, 0.0000028156, + 0.0000028171, 0.0000028190, 0.0000028205, 0.0000028227, 0.0000028253, + 0.0000028267, 0.0000028232, 0.0000028082, 0.0000027817, 0.0000027483, + 0.0000027233, 0.0000027140, 0.0000027182, 0.0000027281, 0.0000027399, + 0.0000027527, 0.0000027654, 0.0000027793, 0.0000027908, 0.0000027955, + 0.0000027932, 0.0000027873, 0.0000027826, 0.0000027762, 0.0000027662, + 0.0000027588, 0.0000027577, 0.0000027603, 0.0000027637, 0.0000027704, + 0.0000027821, 0.0000027912, 0.0000027923, 0.0000027858, 0.0000027788, + 0.0000027746, 0.0000027689, 0.0000027584, 0.0000027491, 0.0000027469, + 0.0000027489, 0.0000027520, 0.0000027567, 0.0000027669, 0.0000027796, + 0.0000027880, 0.0000027889, 0.0000027809, 0.0000027675, 0.0000027583, + 0.0000027580, 0.0000027650, 0.0000027749, 0.0000027822, 0.0000027899, + 0.0000028001, 0.0000028111, 0.0000028241, 0.0000028359, 0.0000028418, + 0.0000028437, 0.0000028395, 0.0000028300, 0.0000028205, 0.0000028133, + 0.0000028125, 0.0000028191, 0.0000028253, 0.0000028321, 0.0000028334, + 0.0000028261, 0.0000028193, 0.0000028279, 0.0000028263, 0.0000028060, + 0.0000028160, 0.0000028535, 0.0000028697, 0.0000028670, 0.0000028585, + 0.0000028552, 0.0000028556, 0.0000028524, 0.0000028425, 0.0000028255, + 0.0000028082, 0.0000027990, 0.0000027954, 0.0000027961, 0.0000027943, + 0.0000027831, 0.0000027778, 0.0000027856, 0.0000027939, 0.0000027981, + 0.0000028047, 0.0000028137, 0.0000028219, 0.0000028241, 0.0000028233, + 0.0000028285, 0.0000028389, 0.0000028500, 0.0000028593, 0.0000028663, + 0.0000028707, 0.0000028681, 0.0000028603, 0.0000028520, 0.0000028498, + 0.0000028558, 0.0000028674, 0.0000028745, 0.0000028744, 0.0000028761, + 0.0000028815, 0.0000028851, 0.0000028875, 0.0000029003, 0.0000029049, + 0.0000029000, 0.0000029028, 0.0000029087, 0.0000029070, 0.0000028923, + 0.0000028648, 0.0000028491, 0.0000028418, 0.0000028478, 0.0000028687, + 0.0000028718, 0.0000028460, 0.0000028276, 0.0000028342, 0.0000028356, + 0.0000028248, 0.0000028017, 0.0000027815, 0.0000027706, 0.0000027675, + 0.0000027707, 0.0000027792, 0.0000027878, 0.0000027903, 0.0000027872, + 0.0000027769, 0.0000027650, 0.0000027572, 0.0000027537, 0.0000027508, + 0.0000027458, 0.0000027403, 0.0000027369, 0.0000027369, 0.0000027418, + 0.0000027470, 0.0000027493, 0.0000027497, 0.0000027504, 0.0000027519, + 0.0000027526, 0.0000027510, 0.0000027482, 0.0000027471, 0.0000027475, + 0.0000027480, 0.0000027484, 0.0000027495, 0.0000027524, 0.0000027563, + 0.0000027608, 0.0000027641, 0.0000027653, 0.0000027640, 0.0000027545, + 0.0000027420, 0.0000027328, 0.0000027292, 0.0000027291, 0.0000027288, + 0.0000027267, 0.0000027253, 0.0000027273, 0.0000027336, 0.0000027402, + 0.0000027437, 0.0000027434, 0.0000027414, 0.0000027393, 0.0000027377, + 0.0000027360, 0.0000027339, 0.0000027333, 0.0000027345, 0.0000027369, + 0.0000027397, 0.0000027423, 0.0000027442, 0.0000027448, 0.0000027448, + 0.0000027445, 0.0000027448, 0.0000027457, 0.0000027460, 0.0000027453, + 0.0000027434, 0.0000027415, 0.0000027402, 0.0000027378, 0.0000027347, + 0.0000027313, 0.0000027270, 0.0000027220, 0.0000027171, 0.0000027122, + 0.0000027070, 0.0000027007, 0.0000026943, 0.0000026903, 0.0000026890, + 0.0000026892, 0.0000026892, 0.0000026881, 0.0000026851, 0.0000026808, + 0.0000026768, 0.0000026758, 0.0000026771, 0.0000026803, 0.0000026836, + 0.0000026843, 0.0000026822, 0.0000026753, 0.0000026667, 0.0000026611, + 0.0000026554, 0.0000026435, 0.0000026298, 0.0000026221, 0.0000026196, + 0.0000026190, 0.0000026193, 0.0000026214, 0.0000026271, 0.0000026366, + 0.0000026482, 0.0000026615, 0.0000026755, 0.0000026881, 0.0000026988, + 0.0000027093, 0.0000027228, 0.0000027386, 0.0000027538, 0.0000027651, + 0.0000027722, 0.0000027764, 0.0000027790, 0.0000027821, 0.0000027891, + 0.0000027969, 0.0000028021, 0.0000028060, 0.0000028104, 0.0000028173, + 0.0000028269, 0.0000028370, 0.0000028440, 0.0000028484, 0.0000028544, + 0.0000028648, 0.0000028775, 0.0000028907, 0.0000029012, 0.0000029064, + 0.0000029053, 0.0000029008, 0.0000028963, 0.0000028927, 0.0000028886, + 0.0000028831, 0.0000028777, 0.0000028742, 0.0000028735, 0.0000028745, + 0.0000028758, 0.0000028773, 0.0000028793, 0.0000028813, 0.0000028826, + 0.0000028828, 0.0000028807, 0.0000028740, 0.0000028651, 0.0000028593, + 0.0000028579, 0.0000028597, 0.0000028610, 0.0000028586, 0.0000028508, + 0.0000028414, 0.0000028321, 0.0000028268, 0.0000028302, 0.0000028380, + 0.0000028467, 0.0000028543, 0.0000028601, 0.0000028625, 0.0000028611, + 0.0000028559, 0.0000028484, 0.0000028409, 0.0000028371, 0.0000028387, + 0.0000028443, 0.0000028497, 0.0000028518, 0.0000028503, 0.0000028469, + 0.0000028439, 0.0000028433, 0.0000028463, 0.0000028498, 0.0000028500, + 0.0000028473, 0.0000028437, 0.0000028413, 0.0000028406, 0.0000028413, + 0.0000028413, 0.0000028397, 0.0000028381, 0.0000028370, 0.0000028363, + 0.0000028357, 0.0000028354, 0.0000028349, 0.0000028339, 0.0000028318, + 0.0000028287, 0.0000028247, 0.0000028202, 0.0000028146, 0.0000028077, + 0.0000028000, 0.0000027917, 0.0000027831, 0.0000027746, 0.0000027668, + 0.0000027596, 0.0000027526, 0.0000027462, 0.0000027412, 0.0000027411, + 0.0000027505, 0.0000027679, 0.0000027854, 0.0000027962, 0.0000027982, + 0.0000027937, 0.0000027826, 0.0000027723, 0.0000027690, 0.0000027720, + 0.0000027826, 0.0000027841, 0.0000027673, 0.0000027555, 0.0000027602, + 0.0000027648, 0.0000027627, 0.0000027593, 0.0000027595, 0.0000027634, + 0.0000027645, 0.0000027545, 0.0000027392, 0.0000027381, 0.0000027437, + 0.0000027409, 0.0000027296, 0.0000027292, 0.0000027387, 0.0000027478, + 0.0000027504, 0.0000027526, 0.0000027558, 0.0000027535, 0.0000027361, + 0.0000027183, 0.0000027150, 0.0000027172, 0.0000027231, 0.0000027293, + 0.0000027288, 0.0000027246, 0.0000027239, 0.0000027248, 0.0000027219, + 0.0000027122, 0.0000027029, 0.0000027012, 0.0000027067, 0.0000027132, + 0.0000027167, 0.0000027196, 0.0000027221, 0.0000027219, 0.0000027180, + 0.0000027137, 0.0000027123, 0.0000027115, 0.0000027114, 0.0000027177, + 0.0000027285, 0.0000027322, 0.0000027279, 0.0000027225, 0.0000027196, + 0.0000027163, 0.0000027065, 0.0000026969, 0.0000026935, 0.0000026957, + 0.0000026982, 0.0000026993, 0.0000027001, 0.0000027008, 0.0000027006, + 0.0000027020, 0.0000027042, 0.0000027055, 0.0000027044, 0.0000026998, + 0.0000026903, 0.0000026787, 0.0000026689, 0.0000026613, 0.0000026549, + 0.0000026490, 0.0000026429, 0.0000026381, 0.0000026371, 0.0000026405, + 0.0000026467, 0.0000026518, 0.0000026532, 0.0000026506, 0.0000026395, + 0.0000026208, 0.0000025975, 0.0000025743, 0.0000025590, 0.0000025565, + 0.0000025617, 0.0000025753, 0.0000026072, 0.0000026445, 0.0000026532, + 0.0000026454, 0.0000026448, 0.0000026519, 0.0000026600, 0.0000026662, + 0.0000026683, 0.0000026649, 0.0000026535, 0.0000026350, 0.0000026214, + 0.0000026180, 0.0000026189, 0.0000026181, 0.0000026150, 0.0000026138, + 0.0000026156, 0.0000026172, 0.0000026150, 0.0000026085, 0.0000026021, + 0.0000025943, 0.0000025857, 0.0000025841, 0.0000025960, 0.0000026204, + 0.0000026443, 0.0000027083, 0.0000027477, 0.0000027755, 0.0000027914, + 0.0000028035, 0.0000028183, 0.0000028194, 0.0000028189, 0.0000028183, + 0.0000028151, 0.0000028068, 0.0000027928, 0.0000027789, 0.0000027731, + 0.0000027694, 0.0000027645, 0.0000027600, 0.0000027582, 0.0000027631, + 0.0000027693, 0.0000027754, 0.0000027849, 0.0000027893, 0.0000027905, + 0.0000027805, 0.0000027695, 0.0000027780, 0.0000027829, 0.0000027934, + 0.0000027942, 0.0000027798, 0.0000027645, 0.0000027492, 0.0000027473, + 0.0000027505, 0.0000027473, 0.0000027435, 0.0000027290, 0.0000027144, + 0.0000027094, 0.0000027077, 0.0000027038, 0.0000027026, 0.0000026998, + 0.0000026956, 0.0000026916, 0.0000026875, 0.0000026843, 0.0000026822, + 0.0000026793, 0.0000026774, 0.0000026766, 0.0000026771, 0.0000026781, + 0.0000026797, 0.0000026768, 0.0000026655, 0.0000026524, 0.0000026475, + 0.0000026464, 0.0000026424, 0.0000026364, 0.0000026276, 0.0000026155, + 0.0000026045, 0.0000025974, 0.0000025952, 0.0000025941, 0.0000025910, + 0.0000025874, 0.0000025862, 0.0000025885, 0.0000025952, 0.0000026039, + 0.0000026124, 0.0000026197, 0.0000026255, 0.0000026288, 0.0000026291, + 0.0000026288, 0.0000026262, 0.0000026225, 0.0000026192, 0.0000026182, + 0.0000026182, 0.0000026190, 0.0000026173, 0.0000026126, 0.0000026062, + 0.0000025979, 0.0000025886, 0.0000025811, 0.0000025790, 0.0000025822, + 0.0000025829, 0.0000025796, 0.0000025761, 0.0000025744, 0.0000025750, + 0.0000025753, 0.0000025724, 0.0000025660, 0.0000025562, 0.0000025462, + 0.0000025397, 0.0000025385, 0.0000025416, 0.0000025439, 0.0000025417, + 0.0000025360, 0.0000025288, 0.0000025195, 0.0000025094, 0.0000025009, + 0.0000024953, 0.0000024923, 0.0000024928, 0.0000024929, 0.0000024925, + 0.0000024903, 0.0000024852, 0.0000024849, 0.0000024916, 0.0000024994, + 0.0000025016, 0.0000025006, 0.0000025010, 0.0000025125, 0.0000025205, + 0.0000025198, 0.0000025308, 0.0000025538, 0.0000025562, 0.0000025475, + 0.0000025325, 0.0000025225, 0.0000025334, 0.0000025633, 0.0000025734, + 0.0000025806, 0.0000026113, 0.0000026283, 0.0000026235, 0.0000026200, + 0.0000026204, 0.0000026185, 0.0000026134, 0.0000026077, 0.0000026024, + 0.0000025971, 0.0000025921, 0.0000025874, 0.0000025877, 0.0000025918, + 0.0000025952, 0.0000025959, 0.0000025939, 0.0000025928, 0.0000025947, + 0.0000025996, 0.0000026037, 0.0000026060, 0.0000026120, 0.0000026296, + 0.0000026540, 0.0000026706, 0.0000026767, 0.0000026806, 0.0000026835, + 0.0000026853, 0.0000026875, 0.0000026920, 0.0000026966, 0.0000027027, + 0.0000027058, 0.0000027018, 0.0000026928, 0.0000026914, 0.0000027074, + 0.0000027229, 0.0000027249, 0.0000027321, 0.0000027704, 0.0000028143, + 0.0000028168, 0.0000028072, 0.0000028060, 0.0000028149, 0.0000028276, + 0.0000028369, 0.0000028366, 0.0000028255, 0.0000028049, 0.0000027952, + 0.0000028036, 0.0000028054, 0.0000028120, 0.0000028038, 0.0000027883, + 0.0000027827, 0.0000027886, 0.0000027976, 0.0000028049, 0.0000028067, + 0.0000028070, 0.0000028109, 0.0000028154, 0.0000028222, 0.0000028299, + 0.0000028362, 0.0000028417, 0.0000028463, 0.0000028499, 0.0000028547, + 0.0000028591, 0.0000028614, 0.0000028610, 0.0000028611, 0.0000028600, + 0.0000028579, 0.0000028606, 0.0000028652, 0.0000028684, 0.0000028688, + 0.0000028666, 0.0000028603, 0.0000028547, 0.0000028470, 0.0000028412, + 0.0000028363, 0.0000028360, 0.0000028378, 0.0000028389, 0.0000028386, + 0.0000028392, 0.0000028433, 0.0000028504, 0.0000028604, 0.0000028702, + 0.0000028810, 0.0000028926, 0.0000029051, 0.0000029174, 0.0000029272, + 0.0000029340, 0.0000029371, 0.0000029352, 0.0000029321, 0.0000029303, + 0.0000029262, 0.0000029138, 0.0000028950, 0.0000028819, 0.0000028636, + 0.0000028386, 0.0000028397, 0.0000028547, 0.0000028586, 0.0000028550, + 0.0000028570, 0.0000028658, 0.0000028769, 0.0000028884, 0.0000028976, + 0.0000029053, 0.0000029094, 0.0000029090, 0.0000029067, 0.0000029033, + 0.0000028996, 0.0000028943, 0.0000028875, 0.0000028794, 0.0000028705, + 0.0000028629, 0.0000028554, 0.0000028480, 0.0000028402, 0.0000028320, + 0.0000028267, 0.0000028221, 0.0000028177, 0.0000028139, 0.0000028109, + 0.0000028079, 0.0000028051, 0.0000028032, 0.0000028019, 0.0000028005, + 0.0000027990, 0.0000027987, 0.0000027988, 0.0000027978, 0.0000027984, + 0.0000028000, 0.0000028024, 0.0000028052, 0.0000028090, 0.0000028138, + 0.0000028212, 0.0000028302, 0.0000028396, 0.0000028467, 0.0000028489, + 0.0000028471, 0.0000028427, 0.0000028378, 0.0000028355, 0.0000028361, + 0.0000028366, 0.0000028366, 0.0000028376, 0.0000028386, 0.0000028375, + 0.0000028310, 0.0000028222, 0.0000028169, 0.0000028167, 0.0000028179, + 0.0000028187, 0.0000028191, 0.0000028192, 0.0000028188, 0.0000028168, + 0.0000028147, 0.0000028132, 0.0000028128, 0.0000028135, 0.0000028154, + 0.0000028189, 0.0000028247, 0.0000028299, 0.0000028318, 0.0000028310, + 0.0000028289, 0.0000028271, 0.0000028268, 0.0000028278, 0.0000028276, + 0.0000028244, 0.0000028210, 0.0000028201, 0.0000028207, 0.0000028207, + 0.0000028180, 0.0000028123, 0.0000028069, 0.0000028028, 0.0000027974, + 0.0000027913, 0.0000027880, 0.0000027886, 0.0000027895, 0.0000027871, + 0.0000027837, 0.0000027835, 0.0000027852, 0.0000027873, 0.0000027912, + 0.0000027957, 0.0000027985, 0.0000028024, 0.0000028058, 0.0000028059, + 0.0000028042, 0.0000028035, 0.0000028060, 0.0000028115, 0.0000028148, + 0.0000028132, 0.0000028072, 0.0000027996, 0.0000027943, 0.0000027926, + 0.0000027928, 0.0000027909, 0.0000027887, 0.0000027891, 0.0000027927, + 0.0000027982, 0.0000028044, 0.0000028101, 0.0000028134, 0.0000028129, + 0.0000028130, 0.0000028161, 0.0000028211, 0.0000028247, 0.0000028275, + 0.0000028286, 0.0000028289, 0.0000028229, 0.0000028067, 0.0000027771, + 0.0000027456, 0.0000027248, 0.0000027195, 0.0000027221, 0.0000027299, + 0.0000027422, 0.0000027560, 0.0000027698, 0.0000027829, 0.0000027916, + 0.0000027916, 0.0000027847, 0.0000027773, 0.0000027707, 0.0000027613, + 0.0000027540, 0.0000027540, 0.0000027578, 0.0000027610, 0.0000027652, + 0.0000027732, 0.0000027827, 0.0000027892, 0.0000027864, 0.0000027803, + 0.0000027760, 0.0000027726, 0.0000027650, 0.0000027542, 0.0000027472, + 0.0000027455, 0.0000027449, 0.0000027453, 0.0000027492, 0.0000027566, + 0.0000027650, 0.0000027710, 0.0000027704, 0.0000027629, 0.0000027555, + 0.0000027537, 0.0000027595, 0.0000027707, 0.0000027796, 0.0000027852, + 0.0000027869, 0.0000027876, 0.0000027957, 0.0000028085, 0.0000028187, + 0.0000028283, 0.0000028304, 0.0000028246, 0.0000028170, 0.0000028120, + 0.0000028131, 0.0000028212, 0.0000028283, 0.0000028350, 0.0000028370, + 0.0000028288, 0.0000028217, 0.0000028298, 0.0000028284, 0.0000028069, + 0.0000028110, 0.0000028480, 0.0000028682, 0.0000028668, 0.0000028584, + 0.0000028549, 0.0000028544, 0.0000028497, 0.0000028351, 0.0000028182, + 0.0000028063, 0.0000027995, 0.0000027970, 0.0000027986, 0.0000027984, + 0.0000027864, 0.0000027767, 0.0000027808, 0.0000027887, 0.0000027960, + 0.0000028048, 0.0000028137, 0.0000028218, 0.0000028227, 0.0000028211, + 0.0000028244, 0.0000028352, 0.0000028483, 0.0000028595, 0.0000028687, + 0.0000028738, 0.0000028706, 0.0000028587, 0.0000028469, 0.0000028450, + 0.0000028531, 0.0000028645, 0.0000028702, 0.0000028707, 0.0000028743, + 0.0000028808, 0.0000028856, 0.0000028851, 0.0000028930, 0.0000029031, + 0.0000029002, 0.0000028990, 0.0000029063, 0.0000029087, 0.0000028996, + 0.0000028716, 0.0000028533, 0.0000028450, 0.0000028531, 0.0000028719, + 0.0000028687, 0.0000028400, 0.0000028279, 0.0000028349, 0.0000028353, + 0.0000028239, 0.0000028022, 0.0000027826, 0.0000027710, 0.0000027679, + 0.0000027721, 0.0000027805, 0.0000027870, 0.0000027887, 0.0000027863, + 0.0000027789, 0.0000027687, 0.0000027615, 0.0000027587, 0.0000027574, + 0.0000027544, 0.0000027494, 0.0000027441, 0.0000027408, 0.0000027411, + 0.0000027441, 0.0000027466, 0.0000027479, 0.0000027492, 0.0000027502, + 0.0000027520, 0.0000027547, 0.0000027556, 0.0000027545, 0.0000027535, + 0.0000027531, 0.0000027526, 0.0000027525, 0.0000027538, 0.0000027567, + 0.0000027602, 0.0000027626, 0.0000027643, 0.0000027672, 0.0000027703, + 0.0000027719, 0.0000027690, 0.0000027574, 0.0000027429, 0.0000027334, + 0.0000027301, 0.0000027299, 0.0000027290, 0.0000027264, 0.0000027260, + 0.0000027293, 0.0000027353, 0.0000027397, 0.0000027412, 0.0000027403, + 0.0000027384, 0.0000027365, 0.0000027363, 0.0000027380, 0.0000027405, + 0.0000027431, 0.0000027449, 0.0000027453, 0.0000027440, 0.0000027416, + 0.0000027395, 0.0000027386, 0.0000027393, 0.0000027410, 0.0000027419, + 0.0000027420, 0.0000027415, 0.0000027407, 0.0000027397, 0.0000027387, + 0.0000027375, 0.0000027356, 0.0000027342, 0.0000027327, 0.0000027304, + 0.0000027272, 0.0000027232, 0.0000027178, 0.0000027113, 0.0000027054, + 0.0000027016, 0.0000026996, 0.0000026982, 0.0000026964, 0.0000026937, + 0.0000026900, 0.0000026863, 0.0000026842, 0.0000026841, 0.0000026854, + 0.0000026880, 0.0000026907, 0.0000026909, 0.0000026870, 0.0000026782, + 0.0000026685, 0.0000026610, 0.0000026502, 0.0000026351, 0.0000026239, + 0.0000026194, 0.0000026170, 0.0000026138, 0.0000026113, 0.0000026123, + 0.0000026193, 0.0000026318, 0.0000026479, 0.0000026652, 0.0000026802, + 0.0000026922, 0.0000027024, 0.0000027146, 0.0000027298, 0.0000027452, + 0.0000027577, 0.0000027674, 0.0000027751, 0.0000027790, 0.0000027802, + 0.0000027825, 0.0000027863, 0.0000027902, 0.0000027946, 0.0000027996, + 0.0000028053, 0.0000028123, 0.0000028209, 0.0000028290, 0.0000028356, + 0.0000028420, 0.0000028489, 0.0000028570, 0.0000028676, 0.0000028797, + 0.0000028897, 0.0000028948, 0.0000028959, 0.0000028941, 0.0000028913, + 0.0000028875, 0.0000028831, 0.0000028800, 0.0000028796, 0.0000028810, + 0.0000028827, 0.0000028835, 0.0000028833, 0.0000028832, 0.0000028838, + 0.0000028855, 0.0000028863, 0.0000028845, 0.0000028781, 0.0000028696, + 0.0000028639, 0.0000028630, 0.0000028655, 0.0000028669, 0.0000028636, + 0.0000028536, 0.0000028413, 0.0000028304, 0.0000028251, 0.0000028292, + 0.0000028369, 0.0000028453, 0.0000028531, 0.0000028602, 0.0000028645, + 0.0000028650, 0.0000028618, 0.0000028541, 0.0000028436, 0.0000028349, + 0.0000028337, 0.0000028376, 0.0000028439, 0.0000028487, 0.0000028508, + 0.0000028496, 0.0000028465, 0.0000028436, 0.0000028438, 0.0000028462, + 0.0000028475, 0.0000028465, 0.0000028446, 0.0000028443, 0.0000028454, + 0.0000028479, 0.0000028494, 0.0000028479, 0.0000028435, 0.0000028392, + 0.0000028373, 0.0000028356, 0.0000028351, 0.0000028349, 0.0000028342, + 0.0000028316, 0.0000028266, 0.0000028197, 0.0000028134, 0.0000028075, + 0.0000028015, 0.0000027949, 0.0000027880, 0.0000027813, 0.0000027743, + 0.0000027673, 0.0000027607, 0.0000027540, 0.0000027464, 0.0000027387, + 0.0000027320, 0.0000027307, 0.0000027397, 0.0000027583, 0.0000027784, + 0.0000027911, 0.0000027937, 0.0000027875, 0.0000027750, 0.0000027658, + 0.0000027643, 0.0000027714, 0.0000027821, 0.0000027782, 0.0000027603, + 0.0000027534, 0.0000027613, 0.0000027658, 0.0000027645, 0.0000027640, + 0.0000027670, 0.0000027625, 0.0000027455, 0.0000027335, 0.0000027377, + 0.0000027450, 0.0000027379, 0.0000027294, 0.0000027351, 0.0000027475, + 0.0000027506, 0.0000027487, 0.0000027487, 0.0000027517, 0.0000027488, + 0.0000027327, 0.0000027177, 0.0000027152, 0.0000027162, 0.0000027201, + 0.0000027272, 0.0000027300, 0.0000027280, 0.0000027254, 0.0000027251, + 0.0000027244, 0.0000027195, 0.0000027102, 0.0000027024, 0.0000027024, + 0.0000027094, 0.0000027170, 0.0000027207, 0.0000027226, 0.0000027246, + 0.0000027244, 0.0000027216, 0.0000027196, 0.0000027185, 0.0000027162, + 0.0000027151, 0.0000027211, 0.0000027305, 0.0000027319, 0.0000027261, + 0.0000027207, 0.0000027198, 0.0000027170, 0.0000027068, 0.0000026957, + 0.0000026919, 0.0000026928, 0.0000026945, 0.0000026957, 0.0000026958, + 0.0000026942, 0.0000026927, 0.0000026939, 0.0000026962, 0.0000026979, + 0.0000026968, 0.0000026913, 0.0000026831, 0.0000026750, 0.0000026675, + 0.0000026599, 0.0000026523, 0.0000026450, 0.0000026386, 0.0000026354, + 0.0000026362, 0.0000026410, 0.0000026473, 0.0000026512, 0.0000026518, + 0.0000026484, 0.0000026374, 0.0000026202, 0.0000025998, 0.0000025782, + 0.0000025611, 0.0000025525, 0.0000025541, 0.0000025630, 0.0000025821, + 0.0000026189, 0.0000026485, 0.0000026505, 0.0000026409, 0.0000026426, + 0.0000026526, 0.0000026607, 0.0000026649, 0.0000026639, 0.0000026597, + 0.0000026510, 0.0000026386, 0.0000026283, 0.0000026232, 0.0000026233, + 0.0000026230, 0.0000026226, 0.0000026264, 0.0000026300, 0.0000026285, + 0.0000026242, 0.0000026205, 0.0000026138, 0.0000026025, 0.0000025888, + 0.0000025825, 0.0000026004, 0.0000026248, 0.0000026623, 0.0000027299, + 0.0000027605, 0.0000027817, 0.0000027943, 0.0000028112, 0.0000028152, + 0.0000028153, 0.0000028153, 0.0000028142, 0.0000028081, 0.0000027963, + 0.0000027855, 0.0000027800, 0.0000027748, 0.0000027684, 0.0000027630, + 0.0000027611, 0.0000027650, 0.0000027704, 0.0000027790, 0.0000027855, + 0.0000027889, 0.0000027888, 0.0000027738, 0.0000027682, 0.0000027784, + 0.0000027830, 0.0000027936, 0.0000027918, 0.0000027763, 0.0000027606, + 0.0000027466, 0.0000027474, 0.0000027501, 0.0000027465, 0.0000027415, + 0.0000027267, 0.0000027125, 0.0000027058, 0.0000027041, 0.0000026982, + 0.0000026978, 0.0000026968, 0.0000026944, 0.0000026910, 0.0000026879, + 0.0000026858, 0.0000026842, 0.0000026817, 0.0000026793, 0.0000026764, + 0.0000026729, 0.0000026712, 0.0000026745, 0.0000026805, 0.0000026818, + 0.0000026704, 0.0000026572, 0.0000026517, 0.0000026480, 0.0000026402, + 0.0000026317, 0.0000026230, 0.0000026133, 0.0000026039, 0.0000025979, + 0.0000025955, 0.0000025932, 0.0000025901, 0.0000025887, 0.0000025893, + 0.0000025964, 0.0000026057, 0.0000026153, 0.0000026239, 0.0000026307, + 0.0000026351, 0.0000026361, 0.0000026356, 0.0000026336, 0.0000026306, + 0.0000026287, 0.0000026290, 0.0000026308, 0.0000026315, 0.0000026292, + 0.0000026233, 0.0000026139, 0.0000026034, 0.0000025929, 0.0000025844, + 0.0000025813, 0.0000025842, 0.0000025855, 0.0000025833, 0.0000025800, + 0.0000025757, 0.0000025738, 0.0000025735, 0.0000025725, 0.0000025681, + 0.0000025598, 0.0000025495, 0.0000025413, 0.0000025387, 0.0000025422, + 0.0000025474, 0.0000025488, 0.0000025452, 0.0000025388, 0.0000025294, + 0.0000025184, 0.0000025098, 0.0000025060, 0.0000025046, 0.0000025063, + 0.0000025066, 0.0000025038, 0.0000024987, 0.0000024938, 0.0000024893, + 0.0000024841, 0.0000024840, 0.0000024928, 0.0000024989, 0.0000024985, + 0.0000024980, 0.0000025061, 0.0000025189, 0.0000025201, 0.0000025245, + 0.0000025484, 0.0000025592, 0.0000025486, 0.0000025313, 0.0000025227, + 0.0000025357, 0.0000025653, 0.0000025738, 0.0000025819, 0.0000026117, + 0.0000026241, 0.0000026182, 0.0000026186, 0.0000026217, 0.0000026206, + 0.0000026152, 0.0000026098, 0.0000026059, 0.0000026030, 0.0000025999, + 0.0000025943, 0.0000025904, 0.0000025895, 0.0000025899, 0.0000025891, + 0.0000025871, 0.0000025867, 0.0000025884, 0.0000025946, 0.0000026021, + 0.0000026063, 0.0000026106, 0.0000026234, 0.0000026468, 0.0000026676, + 0.0000026767, 0.0000026809, 0.0000026836, 0.0000026845, 0.0000026862, + 0.0000026901, 0.0000026951, 0.0000027005, 0.0000027012, 0.0000026939, + 0.0000026858, 0.0000026893, 0.0000027077, 0.0000027172, 0.0000027179, + 0.0000027275, 0.0000027653, 0.0000028096, 0.0000028138, 0.0000028046, + 0.0000028035, 0.0000028151, 0.0000028313, 0.0000028385, 0.0000028332, + 0.0000028207, 0.0000028017, 0.0000027893, 0.0000028003, 0.0000028055, + 0.0000028122, 0.0000028088, 0.0000027931, 0.0000027849, 0.0000027890, + 0.0000027952, 0.0000028016, 0.0000028026, 0.0000028031, 0.0000028075, + 0.0000028124, 0.0000028189, 0.0000028266, 0.0000028329, 0.0000028373, + 0.0000028408, 0.0000028444, 0.0000028485, 0.0000028518, 0.0000028537, + 0.0000028545, 0.0000028547, 0.0000028560, 0.0000028560, 0.0000028589, + 0.0000028627, 0.0000028645, 0.0000028643, 0.0000028629, 0.0000028598, + 0.0000028576, 0.0000028535, 0.0000028491, 0.0000028445, 0.0000028423, + 0.0000028409, 0.0000028393, 0.0000028390, 0.0000028398, 0.0000028434, + 0.0000028503, 0.0000028602, 0.0000028698, 0.0000028796, 0.0000028903, + 0.0000029016, 0.0000029139, 0.0000029223, 0.0000029285, 0.0000029318, + 0.0000029294, 0.0000029258, 0.0000029245, 0.0000029212, 0.0000029097, + 0.0000028899, 0.0000028744, 0.0000028635, 0.0000028393, 0.0000028294, + 0.0000028413, 0.0000028535, 0.0000028555, 0.0000028554, 0.0000028593, + 0.0000028652, 0.0000028738, 0.0000028823, 0.0000028886, 0.0000028937, + 0.0000028939, 0.0000028913, 0.0000028869, 0.0000028838, 0.0000028801, + 0.0000028749, 0.0000028693, 0.0000028632, 0.0000028582, 0.0000028533, + 0.0000028483, 0.0000028424, 0.0000028372, 0.0000028329, 0.0000028292, + 0.0000028261, 0.0000028226, 0.0000028200, 0.0000028170, 0.0000028136, + 0.0000028099, 0.0000028064, 0.0000028033, 0.0000028015, 0.0000028005, + 0.0000028001, 0.0000027988, 0.0000027969, 0.0000027950, 0.0000027936, + 0.0000027932, 0.0000027939, 0.0000027959, 0.0000028007, 0.0000028079, + 0.0000028177, 0.0000028291, 0.0000028391, 0.0000028445, 0.0000028442, + 0.0000028395, 0.0000028352, 0.0000028343, 0.0000028343, 0.0000028334, + 0.0000028341, 0.0000028371, 0.0000028388, 0.0000028365, 0.0000028296, + 0.0000028229, 0.0000028195, 0.0000028182, 0.0000028170, 0.0000028162, + 0.0000028156, 0.0000028161, 0.0000028165, 0.0000028167, 0.0000028160, + 0.0000028161, 0.0000028174, 0.0000028192, 0.0000028203, 0.0000028220, + 0.0000028259, 0.0000028299, 0.0000028304, 0.0000028272, 0.0000028232, + 0.0000028221, 0.0000028240, 0.0000028262, 0.0000028240, 0.0000028182, + 0.0000028144, 0.0000028141, 0.0000028149, 0.0000028138, 0.0000028091, + 0.0000028025, 0.0000027970, 0.0000027916, 0.0000027842, 0.0000027781, + 0.0000027773, 0.0000027817, 0.0000027846, 0.0000027823, 0.0000027784, + 0.0000027779, 0.0000027811, 0.0000027856, 0.0000027895, 0.0000027924, + 0.0000027933, 0.0000027950, 0.0000027979, 0.0000027999, 0.0000028011, + 0.0000028031, 0.0000028078, 0.0000028132, 0.0000028149, 0.0000028118, + 0.0000028057, 0.0000027982, 0.0000027923, 0.0000027885, 0.0000027857, + 0.0000027836, 0.0000027825, 0.0000027847, 0.0000027898, 0.0000027959, + 0.0000028022, 0.0000028080, 0.0000028109, 0.0000028096, 0.0000028088, + 0.0000028114, 0.0000028179, 0.0000028248, 0.0000028282, 0.0000028294, + 0.0000028289, 0.0000028252, 0.0000028167, 0.0000027982, 0.0000027708, + 0.0000027428, 0.0000027252, 0.0000027209, 0.0000027226, 0.0000027313, + 0.0000027456, 0.0000027596, 0.0000027721, 0.0000027833, 0.0000027874, + 0.0000027815, 0.0000027723, 0.0000027646, 0.0000027558, 0.0000027494, + 0.0000027496, 0.0000027556, 0.0000027603, 0.0000027638, 0.0000027680, + 0.0000027747, 0.0000027836, 0.0000027865, 0.0000027836, 0.0000027791, + 0.0000027758, 0.0000027717, 0.0000027634, 0.0000027535, 0.0000027461, + 0.0000027423, 0.0000027389, 0.0000027349, 0.0000027319, 0.0000027355, + 0.0000027440, 0.0000027505, 0.0000027511, 0.0000027507, 0.0000027534, + 0.0000027599, 0.0000027682, 0.0000027758, 0.0000027817, 0.0000027814, + 0.0000027762, 0.0000027749, 0.0000027810, 0.0000027909, 0.0000028078, + 0.0000028189, 0.0000028195, 0.0000028154, 0.0000028111, 0.0000028138, + 0.0000028223, 0.0000028304, 0.0000028386, 0.0000028406, 0.0000028314, + 0.0000028247, 0.0000028319, 0.0000028297, 0.0000028068, 0.0000028070, + 0.0000028411, 0.0000028654, 0.0000028657, 0.0000028574, 0.0000028527, + 0.0000028512, 0.0000028437, 0.0000028269, 0.0000028161, 0.0000028099, + 0.0000028031, 0.0000027984, 0.0000027996, 0.0000028017, 0.0000027908, + 0.0000027769, 0.0000027774, 0.0000027826, 0.0000027920, 0.0000028029, + 0.0000028134, 0.0000028204, 0.0000028207, 0.0000028190, 0.0000028222, + 0.0000028325, 0.0000028460, 0.0000028592, 0.0000028707, 0.0000028761, + 0.0000028715, 0.0000028534, 0.0000028404, 0.0000028432, 0.0000028545, + 0.0000028646, 0.0000028695, 0.0000028712, 0.0000028760, 0.0000028822, + 0.0000028859, 0.0000028848, 0.0000028885, 0.0000029006, 0.0000029014, + 0.0000028976, 0.0000029040, 0.0000029090, 0.0000029042, 0.0000028769, + 0.0000028572, 0.0000028489, 0.0000028589, 0.0000028744, 0.0000028650, + 0.0000028353, 0.0000028282, 0.0000028353, 0.0000028350, 0.0000028230, + 0.0000028041, 0.0000027874, 0.0000027771, 0.0000027749, 0.0000027790, + 0.0000027846, 0.0000027874, 0.0000027873, 0.0000027858, 0.0000027818, + 0.0000027753, 0.0000027702, 0.0000027684, 0.0000027687, 0.0000027672, + 0.0000027622, 0.0000027556, 0.0000027496, 0.0000027473, 0.0000027485, + 0.0000027505, 0.0000027504, 0.0000027494, 0.0000027494, 0.0000027512, + 0.0000027542, 0.0000027568, 0.0000027584, 0.0000027594, 0.0000027599, + 0.0000027596, 0.0000027585, 0.0000027578, 0.0000027576, 0.0000027593, + 0.0000027626, 0.0000027663, 0.0000027698, 0.0000027723, 0.0000027729, + 0.0000027733, 0.0000027734, 0.0000027721, 0.0000027664, 0.0000027543, + 0.0000027420, 0.0000027346, 0.0000027313, 0.0000027295, 0.0000027269, + 0.0000027250, 0.0000027251, 0.0000027288, 0.0000027338, 0.0000027365, + 0.0000027364, 0.0000027353, 0.0000027350, 0.0000027362, 0.0000027387, + 0.0000027423, 0.0000027455, 0.0000027467, 0.0000027459, 0.0000027432, + 0.0000027396, 0.0000027371, 0.0000027362, 0.0000027365, 0.0000027372, + 0.0000027377, 0.0000027376, 0.0000027373, 0.0000027365, 0.0000027353, + 0.0000027345, 0.0000027344, 0.0000027349, 0.0000027353, 0.0000027350, + 0.0000027331, 0.0000027306, 0.0000027283, 0.0000027258, 0.0000027224, + 0.0000027193, 0.0000027171, 0.0000027148, 0.0000027110, 0.0000027055, + 0.0000026995, 0.0000026947, 0.0000026927, 0.0000026925, 0.0000026922, + 0.0000026917, 0.0000026916, 0.0000026913, 0.0000026910, 0.0000026880, + 0.0000026800, 0.0000026710, 0.0000026604, 0.0000026443, 0.0000026287, + 0.0000026206, 0.0000026164, 0.0000026124, 0.0000026065, 0.0000026035, + 0.0000026067, 0.0000026173, 0.0000026346, 0.0000026543, 0.0000026716, + 0.0000026857, 0.0000026974, 0.0000027095, 0.0000027231, 0.0000027361, + 0.0000027465, 0.0000027555, 0.0000027646, 0.0000027712, 0.0000027745, + 0.0000027764, 0.0000027781, 0.0000027802, 0.0000027839, 0.0000027888, + 0.0000027938, 0.0000027988, 0.0000028044, 0.0000028100, 0.0000028159, + 0.0000028225, 0.0000028292, 0.0000028365, 0.0000028442, 0.0000028536, + 0.0000028639, 0.0000028732, 0.0000028808, 0.0000028859, 0.0000028885, + 0.0000028870, 0.0000028857, 0.0000028845, 0.0000028850, 0.0000028868, + 0.0000028880, 0.0000028879, 0.0000028859, 0.0000028833, 0.0000028831, + 0.0000028855, 0.0000028869, 0.0000028868, 0.0000028822, 0.0000028758, + 0.0000028722, 0.0000028723, 0.0000028747, 0.0000028755, 0.0000028702, + 0.0000028572, 0.0000028416, 0.0000028299, 0.0000028270, 0.0000028324, + 0.0000028400, 0.0000028466, 0.0000028532, 0.0000028605, 0.0000028667, + 0.0000028693, 0.0000028675, 0.0000028598, 0.0000028474, 0.0000028349, + 0.0000028287, 0.0000028299, 0.0000028367, 0.0000028443, 0.0000028497, + 0.0000028516, 0.0000028500, 0.0000028466, 0.0000028450, 0.0000028466, + 0.0000028488, 0.0000028490, 0.0000028479, 0.0000028469, 0.0000028469, + 0.0000028481, 0.0000028473, 0.0000028442, 0.0000028389, 0.0000028338, + 0.0000028303, 0.0000028284, 0.0000028272, 0.0000028253, 0.0000028225, + 0.0000028181, 0.0000028125, 0.0000028069, 0.0000028029, 0.0000027994, + 0.0000027951, 0.0000027898, 0.0000027842, 0.0000027785, 0.0000027725, + 0.0000027658, 0.0000027589, 0.0000027524, 0.0000027458, 0.0000027387, + 0.0000027310, 0.0000027239, 0.0000027219, 0.0000027303, 0.0000027510, + 0.0000027742, 0.0000027867, 0.0000027877, 0.0000027790, 0.0000027668, + 0.0000027611, 0.0000027625, 0.0000027726, 0.0000027809, 0.0000027731, + 0.0000027558, 0.0000027526, 0.0000027611, 0.0000027666, 0.0000027675, + 0.0000027659, 0.0000027538, 0.0000027353, 0.0000027300, 0.0000027401, + 0.0000027462, 0.0000027362, 0.0000027298, 0.0000027411, 0.0000027524, + 0.0000027509, 0.0000027449, 0.0000027438, 0.0000027464, 0.0000027430, + 0.0000027274, 0.0000027159, 0.0000027147, 0.0000027150, 0.0000027167, + 0.0000027229, 0.0000027286, 0.0000027294, 0.0000027269, 0.0000027253, + 0.0000027242, 0.0000027217, 0.0000027159, 0.0000027079, 0.0000027025, + 0.0000027051, 0.0000027140, 0.0000027215, 0.0000027241, 0.0000027256, + 0.0000027272, 0.0000027264, 0.0000027255, 0.0000027252, 0.0000027235, + 0.0000027199, 0.0000027190, 0.0000027256, 0.0000027324, 0.0000027309, + 0.0000027239, 0.0000027198, 0.0000027200, 0.0000027165, 0.0000027055, + 0.0000026938, 0.0000026899, 0.0000026902, 0.0000026911, 0.0000026918, + 0.0000026908, 0.0000026878, 0.0000026866, 0.0000026878, 0.0000026900, + 0.0000026913, 0.0000026897, 0.0000026852, 0.0000026792, 0.0000026730, + 0.0000026663, 0.0000026580, 0.0000026490, 0.0000026411, 0.0000026359, + 0.0000026346, 0.0000026370, 0.0000026427, 0.0000026483, 0.0000026507, + 0.0000026502, 0.0000026448, 0.0000026326, 0.0000026178, 0.0000026010, + 0.0000025809, 0.0000025632, 0.0000025525, 0.0000025508, 0.0000025554, + 0.0000025660, 0.0000025911, 0.0000026298, 0.0000026492, 0.0000026442, + 0.0000026368, 0.0000026438, 0.0000026540, 0.0000026602, 0.0000026622, + 0.0000026595, 0.0000026560, 0.0000026516, 0.0000026463, 0.0000026399, + 0.0000026341, 0.0000026294, 0.0000026269, 0.0000026318, 0.0000026333, + 0.0000026309, 0.0000026272, 0.0000026247, 0.0000026226, 0.0000026183, + 0.0000026090, 0.0000025931, 0.0000025880, 0.0000026108, 0.0000026300, + 0.0000027024, 0.0000027454, 0.0000027723, 0.0000027849, 0.0000028026, + 0.0000028103, 0.0000028120, 0.0000028131, 0.0000028124, 0.0000028067, + 0.0000027967, 0.0000027887, 0.0000027836, 0.0000027774, 0.0000027707, + 0.0000027647, 0.0000027633, 0.0000027677, 0.0000027745, 0.0000027814, + 0.0000027852, 0.0000027882, 0.0000027848, 0.0000027683, 0.0000027691, + 0.0000027788, 0.0000027832, 0.0000027931, 0.0000027887, 0.0000027723, + 0.0000027562, 0.0000027444, 0.0000027471, 0.0000027489, 0.0000027452, + 0.0000027390, 0.0000027239, 0.0000027104, 0.0000027027, 0.0000026990, + 0.0000026921, 0.0000026907, 0.0000026894, 0.0000026874, 0.0000026849, + 0.0000026824, 0.0000026810, 0.0000026806, 0.0000026804, 0.0000026798, + 0.0000026780, 0.0000026741, 0.0000026695, 0.0000026681, 0.0000026737, + 0.0000026834, 0.0000026850, 0.0000026732, 0.0000026591, 0.0000026524, + 0.0000026460, 0.0000026360, 0.0000026273, 0.0000026210, 0.0000026133, + 0.0000026046, 0.0000025982, 0.0000025949, 0.0000025930, 0.0000025919, + 0.0000025934, 0.0000026002, 0.0000026097, 0.0000026198, 0.0000026289, + 0.0000026362, 0.0000026408, 0.0000026412, 0.0000026398, 0.0000026385, + 0.0000026369, 0.0000026361, 0.0000026372, 0.0000026396, 0.0000026401, + 0.0000026377, 0.0000026319, 0.0000026224, 0.0000026114, 0.0000026009, + 0.0000025921, 0.0000025884, 0.0000025891, 0.0000025886, 0.0000025861, + 0.0000025833, 0.0000025792, 0.0000025758, 0.0000025730, 0.0000025703, + 0.0000025661, 0.0000025594, 0.0000025511, 0.0000025433, 0.0000025391, + 0.0000025415, 0.0000025475, 0.0000025514, 0.0000025512, 0.0000025473, + 0.0000025391, 0.0000025279, 0.0000025176, 0.0000025131, 0.0000025126, + 0.0000025165, 0.0000025206, 0.0000025219, 0.0000025181, 0.0000025090, + 0.0000025007, 0.0000024933, 0.0000024836, 0.0000024779, 0.0000024845, + 0.0000024939, 0.0000024974, 0.0000024971, 0.0000025021, 0.0000025156, + 0.0000025188, 0.0000025196, 0.0000025432, 0.0000025599, 0.0000025492, + 0.0000025300, 0.0000025233, 0.0000025377, 0.0000025655, 0.0000025727, + 0.0000025817, 0.0000026102, 0.0000026177, 0.0000026141, 0.0000026196, + 0.0000026241, 0.0000026217, 0.0000026154, 0.0000026100, 0.0000026080, + 0.0000026082, 0.0000026065, 0.0000025998, 0.0000025927, 0.0000025891, + 0.0000025872, 0.0000025843, 0.0000025818, 0.0000025816, 0.0000025859, + 0.0000025950, 0.0000026029, 0.0000026066, 0.0000026087, 0.0000026170, + 0.0000026384, 0.0000026614, 0.0000026727, 0.0000026775, 0.0000026807, + 0.0000026816, 0.0000026845, 0.0000026889, 0.0000026946, 0.0000026976, + 0.0000026942, 0.0000026847, 0.0000026803, 0.0000026894, 0.0000027064, + 0.0000027110, 0.0000027115, 0.0000027223, 0.0000027585, 0.0000028042, + 0.0000028110, 0.0000028033, 0.0000028017, 0.0000028147, 0.0000028331, + 0.0000028381, 0.0000028296, 0.0000028174, 0.0000027995, 0.0000027835, + 0.0000027958, 0.0000028056, 0.0000028130, 0.0000028121, 0.0000027997, + 0.0000027925, 0.0000027921, 0.0000027948, 0.0000027978, 0.0000027982, + 0.0000027979, 0.0000028009, 0.0000028058, 0.0000028124, 0.0000028197, + 0.0000028256, 0.0000028297, 0.0000028318, 0.0000028358, 0.0000028414, + 0.0000028457, 0.0000028492, 0.0000028522, 0.0000028529, 0.0000028534, + 0.0000028528, 0.0000028537, 0.0000028569, 0.0000028605, 0.0000028643, + 0.0000028657, 0.0000028654, 0.0000028634, 0.0000028572, 0.0000028512, + 0.0000028463, 0.0000028435, 0.0000028411, 0.0000028389, 0.0000028391, + 0.0000028398, 0.0000028416, 0.0000028460, 0.0000028538, 0.0000028632, + 0.0000028722, 0.0000028820, 0.0000028930, 0.0000029059, 0.0000029143, + 0.0000029201, 0.0000029234, 0.0000029205, 0.0000029161, 0.0000029147, + 0.0000029125, 0.0000029040, 0.0000028863, 0.0000028682, 0.0000028595, + 0.0000028459, 0.0000028258, 0.0000028251, 0.0000028392, 0.0000028493, + 0.0000028532, 0.0000028568, 0.0000028606, 0.0000028662, 0.0000028719, + 0.0000028761, 0.0000028803, 0.0000028810, 0.0000028791, 0.0000028747, + 0.0000028702, 0.0000028685, 0.0000028663, 0.0000028645, 0.0000028622, + 0.0000028600, 0.0000028580, 0.0000028557, 0.0000028511, 0.0000028461, + 0.0000028406, 0.0000028359, 0.0000028321, 0.0000028282, 0.0000028258, + 0.0000028243, 0.0000028217, 0.0000028180, 0.0000028134, 0.0000028082, + 0.0000028044, 0.0000028025, 0.0000028020, 0.0000028021, 0.0000028010, + 0.0000027981, 0.0000027943, 0.0000027904, 0.0000027875, 0.0000027865, + 0.0000027885, 0.0000027932, 0.0000027995, 0.0000028079, 0.0000028192, + 0.0000028313, 0.0000028391, 0.0000028401, 0.0000028372, 0.0000028356, + 0.0000028348, 0.0000028321, 0.0000028303, 0.0000028316, 0.0000028346, + 0.0000028355, 0.0000028335, 0.0000028294, 0.0000028273, 0.0000028262, + 0.0000028234, 0.0000028193, 0.0000028160, 0.0000028153, 0.0000028160, + 0.0000028189, 0.0000028206, 0.0000028211, 0.0000028211, 0.0000028215, + 0.0000028230, 0.0000028244, 0.0000028249, 0.0000028263, 0.0000028280, + 0.0000028270, 0.0000028224, 0.0000028187, 0.0000028196, 0.0000028226, + 0.0000028221, 0.0000028162, 0.0000028098, 0.0000028074, 0.0000028083, + 0.0000028093, 0.0000028075, 0.0000028026, 0.0000027964, 0.0000027906, + 0.0000027838, 0.0000027755, 0.0000027703, 0.0000027713, 0.0000027769, + 0.0000027803, 0.0000027786, 0.0000027749, 0.0000027735, 0.0000027774, + 0.0000027829, 0.0000027859, 0.0000027868, 0.0000027860, 0.0000027864, + 0.0000027893, 0.0000027936, 0.0000027977, 0.0000028028, 0.0000028091, + 0.0000028130, 0.0000028127, 0.0000028092, 0.0000028034, 0.0000027977, + 0.0000027914, 0.0000027854, 0.0000027799, 0.0000027759, 0.0000027758, + 0.0000027808, 0.0000027878, 0.0000027941, 0.0000027989, 0.0000028030, + 0.0000028047, 0.0000028036, 0.0000028033, 0.0000028059, 0.0000028116, + 0.0000028196, 0.0000028259, 0.0000028294, 0.0000028276, 0.0000028231, + 0.0000028153, 0.0000028065, 0.0000027886, 0.0000027614, 0.0000027351, + 0.0000027212, 0.0000027173, 0.0000027223, 0.0000027357, 0.0000027492, + 0.0000027596, 0.0000027712, 0.0000027791, 0.0000027767, 0.0000027684, + 0.0000027597, 0.0000027503, 0.0000027439, 0.0000027443, 0.0000027524, + 0.0000027595, 0.0000027642, 0.0000027666, 0.0000027696, 0.0000027769, + 0.0000027831, 0.0000027840, 0.0000027812, 0.0000027774, 0.0000027741, + 0.0000027694, 0.0000027617, 0.0000027505, 0.0000027416, 0.0000027357, + 0.0000027270, 0.0000027138, 0.0000027065, 0.0000027111, 0.0000027210, + 0.0000027299, 0.0000027399, 0.0000027528, 0.0000027628, 0.0000027698, + 0.0000027731, 0.0000027756, 0.0000027758, 0.0000027718, 0.0000027659, + 0.0000027631, 0.0000027683, 0.0000027870, 0.0000028070, 0.0000028156, + 0.0000028151, 0.0000028111, 0.0000028140, 0.0000028225, 0.0000028320, + 0.0000028422, 0.0000028439, 0.0000028338, 0.0000028279, 0.0000028341, + 0.0000028301, 0.0000028052, 0.0000028034, 0.0000028335, 0.0000028611, + 0.0000028634, 0.0000028556, 0.0000028491, 0.0000028461, 0.0000028346, + 0.0000028211, 0.0000028175, 0.0000028164, 0.0000028096, 0.0000028004, + 0.0000028001, 0.0000028035, 0.0000027958, 0.0000027781, 0.0000027755, + 0.0000027784, 0.0000027875, 0.0000027978, 0.0000028115, 0.0000028180, + 0.0000028186, 0.0000028173, 0.0000028216, 0.0000028308, 0.0000028428, + 0.0000028578, 0.0000028713, 0.0000028769, 0.0000028691, 0.0000028454, + 0.0000028367, 0.0000028457, 0.0000028589, 0.0000028676, 0.0000028729, + 0.0000028764, 0.0000028800, 0.0000028835, 0.0000028851, 0.0000028843, + 0.0000028873, 0.0000028997, 0.0000029026, 0.0000028978, 0.0000029030, + 0.0000029099, 0.0000029072, 0.0000028806, 0.0000028609, 0.0000028535, + 0.0000028647, 0.0000028754, 0.0000028602, 0.0000028319, 0.0000028294, + 0.0000028351, 0.0000028345, 0.0000028230, 0.0000028074, 0.0000027952, + 0.0000027876, 0.0000027859, 0.0000027893, 0.0000027924, 0.0000027916, + 0.0000027886, 0.0000027876, 0.0000027868, 0.0000027839, 0.0000027806, + 0.0000027797, 0.0000027805, 0.0000027800, 0.0000027761, 0.0000027693, + 0.0000027609, 0.0000027537, 0.0000027522, 0.0000027545, 0.0000027567, + 0.0000027563, 0.0000027544, 0.0000027531, 0.0000027548, 0.0000027596, + 0.0000027642, 0.0000027666, 0.0000027676, 0.0000027665, 0.0000027645, + 0.0000027635, 0.0000027627, 0.0000027629, 0.0000027643, 0.0000027663, + 0.0000027684, 0.0000027714, 0.0000027749, 0.0000027774, 0.0000027770, + 0.0000027735, 0.0000027707, 0.0000027703, 0.0000027696, 0.0000027639, + 0.0000027521, 0.0000027405, 0.0000027328, 0.0000027287, 0.0000027266, + 0.0000027250, 0.0000027237, 0.0000027231, 0.0000027252, 0.0000027292, + 0.0000027320, 0.0000027336, 0.0000027344, 0.0000027348, 0.0000027356, + 0.0000027366, 0.0000027377, 0.0000027389, 0.0000027394, 0.0000027389, + 0.0000027381, 0.0000027372, 0.0000027359, 0.0000027346, 0.0000027330, + 0.0000027310, 0.0000027297, 0.0000027292, 0.0000027296, 0.0000027314, + 0.0000027342, 0.0000027373, 0.0000027403, 0.0000027425, 0.0000027422, + 0.0000027392, 0.0000027356, 0.0000027323, 0.0000027286, 0.0000027255, + 0.0000027244, 0.0000027248, 0.0000027248, 0.0000027231, 0.0000027186, + 0.0000027123, 0.0000027064, 0.0000027017, 0.0000026980, 0.0000026955, + 0.0000026932, 0.0000026906, 0.0000026891, 0.0000026882, 0.0000026862, + 0.0000026807, 0.0000026722, 0.0000026576, 0.0000026393, 0.0000026258, + 0.0000026184, 0.0000026127, 0.0000026056, 0.0000026007, 0.0000026005, + 0.0000026075, 0.0000026230, 0.0000026418, 0.0000026596, 0.0000026756, + 0.0000026897, 0.0000027030, 0.0000027163, 0.0000027274, 0.0000027345, + 0.0000027397, 0.0000027459, 0.0000027526, 0.0000027583, 0.0000027632, + 0.0000027677, 0.0000027719, 0.0000027767, 0.0000027809, 0.0000027838, + 0.0000027860, 0.0000027888, 0.0000027923, 0.0000027962, 0.0000028009, + 0.0000028062, 0.0000028138, 0.0000028220, 0.0000028310, 0.0000028409, + 0.0000028507, 0.0000028597, 0.0000028680, 0.0000028751, 0.0000028803, + 0.0000028850, 0.0000028874, 0.0000028910, 0.0000028927, 0.0000028925, + 0.0000028903, 0.0000028856, 0.0000028805, 0.0000028791, 0.0000028826, + 0.0000028858, 0.0000028862, 0.0000028829, 0.0000028780, 0.0000028767, + 0.0000028776, 0.0000028793, 0.0000028797, 0.0000028742, 0.0000028608, + 0.0000028437, 0.0000028320, 0.0000028319, 0.0000028404, 0.0000028473, + 0.0000028506, 0.0000028542, 0.0000028609, 0.0000028687, 0.0000028730, + 0.0000028716, 0.0000028641, 0.0000028515, 0.0000028373, 0.0000028271, + 0.0000028249, 0.0000028301, 0.0000028388, 0.0000028464, 0.0000028512, + 0.0000028519, 0.0000028497, 0.0000028467, 0.0000028473, 0.0000028493, + 0.0000028489, 0.0000028457, 0.0000028417, 0.0000028398, 0.0000028396, + 0.0000028392, 0.0000028373, 0.0000028332, 0.0000028273, 0.0000028213, + 0.0000028159, 0.0000028103, 0.0000028052, 0.0000028017, 0.0000027994, + 0.0000027969, 0.0000027936, 0.0000027907, 0.0000027878, 0.0000027839, + 0.0000027787, 0.0000027730, 0.0000027671, 0.0000027608, 0.0000027541, + 0.0000027475, 0.0000027423, 0.0000027383, 0.0000027344, 0.0000027297, + 0.0000027236, 0.0000027182, 0.0000027165, 0.0000027257, 0.0000027492, + 0.0000027728, 0.0000027833, 0.0000027810, 0.0000027705, 0.0000027616, + 0.0000027597, 0.0000027641, 0.0000027760, 0.0000027803, 0.0000027652, + 0.0000027488, 0.0000027489, 0.0000027572, 0.0000027611, 0.0000027566, + 0.0000027405, 0.0000027263, 0.0000027278, 0.0000027421, 0.0000027471, + 0.0000027353, 0.0000027314, 0.0000027448, 0.0000027548, 0.0000027507, + 0.0000027448, 0.0000027436, 0.0000027434, 0.0000027359, 0.0000027206, + 0.0000027129, 0.0000027131, 0.0000027130, 0.0000027134, 0.0000027172, + 0.0000027225, 0.0000027259, 0.0000027260, 0.0000027242, 0.0000027216, + 0.0000027186, 0.0000027150, 0.0000027093, 0.0000027040, 0.0000027040, + 0.0000027110, 0.0000027200, 0.0000027249, 0.0000027264, 0.0000027281, + 0.0000027283, 0.0000027282, 0.0000027287, 0.0000027287, 0.0000027263, + 0.0000027226, 0.0000027232, 0.0000027304, 0.0000027333, 0.0000027286, + 0.0000027216, 0.0000027199, 0.0000027196, 0.0000027146, 0.0000027026, + 0.0000026916, 0.0000026882, 0.0000026879, 0.0000026882, 0.0000026883, + 0.0000026868, 0.0000026855, 0.0000026862, 0.0000026880, 0.0000026895, + 0.0000026895, 0.0000026874, 0.0000026833, 0.0000026777, 0.0000026712, + 0.0000026637, 0.0000026553, 0.0000026466, 0.0000026394, 0.0000026356, + 0.0000026353, 0.0000026389, 0.0000026450, 0.0000026492, 0.0000026498, + 0.0000026470, 0.0000026388, 0.0000026267, 0.0000026146, 0.0000026006, + 0.0000025820, 0.0000025643, 0.0000025534, 0.0000025483, 0.0000025497, + 0.0000025570, 0.0000025703, 0.0000026026, 0.0000026390, 0.0000026464, + 0.0000026375, 0.0000026371, 0.0000026459, 0.0000026545, 0.0000026589, + 0.0000026588, 0.0000026566, 0.0000026539, 0.0000026540, 0.0000026533, + 0.0000026504, 0.0000026456, 0.0000026446, 0.0000026466, 0.0000026458, + 0.0000026431, 0.0000026368, 0.0000026306, 0.0000026250, 0.0000026205, + 0.0000026202, 0.0000026132, 0.0000025914, 0.0000025949, 0.0000026168, + 0.0000026677, 0.0000027312, 0.0000027626, 0.0000027754, 0.0000027936, + 0.0000028054, 0.0000028097, 0.0000028114, 0.0000028108, 0.0000028043, + 0.0000027956, 0.0000027890, 0.0000027832, 0.0000027771, 0.0000027710, + 0.0000027664, 0.0000027675, 0.0000027730, 0.0000027782, 0.0000027818, + 0.0000027846, 0.0000027872, 0.0000027773, 0.0000027656, 0.0000027715, + 0.0000027785, 0.0000027838, 0.0000027921, 0.0000027849, 0.0000027682, + 0.0000027515, 0.0000027408, 0.0000027461, 0.0000027470, 0.0000027432, + 0.0000027358, 0.0000027200, 0.0000027072, 0.0000027000, 0.0000026950, + 0.0000026876, 0.0000026856, 0.0000026843, 0.0000026835, 0.0000026823, + 0.0000026807, 0.0000026801, 0.0000026799, 0.0000026800, 0.0000026795, + 0.0000026779, 0.0000026744, 0.0000026697, 0.0000026659, 0.0000026662, + 0.0000026746, 0.0000026861, 0.0000026865, 0.0000026730, 0.0000026578, + 0.0000026502, 0.0000026414, 0.0000026316, 0.0000026249, 0.0000026204, + 0.0000026147, 0.0000026072, 0.0000026011, 0.0000025983, 0.0000025972, + 0.0000025994, 0.0000026060, 0.0000026154, 0.0000026255, 0.0000026342, + 0.0000026413, 0.0000026454, 0.0000026454, 0.0000026435, 0.0000026424, + 0.0000026423, 0.0000026431, 0.0000026452, 0.0000026468, 0.0000026468, + 0.0000026437, 0.0000026371, 0.0000026296, 0.0000026213, 0.0000026129, + 0.0000026048, 0.0000025993, 0.0000025969, 0.0000025934, 0.0000025883, + 0.0000025846, 0.0000025808, 0.0000025778, 0.0000025738, 0.0000025696, + 0.0000025629, 0.0000025550, 0.0000025478, 0.0000025422, 0.0000025394, + 0.0000025411, 0.0000025463, 0.0000025514, 0.0000025533, 0.0000025526, + 0.0000025477, 0.0000025392, 0.0000025299, 0.0000025230, 0.0000025195, + 0.0000025222, 0.0000025281, 0.0000025333, 0.0000025359, 0.0000025328, + 0.0000025233, 0.0000025099, 0.0000024964, 0.0000024829, 0.0000024729, + 0.0000024753, 0.0000024901, 0.0000024970, 0.0000024972, 0.0000024995, + 0.0000025104, 0.0000025172, 0.0000025176, 0.0000025386, 0.0000025592, + 0.0000025491, 0.0000025292, 0.0000025246, 0.0000025392, 0.0000025650, + 0.0000025708, 0.0000025804, 0.0000026071, 0.0000026116, 0.0000026122, + 0.0000026223, 0.0000026252, 0.0000026207, 0.0000026138, 0.0000026095, + 0.0000026097, 0.0000026109, 0.0000026091, 0.0000026024, 0.0000025940, + 0.0000025893, 0.0000025861, 0.0000025818, 0.0000025781, 0.0000025793, + 0.0000025883, 0.0000025986, 0.0000026038, 0.0000026044, 0.0000026046, + 0.0000026112, 0.0000026320, 0.0000026550, 0.0000026670, 0.0000026725, + 0.0000026764, 0.0000026787, 0.0000026829, 0.0000026884, 0.0000026929, + 0.0000026924, 0.0000026850, 0.0000026755, 0.0000026759, 0.0000026909, + 0.0000027034, 0.0000027053, 0.0000027060, 0.0000027163, 0.0000027512, + 0.0000027972, 0.0000028090, 0.0000028027, 0.0000028007, 0.0000028139, + 0.0000028331, 0.0000028360, 0.0000028260, 0.0000028154, 0.0000027988, + 0.0000027809, 0.0000027900, 0.0000028045, 0.0000028139, 0.0000028141, + 0.0000028065, 0.0000028006, 0.0000027976, 0.0000027975, 0.0000027973, + 0.0000027965, 0.0000027949, 0.0000027960, 0.0000028010, 0.0000028078, + 0.0000028147, 0.0000028208, 0.0000028251, 0.0000028287, 0.0000028331, + 0.0000028375, 0.0000028405, 0.0000028414, 0.0000028420, 0.0000028427, + 0.0000028442, 0.0000028461, 0.0000028489, 0.0000028552, 0.0000028613, + 0.0000028669, 0.0000028688, 0.0000028674, 0.0000028631, 0.0000028560, + 0.0000028504, 0.0000028462, 0.0000028433, 0.0000028391, 0.0000028342, + 0.0000028307, 0.0000028276, 0.0000028265, 0.0000028283, 0.0000028341, + 0.0000028435, 0.0000028543, 0.0000028648, 0.0000028778, 0.0000028929, + 0.0000029036, 0.0000029095, 0.0000029128, 0.0000029096, 0.0000029047, + 0.0000029016, 0.0000028987, 0.0000028934, 0.0000028818, 0.0000028651, + 0.0000028542, 0.0000028491, 0.0000028335, 0.0000028193, 0.0000028197, + 0.0000028301, 0.0000028392, 0.0000028468, 0.0000028538, 0.0000028615, + 0.0000028692, 0.0000028747, 0.0000028779, 0.0000028783, 0.0000028767, + 0.0000028736, 0.0000028692, 0.0000028666, 0.0000028663, 0.0000028653, + 0.0000028642, 0.0000028625, 0.0000028602, 0.0000028575, 0.0000028530, + 0.0000028468, 0.0000028400, 0.0000028335, 0.0000028286, 0.0000028253, + 0.0000028233, 0.0000028234, 0.0000028240, 0.0000028233, 0.0000028216, + 0.0000028173, 0.0000028122, 0.0000028082, 0.0000028056, 0.0000028049, + 0.0000028047, 0.0000028033, 0.0000027996, 0.0000027943, 0.0000027888, + 0.0000027846, 0.0000027837, 0.0000027850, 0.0000027890, 0.0000027934, + 0.0000027999, 0.0000028112, 0.0000028241, 0.0000028333, 0.0000028366, + 0.0000028372, 0.0000028375, 0.0000028350, 0.0000028306, 0.0000028287, + 0.0000028298, 0.0000028324, 0.0000028334, 0.0000028328, 0.0000028327, + 0.0000028330, 0.0000028312, 0.0000028266, 0.0000028215, 0.0000028184, + 0.0000028182, 0.0000028212, 0.0000028249, 0.0000028283, 0.0000028294, + 0.0000028280, 0.0000028260, 0.0000028261, 0.0000028266, 0.0000028256, + 0.0000028247, 0.0000028243, 0.0000028228, 0.0000028197, 0.0000028182, + 0.0000028184, 0.0000028180, 0.0000028137, 0.0000028072, 0.0000028031, + 0.0000028025, 0.0000028035, 0.0000028037, 0.0000028024, 0.0000027985, + 0.0000027930, 0.0000027868, 0.0000027788, 0.0000027712, 0.0000027676, + 0.0000027689, 0.0000027732, 0.0000027767, 0.0000027764, 0.0000027738, + 0.0000027727, 0.0000027747, 0.0000027787, 0.0000027801, 0.0000027787, + 0.0000027771, 0.0000027780, 0.0000027821, 0.0000027877, 0.0000027936, + 0.0000028009, 0.0000028076, 0.0000028097, 0.0000028081, 0.0000028041, + 0.0000027994, 0.0000027949, 0.0000027895, 0.0000027826, 0.0000027748, + 0.0000027685, 0.0000027685, 0.0000027753, 0.0000027847, 0.0000027923, + 0.0000027963, 0.0000027977, 0.0000027966, 0.0000027954, 0.0000027954, + 0.0000027987, 0.0000028035, 0.0000028110, 0.0000028200, 0.0000028266, + 0.0000028255, 0.0000028200, 0.0000028118, 0.0000028047, 0.0000027953, + 0.0000027743, 0.0000027458, 0.0000027237, 0.0000027157, 0.0000027170, + 0.0000027273, 0.0000027385, 0.0000027461, 0.0000027567, 0.0000027681, + 0.0000027712, 0.0000027651, 0.0000027561, 0.0000027459, 0.0000027392, + 0.0000027397, 0.0000027485, 0.0000027581, 0.0000027643, 0.0000027669, + 0.0000027682, 0.0000027715, 0.0000027765, 0.0000027796, 0.0000027799, + 0.0000027765, 0.0000027726, 0.0000027692, 0.0000027652, 0.0000027551, + 0.0000027427, 0.0000027336, 0.0000027235, 0.0000027063, 0.0000026896, + 0.0000026797, 0.0000026840, 0.0000026963, 0.0000027175, 0.0000027427, + 0.0000027622, 0.0000027714, 0.0000027727, 0.0000027699, 0.0000027672, + 0.0000027665, 0.0000027628, 0.0000027581, 0.0000027584, 0.0000027720, + 0.0000027959, 0.0000028127, 0.0000028151, 0.0000028114, 0.0000028138, + 0.0000028219, 0.0000028337, 0.0000028441, 0.0000028455, 0.0000028352, + 0.0000028310, 0.0000028367, 0.0000028300, 0.0000028037, 0.0000028011, + 0.0000028264, 0.0000028549, 0.0000028593, 0.0000028528, 0.0000028445, + 0.0000028383, 0.0000028251, 0.0000028191, 0.0000028220, 0.0000028239, + 0.0000028184, 0.0000028056, 0.0000028008, 0.0000028041, 0.0000028008, + 0.0000027810, 0.0000027745, 0.0000027766, 0.0000027839, 0.0000027920, + 0.0000028070, 0.0000028152, 0.0000028169, 0.0000028165, 0.0000028218, + 0.0000028301, 0.0000028400, 0.0000028553, 0.0000028708, 0.0000028769, + 0.0000028627, 0.0000028373, 0.0000028369, 0.0000028519, 0.0000028648, + 0.0000028741, 0.0000028797, 0.0000028801, 0.0000028806, 0.0000028816, + 0.0000028826, 0.0000028839, 0.0000028892, 0.0000029020, 0.0000029044, + 0.0000028984, 0.0000029040, 0.0000029115, 0.0000029085, 0.0000028831, + 0.0000028641, 0.0000028586, 0.0000028700, 0.0000028755, 0.0000028556, + 0.0000028297, 0.0000028301, 0.0000028348, 0.0000028340, 0.0000028249, + 0.0000028122, 0.0000028038, 0.0000027976, 0.0000027961, 0.0000027993, + 0.0000028018, 0.0000027990, 0.0000027927, 0.0000027905, 0.0000027913, + 0.0000027912, 0.0000027893, 0.0000027882, 0.0000027889, 0.0000027892, + 0.0000027872, 0.0000027823, 0.0000027747, 0.0000027649, 0.0000027573, + 0.0000027560, 0.0000027579, 0.0000027591, 0.0000027584, 0.0000027570, + 0.0000027564, 0.0000027588, 0.0000027641, 0.0000027701, 0.0000027757, + 0.0000027792, 0.0000027793, 0.0000027760, 0.0000027712, 0.0000027676, + 0.0000027660, 0.0000027664, 0.0000027686, 0.0000027714, 0.0000027735, + 0.0000027751, 0.0000027772, 0.0000027783, 0.0000027769, 0.0000027721, + 0.0000027684, 0.0000027694, 0.0000027712, 0.0000027701, 0.0000027609, + 0.0000027477, 0.0000027369, 0.0000027301, 0.0000027261, 0.0000027232, + 0.0000027212, 0.0000027209, 0.0000027226, 0.0000027258, 0.0000027299, + 0.0000027335, 0.0000027356, 0.0000027361, 0.0000027350, 0.0000027337, + 0.0000027331, 0.0000027334, 0.0000027343, 0.0000027356, 0.0000027365, + 0.0000027365, 0.0000027353, 0.0000027325, 0.0000027283, 0.0000027237, + 0.0000027200, 0.0000027189, 0.0000027212, 0.0000027266, 0.0000027331, + 0.0000027397, 0.0000027457, 0.0000027495, 0.0000027510, 0.0000027506, + 0.0000027473, 0.0000027417, 0.0000027350, 0.0000027290, 0.0000027265, + 0.0000027272, 0.0000027290, 0.0000027298, 0.0000027292, 0.0000027261, + 0.0000027200, 0.0000027113, 0.0000027023, 0.0000026952, 0.0000026904, + 0.0000026866, 0.0000026845, 0.0000026845, 0.0000026840, 0.0000026806, + 0.0000026709, 0.0000026541, 0.0000026370, 0.0000026250, 0.0000026162, + 0.0000026077, 0.0000026009, 0.0000025999, 0.0000026033, 0.0000026142, + 0.0000026290, 0.0000026447, 0.0000026611, 0.0000026767, 0.0000026912, + 0.0000027049, 0.0000027159, 0.0000027215, 0.0000027241, 0.0000027266, + 0.0000027303, 0.0000027350, 0.0000027413, 0.0000027490, 0.0000027573, + 0.0000027660, 0.0000027730, 0.0000027769, 0.0000027779, 0.0000027775, + 0.0000027777, 0.0000027791, 0.0000027816, 0.0000027850, 0.0000027911, + 0.0000027999, 0.0000028099, 0.0000028209, 0.0000028319, 0.0000028416, + 0.0000028496, 0.0000028571, 0.0000028651, 0.0000028740, 0.0000028820, + 0.0000028896, 0.0000028948, 0.0000028947, 0.0000028937, 0.0000028875, + 0.0000028797, 0.0000028755, 0.0000028781, 0.0000028820, 0.0000028826, + 0.0000028792, 0.0000028751, 0.0000028746, 0.0000028759, 0.0000028777, + 0.0000028791, 0.0000028759, 0.0000028646, 0.0000028482, 0.0000028368, + 0.0000028380, 0.0000028478, 0.0000028533, 0.0000028535, 0.0000028541, + 0.0000028598, 0.0000028691, 0.0000028747, 0.0000028743, 0.0000028678, + 0.0000028559, 0.0000028413, 0.0000028283, 0.0000028230, 0.0000028259, + 0.0000028342, 0.0000028430, 0.0000028488, 0.0000028502, 0.0000028473, + 0.0000028421, 0.0000028393, 0.0000028396, 0.0000028395, 0.0000028364, + 0.0000028319, 0.0000028287, 0.0000028281, 0.0000028285, 0.0000028269, + 0.0000028214, 0.0000028125, 0.0000028030, 0.0000027952, 0.0000027895, + 0.0000027855, 0.0000027831, 0.0000027815, 0.0000027790, 0.0000027748, + 0.0000027698, 0.0000027657, 0.0000027625, 0.0000027592, 0.0000027550, + 0.0000027494, 0.0000027430, 0.0000027362, 0.0000027294, 0.0000027235, + 0.0000027203, 0.0000027195, 0.0000027197, 0.0000027198, 0.0000027185, + 0.0000027161, 0.0000027159, 0.0000027269, 0.0000027519, 0.0000027734, + 0.0000027787, 0.0000027732, 0.0000027641, 0.0000027595, 0.0000027600, + 0.0000027682, 0.0000027793, 0.0000027754, 0.0000027555, 0.0000027416, + 0.0000027423, 0.0000027456, 0.0000027417, 0.0000027280, 0.0000027196, + 0.0000027273, 0.0000027434, 0.0000027475, 0.0000027347, 0.0000027315, + 0.0000027467, 0.0000027561, 0.0000027515, 0.0000027468, 0.0000027451, + 0.0000027408, 0.0000027278, 0.0000027136, 0.0000027092, 0.0000027102, + 0.0000027103, 0.0000027106, 0.0000027126, 0.0000027152, 0.0000027173, + 0.0000027182, 0.0000027177, 0.0000027155, 0.0000027117, 0.0000027075, + 0.0000027038, 0.0000027018, 0.0000027030, 0.0000027097, 0.0000027181, + 0.0000027236, 0.0000027258, 0.0000027275, 0.0000027281, 0.0000027282, + 0.0000027290, 0.0000027306, 0.0000027303, 0.0000027279, 0.0000027251, + 0.0000027284, 0.0000027340, 0.0000027322, 0.0000027252, 0.0000027207, + 0.0000027199, 0.0000027182, 0.0000027111, 0.0000026981, 0.0000026884, + 0.0000026858, 0.0000026853, 0.0000026851, 0.0000026851, 0.0000026847, + 0.0000026860, 0.0000026881, 0.0000026896, 0.0000026897, 0.0000026879, + 0.0000026847, 0.0000026801, 0.0000026741, 0.0000026670, 0.0000026597, + 0.0000026527, 0.0000026460, 0.0000026404, 0.0000026373, 0.0000026378, + 0.0000026421, 0.0000026467, 0.0000026478, 0.0000026460, 0.0000026402, + 0.0000026313, 0.0000026220, 0.0000026119, 0.0000025990, 0.0000025816, + 0.0000025647, 0.0000025545, 0.0000025493, 0.0000025475, 0.0000025511, + 0.0000025588, 0.0000025768, 0.0000026147, 0.0000026433, 0.0000026436, + 0.0000026349, 0.0000026372, 0.0000026478, 0.0000026542, 0.0000026566, + 0.0000026565, 0.0000026551, 0.0000026545, 0.0000026542, 0.0000026535, + 0.0000026530, 0.0000026561, 0.0000026591, 0.0000026609, 0.0000026585, + 0.0000026520, 0.0000026446, 0.0000026358, 0.0000026262, 0.0000026206, + 0.0000026227, 0.0000026080, 0.0000025899, 0.0000026072, 0.0000026383, + 0.0000027159, 0.0000027516, 0.0000027664, 0.0000027845, 0.0000028010, + 0.0000028076, 0.0000028105, 0.0000028085, 0.0000028021, 0.0000027940, + 0.0000027874, 0.0000027810, 0.0000027763, 0.0000027718, 0.0000027700, + 0.0000027730, 0.0000027759, 0.0000027789, 0.0000027820, 0.0000027847, + 0.0000027833, 0.0000027694, 0.0000027654, 0.0000027735, 0.0000027773, + 0.0000027843, 0.0000027894, 0.0000027807, 0.0000027640, 0.0000027469, + 0.0000027378, 0.0000027444, 0.0000027443, 0.0000027404, 0.0000027320, + 0.0000027157, 0.0000027031, 0.0000026964, 0.0000026912, 0.0000026855, + 0.0000026842, 0.0000026841, 0.0000026846, 0.0000026852, 0.0000026858, + 0.0000026861, 0.0000026858, 0.0000026850, 0.0000026836, 0.0000026813, + 0.0000026767, 0.0000026696, 0.0000026634, 0.0000026612, 0.0000026647, + 0.0000026763, 0.0000026861, 0.0000026857, 0.0000026692, 0.0000026534, + 0.0000026446, 0.0000026365, 0.0000026292, 0.0000026248, 0.0000026218, + 0.0000026176, 0.0000026119, 0.0000026073, 0.0000026059, 0.0000026079, + 0.0000026136, 0.0000026218, 0.0000026304, 0.0000026379, 0.0000026437, + 0.0000026472, 0.0000026471, 0.0000026457, 0.0000026444, 0.0000026446, + 0.0000026465, 0.0000026495, 0.0000026505, 0.0000026498, 0.0000026461, + 0.0000026404, 0.0000026351, 0.0000026296, 0.0000026232, 0.0000026159, + 0.0000026091, 0.0000026040, 0.0000025987, 0.0000025916, 0.0000025857, + 0.0000025812, 0.0000025780, 0.0000025735, 0.0000025685, 0.0000025619, + 0.0000025516, 0.0000025425, 0.0000025376, 0.0000025368, 0.0000025396, + 0.0000025451, 0.0000025505, 0.0000025539, 0.0000025552, 0.0000025538, + 0.0000025505, 0.0000025454, 0.0000025395, 0.0000025332, 0.0000025305, + 0.0000025329, 0.0000025370, 0.0000025409, 0.0000025448, 0.0000025447, + 0.0000025362, 0.0000025187, 0.0000024997, 0.0000024847, 0.0000024711, + 0.0000024727, 0.0000024881, 0.0000024978, 0.0000024982, 0.0000024974, + 0.0000025060, 0.0000025160, 0.0000025181, 0.0000025340, 0.0000025565, + 0.0000025487, 0.0000025294, 0.0000025265, 0.0000025402, 0.0000025635, + 0.0000025678, 0.0000025775, 0.0000026023, 0.0000026066, 0.0000026129, + 0.0000026248, 0.0000026248, 0.0000026194, 0.0000026131, 0.0000026097, + 0.0000026104, 0.0000026115, 0.0000026091, 0.0000026024, 0.0000025934, + 0.0000025875, 0.0000025834, 0.0000025792, 0.0000025762, 0.0000025813, + 0.0000025919, 0.0000026000, 0.0000026024, 0.0000026004, 0.0000025998, + 0.0000026069, 0.0000026280, 0.0000026510, 0.0000026632, 0.0000026682, + 0.0000026728, 0.0000026766, 0.0000026819, 0.0000026867, 0.0000026883, + 0.0000026840, 0.0000026742, 0.0000026682, 0.0000026755, 0.0000026918, + 0.0000026989, 0.0000027005, 0.0000027013, 0.0000027103, 0.0000027435, + 0.0000027881, 0.0000028049, 0.0000028021, 0.0000027996, 0.0000028126, + 0.0000028312, 0.0000028323, 0.0000028223, 0.0000028145, 0.0000028002, + 0.0000027811, 0.0000027847, 0.0000028018, 0.0000028134, 0.0000028143, + 0.0000028116, 0.0000028073, 0.0000028031, 0.0000028016, 0.0000027997, + 0.0000027980, 0.0000027963, 0.0000027976, 0.0000028022, 0.0000028091, + 0.0000028150, 0.0000028190, 0.0000028200, 0.0000028211, 0.0000028227, + 0.0000028242, 0.0000028269, 0.0000028300, 0.0000028347, 0.0000028404, + 0.0000028459, 0.0000028510, 0.0000028547, 0.0000028604, 0.0000028656, + 0.0000028693, 0.0000028699, 0.0000028684, 0.0000028628, 0.0000028539, + 0.0000028455, 0.0000028362, 0.0000028295, 0.0000028218, 0.0000028131, + 0.0000028058, 0.0000028002, 0.0000027984, 0.0000028006, 0.0000028073, + 0.0000028178, 0.0000028320, 0.0000028450, 0.0000028600, 0.0000028776, + 0.0000028906, 0.0000028968, 0.0000029001, 0.0000028977, 0.0000028921, + 0.0000028871, 0.0000028816, 0.0000028768, 0.0000028706, 0.0000028611, + 0.0000028521, 0.0000028466, 0.0000028410, 0.0000028283, 0.0000028146, + 0.0000028111, 0.0000028148, 0.0000028212, 0.0000028305, 0.0000028416, + 0.0000028547, 0.0000028654, 0.0000028722, 0.0000028742, 0.0000028739, + 0.0000028716, 0.0000028674, 0.0000028628, 0.0000028611, 0.0000028602, + 0.0000028587, 0.0000028565, 0.0000028535, 0.0000028497, 0.0000028457, + 0.0000028403, 0.0000028337, 0.0000028272, 0.0000028215, 0.0000028174, + 0.0000028153, 0.0000028150, 0.0000028171, 0.0000028202, 0.0000028216, + 0.0000028214, 0.0000028188, 0.0000028152, 0.0000028134, 0.0000028122, + 0.0000028119, 0.0000028108, 0.0000028080, 0.0000028028, 0.0000027959, + 0.0000027896, 0.0000027855, 0.0000027839, 0.0000027839, 0.0000027846, + 0.0000027860, 0.0000027922, 0.0000028044, 0.0000028182, 0.0000028290, + 0.0000028350, 0.0000028386, 0.0000028395, 0.0000028353, 0.0000028301, + 0.0000028292, 0.0000028316, 0.0000028340, 0.0000028344, 0.0000028342, + 0.0000028352, 0.0000028351, 0.0000028330, 0.0000028294, 0.0000028255, + 0.0000028239, 0.0000028256, 0.0000028284, 0.0000028322, 0.0000028352, + 0.0000028350, 0.0000028323, 0.0000028298, 0.0000028286, 0.0000028274, + 0.0000028249, 0.0000028218, 0.0000028205, 0.0000028205, 0.0000028201, + 0.0000028183, 0.0000028143, 0.0000028097, 0.0000028052, 0.0000028021, + 0.0000028008, 0.0000028000, 0.0000027995, 0.0000027992, 0.0000027987, + 0.0000027962, 0.0000027916, 0.0000027846, 0.0000027765, 0.0000027704, + 0.0000027676, 0.0000027681, 0.0000027714, 0.0000027751, 0.0000027768, + 0.0000027759, 0.0000027736, 0.0000027726, 0.0000027734, 0.0000027723, + 0.0000027695, 0.0000027695, 0.0000027730, 0.0000027777, 0.0000027822, + 0.0000027876, 0.0000027952, 0.0000028017, 0.0000028032, 0.0000028009, + 0.0000027970, 0.0000027934, 0.0000027898, 0.0000027854, 0.0000027782, + 0.0000027686, 0.0000027611, 0.0000027608, 0.0000027677, 0.0000027790, + 0.0000027881, 0.0000027925, 0.0000027918, 0.0000027877, 0.0000027846, + 0.0000027848, 0.0000027885, 0.0000027934, 0.0000028000, 0.0000028104, + 0.0000028194, 0.0000028197, 0.0000028150, 0.0000028057, 0.0000027981, + 0.0000027926, 0.0000027809, 0.0000027553, 0.0000027279, 0.0000027145, + 0.0000027130, 0.0000027194, 0.0000027266, 0.0000027317, 0.0000027417, + 0.0000027564, 0.0000027637, 0.0000027613, 0.0000027536, 0.0000027432, + 0.0000027361, 0.0000027364, 0.0000027457, 0.0000027563, 0.0000027634, + 0.0000027674, 0.0000027686, 0.0000027691, 0.0000027694, 0.0000027711, + 0.0000027735, 0.0000027727, 0.0000027695, 0.0000027659, 0.0000027628, + 0.0000027559, 0.0000027440, 0.0000027317, 0.0000027205, 0.0000027055, + 0.0000026849, 0.0000026610, 0.0000026501, 0.0000026566, 0.0000026813, + 0.0000027164, 0.0000027476, 0.0000027659, 0.0000027709, 0.0000027665, + 0.0000027600, 0.0000027583, 0.0000027587, 0.0000027575, 0.0000027580, + 0.0000027654, 0.0000027853, 0.0000028078, 0.0000028150, 0.0000028118, + 0.0000028131, 0.0000028208, 0.0000028343, 0.0000028446, 0.0000028448, + 0.0000028352, 0.0000028332, 0.0000028390, 0.0000028297, 0.0000028029, + 0.0000028003, 0.0000028208, 0.0000028466, 0.0000028531, 0.0000028486, + 0.0000028394, 0.0000028287, 0.0000028180, 0.0000028193, 0.0000028275, + 0.0000028311, 0.0000028278, 0.0000028146, 0.0000028031, 0.0000028036, + 0.0000028047, 0.0000027868, 0.0000027745, 0.0000027764, 0.0000027823, + 0.0000027888, 0.0000028009, 0.0000028118, 0.0000028157, 0.0000028168, + 0.0000028225, 0.0000028301, 0.0000028376, 0.0000028516, 0.0000028693, + 0.0000028757, 0.0000028543, 0.0000028321, 0.0000028410, 0.0000028581, + 0.0000028715, 0.0000028805, 0.0000028819, 0.0000028783, 0.0000028762, + 0.0000028781, 0.0000028816, 0.0000028864, 0.0000028962, 0.0000029073, + 0.0000029058, 0.0000029001, 0.0000029071, 0.0000029139, 0.0000029097, + 0.0000028845, 0.0000028669, 0.0000028639, 0.0000028745, 0.0000028742, + 0.0000028514, 0.0000028285, 0.0000028304, 0.0000028346, 0.0000028339, + 0.0000028282, 0.0000028196, 0.0000028129, 0.0000028065, 0.0000028051, + 0.0000028082, 0.0000028104, 0.0000028066, 0.0000027975, 0.0000027934, + 0.0000027943, 0.0000027961, 0.0000027954, 0.0000027937, 0.0000027932, + 0.0000027935, 0.0000027932, 0.0000027914, 0.0000027872, 0.0000027798, + 0.0000027701, 0.0000027628, 0.0000027607, 0.0000027600, 0.0000027580, + 0.0000027558, 0.0000027547, 0.0000027564, 0.0000027611, 0.0000027668, + 0.0000027730, 0.0000027778, 0.0000027810, 0.0000027830, 0.0000027833, + 0.0000027808, 0.0000027772, 0.0000027722, 0.0000027687, 0.0000027686, + 0.0000027711, 0.0000027742, 0.0000027760, 0.0000027763, 0.0000027765, + 0.0000027766, 0.0000027748, 0.0000027717, 0.0000027692, 0.0000027694, + 0.0000027716, 0.0000027717, 0.0000027683, 0.0000027593, 0.0000027471, + 0.0000027356, 0.0000027274, 0.0000027233, 0.0000027234, 0.0000027258, + 0.0000027288, 0.0000027317, 0.0000027342, 0.0000027358, 0.0000027357, + 0.0000027347, 0.0000027338, 0.0000027337, 0.0000027342, 0.0000027353, + 0.0000027366, 0.0000027379, 0.0000027384, 0.0000027377, 0.0000027348, + 0.0000027300, 0.0000027240, 0.0000027180, 0.0000027138, 0.0000027130, + 0.0000027156, 0.0000027224, 0.0000027304, 0.0000027390, 0.0000027466, + 0.0000027530, 0.0000027566, 0.0000027575, 0.0000027565, 0.0000027530, + 0.0000027465, 0.0000027385, 0.0000027333, 0.0000027324, 0.0000027329, + 0.0000027338, 0.0000027337, 0.0000027318, 0.0000027263, 0.0000027173, + 0.0000027066, 0.0000026962, 0.0000026877, 0.0000026828, 0.0000026810, + 0.0000026821, 0.0000026824, 0.0000026792, 0.0000026674, 0.0000026501, + 0.0000026357, 0.0000026252, 0.0000026151, 0.0000026056, 0.0000026014, + 0.0000026040, 0.0000026099, 0.0000026193, 0.0000026313, 0.0000026453, + 0.0000026599, 0.0000026737, 0.0000026867, 0.0000026981, 0.0000027052, + 0.0000027091, 0.0000027110, 0.0000027125, 0.0000027146, 0.0000027189, + 0.0000027261, 0.0000027346, 0.0000027448, 0.0000027553, 0.0000027637, + 0.0000027680, 0.0000027686, 0.0000027674, 0.0000027666, 0.0000027669, + 0.0000027686, 0.0000027728, 0.0000027804, 0.0000027906, 0.0000028018, + 0.0000028136, 0.0000028248, 0.0000028346, 0.0000028430, 0.0000028508, + 0.0000028585, 0.0000028664, 0.0000028751, 0.0000028841, 0.0000028889, + 0.0000028909, 0.0000028877, 0.0000028798, 0.0000028748, 0.0000028767, + 0.0000028797, 0.0000028792, 0.0000028743, 0.0000028692, 0.0000028684, + 0.0000028700, 0.0000028729, 0.0000028767, 0.0000028770, 0.0000028700, + 0.0000028562, 0.0000028449, 0.0000028451, 0.0000028539, 0.0000028581, + 0.0000028563, 0.0000028546, 0.0000028593, 0.0000028692, 0.0000028764, + 0.0000028771, 0.0000028716, 0.0000028607, 0.0000028459, 0.0000028320, + 0.0000028247, 0.0000028256, 0.0000028321, 0.0000028396, 0.0000028438, + 0.0000028441, 0.0000028396, 0.0000028318, 0.0000028253, 0.0000028232, + 0.0000028229, 0.0000028207, 0.0000028161, 0.0000028105, 0.0000028056, + 0.0000028026, 0.0000028005, 0.0000027970, 0.0000027911, 0.0000027840, + 0.0000027775, 0.0000027726, 0.0000027693, 0.0000027668, 0.0000027649, + 0.0000027629, 0.0000027603, 0.0000027570, 0.0000027538, 0.0000027514, + 0.0000027488, 0.0000027452, 0.0000027398, 0.0000027326, 0.0000027243, + 0.0000027157, 0.0000027076, 0.0000027019, 0.0000027000, 0.0000027017, + 0.0000027072, 0.0000027140, 0.0000027178, 0.0000027167, 0.0000027173, + 0.0000027320, 0.0000027576, 0.0000027728, 0.0000027727, 0.0000027660, + 0.0000027603, 0.0000027591, 0.0000027626, 0.0000027736, 0.0000027790, + 0.0000027658, 0.0000027431, 0.0000027323, 0.0000027320, 0.0000027288, + 0.0000027190, 0.0000027163, 0.0000027269, 0.0000027429, 0.0000027463, + 0.0000027343, 0.0000027314, 0.0000027467, 0.0000027562, 0.0000027526, + 0.0000027498, 0.0000027468, 0.0000027370, 0.0000027210, 0.0000027092, + 0.0000027065, 0.0000027067, 0.0000027066, 0.0000027072, 0.0000027088, + 0.0000027105, 0.0000027108, 0.0000027100, 0.0000027092, 0.0000027080, + 0.0000027051, 0.0000027014, 0.0000026994, 0.0000026994, 0.0000027023, + 0.0000027090, 0.0000027165, 0.0000027215, 0.0000027239, 0.0000027254, + 0.0000027259, 0.0000027259, 0.0000027275, 0.0000027299, 0.0000027310, + 0.0000027308, 0.0000027287, 0.0000027292, 0.0000027342, 0.0000027339, + 0.0000027276, 0.0000027217, 0.0000027203, 0.0000027189, 0.0000027155, + 0.0000027058, 0.0000026927, 0.0000026852, 0.0000026831, 0.0000026819, + 0.0000026822, 0.0000026830, 0.0000026849, 0.0000026865, 0.0000026870, + 0.0000026861, 0.0000026840, 0.0000026809, 0.0000026771, 0.0000026724, + 0.0000026670, 0.0000026616, 0.0000026565, 0.0000026518, 0.0000026474, + 0.0000026434, 0.0000026417, 0.0000026427, 0.0000026447, 0.0000026451, + 0.0000026427, 0.0000026375, 0.0000026312, 0.0000026258, 0.0000026195, + 0.0000026100, 0.0000025965, 0.0000025802, 0.0000025654, 0.0000025562, + 0.0000025514, 0.0000025477, 0.0000025474, 0.0000025521, 0.0000025598, + 0.0000025854, 0.0000026257, 0.0000026448, 0.0000026390, 0.0000026325, + 0.0000026389, 0.0000026485, 0.0000026524, 0.0000026534, 0.0000026547, + 0.0000026557, 0.0000026542, 0.0000026520, 0.0000026528, 0.0000026562, + 0.0000026599, 0.0000026650, 0.0000026671, 0.0000026649, 0.0000026581, + 0.0000026482, 0.0000026389, 0.0000026255, 0.0000026227, 0.0000026225, + 0.0000025939, 0.0000025970, 0.0000026188, 0.0000026982, 0.0000027390, + 0.0000027579, 0.0000027766, 0.0000027968, 0.0000028057, 0.0000028093, + 0.0000028064, 0.0000027999, 0.0000027924, 0.0000027850, 0.0000027791, + 0.0000027765, 0.0000027743, 0.0000027750, 0.0000027757, 0.0000027757, + 0.0000027783, 0.0000027822, 0.0000027842, 0.0000027755, 0.0000027653, + 0.0000027663, 0.0000027744, 0.0000027754, 0.0000027842, 0.0000027860, + 0.0000027763, 0.0000027600, 0.0000027426, 0.0000027357, 0.0000027418, + 0.0000027408, 0.0000027369, 0.0000027283, 0.0000027127, 0.0000027003, + 0.0000026932, 0.0000026885, 0.0000026893, 0.0000026902, 0.0000026919, + 0.0000026939, 0.0000026961, 0.0000026979, 0.0000026987, 0.0000026989, + 0.0000026977, 0.0000026942, 0.0000026885, 0.0000026818, 0.0000026733, + 0.0000026639, 0.0000026571, 0.0000026566, 0.0000026634, 0.0000026754, + 0.0000026849, 0.0000026816, 0.0000026625, 0.0000026462, 0.0000026383, + 0.0000026332, 0.0000026301, 0.0000026279, 0.0000026251, 0.0000026212, + 0.0000026171, 0.0000026155, 0.0000026162, 0.0000026197, 0.0000026255, + 0.0000026320, 0.0000026376, 0.0000026423, 0.0000026452, 0.0000026455, + 0.0000026448, 0.0000026446, 0.0000026452, 0.0000026472, 0.0000026491, + 0.0000026501, 0.0000026489, 0.0000026452, 0.0000026423, 0.0000026390, + 0.0000026338, 0.0000026275, 0.0000026200, 0.0000026125, 0.0000026066, + 0.0000026015, 0.0000025955, 0.0000025879, 0.0000025812, 0.0000025770, + 0.0000025721, 0.0000025658, 0.0000025599, 0.0000025509, 0.0000025396, + 0.0000025326, 0.0000025320, 0.0000025356, 0.0000025425, 0.0000025491, + 0.0000025541, 0.0000025568, 0.0000025573, 0.0000025583, 0.0000025582, + 0.0000025548, 0.0000025482, 0.0000025418, 0.0000025381, 0.0000025382, + 0.0000025404, 0.0000025439, 0.0000025477, 0.0000025480, 0.0000025423, + 0.0000025251, 0.0000025062, 0.0000024886, 0.0000024757, 0.0000024743, + 0.0000024873, 0.0000024975, 0.0000024981, 0.0000024958, 0.0000025024, + 0.0000025153, 0.0000025186, 0.0000025296, 0.0000025529, 0.0000025482, + 0.0000025306, 0.0000025283, 0.0000025401, 0.0000025611, 0.0000025649, + 0.0000025736, 0.0000025972, 0.0000026040, 0.0000026159, 0.0000026265, + 0.0000026262, 0.0000026208, 0.0000026142, 0.0000026094, 0.0000026085, + 0.0000026085, 0.0000026063, 0.0000025992, 0.0000025886, 0.0000025809, + 0.0000025767, 0.0000025737, 0.0000025758, 0.0000025835, 0.0000025921, + 0.0000025972, 0.0000025973, 0.0000025965, 0.0000025975, 0.0000026065, + 0.0000026284, 0.0000026502, 0.0000026596, 0.0000026643, 0.0000026692, + 0.0000026746, 0.0000026795, 0.0000026822, 0.0000026807, 0.0000026730, + 0.0000026641, 0.0000026647, 0.0000026779, 0.0000026901, 0.0000026944, + 0.0000026965, 0.0000026971, 0.0000027047, 0.0000027356, 0.0000027767, + 0.0000027990, 0.0000028007, 0.0000027987, 0.0000028105, 0.0000028275, + 0.0000028275, 0.0000028188, 0.0000028140, 0.0000028030, 0.0000027845, + 0.0000027831, 0.0000027981, 0.0000028096, 0.0000028125, 0.0000028129, + 0.0000028100, 0.0000028063, 0.0000028046, 0.0000028031, 0.0000028011, + 0.0000028005, 0.0000028011, 0.0000028031, 0.0000028073, 0.0000028102, + 0.0000028101, 0.0000028094, 0.0000028106, 0.0000028145, 0.0000028209, + 0.0000028280, 0.0000028352, 0.0000028424, 0.0000028494, 0.0000028549, + 0.0000028597, 0.0000028627, 0.0000028652, 0.0000028679, 0.0000028686, + 0.0000028666, 0.0000028597, 0.0000028494, 0.0000028365, 0.0000028244, + 0.0000028129, 0.0000028050, 0.0000027985, 0.0000027925, 0.0000027860, + 0.0000027808, 0.0000027796, 0.0000027829, 0.0000027909, 0.0000028025, + 0.0000028173, 0.0000028320, 0.0000028467, 0.0000028635, 0.0000028769, + 0.0000028837, 0.0000028861, 0.0000028849, 0.0000028790, 0.0000028738, + 0.0000028666, 0.0000028591, 0.0000028529, 0.0000028482, 0.0000028458, + 0.0000028437, 0.0000028405, 0.0000028354, 0.0000028251, 0.0000028130, + 0.0000028050, 0.0000028021, 0.0000028035, 0.0000028109, 0.0000028235, + 0.0000028361, 0.0000028449, 0.0000028493, 0.0000028509, 0.0000028500, + 0.0000028462, 0.0000028415, 0.0000028388, 0.0000028384, 0.0000028389, + 0.0000028384, 0.0000028373, 0.0000028357, 0.0000028340, 0.0000028312, + 0.0000028272, 0.0000028225, 0.0000028180, 0.0000028136, 0.0000028103, + 0.0000028079, 0.0000028066, 0.0000028082, 0.0000028108, 0.0000028121, + 0.0000028115, 0.0000028104, 0.0000028106, 0.0000028129, 0.0000028164, + 0.0000028180, 0.0000028177, 0.0000028139, 0.0000028061, 0.0000027975, + 0.0000027925, 0.0000027908, 0.0000027873, 0.0000027831, 0.0000027783, + 0.0000027771, 0.0000027836, 0.0000027975, 0.0000028137, 0.0000028260, + 0.0000028351, 0.0000028406, 0.0000028403, 0.0000028357, 0.0000028326, + 0.0000028337, 0.0000028358, 0.0000028358, 0.0000028346, 0.0000028348, + 0.0000028363, 0.0000028369, 0.0000028363, 0.0000028337, 0.0000028308, + 0.0000028305, 0.0000028323, 0.0000028354, 0.0000028384, 0.0000028387, + 0.0000028366, 0.0000028336, 0.0000028307, 0.0000028281, 0.0000028257, + 0.0000028223, 0.0000028191, 0.0000028190, 0.0000028208, 0.0000028208, + 0.0000028155, 0.0000028085, 0.0000028039, 0.0000028027, 0.0000028023, + 0.0000028012, 0.0000027989, 0.0000027972, 0.0000027971, 0.0000027971, + 0.0000027957, 0.0000027910, 0.0000027838, 0.0000027764, 0.0000027708, + 0.0000027681, 0.0000027691, 0.0000027728, 0.0000027769, 0.0000027789, + 0.0000027780, 0.0000027742, 0.0000027698, 0.0000027668, 0.0000027647, + 0.0000027640, 0.0000027663, 0.0000027709, 0.0000027743, 0.0000027763, + 0.0000027792, 0.0000027849, 0.0000027913, 0.0000027938, 0.0000027923, + 0.0000027897, 0.0000027873, 0.0000027850, 0.0000027807, 0.0000027734, + 0.0000027636, 0.0000027568, 0.0000027554, 0.0000027616, 0.0000027717, + 0.0000027807, 0.0000027856, 0.0000027837, 0.0000027779, 0.0000027716, + 0.0000027712, 0.0000027747, 0.0000027804, 0.0000027870, 0.0000027973, + 0.0000028072, 0.0000028097, 0.0000028062, 0.0000027972, 0.0000027893, + 0.0000027872, 0.0000027806, 0.0000027614, 0.0000027329, 0.0000027144, + 0.0000027088, 0.0000027106, 0.0000027135, 0.0000027173, 0.0000027274, + 0.0000027435, 0.0000027548, 0.0000027563, 0.0000027517, 0.0000027418, + 0.0000027340, 0.0000027345, 0.0000027450, 0.0000027546, 0.0000027614, + 0.0000027670, 0.0000027693, 0.0000027685, 0.0000027644, 0.0000027620, + 0.0000027635, 0.0000027644, 0.0000027636, 0.0000027612, 0.0000027581, + 0.0000027531, 0.0000027440, 0.0000027313, 0.0000027182, 0.0000027056, + 0.0000026881, 0.0000026618, 0.0000026394, 0.0000026275, 0.0000026427, + 0.0000026768, 0.0000027148, 0.0000027446, 0.0000027603, 0.0000027621, + 0.0000027564, 0.0000027520, 0.0000027525, 0.0000027568, 0.0000027615, + 0.0000027651, 0.0000027755, 0.0000027986, 0.0000028143, 0.0000028122, + 0.0000028122, 0.0000028193, 0.0000028331, 0.0000028428, 0.0000028425, + 0.0000028335, 0.0000028340, 0.0000028400, 0.0000028293, 0.0000028029, + 0.0000028003, 0.0000028170, 0.0000028378, 0.0000028457, 0.0000028435, + 0.0000028346, 0.0000028213, 0.0000028152, 0.0000028207, 0.0000028322, + 0.0000028367, 0.0000028351, 0.0000028245, 0.0000028074, 0.0000028022, + 0.0000028059, 0.0000027946, 0.0000027775, 0.0000027772, 0.0000027824, + 0.0000027886, 0.0000027960, 0.0000028062, 0.0000028138, 0.0000028184, + 0.0000028241, 0.0000028306, 0.0000028356, 0.0000028472, 0.0000028669, + 0.0000028738, 0.0000028470, 0.0000028309, 0.0000028467, 0.0000028633, + 0.0000028766, 0.0000028818, 0.0000028790, 0.0000028730, 0.0000028736, + 0.0000028794, 0.0000028871, 0.0000028963, 0.0000029068, 0.0000029120, + 0.0000029060, 0.0000029034, 0.0000029115, 0.0000029161, 0.0000029093, + 0.0000028850, 0.0000028694, 0.0000028688, 0.0000028778, 0.0000028722, + 0.0000028478, 0.0000028280, 0.0000028313, 0.0000028348, 0.0000028342, + 0.0000028320, 0.0000028274, 0.0000028214, 0.0000028153, 0.0000028143, + 0.0000028165, 0.0000028169, 0.0000028109, 0.0000028003, 0.0000027953, + 0.0000027965, 0.0000027995, 0.0000027992, 0.0000027969, 0.0000027949, + 0.0000027943, 0.0000027942, 0.0000027940, 0.0000027926, 0.0000027891, + 0.0000027831, 0.0000027760, 0.0000027711, 0.0000027678, 0.0000027636, + 0.0000027577, 0.0000027531, 0.0000027519, 0.0000027541, 0.0000027598, + 0.0000027672, 0.0000027729, 0.0000027768, 0.0000027796, 0.0000027808, + 0.0000027811, 0.0000027805, 0.0000027790, 0.0000027762, 0.0000027726, + 0.0000027700, 0.0000027698, 0.0000027721, 0.0000027745, 0.0000027746, + 0.0000027732, 0.0000027722, 0.0000027730, 0.0000027747, 0.0000027746, + 0.0000027722, 0.0000027701, 0.0000027706, 0.0000027724, 0.0000027725, + 0.0000027696, 0.0000027612, 0.0000027499, 0.0000027405, 0.0000027352, + 0.0000027342, 0.0000027349, 0.0000027372, 0.0000027401, 0.0000027412, + 0.0000027404, 0.0000027380, 0.0000027350, 0.0000027327, 0.0000027320, + 0.0000027329, 0.0000027353, 0.0000027377, 0.0000027393, 0.0000027400, + 0.0000027391, 0.0000027358, 0.0000027310, 0.0000027248, 0.0000027177, + 0.0000027121, 0.0000027107, 0.0000027137, 0.0000027211, 0.0000027313, + 0.0000027419, 0.0000027503, 0.0000027557, 0.0000027575, 0.0000027579, + 0.0000027584, 0.0000027581, 0.0000027551, 0.0000027498, 0.0000027451, + 0.0000027422, 0.0000027400, 0.0000027377, 0.0000027353, 0.0000027314, + 0.0000027258, 0.0000027192, 0.0000027106, 0.0000026996, 0.0000026882, + 0.0000026812, 0.0000026799, 0.0000026812, 0.0000026815, 0.0000026767, + 0.0000026630, 0.0000026477, 0.0000026373, 0.0000026286, 0.0000026181, + 0.0000026099, 0.0000026080, 0.0000026111, 0.0000026153, 0.0000026225, + 0.0000026324, 0.0000026434, 0.0000026538, 0.0000026637, 0.0000026738, + 0.0000026826, 0.0000026902, 0.0000026954, 0.0000026988, 0.0000027010, + 0.0000027037, 0.0000027075, 0.0000027120, 0.0000027189, 0.0000027289, + 0.0000027392, 0.0000027466, 0.0000027507, 0.0000027530, 0.0000027547, + 0.0000027561, 0.0000027581, 0.0000027615, 0.0000027673, 0.0000027757, + 0.0000027854, 0.0000027952, 0.0000028066, 0.0000028187, 0.0000028299, + 0.0000028391, 0.0000028461, 0.0000028517, 0.0000028578, 0.0000028648, + 0.0000028706, 0.0000028743, 0.0000028741, 0.0000028704, 0.0000028680, + 0.0000028720, 0.0000028783, 0.0000028780, 0.0000028731, 0.0000028673, + 0.0000028656, 0.0000028671, 0.0000028707, 0.0000028751, 0.0000028784, + 0.0000028757, 0.0000028658, 0.0000028547, 0.0000028534, 0.0000028604, + 0.0000028653, 0.0000028636, 0.0000028603, 0.0000028629, 0.0000028721, + 0.0000028804, 0.0000028818, 0.0000028767, 0.0000028663, 0.0000028517, + 0.0000028377, 0.0000028303, 0.0000028289, 0.0000028304, 0.0000028344, + 0.0000028365, 0.0000028348, 0.0000028283, 0.0000028174, 0.0000028056, + 0.0000027978, 0.0000027942, 0.0000027916, 0.0000027882, 0.0000027829, + 0.0000027776, 0.0000027742, 0.0000027734, 0.0000027738, 0.0000027729, + 0.0000027698, 0.0000027658, 0.0000027620, 0.0000027588, 0.0000027558, + 0.0000027525, 0.0000027488, 0.0000027439, 0.0000027384, 0.0000027338, + 0.0000027312, 0.0000027309, 0.0000027316, 0.0000027311, 0.0000027275, + 0.0000027207, 0.0000027121, 0.0000027030, 0.0000026954, 0.0000026905, + 0.0000026888, 0.0000026922, 0.0000027019, 0.0000027131, 0.0000027175, + 0.0000027161, 0.0000027197, 0.0000027404, 0.0000027634, 0.0000027696, + 0.0000027660, 0.0000027604, 0.0000027581, 0.0000027593, 0.0000027673, + 0.0000027775, 0.0000027739, 0.0000027514, 0.0000027298, 0.0000027230, + 0.0000027193, 0.0000027127, 0.0000027137, 0.0000027271, 0.0000027406, + 0.0000027431, 0.0000027336, 0.0000027312, 0.0000027448, 0.0000027556, + 0.0000027531, 0.0000027511, 0.0000027487, 0.0000027367, 0.0000027196, + 0.0000027095, 0.0000027054, 0.0000027040, 0.0000027037, 0.0000027039, + 0.0000027050, 0.0000027072, 0.0000027086, 0.0000027081, 0.0000027073, + 0.0000027062, 0.0000027046, 0.0000027022, 0.0000027008, 0.0000027011, + 0.0000027036, 0.0000027088, 0.0000027145, 0.0000027191, 0.0000027218, + 0.0000027225, 0.0000027223, 0.0000027224, 0.0000027246, 0.0000027279, + 0.0000027302, 0.0000027311, 0.0000027306, 0.0000027319, 0.0000027360, + 0.0000027354, 0.0000027288, 0.0000027227, 0.0000027205, 0.0000027189, + 0.0000027163, 0.0000027109, 0.0000026988, 0.0000026871, 0.0000026819, + 0.0000026797, 0.0000026790, 0.0000026800, 0.0000026826, 0.0000026843, + 0.0000026833, 0.0000026812, 0.0000026792, 0.0000026770, 0.0000026742, + 0.0000026702, 0.0000026657, 0.0000026619, 0.0000026590, 0.0000026562, + 0.0000026528, 0.0000026498, 0.0000026483, 0.0000026479, 0.0000026469, + 0.0000026439, 0.0000026389, 0.0000026331, 0.0000026280, 0.0000026252, + 0.0000026229, 0.0000026170, 0.0000026065, 0.0000025930, 0.0000025786, + 0.0000025669, 0.0000025592, 0.0000025539, 0.0000025491, 0.0000025451, + 0.0000025471, 0.0000025508, 0.0000025618, 0.0000025985, 0.0000026367, + 0.0000026419, 0.0000026347, 0.0000026335, 0.0000026399, 0.0000026474, + 0.0000026497, 0.0000026510, 0.0000026537, 0.0000026546, 0.0000026545, + 0.0000026549, 0.0000026565, 0.0000026595, 0.0000026636, 0.0000026677, + 0.0000026696, 0.0000026682, 0.0000026600, 0.0000026482, 0.0000026363, + 0.0000026234, 0.0000026260, 0.0000026025, 0.0000025905, 0.0000026061, + 0.0000026782, 0.0000027261, 0.0000027503, 0.0000027691, 0.0000027923, + 0.0000028039, 0.0000028077, 0.0000028047, 0.0000027976, 0.0000027902, + 0.0000027822, 0.0000027781, 0.0000027779, 0.0000027778, 0.0000027772, + 0.0000027735, 0.0000027734, 0.0000027789, 0.0000027831, 0.0000027806, + 0.0000027692, 0.0000027649, 0.0000027666, 0.0000027738, 0.0000027736, + 0.0000027831, 0.0000027822, 0.0000027720, 0.0000027563, 0.0000027386, + 0.0000027339, 0.0000027394, 0.0000027368, 0.0000027330, 0.0000027257, + 0.0000027119, 0.0000027004, 0.0000026938, 0.0000026902, 0.0000026978, + 0.0000027005, 0.0000027030, 0.0000027053, 0.0000027074, 0.0000027089, + 0.0000027098, 0.0000027108, 0.0000027111, 0.0000027084, 0.0000027009, + 0.0000026901, 0.0000026795, 0.0000026691, 0.0000026577, 0.0000026512, + 0.0000026520, 0.0000026601, 0.0000026719, 0.0000026801, 0.0000026737, + 0.0000026551, 0.0000026397, 0.0000026342, 0.0000026330, 0.0000026334, + 0.0000026325, 0.0000026302, 0.0000026273, 0.0000026251, 0.0000026244, + 0.0000026256, 0.0000026286, 0.0000026327, 0.0000026370, 0.0000026410, + 0.0000026438, 0.0000026445, 0.0000026445, 0.0000026452, 0.0000026463, + 0.0000026473, 0.0000026481, 0.0000026485, 0.0000026473, 0.0000026455, + 0.0000026447, 0.0000026407, 0.0000026346, 0.0000026273, 0.0000026196, + 0.0000026123, 0.0000026069, 0.0000026024, 0.0000025981, 0.0000025915, + 0.0000025829, 0.0000025761, 0.0000025703, 0.0000025630, 0.0000025566, + 0.0000025494, 0.0000025395, 0.0000025307, 0.0000025283, 0.0000025308, + 0.0000025367, 0.0000025443, 0.0000025520, 0.0000025572, 0.0000025586, + 0.0000025614, 0.0000025648, 0.0000025635, 0.0000025581, 0.0000025505, + 0.0000025429, 0.0000025391, 0.0000025388, 0.0000025410, 0.0000025438, + 0.0000025462, 0.0000025458, 0.0000025398, 0.0000025289, 0.0000025115, + 0.0000024966, 0.0000024852, 0.0000024808, 0.0000024870, 0.0000024958, + 0.0000024966, 0.0000024936, 0.0000025005, 0.0000025146, 0.0000025187, + 0.0000025260, 0.0000025497, 0.0000025488, 0.0000025330, 0.0000025304, + 0.0000025394, 0.0000025583, 0.0000025615, 0.0000025686, 0.0000025931, + 0.0000026049, 0.0000026212, 0.0000026303, 0.0000026290, 0.0000026245, + 0.0000026163, 0.0000026085, 0.0000026054, 0.0000026042, 0.0000026009, + 0.0000025916, 0.0000025785, 0.0000025694, 0.0000025670, 0.0000025685, + 0.0000025737, 0.0000025814, 0.0000025872, 0.0000025904, 0.0000025932, + 0.0000025959, 0.0000025999, 0.0000026120, 0.0000026333, 0.0000026505, + 0.0000026559, 0.0000026586, 0.0000026643, 0.0000026706, 0.0000026745, + 0.0000026749, 0.0000026705, 0.0000026620, 0.0000026588, 0.0000026661, + 0.0000026791, 0.0000026868, 0.0000026904, 0.0000026927, 0.0000026928, + 0.0000027007, 0.0000027280, 0.0000027647, 0.0000027919, 0.0000027987, + 0.0000027972, 0.0000028079, 0.0000028224, 0.0000028221, 0.0000028150, + 0.0000028128, 0.0000028069, 0.0000027917, 0.0000027856, 0.0000027957, + 0.0000028055, 0.0000028099, 0.0000028121, 0.0000028100, 0.0000028074, + 0.0000028054, 0.0000028034, 0.0000028014, 0.0000028023, 0.0000028023, + 0.0000028041, 0.0000028075, 0.0000028102, 0.0000028113, 0.0000028134, + 0.0000028175, 0.0000028251, 0.0000028336, 0.0000028401, 0.0000028446, + 0.0000028479, 0.0000028509, 0.0000028534, 0.0000028544, 0.0000028541, + 0.0000028524, 0.0000028505, 0.0000028475, 0.0000028441, 0.0000028361, + 0.0000028267, 0.0000028168, 0.0000028095, 0.0000028032, 0.0000027989, + 0.0000027942, 0.0000027903, 0.0000027855, 0.0000027805, 0.0000027776, + 0.0000027789, 0.0000027868, 0.0000027982, 0.0000028111, 0.0000028258, + 0.0000028401, 0.0000028533, 0.0000028648, 0.0000028714, 0.0000028735, + 0.0000028729, 0.0000028675, 0.0000028620, 0.0000028554, 0.0000028469, + 0.0000028373, 0.0000028295, 0.0000028282, 0.0000028310, 0.0000028342, + 0.0000028338, 0.0000028290, 0.0000028226, 0.0000028137, 0.0000028056, + 0.0000028008, 0.0000028006, 0.0000028066, 0.0000028140, 0.0000028199, + 0.0000028242, 0.0000028271, 0.0000028268, 0.0000028241, 0.0000028205, + 0.0000028189, 0.0000028205, 0.0000028241, 0.0000028269, 0.0000028283, + 0.0000028289, 0.0000028284, 0.0000028275, 0.0000028260, 0.0000028236, + 0.0000028202, 0.0000028169, 0.0000028139, 0.0000028107, 0.0000028076, + 0.0000028055, 0.0000028049, 0.0000028040, 0.0000027998, 0.0000027974, + 0.0000027969, 0.0000028005, 0.0000028081, 0.0000028153, 0.0000028196, + 0.0000028202, 0.0000028163, 0.0000028066, 0.0000027985, 0.0000027971, + 0.0000027962, 0.0000027908, 0.0000027810, 0.0000027723, 0.0000027688, + 0.0000027757, 0.0000027931, 0.0000028109, 0.0000028255, 0.0000028365, + 0.0000028410, 0.0000028401, 0.0000028372, 0.0000028366, 0.0000028372, + 0.0000028366, 0.0000028347, 0.0000028335, 0.0000028349, 0.0000028379, + 0.0000028397, 0.0000028387, 0.0000028361, 0.0000028346, 0.0000028351, + 0.0000028366, 0.0000028387, 0.0000028398, 0.0000028385, 0.0000028357, + 0.0000028318, 0.0000028274, 0.0000028237, 0.0000028220, 0.0000028201, + 0.0000028187, 0.0000028193, 0.0000028207, 0.0000028182, 0.0000028111, + 0.0000028054, 0.0000028041, 0.0000028048, 0.0000028049, 0.0000028027, + 0.0000027993, 0.0000027973, 0.0000027972, 0.0000027974, 0.0000027959, + 0.0000027913, 0.0000027848, 0.0000027777, 0.0000027718, 0.0000027703, + 0.0000027725, 0.0000027769, 0.0000027795, 0.0000027796, 0.0000027773, + 0.0000027722, 0.0000027659, 0.0000027620, 0.0000027620, 0.0000027634, + 0.0000027659, 0.0000027691, 0.0000027701, 0.0000027700, 0.0000027693, + 0.0000027719, 0.0000027780, 0.0000027828, 0.0000027841, 0.0000027838, + 0.0000027835, 0.0000027818, 0.0000027776, 0.0000027708, 0.0000027623, + 0.0000027561, 0.0000027557, 0.0000027599, 0.0000027659, 0.0000027722, + 0.0000027765, 0.0000027744, 0.0000027680, 0.0000027604, 0.0000027576, + 0.0000027600, 0.0000027659, 0.0000027728, 0.0000027817, 0.0000027908, + 0.0000027952, 0.0000027939, 0.0000027877, 0.0000027813, 0.0000027801, + 0.0000027774, 0.0000027637, 0.0000027372, 0.0000027151, 0.0000027042, + 0.0000027006, 0.0000027003, 0.0000027040, 0.0000027143, 0.0000027317, + 0.0000027460, 0.0000027505, 0.0000027484, 0.0000027393, 0.0000027315, + 0.0000027335, 0.0000027447, 0.0000027530, 0.0000027586, 0.0000027648, + 0.0000027684, 0.0000027673, 0.0000027612, 0.0000027554, 0.0000027541, + 0.0000027543, 0.0000027553, 0.0000027555, 0.0000027536, 0.0000027494, + 0.0000027426, 0.0000027316, 0.0000027177, 0.0000027056, 0.0000026952, + 0.0000026775, 0.0000026485, 0.0000026232, 0.0000026223, 0.0000026409, + 0.0000026718, 0.0000027065, 0.0000027351, 0.0000027499, 0.0000027533, + 0.0000027503, 0.0000027489, 0.0000027544, 0.0000027628, 0.0000027658, + 0.0000027689, 0.0000027868, 0.0000028106, 0.0000028123, 0.0000028112, + 0.0000028174, 0.0000028304, 0.0000028389, 0.0000028381, 0.0000028301, + 0.0000028325, 0.0000028395, 0.0000028290, 0.0000028044, 0.0000028007, + 0.0000028146, 0.0000028313, 0.0000028396, 0.0000028393, 0.0000028311, + 0.0000028192, 0.0000028160, 0.0000028234, 0.0000028352, 0.0000028391, + 0.0000028385, 0.0000028319, 0.0000028132, 0.0000028009, 0.0000028040, + 0.0000028010, 0.0000027840, 0.0000027805, 0.0000027845, 0.0000027908, + 0.0000027948, 0.0000028007, 0.0000028106, 0.0000028197, 0.0000028264, + 0.0000028318, 0.0000028342, 0.0000028423, 0.0000028636, 0.0000028722, + 0.0000028428, 0.0000028318, 0.0000028508, 0.0000028669, 0.0000028784, + 0.0000028798, 0.0000028744, 0.0000028719, 0.0000028780, 0.0000028897, + 0.0000029005, 0.0000029098, 0.0000029152, 0.0000029128, 0.0000029060, + 0.0000029091, 0.0000029163, 0.0000029176, 0.0000029071, 0.0000028847, + 0.0000028716, 0.0000028733, 0.0000028792, 0.0000028686, 0.0000028447, + 0.0000028284, 0.0000028324, 0.0000028354, 0.0000028348, 0.0000028350, + 0.0000028330, 0.0000028278, 0.0000028231, 0.0000028230, 0.0000028235, + 0.0000028204, 0.0000028124, 0.0000028013, 0.0000027966, 0.0000027984, + 0.0000028015, 0.0000028010, 0.0000027970, 0.0000027937, 0.0000027924, + 0.0000027918, 0.0000027916, 0.0000027912, 0.0000027898, 0.0000027866, + 0.0000027830, 0.0000027800, 0.0000027780, 0.0000027749, 0.0000027692, + 0.0000027621, 0.0000027566, 0.0000027549, 0.0000027565, 0.0000027613, + 0.0000027664, 0.0000027702, 0.0000027737, 0.0000027766, 0.0000027785, + 0.0000027788, 0.0000027776, 0.0000027752, 0.0000027727, 0.0000027705, + 0.0000027691, 0.0000027687, 0.0000027691, 0.0000027703, 0.0000027707, + 0.0000027695, 0.0000027678, 0.0000027685, 0.0000027723, 0.0000027761, + 0.0000027768, 0.0000027749, 0.0000027715, 0.0000027698, 0.0000027704, + 0.0000027725, 0.0000027732, 0.0000027730, 0.0000027708, 0.0000027657, + 0.0000027596, 0.0000027536, 0.0000027493, 0.0000027468, 0.0000027450, + 0.0000027439, 0.0000027440, 0.0000027440, 0.0000027427, 0.0000027391, + 0.0000027352, 0.0000027326, 0.0000027319, 0.0000027329, 0.0000027345, + 0.0000027353, 0.0000027347, 0.0000027334, 0.0000027314, 0.0000027281, + 0.0000027216, 0.0000027150, 0.0000027128, 0.0000027157, 0.0000027241, + 0.0000027358, 0.0000027464, 0.0000027538, 0.0000027568, 0.0000027567, + 0.0000027568, 0.0000027580, 0.0000027591, 0.0000027588, 0.0000027564, + 0.0000027538, 0.0000027519, 0.0000027496, 0.0000027457, 0.0000027396, + 0.0000027319, 0.0000027246, 0.0000027191, 0.0000027129, 0.0000027034, + 0.0000026920, 0.0000026827, 0.0000026806, 0.0000026812, 0.0000026811, + 0.0000026741, 0.0000026601, 0.0000026487, 0.0000026425, 0.0000026353, + 0.0000026259, 0.0000026193, 0.0000026175, 0.0000026180, 0.0000026217, + 0.0000026261, 0.0000026318, 0.0000026377, 0.0000026433, 0.0000026494, + 0.0000026566, 0.0000026649, 0.0000026730, 0.0000026805, 0.0000026870, + 0.0000026919, 0.0000026943, 0.0000026959, 0.0000026994, 0.0000027060, + 0.0000027138, 0.0000027198, 0.0000027239, 0.0000027283, 0.0000027337, + 0.0000027388, 0.0000027435, 0.0000027489, 0.0000027552, 0.0000027631, + 0.0000027719, 0.0000027800, 0.0000027890, 0.0000028004, 0.0000028126, + 0.0000028235, 0.0000028318, 0.0000028379, 0.0000028435, 0.0000028484, + 0.0000028513, 0.0000028525, 0.0000028505, 0.0000028454, 0.0000028431, + 0.0000028493, 0.0000028622, 0.0000028696, 0.0000028708, 0.0000028674, + 0.0000028676, 0.0000028705, 0.0000028746, 0.0000028781, 0.0000028809, + 0.0000028806, 0.0000028738, 0.0000028633, 0.0000028611, 0.0000028673, + 0.0000028748, 0.0000028759, 0.0000028726, 0.0000028729, 0.0000028798, + 0.0000028874, 0.0000028891, 0.0000028840, 0.0000028730, 0.0000028583, + 0.0000028448, 0.0000028380, 0.0000028330, 0.0000028290, 0.0000028258, + 0.0000028243, 0.0000028205, 0.0000028127, 0.0000028005, 0.0000027863, + 0.0000027748, 0.0000027684, 0.0000027658, 0.0000027650, 0.0000027629, + 0.0000027605, 0.0000027592, 0.0000027594, 0.0000027602, 0.0000027609, + 0.0000027594, 0.0000027556, 0.0000027496, 0.0000027420, 0.0000027338, + 0.0000027264, 0.0000027194, 0.0000027127, 0.0000027052, 0.0000026977, + 0.0000026908, 0.0000026863, 0.0000026841, 0.0000026844, 0.0000026860, + 0.0000026875, 0.0000026859, 0.0000026823, 0.0000026803, 0.0000026815, + 0.0000026842, 0.0000026863, 0.0000026913, 0.0000027024, 0.0000027135, + 0.0000027154, 0.0000027139, 0.0000027267, 0.0000027525, 0.0000027670, + 0.0000027654, 0.0000027593, 0.0000027559, 0.0000027567, 0.0000027626, + 0.0000027735, 0.0000027782, 0.0000027633, 0.0000027370, 0.0000027209, + 0.0000027141, 0.0000027089, 0.0000027128, 0.0000027267, 0.0000027377, + 0.0000027385, 0.0000027319, 0.0000027294, 0.0000027404, 0.0000027540, + 0.0000027533, 0.0000027505, 0.0000027498, 0.0000027410, 0.0000027248, + 0.0000027134, 0.0000027074, 0.0000027045, 0.0000027040, 0.0000027040, + 0.0000027042, 0.0000027057, 0.0000027078, 0.0000027088, 0.0000027086, + 0.0000027081, 0.0000027074, 0.0000027065, 0.0000027052, 0.0000027049, + 0.0000027059, 0.0000027088, 0.0000027127, 0.0000027164, 0.0000027190, + 0.0000027196, 0.0000027193, 0.0000027199, 0.0000027225, 0.0000027255, + 0.0000027281, 0.0000027299, 0.0000027318, 0.0000027350, 0.0000027382, + 0.0000027361, 0.0000027286, 0.0000027223, 0.0000027196, 0.0000027187, + 0.0000027157, 0.0000027122, 0.0000027039, 0.0000026911, 0.0000026824, + 0.0000026787, 0.0000026764, 0.0000026767, 0.0000026792, 0.0000026811, + 0.0000026800, 0.0000026774, 0.0000026765, 0.0000026763, 0.0000026747, + 0.0000026709, 0.0000026662, 0.0000026620, 0.0000026594, 0.0000026577, + 0.0000026561, 0.0000026542, 0.0000026530, 0.0000026527, 0.0000026514, + 0.0000026469, 0.0000026391, 0.0000026305, 0.0000026248, 0.0000026223, + 0.0000026207, 0.0000026173, 0.0000026102, 0.0000026001, 0.0000025886, + 0.0000025776, 0.0000025692, 0.0000025631, 0.0000025568, 0.0000025506, + 0.0000025449, 0.0000025442, 0.0000025459, 0.0000025485, 0.0000025706, + 0.0000026144, 0.0000026406, 0.0000026408, 0.0000026338, 0.0000026333, + 0.0000026390, 0.0000026449, 0.0000026480, 0.0000026504, 0.0000026528, + 0.0000026552, 0.0000026573, 0.0000026590, 0.0000026609, 0.0000026635, + 0.0000026674, 0.0000026710, 0.0000026726, 0.0000026690, 0.0000026555, + 0.0000026443, 0.0000026279, 0.0000026261, 0.0000026116, 0.0000025877, + 0.0000025965, 0.0000026561, 0.0000027134, 0.0000027428, 0.0000027611, + 0.0000027876, 0.0000028021, 0.0000028058, 0.0000028031, 0.0000027953, + 0.0000027871, 0.0000027795, 0.0000027776, 0.0000027795, 0.0000027791, + 0.0000027750, 0.0000027689, 0.0000027724, 0.0000027812, 0.0000027826, + 0.0000027757, 0.0000027675, 0.0000027650, 0.0000027679, 0.0000027710, + 0.0000027722, 0.0000027806, 0.0000027784, 0.0000027680, 0.0000027524, + 0.0000027351, 0.0000027330, 0.0000027375, 0.0000027330, 0.0000027299, + 0.0000027246, 0.0000027131, 0.0000027028, 0.0000026977, 0.0000026966, + 0.0000027068, 0.0000027100, 0.0000027126, 0.0000027145, 0.0000027159, + 0.0000027167, 0.0000027170, 0.0000027175, 0.0000027182, 0.0000027179, + 0.0000027132, 0.0000027024, 0.0000026887, 0.0000026755, 0.0000026629, + 0.0000026518, 0.0000026455, 0.0000026472, 0.0000026542, 0.0000026636, + 0.0000026714, 0.0000026664, 0.0000026516, 0.0000026377, 0.0000026331, + 0.0000026341, 0.0000026355, 0.0000026365, 0.0000026362, 0.0000026356, + 0.0000026350, 0.0000026353, 0.0000026368, 0.0000026386, 0.0000026404, + 0.0000026427, 0.0000026442, 0.0000026443, 0.0000026441, 0.0000026448, + 0.0000026456, 0.0000026460, 0.0000026471, 0.0000026482, 0.0000026475, + 0.0000026462, 0.0000026449, 0.0000026395, 0.0000026326, 0.0000026258, + 0.0000026198, 0.0000026143, 0.0000026095, 0.0000026053, 0.0000026012, + 0.0000025952, 0.0000025866, 0.0000025772, 0.0000025681, 0.0000025594, + 0.0000025526, 0.0000025466, 0.0000025394, 0.0000025317, 0.0000025272, + 0.0000025279, 0.0000025315, 0.0000025362, 0.0000025450, 0.0000025542, + 0.0000025576, 0.0000025608, 0.0000025661, 0.0000025672, 0.0000025642, + 0.0000025573, 0.0000025483, 0.0000025414, 0.0000025384, 0.0000025394, + 0.0000025411, 0.0000025420, 0.0000025415, 0.0000025395, 0.0000025353, + 0.0000025274, 0.0000025171, 0.0000025064, 0.0000024953, 0.0000024877, + 0.0000024884, 0.0000024923, 0.0000024937, 0.0000024919, 0.0000025007, + 0.0000025139, 0.0000025182, 0.0000025235, 0.0000025473, 0.0000025493, + 0.0000025361, 0.0000025324, 0.0000025381, 0.0000025549, 0.0000025578, + 0.0000025643, 0.0000025911, 0.0000026079, 0.0000026262, 0.0000026337, + 0.0000026321, 0.0000026278, 0.0000026183, 0.0000026072, 0.0000026015, + 0.0000025991, 0.0000025946, 0.0000025831, 0.0000025684, 0.0000025601, + 0.0000025591, 0.0000025637, 0.0000025690, 0.0000025752, 0.0000025803, + 0.0000025858, 0.0000025927, 0.0000025999, 0.0000026077, 0.0000026227, + 0.0000026413, 0.0000026509, 0.0000026516, 0.0000026528, 0.0000026590, + 0.0000026650, 0.0000026672, 0.0000026659, 0.0000026602, 0.0000026546, + 0.0000026575, 0.0000026681, 0.0000026780, 0.0000026831, 0.0000026871, + 0.0000026885, 0.0000026890, 0.0000026984, 0.0000027212, 0.0000027535, + 0.0000027833, 0.0000027945, 0.0000027952, 0.0000028051, 0.0000028168, + 0.0000028163, 0.0000028109, 0.0000028111, 0.0000028094, 0.0000028003, + 0.0000027936, 0.0000027978, 0.0000028038, 0.0000028096, 0.0000028135, + 0.0000028149, 0.0000028159, 0.0000028159, 0.0000028143, 0.0000028146, + 0.0000028179, 0.0000028201, 0.0000028234, 0.0000028260, 0.0000028289, + 0.0000028305, 0.0000028304, 0.0000028307, 0.0000028323, 0.0000028362, + 0.0000028390, 0.0000028390, 0.0000028371, 0.0000028334, 0.0000028294, + 0.0000028251, 0.0000028215, 0.0000028201, 0.0000028214, 0.0000028233, + 0.0000028243, 0.0000028215, 0.0000028166, 0.0000028115, 0.0000028078, + 0.0000028024, 0.0000027986, 0.0000027939, 0.0000027897, 0.0000027852, + 0.0000027821, 0.0000027790, 0.0000027787, 0.0000027839, 0.0000027953, + 0.0000028074, 0.0000028215, 0.0000028359, 0.0000028471, 0.0000028554, + 0.0000028602, 0.0000028631, 0.0000028632, 0.0000028587, 0.0000028527, + 0.0000028465, 0.0000028387, 0.0000028295, 0.0000028195, 0.0000028133, + 0.0000028122, 0.0000028158, 0.0000028205, 0.0000028223, 0.0000028210, + 0.0000028168, 0.0000028113, 0.0000028068, 0.0000028060, 0.0000028081, + 0.0000028132, 0.0000028179, 0.0000028222, 0.0000028258, 0.0000028260, + 0.0000028240, 0.0000028203, 0.0000028185, 0.0000028203, 0.0000028243, + 0.0000028272, 0.0000028292, 0.0000028300, 0.0000028297, 0.0000028286, + 0.0000028275, 0.0000028256, 0.0000028226, 0.0000028197, 0.0000028182, + 0.0000028170, 0.0000028154, 0.0000028138, 0.0000028119, 0.0000028083, + 0.0000028024, 0.0000027961, 0.0000027911, 0.0000027892, 0.0000027955, + 0.0000028048, 0.0000028125, 0.0000028169, 0.0000028173, 0.0000028125, + 0.0000028041, 0.0000028001, 0.0000028014, 0.0000028002, 0.0000027919, + 0.0000027785, 0.0000027665, 0.0000027629, 0.0000027732, 0.0000027926, + 0.0000028116, 0.0000028271, 0.0000028371, 0.0000028401, 0.0000028392, + 0.0000028378, 0.0000028370, 0.0000028354, 0.0000028332, 0.0000028316, + 0.0000028321, 0.0000028352, 0.0000028390, 0.0000028400, 0.0000028385, + 0.0000028366, 0.0000028357, 0.0000028359, 0.0000028371, 0.0000028381, + 0.0000028373, 0.0000028353, 0.0000028322, 0.0000028276, 0.0000028226, + 0.0000028193, 0.0000028186, 0.0000028189, 0.0000028197, 0.0000028207, + 0.0000028199, 0.0000028150, 0.0000028093, 0.0000028068, 0.0000028071, + 0.0000028080, 0.0000028071, 0.0000028039, 0.0000028001, 0.0000027982, + 0.0000027982, 0.0000027987, 0.0000027982, 0.0000027950, 0.0000027879, + 0.0000027795, 0.0000027746, 0.0000027747, 0.0000027781, 0.0000027806, + 0.0000027803, 0.0000027776, 0.0000027735, 0.0000027683, 0.0000027639, + 0.0000027622, 0.0000027632, 0.0000027651, 0.0000027671, 0.0000027679, + 0.0000027671, 0.0000027650, 0.0000027610, 0.0000027597, 0.0000027646, + 0.0000027723, 0.0000027774, 0.0000027797, 0.0000027805, 0.0000027791, + 0.0000027752, 0.0000027696, 0.0000027627, 0.0000027581, 0.0000027586, + 0.0000027607, 0.0000027623, 0.0000027656, 0.0000027682, 0.0000027663, + 0.0000027602, 0.0000027532, 0.0000027492, 0.0000027495, 0.0000027534, + 0.0000027596, 0.0000027671, 0.0000027744, 0.0000027797, 0.0000027816, + 0.0000027792, 0.0000027744, 0.0000027725, 0.0000027713, 0.0000027601, + 0.0000027381, 0.0000027141, 0.0000026980, 0.0000026897, 0.0000026875, + 0.0000026923, 0.0000027035, 0.0000027222, 0.0000027382, 0.0000027443, + 0.0000027439, 0.0000027361, 0.0000027291, 0.0000027327, 0.0000027441, + 0.0000027512, 0.0000027552, 0.0000027603, 0.0000027644, 0.0000027637, + 0.0000027574, 0.0000027503, 0.0000027472, 0.0000027465, 0.0000027477, + 0.0000027492, 0.0000027492, 0.0000027466, 0.0000027418, 0.0000027329, + 0.0000027201, 0.0000027083, 0.0000027019, 0.0000026955, 0.0000026753, + 0.0000026449, 0.0000026267, 0.0000026252, 0.0000026364, 0.0000026619, + 0.0000026944, 0.0000027230, 0.0000027424, 0.0000027499, 0.0000027494, + 0.0000027519, 0.0000027602, 0.0000027657, 0.0000027665, 0.0000027750, + 0.0000028028, 0.0000028122, 0.0000028101, 0.0000028154, 0.0000028266, + 0.0000028335, 0.0000028326, 0.0000028252, 0.0000028286, 0.0000028368, + 0.0000028289, 0.0000028076, 0.0000028016, 0.0000028130, 0.0000028276, + 0.0000028358, 0.0000028364, 0.0000028296, 0.0000028205, 0.0000028200, + 0.0000028278, 0.0000028365, 0.0000028391, 0.0000028387, 0.0000028345, + 0.0000028192, 0.0000028009, 0.0000027986, 0.0000028024, 0.0000027918, + 0.0000027862, 0.0000027888, 0.0000027945, 0.0000027968, 0.0000027989, + 0.0000028073, 0.0000028191, 0.0000028274, 0.0000028331, 0.0000028337, + 0.0000028375, 0.0000028588, 0.0000028714, 0.0000028427, 0.0000028332, + 0.0000028527, 0.0000028685, 0.0000028775, 0.0000028760, 0.0000028729, + 0.0000028767, 0.0000028898, 0.0000029044, 0.0000029146, 0.0000029189, + 0.0000029168, 0.0000029114, 0.0000029089, 0.0000029157, 0.0000029198, + 0.0000029180, 0.0000029040, 0.0000028837, 0.0000028737, 0.0000028774, + 0.0000028792, 0.0000028649, 0.0000028419, 0.0000028290, 0.0000028335, + 0.0000028364, 0.0000028362, 0.0000028373, 0.0000028358, 0.0000028316, + 0.0000028294, 0.0000028297, 0.0000028271, 0.0000028212, 0.0000028124, + 0.0000028031, 0.0000027988, 0.0000028014, 0.0000028040, 0.0000028013, + 0.0000027948, 0.0000027897, 0.0000027876, 0.0000027865, 0.0000027862, + 0.0000027854, 0.0000027838, 0.0000027817, 0.0000027799, 0.0000027794, + 0.0000027802, 0.0000027807, 0.0000027784, 0.0000027734, 0.0000027669, + 0.0000027622, 0.0000027620, 0.0000027642, 0.0000027664, 0.0000027676, + 0.0000027681, 0.0000027687, 0.0000027693, 0.0000027703, 0.0000027715, + 0.0000027718, 0.0000027702, 0.0000027668, 0.0000027642, 0.0000027641, + 0.0000027652, 0.0000027654, 0.0000027650, 0.0000027643, 0.0000027635, + 0.0000027628, 0.0000027632, 0.0000027663, 0.0000027712, 0.0000027752, + 0.0000027761, 0.0000027742, 0.0000027708, 0.0000027686, 0.0000027685, + 0.0000027712, 0.0000027755, 0.0000027801, 0.0000027828, 0.0000027826, + 0.0000027801, 0.0000027755, 0.0000027691, 0.0000027616, 0.0000027547, + 0.0000027504, 0.0000027490, 0.0000027494, 0.0000027496, 0.0000027485, + 0.0000027450, 0.0000027398, 0.0000027349, 0.0000027313, 0.0000027290, + 0.0000027281, 0.0000027280, 0.0000027275, 0.0000027275, 0.0000027267, + 0.0000027230, 0.0000027189, 0.0000027178, 0.0000027213, 0.0000027295, + 0.0000027393, 0.0000027478, 0.0000027533, 0.0000027556, 0.0000027567, + 0.0000027582, 0.0000027601, 0.0000027610, 0.0000027602, 0.0000027589, + 0.0000027589, 0.0000027590, 0.0000027581, 0.0000027543, 0.0000027467, + 0.0000027362, 0.0000027260, 0.0000027184, 0.0000027130, 0.0000027074, + 0.0000026988, 0.0000026887, 0.0000026823, 0.0000026815, 0.0000026803, + 0.0000026727, 0.0000026612, 0.0000026539, 0.0000026504, 0.0000026446, + 0.0000026366, 0.0000026308, 0.0000026277, 0.0000026268, 0.0000026267, + 0.0000026288, 0.0000026314, 0.0000026335, 0.0000026351, 0.0000026374, + 0.0000026416, 0.0000026478, 0.0000026563, 0.0000026661, 0.0000026736, + 0.0000026772, 0.0000026796, 0.0000026841, 0.0000026900, 0.0000026956, + 0.0000026990, 0.0000027003, 0.0000027024, 0.0000027066, 0.0000027117, + 0.0000027167, 0.0000027230, 0.0000027313, 0.0000027423, 0.0000027546, + 0.0000027650, 0.0000027732, 0.0000027824, 0.0000027923, 0.0000028024, + 0.0000028106, 0.0000028171, 0.0000028235, 0.0000028295, 0.0000028328, + 0.0000028328, 0.0000028296, 0.0000028212, 0.0000028136, 0.0000028147, + 0.0000028280, 0.0000028435, 0.0000028533, 0.0000028580, 0.0000028626, + 0.0000028703, 0.0000028770, 0.0000028809, 0.0000028836, 0.0000028844, + 0.0000028796, 0.0000028703, 0.0000028675, 0.0000028731, 0.0000028840, + 0.0000028885, 0.0000028871, 0.0000028864, 0.0000028901, 0.0000028952, + 0.0000028961, 0.0000028902, 0.0000028776, 0.0000028623, 0.0000028507, + 0.0000028424, 0.0000028341, 0.0000028256, 0.0000028178, 0.0000028114, + 0.0000028066, 0.0000027997, 0.0000027896, 0.0000027771, 0.0000027657, + 0.0000027576, 0.0000027537, 0.0000027527, 0.0000027519, 0.0000027504, + 0.0000027491, 0.0000027480, 0.0000027463, 0.0000027438, 0.0000027402, + 0.0000027356, 0.0000027301, 0.0000027237, 0.0000027177, 0.0000027133, + 0.0000027091, 0.0000027037, 0.0000026980, 0.0000026911, 0.0000026835, + 0.0000026764, 0.0000026707, 0.0000026648, 0.0000026582, 0.0000026514, + 0.0000026460, 0.0000026427, 0.0000026432, 0.0000026507, 0.0000026634, + 0.0000026760, 0.0000026851, 0.0000026935, 0.0000027042, 0.0000027113, + 0.0000027115, 0.0000027175, 0.0000027422, 0.0000027636, 0.0000027656, + 0.0000027584, 0.0000027529, 0.0000027536, 0.0000027591, 0.0000027693, + 0.0000027783, 0.0000027729, 0.0000027511, 0.0000027297, 0.0000027158, + 0.0000027074, 0.0000027116, 0.0000027252, 0.0000027334, 0.0000027332, + 0.0000027290, 0.0000027269, 0.0000027348, 0.0000027503, 0.0000027535, + 0.0000027486, 0.0000027485, 0.0000027465, 0.0000027357, 0.0000027241, + 0.0000027162, 0.0000027116, 0.0000027097, 0.0000027088, 0.0000027086, + 0.0000027094, 0.0000027111, 0.0000027116, 0.0000027114, 0.0000027109, + 0.0000027107, 0.0000027102, 0.0000027090, 0.0000027079, 0.0000027079, + 0.0000027092, 0.0000027118, 0.0000027146, 0.0000027171, 0.0000027183, + 0.0000027186, 0.0000027192, 0.0000027212, 0.0000027235, 0.0000027264, + 0.0000027289, 0.0000027337, 0.0000027387, 0.0000027405, 0.0000027362, + 0.0000027277, 0.0000027208, 0.0000027184, 0.0000027177, 0.0000027148, + 0.0000027115, 0.0000027063, 0.0000026954, 0.0000026845, 0.0000026788, + 0.0000026750, 0.0000026737, 0.0000026755, 0.0000026784, 0.0000026777, + 0.0000026743, 0.0000026732, 0.0000026742, 0.0000026734, 0.0000026696, + 0.0000026643, 0.0000026597, 0.0000026566, 0.0000026551, 0.0000026549, + 0.0000026551, 0.0000026552, 0.0000026550, 0.0000026537, 0.0000026499, + 0.0000026425, 0.0000026331, 0.0000026255, 0.0000026206, 0.0000026156, + 0.0000026093, 0.0000026028, 0.0000025966, 0.0000025901, 0.0000025832, + 0.0000025760, 0.0000025704, 0.0000025659, 0.0000025591, 0.0000025518, + 0.0000025458, 0.0000025419, 0.0000025421, 0.0000025425, 0.0000025514, + 0.0000025855, 0.0000026260, 0.0000026413, 0.0000026385, 0.0000026330, + 0.0000026325, 0.0000026356, 0.0000026409, 0.0000026467, 0.0000026516, + 0.0000026552, 0.0000026582, 0.0000026609, 0.0000026629, 0.0000026646, + 0.0000026671, 0.0000026714, 0.0000026752, 0.0000026730, 0.0000026625, + 0.0000026485, 0.0000026345, 0.0000026251, 0.0000026181, 0.0000025870, + 0.0000025886, 0.0000026328, 0.0000027010, 0.0000027350, 0.0000027530, + 0.0000027809, 0.0000027996, 0.0000028042, 0.0000028016, 0.0000027929, + 0.0000027835, 0.0000027773, 0.0000027774, 0.0000027792, 0.0000027774, + 0.0000027681, 0.0000027658, 0.0000027746, 0.0000027818, 0.0000027803, + 0.0000027729, 0.0000027671, 0.0000027652, 0.0000027691, 0.0000027670, + 0.0000027721, 0.0000027782, 0.0000027753, 0.0000027644, 0.0000027492, + 0.0000027328, 0.0000027330, 0.0000027362, 0.0000027308, 0.0000027284, + 0.0000027252, 0.0000027167, 0.0000027082, 0.0000027044, 0.0000027046, + 0.0000027147, 0.0000027178, 0.0000027202, 0.0000027216, 0.0000027224, + 0.0000027227, 0.0000027229, 0.0000027233, 0.0000027236, 0.0000027227, + 0.0000027194, 0.0000027126, 0.0000027010, 0.0000026840, 0.0000026688, + 0.0000026569, 0.0000026470, 0.0000026420, 0.0000026418, 0.0000026457, + 0.0000026546, 0.0000026633, 0.0000026640, 0.0000026550, 0.0000026416, + 0.0000026354, 0.0000026351, 0.0000026365, 0.0000026380, 0.0000026393, + 0.0000026402, 0.0000026414, 0.0000026418, 0.0000026423, 0.0000026419, + 0.0000026416, 0.0000026409, 0.0000026398, 0.0000026400, 0.0000026415, + 0.0000026425, 0.0000026436, 0.0000026454, 0.0000026462, 0.0000026451, + 0.0000026433, 0.0000026396, 0.0000026342, 0.0000026290, 0.0000026245, + 0.0000026212, 0.0000026185, 0.0000026152, 0.0000026110, 0.0000026060, + 0.0000025997, 0.0000025912, 0.0000025807, 0.0000025690, 0.0000025573, + 0.0000025484, 0.0000025429, 0.0000025384, 0.0000025330, 0.0000025286, + 0.0000025274, 0.0000025289, 0.0000025303, 0.0000025348, 0.0000025459, + 0.0000025538, 0.0000025580, 0.0000025644, 0.0000025687, 0.0000025678, + 0.0000025631, 0.0000025550, 0.0000025466, 0.0000025412, 0.0000025400, + 0.0000025407, 0.0000025414, 0.0000025401, 0.0000025365, 0.0000025332, + 0.0000025288, 0.0000025253, 0.0000025222, 0.0000025156, 0.0000025044, + 0.0000024941, 0.0000024895, 0.0000024889, 0.0000024906, 0.0000024918, + 0.0000025013, 0.0000025132, 0.0000025173, 0.0000025221, 0.0000025434, + 0.0000025502, 0.0000025390, 0.0000025331, 0.0000025360, 0.0000025507, + 0.0000025550, 0.0000025612, 0.0000025897, 0.0000026108, 0.0000026307, + 0.0000026367, 0.0000026349, 0.0000026301, 0.0000026182, 0.0000026037, + 0.0000025971, 0.0000025951, 0.0000025895, 0.0000025760, 0.0000025612, + 0.0000025557, 0.0000025564, 0.0000025615, 0.0000025666, 0.0000025725, + 0.0000025787, 0.0000025873, 0.0000025979, 0.0000026073, 0.0000026179, + 0.0000026354, 0.0000026496, 0.0000026519, 0.0000026498, 0.0000026502, + 0.0000026552, 0.0000026598, 0.0000026606, 0.0000026580, 0.0000026526, + 0.0000026518, 0.0000026585, 0.0000026680, 0.0000026758, 0.0000026801, + 0.0000026839, 0.0000026840, 0.0000026864, 0.0000026971, 0.0000027160, + 0.0000027445, 0.0000027740, 0.0000027887, 0.0000027928, 0.0000028016, + 0.0000028103, 0.0000028096, 0.0000028066, 0.0000028087, 0.0000028098, + 0.0000028073, 0.0000028029, 0.0000028020, 0.0000028042, 0.0000028095, + 0.0000028141, 0.0000028176, 0.0000028224, 0.0000028261, 0.0000028267, + 0.0000028297, 0.0000028338, 0.0000028376, 0.0000028412, 0.0000028425, + 0.0000028419, 0.0000028398, 0.0000028360, 0.0000028324, 0.0000028293, + 0.0000028253, 0.0000028205, 0.0000028139, 0.0000028070, 0.0000028018, + 0.0000027994, 0.0000027984, 0.0000027984, 0.0000028012, 0.0000028059, + 0.0000028108, 0.0000028121, 0.0000028097, 0.0000028044, 0.0000027994, + 0.0000027964, 0.0000027925, 0.0000027898, 0.0000027855, 0.0000027809, + 0.0000027773, 0.0000027769, 0.0000027759, 0.0000027760, 0.0000027797, + 0.0000027904, 0.0000028037, 0.0000028166, 0.0000028309, 0.0000028421, + 0.0000028484, 0.0000028509, 0.0000028537, 0.0000028557, 0.0000028535, + 0.0000028472, 0.0000028401, 0.0000028320, 0.0000028239, 0.0000028168, + 0.0000028114, 0.0000028082, 0.0000028060, 0.0000028045, 0.0000028044, + 0.0000028062, 0.0000028063, 0.0000028038, 0.0000028015, 0.0000028009, + 0.0000028026, 0.0000028079, 0.0000028140, 0.0000028201, 0.0000028256, + 0.0000028278, 0.0000028272, 0.0000028238, 0.0000028204, 0.0000028205, + 0.0000028232, 0.0000028255, 0.0000028266, 0.0000028262, 0.0000028242, + 0.0000028212, 0.0000028184, 0.0000028154, 0.0000028120, 0.0000028092, + 0.0000028087, 0.0000028100, 0.0000028118, 0.0000028143, 0.0000028173, + 0.0000028180, 0.0000028144, 0.0000028068, 0.0000027970, 0.0000027897, + 0.0000027904, 0.0000027968, 0.0000028039, 0.0000028087, 0.0000028105, + 0.0000028098, 0.0000028056, 0.0000028015, 0.0000028026, 0.0000028045, + 0.0000028021, 0.0000027914, 0.0000027748, 0.0000027622, 0.0000027620, + 0.0000027753, 0.0000027953, 0.0000028141, 0.0000028280, 0.0000028360, + 0.0000028379, 0.0000028369, 0.0000028345, 0.0000028313, 0.0000028288, + 0.0000028282, 0.0000028288, 0.0000028310, 0.0000028348, 0.0000028377, + 0.0000028383, 0.0000028371, 0.0000028360, 0.0000028352, 0.0000028351, + 0.0000028351, 0.0000028339, 0.0000028320, 0.0000028300, 0.0000028274, + 0.0000028240, 0.0000028207, 0.0000028182, 0.0000028176, 0.0000028194, + 0.0000028221, 0.0000028227, 0.0000028196, 0.0000028145, 0.0000028105, + 0.0000028091, 0.0000028093, 0.0000028093, 0.0000028077, 0.0000028038, + 0.0000028000, 0.0000027988, 0.0000028001, 0.0000028036, 0.0000028046, + 0.0000027996, 0.0000027904, 0.0000027827, 0.0000027803, 0.0000027815, + 0.0000027833, 0.0000027826, 0.0000027786, 0.0000027730, 0.0000027688, + 0.0000027669, 0.0000027661, 0.0000027658, 0.0000027667, 0.0000027691, + 0.0000027699, 0.0000027683, 0.0000027660, 0.0000027622, 0.0000027564, + 0.0000027516, 0.0000027543, 0.0000027638, 0.0000027730, 0.0000027778, + 0.0000027782, 0.0000027760, 0.0000027723, 0.0000027674, 0.0000027616, + 0.0000027590, 0.0000027600, 0.0000027604, 0.0000027597, 0.0000027604, + 0.0000027609, 0.0000027598, 0.0000027552, 0.0000027504, 0.0000027469, + 0.0000027450, 0.0000027461, 0.0000027503, 0.0000027571, 0.0000027627, + 0.0000027683, 0.0000027726, 0.0000027722, 0.0000027677, 0.0000027642, + 0.0000027624, 0.0000027549, 0.0000027355, 0.0000027096, 0.0000026892, + 0.0000026781, 0.0000026757, 0.0000026819, 0.0000026945, 0.0000027142, + 0.0000027313, 0.0000027383, 0.0000027395, 0.0000027335, 0.0000027284, + 0.0000027326, 0.0000027435, 0.0000027493, 0.0000027507, 0.0000027536, + 0.0000027572, 0.0000027568, 0.0000027509, 0.0000027442, 0.0000027413, + 0.0000027416, 0.0000027431, 0.0000027444, 0.0000027448, 0.0000027438, + 0.0000027416, 0.0000027354, 0.0000027247, 0.0000027144, 0.0000027091, + 0.0000027084, 0.0000027010, 0.0000026790, 0.0000026521, 0.0000026316, + 0.0000026235, 0.0000026278, 0.0000026492, 0.0000026812, 0.0000027162, + 0.0000027423, 0.0000027499, 0.0000027512, 0.0000027547, 0.0000027623, + 0.0000027650, 0.0000027644, 0.0000027884, 0.0000028109, 0.0000028091, + 0.0000028136, 0.0000028229, 0.0000028279, 0.0000028269, 0.0000028190, + 0.0000028225, 0.0000028326, 0.0000028289, 0.0000028132, 0.0000028031, + 0.0000028111, 0.0000028246, 0.0000028325, 0.0000028340, 0.0000028294, + 0.0000028254, 0.0000028275, 0.0000028338, 0.0000028375, 0.0000028373, + 0.0000028363, 0.0000028336, 0.0000028231, 0.0000028030, 0.0000027928, + 0.0000027984, 0.0000027966, 0.0000027925, 0.0000027942, 0.0000027987, + 0.0000028019, 0.0000028008, 0.0000028062, 0.0000028172, 0.0000028260, + 0.0000028329, 0.0000028337, 0.0000028339, 0.0000028521, 0.0000028703, + 0.0000028449, 0.0000028326, 0.0000028525, 0.0000028682, 0.0000028750, + 0.0000028729, 0.0000028742, 0.0000028849, 0.0000029023, 0.0000029162, + 0.0000029216, 0.0000029201, 0.0000029154, 0.0000029128, 0.0000029160, + 0.0000029208, 0.0000029206, 0.0000029165, 0.0000028999, 0.0000028822, + 0.0000028764, 0.0000028810, 0.0000028777, 0.0000028617, 0.0000028394, + 0.0000028294, 0.0000028342, 0.0000028381, 0.0000028386, 0.0000028393, + 0.0000028370, 0.0000028342, 0.0000028343, 0.0000028332, 0.0000028276, + 0.0000028203, 0.0000028129, 0.0000028051, 0.0000028027, 0.0000028058, + 0.0000028068, 0.0000028013, 0.0000027926, 0.0000027864, 0.0000027833, + 0.0000027826, 0.0000027831, 0.0000027822, 0.0000027793, 0.0000027750, + 0.0000027717, 0.0000027712, 0.0000027748, 0.0000027798, 0.0000027816, + 0.0000027805, 0.0000027761, 0.0000027706, 0.0000027683, 0.0000027691, + 0.0000027703, 0.0000027698, 0.0000027668, 0.0000027631, 0.0000027605, + 0.0000027596, 0.0000027602, 0.0000027618, 0.0000027627, 0.0000027620, + 0.0000027598, 0.0000027582, 0.0000027592, 0.0000027618, 0.0000027628, + 0.0000027616, 0.0000027586, 0.0000027551, 0.0000027539, 0.0000027551, + 0.0000027582, 0.0000027622, 0.0000027664, 0.0000027692, 0.0000027698, + 0.0000027693, 0.0000027689, 0.0000027689, 0.0000027697, 0.0000027714, + 0.0000027742, 0.0000027782, 0.0000027817, 0.0000027837, 0.0000027846, + 0.0000027827, 0.0000027796, 0.0000027758, 0.0000027711, 0.0000027664, + 0.0000027623, 0.0000027596, 0.0000027581, 0.0000027564, 0.0000027538, + 0.0000027504, 0.0000027454, 0.0000027391, 0.0000027329, 0.0000027275, + 0.0000027232, 0.0000027213, 0.0000027216, 0.0000027229, 0.0000027236, + 0.0000027237, 0.0000027238, 0.0000027258, 0.0000027317, 0.0000027391, + 0.0000027457, 0.0000027507, 0.0000027550, 0.0000027598, 0.0000027636, + 0.0000027649, 0.0000027638, 0.0000027615, 0.0000027609, 0.0000027623, + 0.0000027640, 0.0000027641, 0.0000027609, 0.0000027537, 0.0000027424, + 0.0000027293, 0.0000027193, 0.0000027147, 0.0000027121, 0.0000027065, + 0.0000026969, 0.0000026878, 0.0000026834, 0.0000026810, 0.0000026749, + 0.0000026672, 0.0000026629, 0.0000026600, 0.0000026542, 0.0000026466, + 0.0000026406, 0.0000026366, 0.0000026339, 0.0000026334, 0.0000026344, + 0.0000026347, 0.0000026336, 0.0000026329, 0.0000026317, 0.0000026334, + 0.0000026384, 0.0000026460, 0.0000026524, 0.0000026556, 0.0000026588, + 0.0000026649, 0.0000026718, 0.0000026769, 0.0000026799, 0.0000026810, + 0.0000026817, 0.0000026838, 0.0000026866, 0.0000026888, 0.0000026920, + 0.0000026984, 0.0000027095, 0.0000027247, 0.0000027396, 0.0000027513, + 0.0000027615, 0.0000027704, 0.0000027788, 0.0000027855, 0.0000027903, + 0.0000027955, 0.0000028025, 0.0000028082, 0.0000028101, 0.0000028083, + 0.0000028008, 0.0000027909, 0.0000027863, 0.0000027939, 0.0000028090, + 0.0000028227, 0.0000028329, 0.0000028425, 0.0000028542, 0.0000028649, + 0.0000028726, 0.0000028772, 0.0000028805, 0.0000028788, 0.0000028717, + 0.0000028684, 0.0000028740, 0.0000028858, 0.0000028940, 0.0000028946, + 0.0000028933, 0.0000028940, 0.0000028965, 0.0000028963, 0.0000028887, + 0.0000028750, 0.0000028602, 0.0000028507, 0.0000028419, 0.0000028325, + 0.0000028228, 0.0000028134, 0.0000028041, 0.0000027964, 0.0000027888, + 0.0000027797, 0.0000027692, 0.0000027586, 0.0000027491, 0.0000027425, + 0.0000027376, 0.0000027338, 0.0000027308, 0.0000027284, 0.0000027261, + 0.0000027236, 0.0000027214, 0.0000027202, 0.0000027194, 0.0000027186, + 0.0000027159, 0.0000027125, 0.0000027095, 0.0000027060, 0.0000027013, + 0.0000026959, 0.0000026906, 0.0000026842, 0.0000026771, 0.0000026709, + 0.0000026649, 0.0000026581, 0.0000026492, 0.0000026384, 0.0000026274, + 0.0000026186, 0.0000026165, 0.0000026251, 0.0000026439, 0.0000026670, + 0.0000026844, 0.0000026956, 0.0000027033, 0.0000027059, 0.0000027108, + 0.0000027340, 0.0000027604, 0.0000027672, 0.0000027589, 0.0000027504, + 0.0000027500, 0.0000027560, 0.0000027664, 0.0000027765, 0.0000027775, + 0.0000027650, 0.0000027442, 0.0000027212, 0.0000027063, 0.0000027103, + 0.0000027235, 0.0000027289, 0.0000027272, 0.0000027251, 0.0000027245, + 0.0000027287, 0.0000027437, 0.0000027531, 0.0000027488, 0.0000027447, + 0.0000027459, 0.0000027450, 0.0000027391, 0.0000027317, 0.0000027263, + 0.0000027234, 0.0000027211, 0.0000027194, 0.0000027196, 0.0000027200, + 0.0000027192, 0.0000027178, 0.0000027164, 0.0000027160, 0.0000027157, + 0.0000027147, 0.0000027130, 0.0000027123, 0.0000027127, 0.0000027143, + 0.0000027164, 0.0000027187, 0.0000027202, 0.0000027205, 0.0000027203, + 0.0000027207, 0.0000027225, 0.0000027259, 0.0000027311, 0.0000027377, + 0.0000027418, 0.0000027414, 0.0000027353, 0.0000027255, 0.0000027183, + 0.0000027166, 0.0000027156, 0.0000027131, 0.0000027095, 0.0000027064, + 0.0000026982, 0.0000026869, 0.0000026793, 0.0000026743, 0.0000026713, + 0.0000026722, 0.0000026751, 0.0000026758, 0.0000026727, 0.0000026707, + 0.0000026707, 0.0000026697, 0.0000026656, 0.0000026593, 0.0000026537, + 0.0000026507, 0.0000026499, 0.0000026506, 0.0000026525, 0.0000026544, + 0.0000026553, 0.0000026546, 0.0000026514, 0.0000026448, 0.0000026370, + 0.0000026301, 0.0000026228, 0.0000026122, 0.0000025996, 0.0000025897, + 0.0000025844, 0.0000025817, 0.0000025796, 0.0000025766, 0.0000025728, + 0.0000025692, 0.0000025657, 0.0000025595, 0.0000025519, 0.0000025458, + 0.0000025411, 0.0000025397, 0.0000025400, 0.0000025423, 0.0000025602, + 0.0000025980, 0.0000026317, 0.0000026403, 0.0000026364, 0.0000026320, + 0.0000026294, 0.0000026310, 0.0000026370, 0.0000026453, 0.0000026522, + 0.0000026571, 0.0000026612, 0.0000026644, 0.0000026663, 0.0000026680, + 0.0000026709, 0.0000026758, 0.0000026746, 0.0000026669, 0.0000026519, + 0.0000026410, 0.0000026247, 0.0000026213, 0.0000025872, 0.0000025810, + 0.0000026103, 0.0000026876, 0.0000027257, 0.0000027449, 0.0000027722, + 0.0000027950, 0.0000028025, 0.0000028001, 0.0000027905, 0.0000027802, + 0.0000027755, 0.0000027763, 0.0000027775, 0.0000027719, 0.0000027616, + 0.0000027666, 0.0000027769, 0.0000027801, 0.0000027777, 0.0000027707, + 0.0000027663, 0.0000027669, 0.0000027681, 0.0000027625, 0.0000027729, + 0.0000027760, 0.0000027727, 0.0000027621, 0.0000027468, 0.0000027324, + 0.0000027340, 0.0000027360, 0.0000027301, 0.0000027283, 0.0000027270, + 0.0000027212, 0.0000027145, 0.0000027115, 0.0000027121, 0.0000027213, + 0.0000027241, 0.0000027260, 0.0000027269, 0.0000027271, 0.0000027268, + 0.0000027266, 0.0000027270, 0.0000027274, 0.0000027266, 0.0000027227, + 0.0000027170, 0.0000027091, 0.0000026948, 0.0000026768, 0.0000026612, + 0.0000026520, 0.0000026439, 0.0000026386, 0.0000026363, 0.0000026394, + 0.0000026472, 0.0000026590, 0.0000026666, 0.0000026635, 0.0000026525, + 0.0000026429, 0.0000026386, 0.0000026376, 0.0000026388, 0.0000026400, + 0.0000026407, 0.0000026409, 0.0000026398, 0.0000026377, 0.0000026355, + 0.0000026333, 0.0000026328, 0.0000026350, 0.0000026377, 0.0000026391, + 0.0000026401, 0.0000026407, 0.0000026396, 0.0000026375, 0.0000026349, + 0.0000026311, 0.0000026271, 0.0000026239, 0.0000026218, 0.0000026206, + 0.0000026196, 0.0000026178, 0.0000026145, 0.0000026094, 0.0000026028, + 0.0000025941, 0.0000025834, 0.0000025714, 0.0000025588, 0.0000025474, + 0.0000025403, 0.0000025364, 0.0000025330, 0.0000025295, 0.0000025276, + 0.0000025274, 0.0000025270, 0.0000025278, 0.0000025343, 0.0000025459, + 0.0000025540, 0.0000025613, 0.0000025685, 0.0000025707, 0.0000025675, + 0.0000025603, 0.0000025522, 0.0000025458, 0.0000025423, 0.0000025411, + 0.0000025408, 0.0000025395, 0.0000025370, 0.0000025324, 0.0000025265, + 0.0000025247, 0.0000025254, 0.0000025264, 0.0000025232, 0.0000025113, + 0.0000024982, 0.0000024915, 0.0000024869, 0.0000024881, 0.0000024919, + 0.0000025008, 0.0000025127, 0.0000025165, 0.0000025212, 0.0000025396, + 0.0000025516, 0.0000025416, 0.0000025329, 0.0000025329, 0.0000025458, + 0.0000025528, 0.0000025584, 0.0000025874, 0.0000026137, 0.0000026341, + 0.0000026393, 0.0000026370, 0.0000026305, 0.0000026154, 0.0000025985, + 0.0000025922, 0.0000025916, 0.0000025865, 0.0000025727, 0.0000025595, + 0.0000025571, 0.0000025600, 0.0000025654, 0.0000025699, 0.0000025748, + 0.0000025818, 0.0000025923, 0.0000026041, 0.0000026139, 0.0000026287, + 0.0000026470, 0.0000026555, 0.0000026535, 0.0000026500, 0.0000026501, + 0.0000026530, 0.0000026557, 0.0000026556, 0.0000026519, 0.0000026488, + 0.0000026514, 0.0000026579, 0.0000026665, 0.0000026734, 0.0000026774, + 0.0000026803, 0.0000026803, 0.0000026849, 0.0000026964, 0.0000027128, + 0.0000027375, 0.0000027651, 0.0000027819, 0.0000027890, 0.0000027966, + 0.0000028022, 0.0000028018, 0.0000028019, 0.0000028067, 0.0000028095, + 0.0000028091, 0.0000028069, 0.0000028042, 0.0000028035, 0.0000028070, + 0.0000028100, 0.0000028121, 0.0000028166, 0.0000028211, 0.0000028243, + 0.0000028278, 0.0000028324, 0.0000028371, 0.0000028401, 0.0000028404, + 0.0000028380, 0.0000028338, 0.0000028269, 0.0000028189, 0.0000028107, + 0.0000028025, 0.0000027951, 0.0000027900, 0.0000027872, 0.0000027864, + 0.0000027864, 0.0000027865, 0.0000027851, 0.0000027834, 0.0000027838, + 0.0000027861, 0.0000027869, 0.0000027852, 0.0000027821, 0.0000027808, + 0.0000027806, 0.0000027810, 0.0000027815, 0.0000027793, 0.0000027742, + 0.0000027700, 0.0000027692, 0.0000027689, 0.0000027702, 0.0000027751, + 0.0000027850, 0.0000027978, 0.0000028114, 0.0000028246, 0.0000028365, + 0.0000028431, 0.0000028443, 0.0000028459, 0.0000028496, 0.0000028500, + 0.0000028453, 0.0000028366, 0.0000028278, 0.0000028190, 0.0000028132, + 0.0000028096, 0.0000028092, 0.0000028083, 0.0000028061, 0.0000028030, + 0.0000027989, 0.0000027964, 0.0000027926, 0.0000027887, 0.0000027855, + 0.0000027849, 0.0000027880, 0.0000027938, 0.0000028013, 0.0000028083, + 0.0000028132, 0.0000028154, 0.0000028143, 0.0000028109, 0.0000028099, + 0.0000028122, 0.0000028149, 0.0000028160, 0.0000028159, 0.0000028141, + 0.0000028111, 0.0000028078, 0.0000028048, 0.0000028012, 0.0000027976, + 0.0000027960, 0.0000027966, 0.0000027992, 0.0000028038, 0.0000028106, + 0.0000028170, 0.0000028196, 0.0000028178, 0.0000028094, 0.0000027986, + 0.0000027937, 0.0000027951, 0.0000027992, 0.0000028032, 0.0000028046, + 0.0000028039, 0.0000028018, 0.0000028004, 0.0000028022, 0.0000028051, + 0.0000028069, 0.0000028032, 0.0000027897, 0.0000027712, 0.0000027602, + 0.0000027638, 0.0000027797, 0.0000027991, 0.0000028154, 0.0000028269, + 0.0000028329, 0.0000028336, 0.0000028306, 0.0000028255, 0.0000028220, + 0.0000028219, 0.0000028234, 0.0000028255, 0.0000028283, 0.0000028316, + 0.0000028340, 0.0000028342, 0.0000028342, 0.0000028340, 0.0000028339, + 0.0000028331, 0.0000028309, 0.0000028281, 0.0000028257, 0.0000028241, + 0.0000028237, 0.0000028231, 0.0000028216, 0.0000028195, 0.0000028190, + 0.0000028209, 0.0000028238, 0.0000028241, 0.0000028205, 0.0000028150, + 0.0000028103, 0.0000028085, 0.0000028087, 0.0000028082, 0.0000028057, + 0.0000028019, 0.0000028003, 0.0000028022, 0.0000028076, 0.0000028114, + 0.0000028101, 0.0000028030, 0.0000027940, 0.0000027882, 0.0000027866, + 0.0000027867, 0.0000027854, 0.0000027810, 0.0000027744, 0.0000027696, + 0.0000027684, 0.0000027694, 0.0000027700, 0.0000027702, 0.0000027717, + 0.0000027740, 0.0000027735, 0.0000027701, 0.0000027660, 0.0000027609, + 0.0000027541, 0.0000027491, 0.0000027495, 0.0000027592, 0.0000027719, + 0.0000027778, 0.0000027773, 0.0000027741, 0.0000027701, 0.0000027647, + 0.0000027608, 0.0000027600, 0.0000027607, 0.0000027597, 0.0000027573, + 0.0000027557, 0.0000027545, 0.0000027535, 0.0000027516, 0.0000027496, + 0.0000027473, 0.0000027447, 0.0000027436, 0.0000027461, 0.0000027523, + 0.0000027568, 0.0000027620, 0.0000027663, 0.0000027663, 0.0000027612, + 0.0000027561, 0.0000027541, 0.0000027494, 0.0000027317, 0.0000027037, + 0.0000026795, 0.0000026668, 0.0000026645, 0.0000026721, 0.0000026860, + 0.0000027063, 0.0000027231, 0.0000027303, 0.0000027336, 0.0000027313, + 0.0000027292, 0.0000027340, 0.0000027431, 0.0000027465, 0.0000027452, + 0.0000027451, 0.0000027474, 0.0000027472, 0.0000027420, 0.0000027362, + 0.0000027345, 0.0000027368, 0.0000027399, 0.0000027416, 0.0000027418, + 0.0000027411, 0.0000027406, 0.0000027376, 0.0000027298, 0.0000027216, + 0.0000027173, 0.0000027172, 0.0000027163, 0.0000027073, 0.0000026875, + 0.0000026586, 0.0000026295, 0.0000026166, 0.0000026166, 0.0000026372, + 0.0000026752, 0.0000027172, 0.0000027445, 0.0000027509, 0.0000027508, + 0.0000027557, 0.0000027606, 0.0000027558, 0.0000027693, 0.0000028041, + 0.0000028084, 0.0000028127, 0.0000028207, 0.0000028239, 0.0000028222, + 0.0000028127, 0.0000028155, 0.0000028278, 0.0000028294, 0.0000028202, + 0.0000028081, 0.0000028104, 0.0000028208, 0.0000028284, 0.0000028320, + 0.0000028313, 0.0000028327, 0.0000028363, 0.0000028400, 0.0000028392, + 0.0000028354, 0.0000028322, 0.0000028297, 0.0000028239, 0.0000028069, + 0.0000027906, 0.0000027902, 0.0000027957, 0.0000027969, 0.0000027984, + 0.0000028026, 0.0000028073, 0.0000028067, 0.0000028086, 0.0000028163, + 0.0000028232, 0.0000028300, 0.0000028327, 0.0000028319, 0.0000028436, + 0.0000028669, 0.0000028493, 0.0000028303, 0.0000028506, 0.0000028666, + 0.0000028720, 0.0000028709, 0.0000028761, 0.0000028920, 0.0000029114, + 0.0000029202, 0.0000029204, 0.0000029165, 0.0000029157, 0.0000029185, + 0.0000029220, 0.0000029220, 0.0000029198, 0.0000029125, 0.0000028948, + 0.0000028811, 0.0000028797, 0.0000028822, 0.0000028747, 0.0000028588, + 0.0000028373, 0.0000028297, 0.0000028344, 0.0000028398, 0.0000028411, + 0.0000028407, 0.0000028378, 0.0000028362, 0.0000028368, 0.0000028335, + 0.0000028255, 0.0000028195, 0.0000028141, 0.0000028076, 0.0000028070, + 0.0000028096, 0.0000028074, 0.0000027999, 0.0000027900, 0.0000027830, + 0.0000027788, 0.0000027781, 0.0000027801, 0.0000027809, 0.0000027790, + 0.0000027740, 0.0000027686, 0.0000027660, 0.0000027686, 0.0000027756, + 0.0000027815, 0.0000027825, 0.0000027809, 0.0000027777, 0.0000027750, + 0.0000027747, 0.0000027751, 0.0000027737, 0.0000027682, 0.0000027597, + 0.0000027522, 0.0000027486, 0.0000027489, 0.0000027518, 0.0000027549, + 0.0000027563, 0.0000027556, 0.0000027532, 0.0000027522, 0.0000027544, + 0.0000027584, 0.0000027613, 0.0000027615, 0.0000027583, 0.0000027527, + 0.0000027481, 0.0000027469, 0.0000027475, 0.0000027493, 0.0000027514, + 0.0000027539, 0.0000027569, 0.0000027607, 0.0000027646, 0.0000027675, + 0.0000027694, 0.0000027705, 0.0000027708, 0.0000027709, 0.0000027708, + 0.0000027719, 0.0000027733, 0.0000027752, 0.0000027774, 0.0000027801, + 0.0000027817, 0.0000027816, 0.0000027805, 0.0000027778, 0.0000027739, + 0.0000027702, 0.0000027670, 0.0000027633, 0.0000027591, 0.0000027551, + 0.0000027510, 0.0000027449, 0.0000027360, 0.0000027269, 0.0000027208, + 0.0000027188, 0.0000027205, 0.0000027245, 0.0000027272, 0.0000027282, + 0.0000027296, 0.0000027324, 0.0000027358, 0.0000027401, 0.0000027463, + 0.0000027554, 0.0000027643, 0.0000027693, 0.0000027696, 0.0000027667, + 0.0000027638, 0.0000027634, 0.0000027658, 0.0000027693, 0.0000027702, + 0.0000027672, 0.0000027599, 0.0000027484, 0.0000027353, 0.0000027242, + 0.0000027186, 0.0000027172, 0.0000027147, 0.0000027080, 0.0000026987, + 0.0000026908, 0.0000026854, 0.0000026808, 0.0000026767, 0.0000026728, + 0.0000026678, 0.0000026608, 0.0000026529, 0.0000026465, 0.0000026428, + 0.0000026422, 0.0000026431, 0.0000026439, 0.0000026427, 0.0000026391, + 0.0000026349, 0.0000026324, 0.0000026345, 0.0000026377, 0.0000026406, + 0.0000026417, 0.0000026437, 0.0000026484, 0.0000026535, 0.0000026569, + 0.0000026589, 0.0000026600, 0.0000026611, 0.0000026633, 0.0000026662, + 0.0000026681, 0.0000026694, 0.0000026725, 0.0000026795, 0.0000026909, + 0.0000027047, 0.0000027180, 0.0000027304, 0.0000027409, 0.0000027494, + 0.0000027557, 0.0000027594, 0.0000027632, 0.0000027700, 0.0000027778, + 0.0000027827, 0.0000027833, 0.0000027794, 0.0000027714, 0.0000027651, + 0.0000027671, 0.0000027776, 0.0000027911, 0.0000028041, 0.0000028167, + 0.0000028297, 0.0000028409, 0.0000028499, 0.0000028569, 0.0000028623, + 0.0000028632, 0.0000028581, 0.0000028535, 0.0000028590, 0.0000028732, + 0.0000028842, 0.0000028870, 0.0000028860, 0.0000028851, 0.0000028847, + 0.0000028823, 0.0000028745, 0.0000028622, 0.0000028522, 0.0000028453, + 0.0000028384, 0.0000028298, 0.0000028200, 0.0000028093, 0.0000027975, + 0.0000027845, 0.0000027726, 0.0000027610, 0.0000027498, 0.0000027393, + 0.0000027304, 0.0000027230, 0.0000027159, 0.0000027098, 0.0000027063, + 0.0000027058, 0.0000027062, 0.0000027063, 0.0000027064, 0.0000027069, + 0.0000027068, 0.0000027049, 0.0000027003, 0.0000026952, 0.0000026914, + 0.0000026881, 0.0000026844, 0.0000026806, 0.0000026769, 0.0000026737, + 0.0000026703, 0.0000026664, 0.0000026618, 0.0000026564, 0.0000026492, + 0.0000026401, 0.0000026298, 0.0000026192, 0.0000026093, 0.0000026033, + 0.0000026067, 0.0000026316, 0.0000026642, 0.0000026861, 0.0000026958, + 0.0000026991, 0.0000027046, 0.0000027272, 0.0000027582, 0.0000027685, + 0.0000027607, 0.0000027481, 0.0000027460, 0.0000027531, 0.0000027640, + 0.0000027753, 0.0000027790, 0.0000027742, 0.0000027564, 0.0000027259, + 0.0000027051, 0.0000027091, 0.0000027212, 0.0000027241, 0.0000027215, + 0.0000027204, 0.0000027222, 0.0000027247, 0.0000027342, 0.0000027484, + 0.0000027505, 0.0000027436, 0.0000027407, 0.0000027434, 0.0000027459, + 0.0000027456, 0.0000027428, 0.0000027411, 0.0000027385, 0.0000027357, + 0.0000027346, 0.0000027341, 0.0000027321, 0.0000027290, 0.0000027260, + 0.0000027242, 0.0000027235, 0.0000027232, 0.0000027213, 0.0000027198, + 0.0000027200, 0.0000027207, 0.0000027215, 0.0000027229, 0.0000027237, + 0.0000027233, 0.0000027225, 0.0000027228, 0.0000027253, 0.0000027304, + 0.0000027364, 0.0000027421, 0.0000027423, 0.0000027384, 0.0000027309, + 0.0000027220, 0.0000027161, 0.0000027144, 0.0000027129, 0.0000027101, + 0.0000027068, 0.0000027047, 0.0000026993, 0.0000026888, 0.0000026800, + 0.0000026741, 0.0000026701, 0.0000026698, 0.0000026724, 0.0000026739, + 0.0000026712, 0.0000026681, 0.0000026672, 0.0000026663, 0.0000026628, + 0.0000026562, 0.0000026489, 0.0000026441, 0.0000026428, 0.0000026446, + 0.0000026485, 0.0000026524, 0.0000026544, 0.0000026544, 0.0000026517, + 0.0000026458, 0.0000026391, 0.0000026338, 0.0000026267, 0.0000026129, + 0.0000025953, 0.0000025813, 0.0000025744, 0.0000025722, 0.0000025719, + 0.0000025718, 0.0000025707, 0.0000025684, 0.0000025659, 0.0000025629, + 0.0000025573, 0.0000025499, 0.0000025437, 0.0000025397, 0.0000025377, + 0.0000025384, 0.0000025382, 0.0000025425, 0.0000025662, 0.0000026050, + 0.0000026338, 0.0000026390, 0.0000026356, 0.0000026300, 0.0000026265, + 0.0000026277, 0.0000026335, 0.0000026402, 0.0000026470, 0.0000026543, + 0.0000026609, 0.0000026658, 0.0000026690, 0.0000026712, 0.0000026747, + 0.0000026751, 0.0000026691, 0.0000026560, 0.0000026462, 0.0000026252, + 0.0000026207, 0.0000025885, 0.0000025726, 0.0000025901, 0.0000026709, + 0.0000027144, 0.0000027367, 0.0000027608, 0.0000027878, 0.0000027997, + 0.0000027982, 0.0000027882, 0.0000027779, 0.0000027738, 0.0000027749, + 0.0000027751, 0.0000027642, 0.0000027601, 0.0000027698, 0.0000027769, + 0.0000027776, 0.0000027736, 0.0000027674, 0.0000027665, 0.0000027691, + 0.0000027636, 0.0000027595, 0.0000027734, 0.0000027741, 0.0000027711, + 0.0000027603, 0.0000027450, 0.0000027326, 0.0000027355, 0.0000027365, + 0.0000027303, 0.0000027287, 0.0000027290, 0.0000027255, 0.0000027200, + 0.0000027175, 0.0000027184, 0.0000027259, 0.0000027280, 0.0000027293, + 0.0000027296, 0.0000027295, 0.0000027291, 0.0000027286, 0.0000027285, + 0.0000027282, 0.0000027274, 0.0000027243, 0.0000027188, 0.0000027113, + 0.0000027012, 0.0000026865, 0.0000026679, 0.0000026550, 0.0000026483, + 0.0000026426, 0.0000026372, 0.0000026349, 0.0000026366, 0.0000026437, + 0.0000026556, 0.0000026677, 0.0000026703, 0.0000026666, 0.0000026580, + 0.0000026506, 0.0000026457, 0.0000026435, 0.0000026421, 0.0000026404, + 0.0000026376, 0.0000026344, 0.0000026316, 0.0000026295, 0.0000026299, + 0.0000026331, 0.0000026358, 0.0000026366, 0.0000026365, 0.0000026361, + 0.0000026344, 0.0000026323, 0.0000026283, 0.0000026244, 0.0000026201, + 0.0000026167, 0.0000026147, 0.0000026138, 0.0000026134, 0.0000026128, + 0.0000026113, 0.0000026081, 0.0000026024, 0.0000025941, 0.0000025839, + 0.0000025727, 0.0000025612, 0.0000025496, 0.0000025409, 0.0000025356, + 0.0000025323, 0.0000025293, 0.0000025273, 0.0000025264, 0.0000025248, + 0.0000025241, 0.0000025258, 0.0000025344, 0.0000025473, 0.0000025571, + 0.0000025668, 0.0000025725, 0.0000025718, 0.0000025647, 0.0000025564, + 0.0000025508, 0.0000025478, 0.0000025453, 0.0000025432, 0.0000025403, + 0.0000025366, 0.0000025328, 0.0000025277, 0.0000025235, 0.0000025238, + 0.0000025273, 0.0000025303, 0.0000025277, 0.0000025152, 0.0000025007, + 0.0000024923, 0.0000024868, 0.0000024860, 0.0000024907, 0.0000025000, + 0.0000025125, 0.0000025163, 0.0000025213, 0.0000025363, 0.0000025521, + 0.0000025445, 0.0000025326, 0.0000025292, 0.0000025408, 0.0000025513, + 0.0000025555, 0.0000025850, 0.0000026159, 0.0000026358, 0.0000026408, + 0.0000026377, 0.0000026290, 0.0000026122, 0.0000025943, 0.0000025891, + 0.0000025900, 0.0000025868, 0.0000025741, 0.0000025623, 0.0000025622, + 0.0000025668, 0.0000025730, 0.0000025775, 0.0000025814, 0.0000025875, + 0.0000025971, 0.0000026074, 0.0000026198, 0.0000026380, 0.0000026537, + 0.0000026568, 0.0000026533, 0.0000026494, 0.0000026484, 0.0000026498, + 0.0000026516, 0.0000026510, 0.0000026475, 0.0000026465, 0.0000026498, + 0.0000026558, 0.0000026648, 0.0000026710, 0.0000026744, 0.0000026766, + 0.0000026776, 0.0000026840, 0.0000026959, 0.0000027110, 0.0000027322, + 0.0000027568, 0.0000027736, 0.0000027830, 0.0000027900, 0.0000027929, + 0.0000027928, 0.0000027964, 0.0000028042, 0.0000028074, 0.0000028073, + 0.0000028044, 0.0000028012, 0.0000027999, 0.0000028020, 0.0000028034, + 0.0000028039, 0.0000028066, 0.0000028102, 0.0000028130, 0.0000028148, + 0.0000028172, 0.0000028212, 0.0000028243, 0.0000028249, 0.0000028213, + 0.0000028155, 0.0000028083, 0.0000027999, 0.0000027910, 0.0000027846, + 0.0000027806, 0.0000027791, 0.0000027790, 0.0000027774, 0.0000027727, + 0.0000027665, 0.0000027603, 0.0000027566, 0.0000027548, 0.0000027550, + 0.0000027584, 0.0000027613, 0.0000027630, 0.0000027663, 0.0000027707, + 0.0000027757, 0.0000027802, 0.0000027804, 0.0000027761, 0.0000027711, + 0.0000027693, 0.0000027679, 0.0000027676, 0.0000027718, 0.0000027794, + 0.0000027911, 0.0000028056, 0.0000028181, 0.0000028304, 0.0000028390, + 0.0000028406, 0.0000028404, 0.0000028430, 0.0000028451, 0.0000028430, + 0.0000028352, 0.0000028258, 0.0000028166, 0.0000028109, 0.0000028079, + 0.0000028083, 0.0000028097, 0.0000028109, 0.0000028110, 0.0000028086, + 0.0000028045, 0.0000027986, 0.0000027907, 0.0000027827, 0.0000027769, + 0.0000027754, 0.0000027765, 0.0000027807, 0.0000027865, 0.0000027917, + 0.0000027952, 0.0000027958, 0.0000027939, 0.0000027921, 0.0000027930, + 0.0000027955, 0.0000027975, 0.0000027989, 0.0000027998, 0.0000028002, + 0.0000028002, 0.0000027995, 0.0000027980, 0.0000027954, 0.0000027935, + 0.0000027933, 0.0000027951, 0.0000027986, 0.0000028037, 0.0000028107, + 0.0000028167, 0.0000028193, 0.0000028163, 0.0000028083, 0.0000028018, + 0.0000027998, 0.0000027997, 0.0000028013, 0.0000028021, 0.0000028007, + 0.0000027983, 0.0000027980, 0.0000028010, 0.0000028049, 0.0000028082, + 0.0000028097, 0.0000028044, 0.0000027884, 0.0000027685, 0.0000027610, + 0.0000027679, 0.0000027844, 0.0000028010, 0.0000028141, 0.0000028233, + 0.0000028271, 0.0000028255, 0.0000028201, 0.0000028153, 0.0000028143, + 0.0000028154, 0.0000028178, 0.0000028203, 0.0000028222, 0.0000028236, + 0.0000028247, 0.0000028256, 0.0000028266, 0.0000028283, 0.0000028293, + 0.0000028282, 0.0000028253, 0.0000028217, 0.0000028186, 0.0000028184, + 0.0000028205, 0.0000028221, 0.0000028219, 0.0000028212, 0.0000028210, + 0.0000028226, 0.0000028250, 0.0000028247, 0.0000028202, 0.0000028137, + 0.0000028083, 0.0000028055, 0.0000028046, 0.0000028040, 0.0000028027, + 0.0000028019, 0.0000028045, 0.0000028106, 0.0000028160, 0.0000028172, + 0.0000028144, 0.0000028063, 0.0000027974, 0.0000027920, 0.0000027903, + 0.0000027885, 0.0000027838, 0.0000027773, 0.0000027721, 0.0000027713, + 0.0000027726, 0.0000027737, 0.0000027739, 0.0000027742, 0.0000027758, + 0.0000027766, 0.0000027748, 0.0000027701, 0.0000027652, 0.0000027597, + 0.0000027531, 0.0000027483, 0.0000027486, 0.0000027586, 0.0000027724, + 0.0000027785, 0.0000027778, 0.0000027747, 0.0000027694, 0.0000027643, + 0.0000027620, 0.0000027620, 0.0000027621, 0.0000027599, 0.0000027565, + 0.0000027532, 0.0000027503, 0.0000027490, 0.0000027495, 0.0000027494, + 0.0000027483, 0.0000027456, 0.0000027435, 0.0000027450, 0.0000027506, + 0.0000027545, 0.0000027580, 0.0000027609, 0.0000027609, 0.0000027558, + 0.0000027498, 0.0000027479, 0.0000027452, 0.0000027295, 0.0000026991, + 0.0000026720, 0.0000026569, 0.0000026543, 0.0000026624, 0.0000026769, + 0.0000026967, 0.0000027124, 0.0000027198, 0.0000027259, 0.0000027285, + 0.0000027299, 0.0000027353, 0.0000027425, 0.0000027438, 0.0000027399, + 0.0000027363, 0.0000027368, 0.0000027369, 0.0000027326, 0.0000027273, + 0.0000027264, 0.0000027303, 0.0000027350, 0.0000027387, 0.0000027406, + 0.0000027403, 0.0000027396, 0.0000027379, 0.0000027334, 0.0000027274, + 0.0000027239, 0.0000027236, 0.0000027239, 0.0000027221, 0.0000027138, + 0.0000026923, 0.0000026576, 0.0000026238, 0.0000026084, 0.0000026078, + 0.0000026338, 0.0000026767, 0.0000027207, 0.0000027464, 0.0000027497, + 0.0000027496, 0.0000027527, 0.0000027492, 0.0000027508, 0.0000027889, + 0.0000028083, 0.0000028131, 0.0000028204, 0.0000028221, 0.0000028193, + 0.0000028085, 0.0000028099, 0.0000028235, 0.0000028302, 0.0000028269, + 0.0000028175, 0.0000028138, 0.0000028196, 0.0000028268, 0.0000028324, + 0.0000028366, 0.0000028415, 0.0000028445, 0.0000028455, 0.0000028418, + 0.0000028355, 0.0000028290, 0.0000028249, 0.0000028221, 0.0000028109, + 0.0000027923, 0.0000027834, 0.0000027899, 0.0000027976, 0.0000027999, + 0.0000028051, 0.0000028111, 0.0000028125, 0.0000028145, 0.0000028181, + 0.0000028214, 0.0000028252, 0.0000028297, 0.0000028308, 0.0000028357, + 0.0000028600, 0.0000028544, 0.0000028284, 0.0000028465, 0.0000028637, + 0.0000028691, 0.0000028689, 0.0000028761, 0.0000028969, 0.0000029152, + 0.0000029180, 0.0000029139, 0.0000029139, 0.0000029192, 0.0000029228, + 0.0000029232, 0.0000029207, 0.0000029163, 0.0000029063, 0.0000028892, + 0.0000028813, 0.0000028826, 0.0000028816, 0.0000028716, 0.0000028558, + 0.0000028357, 0.0000028301, 0.0000028343, 0.0000028407, 0.0000028428, + 0.0000028412, 0.0000028384, 0.0000028375, 0.0000028364, 0.0000028306, + 0.0000028230, 0.0000028195, 0.0000028151, 0.0000028098, 0.0000028104, + 0.0000028120, 0.0000028072, 0.0000027967, 0.0000027864, 0.0000027785, + 0.0000027736, 0.0000027723, 0.0000027747, 0.0000027765, 0.0000027755, + 0.0000027717, 0.0000027670, 0.0000027641, 0.0000027665, 0.0000027736, + 0.0000027810, 0.0000027836, 0.0000027828, 0.0000027811, 0.0000027796, + 0.0000027797, 0.0000027797, 0.0000027772, 0.0000027699, 0.0000027586, + 0.0000027473, 0.0000027409, 0.0000027401, 0.0000027430, 0.0000027474, + 0.0000027505, 0.0000027517, 0.0000027507, 0.0000027480, 0.0000027463, + 0.0000027471, 0.0000027506, 0.0000027547, 0.0000027575, 0.0000027574, + 0.0000027544, 0.0000027506, 0.0000027473, 0.0000027449, 0.0000027428, + 0.0000027408, 0.0000027385, 0.0000027384, 0.0000027434, 0.0000027516, + 0.0000027595, 0.0000027647, 0.0000027664, 0.0000027660, 0.0000027644, + 0.0000027629, 0.0000027620, 0.0000027603, 0.0000027587, 0.0000027598, + 0.0000027650, 0.0000027720, 0.0000027776, 0.0000027810, 0.0000027827, + 0.0000027830, 0.0000027829, 0.0000027820, 0.0000027787, 0.0000027743, + 0.0000027696, 0.0000027649, 0.0000027605, 0.0000027560, 0.0000027496, + 0.0000027406, 0.0000027304, 0.0000027238, 0.0000027223, 0.0000027250, + 0.0000027286, 0.0000027317, 0.0000027336, 0.0000027340, 0.0000027336, + 0.0000027343, 0.0000027403, 0.0000027520, 0.0000027638, 0.0000027703, + 0.0000027712, 0.0000027688, 0.0000027663, 0.0000027666, 0.0000027706, + 0.0000027755, 0.0000027766, 0.0000027727, 0.0000027652, 0.0000027552, + 0.0000027432, 0.0000027319, 0.0000027251, 0.0000027235, 0.0000027229, + 0.0000027203, 0.0000027133, 0.0000027030, 0.0000026937, 0.0000026887, + 0.0000026856, 0.0000026803, 0.0000026725, 0.0000026636, 0.0000026556, + 0.0000026505, 0.0000026494, 0.0000026508, 0.0000026537, 0.0000026542, + 0.0000026513, 0.0000026458, 0.0000026408, 0.0000026389, 0.0000026397, + 0.0000026400, 0.0000026398, 0.0000026414, 0.0000026440, 0.0000026467, + 0.0000026473, 0.0000026459, 0.0000026443, 0.0000026441, 0.0000026456, + 0.0000026483, 0.0000026511, 0.0000026534, 0.0000026558, 0.0000026598, + 0.0000026659, 0.0000026742, 0.0000026834, 0.0000026937, 0.0000027041, + 0.0000027125, 0.0000027186, 0.0000027220, 0.0000027247, 0.0000027310, + 0.0000027406, 0.0000027490, 0.0000027537, 0.0000027543, 0.0000027511, + 0.0000027468, 0.0000027462, 0.0000027511, 0.0000027611, 0.0000027747, + 0.0000027901, 0.0000028049, 0.0000028172, 0.0000028268, 0.0000028347, + 0.0000028406, 0.0000028421, 0.0000028368, 0.0000028293, 0.0000028321, + 0.0000028440, 0.0000028563, 0.0000028620, 0.0000028622, 0.0000028604, + 0.0000028587, 0.0000028564, 0.0000028512, 0.0000028451, 0.0000028405, + 0.0000028369, 0.0000028325, 0.0000028249, 0.0000028142, 0.0000028020, + 0.0000027886, 0.0000027735, 0.0000027581, 0.0000027431, 0.0000027294, + 0.0000027189, 0.0000027129, 0.0000027085, 0.0000027036, 0.0000026976, + 0.0000026931, 0.0000026923, 0.0000026931, 0.0000026928, 0.0000026905, + 0.0000026877, 0.0000026843, 0.0000026795, 0.0000026757, 0.0000026731, + 0.0000026720, 0.0000026713, 0.0000026701, 0.0000026681, 0.0000026658, + 0.0000026642, 0.0000026630, 0.0000026609, 0.0000026569, 0.0000026513, + 0.0000026448, 0.0000026375, 0.0000026297, 0.0000026215, 0.0000026119, + 0.0000026003, 0.0000025930, 0.0000025992, 0.0000026332, 0.0000026699, + 0.0000026886, 0.0000026931, 0.0000026989, 0.0000027220, 0.0000027563, + 0.0000027694, 0.0000027626, 0.0000027467, 0.0000027427, 0.0000027505, + 0.0000027616, 0.0000027736, 0.0000027808, 0.0000027802, 0.0000027643, + 0.0000027293, 0.0000027062, 0.0000027095, 0.0000027195, 0.0000027200, + 0.0000027165, 0.0000027159, 0.0000027189, 0.0000027226, 0.0000027264, + 0.0000027378, 0.0000027480, 0.0000027467, 0.0000027404, 0.0000027375, + 0.0000027402, 0.0000027446, 0.0000027476, 0.0000027497, 0.0000027511, + 0.0000027497, 0.0000027485, 0.0000027480, 0.0000027466, 0.0000027432, + 0.0000027386, 0.0000027350, 0.0000027337, 0.0000027330, 0.0000027311, + 0.0000027290, 0.0000027283, 0.0000027290, 0.0000027286, 0.0000027284, + 0.0000027285, 0.0000027283, 0.0000027283, 0.0000027296, 0.0000027331, + 0.0000027376, 0.0000027395, 0.0000027412, 0.0000027384, 0.0000027324, + 0.0000027251, 0.0000027184, 0.0000027143, 0.0000027119, 0.0000027091, + 0.0000027051, 0.0000027033, 0.0000027023, 0.0000026988, 0.0000026897, + 0.0000026807, 0.0000026742, 0.0000026693, 0.0000026680, 0.0000026702, + 0.0000026721, 0.0000026700, 0.0000026660, 0.0000026647, 0.0000026643, + 0.0000026615, 0.0000026563, 0.0000026491, 0.0000026417, 0.0000026368, + 0.0000026361, 0.0000026402, 0.0000026465, 0.0000026510, 0.0000026518, + 0.0000026501, 0.0000026455, 0.0000026404, 0.0000026361, 0.0000026294, + 0.0000026157, 0.0000025974, 0.0000025824, 0.0000025744, 0.0000025702, + 0.0000025678, 0.0000025669, 0.0000025663, 0.0000025650, 0.0000025627, + 0.0000025599, 0.0000025568, 0.0000025515, 0.0000025435, 0.0000025371, + 0.0000025349, 0.0000025350, 0.0000025368, 0.0000025367, 0.0000025330, + 0.0000025402, 0.0000025697, 0.0000026080, 0.0000026340, 0.0000026362, + 0.0000026328, 0.0000026274, 0.0000026255, 0.0000026270, 0.0000026297, + 0.0000026340, 0.0000026412, 0.0000026505, 0.0000026603, 0.0000026675, + 0.0000026708, 0.0000026730, 0.0000026745, 0.0000026706, 0.0000026602, + 0.0000026496, 0.0000026267, 0.0000026177, 0.0000025914, 0.0000025634, + 0.0000025740, 0.0000026482, 0.0000026997, 0.0000027281, 0.0000027477, + 0.0000027767, 0.0000027946, 0.0000027957, 0.0000027865, 0.0000027771, + 0.0000027733, 0.0000027743, 0.0000027713, 0.0000027593, 0.0000027617, + 0.0000027714, 0.0000027753, 0.0000027741, 0.0000027677, 0.0000027654, + 0.0000027691, 0.0000027689, 0.0000027568, 0.0000027593, 0.0000027726, + 0.0000027729, 0.0000027697, 0.0000027591, 0.0000027435, 0.0000027328, + 0.0000027368, 0.0000027369, 0.0000027310, 0.0000027298, 0.0000027307, + 0.0000027291, 0.0000027251, 0.0000027231, 0.0000027238, 0.0000027289, + 0.0000027309, 0.0000027319, 0.0000027315, 0.0000027310, 0.0000027303, + 0.0000027294, 0.0000027287, 0.0000027272, 0.0000027253, 0.0000027224, + 0.0000027180, 0.0000027118, 0.0000027028, 0.0000026917, 0.0000026768, + 0.0000026605, 0.0000026505, 0.0000026473, 0.0000026442, 0.0000026398, + 0.0000026376, 0.0000026396, 0.0000026442, 0.0000026531, 0.0000026649, + 0.0000026736, 0.0000026755, 0.0000026752, 0.0000026700, 0.0000026664, + 0.0000026608, 0.0000026553, 0.0000026497, 0.0000026448, 0.0000026405, + 0.0000026381, 0.0000026386, 0.0000026416, 0.0000026439, 0.0000026444, + 0.0000026440, 0.0000026426, 0.0000026406, 0.0000026371, 0.0000026318, + 0.0000026243, 0.0000026155, 0.0000026081, 0.0000026037, 0.0000026021, + 0.0000026020, 0.0000026030, 0.0000026043, 0.0000026039, 0.0000026004, + 0.0000025934, 0.0000025839, 0.0000025735, 0.0000025627, 0.0000025518, + 0.0000025429, 0.0000025367, 0.0000025329, 0.0000025293, 0.0000025266, + 0.0000025250, 0.0000025232, 0.0000025210, 0.0000025207, 0.0000025248, + 0.0000025370, 0.0000025506, 0.0000025627, 0.0000025726, 0.0000025744, + 0.0000025687, 0.0000025604, 0.0000025574, 0.0000025594, 0.0000025603, + 0.0000025585, 0.0000025546, 0.0000025479, 0.0000025393, 0.0000025307, + 0.0000025261, 0.0000025245, 0.0000025262, 0.0000025297, 0.0000025319, + 0.0000025296, 0.0000025179, 0.0000025010, 0.0000024921, 0.0000024877, + 0.0000024837, 0.0000024889, 0.0000024989, 0.0000025123, 0.0000025167, + 0.0000025225, 0.0000025342, 0.0000025513, 0.0000025473, 0.0000025319, + 0.0000025254, 0.0000025362, 0.0000025496, 0.0000025533, 0.0000025814, + 0.0000026157, 0.0000026358, 0.0000026418, 0.0000026372, 0.0000026272, + 0.0000026102, 0.0000025931, 0.0000025889, 0.0000025910, 0.0000025891, + 0.0000025779, 0.0000025686, 0.0000025691, 0.0000025751, 0.0000025824, + 0.0000025883, 0.0000025913, 0.0000025944, 0.0000026010, 0.0000026101, + 0.0000026251, 0.0000026436, 0.0000026545, 0.0000026540, 0.0000026493, + 0.0000026448, 0.0000026436, 0.0000026457, 0.0000026475, 0.0000026461, + 0.0000026433, 0.0000026434, 0.0000026467, 0.0000026538, 0.0000026634, + 0.0000026677, 0.0000026705, 0.0000026730, 0.0000026760, 0.0000026831, + 0.0000026953, 0.0000027096, 0.0000027278, 0.0000027482, 0.0000027640, + 0.0000027746, 0.0000027821, 0.0000027834, 0.0000027832, 0.0000027886, + 0.0000027981, 0.0000028022, 0.0000028017, 0.0000027975, 0.0000027941, + 0.0000027939, 0.0000027952, 0.0000027966, 0.0000027964, 0.0000027973, + 0.0000027992, 0.0000028006, 0.0000028004, 0.0000027999, 0.0000028022, + 0.0000028060, 0.0000028078, 0.0000028061, 0.0000028010, 0.0000027953, + 0.0000027903, 0.0000027832, 0.0000027764, 0.0000027712, 0.0000027651, + 0.0000027595, 0.0000027536, 0.0000027458, 0.0000027389, 0.0000027344, + 0.0000027336, 0.0000027352, 0.0000027379, 0.0000027416, 0.0000027461, + 0.0000027518, 0.0000027578, 0.0000027645, 0.0000027718, 0.0000027787, + 0.0000027817, 0.0000027798, 0.0000027750, 0.0000027728, 0.0000027715, + 0.0000027704, 0.0000027726, 0.0000027775, 0.0000027863, 0.0000027994, + 0.0000028125, 0.0000028244, 0.0000028347, 0.0000028390, 0.0000028380, + 0.0000028377, 0.0000028394, 0.0000028392, 0.0000028336, 0.0000028251, + 0.0000028155, 0.0000028090, 0.0000028062, 0.0000028079, 0.0000028109, + 0.0000028130, 0.0000028134, 0.0000028126, 0.0000028099, 0.0000028058, + 0.0000028002, 0.0000027927, 0.0000027853, 0.0000027802, 0.0000027785, + 0.0000027792, 0.0000027813, 0.0000027844, 0.0000027860, 0.0000027860, + 0.0000027835, 0.0000027793, 0.0000027767, 0.0000027769, 0.0000027785, + 0.0000027806, 0.0000027834, 0.0000027869, 0.0000027904, 0.0000027922, + 0.0000027923, 0.0000027912, 0.0000027907, 0.0000027917, 0.0000027944, + 0.0000027985, 0.0000028032, 0.0000028084, 0.0000028139, 0.0000028180, + 0.0000028178, 0.0000028137, 0.0000028096, 0.0000028072, 0.0000028056, + 0.0000028043, 0.0000028029, 0.0000028007, 0.0000027980, 0.0000027973, + 0.0000028005, 0.0000028056, 0.0000028092, 0.0000028127, 0.0000028136, + 0.0000028066, 0.0000027886, 0.0000027697, 0.0000027645, 0.0000027731, + 0.0000027877, 0.0000028004, 0.0000028100, 0.0000028163, 0.0000028178, + 0.0000028149, 0.0000028107, 0.0000028080, 0.0000028076, 0.0000028096, + 0.0000028124, 0.0000028138, 0.0000028140, 0.0000028145, 0.0000028158, + 0.0000028178, 0.0000028194, 0.0000028205, 0.0000028207, 0.0000028199, + 0.0000028179, 0.0000028149, 0.0000028123, 0.0000028122, 0.0000028154, + 0.0000028197, 0.0000028219, 0.0000028226, 0.0000028230, 0.0000028244, + 0.0000028253, 0.0000028237, 0.0000028180, 0.0000028099, 0.0000028031, + 0.0000028002, 0.0000028007, 0.0000028021, 0.0000028031, 0.0000028053, + 0.0000028108, 0.0000028173, 0.0000028214, 0.0000028217, 0.0000028165, + 0.0000028065, 0.0000027981, 0.0000027951, 0.0000027940, 0.0000027899, + 0.0000027830, 0.0000027778, 0.0000027769, 0.0000027781, 0.0000027785, + 0.0000027773, 0.0000027757, 0.0000027751, 0.0000027758, 0.0000027752, + 0.0000027718, 0.0000027670, 0.0000027625, 0.0000027571, 0.0000027510, + 0.0000027480, 0.0000027497, 0.0000027592, 0.0000027720, 0.0000027786, + 0.0000027791, 0.0000027758, 0.0000027707, 0.0000027668, 0.0000027650, + 0.0000027652, 0.0000027647, 0.0000027623, 0.0000027585, 0.0000027540, + 0.0000027507, 0.0000027496, 0.0000027496, 0.0000027498, 0.0000027491, + 0.0000027463, 0.0000027437, 0.0000027457, 0.0000027505, 0.0000027537, + 0.0000027546, 0.0000027560, 0.0000027560, 0.0000027517, 0.0000027457, + 0.0000027440, 0.0000027428, 0.0000027290, 0.0000026962, 0.0000026650, + 0.0000026478, 0.0000026454, 0.0000026535, 0.0000026680, 0.0000026866, + 0.0000027008, 0.0000027095, 0.0000027182, 0.0000027239, 0.0000027278, + 0.0000027340, 0.0000027410, 0.0000027424, 0.0000027366, 0.0000027296, + 0.0000027276, 0.0000027276, 0.0000027240, 0.0000027195, 0.0000027191, + 0.0000027234, 0.0000027287, 0.0000027345, 0.0000027399, 0.0000027414, + 0.0000027401, 0.0000027380, 0.0000027347, 0.0000027301, 0.0000027271, + 0.0000027264, 0.0000027265, 0.0000027262, 0.0000027246, 0.0000027154, + 0.0000026911, 0.0000026549, 0.0000026189, 0.0000026017, 0.0000026081, + 0.0000026364, 0.0000026803, 0.0000027254, 0.0000027470, 0.0000027469, + 0.0000027446, 0.0000027419, 0.0000027365, 0.0000027648, 0.0000028057, + 0.0000028136, 0.0000028213, 0.0000028221, 0.0000028184, 0.0000028075, + 0.0000028074, 0.0000028196, 0.0000028309, 0.0000028320, 0.0000028291, + 0.0000028250, 0.0000028260, 0.0000028306, 0.0000028382, 0.0000028452, + 0.0000028503, 0.0000028516, 0.0000028504, 0.0000028450, 0.0000028375, + 0.0000028288, 0.0000028219, 0.0000028193, 0.0000028124, 0.0000027975, + 0.0000027829, 0.0000027839, 0.0000027931, 0.0000027989, 0.0000028053, + 0.0000028122, 0.0000028153, 0.0000028194, 0.0000028225, 0.0000028221, + 0.0000028217, 0.0000028251, 0.0000028292, 0.0000028306, 0.0000028494, + 0.0000028570, 0.0000028288, 0.0000028398, 0.0000028594, 0.0000028664, + 0.0000028666, 0.0000028740, 0.0000028985, 0.0000029146, 0.0000029104, + 0.0000029071, 0.0000029141, 0.0000029209, 0.0000029221, 0.0000029201, + 0.0000029165, 0.0000029107, 0.0000028985, 0.0000028849, 0.0000028820, + 0.0000028837, 0.0000028794, 0.0000028696, 0.0000028530, 0.0000028348, + 0.0000028311, 0.0000028342, 0.0000028402, 0.0000028428, 0.0000028411, + 0.0000028388, 0.0000028368, 0.0000028328, 0.0000028267, 0.0000028223, + 0.0000028200, 0.0000028154, 0.0000028119, 0.0000028128, 0.0000028122, + 0.0000028051, 0.0000027927, 0.0000027819, 0.0000027732, 0.0000027683, + 0.0000027673, 0.0000027697, 0.0000027720, 0.0000027716, 0.0000027683, + 0.0000027643, 0.0000027628, 0.0000027657, 0.0000027732, 0.0000027817, + 0.0000027859, 0.0000027864, 0.0000027852, 0.0000027842, 0.0000027836, + 0.0000027831, 0.0000027798, 0.0000027718, 0.0000027607, 0.0000027484, + 0.0000027387, 0.0000027352, 0.0000027369, 0.0000027414, 0.0000027450, + 0.0000027459, 0.0000027450, 0.0000027429, 0.0000027409, 0.0000027407, + 0.0000027411, 0.0000027413, 0.0000027424, 0.0000027449, 0.0000027476, + 0.0000027496, 0.0000027508, 0.0000027503, 0.0000027478, 0.0000027449, + 0.0000027414, 0.0000027371, 0.0000027333, 0.0000027326, 0.0000027349, + 0.0000027402, 0.0000027472, 0.0000027529, 0.0000027556, 0.0000027556, + 0.0000027545, 0.0000027536, 0.0000027518, 0.0000027487, 0.0000027456, + 0.0000027454, 0.0000027497, 0.0000027572, 0.0000027652, 0.0000027720, + 0.0000027774, 0.0000027825, 0.0000027861, 0.0000027875, 0.0000027876, + 0.0000027854, 0.0000027806, 0.0000027748, 0.0000027688, 0.0000027641, + 0.0000027603, 0.0000027552, 0.0000027472, 0.0000027375, 0.0000027301, + 0.0000027282, 0.0000027297, 0.0000027327, 0.0000027347, 0.0000027349, + 0.0000027336, 0.0000027332, 0.0000027374, 0.0000027466, 0.0000027585, + 0.0000027673, 0.0000027697, 0.0000027688, 0.0000027675, 0.0000027695, + 0.0000027755, 0.0000027806, 0.0000027813, 0.0000027773, 0.0000027699, + 0.0000027602, 0.0000027492, 0.0000027394, 0.0000027333, 0.0000027317, + 0.0000027324, 0.0000027321, 0.0000027269, 0.0000027165, 0.0000027058, + 0.0000026987, 0.0000026930, 0.0000026850, 0.0000026743, 0.0000026644, + 0.0000026580, 0.0000026549, 0.0000026550, 0.0000026583, 0.0000026608, + 0.0000026595, 0.0000026552, 0.0000026502, 0.0000026470, 0.0000026460, + 0.0000026455, 0.0000026450, 0.0000026458, 0.0000026480, 0.0000026498, + 0.0000026492, 0.0000026457, 0.0000026414, 0.0000026399, 0.0000026390, + 0.0000026397, 0.0000026413, 0.0000026431, 0.0000026451, 0.0000026474, + 0.0000026505, 0.0000026546, 0.0000026588, 0.0000026637, 0.0000026703, + 0.0000026762, 0.0000026808, 0.0000026835, 0.0000026860, 0.0000026910, + 0.0000026990, 0.0000027074, 0.0000027141, 0.0000027186, 0.0000027205, + 0.0000027204, 0.0000027223, 0.0000027269, 0.0000027355, 0.0000027479, + 0.0000027634, 0.0000027786, 0.0000027920, 0.0000028029, 0.0000028129, + 0.0000028208, 0.0000028243, 0.0000028200, 0.0000028118, 0.0000028116, + 0.0000028197, 0.0000028299, 0.0000028354, 0.0000028365, 0.0000028346, + 0.0000028324, 0.0000028313, 0.0000028310, 0.0000028302, 0.0000028292, + 0.0000028278, 0.0000028250, 0.0000028186, 0.0000028082, 0.0000027961, + 0.0000027838, 0.0000027709, 0.0000027561, 0.0000027410, 0.0000027259, + 0.0000027153, 0.0000027090, 0.0000027064, 0.0000027024, 0.0000026947, + 0.0000026856, 0.0000026785, 0.0000026746, 0.0000026717, 0.0000026679, + 0.0000026647, 0.0000026623, 0.0000026593, 0.0000026576, 0.0000026580, + 0.0000026582, 0.0000026574, 0.0000026562, 0.0000026549, 0.0000026540, + 0.0000026541, 0.0000026556, 0.0000026565, 0.0000026551, 0.0000026491, + 0.0000026406, 0.0000026322, 0.0000026253, 0.0000026197, 0.0000026140, + 0.0000026053, 0.0000025929, 0.0000025861, 0.0000026053, 0.0000026483, + 0.0000026792, 0.0000026877, 0.0000026931, 0.0000027178, 0.0000027551, + 0.0000027707, 0.0000027632, 0.0000027459, 0.0000027412, 0.0000027485, + 0.0000027593, 0.0000027715, 0.0000027807, 0.0000027826, 0.0000027685, + 0.0000027319, 0.0000027099, 0.0000027130, 0.0000027197, 0.0000027169, + 0.0000027122, 0.0000027119, 0.0000027151, 0.0000027205, 0.0000027231, + 0.0000027263, 0.0000027369, 0.0000027457, 0.0000027447, 0.0000027397, + 0.0000027365, 0.0000027360, 0.0000027384, 0.0000027432, 0.0000027479, + 0.0000027505, 0.0000027520, 0.0000027525, 0.0000027524, 0.0000027508, + 0.0000027479, 0.0000027444, 0.0000027441, 0.0000027438, 0.0000027423, + 0.0000027404, 0.0000027393, 0.0000027399, 0.0000027396, 0.0000027382, + 0.0000027375, 0.0000027376, 0.0000027375, 0.0000027386, 0.0000027388, + 0.0000027397, 0.0000027378, 0.0000027342, 0.0000027295, 0.0000027244, + 0.0000027193, 0.0000027153, 0.0000027119, 0.0000027083, 0.0000027033, + 0.0000026990, 0.0000026982, 0.0000026996, 0.0000026981, 0.0000026900, + 0.0000026809, 0.0000026741, 0.0000026687, 0.0000026666, 0.0000026686, + 0.0000026710, 0.0000026694, 0.0000026650, 0.0000026628, 0.0000026623, + 0.0000026604, 0.0000026566, 0.0000026515, 0.0000026450, 0.0000026373, + 0.0000026314, 0.0000026304, 0.0000026351, 0.0000026422, 0.0000026465, + 0.0000026465, 0.0000026433, 0.0000026397, 0.0000026373, 0.0000026322, + 0.0000026193, 0.0000026018, 0.0000025879, 0.0000025803, 0.0000025750, + 0.0000025695, 0.0000025640, 0.0000025595, 0.0000025561, 0.0000025534, + 0.0000025509, 0.0000025481, 0.0000025452, 0.0000025401, 0.0000025318, + 0.0000025253, 0.0000025246, 0.0000025280, 0.0000025330, 0.0000025342, + 0.0000025295, 0.0000025234, 0.0000025360, 0.0000025698, 0.0000026063, + 0.0000026289, 0.0000026319, 0.0000026304, 0.0000026268, 0.0000026260, + 0.0000026266, 0.0000026284, 0.0000026327, 0.0000026402, 0.0000026516, + 0.0000026626, 0.0000026686, 0.0000026709, 0.0000026737, 0.0000026722, + 0.0000026638, 0.0000026512, 0.0000026292, 0.0000026130, 0.0000025945, + 0.0000025586, 0.0000025633, 0.0000026182, 0.0000026814, 0.0000027163, + 0.0000027345, 0.0000027612, 0.0000027861, 0.0000027921, 0.0000027860, + 0.0000027773, 0.0000027737, 0.0000027746, 0.0000027671, 0.0000027584, + 0.0000027648, 0.0000027712, 0.0000027728, 0.0000027680, 0.0000027631, + 0.0000027664, 0.0000027708, 0.0000027644, 0.0000027506, 0.0000027610, + 0.0000027710, 0.0000027723, 0.0000027686, 0.0000027583, 0.0000027419, + 0.0000027331, 0.0000027380, 0.0000027372, 0.0000027321, 0.0000027310, + 0.0000027324, 0.0000027325, 0.0000027301, 0.0000027275, 0.0000027274, + 0.0000027321, 0.0000027341, 0.0000027345, 0.0000027334, 0.0000027321, + 0.0000027312, 0.0000027299, 0.0000027287, 0.0000027267, 0.0000027237, + 0.0000027198, 0.0000027148, 0.0000027097, 0.0000027030, 0.0000026936, + 0.0000026822, 0.0000026688, 0.0000026564, 0.0000026496, 0.0000026485, + 0.0000026479, 0.0000026453, 0.0000026432, 0.0000026430, 0.0000026456, + 0.0000026519, 0.0000026599, 0.0000026698, 0.0000026784, 0.0000026825, + 0.0000026858, 0.0000026851, 0.0000026805, 0.0000026744, 0.0000026695, + 0.0000026653, 0.0000026624, 0.0000026623, 0.0000026643, 0.0000026653, + 0.0000026649, 0.0000026635, 0.0000026606, 0.0000026566, 0.0000026500, + 0.0000026394, 0.0000026265, 0.0000026117, 0.0000025999, 0.0000025942, + 0.0000025933, 0.0000025945, 0.0000025973, 0.0000026006, 0.0000026018, + 0.0000025992, 0.0000025924, 0.0000025828, 0.0000025724, 0.0000025619, + 0.0000025517, 0.0000025431, 0.0000025370, 0.0000025330, 0.0000025299, + 0.0000025264, 0.0000025235, 0.0000025214, 0.0000025189, 0.0000025171, + 0.0000025184, 0.0000025271, 0.0000025417, 0.0000025557, 0.0000025693, + 0.0000025750, 0.0000025716, 0.0000025631, 0.0000025631, 0.0000025725, + 0.0000025796, 0.0000025799, 0.0000025761, 0.0000025711, 0.0000025634, + 0.0000025519, 0.0000025409, 0.0000025337, 0.0000025312, 0.0000025301, + 0.0000025300, 0.0000025320, 0.0000025294, 0.0000025187, 0.0000025018, + 0.0000024921, 0.0000024887, 0.0000024821, 0.0000024857, 0.0000024975, + 0.0000025115, 0.0000025181, 0.0000025244, 0.0000025330, 0.0000025515, + 0.0000025499, 0.0000025317, 0.0000025226, 0.0000025314, 0.0000025472, + 0.0000025524, 0.0000025753, 0.0000026125, 0.0000026338, 0.0000026416, + 0.0000026370, 0.0000026271, 0.0000026115, 0.0000025951, 0.0000025903, + 0.0000025925, 0.0000025910, 0.0000025821, 0.0000025754, 0.0000025766, + 0.0000025824, 0.0000025902, 0.0000025970, 0.0000025994, 0.0000026008, + 0.0000026050, 0.0000026145, 0.0000026306, 0.0000026457, 0.0000026507, + 0.0000026476, 0.0000026424, 0.0000026391, 0.0000026401, 0.0000026428, + 0.0000026429, 0.0000026395, 0.0000026381, 0.0000026395, 0.0000026439, + 0.0000026531, 0.0000026613, 0.0000026635, 0.0000026658, 0.0000026700, + 0.0000026750, 0.0000026824, 0.0000026946, 0.0000027088, 0.0000027230, + 0.0000027392, 0.0000027535, 0.0000027643, 0.0000027731, 0.0000027751, + 0.0000027746, 0.0000027790, 0.0000027878, 0.0000027926, 0.0000027919, + 0.0000027873, 0.0000027841, 0.0000027840, 0.0000027844, 0.0000027843, + 0.0000027824, 0.0000027808, 0.0000027805, 0.0000027824, 0.0000027829, + 0.0000027831, 0.0000027861, 0.0000027916, 0.0000027961, 0.0000027965, + 0.0000027925, 0.0000027858, 0.0000027797, 0.0000027729, 0.0000027634, + 0.0000027537, 0.0000027428, 0.0000027335, 0.0000027283, 0.0000027255, + 0.0000027243, 0.0000027258, 0.0000027281, 0.0000027296, 0.0000027311, + 0.0000027349, 0.0000027402, 0.0000027466, 0.0000027540, 0.0000027622, + 0.0000027696, 0.0000027763, 0.0000027813, 0.0000027817, 0.0000027774, + 0.0000027743, 0.0000027738, 0.0000027739, 0.0000027762, 0.0000027795, + 0.0000027848, 0.0000027946, 0.0000028072, 0.0000028196, 0.0000028304, + 0.0000028370, 0.0000028376, 0.0000028354, 0.0000028350, 0.0000028350, + 0.0000028317, 0.0000028245, 0.0000028145, 0.0000028065, 0.0000028030, + 0.0000028057, 0.0000028111, 0.0000028145, 0.0000028149, 0.0000028137, + 0.0000028109, 0.0000028072, 0.0000028034, 0.0000027987, 0.0000027941, + 0.0000027904, 0.0000027879, 0.0000027866, 0.0000027861, 0.0000027858, + 0.0000027857, 0.0000027853, 0.0000027828, 0.0000027780, 0.0000027737, + 0.0000027725, 0.0000027735, 0.0000027757, 0.0000027787, 0.0000027817, + 0.0000027850, 0.0000027865, 0.0000027854, 0.0000027839, 0.0000027836, + 0.0000027854, 0.0000027895, 0.0000027953, 0.0000028015, 0.0000028078, + 0.0000028135, 0.0000028180, 0.0000028196, 0.0000028176, 0.0000028145, + 0.0000028132, 0.0000028128, 0.0000028112, 0.0000028078, 0.0000028034, + 0.0000027996, 0.0000027987, 0.0000028017, 0.0000028075, 0.0000028119, + 0.0000028154, 0.0000028189, 0.0000028188, 0.0000028102, 0.0000027909, + 0.0000027739, 0.0000027705, 0.0000027787, 0.0000027893, 0.0000027974, + 0.0000028035, 0.0000028074, 0.0000028081, 0.0000028066, 0.0000028040, + 0.0000028024, 0.0000028033, 0.0000028063, 0.0000028086, 0.0000028092, + 0.0000028102, 0.0000028117, 0.0000028147, 0.0000028173, 0.0000028187, + 0.0000028182, 0.0000028166, 0.0000028138, 0.0000028110, 0.0000028083, + 0.0000028060, 0.0000028058, 0.0000028098, 0.0000028163, 0.0000028210, + 0.0000028230, 0.0000028243, 0.0000028255, 0.0000028248, 0.0000028208, + 0.0000028126, 0.0000028031, 0.0000027979, 0.0000027985, 0.0000028014, + 0.0000028033, 0.0000028047, 0.0000028083, 0.0000028147, 0.0000028208, + 0.0000028242, 0.0000028221, 0.0000028142, 0.0000028058, 0.0000028027, + 0.0000028029, 0.0000028007, 0.0000027936, 0.0000027868, 0.0000027844, + 0.0000027842, 0.0000027833, 0.0000027803, 0.0000027761, 0.0000027726, + 0.0000027712, 0.0000027710, 0.0000027693, 0.0000027657, 0.0000027615, + 0.0000027572, 0.0000027518, 0.0000027472, 0.0000027462, 0.0000027496, + 0.0000027588, 0.0000027704, 0.0000027774, 0.0000027783, 0.0000027765, + 0.0000027728, 0.0000027703, 0.0000027691, 0.0000027693, 0.0000027680, + 0.0000027654, 0.0000027617, 0.0000027580, 0.0000027553, 0.0000027539, + 0.0000027529, 0.0000027521, 0.0000027505, 0.0000027479, 0.0000027462, + 0.0000027481, 0.0000027526, 0.0000027539, 0.0000027524, 0.0000027524, + 0.0000027526, 0.0000027494, 0.0000027438, 0.0000027423, 0.0000027421, + 0.0000027281, 0.0000026925, 0.0000026579, 0.0000026395, 0.0000026386, + 0.0000026474, 0.0000026615, 0.0000026785, 0.0000026914, 0.0000027014, + 0.0000027113, 0.0000027178, 0.0000027225, 0.0000027290, 0.0000027373, + 0.0000027405, 0.0000027348, 0.0000027258, 0.0000027208, 0.0000027198, + 0.0000027170, 0.0000027141, 0.0000027141, 0.0000027180, 0.0000027235, + 0.0000027302, 0.0000027380, 0.0000027421, 0.0000027419, 0.0000027393, + 0.0000027351, 0.0000027309, 0.0000027279, 0.0000027259, 0.0000027251, + 0.0000027250, 0.0000027252, 0.0000027237, 0.0000027134, 0.0000026897, + 0.0000026527, 0.0000026169, 0.0000026033, 0.0000026099, 0.0000026384, + 0.0000026858, 0.0000027312, 0.0000027459, 0.0000027405, 0.0000027342, + 0.0000027272, 0.0000027401, 0.0000027935, 0.0000028143, 0.0000028223, + 0.0000028234, 0.0000028195, 0.0000028104, 0.0000028082, 0.0000028178, + 0.0000028311, 0.0000028356, 0.0000028380, 0.0000028392, 0.0000028402, + 0.0000028430, 0.0000028494, 0.0000028553, 0.0000028584, 0.0000028584, + 0.0000028554, 0.0000028488, 0.0000028411, 0.0000028311, 0.0000028219, + 0.0000028168, 0.0000028116, 0.0000028025, 0.0000027882, 0.0000027829, + 0.0000027861, 0.0000027934, 0.0000028018, 0.0000028112, 0.0000028155, + 0.0000028204, 0.0000028259, 0.0000028255, 0.0000028214, 0.0000028213, + 0.0000028262, 0.0000028280, 0.0000028370, 0.0000028558, 0.0000028331, + 0.0000028312, 0.0000028536, 0.0000028634, 0.0000028640, 0.0000028706, + 0.0000028967, 0.0000029110, 0.0000029017, 0.0000029022, 0.0000029142, + 0.0000029185, 0.0000029170, 0.0000029147, 0.0000029109, 0.0000029039, + 0.0000028918, 0.0000028837, 0.0000028836, 0.0000028835, 0.0000028773, + 0.0000028686, 0.0000028510, 0.0000028349, 0.0000028317, 0.0000028338, + 0.0000028389, 0.0000028414, 0.0000028407, 0.0000028376, 0.0000028329, + 0.0000028277, 0.0000028245, 0.0000028233, 0.0000028206, 0.0000028154, + 0.0000028139, 0.0000028150, 0.0000028113, 0.0000028000, 0.0000027861, + 0.0000027743, 0.0000027659, 0.0000027627, 0.0000027635, 0.0000027670, + 0.0000027703, 0.0000027704, 0.0000027675, 0.0000027637, 0.0000027628, + 0.0000027672, 0.0000027751, 0.0000027828, 0.0000027883, 0.0000027908, + 0.0000027920, 0.0000027926, 0.0000027924, 0.0000027904, 0.0000027853, + 0.0000027764, 0.0000027657, 0.0000027536, 0.0000027416, 0.0000027337, + 0.0000027313, 0.0000027327, 0.0000027357, 0.0000027376, 0.0000027381, + 0.0000027370, 0.0000027340, 0.0000027318, 0.0000027329, 0.0000027356, + 0.0000027363, 0.0000027344, 0.0000027316, 0.0000027308, 0.0000027337, + 0.0000027391, 0.0000027432, 0.0000027443, 0.0000027434, 0.0000027412, + 0.0000027395, 0.0000027386, 0.0000027370, 0.0000027345, 0.0000027326, + 0.0000027325, 0.0000027338, 0.0000027363, 0.0000027393, 0.0000027425, + 0.0000027436, 0.0000027428, 0.0000027398, 0.0000027363, 0.0000027342, + 0.0000027338, 0.0000027354, 0.0000027406, 0.0000027489, 0.0000027590, + 0.0000027683, 0.0000027764, 0.0000027836, 0.0000027889, 0.0000027911, + 0.0000027907, 0.0000027883, 0.0000027827, 0.0000027762, 0.0000027707, + 0.0000027672, 0.0000027652, 0.0000027616, 0.0000027537, 0.0000027436, + 0.0000027356, 0.0000027317, 0.0000027309, 0.0000027322, 0.0000027338, + 0.0000027347, 0.0000027360, 0.0000027389, 0.0000027448, 0.0000027535, + 0.0000027618, 0.0000027664, 0.0000027669, 0.0000027681, 0.0000027732, + 0.0000027799, 0.0000027838, 0.0000027833, 0.0000027785, 0.0000027705, + 0.0000027610, 0.0000027517, 0.0000027451, 0.0000027423, 0.0000027421, + 0.0000027428, 0.0000027419, 0.0000027377, 0.0000027305, 0.0000027217, + 0.0000027115, 0.0000026998, 0.0000026873, 0.0000026754, 0.0000026661, + 0.0000026606, 0.0000026590, 0.0000026604, 0.0000026622, 0.0000026620, + 0.0000026595, 0.0000026561, 0.0000026528, 0.0000026509, 0.0000026504, + 0.0000026510, 0.0000026525, 0.0000026552, 0.0000026571, 0.0000026567, + 0.0000026536, 0.0000026492, 0.0000026455, 0.0000026438, 0.0000026434, + 0.0000026431, 0.0000026434, 0.0000026437, 0.0000026448, 0.0000026455, + 0.0000026464, 0.0000026474, 0.0000026473, 0.0000026489, 0.0000026507, + 0.0000026525, 0.0000026548, 0.0000026576, 0.0000026612, 0.0000026661, + 0.0000026714, 0.0000026760, 0.0000026788, 0.0000026798, 0.0000026806, + 0.0000026845, 0.0000026915, 0.0000027007, 0.0000027140, 0.0000027317, + 0.0000027498, 0.0000027657, 0.0000027779, 0.0000027888, 0.0000027986, + 0.0000028056, 0.0000028047, 0.0000027992, 0.0000027987, 0.0000028052, + 0.0000028126, 0.0000028166, 0.0000028172, 0.0000028150, 0.0000028136, + 0.0000028156, 0.0000028176, 0.0000028191, 0.0000028202, 0.0000028208, + 0.0000028200, 0.0000028155, 0.0000028063, 0.0000027949, 0.0000027838, + 0.0000027717, 0.0000027590, 0.0000027445, 0.0000027281, 0.0000027153, + 0.0000027051, 0.0000026980, 0.0000026902, 0.0000026797, 0.0000026676, + 0.0000026569, 0.0000026508, 0.0000026483, 0.0000026468, 0.0000026459, + 0.0000026455, 0.0000026441, 0.0000026420, 0.0000026427, 0.0000026423, + 0.0000026405, 0.0000026383, 0.0000026364, 0.0000026358, 0.0000026377, + 0.0000026419, 0.0000026463, 0.0000026477, 0.0000026456, 0.0000026382, + 0.0000026279, 0.0000026187, 0.0000026139, 0.0000026124, 0.0000026090, + 0.0000025987, 0.0000025859, 0.0000025915, 0.0000026278, 0.0000026673, + 0.0000026822, 0.0000026884, 0.0000027147, 0.0000027547, 0.0000027707, + 0.0000027623, 0.0000027455, 0.0000027414, 0.0000027477, 0.0000027574, + 0.0000027693, 0.0000027806, 0.0000027838, 0.0000027693, 0.0000027333, + 0.0000027150, 0.0000027191, 0.0000027224, 0.0000027154, 0.0000027075, + 0.0000027077, 0.0000027115, 0.0000027165, 0.0000027210, 0.0000027209, + 0.0000027231, 0.0000027329, 0.0000027420, 0.0000027436, 0.0000027413, + 0.0000027371, 0.0000027339, 0.0000027333, 0.0000027356, 0.0000027379, + 0.0000027415, 0.0000027458, 0.0000027494, 0.0000027504, 0.0000027492, + 0.0000027468, 0.0000027472, 0.0000027493, 0.0000027500, 0.0000027494, + 0.0000027496, 0.0000027508, 0.0000027509, 0.0000027489, 0.0000027468, + 0.0000027453, 0.0000027422, 0.0000027404, 0.0000027373, 0.0000027329, + 0.0000027280, 0.0000027238, 0.0000027203, 0.0000027171, 0.0000027137, + 0.0000027110, 0.0000027067, 0.0000027012, 0.0000026946, 0.0000026916, + 0.0000026926, 0.0000026965, 0.0000026969, 0.0000026893, 0.0000026801, + 0.0000026736, 0.0000026681, 0.0000026655, 0.0000026670, 0.0000026696, + 0.0000026689, 0.0000026644, 0.0000026613, 0.0000026604, 0.0000026592, + 0.0000026560, 0.0000026516, 0.0000026471, 0.0000026417, 0.0000026342, + 0.0000026271, 0.0000026254, 0.0000026290, 0.0000026360, 0.0000026398, + 0.0000026390, 0.0000026365, 0.0000026354, 0.0000026337, 0.0000026241, + 0.0000026071, 0.0000025932, 0.0000025873, 0.0000025833, 0.0000025751, + 0.0000025634, 0.0000025515, 0.0000025422, 0.0000025360, 0.0000025322, + 0.0000025297, 0.0000025282, 0.0000025268, 0.0000025233, 0.0000025165, + 0.0000025107, 0.0000025102, 0.0000025152, 0.0000025232, 0.0000025296, + 0.0000025276, 0.0000025159, 0.0000025143, 0.0000025317, 0.0000025649, + 0.0000025961, 0.0000026170, 0.0000026276, 0.0000026262, 0.0000026257, + 0.0000026258, 0.0000026276, 0.0000026308, 0.0000026354, 0.0000026440, + 0.0000026564, 0.0000026654, 0.0000026689, 0.0000026737, 0.0000026737, + 0.0000026660, 0.0000026523, 0.0000026321, 0.0000026078, 0.0000025961, + 0.0000025579, 0.0000025554, 0.0000025863, 0.0000026570, 0.0000026977, + 0.0000027219, 0.0000027432, 0.0000027737, 0.0000027881, 0.0000027849, + 0.0000027775, 0.0000027747, 0.0000027748, 0.0000027653, 0.0000027606, + 0.0000027671, 0.0000027699, 0.0000027684, 0.0000027618, 0.0000027616, + 0.0000027688, 0.0000027689, 0.0000027560, 0.0000027482, 0.0000027629, + 0.0000027687, 0.0000027714, 0.0000027674, 0.0000027573, 0.0000027402, + 0.0000027337, 0.0000027389, 0.0000027380, 0.0000027338, 0.0000027327, + 0.0000027345, 0.0000027351, 0.0000027329, 0.0000027299, 0.0000027296, + 0.0000027350, 0.0000027366, 0.0000027362, 0.0000027339, 0.0000027318, + 0.0000027308, 0.0000027299, 0.0000027292, 0.0000027275, 0.0000027242, + 0.0000027196, 0.0000027137, 0.0000027071, 0.0000027002, 0.0000026929, + 0.0000026842, 0.0000026739, 0.0000026647, 0.0000026556, 0.0000026503, + 0.0000026501, 0.0000026509, 0.0000026499, 0.0000026470, 0.0000026461, + 0.0000026493, 0.0000026536, 0.0000026595, 0.0000026672, 0.0000026755, + 0.0000026828, 0.0000026870, 0.0000026870, 0.0000026835, 0.0000026803, + 0.0000026775, 0.0000026749, 0.0000026742, 0.0000026751, 0.0000026752, + 0.0000026736, 0.0000026713, 0.0000026675, 0.0000026617, 0.0000026520, + 0.0000026378, 0.0000026204, 0.0000026042, 0.0000025941, 0.0000025911, + 0.0000025910, 0.0000025936, 0.0000025970, 0.0000025997, 0.0000025995, + 0.0000025955, 0.0000025872, 0.0000025761, 0.0000025655, 0.0000025562, + 0.0000025476, 0.0000025402, 0.0000025350, 0.0000025310, 0.0000025282, + 0.0000025251, 0.0000025221, 0.0000025196, 0.0000025172, 0.0000025143, + 0.0000025137, 0.0000025200, 0.0000025338, 0.0000025477, 0.0000025615, + 0.0000025724, 0.0000025730, 0.0000025642, 0.0000025639, 0.0000025786, + 0.0000025907, 0.0000025900, 0.0000025840, 0.0000025784, 0.0000025745, + 0.0000025709, 0.0000025680, 0.0000025629, 0.0000025541, 0.0000025425, + 0.0000025341, 0.0000025308, 0.0000025296, 0.0000025275, 0.0000025186, + 0.0000025039, 0.0000024927, 0.0000024892, 0.0000024806, 0.0000024818, + 0.0000024960, 0.0000025107, 0.0000025200, 0.0000025265, 0.0000025321, + 0.0000025485, 0.0000025518, 0.0000025325, 0.0000025207, 0.0000025270, + 0.0000025453, 0.0000025517, 0.0000025678, 0.0000026057, 0.0000026304, + 0.0000026413, 0.0000026378, 0.0000026288, 0.0000026149, 0.0000025989, + 0.0000025920, 0.0000025937, 0.0000025929, 0.0000025857, 0.0000025811, + 0.0000025826, 0.0000025881, 0.0000025949, 0.0000026008, 0.0000026032, + 0.0000026049, 0.0000026094, 0.0000026206, 0.0000026359, 0.0000026458, + 0.0000026452, 0.0000026412, 0.0000026375, 0.0000026366, 0.0000026388, + 0.0000026391, 0.0000026356, 0.0000026327, 0.0000026330, 0.0000026363, + 0.0000026430, 0.0000026522, 0.0000026575, 0.0000026583, 0.0000026607, + 0.0000026675, 0.0000026745, 0.0000026826, 0.0000026951, 0.0000027076, + 0.0000027168, 0.0000027297, 0.0000027421, 0.0000027525, 0.0000027634, + 0.0000027676, 0.0000027675, 0.0000027699, 0.0000027757, 0.0000027799, + 0.0000027785, 0.0000027742, 0.0000027712, 0.0000027692, 0.0000027667, + 0.0000027648, 0.0000027618, 0.0000027587, 0.0000027572, 0.0000027600, + 0.0000027621, 0.0000027631, 0.0000027652, 0.0000027702, 0.0000027751, + 0.0000027766, 0.0000027729, 0.0000027660, 0.0000027585, 0.0000027512, + 0.0000027442, 0.0000027366, 0.0000027287, 0.0000027221, 0.0000027187, + 0.0000027183, 0.0000027205, 0.0000027251, 0.0000027303, 0.0000027331, + 0.0000027332, 0.0000027354, 0.0000027405, 0.0000027466, 0.0000027540, + 0.0000027634, 0.0000027715, 0.0000027765, 0.0000027803, 0.0000027814, + 0.0000027783, 0.0000027743, 0.0000027729, 0.0000027744, 0.0000027790, + 0.0000027834, 0.0000027865, 0.0000027925, 0.0000028028, 0.0000028155, + 0.0000028265, 0.0000028334, 0.0000028356, 0.0000028337, 0.0000028313, + 0.0000028303, 0.0000028281, 0.0000028227, 0.0000028138, 0.0000028049, + 0.0000028007, 0.0000028032, 0.0000028090, 0.0000028129, 0.0000028134, + 0.0000028115, 0.0000028088, 0.0000028067, 0.0000028050, 0.0000028033, + 0.0000028019, 0.0000028000, 0.0000027965, 0.0000027928, 0.0000027895, + 0.0000027866, 0.0000027841, 0.0000027823, 0.0000027806, 0.0000027780, + 0.0000027748, 0.0000027736, 0.0000027741, 0.0000027762, 0.0000027787, + 0.0000027811, 0.0000027826, 0.0000027822, 0.0000027799, 0.0000027771, + 0.0000027765, 0.0000027785, 0.0000027827, 0.0000027886, 0.0000027961, + 0.0000028043, 0.0000028119, 0.0000028177, 0.0000028211, 0.0000028208, + 0.0000028181, 0.0000028169, 0.0000028177, 0.0000028178, 0.0000028151, + 0.0000028094, 0.0000028034, 0.0000028012, 0.0000028033, 0.0000028099, + 0.0000028162, 0.0000028200, 0.0000028238, 0.0000028265, 0.0000028245, + 0.0000028138, 0.0000027953, 0.0000027804, 0.0000027780, 0.0000027838, + 0.0000027897, 0.0000027942, 0.0000027983, 0.0000028012, 0.0000028018, + 0.0000028002, 0.0000027987, 0.0000027995, 0.0000028024, 0.0000028052, + 0.0000028063, 0.0000028073, 0.0000028098, 0.0000028136, 0.0000028170, + 0.0000028190, 0.0000028193, 0.0000028181, 0.0000028152, 0.0000028114, + 0.0000028075, 0.0000028041, 0.0000028014, 0.0000028008, 0.0000028037, + 0.0000028112, 0.0000028183, 0.0000028225, 0.0000028247, 0.0000028251, + 0.0000028225, 0.0000028153, 0.0000028051, 0.0000027983, 0.0000027978, + 0.0000028006, 0.0000028031, 0.0000028038, 0.0000028044, 0.0000028084, + 0.0000028161, 0.0000028228, 0.0000028234, 0.0000028183, 0.0000028132, + 0.0000028116, 0.0000028123, 0.0000028112, 0.0000028046, 0.0000027957, + 0.0000027898, 0.0000027871, 0.0000027847, 0.0000027808, 0.0000027758, + 0.0000027707, 0.0000027668, 0.0000027652, 0.0000027643, 0.0000027623, + 0.0000027588, 0.0000027545, 0.0000027501, 0.0000027463, 0.0000027449, + 0.0000027462, 0.0000027511, 0.0000027594, 0.0000027689, 0.0000027751, + 0.0000027776, 0.0000027765, 0.0000027748, 0.0000027732, 0.0000027726, + 0.0000027727, 0.0000027707, 0.0000027677, 0.0000027645, 0.0000027624, + 0.0000027609, 0.0000027597, 0.0000027580, 0.0000027561, 0.0000027542, + 0.0000027524, 0.0000027520, 0.0000027545, 0.0000027572, 0.0000027553, + 0.0000027516, 0.0000027509, 0.0000027515, 0.0000027486, 0.0000027437, + 0.0000027428, 0.0000027424, 0.0000027251, 0.0000026863, 0.0000026503, + 0.0000026345, 0.0000026352, 0.0000026453, 0.0000026580, 0.0000026729, + 0.0000026848, 0.0000026953, 0.0000027053, 0.0000027118, 0.0000027159, + 0.0000027214, 0.0000027295, 0.0000027346, 0.0000027321, 0.0000027238, + 0.0000027161, 0.0000027127, 0.0000027109, 0.0000027104, 0.0000027108, + 0.0000027139, 0.0000027189, 0.0000027259, 0.0000027347, 0.0000027410, + 0.0000027427, 0.0000027408, 0.0000027363, 0.0000027321, 0.0000027288, + 0.0000027248, 0.0000027208, 0.0000027200, 0.0000027221, 0.0000027234, + 0.0000027207, 0.0000027112, 0.0000026879, 0.0000026517, 0.0000026169, + 0.0000026029, 0.0000026095, 0.0000026426, 0.0000026963, 0.0000027358, + 0.0000027389, 0.0000027297, 0.0000027207, 0.0000027220, 0.0000027688, + 0.0000028133, 0.0000028228, 0.0000028259, 0.0000028219, 0.0000028161, + 0.0000028122, 0.0000028183, 0.0000028296, 0.0000028372, 0.0000028422, + 0.0000028482, 0.0000028532, 0.0000028564, 0.0000028610, 0.0000028647, + 0.0000028659, 0.0000028652, 0.0000028612, 0.0000028538, 0.0000028450, + 0.0000028345, 0.0000028241, 0.0000028164, 0.0000028094, 0.0000028032, + 0.0000027941, 0.0000027872, 0.0000027833, 0.0000027856, 0.0000027937, + 0.0000028054, 0.0000028140, 0.0000028197, 0.0000028261, 0.0000028288, + 0.0000028247, 0.0000028208, 0.0000028225, 0.0000028260, 0.0000028272, + 0.0000028476, 0.0000028409, 0.0000028249, 0.0000028463, 0.0000028597, + 0.0000028616, 0.0000028666, 0.0000028918, 0.0000029060, 0.0000028953, + 0.0000028982, 0.0000029122, 0.0000029130, 0.0000029103, 0.0000029086, + 0.0000029051, 0.0000028981, 0.0000028885, 0.0000028841, 0.0000028848, + 0.0000028828, 0.0000028767, 0.0000028681, 0.0000028508, 0.0000028361, + 0.0000028319, 0.0000028333, 0.0000028375, 0.0000028400, 0.0000028389, + 0.0000028330, 0.0000028272, 0.0000028245, 0.0000028246, 0.0000028240, + 0.0000028199, 0.0000028155, 0.0000028154, 0.0000028141, 0.0000028050, + 0.0000027898, 0.0000027744, 0.0000027627, 0.0000027568, 0.0000027567, + 0.0000027612, 0.0000027666, 0.0000027702, 0.0000027701, 0.0000027668, + 0.0000027633, 0.0000027628, 0.0000027676, 0.0000027758, 0.0000027831, + 0.0000027889, 0.0000027937, 0.0000027976, 0.0000028002, 0.0000028004, + 0.0000027977, 0.0000027917, 0.0000027827, 0.0000027720, 0.0000027594, + 0.0000027450, 0.0000027325, 0.0000027258, 0.0000027240, 0.0000027246, + 0.0000027254, 0.0000027245, 0.0000027221, 0.0000027183, 0.0000027136, + 0.0000027105, 0.0000027117, 0.0000027165, 0.0000027211, 0.0000027221, + 0.0000027185, 0.0000027136, 0.0000027121, 0.0000027145, 0.0000027196, + 0.0000027248, 0.0000027291, 0.0000027323, 0.0000027352, 0.0000027378, + 0.0000027381, 0.0000027357, 0.0000027319, 0.0000027279, 0.0000027259, + 0.0000027260, 0.0000027272, 0.0000027293, 0.0000027313, 0.0000027316, + 0.0000027303, 0.0000027287, 0.0000027276, 0.0000027265, 0.0000027248, + 0.0000027240, 0.0000027271, 0.0000027352, 0.0000027462, 0.0000027572, + 0.0000027671, 0.0000027766, 0.0000027847, 0.0000027896, 0.0000027909, + 0.0000027892, 0.0000027855, 0.0000027803, 0.0000027762, 0.0000027744, + 0.0000027735, 0.0000027709, 0.0000027651, 0.0000027565, 0.0000027460, + 0.0000027360, 0.0000027298, 0.0000027282, 0.0000027306, 0.0000027352, + 0.0000027388, 0.0000027415, 0.0000027452, 0.0000027504, 0.0000027554, + 0.0000027592, 0.0000027638, 0.0000027701, 0.0000027771, 0.0000027828, + 0.0000027844, 0.0000027821, 0.0000027755, 0.0000027672, 0.0000027586, + 0.0000027518, 0.0000027497, 0.0000027505, 0.0000027518, 0.0000027519, + 0.0000027505, 0.0000027474, 0.0000027428, 0.0000027352, 0.0000027231, + 0.0000027078, 0.0000026919, 0.0000026782, 0.0000026684, 0.0000026633, + 0.0000026624, 0.0000026629, 0.0000026630, 0.0000026628, 0.0000026618, + 0.0000026591, 0.0000026560, 0.0000026539, 0.0000026535, 0.0000026549, + 0.0000026579, 0.0000026612, 0.0000026623, 0.0000026612, 0.0000026590, + 0.0000026571, 0.0000026561, 0.0000026561, 0.0000026560, 0.0000026556, + 0.0000026551, 0.0000026540, 0.0000026524, 0.0000026513, 0.0000026491, + 0.0000026459, 0.0000026443, 0.0000026410, 0.0000026393, 0.0000026401, + 0.0000026419, 0.0000026444, 0.0000026470, 0.0000026497, 0.0000026518, + 0.0000026522, 0.0000026514, 0.0000026504, 0.0000026501, 0.0000026507, + 0.0000026540, 0.0000026628, 0.0000026791, 0.0000026998, 0.0000027199, + 0.0000027377, 0.0000027535, 0.0000027681, 0.0000027807, 0.0000027856, + 0.0000027847, 0.0000027856, 0.0000027920, 0.0000027985, 0.0000028021, + 0.0000028021, 0.0000028010, 0.0000028028, 0.0000028061, 0.0000028089, + 0.0000028113, 0.0000028138, 0.0000028159, 0.0000028159, 0.0000028121, + 0.0000028028, 0.0000027893, 0.0000027752, 0.0000027614, 0.0000027461, + 0.0000027286, 0.0000027099, 0.0000026932, 0.0000026804, 0.0000026701, + 0.0000026607, 0.0000026513, 0.0000026415, 0.0000026328, 0.0000026285, + 0.0000026283, 0.0000026282, 0.0000026279, 0.0000026280, 0.0000026277, + 0.0000026275, 0.0000026292, 0.0000026312, 0.0000026302, 0.0000026266, + 0.0000026214, 0.0000026170, 0.0000026169, 0.0000026219, 0.0000026290, + 0.0000026337, 0.0000026342, 0.0000026310, 0.0000026233, 0.0000026136, + 0.0000026072, 0.0000026066, 0.0000026078, 0.0000026028, 0.0000025910, + 0.0000025875, 0.0000026132, 0.0000026560, 0.0000026768, 0.0000026849, + 0.0000027133, 0.0000027550, 0.0000027699, 0.0000027602, 0.0000027453, + 0.0000027428, 0.0000027482, 0.0000027565, 0.0000027673, 0.0000027799, + 0.0000027838, 0.0000027669, 0.0000027329, 0.0000027192, 0.0000027245, + 0.0000027265, 0.0000027161, 0.0000027021, 0.0000027008, 0.0000027078, + 0.0000027124, 0.0000027169, 0.0000027193, 0.0000027175, 0.0000027176, + 0.0000027265, 0.0000027372, 0.0000027423, 0.0000027414, 0.0000027384, + 0.0000027348, 0.0000027327, 0.0000027303, 0.0000027288, 0.0000027306, + 0.0000027358, 0.0000027420, 0.0000027457, 0.0000027458, 0.0000027459, + 0.0000027477, 0.0000027500, 0.0000027509, 0.0000027519, 0.0000027538, + 0.0000027547, 0.0000027530, 0.0000027498, 0.0000027451, 0.0000027402, + 0.0000027342, 0.0000027280, 0.0000027223, 0.0000027178, 0.0000027148, + 0.0000027126, 0.0000027100, 0.0000027069, 0.0000027043, 0.0000026991, + 0.0000026927, 0.0000026868, 0.0000026857, 0.0000026893, 0.0000026942, + 0.0000026953, 0.0000026872, 0.0000026779, 0.0000026722, 0.0000026672, + 0.0000026644, 0.0000026656, 0.0000026685, 0.0000026691, 0.0000026647, + 0.0000026606, 0.0000026594, 0.0000026582, 0.0000026547, 0.0000026494, + 0.0000026443, 0.0000026410, 0.0000026375, 0.0000026312, 0.0000026237, + 0.0000026202, 0.0000026229, 0.0000026295, 0.0000026331, 0.0000026326, + 0.0000026315, 0.0000026316, 0.0000026280, 0.0000026138, 0.0000025978, + 0.0000025907, 0.0000025892, 0.0000025823, 0.0000025661, 0.0000025458, + 0.0000025292, 0.0000025186, 0.0000025121, 0.0000025078, 0.0000025056, + 0.0000025055, 0.0000025058, 0.0000025048, 0.0000025016, 0.0000024982, + 0.0000024978, 0.0000025008, 0.0000025074, 0.0000025161, 0.0000025213, + 0.0000025151, 0.0000025036, 0.0000025036, 0.0000025216, 0.0000025491, + 0.0000025755, 0.0000025962, 0.0000026101, 0.0000026196, 0.0000026242, + 0.0000026262, 0.0000026292, 0.0000026340, 0.0000026403, 0.0000026505, + 0.0000026617, 0.0000026677, 0.0000026741, 0.0000026751, 0.0000026671, + 0.0000026525, 0.0000026346, 0.0000026035, 0.0000025940, 0.0000025634, + 0.0000025502, 0.0000025643, 0.0000026198, 0.0000026728, 0.0000027063, + 0.0000027263, 0.0000027579, 0.0000027817, 0.0000027823, 0.0000027772, + 0.0000027762, 0.0000027748, 0.0000027657, 0.0000027642, 0.0000027682, + 0.0000027678, 0.0000027624, 0.0000027578, 0.0000027629, 0.0000027681, + 0.0000027628, 0.0000027481, 0.0000027496, 0.0000027633, 0.0000027663, + 0.0000027698, 0.0000027660, 0.0000027556, 0.0000027383, 0.0000027340, + 0.0000027395, 0.0000027391, 0.0000027358, 0.0000027343, 0.0000027355, + 0.0000027359, 0.0000027339, 0.0000027315, 0.0000027321, 0.0000027368, + 0.0000027376, 0.0000027363, 0.0000027333, 0.0000027306, 0.0000027294, + 0.0000027286, 0.0000027280, 0.0000027270, 0.0000027242, 0.0000027201, + 0.0000027145, 0.0000027073, 0.0000026981, 0.0000026900, 0.0000026829, + 0.0000026755, 0.0000026689, 0.0000026615, 0.0000026542, 0.0000026505, + 0.0000026510, 0.0000026524, 0.0000026515, 0.0000026493, 0.0000026501, + 0.0000026533, 0.0000026589, 0.0000026644, 0.0000026698, 0.0000026747, + 0.0000026781, 0.0000026786, 0.0000026765, 0.0000026733, 0.0000026706, + 0.0000026697, 0.0000026705, 0.0000026717, 0.0000026723, 0.0000026710, + 0.0000026678, 0.0000026622, 0.0000026531, 0.0000026391, 0.0000026219, + 0.0000026066, 0.0000025971, 0.0000025935, 0.0000025926, 0.0000025933, + 0.0000025945, 0.0000025959, 0.0000025951, 0.0000025907, 0.0000025834, + 0.0000025728, 0.0000025607, 0.0000025509, 0.0000025443, 0.0000025391, + 0.0000025344, 0.0000025307, 0.0000025276, 0.0000025246, 0.0000025210, + 0.0000025185, 0.0000025169, 0.0000025151, 0.0000025124, 0.0000025114, + 0.0000025149, 0.0000025272, 0.0000025413, 0.0000025529, 0.0000025656, + 0.0000025717, 0.0000025658, 0.0000025609, 0.0000025753, 0.0000025924, + 0.0000025921, 0.0000025849, 0.0000025766, 0.0000025700, 0.0000025669, + 0.0000025698, 0.0000025763, 0.0000025829, 0.0000025764, 0.0000025602, + 0.0000025419, 0.0000025298, 0.0000025254, 0.0000025233, 0.0000025173, + 0.0000025065, 0.0000024947, 0.0000024886, 0.0000024801, 0.0000024785, + 0.0000024941, 0.0000025095, 0.0000025217, 0.0000025281, 0.0000025314, + 0.0000025432, 0.0000025530, 0.0000025351, 0.0000025185, 0.0000025232, + 0.0000025411, 0.0000025507, 0.0000025599, 0.0000025950, 0.0000026255, + 0.0000026411, 0.0000026392, 0.0000026315, 0.0000026191, 0.0000026033, + 0.0000025939, 0.0000025944, 0.0000025944, 0.0000025885, 0.0000025848, + 0.0000025863, 0.0000025908, 0.0000025962, 0.0000026012, 0.0000026037, + 0.0000026064, 0.0000026124, 0.0000026239, 0.0000026371, 0.0000026425, + 0.0000026402, 0.0000026373, 0.0000026356, 0.0000026360, 0.0000026360, + 0.0000026328, 0.0000026288, 0.0000026281, 0.0000026298, 0.0000026351, + 0.0000026423, 0.0000026493, 0.0000026526, 0.0000026522, 0.0000026561, + 0.0000026661, 0.0000026753, 0.0000026845, 0.0000026963, 0.0000027044, + 0.0000027094, 0.0000027192, 0.0000027292, 0.0000027397, 0.0000027527, + 0.0000027593, 0.0000027610, 0.0000027625, 0.0000027654, 0.0000027679, + 0.0000027657, 0.0000027620, 0.0000027577, 0.0000027535, 0.0000027486, + 0.0000027460, 0.0000027428, 0.0000027392, 0.0000027363, 0.0000027361, + 0.0000027371, 0.0000027375, 0.0000027384, 0.0000027414, 0.0000027450, + 0.0000027475, 0.0000027464, 0.0000027427, 0.0000027377, 0.0000027332, + 0.0000027306, 0.0000027278, 0.0000027249, 0.0000027208, 0.0000027171, + 0.0000027163, 0.0000027194, 0.0000027258, 0.0000027341, 0.0000027386, + 0.0000027393, 0.0000027390, 0.0000027423, 0.0000027485, 0.0000027548, + 0.0000027643, 0.0000027740, 0.0000027794, 0.0000027812, 0.0000027812, + 0.0000027782, 0.0000027738, 0.0000027715, 0.0000027724, 0.0000027793, + 0.0000027861, 0.0000027891, 0.0000027926, 0.0000028006, 0.0000028123, + 0.0000028231, 0.0000028295, 0.0000028317, 0.0000028308, 0.0000028276, + 0.0000028253, 0.0000028228, 0.0000028184, 0.0000028115, 0.0000028043, + 0.0000028011, 0.0000028033, 0.0000028074, 0.0000028087, 0.0000028076, + 0.0000028051, 0.0000028032, 0.0000028035, 0.0000028051, 0.0000028067, + 0.0000028075, 0.0000028064, 0.0000028026, 0.0000027974, 0.0000027921, + 0.0000027876, 0.0000027837, 0.0000027805, 0.0000027784, 0.0000027767, + 0.0000027746, 0.0000027727, 0.0000027720, 0.0000027725, 0.0000027748, + 0.0000027774, 0.0000027787, 0.0000027783, 0.0000027762, 0.0000027736, + 0.0000027728, 0.0000027753, 0.0000027797, 0.0000027849, 0.0000027918, + 0.0000027999, 0.0000028081, 0.0000028149, 0.0000028199, 0.0000028214, + 0.0000028197, 0.0000028183, 0.0000028193, 0.0000028209, 0.0000028203, + 0.0000028159, 0.0000028090, 0.0000028038, 0.0000028040, 0.0000028102, + 0.0000028185, 0.0000028250, 0.0000028296, 0.0000028330, 0.0000028331, + 0.0000028284, 0.0000028172, 0.0000028014, 0.0000027889, 0.0000027855, + 0.0000027875, 0.0000027909, 0.0000027935, 0.0000027968, 0.0000027986, + 0.0000027977, 0.0000027955, 0.0000027961, 0.0000028002, 0.0000028044, + 0.0000028055, 0.0000028047, 0.0000028054, 0.0000028089, 0.0000028138, + 0.0000028164, 0.0000028164, 0.0000028156, 0.0000028136, 0.0000028100, + 0.0000028064, 0.0000028044, 0.0000028025, 0.0000027990, 0.0000027962, + 0.0000027983, 0.0000028062, 0.0000028155, 0.0000028212, 0.0000028230, + 0.0000028221, 0.0000028174, 0.0000028087, 0.0000028007, 0.0000027987, + 0.0000028004, 0.0000028027, 0.0000028021, 0.0000028005, 0.0000028017, + 0.0000028082, 0.0000028162, 0.0000028194, 0.0000028182, 0.0000028174, + 0.0000028188, 0.0000028197, 0.0000028184, 0.0000028118, 0.0000028017, + 0.0000027931, 0.0000027881, 0.0000027845, 0.0000027806, 0.0000027764, + 0.0000027718, 0.0000027666, 0.0000027624, 0.0000027602, 0.0000027590, + 0.0000027575, 0.0000027549, 0.0000027509, 0.0000027484, 0.0000027477, + 0.0000027482, 0.0000027506, 0.0000027552, 0.0000027620, 0.0000027691, + 0.0000027753, 0.0000027773, 0.0000027769, 0.0000027760, 0.0000027745, + 0.0000027737, 0.0000027731, 0.0000027717, 0.0000027692, 0.0000027673, + 0.0000027659, 0.0000027654, 0.0000027646, 0.0000027627, 0.0000027607, + 0.0000027592, 0.0000027590, 0.0000027598, 0.0000027617, 0.0000027616, + 0.0000027571, 0.0000027520, 0.0000027513, 0.0000027521, 0.0000027497, + 0.0000027459, 0.0000027453, 0.0000027416, 0.0000027180, 0.0000026767, + 0.0000026435, 0.0000026326, 0.0000026360, 0.0000026465, 0.0000026563, + 0.0000026685, 0.0000026796, 0.0000026904, 0.0000027003, 0.0000027066, + 0.0000027096, 0.0000027127, 0.0000027183, 0.0000027230, 0.0000027242, + 0.0000027197, 0.0000027115, 0.0000027058, 0.0000027043, 0.0000027059, + 0.0000027075, 0.0000027097, 0.0000027133, 0.0000027196, 0.0000027287, + 0.0000027367, 0.0000027406, 0.0000027399, 0.0000027364, 0.0000027331, + 0.0000027303, 0.0000027252, 0.0000027182, 0.0000027147, 0.0000027154, + 0.0000027184, 0.0000027194, 0.0000027170, 0.0000027078, 0.0000026861, + 0.0000026496, 0.0000026111, 0.0000025994, 0.0000026119, 0.0000026530, + 0.0000027075, 0.0000027355, 0.0000027293, 0.0000027159, 0.0000027111, + 0.0000027397, 0.0000028015, 0.0000028232, 0.0000028285, 0.0000028251, + 0.0000028217, 0.0000028184, 0.0000028203, 0.0000028283, 0.0000028370, + 0.0000028431, 0.0000028506, 0.0000028576, 0.0000028633, 0.0000028673, + 0.0000028704, 0.0000028718, 0.0000028712, 0.0000028671, 0.0000028589, + 0.0000028482, 0.0000028377, 0.0000028277, 0.0000028180, 0.0000028092, + 0.0000028016, 0.0000027964, 0.0000027920, 0.0000027858, 0.0000027819, + 0.0000027847, 0.0000027947, 0.0000028078, 0.0000028177, 0.0000028245, + 0.0000028294, 0.0000028290, 0.0000028232, 0.0000028201, 0.0000028232, + 0.0000028225, 0.0000028339, 0.0000028446, 0.0000028244, 0.0000028371, + 0.0000028547, 0.0000028592, 0.0000028630, 0.0000028835, 0.0000029009, + 0.0000028914, 0.0000028940, 0.0000029085, 0.0000029075, 0.0000029042, + 0.0000029032, 0.0000029008, 0.0000028950, 0.0000028886, 0.0000028859, + 0.0000028858, 0.0000028826, 0.0000028768, 0.0000028682, 0.0000028529, + 0.0000028382, 0.0000028325, 0.0000028337, 0.0000028372, 0.0000028387, + 0.0000028347, 0.0000028270, 0.0000028234, 0.0000028245, 0.0000028254, + 0.0000028231, 0.0000028178, 0.0000028157, 0.0000028146, 0.0000028072, + 0.0000027918, 0.0000027739, 0.0000027593, 0.0000027503, 0.0000027477, + 0.0000027518, 0.0000027597, 0.0000027665, 0.0000027695, 0.0000027691, + 0.0000027661, 0.0000027632, 0.0000027632, 0.0000027677, 0.0000027745, + 0.0000027819, 0.0000027886, 0.0000027943, 0.0000027983, 0.0000028004, + 0.0000028000, 0.0000027972, 0.0000027915, 0.0000027839, 0.0000027736, + 0.0000027604, 0.0000027455, 0.0000027314, 0.0000027210, 0.0000027143, + 0.0000027091, 0.0000027042, 0.0000026988, 0.0000026923, 0.0000026846, + 0.0000026766, 0.0000026711, 0.0000026705, 0.0000026733, 0.0000026788, + 0.0000026849, 0.0000026885, 0.0000026885, 0.0000026861, 0.0000026837, + 0.0000026829, 0.0000026833, 0.0000026867, 0.0000026937, 0.0000027028, + 0.0000027124, 0.0000027216, 0.0000027279, 0.0000027292, 0.0000027265, + 0.0000027203, 0.0000027150, 0.0000027132, 0.0000027148, 0.0000027189, + 0.0000027225, 0.0000027233, 0.0000027219, 0.0000027207, 0.0000027219, + 0.0000027232, 0.0000027222, 0.0000027192, 0.0000027180, 0.0000027197, + 0.0000027264, 0.0000027359, 0.0000027458, 0.0000027557, 0.0000027662, + 0.0000027755, 0.0000027821, 0.0000027854, 0.0000027853, 0.0000027826, + 0.0000027800, 0.0000027795, 0.0000027796, 0.0000027792, 0.0000027764, + 0.0000027721, 0.0000027663, 0.0000027575, 0.0000027451, 0.0000027331, + 0.0000027269, 0.0000027281, 0.0000027335, 0.0000027390, 0.0000027427, + 0.0000027453, 0.0000027476, 0.0000027499, 0.0000027543, 0.0000027614, + 0.0000027703, 0.0000027786, 0.0000027835, 0.0000027838, 0.0000027797, + 0.0000027720, 0.0000027627, 0.0000027546, 0.0000027514, 0.0000027526, + 0.0000027559, 0.0000027582, 0.0000027583, 0.0000027575, 0.0000027557, + 0.0000027521, 0.0000027452, 0.0000027339, 0.0000027183, 0.0000026999, + 0.0000026830, 0.0000026713, 0.0000026651, 0.0000026634, 0.0000026639, + 0.0000026661, 0.0000026681, 0.0000026680, 0.0000026655, 0.0000026616, + 0.0000026581, 0.0000026564, 0.0000026582, 0.0000026611, 0.0000026635, + 0.0000026643, 0.0000026646, 0.0000026653, 0.0000026664, 0.0000026678, + 0.0000026689, 0.0000026699, 0.0000026708, 0.0000026708, 0.0000026695, + 0.0000026668, 0.0000026631, 0.0000026581, 0.0000026521, 0.0000026460, + 0.0000026416, 0.0000026392, 0.0000026389, 0.0000026384, 0.0000026374, + 0.0000026372, 0.0000026374, 0.0000026379, 0.0000026386, 0.0000026383, + 0.0000026359, 0.0000026322, 0.0000026274, 0.0000026245, 0.0000026283, + 0.0000026392, 0.0000026550, 0.0000026736, 0.0000026929, 0.0000027118, + 0.0000027298, 0.0000027422, 0.0000027488, 0.0000027545, 0.0000027631, + 0.0000027710, 0.0000027753, 0.0000027763, 0.0000027777, 0.0000027811, + 0.0000027840, 0.0000027862, 0.0000027879, 0.0000027895, 0.0000027900, + 0.0000027878, 0.0000027813, 0.0000027693, 0.0000027517, 0.0000027321, + 0.0000027136, 0.0000026954, 0.0000026771, 0.0000026603, 0.0000026478, + 0.0000026397, 0.0000026335, 0.0000026275, 0.0000026213, 0.0000026150, + 0.0000026094, 0.0000026070, 0.0000026080, 0.0000026096, 0.0000026090, + 0.0000026086, 0.0000026099, 0.0000026129, 0.0000026177, 0.0000026237, + 0.0000026256, 0.0000026232, 0.0000026169, 0.0000026078, 0.0000026012, + 0.0000026011, 0.0000026058, 0.0000026115, 0.0000026155, 0.0000026159, + 0.0000026135, 0.0000026079, 0.0000026022, 0.0000026007, 0.0000026026, + 0.0000026021, 0.0000025934, 0.0000025877, 0.0000026045, 0.0000026462, + 0.0000026726, 0.0000026827, 0.0000027133, 0.0000027555, 0.0000027692, + 0.0000027578, 0.0000027461, 0.0000027454, 0.0000027500, 0.0000027571, + 0.0000027663, 0.0000027789, 0.0000027825, 0.0000027619, 0.0000027319, + 0.0000027249, 0.0000027300, 0.0000027310, 0.0000027181, 0.0000026984, + 0.0000026928, 0.0000027000, 0.0000027087, 0.0000027118, 0.0000027152, + 0.0000027168, 0.0000027133, 0.0000027115, 0.0000027180, 0.0000027305, + 0.0000027390, 0.0000027400, 0.0000027383, 0.0000027368, 0.0000027329, + 0.0000027282, 0.0000027237, 0.0000027222, 0.0000027264, 0.0000027348, + 0.0000027413, 0.0000027446, 0.0000027459, 0.0000027484, 0.0000027496, + 0.0000027513, 0.0000027535, 0.0000027545, 0.0000027531, 0.0000027479, + 0.0000027401, 0.0000027317, 0.0000027242, 0.0000027180, 0.0000027132, + 0.0000027101, 0.0000027081, 0.0000027063, 0.0000027035, 0.0000027005, + 0.0000026983, 0.0000026946, 0.0000026893, 0.0000026850, 0.0000026843, + 0.0000026893, 0.0000026943, 0.0000026930, 0.0000026837, 0.0000026746, + 0.0000026702, 0.0000026661, 0.0000026633, 0.0000026645, 0.0000026680, + 0.0000026693, 0.0000026655, 0.0000026608, 0.0000026588, 0.0000026569, + 0.0000026529, 0.0000026466, 0.0000026401, 0.0000026355, 0.0000026335, + 0.0000026323, 0.0000026280, 0.0000026208, 0.0000026166, 0.0000026186, + 0.0000026244, 0.0000026280, 0.0000026280, 0.0000026278, 0.0000026280, + 0.0000026209, 0.0000026048, 0.0000025927, 0.0000025904, 0.0000025872, + 0.0000025718, 0.0000025466, 0.0000025232, 0.0000025076, 0.0000024987, + 0.0000024928, 0.0000024885, 0.0000024869, 0.0000024876, 0.0000024891, + 0.0000024900, 0.0000024901, 0.0000024899, 0.0000024895, 0.0000024890, + 0.0000024904, 0.0000024960, 0.0000025054, 0.0000025100, 0.0000025040, + 0.0000024941, 0.0000024929, 0.0000025043, 0.0000025245, 0.0000025466, + 0.0000025663, 0.0000025849, 0.0000026037, 0.0000026193, 0.0000026272, + 0.0000026324, 0.0000026384, 0.0000026460, 0.0000026576, 0.0000026664, + 0.0000026741, 0.0000026756, 0.0000026675, 0.0000026522, 0.0000026361, + 0.0000026023, 0.0000025884, 0.0000025736, 0.0000025465, 0.0000025514, + 0.0000025780, 0.0000026397, 0.0000026826, 0.0000027124, 0.0000027403, + 0.0000027717, 0.0000027787, 0.0000027764, 0.0000027770, 0.0000027741, + 0.0000027680, 0.0000027675, 0.0000027689, 0.0000027651, 0.0000027573, + 0.0000027560, 0.0000027632, 0.0000027639, 0.0000027551, 0.0000027448, + 0.0000027529, 0.0000027614, 0.0000027641, 0.0000027674, 0.0000027639, + 0.0000027531, 0.0000027362, 0.0000027340, 0.0000027401, 0.0000027404, + 0.0000027378, 0.0000027357, 0.0000027356, 0.0000027358, 0.0000027347, + 0.0000027334, 0.0000027342, 0.0000027369, 0.0000027375, 0.0000027356, + 0.0000027330, 0.0000027302, 0.0000027280, 0.0000027262, 0.0000027248, + 0.0000027234, 0.0000027206, 0.0000027170, 0.0000027132, 0.0000027074, + 0.0000026985, 0.0000026888, 0.0000026806, 0.0000026744, 0.0000026698, + 0.0000026641, 0.0000026574, 0.0000026518, 0.0000026494, 0.0000026498, + 0.0000026514, 0.0000026511, 0.0000026518, 0.0000026537, 0.0000026594, + 0.0000026656, 0.0000026705, 0.0000026744, 0.0000026763, 0.0000026760, + 0.0000026733, 0.0000026694, 0.0000026667, 0.0000026666, 0.0000026681, + 0.0000026695, 0.0000026692, 0.0000026666, 0.0000026604, 0.0000026496, + 0.0000026350, 0.0000026182, 0.0000026036, 0.0000025966, 0.0000025956, + 0.0000025960, 0.0000025957, 0.0000025943, 0.0000025921, 0.0000025880, + 0.0000025815, 0.0000025732, 0.0000025634, 0.0000025526, 0.0000025422, + 0.0000025349, 0.0000025313, 0.0000025294, 0.0000025277, 0.0000025257, + 0.0000025242, 0.0000025217, 0.0000025186, 0.0000025154, 0.0000025140, + 0.0000025134, 0.0000025120, 0.0000025118, 0.0000025129, 0.0000025212, + 0.0000025360, 0.0000025464, 0.0000025569, 0.0000025674, 0.0000025673, + 0.0000025591, 0.0000025666, 0.0000025881, 0.0000025919, 0.0000025846, + 0.0000025767, 0.0000025685, 0.0000025612, 0.0000025616, 0.0000025711, + 0.0000025807, 0.0000025883, 0.0000025897, 0.0000025789, 0.0000025552, + 0.0000025318, 0.0000025206, 0.0000025178, 0.0000025153, 0.0000025093, + 0.0000024976, 0.0000024893, 0.0000024799, 0.0000024755, 0.0000024909, + 0.0000025083, 0.0000025224, 0.0000025292, 0.0000025314, 0.0000025380, + 0.0000025516, 0.0000025389, 0.0000025180, 0.0000025199, 0.0000025357, + 0.0000025483, 0.0000025517, 0.0000025810, 0.0000026178, 0.0000026380, + 0.0000026399, 0.0000026342, 0.0000026231, 0.0000026087, 0.0000025966, + 0.0000025952, 0.0000025959, 0.0000025925, 0.0000025884, 0.0000025887, + 0.0000025911, 0.0000025953, 0.0000025993, 0.0000026014, 0.0000026051, + 0.0000026116, 0.0000026214, 0.0000026323, 0.0000026366, 0.0000026355, + 0.0000026345, 0.0000026343, 0.0000026338, 0.0000026312, 0.0000026269, + 0.0000026253, 0.0000026259, 0.0000026287, 0.0000026339, 0.0000026391, + 0.0000026442, 0.0000026460, 0.0000026460, 0.0000026534, 0.0000026669, + 0.0000026775, 0.0000026875, 0.0000026966, 0.0000026999, 0.0000027018, + 0.0000027071, 0.0000027144, 0.0000027258, 0.0000027401, 0.0000027484, + 0.0000027520, 0.0000027540, 0.0000027553, 0.0000027561, 0.0000027535, + 0.0000027494, 0.0000027433, 0.0000027377, 0.0000027315, 0.0000027278, + 0.0000027236, 0.0000027186, 0.0000027152, 0.0000027133, 0.0000027145, + 0.0000027171, 0.0000027198, 0.0000027235, 0.0000027271, 0.0000027297, + 0.0000027309, 0.0000027303, 0.0000027289, 0.0000027278, 0.0000027269, + 0.0000027263, 0.0000027245, 0.0000027219, 0.0000027195, 0.0000027182, + 0.0000027194, 0.0000027234, 0.0000027311, 0.0000027361, 0.0000027379, + 0.0000027372, 0.0000027392, 0.0000027453, 0.0000027524, 0.0000027613, + 0.0000027724, 0.0000027802, 0.0000027826, 0.0000027811, 0.0000027772, + 0.0000027731, 0.0000027705, 0.0000027711, 0.0000027771, 0.0000027863, + 0.0000027909, 0.0000027937, 0.0000028003, 0.0000028101, 0.0000028200, + 0.0000028264, 0.0000028283, 0.0000028273, 0.0000028236, 0.0000028198, + 0.0000028165, 0.0000028122, 0.0000028072, 0.0000028033, 0.0000028024, + 0.0000028047, 0.0000028068, 0.0000028054, 0.0000028027, 0.0000028013, + 0.0000028012, 0.0000028039, 0.0000028080, 0.0000028116, 0.0000028129, + 0.0000028113, 0.0000028067, 0.0000028011, 0.0000027950, 0.0000027889, + 0.0000027839, 0.0000027795, 0.0000027757, 0.0000027725, 0.0000027692, + 0.0000027659, 0.0000027637, 0.0000027636, 0.0000027659, 0.0000027698, + 0.0000027732, 0.0000027746, 0.0000027745, 0.0000027734, 0.0000027727, + 0.0000027743, 0.0000027786, 0.0000027840, 0.0000027902, 0.0000027968, + 0.0000028033, 0.0000028087, 0.0000028132, 0.0000028161, 0.0000028165, + 0.0000028161, 0.0000028177, 0.0000028206, 0.0000028215, 0.0000028193, + 0.0000028140, 0.0000028078, 0.0000028050, 0.0000028078, 0.0000028161, + 0.0000028255, 0.0000028323, 0.0000028377, 0.0000028393, 0.0000028370, + 0.0000028315, 0.0000028227, 0.0000028102, 0.0000027982, 0.0000027925, + 0.0000027919, 0.0000027933, 0.0000027952, 0.0000027969, 0.0000027969, + 0.0000027950, 0.0000027939, 0.0000027978, 0.0000028048, 0.0000028080, + 0.0000028063, 0.0000028030, 0.0000028031, 0.0000028070, 0.0000028103, + 0.0000028109, 0.0000028097, 0.0000028083, 0.0000028063, 0.0000028010, + 0.0000027967, 0.0000027976, 0.0000027990, 0.0000027966, 0.0000027924, + 0.0000027945, 0.0000028040, 0.0000028141, 0.0000028192, 0.0000028198, + 0.0000028174, 0.0000028117, 0.0000028046, 0.0000028005, 0.0000028009, + 0.0000028026, 0.0000028013, 0.0000027970, 0.0000027955, 0.0000027990, + 0.0000028066, 0.0000028117, 0.0000028140, 0.0000028177, 0.0000028224, + 0.0000028243, 0.0000028226, 0.0000028159, 0.0000028066, 0.0000027974, + 0.0000027913, 0.0000027870, 0.0000027835, 0.0000027797, 0.0000027753, + 0.0000027699, 0.0000027643, 0.0000027604, 0.0000027591, 0.0000027591, + 0.0000027587, 0.0000027574, 0.0000027564, 0.0000027555, 0.0000027548, + 0.0000027548, 0.0000027558, 0.0000027588, 0.0000027641, 0.0000027707, + 0.0000027751, 0.0000027762, 0.0000027762, 0.0000027747, 0.0000027728, + 0.0000027718, 0.0000027716, 0.0000027712, 0.0000027707, 0.0000027702, + 0.0000027695, 0.0000027692, 0.0000027681, 0.0000027664, 0.0000027646, + 0.0000027643, 0.0000027649, 0.0000027660, 0.0000027664, 0.0000027645, + 0.0000027588, 0.0000027537, 0.0000027534, 0.0000027540, 0.0000027520, + 0.0000027494, 0.0000027482, 0.0000027377, 0.0000027060, 0.0000026647, + 0.0000026385, 0.0000026329, 0.0000026388, 0.0000026486, 0.0000026555, + 0.0000026645, 0.0000026754, 0.0000026864, 0.0000026958, 0.0000027018, + 0.0000027038, 0.0000027042, 0.0000027058, 0.0000027079, 0.0000027101, + 0.0000027097, 0.0000027043, 0.0000026982, 0.0000026964, 0.0000026988, + 0.0000027019, 0.0000027042, 0.0000027060, 0.0000027102, 0.0000027188, + 0.0000027281, 0.0000027342, 0.0000027360, 0.0000027343, 0.0000027320, + 0.0000027303, 0.0000027260, 0.0000027190, 0.0000027136, 0.0000027103, + 0.0000027112, 0.0000027139, 0.0000027157, 0.0000027130, 0.0000027051, + 0.0000026826, 0.0000026413, 0.0000026040, 0.0000025988, 0.0000026189, + 0.0000026663, 0.0000027155, 0.0000027284, 0.0000027158, 0.0000027055, + 0.0000027175, 0.0000027746, 0.0000028201, 0.0000028297, 0.0000028289, + 0.0000028255, 0.0000028241, 0.0000028244, 0.0000028287, 0.0000028349, + 0.0000028416, 0.0000028496, 0.0000028569, 0.0000028626, 0.0000028668, + 0.0000028708, 0.0000028733, 0.0000028730, 0.0000028695, 0.0000028620, + 0.0000028511, 0.0000028413, 0.0000028322, 0.0000028221, 0.0000028122, + 0.0000028020, 0.0000027962, 0.0000027926, 0.0000027902, 0.0000027843, + 0.0000027808, 0.0000027845, 0.0000027967, 0.0000028114, 0.0000028218, + 0.0000028278, 0.0000028304, 0.0000028278, 0.0000028208, 0.0000028198, + 0.0000028206, 0.0000028219, 0.0000028409, 0.0000028300, 0.0000028278, + 0.0000028479, 0.0000028562, 0.0000028602, 0.0000028739, 0.0000028944, + 0.0000028892, 0.0000028891, 0.0000029042, 0.0000029034, 0.0000028993, + 0.0000028989, 0.0000028981, 0.0000028942, 0.0000028896, 0.0000028878, + 0.0000028866, 0.0000028828, 0.0000028768, 0.0000028688, 0.0000028559, + 0.0000028422, 0.0000028355, 0.0000028361, 0.0000028377, 0.0000028359, + 0.0000028290, 0.0000028233, 0.0000028232, 0.0000028258, 0.0000028249, + 0.0000028200, 0.0000028162, 0.0000028147, 0.0000028083, 0.0000027929, + 0.0000027731, 0.0000027559, 0.0000027451, 0.0000027410, 0.0000027413, + 0.0000027475, 0.0000027575, 0.0000027648, 0.0000027670, 0.0000027658, + 0.0000027643, 0.0000027639, 0.0000027660, 0.0000027704, 0.0000027751, + 0.0000027815, 0.0000027892, 0.0000027945, 0.0000027967, 0.0000027960, + 0.0000027932, 0.0000027893, 0.0000027856, 0.0000027803, 0.0000027708, + 0.0000027585, 0.0000027450, 0.0000027308, 0.0000027156, 0.0000027010, + 0.0000026876, 0.0000026751, 0.0000026641, 0.0000026552, 0.0000026475, + 0.0000026391, 0.0000026309, 0.0000026279, 0.0000026294, 0.0000026333, + 0.0000026380, 0.0000026435, 0.0000026490, 0.0000026529, 0.0000026553, + 0.0000026563, 0.0000026558, 0.0000026537, 0.0000026531, 0.0000026559, + 0.0000026623, 0.0000026716, 0.0000026829, 0.0000026944, 0.0000027030, + 0.0000027066, 0.0000027068, 0.0000027050, 0.0000027020, 0.0000026999, + 0.0000027006, 0.0000027050, 0.0000027111, 0.0000027150, 0.0000027162, + 0.0000027173, 0.0000027190, 0.0000027191, 0.0000027176, 0.0000027155, + 0.0000027154, 0.0000027182, 0.0000027232, 0.0000027291, 0.0000027361, + 0.0000027445, 0.0000027535, 0.0000027624, 0.0000027702, 0.0000027757, + 0.0000027779, 0.0000027781, 0.0000027781, 0.0000027793, 0.0000027810, + 0.0000027821, 0.0000027820, 0.0000027803, 0.0000027760, 0.0000027678, + 0.0000027552, 0.0000027408, 0.0000027310, 0.0000027293, 0.0000027330, + 0.0000027375, 0.0000027402, 0.0000027419, 0.0000027441, 0.0000027476, + 0.0000027523, 0.0000027592, 0.0000027682, 0.0000027773, 0.0000027829, + 0.0000027828, 0.0000027779, 0.0000027694, 0.0000027599, 0.0000027540, + 0.0000027532, 0.0000027545, 0.0000027574, 0.0000027592, 0.0000027609, + 0.0000027619, 0.0000027617, 0.0000027601, 0.0000027549, 0.0000027446, + 0.0000027291, 0.0000027098, 0.0000026904, 0.0000026752, 0.0000026667, + 0.0000026653, 0.0000026676, 0.0000026717, 0.0000026747, 0.0000026752, + 0.0000026731, 0.0000026683, 0.0000026637, 0.0000026619, 0.0000026629, + 0.0000026650, 0.0000026668, 0.0000026686, 0.0000026709, 0.0000026732, + 0.0000026749, 0.0000026761, 0.0000026775, 0.0000026794, 0.0000026809, + 0.0000026810, 0.0000026794, 0.0000026765, 0.0000026721, 0.0000026663, + 0.0000026604, 0.0000026553, 0.0000026517, 0.0000026479, 0.0000026436, + 0.0000026386, 0.0000026343, 0.0000026324, 0.0000026309, 0.0000026312, + 0.0000026313, 0.0000026309, 0.0000026287, 0.0000026239, 0.0000026177, + 0.0000026126, 0.0000026111, 0.0000026153, 0.0000026244, 0.0000026374, + 0.0000026512, 0.0000026661, 0.0000026790, 0.0000026883, 0.0000026966, + 0.0000027055, 0.0000027136, 0.0000027182, 0.0000027205, 0.0000027230, + 0.0000027251, 0.0000027260, 0.0000027264, 0.0000027266, 0.0000027266, + 0.0000027257, 0.0000027223, 0.0000027150, 0.0000027032, 0.0000026867, + 0.0000026679, 0.0000026503, 0.0000026340, 0.0000026188, 0.0000026061, + 0.0000025987, 0.0000025973, 0.0000025969, 0.0000025952, 0.0000025916, + 0.0000025868, 0.0000025817, 0.0000025789, 0.0000025804, 0.0000025838, + 0.0000025845, 0.0000025831, 0.0000025837, 0.0000025884, 0.0000025964, + 0.0000026054, 0.0000026123, 0.0000026141, 0.0000026125, 0.0000026054, + 0.0000025952, 0.0000025879, 0.0000025859, 0.0000025867, 0.0000025885, + 0.0000025922, 0.0000025963, 0.0000025979, 0.0000025962, 0.0000025939, + 0.0000025952, 0.0000025974, 0.0000025926, 0.0000025875, 0.0000025986, + 0.0000026383, 0.0000026687, 0.0000026814, 0.0000027141, 0.0000027553, + 0.0000027667, 0.0000027562, 0.0000027481, 0.0000027485, 0.0000027527, + 0.0000027588, 0.0000027664, 0.0000027773, 0.0000027788, 0.0000027552, + 0.0000027301, 0.0000027276, 0.0000027348, 0.0000027344, 0.0000027206, + 0.0000026982, 0.0000026854, 0.0000026888, 0.0000027009, 0.0000027077, + 0.0000027089, 0.0000027116, 0.0000027132, 0.0000027094, 0.0000027049, + 0.0000027093, 0.0000027232, 0.0000027341, 0.0000027379, 0.0000027391, + 0.0000027375, 0.0000027330, 0.0000027266, 0.0000027208, 0.0000027185, + 0.0000027218, 0.0000027292, 0.0000027375, 0.0000027423, 0.0000027464, + 0.0000027483, 0.0000027504, 0.0000027526, 0.0000027524, 0.0000027496, + 0.0000027420, 0.0000027321, 0.0000027223, 0.0000027156, 0.0000027112, + 0.0000027082, 0.0000027063, 0.0000027048, 0.0000027030, 0.0000027006, + 0.0000026984, 0.0000026980, 0.0000026964, 0.0000026919, 0.0000026878, + 0.0000026875, 0.0000026919, 0.0000026950, 0.0000026899, 0.0000026787, + 0.0000026709, 0.0000026682, 0.0000026650, 0.0000026626, 0.0000026638, + 0.0000026673, 0.0000026687, 0.0000026660, 0.0000026612, 0.0000026585, + 0.0000026561, 0.0000026512, 0.0000026440, 0.0000026362, 0.0000026300, + 0.0000026271, 0.0000026271, 0.0000026273, 0.0000026241, 0.0000026177, + 0.0000026138, 0.0000026156, 0.0000026210, 0.0000026245, 0.0000026246, + 0.0000026243, 0.0000026235, 0.0000026136, 0.0000025981, 0.0000025904, + 0.0000025889, 0.0000025783, 0.0000025538, 0.0000025273, 0.0000025082, + 0.0000024959, 0.0000024874, 0.0000024809, 0.0000024763, 0.0000024750, + 0.0000024756, 0.0000024772, 0.0000024787, 0.0000024805, 0.0000024822, + 0.0000024816, 0.0000024786, 0.0000024761, 0.0000024769, 0.0000024835, + 0.0000024940, 0.0000024998, 0.0000024956, 0.0000024867, 0.0000024834, + 0.0000024877, 0.0000024990, 0.0000025141, 0.0000025333, 0.0000025597, + 0.0000025925, 0.0000026189, 0.0000026302, 0.0000026361, 0.0000026428, + 0.0000026534, 0.0000026641, 0.0000026732, 0.0000026752, 0.0000026671, + 0.0000026512, 0.0000026357, 0.0000026035, 0.0000025826, 0.0000025801, + 0.0000025551, 0.0000025428, 0.0000025532, 0.0000025940, 0.0000026509, + 0.0000026938, 0.0000027234, 0.0000027572, 0.0000027745, 0.0000027758, + 0.0000027776, 0.0000027736, 0.0000027708, 0.0000027700, 0.0000027697, + 0.0000027619, 0.0000027543, 0.0000027550, 0.0000027606, 0.0000027583, + 0.0000027501, 0.0000027466, 0.0000027565, 0.0000027589, 0.0000027620, + 0.0000027643, 0.0000027613, 0.0000027498, 0.0000027340, 0.0000027339, + 0.0000027403, 0.0000027418, 0.0000027397, 0.0000027369, 0.0000027358, + 0.0000027363, 0.0000027361, 0.0000027348, 0.0000027349, 0.0000027354, + 0.0000027361, 0.0000027348, 0.0000027332, 0.0000027307, 0.0000027274, + 0.0000027242, 0.0000027215, 0.0000027191, 0.0000027150, 0.0000027102, + 0.0000027074, 0.0000027039, 0.0000026972, 0.0000026884, 0.0000026802, + 0.0000026738, 0.0000026701, 0.0000026659, 0.0000026593, 0.0000026527, + 0.0000026488, 0.0000026478, 0.0000026483, 0.0000026497, 0.0000026517, + 0.0000026533, 0.0000026576, 0.0000026633, 0.0000026691, 0.0000026740, + 0.0000026764, 0.0000026767, 0.0000026747, 0.0000026706, 0.0000026672, + 0.0000026666, 0.0000026680, 0.0000026684, 0.0000026658, 0.0000026600, + 0.0000026487, 0.0000026310, 0.0000026130, 0.0000025995, 0.0000025934, + 0.0000025942, 0.0000025963, 0.0000025970, 0.0000025942, 0.0000025882, + 0.0000025804, 0.0000025716, 0.0000025623, 0.0000025536, 0.0000025448, + 0.0000025365, 0.0000025306, 0.0000025269, 0.0000025251, 0.0000025245, + 0.0000025243, 0.0000025244, 0.0000025237, 0.0000025224, 0.0000025202, + 0.0000025179, 0.0000025160, 0.0000025149, 0.0000025143, 0.0000025152, + 0.0000025162, 0.0000025209, 0.0000025320, 0.0000025411, 0.0000025490, + 0.0000025601, 0.0000025665, 0.0000025610, 0.0000025581, 0.0000025772, + 0.0000025894, 0.0000025837, 0.0000025772, 0.0000025714, 0.0000025645, + 0.0000025624, 0.0000025680, 0.0000025740, 0.0000025806, 0.0000025870, + 0.0000025917, 0.0000025888, 0.0000025705, 0.0000025397, 0.0000025184, + 0.0000025127, 0.0000025134, 0.0000025115, 0.0000025015, 0.0000024908, + 0.0000024802, 0.0000024736, 0.0000024866, 0.0000025069, 0.0000025223, + 0.0000025298, 0.0000025318, 0.0000025340, 0.0000025480, 0.0000025429, + 0.0000025196, 0.0000025175, 0.0000025302, 0.0000025437, 0.0000025457, + 0.0000025651, 0.0000026057, 0.0000026314, 0.0000026404, 0.0000026370, + 0.0000026274, 0.0000026144, 0.0000026007, 0.0000025963, 0.0000025981, + 0.0000025972, 0.0000025932, 0.0000025908, 0.0000025900, 0.0000025918, + 0.0000025953, 0.0000025982, 0.0000026019, 0.0000026072, 0.0000026146, + 0.0000026244, 0.0000026302, 0.0000026314, 0.0000026315, 0.0000026315, + 0.0000026301, 0.0000026267, 0.0000026242, 0.0000026242, 0.0000026248, + 0.0000026271, 0.0000026304, 0.0000026338, 0.0000026380, 0.0000026395, + 0.0000026424, 0.0000026540, 0.0000026698, 0.0000026809, 0.0000026900, + 0.0000026951, 0.0000026950, 0.0000026939, 0.0000026941, 0.0000026986, + 0.0000027107, 0.0000027248, 0.0000027337, 0.0000027386, 0.0000027405, + 0.0000027411, 0.0000027408, 0.0000027374, 0.0000027317, 0.0000027242, + 0.0000027164, 0.0000027083, 0.0000027037, 0.0000027008, 0.0000026994, + 0.0000027002, 0.0000027017, 0.0000027060, 0.0000027109, 0.0000027150, + 0.0000027192, 0.0000027227, 0.0000027249, 0.0000027258, 0.0000027263, + 0.0000027270, 0.0000027271, 0.0000027268, 0.0000027249, 0.0000027214, + 0.0000027187, 0.0000027175, 0.0000027168, 0.0000027163, 0.0000027176, + 0.0000027234, 0.0000027277, 0.0000027301, 0.0000027300, 0.0000027313, + 0.0000027379, 0.0000027457, 0.0000027546, 0.0000027665, 0.0000027770, + 0.0000027818, 0.0000027806, 0.0000027758, 0.0000027720, 0.0000027701, + 0.0000027701, 0.0000027741, 0.0000027832, 0.0000027899, 0.0000027942, + 0.0000028009, 0.0000028095, 0.0000028175, 0.0000028235, 0.0000028261, + 0.0000028248, 0.0000028197, 0.0000028138, 0.0000028092, 0.0000028054, + 0.0000028028, 0.0000028016, 0.0000028030, 0.0000028044, 0.0000028050, + 0.0000028031, 0.0000028017, 0.0000028028, 0.0000028059, 0.0000028098, + 0.0000028136, 0.0000028167, 0.0000028173, 0.0000028143, 0.0000028086, + 0.0000028018, 0.0000027946, 0.0000027871, 0.0000027800, 0.0000027737, + 0.0000027681, 0.0000027632, 0.0000027588, 0.0000027549, 0.0000027527, + 0.0000027524, 0.0000027544, 0.0000027583, 0.0000027626, 0.0000027657, + 0.0000027675, 0.0000027680, 0.0000027682, 0.0000027692, 0.0000027720, + 0.0000027768, 0.0000027829, 0.0000027896, 0.0000027956, 0.0000028000, + 0.0000028032, 0.0000028052, 0.0000028060, 0.0000028065, 0.0000028096, + 0.0000028150, 0.0000028188, 0.0000028190, 0.0000028161, 0.0000028113, + 0.0000028068, 0.0000028058, 0.0000028109, 0.0000028204, 0.0000028294, + 0.0000028366, 0.0000028415, 0.0000028422, 0.0000028398, 0.0000028363, + 0.0000028306, 0.0000028212, 0.0000028106, 0.0000028033, 0.0000028000, + 0.0000027986, 0.0000027974, 0.0000027964, 0.0000027951, 0.0000027943, + 0.0000027962, 0.0000028039, 0.0000028111, 0.0000028117, 0.0000028071, + 0.0000028030, 0.0000028036, 0.0000028052, 0.0000028049, 0.0000028041, + 0.0000028039, 0.0000028031, 0.0000028002, 0.0000027936, 0.0000027881, + 0.0000027893, 0.0000027936, 0.0000027937, 0.0000027921, 0.0000027952, + 0.0000028053, 0.0000028141, 0.0000028170, 0.0000028160, 0.0000028124, + 0.0000028073, 0.0000028031, 0.0000028020, 0.0000028027, 0.0000028014, + 0.0000027953, 0.0000027895, 0.0000027902, 0.0000027963, 0.0000028018, + 0.0000028060, 0.0000028132, 0.0000028217, 0.0000028259, 0.0000028243, + 0.0000028183, 0.0000028106, 0.0000028034, 0.0000027978, 0.0000027933, + 0.0000027887, 0.0000027846, 0.0000027805, 0.0000027755, 0.0000027697, + 0.0000027647, 0.0000027625, 0.0000027626, 0.0000027632, 0.0000027632, + 0.0000027629, 0.0000027618, 0.0000027595, 0.0000027570, 0.0000027563, + 0.0000027566, 0.0000027591, 0.0000027640, 0.0000027695, 0.0000027720, + 0.0000027726, 0.0000027724, 0.0000027701, 0.0000027677, 0.0000027672, + 0.0000027682, 0.0000027698, 0.0000027716, 0.0000027726, 0.0000027732, + 0.0000027726, 0.0000027714, 0.0000027696, 0.0000027681, 0.0000027681, + 0.0000027691, 0.0000027703, 0.0000027697, 0.0000027669, 0.0000027613, + 0.0000027577, 0.0000027573, 0.0000027569, 0.0000027549, 0.0000027529, + 0.0000027478, 0.0000027283, 0.0000026898, 0.0000026535, 0.0000026366, + 0.0000026349, 0.0000026413, 0.0000026497, 0.0000026545, 0.0000026613, + 0.0000026720, 0.0000026835, 0.0000026926, 0.0000026979, 0.0000026993, + 0.0000026978, 0.0000026953, 0.0000026935, 0.0000026936, 0.0000026947, + 0.0000026923, 0.0000026881, 0.0000026866, 0.0000026891, 0.0000026935, + 0.0000026971, 0.0000026985, 0.0000027005, 0.0000027071, 0.0000027160, + 0.0000027237, 0.0000027284, 0.0000027296, 0.0000027291, 0.0000027282, + 0.0000027247, 0.0000027196, 0.0000027149, 0.0000027098, 0.0000027076, + 0.0000027077, 0.0000027103, 0.0000027118, 0.0000027105, 0.0000027008, + 0.0000026744, 0.0000026294, 0.0000026005, 0.0000026020, 0.0000026298, + 0.0000026793, 0.0000027187, 0.0000027167, 0.0000027043, 0.0000027044, + 0.0000027414, 0.0000028066, 0.0000028299, 0.0000028322, 0.0000028280, + 0.0000028274, 0.0000028286, 0.0000028311, 0.0000028342, 0.0000028384, + 0.0000028450, 0.0000028512, 0.0000028560, 0.0000028598, 0.0000028639, + 0.0000028668, 0.0000028679, 0.0000028668, 0.0000028617, 0.0000028534, + 0.0000028454, 0.0000028368, 0.0000028275, 0.0000028176, 0.0000028061, + 0.0000027983, 0.0000027918, 0.0000027912, 0.0000027891, 0.0000027831, + 0.0000027804, 0.0000027863, 0.0000028002, 0.0000028148, 0.0000028243, + 0.0000028296, 0.0000028306, 0.0000028248, 0.0000028182, 0.0000028184, + 0.0000028165, 0.0000028292, 0.0000028360, 0.0000028229, 0.0000028387, + 0.0000028517, 0.0000028572, 0.0000028659, 0.0000028854, 0.0000028875, + 0.0000028844, 0.0000028990, 0.0000029010, 0.0000028955, 0.0000028946, + 0.0000028954, 0.0000028937, 0.0000028905, 0.0000028886, 0.0000028868, + 0.0000028823, 0.0000028761, 0.0000028690, 0.0000028585, 0.0000028467, + 0.0000028400, 0.0000028392, 0.0000028374, 0.0000028313, 0.0000028246, + 0.0000028229, 0.0000028247, 0.0000028258, 0.0000028220, 0.0000028166, + 0.0000028147, 0.0000028096, 0.0000027949, 0.0000027735, 0.0000027532, + 0.0000027398, 0.0000027335, 0.0000027325, 0.0000027357, 0.0000027436, + 0.0000027546, 0.0000027620, 0.0000027633, 0.0000027620, 0.0000027619, + 0.0000027650, 0.0000027696, 0.0000027735, 0.0000027773, 0.0000027827, + 0.0000027894, 0.0000027938, 0.0000027950, 0.0000027924, 0.0000027875, + 0.0000027837, 0.0000027807, 0.0000027752, 0.0000027666, 0.0000027563, + 0.0000027436, 0.0000027275, 0.0000027078, 0.0000026879, 0.0000026708, + 0.0000026559, 0.0000026423, 0.0000026310, 0.0000026229, 0.0000026162, + 0.0000026089, 0.0000026038, 0.0000026029, 0.0000026044, 0.0000026066, + 0.0000026089, 0.0000026123, 0.0000026172, 0.0000026237, 0.0000026313, + 0.0000026378, 0.0000026418, 0.0000026432, 0.0000026446, 0.0000026473, + 0.0000026514, 0.0000026560, 0.0000026611, 0.0000026670, 0.0000026725, + 0.0000026765, 0.0000026798, 0.0000026827, 0.0000026847, 0.0000026856, + 0.0000026863, 0.0000026881, 0.0000026927, 0.0000026992, 0.0000027063, + 0.0000027125, 0.0000027160, 0.0000027166, 0.0000027155, 0.0000027131, + 0.0000027120, 0.0000027146, 0.0000027200, 0.0000027250, 0.0000027287, + 0.0000027313, 0.0000027347, 0.0000027406, 0.0000027488, 0.0000027581, + 0.0000027666, 0.0000027714, 0.0000027725, 0.0000027728, 0.0000027747, + 0.0000027788, 0.0000027838, 0.0000027877, 0.0000027884, 0.0000027846, + 0.0000027753, 0.0000027621, 0.0000027482, 0.0000027383, 0.0000027352, + 0.0000027361, 0.0000027370, 0.0000027370, 0.0000027381, 0.0000027416, + 0.0000027464, 0.0000027521, 0.0000027587, 0.0000027664, 0.0000027743, + 0.0000027798, 0.0000027803, 0.0000027768, 0.0000027700, 0.0000027632, + 0.0000027579, 0.0000027553, 0.0000027556, 0.0000027567, 0.0000027584, + 0.0000027612, 0.0000027637, 0.0000027668, 0.0000027672, 0.0000027636, + 0.0000027537, 0.0000027374, 0.0000027175, 0.0000026982, 0.0000026828, + 0.0000026738, 0.0000026709, 0.0000026732, 0.0000026765, 0.0000026800, + 0.0000026811, 0.0000026791, 0.0000026751, 0.0000026713, 0.0000026692, + 0.0000026693, 0.0000026708, 0.0000026735, 0.0000026771, 0.0000026803, + 0.0000026821, 0.0000026825, 0.0000026827, 0.0000026834, 0.0000026843, + 0.0000026844, 0.0000026829, 0.0000026802, 0.0000026767, 0.0000026729, + 0.0000026700, 0.0000026683, 0.0000026664, 0.0000026633, 0.0000026582, + 0.0000026519, 0.0000026460, 0.0000026411, 0.0000026372, 0.0000026332, + 0.0000026298, 0.0000026286, 0.0000026257, 0.0000026226, 0.0000026175, + 0.0000026120, 0.0000026080, 0.0000026070, 0.0000026097, 0.0000026156, + 0.0000026228, 0.0000026310, 0.0000026387, 0.0000026441, 0.0000026485, + 0.0000026532, 0.0000026573, 0.0000026603, 0.0000026624, 0.0000026633, + 0.0000026626, 0.0000026605, 0.0000026586, 0.0000026576, 0.0000026574, + 0.0000026576, 0.0000026564, 0.0000026522, 0.0000026447, 0.0000026335, + 0.0000026199, 0.0000026069, 0.0000025944, 0.0000025825, 0.0000025714, + 0.0000025657, 0.0000025657, 0.0000025677, 0.0000025678, 0.0000025647, + 0.0000025589, 0.0000025519, 0.0000025468, 0.0000025469, 0.0000025509, + 0.0000025542, 0.0000025551, 0.0000025567, 0.0000025615, 0.0000025701, + 0.0000025802, 0.0000025901, 0.0000025965, 0.0000025992, 0.0000025978, + 0.0000025916, 0.0000025826, 0.0000025748, 0.0000025693, 0.0000025649, + 0.0000025646, 0.0000025705, 0.0000025790, 0.0000025842, 0.0000025856, + 0.0000025873, 0.0000025904, 0.0000025899, 0.0000025866, 0.0000025959, + 0.0000026326, 0.0000026653, 0.0000026819, 0.0000027152, 0.0000027549, + 0.0000027640, 0.0000027551, 0.0000027509, 0.0000027521, 0.0000027558, + 0.0000027604, 0.0000027668, 0.0000027752, 0.0000027714, 0.0000027473, + 0.0000027285, 0.0000027296, 0.0000027377, 0.0000027368, 0.0000027228, + 0.0000027011, 0.0000026840, 0.0000026806, 0.0000026891, 0.0000027009, + 0.0000027051, 0.0000027049, 0.0000027072, 0.0000027091, 0.0000027049, + 0.0000026987, 0.0000027028, 0.0000027171, 0.0000027313, 0.0000027394, + 0.0000027413, 0.0000027392, 0.0000027325, 0.0000027249, 0.0000027198, + 0.0000027187, 0.0000027200, 0.0000027255, 0.0000027319, 0.0000027381, + 0.0000027421, 0.0000027451, 0.0000027469, 0.0000027454, 0.0000027409, + 0.0000027327, 0.0000027235, 0.0000027160, 0.0000027126, 0.0000027101, + 0.0000027085, 0.0000027070, 0.0000027053, 0.0000027036, 0.0000027019, + 0.0000027004, 0.0000027008, 0.0000027007, 0.0000026966, 0.0000026933, + 0.0000026931, 0.0000026953, 0.0000026943, 0.0000026851, 0.0000026732, + 0.0000026679, 0.0000026668, 0.0000026641, 0.0000026621, 0.0000026634, + 0.0000026667, 0.0000026686, 0.0000026664, 0.0000026618, 0.0000026587, + 0.0000026557, 0.0000026499, 0.0000026420, 0.0000026335, 0.0000026261, + 0.0000026220, 0.0000026218, 0.0000026233, 0.0000026232, 0.0000026190, + 0.0000026134, 0.0000026115, 0.0000026140, 0.0000026191, 0.0000026216, + 0.0000026216, 0.0000026216, 0.0000026191, 0.0000026067, 0.0000025933, + 0.0000025895, 0.0000025848, 0.0000025649, 0.0000025376, 0.0000025171, + 0.0000025033, 0.0000024924, 0.0000024827, 0.0000024746, 0.0000024688, + 0.0000024658, 0.0000024654, 0.0000024659, 0.0000024669, 0.0000024688, + 0.0000024701, 0.0000024690, 0.0000024648, 0.0000024608, 0.0000024602, + 0.0000024640, 0.0000024732, 0.0000024842, 0.0000024907, 0.0000024889, + 0.0000024826, 0.0000024768, 0.0000024753, 0.0000024785, 0.0000024894, + 0.0000025123, 0.0000025495, 0.0000025944, 0.0000026234, 0.0000026338, + 0.0000026400, 0.0000026489, 0.0000026607, 0.0000026708, 0.0000026741, + 0.0000026658, 0.0000026498, 0.0000026340, 0.0000026071, 0.0000025800, + 0.0000025802, 0.0000025688, 0.0000025417, 0.0000025400, 0.0000025554, + 0.0000026106, 0.0000026661, 0.0000027072, 0.0000027398, 0.0000027680, + 0.0000027757, 0.0000027776, 0.0000027738, 0.0000027730, 0.0000027718, + 0.0000027703, 0.0000027592, 0.0000027528, 0.0000027540, 0.0000027576, + 0.0000027550, 0.0000027491, 0.0000027507, 0.0000027579, 0.0000027565, + 0.0000027596, 0.0000027607, 0.0000027582, 0.0000027465, 0.0000027324, + 0.0000027338, 0.0000027409, 0.0000027432, 0.0000027417, 0.0000027387, + 0.0000027370, 0.0000027374, 0.0000027368, 0.0000027349, 0.0000027342, + 0.0000027339, 0.0000027361, 0.0000027360, 0.0000027347, 0.0000027322, + 0.0000027287, 0.0000027240, 0.0000027193, 0.0000027154, 0.0000027109, + 0.0000027048, 0.0000027004, 0.0000026969, 0.0000026920, 0.0000026856, + 0.0000026791, 0.0000026739, 0.0000026716, 0.0000026691, 0.0000026634, + 0.0000026555, 0.0000026489, 0.0000026465, 0.0000026461, 0.0000026468, + 0.0000026496, 0.0000026522, 0.0000026555, 0.0000026594, 0.0000026642, + 0.0000026695, 0.0000026732, 0.0000026752, 0.0000026742, 0.0000026708, + 0.0000026667, 0.0000026654, 0.0000026658, 0.0000026646, 0.0000026595, + 0.0000026493, 0.0000026320, 0.0000026109, 0.0000025964, 0.0000025912, + 0.0000025922, 0.0000025944, 0.0000025954, 0.0000025922, 0.0000025842, + 0.0000025738, 0.0000025631, 0.0000025534, 0.0000025455, 0.0000025393, + 0.0000025339, 0.0000025297, 0.0000025279, 0.0000025270, 0.0000025254, + 0.0000025248, 0.0000025248, 0.0000025258, 0.0000025264, 0.0000025264, + 0.0000025265, 0.0000025258, 0.0000025247, 0.0000025230, 0.0000025221, + 0.0000025238, 0.0000025258, 0.0000025284, 0.0000025336, 0.0000025390, + 0.0000025434, 0.0000025513, 0.0000025621, 0.0000025641, 0.0000025553, + 0.0000025627, 0.0000025833, 0.0000025827, 0.0000025761, 0.0000025728, + 0.0000025703, 0.0000025702, 0.0000025741, 0.0000025772, 0.0000025786, + 0.0000025792, 0.0000025827, 0.0000025875, 0.0000025878, 0.0000025792, + 0.0000025521, 0.0000025225, 0.0000025109, 0.0000025114, 0.0000025120, + 0.0000025051, 0.0000024936, 0.0000024817, 0.0000024728, 0.0000024818, + 0.0000025047, 0.0000025215, 0.0000025295, 0.0000025324, 0.0000025311, + 0.0000025435, 0.0000025459, 0.0000025232, 0.0000025156, 0.0000025242, + 0.0000025372, 0.0000025423, 0.0000025510, 0.0000025883, 0.0000026228, + 0.0000026411, 0.0000026399, 0.0000026315, 0.0000026197, 0.0000026062, + 0.0000025978, 0.0000025996, 0.0000026007, 0.0000025970, 0.0000025919, + 0.0000025872, 0.0000025864, 0.0000025899, 0.0000025945, 0.0000025981, + 0.0000026020, 0.0000026071, 0.0000026164, 0.0000026247, 0.0000026274, + 0.0000026274, 0.0000026272, 0.0000026260, 0.0000026235, 0.0000026229, + 0.0000026226, 0.0000026223, 0.0000026235, 0.0000026253, 0.0000026279, + 0.0000026324, 0.0000026363, 0.0000026428, 0.0000026572, 0.0000026736, + 0.0000026838, 0.0000026903, 0.0000026918, 0.0000026894, 0.0000026853, + 0.0000026816, 0.0000026836, 0.0000026945, 0.0000027062, 0.0000027145, + 0.0000027194, 0.0000027207, 0.0000027209, 0.0000027194, 0.0000027148, + 0.0000027078, 0.0000027008, 0.0000026939, 0.0000026878, 0.0000026861, + 0.0000026875, 0.0000026914, 0.0000026962, 0.0000027002, 0.0000027048, + 0.0000027097, 0.0000027133, 0.0000027163, 0.0000027193, 0.0000027213, + 0.0000027216, 0.0000027219, 0.0000027228, 0.0000027233, 0.0000027221, + 0.0000027185, 0.0000027136, 0.0000027105, 0.0000027111, 0.0000027134, + 0.0000027143, 0.0000027148, 0.0000027182, 0.0000027201, 0.0000027203, + 0.0000027193, 0.0000027200, 0.0000027273, 0.0000027366, 0.0000027460, + 0.0000027578, 0.0000027701, 0.0000027776, 0.0000027781, 0.0000027742, + 0.0000027712, 0.0000027697, 0.0000027689, 0.0000027709, 0.0000027780, + 0.0000027863, 0.0000027930, 0.0000028006, 0.0000028090, 0.0000028158, + 0.0000028206, 0.0000028228, 0.0000028214, 0.0000028152, 0.0000028067, + 0.0000028007, 0.0000027985, 0.0000027988, 0.0000028013, 0.0000028028, + 0.0000028012, 0.0000028004, 0.0000028002, 0.0000028027, 0.0000028074, + 0.0000028122, 0.0000028147, 0.0000028161, 0.0000028170, 0.0000028167, + 0.0000028130, 0.0000028063, 0.0000027978, 0.0000027885, 0.0000027791, + 0.0000027702, 0.0000027622, 0.0000027559, 0.0000027511, 0.0000027472, + 0.0000027438, 0.0000027416, 0.0000027412, 0.0000027425, 0.0000027454, + 0.0000027490, 0.0000027526, 0.0000027550, 0.0000027556, 0.0000027556, + 0.0000027558, 0.0000027567, 0.0000027591, 0.0000027641, 0.0000027715, + 0.0000027795, 0.0000027863, 0.0000027915, 0.0000027946, 0.0000027952, + 0.0000027947, 0.0000027969, 0.0000028037, 0.0000028108, 0.0000028146, + 0.0000028147, 0.0000028121, 0.0000028082, 0.0000028053, 0.0000028063, + 0.0000028129, 0.0000028220, 0.0000028296, 0.0000028364, 0.0000028413, + 0.0000028430, 0.0000028428, 0.0000028414, 0.0000028386, 0.0000028334, + 0.0000028260, 0.0000028181, 0.0000028111, 0.0000028048, 0.0000027994, + 0.0000027951, 0.0000027930, 0.0000027942, 0.0000028014, 0.0000028106, + 0.0000028140, 0.0000028120, 0.0000028067, 0.0000028045, 0.0000028049, + 0.0000028035, 0.0000028001, 0.0000027986, 0.0000027985, 0.0000027977, + 0.0000027937, 0.0000027881, 0.0000027841, 0.0000027841, 0.0000027883, + 0.0000027930, 0.0000027952, 0.0000027995, 0.0000028080, 0.0000028149, + 0.0000028161, 0.0000028131, 0.0000028086, 0.0000028050, 0.0000028028, + 0.0000028021, 0.0000028012, 0.0000027957, 0.0000027870, 0.0000027838, + 0.0000027867, 0.0000027916, 0.0000027958, 0.0000028045, 0.0000028164, + 0.0000028244, 0.0000028246, 0.0000028193, 0.0000028130, 0.0000028090, + 0.0000028051, 0.0000028002, 0.0000027946, 0.0000027893, 0.0000027856, + 0.0000027812, 0.0000027756, 0.0000027697, 0.0000027654, 0.0000027636, + 0.0000027635, 0.0000027632, 0.0000027628, 0.0000027612, 0.0000027589, + 0.0000027564, 0.0000027545, 0.0000027542, 0.0000027550, 0.0000027575, + 0.0000027626, 0.0000027662, 0.0000027673, 0.0000027674, 0.0000027660, + 0.0000027636, 0.0000027621, 0.0000027633, 0.0000027661, 0.0000027693, + 0.0000027726, 0.0000027754, 0.0000027763, 0.0000027760, 0.0000027747, + 0.0000027726, 0.0000027709, 0.0000027712, 0.0000027729, 0.0000027746, + 0.0000027737, 0.0000027707, 0.0000027662, 0.0000027641, 0.0000027626, + 0.0000027604, 0.0000027578, 0.0000027541, 0.0000027411, 0.0000027110, + 0.0000026723, 0.0000026465, 0.0000026371, 0.0000026368, 0.0000026429, + 0.0000026496, 0.0000026530, 0.0000026590, 0.0000026702, 0.0000026819, + 0.0000026910, 0.0000026960, 0.0000026974, 0.0000026948, 0.0000026905, + 0.0000026847, 0.0000026815, 0.0000026800, 0.0000026778, 0.0000026751, + 0.0000026746, 0.0000026776, 0.0000026829, 0.0000026886, 0.0000026920, + 0.0000026939, 0.0000026985, 0.0000027047, 0.0000027112, 0.0000027171, + 0.0000027221, 0.0000027251, 0.0000027252, 0.0000027218, 0.0000027183, + 0.0000027152, 0.0000027111, 0.0000027074, 0.0000027049, 0.0000027047, + 0.0000027073, 0.0000027100, 0.0000027060, 0.0000026934, 0.0000026630, + 0.0000026207, 0.0000026003, 0.0000026092, 0.0000026421, 0.0000026897, + 0.0000027129, 0.0000027049, 0.0000026984, 0.0000027159, 0.0000027779, + 0.0000028258, 0.0000028335, 0.0000028307, 0.0000028283, 0.0000028313, + 0.0000028344, 0.0000028357, 0.0000028373, 0.0000028403, 0.0000028435, + 0.0000028461, 0.0000028478, 0.0000028499, 0.0000028522, 0.0000028539, + 0.0000028556, 0.0000028551, 0.0000028517, 0.0000028469, 0.0000028401, + 0.0000028325, 0.0000028229, 0.0000028116, 0.0000028032, 0.0000027942, + 0.0000027908, 0.0000027910, 0.0000027887, 0.0000027827, 0.0000027817, + 0.0000027892, 0.0000028030, 0.0000028164, 0.0000028257, 0.0000028306, + 0.0000028292, 0.0000028205, 0.0000028158, 0.0000028152, 0.0000028182, + 0.0000028350, 0.0000028251, 0.0000028281, 0.0000028448, 0.0000028531, + 0.0000028604, 0.0000028744, 0.0000028845, 0.0000028810, 0.0000028911, + 0.0000028997, 0.0000028940, 0.0000028903, 0.0000028910, 0.0000028914, + 0.0000028902, 0.0000028880, 0.0000028854, 0.0000028804, 0.0000028739, + 0.0000028673, 0.0000028590, 0.0000028499, 0.0000028437, 0.0000028401, + 0.0000028343, 0.0000028268, 0.0000028233, 0.0000028239, 0.0000028249, + 0.0000028233, 0.0000028178, 0.0000028140, 0.0000028099, 0.0000027972, + 0.0000027759, 0.0000027537, 0.0000027365, 0.0000027264, 0.0000027227, + 0.0000027237, 0.0000027297, 0.0000027408, 0.0000027528, 0.0000027597, + 0.0000027603, 0.0000027593, 0.0000027604, 0.0000027658, 0.0000027719, + 0.0000027756, 0.0000027795, 0.0000027854, 0.0000027902, 0.0000027926, + 0.0000027921, 0.0000027887, 0.0000027838, 0.0000027794, 0.0000027735, + 0.0000027659, 0.0000027579, 0.0000027484, 0.0000027345, 0.0000027168, + 0.0000026975, 0.0000026794, 0.0000026636, 0.0000026495, 0.0000026364, + 0.0000026248, 0.0000026157, 0.0000026094, 0.0000026044, 0.0000026008, + 0.0000025994, 0.0000026001, 0.0000026012, 0.0000026015, 0.0000026017, + 0.0000026023, 0.0000026046, 0.0000026105, 0.0000026202, 0.0000026311, + 0.0000026394, 0.0000026447, 0.0000026487, 0.0000026538, 0.0000026591, + 0.0000026633, 0.0000026668, 0.0000026704, 0.0000026738, 0.0000026769, + 0.0000026793, 0.0000026801, 0.0000026793, 0.0000026774, 0.0000026760, + 0.0000026758, 0.0000026769, 0.0000026805, 0.0000026890, 0.0000026997, + 0.0000027083, 0.0000027135, 0.0000027149, 0.0000027130, 0.0000027095, + 0.0000027081, 0.0000027110, 0.0000027189, 0.0000027267, 0.0000027308, + 0.0000027308, 0.0000027299, 0.0000027313, 0.0000027385, 0.0000027502, + 0.0000027609, 0.0000027661, 0.0000027663, 0.0000027657, 0.0000027677, + 0.0000027745, 0.0000027839, 0.0000027918, 0.0000027942, 0.0000027916, + 0.0000027818, 0.0000027685, 0.0000027565, 0.0000027491, 0.0000027457, + 0.0000027433, 0.0000027401, 0.0000027380, 0.0000027381, 0.0000027402, + 0.0000027449, 0.0000027520, 0.0000027595, 0.0000027654, 0.0000027699, + 0.0000027742, 0.0000027767, 0.0000027769, 0.0000027744, 0.0000027693, + 0.0000027641, 0.0000027601, 0.0000027572, 0.0000027559, 0.0000027570, + 0.0000027602, 0.0000027650, 0.0000027686, 0.0000027707, 0.0000027677, + 0.0000027576, 0.0000027417, 0.0000027240, 0.0000027084, 0.0000026965, + 0.0000026877, 0.0000026823, 0.0000026806, 0.0000026821, 0.0000026841, + 0.0000026850, 0.0000026838, 0.0000026808, 0.0000026771, 0.0000026745, + 0.0000026740, 0.0000026762, 0.0000026808, 0.0000026856, 0.0000026886, + 0.0000026891, 0.0000026887, 0.0000026883, 0.0000026876, 0.0000026864, + 0.0000026840, 0.0000026807, 0.0000026772, 0.0000026750, 0.0000026746, + 0.0000026745, 0.0000026736, 0.0000026716, 0.0000026691, 0.0000026665, + 0.0000026647, 0.0000026630, 0.0000026593, 0.0000026536, 0.0000026465, + 0.0000026391, 0.0000026324, 0.0000026258, 0.0000026188, 0.0000026119, + 0.0000026079, 0.0000026051, 0.0000026053, 0.0000026085, 0.0000026133, + 0.0000026188, 0.0000026239, 0.0000026272, 0.0000026294, 0.0000026317, + 0.0000026338, 0.0000026363, 0.0000026390, 0.0000026402, 0.0000026392, + 0.0000026362, 0.0000026333, 0.0000026316, 0.0000026310, 0.0000026312, + 0.0000026315, 0.0000026305, 0.0000026268, 0.0000026196, 0.0000026093, + 0.0000025999, 0.0000025916, 0.0000025806, 0.0000025703, 0.0000025638, + 0.0000025622, 0.0000025639, 0.0000025637, 0.0000025594, 0.0000025516, + 0.0000025432, 0.0000025368, 0.0000025354, 0.0000025394, 0.0000025462, + 0.0000025510, 0.0000025547, 0.0000025603, 0.0000025660, 0.0000025728, + 0.0000025760, 0.0000025792, 0.0000025815, 0.0000025829, 0.0000025825, + 0.0000025785, 0.0000025705, 0.0000025611, 0.0000025521, 0.0000025460, + 0.0000025462, 0.0000025536, 0.0000025648, 0.0000025739, 0.0000025791, + 0.0000025833, 0.0000025858, 0.0000025860, 0.0000025943, 0.0000026293, + 0.0000026639, 0.0000026832, 0.0000027172, 0.0000027542, 0.0000027618, + 0.0000027552, 0.0000027531, 0.0000027550, 0.0000027583, 0.0000027611, + 0.0000027665, 0.0000027722, 0.0000027623, 0.0000027386, 0.0000027265, + 0.0000027308, 0.0000027385, 0.0000027372, 0.0000027240, 0.0000027052, + 0.0000026881, 0.0000026797, 0.0000026811, 0.0000026907, 0.0000027002, + 0.0000027024, 0.0000027015, 0.0000027037, 0.0000027056, 0.0000027005, + 0.0000026937, 0.0000026983, 0.0000027158, 0.0000027343, 0.0000027428, + 0.0000027442, 0.0000027402, 0.0000027318, 0.0000027246, 0.0000027217, + 0.0000027195, 0.0000027194, 0.0000027219, 0.0000027265, 0.0000027309, + 0.0000027340, 0.0000027354, 0.0000027339, 0.0000027301, 0.0000027249, + 0.0000027193, 0.0000027155, 0.0000027145, 0.0000027139, 0.0000027127, + 0.0000027107, 0.0000027084, 0.0000027065, 0.0000027050, 0.0000027034, + 0.0000027034, 0.0000027041, 0.0000027013, 0.0000026995, 0.0000026989, + 0.0000026964, 0.0000026907, 0.0000026792, 0.0000026686, 0.0000026660, + 0.0000026659, 0.0000026635, 0.0000026620, 0.0000026631, 0.0000026658, + 0.0000026679, 0.0000026666, 0.0000026625, 0.0000026592, 0.0000026560, + 0.0000026501, 0.0000026419, 0.0000026328, 0.0000026244, 0.0000026195, + 0.0000026188, 0.0000026201, 0.0000026206, 0.0000026178, 0.0000026128, + 0.0000026097, 0.0000026103, 0.0000026138, 0.0000026175, 0.0000026186, + 0.0000026189, 0.0000026193, 0.0000026145, 0.0000026005, 0.0000025905, + 0.0000025883, 0.0000025774, 0.0000025518, 0.0000025280, 0.0000025141, + 0.0000025037, 0.0000024923, 0.0000024806, 0.0000024701, 0.0000024621, + 0.0000024571, 0.0000024548, 0.0000024541, 0.0000024543, 0.0000024552, + 0.0000024554, 0.0000024538, 0.0000024495, 0.0000024442, 0.0000024424, + 0.0000024447, 0.0000024527, 0.0000024642, 0.0000024754, 0.0000024819, + 0.0000024815, 0.0000024767, 0.0000024709, 0.0000024670, 0.0000024692, + 0.0000024805, 0.0000025094, 0.0000025585, 0.0000026078, 0.0000026295, + 0.0000026367, 0.0000026444, 0.0000026559, 0.0000026669, 0.0000026725, + 0.0000026643, 0.0000026485, 0.0000026316, 0.0000026112, 0.0000025833, + 0.0000025739, 0.0000025729, 0.0000025535, 0.0000025330, 0.0000025387, + 0.0000025683, 0.0000026334, 0.0000026861, 0.0000027225, 0.0000027600, + 0.0000027758, 0.0000027775, 0.0000027742, 0.0000027746, 0.0000027730, + 0.0000027701, 0.0000027577, 0.0000027528, 0.0000027528, 0.0000027547, + 0.0000027535, 0.0000027502, 0.0000027551, 0.0000027580, 0.0000027541, + 0.0000027567, 0.0000027574, 0.0000027553, 0.0000027440, 0.0000027318, + 0.0000027338, 0.0000027418, 0.0000027446, 0.0000027441, 0.0000027417, + 0.0000027396, 0.0000027383, 0.0000027361, 0.0000027331, 0.0000027322, + 0.0000027336, 0.0000027376, 0.0000027386, 0.0000027374, 0.0000027348, + 0.0000027311, 0.0000027255, 0.0000027184, 0.0000027118, 0.0000027070, + 0.0000027019, 0.0000026960, 0.0000026900, 0.0000026847, 0.0000026800, + 0.0000026761, 0.0000026731, 0.0000026720, 0.0000026716, 0.0000026687, + 0.0000026622, 0.0000026538, 0.0000026477, 0.0000026451, 0.0000026445, + 0.0000026469, 0.0000026504, 0.0000026547, 0.0000026581, 0.0000026613, + 0.0000026655, 0.0000026700, 0.0000026726, 0.0000026723, 0.0000026691, + 0.0000026647, 0.0000026625, 0.0000026617, 0.0000026591, 0.0000026513, + 0.0000026352, 0.0000026136, 0.0000025960, 0.0000025900, 0.0000025912, + 0.0000025928, 0.0000025927, 0.0000025879, 0.0000025792, 0.0000025682, + 0.0000025578, 0.0000025486, 0.0000025408, 0.0000025352, 0.0000025311, + 0.0000025285, 0.0000025288, 0.0000025299, 0.0000025307, 0.0000025301, + 0.0000025289, 0.0000025286, 0.0000025292, 0.0000025303, 0.0000025315, + 0.0000025326, 0.0000025330, 0.0000025333, 0.0000025328, 0.0000025326, + 0.0000025345, 0.0000025366, 0.0000025386, 0.0000025411, 0.0000025421, + 0.0000025425, 0.0000025458, 0.0000025548, 0.0000025638, 0.0000025587, + 0.0000025529, 0.0000025704, 0.0000025796, 0.0000025742, 0.0000025702, + 0.0000025712, 0.0000025747, 0.0000025781, 0.0000025825, 0.0000025849, + 0.0000025822, 0.0000025782, 0.0000025777, 0.0000025805, 0.0000025809, + 0.0000025765, 0.0000025606, 0.0000025345, 0.0000025156, 0.0000025109, + 0.0000025115, 0.0000025074, 0.0000024973, 0.0000024846, 0.0000024736, + 0.0000024777, 0.0000025007, 0.0000025193, 0.0000025287, 0.0000025329, + 0.0000025305, 0.0000025379, 0.0000025471, 0.0000025283, 0.0000025143, + 0.0000025183, 0.0000025290, 0.0000025379, 0.0000025399, 0.0000025673, + 0.0000026105, 0.0000026364, 0.0000026411, 0.0000026354, 0.0000026249, + 0.0000026125, 0.0000026019, 0.0000026004, 0.0000026017, 0.0000025987, + 0.0000025917, 0.0000025842, 0.0000025809, 0.0000025842, 0.0000025906, + 0.0000025950, 0.0000025978, 0.0000026012, 0.0000026096, 0.0000026189, + 0.0000026226, 0.0000026228, 0.0000026223, 0.0000026213, 0.0000026205, + 0.0000026203, 0.0000026196, 0.0000026189, 0.0000026195, 0.0000026200, + 0.0000026227, 0.0000026304, 0.0000026377, 0.0000026459, 0.0000026611, + 0.0000026766, 0.0000026841, 0.0000026873, 0.0000026868, 0.0000026830, + 0.0000026769, 0.0000026712, 0.0000026713, 0.0000026782, 0.0000026853, + 0.0000026911, 0.0000026952, 0.0000026962, 0.0000026953, 0.0000026931, + 0.0000026892, 0.0000026852, 0.0000026839, 0.0000026826, 0.0000026823, + 0.0000026841, 0.0000026872, 0.0000026922, 0.0000026966, 0.0000026991, + 0.0000027015, 0.0000027047, 0.0000027077, 0.0000027095, 0.0000027113, + 0.0000027138, 0.0000027149, 0.0000027151, 0.0000027161, 0.0000027171, + 0.0000027161, 0.0000027119, 0.0000027079, 0.0000027054, 0.0000027072, + 0.0000027115, 0.0000027138, 0.0000027141, 0.0000027146, 0.0000027133, + 0.0000027105, 0.0000027075, 0.0000027075, 0.0000027149, 0.0000027249, + 0.0000027359, 0.0000027486, 0.0000027616, 0.0000027714, 0.0000027743, + 0.0000027726, 0.0000027706, 0.0000027698, 0.0000027683, 0.0000027686, + 0.0000027724, 0.0000027806, 0.0000027892, 0.0000027978, 0.0000028061, + 0.0000028126, 0.0000028167, 0.0000028182, 0.0000028165, 0.0000028095, + 0.0000027994, 0.0000027920, 0.0000027905, 0.0000027947, 0.0000027998, + 0.0000028003, 0.0000027969, 0.0000027964, 0.0000027981, 0.0000028031, + 0.0000028088, 0.0000028131, 0.0000028141, 0.0000028132, 0.0000028121, + 0.0000028105, 0.0000028064, 0.0000027995, 0.0000027906, 0.0000027806, + 0.0000027704, 0.0000027608, 0.0000027525, 0.0000027462, 0.0000027418, + 0.0000027385, 0.0000027356, 0.0000027338, 0.0000027337, 0.0000027357, + 0.0000027391, 0.0000027427, 0.0000027465, 0.0000027490, 0.0000027490, + 0.0000027477, 0.0000027460, 0.0000027443, 0.0000027433, 0.0000027448, + 0.0000027499, 0.0000027574, 0.0000027658, 0.0000027738, 0.0000027812, + 0.0000027858, 0.0000027868, 0.0000027879, 0.0000027934, 0.0000028016, + 0.0000028081, 0.0000028109, 0.0000028105, 0.0000028076, 0.0000028043, + 0.0000028035, 0.0000028068, 0.0000028144, 0.0000028209, 0.0000028267, + 0.0000028331, 0.0000028387, 0.0000028425, 0.0000028437, 0.0000028435, + 0.0000028441, 0.0000028442, 0.0000028416, 0.0000028340, 0.0000028229, + 0.0000028114, 0.0000028009, 0.0000027937, 0.0000027919, 0.0000027962, + 0.0000028061, 0.0000028126, 0.0000028122, 0.0000028078, 0.0000028047, + 0.0000028054, 0.0000028055, 0.0000028014, 0.0000027954, 0.0000027926, + 0.0000027924, 0.0000027903, 0.0000027873, 0.0000027846, 0.0000027821, + 0.0000027811, 0.0000027858, 0.0000027948, 0.0000028010, 0.0000028045, + 0.0000028102, 0.0000028155, 0.0000028159, 0.0000028118, 0.0000028067, + 0.0000028037, 0.0000028018, 0.0000027998, 0.0000027962, 0.0000027884, + 0.0000027806, 0.0000027797, 0.0000027833, 0.0000027865, 0.0000027937, + 0.0000028072, 0.0000028187, 0.0000028216, 0.0000028189, 0.0000028137, + 0.0000028117, 0.0000028102, 0.0000028060, 0.0000028001, 0.0000027946, + 0.0000027904, 0.0000027861, 0.0000027803, 0.0000027737, 0.0000027675, + 0.0000027632, 0.0000027602, 0.0000027581, 0.0000027570, 0.0000027559, + 0.0000027545, 0.0000027534, 0.0000027530, 0.0000027533, 0.0000027537, + 0.0000027551, 0.0000027585, 0.0000027621, 0.0000027632, 0.0000027628, + 0.0000027616, 0.0000027591, 0.0000027577, 0.0000027585, 0.0000027618, + 0.0000027661, 0.0000027704, 0.0000027751, 0.0000027781, 0.0000027792, + 0.0000027794, 0.0000027778, 0.0000027755, 0.0000027738, 0.0000027744, + 0.0000027766, 0.0000027783, 0.0000027774, 0.0000027751, 0.0000027725, + 0.0000027712, 0.0000027683, 0.0000027642, 0.0000027597, 0.0000027505, + 0.0000027274, 0.0000026928, 0.0000026611, 0.0000026438, 0.0000026377, + 0.0000026377, 0.0000026436, 0.0000026489, 0.0000026514, 0.0000026575, + 0.0000026694, 0.0000026815, 0.0000026907, 0.0000026956, 0.0000026973, + 0.0000026951, 0.0000026897, 0.0000026830, 0.0000026772, 0.0000026729, + 0.0000026673, 0.0000026634, 0.0000026630, 0.0000026659, 0.0000026716, + 0.0000026791, 0.0000026855, 0.0000026898, 0.0000026941, 0.0000026978, + 0.0000027008, 0.0000027050, 0.0000027118, 0.0000027186, 0.0000027215, + 0.0000027195, 0.0000027166, 0.0000027144, 0.0000027110, 0.0000027074, + 0.0000027041, 0.0000027018, 0.0000027022, 0.0000027056, 0.0000027052, + 0.0000026989, 0.0000026851, 0.0000026559, 0.0000026170, 0.0000026064, + 0.0000026181, 0.0000026530, 0.0000026916, 0.0000027049, 0.0000026978, + 0.0000027020, 0.0000027425, 0.0000028090, 0.0000028332, 0.0000028331, + 0.0000028288, 0.0000028313, 0.0000028360, 0.0000028384, 0.0000028387, + 0.0000028394, 0.0000028387, 0.0000028381, 0.0000028371, 0.0000028361, + 0.0000028365, 0.0000028377, 0.0000028403, 0.0000028422, 0.0000028425, + 0.0000028420, 0.0000028390, 0.0000028341, 0.0000028265, 0.0000028157, + 0.0000028073, 0.0000027987, 0.0000027923, 0.0000027920, 0.0000027922, + 0.0000027884, 0.0000027829, 0.0000027831, 0.0000027915, 0.0000028042, + 0.0000028177, 0.0000028275, 0.0000028308, 0.0000028260, 0.0000028159, + 0.0000028144, 0.0000028141, 0.0000028260, 0.0000028299, 0.0000028206, + 0.0000028351, 0.0000028473, 0.0000028556, 0.0000028645, 0.0000028775, + 0.0000028797, 0.0000028823, 0.0000028959, 0.0000028951, 0.0000028883, + 0.0000028857, 0.0000028861, 0.0000028863, 0.0000028842, 0.0000028812, + 0.0000028765, 0.0000028699, 0.0000028637, 0.0000028579, 0.0000028514, + 0.0000028448, 0.0000028374, 0.0000028294, 0.0000028242, 0.0000028235, + 0.0000028244, 0.0000028237, 0.0000028199, 0.0000028150, 0.0000028111, + 0.0000027998, 0.0000027793, 0.0000027567, 0.0000027373, 0.0000027234, + 0.0000027152, 0.0000027118, 0.0000027146, 0.0000027253, 0.0000027399, + 0.0000027528, 0.0000027585, 0.0000027585, 0.0000027581, 0.0000027598, + 0.0000027653, 0.0000027719, 0.0000027761, 0.0000027802, 0.0000027855, + 0.0000027892, 0.0000027897, 0.0000027875, 0.0000027831, 0.0000027786, + 0.0000027719, 0.0000027615, 0.0000027516, 0.0000027430, 0.0000027312, + 0.0000027157, 0.0000026994, 0.0000026834, 0.0000026682, 0.0000026541, + 0.0000026408, 0.0000026285, 0.0000026186, 0.0000026112, 0.0000026064, + 0.0000026029, 0.0000026004, 0.0000026002, 0.0000026029, 0.0000026076, + 0.0000026112, 0.0000026125, 0.0000026116, 0.0000026099, 0.0000026105, + 0.0000026167, 0.0000026276, 0.0000026402, 0.0000026520, 0.0000026606, + 0.0000026669, 0.0000026730, 0.0000026789, 0.0000026830, 0.0000026853, + 0.0000026873, 0.0000026901, 0.0000026934, 0.0000026964, 0.0000026976, + 0.0000026964, 0.0000026920, 0.0000026861, 0.0000026806, 0.0000026766, + 0.0000026743, 0.0000026748, 0.0000026798, 0.0000026897, 0.0000027004, + 0.0000027079, 0.0000027118, 0.0000027112, 0.0000027075, 0.0000027045, + 0.0000027062, 0.0000027142, 0.0000027246, 0.0000027315, 0.0000027324, + 0.0000027291, 0.0000027272, 0.0000027323, 0.0000027441, 0.0000027554, + 0.0000027603, 0.0000027601, 0.0000027590, 0.0000027605, 0.0000027683, + 0.0000027805, 0.0000027920, 0.0000027973, 0.0000027954, 0.0000027875, + 0.0000027767, 0.0000027670, 0.0000027611, 0.0000027573, 0.0000027531, + 0.0000027478, 0.0000027431, 0.0000027404, 0.0000027400, 0.0000027436, + 0.0000027510, 0.0000027588, 0.0000027639, 0.0000027662, 0.0000027685, + 0.0000027727, 0.0000027767, 0.0000027776, 0.0000027748, 0.0000027696, + 0.0000027636, 0.0000027581, 0.0000027553, 0.0000027561, 0.0000027602, + 0.0000027657, 0.0000027703, 0.0000027710, 0.0000027672, 0.0000027575, + 0.0000027450, 0.0000027330, 0.0000027220, 0.0000027119, 0.0000027036, + 0.0000026978, 0.0000026939, 0.0000026912, 0.0000026897, 0.0000026883, + 0.0000026858, 0.0000026825, 0.0000026794, 0.0000026775, 0.0000026782, + 0.0000026818, 0.0000026869, 0.0000026913, 0.0000026935, 0.0000026936, + 0.0000026931, 0.0000026914, 0.0000026891, 0.0000026861, 0.0000026824, + 0.0000026794, 0.0000026787, 0.0000026797, 0.0000026802, 0.0000026785, + 0.0000026760, 0.0000026746, 0.0000026751, 0.0000026775, 0.0000026803, + 0.0000026811, 0.0000026786, 0.0000026731, 0.0000026658, 0.0000026572, + 0.0000026475, 0.0000026371, 0.0000026262, 0.0000026163, 0.0000026090, + 0.0000026050, 0.0000026065, 0.0000026078, 0.0000026111, 0.0000026134, + 0.0000026150, 0.0000026167, 0.0000026190, 0.0000026219, 0.0000026260, + 0.0000026310, 0.0000026349, 0.0000026368, 0.0000026360, 0.0000026347, + 0.0000026337, 0.0000026328, 0.0000026327, 0.0000026332, 0.0000026333, + 0.0000026316, 0.0000026269, 0.0000026202, 0.0000026138, 0.0000026090, + 0.0000026030, 0.0000025967, 0.0000025909, 0.0000025866, 0.0000025842, + 0.0000025831, 0.0000025789, 0.0000025712, 0.0000025625, 0.0000025568, + 0.0000025560, 0.0000025604, 0.0000025677, 0.0000025737, 0.0000025787, + 0.0000025834, 0.0000025867, 0.0000025868, 0.0000025826, 0.0000025760, + 0.0000025687, 0.0000025669, 0.0000025685, 0.0000025696, 0.0000025669, + 0.0000025590, 0.0000025485, 0.0000025386, 0.0000025320, 0.0000025317, + 0.0000025407, 0.0000025559, 0.0000025689, 0.0000025769, 0.0000025818, + 0.0000025836, 0.0000025923, 0.0000026263, 0.0000026637, 0.0000026870, + 0.0000027208, 0.0000027539, 0.0000027598, 0.0000027549, 0.0000027543, + 0.0000027565, 0.0000027588, 0.0000027606, 0.0000027655, 0.0000027673, + 0.0000027529, 0.0000027310, 0.0000027246, 0.0000027297, 0.0000027376, + 0.0000027363, 0.0000027240, 0.0000027093, 0.0000026953, 0.0000026849, + 0.0000026815, 0.0000026848, 0.0000026930, 0.0000026998, 0.0000027000, + 0.0000026982, 0.0000027007, 0.0000027022, 0.0000026956, 0.0000026905, + 0.0000026985, 0.0000027211, 0.0000027398, 0.0000027458, 0.0000027455, + 0.0000027394, 0.0000027310, 0.0000027259, 0.0000027225, 0.0000027202, + 0.0000027194, 0.0000027211, 0.0000027229, 0.0000027241, 0.0000027248, + 0.0000027251, 0.0000027239, 0.0000027233, 0.0000027212, 0.0000027202, + 0.0000027203, 0.0000027203, 0.0000027186, 0.0000027151, 0.0000027111, + 0.0000027080, 0.0000027069, 0.0000027062, 0.0000027060, 0.0000027077, + 0.0000027066, 0.0000027057, 0.0000027022, 0.0000026946, 0.0000026845, + 0.0000026739, 0.0000026665, 0.0000026652, 0.0000026649, 0.0000026630, + 0.0000026622, 0.0000026633, 0.0000026657, 0.0000026673, 0.0000026664, + 0.0000026629, 0.0000026598, 0.0000026567, 0.0000026514, 0.0000026437, + 0.0000026344, 0.0000026249, 0.0000026189, 0.0000026179, 0.0000026191, + 0.0000026195, 0.0000026174, 0.0000026134, 0.0000026101, 0.0000026092, + 0.0000026104, 0.0000026128, 0.0000026144, 0.0000026149, 0.0000026162, + 0.0000026168, 0.0000026092, 0.0000025955, 0.0000025888, 0.0000025857, + 0.0000025686, 0.0000025417, 0.0000025236, 0.0000025147, 0.0000025049, + 0.0000024915, 0.0000024772, 0.0000024642, 0.0000024546, 0.0000024489, + 0.0000024458, 0.0000024446, 0.0000024445, 0.0000024445, 0.0000024445, + 0.0000024434, 0.0000024403, 0.0000024355, 0.0000024306, 0.0000024296, + 0.0000024332, 0.0000024429, 0.0000024555, 0.0000024665, 0.0000024722, + 0.0000024718, 0.0000024681, 0.0000024644, 0.0000024643, 0.0000024685, + 0.0000024848, 0.0000025241, 0.0000025832, 0.0000026211, 0.0000026324, + 0.0000026397, 0.0000026503, 0.0000026615, 0.0000026689, 0.0000026627, + 0.0000026473, 0.0000026302, 0.0000026134, 0.0000025918, 0.0000025704, + 0.0000025692, 0.0000025658, 0.0000025412, 0.0000025322, 0.0000025444, + 0.0000025969, 0.0000026587, 0.0000027072, 0.0000027506, 0.0000027751, + 0.0000027778, 0.0000027749, 0.0000027755, 0.0000027734, 0.0000027691, + 0.0000027585, 0.0000027528, 0.0000027510, 0.0000027525, 0.0000027534, + 0.0000027527, 0.0000027584, 0.0000027572, 0.0000027517, 0.0000027534, + 0.0000027544, 0.0000027528, 0.0000027426, 0.0000027316, 0.0000027344, + 0.0000027425, 0.0000027461, 0.0000027464, 0.0000027452, 0.0000027428, + 0.0000027386, 0.0000027342, 0.0000027311, 0.0000027305, 0.0000027325, + 0.0000027373, 0.0000027392, 0.0000027390, 0.0000027369, 0.0000027326, + 0.0000027271, 0.0000027193, 0.0000027104, 0.0000027042, 0.0000026995, + 0.0000026943, 0.0000026869, 0.0000026787, 0.0000026735, 0.0000026716, + 0.0000026714, 0.0000026718, 0.0000026723, 0.0000026713, 0.0000026684, + 0.0000026627, 0.0000026553, 0.0000026486, 0.0000026445, 0.0000026452, + 0.0000026485, 0.0000026539, 0.0000026579, 0.0000026607, 0.0000026637, + 0.0000026679, 0.0000026706, 0.0000026704, 0.0000026670, 0.0000026623, + 0.0000026598, 0.0000026583, 0.0000026537, 0.0000026405, 0.0000026180, + 0.0000025976, 0.0000025891, 0.0000025899, 0.0000025915, 0.0000025898, + 0.0000025834, 0.0000025737, 0.0000025636, 0.0000025543, 0.0000025468, + 0.0000025397, 0.0000025329, 0.0000025284, 0.0000025265, 0.0000025272, + 0.0000025315, 0.0000025368, 0.0000025404, 0.0000025412, 0.0000025405, + 0.0000025396, 0.0000025386, 0.0000025380, 0.0000025384, 0.0000025388, + 0.0000025386, 0.0000025381, 0.0000025377, 0.0000025392, 0.0000025402, + 0.0000025421, 0.0000025440, 0.0000025469, 0.0000025475, 0.0000025464, + 0.0000025456, 0.0000025490, 0.0000025598, 0.0000025622, 0.0000025521, + 0.0000025545, 0.0000025723, 0.0000025723, 0.0000025680, 0.0000025709, + 0.0000025760, 0.0000025787, 0.0000025811, 0.0000025863, 0.0000025883, + 0.0000025842, 0.0000025763, 0.0000025722, 0.0000025723, 0.0000025721, + 0.0000025689, 0.0000025604, 0.0000025468, 0.0000025284, 0.0000025145, + 0.0000025106, 0.0000025078, 0.0000025005, 0.0000024882, 0.0000024741, + 0.0000024749, 0.0000024952, 0.0000025160, 0.0000025275, 0.0000025324, + 0.0000025319, 0.0000025333, 0.0000025441, 0.0000025334, 0.0000025125, + 0.0000025127, 0.0000025208, 0.0000025314, 0.0000025336, 0.0000025479, + 0.0000025927, 0.0000026287, 0.0000026409, 0.0000026386, 0.0000026297, + 0.0000026188, 0.0000026075, 0.0000026004, 0.0000026010, 0.0000025988, + 0.0000025909, 0.0000025818, 0.0000025766, 0.0000025795, 0.0000025877, + 0.0000025941, 0.0000025968, 0.0000025987, 0.0000026048, 0.0000026132, + 0.0000026178, 0.0000026180, 0.0000026179, 0.0000026179, 0.0000026179, + 0.0000026174, 0.0000026170, 0.0000026159, 0.0000026155, 0.0000026154, + 0.0000026214, 0.0000026337, 0.0000026413, 0.0000026491, 0.0000026633, + 0.0000026762, 0.0000026808, 0.0000026818, 0.0000026806, 0.0000026764, + 0.0000026696, 0.0000026638, 0.0000026639, 0.0000026668, 0.0000026696, + 0.0000026725, 0.0000026748, 0.0000026754, 0.0000026739, 0.0000026727, + 0.0000026724, 0.0000026750, 0.0000026792, 0.0000026823, 0.0000026849, + 0.0000026878, 0.0000026906, 0.0000026930, 0.0000026948, 0.0000026953, + 0.0000026957, 0.0000026979, 0.0000027013, 0.0000027038, 0.0000027053, + 0.0000027079, 0.0000027104, 0.0000027118, 0.0000027124, 0.0000027132, + 0.0000027123, 0.0000027088, 0.0000027055, 0.0000027038, 0.0000027053, + 0.0000027081, 0.0000027102, 0.0000027100, 0.0000027082, 0.0000027049, + 0.0000027003, 0.0000026959, 0.0000026944, 0.0000027008, 0.0000027111, + 0.0000027234, 0.0000027384, 0.0000027526, 0.0000027632, 0.0000027689, + 0.0000027706, 0.0000027704, 0.0000027701, 0.0000027682, 0.0000027663, + 0.0000027682, 0.0000027747, 0.0000027829, 0.0000027910, 0.0000027994, + 0.0000028066, 0.0000028112, 0.0000028122, 0.0000028102, 0.0000028026, + 0.0000027921, 0.0000027848, 0.0000027840, 0.0000027895, 0.0000027949, + 0.0000027945, 0.0000027918, 0.0000027935, 0.0000027969, 0.0000028014, + 0.0000028053, 0.0000028078, 0.0000028080, 0.0000028062, 0.0000028037, + 0.0000028010, 0.0000027971, 0.0000027911, 0.0000027833, 0.0000027744, + 0.0000027649, 0.0000027557, 0.0000027478, 0.0000027413, 0.0000027361, + 0.0000027322, 0.0000027290, 0.0000027267, 0.0000027265, 0.0000027287, + 0.0000027331, 0.0000027375, 0.0000027420, 0.0000027453, 0.0000027459, + 0.0000027449, 0.0000027428, 0.0000027395, 0.0000027363, 0.0000027352, + 0.0000027373, 0.0000027420, 0.0000027480, 0.0000027543, 0.0000027617, + 0.0000027696, 0.0000027758, 0.0000027806, 0.0000027870, 0.0000027953, + 0.0000028026, 0.0000028074, 0.0000028087, 0.0000028065, 0.0000028028, + 0.0000028010, 0.0000028024, 0.0000028084, 0.0000028145, 0.0000028187, + 0.0000028224, 0.0000028274, 0.0000028333, 0.0000028381, 0.0000028410, + 0.0000028433, 0.0000028468, 0.0000028508, 0.0000028519, 0.0000028453, + 0.0000028333, 0.0000028182, 0.0000028035, 0.0000027943, 0.0000027934, + 0.0000027992, 0.0000028060, 0.0000028082, 0.0000028049, 0.0000028005, + 0.0000028019, 0.0000028053, 0.0000028041, 0.0000027975, 0.0000027902, + 0.0000027870, 0.0000027853, 0.0000027845, 0.0000027847, 0.0000027845, + 0.0000027823, 0.0000027808, 0.0000027862, 0.0000027985, 0.0000028063, + 0.0000028080, 0.0000028114, 0.0000028163, 0.0000028171, 0.0000028122, + 0.0000028062, 0.0000028028, 0.0000028001, 0.0000027965, 0.0000027908, + 0.0000027821, 0.0000027767, 0.0000027777, 0.0000027796, 0.0000027832, + 0.0000027947, 0.0000028091, 0.0000028166, 0.0000028165, 0.0000028133, + 0.0000028121, 0.0000028125, 0.0000028099, 0.0000028045, 0.0000027994, + 0.0000027950, 0.0000027909, 0.0000027854, 0.0000027785, 0.0000027709, + 0.0000027646, 0.0000027590, 0.0000027543, 0.0000027514, 0.0000027503, + 0.0000027503, 0.0000027508, 0.0000027519, 0.0000027532, 0.0000027545, + 0.0000027559, 0.0000027574, 0.0000027606, 0.0000027621, 0.0000027611, + 0.0000027591, 0.0000027564, 0.0000027540, 0.0000027540, 0.0000027570, + 0.0000027619, 0.0000027668, 0.0000027722, 0.0000027772, 0.0000027801, + 0.0000027816, 0.0000027818, 0.0000027806, 0.0000027785, 0.0000027771, + 0.0000027775, 0.0000027792, 0.0000027801, 0.0000027792, 0.0000027784, + 0.0000027777, 0.0000027765, 0.0000027728, 0.0000027675, 0.0000027593, + 0.0000027427, 0.0000027145, 0.0000026819, 0.0000026565, 0.0000026435, + 0.0000026380, 0.0000026386, 0.0000026435, 0.0000026472, 0.0000026497, + 0.0000026568, 0.0000026694, 0.0000026816, 0.0000026908, 0.0000026959, + 0.0000026982, 0.0000026972, 0.0000026929, 0.0000026870, 0.0000026801, + 0.0000026728, 0.0000026651, 0.0000026588, 0.0000026568, 0.0000026582, + 0.0000026626, 0.0000026698, 0.0000026778, 0.0000026843, 0.0000026899, + 0.0000026934, 0.0000026947, 0.0000026962, 0.0000027011, 0.0000027085, + 0.0000027146, 0.0000027166, 0.0000027158, 0.0000027144, 0.0000027107, + 0.0000027068, 0.0000027031, 0.0000026997, 0.0000026987, 0.0000027001, + 0.0000027011, 0.0000026983, 0.0000026933, 0.0000026847, 0.0000026519, + 0.0000026156, 0.0000026097, 0.0000026249, 0.0000026575, 0.0000026911, + 0.0000026976, 0.0000026958, 0.0000027156, 0.0000027765, 0.0000028252, + 0.0000028334, 0.0000028303, 0.0000028295, 0.0000028351, 0.0000028398, + 0.0000028410, 0.0000028408, 0.0000028381, 0.0000028350, 0.0000028316, + 0.0000028283, 0.0000028267, 0.0000028268, 0.0000028284, 0.0000028301, + 0.0000028308, 0.0000028322, 0.0000028329, 0.0000028322, 0.0000028271, + 0.0000028175, 0.0000028089, 0.0000028012, 0.0000027956, 0.0000027948, + 0.0000027941, 0.0000027925, 0.0000027877, 0.0000027827, 0.0000027849, + 0.0000027922, 0.0000028052, 0.0000028202, 0.0000028297, 0.0000028306, + 0.0000028206, 0.0000028140, 0.0000028140, 0.0000028161, 0.0000028288, + 0.0000028198, 0.0000028236, 0.0000028392, 0.0000028496, 0.0000028573, + 0.0000028678, 0.0000028772, 0.0000028771, 0.0000028868, 0.0000028949, + 0.0000028906, 0.0000028841, 0.0000028809, 0.0000028799, 0.0000028779, + 0.0000028751, 0.0000028714, 0.0000028659, 0.0000028606, 0.0000028565, + 0.0000028505, 0.0000028421, 0.0000028322, 0.0000028254, 0.0000028233, + 0.0000028237, 0.0000028240, 0.0000028223, 0.0000028180, 0.0000028138, + 0.0000028047, 0.0000027852, 0.0000027629, 0.0000027435, 0.0000027269, + 0.0000027147, 0.0000027083, 0.0000027066, 0.0000027113, 0.0000027242, + 0.0000027422, 0.0000027552, 0.0000027591, 0.0000027587, 0.0000027589, + 0.0000027617, 0.0000027662, 0.0000027707, 0.0000027748, 0.0000027801, + 0.0000027850, 0.0000027871, 0.0000027861, 0.0000027823, 0.0000027779, + 0.0000027733, 0.0000027634, 0.0000027491, 0.0000027368, 0.0000027244, + 0.0000027086, 0.0000026930, 0.0000026798, 0.0000026664, 0.0000026526, + 0.0000026399, 0.0000026284, 0.0000026172, 0.0000026079, 0.0000026016, + 0.0000025982, 0.0000025968, 0.0000025963, 0.0000025969, 0.0000026009, + 0.0000026085, 0.0000026175, 0.0000026251, 0.0000026301, 0.0000026315, + 0.0000026309, 0.0000026309, 0.0000026342, 0.0000026419, 0.0000026533, + 0.0000026655, 0.0000026751, 0.0000026822, 0.0000026868, 0.0000026879, + 0.0000026878, 0.0000026885, 0.0000026912, 0.0000026960, 0.0000027017, + 0.0000027077, 0.0000027127, 0.0000027156, 0.0000027144, 0.0000027083, + 0.0000027008, 0.0000026942, 0.0000026882, 0.0000026825, 0.0000026783, + 0.0000026775, 0.0000026812, 0.0000026880, 0.0000026979, 0.0000027051, + 0.0000027078, 0.0000027075, 0.0000027051, 0.0000027044, 0.0000027089, + 0.0000027188, 0.0000027289, 0.0000027325, 0.0000027296, 0.0000027263, + 0.0000027285, 0.0000027374, 0.0000027481, 0.0000027539, 0.0000027532, + 0.0000027509, 0.0000027527, 0.0000027618, 0.0000027749, 0.0000027871, + 0.0000027940, 0.0000027953, 0.0000027920, 0.0000027851, 0.0000027774, + 0.0000027715, 0.0000027669, 0.0000027620, 0.0000027567, 0.0000027511, + 0.0000027454, 0.0000027427, 0.0000027434, 0.0000027487, 0.0000027563, + 0.0000027614, 0.0000027634, 0.0000027650, 0.0000027695, 0.0000027747, + 0.0000027766, 0.0000027760, 0.0000027717, 0.0000027645, 0.0000027577, + 0.0000027551, 0.0000027561, 0.0000027606, 0.0000027658, 0.0000027690, + 0.0000027683, 0.0000027648, 0.0000027585, 0.0000027508, 0.0000027423, + 0.0000027340, 0.0000027263, 0.0000027200, 0.0000027145, 0.0000027094, + 0.0000027041, 0.0000026983, 0.0000026920, 0.0000026868, 0.0000026828, + 0.0000026806, 0.0000026805, 0.0000026822, 0.0000026855, 0.0000026905, + 0.0000026948, 0.0000026975, 0.0000026975, 0.0000026957, 0.0000026930, + 0.0000026893, 0.0000026846, 0.0000026813, 0.0000026810, 0.0000026832, + 0.0000026849, 0.0000026838, 0.0000026815, 0.0000026805, 0.0000026816, + 0.0000026856, 0.0000026903, 0.0000026929, 0.0000026924, 0.0000026896, + 0.0000026858, 0.0000026810, 0.0000026743, 0.0000026656, 0.0000026552, + 0.0000026438, 0.0000026331, 0.0000026246, 0.0000026192, 0.0000026163, + 0.0000026145, 0.0000026125, 0.0000026118, 0.0000026106, 0.0000026102, + 0.0000026113, 0.0000026134, 0.0000026179, 0.0000026225, 0.0000026262, + 0.0000026283, 0.0000026293, 0.0000026295, 0.0000026296, 0.0000026299, + 0.0000026301, 0.0000026301, 0.0000026298, 0.0000026279, 0.0000026243, + 0.0000026219, 0.0000026206, 0.0000026193, 0.0000026182, 0.0000026151, + 0.0000026105, 0.0000026072, 0.0000026055, 0.0000026029, 0.0000025972, + 0.0000025904, 0.0000025858, 0.0000025849, 0.0000025880, 0.0000025930, + 0.0000025966, 0.0000025991, 0.0000026012, 0.0000026018, 0.0000026009, + 0.0000025964, 0.0000025842, 0.0000025676, 0.0000025559, 0.0000025541, + 0.0000025573, 0.0000025596, 0.0000025575, 0.0000025494, 0.0000025372, + 0.0000025251, 0.0000025171, 0.0000025186, 0.0000025336, 0.0000025544, + 0.0000025693, 0.0000025778, 0.0000025817, 0.0000025907, 0.0000026226, + 0.0000026627, 0.0000026914, 0.0000027260, 0.0000027559, 0.0000027584, + 0.0000027542, 0.0000027548, 0.0000027566, 0.0000027577, 0.0000027596, + 0.0000027644, 0.0000027630, 0.0000027440, 0.0000027268, 0.0000027246, + 0.0000027293, 0.0000027356, 0.0000027340, 0.0000027235, 0.0000027125, + 0.0000027031, 0.0000026945, 0.0000026881, 0.0000026863, 0.0000026897, + 0.0000026957, 0.0000026988, 0.0000026967, 0.0000026953, 0.0000026989, + 0.0000026987, 0.0000026915, 0.0000026893, 0.0000027044, 0.0000027295, + 0.0000027444, 0.0000027471, 0.0000027448, 0.0000027378, 0.0000027310, + 0.0000027258, 0.0000027228, 0.0000027217, 0.0000027216, 0.0000027219, + 0.0000027212, 0.0000027214, 0.0000027229, 0.0000027243, 0.0000027259, + 0.0000027263, 0.0000027267, 0.0000027261, 0.0000027251, 0.0000027216, + 0.0000027156, 0.0000027094, 0.0000027059, 0.0000027066, 0.0000027081, + 0.0000027088, 0.0000027118, 0.0000027120, 0.0000027104, 0.0000027043, + 0.0000026903, 0.0000026783, 0.0000026714, 0.0000026670, 0.0000026651, + 0.0000026641, 0.0000026627, 0.0000026628, 0.0000026639, 0.0000026661, + 0.0000026675, 0.0000026662, 0.0000026629, 0.0000026604, 0.0000026574, + 0.0000026524, 0.0000026459, 0.0000026373, 0.0000026274, 0.0000026202, + 0.0000026190, 0.0000026201, 0.0000026204, 0.0000026185, 0.0000026155, + 0.0000026126, 0.0000026108, 0.0000026100, 0.0000026095, 0.0000026097, + 0.0000026100, 0.0000026112, 0.0000026135, 0.0000026133, 0.0000026041, + 0.0000025916, 0.0000025872, 0.0000025821, 0.0000025604, 0.0000025350, + 0.0000025224, 0.0000025153, 0.0000025039, 0.0000024887, 0.0000024732, + 0.0000024593, 0.0000024495, 0.0000024439, 0.0000024407, 0.0000024395, + 0.0000024395, 0.0000024395, 0.0000024395, 0.0000024392, 0.0000024377, + 0.0000024342, 0.0000024292, 0.0000024249, 0.0000024244, 0.0000024286, + 0.0000024362, 0.0000024455, 0.0000024546, 0.0000024602, 0.0000024610, + 0.0000024601, 0.0000024604, 0.0000024649, 0.0000024742, 0.0000024992, + 0.0000025550, 0.0000026078, 0.0000026269, 0.0000026342, 0.0000026446, + 0.0000026551, 0.0000026634, 0.0000026607, 0.0000026463, 0.0000026300, + 0.0000026148, 0.0000025991, 0.0000025753, 0.0000025603, 0.0000025650, + 0.0000025562, 0.0000025340, 0.0000025363, 0.0000025644, 0.0000026308, + 0.0000026918, 0.0000027408, 0.0000027739, 0.0000027783, 0.0000027757, + 0.0000027756, 0.0000027735, 0.0000027682, 0.0000027605, 0.0000027524, + 0.0000027499, 0.0000027521, 0.0000027544, 0.0000027560, 0.0000027614, + 0.0000027563, 0.0000027498, 0.0000027499, 0.0000027518, 0.0000027514, + 0.0000027426, 0.0000027326, 0.0000027351, 0.0000027428, 0.0000027472, + 0.0000027481, 0.0000027482, 0.0000027459, 0.0000027395, 0.0000027333, + 0.0000027299, 0.0000027294, 0.0000027288, 0.0000027331, 0.0000027364, + 0.0000027375, 0.0000027369, 0.0000027333, 0.0000027282, 0.0000027213, + 0.0000027127, 0.0000027049, 0.0000026985, 0.0000026935, 0.0000026872, + 0.0000026788, 0.0000026718, 0.0000026682, 0.0000026679, 0.0000026702, + 0.0000026730, 0.0000026730, 0.0000026709, 0.0000026680, 0.0000026645, + 0.0000026580, 0.0000026502, 0.0000026459, 0.0000026473, 0.0000026518, + 0.0000026568, 0.0000026597, 0.0000026619, 0.0000026654, 0.0000026686, + 0.0000026685, 0.0000026656, 0.0000026616, 0.0000026583, 0.0000026553, + 0.0000026466, 0.0000026257, 0.0000026007, 0.0000025879, 0.0000025876, + 0.0000025894, 0.0000025872, 0.0000025794, 0.0000025690, 0.0000025603, + 0.0000025529, 0.0000025456, 0.0000025389, 0.0000025327, 0.0000025279, + 0.0000025257, 0.0000025280, 0.0000025340, 0.0000025425, 0.0000025501, + 0.0000025548, 0.0000025565, 0.0000025567, 0.0000025565, 0.0000025554, + 0.0000025541, 0.0000025535, 0.0000025531, 0.0000025510, 0.0000025482, + 0.0000025454, 0.0000025439, 0.0000025424, 0.0000025422, 0.0000025427, + 0.0000025460, 0.0000025489, 0.0000025496, 0.0000025492, 0.0000025490, + 0.0000025548, 0.0000025610, 0.0000025561, 0.0000025466, 0.0000025583, + 0.0000025689, 0.0000025675, 0.0000025720, 0.0000025769, 0.0000025800, + 0.0000025804, 0.0000025804, 0.0000025852, 0.0000025888, 0.0000025838, + 0.0000025740, 0.0000025674, 0.0000025638, 0.0000025618, 0.0000025583, + 0.0000025550, 0.0000025517, 0.0000025423, 0.0000025261, 0.0000025129, + 0.0000025067, 0.0000025017, 0.0000024919, 0.0000024771, 0.0000024732, + 0.0000024891, 0.0000025111, 0.0000025262, 0.0000025320, 0.0000025338, + 0.0000025301, 0.0000025393, 0.0000025365, 0.0000025142, 0.0000025085, + 0.0000025126, 0.0000025218, 0.0000025302, 0.0000025340, 0.0000025701, + 0.0000026172, 0.0000026400, 0.0000026407, 0.0000026337, 0.0000026247, + 0.0000026138, 0.0000026030, 0.0000025997, 0.0000025979, 0.0000025898, + 0.0000025792, 0.0000025735, 0.0000025767, 0.0000025868, 0.0000025953, + 0.0000025987, 0.0000025997, 0.0000026024, 0.0000026092, 0.0000026138, + 0.0000026152, 0.0000026164, 0.0000026163, 0.0000026153, 0.0000026149, + 0.0000026146, 0.0000026133, 0.0000026130, 0.0000026147, 0.0000026256, + 0.0000026394, 0.0000026448, 0.0000026510, 0.0000026622, 0.0000026723, + 0.0000026750, 0.0000026753, 0.0000026743, 0.0000026702, 0.0000026639, + 0.0000026612, 0.0000026627, 0.0000026643, 0.0000026655, 0.0000026667, + 0.0000026677, 0.0000026680, 0.0000026670, 0.0000026675, 0.0000026702, + 0.0000026754, 0.0000026807, 0.0000026847, 0.0000026878, 0.0000026901, + 0.0000026913, 0.0000026914, 0.0000026904, 0.0000026892, 0.0000026885, + 0.0000026908, 0.0000026952, 0.0000026981, 0.0000027003, 0.0000027029, + 0.0000027066, 0.0000027098, 0.0000027109, 0.0000027112, 0.0000027102, + 0.0000027079, 0.0000027057, 0.0000027057, 0.0000027070, 0.0000027076, + 0.0000027066, 0.0000027047, 0.0000027011, 0.0000026963, 0.0000026901, + 0.0000026845, 0.0000026819, 0.0000026853, 0.0000026954, 0.0000027102, + 0.0000027270, 0.0000027420, 0.0000027527, 0.0000027607, 0.0000027669, + 0.0000027697, 0.0000027699, 0.0000027680, 0.0000027652, 0.0000027656, + 0.0000027707, 0.0000027769, 0.0000027823, 0.0000027889, 0.0000027973, + 0.0000028040, 0.0000028055, 0.0000028030, 0.0000027948, 0.0000027853, + 0.0000027794, 0.0000027794, 0.0000027838, 0.0000027875, 0.0000027871, + 0.0000027868, 0.0000027908, 0.0000027943, 0.0000027960, 0.0000027962, + 0.0000027962, 0.0000027961, 0.0000027948, 0.0000027922, 0.0000027891, + 0.0000027852, 0.0000027801, 0.0000027737, 0.0000027661, 0.0000027574, + 0.0000027482, 0.0000027394, 0.0000027313, 0.0000027237, 0.0000027172, + 0.0000027118, 0.0000027072, 0.0000027047, 0.0000027050, 0.0000027081, + 0.0000027124, 0.0000027173, 0.0000027220, 0.0000027248, 0.0000027265, + 0.0000027270, 0.0000027257, 0.0000027232, 0.0000027223, 0.0000027254, + 0.0000027310, 0.0000027375, 0.0000027425, 0.0000027467, 0.0000027518, + 0.0000027577, 0.0000027648, 0.0000027751, 0.0000027875, 0.0000027978, + 0.0000028042, 0.0000028073, 0.0000028069, 0.0000028037, 0.0000028001, + 0.0000027990, 0.0000028027, 0.0000028083, 0.0000028127, 0.0000028151, + 0.0000028170, 0.0000028197, 0.0000028237, 0.0000028290, 0.0000028351, + 0.0000028418, 0.0000028484, 0.0000028531, 0.0000028537, 0.0000028498, + 0.0000028396, 0.0000028246, 0.0000028101, 0.0000028004, 0.0000027974, + 0.0000027992, 0.0000028015, 0.0000028004, 0.0000027963, 0.0000027955, + 0.0000027999, 0.0000028029, 0.0000027998, 0.0000027919, 0.0000027859, + 0.0000027823, 0.0000027803, 0.0000027806, 0.0000027831, 0.0000027854, + 0.0000027846, 0.0000027834, 0.0000027893, 0.0000028017, 0.0000028093, + 0.0000028105, 0.0000028128, 0.0000028172, 0.0000028182, 0.0000028136, + 0.0000028077, 0.0000028034, 0.0000027990, 0.0000027939, 0.0000027866, + 0.0000027779, 0.0000027740, 0.0000027750, 0.0000027759, 0.0000027820, + 0.0000027961, 0.0000028083, 0.0000028118, 0.0000028112, 0.0000028108, + 0.0000028124, 0.0000028120, 0.0000028077, 0.0000028029, 0.0000027990, + 0.0000027949, 0.0000027902, 0.0000027848, 0.0000027778, 0.0000027699, + 0.0000027630, 0.0000027569, 0.0000027522, 0.0000027501, 0.0000027501, + 0.0000027506, 0.0000027517, 0.0000027532, 0.0000027550, 0.0000027564, + 0.0000027572, 0.0000027591, 0.0000027609, 0.0000027606, 0.0000027583, + 0.0000027555, 0.0000027528, 0.0000027520, 0.0000027535, 0.0000027575, + 0.0000027616, 0.0000027664, 0.0000027719, 0.0000027770, 0.0000027801, + 0.0000027816, 0.0000027821, 0.0000027814, 0.0000027805, 0.0000027797, + 0.0000027798, 0.0000027803, 0.0000027802, 0.0000027793, 0.0000027797, + 0.0000027802, 0.0000027792, 0.0000027755, 0.0000027691, 0.0000027572, + 0.0000027358, 0.0000027078, 0.0000026805, 0.0000026595, 0.0000026464, + 0.0000026400, 0.0000026395, 0.0000026421, 0.0000026437, 0.0000026461, + 0.0000026542, 0.0000026680, 0.0000026806, 0.0000026902, 0.0000026962, + 0.0000026985, 0.0000026987, 0.0000026968, 0.0000026931, 0.0000026878, + 0.0000026797, 0.0000026698, 0.0000026619, 0.0000026580, 0.0000026572, + 0.0000026588, 0.0000026635, 0.0000026699, 0.0000026764, 0.0000026829, + 0.0000026877, 0.0000026900, 0.0000026906, 0.0000026925, 0.0000026974, + 0.0000027041, 0.0000027104, 0.0000027145, 0.0000027145, 0.0000027113, + 0.0000027069, 0.0000027024, 0.0000026977, 0.0000026953, 0.0000026955, + 0.0000026954, 0.0000026959, 0.0000026963, 0.0000026973, 0.0000026855, + 0.0000026462, 0.0000026128, 0.0000026103, 0.0000026268, 0.0000026618, + 0.0000026908, 0.0000026936, 0.0000027011, 0.0000027394, 0.0000028014, + 0.0000028294, 0.0000028312, 0.0000028287, 0.0000028311, 0.0000028382, + 0.0000028415, 0.0000028418, 0.0000028391, 0.0000028348, 0.0000028302, + 0.0000028256, 0.0000028232, 0.0000028225, 0.0000028232, 0.0000028240, + 0.0000028234, 0.0000028239, 0.0000028255, 0.0000028268, 0.0000028243, + 0.0000028173, 0.0000028092, 0.0000028018, 0.0000027975, 0.0000027974, + 0.0000027965, 0.0000027947, 0.0000027927, 0.0000027869, 0.0000027836, + 0.0000027846, 0.0000027922, 0.0000028085, 0.0000028243, 0.0000028316, + 0.0000028275, 0.0000028159, 0.0000028142, 0.0000028131, 0.0000028206, + 0.0000028224, 0.0000028151, 0.0000028282, 0.0000028418, 0.0000028511, + 0.0000028593, 0.0000028704, 0.0000028754, 0.0000028777, 0.0000028884, + 0.0000028924, 0.0000028869, 0.0000028803, 0.0000028763, 0.0000028730, + 0.0000028703, 0.0000028676, 0.0000028633, 0.0000028584, 0.0000028537, + 0.0000028465, 0.0000028375, 0.0000028285, 0.0000028241, 0.0000028234, + 0.0000028238, 0.0000028238, 0.0000028215, 0.0000028171, 0.0000028100, + 0.0000027928, 0.0000027701, 0.0000027521, 0.0000027375, 0.0000027232, + 0.0000027125, 0.0000027081, 0.0000027086, 0.0000027157, 0.0000027303, + 0.0000027489, 0.0000027613, 0.0000027640, 0.0000027626, 0.0000027628, + 0.0000027661, 0.0000027700, 0.0000027720, 0.0000027735, 0.0000027772, + 0.0000027818, 0.0000027827, 0.0000027810, 0.0000027780, 0.0000027757, + 0.0000027702, 0.0000027565, 0.0000027400, 0.0000027252, 0.0000027074, + 0.0000026876, 0.0000026726, 0.0000026615, 0.0000026489, 0.0000026351, + 0.0000026239, 0.0000026166, 0.0000026108, 0.0000026056, 0.0000026012, + 0.0000025980, 0.0000025965, 0.0000025953, 0.0000025954, 0.0000025986, + 0.0000026059, 0.0000026155, 0.0000026252, 0.0000026342, 0.0000026417, + 0.0000026463, 0.0000026483, 0.0000026486, 0.0000026482, 0.0000026502, + 0.0000026569, 0.0000026666, 0.0000026766, 0.0000026846, 0.0000026884, + 0.0000026879, 0.0000026845, 0.0000026816, 0.0000026819, 0.0000026860, + 0.0000026929, 0.0000027017, 0.0000027111, 0.0000027180, 0.0000027203, + 0.0000027193, 0.0000027173, 0.0000027148, 0.0000027105, 0.0000027051, + 0.0000026986, 0.0000026903, 0.0000026818, 0.0000026773, 0.0000026789, + 0.0000026845, 0.0000026936, 0.0000027011, 0.0000027051, 0.0000027062, + 0.0000027058, 0.0000027069, 0.0000027133, 0.0000027230, 0.0000027297, + 0.0000027303, 0.0000027272, 0.0000027261, 0.0000027299, 0.0000027385, + 0.0000027452, 0.0000027461, 0.0000027454, 0.0000027488, 0.0000027581, + 0.0000027686, 0.0000027780, 0.0000027865, 0.0000027919, 0.0000027931, + 0.0000027897, 0.0000027839, 0.0000027781, 0.0000027734, 0.0000027695, + 0.0000027656, 0.0000027611, 0.0000027546, 0.0000027477, 0.0000027451, + 0.0000027467, 0.0000027530, 0.0000027592, 0.0000027621, 0.0000027638, + 0.0000027657, 0.0000027685, 0.0000027719, 0.0000027721, 0.0000027697, + 0.0000027636, 0.0000027574, 0.0000027544, 0.0000027556, 0.0000027596, + 0.0000027637, 0.0000027661, 0.0000027663, 0.0000027651, 0.0000027616, + 0.0000027565, 0.0000027505, 0.0000027444, 0.0000027387, 0.0000027336, + 0.0000027287, 0.0000027233, 0.0000027164, 0.0000027083, 0.0000027005, + 0.0000026931, 0.0000026872, 0.0000026838, 0.0000026825, 0.0000026835, + 0.0000026872, 0.0000026933, 0.0000026986, 0.0000027006, 0.0000026998, + 0.0000026977, 0.0000026939, 0.0000026884, 0.0000026836, 0.0000026826, + 0.0000026850, 0.0000026874, 0.0000026874, 0.0000026859, 0.0000026853, + 0.0000026869, 0.0000026917, 0.0000026969, 0.0000026996, 0.0000026989, + 0.0000026960, 0.0000026934, 0.0000026910, 0.0000026875, 0.0000026824, + 0.0000026760, 0.0000026687, 0.0000026613, 0.0000026547, 0.0000026494, + 0.0000026443, 0.0000026388, 0.0000026327, 0.0000026269, 0.0000026220, + 0.0000026180, 0.0000026148, 0.0000026131, 0.0000026145, 0.0000026167, + 0.0000026185, 0.0000026201, 0.0000026207, 0.0000026212, 0.0000026209, + 0.0000026197, 0.0000026186, 0.0000026178, 0.0000026166, 0.0000026150, + 0.0000026139, 0.0000026150, 0.0000026166, 0.0000026186, 0.0000026204, + 0.0000026190, 0.0000026153, 0.0000026119, 0.0000026095, 0.0000026082, + 0.0000026046, 0.0000026010, 0.0000025985, 0.0000025984, 0.0000026005, + 0.0000026033, 0.0000026047, 0.0000026050, 0.0000026048, 0.0000026033, + 0.0000026012, 0.0000025986, 0.0000025910, 0.0000025732, 0.0000025528, + 0.0000025432, 0.0000025453, 0.0000025514, 0.0000025540, 0.0000025507, + 0.0000025390, 0.0000025231, 0.0000025084, 0.0000025029, 0.0000025122, + 0.0000025366, 0.0000025597, 0.0000025732, 0.0000025801, 0.0000025889, + 0.0000026181, 0.0000026602, 0.0000026945, 0.0000027310, 0.0000027589, + 0.0000027588, 0.0000027536, 0.0000027545, 0.0000027555, 0.0000027555, + 0.0000027586, 0.0000027635, 0.0000027573, 0.0000027368, 0.0000027253, + 0.0000027255, 0.0000027290, 0.0000027329, 0.0000027313, 0.0000027231, + 0.0000027148, 0.0000027090, 0.0000027038, 0.0000026982, 0.0000026941, + 0.0000026931, 0.0000026952, 0.0000026972, 0.0000026965, 0.0000026934, + 0.0000026940, 0.0000026974, 0.0000026954, 0.0000026897, 0.0000026934, + 0.0000027133, 0.0000027362, 0.0000027471, 0.0000027475, 0.0000027433, + 0.0000027369, 0.0000027300, 0.0000027256, 0.0000027246, 0.0000027241, + 0.0000027237, 0.0000027221, 0.0000027221, 0.0000027248, 0.0000027280, + 0.0000027308, 0.0000027316, 0.0000027313, 0.0000027284, 0.0000027247, + 0.0000027178, 0.0000027087, 0.0000027013, 0.0000026998, 0.0000027043, + 0.0000027088, 0.0000027111, 0.0000027154, 0.0000027167, 0.0000027131, + 0.0000027027, 0.0000026857, 0.0000026751, 0.0000026720, 0.0000026688, + 0.0000026657, 0.0000026639, 0.0000026634, 0.0000026639, 0.0000026646, + 0.0000026665, 0.0000026679, 0.0000026659, 0.0000026626, 0.0000026600, + 0.0000026571, 0.0000026526, 0.0000026471, 0.0000026396, 0.0000026299, + 0.0000026225, 0.0000026214, 0.0000026228, 0.0000026228, 0.0000026204, + 0.0000026174, 0.0000026152, 0.0000026138, 0.0000026122, 0.0000026104, + 0.0000026087, 0.0000026074, 0.0000026070, 0.0000026079, 0.0000026097, + 0.0000026079, 0.0000025979, 0.0000025878, 0.0000025857, 0.0000025777, + 0.0000025537, 0.0000025316, 0.0000025222, 0.0000025143, 0.0000025015, + 0.0000024866, 0.0000024716, 0.0000024576, 0.0000024477, 0.0000024420, + 0.0000024384, 0.0000024365, 0.0000024364, 0.0000024368, 0.0000024371, + 0.0000024369, 0.0000024356, 0.0000024328, 0.0000024295, 0.0000024269, + 0.0000024264, 0.0000024269, 0.0000024277, 0.0000024299, 0.0000024344, + 0.0000024421, 0.0000024503, 0.0000024538, 0.0000024547, 0.0000024600, + 0.0000024701, 0.0000024852, 0.0000025292, 0.0000025903, 0.0000026197, + 0.0000026280, 0.0000026383, 0.0000026485, 0.0000026566, 0.0000026576, + 0.0000026458, 0.0000026306, 0.0000026180, 0.0000026026, 0.0000025832, + 0.0000025608, 0.0000025576, 0.0000025629, 0.0000025459, 0.0000025352, + 0.0000025473, 0.0000026059, 0.0000026754, 0.0000027322, 0.0000027726, + 0.0000027784, 0.0000027761, 0.0000027751, 0.0000027723, 0.0000027686, + 0.0000027623, 0.0000027516, 0.0000027501, 0.0000027531, 0.0000027561, + 0.0000027598, 0.0000027635, 0.0000027557, 0.0000027484, 0.0000027472, + 0.0000027497, 0.0000027508, 0.0000027438, 0.0000027348, 0.0000027362, + 0.0000027428, 0.0000027477, 0.0000027494, 0.0000027501, 0.0000027485, + 0.0000027420, 0.0000027345, 0.0000027295, 0.0000027278, 0.0000027221, + 0.0000027250, 0.0000027289, 0.0000027316, 0.0000027336, 0.0000027324, + 0.0000027289, 0.0000027242, 0.0000027180, 0.0000027100, 0.0000027015, + 0.0000026942, 0.0000026888, 0.0000026836, 0.0000026777, 0.0000026713, + 0.0000026670, 0.0000026670, 0.0000026709, 0.0000026746, 0.0000026743, + 0.0000026701, 0.0000026684, 0.0000026666, 0.0000026607, 0.0000026530, + 0.0000026490, 0.0000026502, 0.0000026542, 0.0000026573, 0.0000026600, + 0.0000026636, 0.0000026675, 0.0000026684, 0.0000026666, 0.0000026632, + 0.0000026584, 0.0000026511, 0.0000026346, 0.0000026082, 0.0000025878, + 0.0000025838, 0.0000025858, 0.0000025838, 0.0000025759, 0.0000025654, + 0.0000025576, 0.0000025517, 0.0000025449, 0.0000025377, 0.0000025328, + 0.0000025299, 0.0000025297, 0.0000025314, 0.0000025366, 0.0000025449, + 0.0000025530, 0.0000025571, 0.0000025608, 0.0000025599, 0.0000025577, + 0.0000025556, 0.0000025544, 0.0000025550, 0.0000025565, 0.0000025597, + 0.0000025606, 0.0000025609, 0.0000025620, 0.0000025597, 0.0000025543, + 0.0000025476, 0.0000025422, 0.0000025407, 0.0000025436, 0.0000025475, + 0.0000025501, 0.0000025510, 0.0000025529, 0.0000025569, 0.0000025569, + 0.0000025455, 0.0000025449, 0.0000025625, 0.0000025688, 0.0000025735, + 0.0000025781, 0.0000025812, 0.0000025828, 0.0000025805, 0.0000025768, + 0.0000025823, 0.0000025868, 0.0000025812, 0.0000025715, 0.0000025632, + 0.0000025564, 0.0000025507, 0.0000025481, 0.0000025479, 0.0000025492, + 0.0000025489, 0.0000025398, 0.0000025221, 0.0000025075, 0.0000025013, + 0.0000024947, 0.0000024807, 0.0000024740, 0.0000024835, 0.0000025046, + 0.0000025241, 0.0000025308, 0.0000025350, 0.0000025296, 0.0000025328, + 0.0000025370, 0.0000025185, 0.0000025044, 0.0000025046, 0.0000025113, + 0.0000025249, 0.0000025282, 0.0000025488, 0.0000025986, 0.0000026327, + 0.0000026400, 0.0000026368, 0.0000026302, 0.0000026204, 0.0000026081, + 0.0000025990, 0.0000025956, 0.0000025884, 0.0000025769, 0.0000025709, + 0.0000025744, 0.0000025855, 0.0000025970, 0.0000026017, 0.0000026015, + 0.0000026019, 0.0000026061, 0.0000026105, 0.0000026137, 0.0000026150, + 0.0000026142, 0.0000026123, 0.0000026125, 0.0000026124, 0.0000026121, + 0.0000026128, 0.0000026178, 0.0000026320, 0.0000026443, 0.0000026468, + 0.0000026498, 0.0000026578, 0.0000026659, 0.0000026688, 0.0000026696, + 0.0000026689, 0.0000026649, 0.0000026613, 0.0000026619, 0.0000026651, + 0.0000026672, 0.0000026691, 0.0000026703, 0.0000026703, 0.0000026702, + 0.0000026701, 0.0000026721, 0.0000026755, 0.0000026801, 0.0000026841, + 0.0000026866, 0.0000026885, 0.0000026889, 0.0000026878, 0.0000026856, + 0.0000026826, 0.0000026797, 0.0000026785, 0.0000026804, 0.0000026855, + 0.0000026898, 0.0000026933, 0.0000026964, 0.0000027009, 0.0000027049, + 0.0000027072, 0.0000027087, 0.0000027085, 0.0000027075, 0.0000027071, + 0.0000027095, 0.0000027119, 0.0000027120, 0.0000027091, 0.0000027035, + 0.0000026961, 0.0000026886, 0.0000026799, 0.0000026731, 0.0000026705, + 0.0000026733, 0.0000026830, 0.0000026982, 0.0000027150, 0.0000027292, + 0.0000027401, 0.0000027503, 0.0000027604, 0.0000027669, 0.0000027683, + 0.0000027673, 0.0000027653, 0.0000027655, 0.0000027692, 0.0000027732, + 0.0000027751, 0.0000027787, 0.0000027867, 0.0000027948, 0.0000027976, + 0.0000027953, 0.0000027879, 0.0000027801, 0.0000027758, 0.0000027757, + 0.0000027778, 0.0000027799, 0.0000027810, 0.0000027826, 0.0000027866, + 0.0000027884, 0.0000027867, 0.0000027830, 0.0000027801, 0.0000027790, + 0.0000027777, 0.0000027754, 0.0000027722, 0.0000027680, 0.0000027626, + 0.0000027565, 0.0000027492, 0.0000027404, 0.0000027306, 0.0000027201, + 0.0000027095, 0.0000026992, 0.0000026902, 0.0000026827, 0.0000026762, + 0.0000026707, 0.0000026680, 0.0000026689, 0.0000026719, 0.0000026764, + 0.0000026813, 0.0000026857, 0.0000026901, 0.0000026941, 0.0000026959, + 0.0000026955, 0.0000026959, 0.0000027007, 0.0000027087, 0.0000027190, + 0.0000027289, 0.0000027362, 0.0000027413, 0.0000027446, 0.0000027478, + 0.0000027549, 0.0000027691, 0.0000027860, 0.0000027984, 0.0000028045, + 0.0000028063, 0.0000028056, 0.0000028026, 0.0000027988, 0.0000027985, + 0.0000028012, 0.0000028052, 0.0000028087, 0.0000028109, 0.0000028109, + 0.0000028102, 0.0000028116, 0.0000028180, 0.0000028277, 0.0000028372, + 0.0000028447, 0.0000028490, 0.0000028501, 0.0000028471, 0.0000028402, + 0.0000028299, 0.0000028175, 0.0000028070, 0.0000028001, 0.0000027966, + 0.0000027944, 0.0000027923, 0.0000027917, 0.0000027943, 0.0000027983, + 0.0000027980, 0.0000027925, 0.0000027871, 0.0000027826, 0.0000027785, + 0.0000027750, 0.0000027746, 0.0000027789, 0.0000027850, 0.0000027876, + 0.0000027878, 0.0000027930, 0.0000028040, 0.0000028120, 0.0000028135, + 0.0000028145, 0.0000028176, 0.0000028187, 0.0000028157, 0.0000028110, + 0.0000028056, 0.0000027993, 0.0000027927, 0.0000027842, 0.0000027751, + 0.0000027712, 0.0000027713, 0.0000027730, 0.0000027819, 0.0000027959, + 0.0000028044, 0.0000028064, 0.0000028074, 0.0000028103, 0.0000028121, + 0.0000028098, 0.0000028049, 0.0000028012, 0.0000027976, 0.0000027932, + 0.0000027884, 0.0000027836, 0.0000027778, 0.0000027715, 0.0000027654, + 0.0000027608, 0.0000027579, 0.0000027569, 0.0000027565, 0.0000027559, + 0.0000027556, 0.0000027559, 0.0000027562, 0.0000027560, 0.0000027555, + 0.0000027561, 0.0000027558, 0.0000027535, 0.0000027511, 0.0000027494, + 0.0000027492, 0.0000027514, 0.0000027545, 0.0000027577, 0.0000027605, + 0.0000027646, 0.0000027695, 0.0000027736, 0.0000027764, 0.0000027779, + 0.0000027790, 0.0000027799, 0.0000027805, 0.0000027806, 0.0000027810, + 0.0000027806, 0.0000027800, 0.0000027794, 0.0000027804, 0.0000027809, + 0.0000027801, 0.0000027765, 0.0000027695, 0.0000027559, 0.0000027340, + 0.0000027096, 0.0000026874, 0.0000026683, 0.0000026536, 0.0000026448, + 0.0000026413, 0.0000026406, 0.0000026387, 0.0000026398, 0.0000026478, + 0.0000026623, 0.0000026754, 0.0000026862, 0.0000026936, 0.0000026973, + 0.0000026984, 0.0000026977, 0.0000026961, 0.0000026936, 0.0000026856, + 0.0000026762, 0.0000026684, 0.0000026636, 0.0000026601, 0.0000026588, + 0.0000026600, 0.0000026626, 0.0000026670, 0.0000026733, 0.0000026790, + 0.0000026828, 0.0000026841, 0.0000026852, 0.0000026881, 0.0000026928, + 0.0000027008, 0.0000027098, 0.0000027135, 0.0000027112, 0.0000027073, + 0.0000027026, 0.0000026969, 0.0000026913, 0.0000026907, 0.0000026903, + 0.0000026914, 0.0000026969, 0.0000027014, 0.0000027011, 0.0000026820, + 0.0000026361, 0.0000026077, 0.0000026092, 0.0000026304, 0.0000026686, + 0.0000026892, 0.0000026940, 0.0000027132, 0.0000027635, 0.0000028131, + 0.0000028295, 0.0000028293, 0.0000028281, 0.0000028327, 0.0000028385, + 0.0000028410, 0.0000028387, 0.0000028348, 0.0000028297, 0.0000028247, + 0.0000028219, 0.0000028213, 0.0000028215, 0.0000028219, 0.0000028201, + 0.0000028190, 0.0000028198, 0.0000028212, 0.0000028194, 0.0000028149, + 0.0000028085, 0.0000028017, 0.0000027980, 0.0000027978, 0.0000027980, + 0.0000027965, 0.0000027953, 0.0000027923, 0.0000027856, 0.0000027816, + 0.0000027833, 0.0000027953, 0.0000028148, 0.0000028291, 0.0000028323, + 0.0000028221, 0.0000028144, 0.0000028140, 0.0000028128, 0.0000028211, + 0.0000028134, 0.0000028159, 0.0000028321, 0.0000028436, 0.0000028530, + 0.0000028614, 0.0000028715, 0.0000028746, 0.0000028783, 0.0000028870, + 0.0000028891, 0.0000028833, 0.0000028774, 0.0000028725, 0.0000028689, + 0.0000028657, 0.0000028610, 0.0000028545, 0.0000028482, 0.0000028411, + 0.0000028343, 0.0000028288, 0.0000028251, 0.0000028240, 0.0000028240, + 0.0000028233, 0.0000028199, 0.0000028142, 0.0000028005, 0.0000027780, + 0.0000027590, 0.0000027470, 0.0000027360, 0.0000027239, 0.0000027148, + 0.0000027112, 0.0000027140, 0.0000027246, 0.0000027405, 0.0000027584, + 0.0000027697, 0.0000027714, 0.0000027692, 0.0000027691, 0.0000027724, + 0.0000027764, 0.0000027765, 0.0000027751, 0.0000027753, 0.0000027763, + 0.0000027755, 0.0000027735, 0.0000027730, 0.0000027730, 0.0000027675, + 0.0000027516, 0.0000027342, 0.0000027177, 0.0000026960, 0.0000026741, + 0.0000026583, 0.0000026454, 0.0000026307, 0.0000026169, 0.0000026083, + 0.0000026058, 0.0000026061, 0.0000026056, 0.0000026034, 0.0000026000, + 0.0000025967, 0.0000025945, 0.0000025934, 0.0000025945, 0.0000025996, + 0.0000026083, 0.0000026188, 0.0000026290, 0.0000026380, 0.0000026455, + 0.0000026514, 0.0000026558, 0.0000026571, 0.0000026566, 0.0000026563, + 0.0000026586, 0.0000026639, 0.0000026719, 0.0000026806, 0.0000026862, + 0.0000026865, 0.0000026817, 0.0000026753, 0.0000026726, 0.0000026746, + 0.0000026817, 0.0000026918, 0.0000027023, 0.0000027107, 0.0000027154, + 0.0000027169, 0.0000027173, 0.0000027177, 0.0000027183, 0.0000027194, + 0.0000027193, 0.0000027133, 0.0000027027, 0.0000026907, 0.0000026814, + 0.0000026764, 0.0000026764, 0.0000026803, 0.0000026885, 0.0000026966, + 0.0000027020, 0.0000027050, 0.0000027075, 0.0000027126, 0.0000027204, + 0.0000027268, 0.0000027287, 0.0000027265, 0.0000027234, 0.0000027237, + 0.0000027294, 0.0000027372, 0.0000027418, 0.0000027441, 0.0000027489, + 0.0000027557, 0.0000027615, 0.0000027670, 0.0000027748, 0.0000027836, + 0.0000027879, 0.0000027870, 0.0000027845, 0.0000027808, 0.0000027776, + 0.0000027767, 0.0000027763, 0.0000027723, 0.0000027636, 0.0000027533, + 0.0000027473, 0.0000027468, 0.0000027519, 0.0000027581, 0.0000027620, + 0.0000027620, 0.0000027607, 0.0000027614, 0.0000027641, 0.0000027658, + 0.0000027647, 0.0000027613, 0.0000027568, 0.0000027545, 0.0000027549, + 0.0000027574, 0.0000027611, 0.0000027648, 0.0000027667, 0.0000027668, + 0.0000027650, 0.0000027621, 0.0000027583, 0.0000027536, 0.0000027485, + 0.0000027439, 0.0000027391, 0.0000027331, 0.0000027266, 0.0000027207, + 0.0000027139, 0.0000027060, 0.0000026978, 0.0000026910, 0.0000026867, + 0.0000026868, 0.0000026920, 0.0000026989, 0.0000027026, 0.0000027032, + 0.0000027018, 0.0000026985, 0.0000026933, 0.0000026881, 0.0000026863, + 0.0000026879, 0.0000026904, 0.0000026905, 0.0000026890, 0.0000026883, + 0.0000026898, 0.0000026943, 0.0000026994, 0.0000027023, 0.0000027016, + 0.0000026986, 0.0000026962, 0.0000026943, 0.0000026915, 0.0000026874, + 0.0000026828, 0.0000026781, 0.0000026735, 0.0000026700, 0.0000026682, + 0.0000026664, 0.0000026634, 0.0000026592, 0.0000026541, 0.0000026485, + 0.0000026421, 0.0000026352, 0.0000026294, 0.0000026261, 0.0000026247, + 0.0000026240, 0.0000026234, 0.0000026230, 0.0000026227, 0.0000026213, + 0.0000026185, 0.0000026164, 0.0000026139, 0.0000026111, 0.0000026086, + 0.0000026078, 0.0000026102, 0.0000026130, 0.0000026155, 0.0000026168, + 0.0000026160, 0.0000026121, 0.0000026078, 0.0000026050, 0.0000026026, + 0.0000026005, 0.0000025985, 0.0000025978, 0.0000025991, 0.0000026018, + 0.0000026047, 0.0000026054, 0.0000026051, 0.0000026041, 0.0000026015, + 0.0000025969, 0.0000025927, 0.0000025890, 0.0000025778, 0.0000025572, + 0.0000025397, 0.0000025366, 0.0000025435, 0.0000025497, 0.0000025503, + 0.0000025419, 0.0000025246, 0.0000025055, 0.0000024928, 0.0000024951, + 0.0000025171, 0.0000025471, 0.0000025683, 0.0000025783, 0.0000025868, + 0.0000026138, 0.0000026563, 0.0000026953, 0.0000027342, 0.0000027623, + 0.0000027609, 0.0000027535, 0.0000027539, 0.0000027536, 0.0000027538, + 0.0000027584, 0.0000027615, 0.0000027514, 0.0000027322, 0.0000027257, + 0.0000027282, 0.0000027301, 0.0000027310, 0.0000027293, 0.0000027234, + 0.0000027172, 0.0000027133, 0.0000027109, 0.0000027076, 0.0000027040, + 0.0000027014, 0.0000027000, 0.0000026984, 0.0000026960, 0.0000026932, + 0.0000026918, 0.0000026940, 0.0000026972, 0.0000026950, 0.0000026931, + 0.0000027001, 0.0000027204, 0.0000027405, 0.0000027475, 0.0000027464, + 0.0000027423, 0.0000027361, 0.0000027303, 0.0000027276, 0.0000027265, + 0.0000027261, 0.0000027255, 0.0000027263, 0.0000027298, 0.0000027329, + 0.0000027345, 0.0000027334, 0.0000027308, 0.0000027255, 0.0000027178, + 0.0000027083, 0.0000026980, 0.0000026909, 0.0000026926, 0.0000027019, + 0.0000027092, 0.0000027127, 0.0000027180, 0.0000027193, 0.0000027138, + 0.0000027001, 0.0000026831, 0.0000026756, 0.0000026735, 0.0000026712, + 0.0000026674, 0.0000026646, 0.0000026649, 0.0000026650, 0.0000026649, + 0.0000026666, 0.0000026682, 0.0000026650, 0.0000026608, 0.0000026585, + 0.0000026556, 0.0000026511, 0.0000026463, 0.0000026404, 0.0000026319, + 0.0000026252, 0.0000026239, 0.0000026251, 0.0000026248, 0.0000026223, + 0.0000026192, 0.0000026171, 0.0000026155, 0.0000026136, 0.0000026116, + 0.0000026094, 0.0000026072, 0.0000026049, 0.0000026033, 0.0000026027, + 0.0000026020, 0.0000025969, 0.0000025882, 0.0000025838, 0.0000025835, + 0.0000025730, 0.0000025482, 0.0000025295, 0.0000025213, 0.0000025121, + 0.0000024996, 0.0000024870, 0.0000024736, 0.0000024595, 0.0000024483, + 0.0000024407, 0.0000024356, 0.0000024328, 0.0000024318, 0.0000024316, + 0.0000024314, 0.0000024306, 0.0000024285, 0.0000024260, 0.0000024242, + 0.0000024242, 0.0000024257, 0.0000024268, 0.0000024264, 0.0000024252, + 0.0000024241, 0.0000024261, 0.0000024345, 0.0000024448, 0.0000024492, + 0.0000024542, 0.0000024666, 0.0000024782, 0.0000025085, 0.0000025685, + 0.0000026095, 0.0000026212, 0.0000026308, 0.0000026424, 0.0000026503, + 0.0000026520, 0.0000026459, 0.0000026323, 0.0000026203, 0.0000026056, + 0.0000025885, 0.0000025696, 0.0000025553, 0.0000025626, 0.0000025598, + 0.0000025384, 0.0000025405, 0.0000025855, 0.0000026607, 0.0000027251, + 0.0000027705, 0.0000027781, 0.0000027756, 0.0000027738, 0.0000027709, + 0.0000027699, 0.0000027631, 0.0000027516, 0.0000027515, 0.0000027547, + 0.0000027581, 0.0000027636, 0.0000027652, 0.0000027563, 0.0000027482, + 0.0000027460, 0.0000027481, 0.0000027503, 0.0000027454, 0.0000027375, + 0.0000027373, 0.0000027430, 0.0000027480, 0.0000027503, 0.0000027508, + 0.0000027506, 0.0000027464, 0.0000027385, 0.0000027301, 0.0000027239, + 0.0000027143, 0.0000027150, 0.0000027186, 0.0000027213, 0.0000027255, + 0.0000027273, 0.0000027271, 0.0000027255, 0.0000027229, 0.0000027172, + 0.0000027086, 0.0000026989, 0.0000026914, 0.0000026880, 0.0000026863, + 0.0000026824, 0.0000026753, 0.0000026688, 0.0000026684, 0.0000026728, + 0.0000026771, 0.0000026752, 0.0000026706, 0.0000026689, 0.0000026682, + 0.0000026635, 0.0000026567, 0.0000026527, 0.0000026533, 0.0000026554, + 0.0000026589, 0.0000026633, 0.0000026685, 0.0000026711, 0.0000026710, + 0.0000026678, 0.0000026596, 0.0000026448, 0.0000026191, 0.0000025923, + 0.0000025811, 0.0000025810, 0.0000025800, 0.0000025726, 0.0000025622, + 0.0000025544, 0.0000025497, 0.0000025430, 0.0000025353, 0.0000025324, + 0.0000025329, 0.0000025343, 0.0000025362, 0.0000025389, 0.0000025437, + 0.0000025482, 0.0000025521, 0.0000025524, 0.0000025485, 0.0000025417, + 0.0000025344, 0.0000025270, 0.0000025223, 0.0000025220, 0.0000025248, + 0.0000025303, 0.0000025383, 0.0000025482, 0.0000025582, 0.0000025663, + 0.0000025687, 0.0000025653, 0.0000025567, 0.0000025460, 0.0000025393, + 0.0000025384, 0.0000025423, 0.0000025470, 0.0000025504, 0.0000025525, + 0.0000025527, 0.0000025464, 0.0000025402, 0.0000025553, 0.0000025706, + 0.0000025743, 0.0000025789, 0.0000025826, 0.0000025841, 0.0000025835, + 0.0000025772, 0.0000025731, 0.0000025794, 0.0000025828, 0.0000025772, + 0.0000025691, 0.0000025600, 0.0000025505, 0.0000025429, 0.0000025393, + 0.0000025400, 0.0000025447, 0.0000025490, 0.0000025481, 0.0000025352, + 0.0000025146, 0.0000025012, 0.0000024955, 0.0000024852, 0.0000024764, + 0.0000024799, 0.0000024968, 0.0000025201, 0.0000025293, 0.0000025338, + 0.0000025306, 0.0000025269, 0.0000025331, 0.0000025227, 0.0000025032, + 0.0000024986, 0.0000025011, 0.0000025153, 0.0000025268, 0.0000025341, + 0.0000025735, 0.0000026200, 0.0000026381, 0.0000026379, 0.0000026343, + 0.0000026267, 0.0000026143, 0.0000026011, 0.0000025934, 0.0000025865, + 0.0000025757, 0.0000025688, 0.0000025716, 0.0000025827, 0.0000025961, + 0.0000026024, 0.0000026026, 0.0000026013, 0.0000026029, 0.0000026067, + 0.0000026108, 0.0000026123, 0.0000026109, 0.0000026100, 0.0000026106, + 0.0000026112, 0.0000026117, 0.0000026137, 0.0000026218, 0.0000026373, + 0.0000026464, 0.0000026465, 0.0000026462, 0.0000026510, 0.0000026583, + 0.0000026628, 0.0000026652, 0.0000026651, 0.0000026627, 0.0000026619, + 0.0000026655, 0.0000026698, 0.0000026725, 0.0000026752, 0.0000026764, + 0.0000026764, 0.0000026769, 0.0000026785, 0.0000026810, 0.0000026830, + 0.0000026845, 0.0000026855, 0.0000026852, 0.0000026840, 0.0000026818, + 0.0000026789, 0.0000026756, 0.0000026723, 0.0000026694, 0.0000026681, + 0.0000026701, 0.0000026762, 0.0000026821, 0.0000026859, 0.0000026890, + 0.0000026931, 0.0000026974, 0.0000027012, 0.0000027044, 0.0000027061, + 0.0000027069, 0.0000027085, 0.0000027125, 0.0000027161, 0.0000027168, + 0.0000027138, 0.0000027050, 0.0000026922, 0.0000026790, 0.0000026675, + 0.0000026617, 0.0000026611, 0.0000026664, 0.0000026763, 0.0000026891, + 0.0000027025, 0.0000027149, 0.0000027265, 0.0000027389, 0.0000027515, + 0.0000027613, 0.0000027662, 0.0000027673, 0.0000027675, 0.0000027681, + 0.0000027697, 0.0000027709, 0.0000027706, 0.0000027713, 0.0000027768, + 0.0000027849, 0.0000027893, 0.0000027879, 0.0000027828, 0.0000027774, + 0.0000027737, 0.0000027715, 0.0000027707, 0.0000027723, 0.0000027755, + 0.0000027779, 0.0000027796, 0.0000027790, 0.0000027746, 0.0000027680, + 0.0000027623, 0.0000027580, 0.0000027547, 0.0000027519, 0.0000027492, + 0.0000027449, 0.0000027387, 0.0000027320, 0.0000027253, 0.0000027175, + 0.0000027088, 0.0000026991, 0.0000026891, 0.0000026797, 0.0000026711, + 0.0000026639, 0.0000026576, 0.0000026513, 0.0000026454, 0.0000026435, + 0.0000026446, 0.0000026473, 0.0000026502, 0.0000026533, 0.0000026578, + 0.0000026630, 0.0000026665, 0.0000026676, 0.0000026689, 0.0000026730, + 0.0000026800, 0.0000026902, 0.0000027030, 0.0000027154, 0.0000027264, + 0.0000027345, 0.0000027388, 0.0000027412, 0.0000027477, 0.0000027631, + 0.0000027826, 0.0000027967, 0.0000028034, 0.0000028053, 0.0000028045, + 0.0000028010, 0.0000027980, 0.0000027964, 0.0000027970, 0.0000028000, + 0.0000028043, 0.0000028061, 0.0000028037, 0.0000027995, 0.0000028000, + 0.0000028075, 0.0000028192, 0.0000028302, 0.0000028370, 0.0000028403, + 0.0000028414, 0.0000028414, 0.0000028372, 0.0000028304, 0.0000028216, + 0.0000028108, 0.0000028005, 0.0000027928, 0.0000027884, 0.0000027877, + 0.0000027902, 0.0000027938, 0.0000027936, 0.0000027890, 0.0000027855, + 0.0000027835, 0.0000027803, 0.0000027741, 0.0000027680, 0.0000027675, + 0.0000027738, 0.0000027829, 0.0000027888, 0.0000027916, 0.0000027967, + 0.0000028069, 0.0000028153, 0.0000028168, 0.0000028165, 0.0000028178, + 0.0000028193, 0.0000028182, 0.0000028148, 0.0000028087, 0.0000028009, + 0.0000027929, 0.0000027828, 0.0000027726, 0.0000027680, 0.0000027677, + 0.0000027700, 0.0000027806, 0.0000027933, 0.0000027994, 0.0000028016, + 0.0000028052, 0.0000028095, 0.0000028103, 0.0000028063, 0.0000028017, + 0.0000027986, 0.0000027952, 0.0000027900, 0.0000027850, 0.0000027812, + 0.0000027776, 0.0000027736, 0.0000027703, 0.0000027679, 0.0000027662, + 0.0000027647, 0.0000027630, 0.0000027609, 0.0000027589, 0.0000027573, + 0.0000027556, 0.0000027534, 0.0000027514, 0.0000027496, 0.0000027466, + 0.0000027425, 0.0000027400, 0.0000027400, 0.0000027427, 0.0000027477, + 0.0000027523, 0.0000027556, 0.0000027586, 0.0000027622, 0.0000027657, + 0.0000027689, 0.0000027709, 0.0000027723, 0.0000027742, 0.0000027763, + 0.0000027785, 0.0000027799, 0.0000027805, 0.0000027803, 0.0000027799, + 0.0000027797, 0.0000027808, 0.0000027808, 0.0000027796, 0.0000027759, + 0.0000027687, 0.0000027556, 0.0000027352, 0.0000027138, 0.0000026954, + 0.0000026783, 0.0000026628, 0.0000026523, 0.0000026457, 0.0000026409, + 0.0000026364, 0.0000026368, 0.0000026419, 0.0000026549, 0.0000026662, + 0.0000026765, 0.0000026844, 0.0000026895, 0.0000026918, 0.0000026925, + 0.0000026926, 0.0000026903, 0.0000026836, 0.0000026770, 0.0000026703, + 0.0000026654, 0.0000026610, 0.0000026573, 0.0000026555, 0.0000026549, + 0.0000026569, 0.0000026621, 0.0000026681, 0.0000026728, 0.0000026752, + 0.0000026769, 0.0000026795, 0.0000026823, 0.0000026893, 0.0000027010, + 0.0000027092, 0.0000027099, 0.0000027068, 0.0000027032, 0.0000026975, + 0.0000026893, 0.0000026851, 0.0000026852, 0.0000026877, 0.0000026951, + 0.0000027027, 0.0000027051, 0.0000027017, 0.0000026733, 0.0000026216, + 0.0000026024, 0.0000026107, 0.0000026375, 0.0000026729, 0.0000026886, + 0.0000026993, 0.0000027278, 0.0000027801, 0.0000028174, 0.0000028281, + 0.0000028276, 0.0000028276, 0.0000028319, 0.0000028356, 0.0000028349, + 0.0000028319, 0.0000028270, 0.0000028215, 0.0000028180, 0.0000028175, + 0.0000028180, 0.0000028183, 0.0000028159, 0.0000028141, 0.0000028145, + 0.0000028157, 0.0000028137, 0.0000028106, 0.0000028060, 0.0000028011, + 0.0000027982, 0.0000027969, 0.0000027976, 0.0000027973, 0.0000027966, + 0.0000027957, 0.0000027899, 0.0000027818, 0.0000027791, 0.0000027846, + 0.0000028027, 0.0000028225, 0.0000028330, 0.0000028294, 0.0000028170, + 0.0000028146, 0.0000028115, 0.0000028146, 0.0000028145, 0.0000028074, + 0.0000028200, 0.0000028348, 0.0000028460, 0.0000028542, 0.0000028632, + 0.0000028728, 0.0000028740, 0.0000028768, 0.0000028829, 0.0000028830, + 0.0000028785, 0.0000028730, 0.0000028682, 0.0000028631, 0.0000028565, + 0.0000028486, 0.0000028423, 0.0000028378, 0.0000028344, 0.0000028310, + 0.0000028269, 0.0000028247, 0.0000028238, 0.0000028206, 0.0000028156, + 0.0000028061, 0.0000027863, 0.0000027651, 0.0000027536, 0.0000027478, + 0.0000027388, 0.0000027271, 0.0000027172, 0.0000027125, 0.0000027151, + 0.0000027283, 0.0000027481, 0.0000027673, 0.0000027783, 0.0000027798, + 0.0000027774, 0.0000027770, 0.0000027806, 0.0000027853, 0.0000027849, + 0.0000027811, 0.0000027784, 0.0000027762, 0.0000027726, 0.0000027700, + 0.0000027700, 0.0000027699, 0.0000027630, 0.0000027469, 0.0000027297, + 0.0000027119, 0.0000026884, 0.0000026654, 0.0000026485, 0.0000026329, + 0.0000026158, 0.0000026026, 0.0000025969, 0.0000025967, 0.0000025987, + 0.0000025995, 0.0000025976, 0.0000025937, 0.0000025897, 0.0000025864, + 0.0000025842, 0.0000025838, 0.0000025859, 0.0000025909, 0.0000025992, + 0.0000026111, 0.0000026242, 0.0000026355, 0.0000026445, 0.0000026522, + 0.0000026583, 0.0000026618, 0.0000026629, 0.0000026616, 0.0000026605, + 0.0000026611, 0.0000026657, 0.0000026726, 0.0000026781, 0.0000026794, + 0.0000026759, 0.0000026694, 0.0000026656, 0.0000026667, 0.0000026730, + 0.0000026830, 0.0000026932, 0.0000027014, 0.0000027066, 0.0000027093, + 0.0000027105, 0.0000027118, 0.0000027146, 0.0000027189, 0.0000027220, + 0.0000027224, 0.0000027210, 0.0000027140, 0.0000027046, 0.0000026939, + 0.0000026835, 0.0000026758, 0.0000026731, 0.0000026753, 0.0000026828, + 0.0000026926, 0.0000027006, 0.0000027073, 0.0000027141, 0.0000027207, + 0.0000027249, 0.0000027256, 0.0000027232, 0.0000027203, 0.0000027196, + 0.0000027230, 0.0000027305, 0.0000027386, 0.0000027447, 0.0000027487, + 0.0000027514, 0.0000027528, 0.0000027547, 0.0000027594, 0.0000027662, + 0.0000027735, 0.0000027790, 0.0000027801, 0.0000027806, 0.0000027826, + 0.0000027850, 0.0000027852, 0.0000027809, 0.0000027707, 0.0000027583, + 0.0000027501, 0.0000027497, 0.0000027544, 0.0000027600, 0.0000027615, + 0.0000027589, 0.0000027550, 0.0000027543, 0.0000027563, 0.0000027590, + 0.0000027593, 0.0000027575, 0.0000027559, 0.0000027547, 0.0000027545, + 0.0000027564, 0.0000027608, 0.0000027654, 0.0000027679, 0.0000027693, + 0.0000027691, 0.0000027677, 0.0000027648, 0.0000027611, 0.0000027569, + 0.0000027520, 0.0000027458, 0.0000027404, 0.0000027371, 0.0000027333, + 0.0000027278, 0.0000027207, 0.0000027127, 0.0000027049, 0.0000026996, + 0.0000027000, 0.0000027049, 0.0000027098, 0.0000027114, 0.0000027105, + 0.0000027071, 0.0000027019, 0.0000026962, 0.0000026927, 0.0000026922, + 0.0000026932, 0.0000026928, 0.0000026912, 0.0000026905, 0.0000026917, + 0.0000026948, 0.0000026985, 0.0000027005, 0.0000026997, 0.0000026973, + 0.0000026955, 0.0000026943, 0.0000026918, 0.0000026879, 0.0000026838, + 0.0000026798, 0.0000026761, 0.0000026732, 0.0000026715, 0.0000026705, + 0.0000026697, 0.0000026684, 0.0000026673, 0.0000026662, 0.0000026634, + 0.0000026581, 0.0000026513, 0.0000026456, 0.0000026415, 0.0000026379, + 0.0000026350, 0.0000026329, 0.0000026313, 0.0000026292, 0.0000026260, + 0.0000026223, 0.0000026187, 0.0000026152, 0.0000026135, 0.0000026141, + 0.0000026163, 0.0000026188, 0.0000026202, 0.0000026197, 0.0000026176, + 0.0000026128, 0.0000026069, 0.0000026015, 0.0000025969, 0.0000025937, + 0.0000025923, 0.0000025927, 0.0000025946, 0.0000025982, 0.0000026024, + 0.0000026041, 0.0000026037, 0.0000026023, 0.0000025991, 0.0000025936, + 0.0000025876, 0.0000025835, 0.0000025777, 0.0000025627, 0.0000025428, + 0.0000025324, 0.0000025356, 0.0000025442, 0.0000025479, 0.0000025436, + 0.0000025272, 0.0000025047, 0.0000024877, 0.0000024838, 0.0000024981, + 0.0000025306, 0.0000025611, 0.0000025769, 0.0000025849, 0.0000026085, + 0.0000026518, 0.0000026939, 0.0000027350, 0.0000027648, 0.0000027643, + 0.0000027553, 0.0000027535, 0.0000027518, 0.0000027531, 0.0000027593, + 0.0000027600, 0.0000027455, 0.0000027298, 0.0000027282, 0.0000027330, + 0.0000027336, 0.0000027319, 0.0000027295, 0.0000027251, 0.0000027203, + 0.0000027171, 0.0000027165, 0.0000027151, 0.0000027122, 0.0000027102, + 0.0000027081, 0.0000027041, 0.0000026980, 0.0000026933, 0.0000026916, + 0.0000026918, 0.0000026950, 0.0000026982, 0.0000026986, 0.0000026980, + 0.0000027055, 0.0000027246, 0.0000027414, 0.0000027464, 0.0000027455, + 0.0000027418, 0.0000027374, 0.0000027335, 0.0000027312, 0.0000027302, + 0.0000027309, 0.0000027329, 0.0000027358, 0.0000027363, 0.0000027352, + 0.0000027315, 0.0000027252, 0.0000027167, 0.0000027084, 0.0000027007, + 0.0000026924, 0.0000026865, 0.0000026885, 0.0000027001, 0.0000027093, + 0.0000027133, 0.0000027190, 0.0000027206, 0.0000027123, 0.0000026979, + 0.0000026837, 0.0000026772, 0.0000026754, 0.0000026734, 0.0000026700, + 0.0000026674, 0.0000026675, 0.0000026659, 0.0000026652, 0.0000026673, + 0.0000026676, 0.0000026632, 0.0000026586, 0.0000026564, 0.0000026531, + 0.0000026484, 0.0000026441, 0.0000026397, 0.0000026332, 0.0000026270, + 0.0000026255, 0.0000026262, 0.0000026256, 0.0000026230, 0.0000026204, + 0.0000026185, 0.0000026155, 0.0000026109, 0.0000026064, 0.0000026033, + 0.0000026013, 0.0000025996, 0.0000025969, 0.0000025940, 0.0000025916, + 0.0000025880, 0.0000025824, 0.0000025785, 0.0000025796, 0.0000025804, + 0.0000025674, 0.0000025433, 0.0000025273, 0.0000025193, 0.0000025094, + 0.0000024987, 0.0000024888, 0.0000024767, 0.0000024620, 0.0000024485, + 0.0000024384, 0.0000024318, 0.0000024282, 0.0000024257, 0.0000024232, + 0.0000024208, 0.0000024180, 0.0000024146, 0.0000024118, 0.0000024113, + 0.0000024130, 0.0000024160, 0.0000024186, 0.0000024197, 0.0000024202, + 0.0000024204, 0.0000024196, 0.0000024223, 0.0000024323, 0.0000024428, + 0.0000024491, 0.0000024617, 0.0000024742, 0.0000024936, 0.0000025435, + 0.0000025948, 0.0000026139, 0.0000026221, 0.0000026352, 0.0000026449, + 0.0000026486, 0.0000026456, 0.0000026352, 0.0000026216, 0.0000026090, + 0.0000025933, 0.0000025800, 0.0000025624, 0.0000025581, 0.0000025648, + 0.0000025460, 0.0000025412, 0.0000025718, 0.0000026498, 0.0000027191, + 0.0000027676, 0.0000027774, 0.0000027748, 0.0000027718, 0.0000027707, + 0.0000027719, 0.0000027631, 0.0000027524, 0.0000027537, 0.0000027566, + 0.0000027603, 0.0000027670, 0.0000027673, 0.0000027583, 0.0000027498, + 0.0000027463, 0.0000027473, 0.0000027499, 0.0000027472, 0.0000027400, + 0.0000027383, 0.0000027436, 0.0000027488, 0.0000027513, 0.0000027525, + 0.0000027523, 0.0000027501, 0.0000027431, 0.0000027318, 0.0000027203, + 0.0000027099, 0.0000027079, 0.0000027086, 0.0000027092, 0.0000027122, + 0.0000027162, 0.0000027199, 0.0000027226, 0.0000027233, 0.0000027221, + 0.0000027161, 0.0000027069, 0.0000026972, 0.0000026925, 0.0000026919, + 0.0000026916, 0.0000026884, 0.0000026807, 0.0000026740, 0.0000026717, + 0.0000026751, 0.0000026795, 0.0000026769, 0.0000026708, 0.0000026693, + 0.0000026701, 0.0000026668, 0.0000026606, 0.0000026566, 0.0000026564, + 0.0000026595, 0.0000026656, 0.0000026724, 0.0000026765, 0.0000026773, + 0.0000026729, 0.0000026609, 0.0000026372, 0.0000026042, 0.0000025817, + 0.0000025772, 0.0000025758, 0.0000025706, 0.0000025602, 0.0000025513, + 0.0000025463, 0.0000025398, 0.0000025315, 0.0000025301, 0.0000025338, + 0.0000025375, 0.0000025390, 0.0000025402, 0.0000025423, 0.0000025446, + 0.0000025451, 0.0000025426, 0.0000025365, 0.0000025265, 0.0000025148, + 0.0000025039, 0.0000024945, 0.0000024876, 0.0000024837, 0.0000024826, + 0.0000024844, 0.0000024893, 0.0000024998, 0.0000025155, 0.0000025339, + 0.0000025525, 0.0000025647, 0.0000025687, 0.0000025654, 0.0000025542, + 0.0000025431, 0.0000025372, 0.0000025379, 0.0000025408, 0.0000025437, + 0.0000025450, 0.0000025436, 0.0000025410, 0.0000025502, 0.0000025715, + 0.0000025768, 0.0000025783, 0.0000025829, 0.0000025854, 0.0000025855, + 0.0000025804, 0.0000025730, 0.0000025702, 0.0000025764, 0.0000025781, + 0.0000025727, 0.0000025651, 0.0000025557, 0.0000025462, 0.0000025387, + 0.0000025331, 0.0000025331, 0.0000025383, 0.0000025456, 0.0000025494, + 0.0000025452, 0.0000025269, 0.0000025057, 0.0000024957, 0.0000024889, + 0.0000024811, 0.0000024785, 0.0000024887, 0.0000025136, 0.0000025275, + 0.0000025311, 0.0000025321, 0.0000025237, 0.0000025267, 0.0000025249, + 0.0000025063, 0.0000024955, 0.0000024936, 0.0000025046, 0.0000025232, + 0.0000025285, 0.0000025497, 0.0000025979, 0.0000026295, 0.0000026368, + 0.0000026357, 0.0000026315, 0.0000026209, 0.0000026063, 0.0000025921, + 0.0000025842, 0.0000025758, 0.0000025675, 0.0000025683, 0.0000025792, + 0.0000025928, 0.0000026001, 0.0000026012, 0.0000025998, 0.0000026003, + 0.0000026040, 0.0000026084, 0.0000026095, 0.0000026093, 0.0000026097, + 0.0000026102, 0.0000026102, 0.0000026107, 0.0000026141, 0.0000026241, + 0.0000026393, 0.0000026464, 0.0000026450, 0.0000026424, 0.0000026447, + 0.0000026508, 0.0000026564, 0.0000026606, 0.0000026627, 0.0000026627, + 0.0000026642, 0.0000026689, 0.0000026727, 0.0000026750, 0.0000026775, + 0.0000026793, 0.0000026800, 0.0000026811, 0.0000026825, 0.0000026832, + 0.0000026831, 0.0000026819, 0.0000026800, 0.0000026780, 0.0000026756, + 0.0000026730, 0.0000026698, 0.0000026671, 0.0000026649, 0.0000026632, + 0.0000026625, 0.0000026641, 0.0000026687, 0.0000026746, 0.0000026797, + 0.0000026833, 0.0000026867, 0.0000026907, 0.0000026953, 0.0000026993, + 0.0000027012, 0.0000027025, 0.0000027058, 0.0000027105, 0.0000027147, + 0.0000027162, 0.0000027135, 0.0000027037, 0.0000026875, 0.0000026695, + 0.0000026563, 0.0000026525, 0.0000026552, 0.0000026629, 0.0000026722, + 0.0000026819, 0.0000026914, 0.0000027018, 0.0000027140, 0.0000027278, + 0.0000027418, 0.0000027542, 0.0000027634, 0.0000027689, 0.0000027711, + 0.0000027710, 0.0000027700, 0.0000027687, 0.0000027673, 0.0000027668, + 0.0000027698, 0.0000027758, 0.0000027806, 0.0000027816, 0.0000027800, + 0.0000027766, 0.0000027719, 0.0000027667, 0.0000027637, 0.0000027642, + 0.0000027683, 0.0000027702, 0.0000027690, 0.0000027665, 0.0000027606, + 0.0000027529, 0.0000027444, 0.0000027361, 0.0000027296, 0.0000027261, + 0.0000027240, 0.0000027206, 0.0000027149, 0.0000027092, 0.0000027048, + 0.0000027009, 0.0000026962, 0.0000026900, 0.0000026828, 0.0000026760, + 0.0000026695, 0.0000026631, 0.0000026568, 0.0000026498, 0.0000026425, + 0.0000026377, 0.0000026360, 0.0000026363, 0.0000026365, 0.0000026367, + 0.0000026387, 0.0000026427, 0.0000026462, 0.0000026480, 0.0000026496, + 0.0000026528, 0.0000026580, 0.0000026659, 0.0000026769, 0.0000026893, + 0.0000027026, 0.0000027157, 0.0000027269, 0.0000027344, 0.0000027379, + 0.0000027437, 0.0000027584, 0.0000027785, 0.0000027945, 0.0000028025, + 0.0000028042, 0.0000028024, 0.0000027997, 0.0000027959, 0.0000027928, + 0.0000027926, 0.0000027962, 0.0000028011, 0.0000028017, 0.0000027972, + 0.0000027922, 0.0000027920, 0.0000027995, 0.0000028115, 0.0000028219, + 0.0000028278, 0.0000028309, 0.0000028336, 0.0000028345, 0.0000028328, + 0.0000028286, 0.0000028211, 0.0000028097, 0.0000027981, 0.0000027898, + 0.0000027871, 0.0000027879, 0.0000027902, 0.0000027895, 0.0000027842, + 0.0000027805, 0.0000027799, 0.0000027799, 0.0000027763, 0.0000027680, + 0.0000027615, 0.0000027629, 0.0000027711, 0.0000027814, 0.0000027893, + 0.0000027940, 0.0000027996, 0.0000028097, 0.0000028184, 0.0000028200, + 0.0000028180, 0.0000028179, 0.0000028200, 0.0000028208, 0.0000028184, + 0.0000028115, 0.0000028022, 0.0000027927, 0.0000027814, 0.0000027704, + 0.0000027645, 0.0000027636, 0.0000027674, 0.0000027788, 0.0000027897, + 0.0000027946, 0.0000027983, 0.0000028037, 0.0000028076, 0.0000028066, + 0.0000028018, 0.0000027972, 0.0000027946, 0.0000027909, 0.0000027853, + 0.0000027806, 0.0000027780, 0.0000027762, 0.0000027750, 0.0000027737, + 0.0000027719, 0.0000027694, 0.0000027662, 0.0000027634, 0.0000027604, + 0.0000027575, 0.0000027547, 0.0000027517, 0.0000027484, 0.0000027455, + 0.0000027432, 0.0000027393, 0.0000027342, 0.0000027311, 0.0000027308, + 0.0000027338, 0.0000027394, 0.0000027452, 0.0000027504, 0.0000027549, + 0.0000027586, 0.0000027614, 0.0000027636, 0.0000027656, 0.0000027678, + 0.0000027702, 0.0000027728, 0.0000027752, 0.0000027767, 0.0000027775, + 0.0000027781, 0.0000027783, 0.0000027786, 0.0000027794, 0.0000027792, + 0.0000027773, 0.0000027735, 0.0000027661, 0.0000027539, 0.0000027347, + 0.0000027147, 0.0000026987, 0.0000026850, 0.0000026732, 0.0000026648, + 0.0000026577, 0.0000026514, 0.0000026452, 0.0000026423, 0.0000026461, + 0.0000026544, 0.0000026621, 0.0000026671, 0.0000026729, 0.0000026765, + 0.0000026779, 0.0000026790, 0.0000026791, 0.0000026771, 0.0000026738, + 0.0000026697, 0.0000026653, 0.0000026613, 0.0000026562, 0.0000026512, + 0.0000026485, 0.0000026476, 0.0000026488, 0.0000026523, 0.0000026577, + 0.0000026627, 0.0000026658, 0.0000026681, 0.0000026707, 0.0000026726, + 0.0000026780, 0.0000026901, 0.0000027017, 0.0000027059, 0.0000027047, + 0.0000027028, 0.0000026987, 0.0000026894, 0.0000026810, 0.0000026794, + 0.0000026840, 0.0000026925, 0.0000027011, 0.0000027056, 0.0000027050, + 0.0000026983, 0.0000026559, 0.0000026070, 0.0000026011, 0.0000026145, + 0.0000026448, 0.0000026764, 0.0000026906, 0.0000027070, 0.0000027411, + 0.0000027895, 0.0000028180, 0.0000028258, 0.0000028253, 0.0000028262, + 0.0000028280, 0.0000028277, 0.0000028248, 0.0000028198, 0.0000028133, + 0.0000028079, 0.0000028069, 0.0000028083, 0.0000028096, 0.0000028079, + 0.0000028067, 0.0000028078, 0.0000028092, 0.0000028071, 0.0000028044, + 0.0000028014, 0.0000027993, 0.0000027982, 0.0000027966, 0.0000027958, + 0.0000027961, 0.0000027970, 0.0000027968, 0.0000027937, 0.0000027839, + 0.0000027772, 0.0000027783, 0.0000027911, 0.0000028132, 0.0000028303, + 0.0000028343, 0.0000028232, 0.0000028143, 0.0000028134, 0.0000028099, + 0.0000028129, 0.0000028055, 0.0000028074, 0.0000028244, 0.0000028372, + 0.0000028476, 0.0000028550, 0.0000028655, 0.0000028730, 0.0000028732, + 0.0000028743, 0.0000028762, 0.0000028746, 0.0000028699, 0.0000028645, + 0.0000028583, 0.0000028511, 0.0000028442, 0.0000028395, 0.0000028375, + 0.0000028354, 0.0000028319, 0.0000028274, 0.0000028242, 0.0000028209, + 0.0000028152, 0.0000028070, 0.0000027921, 0.0000027715, 0.0000027573, + 0.0000027534, 0.0000027517, 0.0000027455, 0.0000027310, 0.0000027168, + 0.0000027098, 0.0000027109, 0.0000027233, 0.0000027439, 0.0000027660, + 0.0000027804, 0.0000027853, 0.0000027850, 0.0000027850, 0.0000027883, + 0.0000027936, 0.0000027941, 0.0000027900, 0.0000027861, 0.0000027824, + 0.0000027767, 0.0000027706, 0.0000027682, 0.0000027655, 0.0000027545, + 0.0000027372, 0.0000027213, 0.0000027054, 0.0000026832, 0.0000026597, + 0.0000026413, 0.0000026248, 0.0000026084, 0.0000025968, 0.0000025921, + 0.0000025912, 0.0000025909, 0.0000025901, 0.0000025883, 0.0000025854, + 0.0000025829, 0.0000025811, 0.0000025796, 0.0000025777, 0.0000025770, + 0.0000025777, 0.0000025795, 0.0000025840, 0.0000025950, 0.0000026122, + 0.0000026292, 0.0000026406, 0.0000026482, 0.0000026555, 0.0000026620, + 0.0000026647, 0.0000026637, 0.0000026605, 0.0000026581, 0.0000026590, + 0.0000026630, 0.0000026667, 0.0000026674, 0.0000026637, 0.0000026581, + 0.0000026552, 0.0000026568, 0.0000026634, 0.0000026732, 0.0000026831, + 0.0000026906, 0.0000026955, 0.0000026986, 0.0000027009, 0.0000027033, + 0.0000027069, 0.0000027125, 0.0000027182, 0.0000027215, 0.0000027227, + 0.0000027236, 0.0000027247, 0.0000027199, 0.0000027096, 0.0000026960, + 0.0000026827, 0.0000026730, 0.0000026693, 0.0000026722, 0.0000026807, + 0.0000026917, 0.0000027024, 0.0000027121, 0.0000027200, 0.0000027229, + 0.0000027219, 0.0000027186, 0.0000027167, 0.0000027167, 0.0000027190, + 0.0000027245, 0.0000027321, 0.0000027391, 0.0000027430, 0.0000027436, + 0.0000027429, 0.0000027429, 0.0000027441, 0.0000027482, 0.0000027563, + 0.0000027665, 0.0000027765, 0.0000027838, 0.0000027879, 0.0000027898, + 0.0000027892, 0.0000027847, 0.0000027747, 0.0000027628, 0.0000027559, + 0.0000027563, 0.0000027602, 0.0000027618, 0.0000027594, 0.0000027544, + 0.0000027509, 0.0000027506, 0.0000027523, 0.0000027537, 0.0000027542, + 0.0000027546, 0.0000027547, 0.0000027540, 0.0000027544, 0.0000027574, + 0.0000027618, 0.0000027663, 0.0000027701, 0.0000027725, 0.0000027730, + 0.0000027716, 0.0000027697, 0.0000027673, 0.0000027634, 0.0000027578, + 0.0000027521, 0.0000027485, 0.0000027456, 0.0000027425, 0.0000027387, + 0.0000027339, 0.0000027281, 0.0000027232, 0.0000027219, 0.0000027245, + 0.0000027282, 0.0000027296, 0.0000027286, 0.0000027245, 0.0000027186, + 0.0000027124, 0.0000027068, 0.0000027026, 0.0000026991, 0.0000026955, + 0.0000026922, 0.0000026914, 0.0000026927, 0.0000026948, 0.0000026962, + 0.0000026964, 0.0000026946, 0.0000026919, 0.0000026902, 0.0000026895, + 0.0000026879, 0.0000026850, 0.0000026817, 0.0000026782, 0.0000026747, + 0.0000026719, 0.0000026706, 0.0000026697, 0.0000026682, 0.0000026663, + 0.0000026655, 0.0000026661, 0.0000026665, 0.0000026642, 0.0000026621, + 0.0000026594, 0.0000026561, 0.0000026526, 0.0000026483, 0.0000026443, + 0.0000026411, 0.0000026378, 0.0000026341, 0.0000026302, 0.0000026264, + 0.0000026231, 0.0000026219, 0.0000026235, 0.0000026255, 0.0000026270, + 0.0000026271, 0.0000026254, 0.0000026225, 0.0000026177, 0.0000026105, + 0.0000026031, 0.0000025966, 0.0000025914, 0.0000025897, 0.0000025905, + 0.0000025922, 0.0000025943, 0.0000025969, 0.0000025996, 0.0000026004, + 0.0000026000, 0.0000025976, 0.0000025919, 0.0000025846, 0.0000025792, + 0.0000025750, 0.0000025649, 0.0000025468, 0.0000025320, 0.0000025295, + 0.0000025369, 0.0000025447, 0.0000025441, 0.0000025298, 0.0000025052, + 0.0000024831, 0.0000024744, 0.0000024810, 0.0000025117, 0.0000025509, + 0.0000025745, 0.0000025837, 0.0000026034, 0.0000026463, 0.0000026909, + 0.0000027333, 0.0000027652, 0.0000027675, 0.0000027586, 0.0000027535, + 0.0000027500, 0.0000027521, 0.0000027589, 0.0000027565, 0.0000027416, + 0.0000027303, 0.0000027317, 0.0000027381, 0.0000027391, 0.0000027369, + 0.0000027337, 0.0000027297, 0.0000027259, 0.0000027225, 0.0000027218, + 0.0000027220, 0.0000027191, 0.0000027165, 0.0000027156, 0.0000027118, + 0.0000027036, 0.0000026954, 0.0000026917, 0.0000026915, 0.0000026925, + 0.0000026962, 0.0000027023, 0.0000027038, 0.0000027026, 0.0000027090, + 0.0000027254, 0.0000027400, 0.0000027448, 0.0000027441, 0.0000027425, + 0.0000027399, 0.0000027379, 0.0000027371, 0.0000027370, 0.0000027384, + 0.0000027392, 0.0000027372, 0.0000027319, 0.0000027248, 0.0000027166, + 0.0000027086, 0.0000027029, 0.0000026997, 0.0000026934, 0.0000026872, + 0.0000026870, 0.0000026983, 0.0000027085, 0.0000027129, 0.0000027186, + 0.0000027203, 0.0000027099, 0.0000026959, 0.0000026862, 0.0000026801, + 0.0000026776, 0.0000026751, 0.0000026730, 0.0000026718, 0.0000026707, + 0.0000026670, 0.0000026659, 0.0000026678, 0.0000026667, 0.0000026608, + 0.0000026558, 0.0000026529, 0.0000026493, 0.0000026444, 0.0000026411, + 0.0000026388, 0.0000026343, 0.0000026289, 0.0000026266, 0.0000026267, + 0.0000026258, 0.0000026230, 0.0000026207, 0.0000026178, 0.0000026120, + 0.0000026037, 0.0000025958, 0.0000025905, 0.0000025886, 0.0000025887, + 0.0000025888, 0.0000025871, 0.0000025842, 0.0000025808, 0.0000025765, + 0.0000025730, 0.0000025725, 0.0000025753, 0.0000025751, 0.0000025600, + 0.0000025375, 0.0000025238, 0.0000025156, 0.0000025059, 0.0000024974, + 0.0000024893, 0.0000024769, 0.0000024611, 0.0000024462, 0.0000024349, + 0.0000024270, 0.0000024217, 0.0000024168, 0.0000024112, 0.0000024055, + 0.0000024003, 0.0000023960, 0.0000023936, 0.0000023941, 0.0000023969, + 0.0000024007, 0.0000024039, 0.0000024059, 0.0000024080, 0.0000024113, + 0.0000024155, 0.0000024168, 0.0000024205, 0.0000024335, 0.0000024443, + 0.0000024563, 0.0000024715, 0.0000024842, 0.0000025179, 0.0000025728, + 0.0000026041, 0.0000026134, 0.0000026255, 0.0000026385, 0.0000026442, + 0.0000026436, 0.0000026379, 0.0000026246, 0.0000026121, 0.0000025996, + 0.0000025885, 0.0000025719, 0.0000025566, 0.0000025654, 0.0000025528, + 0.0000025420, 0.0000025647, 0.0000026421, 0.0000027136, 0.0000027645, + 0.0000027764, 0.0000027738, 0.0000027702, 0.0000027712, 0.0000027733, + 0.0000027629, 0.0000027544, 0.0000027564, 0.0000027592, 0.0000027634, + 0.0000027704, 0.0000027698, 0.0000027611, 0.0000027518, 0.0000027474, + 0.0000027468, 0.0000027500, 0.0000027493, 0.0000027440, 0.0000027408, + 0.0000027445, 0.0000027499, 0.0000027529, 0.0000027542, 0.0000027533, + 0.0000027511, 0.0000027455, 0.0000027343, 0.0000027200, 0.0000027114, + 0.0000027049, 0.0000027016, 0.0000026991, 0.0000026988, 0.0000027017, + 0.0000027076, 0.0000027140, 0.0000027194, 0.0000027219, 0.0000027199, + 0.0000027145, 0.0000027051, 0.0000026980, 0.0000026950, 0.0000026950, + 0.0000026946, 0.0000026910, 0.0000026849, 0.0000026784, 0.0000026743, + 0.0000026773, 0.0000026813, 0.0000026773, 0.0000026705, 0.0000026711, + 0.0000026734, 0.0000026698, 0.0000026634, 0.0000026606, 0.0000026624, + 0.0000026692, 0.0000026769, 0.0000026814, 0.0000026824, 0.0000026758, + 0.0000026603, 0.0000026291, 0.0000025928, 0.0000025757, 0.0000025733, + 0.0000025683, 0.0000025600, 0.0000025503, 0.0000025435, 0.0000025369, + 0.0000025277, 0.0000025239, 0.0000025307, 0.0000025385, 0.0000025406, + 0.0000025410, 0.0000025420, 0.0000025429, 0.0000025426, 0.0000025397, + 0.0000025341, 0.0000025254, 0.0000025139, 0.0000025016, 0.0000024907, + 0.0000024825, 0.0000024765, 0.0000024713, 0.0000024676, 0.0000024654, + 0.0000024643, 0.0000024673, 0.0000024737, 0.0000024847, 0.0000025014, + 0.0000025232, 0.0000025453, 0.0000025613, 0.0000025662, 0.0000025628, + 0.0000025527, 0.0000025432, 0.0000025373, 0.0000025365, 0.0000025375, + 0.0000025398, 0.0000025412, 0.0000025480, 0.0000025689, 0.0000025805, + 0.0000025796, 0.0000025818, 0.0000025852, 0.0000025877, 0.0000025840, + 0.0000025765, 0.0000025698, 0.0000025670, 0.0000025743, 0.0000025745, + 0.0000025682, 0.0000025591, 0.0000025498, 0.0000025437, 0.0000025369, + 0.0000025304, 0.0000025286, 0.0000025319, 0.0000025393, 0.0000025464, + 0.0000025481, 0.0000025382, 0.0000025168, 0.0000024999, 0.0000024916, + 0.0000024857, 0.0000024790, 0.0000024817, 0.0000025046, 0.0000025248, + 0.0000025271, 0.0000025323, 0.0000025238, 0.0000025196, 0.0000025237, + 0.0000025121, 0.0000024954, 0.0000024904, 0.0000024949, 0.0000025135, + 0.0000025269, 0.0000025340, 0.0000025684, 0.0000026133, 0.0000026326, + 0.0000026351, 0.0000026341, 0.0000026270, 0.0000026127, 0.0000025957, + 0.0000025826, 0.0000025764, 0.0000025684, 0.0000025666, 0.0000025743, + 0.0000025869, 0.0000025948, 0.0000025968, 0.0000025973, 0.0000025989, + 0.0000026031, 0.0000026077, 0.0000026091, 0.0000026104, 0.0000026111, + 0.0000026103, 0.0000026087, 0.0000026093, 0.0000026132, 0.0000026231, + 0.0000026367, 0.0000026443, 0.0000026436, 0.0000026410, 0.0000026412, + 0.0000026450, 0.0000026501, 0.0000026556, 0.0000026596, 0.0000026609, + 0.0000026628, 0.0000026673, 0.0000026706, 0.0000026725, 0.0000026747, + 0.0000026761, 0.0000026770, 0.0000026778, 0.0000026785, 0.0000026788, + 0.0000026780, 0.0000026761, 0.0000026744, 0.0000026730, 0.0000026715, + 0.0000026693, 0.0000026663, 0.0000026638, 0.0000026624, 0.0000026617, + 0.0000026614, 0.0000026625, 0.0000026653, 0.0000026696, 0.0000026741, + 0.0000026783, 0.0000026827, 0.0000026872, 0.0000026913, 0.0000026948, + 0.0000026955, 0.0000026948, 0.0000026962, 0.0000027004, 0.0000027050, + 0.0000027070, 0.0000027051, 0.0000026963, 0.0000026814, 0.0000026641, + 0.0000026508, 0.0000026478, 0.0000026518, 0.0000026599, 0.0000026671, + 0.0000026740, 0.0000026821, 0.0000026923, 0.0000027050, 0.0000027193, + 0.0000027345, 0.0000027494, 0.0000027622, 0.0000027708, 0.0000027739, + 0.0000027725, 0.0000027690, 0.0000027658, 0.0000027640, 0.0000027635, + 0.0000027650, 0.0000027690, 0.0000027737, 0.0000027772, 0.0000027784, + 0.0000027774, 0.0000027714, 0.0000027635, 0.0000027583, 0.0000027576, + 0.0000027598, 0.0000027599, 0.0000027566, 0.0000027526, 0.0000027466, + 0.0000027388, 0.0000027292, 0.0000027186, 0.0000027097, 0.0000027047, + 0.0000027028, 0.0000027014, 0.0000026990, 0.0000026968, 0.0000026959, + 0.0000026956, 0.0000026936, 0.0000026886, 0.0000026813, 0.0000026737, + 0.0000026669, 0.0000026609, 0.0000026543, 0.0000026466, 0.0000026396, + 0.0000026347, 0.0000026316, 0.0000026304, 0.0000026290, 0.0000026271, + 0.0000026264, 0.0000026280, 0.0000026303, 0.0000026315, 0.0000026322, + 0.0000026340, 0.0000026386, 0.0000026462, 0.0000026568, 0.0000026692, + 0.0000026830, 0.0000026962, 0.0000027093, 0.0000027223, 0.0000027321, + 0.0000027368, 0.0000027419, 0.0000027559, 0.0000027764, 0.0000027937, + 0.0000028024, 0.0000028039, 0.0000028019, 0.0000027980, 0.0000027930, + 0.0000027903, 0.0000027907, 0.0000027956, 0.0000028002, 0.0000027996, + 0.0000027943, 0.0000027895, 0.0000027901, 0.0000027959, 0.0000028061, + 0.0000028147, 0.0000028202, 0.0000028246, 0.0000028278, 0.0000028292, + 0.0000028290, 0.0000028253, 0.0000028165, 0.0000028054, 0.0000027962, + 0.0000027913, 0.0000027892, 0.0000027879, 0.0000027848, 0.0000027797, + 0.0000027754, 0.0000027736, 0.0000027736, 0.0000027733, 0.0000027694, + 0.0000027622, 0.0000027584, 0.0000027620, 0.0000027718, 0.0000027818, + 0.0000027893, 0.0000027946, 0.0000028016, 0.0000028126, 0.0000028215, + 0.0000028223, 0.0000028182, 0.0000028172, 0.0000028210, 0.0000028233, + 0.0000028211, 0.0000028133, 0.0000028030, 0.0000027927, 0.0000027809, + 0.0000027693, 0.0000027626, 0.0000027612, 0.0000027653, 0.0000027762, + 0.0000027861, 0.0000027915, 0.0000027966, 0.0000028021, 0.0000028043, + 0.0000028021, 0.0000027966, 0.0000027918, 0.0000027891, 0.0000027855, + 0.0000027803, 0.0000027756, 0.0000027736, 0.0000027740, 0.0000027747, + 0.0000027739, 0.0000027711, 0.0000027667, 0.0000027615, 0.0000027567, + 0.0000027525, 0.0000027487, 0.0000027449, 0.0000027409, 0.0000027373, + 0.0000027360, 0.0000027354, 0.0000027331, 0.0000027292, 0.0000027262, + 0.0000027249, 0.0000027265, 0.0000027307, 0.0000027365, 0.0000027427, + 0.0000027482, 0.0000027521, 0.0000027545, 0.0000027570, 0.0000027604, + 0.0000027639, 0.0000027672, 0.0000027700, 0.0000027718, 0.0000027728, + 0.0000027735, 0.0000027740, 0.0000027742, 0.0000027746, 0.0000027758, + 0.0000027755, 0.0000027736, 0.0000027697, 0.0000027629, 0.0000027508, + 0.0000027328, 0.0000027143, 0.0000027012, 0.0000026935, 0.0000026892, + 0.0000026862, 0.0000026818, 0.0000026759, 0.0000026692, 0.0000026649, + 0.0000026650, 0.0000026668, 0.0000026678, 0.0000026689, 0.0000026706, + 0.0000026703, 0.0000026697, 0.0000026702, 0.0000026672, 0.0000026643, + 0.0000026629, 0.0000026613, 0.0000026588, 0.0000026563, 0.0000026519, + 0.0000026470, 0.0000026453, 0.0000026457, 0.0000026465, 0.0000026480, + 0.0000026515, 0.0000026557, 0.0000026590, 0.0000026615, 0.0000026637, + 0.0000026651, 0.0000026698, 0.0000026808, 0.0000026936, 0.0000027001, + 0.0000027011, 0.0000027012, 0.0000026988, 0.0000026903, 0.0000026794, + 0.0000026741, 0.0000026791, 0.0000026903, 0.0000026981, 0.0000027040, + 0.0000027048, 0.0000027029, 0.0000026887, 0.0000026342, 0.0000025993, + 0.0000026042, 0.0000026196, 0.0000026514, 0.0000026790, 0.0000026959, + 0.0000027144, 0.0000027511, 0.0000027927, 0.0000028155, 0.0000028217, + 0.0000028229, 0.0000028223, 0.0000028210, 0.0000028174, 0.0000028117, + 0.0000028037, 0.0000027961, 0.0000027934, 0.0000027954, 0.0000027982, + 0.0000027980, 0.0000027978, 0.0000028008, 0.0000028036, 0.0000028019, + 0.0000027982, 0.0000027951, 0.0000027958, 0.0000027976, 0.0000027968, + 0.0000027943, 0.0000027937, 0.0000027963, 0.0000027969, 0.0000027956, + 0.0000027872, 0.0000027772, 0.0000027756, 0.0000027826, 0.0000028032, + 0.0000028248, 0.0000028358, 0.0000028309, 0.0000028160, 0.0000028130, + 0.0000028104, 0.0000028081, 0.0000028060, 0.0000027994, 0.0000028112, + 0.0000028277, 0.0000028390, 0.0000028482, 0.0000028563, 0.0000028665, + 0.0000028727, 0.0000028726, 0.0000028712, 0.0000028695, 0.0000028654, + 0.0000028600, 0.0000028543, 0.0000028486, 0.0000028437, 0.0000028399, + 0.0000028375, 0.0000028340, 0.0000028288, 0.0000028244, 0.0000028208, + 0.0000028153, 0.0000028070, 0.0000027943, 0.0000027764, 0.0000027607, + 0.0000027550, 0.0000027558, 0.0000027574, 0.0000027509, 0.0000027326, + 0.0000027136, 0.0000027043, 0.0000027039, 0.0000027136, 0.0000027333, + 0.0000027560, 0.0000027737, 0.0000027834, 0.0000027876, 0.0000027900, + 0.0000027938, 0.0000027989, 0.0000028005, 0.0000027985, 0.0000027955, + 0.0000027920, 0.0000027853, 0.0000027757, 0.0000027686, 0.0000027625, + 0.0000027481, 0.0000027275, 0.0000027105, 0.0000026970, 0.0000026794, + 0.0000026578, 0.0000026379, 0.0000026200, 0.0000026047, 0.0000025956, + 0.0000025917, 0.0000025892, 0.0000025868, 0.0000025846, 0.0000025842, + 0.0000025834, 0.0000025824, 0.0000025817, 0.0000025808, 0.0000025790, + 0.0000025774, 0.0000025766, 0.0000025753, 0.0000025728, 0.0000025715, + 0.0000025778, 0.0000025952, 0.0000026174, 0.0000026341, 0.0000026438, + 0.0000026509, 0.0000026570, 0.0000026609, 0.0000026617, 0.0000026591, + 0.0000026553, 0.0000026533, 0.0000026540, 0.0000026553, 0.0000026537, + 0.0000026482, 0.0000026430, 0.0000026421, 0.0000026467, 0.0000026559, + 0.0000026659, 0.0000026734, 0.0000026781, 0.0000026813, 0.0000026840, + 0.0000026868, 0.0000026896, 0.0000026932, 0.0000026990, 0.0000027063, + 0.0000027127, 0.0000027178, 0.0000027227, 0.0000027268, 0.0000027291, + 0.0000027294, 0.0000027227, 0.0000027101, 0.0000026943, 0.0000026792, + 0.0000026699, 0.0000026684, 0.0000026731, 0.0000026824, 0.0000026942, + 0.0000027064, 0.0000027160, 0.0000027190, 0.0000027172, 0.0000027150, + 0.0000027146, 0.0000027153, 0.0000027162, 0.0000027177, 0.0000027213, + 0.0000027271, 0.0000027325, 0.0000027361, 0.0000027381, 0.0000027381, + 0.0000027373, 0.0000027394, 0.0000027476, 0.0000027609, 0.0000027743, + 0.0000027845, 0.0000027897, 0.0000027902, 0.0000027891, 0.0000027845, + 0.0000027764, 0.0000027681, 0.0000027635, 0.0000027633, 0.0000027645, + 0.0000027627, 0.0000027577, 0.0000027526, 0.0000027503, 0.0000027506, + 0.0000027508, 0.0000027511, 0.0000027520, 0.0000027527, 0.0000027520, + 0.0000027521, 0.0000027543, 0.0000027579, 0.0000027628, 0.0000027678, + 0.0000027723, 0.0000027751, 0.0000027752, 0.0000027743, 0.0000027732, + 0.0000027712, 0.0000027677, 0.0000027625, 0.0000027579, 0.0000027539, + 0.0000027508, 0.0000027487, 0.0000027469, 0.0000027445, 0.0000027424, + 0.0000027424, 0.0000027450, 0.0000027489, 0.0000027517, 0.0000027519, + 0.0000027486, 0.0000027430, 0.0000027361, 0.0000027287, 0.0000027212, + 0.0000027134, 0.0000027054, 0.0000026980, 0.0000026938, 0.0000026936, + 0.0000026949, 0.0000026953, 0.0000026937, 0.0000026901, 0.0000026856, + 0.0000026827, 0.0000026816, 0.0000026805, 0.0000026784, 0.0000026755, + 0.0000026721, 0.0000026684, 0.0000026653, 0.0000026639, 0.0000026635, + 0.0000026628, 0.0000026616, 0.0000026600, 0.0000026583, 0.0000026571, + 0.0000026563, 0.0000026565, 0.0000026581, 0.0000026588, 0.0000026593, + 0.0000026569, 0.0000026529, 0.0000026486, 0.0000026442, 0.0000026401, + 0.0000026369, 0.0000026341, 0.0000026316, 0.0000026307, 0.0000026322, + 0.0000026333, 0.0000026330, 0.0000026313, 0.0000026285, 0.0000026248, + 0.0000026197, 0.0000026128, 0.0000026050, 0.0000025975, 0.0000025914, + 0.0000025890, 0.0000025902, 0.0000025926, 0.0000025944, 0.0000025950, + 0.0000025949, 0.0000025957, 0.0000025967, 0.0000025962, 0.0000025912, + 0.0000025828, 0.0000025762, 0.0000025725, 0.0000025647, 0.0000025479, + 0.0000025317, 0.0000025272, 0.0000025318, 0.0000025403, 0.0000025427, + 0.0000025317, 0.0000025080, 0.0000024820, 0.0000024668, 0.0000024676, + 0.0000024926, 0.0000025372, 0.0000025702, 0.0000025815, 0.0000025986, + 0.0000026398, 0.0000026867, 0.0000027295, 0.0000027630, 0.0000027692, + 0.0000027621, 0.0000027541, 0.0000027482, 0.0000027501, 0.0000027550, + 0.0000027502, 0.0000027386, 0.0000027327, 0.0000027365, 0.0000027438, + 0.0000027459, 0.0000027445, 0.0000027421, 0.0000027385, 0.0000027349, + 0.0000027313, 0.0000027288, 0.0000027281, 0.0000027256, 0.0000027211, + 0.0000027196, 0.0000027181, 0.0000027109, 0.0000027009, 0.0000026932, + 0.0000026912, 0.0000026918, 0.0000026928, 0.0000026994, 0.0000027078, + 0.0000027088, 0.0000027062, 0.0000027098, 0.0000027227, 0.0000027355, + 0.0000027416, 0.0000027428, 0.0000027420, 0.0000027411, 0.0000027407, + 0.0000027398, 0.0000027389, 0.0000027385, 0.0000027338, 0.0000027251, + 0.0000027163, 0.0000027103, 0.0000027069, 0.0000027040, 0.0000027018, + 0.0000026957, 0.0000026882, 0.0000026872, 0.0000026968, 0.0000027071, + 0.0000027117, 0.0000027174, 0.0000027192, 0.0000027077, 0.0000026941, + 0.0000026881, 0.0000026831, 0.0000026798, 0.0000026765, 0.0000026752, + 0.0000026761, 0.0000026739, 0.0000026682, 0.0000026670, 0.0000026685, + 0.0000026661, 0.0000026585, 0.0000026522, 0.0000026483, 0.0000026446, + 0.0000026398, 0.0000026380, 0.0000026381, 0.0000026356, 0.0000026307, + 0.0000026278, 0.0000026272, 0.0000026255, 0.0000026225, 0.0000026200, + 0.0000026150, 0.0000026048, 0.0000025915, 0.0000025788, 0.0000025696, + 0.0000025653, 0.0000025652, 0.0000025690, 0.0000025741, 0.0000025775, + 0.0000025781, 0.0000025758, 0.0000025719, 0.0000025694, 0.0000025700, + 0.0000025720, 0.0000025682, 0.0000025501, 0.0000025293, 0.0000025177, + 0.0000025093, 0.0000025009, 0.0000024946, 0.0000024865, 0.0000024725, + 0.0000024557, 0.0000024406, 0.0000024283, 0.0000024186, 0.0000024108, + 0.0000024033, 0.0000023959, 0.0000023898, 0.0000023856, 0.0000023829, + 0.0000023826, 0.0000023837, 0.0000023854, 0.0000023870, 0.0000023878, + 0.0000023892, 0.0000023923, 0.0000023972, 0.0000024056, 0.0000024117, + 0.0000024132, 0.0000024235, 0.0000024386, 0.0000024512, 0.0000024673, + 0.0000024776, 0.0000024957, 0.0000025425, 0.0000025879, 0.0000026049, + 0.0000026143, 0.0000026283, 0.0000026385, 0.0000026404, 0.0000026389, + 0.0000026302, 0.0000026160, 0.0000026062, 0.0000025946, 0.0000025796, + 0.0000025598, 0.0000025643, 0.0000025581, 0.0000025423, 0.0000025605, + 0.0000026367, 0.0000027088, 0.0000027609, 0.0000027752, 0.0000027730, + 0.0000027693, 0.0000027720, 0.0000027740, 0.0000027626, 0.0000027571, + 0.0000027598, 0.0000027622, 0.0000027667, 0.0000027734, 0.0000027726, + 0.0000027643, 0.0000027538, 0.0000027483, 0.0000027465, 0.0000027497, + 0.0000027516, 0.0000027488, 0.0000027447, 0.0000027464, 0.0000027513, + 0.0000027547, 0.0000027552, 0.0000027538, 0.0000027505, 0.0000027447, + 0.0000027354, 0.0000027230, 0.0000027163, 0.0000027067, 0.0000026987, + 0.0000026927, 0.0000026895, 0.0000026896, 0.0000026946, 0.0000027022, + 0.0000027104, 0.0000027175, 0.0000027188, 0.0000027166, 0.0000027108, + 0.0000027034, 0.0000026976, 0.0000026959, 0.0000026949, 0.0000026928, + 0.0000026889, 0.0000026852, 0.0000026803, 0.0000026760, 0.0000026790, + 0.0000026818, 0.0000026759, 0.0000026715, 0.0000026744, 0.0000026755, + 0.0000026709, 0.0000026655, 0.0000026659, 0.0000026719, 0.0000026801, + 0.0000026844, 0.0000026850, 0.0000026775, 0.0000026578, 0.0000026218, + 0.0000025857, 0.0000025725, 0.0000025691, 0.0000025607, 0.0000025507, + 0.0000025433, 0.0000025371, 0.0000025267, 0.0000025181, 0.0000025235, + 0.0000025356, 0.0000025398, 0.0000025410, 0.0000025428, 0.0000025433, + 0.0000025421, 0.0000025405, 0.0000025381, 0.0000025342, 0.0000025271, + 0.0000025158, 0.0000025032, 0.0000024915, 0.0000024820, 0.0000024757, + 0.0000024704, 0.0000024664, 0.0000024643, 0.0000024631, 0.0000024642, + 0.0000024661, 0.0000024686, 0.0000024715, 0.0000024791, 0.0000024937, + 0.0000025170, 0.0000025425, 0.0000025604, 0.0000025641, 0.0000025606, + 0.0000025516, 0.0000025441, 0.0000025412, 0.0000025420, 0.0000025441, + 0.0000025496, 0.0000025657, 0.0000025826, 0.0000025838, 0.0000025826, + 0.0000025836, 0.0000025878, 0.0000025877, 0.0000025818, 0.0000025736, + 0.0000025653, 0.0000025644, 0.0000025734, 0.0000025723, 0.0000025634, + 0.0000025529, 0.0000025462, 0.0000025416, 0.0000025371, 0.0000025312, + 0.0000025285, 0.0000025298, 0.0000025343, 0.0000025406, 0.0000025457, + 0.0000025435, 0.0000025303, 0.0000025100, 0.0000024956, 0.0000024893, + 0.0000024802, 0.0000024763, 0.0000024943, 0.0000025202, 0.0000025239, + 0.0000025292, 0.0000025258, 0.0000025148, 0.0000025197, 0.0000025173, + 0.0000025006, 0.0000024900, 0.0000024886, 0.0000025017, 0.0000025221, + 0.0000025278, 0.0000025428, 0.0000025853, 0.0000026213, 0.0000026330, + 0.0000026338, 0.0000026309, 0.0000026200, 0.0000026030, 0.0000025847, + 0.0000025764, 0.0000025720, 0.0000025665, 0.0000025681, 0.0000025780, + 0.0000025872, 0.0000025911, 0.0000025934, 0.0000025973, 0.0000026031, + 0.0000026075, 0.0000026098, 0.0000026123, 0.0000026124, 0.0000026098, + 0.0000026072, 0.0000026073, 0.0000026103, 0.0000026179, 0.0000026294, + 0.0000026393, 0.0000026427, 0.0000026418, 0.0000026411, 0.0000026428, + 0.0000026469, 0.0000026525, 0.0000026559, 0.0000026564, 0.0000026573, + 0.0000026606, 0.0000026631, 0.0000026650, 0.0000026673, 0.0000026691, + 0.0000026707, 0.0000026722, 0.0000026739, 0.0000026752, 0.0000026752, + 0.0000026738, 0.0000026731, 0.0000026726, 0.0000026718, 0.0000026699, + 0.0000026666, 0.0000026635, 0.0000026614, 0.0000026606, 0.0000026606, + 0.0000026620, 0.0000026643, 0.0000026676, 0.0000026713, 0.0000026752, + 0.0000026800, 0.0000026847, 0.0000026884, 0.0000026909, 0.0000026909, + 0.0000026882, 0.0000026858, 0.0000026864, 0.0000026895, 0.0000026914, + 0.0000026904, 0.0000026847, 0.0000026746, 0.0000026618, 0.0000026502, + 0.0000026461, 0.0000026493, 0.0000026554, 0.0000026603, 0.0000026665, + 0.0000026757, 0.0000026872, 0.0000027012, 0.0000027172, 0.0000027340, + 0.0000027498, 0.0000027631, 0.0000027716, 0.0000027738, 0.0000027716, + 0.0000027671, 0.0000027629, 0.0000027598, 0.0000027584, 0.0000027596, + 0.0000027638, 0.0000027696, 0.0000027754, 0.0000027789, 0.0000027783, + 0.0000027714, 0.0000027627, 0.0000027574, 0.0000027550, 0.0000027535, + 0.0000027512, 0.0000027459, 0.0000027404, 0.0000027345, 0.0000027274, + 0.0000027184, 0.0000027077, 0.0000026974, 0.0000026914, 0.0000026908, + 0.0000026923, 0.0000026937, 0.0000026942, 0.0000026936, 0.0000026921, + 0.0000026883, 0.0000026809, 0.0000026707, 0.0000026601, 0.0000026519, + 0.0000026462, 0.0000026413, 0.0000026354, 0.0000026307, 0.0000026282, + 0.0000026271, 0.0000026268, 0.0000026254, 0.0000026223, 0.0000026193, + 0.0000026184, 0.0000026190, 0.0000026193, 0.0000026185, 0.0000026183, + 0.0000026209, 0.0000026275, 0.0000026377, 0.0000026511, 0.0000026668, + 0.0000026822, 0.0000026970, 0.0000027099, 0.0000027212, 0.0000027298, + 0.0000027350, 0.0000027420, 0.0000027574, 0.0000027778, 0.0000027950, + 0.0000028041, 0.0000028049, 0.0000028016, 0.0000027958, 0.0000027908, + 0.0000027895, 0.0000027926, 0.0000027985, 0.0000028018, 0.0000028007, + 0.0000027959, 0.0000027918, 0.0000027925, 0.0000027979, 0.0000028040, + 0.0000028110, 0.0000028164, 0.0000028202, 0.0000028230, 0.0000028248, + 0.0000028245, 0.0000028201, 0.0000028116, 0.0000028037, 0.0000027985, + 0.0000027940, 0.0000027878, 0.0000027803, 0.0000027736, 0.0000027701, + 0.0000027677, 0.0000027652, 0.0000027645, 0.0000027649, 0.0000027632, + 0.0000027586, 0.0000027572, 0.0000027637, 0.0000027748, 0.0000027838, + 0.0000027889, 0.0000027941, 0.0000028035, 0.0000028157, 0.0000028238, + 0.0000028231, 0.0000028173, 0.0000028168, 0.0000028219, 0.0000028249, + 0.0000028226, 0.0000028144, 0.0000028039, 0.0000027935, 0.0000027819, + 0.0000027704, 0.0000027630, 0.0000027602, 0.0000027634, 0.0000027737, + 0.0000027842, 0.0000027908, 0.0000027964, 0.0000028010, 0.0000028018, + 0.0000027981, 0.0000027918, 0.0000027869, 0.0000027839, 0.0000027805, + 0.0000027752, 0.0000027701, 0.0000027691, 0.0000027707, 0.0000027719, + 0.0000027704, 0.0000027652, 0.0000027577, 0.0000027503, 0.0000027445, + 0.0000027400, 0.0000027358, 0.0000027315, 0.0000027268, 0.0000027237, + 0.0000027237, 0.0000027249, 0.0000027248, 0.0000027237, 0.0000027222, + 0.0000027212, 0.0000027221, 0.0000027251, 0.0000027297, 0.0000027347, + 0.0000027389, 0.0000027416, 0.0000027438, 0.0000027474, 0.0000027522, + 0.0000027569, 0.0000027614, 0.0000027652, 0.0000027677, 0.0000027693, + 0.0000027703, 0.0000027706, 0.0000027704, 0.0000027710, 0.0000027725, + 0.0000027728, 0.0000027711, 0.0000027675, 0.0000027612, 0.0000027504, + 0.0000027353, 0.0000027205, 0.0000027117, 0.0000027097, 0.0000027109, + 0.0000027121, 0.0000027099, 0.0000027042, 0.0000026971, 0.0000026923, + 0.0000026895, 0.0000026872, 0.0000026848, 0.0000026830, 0.0000026810, + 0.0000026787, 0.0000026768, 0.0000026730, 0.0000026679, 0.0000026632, + 0.0000026620, 0.0000026611, 0.0000026594, 0.0000026573, 0.0000026537, + 0.0000026505, 0.0000026497, 0.0000026494, 0.0000026489, 0.0000026488, + 0.0000026507, 0.0000026536, 0.0000026567, 0.0000026591, 0.0000026614, + 0.0000026630, 0.0000026677, 0.0000026769, 0.0000026882, 0.0000026947, + 0.0000026970, 0.0000026987, 0.0000026980, 0.0000026907, 0.0000026781, + 0.0000026714, 0.0000026747, 0.0000026866, 0.0000026957, 0.0000026999, + 0.0000027029, 0.0000027026, 0.0000026998, 0.0000026723, 0.0000026158, + 0.0000026010, 0.0000026069, 0.0000026233, 0.0000026560, 0.0000026835, + 0.0000027021, 0.0000027216, 0.0000027563, 0.0000027911, 0.0000028100, + 0.0000028171, 0.0000028178, 0.0000028164, 0.0000028127, 0.0000028070, + 0.0000027987, 0.0000027903, 0.0000027863, 0.0000027875, 0.0000027906, + 0.0000027911, 0.0000027907, 0.0000027951, 0.0000028004, 0.0000028003, + 0.0000027957, 0.0000027906, 0.0000027916, 0.0000027959, 0.0000027969, + 0.0000027939, 0.0000027914, 0.0000027947, 0.0000027967, 0.0000027959, + 0.0000027902, 0.0000027787, 0.0000027746, 0.0000027783, 0.0000027948, + 0.0000028180, 0.0000028346, 0.0000028363, 0.0000028213, 0.0000028109, + 0.0000028115, 0.0000028061, 0.0000028042, 0.0000027980, 0.0000027987, + 0.0000028161, 0.0000028299, 0.0000028398, 0.0000028488, 0.0000028562, + 0.0000028658, 0.0000028719, 0.0000028720, 0.0000028699, 0.0000028655, + 0.0000028598, 0.0000028546, 0.0000028496, 0.0000028446, 0.0000028398, + 0.0000028340, 0.0000028279, 0.0000028228, 0.0000028193, 0.0000028154, + 0.0000028077, 0.0000027959, 0.0000027805, 0.0000027654, 0.0000027576, + 0.0000027571, 0.0000027609, 0.0000027612, 0.0000027517, 0.0000027297, + 0.0000027087, 0.0000026978, 0.0000026959, 0.0000027014, 0.0000027184, + 0.0000027402, 0.0000027593, 0.0000027736, 0.0000027835, 0.0000027893, + 0.0000027946, 0.0000028003, 0.0000028033, 0.0000028029, 0.0000028014, + 0.0000027993, 0.0000027939, 0.0000027834, 0.0000027728, 0.0000027634, + 0.0000027478, 0.0000027256, 0.0000027058, 0.0000026914, 0.0000026764, + 0.0000026572, 0.0000026365, 0.0000026169, 0.0000026014, 0.0000025937, + 0.0000025913, 0.0000025887, 0.0000025862, 0.0000025851, 0.0000025859, + 0.0000025867, 0.0000025857, 0.0000025834, 0.0000025806, 0.0000025780, + 0.0000025761, 0.0000025753, 0.0000025745, 0.0000025722, 0.0000025682, + 0.0000025646, 0.0000025647, 0.0000025752, 0.0000025970, 0.0000026212, + 0.0000026390, 0.0000026478, 0.0000026512, 0.0000026532, 0.0000026548, + 0.0000026550, 0.0000026529, 0.0000026501, 0.0000026487, 0.0000026473, + 0.0000026426, 0.0000026352, 0.0000026305, 0.0000026322, 0.0000026409, + 0.0000026527, 0.0000026609, 0.0000026641, 0.0000026647, 0.0000026650, + 0.0000026661, 0.0000026685, 0.0000026715, 0.0000026751, 0.0000026807, + 0.0000026882, 0.0000026962, 0.0000027042, 0.0000027126, 0.0000027205, + 0.0000027266, 0.0000027302, 0.0000027304, 0.0000027279, 0.0000027214, + 0.0000027069, 0.0000026897, 0.0000026759, 0.0000026702, 0.0000026709, + 0.0000026764, 0.0000026865, 0.0000026991, 0.0000027092, 0.0000027130, + 0.0000027126, 0.0000027126, 0.0000027136, 0.0000027139, 0.0000027127, + 0.0000027108, 0.0000027106, 0.0000027139, 0.0000027221, 0.0000027331, + 0.0000027404, 0.0000027409, 0.0000027396, 0.0000027406, 0.0000027475, + 0.0000027588, 0.0000027712, 0.0000027812, 0.0000027865, 0.0000027871, + 0.0000027852, 0.0000027819, 0.0000027768, 0.0000027718, 0.0000027693, + 0.0000027690, 0.0000027675, 0.0000027636, 0.0000027593, 0.0000027556, + 0.0000027527, 0.0000027507, 0.0000027508, 0.0000027521, 0.0000027525, + 0.0000027514, 0.0000027501, 0.0000027505, 0.0000027529, 0.0000027574, + 0.0000027631, 0.0000027695, 0.0000027745, 0.0000027758, 0.0000027762, + 0.0000027762, 0.0000027758, 0.0000027740, 0.0000027701, 0.0000027654, + 0.0000027603, 0.0000027559, 0.0000027544, 0.0000027542, 0.0000027543, + 0.0000027549, 0.0000027564, 0.0000027586, 0.0000027614, 0.0000027646, + 0.0000027667, 0.0000027670, 0.0000027654, 0.0000027613, 0.0000027545, + 0.0000027451, 0.0000027338, 0.0000027222, 0.0000027118, 0.0000027037, + 0.0000026993, 0.0000026974, 0.0000026957, 0.0000026931, 0.0000026884, + 0.0000026826, 0.0000026780, 0.0000026755, 0.0000026741, 0.0000026724, + 0.0000026695, 0.0000026654, 0.0000026615, 0.0000026584, 0.0000026560, + 0.0000026544, 0.0000026542, 0.0000026549, 0.0000026549, 0.0000026522, + 0.0000026477, 0.0000026436, 0.0000026427, 0.0000026460, 0.0000026521, + 0.0000026566, 0.0000026571, 0.0000026545, 0.0000026505, 0.0000026458, + 0.0000026422, 0.0000026401, 0.0000026388, 0.0000026379, 0.0000026378, + 0.0000026389, 0.0000026388, 0.0000026368, 0.0000026334, 0.0000026292, + 0.0000026243, 0.0000026186, 0.0000026118, 0.0000026044, 0.0000025970, + 0.0000025911, 0.0000025884, 0.0000025897, 0.0000025937, 0.0000025973, + 0.0000025973, 0.0000025941, 0.0000025920, 0.0000025926, 0.0000025933, + 0.0000025898, 0.0000025808, 0.0000025731, 0.0000025698, 0.0000025627, + 0.0000025466, 0.0000025306, 0.0000025243, 0.0000025269, 0.0000025347, + 0.0000025381, 0.0000025312, 0.0000025101, 0.0000024835, 0.0000024620, + 0.0000024571, 0.0000024750, 0.0000025209, 0.0000025636, 0.0000025790, + 0.0000025933, 0.0000026325, 0.0000026807, 0.0000027250, 0.0000027601, + 0.0000027698, 0.0000027647, 0.0000027546, 0.0000027456, 0.0000027457, + 0.0000027471, 0.0000027424, 0.0000027366, 0.0000027360, 0.0000027396, + 0.0000027479, 0.0000027522, 0.0000027523, 0.0000027511, 0.0000027486, + 0.0000027451, 0.0000027414, 0.0000027372, 0.0000027340, 0.0000027310, + 0.0000027256, 0.0000027211, 0.0000027203, 0.0000027170, 0.0000027078, + 0.0000026978, 0.0000026914, 0.0000026905, 0.0000026910, 0.0000026939, + 0.0000027040, 0.0000027128, 0.0000027125, 0.0000027079, 0.0000027086, + 0.0000027173, 0.0000027277, 0.0000027342, 0.0000027370, 0.0000027377, + 0.0000027379, 0.0000027359, 0.0000027325, 0.0000027307, 0.0000027259, + 0.0000027177, 0.0000027109, 0.0000027091, 0.0000027091, 0.0000027078, + 0.0000027044, 0.0000026965, 0.0000026880, 0.0000026870, 0.0000026954, + 0.0000027059, 0.0000027100, 0.0000027153, 0.0000027182, 0.0000027068, + 0.0000026921, 0.0000026881, 0.0000026847, 0.0000026813, 0.0000026779, + 0.0000026766, 0.0000026784, 0.0000026758, 0.0000026695, 0.0000026685, + 0.0000026696, 0.0000026661, 0.0000026563, 0.0000026492, 0.0000026453, + 0.0000026409, 0.0000026360, 0.0000026358, 0.0000026383, 0.0000026378, + 0.0000026330, 0.0000026292, 0.0000026278, 0.0000026256, 0.0000026224, + 0.0000026189, 0.0000026103, 0.0000025943, 0.0000025747, 0.0000025565, + 0.0000025425, 0.0000025336, 0.0000025305, 0.0000025322, 0.0000025383, + 0.0000025477, 0.0000025581, 0.0000025661, 0.0000025689, 0.0000025682, + 0.0000025671, 0.0000025675, 0.0000025672, 0.0000025574, 0.0000025370, + 0.0000025190, 0.0000025086, 0.0000025000, 0.0000024938, 0.0000024905, + 0.0000024819, 0.0000024643, 0.0000024450, 0.0000024293, 0.0000024167, + 0.0000024059, 0.0000023968, 0.0000023893, 0.0000023844, 0.0000023820, + 0.0000023811, 0.0000023813, 0.0000023827, 0.0000023842, 0.0000023851, + 0.0000023845, 0.0000023818, 0.0000023795, 0.0000023793, 0.0000023821, + 0.0000023908, 0.0000024022, 0.0000024074, 0.0000024145, 0.0000024313, + 0.0000024460, 0.0000024611, 0.0000024722, 0.0000024798, 0.0000025089, + 0.0000025593, 0.0000025927, 0.0000026044, 0.0000026153, 0.0000026283, + 0.0000026356, 0.0000026380, 0.0000026352, 0.0000026218, 0.0000026114, + 0.0000025995, 0.0000025852, 0.0000025636, 0.0000025636, 0.0000025621, + 0.0000025435, 0.0000025581, 0.0000026328, 0.0000027048, 0.0000027572, + 0.0000027743, 0.0000027726, 0.0000027690, 0.0000027727, 0.0000027745, + 0.0000027627, 0.0000027595, 0.0000027631, 0.0000027647, 0.0000027691, + 0.0000027753, 0.0000027752, 0.0000027682, 0.0000027567, 0.0000027498, + 0.0000027473, 0.0000027497, 0.0000027531, 0.0000027531, 0.0000027500, + 0.0000027502, 0.0000027540, 0.0000027572, 0.0000027571, 0.0000027547, + 0.0000027495, 0.0000027420, 0.0000027340, 0.0000027254, 0.0000027195, + 0.0000027108, 0.0000027000, 0.0000026910, 0.0000026861, 0.0000026842, + 0.0000026872, 0.0000026941, 0.0000027026, 0.0000027106, 0.0000027138, + 0.0000027137, 0.0000027112, 0.0000027063, 0.0000027001, 0.0000026974, + 0.0000026961, 0.0000026928, 0.0000026875, 0.0000026845, 0.0000026842, + 0.0000026806, 0.0000026767, 0.0000026798, 0.0000026808, 0.0000026751, + 0.0000026740, 0.0000026764, 0.0000026758, 0.0000026706, 0.0000026693, + 0.0000026734, 0.0000026810, 0.0000026851, 0.0000026854, 0.0000026765, + 0.0000026547, 0.0000026168, 0.0000025823, 0.0000025705, 0.0000025654, + 0.0000025548, 0.0000025444, 0.0000025386, 0.0000025320, 0.0000025191, + 0.0000025159, 0.0000025287, 0.0000025377, 0.0000025384, 0.0000025415, + 0.0000025445, 0.0000025429, 0.0000025408, 0.0000025402, 0.0000025399, + 0.0000025391, 0.0000025349, 0.0000025246, 0.0000025101, 0.0000024953, + 0.0000024831, 0.0000024744, 0.0000024676, 0.0000024626, 0.0000024601, + 0.0000024597, 0.0000024614, 0.0000024639, 0.0000024669, 0.0000024698, + 0.0000024714, 0.0000024726, 0.0000024765, 0.0000024921, 0.0000025190, + 0.0000025457, 0.0000025604, 0.0000025618, 0.0000025588, 0.0000025562, + 0.0000025552, 0.0000025558, 0.0000025583, 0.0000025679, 0.0000025819, + 0.0000025871, 0.0000025857, 0.0000025844, 0.0000025863, 0.0000025890, + 0.0000025866, 0.0000025801, 0.0000025690, 0.0000025611, 0.0000025642, + 0.0000025730, 0.0000025692, 0.0000025588, 0.0000025513, 0.0000025452, + 0.0000025415, 0.0000025383, 0.0000025340, 0.0000025317, 0.0000025319, + 0.0000025334, 0.0000025365, 0.0000025413, 0.0000025430, 0.0000025392, + 0.0000025225, 0.0000025043, 0.0000024939, 0.0000024819, 0.0000024729, + 0.0000024845, 0.0000025135, 0.0000025215, 0.0000025248, 0.0000025276, + 0.0000025147, 0.0000025131, 0.0000025191, 0.0000025084, 0.0000024925, + 0.0000024864, 0.0000024915, 0.0000025103, 0.0000025239, 0.0000025285, + 0.0000025530, 0.0000025986, 0.0000026246, 0.0000026324, 0.0000026321, + 0.0000026269, 0.0000026120, 0.0000025919, 0.0000025774, 0.0000025746, + 0.0000025691, 0.0000025639, 0.0000025679, 0.0000025780, 0.0000025847, + 0.0000025889, 0.0000025954, 0.0000026011, 0.0000026058, 0.0000026098, + 0.0000026127, 0.0000026123, 0.0000026091, 0.0000026056, 0.0000026042, + 0.0000026056, 0.0000026108, 0.0000026203, 0.0000026320, 0.0000026403, + 0.0000026427, 0.0000026436, 0.0000026444, 0.0000026476, 0.0000026522, + 0.0000026537, 0.0000026535, 0.0000026533, 0.0000026556, 0.0000026576, + 0.0000026597, 0.0000026620, 0.0000026639, 0.0000026657, 0.0000026679, + 0.0000026702, 0.0000026721, 0.0000026729, 0.0000026722, 0.0000026721, + 0.0000026722, 0.0000026720, 0.0000026704, 0.0000026672, 0.0000026631, + 0.0000026591, 0.0000026567, 0.0000026562, 0.0000026575, 0.0000026601, + 0.0000026638, 0.0000026680, 0.0000026722, 0.0000026767, 0.0000026813, + 0.0000026849, 0.0000026868, 0.0000026865, 0.0000026831, 0.0000026777, + 0.0000026741, 0.0000026736, 0.0000026743, 0.0000026746, 0.0000026730, + 0.0000026688, 0.0000026617, 0.0000026527, 0.0000026470, 0.0000026478, + 0.0000026519, 0.0000026558, 0.0000026621, 0.0000026727, 0.0000026868, + 0.0000027043, 0.0000027233, 0.0000027401, 0.0000027530, 0.0000027628, + 0.0000027702, 0.0000027733, 0.0000027707, 0.0000027645, 0.0000027581, + 0.0000027535, 0.0000027518, 0.0000027541, 0.0000027605, 0.0000027690, + 0.0000027768, 0.0000027802, 0.0000027782, 0.0000027706, 0.0000027631, + 0.0000027586, 0.0000027552, 0.0000027513, 0.0000027462, 0.0000027397, + 0.0000027324, 0.0000027247, 0.0000027161, 0.0000027071, 0.0000026982, + 0.0000026907, 0.0000026877, 0.0000026889, 0.0000026914, 0.0000026925, + 0.0000026903, 0.0000026855, 0.0000026798, 0.0000026735, 0.0000026652, + 0.0000026542, 0.0000026425, 0.0000026334, 0.0000026280, 0.0000026249, + 0.0000026219, 0.0000026200, 0.0000026206, 0.0000026227, 0.0000026250, + 0.0000026248, 0.0000026211, 0.0000026161, 0.0000026130, 0.0000026123, + 0.0000026126, 0.0000026125, 0.0000026120, 0.0000026129, 0.0000026177, + 0.0000026253, 0.0000026362, 0.0000026507, 0.0000026680, 0.0000026870, + 0.0000027031, 0.0000027134, 0.0000027201, 0.0000027266, 0.0000027343, + 0.0000027457, 0.0000027629, 0.0000027825, 0.0000027987, 0.0000028063, + 0.0000028061, 0.0000028016, 0.0000027949, 0.0000027909, 0.0000027918, + 0.0000027970, 0.0000028022, 0.0000028042, 0.0000028035, 0.0000028010, + 0.0000027998, 0.0000028005, 0.0000028034, 0.0000028082, 0.0000028128, + 0.0000028159, 0.0000028178, 0.0000028201, 0.0000028214, 0.0000028203, + 0.0000028151, 0.0000028086, 0.0000028026, 0.0000027957, 0.0000027865, + 0.0000027767, 0.0000027678, 0.0000027629, 0.0000027605, 0.0000027565, + 0.0000027536, 0.0000027548, 0.0000027583, 0.0000027578, 0.0000027540, + 0.0000027556, 0.0000027662, 0.0000027789, 0.0000027859, 0.0000027884, + 0.0000027940, 0.0000028058, 0.0000028177, 0.0000028241, 0.0000028219, + 0.0000028159, 0.0000028163, 0.0000028223, 0.0000028256, 0.0000028232, + 0.0000028150, 0.0000028046, 0.0000027946, 0.0000027842, 0.0000027741, + 0.0000027658, 0.0000027603, 0.0000027616, 0.0000027724, 0.0000027843, + 0.0000027925, 0.0000027984, 0.0000028012, 0.0000028004, 0.0000027953, + 0.0000027889, 0.0000027841, 0.0000027801, 0.0000027762, 0.0000027714, + 0.0000027674, 0.0000027661, 0.0000027666, 0.0000027657, 0.0000027613, + 0.0000027540, 0.0000027460, 0.0000027393, 0.0000027347, 0.0000027316, + 0.0000027278, 0.0000027231, 0.0000027176, 0.0000027140, 0.0000027134, + 0.0000027139, 0.0000027147, 0.0000027154, 0.0000027154, 0.0000027161, + 0.0000027184, 0.0000027215, 0.0000027250, 0.0000027278, 0.0000027295, + 0.0000027303, 0.0000027320, 0.0000027357, 0.0000027403, 0.0000027451, + 0.0000027502, 0.0000027554, 0.0000027599, 0.0000027636, 0.0000027659, + 0.0000027672, 0.0000027673, 0.0000027680, 0.0000027700, 0.0000027708, + 0.0000027696, 0.0000027666, 0.0000027611, 0.0000027531, 0.0000027427, + 0.0000027322, 0.0000027264, 0.0000027262, 0.0000027286, 0.0000027300, + 0.0000027281, 0.0000027219, 0.0000027145, 0.0000027095, 0.0000027054, + 0.0000027022, 0.0000026997, 0.0000026976, 0.0000026957, 0.0000026941, + 0.0000026906, 0.0000026838, 0.0000026765, 0.0000026714, 0.0000026693, + 0.0000026680, 0.0000026660, 0.0000026633, 0.0000026599, 0.0000026565, + 0.0000026545, 0.0000026521, 0.0000026501, 0.0000026499, 0.0000026512, + 0.0000026546, 0.0000026579, 0.0000026606, 0.0000026633, 0.0000026657, + 0.0000026707, 0.0000026789, 0.0000026878, 0.0000026920, 0.0000026938, + 0.0000026961, 0.0000026969, 0.0000026903, 0.0000026769, 0.0000026705, + 0.0000026726, 0.0000026821, 0.0000026928, 0.0000026967, 0.0000026979, + 0.0000027006, 0.0000026995, 0.0000026948, 0.0000026524, 0.0000026062, + 0.0000026012, 0.0000026068, 0.0000026261, 0.0000026612, 0.0000026906, + 0.0000027089, 0.0000027267, 0.0000027562, 0.0000027852, 0.0000028030, + 0.0000028098, 0.0000028107, 0.0000028084, 0.0000028036, 0.0000027964, + 0.0000027893, 0.0000027854, 0.0000027863, 0.0000027884, 0.0000027883, + 0.0000027867, 0.0000027904, 0.0000027978, 0.0000028003, 0.0000027974, + 0.0000027910, 0.0000027898, 0.0000027939, 0.0000027964, 0.0000027941, + 0.0000027900, 0.0000027923, 0.0000027964, 0.0000027959, 0.0000027920, + 0.0000027816, 0.0000027750, 0.0000027772, 0.0000027894, 0.0000028116, + 0.0000028312, 0.0000028375, 0.0000028276, 0.0000028109, 0.0000028095, + 0.0000028073, 0.0000028016, 0.0000027987, 0.0000027933, 0.0000028024, + 0.0000028203, 0.0000028306, 0.0000028402, 0.0000028477, 0.0000028544, + 0.0000028628, 0.0000028687, 0.0000028704, 0.0000028673, 0.0000028618, + 0.0000028563, 0.0000028496, 0.0000028424, 0.0000028343, 0.0000028260, + 0.0000028198, 0.0000028165, 0.0000028135, 0.0000028072, 0.0000027964, + 0.0000027827, 0.0000027693, 0.0000027613, 0.0000027597, 0.0000027625, + 0.0000027657, 0.0000027627, 0.0000027484, 0.0000027254, 0.0000027050, + 0.0000026933, 0.0000026898, 0.0000026915, 0.0000027037, 0.0000027228, + 0.0000027411, 0.0000027570, 0.0000027717, 0.0000027830, 0.0000027908, + 0.0000027977, 0.0000028025, 0.0000028033, 0.0000028026, 0.0000028014, + 0.0000027975, 0.0000027885, 0.0000027773, 0.0000027666, 0.0000027511, + 0.0000027293, 0.0000027084, 0.0000026923, 0.0000026775, 0.0000026592, + 0.0000026372, 0.0000026153, 0.0000025996, 0.0000025934, 0.0000025923, + 0.0000025907, 0.0000025891, 0.0000025898, 0.0000025920, 0.0000025933, + 0.0000025915, 0.0000025875, 0.0000025822, 0.0000025769, 0.0000025733, + 0.0000025716, 0.0000025712, 0.0000025702, 0.0000025675, 0.0000025638, + 0.0000025608, 0.0000025587, 0.0000025602, 0.0000025736, 0.0000025990, + 0.0000026254, 0.0000026413, 0.0000026458, 0.0000026459, 0.0000026462, + 0.0000026474, 0.0000026483, 0.0000026486, 0.0000026478, 0.0000026447, + 0.0000026375, 0.0000026286, 0.0000026236, 0.0000026262, 0.0000026359, + 0.0000026468, 0.0000026526, 0.0000026533, 0.0000026516, 0.0000026487, + 0.0000026471, 0.0000026477, 0.0000026507, 0.0000026556, 0.0000026621, + 0.0000026702, 0.0000026788, 0.0000026871, 0.0000026953, 0.0000027035, + 0.0000027118, 0.0000027192, 0.0000027246, 0.0000027278, 0.0000027284, + 0.0000027242, 0.0000027163, 0.0000027010, 0.0000026858, 0.0000026756, + 0.0000026726, 0.0000026745, 0.0000026817, 0.0000026930, 0.0000027026, + 0.0000027069, 0.0000027080, 0.0000027093, 0.0000027110, 0.0000027114, + 0.0000027097, 0.0000027064, 0.0000027040, 0.0000027067, 0.0000027175, + 0.0000027335, 0.0000027442, 0.0000027463, 0.0000027443, 0.0000027442, + 0.0000027491, 0.0000027581, 0.0000027681, 0.0000027760, 0.0000027803, + 0.0000027814, 0.0000027801, 0.0000027769, 0.0000027744, 0.0000027731, + 0.0000027728, 0.0000027719, 0.0000027702, 0.0000027687, 0.0000027660, + 0.0000027609, 0.0000027551, 0.0000027526, 0.0000027540, 0.0000027556, + 0.0000027549, 0.0000027520, 0.0000027501, 0.0000027493, 0.0000027513, + 0.0000027560, 0.0000027635, 0.0000027711, 0.0000027745, 0.0000027757, + 0.0000027773, 0.0000027786, 0.0000027778, 0.0000027746, 0.0000027699, + 0.0000027647, 0.0000027597, 0.0000027575, 0.0000027574, 0.0000027589, + 0.0000027621, 0.0000027659, 0.0000027685, 0.0000027705, 0.0000027716, + 0.0000027718, 0.0000027721, 0.0000027738, 0.0000027753, 0.0000027746, + 0.0000027689, 0.0000027573, 0.0000027427, 0.0000027287, 0.0000027181, + 0.0000027112, 0.0000027058, 0.0000027000, 0.0000026940, 0.0000026882, + 0.0000026823, 0.0000026776, 0.0000026745, 0.0000026725, 0.0000026705, + 0.0000026675, 0.0000026629, 0.0000026587, 0.0000026561, 0.0000026532, + 0.0000026507, 0.0000026497, 0.0000026504, 0.0000026509, 0.0000026494, + 0.0000026442, 0.0000026378, 0.0000026340, 0.0000026358, 0.0000026420, + 0.0000026489, 0.0000026519, 0.0000026510, 0.0000026477, 0.0000026436, + 0.0000026408, 0.0000026400, 0.0000026393, 0.0000026392, 0.0000026398, + 0.0000026401, 0.0000026392, 0.0000026360, 0.0000026318, 0.0000026270, + 0.0000026215, 0.0000026153, 0.0000026090, 0.0000026026, 0.0000025964, + 0.0000025914, 0.0000025889, 0.0000025901, 0.0000025947, 0.0000025994, + 0.0000025998, 0.0000025952, 0.0000025906, 0.0000025893, 0.0000025895, + 0.0000025859, 0.0000025768, 0.0000025691, 0.0000025658, 0.0000025580, + 0.0000025426, 0.0000025295, 0.0000025237, 0.0000025238, 0.0000025298, + 0.0000025340, 0.0000025295, 0.0000025108, 0.0000024844, 0.0000024608, + 0.0000024503, 0.0000024602, 0.0000025030, 0.0000025538, 0.0000025761, + 0.0000025871, 0.0000026235, 0.0000026728, 0.0000027185, 0.0000027565, + 0.0000027689, 0.0000027659, 0.0000027546, 0.0000027419, 0.0000027386, + 0.0000027379, 0.0000027348, 0.0000027349, 0.0000027377, 0.0000027419, + 0.0000027492, 0.0000027551, 0.0000027570, 0.0000027565, 0.0000027550, + 0.0000027520, 0.0000027482, 0.0000027434, 0.0000027381, 0.0000027338, + 0.0000027294, 0.0000027227, 0.0000027195, 0.0000027193, 0.0000027133, + 0.0000027034, 0.0000026941, 0.0000026891, 0.0000026891, 0.0000026906, + 0.0000026969, 0.0000027083, 0.0000027157, 0.0000027147, 0.0000027097, + 0.0000027084, 0.0000027113, 0.0000027166, 0.0000027214, 0.0000027244, + 0.0000027260, 0.0000027251, 0.0000027218, 0.0000027202, 0.0000027182, + 0.0000027140, 0.0000027113, 0.0000027121, 0.0000027132, 0.0000027115, + 0.0000027064, 0.0000026966, 0.0000026873, 0.0000026856, 0.0000026936, + 0.0000027047, 0.0000027083, 0.0000027127, 0.0000027169, 0.0000027068, + 0.0000026909, 0.0000026862, 0.0000026842, 0.0000026815, 0.0000026790, + 0.0000026778, 0.0000026790, 0.0000026752, 0.0000026700, 0.0000026701, + 0.0000026709, 0.0000026665, 0.0000026560, 0.0000026480, 0.0000026441, + 0.0000026390, 0.0000026350, 0.0000026357, 0.0000026399, 0.0000026399, + 0.0000026356, 0.0000026311, 0.0000026290, 0.0000026266, 0.0000026233, + 0.0000026177, 0.0000026040, 0.0000025813, 0.0000025563, 0.0000025346, + 0.0000025182, 0.0000025072, 0.0000025010, 0.0000024998, 0.0000025021, + 0.0000025084, 0.0000025181, 0.0000025307, 0.0000025438, 0.0000025540, + 0.0000025595, 0.0000025606, 0.0000025603, 0.0000025557, 0.0000025420, + 0.0000025228, 0.0000025076, 0.0000024974, 0.0000024891, 0.0000024857, + 0.0000024842, 0.0000024730, 0.0000024511, 0.0000024300, 0.0000024149, + 0.0000024035, 0.0000023941, 0.0000023872, 0.0000023832, 0.0000023816, + 0.0000023815, 0.0000023825, 0.0000023843, 0.0000023864, 0.0000023883, + 0.0000023889, 0.0000023879, 0.0000023847, 0.0000023798, 0.0000023743, + 0.0000023714, 0.0000023751, 0.0000023878, 0.0000024007, 0.0000024071, + 0.0000024216, 0.0000024395, 0.0000024541, 0.0000024652, 0.0000024693, + 0.0000024814, 0.0000025206, 0.0000025686, 0.0000025938, 0.0000026033, + 0.0000026143, 0.0000026265, 0.0000026352, 0.0000026370, 0.0000026268, + 0.0000026148, 0.0000026032, 0.0000025889, 0.0000025669, 0.0000025649, + 0.0000025651, 0.0000025443, 0.0000025565, 0.0000026300, 0.0000027017, + 0.0000027538, 0.0000027735, 0.0000027725, 0.0000027694, 0.0000027730, + 0.0000027749, 0.0000027632, 0.0000027611, 0.0000027656, 0.0000027667, + 0.0000027707, 0.0000027764, 0.0000027774, 0.0000027725, 0.0000027617, + 0.0000027534, 0.0000027502, 0.0000027514, 0.0000027547, 0.0000027570, + 0.0000027563, 0.0000027559, 0.0000027580, 0.0000027599, 0.0000027590, + 0.0000027549, 0.0000027475, 0.0000027383, 0.0000027308, 0.0000027253, + 0.0000027212, 0.0000027147, 0.0000027048, 0.0000026950, 0.0000026875, + 0.0000026849, 0.0000026865, 0.0000026923, 0.0000026997, 0.0000027058, + 0.0000027083, 0.0000027086, 0.0000027083, 0.0000027066, 0.0000027017, + 0.0000026989, 0.0000026983, 0.0000026954, 0.0000026879, 0.0000026807, + 0.0000026803, 0.0000026818, 0.0000026791, 0.0000026769, 0.0000026801, + 0.0000026797, 0.0000026759, 0.0000026761, 0.0000026771, 0.0000026741, + 0.0000026718, 0.0000026738, 0.0000026800, 0.0000026847, 0.0000026846, + 0.0000026744, 0.0000026522, 0.0000026146, 0.0000025813, 0.0000025696, + 0.0000025625, 0.0000025508, 0.0000025404, 0.0000025358, 0.0000025282, + 0.0000025159, 0.0000025188, 0.0000025349, 0.0000025370, 0.0000025371, + 0.0000025425, 0.0000025448, 0.0000025422, 0.0000025399, 0.0000025397, + 0.0000025407, 0.0000025422, 0.0000025420, 0.0000025358, 0.0000025216, + 0.0000025031, 0.0000024866, 0.0000024752, 0.0000024662, 0.0000024586, + 0.0000024544, 0.0000024536, 0.0000024552, 0.0000024572, 0.0000024604, + 0.0000024653, 0.0000024696, 0.0000024723, 0.0000024727, 0.0000024726, + 0.0000024778, 0.0000024968, 0.0000025255, 0.0000025500, 0.0000025626, + 0.0000025661, 0.0000025667, 0.0000025683, 0.0000025698, 0.0000025743, + 0.0000025815, 0.0000025873, 0.0000025875, 0.0000025869, 0.0000025854, + 0.0000025890, 0.0000025887, 0.0000025848, 0.0000025762, 0.0000025646, + 0.0000025584, 0.0000025655, 0.0000025720, 0.0000025660, 0.0000025595, + 0.0000025537, 0.0000025479, 0.0000025439, 0.0000025401, 0.0000025366, + 0.0000025359, 0.0000025366, 0.0000025365, 0.0000025363, 0.0000025372, + 0.0000025405, 0.0000025402, 0.0000025312, 0.0000025175, 0.0000025035, + 0.0000024857, 0.0000024728, 0.0000024769, 0.0000025045, 0.0000025194, + 0.0000025203, 0.0000025262, 0.0000025175, 0.0000025084, 0.0000025168, + 0.0000025155, 0.0000024995, 0.0000024861, 0.0000024854, 0.0000024977, + 0.0000025163, 0.0000025235, 0.0000025301, 0.0000025637, 0.0000026068, + 0.0000026267, 0.0000026315, 0.0000026303, 0.0000026210, 0.0000026019, + 0.0000025826, 0.0000025759, 0.0000025730, 0.0000025647, 0.0000025613, + 0.0000025677, 0.0000025770, 0.0000025840, 0.0000025912, 0.0000025973, + 0.0000026027, 0.0000026078, 0.0000026111, 0.0000026115, 0.0000026078, + 0.0000026030, 0.0000026004, 0.0000026011, 0.0000026055, 0.0000026128, + 0.0000026237, 0.0000026343, 0.0000026409, 0.0000026447, 0.0000026466, + 0.0000026494, 0.0000026533, 0.0000026546, 0.0000026539, 0.0000026534, + 0.0000026551, 0.0000026568, 0.0000026586, 0.0000026599, 0.0000026609, + 0.0000026617, 0.0000026630, 0.0000026647, 0.0000026665, 0.0000026677, + 0.0000026679, 0.0000026679, 0.0000026677, 0.0000026679, 0.0000026667, + 0.0000026636, 0.0000026589, 0.0000026537, 0.0000026501, 0.0000026489, + 0.0000026499, 0.0000026531, 0.0000026573, 0.0000026618, 0.0000026669, + 0.0000026720, 0.0000026762, 0.0000026794, 0.0000026813, 0.0000026815, + 0.0000026787, 0.0000026719, 0.0000026649, 0.0000026606, 0.0000026590, + 0.0000026601, 0.0000026622, 0.0000026635, 0.0000026620, 0.0000026571, + 0.0000026511, 0.0000026497, 0.0000026522, 0.0000026563, 0.0000026631, + 0.0000026759, 0.0000026940, 0.0000027138, 0.0000027321, 0.0000027463, + 0.0000027554, 0.0000027619, 0.0000027677, 0.0000027709, 0.0000027680, + 0.0000027594, 0.0000027500, 0.0000027447, 0.0000027445, 0.0000027501, + 0.0000027604, 0.0000027714, 0.0000027790, 0.0000027803, 0.0000027761, + 0.0000027687, 0.0000027631, 0.0000027599, 0.0000027564, 0.0000027515, + 0.0000027450, 0.0000027366, 0.0000027255, 0.0000027132, 0.0000027018, + 0.0000026943, 0.0000026909, 0.0000026893, 0.0000026884, 0.0000026883, + 0.0000026873, 0.0000026833, 0.0000026767, 0.0000026692, 0.0000026626, + 0.0000026568, 0.0000026502, 0.0000026411, 0.0000026302, 0.0000026207, + 0.0000026146, 0.0000026123, 0.0000026101, 0.0000026094, 0.0000026115, + 0.0000026154, 0.0000026193, 0.0000026204, 0.0000026169, 0.0000026114, + 0.0000026077, 0.0000026067, 0.0000026074, 0.0000026093, 0.0000026106, + 0.0000026118, 0.0000026158, 0.0000026228, 0.0000026313, 0.0000026419, + 0.0000026561, 0.0000026749, 0.0000026950, 0.0000027097, 0.0000027157, + 0.0000027182, 0.0000027245, 0.0000027364, 0.0000027523, 0.0000027707, + 0.0000027886, 0.0000028024, 0.0000028076, 0.0000028072, 0.0000028020, + 0.0000027961, 0.0000027938, 0.0000027961, 0.0000028012, 0.0000028053, + 0.0000028072, 0.0000028082, 0.0000028098, 0.0000028112, 0.0000028122, + 0.0000028138, 0.0000028154, 0.0000028164, 0.0000028169, 0.0000028179, + 0.0000028189, 0.0000028181, 0.0000028139, 0.0000028075, 0.0000027999, + 0.0000027909, 0.0000027816, 0.0000027727, 0.0000027643, 0.0000027570, + 0.0000027526, 0.0000027475, 0.0000027428, 0.0000027436, 0.0000027490, + 0.0000027519, 0.0000027490, 0.0000027465, 0.0000027532, 0.0000027690, + 0.0000027823, 0.0000027870, 0.0000027879, 0.0000027943, 0.0000028070, + 0.0000028178, 0.0000028223, 0.0000028197, 0.0000028143, 0.0000028152, + 0.0000028220, 0.0000028254, 0.0000028228, 0.0000028145, 0.0000028044, + 0.0000027953, 0.0000027868, 0.0000027787, 0.0000027685, 0.0000027606, + 0.0000027618, 0.0000027732, 0.0000027868, 0.0000027963, 0.0000028021, + 0.0000028036, 0.0000028017, 0.0000027961, 0.0000027894, 0.0000027831, + 0.0000027779, 0.0000027738, 0.0000027698, 0.0000027664, 0.0000027641, + 0.0000027620, 0.0000027586, 0.0000027531, 0.0000027461, 0.0000027392, + 0.0000027337, 0.0000027306, 0.0000027273, 0.0000027218, 0.0000027138, + 0.0000027049, 0.0000026991, 0.0000026968, 0.0000026957, 0.0000026962, + 0.0000026976, 0.0000027000, 0.0000027038, 0.0000027085, 0.0000027132, + 0.0000027173, 0.0000027201, 0.0000027216, 0.0000027220, 0.0000027236, + 0.0000027265, 0.0000027296, 0.0000027331, 0.0000027376, 0.0000027432, + 0.0000027489, 0.0000027535, 0.0000027569, 0.0000027589, 0.0000027593, + 0.0000027605, 0.0000027625, 0.0000027638, 0.0000027638, 0.0000027624, + 0.0000027581, 0.0000027529, 0.0000027443, 0.0000027376, 0.0000027326, + 0.0000027317, 0.0000027336, 0.0000027339, 0.0000027311, 0.0000027243, + 0.0000027172, 0.0000027124, 0.0000027085, 0.0000027070, 0.0000027056, + 0.0000027045, 0.0000027035, 0.0000027011, 0.0000026955, 0.0000026882, + 0.0000026816, 0.0000026771, 0.0000026745, 0.0000026724, 0.0000026689, + 0.0000026654, 0.0000026613, 0.0000026566, 0.0000026529, 0.0000026500, + 0.0000026493, 0.0000026504, 0.0000026535, 0.0000026584, 0.0000026630, + 0.0000026666, 0.0000026703, 0.0000026737, 0.0000026782, 0.0000026840, + 0.0000026893, 0.0000026917, 0.0000026926, 0.0000026944, 0.0000026955, + 0.0000026893, 0.0000026757, 0.0000026702, 0.0000026723, 0.0000026792, + 0.0000026885, 0.0000026940, 0.0000026929, 0.0000026955, 0.0000026991, + 0.0000026987, 0.0000026856, 0.0000026344, 0.0000026016, 0.0000025999, + 0.0000026060, 0.0000026301, 0.0000026680, 0.0000026980, 0.0000027143, + 0.0000027286, 0.0000027518, 0.0000027764, 0.0000027931, 0.0000028004, + 0.0000028013, 0.0000027980, 0.0000027919, 0.0000027857, 0.0000027828, + 0.0000027847, 0.0000027869, 0.0000027866, 0.0000027843, 0.0000027862, + 0.0000027935, 0.0000027993, 0.0000027992, 0.0000027947, 0.0000027913, + 0.0000027931, 0.0000027962, 0.0000027955, 0.0000027902, 0.0000027902, + 0.0000027955, 0.0000027961, 0.0000027928, 0.0000027848, 0.0000027776, + 0.0000027782, 0.0000027870, 0.0000028067, 0.0000028270, 0.0000028370, + 0.0000028323, 0.0000028142, 0.0000028056, 0.0000028076, 0.0000028024, + 0.0000027979, 0.0000027941, 0.0000027929, 0.0000028078, 0.0000028223, + 0.0000028304, 0.0000028387, 0.0000028447, 0.0000028499, 0.0000028566, + 0.0000028620, 0.0000028629, 0.0000028595, 0.0000028530, 0.0000028440, + 0.0000028337, 0.0000028239, 0.0000028167, 0.0000028129, 0.0000028108, + 0.0000028054, 0.0000027946, 0.0000027811, 0.0000027697, 0.0000027629, + 0.0000027619, 0.0000027642, 0.0000027670, 0.0000027675, 0.0000027613, + 0.0000027452, 0.0000027228, 0.0000027025, 0.0000026908, 0.0000026878, + 0.0000026890, 0.0000026971, 0.0000027113, 0.0000027249, 0.0000027367, + 0.0000027515, 0.0000027680, 0.0000027808, 0.0000027906, 0.0000027975, + 0.0000027991, 0.0000027987, 0.0000027978, 0.0000027951, 0.0000027874, + 0.0000027768, 0.0000027669, 0.0000027536, 0.0000027333, 0.0000027120, + 0.0000026949, 0.0000026802, 0.0000026629, 0.0000026413, 0.0000026185, + 0.0000026018, 0.0000025961, 0.0000025964, 0.0000025966, 0.0000025963, + 0.0000025971, 0.0000025968, 0.0000025962, 0.0000025941, 0.0000025909, + 0.0000025869, 0.0000025814, 0.0000025761, 0.0000025728, 0.0000025713, + 0.0000025702, 0.0000025680, 0.0000025645, 0.0000025614, 0.0000025593, + 0.0000025572, 0.0000025557, 0.0000025581, 0.0000025743, 0.0000026003, + 0.0000026239, 0.0000026362, 0.0000026389, 0.0000026379, 0.0000026378, + 0.0000026402, 0.0000026436, 0.0000026453, 0.0000026437, 0.0000026367, + 0.0000026276, 0.0000026217, 0.0000026219, 0.0000026276, 0.0000026346, + 0.0000026383, 0.0000026385, 0.0000026367, 0.0000026338, 0.0000026317, + 0.0000026313, 0.0000026338, 0.0000026390, 0.0000026465, 0.0000026558, + 0.0000026658, 0.0000026744, 0.0000026808, 0.0000026858, 0.0000026910, + 0.0000026977, 0.0000027057, 0.0000027137, 0.0000027201, 0.0000027241, + 0.0000027240, 0.0000027189, 0.0000027088, 0.0000026952, 0.0000026830, + 0.0000026759, 0.0000026752, 0.0000026801, 0.0000026888, 0.0000026973, + 0.0000027019, 0.0000027033, 0.0000027043, 0.0000027063, 0.0000027080, + 0.0000027080, 0.0000027058, 0.0000027033, 0.0000027057, 0.0000027169, + 0.0000027345, 0.0000027467, 0.0000027503, 0.0000027475, 0.0000027464, + 0.0000027503, 0.0000027580, 0.0000027652, 0.0000027705, 0.0000027746, + 0.0000027764, 0.0000027752, 0.0000027733, 0.0000027730, 0.0000027732, + 0.0000027736, 0.0000027742, 0.0000027760, 0.0000027767, 0.0000027732, + 0.0000027659, 0.0000027594, 0.0000027576, 0.0000027592, 0.0000027601, + 0.0000027583, 0.0000027543, 0.0000027501, 0.0000027486, 0.0000027503, + 0.0000027557, 0.0000027640, 0.0000027699, 0.0000027732, 0.0000027765, + 0.0000027792, 0.0000027796, 0.0000027774, 0.0000027723, 0.0000027664, + 0.0000027614, 0.0000027590, 0.0000027585, 0.0000027598, 0.0000027637, + 0.0000027682, 0.0000027721, 0.0000027761, 0.0000027782, 0.0000027770, + 0.0000027746, 0.0000027743, 0.0000027768, 0.0000027798, 0.0000027804, + 0.0000027759, 0.0000027646, 0.0000027488, 0.0000027338, 0.0000027241, + 0.0000027177, 0.0000027097, 0.0000026997, 0.0000026904, 0.0000026835, + 0.0000026792, 0.0000026765, 0.0000026742, 0.0000026719, 0.0000026685, + 0.0000026636, 0.0000026593, 0.0000026567, 0.0000026551, 0.0000026525, + 0.0000026503, 0.0000026501, 0.0000026507, 0.0000026494, 0.0000026445, + 0.0000026377, 0.0000026333, 0.0000026330, 0.0000026372, 0.0000026432, + 0.0000026463, 0.0000026455, 0.0000026419, 0.0000026375, 0.0000026353, + 0.0000026354, 0.0000026357, 0.0000026360, 0.0000026368, 0.0000026369, + 0.0000026351, 0.0000026314, 0.0000026268, 0.0000026220, 0.0000026168, + 0.0000026114, 0.0000026065, 0.0000026021, 0.0000025978, 0.0000025936, + 0.0000025908, 0.0000025911, 0.0000025949, 0.0000025990, 0.0000025991, + 0.0000025941, 0.0000025886, 0.0000025862, 0.0000025846, 0.0000025791, + 0.0000025705, 0.0000025647, 0.0000025611, 0.0000025508, 0.0000025354, + 0.0000025265, 0.0000025243, 0.0000025239, 0.0000025265, 0.0000025306, + 0.0000025278, 0.0000025125, 0.0000024873, 0.0000024611, 0.0000024446, + 0.0000024490, 0.0000024856, 0.0000025409, 0.0000025713, 0.0000025820, + 0.0000026136, 0.0000026640, 0.0000027112, 0.0000027513, 0.0000027688, + 0.0000027661, 0.0000027544, 0.0000027388, 0.0000027312, 0.0000027288, + 0.0000027284, 0.0000027333, 0.0000027399, 0.0000027439, 0.0000027489, + 0.0000027545, 0.0000027577, 0.0000027576, 0.0000027559, 0.0000027531, + 0.0000027494, 0.0000027446, 0.0000027390, 0.0000027342, 0.0000027307, + 0.0000027250, 0.0000027183, 0.0000027176, 0.0000027159, 0.0000027080, + 0.0000026983, 0.0000026903, 0.0000026876, 0.0000026887, 0.0000026922, + 0.0000026998, 0.0000027103, 0.0000027169, 0.0000027169, 0.0000027128, + 0.0000027091, 0.0000027079, 0.0000027077, 0.0000027096, 0.0000027122, + 0.0000027141, 0.0000027143, 0.0000027155, 0.0000027158, 0.0000027147, + 0.0000027141, 0.0000027156, 0.0000027165, 0.0000027146, 0.0000027088, + 0.0000026980, 0.0000026877, 0.0000026842, 0.0000026913, 0.0000027034, + 0.0000027067, 0.0000027099, 0.0000027148, 0.0000027076, 0.0000026903, + 0.0000026837, 0.0000026824, 0.0000026805, 0.0000026795, 0.0000026789, + 0.0000026784, 0.0000026735, 0.0000026697, 0.0000026708, 0.0000026720, + 0.0000026682, 0.0000026589, 0.0000026506, 0.0000026461, 0.0000026410, + 0.0000026370, 0.0000026383, 0.0000026433, 0.0000026436, 0.0000026390, + 0.0000026340, 0.0000026310, 0.0000026279, 0.0000026238, 0.0000026148, + 0.0000025951, 0.0000025671, 0.0000025385, 0.0000025143, 0.0000024968, + 0.0000024849, 0.0000024773, 0.0000024740, 0.0000024737, 0.0000024763, + 0.0000024824, 0.0000024920, 0.0000025045, 0.0000025193, 0.0000025336, + 0.0000025438, 0.0000025476, 0.0000025465, 0.0000025391, 0.0000025244, + 0.0000025081, 0.0000024958, 0.0000024857, 0.0000024788, 0.0000024778, + 0.0000024754, 0.0000024596, 0.0000024356, 0.0000024165, 0.0000024049, + 0.0000023966, 0.0000023905, 0.0000023866, 0.0000023847, 0.0000023840, + 0.0000023838, 0.0000023844, 0.0000023859, 0.0000023876, 0.0000023893, + 0.0000023901, 0.0000023893, 0.0000023867, 0.0000023823, 0.0000023762, + 0.0000023694, 0.0000023652, 0.0000023718, 0.0000023892, 0.0000024000, + 0.0000024107, 0.0000024304, 0.0000024470, 0.0000024562, 0.0000024605, + 0.0000024647, 0.0000024851, 0.0000025294, 0.0000025723, 0.0000025917, + 0.0000026017, 0.0000026147, 0.0000026280, 0.0000026356, 0.0000026295, + 0.0000026171, 0.0000026058, 0.0000025906, 0.0000025691, 0.0000025670, + 0.0000025673, 0.0000025436, 0.0000025549, 0.0000026282, 0.0000026991, + 0.0000027514, 0.0000027728, 0.0000027726, 0.0000027699, 0.0000027726, + 0.0000027748, 0.0000027636, 0.0000027613, 0.0000027664, 0.0000027682, + 0.0000027719, 0.0000027770, 0.0000027789, 0.0000027766, 0.0000027682, + 0.0000027592, 0.0000027551, 0.0000027556, 0.0000027589, 0.0000027620, + 0.0000027625, 0.0000027618, 0.0000027618, 0.0000027611, 0.0000027589, + 0.0000027526, 0.0000027433, 0.0000027338, 0.0000027273, 0.0000027242, + 0.0000027238, 0.0000027193, 0.0000027107, 0.0000027017, 0.0000026946, + 0.0000026911, 0.0000026913, 0.0000026948, 0.0000027000, 0.0000027044, + 0.0000027050, 0.0000027044, 0.0000027052, 0.0000027053, 0.0000027022, + 0.0000026996, 0.0000026992, 0.0000026975, 0.0000026902, 0.0000026807, + 0.0000026754, 0.0000026761, 0.0000026789, 0.0000026775, 0.0000026772, + 0.0000026799, 0.0000026792, 0.0000026776, 0.0000026780, 0.0000026761, + 0.0000026730, 0.0000026735, 0.0000026778, 0.0000026828, 0.0000026826, + 0.0000026724, 0.0000026514, 0.0000026155, 0.0000025831, 0.0000025705, + 0.0000025618, 0.0000025489, 0.0000025388, 0.0000025345, 0.0000025257, + 0.0000025159, 0.0000025251, 0.0000025388, 0.0000025363, 0.0000025370, + 0.0000025426, 0.0000025445, 0.0000025422, 0.0000025399, 0.0000025390, + 0.0000025396, 0.0000025419, 0.0000025439, 0.0000025432, 0.0000025345, + 0.0000025156, 0.0000024937, 0.0000024774, 0.0000024667, 0.0000024569, + 0.0000024501, 0.0000024482, 0.0000024487, 0.0000024496, 0.0000024515, + 0.0000024565, 0.0000024637, 0.0000024707, 0.0000024750, 0.0000024750, + 0.0000024728, 0.0000024704, 0.0000024801, 0.0000025057, 0.0000025376, + 0.0000025611, 0.0000025723, 0.0000025765, 0.0000025765, 0.0000025780, + 0.0000025816, 0.0000025852, 0.0000025865, 0.0000025881, 0.0000025868, + 0.0000025871, 0.0000025903, 0.0000025870, 0.0000025806, 0.0000025714, + 0.0000025605, 0.0000025563, 0.0000025664, 0.0000025702, 0.0000025665, + 0.0000025627, 0.0000025576, 0.0000025510, 0.0000025459, 0.0000025419, + 0.0000025386, 0.0000025382, 0.0000025397, 0.0000025405, 0.0000025388, + 0.0000025362, 0.0000025359, 0.0000025366, 0.0000025343, 0.0000025295, + 0.0000025175, 0.0000024941, 0.0000024726, 0.0000024712, 0.0000024947, + 0.0000025167, 0.0000025175, 0.0000025227, 0.0000025216, 0.0000025098, + 0.0000025120, 0.0000025180, 0.0000025081, 0.0000024906, 0.0000024842, + 0.0000024881, 0.0000025042, 0.0000025189, 0.0000025206, 0.0000025321, + 0.0000025732, 0.0000026141, 0.0000026290, 0.0000026301, 0.0000026273, + 0.0000026127, 0.0000025925, 0.0000025784, 0.0000025750, 0.0000025697, + 0.0000025609, 0.0000025592, 0.0000025667, 0.0000025777, 0.0000025861, + 0.0000025930, 0.0000025991, 0.0000026044, 0.0000026085, 0.0000026094, + 0.0000026053, 0.0000025998, 0.0000025975, 0.0000025987, 0.0000026028, + 0.0000026087, 0.0000026177, 0.0000026276, 0.0000026360, 0.0000026423, + 0.0000026454, 0.0000026487, 0.0000026529, 0.0000026546, 0.0000026544, + 0.0000026542, 0.0000026551, 0.0000026559, 0.0000026569, 0.0000026572, + 0.0000026574, 0.0000026573, 0.0000026575, 0.0000026581, 0.0000026592, + 0.0000026602, 0.0000026604, 0.0000026596, 0.0000026586, 0.0000026579, + 0.0000026565, 0.0000026536, 0.0000026492, 0.0000026443, 0.0000026401, + 0.0000026373, 0.0000026367, 0.0000026399, 0.0000026457, 0.0000026519, + 0.0000026580, 0.0000026640, 0.0000026694, 0.0000026735, 0.0000026756, + 0.0000026760, 0.0000026744, 0.0000026682, 0.0000026596, 0.0000026528, + 0.0000026494, 0.0000026494, 0.0000026537, 0.0000026592, 0.0000026619, + 0.0000026611, 0.0000026567, 0.0000026539, 0.0000026554, 0.0000026609, + 0.0000026707, 0.0000026861, 0.0000027051, 0.0000027232, 0.0000027379, + 0.0000027489, 0.0000027561, 0.0000027608, 0.0000027645, 0.0000027654, + 0.0000027613, 0.0000027502, 0.0000027387, 0.0000027341, 0.0000027370, + 0.0000027489, 0.0000027633, 0.0000027738, 0.0000027791, 0.0000027792, + 0.0000027736, 0.0000027666, 0.0000027624, 0.0000027601, 0.0000027573, + 0.0000027520, 0.0000027433, 0.0000027301, 0.0000027136, 0.0000026995, + 0.0000026909, 0.0000026884, 0.0000026885, 0.0000026870, 0.0000026826, + 0.0000026766, 0.0000026702, 0.0000026637, 0.0000026574, 0.0000026523, + 0.0000026482, 0.0000026444, 0.0000026394, 0.0000026321, 0.0000026228, + 0.0000026139, 0.0000026082, 0.0000026048, 0.0000026019, 0.0000026007, + 0.0000026021, 0.0000026052, 0.0000026083, 0.0000026092, 0.0000026061, + 0.0000026015, 0.0000025994, 0.0000026001, 0.0000026027, 0.0000026060, + 0.0000026088, 0.0000026108, 0.0000026144, 0.0000026215, 0.0000026302, + 0.0000026403, 0.0000026515, 0.0000026660, 0.0000026843, 0.0000027027, + 0.0000027138, 0.0000027154, 0.0000027161, 0.0000027242, 0.0000027404, + 0.0000027593, 0.0000027781, 0.0000027939, 0.0000028045, 0.0000028078, + 0.0000028058, 0.0000028025, 0.0000027995, 0.0000027991, 0.0000028013, + 0.0000028049, 0.0000028078, 0.0000028100, 0.0000028131, 0.0000028171, + 0.0000028203, 0.0000028209, 0.0000028201, 0.0000028184, 0.0000028166, + 0.0000028153, 0.0000028143, 0.0000028120, 0.0000028067, 0.0000027986, + 0.0000027895, 0.0000027810, 0.0000027739, 0.0000027675, 0.0000027612, + 0.0000027537, 0.0000027469, 0.0000027400, 0.0000027350, 0.0000027349, + 0.0000027384, 0.0000027406, 0.0000027384, 0.0000027347, 0.0000027370, + 0.0000027515, 0.0000027706, 0.0000027833, 0.0000027863, 0.0000027867, + 0.0000027937, 0.0000028069, 0.0000028166, 0.0000028204, 0.0000028176, + 0.0000028119, 0.0000028131, 0.0000028206, 0.0000028239, 0.0000028211, + 0.0000028133, 0.0000028042, 0.0000027960, 0.0000027895, 0.0000027813, + 0.0000027698, 0.0000027621, 0.0000027642, 0.0000027762, 0.0000027905, + 0.0000028010, 0.0000028068, 0.0000028076, 0.0000028057, 0.0000028007, + 0.0000027934, 0.0000027854, 0.0000027784, 0.0000027730, 0.0000027686, + 0.0000027648, 0.0000027618, 0.0000027592, 0.0000027560, 0.0000027511, + 0.0000027441, 0.0000027370, 0.0000027317, 0.0000027265, 0.0000027177, + 0.0000027043, 0.0000026891, 0.0000026769, 0.0000026713, 0.0000026692, + 0.0000026670, 0.0000026660, 0.0000026674, 0.0000026709, 0.0000026764, + 0.0000026830, 0.0000026902, 0.0000026972, 0.0000027035, 0.0000027084, + 0.0000027127, 0.0000027171, 0.0000027208, 0.0000027239, 0.0000027271, + 0.0000027310, 0.0000027358, 0.0000027402, 0.0000027435, 0.0000027456, + 0.0000027463, 0.0000027462, 0.0000027468, 0.0000027484, 0.0000027501, + 0.0000027514, 0.0000027514, 0.0000027489, 0.0000027447, 0.0000027393, + 0.0000027338, 0.0000027297, 0.0000027292, 0.0000027303, 0.0000027297, + 0.0000027266, 0.0000027201, 0.0000027137, 0.0000027090, 0.0000027063, + 0.0000027060, 0.0000027056, 0.0000027050, 0.0000027035, 0.0000026993, + 0.0000026930, 0.0000026860, 0.0000026801, 0.0000026764, 0.0000026734, + 0.0000026702, 0.0000026661, 0.0000026614, 0.0000026567, 0.0000026520, + 0.0000026481, 0.0000026480, 0.0000026501, 0.0000026544, 0.0000026604, + 0.0000026668, 0.0000026716, 0.0000026748, 0.0000026778, 0.0000026809, + 0.0000026841, 0.0000026878, 0.0000026910, 0.0000026924, 0.0000026926, + 0.0000026934, 0.0000026939, 0.0000026877, 0.0000026749, 0.0000026701, + 0.0000026728, 0.0000026788, 0.0000026845, 0.0000026900, 0.0000026902, + 0.0000026894, 0.0000026968, 0.0000026990, 0.0000026968, 0.0000026728, + 0.0000026202, 0.0000025975, 0.0000025977, 0.0000026065, 0.0000026348, + 0.0000026745, 0.0000027037, 0.0000027175, 0.0000027274, 0.0000027442, + 0.0000027647, 0.0000027805, 0.0000027890, 0.0000027900, 0.0000027856, + 0.0000027790, 0.0000027748, 0.0000027762, 0.0000027801, 0.0000027815, + 0.0000027808, 0.0000027824, 0.0000027880, 0.0000027949, 0.0000027979, + 0.0000027969, 0.0000027940, 0.0000027939, 0.0000027964, 0.0000027976, + 0.0000027928, 0.0000027895, 0.0000027943, 0.0000027965, 0.0000027932, + 0.0000027872, 0.0000027812, 0.0000027806, 0.0000027861, 0.0000028027, + 0.0000028227, 0.0000028347, 0.0000028342, 0.0000028187, 0.0000028031, + 0.0000028044, 0.0000028051, 0.0000027980, 0.0000027955, 0.0000027919, + 0.0000027957, 0.0000028119, 0.0000028224, 0.0000028290, 0.0000028352, + 0.0000028395, 0.0000028433, 0.0000028476, 0.0000028497, 0.0000028485, + 0.0000028432, 0.0000028346, 0.0000028245, 0.0000028159, 0.0000028109, + 0.0000028083, 0.0000028035, 0.0000027931, 0.0000027789, 0.0000027668, + 0.0000027606, 0.0000027602, 0.0000027632, 0.0000027668, 0.0000027680, + 0.0000027659, 0.0000027576, 0.0000027419, 0.0000027198, 0.0000026995, + 0.0000026889, 0.0000026876, 0.0000026906, 0.0000026981, 0.0000027095, + 0.0000027206, 0.0000027256, 0.0000027317, 0.0000027446, 0.0000027609, + 0.0000027760, 0.0000027868, 0.0000027900, 0.0000027894, 0.0000027887, + 0.0000027869, 0.0000027805, 0.0000027702, 0.0000027609, 0.0000027506, + 0.0000027340, 0.0000027140, 0.0000026968, 0.0000026824, 0.0000026659, + 0.0000026456, 0.0000026243, 0.0000026081, 0.0000026019, 0.0000026021, + 0.0000026028, 0.0000026024, 0.0000026007, 0.0000025974, 0.0000025935, + 0.0000025905, 0.0000025891, 0.0000025877, 0.0000025845, 0.0000025798, + 0.0000025757, 0.0000025736, 0.0000025728, 0.0000025718, 0.0000025699, + 0.0000025660, 0.0000025625, 0.0000025591, 0.0000025565, 0.0000025548, + 0.0000025536, 0.0000025558, 0.0000025714, 0.0000025957, 0.0000026169, + 0.0000026274, 0.0000026296, 0.0000026289, 0.0000026297, 0.0000026338, + 0.0000026383, 0.0000026397, 0.0000026360, 0.0000026288, 0.0000026220, + 0.0000026186, 0.0000026180, 0.0000026196, 0.0000026213, 0.0000026227, + 0.0000026248, 0.0000026272, 0.0000026285, 0.0000026295, 0.0000026313, + 0.0000026340, 0.0000026396, 0.0000026482, 0.0000026579, 0.0000026667, + 0.0000026728, 0.0000026759, 0.0000026771, 0.0000026793, 0.0000026843, + 0.0000026915, 0.0000026997, 0.0000027083, 0.0000027157, 0.0000027193, + 0.0000027184, 0.0000027120, 0.0000027020, 0.0000026914, 0.0000026830, + 0.0000026798, 0.0000026809, 0.0000026868, 0.0000026939, 0.0000026985, + 0.0000027001, 0.0000027007, 0.0000027022, 0.0000027050, 0.0000027078, + 0.0000027084, 0.0000027074, 0.0000027097, 0.0000027198, 0.0000027366, + 0.0000027492, 0.0000027509, 0.0000027470, 0.0000027452, 0.0000027500, + 0.0000027572, 0.0000027628, 0.0000027679, 0.0000027725, 0.0000027741, + 0.0000027731, 0.0000027724, 0.0000027725, 0.0000027731, 0.0000027750, + 0.0000027788, 0.0000027833, 0.0000027842, 0.0000027793, 0.0000027717, + 0.0000027660, 0.0000027636, 0.0000027635, 0.0000027634, 0.0000027609, + 0.0000027553, 0.0000027502, 0.0000027489, 0.0000027505, 0.0000027566, + 0.0000027626, 0.0000027680, 0.0000027738, 0.0000027779, 0.0000027794, + 0.0000027787, 0.0000027741, 0.0000027674, 0.0000027617, 0.0000027591, + 0.0000027586, 0.0000027598, 0.0000027629, 0.0000027664, 0.0000027700, + 0.0000027745, 0.0000027786, 0.0000027791, 0.0000027780, 0.0000027772, + 0.0000027781, 0.0000027802, 0.0000027820, 0.0000027823, 0.0000027786, + 0.0000027680, 0.0000027528, 0.0000027388, 0.0000027290, 0.0000027204, + 0.0000027091, 0.0000026969, 0.0000026877, 0.0000026820, 0.0000026787, + 0.0000026763, 0.0000026739, 0.0000026705, 0.0000026654, 0.0000026611, + 0.0000026592, 0.0000026593, 0.0000026576, 0.0000026542, 0.0000026521, + 0.0000026518, 0.0000026504, 0.0000026457, 0.0000026386, 0.0000026337, + 0.0000026334, 0.0000026369, 0.0000026417, 0.0000026432, 0.0000026414, + 0.0000026359, 0.0000026300, 0.0000026269, 0.0000026269, 0.0000026280, + 0.0000026294, 0.0000026314, 0.0000026323, 0.0000026310, 0.0000026277, + 0.0000026232, 0.0000026183, 0.0000026139, 0.0000026100, 0.0000026063, + 0.0000026034, 0.0000026005, 0.0000025965, 0.0000025925, 0.0000025915, + 0.0000025940, 0.0000025966, 0.0000025949, 0.0000025894, 0.0000025842, + 0.0000025819, 0.0000025784, 0.0000025716, 0.0000025652, 0.0000025618, + 0.0000025550, 0.0000025393, 0.0000025248, 0.0000025209, 0.0000025220, + 0.0000025222, 0.0000025228, 0.0000025253, 0.0000025244, 0.0000025137, + 0.0000024916, 0.0000024646, 0.0000024429, 0.0000024394, 0.0000024692, + 0.0000025260, 0.0000025656, 0.0000025772, 0.0000026042, 0.0000026556, + 0.0000027042, 0.0000027449, 0.0000027670, 0.0000027667, 0.0000027546, + 0.0000027375, 0.0000027259, 0.0000027224, 0.0000027241, 0.0000027319, + 0.0000027407, 0.0000027446, 0.0000027480, 0.0000027518, 0.0000027549, + 0.0000027553, 0.0000027534, 0.0000027497, 0.0000027461, 0.0000027420, + 0.0000027368, 0.0000027321, 0.0000027290, 0.0000027264, 0.0000027196, + 0.0000027145, 0.0000027145, 0.0000027106, 0.0000027015, 0.0000026934, + 0.0000026885, 0.0000026875, 0.0000026890, 0.0000026940, 0.0000027012, + 0.0000027097, 0.0000027157, 0.0000027172, 0.0000027157, 0.0000027120, + 0.0000027086, 0.0000027069, 0.0000027083, 0.0000027118, 0.0000027147, + 0.0000027163, 0.0000027171, 0.0000027161, 0.0000027150, 0.0000027161, + 0.0000027172, 0.0000027164, 0.0000027119, 0.0000027010, 0.0000026895, + 0.0000026843, 0.0000026894, 0.0000027019, 0.0000027056, 0.0000027079, + 0.0000027125, 0.0000027091, 0.0000026917, 0.0000026814, 0.0000026799, + 0.0000026788, 0.0000026792, 0.0000026792, 0.0000026780, 0.0000026726, + 0.0000026691, 0.0000026705, 0.0000026724, 0.0000026709, 0.0000026646, + 0.0000026567, 0.0000026514, 0.0000026465, 0.0000026424, 0.0000026432, + 0.0000026479, 0.0000026476, 0.0000026428, 0.0000026373, 0.0000026332, + 0.0000026290, 0.0000026228, 0.0000026085, 0.0000025824, 0.0000025501, + 0.0000025195, 0.0000024946, 0.0000024770, 0.0000024669, 0.0000024624, + 0.0000024610, 0.0000024606, 0.0000024596, 0.0000024591, 0.0000024609, + 0.0000024686, 0.0000024823, 0.0000024986, 0.0000025137, 0.0000025252, + 0.0000025301, 0.0000025288, 0.0000025206, 0.0000025072, 0.0000024946, + 0.0000024843, 0.0000024748, 0.0000024700, 0.0000024695, 0.0000024634, + 0.0000024431, 0.0000024213, 0.0000024089, 0.0000024030, 0.0000023988, + 0.0000023952, 0.0000023923, 0.0000023898, 0.0000023872, 0.0000023852, + 0.0000023849, 0.0000023862, 0.0000023880, 0.0000023896, 0.0000023900, + 0.0000023895, 0.0000023866, 0.0000023822, 0.0000023781, 0.0000023713, + 0.0000023613, 0.0000023605, 0.0000023739, 0.0000023916, 0.0000024012, + 0.0000024186, 0.0000024381, 0.0000024474, 0.0000024507, 0.0000024546, + 0.0000024634, 0.0000024893, 0.0000025343, 0.0000025729, 0.0000025918, + 0.0000026044, 0.0000026184, 0.0000026307, 0.0000026303, 0.0000026182, + 0.0000026070, 0.0000025907, 0.0000025702, 0.0000025691, 0.0000025678, + 0.0000025415, 0.0000025529, 0.0000026272, 0.0000026979, 0.0000027492, + 0.0000027723, 0.0000027734, 0.0000027701, 0.0000027718, 0.0000027744, + 0.0000027642, 0.0000027601, 0.0000027657, 0.0000027686, 0.0000027730, + 0.0000027780, 0.0000027798, 0.0000027790, 0.0000027745, 0.0000027662, + 0.0000027612, 0.0000027614, 0.0000027642, 0.0000027670, 0.0000027676, + 0.0000027664, 0.0000027639, 0.0000027606, 0.0000027556, 0.0000027476, + 0.0000027381, 0.0000027298, 0.0000027248, 0.0000027242, 0.0000027270, + 0.0000027243, 0.0000027159, 0.0000027079, 0.0000027029, 0.0000026997, + 0.0000026984, 0.0000026993, 0.0000027019, 0.0000027044, 0.0000027037, + 0.0000027019, 0.0000027028, 0.0000027038, 0.0000027022, 0.0000027004, + 0.0000026995, 0.0000026971, 0.0000026897, 0.0000026812, 0.0000026753, + 0.0000026723, 0.0000026734, 0.0000026769, 0.0000026771, 0.0000026778, + 0.0000026801, 0.0000026802, 0.0000026803, 0.0000026786, 0.0000026739, + 0.0000026722, 0.0000026748, 0.0000026794, 0.0000026798, 0.0000026708, + 0.0000026526, 0.0000026198, 0.0000025867, 0.0000025735, 0.0000025644, + 0.0000025505, 0.0000025400, 0.0000025351, 0.0000025260, 0.0000025180, + 0.0000025315, 0.0000025411, 0.0000025368, 0.0000025374, 0.0000025417, + 0.0000025432, 0.0000025424, 0.0000025404, 0.0000025389, 0.0000025387, + 0.0000025404, 0.0000025429, 0.0000025445, 0.0000025432, 0.0000025308, + 0.0000025064, 0.0000024819, 0.0000024674, 0.0000024572, 0.0000024482, + 0.0000024438, 0.0000024436, 0.0000024431, 0.0000024432, 0.0000024471, + 0.0000024558, 0.0000024669, 0.0000024747, 0.0000024783, 0.0000024776, + 0.0000024731, 0.0000024680, 0.0000024710, 0.0000024917, 0.0000025244, + 0.0000025564, 0.0000025766, 0.0000025837, 0.0000025837, 0.0000025834, + 0.0000025841, 0.0000025845, 0.0000025864, 0.0000025871, 0.0000025864, + 0.0000025890, 0.0000025909, 0.0000025826, 0.0000025755, 0.0000025669, + 0.0000025563, 0.0000025543, 0.0000025662, 0.0000025703, 0.0000025686, + 0.0000025661, 0.0000025602, 0.0000025523, 0.0000025471, 0.0000025437, + 0.0000025401, 0.0000025388, 0.0000025399, 0.0000025410, 0.0000025403, + 0.0000025371, 0.0000025343, 0.0000025325, 0.0000025332, 0.0000025363, + 0.0000025301, 0.0000025070, 0.0000024779, 0.0000024696, 0.0000024864, + 0.0000025124, 0.0000025173, 0.0000025193, 0.0000025246, 0.0000025149, + 0.0000025077, 0.0000025158, 0.0000025150, 0.0000024995, 0.0000024857, + 0.0000024841, 0.0000024936, 0.0000025088, 0.0000025160, 0.0000025154, + 0.0000025358, 0.0000025852, 0.0000026199, 0.0000026292, 0.0000026281, + 0.0000026216, 0.0000026042, 0.0000025865, 0.0000025771, 0.0000025738, + 0.0000025662, 0.0000025574, 0.0000025568, 0.0000025675, 0.0000025794, + 0.0000025885, 0.0000025956, 0.0000026009, 0.0000026053, 0.0000026061, + 0.0000026021, 0.0000025973, 0.0000025960, 0.0000025985, 0.0000026032, + 0.0000026085, 0.0000026165, 0.0000026248, 0.0000026322, 0.0000026376, + 0.0000026408, 0.0000026439, 0.0000026477, 0.0000026502, 0.0000026512, + 0.0000026511, 0.0000026505, 0.0000026503, 0.0000026503, 0.0000026500, + 0.0000026495, 0.0000026489, 0.0000026483, 0.0000026486, 0.0000026496, + 0.0000026503, 0.0000026501, 0.0000026492, 0.0000026482, 0.0000026473, + 0.0000026458, 0.0000026432, 0.0000026396, 0.0000026357, 0.0000026318, + 0.0000026275, 0.0000026240, 0.0000026244, 0.0000026296, 0.0000026366, + 0.0000026438, 0.0000026512, 0.0000026588, 0.0000026655, 0.0000026698, + 0.0000026715, 0.0000026711, 0.0000026662, 0.0000026570, 0.0000026484, + 0.0000026446, 0.0000026446, 0.0000026481, 0.0000026541, 0.0000026595, + 0.0000026619, 0.0000026609, 0.0000026588, 0.0000026605, 0.0000026684, + 0.0000026814, 0.0000026975, 0.0000027145, 0.0000027297, 0.0000027412, + 0.0000027495, 0.0000027550, 0.0000027580, 0.0000027586, 0.0000027571, + 0.0000027510, 0.0000027393, 0.0000027276, 0.0000027239, 0.0000027315, + 0.0000027480, 0.0000027641, 0.0000027737, 0.0000027768, 0.0000027760, + 0.0000027716, 0.0000027654, 0.0000027611, 0.0000027595, 0.0000027566, + 0.0000027485, 0.0000027338, 0.0000027162, 0.0000027014, 0.0000026935, + 0.0000026903, 0.0000026872, 0.0000026814, 0.0000026726, 0.0000026632, + 0.0000026545, 0.0000026472, 0.0000026420, 0.0000026387, 0.0000026367, + 0.0000026350, 0.0000026328, 0.0000026290, 0.0000026235, 0.0000026171, + 0.0000026114, 0.0000026068, 0.0000026029, 0.0000025992, 0.0000025962, + 0.0000025948, 0.0000025950, 0.0000025956, 0.0000025948, 0.0000025914, + 0.0000025877, 0.0000025873, 0.0000025911, 0.0000025968, 0.0000026022, + 0.0000026063, 0.0000026092, 0.0000026123, 0.0000026186, 0.0000026277, + 0.0000026384, 0.0000026495, 0.0000026616, 0.0000026758, 0.0000026925, + 0.0000027073, 0.0000027137, 0.0000027131, 0.0000027139, 0.0000027246, + 0.0000027437, 0.0000027649, 0.0000027833, 0.0000027965, 0.0000028033, + 0.0000028048, 0.0000028040, 0.0000028032, 0.0000028038, 0.0000028040, + 0.0000028053, 0.0000028071, 0.0000028088, 0.0000028117, 0.0000028160, + 0.0000028197, 0.0000028209, 0.0000028192, 0.0000028155, 0.0000028114, + 0.0000028074, 0.0000028041, 0.0000028006, 0.0000027946, 0.0000027862, + 0.0000027772, 0.0000027699, 0.0000027651, 0.0000027619, 0.0000027576, + 0.0000027508, 0.0000027427, 0.0000027344, 0.0000027287, 0.0000027272, + 0.0000027275, 0.0000027270, 0.0000027237, 0.0000027202, 0.0000027211, + 0.0000027310, 0.0000027499, 0.0000027699, 0.0000027822, 0.0000027848, + 0.0000027844, 0.0000027918, 0.0000028057, 0.0000028157, 0.0000028187, + 0.0000028152, 0.0000028087, 0.0000028104, 0.0000028186, 0.0000028219, + 0.0000028192, 0.0000028124, 0.0000028043, 0.0000027970, 0.0000027907, + 0.0000027818, 0.0000027707, 0.0000027646, 0.0000027682, 0.0000027801, + 0.0000027941, 0.0000028049, 0.0000028105, 0.0000028118, 0.0000028106, + 0.0000028067, 0.0000027994, 0.0000027901, 0.0000027810, 0.0000027733, + 0.0000027670, 0.0000027624, 0.0000027597, 0.0000027585, 0.0000027568, + 0.0000027526, 0.0000027452, 0.0000027370, 0.0000027297, 0.0000027200, + 0.0000027026, 0.0000026788, 0.0000026578, 0.0000026482, 0.0000026468, + 0.0000026463, 0.0000026436, 0.0000026402, 0.0000026378, 0.0000026376, + 0.0000026400, 0.0000026445, 0.0000026514, 0.0000026595, 0.0000026683, + 0.0000026780, 0.0000026893, 0.0000026999, 0.0000027086, 0.0000027161, + 0.0000027229, 0.0000027289, 0.0000027337, 0.0000027370, 0.0000027388, + 0.0000027389, 0.0000027379, 0.0000027360, 0.0000027352, 0.0000027358, + 0.0000027369, 0.0000027387, 0.0000027393, 0.0000027379, 0.0000027355, + 0.0000027322, 0.0000027285, 0.0000027261, 0.0000027262, 0.0000027270, + 0.0000027264, 0.0000027228, 0.0000027164, 0.0000027102, 0.0000027045, + 0.0000027021, 0.0000027029, 0.0000027035, 0.0000027032, 0.0000027013, + 0.0000026968, 0.0000026904, 0.0000026833, 0.0000026776, 0.0000026735, + 0.0000026697, 0.0000026656, 0.0000026610, 0.0000026567, 0.0000026529, + 0.0000026492, 0.0000026478, 0.0000026506, 0.0000026564, 0.0000026632, + 0.0000026700, 0.0000026755, 0.0000026788, 0.0000026801, 0.0000026813, + 0.0000026832, 0.0000026855, 0.0000026884, 0.0000026911, 0.0000026924, + 0.0000026924, 0.0000026922, 0.0000026912, 0.0000026849, 0.0000026743, + 0.0000026711, 0.0000026743, 0.0000026799, 0.0000026826, 0.0000026851, + 0.0000026876, 0.0000026859, 0.0000026915, 0.0000026985, 0.0000026969, + 0.0000026923, 0.0000026588, 0.0000026095, 0.0000025934, 0.0000025968, + 0.0000026077, 0.0000026393, 0.0000026783, 0.0000027058, 0.0000027181, + 0.0000027243, 0.0000027345, 0.0000027502, 0.0000027658, 0.0000027755, + 0.0000027775, 0.0000027732, 0.0000027664, 0.0000027637, 0.0000027654, + 0.0000027688, 0.0000027723, 0.0000027772, 0.0000027824, 0.0000027880, + 0.0000027928, 0.0000027954, 0.0000027950, 0.0000027945, 0.0000027963, + 0.0000027993, 0.0000027970, 0.0000027911, 0.0000027934, 0.0000027968, + 0.0000027937, 0.0000027889, 0.0000027845, 0.0000027836, 0.0000027864, + 0.0000027992, 0.0000028180, 0.0000028310, 0.0000028336, 0.0000028223, + 0.0000028035, 0.0000027987, 0.0000028046, 0.0000028012, 0.0000027954, + 0.0000027943, 0.0000027915, 0.0000027992, 0.0000028140, 0.0000028217, + 0.0000028260, 0.0000028299, 0.0000028325, 0.0000028348, 0.0000028361, + 0.0000028354, 0.0000028320, 0.0000028266, 0.0000028200, 0.0000028136, + 0.0000028084, 0.0000028022, 0.0000027919, 0.0000027778, 0.0000027648, + 0.0000027579, 0.0000027568, 0.0000027591, 0.0000027629, 0.0000027658, + 0.0000027656, 0.0000027612, 0.0000027527, 0.0000027374, 0.0000027149, + 0.0000026953, 0.0000026875, 0.0000026882, 0.0000026937, 0.0000027018, + 0.0000027125, 0.0000027232, 0.0000027265, 0.0000027265, 0.0000027294, + 0.0000027385, 0.0000027528, 0.0000027682, 0.0000027761, 0.0000027762, + 0.0000027754, 0.0000027749, 0.0000027696, 0.0000027595, 0.0000027507, + 0.0000027431, 0.0000027303, 0.0000027132, 0.0000026980, 0.0000026847, + 0.0000026689, 0.0000026491, 0.0000026286, 0.0000026133, 0.0000026070, + 0.0000026065, 0.0000026061, 0.0000026042, 0.0000025994, 0.0000025927, + 0.0000025874, 0.0000025851, 0.0000025843, 0.0000025834, 0.0000025808, + 0.0000025763, 0.0000025710, 0.0000025671, 0.0000025661, 0.0000025669, + 0.0000025678, 0.0000025679, 0.0000025671, 0.0000025639, 0.0000025610, + 0.0000025576, 0.0000025552, 0.0000025512, 0.0000025464, 0.0000025482, + 0.0000025643, 0.0000025881, 0.0000026080, 0.0000026178, 0.0000026200, + 0.0000026202, 0.0000026227, 0.0000026279, 0.0000026322, 0.0000026327, + 0.0000026289, 0.0000026229, 0.0000026162, 0.0000026109, 0.0000026082, + 0.0000026090, 0.0000026138, 0.0000026210, 0.0000026273, 0.0000026305, + 0.0000026319, 0.0000026325, 0.0000026331, 0.0000026350, 0.0000026400, + 0.0000026480, 0.0000026568, 0.0000026643, 0.0000026688, 0.0000026705, + 0.0000026709, 0.0000026718, 0.0000026745, 0.0000026794, 0.0000026863, + 0.0000026959, 0.0000027068, 0.0000027142, 0.0000027163, 0.0000027138, + 0.0000027083, 0.0000027003, 0.0000026921, 0.0000026866, 0.0000026856, + 0.0000026879, 0.0000026930, 0.0000026974, 0.0000026994, 0.0000026998, + 0.0000027007, 0.0000027038, 0.0000027088, 0.0000027133, 0.0000027143, + 0.0000027162, 0.0000027249, 0.0000027384, 0.0000027483, 0.0000027484, + 0.0000027441, 0.0000027439, 0.0000027494, 0.0000027568, 0.0000027634, + 0.0000027686, 0.0000027721, 0.0000027732, 0.0000027731, 0.0000027728, + 0.0000027735, 0.0000027755, 0.0000027797, 0.0000027857, 0.0000027905, + 0.0000027905, 0.0000027861, 0.0000027794, 0.0000027727, 0.0000027680, + 0.0000027663, 0.0000027656, 0.0000027618, 0.0000027557, 0.0000027512, + 0.0000027509, 0.0000027536, 0.0000027564, 0.0000027612, 0.0000027691, + 0.0000027760, 0.0000027786, 0.0000027781, 0.0000027750, 0.0000027692, + 0.0000027629, 0.0000027591, 0.0000027585, 0.0000027599, 0.0000027626, + 0.0000027653, 0.0000027679, 0.0000027702, 0.0000027726, 0.0000027743, + 0.0000027755, 0.0000027781, 0.0000027812, 0.0000027834, 0.0000027838, + 0.0000027829, 0.0000027808, 0.0000027772, 0.0000027695, 0.0000027567, + 0.0000027422, 0.0000027295, 0.0000027179, 0.0000027059, 0.0000026955, + 0.0000026874, 0.0000026813, 0.0000026772, 0.0000026748, 0.0000026717, + 0.0000026672, 0.0000026635, 0.0000026633, 0.0000026647, 0.0000026643, + 0.0000026604, 0.0000026566, 0.0000026547, 0.0000026523, 0.0000026465, + 0.0000026382, 0.0000026326, 0.0000026327, 0.0000026368, 0.0000026410, + 0.0000026417, 0.0000026383, 0.0000026308, 0.0000026229, 0.0000026184, + 0.0000026178, 0.0000026196, 0.0000026228, 0.0000026264, 0.0000026286, + 0.0000026289, 0.0000026267, 0.0000026225, 0.0000026176, 0.0000026136, + 0.0000026105, 0.0000026079, 0.0000026055, 0.0000026022, 0.0000025973, + 0.0000025928, 0.0000025912, 0.0000025920, 0.0000025917, 0.0000025879, + 0.0000025826, 0.0000025789, 0.0000025763, 0.0000025718, 0.0000025667, + 0.0000025637, 0.0000025591, 0.0000025455, 0.0000025251, 0.0000025121, + 0.0000025122, 0.0000025168, 0.0000025187, 0.0000025188, 0.0000025192, + 0.0000025184, 0.0000025108, 0.0000024933, 0.0000024683, 0.0000024434, + 0.0000024347, 0.0000024527, 0.0000025081, 0.0000025579, 0.0000025737, + 0.0000025957, 0.0000026463, 0.0000026977, 0.0000027391, 0.0000027635, + 0.0000027666, 0.0000027565, 0.0000027377, 0.0000027236, 0.0000027194, + 0.0000027213, 0.0000027296, 0.0000027392, 0.0000027440, 0.0000027460, + 0.0000027480, 0.0000027498, 0.0000027503, 0.0000027487, 0.0000027449, + 0.0000027411, 0.0000027382, 0.0000027347, 0.0000027309, 0.0000027275, + 0.0000027261, 0.0000027225, 0.0000027142, 0.0000027107, 0.0000027102, + 0.0000027036, 0.0000026957, 0.0000026916, 0.0000026887, 0.0000026867, + 0.0000026891, 0.0000026946, 0.0000027002, 0.0000027062, 0.0000027117, + 0.0000027157, 0.0000027163, 0.0000027139, 0.0000027122, 0.0000027122, + 0.0000027148, 0.0000027172, 0.0000027180, 0.0000027172, 0.0000027150, + 0.0000027137, 0.0000027148, 0.0000027164, 0.0000027165, 0.0000027140, + 0.0000027040, 0.0000026919, 0.0000026856, 0.0000026885, 0.0000027003, + 0.0000027049, 0.0000027060, 0.0000027108, 0.0000027104, 0.0000026958, + 0.0000026813, 0.0000026776, 0.0000026770, 0.0000026777, 0.0000026783, + 0.0000026773, 0.0000026724, 0.0000026689, 0.0000026696, 0.0000026721, + 0.0000026734, 0.0000026712, 0.0000026656, 0.0000026600, 0.0000026544, + 0.0000026499, 0.0000026504, 0.0000026536, 0.0000026524, 0.0000026467, + 0.0000026408, 0.0000026347, 0.0000026281, 0.0000026174, 0.0000025960, + 0.0000025645, 0.0000025303, 0.0000024991, 0.0000024751, 0.0000024613, + 0.0000024556, 0.0000024545, 0.0000024556, 0.0000024570, 0.0000024573, + 0.0000024563, 0.0000024539, 0.0000024517, 0.0000024532, 0.0000024633, + 0.0000024797, 0.0000024955, 0.0000025069, 0.0000025118, 0.0000025107, + 0.0000025033, 0.0000024926, 0.0000024832, 0.0000024737, 0.0000024653, + 0.0000024627, 0.0000024617, 0.0000024486, 0.0000024265, 0.0000024121, + 0.0000024085, 0.0000024078, 0.0000024056, 0.0000024014, 0.0000023968, + 0.0000023921, 0.0000023879, 0.0000023856, 0.0000023855, 0.0000023868, + 0.0000023886, 0.0000023900, 0.0000023904, 0.0000023896, 0.0000023863, + 0.0000023817, 0.0000023778, 0.0000023725, 0.0000023620, 0.0000023521, + 0.0000023584, 0.0000023793, 0.0000023938, 0.0000024066, 0.0000024257, + 0.0000024387, 0.0000024415, 0.0000024450, 0.0000024521, 0.0000024640, + 0.0000024937, 0.0000025412, 0.0000025778, 0.0000025965, 0.0000026099, + 0.0000026236, 0.0000026270, 0.0000026178, 0.0000026072, 0.0000025895, + 0.0000025704, 0.0000025717, 0.0000025667, 0.0000025382, 0.0000025512, + 0.0000026271, 0.0000026972, 0.0000027471, 0.0000027722, 0.0000027740, + 0.0000027701, 0.0000027700, 0.0000027733, 0.0000027653, 0.0000027577, + 0.0000027627, 0.0000027675, 0.0000027733, 0.0000027790, 0.0000027806, + 0.0000027799, 0.0000027782, 0.0000027732, 0.0000027687, 0.0000027676, + 0.0000027688, 0.0000027702, 0.0000027702, 0.0000027675, 0.0000027629, + 0.0000027568, 0.0000027496, 0.0000027416, 0.0000027335, 0.0000027271, + 0.0000027245, 0.0000027254, 0.0000027297, 0.0000027278, 0.0000027211, + 0.0000027144, 0.0000027106, 0.0000027082, 0.0000027058, 0.0000027045, + 0.0000027050, 0.0000027059, 0.0000027038, 0.0000027011, 0.0000027014, + 0.0000027030, 0.0000027027, 0.0000027017, 0.0000026999, 0.0000026950, + 0.0000026865, 0.0000026796, 0.0000026768, 0.0000026736, 0.0000026711, + 0.0000026727, 0.0000026763, 0.0000026771, 0.0000026790, 0.0000026808, + 0.0000026819, 0.0000026822, 0.0000026771, 0.0000026711, 0.0000026711, + 0.0000026748, 0.0000026764, 0.0000026693, 0.0000026546, 0.0000026265, + 0.0000025929, 0.0000025783, 0.0000025698, 0.0000025554, 0.0000025442, + 0.0000025380, 0.0000025282, 0.0000025224, 0.0000025364, 0.0000025442, + 0.0000025388, 0.0000025378, 0.0000025397, 0.0000025405, 0.0000025404, + 0.0000025393, 0.0000025380, 0.0000025378, 0.0000025390, 0.0000025412, + 0.0000025434, 0.0000025455, 0.0000025425, 0.0000025238, 0.0000024927, + 0.0000024697, 0.0000024579, 0.0000024484, 0.0000024409, 0.0000024393, + 0.0000024384, 0.0000024371, 0.0000024386, 0.0000024472, 0.0000024611, + 0.0000024728, 0.0000024785, 0.0000024798, 0.0000024783, 0.0000024730, + 0.0000024675, 0.0000024674, 0.0000024834, 0.0000025145, 0.0000025481, + 0.0000025740, 0.0000025870, 0.0000025908, 0.0000025885, 0.0000025852, + 0.0000025848, 0.0000025852, 0.0000025859, 0.0000025859, 0.0000025912, + 0.0000025887, 0.0000025770, 0.0000025707, 0.0000025620, 0.0000025518, + 0.0000025530, 0.0000025678, 0.0000025716, 0.0000025713, 0.0000025686, + 0.0000025614, 0.0000025540, 0.0000025502, 0.0000025474, 0.0000025436, + 0.0000025403, 0.0000025395, 0.0000025397, 0.0000025391, 0.0000025374, + 0.0000025351, 0.0000025320, 0.0000025326, 0.0000025372, 0.0000025368, + 0.0000025208, 0.0000024914, 0.0000024737, 0.0000024820, 0.0000025087, + 0.0000025193, 0.0000025187, 0.0000025248, 0.0000025217, 0.0000025096, + 0.0000025097, 0.0000025157, 0.0000025090, 0.0000024937, 0.0000024859, + 0.0000024880, 0.0000024989, 0.0000025096, 0.0000025104, 0.0000025130, + 0.0000025442, 0.0000025956, 0.0000026226, 0.0000026271, 0.0000026247, + 0.0000026151, 0.0000025991, 0.0000025849, 0.0000025766, 0.0000025710, + 0.0000025613, 0.0000025537, 0.0000025555, 0.0000025674, 0.0000025809, + 0.0000025914, 0.0000025979, 0.0000026021, 0.0000026028, 0.0000025993, + 0.0000025954, 0.0000025954, 0.0000025998, 0.0000026060, 0.0000026117, + 0.0000026189, 0.0000026259, 0.0000026318, 0.0000026355, 0.0000026375, + 0.0000026393, 0.0000026410, 0.0000026426, 0.0000026435, 0.0000026428, + 0.0000026418, 0.0000026411, 0.0000026403, 0.0000026393, 0.0000026381, + 0.0000026369, 0.0000026361, 0.0000026364, 0.0000026372, 0.0000026379, + 0.0000026380, 0.0000026379, 0.0000026380, 0.0000026382, 0.0000026375, + 0.0000026361, 0.0000026342, 0.0000026318, 0.0000026290, 0.0000026248, + 0.0000026202, 0.0000026180, 0.0000026196, 0.0000026234, 0.0000026281, + 0.0000026348, 0.0000026439, 0.0000026540, 0.0000026624, 0.0000026670, + 0.0000026677, 0.0000026641, 0.0000026547, 0.0000026458, 0.0000026427, + 0.0000026435, 0.0000026449, 0.0000026483, 0.0000026534, 0.0000026586, + 0.0000026611, 0.0000026625, 0.0000026668, 0.0000026765, 0.0000026900, + 0.0000027052, 0.0000027199, 0.0000027324, 0.0000027418, 0.0000027481, + 0.0000027512, 0.0000027517, 0.0000027501, 0.0000027465, 0.0000027396, + 0.0000027296, 0.0000027204, 0.0000027182, 0.0000027273, 0.0000027451, + 0.0000027603, 0.0000027687, 0.0000027721, 0.0000027722, 0.0000027693, + 0.0000027645, 0.0000027605, 0.0000027571, 0.0000027496, 0.0000027347, + 0.0000027175, 0.0000027061, 0.0000027002, 0.0000026960, 0.0000026897, + 0.0000026779, 0.0000026627, 0.0000026492, 0.0000026404, 0.0000026342, + 0.0000026284, 0.0000026240, 0.0000026217, 0.0000026206, 0.0000026200, + 0.0000026191, 0.0000026170, 0.0000026139, 0.0000026117, 0.0000026098, + 0.0000026072, 0.0000026039, 0.0000025995, 0.0000025943, 0.0000025894, + 0.0000025861, 0.0000025842, 0.0000025819, 0.0000025783, 0.0000025750, + 0.0000025751, 0.0000025802, 0.0000025881, 0.0000025957, 0.0000026017, + 0.0000026059, 0.0000026092, 0.0000026138, 0.0000026221, 0.0000026327, + 0.0000026451, 0.0000026574, 0.0000026694, 0.0000026828, 0.0000026973, + 0.0000027080, 0.0000027109, 0.0000027092, 0.0000027114, 0.0000027239, + 0.0000027444, 0.0000027667, 0.0000027840, 0.0000027941, 0.0000027982, + 0.0000028000, 0.0000028018, 0.0000028037, 0.0000028048, 0.0000028052, + 0.0000028049, 0.0000028039, 0.0000028041, 0.0000028065, 0.0000028094, + 0.0000028106, 0.0000028082, 0.0000028027, 0.0000027966, 0.0000027915, + 0.0000027871, 0.0000027831, 0.0000027781, 0.0000027715, 0.0000027645, + 0.0000027589, 0.0000027558, 0.0000027547, 0.0000027531, 0.0000027481, + 0.0000027398, 0.0000027307, 0.0000027238, 0.0000027198, 0.0000027168, + 0.0000027141, 0.0000027112, 0.0000027089, 0.0000027094, 0.0000027155, + 0.0000027291, 0.0000027482, 0.0000027674, 0.0000027799, 0.0000027823, + 0.0000027815, 0.0000027896, 0.0000028053, 0.0000028160, 0.0000028180, + 0.0000028123, 0.0000028057, 0.0000028083, 0.0000028167, 0.0000028199, + 0.0000028177, 0.0000028115, 0.0000028039, 0.0000027974, 0.0000027902, + 0.0000027809, 0.0000027724, 0.0000027699, 0.0000027741, 0.0000027844, + 0.0000027966, 0.0000028065, 0.0000028121, 0.0000028137, 0.0000028135, + 0.0000028109, 0.0000028041, 0.0000027946, 0.0000027844, 0.0000027751, + 0.0000027671, 0.0000027615, 0.0000027589, 0.0000027581, 0.0000027564, + 0.0000027528, 0.0000027456, 0.0000027372, 0.0000027290, 0.0000027160, + 0.0000026930, 0.0000026626, 0.0000026429, 0.0000026366, 0.0000026385, + 0.0000026393, 0.0000026365, 0.0000026297, 0.0000026219, 0.0000026156, + 0.0000026111, 0.0000026093, 0.0000026103, 0.0000026129, 0.0000026184, + 0.0000026287, 0.0000026437, 0.0000026597, 0.0000026753, 0.0000026900, + 0.0000027033, 0.0000027147, 0.0000027233, 0.0000027294, 0.0000027333, + 0.0000027350, 0.0000027345, 0.0000027326, 0.0000027315, 0.0000027311, + 0.0000027316, 0.0000027336, 0.0000027339, 0.0000027335, 0.0000027328, + 0.0000027309, 0.0000027287, 0.0000027274, 0.0000027280, 0.0000027284, + 0.0000027273, 0.0000027232, 0.0000027171, 0.0000027093, 0.0000027027, + 0.0000027003, 0.0000027014, 0.0000027019, 0.0000027017, 0.0000026999, + 0.0000026959, 0.0000026903, 0.0000026834, 0.0000026769, 0.0000026724, + 0.0000026679, 0.0000026634, 0.0000026594, 0.0000026561, 0.0000026533, + 0.0000026519, 0.0000026529, 0.0000026575, 0.0000026644, 0.0000026709, + 0.0000026762, 0.0000026792, 0.0000026810, 0.0000026812, 0.0000026811, + 0.0000026820, 0.0000026828, 0.0000026850, 0.0000026877, 0.0000026892, + 0.0000026896, 0.0000026892, 0.0000026872, 0.0000026813, 0.0000026744, + 0.0000026735, 0.0000026774, 0.0000026818, 0.0000026825, 0.0000026811, + 0.0000026832, 0.0000026845, 0.0000026856, 0.0000026937, 0.0000026967, + 0.0000026934, 0.0000026866, 0.0000026458, 0.0000025992, 0.0000025888, + 0.0000025959, 0.0000026095, 0.0000026412, 0.0000026778, 0.0000027042, + 0.0000027168, 0.0000027199, 0.0000027243, 0.0000027348, 0.0000027487, + 0.0000027598, 0.0000027645, 0.0000027617, 0.0000027557, 0.0000027517, + 0.0000027521, 0.0000027578, 0.0000027673, 0.0000027756, 0.0000027812, + 0.0000027855, 0.0000027894, 0.0000027924, 0.0000027936, 0.0000027953, + 0.0000027992, 0.0000028006, 0.0000027951, 0.0000027937, 0.0000027966, + 0.0000027945, 0.0000027900, 0.0000027870, 0.0000027863, 0.0000027875, + 0.0000027963, 0.0000028129, 0.0000028261, 0.0000028300, 0.0000028238, + 0.0000028061, 0.0000027932, 0.0000027984, 0.0000028037, 0.0000027972, + 0.0000027943, 0.0000027932, 0.0000027922, 0.0000028021, 0.0000028146, + 0.0000028199, 0.0000028223, 0.0000028237, 0.0000028243, 0.0000028245, + 0.0000028241, 0.0000028224, 0.0000028195, 0.0000028157, 0.0000028102, + 0.0000028023, 0.0000027907, 0.0000027765, 0.0000027636, 0.0000027560, + 0.0000027543, 0.0000027563, 0.0000027587, 0.0000027611, 0.0000027621, + 0.0000027604, 0.0000027555, 0.0000027476, 0.0000027324, 0.0000027103, + 0.0000026929, 0.0000026877, 0.0000026895, 0.0000026963, 0.0000027054, + 0.0000027164, 0.0000027281, 0.0000027338, 0.0000027322, 0.0000027293, + 0.0000027302, 0.0000027367, 0.0000027492, 0.0000027606, 0.0000027631, + 0.0000027622, 0.0000027618, 0.0000027590, 0.0000027501, 0.0000027409, + 0.0000027355, 0.0000027270, 0.0000027126, 0.0000026985, 0.0000026863, + 0.0000026717, 0.0000026526, 0.0000026324, 0.0000026172, 0.0000026097, + 0.0000026076, 0.0000026072, 0.0000026045, 0.0000025976, 0.0000025893, + 0.0000025849, 0.0000025836, 0.0000025824, 0.0000025796, 0.0000025753, + 0.0000025691, 0.0000025614, 0.0000025541, 0.0000025503, 0.0000025499, + 0.0000025510, 0.0000025529, 0.0000025559, 0.0000025594, 0.0000025613, + 0.0000025610, 0.0000025581, 0.0000025545, 0.0000025491, 0.0000025415, + 0.0000025358, 0.0000025383, 0.0000025558, 0.0000025795, 0.0000025989, + 0.0000026091, 0.0000026118, 0.0000026129, 0.0000026167, 0.0000026225, + 0.0000026266, 0.0000026269, 0.0000026225, 0.0000026155, 0.0000026078, + 0.0000026035, 0.0000026039, 0.0000026099, 0.0000026187, 0.0000026263, + 0.0000026308, 0.0000026326, 0.0000026329, 0.0000026325, 0.0000026326, + 0.0000026344, 0.0000026391, 0.0000026451, 0.0000026517, 0.0000026578, + 0.0000026623, 0.0000026647, 0.0000026651, 0.0000026652, 0.0000026671, + 0.0000026712, 0.0000026780, 0.0000026878, 0.0000026986, 0.0000027078, + 0.0000027134, 0.0000027146, 0.0000027122, 0.0000027077, 0.0000027021, + 0.0000026962, 0.0000026923, 0.0000026918, 0.0000026937, 0.0000026977, + 0.0000027005, 0.0000027009, 0.0000027013, 0.0000027044, 0.0000027115, + 0.0000027186, 0.0000027221, 0.0000027239, 0.0000027290, 0.0000027379, + 0.0000027443, 0.0000027436, 0.0000027409, 0.0000027422, 0.0000027496, + 0.0000027590, 0.0000027659, 0.0000027696, 0.0000027713, 0.0000027717, + 0.0000027722, 0.0000027740, 0.0000027772, 0.0000027816, 0.0000027871, + 0.0000027934, 0.0000027975, 0.0000027978, 0.0000027941, 0.0000027864, + 0.0000027775, 0.0000027717, 0.0000027695, 0.0000027672, 0.0000027625, + 0.0000027574, 0.0000027550, 0.0000027547, 0.0000027554, 0.0000027576, + 0.0000027645, 0.0000027729, 0.0000027774, 0.0000027767, 0.0000027744, + 0.0000027703, 0.0000027652, 0.0000027609, 0.0000027588, 0.0000027594, + 0.0000027622, 0.0000027657, 0.0000027681, 0.0000027689, 0.0000027686, + 0.0000027679, 0.0000027686, 0.0000027728, 0.0000027797, 0.0000027848, + 0.0000027864, 0.0000027846, 0.0000027809, 0.0000027781, 0.0000027770, + 0.0000027716, 0.0000027572, 0.0000027393, 0.0000027249, 0.0000027144, + 0.0000027048, 0.0000026953, 0.0000026861, 0.0000026792, 0.0000026756, + 0.0000026730, 0.0000026697, 0.0000026668, 0.0000026681, 0.0000026707, + 0.0000026712, 0.0000026678, 0.0000026632, 0.0000026599, 0.0000026563, + 0.0000026489, 0.0000026387, 0.0000026321, 0.0000026319, 0.0000026358, + 0.0000026393, 0.0000026391, 0.0000026339, 0.0000026247, 0.0000026158, + 0.0000026115, 0.0000026111, 0.0000026129, 0.0000026166, 0.0000026213, + 0.0000026254, 0.0000026273, 0.0000026265, 0.0000026228, 0.0000026178, + 0.0000026136, 0.0000026106, 0.0000026084, 0.0000026058, 0.0000026016, + 0.0000025962, 0.0000025920, 0.0000025900, 0.0000025885, 0.0000025845, + 0.0000025794, 0.0000025760, 0.0000025740, 0.0000025703, 0.0000025663, + 0.0000025645, 0.0000025616, 0.0000025507, 0.0000025309, 0.0000025114, + 0.0000025018, 0.0000025031, 0.0000025089, 0.0000025133, 0.0000025154, + 0.0000025159, 0.0000025135, 0.0000025061, 0.0000024920, 0.0000024711, + 0.0000024469, 0.0000024302, 0.0000024391, 0.0000024871, 0.0000025451, + 0.0000025694, 0.0000025876, 0.0000026357, 0.0000026905, 0.0000027340, + 0.0000027616, 0.0000027661, 0.0000027593, 0.0000027407, 0.0000027243, + 0.0000027183, 0.0000027194, 0.0000027262, 0.0000027355, 0.0000027411, + 0.0000027434, 0.0000027449, 0.0000027463, 0.0000027469, 0.0000027462, + 0.0000027433, 0.0000027400, 0.0000027375, 0.0000027358, 0.0000027330, + 0.0000027292, 0.0000027263, 0.0000027244, 0.0000027174, 0.0000027084, + 0.0000027068, 0.0000027045, 0.0000026971, 0.0000026935, 0.0000026920, + 0.0000026884, 0.0000026858, 0.0000026886, 0.0000026939, 0.0000026981, + 0.0000027020, 0.0000027067, 0.0000027105, 0.0000027118, 0.0000027115, + 0.0000027122, 0.0000027136, 0.0000027147, 0.0000027145, 0.0000027131, + 0.0000027111, 0.0000027108, 0.0000027120, 0.0000027134, 0.0000027141, + 0.0000027131, 0.0000027049, 0.0000026937, 0.0000026870, 0.0000026883, + 0.0000026989, 0.0000027039, 0.0000027041, 0.0000027080, 0.0000027099, + 0.0000027008, 0.0000026848, 0.0000026772, 0.0000026756, 0.0000026758, + 0.0000026767, 0.0000026768, 0.0000026731, 0.0000026691, 0.0000026691, + 0.0000026718, 0.0000026747, 0.0000026757, 0.0000026734, 0.0000026684, + 0.0000026620, 0.0000026575, 0.0000026581, 0.0000026594, 0.0000026557, + 0.0000026494, 0.0000026430, 0.0000026351, 0.0000026245, 0.0000026061, + 0.0000025762, 0.0000025407, 0.0000025065, 0.0000024776, 0.0000024584, + 0.0000024504, 0.0000024488, 0.0000024482, 0.0000024480, 0.0000024484, + 0.0000024493, 0.0000024505, 0.0000024514, 0.0000024514, 0.0000024496, + 0.0000024480, 0.0000024505, 0.0000024620, 0.0000024772, 0.0000024892, + 0.0000024946, 0.0000024943, 0.0000024890, 0.0000024810, 0.0000024730, + 0.0000024642, 0.0000024581, 0.0000024572, 0.0000024521, 0.0000024336, + 0.0000024153, 0.0000024099, 0.0000024111, 0.0000024115, 0.0000024092, + 0.0000024036, 0.0000023969, 0.0000023911, 0.0000023869, 0.0000023851, + 0.0000023855, 0.0000023870, 0.0000023885, 0.0000023895, 0.0000023897, + 0.0000023887, 0.0000023859, 0.0000023814, 0.0000023764, 0.0000023719, + 0.0000023639, 0.0000023522, 0.0000023507, 0.0000023647, 0.0000023854, + 0.0000023973, 0.0000024105, 0.0000024265, 0.0000024344, 0.0000024372, + 0.0000024438, 0.0000024528, 0.0000024669, 0.0000025047, 0.0000025549, + 0.0000025879, 0.0000026033, 0.0000026163, 0.0000026220, 0.0000026161, + 0.0000026063, 0.0000025868, 0.0000025704, 0.0000025744, 0.0000025638, + 0.0000025345, 0.0000025498, 0.0000026279, 0.0000026961, 0.0000027449, + 0.0000027720, 0.0000027739, 0.0000027700, 0.0000027673, 0.0000027713, + 0.0000027668, 0.0000027555, 0.0000027575, 0.0000027639, 0.0000027714, + 0.0000027785, 0.0000027810, 0.0000027802, 0.0000027789, 0.0000027771, + 0.0000027751, 0.0000027730, 0.0000027721, 0.0000027708, 0.0000027689, + 0.0000027644, 0.0000027576, 0.0000027498, 0.0000027425, 0.0000027365, + 0.0000027309, 0.0000027266, 0.0000027262, 0.0000027279, 0.0000027309, + 0.0000027294, 0.0000027250, 0.0000027209, 0.0000027183, 0.0000027161, + 0.0000027136, 0.0000027112, 0.0000027103, 0.0000027096, 0.0000027057, + 0.0000027021, 0.0000027019, 0.0000027034, 0.0000027036, 0.0000027027, + 0.0000026997, 0.0000026926, 0.0000026850, 0.0000026797, 0.0000026780, + 0.0000026776, 0.0000026745, 0.0000026712, 0.0000026730, 0.0000026767, + 0.0000026784, 0.0000026800, 0.0000026813, 0.0000026838, 0.0000026824, + 0.0000026735, 0.0000026685, 0.0000026698, 0.0000026721, 0.0000026677, + 0.0000026562, 0.0000026344, 0.0000026022, 0.0000025842, 0.0000025760, + 0.0000025624, 0.0000025503, 0.0000025432, 0.0000025330, 0.0000025273, + 0.0000025403, 0.0000025482, 0.0000025425, 0.0000025388, 0.0000025377, + 0.0000025370, 0.0000025365, 0.0000025354, 0.0000025340, 0.0000025346, + 0.0000025368, 0.0000025399, 0.0000025428, 0.0000025458, 0.0000025475, + 0.0000025402, 0.0000025113, 0.0000024772, 0.0000024598, 0.0000024505, + 0.0000024402, 0.0000024349, 0.0000024345, 0.0000024330, 0.0000024326, + 0.0000024388, 0.0000024543, 0.0000024691, 0.0000024762, 0.0000024790, + 0.0000024786, 0.0000024767, 0.0000024730, 0.0000024680, 0.0000024683, + 0.0000024801, 0.0000025060, 0.0000025372, 0.0000025655, 0.0000025858, + 0.0000025932, 0.0000025910, 0.0000025876, 0.0000025852, 0.0000025846, + 0.0000025836, 0.0000025876, 0.0000025904, 0.0000025839, 0.0000025716, + 0.0000025658, 0.0000025567, 0.0000025481, 0.0000025547, 0.0000025696, + 0.0000025729, 0.0000025735, 0.0000025705, 0.0000025625, 0.0000025567, + 0.0000025545, 0.0000025523, 0.0000025490, 0.0000025450, 0.0000025418, + 0.0000025398, 0.0000025380, 0.0000025366, 0.0000025358, 0.0000025346, + 0.0000025346, 0.0000025376, 0.0000025386, 0.0000025303, 0.0000025066, + 0.0000024838, 0.0000024863, 0.0000025063, 0.0000025210, 0.0000025210, + 0.0000025245, 0.0000025270, 0.0000025147, 0.0000025049, 0.0000025115, + 0.0000025150, 0.0000025053, 0.0000024928, 0.0000024891, 0.0000024926, + 0.0000025014, 0.0000025057, 0.0000025044, 0.0000025138, 0.0000025543, + 0.0000026023, 0.0000026223, 0.0000026233, 0.0000026202, 0.0000026116, + 0.0000025975, 0.0000025839, 0.0000025746, 0.0000025664, 0.0000025563, + 0.0000025483, 0.0000025531, 0.0000025665, 0.0000025821, 0.0000025929, + 0.0000025982, 0.0000025990, 0.0000025963, 0.0000025935, 0.0000025942, + 0.0000026003, 0.0000026086, 0.0000026152, 0.0000026216, 0.0000026279, + 0.0000026326, 0.0000026353, 0.0000026365, 0.0000026370, 0.0000026369, + 0.0000026368, 0.0000026364, 0.0000026351, 0.0000026337, 0.0000026323, + 0.0000026308, 0.0000026291, 0.0000026270, 0.0000026248, 0.0000026233, + 0.0000026229, 0.0000026232, 0.0000026239, 0.0000026246, 0.0000026253, + 0.0000026269, 0.0000026291, 0.0000026306, 0.0000026316, 0.0000026319, + 0.0000026316, 0.0000026303, 0.0000026267, 0.0000026219, 0.0000026186, + 0.0000026189, 0.0000026190, 0.0000026195, 0.0000026224, 0.0000026295, + 0.0000026406, 0.0000026523, 0.0000026602, 0.0000026626, 0.0000026604, + 0.0000026524, 0.0000026447, 0.0000026428, 0.0000026438, 0.0000026438, + 0.0000026439, 0.0000026470, 0.0000026526, 0.0000026581, 0.0000026639, + 0.0000026711, 0.0000026810, 0.0000026942, 0.0000027086, 0.0000027216, + 0.0000027317, 0.0000027388, 0.0000027431, 0.0000027444, 0.0000027437, + 0.0000027415, 0.0000027377, 0.0000027310, 0.0000027222, 0.0000027150, + 0.0000027141, 0.0000027224, 0.0000027377, 0.0000027524, 0.0000027613, + 0.0000027665, 0.0000027682, 0.0000027668, 0.0000027626, 0.0000027572, + 0.0000027482, 0.0000027333, 0.0000027183, 0.0000027101, 0.0000027079, + 0.0000027043, 0.0000026946, 0.0000026788, 0.0000026588, 0.0000026398, + 0.0000026276, 0.0000026231, 0.0000026208, 0.0000026168, 0.0000026126, + 0.0000026099, 0.0000026083, 0.0000026075, 0.0000026070, 0.0000026061, + 0.0000026058, 0.0000026069, 0.0000026082, 0.0000026078, 0.0000026049, + 0.0000025998, 0.0000025926, 0.0000025852, 0.0000025794, 0.0000025755, + 0.0000025720, 0.0000025684, 0.0000025657, 0.0000025658, 0.0000025702, + 0.0000025778, 0.0000025859, 0.0000025932, 0.0000025986, 0.0000026024, + 0.0000026067, 0.0000026136, 0.0000026233, 0.0000026358, 0.0000026493, + 0.0000026619, 0.0000026740, 0.0000026872, 0.0000026989, 0.0000027053, + 0.0000027056, 0.0000027045, 0.0000027083, 0.0000027211, 0.0000027418, + 0.0000027626, 0.0000027775, 0.0000027856, 0.0000027899, 0.0000027930, + 0.0000027957, 0.0000027979, 0.0000027992, 0.0000027989, 0.0000027966, + 0.0000027939, 0.0000027929, 0.0000027933, 0.0000027932, 0.0000027905, + 0.0000027840, 0.0000027759, 0.0000027696, 0.0000027656, 0.0000027618, + 0.0000027573, 0.0000027528, 0.0000027492, 0.0000027468, 0.0000027464, + 0.0000027474, 0.0000027481, 0.0000027454, 0.0000027388, 0.0000027301, + 0.0000027214, 0.0000027138, 0.0000027083, 0.0000027053, 0.0000027047, + 0.0000027048, 0.0000027057, 0.0000027090, 0.0000027173, 0.0000027302, + 0.0000027467, 0.0000027646, 0.0000027774, 0.0000027795, 0.0000027785, + 0.0000027886, 0.0000028067, 0.0000028160, 0.0000028155, 0.0000028093, + 0.0000028036, 0.0000028071, 0.0000028152, 0.0000028178, 0.0000028148 }; static void usage(const char* prog) @@ -24784,7 +24784,8 @@ static void usage(const char* prog) exit(1); } -typedef enum { +typedef enum +{ PACKING_TYPE_BEFORE_VALUES, VALUES_BEFORE_PACKING_TYPE } PackingStage; @@ -24794,10 +24795,10 @@ typedef enum { int main(int argc, char** argv) { - size_t values_len = sizeof(values)/sizeof(values[0]); + size_t values_len = sizeof(values) / sizeof(values[0]); const char* sample_filename = "gg_sfc_grib2"; - grib_handle* h = NULL; - size_t str_len = 0; + grib_handle* h = NULL; + size_t str_len = 0; PackingStage packing_stage; char* packing_type; char* outfile_name; @@ -24806,30 +24807,30 @@ int main(int argc, char** argv) if (argc != 4) usage(argv[0]); packing_type = argv[1]; - if (strcmp(argv[2], "packing_type_before_values")==0) + if (strcmp(argv[2], "packing_type_before_values") == 0) packing_stage = PACKING_TYPE_BEFORE_VALUES; - else if (strcmp(argv[2], "values_before_packing_type")==0) + else if (strcmp(argv[2], "values_before_packing_type") == 0) packing_stage = VALUES_BEFORE_PACKING_TYPE; else exit(1); outfile_name = argv[3]; - fprintf(stderr,"Using sample_filename = %s\n", sample_filename); + fprintf(stderr, "Using sample_filename = %s\n", sample_filename); h = grib_handle_new_from_samples(0, sample_filename); Assert(h); - if (strcmp(packing_type, "grid_second_order")==0 && packing_stage == VALUES_BEFORE_PACKING_TYPE) { + if (strcmp(packing_type, "grid_second_order") == 0 && packing_stage == VALUES_BEFORE_PACKING_TYPE) { check = 0; /* TDOD */ } GRIB_CHECK(grib_set_long(h, "bitsPerValue", 16), 0); if (packing_stage == PACKING_TYPE_BEFORE_VALUES) { - fprintf(stderr,"Set packingType to %s\n", packing_type); + fprintf(stderr, "Set packingType to %s\n", packing_type); GRIB_CHECK(grib_set_string(h, "packingType", packing_type, &str_len), 0); } - fprintf(stderr,"Set values. values_len=%lu\n", (unsigned long)values_len); + fprintf(stderr, "Set values. values_len=%lu\n", (unsigned long)values_len); GRIB_CHECK(grib_set_double_array(h, "values", values, values_len), 0); if (packing_stage == VALUES_BEFORE_PACKING_TYPE) { @@ -24840,9 +24841,9 @@ int main(int argc, char** argv) GRIB_CHECK(grib_write_message(h, outfile_name, "w"), 0); fprintf(stderr, "%s checks on decoded values '%s' (%s) ...\n", - (check?"Doing":"Skipping"), packing_type, argv[2]); + (check ? "Doing" : "Skipping"), packing_type, argv[2]); if (check) { - size_t i = 0; + size_t i = 0; double* vals = (double*)malloc(sizeof(double) * values_len); GRIB_CHECK(grib_get_double_array(h, "values", vals, &values_len), 0); for (i = 0; i < values_len; i++) { @@ -24853,19 +24854,19 @@ int main(int argc, char** argv) return 1; } } - if (strcmp(packing_type, "grid_simple")==0 || strcmp(packing_type, "grid_ieee")==0) { - double calc = 0; + if (strcmp(packing_type, "grid_simple") == 0 || strcmp(packing_type, "grid_ieee") == 0) { + double calc = 0; long offsetAfterData = 0, offsetBeforeData = 0; - GRIB_CHECK(grib_get_long(h, "offsetAfterData", &offsetAfterData), 0); + GRIB_CHECK(grib_get_long(h, "offsetAfterData", &offsetAfterData), 0); GRIB_CHECK(grib_get_long(h, "offsetBeforeData", &offsetBeforeData), 0); calc = (offsetAfterData - offsetBeforeData) * 8.0 / values_len; printf("bitsPerValue calculated as = (offsetAfterData - offsetBeforeData)*8/numValues = %g\n", calc); - Assert( calc == 16 || calc == 32 || calc == 64 ); + Assert(calc == 16 || calc == 32 || calc == 64); } free(vals); } grib_handle_delete(h); - fprintf(stderr,"All done\n"); + fprintf(stderr, "All done\n"); return 0; } From f0afba273a1ce7aee75f95b1953a9fae6d3b4c0c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 9 Dec 2023 14:50:06 +0000 Subject: [PATCH 133/469] Testing: cppcheck warnings --- tests/bufr_keys_iter.cc | 2 +- tests/grib_encode_pthreads.cc | 2 +- tests/grib_optimize_scaling.cc | 4 ++-- tests/grib_read_index.cc | 2 +- tests/grib_threads_ecc-604-encode.cc | 8 ++++---- tests/grib_threads_ecc-604.cc | 10 +++++----- tests/largefile.cc | 6 +++--- tests/so_perf.cc | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/bufr_keys_iter.cc b/tests/bufr_keys_iter.cc index c96a54f9e..f2ab295b7 100644 --- a/tests/bufr_keys_iter.cc +++ b/tests/bufr_keys_iter.cc @@ -67,7 +67,7 @@ int main(int argc, char* argv[]) } while (codes_bufr_keys_iterator_next(kiter)) { - char* kname = codes_bufr_keys_iterator_get_name(kiter); + const char* kname = codes_bufr_keys_iterator_get_name(kiter); printf("%s\n", kname); } codes_bufr_keys_iterator_delete(kiter); diff --git a/tests/grib_encode_pthreads.cc b/tests/grib_encode_pthreads.cc index 44a69eafc..8bda99121 100644 --- a/tests/grib_encode_pthreads.cc +++ b/tests/grib_encode_pthreads.cc @@ -49,7 +49,7 @@ void* runner(void* ptr) pthread_exit(0); } -static int encode_file(char* input_file, char* output_file) +static int encode_file(const char* input_file, const char* output_file) { grib_handle* source_handle = NULL; const void* buffer = NULL; diff --git a/tests/grib_optimize_scaling.cc b/tests/grib_optimize_scaling.cc index 09e66aec2..c6124a049 100644 --- a/tests/grib_optimize_scaling.cc +++ b/tests/grib_optimize_scaling.cc @@ -42,7 +42,7 @@ static void encode_decode(double* zval, const char* packingType, const int bitsP GRIB_CHECK(grib_handle_delete(h), 0); } -static double calc_error(double* zval1, double* zval2) +static double calc_error(const double* zval1, const double* zval2) { int i; double zerr = 0; @@ -55,7 +55,7 @@ static double calc_error(double* zval1, double* zval2) int main(int argc, char* argv[]) { - int bitsPerValue[11] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }; + const int bitsPerValue[11] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }; int ipackingType, ibitsPerValue, ioptimizeScaleFactor; for (ibitsPerValue = 0; ibitsPerValue < 11; ibitsPerValue++) { diff --git a/tests/grib_read_index.cc b/tests/grib_read_index.cc index b60e43325..4dd8bd7d0 100644 --- a/tests/grib_read_index.cc +++ b/tests/grib_read_index.cc @@ -10,7 +10,7 @@ #include "grib_api.h" -static void usage(char* prog) +static void usage(const char* prog) { printf("usage: %s infile\n", prog); exit(1); diff --git a/tests/grib_threads_ecc-604-encode.cc b/tests/grib_threads_ecc-604-encode.cc index d2438e299..0f2e37560 100644 --- a/tests/grib_threads_ecc-604-encode.cc +++ b/tests/grib_threads_ecc-604-encode.cc @@ -88,11 +88,11 @@ int main(int argc, char** argv) parallel = 0; } if (parallel) { - printf("Running parallel in %ld threads. %ld iterations (prod=%ld)\n", NUM_THREADS, FILES_PER_ITERATION, NUM_THREADS * FILES_PER_ITERATION); + printf("Running parallel in %zu threads. %zu iterations (prod=%zu)\n", NUM_THREADS, FILES_PER_ITERATION, NUM_THREADS * FILES_PER_ITERATION); printf("Options: dump=%d, clone=%d, write=%d\n", opt_dump, opt_clone, opt_write); } else { - printf("Running sequentially in %ld runs. %ld iterations\n", NUM_THREADS, FILES_PER_ITERATION); + printf("Running sequentially in %zu runs. %zu iterations\n", NUM_THREADS, FILES_PER_ITERATION); } { @@ -146,7 +146,7 @@ void do_encode(void* ptr) for (i = 0; i < FILES_PER_ITERATION; i++) { grib_handle* h = grib_handle_clone(hs); if (opt_write) { - snprintf(output_file, 50, "output/output_file_%ld-%ld.grib", data->number, i); + snprintf(output_file, 50, "output/output_file_%zu-%zu.grib", data->number, i); encode_values(h, output_file); } else { @@ -160,6 +160,6 @@ void do_encode(void* ptr) strftime(stime, 32, "%H:%M:%S", &result); /* Try to get milliseconds here too*/ /* asctime_r(&result, stime); */ - printf("%s: Worker %ld finished.\n", stime, data->number); + printf("%s: Worker %zu finished.\n", stime, data->number); grib_handle_delete(hs); } diff --git a/tests/grib_threads_ecc-604.cc b/tests/grib_threads_ecc-604.cc index c09d2ea91..6ebe6438f 100644 --- a/tests/grib_threads_ecc-604.cc +++ b/tests/grib_threads_ecc-604.cc @@ -24,7 +24,7 @@ int opt_dump = 0; /* If 1 then dump handle to /dev/null */ int opt_clone = 0; /* If 1 then clone source handle */ int opt_write = 0; /* If 1 write handle to file */ -static int encode_file(char* template_file, char* output_file) +static int encode_file(const char* template_file, const char* output_file) { FILE *in, *out = NULL; grib_handle* source_handle = NULL; @@ -138,11 +138,11 @@ int main(int argc, char** argv) parallel = 0; } if (parallel) { - printf("Running parallel in %ld threads. %ld iterations (prod=%ld)\n", NUM_THREADS, FILES_PER_ITERATION, NUM_THREADS * FILES_PER_ITERATION); + printf("Running parallel in %zu threads. %zu iterations (prod=%zu)\n", NUM_THREADS, FILES_PER_ITERATION, NUM_THREADS * FILES_PER_ITERATION); printf("Options: dump=%d, clone=%d, write=%d\n", opt_dump, opt_clone, opt_write); } else { - printf("Running sequentially in %ld runs. %ld iterations\n", NUM_THREADS, FILES_PER_ITERATION); + printf("Running sequentially in %zu runs. %zu iterations\n", NUM_THREADS, FILES_PER_ITERATION); } { @@ -193,7 +193,7 @@ void do_stuff(void* ptr) for (i = 0; i < FILES_PER_ITERATION; i++) { if (opt_write) { - snprintf(output_file, 50, "output/output_file_%ld-%ld.grib", data->number, i); + snprintf(output_file, 50, "output/output_file_%zu-%zu.grib", data->number, i); encode_file(INPUT_FILE, output_file); } else { @@ -206,5 +206,5 @@ void do_stuff(void* ptr) strftime(stime, 32, "%H:%M:%S", &result); /* Try to get milliseconds here too*/ /* asctime_r(&result, stime); */ - printf("%s: Worker %ld finished.\n", stime, data->number); + printf("%s: Worker %zu finished.\n", stime, data->number); } diff --git a/tests/largefile.cc b/tests/largefile.cc index 3c1f59a6e..a09d84be4 100644 --- a/tests/largefile.cc +++ b/tests/largefile.cc @@ -14,7 +14,7 @@ #include #endif -void usage(char* prog) +void usage(const char* prog) { printf("usage: %s filename\n", prog); exit(1); @@ -32,7 +32,7 @@ int main(int argc, char* argv[]) if (argc != 2) usage(argv[0]); - printf("sizeof(off_t)=%d sizeof(long)=%d\n", sizeof(off_t), sizeof(long)); + printf("sizeof(off_t)=%zu sizeof(long)=%zu\n", sizeof(off_t), sizeof(long)); f = fopen(argv[1], "r"); if (!f) { @@ -50,7 +50,7 @@ int main(int argc, char* argv[]) } rsizeout = fread(str, 1, rsizein, f); if (rsizeout != rsizein) { - printf("rsizein=%d rsizeout=%d\n", rsizein, rsizeout); + printf("rsizein=%zu rsizeout=%zu\n", rsizein, rsizeout); printf("end of file\n"); exit(1); } diff --git a/tests/so_perf.cc b/tests/so_perf.cc index b35156788..9139199a3 100644 --- a/tests/so_perf.cc +++ b/tests/so_perf.cc @@ -206,7 +206,7 @@ void gribex_check(int err) { -void usage(char* prog) { +void usage(const char* prog) { printf("usage: %s [-a outfile | -w outfile ] grib_file repetitions bitsPerValue\n",prog); exit(1); } From 1bb1579ae2b6d6501aed96fe533100a5739ce86b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 9 Dec 2023 15:14:57 +0000 Subject: [PATCH 134/469] Header files: Cleanup --- src/grib_api_internal.h | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index bf6b3694d..53f276b0f 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -862,6 +862,7 @@ struct grib_handle /* grib_trie* bufr_elements_table; */ }; +/* For GRIB2 multi-field messages */ struct grib_multi_handle { grib_context* context; /** < context attached to this handle */ @@ -938,7 +939,6 @@ struct grib_accessor_class }; typedef struct grib_multi_support grib_multi_support; - struct grib_multi_support { FILE* file; @@ -955,7 +955,6 @@ struct grib_multi_support /* Hash_array */ typedef struct grib_hash_array_value grib_hash_array_value; - struct grib_hash_array_value { grib_hash_array_value* next; @@ -968,7 +967,6 @@ struct grib_hash_array_value /* Concepts */ typedef struct grib_concept_condition grib_concept_condition; - struct grib_concept_condition { grib_concept_condition* next; @@ -985,7 +983,6 @@ struct grib_concept_value_name }; typedef struct grib_concept_value grib_concept_value; - struct grib_concept_value { grib_concept_value* next; @@ -1415,7 +1412,6 @@ struct cvs_MD5Context /* --- */ typedef struct grib_rule_entry grib_rule_entry; - struct grib_rule_entry { grib_rule_entry* next; @@ -1424,7 +1420,6 @@ struct grib_rule_entry }; typedef struct grib_rule grib_rule; - struct grib_rule { grib_rule* next; @@ -1433,7 +1428,6 @@ struct grib_rule }; typedef struct grib_case grib_case; - struct grib_case { grib_arguments* values; @@ -1475,8 +1469,7 @@ struct grib_smart_table grib_smart_table_entry* entries; }; - -#if ECCODES_TIMER +#if defined(ECCODES_TIMER) typedef struct grib_timer { struct timeval start_; @@ -1495,11 +1488,6 @@ typedef struct grib_timer struct grib_timer* next_; } grib_timer; -#else -typedef struct grib_timer -{ - char nothing; -} grib_timer; #endif typedef struct j2k_encode_helper @@ -1530,4 +1518,3 @@ typedef struct j2k_encode_helper #endif #endif - From fdc57f8c2628868a4c7c8611dd5fba3630ac2323 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 9 Dec 2023 15:52:01 +0000 Subject: [PATCH 135/469] Header files: Fix broken Windows build --- src/grib_api_internal.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 53f276b0f..b48aed6ff 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1469,7 +1469,8 @@ struct grib_smart_table grib_smart_table_entry* entries; }; -#if defined(ECCODES_TIMER) + +#if ECCODES_TIMER typedef struct grib_timer { struct timeval start_; @@ -1488,6 +1489,11 @@ typedef struct grib_timer struct grib_timer* next_; } grib_timer; +#else +typedef struct grib_timer +{ + char nothing; +} grib_timer; #endif typedef struct j2k_encode_helper From a2adea7b812462b51b07607ced8bf4fd0aecca07 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 9 Dec 2023 17:13:02 +0000 Subject: [PATCH 136/469] API: Allow setting code table keys as missing via codes_set_string --- examples/C/grib_set_missing.c | 2 ++ examples/C/grib_set_missing.sh | 4 ++++ src/grib_accessor_class_codetable.cc | 4 ++++ src/grib_accessor_class_long.cc | 2 +- src/grib_api_internal.h | 2 ++ 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/examples/C/grib_set_missing.c b/examples/C/grib_set_missing.c index 2b8b036e4..82f698975 100644 --- a/examples/C/grib_set_missing.c +++ b/examples/C/grib_set_missing.c @@ -62,6 +62,8 @@ int main(int argc, char** argv) /* Can also set to MISSING via codes_set_string */ CODES_CHECK(codes_set_string(h, "scaleFactorOfFirstFixedSurface", "missing", &str_len), 0); CODES_CHECK(codes_set_string(h, "scaledValueOfFirstFixedSurface", "missing", &str_len), 0); + /* Set a Code Table key to missing via codes_set_string */ + CODES_CHECK(codes_set_string(h, "typeOfFirstFixedSurface", "missing", &str_len), 0); /* see GRIB-490 */ CODES_CHECK(codes_get_long(h, "Ni", &Ni), 0); diff --git a/examples/C/grib_set_missing.sh b/examples/C/grib_set_missing.sh index baef5d073..9b1314f9b 100755 --- a/examples/C/grib_set_missing.sh +++ b/examples/C/grib_set_missing.sh @@ -20,6 +20,10 @@ if [ -f "${tools_dir}/grib_get" ]; then [ "$sf" = "MISSING" ] sf=`${tools_dir}/grib_get -p scaledValueOfFirstFixedSurface $tempGrib` [ "$sf" = "MISSING" ] + + # Code Table key being set to missing + sf=`${tools_dir}/grib_get -p typeOfFirstFixedSurface:i, $tempGrib` + [ "$sf" = "255" ] fi rm -f $tempGrib diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index a14f13178..453c97306 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -737,6 +737,10 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t* len) return grib_pack_long(a, &lValue, &l); } + if (STR_EQUAL_NOCASE(buffer, "missing")) { + return pack_missing(a); + } + grib_accessor_codetable* self = (grib_accessor_codetable*)a; grib_codetable* table; long i; diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 7fa0e5846..92431f812 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -258,7 +258,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) long v = 0; /* The converted value */ // ECC-1722 - if (strcmp_nocase(val, "missing")==0) { + if (STR_EQUAL_NOCASE(val, "missing")) { return pack_missing(a); } diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index b48aed6ff..06e4ef451 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -201,6 +201,8 @@ extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr, int type); /* Return true if two strings are equal */ #define STR_EQUAL(a, b) (strcmp((a), (b)) == 0) +/* Return true if two strings are equal, ignoring case */ +#define STR_EQUAL_NOCASE(a, b) (strcmp_nocase((a), (b)) == 0) #include "grib_api.h" From 18d42c859f50e90104c7c5906b4518f772b99e94 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 10 Dec 2023 14:04:22 +0000 Subject: [PATCH 137/469] Testing: Increase coverage --- tests/grib_step.sh | 20 ++++++++++++++++++++ tests/unit_tests.cc | 6 ++++++ 2 files changed, 26 insertions(+) diff --git a/tests/grib_step.sh b/tests/grib_step.sh index ca101b3d5..0e5dd7a0c 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -221,6 +221,26 @@ set -e grep -q "Unable to set stepRange" $templog +# GRIB1: sub-hourly +# ----------------- +${tools_dir}/grib_set -s unitOfTimeRange=0,P1=5 $grib1_sample $temp +set +e +${tools_dir}/grib_get -p step $temp 2>$templog +status=$? +set -e +[ $status -ne 0 ] +grep -q "unable to represent the step in h" $templog + +# GRIB1: Unknown timeRangeIndicator +${tools_dir}/grib_set -s timeRangeIndicator=138 $grib1_sample $temp +set +e +${tools_dir}/grib_get -p step $temp 2>$templog +status=$? +set -e +[ $status -ne 0 ] +grep -q "Unknown stepType" $templog + + # Clean up rm -f $temp $templog rm -f $grib2File.p8tmp ${grib2File}.tmp x.grib diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 6712d8dee..cf632e762 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -599,7 +599,13 @@ void test_sarray() grib_sarray_push(c, a, "ants"); grib_sarray_push(c, a, "bugs"); grib_sarray_print("sarray", a); + + grib_vsarray* va = grib_vsarray_new(c, 1, 1); + grib_vsarray_push(c, va, a); + grib_vsarray_print("vsarray", va); + grib_sarray_delete(c, a); + grib_vsarray_delete(c, va); } void test_codes_get_product_name() From 0c614bc926f2d1344f0e546f6f671f360e7944a7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 10 Dec 2023 14:04:56 +0000 Subject: [PATCH 138/469] Dead code removal --- src/eccodes_prototypes.h | 4 +- ...rib_accessor_class_expanded_descriptors.cc | 6 +- src/grib_bufr_descriptor.cc | 73 +++++++++---------- 3 files changed, 39 insertions(+), 44 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 350b8bed9..3c32efe98 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -176,9 +176,9 @@ void grib_hash_array_value_delete(grib_context* c, grib_hash_array_value* v); /* grib_bufr_descriptor.cc*/ bufr_descriptor* grib_bufr_descriptor_new(grib_accessor* tables_accessor, int code, int silent, int* err); bufr_descriptor* grib_bufr_descriptor_clone(bufr_descriptor* d); -int grib_bufr_descriptor_set_code(grib_accessor* tables_accessor, int code, bufr_descriptor* v); +int grib_bufr_descriptor_set_code(bufr_descriptor* v, int code); void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale); -int grib_bufr_descriptor_can_be_missing(bufr_descriptor* v); +int grib_bufr_descriptor_can_be_missing(const bufr_descriptor* v); void grib_bufr_descriptor_delete(bufr_descriptor* v); /* grib_bufr_descriptors_array.cc*/ diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 9d2fe95fc..5b7002bf8 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -343,7 +343,7 @@ static void __expand(grib_accessor* a, bufr_descriptors_array* unexpanded, bufr_ *err = GRIB_DECODING_ERROR; return; } - grib_bufr_descriptor_set_code(0, (size - 1) * 1000 + 100000, uidx); + grib_bufr_descriptor_set_code(uidx, (size - 1) * 1000 + 100000); size++; } else { @@ -602,7 +602,7 @@ static int expand(grib_accessor* a) bufr_descriptors_array* unexpanded_copy = NULL; bufr_descriptors_array* expanded = NULL; grib_context* c = a->context; - grib_handle* h = grib_handle_of_accessor(a); + const grib_handle* h = grib_handle_of_accessor(a); int operator206yyy_width = 0; /* width specified by operator 206YYY */ if (!self->do_expand) { @@ -813,7 +813,7 @@ static int unpack_string_array(grib_accessor* a, char** buffer, size_t* len) char buf[25] = {0,}; long llen = 0; size_t i = 0, size = 0; - grib_context* c = a->context; + const grib_context* c = a->context; err = grib_value_count(a, &llen); if (err) return err; diff --git a/src/grib_bufr_descriptor.cc b/src/grib_bufr_descriptor.cc index fa653bc29..fcaeeac46 100644 --- a/src/grib_bufr_descriptor.cc +++ b/src/grib_bufr_descriptor.cc @@ -48,45 +48,40 @@ bufr_descriptor* grib_bufr_descriptor_clone(bufr_descriptor* d) return cd; } -int grib_bufr_descriptor_set_code(grib_accessor* tables_accessor, int code, bufr_descriptor* v) +int grib_bufr_descriptor_set_code(bufr_descriptor* v, int code) { - int err = 0; - bufr_descriptor* d; - - if (!v) - return GRIB_NULL_POINTER; - - if (v->type == BUFR_DESCRIPTOR_TYPE_REPLICATION || v->type == BUFR_DESCRIPTOR_TYPE_OPERATOR) { - v->code = code; - v->F = code / 100000; - if (v->type == BUFR_DESCRIPTOR_TYPE_REPLICATION) Assert(v->F == 1); - if (v->type == BUFR_DESCRIPTOR_TYPE_OPERATOR) Assert(v->F == 2); - v->X = (code - v->F * 100000) / 1000; - v->Y = (code - v->F * 100000) % 1000; - } - else { - if (tables_accessor == NULL) - return GRIB_NULL_POINTER; - d = accessor_bufr_elements_table_get_descriptor(tables_accessor, code, &err); - v->code = d->code; - v->F = d->F; - v->X = d->X; - v->Y = d->Y; - /* grib_context_free(c,v->name); See ECC-489 */ - /* v->name=grib_context_strdup(c,d->name); See ECC-489 */ - - strcpy(v->shortName,d->shortName); - strcpy(v->units,d->units); - - v->scale = d->scale; - v->factor = d->factor; - v->width = d->width; - v->reference = d->reference; - v->type = d->type; - v->nokey = d->nokey; - grib_bufr_descriptor_delete(d); - } - return err; + if (!v) return GRIB_NULL_POINTER; + Assert(v->type == BUFR_DESCRIPTOR_TYPE_REPLICATION || v->type == BUFR_DESCRIPTOR_TYPE_OPERATOR); + + v->code = code; + v->F = code / 100000; + if (v->type == BUFR_DESCRIPTOR_TYPE_REPLICATION) Assert(v->F == 1); + if (v->type == BUFR_DESCRIPTOR_TYPE_OPERATOR) Assert(v->F == 2); + v->X = (code - v->F * 100000) / 1000; + v->Y = (code - v->F * 100000) % 1000; + + return GRIB_SUCCESS; + + // Old implementation also had a "grib_accessor* tables_accessor" argument: + // if (tables_accessor == NULL) + // return GRIB_NULL_POINTER; + // bufr_descriptor* d = accessor_bufr_elements_table_get_descriptor(tables_accessor, code, &err); + // v->code = d->code; + // v->F = d->F; + // v->X = d->X; + // v->Y = d->Y; + // /* grib_context_free(c,v->name); See ECC-489 */ + // /* v->name=grib_context_strdup(c,d->name); See ECC-489 */ + // strcpy(v->shortName,d->shortName); + // strcpy(v->units,d->units); + // v->scale = d->scale; + // v->factor = d->factor; + // v->width = d->width; + // v->reference = d->reference; + // v->type = d->type; + // v->nokey = d->nokey; + // grib_bufr_descriptor_delete(d); + // return err; } void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale) @@ -99,7 +94,7 @@ void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale) v->factor = codes_power(-scale, 10); } -int grib_bufr_descriptor_can_be_missing(bufr_descriptor* v) +int grib_bufr_descriptor_can_be_missing(const bufr_descriptor* v) { if (v->code == 31031 || v->code == 999999) return 0; From 33c0e268cf4518f5025c2a418b87cd2806d77181 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Mon, 11 Dec 2023 10:36:26 +0100 Subject: [PATCH 139/469] Add version to nightly ci install path --- .github/ci-nightly-test.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index 3ee9b739f..d0b206c7c 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -12,8 +12,10 @@ module load netcdf4/new module load gnuparallel/new module load python3 +version=$(cat $TMPDIR/eccodes/VERSION) + cd ~masn/REGRESSION_TESTING/ecCodes -./par-suite.sh -w $TMPDIR/install/eccodes +./par-suite.sh -w $TMPDIR/install/eccodes/$version # For debugging specific test(s) -# ./seq-suite.sh -w $TMPDIR/install/eccodes -d -t py_ +# ./seq-suite.sh -w $TMPDIR/install/eccodes/$version -d -t py_ From f3d412c54a936248678867be7cbd718171514248 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 11 Dec 2023 10:52:10 +0000 Subject: [PATCH 140/469] ECC-1731: GRIB2: Add additional paramIds to be used with CAMS chemIds --- definitions/grib2/cfVarName.def | 28 +++++++++++++++++++++++++++ definitions/grib2/name.def | 28 +++++++++++++++++++++++++++ definitions/grib2/paramId.def | 28 +++++++++++++++++++++++++++ definitions/grib2/shortName.def | 28 +++++++++++++++++++++++++++ definitions/grib2/units.def | 28 +++++++++++++++++++++++++++ tools/test.cc | 34 --------------------------------- 6 files changed, 140 insertions(+), 34 deletions(-) delete mode 100644 tools/test.cc diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 72e8fc702..8abb598c0 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -7707,6 +7707,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Mass mixing ratio 'mass_mixrat' = { @@ -8036,6 +8038,32 @@ parameterCategory = 20 ; parameterNumber = 59 ; } +#Mass mixing ratio from volcanoes +'mass_mixrat_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Total column vertically-integrated mass density from volcanoes +'tc_mdens_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Dry deposition velocity from volcanoes +'drydep_vel_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } #Virtual potential temperature 'vptmp' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index baa1ecdc5..d229add07 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -7707,6 +7707,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Mass mixing ratio 'Mass mixing ratio' = { @@ -8036,6 +8038,32 @@ parameterCategory = 20 ; parameterNumber = 59 ; } +#Mass mixing ratio from volcanoes +'Mass mixing ratio from volcanoes' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Total column vertically-integrated mass density from volcanoes +'Total column vertically-integrated mass density from volcanoes' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Dry deposition velocity from volcanoes +'Dry deposition velocity from volcanoes' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } #Virtual potential temperature 'Virtual potential temperature' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index b4db93f75..713494d7a 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -7707,6 +7707,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Mass mixing ratio '402000' = { @@ -8036,6 +8038,32 @@ parameterCategory = 20 ; parameterNumber = 59 ; } +#Mass mixing ratio from volcanoes +'454000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Total column vertically-integrated mass density from volcanoes +'455000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Dry deposition velocity from volcanoes +'456000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } #Virtual potential temperature '3012' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 7a5016a63..f1ddf79e4 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -7707,6 +7707,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Mass mixing ratio 'mass_mixrat' = { @@ -8036,6 +8038,32 @@ parameterCategory = 20 ; parameterNumber = 59 ; } +#Mass mixing ratio from volcanoes +'mass_mixrat_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Total column vertically-integrated mass density from volcanoes +'tc_mdens_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Dry deposition velocity from volcanoes +'drydep_vel_vol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } #Virtual potential temperature 'vptmp' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 783bf5bb0..7564605ae 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -7707,6 +7707,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Mass mixing ratio 'kg kg**-1' = { @@ -8036,6 +8038,32 @@ parameterCategory = 20 ; parameterNumber = 59 ; } +#Mass mixing ratio from volcanoes +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Total column vertically-integrated mass density from volcanoes +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } +#Dry deposition velocity from volcanoes +'m s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; + } #Virtual potential temperature 'K' = { discipline = 0 ; diff --git a/tools/test.cc b/tools/test.cc deleted file mode 100644 index dd15b8924..000000000 --- a/tools/test.cc +++ /dev/null @@ -1,34 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#include "grib_api_internal.h" - - -int main(int argc, char* argv[]) -{ - grib_context* c = grib_context_get_default(); - - grib_trie* t = grib_trie_new(c); - - grib_trie_insert(t, "hello", "w"); - grib_trie_insert(t, "hola", "e"); - - printf("%s\n", (char*)grib_trie_get(t, "hello")); - printf("%s\n", (char*)grib_trie_get(t, "hela")); - printf("%s\n", (char*)grib_trie_get(t, "hola")); - - grib_trie_remove(t, "hela"); - grib_trie_remove(t, "hola"); - - printf("%s\n", (char*)grib_trie_get(t, "hello")); - printf("%s\n", (char*)grib_trie_get(t, "hola")); - - return 0; -} From 1428d254443d2ae3c55a8bd72003f572330af18a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 11 Dec 2023 10:53:40 +0000 Subject: [PATCH 141/469] Bump up version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3afbaeb2b..dc1591835 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.33.0 +2.34.0 From b2cc616ca8c95ffea49384fb483f735bf8d56c1e Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Mon, 11 Dec 2023 14:07:13 +0000 Subject: [PATCH 142/469] ECC-1736: MARS classes for C3S hydrology and CERISE projects --- definitions/mars/class.table | 3 +++ 1 file changed, 3 insertions(+) diff --git a/definitions/mars/class.table b/definitions/mars/class.table index 55b321573..f2338f0ad 100644 --- a/definitions/mars/class.table +++ b/definitions/mars/class.table @@ -46,6 +46,9 @@ 45 ml Machine learning 46 d1 Destination Earth 47 o6 ECMWF Ocean ReAnalysis version 6 (EORA6) +48 eh C3S European hydrology +49 gh C3S Global hydrology +50 ci CERISE project 99 te Test 100 at Austria 101 be Belgium From 0d4b87b27171f32ff1b1e820a8d7af23780c231f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Dec 2023 10:32:24 +0000 Subject: [PATCH 143/469] ECC-1737: GRIB2: Add wave and ocean parameters --- definitions/grib2/cfVarName.def | 16 ++++++++++++++++ definitions/grib2/name.def | 16 ++++++++++++++++ definitions/grib2/paramId.def | 16 ++++++++++++++++ definitions/grib2/shortName.def | 16 ++++++++++++++++ definitions/grib2/units.def | 16 ++++++++++++++++ 5 files changed, 80 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 8abb598c0..797e0ec9e 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -895,6 +895,15 @@ scaleFactorOfUpperWavePeriodLimit = 0 ; scaledValueOfUpperWavePeriodLimit = 30 ; } +#Significant wave height of all waves with period larger than 10s +'sh10' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + typeOfWavePeriodInterval = 3 ; + scaleFactorOfLowerWavePeriodLimit = 0 ; + scaledValueOfLowerWavePeriodLimit = 10 ; + } #Significant wave height of first swell partition 'swh1' = { discipline = 10 ; @@ -7303,6 +7312,13 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean sea surface height with inverse barometer correction +'avg_zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean average sea water potential temperature in the upper 300m 'avg_pt300m' = { discipline = 10 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index d229add07..2ed74a3cd 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -895,6 +895,15 @@ scaleFactorOfUpperWavePeriodLimit = 0 ; scaledValueOfUpperWavePeriodLimit = 30 ; } +#Significant wave height of all waves with period larger than 10s +'Significant wave height of all waves with period larger than 10s' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + typeOfWavePeriodInterval = 3 ; + scaleFactorOfLowerWavePeriodLimit = 0 ; + scaledValueOfLowerWavePeriodLimit = 10 ; + } #Significant wave height of first swell partition 'Significant wave height of first swell partition' = { discipline = 10 ; @@ -7303,6 +7312,13 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean sea surface height with inverse barometer correction +'Time-mean sea surface height with inverse barometer correction' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean average sea water potential temperature in the upper 300m 'Time-mean average sea water potential temperature in the upper 300m' = { discipline = 10 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 713494d7a..baebb7f27 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -895,6 +895,15 @@ scaleFactorOfUpperWavePeriodLimit = 0 ; scaledValueOfUpperWavePeriodLimit = 30 ; } +#Significant wave height of all waves with period larger than 10s +'140120' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + typeOfWavePeriodInterval = 3 ; + scaleFactorOfLowerWavePeriodLimit = 0 ; + scaledValueOfLowerWavePeriodLimit = 10 ; + } #Significant wave height of first swell partition '140121' = { discipline = 10 ; @@ -7303,6 +7312,13 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean sea surface height with inverse barometer correction +'263143' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean average sea water potential temperature in the upper 300m '263144' = { discipline = 10 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index f1ddf79e4..28070723b 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -895,6 +895,15 @@ scaleFactorOfUpperWavePeriodLimit = 0 ; scaledValueOfUpperWavePeriodLimit = 30 ; } +#Significant wave height of all waves with period larger than 10s +'sh10' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + typeOfWavePeriodInterval = 3 ; + scaleFactorOfLowerWavePeriodLimit = 0 ; + scaledValueOfLowerWavePeriodLimit = 10 ; + } #Significant wave height of first swell partition 'swh1' = { discipline = 10 ; @@ -7303,6 +7312,13 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean sea surface height with inverse barometer correction +'avg_zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean average sea water potential temperature in the upper 300m 'avg_pt300m' = { discipline = 10 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 7564605ae..cee71a951 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -895,6 +895,15 @@ scaleFactorOfUpperWavePeriodLimit = 0 ; scaledValueOfUpperWavePeriodLimit = 30 ; } +#Significant wave height of all waves with period larger than 10s +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + typeOfWavePeriodInterval = 3 ; + scaleFactorOfLowerWavePeriodLimit = 0 ; + scaledValueOfLowerWavePeriodLimit = 10 ; + } #Significant wave height of first swell partition 'm' = { discipline = 10 ; @@ -7303,6 +7312,13 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean sea surface height with inverse barometer correction +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean average sea water potential temperature in the upper 300m 'K' = { discipline = 10 ; From c852227c6cf0cf64085d7f4c2ad8426ea1468c11 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Dec 2023 10:55:24 +0000 Subject: [PATCH 144/469] GRIB lightweight clone: Rename --- src/eccodes.cc | 4 ++-- src/eccodes.h | 2 +- src/grib_api.h | 2 +- src/grib_handle.cc | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/eccodes.cc b/src/eccodes.cc index a592f6f37..8e44949c4 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -175,9 +175,9 @@ grib_handle* codes_handle_clone(const grib_handle* h) { return grib_handle_clone(h); } -grib_handle* codes_handle_clone_light(const grib_handle* h) +grib_handle* codes_handle_clone_lightweight(const grib_handle* h) { - return grib_handle_clone_light(h); + return grib_handle_clone_lightweight(h); } int codes_handle_delete(grib_handle* h) diff --git a/src/eccodes.h b/src/eccodes.h index 39d230a4d..a9f4396b1 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -495,7 +495,7 @@ codes_handle* codes_handle_new_from_samples(codes_context* c, const char* sample * @return the new handle, NULL if the message is invalid or a problem is encountered */ codes_handle* codes_handle_clone(const codes_handle* h); -codes_handle* codes_handle_clone_light(const codes_handle* h); +codes_handle* codes_handle_clone_lightweight(const codes_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_api.h b/src/grib_api.h index ea92873f7..cf54f5745 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -507,7 +507,7 @@ grib_handle* grib_handle_new_from_samples(grib_context* c, const char* sample_na * @return the new handle, NULL if the message is invalid or a problem is encountered */ grib_handle* grib_handle_clone(const grib_handle* h); -grib_handle* grib_handle_clone_light(const grib_handle* h); +grib_handle* grib_handle_clone_lightweight(const grib_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_handle.cc b/src/grib_handle.cc index e80adcba3..e69b2f6f3 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -326,7 +326,7 @@ grib_handle* grib_handle_clone(const grib_handle* h) return result; } -static bool can_create_clone_light(const grib_handle* h) +static bool can_create_clone_lightweight(const grib_handle* h) { // Only for GRIB, not BUFR etc if (h->product_kind != PRODUCT_GRIB) return false; @@ -339,13 +339,13 @@ static bool can_create_clone_light(const grib_handle* h) return true; } -grib_handle* grib_handle_clone_light(const grib_handle* h) +grib_handle* grib_handle_clone_lightweight(const grib_handle* h) { int err = 0; grib_handle* result = NULL; grib_context* c = h->context; - if (!can_create_clone_light(h)) { + if (!can_create_clone_lightweight(h)) { // Lightweight clone not possible. Do a normal clone return grib_handle_clone(h); } @@ -381,7 +381,7 @@ grib_handle* grib_handle_clone_light(const grib_handle* h) return result; } -// grib_handle* grib_handle_clone_light(const grib_handle* h) +// grib_handle* grib_handle_clone_lightweight(const grib_handle* h) // { // int err = 0; // size_t size1 = 0; From d3bfe4605a5f195fcbd1ec475682938f49c4e3b7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Dec 2023 13:13:10 +0000 Subject: [PATCH 145/469] GRIB lightweight clone: Add test --- tests/CMakeLists.txt | 2 + tests/grib_clone_lightweight.cc | 86 +++++++++++++++++++++++++++++++++ tests/grib_clone_lightweight.sh | 30 ++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 tests/grib_clone_lightweight.cc create mode 100755 tests/grib_clone_lightweight.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8079b9082..686d63b93 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -17,6 +17,7 @@ list(APPEND test_c_bins grib_indexing grib_fieldset grib_multi_from_message + grib_clone_lightweight grib_read_index unit_tests bufr_keys_iter @@ -171,6 +172,7 @@ if( HAVE_BUILD_TOOLS ) grib_headers_only grib_unpack_subarray grib_count + grib_clone_lightweight bufr_templates bufr_dump_data bufr_dump_descriptors diff --git a/tests/grib_clone_lightweight.cc b/tests/grib_clone_lightweight.cc new file mode 100644 index 000000000..8bdb5bd08 --- /dev/null +++ b/tests/grib_clone_lightweight.cc @@ -0,0 +1,86 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ +#include +#include "eccodes.h" +#undef NDEBUG +#include + +static void usage(const char* app) +{ + fprintf(stderr, "Usage is: %s input_file ouput_file\n", app); +} + +int main(int argc, char* argv[]) +{ + FILE* in = NULL; + FILE* out = NULL; + codes_handle* source_handle = NULL; + const void* buffer = NULL; + int err = 0; + + long totalLength_src = 0, totalLength_dst = 0; + long edition = 0; + long dataSectionLength_src = 0, dataSectionLength_dst = 0; + long bitmapPresent_dst = 0, isConstant = 0; + size_t messageLength_src = 0, messageLength_dst = 0; + + if (argc != 3) { + usage(argv[0]); + return 1; + } + + in = fopen(argv[1], "rb"); + assert(in); + out = fopen(argv[2], "wb"); + assert(out); + + while ((source_handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err)) != NULL) { + codes_handle* clone_handle = codes_handle_clone_lightweight(source_handle); + assert(clone_handle); + + CODES_CHECK(codes_get_message(source_handle, &buffer, &messageLength_src), 0); + CODES_CHECK(codes_get_message(clone_handle, &buffer, &messageLength_dst), 0); + assert( messageLength_src > messageLength_dst ); + + CODES_CHECK(codes_get_long(source_handle, "totalLength", &totalLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "totalLength", &totalLength_dst), 0); + assert(totalLength_src > totalLength_dst); + + CODES_CHECK(codes_get_long(source_handle, "edition", &edition), 0); + if (edition == 1) { + CODES_CHECK(codes_get_long(source_handle, "section4Length", &dataSectionLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "section4Length", &dataSectionLength_dst), 0); + } else if (edition == 2) { + CODES_CHECK(codes_get_long(source_handle, "section7Length", &dataSectionLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "section7Length", &dataSectionLength_dst), 0); + } + //printf("sectionLengths: %ld %ld\n", dataSectionLength_src, dataSectionLength_dst); + assert( dataSectionLength_src > dataSectionLength_dst ); + + codes_get_long(clone_handle, "bitmapPresent", &bitmapPresent_dst); + assert(bitmapPresent_dst == 0); + codes_get_long(clone_handle, "isConstant", &isConstant); + assert(isConstant == 1); + + /* write out the cloned buffer */ + if (fwrite(buffer, 1, messageLength_dst, out) != messageLength_dst) { + perror(argv[1]); + return 1; + } + codes_handle_delete(clone_handle); + codes_handle_delete(source_handle); + } + + fclose(out); + fclose(in); + + printf("All OK\n"); + return 0; +} diff --git a/tests/grib_clone_lightweight.sh b/tests/grib_clone_lightweight.sh new file mode 100755 index 000000000..3e87f8c64 --- /dev/null +++ b/tests/grib_clone_lightweight.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_clone_lightweight_test" +temp=temp.$label.grib + +inputs=" + sst_globus0083.grib + sample.grib2 + mixed.grib +" + +for f in $inputs; do + infile=$data_dir/$f + rm -f $temp + $EXEC ${test_dir}/grib_clone_lightweight $infile $temp + ${tools_dir}/grib_compare -H -b totalLength $infile $temp +done + +# Clean up +rm -f $temp From 189ec64e07ead9729541519e84326e41895da1d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Dec 2023 15:49:31 +0000 Subject: [PATCH 146/469] GRIB lightweight clone: Testing --- tests/grib_clone_lightweight.cc | 48 ++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/tests/grib_clone_lightweight.cc b/tests/grib_clone_lightweight.cc index 8bdb5bd08..3ee8c545b 100644 --- a/tests/grib_clone_lightweight.cc +++ b/tests/grib_clone_lightweight.cc @@ -26,9 +26,9 @@ int main(int argc, char* argv[]) int err = 0; long totalLength_src = 0, totalLength_dst = 0; - long edition = 0; + long edition = 0, isGridded = 0, bitmapPresent = 0; + long isConstant_src = 0, isConstant_dst = 0; long dataSectionLength_src = 0, dataSectionLength_dst = 0; - long bitmapPresent_dst = 0, isConstant = 0; size_t messageLength_src = 0, messageLength_dst = 0; if (argc != 3) { @@ -45,29 +45,33 @@ int main(int argc, char* argv[]) codes_handle* clone_handle = codes_handle_clone_lightweight(source_handle); assert(clone_handle); - CODES_CHECK(codes_get_message(source_handle, &buffer, &messageLength_src), 0); - CODES_CHECK(codes_get_message(clone_handle, &buffer, &messageLength_dst), 0); - assert( messageLength_src > messageLength_dst ); + codes_get_long(source_handle, "isConstant", &isConstant_src); + codes_get_long(source_handle, "isGridded", &isGridded); + if (isGridded && !isConstant_src) { - CODES_CHECK(codes_get_long(source_handle, "totalLength", &totalLength_src), 0); - CODES_CHECK(codes_get_long(clone_handle, "totalLength", &totalLength_dst), 0); - assert(totalLength_src > totalLength_dst); + CODES_CHECK(codes_get_message(source_handle, &buffer, &messageLength_src), 0); + CODES_CHECK(codes_get_message(clone_handle, &buffer, &messageLength_dst), 0); + assert( messageLength_src > messageLength_dst ); - CODES_CHECK(codes_get_long(source_handle, "edition", &edition), 0); - if (edition == 1) { - CODES_CHECK(codes_get_long(source_handle, "section4Length", &dataSectionLength_src), 0); - CODES_CHECK(codes_get_long(clone_handle, "section4Length", &dataSectionLength_dst), 0); - } else if (edition == 2) { - CODES_CHECK(codes_get_long(source_handle, "section7Length", &dataSectionLength_src), 0); - CODES_CHECK(codes_get_long(clone_handle, "section7Length", &dataSectionLength_dst), 0); - } - //printf("sectionLengths: %ld %ld\n", dataSectionLength_src, dataSectionLength_dst); - assert( dataSectionLength_src > dataSectionLength_dst ); + CODES_CHECK(codes_get_long(source_handle, "totalLength", &totalLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "totalLength", &totalLength_dst), 0); + assert(totalLength_src > totalLength_dst); + + CODES_CHECK(codes_get_long(source_handle, "edition", &edition), 0); + if (edition == 1) { + CODES_CHECK(codes_get_long(source_handle, "section4Length", &dataSectionLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "section4Length", &dataSectionLength_dst), 0); + } else if (edition == 2) { + CODES_CHECK(codes_get_long(source_handle, "section7Length", &dataSectionLength_src), 0); + CODES_CHECK(codes_get_long(clone_handle, "section7Length", &dataSectionLength_dst), 0); + } + assert( dataSectionLength_src > dataSectionLength_dst ); - codes_get_long(clone_handle, "bitmapPresent", &bitmapPresent_dst); - assert(bitmapPresent_dst == 0); - codes_get_long(clone_handle, "isConstant", &isConstant); - assert(isConstant == 1); + codes_get_long(clone_handle, "bitmapPresent", &bitmapPresent); + assert(bitmapPresent == 0); + codes_get_long(clone_handle, "isConstant", &isConstant_dst); + assert(isConstant_dst == 1); + } /* write out the cloned buffer */ if (fwrite(buffer, 1, messageLength_dst, out) != messageLength_dst) { From 9d4d83b0f89eaf4fcc517e6527ff228c918cb1c0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 14 Dec 2023 13:35:47 +0000 Subject: [PATCH 147/469] Testing: Cleanup --- tests/grib_calendar.sh | 6 +++--- tests/grib_multi.sh | 19 +++++++++---------- tests/grib_padding.sh | 25 ++++++++++++++++--------- tests/grib_set_bytes.cc | 2 +- tests/grib_set_bytes.sh | 15 +++++++++------ tests/grib_sh_imag.sh | 9 ++++++--- tests/grib_statistics.sh | 30 ++++++++++++++---------------- 7 files changed, 58 insertions(+), 48 deletions(-) diff --git a/tests/grib_calendar.sh b/tests/grib_calendar.sh index a523158a1..c877e798a 100755 --- a/tests/grib_calendar.sh +++ b/tests/grib_calendar.sh @@ -10,12 +10,12 @@ . ./include.ctest.sh +label="grib_calendar_test" -temp1=temp1.calendar.$$ -temp2=temp2.calendar.$$ +temp1=temp1.$label.$$ +temp2=temp2.$label.$$ sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl - ${tools_dir}/grib_set -s tablesVersion=13,setCalendarId=1,typeOfCalendar=0 $sample $temp1 grib_check_key_equals $temp1 calendarIdPresent 1 grib_check_key_equals $temp1 section1Length 24 diff --git a/tests/grib_multi.sh b/tests/grib_multi.sh index 2228a314f..f8e2d94d8 100755 --- a/tests/grib_multi.sh +++ b/tests/grib_multi.sh @@ -10,13 +10,13 @@ . ./include.ctest.sh -tmpdata=grib_multi.$$.grib +label="grib_multi_test" +tmpdata=temp.$label.$$.grib rm -f $tmpdata parameterNumber=`${tools_dir}/grib_get -p parameterNumber -w parameterCategory=2,parameterNumber=3 ${data_dir}/multi.grib2` -if [ -z "$parameterNumber" ] -then - echo ---------- grib_get failure +if [ -z "$parameterNumber" ]; then + echo '---------- grib_get failure' exit 1 fi @@ -24,15 +24,14 @@ ${tools_dir}/grib_copy -w parameterCategory=2,parameterNumber=3 ${data_dir}/mult ${tools_dir}/grib_compare ${data_dir}/v.grib2 $tmpdata.1 cat > $tmpdata.rules < $$_f < $tempFilt < $l2" ${tools_dir}/grib_set -M -s localDefinitionNumber=$l2 locx.grib1 locy.grib1 - ${tools_dir}/grib_filter -M $$_f locy.grib1 + ${tools_dir}/grib_filter -M $tempFilt locy.grib1 + count=$((count+1)) fi done done - -rm -f $$_f locx.grib1 locy.grib1 $temp +echo Did $count iterations +rm -f locx.grib1 locy.grib1 $tempGrib $tempFilt diff --git a/tests/grib_set_bytes.cc b/tests/grib_set_bytes.cc index 8dfc651d1..6fc7e434b 100644 --- a/tests/grib_set_bytes.cc +++ b/tests/grib_set_bytes.cc @@ -20,7 +20,7 @@ int main(int argc, char** argv) FILE* in = NULL; const char* infile = "../data/test_uuid.grib2"; FILE* out = NULL; - const char* outfile = "temp.grib_set_bytes.grib"; + const char* outfile = "temp.grib_set_bytes_test.grib"; grib_handle* h = NULL; const void* buffer = NULL; diff --git a/tests/grib_set_bytes.sh b/tests/grib_set_bytes.sh index 4aaeefd06..454044ebf 100755 --- a/tests/grib_set_bytes.sh +++ b/tests/grib_set_bytes.sh @@ -9,14 +9,17 @@ # . ./include.ctest.sh -TEMP_ERR=temp.grib_set_bytes.log -TEMP_OUT=temp.grib_set_bytes.grib -$EXEC ${test_dir}/grib_set_bytes 2>$TEMP_ERR +label="grib_set_bytes_test" -grep -q "Wrong size.*for uuidOfVGrid. It is 16 bytes long" $TEMP_ERR +tempErr=temp.$label.log +tempOut=temp.$label.grib -uuid=`${tools_dir}/grib_get -p uuidOfVGrid $TEMP_OUT` +$EXEC ${test_dir}/grib_set_bytes 2>$tempErr + +grep -q "Wrong size.*for uuidOfVGrid. It is 16 bytes long" $tempErr + +uuid=`${tools_dir}/grib_get -p uuidOfVGrid $tempOut` [ "$uuid" = "07204051072040510720405207204053" ] -rm -f $TEMP_OUT $TEMP_ERR +rm -f $tempOut $tempErr diff --git a/tests/grib_sh_imag.sh b/tests/grib_sh_imag.sh index 3323f3227..26b07585b 100755 --- a/tests/grib_sh_imag.sh +++ b/tests/grib_sh_imag.sh @@ -10,7 +10,10 @@ . ./include.ctest.sh -TEMP=output.grib_sh_imag.grib -$EXEC ${test_dir}/grib_sh_imag $TEMP +# Check that first coefficient have an imaginary part equal to zero. +# philippe.marguinaud@meteo.fr, 2016/02 -rm -f $TEMP +tempGrib=output.grib_sh_imag.grib +$EXEC ${test_dir}/grib_sh_imag $tempGrib + +rm -f $tempGrib diff --git a/tests/grib_statistics.sh b/tests/grib_statistics.sh index 5be8ed60f..6863d591a 100755 --- a/tests/grib_statistics.sh +++ b/tests/grib_statistics.sh @@ -10,24 +10,24 @@ . ./include.ctest.sh +label="grib_statistics_test" +temp1=temp1.$label.grib +temp2=temp2.$label.grib + files="regular_latlon_surface.grib2 regular_latlon_surface.grib1" -for file in $files -do +for file in $files; do cat >statistics.filter< statistics.out @@ -42,8 +42,6 @@ rm -f statistics.out statistics.filter # See ECC-478 # --------------------------------------------------- input=${data_dir}/lfpw.grib1 -temp1=temp1.statistics.grib -temp2=temp2.statistics.grib stats=`${tools_dir}/grib_get -w count=50 -F%.2f -n statistics $input` [ "$stats" = "10098.00 0.00 1064.19 3066.07 2.57 4.61 0.00" ] From 560e10f6d97edd5ab76d2cab9baf8b539cb81380 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 15 Dec 2023 13:44:12 +0000 Subject: [PATCH 148/469] Error messages --- src/eccodes.h | 2 +- src/grib_api.h | 2 +- src/grib_errors.cc | 2 +- src/grib_errors.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index b4db4406a..268bf4319 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1527,7 +1527,7 @@ Error codes returned by the eccodes functions. #define CODES_WRONG_STEP_UNIT GRIB_WRONG_STEP_UNIT /** Invalid file id */ #define CODES_INVALID_FILE GRIB_INVALID_FILE -/** Invalid grib id */ +/** Invalid GRIB id */ #define CODES_INVALID_GRIB GRIB_INVALID_GRIB /** Invalid index id */ #define CODES_INVALID_INDEX GRIB_INVALID_INDEX diff --git a/src/grib_api.h b/src/grib_api.h index 21e605baa..998122eb0 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1658,7 +1658,7 @@ Error codes returned by the grib_api functions. #define GRIB_WRONG_STEP_UNIT -26 /** Invalid file id */ #define GRIB_INVALID_FILE -27 -/** Invalid grib id */ +/** Invalid GRIB id */ #define GRIB_INVALID_GRIB -28 /** Invalid index id */ #define GRIB_INVALID_INDEX -29 diff --git a/src/grib_errors.cc b/src/grib_errors.cc index ac61a6154..d94b5f845 100644 --- a/src/grib_errors.cc +++ b/src/grib_errors.cc @@ -40,7 +40,7 @@ static const char *errors[] = { "Unable to set step", /* -25 GRIB_WRONG_STEP */ "Wrong units for step (step must be integer)", /* -26 GRIB_WRONG_STEP_UNIT */ "Invalid file id", /* -27 GRIB_INVALID_FILE */ -"Invalid grib id", /* -28 GRIB_INVALID_GRIB */ +"Invalid GRIB id", /* -28 GRIB_INVALID_GRIB */ "Invalid index id", /* -29 GRIB_INVALID_INDEX */ "Invalid iterator id", /* -30 GRIB_INVALID_ITERATOR */ "Invalid keys iterator id", /* -31 GRIB_INVALID_KEYS_ITERATOR */ diff --git a/src/grib_errors.txt b/src/grib_errors.txt index 6019f6601..bc521bcce 100644 --- a/src/grib_errors.txt +++ b/src/grib_errors.txt @@ -29,7 +29,7 @@ GRIB_WRONG_STEP Unable to set step GRIB_WRONG_STEP_UNIT Wrong units for step (step must be integer) /* some errors for the fortran interface */ GRIB_INVALID_FILE Invalid file id -GRIB_INVALID_GRIB Invalid grib id +GRIB_INVALID_GRIB Invalid GRIB id GRIB_INVALID_INDEX Invalid index id GRIB_INVALID_ITERATOR Invalid iterator id GRIB_INVALID_KEYS_ITERATOR Invalid keys iterator id From 483316197af7af5862dacc4a397b89a2420d771a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 15 Dec 2023 15:16:40 +0000 Subject: [PATCH 149/469] Refactoring --- examples/C/grib_multi_write.c | 3 ++- src/grib_handle.cc | 27 +++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/examples/C/grib_multi_write.c b/examples/C/grib_multi_write.c index 818a5bd14..b68df1517 100644 --- a/examples/C/grib_multi_write.c +++ b/examples/C/grib_multi_write.c @@ -79,7 +79,8 @@ int main(int argc, char** argv) } /* write multi-field handle to output file */ - codes_grib_multi_handle_write(mh, of); + err = codes_grib_multi_handle_write(mh, of); + if (err) return 1; fclose(of); /* release memory */ diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 5520c0fc7..e5aad7e34 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -16,7 +16,7 @@ static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, int headers_only, int* error); static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, int* error); -static int grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err); +static bool grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err); static int grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err); static void grib2_build_message(grib_context* context, unsigned char* sections[], size_t sections_len[], void** data, size_t* msglen); static grib_multi_support* grib_get_multi_support(grib_context* c, FILE* f); @@ -1161,11 +1161,10 @@ grib_multi_handle* grib_multi_handle_new(grib_context* c) int grib_multi_handle_delete(grib_multi_handle* h) { - if (h == NULL) - return GRIB_SUCCESS; - - grib_buffer_delete(h->context, h->buffer); - grib_context_free(h->context, h); + if (h != NULL) { + grib_buffer_delete(h->context, h->buffer); + grib_context_free(h->context, h); + } return GRIB_SUCCESS; } @@ -1227,11 +1226,11 @@ int grib_multi_handle_write(grib_multi_handle* h, FILE* f) return GRIB_INVALID_GRIB; if (fwrite(h->buffer->data, 1, h->buffer->ulength, f) != h->buffer->ulength) { - grib_context_log(h->context, GRIB_LOG_PERROR, "grib_multi_handle_write writing on file"); + grib_context_log(h->context, GRIB_LOG_PERROR, "%s failed", __func__); return GRIB_IO_PROBLEM; } - return 0; + return GRIB_SUCCESS; } int grib_get_partial_message(grib_handle* h, const void** msg, size_t* len, int start_section) @@ -1295,9 +1294,9 @@ int grib_get_message_offset(const grib_handle* h, off_t* offset) if (h) *offset = h->offset; else - return GRIB_INTERNAL_ERROR; + return GRIB_NULL_HANDLE; - return 0; + return GRIB_SUCCESS; } int codes_get_product_kind(const grib_handle* h, ProductKind* product_kind) @@ -1468,10 +1467,10 @@ int grib_handle_apply_action(grib_handle* h, grib_action* a) // return GRIB_SUCCESS; // } -static int grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err) +static bool grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err) { if (!grib2_has_next_section(msgbegin, msglen, *secbegin, *seclen, err)) - return 0; + return false; *secbegin += *seclen; *seclen = grib_decode_unsigned_byte_long(*secbegin, 0, 4); @@ -1479,9 +1478,9 @@ static int grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsign if (*secnum < 1 || *secnum > 7) { *err = GRIB_INVALID_SECTION_NUMBER; - return 0; + return false; } - return 1; + return true; } static int grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err) From 5c135b6b306b0890f5e76e459d6236fe2d0ffba1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 15 Dec 2023 18:29:55 +0000 Subject: [PATCH 150/469] Refactoring --- src/grib_api_internal.h | 2 +- src/grib_handle.cc | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 06e4ef451..acda12f6c 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -950,7 +950,7 @@ struct grib_multi_support unsigned char* sections[8]; unsigned char* bitmap_section; size_t bitmap_section_length; - size_t sections_length[9]; + size_t sections_length[9]; /* GRIB2 has 9 sections */ int section_number; grib_multi_support* next; }; diff --git a/src/grib_handle.cc b/src/grib_handle.cc index e5aad7e34..f541ef99d 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -17,7 +17,7 @@ static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, int headers_only, int* error); static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, int* error); static bool grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err); -static int grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err); +static bool grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err); static void grib2_build_message(grib_context* context, unsigned char* sections[], size_t sections_len[], void** data, size_t* msglen); static grib_multi_support* grib_get_multi_support(grib_context* c, FILE* f); static grib_multi_support* grib_multi_support_new(grib_context* c); @@ -1483,7 +1483,7 @@ static bool grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsig return true; } -static int grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err) +static bool grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsigned char* secbegin, size_t seclen, int* err) { long next_seclen; *err = 0; @@ -1495,12 +1495,12 @@ static int grib2_has_next_section(unsigned char* msgbegin, size_t msglen, unsign *err = GRIB_SUCCESS; else *err = GRIB_7777_NOT_FOUND; - return 0; + return false; } /*secbegin += seclen;*/ - return 1; + return true; } static void grib2_build_message(grib_context* context, unsigned char* sections[], size_t sections_len[], void** data, size_t* len) @@ -1615,6 +1615,8 @@ void grib_multi_support_reset(grib_context* c) static grib_multi_support* grib_multi_support_new(grib_context* c) { + // GRIB edition 2 has 9 sections ( 0 to 8 ) + const int GRIB2_END_SECTION = 8; int i = 0; grib_multi_support* gm = (grib_multi_support*)grib_context_malloc_clear(c, sizeof(grib_multi_support)); @@ -1626,9 +1628,10 @@ static grib_multi_support* grib_multi_support_new(grib_context* c) gm->section_number = 0; gm->next = 0; gm->sections_length[0] = 16; - for (i = 1; i < 8; i++) + + for (i = 1; i < GRIB2_END_SECTION; i++) gm->sections_length[i] = 0; - gm->sections_length[8] = 4; + gm->sections_length[GRIB2_END_SECTION] = 4; // The 7777 return gm; } From 3f1347afc896b62fef9d89208f10e42b9c1b30c6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 15 Dec 2023 19:51:08 +0000 Subject: [PATCH 151/469] Testing: Increase coverage --- tests/bufr_set.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index 6732b5c3b..cd48e3f6f 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -183,6 +183,20 @@ ${tools_dir}/bufr_set -s messageLength:s=333 $ECCODES_SAMPLES_PATH/BUFR4_local.t result=`${tools_dir}/bufr_get -p messageLength $fBufrTmp` [ "$result" = "333" ] + +#----------------------------------------------------------- +# Invalid masterTablesVersionNumber +#----------------------------------------------------------- +${tools_dir}/bufr_set -s masterTablesVersionNumber=255 $ECCODES_SAMPLES_PATH/BUFR4.tmpl $fBufrTmp +set +e +${tools_dir}/bufr_dump -p $fBufrTmp >& $fLog +status=$? +set -e +[ $status -ne 0 ] +grep -q "unable to find definition file sequence.def.*bufr/tables/0/local/0/98/0/sequence.def" $fLog +grep -q "ECCODES ERROR.*unable to get hash value for sequences" $fLog + + # Clean up rm -f $fLog rm -f $fBufrTmp From 9d67f1cf396ad8de5f51f57e5140f4ed834e7d06 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 15 Dec 2023 21:12:20 +0000 Subject: [PATCH 152/469] Testing: Fix attempt 1 --- tests/bufr_set.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index cd48e3f6f..b0f901d95 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -189,10 +189,12 @@ result=`${tools_dir}/bufr_get -p messageLength $fBufrTmp` #----------------------------------------------------------- ${tools_dir}/bufr_set -s masterTablesVersionNumber=255 $ECCODES_SAMPLES_PATH/BUFR4.tmpl $fBufrTmp set +e -${tools_dir}/bufr_dump -p $fBufrTmp >& $fLog -status=$? +${tools_dir}/bufr_dump -p $fBufrTmp 2>>$fLog 1>>$fLog +if [ $? -eq 0 ]; then + echo "bufr_dump should have failed" >&2 + exit 1 +fi set -e -[ $status -ne 0 ] grep -q "unable to find definition file sequence.def.*bufr/tables/0/local/0/98/0/sequence.def" $fLog grep -q "ECCODES ERROR.*unable to get hash value for sequences" $fLog From 65f9a26aae69754caeb0fd51ec476bb2d6f0c758 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Dec 2023 12:09:37 +0000 Subject: [PATCH 153/469] Testing: Increase coverage --- tests/codes_dump_content.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/codes_dump_content.sh b/tests/codes_dump_content.sh index e5d72b343..3ad7cbd4c 100755 --- a/tests/codes_dump_content.sh +++ b/tests/codes_dump_content.sh @@ -13,11 +13,18 @@ label="codes_dump_content_test" temp=temp.$label.txt -infile=$data_dir/sample.grib2 +infiles=" + sample.grib2 + test_uuid.grib2 +" modes="default wmo json serialize debug grib_encode_C" for mode in $modes; do - $EXEC ${test_dir}/codes_dump_content $mode $infile + for gf in $infiles; do + echo Doing $gf + infile=$data_dir/$gf + $EXEC ${test_dir}/codes_dump_content $mode $infile > $temp + done done ${test_dir}/codes_dump_content rubbish $infile > $temp 2>&1 From 3029fef852d8758bad8e4d3c11208178f1474d46 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Dec 2023 12:43:11 +0000 Subject: [PATCH 154/469] Testing: Increase coverage --- tests/bufr_filter_unpack_pack.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/bufr_filter_unpack_pack.sh b/tests/bufr_filter_unpack_pack.sh index 1856704b9..9a55ded5c 100755 --- a/tests/bufr_filter_unpack_pack.sh +++ b/tests/bufr_filter_unpack_pack.sh @@ -71,5 +71,19 @@ ${tools_dir}/codes_bufr_filter $fRules $f f="$ECCODES_SAMPLES_PATH/BUFR4.tmpl" echo 'print "[expandedOriginalReferences:i]";' | ${tools_dir}/codes_bufr_filter - $f +# Error decoding 'pack' +# ---------------------- +f="$ECCODES_SAMPLES_PATH/BUFR4.tmpl" +set +e +echo 'print "[pack]";' | ${tools_dir}/codes_bufr_filter - $f 2>$temp +status=$? +set -e +grep -q "Function not yet implemented" $temp + +# Pack using a double +f=nos6_208.bufr +${tools_dir}/bufr_set -s unpack=1,satelliteIdentifier=666,pack:d=1 $f $temp +${tools_dir}/bufr_compare -b satelliteIdentifier $f $temp + # Clean up rm -f $fRules $fLog $temp From c72a1721fac8e14e5eb39830efd625f93d6de404 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Dec 2023 12:53:34 +0000 Subject: [PATCH 155/469] Testing: Increase coverage --- tests/julian.cc | 11 ++++++----- tests/unit_tests.cc | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/julian.cc b/tests/julian.cc index a40c3673e..318429e79 100644 --- a/tests/julian.cc +++ b/tests/julian.cc @@ -9,6 +9,7 @@ */ #include "grib_api_internal.h" +#include "eccodes.h" #define EPSILON 1e-12 #define DBL_EQUAL(a, b) (fabs((a) - (b)) <= (EPSILON)*fabs((a))) @@ -34,10 +35,10 @@ static void TestDateTime(const long year, const long month, const long day, cons long jdlong1, jdlong2, date; /* Convert the input values to a double */ - grib_datetime_to_julian(year, month, day, hour, min, sec, &jd); + codes_datetime_to_julian(year, month, day, hour, min, sec, &jd); /* Convert the double back to the input values and compare */ - grib_julian_to_datetime(jd, &year1, &month1, &day1, &hour1, &min1, &sec1); + codes_julian_to_datetime(jd, &year1, &month1, &day1, &hour1, &min1, &sec1); if (!Check(year, month, day, hour, min, sec, year1, month1, day1, hour1, min1, sec1)) { fprintf(stderr, @@ -73,7 +74,7 @@ static void Test0() min = 26; sec = 24; - grib_datetime_to_julian(year, month, day, hour, min, sec, &jd); + codes_datetime_to_julian(year, month, day, hour, min, sec, &jd); Assert(DBL_EQUAL(jd, 2378891.268333)); printf("%ld %ld %ld %ld:%ld:%ld -> %f\n", year, month, day, hour, min, sec, jd); @@ -153,9 +154,9 @@ static void Test2() } jdl = (long)(jd + 0.5); - date = grib_julian_to_date(jdl); + date = codes_julian_to_date(jdl); printf("+ %ld -> %ld\n", date, jdl); - jdl = grib_date_to_julian(date); + jdl = codes_date_to_julian(date); printf("- %ld -> %ld\n", date, jdl); printf("\n"); } diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index cf632e762..1f6e82e5a 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -9,6 +9,7 @@ */ #include "grib_api_internal.h" +#include "eccodes.h" #define NUMBER(x) (sizeof(x) / sizeof(x[0])) @@ -91,7 +92,7 @@ static void test_gaussian_latitudes(int order) double lat1 = 0, lat2 = 0; double* lats = (double*)malloc(sizeof(double) * num); - ret = grib_get_gaussian_latitudes(order, lats); + ret = codes_get_gaussian_latitudes(order, lats); Assert(ret == GRIB_SUCCESS); lat1 = lats[0]; @@ -112,7 +113,7 @@ static void test_gaussian_latitude_640() int ret = 0; const double tolerance = 1e-6; double* lats = (double*)malloc(sizeof(double) * num); - ret = grib_get_gaussian_latitudes(order, lats); + ret = codes_get_gaussian_latitudes(order, lats); Assert(ret == GRIB_SUCCESS); compare_doubles(lats[0], 89.892396, tolerance); From 42fe75054a37b8bf1618f1e6575ac14a4d6fd861 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Dec 2023 13:07:36 +0000 Subject: [PATCH 156/469] Testing: Increase coverage --- src/eccodes.cc | 5 +++++ tests/unit_tests.cc | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/eccodes.cc b/src/eccodes.cc index 961e69139..feee150b0 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -461,6 +461,11 @@ void codes_gts_header_off(grib_context* c) { grib_gts_header_off(c); } +void codes_gts_header_on(grib_context* c) +{ + grib_gts_header_on(c); +} + void codes_gribex_mode_on(grib_context* c) { grib_gribex_mode_on(c); diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 1f6e82e5a..5f19b746a 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -379,9 +379,32 @@ static void test_gribex_mode() Assert( grib_get_gribex_mode(c) == 0 ); /* default is OFF */ grib_gribex_mode_on(c); + codes_gribex_mode_on(c); Assert( grib_get_gribex_mode(c) == 1 ); grib_gribex_mode_off(c); + codes_gribex_mode_off(c); Assert( grib_get_gribex_mode(c) == 0 ); + Assert( codes_get_gribex_mode(c) == 0 ); +} + +static void test_gts_header_mode() +{ + grib_context* c = grib_context_get_default(); + printf("Running %s ...\n", __func__); + + grib_gts_header_on(c); + codes_gts_header_on(c); + grib_gts_header_off(c); + codes_gts_header_off(c); +} + +static void test_bufr_multi_element_constant_arrays() +{ + grib_context* c = grib_context_get_default(); + printf("Running %s ...\n", __func__); + + codes_bufr_multi_element_constant_arrays_on(c); + codes_bufr_multi_element_constant_arrays_off(c); } static void test_grib_binary_search() @@ -650,6 +673,8 @@ int main(int argc, char** argv) test_get_git_sha1(); test_get_build_date(); test_gribex_mode(); + test_gts_header_mode(); + test_bufr_multi_element_constant_arrays(); test_concept_condition_strings(); From c728bebd2b121754e8bf225eaf2456c5391b7d7e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 17 Dec 2023 16:38:07 +0000 Subject: [PATCH 157/469] Testing: Unit tests --- tests/unit_tests.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 5f19b746a..0fb193e41 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -394,8 +394,10 @@ static void test_gts_header_mode() grib_gts_header_on(c); codes_gts_header_on(c); + Assert(c->gts_header_on == 1); grib_gts_header_off(c); codes_gts_header_off(c); + Assert(c->gts_header_on == 0); } static void test_bufr_multi_element_constant_arrays() From 42be7969f2bed80dce69f994b07c8ffeb9030b70 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 17 Dec 2023 16:38:45 +0000 Subject: [PATCH 158/469] g1end_of_interval_monthly: Check month is valid --- ...ccessor_class_g1end_of_interval_monthly.cc | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.cc b/src/grib_accessor_class_g1end_of_interval_monthly.cc index 5e39e6882..cbf74322c 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.cc +++ b/src/grib_accessor_class_g1end_of_interval_monthly.cc @@ -117,8 +117,7 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; self->number_of_elements = 6; - self->v = (double*)grib_context_malloc(a->context, - sizeof(double) * self->number_of_elements); + self->v = (double*)grib_context_malloc(a->context, sizeof(double) * self->number_of_elements); a->length = 0; a->dirty = 1; @@ -127,8 +126,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; - int ret = 0; - char verifyingMonth[7] = {0,}; + int ret = 0; + char verifyingMonth[7] = {0,}; size_t slen = 7; long year = 0, month = 0, date = 0; const long mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; @@ -144,6 +143,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; date = atoi(verifyingMonth); + if (date < 0) { + return GRIB_INVALID_ARGUMENT; + } year = date / 100; month = date - year * 100; if (month == 2) { @@ -151,9 +153,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) days = 29; } - else + else { + if (month < 1 || month > 12) return GRIB_INVALID_ARGUMENT; days = mdays[month - 1]; - + } self->v[0] = year; self->v[1] = month; @@ -217,13 +220,11 @@ static int compare(grib_accessor* a, grib_accessor* b) b->dirty = 1; a->dirty = 1; - grib_unpack_double(a, aval, &alen); - grib_unpack_double(b, bval, &blen); + err = grib_unpack_double(a, aval, &alen); if(err) return err; + err = grib_unpack_double(b, bval, &blen); if(err) return err; - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; + for(size_t i=0; icontext, aval); From 8e5132f0be81943dc7d355bb70d1632bbc77c8d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 17 Dec 2023 16:39:18 +0000 Subject: [PATCH 159/469] Testing: Increase coverage --- tests/codes_compare_keys.cc | 36 +++++++++++++++++++++++++++++++----- tests/codes_compare_keys.sh | 11 +++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/tests/codes_compare_keys.cc b/tests/codes_compare_keys.cc index a758c8810..80f0c383c 100644 --- a/tests/codes_compare_keys.cc +++ b/tests/codes_compare_keys.cc @@ -17,13 +17,19 @@ int main(int argc, char* argv[]) grib_handle* h1 = NULL; grib_handle* h2 = NULL; int err = 0; - size_t count = 0; + size_t num_diffs = 0, i = 0; + char** list_provided_keys = NULL; - Assert(argc == 3); f1 = fopen(argv[1], "rb"); f2 = fopen(argv[2], "rb"); Assert(f1 && f2); + if (argc == 4) { + // List of keys is also given on the command line + char* input = argv[3]; + list_provided_keys = string_split(input, ","); + } + while ((h1 = grib_handle_new_from_file(0, f1, &err)) != NULL && (h2 = grib_handle_new_from_file(0, f2, &err)) != NULL) { grib_keys_iterator* kiter = NULL; @@ -36,10 +42,11 @@ int main(int argc, char* argv[]) while (grib_keys_iterator_next(kiter)) { const char* name = grib_keys_iterator_get_name(kiter); Assert(name); + //printf(".... %s \n",name); err = codes_compare_key(h1, h2, name, 0); if (err) { fprintf(stderr, "key: %s (%s)\n", name, grib_get_error_message(err)); - ++count; + ++num_diffs; } } @@ -49,14 +56,33 @@ int main(int argc, char* argv[]) codes_compare_key(h1, h2, "paramId", 0); // concept codes_compare_key(h1, h2, "identifier", 0); // ascii + if (list_provided_keys) { + for (i = 0; list_provided_keys[i] != NULL; ++i) { + const char* pkey = list_provided_keys[i]; + printf("Comparing provided key %s ...\n", list_provided_keys[i]); + err = codes_compare_key(h1, h2, pkey, 0); + if (err) { + fprintf(stderr, "key: %s (%s)\n", pkey, grib_get_error_message(err)); + ++num_diffs; + } + } + } + grib_keys_iterator_delete(kiter); grib_handle_delete(h1); grib_handle_delete(h2); } + fclose(f1); fclose(f2); - if (count > 0) { - fprintf(stderr, "\nComparison failed: %zu differences\n", count); + + if (list_provided_keys) { + for (i = 0; list_provided_keys[i] != NULL; ++i) free(list_provided_keys[i]); + free(list_provided_keys); + } + + if (num_diffs > 0) { + fprintf(stderr, "\nComparison failed: %zu differences\n", num_diffs); return 1; } return 0; diff --git a/tests/codes_compare_keys.sh b/tests/codes_compare_keys.sh index c5918f769..39a95f304 100755 --- a/tests/codes_compare_keys.sh +++ b/tests/codes_compare_keys.sh @@ -63,5 +63,16 @@ EOF diff $tempRef $tempLog +# Local definitions +# ---------------------- +sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl +tempGribA=temp.${label}.A.grib +tempGribB=temp.${label}.B.grib +${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=11 $sample1 $tempGribA +${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=11 $sample1 $tempGribB +${test_dir}/codes_compare_keys $tempGribA $tempGribB endOfInterval +rm -f $tempGribA $tempGribB + + # Clean up rm -f $tempLog $tempRef $tempGrib From dc58a160c0fd425a45621c0c7486ae43ac46b6f3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 17 Dec 2023 17:08:32 +0000 Subject: [PATCH 160/469] Fix key comparisons --- src/grib_accessor_class_data_apply_bitmap.cc | 8 +++----- src/grib_accessor_class_long.cc | 6 ++---- src/grib_accessor_class_statistics.cc | 7 +++---- src/grib_accessor_class_statistics_spectral.cc | 6 ++---- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 3f10fa26c..675e7b3de 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -446,7 +446,7 @@ static int get_native_type(grib_accessor* a) static int compare(grib_accessor* a, grib_accessor* b) { - int retval = 0; + int retval = GRIB_SUCCESS; double* aval = 0; double* bval = 0; @@ -475,10 +475,8 @@ static int compare(grib_accessor* a, grib_accessor* b) grib_unpack_double(b, bval, &blen); retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; + for (size_t i=0; icontext, aval); diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 92431f812..e5fed8235 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -241,10 +241,8 @@ static int compare(grib_accessor* a, grib_accessor* b) grib_unpack_long(b, bval, &blen); retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_LONG_VALUE_MISMATCH; - alen--; + for (size_t i=0; icontext, aval); diff --git a/src/grib_accessor_class_statistics.cc b/src/grib_accessor_class_statistics.cc index a041414ee..915701a3a 100644 --- a/src/grib_accessor_class_statistics.cc +++ b/src/grib_accessor_class_statistics.cc @@ -313,10 +313,9 @@ static int compare(grib_accessor* a, grib_accessor* b) grib_unpack_double(a, aval, &alen); grib_unpack_double(b, bval, &blen); - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; + retval = GRIB_SUCCESS; + for (size_t i=0; icontext, aval); diff --git a/src/grib_accessor_class_statistics_spectral.cc b/src/grib_accessor_class_statistics_spectral.cc index f545df07e..435582bef 100644 --- a/src/grib_accessor_class_statistics_spectral.cc +++ b/src/grib_accessor_class_statistics_spectral.cc @@ -266,10 +266,8 @@ static int compare(grib_accessor* a, grib_accessor* b) grib_unpack_double(b, bval, &blen); retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; + for (size_t i=0; icontext, aval); From bc3fd7b07cb486659a50daac13d171e045c96e50 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 17 Dec 2023 17:08:48 +0000 Subject: [PATCH 161/469] Testing: Increase coverage --- tests/codes_compare_keys.cc | 3 +-- tests/codes_compare_keys.sh | 11 ++++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/codes_compare_keys.cc b/tests/codes_compare_keys.cc index 80f0c383c..116998de7 100644 --- a/tests/codes_compare_keys.cc +++ b/tests/codes_compare_keys.cc @@ -42,7 +42,6 @@ int main(int argc, char* argv[]) while (grib_keys_iterator_next(kiter)) { const char* name = grib_keys_iterator_get_name(kiter); Assert(name); - //printf(".... %s \n",name); err = codes_compare_key(h1, h2, name, 0); if (err) { fprintf(stderr, "key: %s (%s)\n", name, grib_get_error_message(err)); @@ -59,7 +58,7 @@ int main(int argc, char* argv[]) if (list_provided_keys) { for (i = 0; list_provided_keys[i] != NULL; ++i) { const char* pkey = list_provided_keys[i]; - printf("Comparing provided key %s ...\n", list_provided_keys[i]); + //printf("Comparing provided key %s ...\n", list_provided_keys[i]); err = codes_compare_key(h1, h2, pkey, 0); if (err) { fprintf(stderr, "key: %s (%s)\n", pkey, grib_get_error_message(err)); diff --git a/tests/codes_compare_keys.sh b/tests/codes_compare_keys.sh index 39a95f304..ca7d16a3c 100755 --- a/tests/codes_compare_keys.sh +++ b/tests/codes_compare_keys.sh @@ -68,9 +68,14 @@ diff $tempRef $tempLog sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl tempGribA=temp.${label}.A.grib tempGribB=temp.${label}.B.grib -${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=11 $sample1 $tempGribA -${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=11 $sample1 $tempGribB -${test_dir}/codes_compare_keys $tempGribA $tempGribB endOfInterval +${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=6 $sample1 $tempGribA +${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=5 $sample1 $tempGribB +set +e +${test_dir}/codes_compare_keys $tempGribA $tempGribB endOfInterval > $tempLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "2 differences" $tempLog rm -f $tempGribA $tempGribB From 57847622e1e2cb876a56994dbe84720757d823cf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 12:49:46 +0000 Subject: [PATCH 162/469] Testing: Increase coverage: spectral stats --- tests/codes_compare_keys.sh | 6 ++++++ tests/grib_grid_lamb_az_eq_area.sh | 27 ++++++++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/tests/codes_compare_keys.sh b/tests/codes_compare_keys.sh index ca7d16a3c..44fed25d2 100755 --- a/tests/codes_compare_keys.sh +++ b/tests/codes_compare_keys.sh @@ -63,6 +63,12 @@ EOF diff $tempRef $tempLog +# Spectral +# ---------- +sample_spectral=$ECCODES_SAMPLES_PATH/sh_ml_grib2.tmpl +${test_dir}/codes_compare_keys $sample_spectral $sample_spectral enorm,avg + + # Local definitions # ---------------------- sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl diff --git a/tests/grib_grid_lamb_az_eq_area.sh b/tests/grib_grid_lamb_az_eq_area.sh index abd4e1afb..f3ed52588 100755 --- a/tests/grib_grid_lamb_az_eq_area.sh +++ b/tests/grib_grid_lamb_az_eq_area.sh @@ -9,22 +9,23 @@ . ./include.ctest.sh +label="grib_grid_lamb_az_eq_area_test" GRIB_INFILE=${data_dir}/regular_gaussian_pressure_level_constant.grib2 REF_FILE=grib_lamb_az_eq_area.ref # Temporary files created for this test -FILTER_FILE=lamb_az_eq_area.filter -GRIB_OUTFILE=lamb_az_eq_area.grib2 -DATA_OUTFILE=lamb_data.txt +FILTER_FILE=temp.$label.filter +GRIB_OUTFILE=temp.$label.grib2 +DATA_OUTFILE=temp.$label.txt rm -f $FILTER_FILE $GRIB_OUTFILE $DATA_OUTFILE +# -------------------- # Spherical Earth -# ---------------- +# -------------------- # Create a filter cat > $FILTER_FILE< $DATA_OUTFILE # Compare output with reference. If the diff fails, script will immediately exit with status 1 -diff $DATA_OUTFILE $REF_FILE +diff $REF_FILE $DATA_OUTFILE grib_check_key_equals $GRIB_OUTFILE standardParallelInDegrees,centralLongitudeInDegrees '48 9' grib_check_key_equals $GRIB_OUTFILE xDirectionGridLengthInMetres,yDirectionGridLengthInMetres '5000 5000' @@ -62,8 +63,20 @@ grib_check_key_equals $GRIB_OUTFILE xDirectionGridLengthInMetres,yDirectionGridL ${tools_dir}/grib_ls -l 67,-33,1 $GRIB_OUTFILE # jPointsAreConsecutive -${tools_dir}/grib_get_data -s jPointsAreConsecutive=1 $GRIB_OUTFILE > $DATA_OUTFILE +tempOutA=temp.$label.A.txt +tempOutB=temp.$label.B.txt +${tools_dir}/grib_get_data -s jPointsAreConsecutive=0 $GRIB_OUTFILE > $tempOutA +${tools_dir}/grib_get_data -s jPointsAreConsecutive=1 $GRIB_OUTFILE > $tempOutB +# Results should be different. +set +e +diff $tempOutA $tempOutB > /dev/null +status=$? +set -e +[ $status -ne 0 ] +rm -f $tempOutA $tempOutB + +# -------------------- # Oblate spheroid # -------------------- From bb621a8836cc235a84bbe2101de3c29ea6c630a9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 14:01:48 +0000 Subject: [PATCH 163/469] Testing: Increase coverage: F90 misc functions --- examples/F90/CMakeLists.txt | 2 ++ examples/F90/codes_f90_misc.f90 | 25 +++++++++++++++++++++++++ examples/F90/codes_f90_misc.sh | 13 +++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 examples/F90/codes_f90_misc.f90 create mode 100755 examples/F90/codes_f90_misc.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 4db9170d1..79f65e6fb 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -11,6 +11,7 @@ if( HAVE_BUILD_TOOLS ) codes_ecc-1392 codes_datetime_julian codes_set_paths + codes_f90_misc grib_set_pv grib_set_data bufr_ecc-1284 @@ -67,6 +68,7 @@ else() grib_set_pv grib_set_data codes_set_paths + codes_f90_misc get_native_type grib_ecc-671 ) list( APPEND tests_extra diff --git a/examples/F90/codes_f90_misc.f90 b/examples/F90/codes_f90_misc.f90 new file mode 100644 index 000000000..1e47651ab --- /dev/null +++ b/examples/F90/codes_f90_misc.f90 @@ -0,0 +1,25 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program codes_f90_misc + use eccodes + implicit none + + character(len=64) :: error_message = '' + + call codes_gribex_mode_on() + call codes_gribex_mode_off() + + call codes_bufr_multi_element_constant_arrays_on() + call codes_bufr_multi_element_constant_arrays_off() + + call codes_get_error_string(-26, error_message) + write (*, *) 'error message: ', trim(error_message) + +end program diff --git a/examples/F90/codes_f90_misc.sh b/examples/F90/codes_f90_misc.sh new file mode 100755 index 000000000..5edf282c7 --- /dev/null +++ b/examples/F90/codes_f90_misc.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +# export ECCODES_DEBUG=1 +${examples_dir}/eccodes_f_codes_f90_misc From a5032224e7022bfc12ebd5f3ac837cb77427ce78 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 14:16:47 +0000 Subject: [PATCH 164/469] Definitions: Cleanup --- definitions/grib1/2.46.254.table | 28 ++++----- .../data.grid_second_order_row_by_row.def | 2 +- definitions/grib1/data.grid_simple_matrix.def | 2 +- definitions/grib1/grid_definition_192.78.def | 2 +- definitions/grib1/local.214.1.def | 21 +++---- definitions/grib1/local.82.0.def | 2 +- definitions/grib1/local.82.def | 4 +- definitions/grib1/local.98.27.def | 2 +- definitions/grib1/local_no_mars.98.1.def | 20 +++--- definitions/grib1/typeOfLevel.def | 62 +++++++++---------- 10 files changed, 72 insertions(+), 73 deletions(-) diff --git a/definitions/grib1/2.46.254.table b/definitions/grib1/2.46.254.table index d4e38fce8..506348903 100644 --- a/definitions/grib1/2.46.254.table +++ b/definitions/grib1/2.46.254.table @@ -39,7 +39,7 @@ 38 38 sgvv SIGMA COORD VERT VEL [sec/sec] 39 39 omeg OMEGA [Pa/s] 40 40 omg2 VERTICAL VELOCITY [m/s] -41 41 abvo ABSOLUTE VORTICITY [10**5/sec] +41 41 abvo ABSOLUTE VORTICITY [10**5/sec] 42 42 abdv ABSOLUTE DIVERGENCE [10**5/sec] 43 43 vort VORTICITY [1/s] 44 44 divg DIVERGENCE [1/s] @@ -54,17 +54,17 @@ 53 53 hmxr HUMIDITY MIXING RATIO [kg/kg] 54 54 agpl INST. PRECIPITABLE WATER [Kg/m2] 55 55 vapp VAPOUR PRESSURE [Pa hpa] -56 56 sadf SATURATION DEFICIT [Pa hPa] +56 56 sadf SATURATION DEFICIT [Pa hPa] 57 57 evap EVAPORATION [Kg/m2/day] 58 58 var58 undefined -59 59 prcr PRECIPITATION RATE [kg/m2/day] +59 59 prcr PRECIPITATION RATE [kg/m2/day] 60 60 thpb THUNDER PROBABILITY [%] 61 61 prec TOTAL PRECIPITATION [Kg/m2/day] 62 62 prge LARGE SCALE PRECIPITATION [Kg/m2/day] 63 63 prcv CONVECTIVE PRECIPITATION [Kg/m2/day] 64 64 neve SNOWFALL [Kg/m2/day] 65 65 wenv WAT EQUIV ACC SNOW DEPTH [kg/m2] -66 66 nvde SNOW DEPTH [cm] +66 66 nvde SNOW DEPTH [cm] 67 67 mxld MIXED LAYER DEPTH [m cm] 68 68 tthd TRANS THERMOCLINE DEPTH [m cm] 69 69 mthd MAIN THERMOCLINE DEPTH [m cm] @@ -72,7 +72,7 @@ 71 71 cbnv CLOUD COVER [0-1] 72 72 cvnv CONVECTIVE CLOUD COVER [0-1] 73 73 lwnv LOW CLOUD COVER [0-1] -74 74 mdnv MEDIUM CLOUD COVER [0-1] +74 74 mdnv MEDIUM CLOUD COVER [0-1] 75 75 hinv HIGH CLOUD COVER [0-1] 76 76 wtnv CLOUD WATER [kg/m2] 77 77 bli BEST LIFTED INDEX (TO 500 HPA) [K] @@ -85,17 +85,17 @@ 84 84 albe ALBEDO [%] 85 85 dstp DEEP SOIL TEMPERATURE [K] 86 86 soic SOIL MOISTURE CONTENT [Kg/m2] -87 87 vege VEGETATION [%] +87 87 vege VEGETATION [%] 88 88 var88 undefined 89 89 dens DENSITY [kg/m3] 90 90 var90 Undefined 91 91 icec ICE CONCENTRATION [fraction] 92 92 icet ICE THICKNESS [m] 93 93 iced DIRECTION OF ICE DRIFT [deg] -94 94 ices SPEED OF ICE DRIFT [m/s] +94 94 ices SPEED OF ICE DRIFT [m/s] 95 95 iceu U-COMP OF ICE DRIFT [m/s] 96 96 icev V-COMP OF ICE DRIFT [m/s] -97 97 iceg ICE GROWTH [m] +97 97 iceg ICE GROWTH [m] 98 98 icdv ICE DIVERGENCE [sec/sec] 99 99 var99 undefined 100 100 shcw SIG HGT COM WAVE/SWELL [m] @@ -155,7 +155,7 @@ 154 154 fdlt FLIGHT LEVELS TEMPERATURE [K] 155 155 fdlu FLIGHT LEVELS U-WIND [m/s] 156 156 fdlv FLIGHT LEVELS V-WIND [m/s] -157 157 tppp TROPOPAUSE PRESSURE [hPa] +157 157 tppp TROPOPAUSE PRESSURE [hPa] 158 158 tppt TROPOPAUSE TEMPERATURE [K] 159 159 tppu TROPOPAUSE U-WIND COMPONENT [m/s] 160 160 tppv TROPOPAUSE v-WIND COMPONENT [m/s] @@ -170,16 +170,16 @@ 169 169 vmfl VERT. INTEGRATED MOISTURE FLUX CONV. [kg/(m2*s)] 170 170 vadv VERTICAL MOISTURE ADVECTION [kg/(kg*s)] 171 171 nhcm NEG. HUM. CORR. MOISTURE SOURCE [kg/(kg*s)] -172 172 lglh LARGE SCALE LATENT HEATING [K/s] -173 173 lgms LARGE SCALE MOISTURE SOURCE [1/s] -174 174 smav SOIL MOISTURE AVAILABILITY [0-1] +172 172 lglh LARGE SCALE LATENT HEATING [K/s] +173 173 lgms LARGE SCALE MOISTURE SOURCE [1/s] +174 174 smav SOIL MOISTURE AVAILABILITY [0-1] 175 175 tgrz SOIL TEMPERATURE OF ROOT ZONE [K] 176 176 bslh BARE SOIL LATENT HEAT [Ws/m2] 177 177 evpp POTENTIAL SFC EVAPORATION [m] 178 178 rnof RUNOFF [kg/m2/s)] 179 179 pitp INTERCEPTION LOSS [W/m2] 180 180 vpca VAPOR PRESSURE OF CANOPY AIR SPACE [mb] -181 181 qsfc SURFACE SPEC HUMIDITY [kg/kg] +181 181 qsfc SURFACE SPEC HUMIDITY [kg/kg] 182 182 ussl SOIL WETNESS OF SURFACE [0-1] 183 183 uzrs SOIL WETNESS OF ROOT ZONE [0-1] 184 184 uzds SOIL WETNESS OF DRAINAGE ZONE [0-1] @@ -196,7 +196,7 @@ 195 195 vsst SURFACE MERIDIONAL WIND STRESS [Pa] 196 196 suvf SURFACE MOMENTUM FLUX [W/m2] 197 197 iswf INCIDENT SHORT WAVE FLUX [W/m2] -198 198 ghfl TIME AVE GROUND HT FLX [W/m2] +198 198 ghfl TIME AVE GROUND HT FLX [W/m2] 199 199 var199 undefined 200 200 lwbc NET LONG WAVE AT BOTTOM (CLEAR) [W/m2] 201 201 lwtc OUTGOING LONG WAVE AT TOP (CLEAR) [W/m2] diff --git a/definitions/grib1/data.grid_second_order_row_by_row.def b/definitions/grib1/data.grid_second_order_row_by_row.def index 465ebdb6d..bb41ea8b8 100644 --- a/definitions/grib1/data.grid_second_order_row_by_row.def +++ b/definitions/grib1/data.grid_second_order_row_by_row.def @@ -49,7 +49,7 @@ if(bitmapPresent) { bitmap ): read_only; - alias data.packedValues = codedValues; + alias data.packedValues = codedValues; meta values data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : dump; } else { diff --git a/definitions/grib1/data.grid_simple_matrix.def b/definitions/grib1/data.grid_simple_matrix.def index 5f8543e25..ae785ed71 100644 --- a/definitions/grib1/data.grid_simple_matrix.def +++ b/definitions/grib1/data.grid_simple_matrix.def @@ -175,6 +175,6 @@ if(matrixOfValues == 0) } meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ibm) : no_copy; meta numberOfCodedValues number_of_coded_values(bitsPerValue,offsetBeforeData,offsetAfterData,halfByte,numberOfValues) : dump; - + template statistics "common/statistics_grid.def"; template missing_values "common/missing_values_grid.def"; diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def index a7c3e746b..c4689a99a 100644 --- a/definitions/grib1/grid_definition_192.78.def +++ b/definitions/grib1/grid_definition_192.78.def @@ -38,7 +38,7 @@ flags[1] scanningModeForOneDiamond 'grib1/grid.192.78.3.10.table'; transient numberOfPoints= nd *(Ni + 1) * (Ni + 1); alias numberOfDataPoints=numberOfPoints; - + meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints, bitmapPresent,bitmap,numberOfCodedValues) : dump; diff --git a/definitions/grib1/local.214.1.def b/definitions/grib1/local.214.1.def index feaede42a..51e0254aa 100644 --- a/definitions/grib1/local.214.1.def +++ b/definitions/grib1/local.214.1.def @@ -1,16 +1,15 @@ # (C) Copyright 2005- ECMWF. -# -# Description Octet Code Ksec1 Count -# ----------- ----- ---- ----- ----- -#localDefinitionNumber 41 I1 37 - -#class 42 I1 38 - -#type 43 I1 39 - -#stream 44 I2 40 - -#experimentVersionNumber 46 A4 41 - -#number 50 I1 42 - -#total 51 I1 43 - -#spareSetToZero 52 PAD n/a 1 +# Description Octet Code Ksec1 Count +# ----------- ----- ---- ----- ----- +#localDefinitionNumber 41 I1 37 - +#class 42 I1 38 - +#type 43 I1 39 - +#stream 44 I2 40 - +#experimentVersionNumber 46 A4 41 - +#number 50 I1 42 - +#total 51 I1 43 - +#spareSetToZero 52 PAD n/a 1 # template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.82.0.def b/definitions/grib1/local.82.0.def index bdef08b58..58bd2df58 100644 --- a/definitions/grib1/local.82.0.def +++ b/definitions/grib1/local.82.0.def @@ -12,7 +12,7 @@ # # author: Sebastien Villaume # created: 6 Oct 2011 -# modified: 13 May 2013 +# modified: 13 May 2013 # # This piece of definition is common to all SMHI definitions diff --git a/definitions/grib1/local.82.def b/definitions/grib1/local.82.def index 0dd55e32e..b7ebab5a3 100644 --- a/definitions/grib1/local.82.def +++ b/definitions/grib1/local.82.def @@ -1,6 +1,6 @@ # # Definition for SMHI Swedish Meteorological and Hydrological Institut. -# +# # contact: sebastien.villaume@smhi.se codetable[1] localDefinitionNumber 'grib1/localDefinitionNumber.82.table' = 82 : dump; @@ -11,4 +11,4 @@ template ls_labeling "grib1/ls_labeling.82.def"; ### MARS LABELING ### template mars_labeling "grib1/mars_labeling.82.def"; -template_nofail marsKeywords "mars/eswi/grib1.[stream:s].[type:s].def"; +template_nofail marsKeywords "mars/eswi/grib1.[stream:s].[type:s].def"; diff --git a/definitions/grib1/local.98.27.def b/definitions/grib1/local.98.27.def index 04e5a1e08..cf2cb3661 100644 --- a/definitions/grib1/local.98.27.def +++ b/definitions/grib1/local.98.27.def @@ -12,7 +12,7 @@ constant wrongPadding=1 : hidden; unsigned[1] perturbationNumber : dump; unsigned[1] numberOfForecastsInEnsemble : dump; alias totalNumber=numberOfForecastsInEnsemble; -alias number = perturbationNumber; +alias number = perturbationNumber; unsigned[1] oceanAtmosphereCoupling : dump; diff --git a/definitions/grib1/local_no_mars.98.1.def b/definitions/grib1/local_no_mars.98.1.def index f66427bbe..bbb31966c 100644 --- a/definitions/grib1/local_no_mars.98.1.def +++ b/definitions/grib1/local_no_mars.98.1.def @@ -1,14 +1,14 @@ # -# Description Octet Code Ksec1 Count -# ----------- ----- ---- ----- ----- -#localDefinitionNumber 41 I1 37 - -#class 42 I1 38 - -#type 43 I1 39 - -#stream 44 I2 40 - -#experimentVersionNumber 46 A4 41 - -#number 50 I1 42 - -#total 51 I1 43 - -#spareSetToZero 52 PAD n/a 1 +# Description Octet Code Ksec1 Count +# ----------- ----- ---- ----- ----- +#localDefinitionNumber 41 I1 37 - +#class 42 I1 38 - +#type 43 I1 39 - +#stream 44 I2 40 - +#experimentVersionNumber 46 A4 41 - +#number 50 I1 42 - +#total 51 I1 43 - +#spareSetToZero 52 PAD n/a 1 # constant GRIBEXSection1Problem = 52 - section1Length ; diff --git a/definitions/grib1/typeOfLevel.def b/definitions/grib1/typeOfLevel.def index bbfb9a4ed..ccf74d5be 100644 --- a/definitions/grib1/typeOfLevel.def +++ b/definitions/grib1/typeOfLevel.def @@ -1,36 +1,36 @@ # ECMWF concept type of level -'surface' = {indicatorOfTypeOfLevel=1;} -'cloudBase' = {indicatorOfTypeOfLevel=2;} -'cloudTop' = {indicatorOfTypeOfLevel=3;} -'isothermZero' = {indicatorOfTypeOfLevel=4;} -'adiabaticCondensation' = {indicatorOfTypeOfLevel=5;} -'maxWind' = {indicatorOfTypeOfLevel=6;} -'tropopause' = {indicatorOfTypeOfLevel=7;} -'nominalTop' = {indicatorOfTypeOfLevel=8;} -'seaBottom' = {indicatorOfTypeOfLevel=9;} -'isobaricInhPa' = {indicatorOfTypeOfLevel=100;} -'isobaricInPa' = {indicatorOfTypeOfLevel=210;} -'isobaricLayer' = {indicatorOfTypeOfLevel=101;} -'meanSea' = {indicatorOfTypeOfLevel=102;} -'isobaricLayerHighPrecision' = {indicatorOfTypeOfLevel=121;} +'surface' = {indicatorOfTypeOfLevel=1;} +'cloudBase' = {indicatorOfTypeOfLevel=2;} +'cloudTop' = {indicatorOfTypeOfLevel=3;} +'isothermZero' = {indicatorOfTypeOfLevel=4;} +'adiabaticCondensation' = {indicatorOfTypeOfLevel=5;} +'maxWind' = {indicatorOfTypeOfLevel=6;} +'tropopause' = {indicatorOfTypeOfLevel=7;} +'nominalTop' = {indicatorOfTypeOfLevel=8;} +'seaBottom' = {indicatorOfTypeOfLevel=9;} +'isobaricInhPa' = {indicatorOfTypeOfLevel=100;} +'isobaricInPa' = {indicatorOfTypeOfLevel=210;} +'isobaricLayer' = {indicatorOfTypeOfLevel=101;} +'meanSea' = {indicatorOfTypeOfLevel=102;} +'isobaricLayerHighPrecision' = {indicatorOfTypeOfLevel=121;} 'isobaricLayerMixedPrecision' = {indicatorOfTypeOfLevel=141;} -'heightAboveSea' = {indicatorOfTypeOfLevel=103;} -'heightAboveSeaLayer' = {indicatorOfTypeOfLevel=104;} +'heightAboveSea' = {indicatorOfTypeOfLevel=103;} +'heightAboveSeaLayer' = {indicatorOfTypeOfLevel=104;} 'heightAboveGroundHighPrecision' = {indicatorOfTypeOfLevel=125;} -'heightAboveGround' = {indicatorOfTypeOfLevel=105;} -'heightAboveGroundLayer' = {indicatorOfTypeOfLevel=106;} -'sigma' = {indicatorOfTypeOfLevel=107;} -'sigmaLayer' = {indicatorOfTypeOfLevel=108;} +'heightAboveGround' = {indicatorOfTypeOfLevel=105;} +'heightAboveGroundLayer' = {indicatorOfTypeOfLevel=106;} +'sigma' = {indicatorOfTypeOfLevel=107;} +'sigmaLayer' = {indicatorOfTypeOfLevel=108;} 'sigmaLayerHighPrecision' = {indicatorOfTypeOfLevel=128;} -'hybrid' = {indicatorOfTypeOfLevel=109;} -'hybridLayer' = {indicatorOfTypeOfLevel=110;} -'depthBelowLand' = {indicatorOfTypeOfLevel=111;} -'depthBelowLandLayer' = {indicatorOfTypeOfLevel=112;} -'theta' = {indicatorOfTypeOfLevel=113;} -'thetaLayer' = {indicatorOfTypeOfLevel=114;} -'pressureFromGround' = {indicatorOfTypeOfLevel=115;} +'hybrid' = {indicatorOfTypeOfLevel=109;} +'hybridLayer' = {indicatorOfTypeOfLevel=110;} +'depthBelowLand' = {indicatorOfTypeOfLevel=111;} +'depthBelowLandLayer' = {indicatorOfTypeOfLevel=112;} +'theta' = {indicatorOfTypeOfLevel=113;} +'thetaLayer' = {indicatorOfTypeOfLevel=114;} +'pressureFromGround' = {indicatorOfTypeOfLevel=115;} 'pressureFromGroundLayer' = {indicatorOfTypeOfLevel=116;} -'potentialVorticity' = {indicatorOfTypeOfLevel=117;} -'depthBelowSea' = {indicatorOfTypeOfLevel=160;} -'entireAtmosphere' = {indicatorOfTypeOfLevel=200;} -'entireOcean' = {indicatorOfTypeOfLevel=201;} +'potentialVorticity' = {indicatorOfTypeOfLevel=117;} +'depthBelowSea' = {indicatorOfTypeOfLevel=160;} +'entireAtmosphere' = {indicatorOfTypeOfLevel=200;} +'entireOcean' = {indicatorOfTypeOfLevel=201;} From 49553d760dc3aa33b7a96544d64edded0b5d3bfc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 15:00:10 +0000 Subject: [PATCH 165/469] Testing: F90 error codes --- examples/F90/codes_f90_misc.f90 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/F90/codes_f90_misc.f90 b/examples/F90/codes_f90_misc.f90 index 1e47651ab..3b182eec5 100644 --- a/examples/F90/codes_f90_misc.f90 +++ b/examples/F90/codes_f90_misc.f90 @@ -11,6 +11,7 @@ program codes_f90_misc use eccodes implicit none + integer :: array_of_error_codes(8), i, code character(len=64) :: error_message = '' call codes_gribex_mode_on() @@ -19,7 +20,12 @@ program codes_f90_misc call codes_bufr_multi_element_constant_arrays_on() call codes_bufr_multi_element_constant_arrays_off() - call codes_get_error_string(-26, error_message) - write (*, *) 'error message: ', trim(error_message) + array_of_error_codes = [0, -2, -14, -16, -26, -28, -38, -41] + do i = 1, size(array_of_error_codes) + error_message = '' + code = array_of_error_codes(i) + call codes_get_error_string(code, error_message) + write (*, *) 'error message: <', adjustl(trim(error_message)), '>' + end do end program From 1916dc1d34bbb948d594d114912e635759a6ed1a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 16:32:09 +0000 Subject: [PATCH 166/469] Testing: Increase coverage: compare --- tests/grib_compare.sh | 6 +++++- tests/metar_compare.sh | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/grib_compare.sh b/tests/grib_compare.sh index d83228e2c..aa3fc21c0 100755 --- a/tests/grib_compare.sh +++ b/tests/grib_compare.sh @@ -30,7 +30,11 @@ set -e infile1=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl ${tools_dir}/grib_set -s year=2019 $infile1 $outfile ${tools_dir}/grib_compare -c data:n $infile1 $outfile - +set +e +${tools_dir}/grib_compare -a -c data:n $infile1 $outfile +status=$? +set -e +[ $status -eq 1 ] # Header (meta-data) keys infile=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index ea277df2c..6311e8597 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -45,6 +45,23 @@ if [ $status -eq 0 ]; then exit 1 fi +# Compare using a namespace +set +e +${tools_dir}/metar_compare -c ls:n $metar_file $fMetarTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "DIFFERENCE == string.*dateTime" $fLog + +set +e +${tools_dir}/metar_compare -a -c ls:n $metar_file $fMetarTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "DIFFERENCE == string.*dateTime" $fLog +grep -q "DIFFERENCE == string.*theMessage" $fLog + + # The -d option should have created these files rm -f error1_1.metar error2_1.metar error1_2.metar error2_2.metar From 99ccb82e82cc72fa1a27e88c902598f28f74e0cd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 16:49:36 +0000 Subject: [PATCH 167/469] Testing: Increase coverage: bufr_compare --- tests/bufr_compare.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index e4c41cce6..b0fe1382c 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -52,6 +52,17 @@ if [ $? -eq 0 ]; then fi set -e +# Namespace options +set +e +${tools_dir}/bufr_compare -c ls:n $f1 $f2 >> $fLog +statusA=$? +${tools_dir}/bufr_compare -a -c ls:n $f1 $f2 >> $fLog +statusB=$? +set -e +[ $statusA -ne 0 ] +[ $statusB -ne 0 ] + + #---------------------------------------------------- # Test: comparing with and without the -b switch #---------------------------------------------------- From 5ed9114f2f6938b8b92f1b29bcd53dd19452b552 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 17:10:44 +0000 Subject: [PATCH 168/469] Testing: Increase coverage: filter --- tests/bufr_filter_misc.sh | 13 +++++++++++++ tests/grib_filter.sh | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/tests/bufr_filter_misc.sh b/tests/bufr_filter_misc.sh index de6c6d527..3e325ced1 100755 --- a/tests/bufr_filter_misc.sh +++ b/tests/bufr_filter_misc.sh @@ -16,6 +16,8 @@ cd ${data_dir}/bufr # Define a common label for all the tmp files label="bufr_filter_misc_test" +tempErr=temp.$label.err + # Create log file fLog=${label}".log" rm -f $fLog @@ -1337,5 +1339,16 @@ EOF diff $fRef $fLog rm -f $fRef + +# Bad filter +set +e +${tools_dir}/bufr_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/BUFR4.tmpl > $tempErr 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Cannot include file" $tempErr + + # Clean up rm -f ${f}.log ${f}.log.ref ${f}.out $fLog $fRules +rm -f $tempErr diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index 1010cd9e0..ea6e07373 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -406,6 +406,15 @@ EOF ${tools_dir}/grib_filter $tempFilt $ECCODES_SAMPLES_PATH/GRIB2.tmpl +# Bad filter +set +e +${tools_dir}/grib_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/GRIB2.tmpl > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Cannot include file" $tempOut + + # Clean up rm -f $tempGrib $tempFilt $tempOut $tempRef rm -f ${data_dir}/formatint.rules ${data_dir}/binop.rules From 8f7a3c06930ccc114589ac12264b42d2c0b32ab5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Dec 2023 19:50:27 +0000 Subject: [PATCH 169/469] Testing: dump with ECCODES_DEBUG=1 --- tests/grib_dump.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index 7dabcfaf4..472e11d6e 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -106,6 +106,7 @@ grep -q "dataDate = 19090206" $temp # Skip handle ${tools_dir}/grib_dump -w count=4 $file > $temp 2>&1 +ECCODES_DEBUG=1 ${tools_dir}/grib_dump $data_dir/sample.grib2 # Clean up rm -f $temp From 7bcdcdf40ca4f9701ce66d2d17d725446b9d4f18 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 14:47:35 +0000 Subject: [PATCH 170/469] SUP-3892: Eccodes 2.32 onwards compile with Intel problems --- src/grib_accessor_class_codetable.cc | 26 ++++++++++++++++++-------- tests/grib_mars_keys2.sh | 9 +++++++++ tests/grib_set.sh | 8 ++++++++ 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 453c97306..8d3cc0827 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -727,6 +727,12 @@ static bool is_number(const char* s) return true; } +static bool strings_equal(const char* s1, const char* s2, bool case_sensitive) +{ + if (case_sensitive) return (strcmp(s1, s2) == 0); + return (strcmp_nocase(s1, s2) == 0); +} + static int pack_string(grib_accessor* a, const char* buffer, size_t* len) { long lValue = 0; @@ -742,13 +748,14 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t* len) } grib_accessor_codetable* self = (grib_accessor_codetable*)a; - grib_codetable* table; - long i; + grib_codetable* table = NULL; + long i = 0; size_t size = 1; + bool case_sensitive = true; - typedef int (*cmpproc)(const char*, const char*); - - cmpproc cmp = (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) ? strcmp_nocase : strcmp; + // If the key has the "lowercase" flag set, then the string comparison + // should ignore the case + if (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) case_sensitive = false; if (!self->table_loaded) { self->table = load_table(a); /* may return NULL */ @@ -765,10 +772,13 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t* len) return err; } - for (i = 0; i < table->size; i++) - if (table->entries[i].abbreviation) - if (cmp(table->entries[i].abbreviation, buffer) == 0) + for (i = 0; i < table->size; i++) { + if (table->entries[i].abbreviation) { + if (strings_equal(table->entries[i].abbreviation, buffer, case_sensitive)) { return grib_pack_long(a, &i, &size); + } + } + } if (a->flags & GRIB_ACCESSOR_FLAG_NO_FAIL) { grib_action* act = (grib_action*)(a->creator); diff --git a/tests/grib_mars_keys2.sh b/tests/grib_mars_keys2.sh index 4024a06d0..5d4b13425 100755 --- a/tests/grib_mars_keys2.sh +++ b/tests/grib_mars_keys2.sh @@ -13,8 +13,16 @@ label="grib_mars_keys2_test" tempGrib=temp.${label}.grib +grib1_sample=$ECCODES_SAMPLES_PATH/GRIB1.tmpl grib2_sample=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl + +# Check lowercase/uppercase +${tools_dir}/grib_set -s class=YT,type=EM,stream=DCWV $grib1_sample $tempGrib +grib_check_key_equals $tempGrib mars.class,mars.type,mars.stream 'yt em dcwv' +grib_check_key_equals $tempGrib marsClass:i,marsType:i,marsStream:i '18 17 1029' + + # Check all combinations # ------------------------ i=0 @@ -31,4 +39,5 @@ for cfg in $ECCODES_DEFINITION_PATH/mars/grib.*.*.def; do done echo "Checked $i files" +# Clean up rm -f $tempGrib diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 1b8be144b..d625cc66f 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -225,6 +225,14 @@ set -e [ $status -ne 0 ] grep -q "stepUnits: No such code table entry.*Did you mean" $temp +set +e +${tools_dir}/grib_set -s centre=ECMF $input $outfile > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "centre: No such code table entry.*Did you mean.*ecmf" $temp + + # ------------------------ # Unreadable message # ------------------------ From cfab5e7b1f81ad44cd6a8c340054c89bbb2010d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 14:49:40 +0000 Subject: [PATCH 171/469] Reformatting --- src/grib_buffer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_buffer.cc b/src/grib_buffer.cc index 548c546cc..00a9bd655 100644 --- a/src/grib_buffer.cc +++ b/src/grib_buffer.cc @@ -159,7 +159,7 @@ static void update_offsets_after(grib_accessor* a, long len) // plen = grib_get_next_position_offset(s->block->last); // if((ret = grib_pack_long(s->aclength, &plen, &len)) != GRIB_SUCCESS) // ; -// +// // if(s->h->context->debug) // printf("SECTION updating length %ld .. %s\n",plen,s->owner->name); // } From 2666565b7ffb1268c37d283ead5423ce5674d541 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 14:59:38 +0000 Subject: [PATCH 172/469] Reformatting --- src/grib_buffer.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/grib_buffer.cc b/src/grib_buffer.cc index 00a9bd655..43e7f7bc3 100644 --- a/src/grib_buffer.cc +++ b/src/grib_buffer.cc @@ -15,7 +15,7 @@ static void grib_get_buffer_ownership(const grib_context* c, grib_buffer* b) { - unsigned char* newdata; + unsigned char* newdata = NULL; if (b->property == CODES_MY_BUFFER) return; @@ -78,11 +78,9 @@ void grib_buffer_delete(const grib_context* c, grib_buffer* b) static void grib_grow_buffer_to(const grib_context* c, grib_buffer* b, size_t ns) { - unsigned char* newdata; - if (ns > b->length) { grib_get_buffer_ownership(c, b); - newdata = (unsigned char*)grib_context_malloc_clear(c, ns); + unsigned char* newdata = (unsigned char*)grib_context_malloc_clear(c, ns); memcpy(newdata, b->data, b->length); grib_context_free(c, b->data); b->data = newdata; From ba8df5afa68b578cfe8ba056c7cd4a408bfebd44 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 15:00:14 +0000 Subject: [PATCH 173/469] SUP-3892: Eccodes 2.32 onwards compile with Intel problems --- src/grib_accessor_class_codetable.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 8d3cc0827..1fc92e785 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -751,11 +751,6 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t* len) grib_codetable* table = NULL; long i = 0; size_t size = 1; - bool case_sensitive = true; - - // If the key has the "lowercase" flag set, then the string comparison - // should ignore the case - if (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) case_sensitive = false; if (!self->table_loaded) { self->table = load_table(a); /* may return NULL */ @@ -772,6 +767,11 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t* len) return err; } + // If the key has the "lowercase" flag set, then the string comparison + // should ignore the case + bool case_sensitive = true; + if (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) case_sensitive = false; + for (i = 0; i < table->size; i++) { if (table->entries[i].abbreviation) { if (strings_equal(table->entries[i].abbreviation, buffer, case_sensitive)) { From 23ae3e8bbacfc0b4837d30aad1555877123e959f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 15:16:37 +0000 Subject: [PATCH 174/469] GRIB lightweight clone: Rename --- src/eccodes.cc | 4 ++-- src/eccodes.h | 2 +- src/grib_api.h | 2 +- src/grib_handle.cc | 12 ++++++------ tests/CMakeLists.txt | 4 ++-- ...one_lightweight.cc => grib_clone_headers_only.cc} | 2 +- ...one_lightweight.sh => grib_clone_headers_only.sh} | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) rename tests/{grib_clone_lightweight.cc => grib_clone_headers_only.cc} (97%) rename tests/{grib_clone_lightweight.sh => grib_clone_headers_only.sh} (87%) diff --git a/src/eccodes.cc b/src/eccodes.cc index 0bd5cc78a..9ec6d8073 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -175,9 +175,9 @@ grib_handle* codes_handle_clone(const grib_handle* h) { return grib_handle_clone(h); } -grib_handle* codes_handle_clone_lightweight(const grib_handle* h) +grib_handle* codes_handle_clone_headers_only(const grib_handle* h) { - return grib_handle_clone_lightweight(h); + return grib_handle_clone_headers_only(h); } int codes_handle_delete(grib_handle* h) diff --git a/src/eccodes.h b/src/eccodes.h index 58784768f..7a535808e 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -495,7 +495,7 @@ codes_handle* codes_handle_new_from_samples(codes_context* c, const char* sample * @return the new handle, NULL if the message is invalid or a problem is encountered */ codes_handle* codes_handle_clone(const codes_handle* h); -codes_handle* codes_handle_clone_lightweight(const codes_handle* h); +codes_handle* codes_handle_clone_headers_only(const codes_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_api.h b/src/grib_api.h index 4f74189c6..84566b108 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -507,7 +507,7 @@ grib_handle* grib_handle_new_from_samples(grib_context* c, const char* sample_na * @return the new handle, NULL if the message is invalid or a problem is encountered */ grib_handle* grib_handle_clone(const grib_handle* h); -grib_handle* grib_handle_clone_lightweight(const grib_handle* h); +grib_handle* grib_handle_clone_headers_only(const grib_handle* h); /** * Frees a handle, also frees the message if it is not a user message diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 8a06e2a68..c5e7b9960 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -326,7 +326,7 @@ grib_handle* grib_handle_clone(const grib_handle* h) return result; } -static bool can_create_clone_lightweight(const grib_handle* h) +static bool can_create_clone_headers_only(const grib_handle* h) { // Only for GRIB, not BUFR etc if (h->product_kind != PRODUCT_GRIB) return false; @@ -339,14 +339,14 @@ static bool can_create_clone_lightweight(const grib_handle* h) return true; } -grib_handle* grib_handle_clone_lightweight(const grib_handle* h) +grib_handle* grib_handle_clone_headers_only(const grib_handle* h) { int err = 0; grib_handle* result = NULL; grib_context* c = h->context; - if (!can_create_clone_lightweight(h)) { - // Lightweight clone not possible. Do a normal clone + if (!can_create_clone_headers_only(h)) { + // Headers-only clone not possible. Do a normal clone return grib_handle_clone(h); } @@ -356,7 +356,7 @@ grib_handle* grib_handle_clone_lightweight(const grib_handle* h) snprintf(sample_name, sizeof(sample_name), "GRIB%ld", edition); grib_handle* h_sample = grib_handle_new_from_samples(c, sample_name); if (!h_sample) { - grib_context_log(c, GRIB_LOG_ERROR, "Failed to create lightweight clone using sample %s", sample_name); + grib_context_log(c, GRIB_LOG_ERROR, "Failed to create headers_only clone using sample %s", sample_name); return NULL; } @@ -372,7 +372,7 @@ grib_handle* grib_handle_clone_lightweight(const grib_handle* h) const int sections_to_copy = GRIB_SECTION_PRODUCT | GRIB_SECTION_LOCAL | GRIB_SECTION_GRID; result = grib_util_sections_copy((grib_handle*)h, h_sample, sections_to_copy, &err); if (!result || err) { - grib_context_log(c, GRIB_LOG_ERROR, "Failed to create lightweight clone: Unable to copy sections"); + grib_context_log(c, GRIB_LOG_ERROR, "Failed to create headers_only clone: Unable to copy sections"); grib_handle_delete(h_sample); return NULL; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 686d63b93..656817b17 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -17,7 +17,7 @@ list(APPEND test_c_bins grib_indexing grib_fieldset grib_multi_from_message - grib_clone_lightweight + grib_clone_headers_only grib_read_index unit_tests bufr_keys_iter @@ -172,7 +172,7 @@ if( HAVE_BUILD_TOOLS ) grib_headers_only grib_unpack_subarray grib_count - grib_clone_lightweight + grib_clone_headers_only bufr_templates bufr_dump_data bufr_dump_descriptors diff --git a/tests/grib_clone_lightweight.cc b/tests/grib_clone_headers_only.cc similarity index 97% rename from tests/grib_clone_lightweight.cc rename to tests/grib_clone_headers_only.cc index 3ee8c545b..f59b204ed 100644 --- a/tests/grib_clone_lightweight.cc +++ b/tests/grib_clone_headers_only.cc @@ -42,7 +42,7 @@ int main(int argc, char* argv[]) assert(out); while ((source_handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err)) != NULL) { - codes_handle* clone_handle = codes_handle_clone_lightweight(source_handle); + codes_handle* clone_handle = codes_handle_clone_headers_only(source_handle); assert(clone_handle); codes_get_long(source_handle, "isConstant", &isConstant_src); diff --git a/tests/grib_clone_lightweight.sh b/tests/grib_clone_headers_only.sh similarity index 87% rename from tests/grib_clone_lightweight.sh rename to tests/grib_clone_headers_only.sh index 3e87f8c64..8675f38cb 100755 --- a/tests/grib_clone_lightweight.sh +++ b/tests/grib_clone_headers_only.sh @@ -10,7 +10,7 @@ . ./include.ctest.sh -label="grib_clone_lightweight_test" +label="grib_clone_headers_only_test" temp=temp.$label.grib inputs=" @@ -22,7 +22,7 @@ inputs=" for f in $inputs; do infile=$data_dir/$f rm -f $temp - $EXEC ${test_dir}/grib_clone_lightweight $infile $temp + $EXEC ${test_dir}/grib_clone_headers_only $infile $temp ${tools_dir}/grib_compare -H -b totalLength $infile $temp done From 3807f533b3a7f2c18c048d0d264a9e03a4479a2d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Dec 2023 19:04:04 +0000 Subject: [PATCH 175/469] Examples: Initialise counter --- examples/F90/grib_multi.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/F90/grib_multi.f90 b/examples/F90/grib_multi.f90 index c18b005fe..f225e6f04 100644 --- a/examples/F90/grib_multi.f90 +++ b/examples/F90/grib_multi.f90 @@ -16,7 +16,7 @@ program multi use eccodes implicit none - integer :: iret, counter + integer :: iret, counter=0 integer(kind=4) :: step integer :: ifile, igrib From 58a7ec8a293e94fb22c70b55f8473ab8c67b46e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Dec 2023 11:22:11 +0000 Subject: [PATCH 176/469] ECC-1713: Fix for CARRA --- definitions/grib2/localConcepts/uerra/cfVarName.def | 10 ++++++++++ definitions/grib2/localConcepts/uerra/name.def | 10 ++++++++++ definitions/grib2/localConcepts/uerra/paramId.def | 10 ++++++++++ definitions/grib2/localConcepts/uerra/shortName.def | 10 ++++++++++ definitions/grib2/localConcepts/uerra/units.def | 10 ++++++++++ 5 files changed, 50 insertions(+) diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index 2b23e1570..d6dc24dd5 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -61,6 +61,16 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#2 metre temperature +'t2m' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Surface roughness (climatological) 'sr' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 5a5c6865e..82a308c53 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -61,6 +61,16 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#2 metre temperature +'2 metre temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Surface roughness (climatological) 'Surface roughness (climatological)' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index 2bd651ace..ba96f916a 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -61,6 +61,16 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#2 metre temperature +'167' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Surface roughness (climatological) '173' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 3c73c0761..c4d665aa2 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -61,6 +61,16 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#2 metre temperature +'2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Surface roughness (climatological) 'sr' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index b84fdc016..b97971c2a 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -61,6 +61,16 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#2 metre temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Surface roughness (climatological) 'm' = { discipline = 2 ; From 818192c2a46db87662f547c82bba6b36745b0de0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Dec 2023 12:07:26 +0000 Subject: [PATCH 177/469] Cleanup --- src/grib_handle.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index c5e7b9960..b84769440 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -339,6 +339,7 @@ static bool can_create_clone_headers_only(const grib_handle* h) return true; } +// Clone the message but not its Bitmap and Data sections (only the meta-data) grib_handle* grib_handle_clone_headers_only(const grib_handle* h) { int err = 0; @@ -381,29 +382,25 @@ grib_handle* grib_handle_clone_headers_only(const grib_handle* h) return result; } -// grib_handle* grib_handle_clone_lightweight(const grib_handle* h) +// grib_handle* grib_handle_clone_headers_only(const grib_handle* h) // { // int err = 0; // size_t size1 = 0; // const void* msg1 = NULL; // long edition = 0; - // // Only for GRIB, not BUFR etc // if (h->product_kind != PRODUCT_GRIB) { // grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Only supported for %s", // __func__, codes_get_product_name(PRODUCT_GRIB)); // return NULL; // } - // err = grib_get_long(h, "edition", &edition); // if (!err && edition == 1) { // grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Edition not supported", __func__); // return NULL; // } - // err = grib_get_message_headers(h, &msg1, &size1); // if (err) return NULL; - // size1 += 4; // grib_handle* result = grib_handle_new_from_partial_message_copy(h->context, msg1, size1); // result->buffer->data[ size1 - 4 ] = '7'; @@ -411,16 +408,13 @@ grib_handle* grib_handle_clone_headers_only(const grib_handle* h) // result->buffer->data[ size1 - 2 ] = '7'; // result->buffer->data[ size1 - 1 ] = '7'; // result->buffer->ulength = size1; - // result->product_kind = h->product_kind; - // long off = 64; // This is only true for GRIB edition 2 // err = grib_encode_unsigned_long( result->buffer->data, (unsigned long)size1, &off, 64); // if (err) { // printf("err=%s\n", grib_get_error_message(err)); // return NULL; // } - // return result; // } From 692b72f4b627f50e96f9a48debeebe27843505f3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Dec 2023 12:34:55 +0000 Subject: [PATCH 178/469] Testing: Split grib_set tests --- tests/CMakeLists.txt | 1 + tests/grib_set.sh | 151 +---------------------------------- tests/grib_set_fail.sh | 173 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 177 insertions(+), 148 deletions(-) create mode 100755 tests/grib_set_fail.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 656817b17..0db9fa8af 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -294,6 +294,7 @@ if( HAVE_BUILD_TOOLS ) grib_local grib_step grib_set + grib_set_fail grib_iterator grib_proj_string grib_compare diff --git a/tests/grib_set.sh b/tests/grib_set.sh index d625cc66f..8635c77d8 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -10,11 +10,12 @@ . ./include.ctest.sh +label="grib_set_test" REDIRECT=/dev/null infile=${data_dir}/regular_gaussian_surface.grib1 -outfile=${data_dir}/temp.grib_set.grib -temp=temp.grib_set.out +outfile=${data_dir}/temp.$label.grib +temp=${data_dir}/temp.$label.out rm -f $outfile @@ -49,73 +50,6 @@ centre=`${tools_dir}/grib_get -p centre $outfile` centre=`${tools_dir}/grib_get -p centre:l $outfile` [ $centre -eq 80 ] -# Set without -s. Expected to fail -# ---------------------------------------------------- -set +e -${tools_dir}/grib_set -p levtype $infile $outfile > $temp 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "provide some keys to set" $temp - -# Set with empty -s. Expected to fail -# ---------------------------------------------------- -set +e -${tools_dir}/grib_set -s '' $infile $outfile > $temp 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "provide some keys to set" $temp - -# Out-of-bounds value. Expected to fail -# ---------------------------------------------------- -input=${data_dir}/reduced_gaussian_sub_area.grib2 -set +e -${tools_dir}/grib_set -s perturbationNumber=1000 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "Trying to encode value of 1000 but the maximum allowable value is 255 (number of bits=8)" $temp - -# Negative value for an unsigned key. Expected to fail -# ---------------------------------------------------- -input=${data_dir}/reduced_gaussian_sub_area.grib2 -set +e -${tools_dir}/grib_set -s perturbationNumber=-1 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp - -# Bad value for -d -# ---------------- -input=${data_dir}/reduced_gaussian_sub_area.grib2 -set +e -${tools_dir}/grib_set -d hello $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "Invalid number" $temp - - -# ECC-1605: Out-of-bounds value for signed keys -# ---------------------------------------------------- -if [ $ECCODES_ON_WINDOWS -eq 0 ]; then - input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl - set +e - ${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp - status=$? - set -e - [ $status -ne 0 ] - grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483647 to 2147483647" $temp - - set +e - ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp - status=$? - set -e - [ $status -ne 0 ] -fi - # GRIB-941: encoding of GRIB2 angles # ----------------------------------- angleInDegrees=130.9989 @@ -133,14 +67,6 @@ ${tools_dir}/grib_set -s centre=289 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile ${tools_dir}/grib_dump -O $outfile > $temp grep -q 'centre = 289.*Zambia' $temp -# ECC-539: avoid output being the same as input -# ----------------------------------------------- -set +e -${tools_dir}/grib_set -s centre=0 $outfile $outfile -status=$? -set -e -[ $status -ne 0 ] - # offsetValuesBy # ------------------ input=${data_dir}/reduced_latlon_surface.grib2 @@ -151,48 +77,6 @@ max=`${tools_dir}/grib_get -F%.3f -p max $input` max=`${tools_dir}/grib_get -F%.3f -p max $outfile` [ "$max" = "13.097" ] -# ECC-1359: string that can be converted to an integer -# --------------------------------------------------- -${tools_dir}/grib_set -s month:s=6 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile -grib_check_key_equals $outfile month 6 -# Now try an illegal value: a string that cannot be converted to an integer -set +e -${tools_dir}/grib_set -s month=BAD $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile 2> $temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "String cannot be converted to an integer" $temp - - -# ECC-1363: Does not fail for invalid value for key of type 'double' -# ------------------------------------------------------------------ -${tools_dir}/grib_set -s angleOfRotation:s=10.66 $ECCODES_SAMPLES_PATH/rotated_ll_sfc_grib2.tmpl $outfile -grib_check_key_equals $outfile angleOfRotation 10.66 -# Now try an illegal value: a string that cannot be converted to an integer -set +e -${tools_dir}/grib_set -s angleOfRotation=BAD $ECCODES_SAMPLES_PATH/rotated_ll_sfc_grib2.tmpl $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "String cannot be converted to a double" $temp - - -# Set ascii key via double or long -# -------------------------------- -${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=21 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile -${tools_dir}/grib_set -s marsDomain=x $outfile $temp -grib_check_key_equals $temp 'marsDomain' 'x' -set +e -${tools_dir}/grib_set -s marsDomain=9 $outfile $temp -status=$? -set -e -[ $status -ne 0 ] - -set +e -${tools_dir}/grib_set -s marsDomain=1.2 $outfile $temp -status=$? -set -e -[ $status -ne 0 ] # Strict option # --------------- @@ -215,35 +99,6 @@ grib_check_key_equals $input 'typeOfProcessedData:i' '2' ${tools_dir}/grib_set -s typeOfProcessedData=rubbish $input $outfile grib_check_key_equals $outfile 'typeOfProcessedData:i' '255' # set to default -# Codetable mismatch -# ------------------------ -input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -set +e -${tools_dir}/grib_set -s stepUnits=d $input $outfile > $temp 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "stepUnits: No such code table entry.*Did you mean" $temp - -set +e -${tools_dir}/grib_set -s centre=ECMF $input $outfile > $temp 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "centre: No such code table entry.*Did you mean.*ecmf" $temp - - -# ------------------------ -# Unreadable message -# ------------------------ -echo GRIB > $outfile -set +e -${tools_dir}/grib_set -s edition=2 $outfile /dev/null > $temp 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "unreadable message" $temp - # Clean up rm -f $outfile $temp diff --git a/tests/grib_set_fail.sh b/tests/grib_set_fail.sh new file mode 100755 index 000000000..b516e6c43 --- /dev/null +++ b/tests/grib_set_fail.sh @@ -0,0 +1,173 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_set_fail_test" +REDIRECT=/dev/null + +outfile=${data_dir}/temp.$label.grib +temp=${data_dir}/temp.$label.out + +infile=${data_dir}/regular_gaussian_surface.grib2 + + +# Set without -s. Expected to fail +# ---------------------------------------------------- +set +e +${tools_dir}/grib_set -p levtype $infile $outfile > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "provide some keys to set" $temp + +# Set with empty -s. Expected to fail +# ---------------------------------------------------- +set +e +${tools_dir}/grib_set -s '' $infile $outfile > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "provide some keys to set" $temp + +# Out-of-bounds value. Expected to fail +# ---------------------------------------------------- +input=${data_dir}/reduced_gaussian_sub_area.grib2 +set +e +${tools_dir}/grib_set -s perturbationNumber=1000 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "Trying to encode value of 1000 but the maximum allowable value is 255 (number of bits=8)" $temp + +# Negative value for an unsigned key. Expected to fail +# ---------------------------------------------------- +input=${data_dir}/reduced_gaussian_sub_area.grib2 +set +e +${tools_dir}/grib_set -s perturbationNumber=-1 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp + +# Bad value for -d +# ---------------- +input=${data_dir}/reduced_gaussian_sub_area.grib2 +set +e +${tools_dir}/grib_set -d hello $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid number" $temp + + +# ECC-1605: Out-of-bounds value for signed keys +# ---------------------------------------------------- +if [ $ECCODES_ON_WINDOWS -eq 0 ]; then + input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + set +e + ${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] + grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483647 to 2147483647" $temp + + set +e + ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] +fi + + +# ECC-539: avoid output being the same as input +# ----------------------------------------------- +set +e +${tools_dir}/grib_set -s centre=0 $outfile $outfile +status=$? +set -e +[ $status -ne 0 ] + +# ECC-1359: string that can be converted to an integer +# --------------------------------------------------- +${tools_dir}/grib_set -s month:s=6 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile +grib_check_key_equals $outfile month 6 +# Now try an illegal value: a string that cannot be converted to an integer +set +e +${tools_dir}/grib_set -s month=BAD $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile 2> $temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "String cannot be converted to an integer" $temp + + +# ECC-1363: Does not fail for invalid value for key of type 'double' +# ------------------------------------------------------------------ +${tools_dir}/grib_set -s angleOfRotation:s=10.66 $ECCODES_SAMPLES_PATH/rotated_ll_sfc_grib2.tmpl $outfile +grib_check_key_equals $outfile angleOfRotation 10.66 +# Now try an illegal value: a string that cannot be converted to an integer +set +e +${tools_dir}/grib_set -s angleOfRotation=BAD $ECCODES_SAMPLES_PATH/rotated_ll_sfc_grib2.tmpl $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "String cannot be converted to a double" $temp + + +# Set ascii key via double or long +# -------------------------------- +${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=21 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $outfile +${tools_dir}/grib_set -s marsDomain=x $outfile $temp +grib_check_key_equals $temp 'marsDomain' 'x' +set +e +${tools_dir}/grib_set -s marsDomain=9 $outfile $temp +status=$? +set -e +[ $status -ne 0 ] + +set +e +${tools_dir}/grib_set -s marsDomain=1.2 $outfile $temp +status=$? +set -e +[ $status -ne 0 ] + + +# Codetable mismatch +# ------------------------ +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +set +e +${tools_dir}/grib_set -s stepUnits=d $input $outfile > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "stepUnits: No such code table entry.*Did you mean" $temp + +set +e +${tools_dir}/grib_set -s centre=ECMF $input $outfile > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "centre: No such code table entry.*Did you mean.*ecmf" $temp + + +# ------------------------ +# Unreadable message +# ------------------------ +echo GRIB > $outfile +set +e +${tools_dir}/grib_set -s edition=2 $outfile /dev/null > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unreadable message" $temp + + +# Clean up +rm -f $outfile $temp From 9ba56e862ded99d231dc2133a5d82ca0e213ac4a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Dec 2023 14:17:30 +0000 Subject: [PATCH 179/469] Fortran: Compiler warnings (SUP-3893) --- fortran/grib_api_externals.h | 1 + fortran/grib_f90_tail.f90 | 8 +++--- fortran/grib_fortran.c | 20 +++++++++++++-- fortran/grib_fortran_prototypes.h | 41 +++++++++++++++++-------------- 4 files changed, 47 insertions(+), 23 deletions(-) diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h index f41562c02..85a442c96 100644 --- a/fortran/grib_api_externals.h +++ b/fortran/grib_api_externals.h @@ -20,6 +20,7 @@ integer, external :: grib_f_skip_computed, & integer, external :: grib_f_keys_iterator_get_name, & grib_f_keys_iterator_rewind integer, external :: grib_f_new_from_message, & + grib_f_new_from_message_int, & grib_f_new_from_message_copy, & grib_f_new_from_samples, & codes_bufr_f_new_from_samples, & diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index 600e621a5..c7b3f0de9 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -1365,7 +1365,7 @@ subroutine grib_new_from_message_char(gribid, message, status) if (present(status)) then status = iret else - call grib_check(iret, 'new_from_message', '') + call grib_check(iret, 'new_from_message_char', '') end if end subroutine grib_new_from_message_char @@ -1394,11 +1394,13 @@ subroutine grib_new_from_message_int4(gribid, message, status) integer(kind=kindOfInt) :: iret size_bytes = size(message, dim=1)*sizeOfInteger4 - iret = grib_f_new_from_message(gribid, message, size_bytes) + ! See SUP-3893 + !iret = grib_f_new_from_message(gribid, message, size_bytes) + iret = grib_f_new_from_message_int(gribid, message, size_bytes) if (present(status)) then status = iret else - call grib_check(iret, 'new_from_message', '') + call grib_check(iret, 'new_from_message_int4', '') end if end subroutine grib_new_from_message_int4 diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 751f28460..03540d84b 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1497,11 +1497,10 @@ int codes_f_bufr_keys_iterator_delete(int* iterid) { int grib_f_new_from_message_(int* gid, void* buffer , size_t* bufsize){ grib_handle *h = NULL; h = grib_handle_new_from_message_copy(0, buffer, *bufsize); - if(h){ + if (h){ push_handle(h,gid); return GRIB_SUCCESS; } - *gid = -1; return GRIB_INTERNAL_ERROR; } @@ -1512,6 +1511,23 @@ int grib_f_new_from_message(int* gid, void* buffer , size_t* bufsize){ return grib_f_new_from_message_(gid, buffer , bufsize); } +/* See SUP-3893: Need to provide an 'int' version */ +int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize){ + grib_handle *h = NULL; + h = grib_handle_new_from_message_copy(0, (void*)buffer, *bufsize); + if (h){ + push_handle(h,gid); + return GRIB_SUCCESS; + } + *gid = -1; + return GRIB_INTERNAL_ERROR; +} +int grib_f_new_from_message_int__(int* gid, int* buffer , size_t* bufsize){ + return grib_f_new_from_message_int_(gid, buffer , bufsize); +} +int grib_f_new_from_message_int(int* gid, int* buffer , size_t* bufsize){ + return grib_f_new_from_message_int_(gid, buffer , bufsize); +} /*****************************************************************************/ int grib_f_new_from_message_copy_(int* gid, void* buffer , size_t* bufsize){ grib_handle *h = NULL; diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h index f0267cc79..0912dadc6 100644 --- a/fortran/grib_fortran_prototypes.h +++ b/fortran/grib_fortran_prototypes.h @@ -16,15 +16,15 @@ extern "C" { int grib_f_read_any_headers_only_from_file_(int *fid, char *buffer, size_t *nbytes); int grib_f_read_any_headers_only_from_file__(int *fid, char *buffer, size_t *nbytes); int grib_f_read_any_headers_only_from_file(int *fid, char *buffer, size_t *nbytes); -int grib_f_read_any_from_file_(int *fid, void *buffer, size_t *nbytes); -int grib_f_read_any_from_file__(int *fid, void *buffer, size_t *nbytes); -int grib_f_read_any_from_file(int *fid, void *buffer, size_t *nbytes); -int grib_f_write_file_(int *fid, void *buffer, size_t *nbytes); -int grib_f_write_file__(int *fid, void *buffer, size_t *nbytes); -int grib_f_write_file(int *fid, void *buffer, size_t *nbytes); -int grib_f_read_file_(int *fid, void *buffer, size_t *nbytes); -int grib_f_read_file__(int *fid, void *buffer, size_t *nbytes); -int grib_f_read_file(int *fid, void *buffer, size_t *nbytes); +int grib_f_read_any_from_file_(int *fid, void* buffer, size_t *nbytes); +int grib_f_read_any_from_file__(int *fid, void* buffer, size_t *nbytes); +int grib_f_read_any_from_file(int *fid, void* buffer, size_t *nbytes); +int grib_f_write_file_(int *fid, void* buffer, size_t *nbytes); +int grib_f_write_file__(int *fid, void* buffer, size_t *nbytes); +int grib_f_write_file(int *fid, void* buffer, size_t *nbytes); +int grib_f_read_file_(int *fid, void* buffer, size_t *nbytes); +int grib_f_read_file__(int *fid, void* buffer, size_t *nbytes); +int grib_f_read_file(int *fid, void* buffer, size_t *nbytes); int grib_f_open_file_(int *fid, char *name, char *op, int lname, int lop); int grib_f_open_file__(int *fid, char *name, char *op, int lname, int lop); int grib_f_open_file(int *fid, char *name, char *op, int lname, int lop); @@ -99,12 +99,17 @@ int grib_f_skip_read_only(int *iterid); int grib_f_skip_function_(int *iterid); int grib_f_skip_function__(int *iterid); int grib_f_skip_function(int *iterid); -int grib_f_new_from_message_(int *gid, void *buffer, size_t *bufsize); -int grib_f_new_from_message__(int *gid, void *buffer, size_t *bufsize); -int grib_f_new_from_message(int *gid, void *buffer, size_t *bufsize); -int grib_f_new_from_message_copy_(int *gid, void *buffer, size_t *bufsize); -int grib_f_new_from_message_copy__(int *gid, void *buffer, size_t *bufsize); -int grib_f_new_from_message_copy(int *gid, void *buffer, size_t *bufsize); + +int grib_f_new_from_message_(int *gid, void* buffer, size_t *bufsize); +int grib_f_new_from_message__(int *gid, void* buffer, size_t *bufsize); +int grib_f_new_from_message(int *gid, void* buffer, size_t *bufsize); +int grib_f_new_from_message_int_(int *gid, int *buffer, size_t *bufsize); +int grib_f_new_from_message_int__(int *gid, int *buffer, size_t *bufsize); +int grib_f_new_from_message_int(int *gid, int *buffer, size_t *bufsize); + +int grib_f_new_from_message_copy_(int *gid, void* buffer, size_t *bufsize); +int grib_f_new_from_message_copy__(int *gid, void* buffer, size_t *bufsize); +int grib_f_new_from_message_copy(int *gid, void* buffer, size_t *bufsize); int grib_f_new_from_samples_(int *gid, char *name, int lname); int grib_f_new_from_samples__(int *gid, char *name, int lname); int grib_f_new_from_samples(int *gid, char *name, int lname); @@ -353,9 +358,9 @@ int grib_f_get_data_real8(int *gid, double *lats, double *lons, double *values, int grib_f_get_message_size_(int *gid, size_t *len); int grib_f_get_message_size__(int *gid, size_t *len); int grib_f_get_message_size(int *gid, size_t *len); -int grib_f_copy_message_(int *gid, void *mess, size_t *len); -int grib_f_copy_message__(int *gid, void *mess, size_t *len); -int grib_f_copy_message(int *gid, void *mess, size_t *len); +int grib_f_copy_message_(int *gid, void* mess, size_t *len); +int grib_f_copy_message__(int *gid, void* mess, size_t *len); +int grib_f_copy_message(int *gid, void* mess, size_t *len); void grib_f_check_(int *err, char *call, char *str, int lencall, int lenstr); void grib_f_check__(int *err, char *call, char *key, int lencall, int lenkey); void grib_f_check(int *err, char *call, char *key, int lencall, int lenkey); From 64dfdd9f04494b1060057e0b7fab7581047d11b9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Dec 2023 15:30:53 +0000 Subject: [PATCH 180/469] Fortran: Compiler warnings (SUP-3893) --- fortran/grib_fortran.c | 348 +++++++++++++++++++---------------------- 1 file changed, 161 insertions(+), 187 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 03540d84b..c8d93bd1c 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -980,11 +980,11 @@ int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { } return ret; } -int grib_f_open_file__(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_( fid, name , op, lname, lop); +int grib_f_open_file__(int* fid, char* name , char* op, int lname, int lop){ + return grib_f_open_file_(fid, name, op, lname, lop); } -int grib_f_open_file(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_( fid, name , op, lname, lop); +int grib_f_open_file(int* fid, char* name , char* op, int lname, int lop){ + return grib_f_open_file_(fid, name, op, lname, lop); } /*****************************************************************************/ @@ -1494,7 +1494,7 @@ int codes_f_bufr_keys_iterator_delete(int* iterid) { } /*****************************************************************************/ -int grib_f_new_from_message_(int* gid, void* buffer , size_t* bufsize){ +int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { grib_handle *h = NULL; h = grib_handle_new_from_message_copy(0, buffer, *bufsize); if (h){ @@ -1504,93 +1504,80 @@ int grib_f_new_from_message_(int* gid, void* buffer , size_t* bufsize){ *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message__(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer , bufsize); +int grib_f_new_from_message__(int* gid, void* buffer, size_t* bufsize){ + return grib_f_new_from_message_(gid, buffer, bufsize); } -int grib_f_new_from_message(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer , bufsize); +int grib_f_new_from_message(int* gid, void* buffer, size_t* bufsize){ + return grib_f_new_from_message_(gid, buffer, bufsize); } /* See SUP-3893: Need to provide an 'int' version */ -int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize){ - grib_handle *h = NULL; - h = grib_handle_new_from_message_copy(0, (void*)buffer, *bufsize); - if (h){ - push_handle(h,gid); - return GRIB_SUCCESS; - } - *gid = -1; - return GRIB_INTERNAL_ERROR; +int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) { + /* Call the version with void pointer */ + return grib_f_new_from_message_(gid, (void*)buffer, bufsize); } int grib_f_new_from_message_int__(int* gid, int* buffer , size_t* bufsize){ - return grib_f_new_from_message_int_(gid, buffer , bufsize); + return grib_f_new_from_message_int_(gid, buffer, bufsize); } -int grib_f_new_from_message_int(int* gid, int* buffer , size_t* bufsize){ - return grib_f_new_from_message_int_(gid, buffer , bufsize); +int grib_f_new_from_message_int(int* gid, int* buffer, size_t* bufsize){ + return grib_f_new_from_message_int_(gid, buffer, bufsize); } /*****************************************************************************/ -int grib_f_new_from_message_copy_(int* gid, void* buffer , size_t* bufsize){ +int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ grib_handle *h = NULL; h = grib_handle_new_from_message_copy(0, buffer, *bufsize); if(h){ push_handle(h,gid); return GRIB_SUCCESS; } - *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message_copy__(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer , bufsize); +int grib_f_new_from_message_copy__(int* gid, void* buffer, size_t* bufsize){ + return grib_f_new_from_message_copy_(gid, buffer, bufsize); } -int grib_f_new_from_message_copy(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer , bufsize); +int grib_f_new_from_message_copy(int* gid, void* buffer, size_t* bufsize){ + return grib_f_new_from_message_copy_(gid, buffer, bufsize); } /*****************************************************************************/ -int grib_f_new_from_samples_(int* gid, char* name , int lname){ +int grib_f_new_from_samples_(int* gid, char* name, int lname){ char fname[1024]; - grib_handle *h = NULL; - - h = grib_handle_new_from_samples(NULL,cast_char(fname,name,lname)); + grib_handle *h = grib_handle_new_from_samples(NULL,cast_char(fname,name,lname)); /* grib_context_set_debug(h->context,1);*/ if(h){ push_handle(h,gid); return GRIB_SUCCESS; } - *gid = -1; return GRIB_FILE_NOT_FOUND; } int grib_f_new_from_samples__(int* gid, char* name , int lname){ - return grib_f_new_from_samples_( gid, name , lname); + return grib_f_new_from_samples_(gid, name, lname); } int grib_f_new_from_samples(int* gid, char* name , int lname){ - return grib_f_new_from_samples_( gid, name , lname); + return grib_f_new_from_samples_(gid, name, lname); } /*****************************************************************************/ int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ char fname[1024]; - grib_handle *h = NULL; - - h = codes_bufr_handle_new_from_samples(NULL,cast_char(fname,name,lname)); + grib_handle* h = codes_bufr_handle_new_from_samples(NULL,cast_char(fname,name,lname)); /* grib_context_set_debug(h->context,1);*/ if(h){ push_handle(h,gid); return GRIB_SUCCESS; } - *gid = -1; return GRIB_FILE_NOT_FOUND; } int codes_bufr_f_new_from_samples__(int* gid, char* name, int lname){ - return codes_bufr_f_new_from_samples_( gid, name, lname); + return codes_bufr_f_new_from_samples_(gid, name, lname); } int codes_bufr_f_new_from_samples(int* gid, char* name, int lname){ - return codes_bufr_f_new_from_samples_( gid, name, lname); + return codes_bufr_f_new_from_samples_(gid, name, lname); } /*****************************************************************************/ @@ -1715,6 +1702,7 @@ int any_f_scan_file__(int* fid,int* n) { return any_f_scan_file(fid,n); } +/*****************************************************************************/ int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) { grib_handle *h = NULL; @@ -1744,7 +1732,6 @@ int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) return GRIB_END_OF_FILE; } } - int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid){ return any_f_new_from_scanned_file(fid,msgid,gid); } @@ -1789,6 +1776,7 @@ int any_f_load_all_from_file__(int* fid,int* n) { return any_f_load_all_from_file(fid,n); } +/*****************************************************************************/ int any_f_new_from_loaded(int* msgid,int* gid) { grib_handle *h = NULL; @@ -1818,6 +1806,7 @@ int any_f_new_from_loaded__(int* msgid,int* gid){ return any_f_new_from_loaded(msgid,gid); } +/*****************************************************************************/ int codes_f_clear_loaded_from_file(void) { grib_context* c=grib_context_get_default(); /* grib_oarray_delete_content(c,binary_messages); */ @@ -2031,7 +2020,6 @@ int grib_f_index_add_file_(int* iid, char* file, int lfile) { int grib_f_index_add_file__(int* iid, char* file, int lfile) { return grib_f_index_add_file_(iid,file,lfile); } - int grib_f_index_add_file(int* iid, char* file, int lfile) { return grib_f_index_add_file_(iid,file,lfile); } @@ -2109,7 +2097,6 @@ int grib_f_multi_handle_release(int* hid){ return grib_f_multi_handle_release_(hid); } -/*****************************************************************************/ int grib_f_release_(int* hid){ return clear_handle(*hid); } @@ -2176,15 +2163,15 @@ int grib_f_print_(int* gid, char* key, int len){ return err; } } -int grib_f_print__(int* gid, char* key, int len){ - return grib_f_print_(gid, key, len); +int grib_f_print__(int* gid, char* key, int len){ + return grib_f_print_(gid, key, len); } -int grib_f_print(int* gid, char* key, int len){ - return grib_f_print_(gid, key, len); +int grib_f_print(int* gid, char* key, int len){ + return grib_f_print_(gid, key, len); } #endif /*****************************************************************************/ -int grib_f_get_error_string_(int* err, char* buf, int len){ +int grib_f_get_error_string_(int* err, char* buf, int len){ const char* err_msg = grib_get_error_message(*err); const size_t erlen = strlen(err_msg); if( len < erlen) return GRIB_ARRAY_TOO_SMALL; @@ -2225,11 +2212,11 @@ int grib_f_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_get_size_int__(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); +int grib_f_get_size_int__(int* gid, char* key, int* val, int len){ + return grib_f_get_size_int_( gid, key, val, len); } -int grib_f_get_size_int(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); +int grib_f_get_size_int(int* gid, char* key, int* val, int len){ + return grib_f_get_size_int_( gid, key, val, len); } int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ @@ -2246,11 +2233,11 @@ int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_get_size_long__(int* gid, char* key, long* val, int len){ - return grib_f_get_size_long_( gid, key, val, len); +int grib_f_get_size_long__(int* gid, char* key, long* val, int len){ + return grib_f_get_size_long_( gid, key, val, len); } -int grib_f_get_size_long(int* gid, char* key, long* val, int len){ - return grib_f_get_size_long_( gid, key, val, len); +int grib_f_get_size_long(int* gid, char* key, long* val, int len){ + return grib_f_get_size_long_( gid, key, val, len); } int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ @@ -2267,11 +2254,11 @@ int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_index_get_size_int__(int* gid, char* key, int* val, int len){ - return grib_f_index_get_size_int_( gid, key, val, len); +int grib_f_index_get_size_int__(int* gid, char* key, int* val, int len){ + return grib_f_index_get_size_int_( gid, key, val, len); } -int grib_f_index_get_size_int(int* gid, char* key, int* val, int len){ - return grib_f_index_get_size_int_( gid, key, val, len); +int grib_f_index_get_size_int(int* gid, char* key, int* val, int len){ + return grib_f_index_get_size_int_( gid, key, val, len); } int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ @@ -2288,14 +2275,14 @@ int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_index_get_size_long__(int* gid, char* key, long* val, int len){ - return grib_f_index_get_size_long_( gid, key, val, len); +int grib_f_index_get_size_long__(int* gid, char* key, long* val, int len){ + return grib_f_index_get_size_long_( gid, key, val, len); } -int grib_f_index_get_size_long(int* gid, char* key, long* val, int len){ - return grib_f_index_get_size_long_( gid, key, val, len); +int grib_f_index_get_size_long(int* gid, char* key, long* val, int len){ + return grib_f_index_get_size_long_( gid, key, val, len); } -int grib_f_get_int_(int* gid, char* key, int* val, int len){ +int grib_f_get_int_(int* gid, char* key, int* val, int len){ grib_handle *h = get_handle(*gid); long long_val; int err = GRIB_SUCCESS; @@ -2306,14 +2293,14 @@ int grib_f_get_int_(int* gid, char* key, int* val, int len){ *val = long_val; return err; } -int grib_f_get_int__(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); +int grib_f_get_int__(int* gid, char* key, int* val, int len){ + return grib_f_get_int_( gid, key, val, len); } -int grib_f_get_int(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); +int grib_f_get_int(int* gid, char* key, int* val, int len){ + return grib_f_get_int_( gid, key, val, len); } -int grib_f_get_long_(int* gid, char* key, long* val, int len){ +int grib_f_get_long_(int* gid, char* key, long* val, int len){ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2322,15 +2309,15 @@ int grib_f_get_long_(int* gid, char* key, long* val, int len){ err = grib_get_long(h, cast_char(buf,key,len),val); return err; } -int grib_f_get_long__(int* gid, char* key, long* val, int len){ - return grib_f_get_long_( gid, key, val, len); +int grib_f_get_long__(int* gid, char* key, long* val, int len){ + return grib_f_get_long_( gid, key, val, len); } -int grib_f_get_long(int* gid, char* key, long* val, int len){ - return grib_f_get_long_( gid, key, val, len); +int grib_f_get_long(int* gid, char* key, long* val, int len){ + return grib_f_get_long_( gid, key, val, len); } /*****************************************************************************/ -int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ +int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ grib_handle *h = get_handle(*gid); int type_val = 0; int err = GRIB_SUCCESS; @@ -2341,15 +2328,15 @@ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ *val = type_val; return err; } -int grib_f_get_native_type__(int* gid, char* key, int* val, int len){ - return grib_f_get_native_type_( gid, key, val, len); +int grib_f_get_native_type__(int* gid, char* key, int* val, int len){ + return grib_f_get_native_type_( gid, key, val, len); } -int grib_f_get_native_type(int* gid, char* key, int* val, int len){ - return grib_f_get_native_type_( gid, key, val, len); +int grib_f_get_native_type(int* gid, char* key, int* val, int len){ + return grib_f_get_native_type_( gid, key, val, len); } /*****************************************************************************/ -int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ +int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ grib_handle *h = get_handle(*gid); long* long_val = NULL; @@ -2380,13 +2367,13 @@ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ return err; } int grib_f_get_int_array__(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); + return grib_f_get_int_array_( gid, key, val, size, len); } int grib_f_get_int_array(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); + return grib_f_get_int_array_( gid, key, val, size, len); } /*****************************************************************************/ -int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ +int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; @@ -2401,10 +2388,10 @@ int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ return err; } int grib_f_get_long_array__(int* gid, char* key, long *val, int* size, int len){ - return grib_f_get_long_array_( gid, key, val, size, len); + return grib_f_get_long_array_( gid, key, val, size, len); } int grib_f_get_long_array(int* gid, char* key, long *val, int* size, int len){ - return grib_f_get_long_array_( gid, key, val, size, len); + return grib_f_get_long_array_( gid, key, val, size, len); } /*****************************************************************************/ @@ -2425,12 +2412,12 @@ int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, i int grib_f_get_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ return grib_f_get_byte_array_( gid, key, val, size, len, lenv); } -int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ +int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ return grib_f_get_byte_array_( gid, key, val, size, len, lenv); } /*****************************************************************************/ -int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* size, int len){ +int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* size, int len){ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; @@ -2468,15 +2455,15 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* return err; } -int grib_f_index_get_string__(int* gid, char* key, char *val, int* eachsize, int* size, int len){ +int grib_f_index_get_string__(int* gid, char* key, char *val, int* eachsize, int* size, int len){ return grib_f_index_get_string_(gid,key,val,eachsize,size,len); } -int grib_f_index_get_string(int* gid, char* key, char* val, int* eachsize, int* size, int len){ +int grib_f_index_get_string(int* gid, char* key, char* val, int* eachsize, int* size, int len){ return grib_f_index_get_string_(gid,key,val,eachsize,size,len); } /*****************************************************************************/ -int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ +int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; @@ -2488,15 +2475,15 @@ int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ *size = lsize; return err; } -int grib_f_index_get_long__(int* gid, char* key, long *val, int* size, int len){ +int grib_f_index_get_long__(int* gid, char* key, long *val, int* size, int len){ return grib_f_index_get_long_(gid,key,val,size,len); } -int grib_f_index_get_long(int* gid, char* key, long *val, int* size, int len){ +int grib_f_index_get_long(int* gid, char* key, long *val, int* size, int len){ return grib_f_index_get_long_(gid,key,val,size,len); } /*****************************************************************************/ -int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ +int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; @@ -2517,15 +2504,15 @@ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ grib_context_free(h->context, lval); return err; } -int grib_f_index_get_int__(int* gid, char* key, int *val, int* size, int len){ +int grib_f_index_get_int__(int* gid, char* key, int *val, int* size, int len){ return grib_f_index_get_int_(gid,key,val,size,len); } -int grib_f_index_get_int(int* gid, char* key, int *val, int* size, int len){ +int grib_f_index_get_int(int* gid, char* key, int *val, int* size, int len){ return grib_f_index_get_int_(gid,key,val,size,len); } /*****************************************************************************/ -int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len){ +int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len){ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; @@ -2537,15 +2524,15 @@ int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int le *size = lsize; return err; } -int grib_f_index_get_real8__(int* gid, char* key, double *val, int* size, int len){ +int grib_f_index_get_real8__(int* gid, char* key, double *val, int* size, int len){ return grib_f_index_get_real8_(gid,key,val,size,len); } -int grib_f_index_get_real8(int* gid, char* key, double *val, int* size, int len){ +int grib_f_index_get_real8(int* gid, char* key, double *val, int* size, int len){ return grib_f_index_get_real8_(gid,key,val,size,len); } /*****************************************************************************/ -int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ +int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2574,15 +2561,15 @@ int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ grib_context_free(h->context,long_val); return err; } -int grib_f_set_int_array__(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); +int grib_f_set_int_array__(int* gid, char* key, int* val, int* size, int len){ + return grib_f_set_int_array_( gid, key, val, size, len); } -int grib_f_set_int_array(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); +int grib_f_set_int_array(int* gid, char* key, int* val, int* size, int len){ + return grib_f_set_int_array_( gid, key, val, size, len); } /*****************************************************************************/ -int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ +int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ grib_handle *h = get_handle(*gid); char buf[1024]; size_t lsize = *size; @@ -2591,11 +2578,11 @@ int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ return grib_set_long_array(h, cast_char(buf,key,len), val, lsize); } -int grib_f_set_long_array__(int* gid, char* key, long* val, int* size, int len){ - return grib_f_set_long_array_( gid, key, val, size, len); +int grib_f_set_long_array__(int* gid, char* key, long* val, int* size, int len){ + return grib_f_set_long_array_( gid, key, val, size, len); } -int grib_f_set_long_array(int* gid, char* key, long* val, int* size, int len){ - return grib_f_set_long_array_( gid, key, val, size, len); +int grib_f_set_long_array(int* gid, char* key, long* val, int* size, int len){ + return grib_f_set_long_array_( gid, key, val, size, len); } /*****************************************************************************/ @@ -2628,10 +2615,10 @@ int grib_f_set_int_(int* gid, char* key, int* val, int len){ return grib_set_long(h, cast_char(buf,key,len), long_val); } int grib_f_set_int__(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); + return grib_f_set_int_( gid, key, val, len); } int grib_f_set_int(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); + return grib_f_set_int_( gid, key, val, len); } int grib_f_set_long_(int* gid, char* key, long* val, int len){ @@ -2641,10 +2628,10 @@ int grib_f_set_long_(int* gid, char* key, long* val, int len){ return grib_set_long(h, cast_char(buf,key,len), *val); } int grib_f_set_long__(int* gid, char* key, long* val, int len){ - return grib_f_set_long_( gid, key, val, len); + return grib_f_set_long_( gid, key, val, len); } int grib_f_set_long(int* gid, char* key, long* val, int len){ - return grib_f_set_long_( gid, key, val, len); + return grib_f_set_long_( gid, key, val, len); } /*****************************************************************************/ @@ -2656,11 +2643,11 @@ int grib_f_set_missing_(int* gid, char* key,int len){ return grib_set_missing(h, cast_char(buf,key,len)); } -int grib_f_set_missing__(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); +int grib_f_set_missing__(int* gid, char* key, int len){ + return grib_f_set_missing_( gid, key, len); } -int grib_f_set_missing(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); +int grib_f_set_missing(int* gid, char* key, int len){ + return grib_f_set_missing_( gid, key, len); } int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ @@ -2705,11 +2692,11 @@ int grib_f_set_real4_(int* gid, char* key, float* val, int len){ return grib_set_double(h, cast_char(buf,key,len), val8); } -int grib_f_set_real4__(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); +int grib_f_set_real4__(int* gid, char* key, float* val, int len){ + return grib_f_set_real4_( gid, key, val, len); } -int grib_f_set_real4(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); +int grib_f_set_real4(int* gid, char* key, float* val, int len){ + return grib_f_set_real4_( gid, key, val, len); } int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int len){ @@ -2726,10 +2713,10 @@ int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int le return err; } int grib_f_get_real4_element__(int* gid, char* key,int* index, float* val,int len){ - return grib_f_get_real4_element_( gid, key, index, val, len); + return grib_f_get_real4_element_( gid, key, index, val, len); } int grib_f_get_real4_element(int* gid, char* key,int* index, float* val,int len){ - return grib_f_get_real4_element_( gid, key, index, val, len); + return grib_f_get_real4_element_( gid, key, index, val, len); } int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* size, int len){ @@ -2761,10 +2748,10 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s return err; } int grib_f_get_real4_elements__(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); + return grib_f_get_real4_elements_( gid, key, index, val, len,size); } int grib_f_get_real4_elements(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); + return grib_f_get_real4_elements_( gid, key, index, val, len,size); } int grib_f_get_real4_(int* gid, char* key, float* val, int len){ @@ -2780,11 +2767,11 @@ int grib_f_get_real4_(int* gid, char* key, float* val, int len){ *val = val8; return err; } -int grib_f_get_real4__(int* gid, char* key, float* val, int len){ - return grib_f_get_real4_( gid, key, val, len); +int grib_f_get_real4__(int* gid, char* key, float* val, int len){ + return grib_f_get_real4_( gid, key, val, len); } -int grib_f_get_real4(int* gid, char* key, float* val, int len){ - return grib_f_get_real4_( gid, key, val, len); +int grib_f_get_real4(int* gid, char* key, float* val, int len){ + return grib_f_get_real4_( gid, key, val, len); } int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len) @@ -2832,10 +2819,10 @@ int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len) } int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ - return grib_f_get_real4_array_( gid, key, val, size, len); + return grib_f_get_real4_array_( gid, key, val, size, len); } int grib_f_get_real4_array(int* gid, char* key, float* val, int* size, int len){ - return grib_f_get_real4_array_( gid, key, val, size, len); + return grib_f_get_real4_array_( gid, key, val, size, len); } /*****************************************************************************/ @@ -2864,10 +2851,10 @@ int grib_f_set_force_real4_array_(int* gid, char* key, float* val, int* size, in return err; } int grib_f_set_force_real4_array__(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_force_real4_array_( gid, key, val, size, len); + return grib_f_set_force_real4_array_( gid, key, val, size, len); } int grib_f_set_force_real4_array(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_force_real4_array_( gid, key, val, size, len); + return grib_f_set_force_real4_array_( gid, key, val, size, len); } /*****************************************************************************/ @@ -2992,10 +2979,10 @@ int grib_f_set_real8_(int* gid, char* key, double* val, int len) return grib_set_double(h, cast_char(buf,key,len), *val); } int grib_f_set_real8__(int* gid, char* key, double* val, int len){ - return grib_f_set_real8_( gid, key, val, len); + return grib_f_set_real8_( gid, key, val, len); } int grib_f_set_real8(int* gid, char* key, double* val, int len){ - return grib_f_set_real8_( gid, key, val, len); + return grib_f_set_real8_( gid, key, val, len); } int grib_f_get_real8_(int* gid, char* key, double* val, int len) @@ -3009,10 +2996,10 @@ int grib_f_get_real8_(int* gid, char* key, double* val, int len) } int grib_f_get_real8__(int* gid, char* key, double* val, int len){ - return grib_f_get_real8_( gid, key, val, len); + return grib_f_get_real8_( gid, key, val, len); } int grib_f_get_real8(int* gid, char* key, double* val, int len){ - return grib_f_get_real8_( gid, key, val, len); + return grib_f_get_real8_( gid, key, val, len); } int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int len){ @@ -3026,10 +3013,10 @@ int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int l } int grib_f_get_real8_element__(int* gid, char* key, int* index,double* val, int len){ - return grib_f_get_real8_element_( gid, key, index, val,len); + return grib_f_get_real8_element_( gid, key, index, val,len); } int grib_f_get_real8_element(int* gid, char* key, int* index,double* val, int len){ - return grib_f_get_real8_element_( gid, key, index, val,len); + return grib_f_get_real8_element_( gid, key, index, val,len); } int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int *size, int len){ @@ -3043,10 +3030,10 @@ int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int } int grib_f_get_real8_elements__(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); + return grib_f_get_real8_elements_( gid, key, index, val,len,size); } int grib_f_get_real8_elements(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); + return grib_f_get_real8_elements_( gid, key, index, val,len,size); } /*****************************************************************************/ @@ -3183,17 +3170,17 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) } } int grib_f_get_real8_array__(int* gid, char* key, double*val, int* size, int len){ - return grib_f_get_real8_array_( gid, key, val, size, len); + return grib_f_get_real8_array_( gid, key, val, size, len); } int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ - return grib_f_get_real8_array_( gid, key, val, size, len); + return grib_f_get_real8_array_( gid, key, val, size, len); } int grib_f_set_force_real8_array__(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_force_real8_array_( gid, key, val, size, len); + return grib_f_set_force_real8_array_( gid, key, val, size, len); } int grib_f_set_force_real8_array(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_force_real8_array_( gid, key, val, size, len); + return grib_f_set_force_real8_array_( gid, key, val, size, len); } int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, int len){ @@ -3202,10 +3189,9 @@ int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, in char buf[1024]; size_t lsize = *size; - if(!h) return GRIB_INVALID_GRIB; + if(!h) return GRIB_INVALID_GRIB; return grib_set_force_double_array(h, cast_char(buf,key,len), val, lsize); - } /*****************************************************************************/ @@ -3220,10 +3206,10 @@ int grib_f_set_real8_array_(int* gid, char* key, double*val, int* size, int len) return grib_set_double_array(h, cast_char(buf,key,len), val, lsize); } int grib_f_set_real8_array__(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_real8_array_( gid, key, val, size, len); + return grib_f_set_real8_array_( gid, key, val, size, len); } int grib_f_set_real8_array(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_real8_array_( gid, key, val, size, len); + return grib_f_set_real8_array_( gid, key, val, size, len); } /*****************************************************************************/ @@ -3255,12 +3241,11 @@ int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } - int grib_f_get_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_get_string_array_( gid, key, val,nvals,slen,len); + return grib_f_get_string_array_( gid, key, val,nvals,slen,len); } int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_get_string_array_( gid, key, val, nvals, slen, len); + return grib_f_get_string_array_( gid, key, val, nvals, slen, len); } /*****************************************************************************/ @@ -3284,7 +3269,6 @@ int codes_f_bufr_copy_data(int* gid1,int* gid2){ return codes_f_bufr_copy_data_(gid1, gid2); } - /*****************************************************************************/ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len) { @@ -3317,12 +3301,11 @@ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } - int grib_f_set_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_set_string_array_( gid, key, val,nvals,slen,len); + return grib_f_set_string_array_( gid, key, val,nvals,slen,len); } int grib_f_set_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_set_string_array_( gid, key, val, nvals, slen, len); + return grib_f_set_string_array_( gid, key, val, nvals, slen, len); } /*****************************************************************************/ @@ -3343,12 +3326,11 @@ int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){ return err; } - -int grib_f_get_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); +int grib_f_get_string__(int* gid, char* key, char* val, int len, int len2){ + return grib_f_get_string_( gid, key, val, len, len2); } -int grib_f_get_string(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); +int grib_f_get_string(int* gid, char* key, char* val, int len, int len2){ + return grib_f_get_string_( gid, key, val, len, len2); } static int is_all_spaces(const char *s) @@ -3359,6 +3341,8 @@ static int is_all_spaces(const char *s) } return 1; } + +/*****************************************************************************/ int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ grib_handle *h = get_handle(*gid); @@ -3379,12 +3363,11 @@ int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ return grib_set_string(h, cast_char(buf,key,len), val_str, &lsize); } - int grib_f_set_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); + return grib_f_set_string_( gid, key, val, len, len2); } int grib_f_set_string(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); + return grib_f_set_string_( gid, key, val, len, len2); } /*****************************************************************************/ @@ -3417,7 +3400,6 @@ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_ grib_context_free(h->context,lon8); return err; - } int grib_f_get_data_real4__(int* gid,float* lats, float* lons,float* values,size_t* size) { return grib_f_get_data_real4_(gid,lats,lons,values,size); @@ -3426,8 +3408,8 @@ int grib_f_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t return grib_f_get_data_real4_(gid,lats,lons,values,size); } -int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) { +int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) { grib_handle *h = get_handle(*gid); return grib_get_data(h,lats,lons,values); @@ -3443,10 +3425,8 @@ int grib_f_get_data_real8(int* gid,double* lats, double* lons,double* values,siz int grib_f_get_message_size_(int* gid, size_t *len){ grib_handle *h = get_handle(*gid); if(!h) return GRIB_INVALID_GRIB; - *len = h->buffer->ulength; return GRIB_SUCCESS; - } int grib_f_get_message_size__(int* gid, size_t *len){ return grib_f_get_message_size_( gid, len); @@ -3467,18 +3447,15 @@ int grib_f_copy_message_(int* gid, void* mess,size_t* len){ return GRIB_BUFFER_TOO_SMALL; } - memcpy(mess,h->buffer->data,h->buffer->ulength); *len=h->buffer->ulength; return GRIB_SUCCESS; - } - int grib_f_copy_message__(int* gid, void* mess,size_t* len){ - return grib_f_copy_message_( gid, mess, len); + return grib_f_copy_message_( gid, mess, len); } int grib_f_copy_message(int* gid, void* mess,size_t* len){ - return grib_f_copy_message_( gid, mess, len); + return grib_f_copy_message_( gid, mess, len); } /*****************************************************************************/ @@ -3495,11 +3472,10 @@ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ bufcall,bufstr,grib_get_error_message(*err)); exit(*err); } - -void grib_f_check__(int* err,char* call, char* key, int lencall, int lenkey){ +void grib_f_check__(int* err,char* call, char* key, int lencall, int lenkey){ grib_f_check_(err,call,key,lencall,lenkey); } -void grib_f_check(int* err,char* call, char* key, int lencall, int lenkey){ +void grib_f_check(int* err,char* call, char* key, int lencall, int lenkey){ grib_f_check_(err,call,key,lencall,lenkey); } @@ -3524,7 +3500,6 @@ int grib_f_write_(int* gid, int* fid) { int grib_f_write__(int* gid, int* fid) { return grib_f_write_(gid,fid); } - int grib_f_write(int* gid, int* fid) { return grib_f_write_(gid,fid); } @@ -3539,16 +3514,14 @@ int grib_f_multi_write_(int* gid, int* fid) { return grib_multi_handle_write(h,f); } - - int grib_f_multi_write__(int* gid, int* fid) { return grib_f_multi_write_(gid,fid); } - int grib_f_multi_write(int* gid, int* fid) { return grib_f_multi_write_(gid,fid); } + int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { grib_handle *h = get_handle(*ingid); grib_multi_handle *mh = get_multi_handle(*mgid); @@ -3562,16 +3535,13 @@ int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { return grib_multi_handle_append(h,*sec,mh); } - int grib_f_multi_append(int* ingid, int* sec,int* mgid) { return grib_f_multi_append_(ingid, sec, mgid); } - int grib_f_multi_append__(int* ingid, int* sec,int* mgid) { return grib_f_multi_append_(ingid, sec, mgid); } - /*****************************************************************************/ int codes_f_bufr_multi_element_constant_arrays_on_() { codes_bufr_multi_element_constant_arrays_on(NULL); @@ -3603,27 +3573,30 @@ int grib_f_set_definitions_path_(char* path, int len){ grib_context_set_definitions_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_definitions_path__(char* path, int len){ +int grib_f_set_definitions_path__(char* path, int len){ return grib_f_set_definitions_path_(path, len); } -int grib_f_set_definitions_path(char* path, int len){ +int grib_f_set_definitions_path(char* path, int len){ return grib_f_set_definitions_path_(path, len); } +/*****************************************************************************/ int grib_f_set_samples_path_(char* path, int len){ grib_context* c = grib_context_get_default(); char buf[1024]; grib_context_set_samples_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_samples_path__(char* path, int len){ +int grib_f_set_samples_path__(char* path, int len){ return grib_f_set_samples_path_(path, len); } -int grib_f_set_samples_path(char* path, int len){ +int grib_f_set_samples_path(char* path, int len){ return grib_f_set_samples_path_(path, len); } + +/*****************************************************************************/ int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } @@ -3634,6 +3607,8 @@ int grib_f_julian_to_datetime__(double* jd,long* year,long* month,long* day,long return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } + +/*****************************************************************************/ int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } @@ -3643,4 +3618,3 @@ int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long int grib_f_datetime_to_julian__(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } - From c077fa5dc5e85d27c2f5b950751b59baa34953f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Dec 2023 12:47:26 +0000 Subject: [PATCH 181/469] ECC-1738: BUFR: Better error message for invalid sequence --- src/action_class_hash_array.cc | 11 +++++++++++ src/eccodes_prototypes.h | 1 + src/grib_accessor_class_hash_array.cc | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/src/action_class_hash_array.cc b/src/action_class_hash_array.cc index 5ee938395..45223de76 100644 --- a/src/action_class_hash_array.cc +++ b/src/action_class_hash_array.cc @@ -25,6 +25,7 @@ MEMBERS = char* masterDir MEMBERS = char* localDir MEMBERS = char* ecmfDir + MEMBERS = char* full_path MEMBERS = int nofail END_CLASS_DEF @@ -56,6 +57,7 @@ typedef struct grib_action_hash_array { char* masterDir; char* localDir; char* ecmfDir; + char* full_path; int nofail; } grib_action_hash_array; @@ -159,6 +161,8 @@ grib_action* grib_action_create_hash_array(grib_context* context, else a->ecmfDir = NULL; + a->full_path = NULL; + if (defaultkey) act->defaultkey = grib_context_strdup_persistent(context, defaultkey); @@ -296,6 +300,7 @@ static grib_hash_array_value* get_hash_array_impl(grib_handle* h, grib_action* a self->basename, master, ecmf, local, context->grib_definition_files_path); return NULL; } + self->full_path = full; grib_context_log(h->context, GRIB_LOG_DEBUG, "Loading hash_array %s from %s", ((grib_action*)self)->name, full); @@ -324,3 +329,9 @@ grib_hash_array_value* get_hash_array(grib_handle* h, grib_action* a) GRIB_MUTEX_UNLOCK(&mutex); return result; } + +const char* get_hash_array_full_path(grib_action* a) +{ + grib_action_hash_array* self = (grib_action_hash_array*)a; + return self->full_path; +} diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 3c32efe98..c6e6e9e17 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -74,6 +74,7 @@ int get_concept_condition_string(grib_handle* h, const char* key, const char* va /* action_class_hash_array.cc*/ grib_action* grib_action_create_hash_array(grib_context* context, const char* name, grib_hash_array_value* hash_array, const char* basename, const char* name_space, const char* defaultkey, const char* masterDir, const char* localDir, const char* ecmfDir, int flags, int nofail); grib_hash_array_value* get_hash_array(grib_handle* h, grib_action* a); +const char* get_hash_array_full_path(grib_action* a); /* action_class_set.cc*/ grib_action* grib_action_create_set(grib_context* context, const char* name, grib_expression* expression, int nofail); diff --git a/src/grib_accessor_class_hash_array.cc b/src/grib_accessor_class_hash_array.cc index 987e68481..d191a5232 100644 --- a/src/grib_accessor_class_hash_array.cc +++ b/src/grib_accessor_class_hash_array.cc @@ -203,6 +203,11 @@ static grib_hash_array_value* find_hash_value(grib_accessor* a, int* err) grib_context_log(a->context, GRIB_LOG_ERROR, "hash_array: no match for %s=%s", a->creator->name, self->key); + const char* full_path = get_hash_array_full_path(a->creator); + if (full_path) { + grib_context_log(a->context, GRIB_LOG_ERROR, "hash_array: file path = %s", full_path); + } + grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Check the key 'masterTablesVersionNumber'"); return NULL; } return ha_ret; From ace2a0a8c14cfd68420d18e6ee01f0175618475c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Dec 2023 19:41:06 +0000 Subject: [PATCH 182/469] ECC-1739: BUFR: Assertion failure decoding with invalid masterTablesVersionNumber --- src/action_class_hash_array.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/action_class_hash_array.cc b/src/action_class_hash_array.cc index 45223de76..b01077870 100644 --- a/src/action_class_hash_array.cc +++ b/src/action_class_hash_array.cc @@ -286,6 +286,12 @@ static grib_hash_array_value* get_hash_array_impl(grib_handle* h, grib_action* a full = grib_context_full_defs_path(context, master); if (c) { + if (!full) { + grib_context_log(context, GRIB_LOG_ERROR, + "unable to find definition file %s in %s:%s:%s\nDefinition files path=\"%s\"", + self->basename, master, ecmf, local, context->grib_definition_files_path); + return NULL; + } grib_hash_array_value* last = c; while (last->next) last = last->next; From a8c84c249be78942613cc506d6181b6fec7e1f89 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Dec 2023 19:46:57 +0000 Subject: [PATCH 183/469] ECC-1739: Test --- tests/bufr_set.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index b0f901d95..f8d78aba5 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -179,7 +179,8 @@ result=`${tools_dir}/bufr_get -p ident $fBufrTmp` #----------------------------------------------------------- # ECC-1359: string that can be converted to an integer # ---------------------------------------------------------- -${tools_dir}/bufr_set -s messageLength:s=333 $ECCODES_SAMPLES_PATH/BUFR4_local.tmpl $fBufrTmp +sample=$ECCODES_SAMPLES_PATH/BUFR4_local.tmpl +${tools_dir}/bufr_set -s messageLength:s=333 $sample $fBufrTmp result=`${tools_dir}/bufr_get -p messageLength $fBufrTmp` [ "$result" = "333" ] @@ -187,7 +188,8 @@ result=`${tools_dir}/bufr_get -p messageLength $fBufrTmp` #----------------------------------------------------------- # Invalid masterTablesVersionNumber #----------------------------------------------------------- -${tools_dir}/bufr_set -s masterTablesVersionNumber=255 $ECCODES_SAMPLES_PATH/BUFR4.tmpl $fBufrTmp +sample=$ECCODES_SAMPLES_PATH/BUFR4.tmpl +${tools_dir}/bufr_set -s masterTablesVersionNumber=255 $sample $fBufrTmp set +e ${tools_dir}/bufr_dump -p $fBufrTmp 2>>$fLog 1>>$fLog if [ $? -eq 0 ]; then @@ -198,6 +200,16 @@ set -e grep -q "unable to find definition file sequence.def.*bufr/tables/0/local/0/98/0/sequence.def" $fLog grep -q "ECCODES ERROR.*unable to get hash value for sequences" $fLog +# ECC-1739 +sample=$ECCODES_SAMPLES_PATH/BUFR3.tmpl +${tools_dir}/bufr_set -s masterTablesVersionNumber=255,localTablesVersionNumber=1 $sample $fBufrTmp +set +e +${tools_dir}/bufr_dump -p $fBufrTmp >$fLog 2>&1 +status=$? +set -e +grep -q "ECCODES ERROR.*unable to get hash value for sequences" $fLog + + # Clean up rm -f $fLog From f405de1ee819ea7849048bd7dc80f0a2dca89de2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 12:46:29 +0000 Subject: [PATCH 184/469] Tools: Refactoring --- tools/gts_compare.cc | 6 ++--- tools/metar_compare.cc | 58 +++--------------------------------------- 2 files changed, 7 insertions(+), 57 deletions(-) diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index c17e25c3d..fee4f8e00 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -690,7 +690,7 @@ static int compare_all_dump_keys(grib_handle* h1, grib_handle* h2, grib_runtime_ iter = grib_keys_iterator_new(h1, 0, NULL); if (!iter) { - printf("ERROR: unable to get iterator\n"); + fprintf(stderr, "Error: unable to get keys iterator\n"); exit(1); } @@ -728,7 +728,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get iterator\n"); + fprintf(stderr, "Error: unable to get iterator\n"); exit(1); } while (grib_keys_iterator_next(iter)) { @@ -789,7 +789,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get iterator for %s\n", options->compare[i].name); + fprintf(stderr, "Error: unable to get iterator for %s\n", options->compare[i].name); exit(1); } while (grib_keys_iterator_next(iter)) { diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index 4a9024483..a1b3af529 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -21,8 +21,6 @@ grib_option grib_options[] = { { "a", 0, "-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n", 0, 1, 0 }, { "R:", 0, 0, 0, 1, 0 }, { "A:", 0, 0, 0, 1, 0 }, - { "P", 0, "Compare data values using the packing error as tolerance.\n", 0, 1, 0 }, - { "t:", "factor", "Compare data values using factor multiplied by the tolerance specified in options -P -R -A.\n", 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "f", 0, 0, 0, 1, 0 }, { "F", 0, 0, 1, 0, 0 }, @@ -38,7 +36,7 @@ int grib_options_count = sizeof(grib_options) / sizeof(grib_option); const char* tool_description = "Compare METAR messages contained in two files." "\n\tIf some differences are found it fails returning an error code." - "\n\tFloating-point values are compared exactly by default, different tolerance can be defined see -P -A -R." + "\n\tFloating-point values are compared exactly by default, different tolerance can be defined see -A -R." "\n\tDefault behaviour: absolute error=0, bit-by-bit compare, same order in files."; const char* tool_name = "metar_compare"; @@ -70,7 +68,6 @@ struct grib_error static grib_error* error_summary; static compare_double_proc compare_double; static double global_tolerance = 0; -static int packingCompare = 0; static grib_string_list* blocklist = 0; static int compareAbsolute = 1; @@ -278,10 +275,6 @@ int grib_tool_init(grib_runtime_options* options) global_tolerance = atof(grib_options_get_option("A:")); } } - if (grib_options_on("P")) { - packingCompare = 1; - compare_double = &compare_double_absolute; - } if (grib_options_on("t:")) tolerance_factor = atof(grib_options_get_option("t:")); @@ -467,7 +460,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h double *dval1 = NULL, *dval2 = NULL; long *lval1 = NULL, *lval2 = NULL; double maxdiff = 0; - double packingError1 = 0, packingError2 = 0; double value_tolerance = 0; grib_context* c = h1->context; @@ -662,37 +654,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h dval2 = (double*)grib_context_malloc(h2->context, len2 * sizeof(double)); value_tolerance = global_tolerance; - if (!grib_inline_strcmp(name, "packedValues") || !grib_inline_strcmp(name, "values") || !grib_inline_strcmp(name, "codedValues")) { - packingError1 = 0; - packingError2 = 0; - err1 = grib_get_double(h1, "packingError", &packingError1); - err2 = grib_get_double(h2, "packingError", &packingError2); - if (packingCompare && !err1 && !err2) { - value_tolerance = packingError1 > packingError2 ? packingError1 : packingError2; - compare_double = &compare_double_absolute; - compareAbsolute = 1; - } - } - else if (!grib_inline_strcmp(name, "unpackedValues")) { - packingError1 = 0; - packingError2 = 0; - err1 = grib_get_double(h1, "unpackedError", &packingError1); - err2 = grib_get_double(h2, "unpackedError", &packingError2); - if (packingCompare && !err1 && !err2) { - value_tolerance = packingError1 > packingError2 ? packingError1 : packingError2; - compare_double = &compare_double_absolute; - compareAbsolute = 1; - } - } - else if (!grib_inline_strcmp(name, "referenceValue")) { - packingError1 = 0; - packingError2 = 0; - err1 = grib_get_double(h1, "referenceValueError", &packingError1); - err2 = grib_get_double(h2, "referenceValueError", &packingError2); - if (!err1 && !err2) { - value_tolerance = packingError1 > packingError2 ? packingError1 : packingError2; - } - } if (!compareAbsolute) { for (i = 0; i < options->tolerance_count; i++) { @@ -759,17 +720,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h printf("\n\tmax diff. element %d: %.20e %.20e", imaxdiff, dval1[imaxdiff], dval2[imaxdiff]); printf("\n\ttolerance=%.16e", value_tolerance); - if (packingError2 != 0 || packingError1 != 0) - printf(" packingError: [%g] [%g]", packingError1, packingError2); - - if (!grib_inline_strcmp(name, "packedValues") || !grib_inline_strcmp(name, "values") || !grib_inline_strcmp(name, "codedValues")) { - double max1, min1, max2, min2; - grib_get_double(h1, "max", &max1); - grib_get_double(h1, "min", &min1); - grib_get_double(h2, "max", &max2); - grib_get_double(h2, "min", &min2); - printf("\n\tvalues max= [%g] [%g] min= [%g] [%g]", max1, max2, min1, min2); - } printf("\n"); } else { @@ -871,7 +821,7 @@ static int compare_all_dump_keys(grib_handle* h1, grib_handle* h2, grib_runtime_ grib_keys_iterator* iter = grib_keys_iterator_new(h1, 0, NULL); if (!iter) { - printf("ERROR: unable to get iterator\n"); + fprintf(stderr, "Error: unable to get keys iterator\n"); exit(1); } @@ -909,7 +859,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get iterator\n"); + fprintf(stderr, "Error: unable to get keys iterator\n"); exit(1); } while (grib_keys_iterator_next(iter)) { @@ -950,7 +900,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get iterator for %s\n", options->compare[i].name); + fprintf(stderr, "Error: unable to get keys iterator for %s\n", options->compare[i].name); exit(1); } while (grib_keys_iterator_next(iter)) { From d3ff8fc08627d70df998edd6cbe229633dd009e9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 12:54:52 +0000 Subject: [PATCH 185/469] Tools: Refactoring --- tools/bufr_compare.cc | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index 268d7ac8e..dd2a897d7 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -24,7 +24,6 @@ grib_option grib_options[] = { { "H", 0, "Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n", 0, 1, 0 }, { "R:", 0, 0, 0, 1, 0 }, { "A:", 0, 0, 0, 1, 0 }, - /* {"P",0,"Compare data values using the packing error as tolerance.\n",0,1,0},*/ { "t:", "factor", "Compare data values using factor multiplied by the tolerance specified in options -R -A.\n", 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "f", 0, 0, 0, 1, 0 }, @@ -74,7 +73,6 @@ struct grib_error static grib_error* error_summary; static compare_double_proc compare_double; static double global_tolerance = 0; -static int packingCompare = 0; static grib_string_list* blocklist = 0; static grib_string_list* keys_list = NULL; /* Used to determine rank of key */ static int isLeafKey = 0; /* 0 if key is top-level, 1 if key has no children attributes */ @@ -339,10 +337,6 @@ int grib_tool_init(grib_runtime_options* options) global_tolerance = atof(grib_options_get_option("A:")); } } - if (grib_options_on("P")) { - packingCompare = 1; - compare_double = &compare_double_absolute; - } if (grib_options_on("t:")) tolerance_factor = atof(grib_options_get_option("t:")); @@ -708,7 +702,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g double *dval1 = NULL, *dval2 = NULL; long *lval1 = NULL, *lval2 = NULL; double maxdiff = 0; - double packingError1 = 0, packingError2 = 0; double value_tolerance = 0; grib_context* c = handle1->context; const char* first_str = (handles_swapped == 0 ? "1st" : "2nd"); @@ -1020,28 +1013,13 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g save_error(c, name); } if (err1 == GRIB_SUCCESS && err2 == GRIB_SUCCESS && len1 == len2) { - int imaxdiff; + int imaxdiff = 0; double diff; double *pv1, *pv2; maxdiff = 0; - imaxdiff = 0; countdiff = 0; pv1 = dval1; pv2 = dval2; - /* if (isangle) { - dnew1 = *dval1; - dnew2 = *dval2; - pv1 = &dnew1; - pv2 = &dnew2; - if (*dval1 < 0) - dnew1 += 360.0; - if (*dval2 < 0) - dnew2 += 360.0; - if (*dval1 > 360) - dnew1 -= 360.0; - if (*dval2 > 360) - dnew2 -= 360.0; - } */ value_tolerance *= tolerance_factor; if (verbose) printf(" (%d values) tolerance=%g\n", (int)len1, value_tolerance); @@ -1080,8 +1058,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g grib_context_free(c, svalA); grib_context_free(c, svalB); } - if (packingError2 != 0 || packingError1 != 0) - printf(" packingError: [%g] [%g]", packingError1, packingError2); printf("\n"); } From d670455ff0818313a42919bc86645d5f7e2bd08e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 13:05:12 +0000 Subject: [PATCH 186/469] Tools: Refactoring --- tools/bufr_compare.cc | 5 ++--- tools/grib_compare.cc | 9 +++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index dd2a897d7..294a1da26 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -1311,7 +1311,7 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(handle1, 0, options->compare[i].name); if (!iter) { - grib_context_log(handle1->context, GRIB_LOG_ERROR, "unable to get iterator"); + grib_context_log(handle1->context, GRIB_LOG_ERROR, "unable to create the BUFR keys iterator"); exit(1); } while (grib_keys_iterator_next(iter)) { @@ -1372,12 +1372,11 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt iter = grib_keys_iterator_new(handle1, 0, options->compare[i].name); if (!iter) { grib_context_log(handle1->context, GRIB_LOG_ERROR, - "ERROR: unable to get keys iterator for %s", options->compare[i].name); + "unable to create the BUFR keys iterator for %s", options->compare[i].name); exit(1); } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index a538f2a8c..9d99498fb 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -1227,7 +1227,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option h22 = grib_handle_new_from_partial_message(h1->context, msg2, size2); iter = grib_keys_iterator_new(h11, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); - if (!iter) { grib_context_log(context, GRIB_LOG_ERROR, "unable to create the GRIB keys iterator"); exit(1); @@ -1235,7 +1234,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; @@ -1258,7 +1256,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option int num_keys_in_namespace = 0; iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get keys iterator for namespace \"%s\".\n", options->compare[i].name); + grib_context_log(context, GRIB_LOG_ERROR, "unable to create the GRIB keys iterator for %s", options->compare[i].name); exit(1); } while (grib_keys_iterator_next(iter)) { @@ -1292,9 +1290,8 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option return 0; iter = grib_keys_iterator_new(h1, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); - if (!iter) { - printf("ERROR: unable to get keys iterator\n"); + grib_context_log(context, GRIB_LOG_ERROR, "unable to create the GRIB keys iterator"); exit(1); } @@ -1318,7 +1315,7 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (options->compare[i].type == CODES_NAMESPACE) { iter = grib_keys_iterator_new(h1, 0, options->compare[i].name); if (!iter) { - printf("ERROR: unable to get iterator for %s\n", options->compare[i].name); + fprintf(stderr, "Error: unable to get keys iterator for %s\n", options->compare[i].name); exit(1); } while (grib_keys_iterator_next(iter)) { From 21298e4489be568817039698f36553e9b672d5b8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 14:18:23 +0000 Subject: [PATCH 187/469] Tools: Increase coverage --- tests/metar_dump.sh | 7 +++---- tools/metar_dump.cc | 13 ++++--------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh index 03d73e08e..3be590228 100755 --- a/tests/metar_dump.sh +++ b/tests/metar_dump.sh @@ -34,11 +34,10 @@ metar_file=metar.txt f=$metar_file echo $f >> $fLog -${tools_dir}/metar_dump $f >> $fLog +${tools_dir}/metar_dump -w count=1 $f >> $fLog +${tools_dir}/metar_dump -Dat $f >> $fLog +${tools_dir}/metar_dump -OH $f >> $fLog -#------------------------------------------- -# Test "-p" switch -#------------------------------------------- ref_dump=$f".dump.ref" res_dump=$f".dump.test" REDIRECT=/dev/null diff --git a/tools/metar_dump.cc b/tools/metar_dump.cc index 66bf48959..f992d1f36 100644 --- a/tools/metar_dump.cc +++ b/tools/metar_dump.cc @@ -47,7 +47,7 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { - int opt = grib_options_on("C") + grib_options_on("O") + grib_options_on("D"); + int opt = grib_options_on("O") + grib_options_on("D"); options->dump_mode = (char*)"default"; @@ -66,16 +66,11 @@ int grib_tool_init(grib_runtime_options* options) options->dump_flags = GRIB_DUMP_FLAG_VALUES | GRIB_DUMP_FLAG_READ_ONLY; } - if (grib_options_on("J")) { + if (grib_options_on("j")) { options->dump_mode = (char*)"json"; options->dump_flags = GRIB_DUMP_FLAG_VALUES | GRIB_DUMP_FLAG_READ_ONLY; } - if (grib_options_on("X")) { - options->dump_mode = (char*)"xml"; - options->dump_flags = GRIB_DUMP_FLAG_VALUES | GRIB_DUMP_FLAG_READ_ONLY; - } - if (grib_options_on("a")) options->dump_flags |= GRIB_DUMP_FLAG_ALIASES; @@ -104,7 +99,7 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi if (!options->current_infile->name) return 0; snprintf(tmp, 1024, "FILE: %s ", options->current_infile->name); - if (!grib_options_on("C") && !grib_options_on("J") && !grib_options_on("X")) + if ( !grib_options_on("C") && !grib_options_on("j") ) fprintf(stdout, "***** %s\n", tmp); return 0; } @@ -123,7 +118,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) grib_set_flag(h, options->print_keys[i].name, GRIB_ACCESSOR_FLAG_DUMP); snprintf(tmp, 1024, "MESSAGE %d ( length=%ld )", options->handle_count, length); - if (!grib_options_on("C") && !grib_options_on("X") && !grib_options_on("J")) + if (!grib_options_on("C") && !grib_options_on("j")) fprintf(stdout, "#============== %-38s ==============\n", tmp); if (!strcmp(options->dump_mode, "default")) { GRIB_CHECK_NOLINE(grib_get_string(h, "identifier", identifier, &idlen), 0); From 72365c5bb389193deb149ee3d9c7a4f6eacbde5d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 15:12:24 +0000 Subject: [PATCH 188/469] Initialise buffers --- src/grib_accessor_class_message_copy.cc | 1 + src/grib_expression_class_string_compare.cc | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_message_copy.cc b/src/grib_accessor_class_message_copy.cc index 4b3df8857..30806b163 100644 --- a/src/grib_accessor_class_message_copy.cc +++ b/src/grib_accessor_class_message_copy.cc @@ -133,6 +133,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (v[i] > 126) v[i] = 32; memcpy(val, grib_handle_of_accessor(a)->buffer->data, slen); + val[i] = 0; *len = slen; diff --git a/src/grib_expression_class_string_compare.cc b/src/grib_expression_class_string_compare.cc index 8ee196c2e..1c6202b23 100644 --- a/src/grib_expression_class_string_compare.cc +++ b/src/grib_expression_class_string_compare.cc @@ -100,9 +100,9 @@ GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b) static int evaluate_long(grib_expression* g, grib_handle* h, long* lres) { int ret = 0; - char b1[1024]; + char b1[1024] = {0,}; size_t l1 = sizeof(b1); - char b2[1024]; + char b2[1024] = {0,}; size_t l2 = sizeof(b2); const char* v1 = NULL; const char* v2 = NULL; From 45dd0378d4b3bf33a56a6e6cc6028b3e67d1778a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 23 Dec 2023 18:23:42 +0000 Subject: [PATCH 189/469] Tools: Test metar_filter --- tests/CMakeLists.txt | 1 + tests/gts_ls.sh | 10 +++++++++- tests/metar_filter.sh | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100755 tests/metar_filter.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0db9fa8af..426ed02e2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -255,6 +255,7 @@ if( HAVE_BUILD_TOOLS ) taf pseudo_diag metar_ls + metar_filter metar_get metar_dump metar_compare diff --git a/tests/gts_ls.sh b/tests/gts_ls.sh index ca6fbf29e..ce6683ea1 100755 --- a/tests/gts_ls.sh +++ b/tests/gts_ls.sh @@ -52,10 +52,18 @@ echo 'print "[theMessage]";' | ${tools_dir}/gts_filter - $gts_file ${tools_dir}/gts_ls -wcount=1 -p theMessage $f - gts_file=${data_dir}/gts.grib result=$( ${tools_dir}/grib_ls -wcount=1 -p gts_CCCC -g $gts_file ) +# Bad filter +set +e +${tools_dir}/gts_filter a_non_existent_filter_file $gts_file > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Cannot include file" $fLog + + # Clean up rm -f $fLog $res_ls diff --git a/tests/metar_filter.sh b/tests/metar_filter.sh new file mode 100755 index 000000000..9699b1ec8 --- /dev/null +++ b/tests/metar_filter.sh @@ -0,0 +1,38 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="metar_filter_test" + +tempFilt="temp.$label.filt" +tempMetar="temp.$label.metar" +tempOut="temp.$label.txt" +tempRef="temp.$label.ref" + +input=${data_dir}/metar/metar.txt + +cat > $tempFilt < $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Cannot include file" $tempOut + + +# Clean up +rm -f $tempMetar $tempFilt $tempOut $tempRef From 0e6a0083b2b5f47510d17ccfdba1682818834c7f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Dec 2023 13:54:15 +0000 Subject: [PATCH 190/469] Fortran: Do we really need the dunder methods? --- fortran/grib_fortran.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index c8d93bd1c..1dddaac9d 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -3428,22 +3428,24 @@ int grib_f_get_message_size_(int* gid, size_t *len){ *len = h->buffer->ulength; return GRIB_SUCCESS; } +/* int grib_f_get_message_size__(int* gid, size_t *len){ return grib_f_get_message_size_( gid, len); } +*/ int grib_f_get_message_size(int* gid, size_t *len){ return grib_f_get_message_size_( gid, len); } /*****************************************************************************/ -int grib_f_copy_message_(int* gid, void* mess,size_t* len){ +int grib_f_copy_message_(int* gid, void* mess, size_t* len){ grib_handle *h = get_handle(*gid); if(!h) return GRIB_INVALID_GRIB; if(*len < h->buffer->ulength) { grib_context_log(h->context,GRIB_LOG_ERROR, - "grib_copy_message: buffer=%ld message size=%ld",*len,h->buffer->ulength); + "grib_copy_message: buffer=%zu message size=%zu", *len, h->buffer->ulength); return GRIB_BUFFER_TOO_SMALL; } @@ -3451,10 +3453,10 @@ int grib_f_copy_message_(int* gid, void* mess,size_t* len){ *len=h->buffer->ulength; return GRIB_SUCCESS; } -int grib_f_copy_message__(int* gid, void* mess,size_t* len){ +int grib_f_copy_message__(int* gid, void* mess, size_t* len){ return grib_f_copy_message_( gid, mess, len); } -int grib_f_copy_message(int* gid, void* mess,size_t* len){ +int grib_f_copy_message(int* gid, void* mess, size_t* len){ return grib_f_copy_message_( gid, mess, len); } @@ -3472,9 +3474,11 @@ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ bufcall,bufstr,grib_get_error_message(*err)); exit(*err); } +/* void grib_f_check__(int* err,char* call, char* key, int lencall, int lenkey){ grib_f_check_(err,call,key,lencall,lenkey); } +*/ void grib_f_check(int* err,char* call, char* key, int lencall, int lenkey){ grib_f_check_(err,call,key,lencall,lenkey); } @@ -3514,9 +3518,11 @@ int grib_f_multi_write_(int* gid, int* fid) { return grib_multi_handle_write(h,f); } +/* int grib_f_multi_write__(int* gid, int* fid) { return grib_f_multi_write_(gid,fid); } +*/ int grib_f_multi_write(int* gid, int* fid) { return grib_f_multi_write_(gid,fid); } @@ -3580,7 +3586,6 @@ int grib_f_set_definitions_path(char* path, int len){ return grib_f_set_definitions_path_(path, len); } - /*****************************************************************************/ int grib_f_set_samples_path_(char* path, int len){ grib_context* c = grib_context_get_default(); @@ -3595,26 +3600,26 @@ int grib_f_set_samples_path(char* path, int len){ return grib_f_set_samples_path_(path, len); } - /*****************************************************************************/ -int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { +int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } -int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { +int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } int grib_f_julian_to_datetime__(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } - /*****************************************************************************/ -int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { - return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); -} int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } +/* int grib_f_datetime_to_julian__(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } +*/ +int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { + return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); +} From b4186bbb483e9d533d0623a7a65a55efe9361ddb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Dec 2023 14:46:39 +0000 Subject: [PATCH 191/469] Testing: Split bufr_filter tests --- tests/CMakeLists.txt | 1 + tests/bufr_filter_fail.sh | 94 +++++++++++++++++++++++++++++++++++++++ tests/bufr_filter_misc.sh | 82 +--------------------------------- 3 files changed, 97 insertions(+), 80 deletions(-) create mode 100755 tests/bufr_filter_fail.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 426ed02e2..01c2c59b2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -188,6 +188,7 @@ if( HAVE_BUILD_TOOLS ) bufr_get bufr_operators bufr_filter_misc + bufr_filter_fail bufr_filter_extract_subsets bufr_filter_extract_datetime bufr_filter_extract_area diff --git a/tests/bufr_filter_fail.sh b/tests/bufr_filter_fail.sh new file mode 100755 index 000000000..74640fd36 --- /dev/null +++ b/tests/bufr_filter_fail.sh @@ -0,0 +1,94 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="bufr_filter_fail_test" + +cd ${data_dir}/bufr + +fBufrTmp=${label}".bufr.tmp" +fRules=${label}.filter +fLog=${label}".log" +tempErr=temp.$label.err + +#----------------------------------------------------------- +# Test: with nonexistent keys. +#----------------------------------------------------------- +cat > $fRules <> $fLog 1>> $fLog +if [ $? -eq 0 ]; then + echo "bufr_filter should have failed if key not found" >&2 + exit 1 +fi +set -e + +# Now repeat with -f option (do not exit on error) +${tools_dir}/codes_bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog + +#----------------------------------------------------------- +# Test: with not allowed key values +#----------------------------------------------------------- +cat > $fRules <> $fLog 1>> $fLog +if [ $? -eq 0 ]; then + echo "bufr_filter should have failed if key value is not allowed" >&2 + exit 1 +fi +set -e + +# Now repeat with -f option (do not exit on error) +${tools_dir}/codes_bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog + + +#----------------------------------------------------------- +# Test: with invalid string key +#----------------------------------------------------------- +cat > $fRules <> $fLog 1>> $fLog +if [ $? -eq 0 ]; then + echo "bufr_filter should have failed if string key is invalid" >&2 + exit 1 +fi +set -e + +# Bad filter +# ----------- +set +e +${tools_dir}/bufr_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/BUFR4.tmpl > $tempErr 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Cannot include file" $tempErr + + +# Clean up +rm -f $fLog $fRules $tempErr diff --git a/tests/bufr_filter_misc.sh b/tests/bufr_filter_misc.sh index 3e325ced1..a31cd2f0a 100755 --- a/tests/bufr_filter_misc.sh +++ b/tests/bufr_filter_misc.sh @@ -8,16 +8,15 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -set -x . ./include.ctest.sh -cd ${data_dir}/bufr - # Define a common label for all the tmp files label="bufr_filter_misc_test" tempErr=temp.$label.err +cd ${data_dir}/bufr + # Create log file fLog=${label}".log" rm -f $fLog @@ -518,75 +517,6 @@ diff ${f}.ref ${f}.log rm -f ${f}.ref ${f}.log -#----------------------------------------------------------- -# Test: with nonexistent keys. -#----------------------------------------------------------- -cat > $fRules <> $fLog -echo "file: $f" >> $fLog -${tools_dir}/codes_bufr_filter $fRules $f 2>> $fLog 1>> $fLog -if [ $? -eq 0 ]; then - echo "bufr_filter should have failed if key not found" >&2 - exit 1 -fi -set -e - -# Now repeat with -f option (do not exit on error) -${tools_dir}/codes_bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog - - -#----------------------------------------------------------- -# Test: with not allowed key values -#----------------------------------------------------------- -cat > $fRules <> $fLog -echo "file: $f" >> $fLog -${tools_dir}/codes_bufr_filter $fRules $f 2>> $fLog 1>> $fLog -if [ $? -eq 0 ]; then - echo "bufr_filter should have failed if key value is not allowed" >&2 - exit 1 -fi -set -e - -# Now repeat with -f option (do not exit on error) -${tools_dir}/codes_bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog - - -#----------------------------------------------------------- -# Test: with invalid string key -#----------------------------------------------------------- -cat > $fRules <> $fLog -${tools_dir}/codes_bufr_filter $fRules $f 2>> $fLog 1>> $fLog -if [ $? -eq 0 ]; then - echo "bufr_filter should have failed if string key is invalid" >&2 - exit 1 -fi -set -e - - #---------------------------------------------------- # Test: format specifier for integer keys #---------------------------------------------------- @@ -1340,14 +1270,6 @@ diff $fRef $fLog rm -f $fRef -# Bad filter -set +e -${tools_dir}/bufr_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/BUFR4.tmpl > $tempErr 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "Cannot include file" $tempErr - # Clean up rm -f ${f}.log ${f}.log.ref ${f}.out $fLog $fRules From c332b48a2c4a2a0063071a497ba02a71ad2f3d48 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Dec 2023 15:25:38 +0000 Subject: [PATCH 192/469] Fortran: Remove dunder methods --- fortran/grib_fortran.c | 413 +---------------------------------------- 1 file changed, 2 insertions(+), 411 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 1dddaac9d..8a4963e10 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -856,9 +856,6 @@ int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbyt return GRIB_INVALID_FILE; } } -int grib_f_read_any_headers_only_from_file__(int* fid, char* buffer, size_t* nbytes) { - return grib_f_read_any_headers_only_from_file_(fid,buffer,nbytes); -} int grib_f_read_any_headers_only_from_file(int* fid, char* buffer, size_t* nbytes) { return grib_f_read_any_headers_only_from_file_(fid,buffer,nbytes); } @@ -877,9 +874,6 @@ int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_read_any_from_file__(int* fid, void* buffer, size_t* nbytes) { - return grib_f_read_any_from_file_(fid,buffer,nbytes); -} int grib_f_read_any_from_file(int* fid, void* buffer, size_t* nbytes) { return grib_f_read_any_from_file_(fid,buffer,nbytes); } @@ -902,9 +896,6 @@ int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_write_file__(int* fid, void* buffer, size_t* nbytes) { - return grib_f_write_file_(fid,buffer,nbytes); -} int grib_f_write_file(int* fid, void* buffer, size_t* nbytes) { return grib_f_write_file_(fid,buffer,nbytes); } @@ -927,9 +918,6 @@ int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_read_file__(int* fid, void* buffer, size_t* nbytes) { - return grib_f_read_file_(fid,buffer,nbytes); -} int grib_f_read_file(int* fid, void* buffer, size_t* nbytes) { return grib_f_read_file_(fid,buffer,nbytes); } @@ -980,9 +968,6 @@ int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { } return ret; } -int grib_f_open_file__(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_(fid, name, op, lname, lop); -} int grib_f_open_file(int* fid, char* name , char* op, int lname, int lop){ return grib_f_open_file_(fid, name, op, lname, lop); } @@ -991,9 +976,6 @@ int grib_f_open_file(int* fid, char* name , char* op, int lname, int lop){ int grib_f_close_file_(int* fid){ return clear_file(*fid); } -int grib_f_close_file__(int* fid){ - return grib_f_close_file_(fid); -} int grib_f_close_file(int* fid){ return grib_f_close_file_(fid); } @@ -1022,18 +1004,11 @@ void grib_f_write_on_fail(int* gid) { void grib_f_write_on_fail_(int* gid) { grib_f_write_on_fail(gid); } -void grib_f_write_on_fail__(int* gid) { - grib_f_write_on_fail(gid); -} - /*****************************************************************************/ int grib_f_multi_support_on_(){ grib_multi_support_on(0); return GRIB_SUCCESS; } -int grib_f_multi_support_on__(){ - return grib_f_multi_support_on_(); -} int grib_f_multi_support_on(){ return grib_f_multi_support_on_(); } @@ -1042,9 +1017,6 @@ int grib_f_multi_support_off_(){ grib_multi_support_off(0); return GRIB_SUCCESS; } -int grib_f_multi_support_off__(){ - return grib_f_multi_support_off_(); -} int grib_f_multi_support_off(){ return grib_f_multi_support_off_(); } @@ -1164,9 +1136,6 @@ int grib_f_iterator_new_(int* gid,int* iterid,int* mode) { GRIB_MUTEX_UNLOCK(&iterator_mutex) return ret; } -int grib_f_iterator_new__(int* gid,int* iterid,int* mode) { - return grib_f_iterator_new_(gid,iterid,mode); -} int grib_f_iterator_new(int* gid,int* iterid,int* mode) { return grib_f_iterator_new_(gid,iterid,mode); } @@ -1176,9 +1145,6 @@ int grib_f_iterator_next_(int* iterid,double* lat,double* lon,double* value) { if (!iter) return GRIB_INVALID_ITERATOR; return grib_iterator_next(iter,lat,lon,value); } -int grib_f_iterator_next__(int* iterid,double* lat,double* lon,double* value) { - return grib_f_iterator_next_(iterid,lat,lon,value); -} int grib_f_iterator_next(int* iterid,double* lat,double* lon,double* value) { return grib_f_iterator_next_(iterid,lat,lon,value); } @@ -1186,9 +1152,6 @@ int grib_f_iterator_next(int* iterid,double* lat,double* lon,double* value) { int grib_f_iterator_delete_(int* iterid) { return clear_iterator(*iterid); } -int grib_f_iterator_delete__(int* iterid) { - return grib_f_iterator_delete_(iterid); -} int grib_f_iterator_delete(int* iterid) { return grib_f_iterator_delete_(iterid); } @@ -1221,9 +1184,6 @@ int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { GRIB_MUTEX_UNLOCK(&keys_iterator_mutex) return ret; } -int grib_f_keys_iterator_new__(int* gid,int* iterid,char* name_space,int len) { - return grib_f_keys_iterator_new_(gid,iterid,name_space,len); -} int grib_f_keys_iterator_new(int* gid,int* iterid,char* name_space,int len) { return grib_f_keys_iterator_new_(gid,iterid,name_space,len); } @@ -1235,9 +1195,6 @@ int grib_f_keys_iterator_next_(int* iterid) { return grib_keys_iterator_next(iter); } -int grib_f_keys_iterator_next__(int* iterid) { - return grib_f_keys_iterator_next_(iterid); -} int grib_f_keys_iterator_next(int* iterid) { return grib_f_keys_iterator_next_(iterid); } @@ -1246,9 +1203,6 @@ int grib_f_keys_iterator_next(int* iterid) { int grib_f_keys_iterator_delete_(int* iterid) { return clear_keys_iterator(*iterid); } -int grib_f_keys_iterator_delete__(int* iterid) { - return grib_f_keys_iterator_delete_(iterid); -} int grib_f_keys_iterator_delete(int* iterid) { return grib_f_keys_iterator_delete_(iterid); } @@ -1258,10 +1212,6 @@ int grib_f_gribex_mode_on_() { grib_gribex_mode_on(0); return GRIB_SUCCESS; } -int grib_f_gribex_mode_on__() { - grib_gribex_mode_on(0); - return GRIB_SUCCESS; -} int grib_f_gribex_mode_on() { grib_gribex_mode_on(0); return GRIB_SUCCESS; @@ -1271,10 +1221,6 @@ int grib_f_gribex_mode_off_() { grib_gribex_mode_off(0); return GRIB_SUCCESS; } -int grib_f_gribex_mode_off__() { - grib_gribex_mode_off(0); - return GRIB_SUCCESS; -} int grib_f_gribex_mode_off() { grib_gribex_mode_off(0); return GRIB_SUCCESS; @@ -1286,9 +1232,6 @@ int grib_f_skip_computed_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_COMPUTED); } -int grib_f_skip_computed__(int* iterid) { - return grib_f_skip_computed_(iterid); -} int grib_f_skip_computed(int* iterid) { return grib_f_skip_computed_(iterid); } @@ -1298,9 +1241,6 @@ int grib_f_skip_coded_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_CODED); } -int grib_f_skip_coded__(int* iterid) { - return grib_f_skip_coded_(iterid); -} int grib_f_skip_coded(int* iterid) { return grib_f_skip_coded_(iterid); } @@ -1310,9 +1250,6 @@ int grib_f_skip_edition_specific_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC); } -int grib_f_skip_edition_specific__(int* iterid) { - return grib_f_skip_edition_specific_(iterid); -} int grib_f_skip_edition_specific(int* iterid) { return grib_f_skip_edition_specific_(iterid); } @@ -1322,9 +1259,6 @@ int grib_f_skip_duplicates_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_DUPLICATES); } -int grib_f_skip_duplicates__(int* iterid) { - return grib_f_skip_duplicates_(iterid); -} int grib_f_skip_duplicates(int* iterid) { return grib_f_skip_duplicates_(iterid); } @@ -1334,9 +1268,6 @@ int grib_f_skip_read_only_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_READ_ONLY); } -int grib_f_skip_read_only__(int* iterid) { - return grib_f_skip_read_only_(iterid); -} int grib_f_skip_read_only(int* iterid) { return grib_f_skip_read_only_(iterid); } @@ -1346,9 +1277,6 @@ int grib_f_skip_function_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_FUNCTION); } -int grib_f_skip_function__(int* iterid) { - return grib_f_skip_function_(iterid); -} int grib_f_skip_function(int* iterid) { return grib_f_skip_function_(iterid); } @@ -1374,9 +1302,6 @@ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { return 0; } -int grib_f_keys_iterator_get_name__(int* kiter,char* name,int len) { - return grib_f_keys_iterator_get_name_(kiter,name,len); -} int grib_f_keys_iterator_get_name(int* kiter,char* name,int len) { return grib_f_keys_iterator_get_name_(kiter,name,len); } @@ -1388,9 +1313,6 @@ int grib_f_keys_iterator_rewind_(int* kiter) { if (!i) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_rewind(i); } -int grib_f_keys_iterator_rewind__(int* kiter) { - return grib_f_keys_iterator_rewind_(kiter); -} int grib_f_keys_iterator_rewind(int* kiter) { return grib_f_keys_iterator_rewind_(kiter); } @@ -1423,9 +1345,6 @@ int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { GRIB_MUTEX_UNLOCK(&keys_iterator_mutex) return ret; } -int codes_f_bufr_keys_iterator_new__(int* gid,int* iterid) { - return codes_f_bufr_keys_iterator_new_(gid,iterid); -} int codes_f_bufr_keys_iterator_new(int* gid,int* iterid) { return codes_f_bufr_keys_iterator_new_(gid,iterid); } @@ -1436,9 +1355,6 @@ int codes_f_bufr_keys_iterator_next_(int* iterid) { return codes_bufr_keys_iterator_next(iter); } -int codes_f_bufr_keys_iterator_next__(int* iterid) { - return codes_f_bufr_keys_iterator_next_(iterid); -} int codes_f_bufr_keys_iterator_next(int* iterid) { return codes_f_bufr_keys_iterator_next_(iterid); } @@ -1463,9 +1379,6 @@ int codes_f_bufr_keys_iterator_get_name_(int* iterid,char* name,int len) { return 0; } -int codes_f_bufr_keys_iterator_get_name__(int* kiter,char* name,int len) { - return codes_f_bufr_keys_iterator_get_name_(kiter,name,len); -} int codes_f_bufr_keys_iterator_get_name(int* kiter,char* name,int len) { return codes_f_bufr_keys_iterator_get_name_(kiter,name,len); } @@ -1476,9 +1389,6 @@ int codes_f_bufr_keys_iterator_rewind_(int* kiter) { if (!i) return GRIB_INVALID_KEYS_ITERATOR; return codes_bufr_keys_iterator_rewind(i); } -int codes_f_bufr_keys_iterator_rewind__(int* kiter) { - return codes_f_bufr_keys_iterator_rewind_(kiter); -} int codes_f_bufr_keys_iterator_rewind(int* kiter) { return codes_f_bufr_keys_iterator_rewind_(kiter); } @@ -1486,9 +1396,6 @@ int codes_f_bufr_keys_iterator_rewind(int* kiter) { int codes_f_bufr_keys_iterator_delete_(int* iterid) { return clear_bufr_keys_iterator(*iterid); } -int codes_f_bufr_keys_iterator_delete__(int* iterid) { - return codes_f_bufr_keys_iterator_delete_(iterid); -} int codes_f_bufr_keys_iterator_delete(int* iterid) { return codes_f_bufr_keys_iterator_delete_(iterid); } @@ -1504,9 +1411,6 @@ int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message__(int* gid, void* buffer, size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer, bufsize); -} int grib_f_new_from_message(int* gid, void* buffer, size_t* bufsize){ return grib_f_new_from_message_(gid, buffer, bufsize); } @@ -1516,9 +1420,6 @@ int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) { /* Call the version with void pointer */ return grib_f_new_from_message_(gid, (void*)buffer, bufsize); } -int grib_f_new_from_message_int__(int* gid, int* buffer , size_t* bufsize){ - return grib_f_new_from_message_int_(gid, buffer, bufsize); -} int grib_f_new_from_message_int(int* gid, int* buffer, size_t* bufsize){ return grib_f_new_from_message_int_(gid, buffer, bufsize); } @@ -1533,9 +1434,6 @@ int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message_copy__(int* gid, void* buffer, size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer, bufsize); -} int grib_f_new_from_message_copy(int* gid, void* buffer, size_t* bufsize){ return grib_f_new_from_message_copy_(gid, buffer, bufsize); } @@ -1553,9 +1451,6 @@ int grib_f_new_from_samples_(int* gid, char* name, int lname){ *gid = -1; return GRIB_FILE_NOT_FOUND; } -int grib_f_new_from_samples__(int* gid, char* name , int lname){ - return grib_f_new_from_samples_(gid, name, lname); -} int grib_f_new_from_samples(int* gid, char* name , int lname){ return grib_f_new_from_samples_(gid, name, lname); } @@ -1573,9 +1468,6 @@ int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ *gid = -1; return GRIB_FILE_NOT_FOUND; } -int codes_bufr_f_new_from_samples__(int* gid, char* name, int lname){ - return codes_bufr_f_new_from_samples_(gid, name, lname); -} int codes_bufr_f_new_from_samples(int* gid, char* name, int lname){ return codes_bufr_f_new_from_samples_(gid, name, lname); } @@ -1596,9 +1488,6 @@ int grib_f_clone_(int* gidsrc,int* giddest){ *giddest = -1; return GRIB_INVALID_GRIB; } -int grib_f_clone__(int* gidsrc,int* giddest){ - return grib_f_clone_(gidsrc, giddest); -} int grib_f_clone(int* gidsrc,int* giddest){ return grib_f_clone_(gidsrc, giddest); } @@ -1618,9 +1507,6 @@ int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len) return GRIB_INVALID_GRIB; } -int grib_f_copy_key__(int* gidsrc, char* name, int* giddest, int len){ - return grib_f_copy_key_(gidsrc, name, giddest, len); -} int grib_f_copy_key(int* gidsrc, char* name, int* giddest, int len){ return grib_f_copy_key_(gidsrc, name, giddest, len); } @@ -1639,9 +1525,6 @@ int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout){ return err; } -int grib_f_util_sections_copy__(int* gidfrom,int* gidto,int* what,int *gidout){ - return grib_f_util_sections_copy_(gidfrom,gidto,what,gidout); -} int grib_f_util_sections_copy(int* gidfrom,int* gidto,int* what,int *gidout){ return grib_f_util_sections_copy_(gidfrom,gidto,what,gidout); } @@ -1657,9 +1540,6 @@ int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ return GRIB_INVALID_GRIB; } -int grib_f_copy_namespace__(int* gidsrc,char* name,int* giddest,int len){ - return grib_f_copy_namespace_(gidsrc,name,giddest,len); -} int grib_f_copy_namespace(int* gidsrc,char* name,int* giddest,int len){ return grib_f_copy_namespace_(gidsrc,name,giddest,len); } @@ -1698,9 +1578,6 @@ int any_f_scan_file(int* fid,int* n) { int any_f_scan_file_(int* fid,int* n) { return any_f_scan_file(fid,n); } -int any_f_scan_file__(int* fid,int* n) { - return any_f_scan_file(fid,n); -} /*****************************************************************************/ int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) @@ -1735,9 +1612,6 @@ int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid){ return any_f_new_from_scanned_file(fid,msgid,gid); } -int any_f_new_from_scanned_file__(int* fid,int* msgid,int* gid){ - return any_f_new_from_scanned_file(fid,msgid,gid); -} /*****************************************************************************/ int any_f_load_all_from_file(int* fid,int* n) { @@ -1772,9 +1646,6 @@ int any_f_load_all_from_file(int* fid,int* n) { int any_f_load_all_from_file_(int* fid,int* n) { return any_f_load_all_from_file(fid,n); } -int any_f_load_all_from_file__(int* fid,int* n) { - return any_f_load_all_from_file(fid,n); -} /*****************************************************************************/ int any_f_new_from_loaded(int* msgid,int* gid) @@ -1802,9 +1673,6 @@ int any_f_new_from_loaded(int* msgid,int* gid) int any_f_new_from_loaded_(int* msgid,int* gid){ return any_f_new_from_loaded(msgid,gid); } -int any_f_new_from_loaded__(int* msgid,int* gid){ - return any_f_new_from_loaded(msgid,gid); -} /*****************************************************************************/ int codes_f_clear_loaded_from_file(void) { @@ -1816,9 +1684,7 @@ int codes_f_clear_loaded_from_file(void) { int codes_f_clear_loaded_from_file_(void) { return codes_f_clear_loaded_from_file(); } -int codes_f_clear_loaded_from_file__(void) { - return codes_f_clear_loaded_from_file(); -} + /*****************************************************************************/ int grib_f_count_in_file(int* fid,int* n) { int err = 0; @@ -1829,9 +1695,6 @@ int grib_f_count_in_file(int* fid,int* n) { int grib_f_count_in_file_(int* fid,int* n) { return grib_f_count_in_file(fid,n); } -int grib_f_count_in_file__(int* fid,int* n) { - return grib_f_count_in_file(fid,n); -} /*****************************************************************************/ int any_f_new_from_file_(int* fid, int* gid){ @@ -1852,9 +1715,6 @@ int any_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int any_f_new_from_file__(int* fid, int* gid){ - return any_f_new_from_file_( fid, gid); -} int any_f_new_from_file(int* fid, int* gid){ return any_f_new_from_file_( fid, gid); } @@ -1880,10 +1740,6 @@ int bufr_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } - -int bufr_f_new_from_file__(int* fid, int* gid){ - return bufr_f_new_from_file_( fid, gid); -} int bufr_f_new_from_file(int* fid, int* gid){ return bufr_f_new_from_file_( fid, gid); } @@ -1909,9 +1765,6 @@ int grib_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_new_from_file__(int* fid, int* gid){ - return grib_f_new_from_file_( fid, gid); -} int grib_f_new_from_file(int* fid, int* gid){ return grib_f_new_from_file_( fid, gid); } @@ -1937,9 +1790,6 @@ int grib_f_headers_only_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_headers_only_new_from_file__(int* fid, int* gid){ - return grib_f_headers_only_new_from_file_( fid, gid); -} int grib_f_headers_only_new_from_file(int* fid, int* gid){ return grib_f_headers_only_new_from_file_( fid, gid); } @@ -1965,10 +1815,6 @@ int grib_f_new_from_index_(int* iid, int* gid){ *gid=-1; return GRIB_INVALID_INDEX; } - -int grib_f_new_from_index__(int* iid, int* gid){ - return grib_f_new_from_index_(iid,gid); -} int grib_f_new_from_index(int* iid, int* gid){ return grib_f_new_from_index_(iid,gid); } @@ -1996,9 +1842,6 @@ int grib_f_index_new_from_file_(char* file ,char* keys ,int* gid, int lfile, int *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_index_new_from_file__(char* file, char* keys, int* gid, int lfile, int lkeys){ - return grib_f_index_new_from_file_(file ,keys ,gid, lfile, lkeys); -} int grib_f_index_new_from_file(char* file, char* keys, int* gid, int lfile, int lkeys){ return grib_f_index_new_from_file_(file ,keys ,gid, lfile, lkeys); } @@ -2016,10 +1859,6 @@ int grib_f_index_add_file_(int* iid, char* file, int lfile) { return err; } } - -int grib_f_index_add_file__(int* iid, char* file, int lfile) { - return grib_f_index_add_file_(iid,file,lfile); -} int grib_f_index_add_file(int* iid, char* file, int lfile) { return grib_f_index_add_file_(iid,file,lfile); } @@ -2045,9 +1884,6 @@ int grib_f_index_read_(char* file, int* gid, int lfile) { *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_index_read__(char* file, int* gid, int lfile) { - return grib_f_index_read_(file,gid,lfile); -} int grib_f_index_read(char* file, int* gid, int lfile) { return grib_f_index_read_(file,gid,lfile); } @@ -2065,9 +1901,6 @@ int grib_f_index_write_(int* gid, char* file, int lfile) { return err; } } -int grib_f_index_write__(int* gid, char* file, int lfile) { - return grib_f_index_write_(gid,file,lfile); -} int grib_f_index_write(int* gid, char* file, int lfile) { return grib_f_index_write_(gid,file,lfile); } @@ -2076,11 +1909,6 @@ int grib_f_index_write(int* gid, char* file, int lfile) { int grib_f_index_release_(int* hid){ return clear_index(*hid); } - -int grib_f_index_release__(int* hid){ - return grib_f_index_release_(hid); -} - int grib_f_index_release(int* hid){ return grib_f_index_release_(hid); } @@ -2088,11 +1916,6 @@ int grib_f_index_release(int* hid){ int grib_f_multi_handle_release_(int* hid){ return clear_multi_handle(*hid); } - -int grib_f_multi_handle_release__(int* hid){ - return grib_f_multi_handle_release_(hid); -} - int grib_f_multi_handle_release(int* hid){ return grib_f_multi_handle_release_(hid); } @@ -2100,9 +1923,6 @@ int grib_f_multi_handle_release(int* hid){ int grib_f_release_(int* hid){ return clear_handle(*hid); } -int grib_f_release__(int* hid){ - return grib_f_release_( hid); -} int grib_f_release(int* hid){ return grib_f_release_( hid); } @@ -2139,9 +1959,6 @@ int grib_f_dump_(int* gid){ return GRIB_SUCCESS; } -int grib_f_dump__(int* gid){ - return grib_f_dump_( gid); -} int grib_f_dump(int* gid){ return grib_f_dump_( gid); } @@ -2163,9 +1980,6 @@ int grib_f_print_(int* gid, char* key, int len){ return err; } } -int grib_f_print__(int* gid, char* key, int len){ - return grib_f_print_(gid, key, len); -} int grib_f_print(int* gid, char* key, int len){ return grib_f_print_(gid, key, len); } @@ -2178,9 +1992,6 @@ int grib_f_get_error_string_(int* err, char* buf, int len){ strncpy(buf, err_msg, (size_t)erlen); /* ECC-1488 */ return GRIB_SUCCESS; } -int grib_f_get_error_string__(int* err, char* buf, int len){ - return grib_f_get_error_string_(err, buf, len); -} int grib_f_get_error_string(int* err, char* buf, int len){ return grib_f_get_error_string_(err, buf, len); } @@ -2190,9 +2001,6 @@ int grib_f_get_api_version_(int* apiVersion,int len){ *apiVersion = grib_get_api_version(); return GRIB_SUCCESS; } -int grib_f_get_api_version__(int* apiVersion, int len){ - return grib_f_get_api_version_(apiVersion, len); -} int grib_f_get_api_version(int* apiVersion, int len){ return grib_f_get_api_version_(apiVersion, len); } @@ -2212,9 +2020,6 @@ int grib_f_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_get_size_int__(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); -} int grib_f_get_size_int(int* gid, char* key, int* val, int len){ return grib_f_get_size_int_( gid, key, val, len); } @@ -2233,9 +2038,6 @@ int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_get_size_long__(int* gid, char* key, long* val, int len){ - return grib_f_get_size_long_( gid, key, val, len); -} int grib_f_get_size_long(int* gid, char* key, long* val, int len){ return grib_f_get_size_long_( gid, key, val, len); } @@ -2254,9 +2056,6 @@ int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_index_get_size_int__(int* gid, char* key, int* val, int len){ - return grib_f_index_get_size_int_( gid, key, val, len); -} int grib_f_index_get_size_int(int* gid, char* key, int* val, int len){ return grib_f_index_get_size_int_( gid, key, val, len); } @@ -2275,9 +2074,6 @@ int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_index_get_size_long__(int* gid, char* key, long* val, int len){ - return grib_f_index_get_size_long_( gid, key, val, len); -} int grib_f_index_get_size_long(int* gid, char* key, long* val, int len){ return grib_f_index_get_size_long_( gid, key, val, len); } @@ -2293,9 +2089,6 @@ int grib_f_get_int_(int* gid, char* key, int* val, int len){ *val = long_val; return err; } -int grib_f_get_int__(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); -} int grib_f_get_int(int* gid, char* key, int* val, int len){ return grib_f_get_int_( gid, key, val, len); } @@ -2309,9 +2102,6 @@ int grib_f_get_long_(int* gid, char* key, long* val, int len){ err = grib_get_long(h, cast_char(buf,key,len),val); return err; } -int grib_f_get_long__(int* gid, char* key, long* val, int len){ - return grib_f_get_long_( gid, key, val, len); -} int grib_f_get_long(int* gid, char* key, long* val, int len){ return grib_f_get_long_( gid, key, val, len); } @@ -2328,9 +2118,6 @@ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ *val = type_val; return err; } -int grib_f_get_native_type__(int* gid, char* key, int* val, int len){ - return grib_f_get_native_type_( gid, key, val, len); -} int grib_f_get_native_type(int* gid, char* key, int* val, int len){ return grib_f_get_native_type_( gid, key, val, len); } @@ -2366,9 +2153,6 @@ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ grib_context_free(h->context,long_val); return err; } -int grib_f_get_int_array__(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); -} int grib_f_get_int_array(int* gid, char* key, int*val, int* size, int len){ return grib_f_get_int_array_( gid, key, val, size, len); } @@ -2387,9 +2171,6 @@ int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ return err; } -int grib_f_get_long_array__(int* gid, char* key, long *val, int* size, int len){ - return grib_f_get_long_array_( gid, key, val, size, len); -} int grib_f_get_long_array(int* gid, char* key, long *val, int* size, int len){ return grib_f_get_long_array_( gid, key, val, size, len); } @@ -2409,9 +2190,6 @@ int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, i return err; } -int grib_f_get_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ - return grib_f_get_byte_array_( gid, key, val, size, len, lenv); -} int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ return grib_f_get_byte_array_( gid, key, val, size, len, lenv); } @@ -2455,9 +2233,6 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* return err; } -int grib_f_index_get_string__(int* gid, char* key, char *val, int* eachsize, int* size, int len){ - return grib_f_index_get_string_(gid,key,val,eachsize,size,len); -} int grib_f_index_get_string(int* gid, char* key, char* val, int* eachsize, int* size, int len){ return grib_f_index_get_string_(gid,key,val,eachsize,size,len); } @@ -2475,9 +2250,6 @@ int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ *size = lsize; return err; } -int grib_f_index_get_long__(int* gid, char* key, long *val, int* size, int len){ - return grib_f_index_get_long_(gid,key,val,size,len); -} int grib_f_index_get_long(int* gid, char* key, long *val, int* size, int len){ return grib_f_index_get_long_(gid,key,val,size,len); } @@ -2504,9 +2276,6 @@ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ grib_context_free(h->context, lval); return err; } -int grib_f_index_get_int__(int* gid, char* key, int *val, int* size, int len){ - return grib_f_index_get_int_(gid,key,val,size,len); -} int grib_f_index_get_int(int* gid, char* key, int *val, int* size, int len){ return grib_f_index_get_int_(gid,key,val,size,len); } @@ -2524,9 +2293,6 @@ int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len *size = lsize; return err; } -int grib_f_index_get_real8__(int* gid, char* key, double *val, int* size, int len){ - return grib_f_index_get_real8_(gid,key,val,size,len); -} int grib_f_index_get_real8(int* gid, char* key, double *val, int* size, int len){ return grib_f_index_get_real8_(gid,key,val,size,len); } @@ -2561,9 +2327,6 @@ int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ grib_context_free(h->context,long_val); return err; } -int grib_f_set_int_array__(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); -} int grib_f_set_int_array(int* gid, char* key, int* val, int* size, int len){ return grib_f_set_int_array_( gid, key, val, size, len); } @@ -2578,9 +2341,6 @@ int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ return grib_set_long_array(h, cast_char(buf,key,len), val, lsize); } -int grib_f_set_long_array__(int* gid, char* key, long* val, int* size, int len){ - return grib_f_set_long_array_( gid, key, val, size, len); -} int grib_f_set_long_array(int* gid, char* key, long* val, int* size, int len){ return grib_f_set_long_array_( gid, key, val, size, len); } @@ -2599,9 +2359,6 @@ int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, i return err; } -int grib_f_set_byte_array__(int* gid, char* key, unsigned char* val, int* size, int len, int lenv){ - return grib_f_set_byte_array_( gid, key, val, size, len, lenv); -} int grib_f_set_byte_array(int* gid, char* key, unsigned char* val, int* size, int len, int lenv){ return grib_f_set_byte_array_( gid, key, val, size, len, lenv); } @@ -2614,9 +2371,6 @@ int grib_f_set_int_(int* gid, char* key, int* val, int len){ if(!h) return GRIB_INVALID_GRIB; return grib_set_long(h, cast_char(buf,key,len), long_val); } -int grib_f_set_int__(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); -} int grib_f_set_int(int* gid, char* key, int* val, int len){ return grib_f_set_int_( gid, key, val, len); } @@ -2627,9 +2381,6 @@ int grib_f_set_long_(int* gid, char* key, long* val, int len){ if(!h) return GRIB_INVALID_GRIB; return grib_set_long(h, cast_char(buf,key,len), *val); } -int grib_f_set_long__(int* gid, char* key, long* val, int len){ - return grib_f_set_long_( gid, key, val, len); -} int grib_f_set_long(int* gid, char* key, long* val, int len){ return grib_f_set_long_( gid, key, val, len); } @@ -2643,9 +2394,6 @@ int grib_f_set_missing_(int* gid, char* key,int len){ return grib_set_missing(h, cast_char(buf,key,len)); } -int grib_f_set_missing__(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); -} int grib_f_set_missing(int* gid, char* key, int len){ return grib_f_set_missing_( gid, key, len); } @@ -2659,9 +2407,6 @@ int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ *isMissing=grib_is_missing(h, cast_char(buf,key,len),&err); return err; } -int grib_f_is_missing__(int* gid, char* key,int* isMissing,int len){ - return grib_f_is_missing_(gid,key,isMissing,len); -} int grib_f_is_missing(int* gid, char* key,int* isMissing,int len){ return grib_f_is_missing_(gid,key,isMissing,len); } @@ -2675,9 +2420,6 @@ int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len){ *isDefined=grib_is_defined(h, cast_char(buf,key,len)); return GRIB_SUCCESS; } -int grib_f_is_defined__(int* gid, char* key,int* isDefined,int len){ - return grib_f_is_defined_(gid,key,isDefined,len); -} int grib_f_is_defined(int* gid, char* key,int* isDefined,int len){ return grib_f_is_defined_(gid,key,isDefined,len); } @@ -2692,9 +2434,6 @@ int grib_f_set_real4_(int* gid, char* key, float* val, int len){ return grib_set_double(h, cast_char(buf,key,len), val8); } -int grib_f_set_real4__(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); -} int grib_f_set_real4(int* gid, char* key, float* val, int len){ return grib_f_set_real4_( gid, key, val, len); } @@ -2712,9 +2451,6 @@ int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int le *val = val8; return err; } -int grib_f_get_real4_element__(int* gid, char* key,int* index, float* val,int len){ - return grib_f_get_real4_element_( gid, key, index, val, len); -} int grib_f_get_real4_element(int* gid, char* key,int* index, float* val,int len){ return grib_f_get_real4_element_( gid, key, index, val, len); } @@ -2747,9 +2483,6 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s return err; } -int grib_f_get_real4_elements__(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); -} int grib_f_get_real4_elements(int* gid, char* key,int* index, float* val,int* len,int size){ return grib_f_get_real4_elements_( gid, key, index, val, len,size); } @@ -2767,9 +2500,6 @@ int grib_f_get_real4_(int* gid, char* key, float* val, int len){ *val = val8; return err; } -int grib_f_get_real4__(int* gid, char* key, float* val, int len){ - return grib_f_get_real4_( gid, key, val, len); -} int grib_f_get_real4(int* gid, char* key, float* val, int len){ return grib_f_get_real4_( gid, key, val, len); } @@ -2817,10 +2547,6 @@ int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len) return err; } - -int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ - return grib_f_get_real4_array_( gid, key, val, size, len); -} int grib_f_get_real4_array(int* gid, char* key, float* val, int* size, int len){ return grib_f_get_real4_array_( gid, key, val, size, len); } @@ -2850,9 +2576,6 @@ int grib_f_set_force_real4_array_(int* gid, char* key, float* val, int* size, in grib_context_free(h->context,val8); return err; } -int grib_f_set_force_real4_array__(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_force_real4_array_( gid, key, val, size, len); -} int grib_f_set_force_real4_array(int* gid, char* key, float*val, int* size, int len){ return grib_f_set_force_real4_array_( gid, key, val, size, len); } @@ -2890,9 +2613,6 @@ int grib_f_set_real4_array_(int* gid, char* key, float* val, int* size, int len) return err; } -int grib_f_set_real4_array__(int* gid, char* key, float* val, int* size, int len) { - return grib_f_set_real4_array_(gid, key, val, size, len); -} int grib_f_set_real4_array(int* gid, char* key, float* val, int* size, int len) { return grib_f_set_real4_array_(gid, key, val, size, len); } @@ -2906,9 +2626,6 @@ int grib_f_index_select_real8_(int* gid, char* key, double* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_double(h, cast_char(buf,key,len), *val); } -int grib_f_index_select_real8__(int* gid, char* key, double* val, int len){ - return grib_f_index_select_real8_(gid,key,val,len); -} int grib_f_index_select_real8(int* gid, char* key, double* val, int len){ return grib_f_index_select_real8_(gid,key,val,len); } @@ -2929,9 +2646,6 @@ int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int val return grib_index_select_string(h, cast_char(buf,key,len), bufval); } -int grib_f_index_select_string__(int* gid, char* key, char* val, int len, int vallen){ - return grib_f_index_select_string_(gid,key,val,len,vallen); -} int grib_f_index_select_string(int* gid, char* key, char* val, int len, int vallen){ return grib_f_index_select_string_(gid,key,val,len,vallen); } @@ -2946,9 +2660,6 @@ int grib_f_index_select_int_(int* gid, char* key, int* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_long(h, cast_char(buf,key,len), lval); } -int grib_f_index_select_int__(int* gid, char* key, int* val, int len){ - return grib_f_index_select_int_(gid,key,val,len); -} int grib_f_index_select_int(int* gid, char* key, int* val, int len){ return grib_f_index_select_int_(gid,key,val,len); } @@ -2962,9 +2673,6 @@ int grib_f_index_select_long_(int* gid, char* key, long* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_long(h, cast_char(buf,key,len), *val); } -int grib_f_index_select_long__(int* gid, char* key, long* val, int len){ - return grib_f_index_select_long_(gid,key,val,len); -} int grib_f_index_select_long(int* gid, char* key, long* val, int len){ return grib_f_index_select_long_(gid,key,val,len); } @@ -2978,9 +2686,6 @@ int grib_f_set_real8_(int* gid, char* key, double* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_set_double(h, cast_char(buf,key,len), *val); } -int grib_f_set_real8__(int* gid, char* key, double* val, int len){ - return grib_f_set_real8_( gid, key, val, len); -} int grib_f_set_real8(int* gid, char* key, double* val, int len){ return grib_f_set_real8_( gid, key, val, len); } @@ -2995,9 +2700,6 @@ int grib_f_get_real8_(int* gid, char* key, double* val, int len) return grib_get_double(h, cast_char(buf,key,len), val); } -int grib_f_get_real8__(int* gid, char* key, double* val, int len){ - return grib_f_get_real8_( gid, key, val, len); -} int grib_f_get_real8(int* gid, char* key, double* val, int len){ return grib_f_get_real8_( gid, key, val, len); } @@ -3012,13 +2714,11 @@ int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int l return grib_get_double_element(h, cast_char(buf,key,len), *index,val); } -int grib_f_get_real8_element__(int* gid, char* key, int* index,double* val, int len){ - return grib_f_get_real8_element_( gid, key, index, val,len); -} int grib_f_get_real8_element(int* gid, char* key, int* index,double* val, int len){ return grib_f_get_real8_element_( gid, key, index, val,len); } +/*****************************************************************************/ int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int *size, int len){ grib_handle *h = get_handle(*gid); @@ -3029,9 +2729,6 @@ int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int return grib_get_double_elements(h, cast_char(buf,key,len), index,*size,val); } -int grib_f_get_real8_elements__(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); -} int grib_f_get_real8_elements(int* gid, char* key, int* index,double* val, int* len,int size){ return grib_f_get_real8_elements_( gid, key, index, val,len,size); } @@ -3060,16 +2757,6 @@ int grib_f_find_nearest_four_single_(int* gid,int* is_lsm, grib_nearest_delete(nearest); return result; } -int grib_f_find_nearest_four_single__(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_four_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} int grib_f_find_nearest_four_single(int* gid,int* is_lsm, double* inlats,double* inlons, double* outlats,double* outlons, @@ -3096,16 +2783,6 @@ int grib_f_find_nearest_single_(int* gid,int* is_lsm, inlats,inlons,1,outlats,outlons, values,distances,indexes); } -int grib_f_find_nearest_single__(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} int grib_f_find_nearest_single(int* gid,int* is_lsm, double* inlats,double* inlons, double* outlats,double* outlons, @@ -3132,16 +2809,6 @@ int grib_f_find_nearest_multiple_(int* gid,int* is_lsm, inlats,inlons,*npoints,outlats,outlons, values,distances,indexes); } -int grib_f_find_nearest_multiple__(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes, int* npoints) { - - return grib_f_find_nearest_multiple_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes,npoints); -} int grib_f_find_nearest_multiple(int* gid,int* is_lsm, double* inlats,double* inlons, double* outlats,double* outlons, @@ -3169,16 +2836,9 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) return err; } } -int grib_f_get_real8_array__(int* gid, char* key, double*val, int* size, int len){ - return grib_f_get_real8_array_( gid, key, val, size, len); -} int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ return grib_f_get_real8_array_( gid, key, val, size, len); } - -int grib_f_set_force_real8_array__(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_force_real8_array_( gid, key, val, size, len); -} int grib_f_set_force_real8_array(int* gid, char* key, double *val, int* size, int len){ return grib_f_set_force_real8_array_( gid, key, val, size, len); } @@ -3205,9 +2865,6 @@ int grib_f_set_real8_array_(int* gid, char* key, double*val, int* size, int len) return grib_set_double_array(h, cast_char(buf,key,len), val, lsize); } -int grib_f_set_real8_array__(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_real8_array_( gid, key, val, size, len); -} int grib_f_set_real8_array(int* gid, char* key, double *val, int* size, int len){ return grib_f_set_real8_array_( gid, key, val, size, len); } @@ -3241,9 +2898,6 @@ int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } -int grib_f_get_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_get_string_array_( gid, key, val,nvals,slen,len); -} int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ return grib_f_get_string_array_( gid, key, val, nvals, slen, len); } @@ -3262,9 +2916,6 @@ int codes_f_bufr_copy_data_(int* gid1,int* gid2) return err; } -int codes_f_bufr_copy_data__(int* gid1,int* gid2){ - return codes_f_bufr_copy_data_(gid1, gid2); -} int codes_f_bufr_copy_data(int* gid1,int* gid2){ return codes_f_bufr_copy_data_(gid1, gid2); } @@ -3301,9 +2952,6 @@ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } -int grib_f_set_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_set_string_array_( gid, key, val,nvals,slen,len); -} int grib_f_set_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ return grib_f_set_string_array_( gid, key, val, nvals, slen, len); } @@ -3326,9 +2974,6 @@ int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){ return err; } -int grib_f_get_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); -} int grib_f_get_string(int* gid, char* key, char* val, int len, int len2){ return grib_f_get_string_( gid, key, val, len, len2); } @@ -3363,9 +3008,6 @@ int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ return grib_set_string(h, cast_char(buf,key,len), val_str, &lsize); } -int grib_f_set_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); -} int grib_f_set_string(int* gid, char* key, char* val, int len, int len2){ return grib_f_set_string_( gid, key, val, len, len2); } @@ -3401,22 +3043,15 @@ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_ return err; } -int grib_f_get_data_real4__(int* gid,float* lats, float* lons,float* values,size_t* size) { - return grib_f_get_data_real4_(gid,lats,lons,values,size); -} int grib_f_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size) { return grib_f_get_data_real4_(gid,lats,lons,values,size); } - int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) { grib_handle *h = get_handle(*gid); return grib_get_data(h,lats,lons,values); } -int grib_f_get_data_real8__(int* gid,double* lats, double* lons,double* values,size_t* size) { - return grib_f_get_data_real8_(gid,lats,lons,values,size); -} int grib_f_get_data_real8(int* gid,double* lats, double* lons,double* values,size_t* size) { return grib_f_get_data_real8_(gid,lats,lons,values,size); } @@ -3428,11 +3063,6 @@ int grib_f_get_message_size_(int* gid, size_t *len){ *len = h->buffer->ulength; return GRIB_SUCCESS; } -/* -int grib_f_get_message_size__(int* gid, size_t *len){ - return grib_f_get_message_size_( gid, len); -} -*/ int grib_f_get_message_size(int* gid, size_t *len){ return grib_f_get_message_size_( gid, len); } @@ -3453,9 +3083,6 @@ int grib_f_copy_message_(int* gid, void* mess, size_t* len){ *len=h->buffer->ulength; return GRIB_SUCCESS; } -int grib_f_copy_message__(int* gid, void* mess, size_t* len){ - return grib_f_copy_message_( gid, mess, len); -} int grib_f_copy_message(int* gid, void* mess, size_t* len){ return grib_f_copy_message_( gid, mess, len); } @@ -3474,11 +3101,6 @@ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ bufcall,bufstr,grib_get_error_message(*err)); exit(*err); } -/* -void grib_f_check__(int* err,char* call, char* key, int lencall, int lenkey){ - grib_f_check_(err,call,key,lencall,lenkey); -} -*/ void grib_f_check(int* err,char* call, char* key, int lencall, int lenkey){ grib_f_check_(err,call,key,lencall,lenkey); } @@ -3501,9 +3123,6 @@ int grib_f_write_(int* gid, int* fid) { return GRIB_SUCCESS; } -int grib_f_write__(int* gid, int* fid) { - return grib_f_write_(gid,fid); -} int grib_f_write(int* gid, int* fid) { return grib_f_write_(gid,fid); } @@ -3518,11 +3137,6 @@ int grib_f_multi_write_(int* gid, int* fid) { return grib_multi_handle_write(h,f); } -/* -int grib_f_multi_write__(int* gid, int* fid) { - return grib_f_multi_write_(gid,fid); -} -*/ int grib_f_multi_write(int* gid, int* fid) { return grib_f_multi_write_(gid,fid); } @@ -3544,18 +3158,12 @@ int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { int grib_f_multi_append(int* ingid, int* sec,int* mgid) { return grib_f_multi_append_(ingid, sec, mgid); } -int grib_f_multi_append__(int* ingid, int* sec,int* mgid) { - return grib_f_multi_append_(ingid, sec, mgid); -} /*****************************************************************************/ int codes_f_bufr_multi_element_constant_arrays_on_() { codes_bufr_multi_element_constant_arrays_on(NULL); return GRIB_SUCCESS; } -int codes_f_bufr_multi_element_constant_arrays_on__() { - return codes_f_bufr_multi_element_constant_arrays_on_(); -} int codes_f_bufr_multi_element_constant_arrays_on() { return codes_f_bufr_multi_element_constant_arrays_on_(); } @@ -3564,9 +3172,6 @@ int codes_f_bufr_multi_element_constant_arrays_off_() { codes_bufr_multi_element_constant_arrays_off(NULL); return GRIB_SUCCESS; } -int codes_f_bufr_multi_element_constant_arrays_off__() { - return codes_f_bufr_multi_element_constant_arrays_off_(); -} int codes_f_bufr_multi_element_constant_arrays_off() { return codes_f_bufr_multi_element_constant_arrays_off_(); } @@ -3579,9 +3184,6 @@ int grib_f_set_definitions_path_(char* path, int len){ grib_context_set_definitions_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_definitions_path__(char* path, int len){ - return grib_f_set_definitions_path_(path, len); -} int grib_f_set_definitions_path(char* path, int len){ return grib_f_set_definitions_path_(path, len); } @@ -3593,9 +3195,6 @@ int grib_f_set_samples_path_(char* path, int len){ grib_context_set_samples_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_samples_path__(char* path, int len){ - return grib_f_set_samples_path_(path, len); -} int grib_f_set_samples_path(char* path, int len){ return grib_f_set_samples_path_(path, len); } @@ -3607,19 +3206,11 @@ int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } -int grib_f_julian_to_datetime__(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { - return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); -} /*****************************************************************************/ int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } -/* -int grib_f_datetime_to_julian__(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { - return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); -} -*/ int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } From bd8a226cbe50cdd462da8afa9393c6818fcf788b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Dec 2023 20:37:34 +0000 Subject: [PATCH 193/469] Testing: Increase coverage: F90 grib_get_data --- examples/F90/CMakeLists.txt | 1 + examples/F90/grib_get_data_real4.f90 | 76 ++++++++++++++++++++++++++++ examples/F90/grib_get_data_real4.sh | 12 +++++ 3 files changed, 89 insertions(+) create mode 100644 examples/F90/grib_get_data_real4.f90 create mode 100755 examples/F90/grib_get_data_real4.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 79f65e6fb..811cdd24c 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -25,6 +25,7 @@ if( HAVE_BUILD_TOOLS ) bufr_copy_message grib_get_keys grib_get_data + grib_get_data_real4 grib_get_pl grib_get_pv grib_keys_iterator diff --git a/examples/F90/grib_get_data_real4.f90 b/examples/F90/grib_get_data_real4.f90 new file mode 100644 index 000000000..647724245 --- /dev/null +++ b/examples/F90/grib_get_data_real4.f90 @@ -0,0 +1,76 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +! +program get_data_real4 + use eccodes + implicit none + integer :: ifile + integer :: iret, i + real(kind=4), dimension(:), allocatable :: lats, lons, values + integer, dimension(:), allocatable :: bitmap + integer(4) :: numberOfPoints + logical :: is_missing_value + integer :: count1 = 0, count2 = 0, bitmapPresent = 0, bmp_len = 0 + integer :: igrib ! message identifier + + ifile = 5 + + call codes_open_file(ifile, '../../data/reduced_latlon_surface.grib2', 'r') + + ! loop on all the messages in the file + do while (.true.) + call codes_grib_new_from_file(ifile, igrib, iret) + if (iret == CODES_END_OF_FILE) exit + + count1 = count1 + 1 + print *, "===== Message #", count1 + call codes_get(igrib, 'numberOfPoints', numberOfPoints) + call codes_get(igrib, 'bitmapPresent', bitmapPresent) + + allocate (lats(numberOfPoints)) + allocate (lons(numberOfPoints)) + allocate (values(numberOfPoints)) + if (bitmapPresent == 1) then + ! get the bitmap + call codes_get_size(igrib, 'bitmap', bmp_len) + allocate (bitmap(bmp_len)) + call codes_get(igrib, 'bitmap', bitmap) + end if + + call codes_grib_get_data(igrib, lats, lons, values) + + do i = 1, numberOfPoints + ! consult bitmap to see if the i'th value is missing + is_missing_value = .false. + if (bitmapPresent == 1 .and. bitmap(i) == 0) then + is_missing_value = .true. + end if + ! only print non-missing values + if (.not. is_missing_value) then + print *, lats(i), lons(i), values(i) + count2 = count2 + 1 + end if + end do + print *, 'count of non-missing values=', count2 + if (count2 /= 214661) then + call codes_check(-2, 'incorrect number of missing', '') + end if + + deallocate (lats) + deallocate (lons) + deallocate (values) + + call codes_release(igrib) + + end do + + call codes_close_file(ifile) + +end program diff --git a/examples/F90/grib_get_data_real4.sh b/examples/F90/grib_get_data_real4.sh new file mode 100755 index 000000000..b251fd645 --- /dev/null +++ b/examples/F90/grib_get_data_real4.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_get_data_real4 > /dev/null From 1a458f47efb360fc54bc29c5231b259ffbddc46c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 12:53:44 +0000 Subject: [PATCH 194/469] Fortran: nearest single --- examples/F90/CMakeLists.txt | 2 + examples/F90/grib_nearest_single.f90 | 30 ++ examples/F90/grib_nearest_single.sh | 12 + fortran/CMakeLists.txt | 3 - fortran/eccodes_f90_tail.f90 | 2 +- fortran/grib_f77.c | 510 --------------------------- fortran/grib_f90_tail.f90 | 4 +- 7 files changed, 47 insertions(+), 516 deletions(-) create mode 100644 examples/F90/grib_nearest_single.f90 create mode 100755 examples/F90/grib_nearest_single.sh delete mode 100644 fortran/grib_f77.c diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 811cdd24c..cad7dee1a 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -32,6 +32,7 @@ if( HAVE_BUILD_TOOLS ) grib_multi_write grib_multi grib_nearest + grib_nearest_single grib_precision grib_print_data grib_set_keys @@ -81,6 +82,7 @@ else() grib_keys_iterator grib_multi grib_nearest + grib_nearest_single grib_precision grib_print_data grib_set_missing diff --git a/examples/F90/grib_nearest_single.f90 b/examples/F90/grib_nearest_single.f90 new file mode 100644 index 000000000..5be355f9b --- /dev/null +++ b/examples/F90/grib_nearest_single.f90 @@ -0,0 +1,30 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +program find_nearest_single + use eccodes + implicit none + integer :: infile + integer :: igrib + real(8) :: inlat = 5, inlon = 10 + real(8) :: outlat, outlon + real(8) :: value, distance + integer(kind=kindOfInt) :: index + + call codes_open_file(infile, '../../data/reduced_gaussian_lsm.grib1', 'r') + call codes_grib_new_from_file(infile, igrib) + + call codes_grib_find_nearest_single(igrib, .true., inlat, inlon, outlat, outlon, value, distance, index) + call codes_release(igrib) + + call codes_close_file(infile) + + print *, ' outlat outlon value distance index' + write (*, '(F10.3, F10.3, F10.5, F10.3, I8)') outlat, outlon, value, distance, index + +end program find_nearest_single diff --git a/examples/F90/grib_nearest_single.sh b/examples/F90/grib_nearest_single.sh new file mode 100755 index 000000000..0443595dd --- /dev/null +++ b/examples/F90/grib_nearest_single.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_nearest_single diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt index 650296c06..0e798a697 100644 --- a/fortran/CMakeLists.txt +++ b/fortran/CMakeLists.txt @@ -38,9 +38,6 @@ if( HAVE_FORTRAN ) COMMAND cat ${srcdir}/eccodes_f90_head.f90 ${srcdir}/${_long_int_interface_ec} ${srcdir}/${_sizet_int_interface_ec} ${srcdir}/eccodes_f90_tail.f90 > eccodes_f90.f90 DEPENDS eccodes_f90_head.f90 eccodes_f90_tail.f90 grib_kinds.h ${_long_int_interface_ec} ${_sizet_int_interface_ec} ) - #ecbuild_add_library( TARGET eccodes_f77 - # SOURCES grib_fortran.c grib_f77.c - # LIBS eccodes ) # Note: $ will be present only while building (for the whole bundle), # whereas $ is only present once you install the package / bundle diff --git a/fortran/eccodes_f90_tail.f90 b/fortran/eccodes_f90_tail.f90 index faf4e7e36..24551f8de 100644 --- a/fortran/eccodes_f90_tail.f90 +++ b/fortran/eccodes_f90_tail.f90 @@ -2597,8 +2597,8 @@ subroutine codes_grib_find_nearest_single(gribid, is_lsm, & real(kind=kindOfDouble), intent(in) :: inlon real(kind=kindOfDouble), intent(out) :: outlat real(kind=kindOfDouble), intent(out) :: outlon - real(kind=kindOfDouble), intent(out) :: distance real(kind=kindOfDouble), intent(out) :: value + real(kind=kindOfDouble), intent(out) :: distance integer(kind=kindOfInt), intent(out) :: kindex integer(kind=kindOfInt), optional, intent(out) :: status diff --git a/fortran/grib_f77.c b/fortran/grib_f77.c deleted file mode 100644 index 8c10c44b9..000000000 --- a/fortran/grib_f77.c +++ /dev/null @@ -1,510 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#include "grib_api_internal.h" -#include "grib_fortran_prototypes.h" - -int grib_read_file_(int* fid, char* buffer, size_t* nbytes) { - return grib_f_read_file_(fid,buffer,nbytes); -} - -int grib_read_file__(int* fid, char* buffer, size_t* nbytes) { - return grib_f_read_file_(fid,buffer,nbytes); -} - -int grib_open_file_(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_( fid, name , op, lname, lop); -} - -int grib_open_file__(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_( fid, name , op, lname, lop); -} - -int grib_close_file_(int* fid){ - return grib_f_close_file_(fid); -} - -int grib_close_file__(int* fid){ - return grib_f_close_file_(fid); -} - -int grib_multi_support_on_(){ - return grib_f_multi_support_on_(); -} - -int grib_multi_support_on__(){ - return grib_f_multi_support_on_(); -} - -int grib_multi_support_off_(){ - return grib_f_multi_support_off_(); -} - -int grib_multi_support_off__(){ - return grib_f_multi_support_off_(); -} - -int grib_iterator_new_(int* gid,int* iterid,int* mode) { - return grib_f_iterator_new_(gid,iterid,mode); -} - -int grib_iterator_new__(int* gid,int* iterid,int* mode) { - return grib_f_iterator_new_(gid,iterid,mode); -} - -int grib_iterator_next_(int* iterid,double* lat,double* lon,double* value) { - return grib_f_iterator_next_(iterid,lat,lon,value); -} - -int grib_iterator_next__(int* iterid,double* lat,double* lon,double* value) { - return grib_f_iterator_next_(iterid,lat,lon,value); -} - -int grib_iterator_delete_(int* iterid) { - return grib_f_iterator_delete_(iterid); -} - -int grib_iterator_delete__(int* iterid) { - return grib_f_iterator_delete_(iterid); -} - -int grib_keys_iterator_new__(int* gid,int* iterid,char* name_space,int len) { - return grib_f_keys_iterator_new_(gid,iterid,name_space,len); -} - -int grib_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { - return grib_f_keys_iterator_new_(gid,iterid,name_space,len); -} - -int grib_keys_iterator_next_(int* iterid) { - return grib_f_keys_iterator_next_(iterid); -} - -int grib_keys_iterator_next__(int* iterid) { - return grib_f_keys_iterator_next_(iterid); -} - -int grib_keys_iterator_delete_(int* iterid) { - return grib_f_keys_iterator_delete_(iterid); -} - -int grib_keys_iterator_delete__(int* iterid) { - return grib_f_keys_iterator_delete_(iterid); -} - -int grib_gribex_mode_on_() { - grib_gribex_mode_on(0); - return GRIB_SUCCESS; -} - -int grib_gribex_mode_on__() { - grib_gribex_mode_on(0); - return GRIB_SUCCESS; -} - -int grib_gribex_mode_off_() { - grib_gribex_mode_off(0); - return GRIB_SUCCESS; -} - -int grib_gribex_mode_off__() { - grib_gribex_mode_off(0); - return GRIB_SUCCESS; -} - -int grib_skip_computed_(int* iterid) { - return grib_skip_computed_(iterid); -} - -int grib_skip_computed__(int* iterid) { - return grib_skip_computed_(iterid); -} - -int grib_skip_coded_(int* iterid) { - return grib_f_skip_coded_(iterid); -} - -int grib_skip_coded__(int* iterid) { - return grib_f_skip_coded_(iterid); -} - -int grib_skip_edition_specific_(int* iterid) { - return grib_f_skip_edition_specific_(iterid); -} - -int grib_skip_edition_specific__(int* iterid) { - return grib_f_skip_edition_specific_(iterid); -} - -int grib_skip_duplicates_(int* iterid) { - return grib_f_skip_duplicates_(iterid); -} - -int grib_skip_duplicates__(int* iterid) { - return grib_f_skip_duplicates_(iterid); -} - -int grib_skip_read_only_(int* iterid) { - return grib_f_skip_read_only_(iterid); -} - -int grib_skip_read_only__(int* iterid) { - return grib_f_skip_read_only_(iterid); -} - -int grib_skip_function_(int* iterid) { - return grib_f_skip_function_(iterid); -} - -int grib_skip_function__(int* iterid) { - return grib_f_skip_function_(iterid); -} - -int grib_keys_iterator_get_name_(int* kiter,char* name,int len) { - return grib_f_keys_iterator_get_name_(kiter,name,len); -} - -int grib_keys_iterator_get_name__(int* kiter,char* name,int len) { - return grib_f_keys_iterator_get_name_(kiter,name,len); -} - -int grib_keys_iterator_rewind_(int* kiter) { - return grib_f_keys_iterator_rewind_(kiter); -} - -int grib_keys_iterator_rewind__(int* kiter) { - return grib_f_keys_iterator_rewind_(kiter); -} - -int grib_new_from_message_(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer , bufsize); -} - -int grib_new_from_message__(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer , bufsize); -} - -int grib_new_from_message_copy_(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer , bufsize); -} - -int grib_new_from_message_copy__(int* gid, void* buffer , size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer , bufsize); -} - -int grib_new_from_samples_(int* gid, char* name , int lname){ - return grib_f_new_from_samples_( gid, name , lname); -} - -int grib_new_from_samples__(int* gid, char* name , int lname){ - return grib_f_new_from_samples_( gid, name , lname); -} - -int grib_clone_(int* gidsrc,int* giddest){ - return grib_f_clone_(gidsrc, giddest); -} - -int grib_clone__(int* gidsrc,int* giddest){ - return grib_f_clone_(gidsrc, giddest); -} - -int grib_new_from_file_(int* fid, int* gid){ - return grib_f_new_from_file_( fid, gid); -} - -int grib_new_from_file__(int* fid, int* gid){ - return grib_f_new_from_file_( fid, gid); -} - -int grib_release_(int* hid){ - return grib_f_release_( hid); -} - -int grib_release__(int* hid){ - return grib_f_release_( hid); -} - -int grib_dump_(int* gid){ - return grib_f_dump_( gid); -} - -int grib_dump__(int* gid){ - return grib_f_dump_( gid); -} - -int grib_get_error_string_(int* err, char* buf, int len){ - return grib_f_get_error_string_(err,buf,len); -} - -int grib_get_error_string__(int* err, char* buf, int len){ - return grib_f_get_error_string_(err,buf,len); -} - -int grib_get_size_(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); -} - -int grib_get_size__(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); -} - -int grib_get_int_(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); -} - -int grib_get_int__(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); -} - -int grib_get_int_array_(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); -} - -int grib_get_int_array__(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); -} - -int grib_set_int_array_(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); -} - -int grib_set_int_array__(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); -} - -int grib_set_int_(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); -} - -int grib_set_int__(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); -} - -int grib_set_missing_(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); -} - -int grib_set_missing__(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); -} - -int grib_set_real4_(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); -} - -int grib_set_real4__(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); -} - -int grib_get_real4_(int* gid, char* key, float* val, int len){ - return grib_f_get_real4_( gid, key, val, len); -} - -int grib_get_real4__(int* gid, char* key, float* val, int len){ - return grib_f_get_real4_( gid, key, val, len); -} - -int grib_get_real4_array_(int* gid, char* key, float* val, int* size, int len){ - return grib_f_get_real4_array_( gid, key, val, size, len); -} - -int grib_get_real4_element_(int* gid, char* key, int* index,float* val, int len){ - return grib_f_get_real4_element_( gid, key, index,val, len); -} - -int grib_get_real4_element__(int* gid, char* key,int* index, float* val, int len){ - return grib_f_get_real4_element_( gid, key, index, val, len); -} - -int grib_get_real4_elements__(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); -} - -int grib_get_real4_elements_(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); -} - -int grib_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ - return grib_f_get_real4_array_( gid, key, val, size, len); -} - -int grib_set_real4_array_(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_real4_array_( gid, key, val, size, len); -} - -int grib_set_real4_array__(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_real4_array_( gid, key, val, size, len); -} - -int grib_set_real8_(int* gid, char* key, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_set_real8_( gid, key, val, len); -} - -int grib_set_real8__(int* gid, char* key, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_set_real8_( gid, key, val, len); -} - -int grib_get_real8_(int* gid, char* key, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_( gid, key, val, len); -} - -int grib_get_real8__(int* gid, char* key, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_( gid, key, val, len); -} - -int grib_get_real8_element_(int* gid, char* key,int* index, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_element_( gid, key, index,val, len); -} - -int grib_get_real8_element__(int* gid, char* key,int* index, double* val, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_element_( gid, key, index,val, len); -} - -int grib_get_real8_elements_(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); -} - -int grib_get_real8_elements__(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); -} - - -int grib_get_real8_array_(int* gid, char* key, double*val, int* size, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_array_( gid, key, val, size, len); -} - -int grib_get_real8_array__(int* gid, char* key, double*val, int* size, int len){ - Assert(sizeof(double) == 8); - return grib_f_get_real8_array_( gid, key, val, size, len); -} - -int grib_set_real8_array_(int* gid, char* key, double *val, int* size, int len){ - Assert(sizeof(double) == 8); - return grib_f_set_real8_array_( gid, key, val, size, len); -} - -int grib_set_real8_array__(int* gid, char* key, double *val, int* size, int len){ - Assert(sizeof(double) == 8); - return grib_f_set_real8_array_( gid, key, val, size, len); -} - -int grib_get_string_(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); -} - -int grib_get_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); -} - -int grib_set_string_(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); -} - -int grib_set_string__(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); -} - -int grib_get_message_size_(int* gid, size_t *len){ - return grib_f_get_message_size_( gid, len); -} - -int grib_get_message_size__(int* gid, size_t *len){ - return grib_f_get_message_size_( gid, len); -} - -void grib_check_(int* err){ - grib_f_check_(err,"","",0,0); -} - -void grib_check__(int* err){ - grib_f_check_(err,"","",0,0); -} - -int grib_write_(int* gid, int* fid) { - return grib_f_write_(gid,fid); -} - -int grib_write__(int* gid, int* fid) { - return grib_f_write_(gid,fid); -} - -int grib_multi_write_(int* gid, int* fid) { - return grib_f_multi_write_(gid,fid); -} - -int grib_multi_write__(int* gid, int* fid) { - return grib_f_multi_write_(gid,fid); -} - -int grib_multi_append_(int* ingid, int* sec,int* mgid) { - return grib_f_multi_append_(ingid,sec,mgid); -} - -int grib_multi_append__(int* ingid, int* sec,int* mgid) { - return grib_f_multi_append_(ingid,sec,mgid); -} - -int grib_find_nearest_multiple_(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes, int* npoints) { - - return grib_f_find_nearest_multiple_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes,npoints); -} -int grib_find_nearest_multiple__(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes, int* npoints) { - - return grib_f_find_nearest_multiple_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes,npoints); -} - -int grib_find_nearest_single_(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} -int grib_find_nearest_single__(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} - -int grib_copy_message_(int* gid, void* mess,size_t* len){ - return grib_f_copy_message_(gid, mess,len); -} -int grib_copy_message__(int* gid, void* mess,size_t* len){ - return grib_f_copy_message_(gid, mess,len); -} - - diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index c7b3f0de9..2d5c274ca 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -2938,13 +2938,13 @@ subroutine grib_find_nearest_single(gribid, is_lsm, & inlat, inlon, outlat, outlon, & value, distance, kindex, status) integer(kind=kindOfInt), intent(in) :: gribid - logical, intent(in) :: is_lsm + logical, intent(in) :: is_lsm real(kind=kindOfDouble), intent(in) :: inlat real(kind=kindOfDouble), intent(in) :: inlon real(kind=kindOfDouble), intent(out) :: outlat real(kind=kindOfDouble), intent(out) :: outlon - real(kind=kindOfDouble), intent(out) :: distance real(kind=kindOfDouble), intent(out) :: value + real(kind=kindOfDouble), intent(out) :: distance integer(kind=kindOfInt), intent(out) :: kindex integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret From 0c747f3b026468373360d41c58a6898d44f992e2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 13:26:25 +0000 Subject: [PATCH 195/469] Fortran: Keys iterator with skip --- examples/F90/CMakeLists.txt | 2 + examples/F90/grib_keys_iterator_skip.f90 | 57 ++++++++++++++++++++++++ examples/F90/grib_keys_iterator_skip.sh | 12 +++++ 3 files changed, 71 insertions(+) create mode 100644 examples/F90/grib_keys_iterator_skip.f90 create mode 100755 examples/F90/grib_keys_iterator_skip.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index cad7dee1a..cf5f42450 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -29,6 +29,7 @@ if( HAVE_BUILD_TOOLS ) grib_get_pl grib_get_pv grib_keys_iterator + grib_keys_iterator_skip grib_multi_write grib_multi grib_nearest @@ -80,6 +81,7 @@ else() grib_get_pl grib_get_pv grib_keys_iterator + grib_keys_iterator_skip grib_multi grib_nearest grib_nearest_single diff --git a/examples/F90/grib_keys_iterator_skip.f90 b/examples/F90/grib_keys_iterator_skip.f90 new file mode 100644 index 000000000..f6c58d227 --- /dev/null +++ b/examples/F90/grib_keys_iterator_skip.f90 @@ -0,0 +1,57 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program keys_iterator_skip + use eccodes + implicit none + character(len=20) :: name_space + integer :: kiter, ifile, igrib, iret + character(len=256) :: key + character(len=256) :: value + character(len=512) :: all1 + integer :: grib_count + + call codes_open_file(ifile, & + '../../data/regular_latlon_surface.grib1', 'r') + + ! Loop on all the messages in a file + grib_count = 0 + do while (.true.) + call codes_grib_new_from_file(ifile, igrib, iret) + if (iret == CODES_END_OF_FILE) exit + + grib_count = grib_count + 1 + write (*, *) '-- GRIB N. ', grib_count, ' --' + + ! Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" + name_space = 'ls' + + call codes_keys_iterator_new(igrib, kiter, name_space) + call codes_skip_computed(kiter) + call codes_skip_coded(kiter) + call codes_skip_duplicates(kiter) + call codes_skip_read_only(kiter) + + do + call codes_keys_iterator_next(kiter, iret) + if (iret .ne. CODES_SUCCESS) exit !terminate the loop + + call codes_keys_iterator_get_name(kiter, key) + call codes_get(igrib, trim(key), value) + all1 = trim(key)//' = '//trim(value) + write (*, *) trim(all1) + end do + + call codes_keys_iterator_delete(kiter) + call codes_release(igrib) + end do + + call codes_close_file(ifile) + +end program keys_iterator_skip diff --git a/examples/F90/grib_keys_iterator_skip.sh b/examples/F90/grib_keys_iterator_skip.sh new file mode 100755 index 000000000..03b05fb8b --- /dev/null +++ b/examples/F90/grib_keys_iterator_skip.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_keys_iterator_skip From c2668153ef48c3e6ed3d72364783a242d9675bd7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 14:52:23 +0000 Subject: [PATCH 196/469] Testing: 'close' action and filepool --- src/grib_filepool.cc | 5 +++++ tests/bufr_filter_fail.sh | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/grib_filepool.cc b/src/grib_filepool.cc index 2282fe3eb..8d55f3d3d 100644 --- a/src/grib_filepool.cc +++ b/src/grib_filepool.cc @@ -344,6 +344,11 @@ grib_file* grib_get_file(const char* filename, int* err) { grib_file* file = NULL; + if (!file_pool.current) { + *err = GRIB_IO_PROBLEM; + return NULL; + } + if (file_pool.current->name && !grib_inline_strcmp(filename, file_pool.current->name)) { return file_pool.current; } diff --git a/tests/bufr_filter_fail.sh b/tests/bufr_filter_fail.sh index 74640fd36..ed38ba64c 100755 --- a/tests/bufr_filter_fail.sh +++ b/tests/bufr_filter_fail.sh @@ -90,5 +90,21 @@ set -e grep -q "Cannot include file" $tempErr +# Close +# -------- +cat > $fRules < $tempErr 2>&1 +status=$? +set -e +[ $status -ne 0 ] +cat $tempErr +grep -q "Input output problem" $tempErr + + + # Clean up rm -f $fLog $fRules $tempErr From e54a4660fa8de8d1f60dd7c221ded1fd29d6972f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 17:00:37 +0000 Subject: [PATCH 197/469] GRIB1: Calculation of number of points when Nj=missing or 0 --- src/grib_accessor_class_number_of_points.cc | 39 +++++++++++++-------- tests/grib_get_fail.sh | 19 ++++++++++ 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/grib_accessor_class_number_of_points.cc b/src/grib_accessor_class_number_of_points.cc index 6a270bb69..b3d1eade2 100644 --- a/src/grib_accessor_class_number_of_points.cc +++ b/src/grib_accessor_class_number_of_points.cc @@ -110,12 +110,14 @@ grib_accessor_class* grib_accessor_class_number_of_points = &_grib_accessor_clas static void init(grib_accessor* a, const long l, grib_arguments* c) { - int n = 0; + int n = 0; + grib_handle* hand = grib_handle_of_accessor(a); + grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; - self->ni = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->nj = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->plpresent = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->pl = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->ni = grib_arguments_get_name(hand, c, n++); + self->nj = grib_arguments_get_name(hand, c, n++); + self->plpresent = grib_arguments_get_name(hand, c, n++); + self->pl = grib_arguments_get_name(hand, c, n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->length = 0; @@ -123,32 +125,41 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) static int unpack_long(grib_accessor* a, long* val, size_t* len) { + grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; + int ret = GRIB_SUCCESS; long ni = 0, nj = 0, plpresent = 0; size_t plsize = 0; - long* pl; - int i; - grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; - grib_context* c = a->context; + long* pl = NULL; + int i = 0; + grib_context* c = a->context; + grib_handle* hand = grib_handle_of_accessor(a); - if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->ni, &ni)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(hand, self->ni, &ni)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->nj, &nj)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(hand, self->nj, &nj)) != GRIB_SUCCESS) return ret; if (self->plpresent && - ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent, &plpresent)) != GRIB_SUCCESS)) + ((ret = grib_get_long_internal(hand, self->plpresent, &plpresent)) != GRIB_SUCCESS)) return ret; - if (nj == 0) + if (grib_is_missing(hand, self->nj, &ret) && ret == GRIB_SUCCESS) { + grib_context_log(c, GRIB_LOG_ERROR, "grib_accessor_class_number_of_points: Key %s cannot be 'missing'!", self->nj); return GRIB_GEOCALCULUS_PROBLEM; + } + + if (nj == 0) { + grib_context_log(c, GRIB_LOG_ERROR, "grib_accessor_class_number_of_points: Key %s cannot be 0!", self->nj); + return GRIB_GEOCALCULUS_PROBLEM; + } if (plpresent) { /*reduced*/ plsize = nj; pl = (long*)grib_context_malloc(c, sizeof(long) * plsize); - grib_get_long_array_internal(grib_handle_of_accessor(a), self->pl, pl, &plsize); + grib_get_long_array_internal(hand, self->pl, pl, &plsize); *val = 0; for (i = 0; i < plsize; i++) *val += pl[i]; diff --git a/tests/grib_get_fail.sh b/tests/grib_get_fail.sh index a94ad80f6..f4a6102e3 100755 --- a/tests/grib_get_fail.sh +++ b/tests/grib_get_fail.sh @@ -32,5 +32,24 @@ set -e [ $status -ne 0 ] grep -q "Nh (Key/value not found)" $tempText + +# Nearest +# --------- +set +e +${tools_dir}/grib_get -s Nj=MISSING -l 0,0,1 $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Key Nj cannot be 'missing'" $tempText + +set +e +${tools_dir}/grib_get -s Nj=0 -l 0,0,1 $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Key Nj cannot be 0" $tempText + + + # Clean up rm -f $tempText From 2308878ef2f64caf23d9344b4da2d383d8ba480a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 17:52:08 +0000 Subject: [PATCH 198/469] Non-alpha: no need for pack_xxx functions if read-only --- src/grib_accessor_class_non_alpha.cc | 32 ++++++---------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index e0f52f4d9..bec790fd2 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -15,9 +15,9 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_gen - IMPLEMENTS = unpack_string;pack_string - IMPLEMENTS = unpack_long;pack_long - IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_string + IMPLEMENTS = unpack_long + IMPLEMENTS = unpack_double IMPLEMENTS = init;dump;string_length IMPLEMENTS = value_count IMPLEMENTS = next_offset @@ -38,9 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_double(grib_accessor*, const double* val, size_t* len); -static int pack_long(grib_accessor*, const long* val, size_t* len); -static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); @@ -79,13 +76,13 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ + 0, /* pack_double */ 0, /* pack_float */ &unpack_double, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ + 0, /* pack_string */ &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ @@ -171,23 +168,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - -static int pack_long(grib_accessor* a, const long* v, size_t* len) -{ - grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as an integer", a->name); - return GRIB_NOT_IMPLEMENTED; -} - -static int pack_double(grib_accessor* a, const double* v, size_t* len) -{ - grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as a double", a->name); - return GRIB_NOT_IMPLEMENTED; -} - static int unpack_long(grib_accessor* a, long* v, size_t* len) { char val[1024] = {0,}; From e078c6af64a9134919873599f1bff3bca180c418 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 17:52:47 +0000 Subject: [PATCH 199/469] Testing: Increase coverage: metar non-alpha keys --- tests/metar_get.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/metar_get.sh b/tests/metar_get.sh index 25613ce04..7f69c4dfb 100755 --- a/tests/metar_get.sh +++ b/tests/metar_get.sh @@ -39,5 +39,11 @@ ${tools_dir}/metar_get -w count=1/2/3 -p CCCC,latitude,longitude,dateTime,elevat result=$( ${tools_dir}/metar_get -p visibilityInMetres:i,visibilityInMetres:d -w count=1 $metar_file ) [ "$result" = "6000 6000" ] +# non-alpha keys +# ---------------- +result=$(${tools_dir}/metar_get -w count=1 -p na:i,na:d $metar_file) +[ "$result" = "0 0" ] + + # Clean up rm -f $fLog From 5cbc79fd3649e9d2f3584e872f25f29d4c3d0a75 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 17:54:09 +0000 Subject: [PATCH 200/469] Testing: Increase coverage: JPEG decoding --- src/grib_jasper_encoding.cc | 8 +++----- src/grib_openjpeg_encoding.cc | 4 ++-- tests/grib_jpeg.sh | 12 +++++++++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/grib_jasper_encoding.cc b/src/grib_jasper_encoding.cc index 815fe376b..ac545555a 100644 --- a/src/grib_jasper_encoding.cc +++ b/src/grib_jasper_encoding.cc @@ -273,19 +273,17 @@ int grib_jasper_encode(grib_context* c, j2k_encode_helper* helper) return code; } -#else +#else // HAVE_LIBJASPER int grib_jasper_decode(grib_context* c, unsigned char* buf, const size_t* buflen, double* val, const size_t* n_vals) { - grib_context_log(c, GRIB_LOG_ERROR, - "grib_accessor_data_jpeg2000_packing: JasPer JPEG support not enabled."); + grib_context_log(c, GRIB_LOG_ERROR, "grib_jasper_decode: JasPer JPEG support not enabled."); return GRIB_FUNCTIONALITY_NOT_ENABLED; } int grib_jasper_encode(grib_context* c, j2k_encode_helper* helper) { - grib_context_log(c, GRIB_LOG_ERROR, - "grib_accessor_data_jpeg2000_packing: JasPer JPEG support not enabled."); + grib_context_log(c, GRIB_LOG_ERROR, "grib_jasper_encode: JasPer JPEG support not enabled."); return GRIB_FUNCTIONALITY_NOT_ENABLED; } diff --git a/src/grib_openjpeg_encoding.cc b/src/grib_openjpeg_encoding.cc index 1c08de603..6b726a97a 100644 --- a/src/grib_openjpeg_encoding.cc +++ b/src/grib_openjpeg_encoding.cc @@ -546,13 +546,13 @@ int grib_openjpeg_decode(grib_context* c, unsigned char* buf, const size_t* bufl int grib_openjpeg_decode(grib_context* c, unsigned char* buf, const size_t* buflen, double* val, const size_t* n_vals) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled."); + grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_decode: OpenJPEG JPEG support not enabled."); return GRIB_FUNCTIONALITY_NOT_ENABLED; } int grib_openjpeg_encode(grib_context* c, j2k_encode_helper* helper) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled."); + grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encode: OpenJPEG JPEG support not enabled."); return GRIB_FUNCTIONALITY_NOT_ENABLED; } diff --git a/tests/grib_jpeg.sh b/tests/grib_jpeg.sh index dfe8a8f61..69210430e 100755 --- a/tests/grib_jpeg.sh +++ b/tests/grib_jpeg.sh @@ -156,5 +156,15 @@ ECCODES_GRIB_DUMP_JPG_FILE=$tempDump ${tools_dir}/grib_copy -r $data_dir/jpeg.g [ -f $tempDump ] rm -f $tempDump +# Check Jasper decoding when it is disabled +if [ $HAVE_LIBJASPER -eq 0 ]; then + set +e + ECCODES_GRIB_JPEG=jasper ${tools_dir}/grib_get -n statistics $data_dir/jpeg.grib2 > $tempDump 2>&1 + status=$? + set -e + [ $status -ne 0 ] + grep -q "JasPer JPEG support not enabled" $tempDump +fi + # Clean up -rm -f $tempFilt $tempGrib +rm -f $tempFilt $tempGrib $tempDump From 84d8265b9a5fa5f115b136cdd609accf5c25aef6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 18:45:00 +0000 Subject: [PATCH 201/469] Dead code removal --- src/grib_accessor_class_non_alpha.cc | 44 +--------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index bec790fd2..55ee9f917 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -22,7 +22,6 @@ IMPLEMENTS = value_count IMPLEMENTS = next_offset IMPLEMENTS = get_native_type - IMPLEMENTS = compare END_CLASS_DEF */ @@ -46,7 +45,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_non_alpha { @@ -95,7 +93,7 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -213,46 +211,6 @@ static int unpack_double(grib_accessor* a, double* v, size_t* len) return GRIB_NOT_IMPLEMENTED; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - char* aval = 0; - char* bval = 0; - int err = 0; - - size_t alen = 0; - size_t blen = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); - bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); - - grib_unpack_string(a, aval, &alen); - grib_unpack_string(b, bval, &blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval, bval)) - retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} - static long next_offset(grib_accessor* a) { return a->offset + a->length; From 3826d7202447f79e4a04ae509a906269d99b51e0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 18:53:07 +0000 Subject: [PATCH 202/469] Dead code removal --- ...ib_accessor_class_g1_half_byte_codeflag.cc | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.cc b/src/grib_accessor_class_g1_half_byte_codeflag.cc index 522eb9ee1..c275253e5 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.cc +++ b/src/grib_accessor_class_g1_half_byte_codeflag.cc @@ -19,7 +19,6 @@ IMPLEMENTS = unpack_long;pack_long IMPLEMENTS = init;dump IMPLEMENTS = get_native_type - IMPLEMENTS = compare END_CLASS_DEF */ @@ -39,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_g1_half_byte_codeflag { @@ -88,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -150,34 +148,3 @@ static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; } - -static int compare(grib_accessor* a, grib_accessor* b) -{ - long aval = 0; - long bval = 0; - - long count = 0; - size_t alen = 0; - size_t blen = 0; - int err = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != 1 || blen != 1) - return GRIB_COUNT_MISMATCH; - - grib_unpack_long(a, &aval, &alen); - grib_unpack_long(b, &bval, &blen); - - if (bval != aval) - return GRIB_VALUE_MISMATCH; - return GRIB_SUCCESS; -} From cf66422eee6667e6143b41ef924fdf837efa27e9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Dec 2023 20:05:56 +0000 Subject: [PATCH 203/469] Testing: GDS Present --- tests/grib_set.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 8635c77d8..ccfb2538c 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -99,6 +99,11 @@ grib_check_key_equals $input 'typeOfProcessedData:i' '2' ${tools_dir}/grib_set -s typeOfProcessedData=rubbish $input $outfile grib_check_key_equals $outfile 'typeOfProcessedData:i' '255' # set to default +# GDSPresent +# ------------ +input=$ECCODES_SAMPLES_PATH/GRIB1.tmpl +${tools_dir}/grib_set -s GDSPresent=1 $input $outfile + # Clean up rm -f $outfile $temp From 075760afc83eb66d86d73b76364f51303f9f7181 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Dec 2023 15:09:34 +0000 Subject: [PATCH 204/469] Testing: transient darray --- src/grib_accessor_class_transient_darray.cc | 72 +++------------------ tests/CMakeLists.txt | 1 + tests/filter_transient_darray.sh | 43 ++++++++++++ 3 files changed, 54 insertions(+), 62 deletions(-) create mode 100755 tests/filter_transient_darray.sh diff --git a/src/grib_accessor_class_transient_darray.cc b/src/grib_accessor_class_transient_darray.cc index 9a316459b..ba830849a 100644 --- a/src/grib_accessor_class_transient_darray.cc +++ b/src/grib_accessor_class_transient_darray.cc @@ -19,7 +19,7 @@ IMPLEMENTS = unpack_double;pack_double IMPLEMENTS = unpack_long;pack_long;destroy IMPLEMENTS = init;dump;value_count - IMPLEMENTS = compare;get_native_type + IMPLEMENTS = get_native_type MEMBERS=grib_darray* arr MEMBERS=int type; END_CLASS_DEF @@ -45,7 +45,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_transient_darray { @@ -96,7 +95,7 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -119,23 +118,20 @@ static void init(grib_accessor* a, const long length, grib_arguments* args) a->length = 0; } - static void dump(grib_accessor* a, grib_dumper* dumper) { - /* grib_accessor_transient_darray *self = (grib_accessor_transient_darray*)a; */ grib_dump_double(dumper, a, NULL); } static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; - size_t i; if (self->arr) grib_darray_delete(a->context, self->arr); self->arr = grib_darray_new(a->context, *len, 10); - for (i = 0; i < *len; i++) + for (size_t i = 0; i < *len; i++) grib_darray_push(a->context, self->arr, val[i]); return GRIB_SUCCESS; @@ -144,13 +140,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; - size_t i; if (self->arr) grib_darray_delete(a->context, self->arr); self->arr = grib_darray_new(a->context, *len, 10); - for (i = 0; i < *len; i++) + for (size_t i = 0; i < *len; i++) grib_darray_push(a->context, self->arr, (double)val[i]); return GRIB_SUCCESS; @@ -159,8 +154,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; - long count = 0; - size_t i; + long count = 0; value_count(a, &count); @@ -170,17 +164,16 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } *len = count; - for (i = 0; i < *len; i++) + for (size_t i = 0; i < *len; i++) val[i] = self->arr->v[i]; - return GRIB_SUCCESS; } + static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; - long count = 0; - size_t i; + long count = 0; value_count(a, &count); @@ -190,14 +183,12 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } *len = count; - for (i = 0; i < *len; i++) + for (size_t i = 0; i < *len; i++) val[i] = (long)self->arr->v[i]; - return GRIB_SUCCESS; } - static void destroy(grib_context* c, grib_accessor* a) { grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; @@ -216,51 +207,8 @@ static int value_count(grib_accessor* a, long* count) return 0; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - double* aval = 0; - double* bval = 0; - - size_t alen = 0; - size_t blen = 0; - int err = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (double*)grib_context_malloc(a->context, alen * sizeof(double)); - bval = (double*)grib_context_malloc(b->context, blen * sizeof(double)); - - grib_unpack_double(a, aval, &alen); - grib_unpack_double(b, bval, &blen); - - retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) - retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; - } - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} - static int get_native_type(grib_accessor* a) { - grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; + const grib_accessor_transient_darray* self = (grib_accessor_transient_darray*)a; return self->type; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 01c2c59b2..7929676db 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -96,6 +96,7 @@ if( HAVE_BUILD_TOOLS ) grib_ifsParam grib_packing_order filter_substr + filter_transient_darray grib_uerra grib_ecpoint grib_s2s diff --git a/tests/filter_transient_darray.sh b/tests/filter_transient_darray.sh new file mode 100755 index 000000000..49024fa79 --- /dev/null +++ b/tests/filter_transient_darray.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="filter_transient_darray_test" + +tempOut=temp.$label.out +tempRef=temp.$label.ref +tempFilt=temp.$label.filt +sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +cat > $tempFilt < $tempOut + +cat > $tempRef < Date: Wed, 27 Dec 2023 16:07:01 +0000 Subject: [PATCH 205/469] Testing: Secondary bitmaps (GRIB2) --- ..._accessor_class_data_g2secondary_bitmap.cc | 20 ++++------- tests/CMakeLists.txt | 1 + tests/grib_secondary_bitmap.sh | 33 +++++++++++++++++++ 3 files changed, 40 insertions(+), 14 deletions(-) create mode 100755 tests/grib_secondary_bitmap.sh diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index ee9f8f0be..7511b78cf 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -108,35 +108,27 @@ grib_accessor_class* grib_accessor_class_data_g2secondary_bitmap = &_grib_access static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_g2secondary_bitmap* self = (grib_accessor_data_g2secondary_bitmap*)a; - self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, 4); + self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, 4); } static int value_count(grib_accessor* a, long* len) { grib_accessor_data_g2secondary_bitmap* self = (grib_accessor_data_g2secondary_bitmap*)a; - *len = 0; - + *len = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, len); } static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_g2secondary_bitmap* self = (grib_accessor_data_g2secondary_bitmap*)a; - int err = 0; - long primary_len = 0; - long secondary_len = 0; + long primary_len = 0, secondary_len = 0; double* primary_bitmap = NULL; double* secondary_bitmap = NULL; - long i = 0; - long j = 0; - long on = 0; - long k; - long m; - double missing_value = 0; - double present_value = 0; - long expand_by = 0; + long i = 0, j = 0, on = 0, k = 0, m = 0; + double missing_value = 0, present_value = 0; + long expand_by = 0; if (*len == 0) return GRIB_NO_VALUES; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7929676db..e2b24c9e2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -305,6 +305,7 @@ if( HAVE_BUILD_TOOLS ) grib_level grib_indexing grib_bitmap + grib_secondary_bitmap grib_list grib_second_order grib_multi_from_message diff --git a/tests/grib_secondary_bitmap.sh b/tests/grib_secondary_bitmap.sh new file mode 100755 index 000000000..90961b4c0 --- /dev/null +++ b/tests/grib_secondary_bitmap.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_secondary_bitmap_test" +tempGribA=temp.$label.A.grib +tempGribB=temp.$label.B.grib +tempFilt=temp.$label.filt +tempLog=temp.$label.log +tempRef=temp.$label.ref + +# Use a GRIB2 input with a bitmap +input=$data_dir/reduced_latlon_surface.grib2 +grib_check_key_equals $input bitmapPresent 1 +${tools_dir}/grib_set -s packingType=grid_simple_matrix,NC=1,NR=1 $input $tempGribA +${tools_dir}/grib_set -s matrixBitmapsPresent=1 $tempGribA $tempGribB +${tools_dir}/grib_dump -O $tempGribB + +# Call pack_double +cat >$tempFilt< Date: Wed, 27 Dec 2023 16:18:10 +0000 Subject: [PATCH 206/469] Testing: Secondary bitmaps (GRIB2) --- tests/grib_secondary_bitmap.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/grib_secondary_bitmap.sh b/tests/grib_secondary_bitmap.sh index 90961b4c0..11af77e6b 100755 --- a/tests/grib_secondary_bitmap.sh +++ b/tests/grib_secondary_bitmap.sh @@ -23,10 +23,12 @@ grib_check_key_equals $input bitmapPresent 1 ${tools_dir}/grib_set -s packingType=grid_simple_matrix,NC=1,NR=1 $input $tempGribA ${tools_dir}/grib_set -s matrixBitmapsPresent=1 $tempGribA $tempGribB ${tools_dir}/grib_dump -O $tempGribB +${tools_dir}/grib_dump -Dat $tempGribB -# Call pack_double +# Call pack_double and unpack_double cat >$tempFilt< Date: Wed, 27 Dec 2023 16:47:45 +0000 Subject: [PATCH 207/469] Dead code removal --- src/grib_accessor_class_bufr_data_array.cc | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 50978b06f..ec0baa494 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -23,7 +23,6 @@ IMPLEMENTS = byte_count; value_count IMPLEMENTS = byte_offset; unpack_double IMPLEMENTS = get_native_type - IMPLEMENTS = compare IMPLEMENTS = pack_long; unpack_double; pack_double MEMBERS = const char* bufrDataEncodedName MEMBERS = const char* numberOfSubsetsName @@ -98,7 +97,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_bufr_data_array { @@ -194,7 +192,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -474,11 +472,6 @@ static long next_offset(grib_accessor* a) return a->offset; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_bufr_data_array* self = (grib_accessor_bufr_data_array*)a; From 3da53884b4f65506425d71236f9369eaf812c7a4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Dec 2023 17:53:35 +0000 Subject: [PATCH 208/469] Testing: BUFR overridden ref vals --- tests/bufr_ecc-680.sh | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/bufr_ecc-680.sh b/tests/bufr_ecc-680.sh index d06f56759..6669c030e 100755 --- a/tests/bufr_ecc-680.sh +++ b/tests/bufr_ecc-680.sh @@ -72,9 +72,38 @@ EOF set +e ${tools_dir}/codes_bufr_filter -o $tempBufr $tempFilt $sample_bufr4 2>$tempText status=$? -[ $status -ne 0 ] set -e +[ $status -ne 0 ] fgrep -q "Value (-416) out of range" $tempText +# Error conditions +# ------------------ +cat > $tempFilt < $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +fgrep -q "number of overridden reference values (2) different from number of descriptors between operator 203YYY and 203255" $tempText + + +cat > $tempFilt < $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +fgrep -q "does not fit in 14 bits" $tempText + + + # Clean up rm -f $tempBufr $tempFilt $tempText From 4d079fb3ef77b9ccb228e74bc7f4c90576b5d2b4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Dec 2023 18:08:22 +0000 Subject: [PATCH 209/469] Testing: GRIB 2nd-order row by row encoding --- tests/grib_second_order.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/grib_second_order.sh b/tests/grib_second_order.sh index a50c8f681..37bc89cd5 100755 --- a/tests/grib_second_order.sh +++ b/tests/grib_second_order.sh @@ -201,6 +201,13 @@ ${tools_dir}/grib_ls -l46,1 $temp1 > $REDIRECT ${tools_dir}/grib_ls -j -l46,1,1 $temp1 > $REDIRECT +# Encoding +input=second_ord_rbr.grib1 +${tools_dir}/grib_set -s scaleValuesBy=1.01 $input $temp1 +${tools_dir}/grib_dump $temp1 +grib_check_key_equals $temp1 packingType grid_second_order + + # Clean up rm -f $temp_stat1 $temp_stat2 rm -f $temp1 $temp2 $temp3 $sec_ord_bmp From 547ea60f6f42dd3311abf3897756cb8e6f2afc3b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Dec 2023 18:31:59 +0000 Subject: [PATCH 210/469] Testing: tools error conditions --- tests/bufr_set.sh | 35 ++++++++++++++++++++++------------- tests/grib_dump.sh | 20 ++++++++++++++++++++ tools/bufr_set.cc | 13 ------------- 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index f8d78aba5..f8224c0e1 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -10,8 +10,6 @@ . ./include.ctest.sh -#set -x - # Enter data dir cd ${data_dir}/bufr @@ -26,10 +24,9 @@ touch $fLog # Define tmp bufr file fBufrTmp=${label}".bufr.tmp" -#---------------------------------------------------- +#----------------------------------------------- # Test: setting header for single message file -#---------------------------------------------------- - +#----------------------------------------------- rm -f $fBufrTmp f="syno_1.bufr" @@ -43,7 +40,6 @@ centre=`${tools_dir}/bufr_get -p bufrHeaderCentre $fBufrTmp` #---------------------------------------------------- # Test: setting header for multi-message file #---------------------------------------------------- - rm -f $fBufrTmp f="syno_multi.bufr" @@ -60,7 +56,6 @@ done #----------------------------------------------------- # Test: setting data values for single message file #----------------------------------------------------- - # TODO: when ECC-37 is fixed we need to enable it. rm -f $fBufrTmp @@ -77,7 +72,6 @@ echo "file: $f" >> $fLog #---------------------------------------------------- # Test: setting header for multi-message file #---------------------------------------------------- - # TODO: when ECC-37 is fixed we need to enable it. rm -f $fBufrTmp @@ -93,13 +87,22 @@ echo "file: $f" >> $fLog #done #----------------------------------------------------------- -# Test: with nonexistent keys. +# Test: No keys set +#----------------------------------------------------------- +set +e +${tools_dir}/bufr_set $f $fBufrTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "provide some keys to set" $fLog + +#----------------------------------------------------------- +# Test: with nonexistent keys #----------------------------------------------------------- # Key "center" does not exist!! # Invoke without -f i.e. should fail if error encountered set +e - f="syno_1.bufr" echo "Test: nonexistent keys" >> $fLog echo "file: $f" >> $fLog @@ -117,12 +120,10 @@ ${tools_dir}/bufr_set -f -s center=98 $f $fBufrTmp 2>>$fLog 1>>$fLog #----------------------------------------------------------- # Test: with not allowed key values #----------------------------------------------------------- - # Here 1024 is out of range for centre (it is 8-bit only for edition=3 files) # Invoke without -f i.e. should fail if error encountered set +e - f="syno_1.bufr" echo "Test: nonexistent keys" >> $fLog echo "file: $f" >> $fLog @@ -184,7 +185,6 @@ ${tools_dir}/bufr_set -s messageLength:s=333 $sample $fBufrTmp result=`${tools_dir}/bufr_get -p messageLength $fBufrTmp` [ "$result" = "333" ] - #----------------------------------------------------------- # Invalid masterTablesVersionNumber #----------------------------------------------------------- @@ -210,6 +210,15 @@ set -e grep -q "ECCODES ERROR.*unable to get hash value for sequences" $fLog +# Unreadable message +#----------------------------------------------------------- +echo BUFR > $fBufrTmp +set +e +${tools_dir}/bufr_set -s masterTablesVersionNumber=10 $fBufrTmp /dev/null > $fLog 2>&1 +status=$? +set -e +grep -q "unreadable message" $fLog + # Clean up rm -f $fLog diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index 472e11d6e..33655a60a 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -108,5 +108,25 @@ ${tools_dir}/grib_dump -w count=4 $file > $temp 2>&1 ECCODES_DEBUG=1 ${tools_dir}/grib_dump $data_dir/sample.grib2 + +# Unreadable message +#----------------------------------------------------------- +tempOut=temp.$label.out +echo GRIB > $temp + +set +e +${tools_dir}/grib_dump $temp > $tempOut 2>&1 +status=$? +set -e +grep -q "unreadable message" $tempOut + +set +e +${tools_dir}/grib_dump -j $temp > $tempOut 2>&1 +status=$? +set -e +grep -q "unreadable message" $tempOut + +rm -f $tempOut + # Clean up rm -f $temp diff --git a/tools/bufr_set.cc b/tools/bufr_set.cc index 4bb055fb9..687127987 100644 --- a/tools/bufr_set.cc +++ b/tools/bufr_set.cc @@ -13,9 +13,6 @@ grib_option grib_options[] = { /* {id, args, help}, on, command_line, value*/ { "s:", 0, 0, 1, 1, 0 }, - /* {"r",0,0,0,1,0}, */ - /* {"d:",0,0,0,1,0},*/ - /* {"n:","noise percentage","\n\t\tAdd noise to the data values. The noise added is the given percentage of the data value.\n",0,1,0},*/ { "p:", 0, 0, 1, 1, 0 }, { "P:", 0, 0, 0, 1, 0 }, { "w:", "key[:{s|d|i}]=value,key[:{s|d|i}]=value,...", @@ -32,7 +29,6 @@ grib_option grib_options[] = { { "U", 0, 0, 1, 0, 0 }, { "V", 0, 0, 0, 1, 0 }, { "g", 0, 0, 0, 1, 0 }, - /* {"G",0,0,0,1,0}, */ { "T:", 0, 0, 1, 0, "B" }, { "f", 0, 0, 0, 1, 0 }, { "v", 0, 0, 0, 1, 0 }, @@ -67,15 +63,6 @@ int grib_tool_init(grib_runtime_options* options) } if (options->verbose) options->print_header = 1; - /*if (grib_options_on("n:")) { - noise=atof(grib_options_get_option("n:")); - options->repack=1; - }*/ - - if (grib_options_on("n:") && grib_options_on("d:")) { - fprintf(stderr, "ERROR: -n and -d options are incompatible. Choose one of the two please.\n"); - exit(1); - } // if (options->outfile && options->outfile->name) { // options->outfile->file = fopen(options->outfile->name,"w"); From 889385e3da6f9e7fd7fe827f64adf58a4eb803d1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Dec 2023 19:29:31 +0000 Subject: [PATCH 211/469] Testing: bufr_compare errors --- tests/bufr_compare.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index b0fe1382c..fb0b11ea9 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -45,7 +45,7 @@ f1="syno_1.bufr" f2="aaen_55.bufr" echo "Test: comparing two completely different files" >> $fLog echo "file: $f" >> $fLog -${tools_dir}/bufr_compare $f1 $f2 >> $fLog +${tools_dir}/bufr_compare -v $f1 $f2 >> $fLog if [ $? -eq 0 ]; then echo "bufr_compare should have failed if files are completely different" >&2 exit 1 @@ -310,6 +310,24 @@ set -e ${tools_dir}/bufr_compare -bident -v $tempIndex1 $tempIndex2 rm -f $tempIndex1 $tempIndex2 +# Fail to unpack +# --------------- +bufr1=vos308014_v3_26.bufr +bufr2=aaen_55.bufr +set +e +${tools_dir}/bufr_compare $bufr1 $bufr2 > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Failed to unpack 1st message" $fLog + +set +e +${tools_dir}/bufr_compare $bufr2 $bufr1 > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Failed to unpack 2nd message" $fLog + # Clean up # ------------- From ab0c9dd71efee4c61eddbfc74483f16ff821cb74 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Dec 2023 15:39:05 +0000 Subject: [PATCH 212/469] Fortran: Only single underscore methods are used? (trial) --- fortran/grib_fortran.c | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 8a4963e10..1a490a93c 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1184,9 +1184,6 @@ int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { GRIB_MUTEX_UNLOCK(&keys_iterator_mutex) return ret; } -int grib_f_keys_iterator_new(int* gid,int* iterid,char* name_space,int len) { - return grib_f_keys_iterator_new_(gid,iterid,name_space,len); -} /*****************************************************************************/ int grib_f_keys_iterator_next_(int* iterid) { @@ -1195,27 +1192,17 @@ int grib_f_keys_iterator_next_(int* iterid) { return grib_keys_iterator_next(iter); } -int grib_f_keys_iterator_next(int* iterid) { - return grib_f_keys_iterator_next_(iterid); -} /*****************************************************************************/ int grib_f_keys_iterator_delete_(int* iterid) { return clear_keys_iterator(*iterid); } -int grib_f_keys_iterator_delete(int* iterid) { - return grib_f_keys_iterator_delete_(iterid); -} /*****************************************************************************/ int grib_f_gribex_mode_on_() { grib_gribex_mode_on(0); return GRIB_SUCCESS; } -int grib_f_gribex_mode_on() { - grib_gribex_mode_on(0); - return GRIB_SUCCESS; -} int grib_f_gribex_mode_off_() { grib_gribex_mode_off(0); @@ -2434,9 +2421,6 @@ int grib_f_set_real4_(int* gid, char* key, float* val, int len){ return grib_set_double(h, cast_char(buf,key,len), val8); } -int grib_f_set_real4(int* gid, char* key, float* val, int len){ - return grib_f_set_real4_( gid, key, val, len); -} int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int len){ @@ -2451,9 +2435,6 @@ int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int le *val = val8; return err; } -int grib_f_get_real4_element(int* gid, char* key,int* index, float* val,int len){ - return grib_f_get_real4_element_( gid, key, index, val, len); -} int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* size, int len){ @@ -2483,9 +2464,6 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s return err; } -int grib_f_get_real4_elements(int* gid, char* key,int* index, float* val,int* len,int size){ - return grib_f_get_real4_elements_( gid, key, index, val, len,size); -} int grib_f_get_real4_(int* gid, char* key, float* val, int len){ From afc43e9973732c0afa8a97c2cdd0d660110e92f8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Dec 2023 16:58:40 +0000 Subject: [PATCH 213/469] Fortran: Only single underscore methods should be used --- fortran/grib_fortran.c | 346 +---------------------------------------- 1 file changed, 3 insertions(+), 343 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 1a490a93c..e5c1dda2e 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -856,9 +856,6 @@ int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbyt return GRIB_INVALID_FILE; } } -int grib_f_read_any_headers_only_from_file(int* fid, char* buffer, size_t* nbytes) { - return grib_f_read_any_headers_only_from_file_(fid,buffer,nbytes); -} /*****************************************************************************/ int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { @@ -874,9 +871,6 @@ int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_read_any_from_file(int* fid, void* buffer, size_t* nbytes) { - return grib_f_read_any_from_file_(fid,buffer,nbytes); -} /*****************************************************************************/ int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) { @@ -896,9 +890,6 @@ int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_write_file(int* fid, void* buffer, size_t* nbytes) { - return grib_f_write_file_(fid,buffer,nbytes); -} /*****************************************************************************/ int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) { @@ -918,9 +909,6 @@ int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) { return GRIB_INVALID_FILE; } } -int grib_f_read_file(int* fid, void* buffer, size_t* nbytes) { - return grib_f_read_file_(fid,buffer,nbytes); -} /*****************************************************************************/ int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { @@ -968,17 +956,11 @@ int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { } return ret; } -int grib_f_open_file(int* fid, char* name , char* op, int lname, int lop){ - return grib_f_open_file_(fid, name, op, lname, lop); -} /*****************************************************************************/ int grib_f_close_file_(int* fid){ return clear_file(*fid); } -int grib_f_close_file(int* fid){ - return grib_f_close_file_(fid); -} /*****************************************************************************/ static int file_count=0; @@ -1009,17 +991,11 @@ int grib_f_multi_support_on_(){ grib_multi_support_on(0); return GRIB_SUCCESS; } -int grib_f_multi_support_on(){ - return grib_f_multi_support_on_(); -} int grib_f_multi_support_off_(){ grib_multi_support_off(0); return GRIB_SUCCESS; } -int grib_f_multi_support_off(){ - return grib_f_multi_support_off_(); -} /*****************************************************************************/ #ifdef FORTRAN_GEOITERATOR_SUPPORT @@ -1136,25 +1112,16 @@ int grib_f_iterator_new_(int* gid,int* iterid,int* mode) { GRIB_MUTEX_UNLOCK(&iterator_mutex) return ret; } -int grib_f_iterator_new(int* gid,int* iterid,int* mode) { - return grib_f_iterator_new_(gid,iterid,mode); -} /*****************************************************************************/ int grib_f_iterator_next_(int* iterid,double* lat,double* lon,double* value) { grib_iterator* iter=get_iterator(*iterid); if (!iter) return GRIB_INVALID_ITERATOR; return grib_iterator_next(iter,lat,lon,value); } -int grib_f_iterator_next(int* iterid,double* lat,double* lon,double* value) { - return grib_f_iterator_next_(iterid,lat,lon,value); -} /*****************************************************************************/ int grib_f_iterator_delete_(int* iterid) { return clear_iterator(*iterid); } -int grib_f_iterator_delete(int* iterid) { - return grib_f_iterator_delete_(iterid); -} #endif /*FORTRAN_GEOITERATOR_SUPPORT*/ /*****************************************************************************/ @@ -1208,10 +1175,6 @@ int grib_f_gribex_mode_off_() { grib_gribex_mode_off(0); return GRIB_SUCCESS; } -int grib_f_gribex_mode_off() { - grib_gribex_mode_off(0); - return GRIB_SUCCESS; -} /*****************************************************************************/ int grib_f_skip_computed_(int* iterid) { @@ -1219,54 +1182,36 @@ int grib_f_skip_computed_(int* iterid) { if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_COMPUTED); } -int grib_f_skip_computed(int* iterid) { - return grib_f_skip_computed_(iterid); -} int grib_f_skip_coded_(int* iterid) { grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_CODED); } -int grib_f_skip_coded(int* iterid) { - return grib_f_skip_coded_(iterid); -} int grib_f_skip_edition_specific_(int* iterid) { grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC); } -int grib_f_skip_edition_specific(int* iterid) { - return grib_f_skip_edition_specific_(iterid); -} int grib_f_skip_duplicates_(int* iterid) { grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_DUPLICATES); } -int grib_f_skip_duplicates(int* iterid) { - return grib_f_skip_duplicates_(iterid); -} int grib_f_skip_read_only_(int* iterid) { grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_READ_ONLY); } -int grib_f_skip_read_only(int* iterid) { - return grib_f_skip_read_only_(iterid); -} int grib_f_skip_function_(int* iterid) { grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_FUNCTION); } -int grib_f_skip_function(int* iterid) { - return grib_f_skip_function_(iterid); -} /*****************************************************************************/ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { @@ -1289,9 +1234,6 @@ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { return 0; } -int grib_f_keys_iterator_get_name(int* kiter,char* name,int len) { - return grib_f_keys_iterator_get_name_(kiter,name,len); -} /*****************************************************************************/ int grib_f_keys_iterator_rewind_(int* kiter) { @@ -1300,9 +1242,6 @@ int grib_f_keys_iterator_rewind_(int* kiter) { if (!i) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_rewind(i); } -int grib_f_keys_iterator_rewind(int* kiter) { - return grib_f_keys_iterator_rewind_(kiter); -} /* BUFR keys iterator */ /*****************************************************************************/ @@ -1332,9 +1271,6 @@ int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { GRIB_MUTEX_UNLOCK(&keys_iterator_mutex) return ret; } -int codes_f_bufr_keys_iterator_new(int* gid,int* iterid) { - return codes_f_bufr_keys_iterator_new_(gid,iterid); -} /*****************************************************************************/ int codes_f_bufr_keys_iterator_next_(int* iterid) { bufr_keys_iterator* iter=get_bufr_keys_iterator(*iterid); @@ -1342,9 +1278,7 @@ int codes_f_bufr_keys_iterator_next_(int* iterid) { return codes_bufr_keys_iterator_next(iter); } -int codes_f_bufr_keys_iterator_next(int* iterid) { - return codes_f_bufr_keys_iterator_next_(iterid); -} + /*****************************************************************************/ int codes_f_bufr_keys_iterator_get_name_(int* iterid,char* name,int len) { size_t lsize=len; @@ -1366,9 +1300,6 @@ int codes_f_bufr_keys_iterator_get_name_(int* iterid,char* name,int len) { return 0; } -int codes_f_bufr_keys_iterator_get_name(int* kiter,char* name,int len) { - return codes_f_bufr_keys_iterator_get_name_(kiter,name,len); -} /*****************************************************************************/ int codes_f_bufr_keys_iterator_rewind_(int* kiter) { bufr_keys_iterator* i=get_bufr_keys_iterator(*kiter); @@ -1376,16 +1307,11 @@ int codes_f_bufr_keys_iterator_rewind_(int* kiter) { if (!i) return GRIB_INVALID_KEYS_ITERATOR; return codes_bufr_keys_iterator_rewind(i); } -int codes_f_bufr_keys_iterator_rewind(int* kiter) { - return codes_f_bufr_keys_iterator_rewind_(kiter); -} + /*****************************************************************************/ int codes_f_bufr_keys_iterator_delete_(int* iterid) { return clear_bufr_keys_iterator(*iterid); } -int codes_f_bufr_keys_iterator_delete(int* iterid) { - return codes_f_bufr_keys_iterator_delete_(iterid); -} /*****************************************************************************/ int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { @@ -1398,18 +1324,12 @@ int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message(int* gid, void* buffer, size_t* bufsize){ - return grib_f_new_from_message_(gid, buffer, bufsize); -} /* See SUP-3893: Need to provide an 'int' version */ int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) { /* Call the version with void pointer */ return grib_f_new_from_message_(gid, (void*)buffer, bufsize); } -int grib_f_new_from_message_int(int* gid, int* buffer, size_t* bufsize){ - return grib_f_new_from_message_int_(gid, buffer, bufsize); -} /*****************************************************************************/ int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ grib_handle *h = NULL; @@ -1421,9 +1341,6 @@ int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ *gid = -1; return GRIB_INTERNAL_ERROR; } -int grib_f_new_from_message_copy(int* gid, void* buffer, size_t* bufsize){ - return grib_f_new_from_message_copy_(gid, buffer, bufsize); -} /*****************************************************************************/ int grib_f_new_from_samples_(int* gid, char* name, int lname){ @@ -1438,9 +1355,6 @@ int grib_f_new_from_samples_(int* gid, char* name, int lname){ *gid = -1; return GRIB_FILE_NOT_FOUND; } -int grib_f_new_from_samples(int* gid, char* name , int lname){ - return grib_f_new_from_samples_(gid, name, lname); -} /*****************************************************************************/ int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ @@ -1455,9 +1369,6 @@ int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ *gid = -1; return GRIB_FILE_NOT_FOUND; } -int codes_bufr_f_new_from_samples(int* gid, char* name, int lname){ - return codes_bufr_f_new_from_samples_(gid, name, lname); -} /*****************************************************************************/ int grib_f_clone_(int* gidsrc,int* giddest){ @@ -1475,9 +1386,6 @@ int grib_f_clone_(int* gidsrc,int* giddest){ *giddest = -1; return GRIB_INVALID_GRIB; } -int grib_f_clone(int* gidsrc,int* giddest){ - return grib_f_clone_(gidsrc, giddest); -} /*****************************************************************************/ int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len) @@ -1494,9 +1402,7 @@ int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len) return GRIB_INVALID_GRIB; } -int grib_f_copy_key(int* gidsrc, char* name, int* giddest, int len){ - return grib_f_copy_key_(gidsrc, name, giddest, len); -} + /*****************************************************************************/ int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout){ int err=0; @@ -1512,9 +1418,6 @@ int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout){ return err; } -int grib_f_util_sections_copy(int* gidfrom,int* gidto,int* what,int *gidout){ - return grib_f_util_sections_copy_(gidfrom,gidto,what,gidout); -} /*****************************************************************************/ int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ @@ -1527,9 +1430,6 @@ int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ return GRIB_INVALID_GRIB; } -int grib_f_copy_namespace(int* gidsrc,char* name,int* giddest,int len){ - return grib_f_copy_namespace_(gidsrc,name,giddest,len); -} /*****************************************************************************/ int any_f_scan_file(int* fid,int* n) { @@ -1777,9 +1677,6 @@ int grib_f_headers_only_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_headers_only_new_from_file(int* fid, int* gid){ - return grib_f_headers_only_new_from_file_( fid, gid); -} /*****************************************************************************/ int grib_f_new_from_index_(int* iid, int* gid){ @@ -1802,9 +1699,6 @@ int grib_f_new_from_index_(int* iid, int* gid){ *gid=-1; return GRIB_INVALID_INDEX; } -int grib_f_new_from_index(int* iid, int* gid){ - return grib_f_new_from_index_(iid,gid); -} /*****************************************************************************/ int grib_f_index_new_from_file_(char* file ,char* keys ,int* gid, int lfile, int lkeys){ @@ -1829,9 +1723,6 @@ int grib_f_index_new_from_file_(char* file ,char* keys ,int* gid, int lfile, int *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_index_new_from_file(char* file, char* keys, int* gid, int lfile, int lkeys){ - return grib_f_index_new_from_file_(file ,keys ,gid, lfile, lkeys); -} /*****************************************************************************/ int grib_f_index_add_file_(int* iid, char* file, int lfile) { @@ -1846,9 +1737,6 @@ int grib_f_index_add_file_(int* iid, char* file, int lfile) { return err; } } -int grib_f_index_add_file(int* iid, char* file, int lfile) { - return grib_f_index_add_file_(iid,file,lfile); -} /*****************************************************************************/ int grib_f_index_read_(char* file, int* gid, int lfile) { @@ -1871,9 +1759,6 @@ int grib_f_index_read_(char* file, int* gid, int lfile) { *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_index_read(char* file, int* gid, int lfile) { - return grib_f_index_read_(file,gid,lfile); -} /*****************************************************************************/ int grib_f_index_write_(int* gid, char* file, int lfile) { @@ -1888,31 +1773,19 @@ int grib_f_index_write_(int* gid, char* file, int lfile) { return err; } } -int grib_f_index_write(int* gid, char* file, int lfile) { - return grib_f_index_write_(gid,file,lfile); -} /*****************************************************************************/ int grib_f_index_release_(int* hid){ return clear_index(*hid); } -int grib_f_index_release(int* hid){ - return grib_f_index_release_(hid); -} int grib_f_multi_handle_release_(int* hid){ return clear_multi_handle(*hid); } -int grib_f_multi_handle_release(int* hid){ - return grib_f_multi_handle_release_(hid); -} int grib_f_release_(int* hid){ return clear_handle(*hid); } -int grib_f_release(int* hid){ - return grib_f_release_( hid); -} /*****************************************************************************/ static void do_the_dump(grib_handle* h) @@ -1946,9 +1819,6 @@ int grib_f_dump_(int* gid){ return GRIB_SUCCESS; } -int grib_f_dump(int* gid){ - return grib_f_dump_( gid); -} /*****************************************************************************/ #ifdef USE_GRIB_PRINT @@ -1967,9 +1837,6 @@ int grib_f_print_(int* gid, char* key, int len){ return err; } } -int grib_f_print(int* gid, char* key, int len){ - return grib_f_print_(gid, key, len); -} #endif /*****************************************************************************/ int grib_f_get_error_string_(int* err, char* buf, int len){ @@ -1979,18 +1846,12 @@ int grib_f_get_error_string_(int* err, char* buf, int len){ strncpy(buf, err_msg, (size_t)erlen); /* ECC-1488 */ return GRIB_SUCCESS; } -int grib_f_get_error_string(int* err, char* buf, int len){ - return grib_f_get_error_string_(err, buf, len); -} /*****************************************************************************/ int grib_f_get_api_version_(int* apiVersion,int len){ *apiVersion = grib_get_api_version(); return GRIB_SUCCESS; } -int grib_f_get_api_version(int* apiVersion, int len){ - return grib_f_get_api_version_(apiVersion, len); -} /*****************************************************************************/ int grib_f_get_size_int_(int* gid, char* key, int* val, int len){ @@ -2007,9 +1868,6 @@ int grib_f_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_get_size_int(int* gid, char* key, int* val, int len){ - return grib_f_get_size_int_( gid, key, val, len); -} int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ grib_handle *h = get_handle(*gid); @@ -2025,9 +1883,6 @@ int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_get_size_long(int* gid, char* key, long* val, int len){ - return grib_f_get_size_long_( gid, key, val, len); -} int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ grib_index *h = get_index(*gid); @@ -2043,9 +1898,6 @@ int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ return err; } } -int grib_f_index_get_size_int(int* gid, char* key, int* val, int len){ - return grib_f_index_get_size_int_( gid, key, val, len); -} int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ grib_index *h = get_index(*gid); @@ -2061,9 +1913,6 @@ int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ return err; } } -int grib_f_index_get_size_long(int* gid, char* key, long* val, int len){ - return grib_f_index_get_size_long_( gid, key, val, len); -} int grib_f_get_int_(int* gid, char* key, int* val, int len){ grib_handle *h = get_handle(*gid); @@ -2076,9 +1925,6 @@ int grib_f_get_int_(int* gid, char* key, int* val, int len){ *val = long_val; return err; } -int grib_f_get_int(int* gid, char* key, int* val, int len){ - return grib_f_get_int_( gid, key, val, len); -} int grib_f_get_long_(int* gid, char* key, long* val, int len){ grib_handle *h = get_handle(*gid); @@ -2089,9 +1935,6 @@ int grib_f_get_long_(int* gid, char* key, long* val, int len){ err = grib_get_long(h, cast_char(buf,key,len),val); return err; } -int grib_f_get_long(int* gid, char* key, long* val, int len){ - return grib_f_get_long_( gid, key, val, len); -} /*****************************************************************************/ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ @@ -2105,9 +1948,6 @@ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ *val = type_val; return err; } -int grib_f_get_native_type(int* gid, char* key, int* val, int len){ - return grib_f_get_native_type_( gid, key, val, len); -} /*****************************************************************************/ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ @@ -2140,9 +1980,6 @@ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ grib_context_free(h->context,long_val); return err; } -int grib_f_get_int_array(int* gid, char* key, int*val, int* size, int len){ - return grib_f_get_int_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ @@ -2158,9 +1995,6 @@ int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ return err; } -int grib_f_get_long_array(int* gid, char* key, long *val, int* size, int len){ - return grib_f_get_long_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ @@ -2177,9 +2011,6 @@ int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, i return err; } -int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ - return grib_f_get_byte_array_( gid, key, val, size, len, lenv); -} /*****************************************************************************/ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* size, int len){ @@ -2220,9 +2051,6 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* return err; } -int grib_f_index_get_string(int* gid, char* key, char* val, int* eachsize, int* size, int len){ - return grib_f_index_get_string_(gid,key,val,eachsize,size,len); -} /*****************************************************************************/ int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ @@ -2237,9 +2065,6 @@ int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ *size = lsize; return err; } -int grib_f_index_get_long(int* gid, char* key, long *val, int* size, int len){ - return grib_f_index_get_long_(gid,key,val,size,len); -} /*****************************************************************************/ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ @@ -2263,9 +2088,6 @@ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ grib_context_free(h->context, lval); return err; } -int grib_f_index_get_int(int* gid, char* key, int *val, int* size, int len){ - return grib_f_index_get_int_(gid,key,val,size,len); -} /*****************************************************************************/ int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len){ @@ -2280,9 +2102,6 @@ int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len *size = lsize; return err; } -int grib_f_index_get_real8(int* gid, char* key, double *val, int* size, int len){ - return grib_f_index_get_real8_(gid,key,val,size,len); -} /*****************************************************************************/ int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ @@ -2314,9 +2133,6 @@ int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ grib_context_free(h->context,long_val); return err; } -int grib_f_set_int_array(int* gid, char* key, int* val, int* size, int len){ - return grib_f_set_int_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ @@ -2328,9 +2144,6 @@ int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ return grib_set_long_array(h, cast_char(buf,key,len), val, lsize); } -int grib_f_set_long_array(int* gid, char* key, long* val, int* size, int len){ - return grib_f_set_long_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, int len, int lenv){ @@ -2346,9 +2159,6 @@ int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, i return err; } -int grib_f_set_byte_array(int* gid, char* key, unsigned char* val, int* size, int len, int lenv){ - return grib_f_set_byte_array_( gid, key, val, size, len, lenv); -} /*****************************************************************************/ int grib_f_set_int_(int* gid, char* key, int* val, int len){ @@ -2358,9 +2168,6 @@ int grib_f_set_int_(int* gid, char* key, int* val, int len){ if(!h) return GRIB_INVALID_GRIB; return grib_set_long(h, cast_char(buf,key,len), long_val); } -int grib_f_set_int(int* gid, char* key, int* val, int len){ - return grib_f_set_int_( gid, key, val, len); -} int grib_f_set_long_(int* gid, char* key, long* val, int len){ grib_handle *h = get_handle(*gid); @@ -2368,9 +2175,6 @@ int grib_f_set_long_(int* gid, char* key, long* val, int len){ if(!h) return GRIB_INVALID_GRIB; return grib_set_long(h, cast_char(buf,key,len), *val); } -int grib_f_set_long(int* gid, char* key, long* val, int len){ - return grib_f_set_long_( gid, key, val, len); -} /*****************************************************************************/ int grib_f_set_missing_(int* gid, char* key,int len){ @@ -2394,9 +2198,6 @@ int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ *isMissing=grib_is_missing(h, cast_char(buf,key,len),&err); return err; } -int grib_f_is_missing(int* gid, char* key,int* isMissing,int len){ - return grib_f_is_missing_(gid,key,isMissing,len); -} /*****************************************************************************/ int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len){ @@ -2407,9 +2208,6 @@ int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len){ *isDefined=grib_is_defined(h, cast_char(buf,key,len)); return GRIB_SUCCESS; } -int grib_f_is_defined(int* gid, char* key,int* isDefined,int len){ - return grib_f_is_defined_(gid,key,isDefined,len); -} /*****************************************************************************/ int grib_f_set_real4_(int* gid, char* key, float* val, int len){ @@ -2454,7 +2252,6 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s if(!val8) return GRIB_OUT_OF_MEMORY; - err = grib_get_double_elements(h, cast_char(buf,key,len), index,(long)lsize,val8); for(i=0;icontext,val8); return err; } -int grib_f_set_force_real4_array(int* gid, char* key, float*val, int* size, int len){ - return grib_f_set_force_real4_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_set_real4_array_(int* gid, char* key, float* val, int* size, int len) @@ -2591,9 +2379,6 @@ int grib_f_set_real4_array_(int* gid, char* key, float* val, int* size, int len) return err; } -int grib_f_set_real4_array(int* gid, char* key, float* val, int* size, int len) { - return grib_f_set_real4_array_(gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_index_select_real8_(int* gid, char* key, double* val, int len) @@ -2604,9 +2389,6 @@ int grib_f_index_select_real8_(int* gid, char* key, double* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_double(h, cast_char(buf,key,len), *val); } -int grib_f_index_select_real8(int* gid, char* key, double* val, int len){ - return grib_f_index_select_real8_(gid,key,val,len); -} /*****************************************************************************/ int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int vallen) @@ -2624,9 +2406,6 @@ int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int val return grib_index_select_string(h, cast_char(buf,key,len), bufval); } -int grib_f_index_select_string(int* gid, char* key, char* val, int len, int vallen){ - return grib_f_index_select_string_(gid,key,val,len,vallen); -} /*****************************************************************************/ int grib_f_index_select_int_(int* gid, char* key, int* val, int len) @@ -2638,9 +2417,6 @@ int grib_f_index_select_int_(int* gid, char* key, int* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_long(h, cast_char(buf,key,len), lval); } -int grib_f_index_select_int(int* gid, char* key, int* val, int len){ - return grib_f_index_select_int_(gid,key,val,len); -} /*****************************************************************************/ int grib_f_index_select_long_(int* gid, char* key, long* val, int len) @@ -2651,9 +2427,6 @@ int grib_f_index_select_long_(int* gid, char* key, long* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_index_select_long(h, cast_char(buf,key,len), *val); } -int grib_f_index_select_long(int* gid, char* key, long* val, int len){ - return grib_f_index_select_long_(gid,key,val,len); -} /*****************************************************************************/ int grib_f_set_real8_(int* gid, char* key, double* val, int len) @@ -2664,9 +2437,6 @@ int grib_f_set_real8_(int* gid, char* key, double* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_set_double(h, cast_char(buf,key,len), *val); } -int grib_f_set_real8(int* gid, char* key, double* val, int len){ - return grib_f_set_real8_( gid, key, val, len); -} int grib_f_get_real8_(int* gid, char* key, double* val, int len) { @@ -2676,10 +2446,6 @@ int grib_f_get_real8_(int* gid, char* key, double* val, int len) if(!h) return GRIB_INVALID_GRIB; return grib_get_double(h, cast_char(buf,key,len), val); - -} -int grib_f_get_real8(int* gid, char* key, double* val, int len){ - return grib_f_get_real8_( gid, key, val, len); } int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int len){ @@ -2690,10 +2456,6 @@ int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int l if(!h) return GRIB_INVALID_GRIB; return grib_get_double_element(h, cast_char(buf,key,len), *index,val); - -} -int grib_f_get_real8_element(int* gid, char* key, int* index,double* val, int len){ - return grib_f_get_real8_element_( gid, key, index, val,len); } /*****************************************************************************/ @@ -2705,10 +2467,6 @@ int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int if(!h) return GRIB_INVALID_GRIB; return grib_get_double_elements(h, cast_char(buf,key,len), index,*size,val); - -} -int grib_f_get_real8_elements(int* gid, char* key, int* index,double* val, int* len,int size){ - return grib_f_get_real8_elements_( gid, key, index, val,len,size); } /*****************************************************************************/ @@ -2735,16 +2493,6 @@ int grib_f_find_nearest_four_single_(int* gid,int* is_lsm, grib_nearest_delete(nearest); return result; } -int grib_f_find_nearest_four_single(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_four_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} /*****************************************************************************/ int grib_f_find_nearest_single_(int* gid,int* is_lsm, @@ -2761,16 +2509,6 @@ int grib_f_find_nearest_single_(int* gid,int* is_lsm, inlats,inlons,1,outlats,outlons, values,distances,indexes); } -int grib_f_find_nearest_single(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes) { - - return grib_f_find_nearest_single_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes); -} /*****************************************************************************/ int grib_f_find_nearest_multiple_(int* gid,int* is_lsm, @@ -2787,16 +2525,6 @@ int grib_f_find_nearest_multiple_(int* gid,int* is_lsm, inlats,inlons,*npoints,outlats,outlons, values,distances,indexes); } -int grib_f_find_nearest_multiple(int* gid,int* is_lsm, - double* inlats,double* inlons, - double* outlats,double* outlons, - double* values,double* distances, - int* indexes, int* npoints) { - - return grib_f_find_nearest_multiple_(gid,is_lsm, - inlats,inlons,outlats,outlons,values, - distances,indexes,npoints); -} /*****************************************************************************/ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len){ @@ -2814,12 +2542,6 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) return err; } } -int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ - return grib_f_get_real8_array_( gid, key, val, size, len); -} -int grib_f_set_force_real8_array(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_force_real8_array_( gid, key, val, size, len); -} int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, int len){ @@ -2843,9 +2565,6 @@ int grib_f_set_real8_array_(int* gid, char* key, double*val, int* size, int len) return grib_set_double_array(h, cast_char(buf,key,len), val, lsize); } -int grib_f_set_real8_array(int* gid, char* key, double *val, int* size, int len){ - return grib_f_set_real8_array_( gid, key, val, size, len); -} /*****************************************************************************/ int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len) @@ -2876,9 +2595,6 @@ int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } -int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_get_string_array_( gid, key, val, nvals, slen, len); -} /*****************************************************************************/ int codes_f_bufr_copy_data_(int* gid1,int* gid2) @@ -2894,9 +2610,6 @@ int codes_f_bufr_copy_data_(int* gid1,int* gid2) return err; } -int codes_f_bufr_copy_data(int* gid1,int* gid2){ - return codes_f_bufr_copy_data_(gid1, gid2); -} /*****************************************************************************/ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len) @@ -2930,9 +2643,6 @@ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen return err; } -int grib_f_set_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){ - return grib_f_set_string_array_( gid, key, val, nvals, slen, len); -} /*****************************************************************************/ int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){ @@ -2952,9 +2662,6 @@ int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){ return err; } -int grib_f_get_string(int* gid, char* key, char* val, int len, int len2){ - return grib_f_get_string_( gid, key, val, len, len2); -} static int is_all_spaces(const char *s) { @@ -2986,9 +2693,6 @@ int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ return grib_set_string(h, cast_char(buf,key,len), val_str, &lsize); } -int grib_f_set_string(int* gid, char* key, char* val, int len, int len2){ - return grib_f_set_string_( gid, key, val, len, len2); -} /*****************************************************************************/ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_t* size) { @@ -3021,18 +2725,12 @@ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_ return err; } -int grib_f_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size) { - return grib_f_get_data_real4_(gid,lats,lons,values,size); -} int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) { grib_handle *h = get_handle(*gid); return grib_get_data(h,lats,lons,values); } -int grib_f_get_data_real8(int* gid,double* lats, double* lons,double* values,size_t* size) { - return grib_f_get_data_real8_(gid,lats,lons,values,size); -} /*****************************************************************************/ int grib_f_get_message_size_(int* gid, size_t *len){ @@ -3041,9 +2739,6 @@ int grib_f_get_message_size_(int* gid, size_t *len){ *len = h->buffer->ulength; return GRIB_SUCCESS; } -int grib_f_get_message_size(int* gid, size_t *len){ - return grib_f_get_message_size_( gid, len); -} /*****************************************************************************/ int grib_f_copy_message_(int* gid, void* mess, size_t* len){ @@ -3061,9 +2756,6 @@ int grib_f_copy_message_(int* gid, void* mess, size_t* len){ *len=h->buffer->ulength; return GRIB_SUCCESS; } -int grib_f_copy_message(int* gid, void* mess, size_t* len){ - return grib_f_copy_message_( gid, mess, len); -} /*****************************************************************************/ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ @@ -3079,9 +2771,6 @@ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ bufcall,bufstr,grib_get_error_message(*err)); exit(*err); } -void grib_f_check(int* err,char* call, char* key, int lencall, int lenkey){ - grib_f_check_(err,call,key,lencall,lenkey); -} /*****************************************************************************/ int grib_f_write_(int* gid, int* fid) { @@ -3101,9 +2790,6 @@ int grib_f_write_(int* gid, int* fid) { return GRIB_SUCCESS; } -int grib_f_write(int* gid, int* fid) { - return grib_f_write_(gid,fid); -} /*****************************************************************************/ int grib_f_multi_write_(int* gid, int* fid) { @@ -3115,10 +2801,6 @@ int grib_f_multi_write_(int* gid, int* fid) { return grib_multi_handle_write(h,f); } -int grib_f_multi_write(int* gid, int* fid) { - return grib_f_multi_write_(gid,fid); -} - int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { grib_handle *h = get_handle(*ingid); @@ -3133,27 +2815,17 @@ int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { return grib_multi_handle_append(h,*sec,mh); } -int grib_f_multi_append(int* ingid, int* sec,int* mgid) { - return grib_f_multi_append_(ingid, sec, mgid); -} /*****************************************************************************/ int codes_f_bufr_multi_element_constant_arrays_on_() { codes_bufr_multi_element_constant_arrays_on(NULL); return GRIB_SUCCESS; } -int codes_f_bufr_multi_element_constant_arrays_on() { - return codes_f_bufr_multi_element_constant_arrays_on_(); -} int codes_f_bufr_multi_element_constant_arrays_off_() { codes_bufr_multi_element_constant_arrays_off(NULL); return GRIB_SUCCESS; } -int codes_f_bufr_multi_element_constant_arrays_off() { - return codes_f_bufr_multi_element_constant_arrays_off_(); -} - /*****************************************************************************/ int grib_f_set_definitions_path_(char* path, int len){ @@ -3162,9 +2834,6 @@ int grib_f_set_definitions_path_(char* path, int len){ grib_context_set_definitions_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_definitions_path(char* path, int len){ - return grib_f_set_definitions_path_(path, len); -} /*****************************************************************************/ int grib_f_set_samples_path_(char* path, int len){ @@ -3173,22 +2842,13 @@ int grib_f_set_samples_path_(char* path, int len){ grib_context_set_samples_path(c, cast_char(buf,path,len)); return GRIB_SUCCESS; } -int grib_f_set_samples_path(char* path, int len){ - return grib_f_set_samples_path_(path, len); -} /*****************************************************************************/ int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } -int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { - return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); -} /*****************************************************************************/ int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } -int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { - return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); -} From d06f28d516c03b14869206bb436d7ee371fd2a7c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 30 Dec 2023 12:32:31 +0000 Subject: [PATCH 214/469] Fortran: No need for prototypes file --- fortran/CMakeLists.txt | 2 +- fortran/grib_fortran.c | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt index 0e798a697..979ad0652 100644 --- a/fortran/CMakeLists.txt +++ b/fortran/CMakeLists.txt @@ -79,7 +79,7 @@ if( HAVE_FORTRAN ) ecbuild_add_resources( TARGET fortran_resources PACK - grib_fortran_prototypes.h grib_api_constants.h grib_api_externals.h + grib_api_constants.h grib_api_externals.h grib_api_visibility.h grib_types.f90 create_grib_f90.sh grib_f90.f90.head grib_f90.f90.tail grib_f90_int.f90 grib_f90_long_int.f90 grib_f90_int_size_t.f90 grib_f90_long_size_t.f90 diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index e5c1dda2e..9f227c166 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -9,7 +9,6 @@ */ #include "grib_api_internal.h" -#include "grib_fortran_prototypes.h" #if HAVE_SYS_TYPES_H # include @@ -27,9 +26,9 @@ #include -/* Have file ids distinct from grib ids, in order to be - * protected against user errors where a file id is given - * instead of a grib id or viceversa +/* Have file ids distinct from GRIB/BUFR ids, in order to be + * protected against user errors where a file id is given + * instead of a GRIB/BUFR id or vice versa */ #define MIN_FILE_ID 50000 @@ -67,9 +66,8 @@ static omp_nest_lock_t keys_iterator_mutex; static void init() { GRIB_OMP_CRITICAL(lock_fortran) - { - if (once == 0) - { + { + if (once == 0) { omp_init_nest_lock(&handle_mutex); omp_init_nest_lock(&index_mutex); omp_init_nest_lock(&read_mutex); @@ -78,7 +76,7 @@ static void init() omp_init_nest_lock(&keys_iterator_mutex); once = 1; } - } + } } #endif @@ -88,9 +86,8 @@ typedef enum FileMode { FILE_MODE_APPEND } FileMode; -int GRIB_NULL=-1; -int GRIB_NULL_NEAREST=-1; -/*extern int errno;*/ +int GRIB_NULL = -1; +int GRIB_NULL_NEAREST = -1; typedef struct l_grib_file l_grib_file; From f765050284edc37e760e232b2867e6c64a098339 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 30 Dec 2023 12:34:06 +0000 Subject: [PATCH 215/469] Fortran: No need for prototypes file --- fortran/grib_fortran_prototypes.h | 405 ------------------------------ 1 file changed, 405 deletions(-) delete mode 100644 fortran/grib_fortran_prototypes.h diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h deleted file mode 100644 index 0912dadc6..000000000 --- a/fortran/grib_fortran_prototypes.h +++ /dev/null @@ -1,405 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -/* grib_fortran.c */ -#ifdef __cplusplus -extern "C" { -#endif - -int grib_f_read_any_headers_only_from_file_(int *fid, char *buffer, size_t *nbytes); -int grib_f_read_any_headers_only_from_file__(int *fid, char *buffer, size_t *nbytes); -int grib_f_read_any_headers_only_from_file(int *fid, char *buffer, size_t *nbytes); -int grib_f_read_any_from_file_(int *fid, void* buffer, size_t *nbytes); -int grib_f_read_any_from_file__(int *fid, void* buffer, size_t *nbytes); -int grib_f_read_any_from_file(int *fid, void* buffer, size_t *nbytes); -int grib_f_write_file_(int *fid, void* buffer, size_t *nbytes); -int grib_f_write_file__(int *fid, void* buffer, size_t *nbytes); -int grib_f_write_file(int *fid, void* buffer, size_t *nbytes); -int grib_f_read_file_(int *fid, void* buffer, size_t *nbytes); -int grib_f_read_file__(int *fid, void* buffer, size_t *nbytes); -int grib_f_read_file(int *fid, void* buffer, size_t *nbytes); -int grib_f_open_file_(int *fid, char *name, char *op, int lname, int lop); -int grib_f_open_file__(int *fid, char *name, char *op, int lname, int lop); -int grib_f_open_file(int *fid, char *name, char *op, int lname, int lop); -int grib_f_close_file_(int *fid); -int grib_f_close_file__(int *fid); -int grib_f_close_file(int *fid); -void grib_f_write_on_fail(int *gid); -void grib_f_write_on_fail_(int* gid); -void grib_f_write_on_fail__(int* gid); -int grib_f_multi_support_on_(void); -int grib_f_multi_support_on__(void); -int grib_f_multi_support_on(void); -int grib_f_multi_support_off_(void); -int grib_f_multi_support_off__(void); -int grib_f_multi_support_off(void); - -/* GRIB keys iterator */ -int grib_f_keys_iterator_new_(int *gid, int *iterid, char *name_space, int len); -int grib_f_keys_iterator_new__(int *gid, int *iterid, char *name_space, int len); -int grib_f_keys_iterator_new(int *gid, int *iterid, char *name_space, int len); -int grib_f_keys_iterator_next_(int *iterid); -int grib_f_keys_iterator_next__(int *iterid); -int grib_f_keys_iterator_next(int *iterid); -int grib_f_keys_iterator_delete_(int *iterid); -int grib_f_keys_iterator_delete__(int *iterid); -int grib_f_keys_iterator_delete(int *iterid); -int grib_f_keys_iterator_get_name_(int *iterid, char *name, int len); -int grib_f_keys_iterator_get_name__(int *kiter, char *name, int len); -int grib_f_keys_iterator_get_name(int *kiter, char *name, int len); -int grib_f_keys_iterator_rewind_(int *kiter); -int grib_f_keys_iterator_rewind__(int *kiter); -int grib_f_keys_iterator_rewind(int *kiter); - -/* BUFR keys iterator */ -int codes_f_bufr_keys_iterator_new_(int *gid, int *iterid); -int codes_f_bufr_keys_iterator_new__(int *gid, int *iterid); -int codes_f_bufr_keys_iterator_new(int *gid, int *iterid); -int codes_f_bufr_keys_iterator_next_(int *iterid); -int codes_f_bufr_keys_iterator_next__(int *iterid); -int codes_f_bufr_keys_iterator_next(int *iterid); -int codes_f_bufr_keys_iterator_get_name_(int *iterid, char *name, int len); -int codes_f_bufr_keys_iterator_get_name__(int *kiter, char *name, int len); -int codes_f_bufr_keys_iterator_get_name(int *kiter, char *name, int len); -int codes_f_bufr_keys_iterator_rewind_(int *kiter); -int codes_f_bufr_keys_iterator_rewind__(int *kiter); -int codes_f_bufr_keys_iterator_rewind(int *kiter); -int codes_f_bufr_keys_iterator_delete_(int *iterid); -int codes_f_bufr_keys_iterator_delete__(int *iterid); -int codes_f_bufr_keys_iterator_delete(int *iterid); - -int grib_f_gribex_mode_on_(void); -int grib_f_gribex_mode_on__(void); -int grib_f_gribex_mode_on(void); -int grib_f_gribex_mode_off_(void); -int grib_f_gribex_mode_off__(void); -int grib_f_gribex_mode_off(void); -int grib_f_skip_computed_(int *iterid); -int grib_f_skip_computed__(int *iterid); -int grib_f_skip_computed(int *iterid); -int grib_f_skip_coded_(int *iterid); -int grib_f_skip_coded__(int *iterid); -int grib_f_skip_coded(int *iterid); -int grib_f_skip_edition_specific_(int *iterid); -int grib_f_skip_edition_specific__(int *iterid); -int grib_f_skip_edition_specific(int *iterid); -int grib_f_skip_duplicates_(int *iterid); -int grib_f_skip_duplicates__(int *iterid); -int grib_f_skip_duplicates(int *iterid); -int grib_f_skip_read_only_(int *iterid); -int grib_f_skip_read_only__(int *iterid); -int grib_f_skip_read_only(int *iterid); -int grib_f_skip_function_(int *iterid); -int grib_f_skip_function__(int *iterid); -int grib_f_skip_function(int *iterid); - -int grib_f_new_from_message_(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_message__(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_message(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_message_int_(int *gid, int *buffer, size_t *bufsize); -int grib_f_new_from_message_int__(int *gid, int *buffer, size_t *bufsize); -int grib_f_new_from_message_int(int *gid, int *buffer, size_t *bufsize); - -int grib_f_new_from_message_copy_(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_message_copy__(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_message_copy(int *gid, void* buffer, size_t *bufsize); -int grib_f_new_from_samples_(int *gid, char *name, int lname); -int grib_f_new_from_samples__(int *gid, char *name, int lname); -int grib_f_new_from_samples(int *gid, char *name, int lname); -int codes_bufr_f_new_from_samples_(int *gid, char *name, int lname); -int codes_bufr_f_new_from_samples__(int *gid, char *name, int lname); -int codes_bufr_f_new_from_samples(int *gid, char *name, int lname); -int grib_f_clone_(int *gidsrc, int *giddest); -int grib_f_clone__(int *gidsrc, int *giddest); -int grib_f_clone(int *gidsrc, int *giddest); -int grib_f_util_sections_copy_(int *gidfrom, int *gidto, int *what, int *gidout); -int grib_f_util_sections_copy__(int *gidfrom, int *gidto, int *what, int *gidout); -int grib_f_util_sections_copy(int *gidfrom, int *gidto, int *what, int *gidout); -int grib_f_copy_namespace_(int *gidsrc, char *name, int *giddest, int len); -int grib_f_copy_namespace__(int *gidsrc, char *name, int *giddest, int len); -int grib_f_copy_namespace(int *gidsrc, char *name, int *giddest, int len); - -int grib_f_copy_key_ (int *gidsrc, char *name, int *giddest, int len); -int grib_f_copy_key__(int *gidsrc, char *name, int *giddest, int len); -int grib_f_copy_key (int *gidsrc, char *name, int *giddest, int len); - -int grib_f_count_in_file(int *fid, int *n); -int grib_f_count_in_file_(int *fid, int *n); -int grib_f_count_in_file__(int *fid, int *n); - -int any_f_new_from_file_(int *fid, int *gid); -int any_f_new_from_file__(int *fid, int *gid); -int any_f_new_from_file(int *fid, int *gid); - -int any_f_scan_file_(int* fid,int* n); -int any_f_scan_file__(int* fid,int* n); -int any_f_scan_file(int* fid,int* n); - -int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid); -int any_f_new_from_scanned_file__(int* fid,int* msgid,int* gid); -int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid); - -int any_f_load_all_from_file_(int* fid,int* n); -int any_f_load_all_from_file__(int* fid,int* n); -int any_f_load_all_from_file(int* fid,int* n); - -int any_f_new_from_loaded_(int* msgid,int* gid); -int any_f_new_from_loaded__(int* msgid,int* gid); -int any_f_new_from_loaded(int* msgid,int* gid); - -int codes_f_clear_loaded_from_file_(void); -int codes_f_clear_loaded_from_file__(void); -int codes_f_clear_loaded_from_file(void); - -int grib_f_new_from_file_(int *fid, int *gid); -int grib_f_new_from_file__(int *fid, int *gid); -int grib_f_new_from_file(int *fid, int *gid); - -int bufr_f_new_from_file_(int *fid, int *gid); -int bufr_f_new_from_file__(int *fid, int *gid); -int bufr_f_new_from_file(int *fid, int *gid); - -int grib_f_headers_only_new_from_file_(int *fid, int *gid); -int grib_f_headers_only_new_from_file__(int *fid, int *gid); -int grib_f_headers_only_new_from_file(int *fid, int *gid); -int grib_f_new_from_index_(int *iid, int *gid); -int grib_f_new_from_index__(int *iid, int *gid); -int grib_f_new_from_index(int *iid, int *gid); -int grib_f_index_new_from_file_(char *file, char *keys, int *gid, int lfile, int lkeys); -int grib_f_index_new_from_file__(char *file, char *keys, int *gid, int lfile, int lkeys); -int grib_f_index_new_from_file(char *file, char *keys, int *gid, int lfile, int lkeys); -int grib_f_index_add_file_(int* iid, char* file, int lfile); -int grib_f_index_add_file__(int* iid, char* file, int lfile); -int grib_f_index_add_file(int* iid, char* file, int lfile); -int grib_f_index_read_(char *file, int *gid, int lfile); -int grib_f_index_read__(char *file, int *gid, int lfile); -int grib_f_index_read(char *file, int *gid, int lfile); -int grib_f_index_write_(int *gid, char *file, int lfile); -int grib_f_index_write__(int *gid, char *file, int lfile); -int grib_f_index_write(int *gid, char *file, int lfile); -int grib_f_index_release_(int *hid); -int grib_f_index_release__(int *hid); -int grib_f_index_release(int *hid); -int grib_f_multi_handle_release_(int *hid); -int grib_f_multi_handle_release__(int *hid); -int grib_f_multi_handle_release(int *hid); -int grib_f_release_(int *hid); -int grib_f_release__(int *hid); -int grib_f_release(int *hid); -int grib_f_dump_(int *gid); -int grib_f_dump__(int *gid); -int grib_f_dump(int *gid); - -int grib_f_get_api_version_(int* apiVersion,int len); -int grib_f_get_api_version__(int* apiVersion,int len); -int grib_f_get_api_version(int* apiVersion,int len); - -int grib_f_get_error_string_(int *err, char *buf, int len); -int grib_f_get_error_string__(int *err, char *buf, int len); -int grib_f_get_error_string(int *err, char *buf, int len); -int grib_f_get_size_int_(int *gid, char *key, int *val, int len); -int grib_f_get_size_int__(int *gid, char *key, int *val, int len); -int grib_f_get_size_int(int *gid, char *key, int *val, int len); -int grib_f_get_size_long_(int *gid, char *key, long *val, int len); -int grib_f_get_size_long__(int *gid, char *key, long *val, int len); -int grib_f_get_size_long(int *gid, char *key, long *val, int len); -int grib_f_index_get_size_int_(int *gid, char *key, int *val, int len); -int grib_f_index_get_size_int__(int *gid, char *key, int *val, int len); -int grib_f_index_get_size_int(int *gid, char *key, int *val, int len); -int grib_f_index_get_size_long_(int *gid, char *key, long *val, int len); -int grib_f_index_get_size_long__(int *gid, char *key, long *val, int len); -int grib_f_index_get_size_long(int *gid, char *key, long *val, int len); -int grib_f_get_int_(int *gid, char *key, int *val, int len); -int grib_f_get_int__(int *gid, char *key, int *val, int len); -int grib_f_get_int(int *gid, char *key, int *val, int len); -int grib_f_get_long_(int *gid, char *key, long *val, int len); -int grib_f_get_long__(int *gid, char *key, long *val, int len); -int grib_f_get_long(int *gid, char *key, long *val, int len); - -int grib_f_get_native_type_(int* gid, char* key, int* val, int len); -int grib_f_get_native_type__(int* gid, char* key, int* val, int len); -int grib_f_get_native_type(int* gid, char* key, int* val, int len); - -int grib_f_get_int_array_(int *gid, char *key, int *val, int *size, int len); -int grib_f_get_int_array__(int *gid, char *key, int *val, int *size, int len); -int grib_f_get_int_array(int *gid, char *key, int *val, int *size, int len); -int grib_f_get_long_array_(int *gid, char *key, long *val, int *size, int len); -int grib_f_get_long_array__(int *gid, char *key, long *val, int *size, int len); -int grib_f_get_long_array(int *gid, char *key, long *val, int *size, int len); -int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_get_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_index_get_string_(int *gid, char *key, char *val, int *eachsize, int *size, int len); -int grib_f_index_get_string__(int *gid, char *key, char *val, int *eachsize, int *size, int len); -int grib_f_index_get_string(int *gid, char *key, char *val, int *eachsize, int *size, int len); -int grib_f_index_get_long_(int *gid, char *key, long *val, int *size, int len); -int grib_f_index_get_long__(int *gid, char *key, long *val, int *size, int len); -int grib_f_index_get_long(int *gid, char *key, long *val, int *size, int len); -int grib_f_index_get_int_(int *gid, char *key, int *val, int *size, int len); -int grib_f_index_get_int__(int *gid, char *key, int *val, int *size, int len); -int grib_f_index_get_int(int *gid, char *key, int *val, int *size, int len); -int grib_f_index_get_real8_(int *gid, char *key, double *val, int *size, int len); -int grib_f_index_get_real8__(int *gid, char *key, double *val, int *size, int len); -int grib_f_index_get_real8(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_int_array_(int *gid, char *key, int *val, int *size, int len); -int grib_f_set_int_array__(int *gid, char *key, int *val, int *size, int len); -int grib_f_set_int_array(int *gid, char *key, int *val, int *size, int len); -int grib_f_set_long_array_(int *gid, char *key, long *val, int *size, int len); -int grib_f_set_long_array__(int *gid, char *key, long *val, int *size, int len); -int grib_f_set_long_array(int *gid, char *key, long *val, int *size, int len); -int grib_f_set_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_set_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_set_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv); -int grib_f_set_int_(int *gid, char *key, int *val, int len); -int grib_f_set_int__(int *gid, char *key, int *val, int len); -int grib_f_set_int(int *gid, char *key, int *val, int len); -int grib_f_set_long_(int *gid, char *key, long *val, int len); -int grib_f_set_long__(int *gid, char *key, long *val, int len); -int grib_f_set_long(int *gid, char *key, long *val, int len); -int grib_f_set_missing_(int *gid, char *key, int len); -int grib_f_set_missing__(int *gid, char *key, int len); -int grib_f_set_missing(int *gid, char *key, int len); -int grib_f_is_missing_(int *gid, char *key, int *isMissing, int len); -int grib_f_is_missing__(int *gid, char *key, int *isMissing, int len); -int grib_f_is_missing(int *gid, char *key, int *isMissing, int len); -int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len); -int grib_f_is_defined__(int* gid, char* key,int* isDefined,int len); -int grib_f_is_defined(int* gid, char* key,int* isDefined,int len); -int grib_f_set_real4_(int *gid, char *key, float *val, int len); -int grib_f_set_real4__(int *gid, char *key, float *val, int len); -int grib_f_set_real4(int *gid, char *key, float *val, int len); -int grib_f_get_real4_element_(int *gid, char *key, int *index, float *val, int len); -int grib_f_get_real4_element__(int *gid, char *key, int *index, float *val, int len); -int grib_f_get_real4_element(int *gid, char *key, int *index, float *val, int len); -int grib_f_get_real4_elements_(int *gid, char *key, int *index, float *val, int *size, int len); -int grib_f_get_real4_elements__(int *gid, char *key, int *index, float *val, int *len, int size); -int grib_f_get_real4_elements(int *gid, char *key, int *index, float *val, int *len, int size); -int grib_f_get_real4_(int *gid, char *key, float *val, int len); -int grib_f_get_real4__(int *gid, char *key, float *val, int len); -int grib_f_get_real4(int *gid, char *key, float *val, int len); -int grib_f_get_real4_array_(int *gid, char *key, float *val, int *size, int len); -int grib_f_get_real4_array__(int *gid, char *key, float *val, int *size, int len); -int grib_f_get_real4_array(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_real4_array_(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_real4_array__(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_real4_array(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_force_real4_array_(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_force_real4_array__(int *gid, char *key, float *val, int *size, int len); -int grib_f_set_force_real4_array(int *gid, char *key, float *val, int *size, int len); -int grib_f_index_select_real8_(int *gid, char *key, double *val, int len); -int grib_f_index_select_real8__(int *gid, char *key, double *val, int len); -int grib_f_index_select_real8(int *gid, char *key, double *val, int len); -int grib_f_index_select_string_(int *gid, char *key, char *val, int len, int vallen); -int grib_f_index_select_string__(int *gid, char *key, char *val, int len, int vallen); -int grib_f_index_select_string(int *gid, char *key, char *val, int len, int vallen); -int grib_f_index_select_int_(int *gid, char *key, int *val, int len); -int grib_f_index_select_int__(int *gid, char *key, int *val, int len); -int grib_f_index_select_int(int *gid, char *key, int *val, int len); -int grib_f_index_select_long_(int *gid, char *key, long *val, int len); -int grib_f_index_select_long__(int *gid, char *key, long *val, int len); -int grib_f_index_select_long(int *gid, char *key, long *val, int len); -int grib_f_set_real8_(int *gid, char *key, double *val, int len); -int grib_f_set_real8__(int *gid, char *key, double *val, int len); -int grib_f_set_real8(int *gid, char *key, double *val, int len); -int grib_f_get_real8_(int *gid, char *key, double *val, int len); -int grib_f_get_real8__(int *gid, char *key, double *val, int len); -int grib_f_get_real8(int *gid, char *key, double *val, int len); -int grib_f_get_real8_element_(int *gid, char *key, int *index, double *val, int len); -int grib_f_get_real8_element__(int *gid, char *key, int *index, double *val, int len); -int grib_f_get_real8_element(int *gid, char *key, int *index, double *val, int len); -int grib_f_get_real8_elements_(int *gid, char *key, int *index, double *val, int *size, int len); -int grib_f_get_real8_elements__(int *gid, char *key, int *index, double *val, int *len, int size); -int grib_f_get_real8_elements(int *gid, char *key, int *index, double *val, int *len, int size); -int grib_f_find_nearest_four_single_(int *gid, int *is_lsm, double *inlat, double *inlon, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_four_single__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_four_single(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_single_(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_single__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_single(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes); -int grib_f_find_nearest_multiple_(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints); -int grib_f_find_nearest_multiple__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints); -int grib_f_find_nearest_multiple(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints); -int grib_f_get_real8_array_(int *gid, char *key, double *val, int *size, int len); -int grib_f_get_real8_array__(int *gid, char *key, double *val, int *size, int len); -int grib_f_get_real8_array(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_real8_array_(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_real8_array__(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_real8_array(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_force_real8_array_(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_force_real8_array__(int *gid, char *key, double *val, int *size, int len); -int grib_f_set_force_real8_array(int *gid, char *key, double *val, int *size, int len); - -int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen,int len); -int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen,int len); -int grib_f_get_string_array__(int* gid, char* key, char* val,int* nvals,int* slen,int len); -int grib_f_set_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len); -int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len); -int grib_f_set_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len); - -int grib_f_get_string_(int *gid, char *key, char *val, int len, int len2); -int grib_f_get_string__(int *gid, char *key, char *val, int len, int len2); -int grib_f_get_string(int *gid, char *key, char *val, int len, int len2); -int grib_f_set_string_(int *gid, char *key, char *val, int len, int len2); -int grib_f_set_string__(int *gid, char *key, char *val, int len, int len2); -int grib_f_set_string(int *gid, char *key, char *val, int len, int len2); -int grib_f_get_data_real4_(int *gid, float *lats, float *lons, float *values, size_t *size); -int grib_f_get_data_real4__(int *gid, float *lats, float *lons, float *values, size_t *size); -int grib_f_get_data_real4(int *gid, float *lats, float *lons, float *values, size_t *size); -int grib_f_get_data_real8_(int *gid, double *lats, double *lons, double *values, size_t *size); -int grib_f_get_data_real8__(int *gid, double *lats, double *lons, double *values, size_t *size); -int grib_f_get_data_real8(int *gid, double *lats, double *lons, double *values, size_t *size); -int grib_f_get_message_size_(int *gid, size_t *len); -int grib_f_get_message_size__(int *gid, size_t *len); -int grib_f_get_message_size(int *gid, size_t *len); -int grib_f_copy_message_(int *gid, void* mess, size_t *len); -int grib_f_copy_message__(int *gid, void* mess, size_t *len); -int grib_f_copy_message(int *gid, void* mess, size_t *len); -void grib_f_check_(int *err, char *call, char *str, int lencall, int lenstr); -void grib_f_check__(int *err, char *call, char *key, int lencall, int lenkey); -void grib_f_check(int *err, char *call, char *key, int lencall, int lenkey); -int grib_f_write_(int *gid, int *fid); -int grib_f_write__(int *gid, int *fid); -int grib_f_write(int *gid, int *fid); -int grib_f_multi_write_(int *gid, int *fid); -int grib_f_multi_write__(int *gid, int *fid); -int grib_f_multi_write(int *gid, int *fid); -int grib_f_multi_append_(int *ingid, int *sec, int *mgid); -int grib_f_multi_append(int *ingid, int *sec, int *mgid); -int grib_f_multi_append__(int *ingid, int *sec, int *mgid); - -int codes_f_bufr_copy_data(int* gid1,int* gid2); -int codes_f_bufr_copy_data_(int* gid1,int* gid2); -int codes_f_bufr_copy_data__(int* gid1,int* gid2); - -int codes_f_bufr_multi_element_constant_arrays_on_(void); -int codes_f_bufr_multi_element_constant_arrays_on__(void); -int codes_f_bufr_multi_element_constant_arrays_on(void); -int codes_f_bufr_multi_element_constant_arrays_off_(void); -int codes_f_bufr_multi_element_constant_arrays_off__(void); -int codes_f_bufr_multi_element_constant_arrays_off(void); - -int grib_f_set_definitions_path_(char *path, int len); -int grib_f_set_definitions_path__(char *path, int len); -int grib_f_set_definitions_path(char *path, int len); -int grib_f_set_samples_path_(char *path, int len); -int grib_f_set_samples_path__(char *path, int len); -int grib_f_set_samples_path(char *path, int len); - -int grib_f_julian_to_datetime(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second); -int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second); -int grib_f_julian_to_datetime__(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second); - -int grib_f_datetime_to_julian(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd); -int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd); -int grib_f_datetime_to_julian__(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd); - -#ifdef __cplusplus -} -#endif From abd4d80d2af224fce155f2d12812580c46dc3ebc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 30 Dec 2023 14:17:26 +0000 Subject: [PATCH 216/469] Testing: F90 Increase coverage --- examples/F90/CMakeLists.txt | 2 ++ examples/F90/grib_set_data_force.f90 | 50 ++++++++++++++++++++++++++++ examples/F90/grib_set_data_force.sh | 16 +++++++++ fortran/grib_f90_tail.f90 | 31 +++++++++-------- fortran/grib_fortran.c | 11 +++--- 5 files changed, 89 insertions(+), 21 deletions(-) create mode 100644 examples/F90/grib_set_data_force.f90 create mode 100755 examples/F90/grib_set_data_force.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index cf5f42450..4ef373c4c 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -14,6 +14,7 @@ if( HAVE_BUILD_TOOLS ) codes_f90_misc grib_set_pv grib_set_data + grib_set_data_force bufr_ecc-1284 bufr_ecc-1019 get_native_type @@ -70,6 +71,7 @@ else() list( APPEND tests_sanity grib_set_pv grib_set_data + grib_set_data_force codes_set_paths codes_f90_misc get_native_type diff --git a/examples/F90/grib_set_data_force.f90 b/examples/F90/grib_set_data_force.f90 new file mode 100644 index 000000000..a5a3db2fc --- /dev/null +++ b/examples/F90/grib_set_data_force.f90 @@ -0,0 +1,50 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program set_data_force + use eccodes + implicit none + integer :: outfile + integer :: i, igrib, iret, numberOfValues, cnt + real :: d, e + real, dimension(:), allocatable :: values + integer, parameter :: max_strsize = 200 + character(len=max_strsize) :: outfile_name + + call getarg(1, outfile_name) + call codes_open_file(outfile, outfile_name, 'w') + + call codes_grib_new_from_samples(igrib, 'regular_ll_pl_grib1') + + call codes_get_size(igrib, 'values', numberOfValues) + + allocate (values(numberOfValues), stat=iret) + d = 10e-8 + e = d + cnt = 1 + do i = 1, numberOfValues + if (cnt > 100) then + e = e*10 + cnt = 1 + end if + values(i) = d + d = d + e + cnt = cnt + 1 + end do + + call codes_set(igrib, 'bitsPerValue', 16) + call codes_set(igrib, 'bitmapPresent', 1) + + ! set data values + call codes_set_force(igrib, 'codedValues', values) + call codes_write(igrib, outfile) + call codes_release(igrib) + deallocate (values) + +end program set_data_force diff --git a/examples/F90/grib_set_data_force.sh b/examples/F90/grib_set_data_force.sh new file mode 100755 index 000000000..d4f357b3a --- /dev/null +++ b/examples/F90/grib_set_data_force.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +OUT=temp.f_grib_set_data_force.out.grib + +${examples_dir}/eccodes_f_grib_set_data_force $OUT + +rm -f $OUT diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index 2d5c274ca..ddaad835f 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -2665,12 +2665,12 @@ end subroutine grib_set_force_real4_array !> @param value real(8) array value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_force_real8_array(gribid, key, value, status) - integer(kind=kindOfInt), intent(in) :: gribid - character(len=*), intent(in) :: key - real(kind=kindOfDouble), dimension(:), intent(in) :: value - integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret - integer(kind=kindOfInt) :: nb_values + integer(kind=kindOfInt), intent(in) :: gribid + character(len=*), intent(in) :: key + real(kind=kindOfDouble), dimension(:), intent(in) :: value + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt) :: nb_values nb_values = size(value) iret = grib_f_set_force_real8_array(gribid, key, value, nb_values) @@ -2696,10 +2696,10 @@ end subroutine grib_set_force_real8_array !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_string(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid - character(len=*), intent(in) :: key - character(len=*), intent(in) :: value + character(len=*), intent(in) :: key + character(len=*), intent(in) :: value integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt) :: iret iret = grib_f_set_string(gribid, key, value) if (iret /= 0) then @@ -2722,8 +2722,8 @@ end subroutine grib_set_string !> @param nbytes size in bytes of the message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_message_size_int(gribid, nbytes, status) - integer(kind=kindOfInt), intent(in) :: gribid - integer(kind=kindOfInt), intent(out) :: nbytes + integer(kind=kindOfInt), intent(in) :: gribid + integer(kind=kindOfInt), intent(out) :: nbytes integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret integer(kind=kindOfSize_t) :: ibytes @@ -2753,10 +2753,10 @@ end subroutine grib_get_message_size_int !> @param nbytes size in bytes of the message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_message_size_size_t(gribid, nbytes, status) - integer(kind=kindOfInt), intent(in) :: gribid + integer(kind=kindOfInt), intent(in) :: gribid integer(kind=kindOfSize_t), intent(out) :: nbytes integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt) :: iret iret = grib_f_get_message_size(gribid, nbytes) if (iret /= 0) then @@ -2779,7 +2779,7 @@ end subroutine grib_get_message_size_size_t !> @param message array containing the coded message to be copied !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_copy_message(gribid, message, status) - integer(kind=kindOfInt), intent(in) :: gribid + integer(kind=kindOfInt), intent(in) :: gribid character(len=1), dimension(:), intent(out) :: message integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret @@ -2810,7 +2810,6 @@ subroutine grib_write(gribid, ifile, status) integer(kind=kindOfInt), intent(in) :: gribid integer(kind=kindOfInt), intent(in) :: ifile integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret iret = grib_f_write(gribid, ifile) @@ -2834,7 +2833,7 @@ subroutine grib_multi_write(multigribid, ifile, status) integer(kind=kindOfInt), intent(in) :: multigribid integer(kind=kindOfInt), intent(in) :: ifile integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt) :: iret iret = grib_f_multi_write(multigribid, ifile) if (present(status)) then diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 9f227c166..1d1ec0d57 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2182,9 +2182,6 @@ int grib_f_set_missing_(int* gid, char* key,int len){ return grib_set_missing(h, cast_char(buf,key,len)); } -int grib_f_set_missing(int* gid, char* key, int len){ - return grib_f_set_missing_( gid, key, len); -} int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ int err=0; @@ -2273,6 +2270,7 @@ int grib_f_get_real4_(int* gid, char* key, float* val, int len){ return err; } +/*****************************************************************************/ int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len) { /* See ECC-1579: @@ -2325,6 +2323,7 @@ int grib_f_set_force_real4_array_(int* gid, char* key, float* val, int* size, in char buf[1024]; size_t lsize = *size; double* val8 = NULL; + size_t numElements = lsize; if(!h) return GRIB_INVALID_GRIB; @@ -2335,7 +2334,7 @@ int grib_f_set_force_real4_array_(int* gid, char* key, float* val, int* size, in if(!val8) return GRIB_OUT_OF_MEMORY; - for(lsize=0;lsize<*size;lsize++) + for (lsize = 0; lsize < numElements; lsize++) val8[lsize] = val[lsize]; err = grib_set_force_double_array(h, cast_char(buf,key,len), val8, lsize); @@ -2445,6 +2444,7 @@ int grib_f_get_real8_(int* gid, char* key, double* val, int len) return grib_get_double(h, cast_char(buf,key,len), val); } +/*****************************************************************************/ int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int len){ grib_handle *h = get_handle(*gid); @@ -2540,6 +2540,7 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) } } +/*****************************************************************************/ int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, int len){ grib_handle *h = get_handle(*gid); @@ -2781,7 +2782,7 @@ int grib_f_write_(int* gid, int* fid) { grib_get_message(h,&mess,&mess_len); if(fwrite(mess,1, mess_len,f) != mess_len) { - perror("grib_write"); + perror("write"); return GRIB_IO_PROBLEM; } From 96edabfea1eefc082b3f0287bc7888a2eeffc027 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 30 Dec 2023 17:56:53 +0000 Subject: [PATCH 217/469] Testing: F90 get_elements --- examples/F90/CMakeLists.txt | 2 ++ examples/F90/grib_elements.f90 | 37 ++++++++++++++++++++++++++++++++++ examples/F90/grib_elements.sh | 12 +++++++++++ fortran/grib_f90_tail.f90 | 12 +++++------ 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 examples/F90/grib_elements.f90 create mode 100755 examples/F90/grib_elements.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 4ef373c4c..ead88a487 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -33,6 +33,7 @@ if( HAVE_BUILD_TOOLS ) grib_keys_iterator_skip grib_multi_write grib_multi + grib_elements grib_nearest grib_nearest_single grib_precision @@ -86,6 +87,7 @@ else() grib_keys_iterator_skip grib_multi grib_nearest + grib_elements grib_nearest_single grib_precision grib_print_data diff --git a/examples/F90/grib_elements.f90 b/examples/F90/grib_elements.f90 new file mode 100644 index 000000000..f9cad8d2c --- /dev/null +++ b/examples/F90/grib_elements.f90 @@ -0,0 +1,37 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program grib_get_elements + use eccodes + implicit none + + integer :: infile + integer :: igrib, i + real(4) :: values_real4(4) + real(8) :: values_real8(4) + integer :: array_of_indexes(4) + + call codes_open_file(infile, '../../data/reduced_gaussian_pressure_level.grib1', 'r') + call codes_grib_new_from_file(infile, igrib) + + array_of_indexes = [1, 0, 2, 4] + call codes_get_element(igrib, "values", array_of_indexes, values_real4) + do i = 1, 4 + print *, i, array_of_indexes(i), values_real4(i) + end do + + call codes_get_element(igrib, "values", array_of_indexes, values_real8) + do i = 1, 4 + print *, i, array_of_indexes(i), values_real8(i) + end do + + call codes_release(igrib) + call codes_close_file(infile) + +end program diff --git a/examples/F90/grib_elements.sh b/examples/F90/grib_elements.sh new file mode 100755 index 000000000..86ad91414 --- /dev/null +++ b/examples/F90/grib_elements.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_elements diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index ddaad835f..c178eedbe 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -2316,7 +2316,7 @@ subroutine grib_get_real4_elements(gribid, key, kindex, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real4_elements', key) end if end subroutine grib_get_real4_elements @@ -2348,7 +2348,7 @@ subroutine grib_get_real8_elements(gribid, key, kindex, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real8_elements', key) end if end subroutine grib_get_real8_elements @@ -2649,7 +2649,7 @@ subroutine grib_set_force_real4_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_force_real4_array', key) end if end subroutine grib_set_force_real4_array @@ -2680,7 +2680,7 @@ subroutine grib_set_force_real8_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_force_real8_array', key) end if end subroutine grib_set_force_real8_array @@ -3057,7 +3057,7 @@ subroutine grib_gribex_mode_on(status) if (present(status)) then status = iret else - call grib_check(iret, 'grib_gribex_mode_on', '') + call grib_check(iret, 'gribex_mode_on', '') end if end subroutine grib_gribex_mode_on @@ -3077,7 +3077,7 @@ subroutine grib_gribex_mode_off(status) if (present(status)) then status = iret else - call grib_check(iret, 'grib_gribex_mode_off', '') + call grib_check(iret, 'gribex_mode_off', '') end if end subroutine grib_gribex_mode_off From e9f9a3286f19cf0fee841e1f1d0077f9583f71f7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 30 Dec 2023 20:53:23 +0000 Subject: [PATCH 218/469] Dead code removal --- fortran/fortranCtypes/sizes.c | 13 ++++++------- fortran/grib_fortran_kinds.c | 18 +++++++----------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/fortran/fortranCtypes/sizes.c b/fortran/fortranCtypes/sizes.c index 913437fb6..63f4e5ba8 100644 --- a/fortran/fortranCtypes/sizes.c +++ b/fortran/fortranCtypes/sizes.c @@ -5,41 +5,40 @@ void grib_check_fortran_char(char* a) { *a='f'; } void grib_check_fortran_char_(char* a) {grib_check_fortran_char(a);} -void grib_check_fortran_char__(char* a) {grib_check_fortran_char(a);} + void check_double(double *x,double *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_double_(double *x,double *y,char* ret) {check_double(x,y,ret);} -void check_double__(double *x,double *y,char* ret) {check_double(x,y,ret);} + void check_float(float *x,float *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_float_(float *x,float *y,char* ret) { check_float(x,y,ret); } -void check_float__(float *x,float *y,char* ret) { check_float(x,y,ret); } + void check_int(int *x,int *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_int_(int *x,int *y,char* ret) { check_int(x,y,ret); } -void check_int__(int *x,int *y,char* ret) { check_int(x,y,ret); } + void check_long(long *x,long *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_long_(long *x,long *y,char* ret) {check_long(x,y,ret);} -void check_long__(long *x,long *y,char* ret) {check_long(x,y,ret);} + void check_size_t(size_t *x,size_t *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_size_t_(size_t *x,size_t *y,char* ret) {check_size_t(x,y,ret);} -void check_size_t__(size_t *x,size_t *y,char* ret) {check_size_t(x,y,ret);} + void check_long_long(long long *x,long long *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_long_long_(long long *x,long long *y,char* ret) {check_long_long(x,y,ret);} -void check_long_long__(long long *x,long long *y,char* ret) {check_long_long(x,y,ret);} diff --git a/fortran/grib_fortran_kinds.c b/fortran/grib_fortran_kinds.c index 413a0d164..485194455 100644 --- a/fortran/grib_fortran_kinds.c +++ b/fortran/grib_fortran_kinds.c @@ -14,45 +14,41 @@ extern "C" { #endif -void f_sizeof(void *x,void *y, int *size) { - *size=((char*)y)-((char*)x); -} + void f_sizeof_(void *x,void *y, int *size) { *size=((char*)y)-((char*)x); } -void f_sizeof__(void *x,void *y, int *size) { - *size=((char*)y)-((char*)x); -} + void check_double(double *x,double *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_double_(double *x,double *y,char* ret) {check_double(x,y,ret);} -void check_double__(double *x,double *y,char* ret) {check_double(x,y,ret);} + void check_float(float *x,float *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_float_(float *x,float *y,char* ret) { check_float(x,y,ret); } -void check_float__(float *x,float *y,char* ret) { check_float(x,y,ret); } + void check_int(int *x,int *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_int_(int *x,int *y,char* ret) { check_int(x,y,ret); } -void check_int__(int *x,int *y,char* ret) { check_int(x,y,ret); } + void check_long(long *x,long *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_long_(long *x,long *y,char* ret) {check_long(x,y,ret);} -void check_long__(long *x,long *y,char* ret) {check_long(x,y,ret);} + void check_size_t(size_t *x,size_t *y,char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } void check_size_t_(size_t *x,size_t *y,char* ret) {check_size_t(x,y,ret);} -void check_size_t__(size_t *x,size_t *y,char* ret) {check_size_t(x,y,ret);} + #ifdef __cplusplus } From 11b69c295494b2b75feb7af3bd20b01e810130ef Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 00:14:23 +0000 Subject: [PATCH 219/469] Dead code removal --- fortran/grib_fortran_kinds.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/fortran/grib_fortran_kinds.c b/fortran/grib_fortran_kinds.c index 485194455..5835a53d2 100644 --- a/fortran/grib_fortran_kinds.c +++ b/fortran/grib_fortran_kinds.c @@ -14,41 +14,29 @@ extern "C" { #endif - -void f_sizeof_(void *x,void *y, int *size) { +void f_sizeof_(void *x, void *y, int *size) { *size=((char*)y)-((char*)x); } - -void check_double(double *x,double *y,char* ret) { +void check_double_(double *x, double* y, char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } -void check_double_(double *x,double *y,char* ret) {check_double(x,y,ret);} - -void check_float(float *x,float *y,char* ret) { +void check_float_(float* x, float* y, char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } -void check_float_(float *x,float *y,char* ret) { check_float(x,y,ret); } - -void check_int(int *x,int *y,char* ret) { +void check_int_(int* x, int* y, char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } -void check_int_(int *x,int *y,char* ret) { check_int(x,y,ret); } - -void check_long(long *x,long *y,char* ret) { +void check_long_(long* x, long * y, char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } -void check_long_(long *x,long *y,char* ret) {check_long(x,y,ret);} - -void check_size_t(size_t *x,size_t *y,char* ret) { +void check_size_t_(size_t* x, size_t* y, char* ret) { *ret = ((char*)y)-((char*)x) == sizeof(*x) ? 't' : 'f'; } -void check_size_t_(size_t *x,size_t *y,char* ret) {check_size_t(x,y,ret);} - #ifdef __cplusplus } From 8e73c761dc6db654095bec2cbd1679705cce843c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 00:14:42 +0000 Subject: [PATCH 220/469] Testing: F90 Increase coverage --- examples/F90/grib_elements.f90 | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/F90/grib_elements.f90 b/examples/F90/grib_elements.f90 index f9cad8d2c..28b0526b6 100644 --- a/examples/F90/grib_elements.f90 +++ b/examples/F90/grib_elements.f90 @@ -11,8 +11,9 @@ program grib_get_elements use eccodes implicit none - integer :: infile - integer :: igrib, i + integer :: infile, igrib, i + real(4) :: value_real4 + real(8) :: value_real8 real(4) :: values_real4(4) real(8) :: values_real8(4) integer :: array_of_indexes(4) @@ -21,16 +22,28 @@ program grib_get_elements call codes_grib_new_from_file(infile, igrib) array_of_indexes = [1, 0, 2, 4] + + print *,'Values as REAL(4) at specific indexes' call codes_get_element(igrib, "values", array_of_indexes, values_real4) do i = 1, 4 - print *, i, array_of_indexes(i), values_real4(i) + print *, array_of_indexes(i), values_real4(i) end do + print *,'Values as REAL(8) at specific indexes' call codes_get_element(igrib, "values", array_of_indexes, values_real8) do i = 1, 4 - print *, i, array_of_indexes(i), values_real8(i) + print *, array_of_indexes(i), values_real8(i) end do + i = 12 + print *,'The Value REAL(4) at index=',i + call codes_get_element(igrib, "values", i, value_real4) + print *, value_real4 + + print *,'The Value REAL(8) at index=',i + call codes_get_element(igrib, "values", i, value_real8) + print *, value_real8 + call codes_release(igrib) call codes_close_file(infile) From 51f36ccea5be75624657809beeccba939c6de3f1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 15:59:37 +0000 Subject: [PATCH 221/469] Dead code removal --- .cproject | 132 -------------------------------- .project | 26 ------- .settings/language.settings.xml | 25 ------ fortran/grib_fortran.c | 40 ++-------- 4 files changed, 6 insertions(+), 217 deletions(-) delete mode 100644 .cproject delete mode 100644 .project delete mode 100644 .settings/language.settings.xml diff --git a/.cproject b/.cproject deleted file mode 100644 index 315cf1f32..000000000 --- a/.cproject +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 52854bf56..000000000 --- a/.project +++ /dev/null @@ -1,26 +0,0 @@ - - - eccodes - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml deleted file mode 100644 index 4ca67c20d..000000000 --- a/.settings/language.settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 1d1ec0d57..a34b4098f 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1429,7 +1429,7 @@ int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ } /*****************************************************************************/ -int any_f_scan_file(int* fid,int* n) { +int any_f_scan_file_(int* fid, int* n) { int err = 0; off_t offset=0; void *data = NULL; @@ -1459,12 +1459,9 @@ int any_f_scan_file(int* fid,int* n) { *n=info_messages->n; return err; } -int any_f_scan_file_(int* fid,int* n) { - return any_f_scan_file(fid,n); -} /*****************************************************************************/ -int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) +int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid) { grib_handle *h = NULL; grib_context* c=grib_context_get_default(); @@ -1493,12 +1490,9 @@ int any_f_new_from_scanned_file(int* fid,int* msgid,int* gid) return GRIB_END_OF_FILE; } } -int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid){ - return any_f_new_from_scanned_file(fid,msgid,gid); -} /*****************************************************************************/ -int any_f_load_all_from_file(int* fid,int* n) { +int any_f_load_all_from_file_(int* fid,int* n) { int err = 0; off_t offset=0; void *data = NULL; @@ -1527,12 +1521,9 @@ int any_f_load_all_from_file(int* fid,int* n) { *n=binary_messages->n; return err; } -int any_f_load_all_from_file_(int* fid,int* n) { - return any_f_load_all_from_file(fid,n); -} /*****************************************************************************/ -int any_f_new_from_loaded(int* msgid,int* gid) +int any_f_new_from_loaded_(int* msgid,int* gid) { grib_handle *h = NULL; grib_context* c=grib_context_get_default(); @@ -1554,31 +1545,21 @@ int any_f_new_from_loaded(int* msgid,int* gid) } } -int any_f_new_from_loaded_(int* msgid,int* gid){ - return any_f_new_from_loaded(msgid,gid); -} - /*****************************************************************************/ -int codes_f_clear_loaded_from_file(void) { +int codes_f_clear_loaded_from_file_(void) { grib_context* c=grib_context_get_default(); /* grib_oarray_delete_content(c,binary_messages); */ grib_oarray_delete(c,binary_messages); return GRIB_SUCCESS; } -int codes_f_clear_loaded_from_file_(void) { - return codes_f_clear_loaded_from_file(); -} /*****************************************************************************/ -int grib_f_count_in_file(int* fid,int* n) { +int grib_f_count_in_file_(int* fid,int* n) { int err = 0; FILE* f = get_file(*fid); if (f) err=grib_count_in_file(0, f,n); return err; } -int grib_f_count_in_file_(int* fid,int* n) { - return grib_f_count_in_file(fid,n); -} /*****************************************************************************/ int any_f_new_from_file_(int* fid, int* gid){ @@ -1599,9 +1580,6 @@ int any_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int any_f_new_from_file(int* fid, int* gid){ - return any_f_new_from_file_( fid, gid); -} /*****************************************************************************/ int bufr_f_new_from_file_(int* fid, int* gid){ @@ -1624,9 +1602,6 @@ int bufr_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int bufr_f_new_from_file(int* fid, int* gid){ - return bufr_f_new_from_file_( fid, gid); -} /*****************************************************************************/ int grib_f_new_from_file_(int* fid, int* gid){ @@ -1649,9 +1624,6 @@ int grib_f_new_from_file_(int* fid, int* gid){ *gid=-1; return GRIB_INVALID_FILE; } -int grib_f_new_from_file(int* fid, int* gid){ - return grib_f_new_from_file_( fid, gid); -} /*****************************************************************************/ int grib_f_headers_only_new_from_file_(int* fid, int* gid){ From b405d64d1e2057cd2f764d5b7fbf65c3d705c96b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 16:09:10 +0000 Subject: [PATCH 222/469] Dead code removal --- fortran/grib_fortran.c | 61 ++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index a34b4098f..e744090dd 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1629,58 +1629,56 @@ int grib_f_new_from_file_(int* fid, int* gid){ int grib_f_headers_only_new_from_file_(int* fid, int* gid){ int err = 0; FILE* f = get_file(*fid); - grib_handle *h = NULL; + const int headers_only = 1; - if(f){ - h=grib_new_from_file ( 0, f,1,&err); - if(h){ + if (f){ + h=grib_new_from_file (0, f, headers_only, &err); + if (h){ push_handle(h,gid); return GRIB_SUCCESS; } else { - *gid=-1; + *gid = -1; return GRIB_END_OF_FILE; } } - *gid=-1; + *gid = -1; return GRIB_INVALID_FILE; } /*****************************************************************************/ -int grib_f_new_from_index_(int* iid, int* gid){ +int grib_f_new_from_index_(int* iid, int* gid) { int err = 0; grib_index* i = get_index(*iid); - grib_handle *h = NULL; - if(i){ - h = grib_handle_new_from_index(i,&err); - if(h){ + if (i) { + h = grib_handle_new_from_index(i, &err); + if (h){ push_handle(h,gid); return GRIB_SUCCESS; } else { - *gid=-1; + *gid = -1; return GRIB_END_OF_INDEX; } } - *gid=-1; + *gid = -1; return GRIB_INVALID_INDEX; } /*****************************************************************************/ -int grib_f_index_new_from_file_(char* file ,char* keys ,int* gid, int lfile, int lkeys){ +int grib_f_index_new_from_file_(char* file, char* keys, int* gid, int lfile, int lkeys) { int err = 0; - char fname[1024]={0,}; - char knames[1024]={0,}; - + char fname[1024] = {0,}; + char knames[1024] = {0,}; grib_index *i = NULL; - if(*file){ + if (*file){ i = grib_index_new_from_file(0,cast_char(fname,file,lfile), cast_char(knames,keys,lkeys),&err); - if(i){ + if (i) { push_index(i,gid); return GRIB_SUCCESS; } else { @@ -1689,7 +1687,7 @@ int grib_f_index_new_from_file_(char* file ,char* keys ,int* gid, int lfile, int } } - *gid=-1; + *gid = -1; return GRIB_INVALID_FILE; } @@ -1823,18 +1821,20 @@ int grib_f_get_api_version_(int* apiVersion,int len){ } /*****************************************************************************/ -int grib_f_get_size_int_(int* gid, char* key, int* val, int len){ - grib_handle *h = get_handle(*gid); - int err = GRIB_SUCCESS; +int grib_f_get_size_int_(int* gid, char* key, int* val, int len) +{ + grib_handle* h = get_handle(*gid); + int err = GRIB_SUCCESS; char buf[1024]; size_t tsize = 0; - if(!h){ + if (!h) { return GRIB_INVALID_GRIB; - }else{ - err = grib_get_size(h, cast_char(buf,key,len), &tsize); + } + else { + err = grib_get_size(h, cast_char(buf, key, len), &tsize); *val = tsize; - return err; + return err; } } @@ -1853,6 +1853,7 @@ int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ } } +/*****************************************************************************/ int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; @@ -1883,6 +1884,7 @@ int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ } } +/*****************************************************************************/ int grib_f_get_int_(int* gid, char* key, int* val, int len){ grib_handle *h = get_handle(*gid); long long_val; @@ -1912,7 +1914,7 @@ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ int err = GRIB_SUCCESS; char buf[1024]; - if(!h) return GRIB_INVALID_GRIB; + if (!h) return GRIB_INVALID_GRIB; err = grib_get_native_type(h, cast_char(buf,key,len), &type_val); *val = type_val; return err; @@ -2005,7 +2007,8 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* int l=strlen(bufval[i]); int j; if (*eachsize < l ) { - printf("eachsize=%d strlen(bufval[i])=%ld\n",*eachsize,(long)strlen(bufval[i])); + fprintf(stderr, "eachsize=%d strlen(bufval[i])=%zu\n", + *eachsize, strlen(bufval[i])); grib_context_free(h->context,bufval); return GRIB_ARRAY_TOO_SMALL; } From 858b4183359e3afac2cbe8ce9b73cee38f5f3bee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 16:49:12 +0000 Subject: [PATCH 223/469] Testing: Tools options --- tests/bufr_ls.sh | 5 +++++ tests/gts_ls.sh | 16 +++++++++++++--- tests/metar_ls.sh | 6 ++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tests/bufr_ls.sh b/tests/bufr_ls.sh index 2879ed36f..0aed3128e 100755 --- a/tests/bufr_ls.sh +++ b/tests/bufr_ls.sh @@ -64,6 +64,11 @@ ${tools_dir}/bufr_ls -s satelliteID=313 -p satelliteID aaen_55.bufr > $fTmp grep -q "313" $fTmp +# ------------------------ +# Test -w +# ------------------------ +${tools_dir}/bufr_ls -w count=2 syno_multi.bufr + # ------------------------ # Test corner cases # ------------------------ diff --git a/tests/gts_ls.sh b/tests/gts_ls.sh index ce6683ea1..1cd4cc9fb 100755 --- a/tests/gts_ls.sh +++ b/tests/gts_ls.sh @@ -25,15 +25,25 @@ touch $fLog fTmp=${label}".tmp.txt" rm -f $fTmp -#---------------------------------------------- -# Test default "ls" on all the gts data files -#---------------------------------------------- +#------------------------------------------- +# Test default "ls" on the gts data file +#------------------------------------------- gts_file=EGRR20150317121020_00493212.DAT f=$gts_file echo $f >> $fLog ${tools_dir}/gts_ls $f >> $fLog +#------------------------------------------- +# Test "-s" switch +#------------------------------------------- +${tools_dir}/gts_ls -s YY=abc $f >> $fLog + +#------------------------------------------- +# Test "-w" switch +#------------------------------------------- +${tools_dir}/gts_ls -w AA=IY $f >> $fLog + #------------------------------------------- # Test "-p" switch #------------------------------------------- diff --git a/tests/metar_ls.sh b/tests/metar_ls.sh index 8e2cfc14f..779619b8f 100755 --- a/tests/metar_ls.sh +++ b/tests/metar_ls.sh @@ -36,6 +36,12 @@ export METAR_MONTH=4 echo $f >> $fLog ${tools_dir}/metar_ls $f >> $fLog +#------------------------------------------- +# Test "-w" switch +#------------------------------------------- +${tools_dir}/metar_ls -w CCCC=VILK $f >> $fLog + + #------------------------------------------- # Test "-p" switch #------------------------------------------- From c0a38a2d3c15f03927cb00a64565bda256d723d6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 17:23:54 +0000 Subject: [PATCH 224/469] Testing: Tools options --- tests/gts_get.sh | 6 ++++++ tests/metar_get.sh | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/gts_get.sh b/tests/gts_get.sh index 0bea9b259..2f50f10f6 100755 --- a/tests/gts_get.sh +++ b/tests/gts_get.sh @@ -26,6 +26,12 @@ fTmp=${label}".tmp.txt" gts_file=EGRR20150317121020_00493212.DAT ${tools_dir}/gts_get -p TT,AA,II,CCCC,YY,GG,gg,BBB $gts_file >/dev/null +#---------------------------------------------- +# Test "-w" switch +#---------------------------------------------- +${tools_dir}/gts_get -p TT -w count=3 $gts_file >/dev/null + + gts_file=${data_dir}/gts.grib result=$( ${tools_dir}/grib_get -wcount=1 -p gts_CCCC -g $gts_file ) [ "$result" = "ECMG" ] diff --git a/tests/metar_get.sh b/tests/metar_get.sh index 7f69c4dfb..e58ede316 100755 --- a/tests/metar_get.sh +++ b/tests/metar_get.sh @@ -25,15 +25,16 @@ touch $fLog fTmp=${label}".tmp.txt" rm -f $fTmp -#---------------------------------------------- -# Test default "ls" on all the metar data files -#---------------------------------------------- +#----------------------------------------- +# Test default "ls" on the metar data file +#----------------------------------------- metar_file=metar.txt export METAR_YEAR=2015 export METAR_MONTH=4 ${tools_dir}/metar_get -n ls $metar_file >/dev/null ${tools_dir}/metar_get -w count=1/2/3 -p CCCC,latitude,longitude,dateTime,elevation,temperature,dewPointTemperature,qnh $metar_file +${tools_dir}/metar_get -w count=2 -p CCCC $metar_file # Decode a 'group' key as int and double result=$( ${tools_dir}/metar_get -p visibilityInMetres:i,visibilityInMetres:d -w count=1 $metar_file ) From 64d69f1395822619e2b80bbf916b3e0b93a384ae Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 18:00:27 +0000 Subject: [PATCH 225/469] Error messages --- src/grib_value.cc | 58 +++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/grib_value.cc b/src/grib_value.cc index 4cc974fd6..cac46c01a 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -97,12 +97,12 @@ int grib_set_long_internal(grib_handle* h, const char* name, long val) return grib_dependency_notify_change(a); } - grib_context_log(c, GRIB_LOG_ERROR, "unable to set %s=%ld as long (%s)", + grib_context_log(c, GRIB_LOG_ERROR, "Unable to set %s=%ld as long (%s)", name, val, grib_get_error_message(ret)); return ret; } - grib_context_log(c, GRIB_LOG_ERROR, "unable to find accessor %s", name); + grib_context_log(c, GRIB_LOG_ERROR, "Unable to find accessor %s", name); return GRIB_NOT_FOUND; } @@ -151,12 +151,12 @@ int grib_set_double_internal(grib_handle* h, const char* name, double val) return grib_dependency_notify_change(a); } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set %s=%g as double (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=%g as double (%s)", name, val, grib_get_error_message(ret)); return ret; } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to find accessor %s", name); + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); return GRIB_NOT_FOUND; } @@ -189,7 +189,7 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src) iter = grib_keys_iterator_new(src, 0, name); if (!iter) { - grib_context_log(src->context, GRIB_LOG_ERROR, "grib_copy_namespace: unable to get iterator for %s", name); + grib_context_log(src->context, GRIB_LOG_ERROR, "grib_copy_namespace: Unable to get iterator for %s", name); return GRIB_INTERNAL_ERROR; } @@ -378,12 +378,12 @@ int grib_set_string_internal(grib_handle* h, const char* name, return grib_dependency_notify_change(a); } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set %s=%s as string (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=%s as string (%s)", name, val, grib_get_error_message(ret)); return ret; } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to find accessor %s", name); + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); return GRIB_NOT_FOUND; } @@ -516,12 +516,12 @@ int grib_set_bytes_internal(grib_handle* h, const char* name, const unsigned cha return grib_dependency_notify_change(a); } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set %s=%s as bytes (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=%s as bytes (%s)", name, val, grib_get_error_message(ret)); return ret; } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to find accessor %s", name); + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); return GRIB_NOT_FOUND; } @@ -552,11 +552,11 @@ int grib_set_bytes(grib_handle* h, const char* name, const unsigned char* val, s // if (a->length == 0) // return 0; // if ((ret = grib_pack_zero(a)) != GRIB_SUCCESS) -// grib_context_log(h->context, GRIB_LOG_ERROR, "unable to clear %s (%s)", +// grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to clear %s (%s)", // name, grib_get_error_message(ret)); // return ret; // } -// /*grib_context_log(h->context,GRIB_LOG_ERROR,"unable to find accessor %s",name);*/ +// /*grib_context_log(h->context,GRIB_LOG_ERROR,"Unable to find accessor %s",name);*/ // return GRIB_NOT_FOUND; // } @@ -582,12 +582,12 @@ int grib_set_missing(grib_handle* h, const char* name) else ret = GRIB_VALUE_CANNOT_BE_MISSING; - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set %s=missing (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=missing (%s)", name, grib_get_error_message(ret)); return ret; } - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to find accessor %s", name); + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); return GRIB_NOT_FOUND; } @@ -743,7 +743,7 @@ int grib_set_double_array_internal(grib_handle* h, const char* name, const doubl int ret = 0; if (h->context->debug) { - print_debug_info__set_array(h, "grib_set_double_array_internal", name, val, length); + print_debug_info__set_array(h, __func__, name, val, length); } if (length == 0) { @@ -755,7 +755,7 @@ int grib_set_double_array_internal(grib_handle* h, const char* name, const doubl } if (ret != GRIB_SUCCESS) - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set double array %s (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set double array %s (%s)", name, grib_get_error_message(ret)); /*if (h->context->debug) fprintf(stderr,"ECCODES DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/ return ret; @@ -772,7 +772,7 @@ static int __grib_set_double_array(grib_handle* h, const char* name, const doubl size_t i = 0; if (h->context->debug) { - print_debug_info__set_array(h, "__grib_set_double_array", name, val, length); + print_debug_info__set_array(h, __func__, name, val, length); } if (length == 0) { @@ -928,7 +928,7 @@ int grib_set_long_array_internal(grib_handle* h, const char* name, const long* v { int ret = _grib_set_long_array(h, name, val, length, 0); if (ret != GRIB_SUCCESS) - grib_context_log(h->context, GRIB_LOG_ERROR, "unable to set long array %s (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set long array %s (%s)", name, grib_get_error_message(ret)); return ret; } @@ -944,7 +944,7 @@ int grib_get_long_internal(grib_handle* h, const char* name, long* val) if (ret != GRIB_SUCCESS) { grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as long (%s)", + "Unable to get %s as long (%s)", name, grib_get_error_message(ret)); } @@ -1002,7 +1002,7 @@ int grib_get_double_internal(grib_handle* h, const char* name, double* val) if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as double (%s)", + "Unable to get %s as double (%s)", name, grib_get_error_message(ret)); return ret; @@ -1060,7 +1060,7 @@ int grib_get_double_element_internal(grib_handle* h, const char* name, int i, do if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as double element (%s)", + "Unable to get %s as double element (%s)", name, grib_get_error_message(ret)); return ret; @@ -1091,7 +1091,7 @@ int grib_get_double_element_set_internal(grib_handle* h, const char* name, const if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as double element set (%s)", + "Unable to get %s as double element set (%s)", name, grib_get_error_message(ret)); return ret; @@ -1102,7 +1102,7 @@ int grib_get_float_element_set_internal(grib_handle* h, const char* name, const if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as float element set (%s)", + "Unable to get %s as float element set (%s)", name, grib_get_error_message(ret)); return ret; @@ -1142,7 +1142,7 @@ int grib_get_double_elements(const grib_handle* h, const char* name, const int* err = ecc__grib_get_size(h, act, &size); if (err != GRIB_SUCCESS) { - grib_context_log(h->context, GRIB_LOG_ERROR, "grib_get_double_elements: cannot get size of %s\n", name); + grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Cannot get size of %s", __func__, name); return err; } @@ -1151,7 +1151,7 @@ int grib_get_double_elements(const grib_handle* h, const char* name, const int* const int anIndex = index_array[j]; if (anIndex < 0 || anIndex >= size) { grib_context_log(h->context, GRIB_LOG_ERROR, - "grib_get_double_elements: index out of range: %d (should be between 0 and %ld)", anIndex, size - 1); + "%s: Index out of range: %d (should be between 0 and %zu)", __func__, anIndex, size - 1); return GRIB_INVALID_ARGUMENT; } } @@ -1159,7 +1159,7 @@ int grib_get_double_elements(const grib_handle* h, const char* name, const int* num_bytes = size * sizeof(double); values = (double*)grib_context_malloc(h->context, num_bytes); if (!values) { - grib_context_log(h->context, GRIB_LOG_ERROR, "grib_get_double_elements: unable to allocate %ld bytes\n", num_bytes); + grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Unable to allocate %zu bytes", __func__, num_bytes); return GRIB_OUT_OF_MEMORY; } @@ -1185,7 +1185,7 @@ int grib_get_string_internal(grib_handle* h, const char* name, char* val, size_t if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as string (%s)", + "Unable to get %s as string (%s)", name, grib_get_error_message(ret)); return ret; @@ -1219,7 +1219,7 @@ int grib_get_bytes_internal(const grib_handle* h, const char* name, unsigned cha if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as bytes (%s)", + "Unable to get %s as bytes (%s)", name, grib_get_error_message(ret)); return ret; @@ -1545,7 +1545,7 @@ int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, si if (ret != GRIB_SUCCESS) grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as long array (%s)", + "Unable to get %s as long array (%s)", name, grib_get_error_message(ret)); return ret; @@ -1815,7 +1815,7 @@ int grib_set_values(grib_handle* h, grib_values* args, size_t count) break; } /*if (args[i].error != GRIB_SUCCESS) - grib_context_log(h->context,GRIB_LOG_ERROR,"unable to set %s (%s)", + grib_context_log(h->context,GRIB_LOG_ERROR,"Unable to set %s (%s)", args[i].name,grib_get_error_message(args[i].error)); */ } } From 41bb2180a94b88e05bbaf532b40f884d3122fd36 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 18:00:43 +0000 Subject: [PATCH 226/469] Testing: Tool options --- tests/grib_compare.sh | 28 ++++++++++++++++++++++++++-- tests/grib_filter.sh | 4 ++-- tests/grib_png.sh | 2 +- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/tests/grib_compare.sh b/tests/grib_compare.sh index aa3fc21c0..7b813dc74 100755 --- a/tests/grib_compare.sh +++ b/tests/grib_compare.sh @@ -149,6 +149,14 @@ set -e # Raise the tolerance ${tools_dir}/grib_compare -b referenceValue -A 3.2 $infile $temp1 +# Invalid value +set +e +${tools_dir}/grib_compare -A badnum $infile $temp1 >$outfile 2>&1 +status=$? +set -e +[ $status -eq 1 ] +grep -q "Invalid absolute error" $outfile + # ---------------------------------------- # ECC-355: -R with "all" option @@ -161,6 +169,13 @@ ${tools_dir}/grib_compare -b $BLACKLIST -R referenceValue=0.03,codedValues=2 $te # Now try the "all" option with the highest relative diff value ${tools_dir}/grib_compare -b $BLACKLIST -R all=2 $temp1 $temp2 +# ---------------------------------------- +# Use -w switch +# ---------------------------------------- +cp ${data_dir}/tigge_cf_ecmwf.grib2 $temp1 +${tools_dir}/grib_compare -w typeOfLevel=surface ${data_dir}/tigge_cf_ecmwf.grib2 $temp1 + + # ---------------------------------------- # ECC-651: Two-way (symmetric) comparison # ---------------------------------------- @@ -217,14 +232,14 @@ sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl # -------------------------------------------- ${tools_dir}/grib_set -s scaleFactorOfFirstFixedSurface=1 $sample_g2 $temp1 set +e -${tools_dir}/grib_compare $sample_g2 $temp1 > $outfile +${tools_dir}/grib_compare -v $sample_g2 $temp1 > $outfile status=$? set -e [ $status -eq 1 ] grep -q "scaleFactorOfFirstFixedSurface is set to missing in 1st field but is not missing in 2nd field" $outfile set +e -${tools_dir}/grib_compare $temp1 $sample_g2 > $outfile +${tools_dir}/grib_compare -v $temp1 $sample_g2 > $outfile status=$? set -e [ $status -eq 1 ] @@ -271,6 +286,15 @@ set -e [ $status -eq 1 ] +echo GRIB > $temp1 +echo GRIB > $temp2 +set +e +${tools_dir}/grib_compare $temp1 $temp2 > $outfile 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep "unreadable message" $outfile + # Clean up # --------- rm -f $temp1 $temp2 diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index ea6e07373..c65daa128 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -394,8 +394,8 @@ ${tools_dir}/grib_filter $tempFilt $ECCODES_SAMPLES_PATH/GRIB2.tmpl > $tempOut 2 cat $tempOut grep "rubbish must fail" $tempOut grep "garbage must fail" $tempOut -grep "unable to get rubbish as string" $tempOut -grep "unable to get garbage as string" $tempOut +grep "Unable to get rubbish as string" $tempOut +grep "Unable to get garbage as string" $tempOut # Use of "abs" diff --git a/tests/grib_png.sh b/tests/grib_png.sh index 140974486..eee61eec5 100755 --- a/tests/grib_png.sh +++ b/tests/grib_png.sh @@ -53,7 +53,7 @@ infile=${data_dir}/sample.grib2 set +e ${tools_dir}/grib_set -r -s packingType=grid_png $infile $temp > $tempErr 2>&1 set -e -grep -q "unable to set double array codedValues" $tempErr +grep -q "Unable to set double array codedValues" $tempErr # Nearest neighbour # ---------------------- From 40f7a0007d000e6f9fb55dec3fb0443ec515889d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 18:07:47 +0000 Subject: [PATCH 227/469] Error messages --- src/grib_accessor_class_codetable.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 1fc92e785..d450ffd97 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -222,7 +222,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) p = grib_expression_evaluate_string(grib_handle_of_accessor(a), expression, tmp, &s_len, &ret); if (ret != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_FATAL, - "unable to evaluate %s as string", a->name); + "Unable to evaluate %s as string", a->name); } s_len = strlen(p) + 1; pack_string(a, p, &s_len); @@ -843,7 +843,7 @@ static int pack_expression(grib_accessor* a, grib_expression* e) if (strcmp(e->cclass->name, "long") == 0) { grib_expression_evaluate_long(hand, e, &lval); /* TDOD: check return value */ - /*if (hand->context->debug) printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %ld\n", a->name,lval);*/ + //if (hand->context->debug) printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %ld\n", a->name,lval); ret = grib_pack_long(a, &lval, &len); } else { @@ -851,12 +851,14 @@ static int pack_expression(grib_accessor* a, grib_expression* e) len = sizeof(tmp); cval = grib_expression_evaluate_string(hand, e, tmp, &len, &ret); if (ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_codetable.pack_expression: unable to evaluate string %s to be set in %s\n", grib_expression_get_name(e), a->name); + grib_context_log(a->context, GRIB_LOG_ERROR, + "grib_accessor_codetable.%s: Unable to evaluate string %s to be set in %s", + __func__, grib_expression_get_name(e), a->name); return ret; } len = strlen(cval) + 1; - /*if (hand->context->debug) - printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %s\n", a->name, cval);*/ + //if (hand->context->debug) + // printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %s\n", a->name, cval); ret = grib_pack_string(a, cval, &len); } return ret; From 8cb098cd95efb65215c560e19405b3fd4716a9ab Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 31 Dec 2023 18:19:42 +0000 Subject: [PATCH 228/469] Error messages --- src/grib_accessor_class_gen.cc | 2 +- src/grib_handle.cc | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 5d2e16c3c..30d37f729 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -484,7 +484,7 @@ static int pack_double_array_as_long(grib_accessor* a, const double* v, size_t* size_t numBytes = *len * (sizeof(long)); long* lValues = (long*)grib_context_malloc(c, numBytes); if (!lValues) { - grib_context_log(c, GRIB_LOG_ERROR, "Unable to allocate %ld bytes\n", numBytes); + grib_context_log(c, GRIB_LOG_ERROR, "Unable to allocate %ld bytes", numBytes); return GRIB_OUT_OF_MEMORY; } for (i = 0; i < *len; i++) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index b84769440..d4c94e4e3 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -642,7 +642,7 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, if (grib_decode_unsigned_byte_long(secbegin, 5, 1) == 254) { if (!gm->bitmap_section) { grib_context_log(c, GRIB_LOG_ERROR, - "grib_handle_new_multi : cannot create handle, missing bitmap\n"); + "grib_handle_new_multi : cannot create handle, missing bitmap"); return NULL; } gm->sections[secnum] = gm->bitmap_section; @@ -695,7 +695,7 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, gl = grib_handle_new_from_message(c, message, olen); if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_multi: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_multi: cannot create handle"); return NULL; } @@ -794,7 +794,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in /* Special case for inherited bitmaps */ if (grib_decode_unsigned_byte_long(secbegin, 5, 1) == 254) { if (!gm->bitmap_section) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle, missing bitmap\n"); + grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle, missing bitmap"); grib_context_free(c, data); return NULL; } @@ -850,7 +850,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in gl = grib_handle_new_from_message(c, data, olen); if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -930,7 +930,7 @@ grib_handle* gts_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "gts_new_from_file: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "gts_new_from_file: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -971,7 +971,7 @@ grib_handle* taf_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "taf_new_from_file: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "taf_new_from_file: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -1012,7 +1012,7 @@ grib_handle* metar_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "metar_new_from_file: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "metar_new_from_file: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -1080,7 +1080,7 @@ grib_handle* bufr_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "bufr_new_from_file: cannot create handle \n"); + grib_context_log(c, GRIB_LOG_ERROR, "bufr_new_from_file: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -1132,7 +1132,7 @@ grib_handle* any_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "any_new_from_file : cannot create handle\n"); + grib_context_log(c, GRIB_LOG_ERROR, "any_new_from_file: cannot create handle"); grib_context_free(c, data); return NULL; } @@ -1205,7 +1205,7 @@ static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_no_multi: cannot create handle\n"); + grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_no_multi: cannot create handle"); grib_context_free(c, data); return NULL; } From 62e9830bcf81ca09eb8322fdc78367ef37488dce Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jan 2024 13:35:14 +0000 Subject: [PATCH 229/469] Dead code removal --- src/grib_accessor_class_to_integer.cc | 44 +--- src/grib_accessor_class_to_integer.cc.old | 284 ++++++++++++++++++++++ src/grib_expression_class_is_in_dict.cc | 65 +++-- 3 files changed, 316 insertions(+), 77 deletions(-) create mode 100644 src/grib_accessor_class_to_integer.cc.old diff --git a/src/grib_accessor_class_to_integer.cc b/src/grib_accessor_class_to_integer.cc index 30fa00251..787b122b8 100644 --- a/src/grib_accessor_class_to_integer.cc +++ b/src/grib_accessor_class_to_integer.cc @@ -22,7 +22,6 @@ IMPLEMENTS = value_count IMPLEMENTS = next_offset IMPLEMENTS = get_native_type - IMPLEMENTS = compare MEMBERS = const char* key MEMBERS = long start MEMBERS = size_t length @@ -52,7 +51,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_integer { @@ -104,7 +102,7 @@ static grib_accessor_class _grib_accessor_class_to_integer = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -239,46 +237,6 @@ static int unpack_double(grib_accessor* a, double* v, size_t* len) return err; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - char* aval = 0; - char* bval = 0; - int err = 0; - - size_t alen = 0; - size_t blen = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); - bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); - - grib_unpack_string(a, aval, &alen); - grib_unpack_string(b, bval, &blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval, bval)) - retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} - static long next_offset(grib_accessor* a) { return a->offset + a->length; diff --git a/src/grib_accessor_class_to_integer.cc.old b/src/grib_accessor_class_to_integer.cc.old new file mode 100644 index 000000000..ab9f336ca --- /dev/null +++ b/src/grib_accessor_class_to_integer.cc.old @@ -0,0 +1,284 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_string;pack_string + IMPLEMENTS = unpack_long;pack_long + IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = init;dump;string_length + IMPLEMENTS = value_count + IMPLEMENTS = next_offset + IMPLEMENTS = get_native_type + MEMBERS = const char* key + MEMBERS = long start + MEMBERS = size_t length + END_CLASS_DEF + + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int get_native_type(grib_accessor*); +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int pack_long(grib_accessor*, const long* val, size_t* len); +static int pack_string(grib_accessor*, const char*, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); +static size_t string_length(grib_accessor*); +static long next_offset(grib_accessor*); +static int value_count(grib_accessor*, long*); +static void dump(grib_accessor*, grib_dumper*); +static void init(grib_accessor*, const long, grib_arguments*); +static int compare(grib_accessor*, grib_accessor*); + +typedef struct grib_accessor_to_integer +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in to_integer */ + const char* key; + long start; + size_t length; +} grib_accessor_to_integer; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_to_integer = { + &grib_accessor_class_gen, /* super */ + "to_integer", /* name */ + sizeof(grib_accessor_to_integer), /* size */ + 0, /* inited */ + 0, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ + &string_length, /* get length of string */ + &value_count, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + &get_native_type, /* get native type */ + 0, /* get sub_section */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ + 0, /* pack_expression */ + 0, /* notify_change */ + 0, /* update_size */ + 0, /* preferred_size */ + 0, /* resize */ + 0, /* nearest_smaller_value */ + 0, /* next accessor */ + &compare, /* compare vs. another accessor */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ +}; + + +grib_accessor_class* grib_accessor_class_to_integer = &_grib_accessor_class_to_integer; + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long len, grib_arguments* arg) +{ + grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; + + self->key = grib_arguments_get_name(grib_handle_of_accessor(a), arg, 0); + self->start = grib_arguments_get_long(grib_handle_of_accessor(a), arg, 1); + self->length = grib_arguments_get_long(grib_handle_of_accessor(a), arg, 2); + + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length = 0; +} + +static int value_count(grib_accessor* a, long* count) +{ + grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; + size_t size = 0; + + int err = grib_get_size(grib_handle_of_accessor(a), self->key, &size); + *count = size; + + return err; +} + +static size_t string_length(grib_accessor* a) +{ + grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; + size_t size = 0; + + if (self->length) + return self->length; + + grib_get_string_length(grib_handle_of_accessor(a), self->key, &size); + return size; +} + +static void dump(grib_accessor* a, grib_dumper* dumper) +{ + grib_dump_long(dumper, a, NULL); +} + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_LONG; +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ + int err = 0; + grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; + char buff[512] = {0,}; + size_t length; + size_t size = 512; + + length = string_length(a); + + if (len[0] < length + 1) { + grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", + len[0], a->name, a->length + 1); + len[0] = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + err = grib_get_string(grib_handle_of_accessor(a), self->key, buff, &size); + if (err) + return err; + if (length > size) { + /*err=GRIB_STRING_TOO_SMALL;*/ + length = size; + } + + memcpy(val, buff + self->start, length); + + val[length] = 0; + len[0] = length; + return GRIB_SUCCESS; +} + +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + +static int pack_long(grib_accessor* a, const long* v, size_t* len) +{ + grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as an integer", a->name); + return GRIB_NOT_IMPLEMENTED; +} + +static int pack_double(grib_accessor* a, const double* v, size_t* len) +{ + grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as a double", a->name); + return GRIB_NOT_IMPLEMENTED; +} + +static int unpack_long(grib_accessor* a, long* v, size_t* len) +{ + char val[1024] = {0,}; + size_t l = sizeof(val); + char* last = NULL; + int err = unpack_string(a, val, &l); + + if (err) + return err; + + *v = strtol(val, &last, 10); + /* if (*last) {err=GRIB_WRONG_CONVERSION;} */ + + return GRIB_SUCCESS; +} + +static int unpack_double(grib_accessor* a, double* v, size_t* len) +{ + size_t l = 1; + long val = 0; + int err = unpack_long(a, &val, &l); + + *v = (double)val; + return err; +} + +static int compare(grib_accessor* a, grib_accessor* b) +{ + int retval = 0; + char* aval = 0; + char* bval = 0; + int err = 0; + + size_t alen = 0; + size_t blen = 0; + long count = 0; + + err = grib_value_count(a, &count); + if (err) + return err; + alen = count; + + err = grib_value_count(b, &count); + if (err) + return err; + blen = count; + + if (alen != blen) + return GRIB_COUNT_MISMATCH; + + aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); + bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); + + grib_unpack_string(a, aval, &alen); + grib_unpack_string(b, bval, &blen); + + retval = GRIB_SUCCESS; + if (strcmp(aval, bval)) + retval = GRIB_STRING_VALUE_MISMATCH; + + grib_context_free(a->context, aval); + grib_context_free(b->context, bval); + + return retval; +} + +static long next_offset(grib_accessor* a) +{ + return a->offset + a->length; +} diff --git a/src/grib_expression_class_is_in_dict.cc b/src/grib_expression_class_is_in_dict.cc index 6cb43acb3..a2ad355ab 100644 --- a/src/grib_expression_class_is_in_dict.cc +++ b/src/grib_expression_class_is_in_dict.cc @@ -174,44 +174,41 @@ static int evaluate_long(grib_expression* g, grib_handle* h, long* result) static int evaluate_double(grib_expression* g, grib_handle* h, double* result) { - grib_expression_is_in_dict* e = (grib_expression_is_in_dict*)g; - int err = 0; - char mybuf[1024] = {0,}; - size_t size = 1024; - - grib_trie* list = load_dictionary(h->context, g, &err); - - if ((err = grib_get_string_internal(h, e->key, mybuf, &size)) != GRIB_SUCCESS) - return err; - - if (grib_trie_get(list, mybuf)) - *result = 1; - else - *result = 0; - - return err; + return GRIB_NOT_IMPLEMENTED; + + // grib_expression_is_in_dict* e = (grib_expression_is_in_dict*)g; + // int err = 0; + // char mybuf[1024] = {0,}; + // size_t size = 1024; + // grib_trie* list = load_dictionary(h->context, g, &err); + // if ((err = grib_get_string_internal(h, e->key, mybuf, &size)) != GRIB_SUCCESS) + // return err; + // if (grib_trie_get(list, mybuf)) + // *result = 1; + // else + // *result = 0; + // return err; } static string evaluate_string(grib_expression* g, grib_handle* h, char* buf, size_t* size, int* err) { - grib_expression_is_in_dict* e = (grib_expression_is_in_dict*)g; - char mybuf[1024] = {0,}; - size_t sizebuf = 1024; - long result; - - grib_trie* list = load_dictionary(h->context, g, err); - - if ((*err = grib_get_string_internal(h, e->key, mybuf, &sizebuf)) != GRIB_SUCCESS) - return NULL; - - if (grib_trie_get(list, mybuf)) - result = 1; - else - result = 0; - - snprintf(buf, 32, "%ld", result); - *size = strlen(buf); - return buf; + *err = GRIB_NOT_IMPLEMENTED; + return NULL; + + // grib_expression_is_in_dict* e = (grib_expression_is_in_dict*)g; + // char mybuf[1024] = {0,}; + // size_t sizebuf = 1024; + // long result; + // grib_trie* list = load_dictionary(h->context, g, err); + // if ((*err = grib_get_string_internal(h, e->key, mybuf, &sizebuf)) != GRIB_SUCCESS) + // return NULL; + // if (grib_trie_get(list, mybuf)) + // result = 1; + // else + // result = 0; + // snprintf(buf, 32, "%ld", result); + // *size = strlen(buf); + // return buf; } static void print(grib_context* c, grib_expression* g, grib_handle* f) From 02e4b71ec70221365f67233ed5f71f593d9ef6e5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jan 2024 21:14:44 +0000 Subject: [PATCH 230/469] Dead code removal --- src/grib_accessor_class_to_double.cc | 44 +--- src/grib_accessor_class_to_integer.cc.old | 284 ---------------------- src/grib_accessor_class_to_string.cc | 44 +--- 3 files changed, 2 insertions(+), 370 deletions(-) delete mode 100644 src/grib_accessor_class_to_integer.cc.old diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index d0d4351c5..3f04524c6 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -22,7 +22,6 @@ IMPLEMENTS = value_count IMPLEMENTS = next_offset IMPLEMENTS = get_native_type - IMPLEMENTS = compare MEMBERS = const char* key MEMBERS = long start MEMBERS = size_t length @@ -50,7 +49,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_double { @@ -103,7 +101,7 @@ static grib_accessor_class _grib_accessor_class_to_double = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -242,43 +240,3 @@ static long next_offset(grib_accessor* a) { return a->offset + a->length; } - -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - char* aval = 0; - char* bval = 0; - int err = 0; - - size_t alen = 0; - size_t blen = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); - bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); - - grib_unpack_string(a, aval, &alen); - grib_unpack_string(b, bval, &blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval, bval)) - retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} diff --git a/src/grib_accessor_class_to_integer.cc.old b/src/grib_accessor_class_to_integer.cc.old deleted file mode 100644 index ab9f336ca..000000000 --- a/src/grib_accessor_class_to_integer.cc.old +++ /dev/null @@ -1,284 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#include "grib_api_internal.h" -/* - This is used by make_class.pl - - START_CLASS_DEF - CLASS = accessor - SUPER = grib_accessor_class_gen - IMPLEMENTS = unpack_string;pack_string - IMPLEMENTS = unpack_long;pack_long - IMPLEMENTS = unpack_double;pack_double - IMPLEMENTS = init;dump;string_length - IMPLEMENTS = value_count - IMPLEMENTS = next_offset - IMPLEMENTS = get_native_type - MEMBERS = const char* key - MEMBERS = long start - MEMBERS = size_t length - END_CLASS_DEF - - */ - -/* START_CLASS_IMP */ - -/* - -Don't edit anything between START_CLASS_IMP and END_CLASS_IMP -Instead edit values between START_CLASS_DEF and END_CLASS_DEF -or edit "accessor.class" and rerun ./make_class.pl - -*/ - -static int get_native_type(grib_accessor*); -static int pack_double(grib_accessor*, const double* val, size_t* len); -static int pack_long(grib_accessor*, const long* val, size_t* len); -static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_double(grib_accessor*, double* val, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); -static int unpack_string(grib_accessor*, char*, size_t* len); -static size_t string_length(grib_accessor*); -static long next_offset(grib_accessor*); -static int value_count(grib_accessor*, long*); -static void dump(grib_accessor*, grib_dumper*); -static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); - -typedef struct grib_accessor_to_integer -{ - grib_accessor att; - /* Members defined in gen */ - /* Members defined in to_integer */ - const char* key; - long start; - size_t length; -} grib_accessor_to_integer; - -extern grib_accessor_class* grib_accessor_class_gen; - -static grib_accessor_class _grib_accessor_class_to_integer = { - &grib_accessor_class_gen, /* super */ - "to_integer", /* name */ - sizeof(grib_accessor_to_integer), /* size */ - 0, /* inited */ - 0, /* init_class */ - &init, /* init */ - 0, /* post_init */ - 0, /* destroy */ - &dump, /* dump */ - &next_offset, /* next_offset */ - &string_length, /* get length of string */ - &value_count, /* get number of values */ - 0, /* get number of bytes */ - 0, /* get offset to bytes */ - &get_native_type, /* get native type */ - 0, /* get sub_section */ - 0, /* pack_missing */ - 0, /* is_missing */ - &pack_long, /* pack_long */ - &unpack_long, /* unpack_long */ - &pack_double, /* pack_double */ - 0, /* pack_float */ - &unpack_double, /* unpack_double */ - 0, /* unpack_float */ - &pack_string, /* pack_string */ - &unpack_string, /* unpack_string */ - 0, /* pack_string_array */ - 0, /* unpack_string_array */ - 0, /* pack_bytes */ - 0, /* unpack_bytes */ - 0, /* pack_expression */ - 0, /* notify_change */ - 0, /* update_size */ - 0, /* preferred_size */ - 0, /* resize */ - 0, /* nearest_smaller_value */ - 0, /* next accessor */ - &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value (double) */ - 0, /* unpack only ith value (float) */ - 0, /* unpack a given set of elements (double) */ - 0, /* unpack a given set of elements (float) */ - 0, /* unpack a subarray */ - 0, /* clear */ - 0, /* clone accessor */ -}; - - -grib_accessor_class* grib_accessor_class_to_integer = &_grib_accessor_class_to_integer; - -/* END_CLASS_IMP */ - -static void init(grib_accessor* a, const long len, grib_arguments* arg) -{ - grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; - - self->key = grib_arguments_get_name(grib_handle_of_accessor(a), arg, 0); - self->start = grib_arguments_get_long(grib_handle_of_accessor(a), arg, 1); - self->length = grib_arguments_get_long(grib_handle_of_accessor(a), arg, 2); - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length = 0; -} - -static int value_count(grib_accessor* a, long* count) -{ - grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; - size_t size = 0; - - int err = grib_get_size(grib_handle_of_accessor(a), self->key, &size); - *count = size; - - return err; -} - -static size_t string_length(grib_accessor* a) -{ - grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; - size_t size = 0; - - if (self->length) - return self->length; - - grib_get_string_length(grib_handle_of_accessor(a), self->key, &size); - return size; -} - -static void dump(grib_accessor* a, grib_dumper* dumper) -{ - grib_dump_long(dumper, a, NULL); -} - -static int get_native_type(grib_accessor* a) -{ - return GRIB_TYPE_LONG; -} - -static int unpack_string(grib_accessor* a, char* val, size_t* len) -{ - int err = 0; - grib_accessor_to_integer* self = (grib_accessor_to_integer*)a; - char buff[512] = {0,}; - size_t length; - size_t size = 512; - - length = string_length(a); - - if (len[0] < length + 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", - len[0], a->name, a->length + 1); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; - } - - err = grib_get_string(grib_handle_of_accessor(a), self->key, buff, &size); - if (err) - return err; - if (length > size) { - /*err=GRIB_STRING_TOO_SMALL;*/ - length = size; - } - - memcpy(val, buff + self->start, length); - - val[length] = 0; - len[0] = length; - return GRIB_SUCCESS; -} - -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - -static int pack_long(grib_accessor* a, const long* v, size_t* len) -{ - grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as an integer", a->name); - return GRIB_NOT_IMPLEMENTED; -} - -static int pack_double(grib_accessor* a, const double* v, size_t* len) -{ - grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as a double", a->name); - return GRIB_NOT_IMPLEMENTED; -} - -static int unpack_long(grib_accessor* a, long* v, size_t* len) -{ - char val[1024] = {0,}; - size_t l = sizeof(val); - char* last = NULL; - int err = unpack_string(a, val, &l); - - if (err) - return err; - - *v = strtol(val, &last, 10); - /* if (*last) {err=GRIB_WRONG_CONVERSION;} */ - - return GRIB_SUCCESS; -} - -static int unpack_double(grib_accessor* a, double* v, size_t* len) -{ - size_t l = 1; - long val = 0; - int err = unpack_long(a, &val, &l); - - *v = (double)val; - return err; -} - -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - char* aval = 0; - char* bval = 0; - int err = 0; - - size_t alen = 0; - size_t blen = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); - bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); - - grib_unpack_string(a, aval, &alen); - grib_unpack_string(b, bval, &blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval, bval)) - retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} - -static long next_offset(grib_accessor* a) -{ - return a->offset + a->length; -} diff --git a/src/grib_accessor_class_to_string.cc b/src/grib_accessor_class_to_string.cc index ce8bf4e74..818ad386d 100644 --- a/src/grib_accessor_class_to_string.cc +++ b/src/grib_accessor_class_to_string.cc @@ -22,7 +22,6 @@ IMPLEMENTS = value_count IMPLEMENTS = next_offset IMPLEMENTS = get_native_type - IMPLEMENTS = compare MEMBERS = const char* key MEMBERS = long start MEMBERS = size_t length @@ -49,7 +48,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_string { @@ -101,7 +99,7 @@ static grib_accessor_class _grib_accessor_class_to_string = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -221,46 +219,6 @@ static int unpack_double(grib_accessor* a, double* v, size_t* len) return err; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - int retval = 0; - char* aval = 0; - char* bval = 0; - int err = 0; - - size_t alen = 0; - size_t blen = 0; - long count = 0; - - err = grib_value_count(a, &count); - if (err) - return err; - alen = count; - - err = grib_value_count(b, &count); - if (err) - return err; - blen = count; - - if (alen != blen) - return GRIB_COUNT_MISMATCH; - - aval = (char*)grib_context_malloc(a->context, alen * sizeof(char)); - bval = (char*)grib_context_malloc(b->context, blen * sizeof(char)); - - grib_unpack_string(a, aval, &alen); - grib_unpack_string(b, bval, &blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval, bval)) - retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context, aval); - grib_context_free(b->context, bval); - - return retval; -} - static long next_offset(grib_accessor* a) { return a->offset + a->length; From bb176d6c6b7d791c19d9c8f786a095d3789947c4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jan 2024 21:14:56 +0000 Subject: [PATCH 231/469] Testing: Sanity checks --- tests/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e2b24c9e2..4766e0f73 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -144,7 +144,6 @@ if( HAVE_BUILD_TOOLS ) bufr_json_samples bufr_ecc-359 bufr_ecc-517 - bufr_rdbSubTypes grib_efas grib_sh_imag grib_spectral @@ -154,14 +153,15 @@ if( HAVE_BUILD_TOOLS ) grib_grid_lambert_conformal grib_grid_polar_stereographic grib_grid_healpix - grib_g1monthlydate grib_g1day_of_the_year_date - grib_g1fcperiod) + ) # These tests require data downloads # and/or take much longer list(APPEND tests_extra grib_data_quality_checks + grib_g1monthlydate + grib_g1fcperiod grib_bpv_limit grib_complex grib_double_cmp @@ -175,6 +175,7 @@ if( HAVE_BUILD_TOOLS ) grib_count grib_clone_headers_only bufr_templates + bufr_rdbSubTypes bufr_dump_data bufr_dump_descriptors bufr_coordinate_descriptors From efcef18676b7a78ac75ebf317bcc9d881e7213d4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jan 2024 23:14:45 +0000 Subject: [PATCH 232/469] Dead code removal --- src/grib_accessor_class_label.cc | 9 +-------- src/grib_accessor_class_message.cc | 20 +++++++------------- src/grib_accessor_class_position.cc | 21 +++++++-------------- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/grib_accessor_class_label.cc b/src/grib_accessor_class_label.cc index c5958dd98..8d7831faf 100644 --- a/src/grib_accessor_class_label.cc +++ b/src/grib_accessor_class_label.cc @@ -16,7 +16,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = init;dump;get_native_type;unpack_string - IMPLEMENTS = compare END_CLASS_DEF */ @@ -35,7 +34,6 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_label { @@ -84,7 +82,7 @@ static grib_accessor_class _grib_accessor_class_label = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -116,11 +114,6 @@ static int get_native_type(grib_accessor* a) return GRIB_TYPE_LABEL; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - return GRIB_SUCCESS; -} - static int unpack_string(grib_accessor* a, char* val, size_t* len) { size_t vlen = strlen(a->name); diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 6a87d00e5..1334209dc 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -21,7 +17,6 @@ SUPER = grib_accessor_class_bytes IMPLEMENTS = init;update_size;resize; value_count IMPLEMENTS = unpack_string; string_length - IMPLEMENTS = compare END_CLASS_DEF */ @@ -42,7 +37,6 @@ static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); static void update_size(grib_accessor*, size_t); static void resize(grib_accessor*,size_t); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_message { @@ -92,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_message = { &resize, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -115,12 +109,12 @@ static void init(grib_accessor* a, const long len, grib_arguments* arg) a->length = grib_handle_of_accessor(a)->buffer->ulength - len - a->offset; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - if (a->length != b->length) - return GRIB_COUNT_MISMATCH; - return GRIB_SUCCESS; -} +// static int compare(grib_accessor* a, grib_accessor* b) +// { +// if (a->length != b->length) +// return GRIB_COUNT_MISMATCH; +// return GRIB_SUCCESS; +// } static void update_size(grib_accessor* a, size_t new_size) { diff --git a/src/grib_accessor_class_position.cc b/src/grib_accessor_class_position.cc index 1aef0a94f..0f9565c37 100644 --- a/src/grib_accessor_class_position.cc +++ b/src/grib_accessor_class_position.cc @@ -8,11 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -23,7 +18,6 @@ IMPLEMENTS = unpack_long IMPLEMENTS = get_native_type IMPLEMENTS = init;dump - IMPLEMENTS = compare END_CLASS_DEF */ @@ -42,7 +36,6 @@ static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_position { @@ -91,7 +84,7 @@ static grib_accessor_class _grib_accessor_class_position = { 0, /* resize */ 0, /* nearest_smaller_value */ 0, /* next accessor */ - &compare, /* compare vs. another accessor */ + 0, /* compare vs. another accessor */ 0, /* unpack only ith value (double) */ 0, /* unpack only ith value (float) */ 0, /* unpack a given set of elements (double) */ @@ -136,9 +129,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } -static int compare(grib_accessor* a, grib_accessor* b) -{ - if (a->offset != b->offset) - return GRIB_OFFSET_MISMATCH; - return GRIB_SUCCESS; -} +// static int compare(grib_accessor* a, grib_accessor* b) +// { +// if (a->offset != b->offset) +// return GRIB_OFFSET_MISMATCH; +// return GRIB_SUCCESS; +// } From 3c1c9df9a0f09f451be091a68408463d61b42ad0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 14:12:58 +0000 Subject: [PATCH 233/469] Sub-hourly: Add stepUnits to the time namespace for instantaneous fields --- definitions/grib2/template.4.point_in_time.def | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 3e341f54b..7e188b230 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -21,6 +21,7 @@ meta stepHumanReadable step_human_readable(stepUnits, stepRange): hidden,no_copy alias time.stepType=stepType; alias time.stepRange=stepRange; +alias time.stepUnits=stepUnits; alias time.dataDate=dataDate; alias time.dataTime=dataTime; alias time.startStep=startStep; From e22bc13bf624d568194137804abef0b10466ea3d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 15:12:57 +0000 Subject: [PATCH 234/469] Testing: Fortran codes_any_scan_file and codes_any_new_from_scanned_file --- examples/F90/CMakeLists.txt | 1 + examples/F90/codes_scan_file.f90 | 35 ++++++++++++++++++++++++++++++++ examples/F90/codes_scan_file.sh | 20 ++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 examples/F90/codes_scan_file.f90 create mode 100755 examples/F90/codes_scan_file.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index ead88a487..880a47f37 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -22,6 +22,7 @@ if( HAVE_BUILD_TOOLS ) list( APPEND tests_extra grib_index codes_dump + codes_scan_file grib_copy_message bufr_copy_message grib_get_keys diff --git a/examples/F90/codes_scan_file.f90 b/examples/F90/codes_scan_file.f90 new file mode 100644 index 000000000..5136f126a --- /dev/null +++ b/examples/F90/codes_scan_file.f90 @@ -0,0 +1,35 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program codes_scan_file + use eccodes + implicit none + integer, parameter :: max_strsize = 200 + integer :: ifile, cnt, level, step + integer :: i, igrib + character(len=max_strsize) :: infile_name + + call getarg(1, infile_name) + + call codes_open_file(ifile, infile_name, 'r') + + call codes_any_scan_file(ifile,cnt) + + i = 45 + call codes_any_new_from_scanned_file(ifile,i,igrib) + call codes_get(igrib, 'level', level) + call codes_get(igrib, 'stepRange', step) + + print *, 'Num messages=', cnt + print *, 'Msg ',i,' level=',level, ' step=', step + + call codes_release(igrib) + call codes_close_file(ifile) + +end program diff --git a/examples/F90/codes_scan_file.sh b/examples/F90/codes_scan_file.sh new file mode 100755 index 000000000..80ca95bc3 --- /dev/null +++ b/examples/F90/codes_scan_file.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +temp='temp.eccodes_f_codes_scan_file.txt' + +input=../../data/index.grib +${examples_dir}/eccodes_f_codes_scan_file $input > $temp + +grep -q "Num messages= *384" $temp +grep -q "level= *700 step= *60" $temp + +rm -f $temp From 4047c5764c08e6d2c29fc4911a93c3a2d31d3ab1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 16:01:37 +0000 Subject: [PATCH 235/469] Testing: codes_any_new_from_scanned_file --- examples/F90/codes_scan_file.f90 | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/F90/codes_scan_file.f90 b/examples/F90/codes_scan_file.f90 index 5136f126a..7c0438275 100644 --- a/examples/F90/codes_scan_file.f90 +++ b/examples/F90/codes_scan_file.f90 @@ -12,7 +12,7 @@ program codes_scan_file implicit none integer, parameter :: max_strsize = 200 integer :: ifile, cnt, level, step - integer :: i, igrib + integer :: i, igrib, iret character(len=max_strsize) :: infile_name call getarg(1, infile_name) @@ -22,7 +22,7 @@ program codes_scan_file call codes_any_scan_file(ifile,cnt) i = 45 - call codes_any_new_from_scanned_file(ifile,i,igrib) + call codes_any_new_from_scanned_file(ifile, i, igrib) call codes_get(igrib, 'level', level) call codes_get(igrib, 'stepRange', step) @@ -30,6 +30,16 @@ program codes_scan_file print *, 'Msg ',i,' level=',level, ' step=', step call codes_release(igrib) + + ! Invalid msg number + i = 450 + call codes_any_new_from_scanned_file(ifile, i, igrib, iret) + if (iret /= GRIB_INVALID_ARGUMENT) then + call codes_check(iret, 'codes_any_new_from_scanned_file', 'exit') + else + print *,'Invalid message index returned error (as expected)' + end if + call codes_close_file(ifile) end program From 4cd68b210fd508c09db5c611f3a63a0a2e0627b9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 16:04:02 +0000 Subject: [PATCH 236/469] Fortran: any_f_scan_file_ check for errors --- fortran/grib_fortran.c | 51 ++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index e744090dd..a07a3110f 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1441,52 +1441,59 @@ int any_f_scan_file_(int* fid, int* n) { /* this needs a callback to a destructor*/ /* grib_oarray_delete_content(c,binary_messages); */ - grib_oarray_delete(c,info_messages); - info_messages=grib_oarray_new(c,1000,1000); + grib_oarray_delete(c, info_messages); + info_messages=grib_oarray_new(c, 1000, 1000); if (f) { while (err!=GRIB_END_OF_FILE) { - data = wmo_read_any_from_file_malloc ( f, 0,&olen,&offset,&err ); + data = wmo_read_any_from_file_malloc ( f, 0, &olen, &offset, &err ); msg=(l_message_info*)grib_context_malloc_clear(c,sizeof(l_message_info)); - msg->offset=offset; - msg->size=olen; - - if (err==0 && data) grib_oarray_push(c,info_messages,msg); - grib_context_free(c,data); + msg->offset = offset; + msg->size = olen; + + if (err == 0 && data) grib_oarray_push(c, info_messages, msg); + grib_context_free(c, data); } - if (err==GRIB_END_OF_FILE) err=0; + if (err == GRIB_END_OF_FILE) err = 0; } - *n=info_messages->n; + *n = info_messages->n; return err; } /*****************************************************************************/ -int any_f_new_from_scanned_file_(int* fid,int* msgid,int* gid) +int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid) { grib_handle *h = NULL; - grib_context* c=grib_context_get_default(); - int err=0; + grib_context* c = grib_context_get_default(); + int err = 0; FILE* f = get_file(*fid); - /* fortran convention of 1 based index*/ - const int n=*msgid-1; + if (info_messages == NULL) { + return GRIB_INVALID_ARGUMENT; + } + if (*msgid < 1 || *msgid > info_messages->n) { + return GRIB_INVALID_ARGUMENT; + } + + /* fortran convention of 1-based index */ + const int n = *msgid - 1; - l_message_info* msg=(l_message_info*)grib_oarray_get(info_messages,n); + l_message_info* msg=(l_message_info*)grib_oarray_get(info_messages, n); if (msg && f) { - GRIB_MUTEX_INIT_ONCE(&once,&init); + GRIB_MUTEX_INIT_ONCE(&once, &init); GRIB_MUTEX_LOCK(&read_mutex); - fseeko(f,msg->offset,SEEK_SET); - h=any_new_from_file (c,f,&err); + fseeko(f, msg->offset, SEEK_SET); + h = any_new_from_file (c, f, &err); GRIB_MUTEX_UNLOCK(&read_mutex); } if (err) return err; - if(h){ - push_handle(h,gid); + if (h) { + push_handle(h, gid); return GRIB_SUCCESS; } else { - *gid=-1; + *gid = -1; return GRIB_END_OF_FILE; } } From 1be36946be386f6effff5354e4bf93d43d5bfc56 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 16:23:21 +0000 Subject: [PATCH 237/469] ECC-1740: GRIB2: Addition to concept combinationOfAttributesOfTile --- definitions/grib2/combinationOfAttributesOfTileConcept.def | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib2/combinationOfAttributesOfTileConcept.def b/definitions/grib2/combinationOfAttributesOfTileConcept.def index 465913ca8..93d23dd1e 100644 --- a/definitions/grib2/combinationOfAttributesOfTileConcept.def +++ b/definitions/grib2/combinationOfAttributesOfTileConcept.def @@ -1,5 +1,6 @@ # Concept combinationOfAttributesOfTile +'UNDEF' = {attributeOfTile = [0];} 'UNMOD' = {attributeOfTile = [1];} 'SNOW' = {attributeOfTile = [2];} 'FLOOD' = {attributeOfTile = [3];} From 5636bdfaec14206a7c509afc4b57dddcd497e056 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jan 2024 16:54:26 +0000 Subject: [PATCH 238/469] Fortran: ISO C90 forbids mixed declarations and code --- fortran/grib_fortran.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index a07a3110f..258b9a003 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1467,6 +1467,10 @@ int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid) grib_context* c = grib_context_get_default(); int err = 0; FILE* f = get_file(*fid); + l_message_info* msg = NULL; + + /* fortran convention of 1-based index */ + const int n = *msgid - 1; if (info_messages == NULL) { return GRIB_INVALID_ARGUMENT; @@ -1475,10 +1479,7 @@ int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid) return GRIB_INVALID_ARGUMENT; } - /* fortran convention of 1-based index */ - const int n = *msgid - 1; - - l_message_info* msg=(l_message_info*)grib_oarray_get(info_messages, n); + msg = (l_message_info*)grib_oarray_get(info_messages, n); if (msg && f) { GRIB_MUTEX_INIT_ONCE(&once, &init); From 279ff53a4c7f7a11c218a93bc9e0727284181817 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 10:55:32 +0000 Subject: [PATCH 239/469] Definitions: GTS formatting --- definitions/gts/boot.def | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/definitions/gts/boot.def b/definitions/gts/boot.def index f2a2d3d5b..02b3292e9 100644 --- a/definitions/gts/boot.def +++ b/definitions/gts/boot.def @@ -39,14 +39,13 @@ alias ls.CCCC=CCCC; alias ls.YY=YY; alias ls.GG=GG; alias ls.gg=gg; -position endOfHeadersMarker; +position endOfHeadersMarker; message[4] theMessage; -meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders); -meta md5Headers md5(startOfHeaders,lengthOfHeaders); +meta lengthOfHeaders evaluate(endOfHeadersMarker-startOfHeaders); +meta md5Headers md5(startOfHeaders, lengthOfHeaders); -ascii[4] endMark; +ascii[4] endMark; position totalLength; alias ls.totalLength=totalLength; - From 7424b760966485f48b3f78640777ee5986a16752 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 10:55:55 +0000 Subject: [PATCH 240/469] Testing: GTS compare --- tests/gts_compare.sh | 13 +++++++++++++ tools/gts_compare.cc | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/gts_compare.sh b/tests/gts_compare.sh index 3fd648a1d..6b57e0369 100755 --- a/tests/gts_compare.sh +++ b/tests/gts_compare.sh @@ -64,7 +64,20 @@ set -e # Add correct blocklist ${tools_dir}/gts_compare -b GG $gts_file $fGtsTmp +#---------------------------------------------------- +# Compare using -c +#---------------------------------------------------- +temp1=temp.$label.1.gts +temp2=temp.$label.2.gts +# Pick two messages which do have different contents +${tools_dir}/gts_copy -w count=1 $gts_file $temp1 +${tools_dir}/gts_copy -w count=4 $gts_file $temp2 +${tools_dir}/gts_compare -c theMessage $temp1 $temp2 +rm -f $temp1 $temp2 + +#---------------------------------------------------- # Test with file of the same name in a dir +#---------------------------------------------------- tempDir=temp.$label.dir rm -fr $tempDir mkdir $tempDir diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index fee4f8e00..c9bb66af7 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -611,8 +611,10 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h case GRIB_TYPE_BYTES: if (verbose) printf(" as bytes\n"); - if (options->mode == MODE_GTS) + if (options->mode == MODE_GTS) { + // We do not want to compare the message itself return 0; + } if (len1 < 2) len1 = 512; if (len2 < 2) From e6aafdb7dc6d14078a24f656b3556ecc1c8e2e1f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 11:52:23 +0000 Subject: [PATCH 241/469] Testing: METAR compare --- tests/metar_compare.sh | 12 ++++++++++ tools/grib_compare.cc | 28 +++++++++++------------ tools/metar_compare.cc | 52 +++++++++++++++++++++++++----------------- 3 files changed, 56 insertions(+), 36 deletions(-) diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index 6311e8597..2d43f289c 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -65,6 +65,18 @@ grep -q "DIFFERENCE == string.*theMessage" $fLog # The -d option should have created these files rm -f error1_1.metar error2_1.metar error1_2.metar error2_2.metar +#---------------------------------------------------- +# Compare a key of type double +#---------------------------------------------------- +temp1=temp.$label.metar.1 +temp2=temp.$label.metar.2 +${tools_dir}/metar_copy -w count=1 $metar_file $temp1 +${tools_dir}/metar_copy -w count=2 $metar_file $temp2 +# absolute diff. = 16.53, relative diff. = 0.381315 +${tools_dir}/metar_compare -c latitude -R latitude=0.4 $temp1 $temp2 +${tools_dir}/metar_compare -c latitude -A 17 $temp1 $temp2 +rm -f $temp1 $temp2 + #---------------------------------------------------- # Test: comparing with and without the -b switch #---------------------------------------------------- diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index 9d99498fb..9b9cef404 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -383,21 +383,19 @@ int grib_tool_init(grib_runtime_options* options) } } - { - /* Check for 2nd file being a directory. If so, we assume user is comparing to a file */ - /* with the same name as first file in that directory */ - grib_tools_file* infile = options->infile; /* the 2nd file in comparison */ - if (infile) { - if (path_is_directory(infile->name)) { - /* Take the filename of the 1st file and append to dir */ - char bufr[2048] = {0,}; - /* options->infile_extra->name is the 1st file */ - snprintf(bufr, sizeof(bufr), "%s%c%s", - infile->name, - get_dir_separator_char(), - extract_filename(options->infile_extra->name)); - infile->name = strdup(bufr); - } + // Check for 2nd file being a directory. If so, we assume user is comparing to a file + // with the same name as first file in that directory + grib_tools_file* infile = options->infile; // the 2nd file in comparison + if (infile) { + if (path_is_directory(infile->name)) { + // Take the filename of the 1st file and append to dir + char bufr[2048] = {0,}; + // options->infile_extra->name is the 1st file + snprintf(bufr, sizeof(bufr), "%s%c%s", + infile->name, + get_dir_separator_char(), + extract_filename(options->infile_extra->name)); + infile->name = strdup(bufr); } } diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index a1b3af529..c275273bb 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -279,21 +279,29 @@ int grib_tool_init(grib_runtime_options* options) if (grib_options_on("t:")) tolerance_factor = atof(grib_options_get_option("t:")); - { - /* Check for 2nd file being a directory. If so, we assume user is comparing to a file */ - /* with the same name as first file in that directory */ - grib_tools_file* infile = options->infile; /* the 2nd file in comparison */ - if (infile) { - if (path_is_directory(infile->name)) { - /* Take the filename of the 1st file and append to dir */ - char bufr[2048] = {0,}; - /* options->infile_extra->name is the 1st file */ - snprintf(bufr, 2048, "%s%c%s", - infile->name, - get_dir_separator_char(), - extract_filename(options->infile_extra->name)); - infile->name = strdup(bufr); - } + if (grib_options_on("R:")) { + char* sarg = grib_options_get_option("R:"); + options->tolerance_count = MAX_KEYS; + int err = parse_keyval_string(tool_name, sarg, 1, GRIB_TYPE_DOUBLE, options->tolerance, &(options->tolerance_count)); + if (err == GRIB_INVALID_ARGUMENT) { + usage(); + exit(1); + } + } + + // Check for 2nd file being a directory. If so, we assume user is comparing to a file + // with the same name as first file in that directory + grib_tools_file* infile = options->infile; // the 2nd file in comparison + if (infile) { + if (path_is_directory(infile->name)) { + // Take the filename of the 1st file and append to dir + char bufr[2048] = {0,}; + // options->infile_extra->name is the 1st file + snprintf(bufr, 2048, "%s%c%s", + infile->name, + get_dir_separator_char(), + extract_filename(options->infile_extra->name)); + infile->name = strdup(bufr); } } @@ -693,8 +701,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h pv1 = dval1; pv2 = dval2; value_tolerance *= tolerance_factor; - if (verbose) - printf(" (%d values) tolerance=%g\n", (int)len1, value_tolerance); + if (verbose) { + printf(" (%d values) tolerance=%g \t", (int)len1, value_tolerance); + if (compare_double == &compare_double_absolute) + printf("using compare_double_absolute"); + if (compare_double == &compare_double_relative) + printf("using compare_double_relative"); + printf("\n"); + } for (i = 0; i < len1; i++) { if ((diff = compare_double(pv1++, pv2++, &value_tolerance)) != 0) { countdiff++; @@ -828,7 +842,6 @@ static int compare_all_dump_keys(grib_handle* h1, grib_handle* h2, grib_runtime_ while (grib_keys_iterator_next(iter)) { grib_accessor* xa = grib_keys_iterator_get_accessor(iter); name = grib_keys_iterator_get_name(iter); - /* printf("----- comparing %s\n",name); */ if (blocklisted(name)) continue; @@ -864,7 +877,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; @@ -886,7 +898,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option const void *msg1 = NULL, *msg2 = NULL; size_t size1 = 0, size2 = 0; int memcmp_ret = 0; - /* int ii=0; */ GRIB_CHECK_NOLINE(grib_get_message(h1, &msg1, &size1), 0); GRIB_CHECK_NOLINE(grib_get_message(h2, &msg2, &size2), 0); if (size1 == size2 && !(memcmp_ret = memcmp(msg1, msg2, size1))) { @@ -905,7 +916,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; From af7778cbdde1a429a1e36fa7d526d2fced8e3903 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 13:17:23 +0000 Subject: [PATCH 242/469] Tools: Error messages --- tools/bufr_compare.cc | 30 ++++++++++++++---------------- tools/grib_compare.cc | 24 ++++++++++++------------ tools/gts_compare.cc | 20 ++++++++++---------- tools/metar_compare.cc | 24 ++++++++++++------------ 4 files changed, 48 insertions(+), 50 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index 294a1da26..9a1905944 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -714,7 +714,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if (type1 == GRIB_TYPE_UNDEFINED && (err = grib_get_native_type(handle1, name, &type1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get type of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -727,7 +727,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g return err; } printInfo(handle1); - printf("Oops... cannot get type of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -747,7 +747,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if ((err = grib_get_size(handle1, name, &len1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get size of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -761,7 +761,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g } printInfo(handle1); - printf("Oops... cannot get size of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -826,13 +826,13 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g sval2 = (char*)grib_context_malloc(handle2->context, slen2 * sizeof(char)); if ((err1 = grib_get_string(handle1, name, sval1, &slen1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_string(handle2, name, sval2, &slen2)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -855,13 +855,13 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if ((err1 = grib_get_string_array(handle1, name, svals1, &len1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_string_array(handle2, name, svals2, &len2)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -910,14 +910,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if ((err1 = grib_get_long_array(handle1, name, lval1, &len1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get long value of [%s] in %s field: %s\n", + printf("Error: cannot get long value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_long_array(handle2, name, lval2, &len2)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get long value of [%s] in %s field: %s\n", + printf("Error: cannot get long value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -995,14 +995,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if ((err1 = grib_get_double_array(handle1, name, dval1, &len1)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get double value of [%s] in %s field: %s\n", + printf("Error: cannot get double value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_double_array(handle2, name, dval2, &len2)) != GRIB_SUCCESS) { printInfo(handle1); - printf("Oops... cannot get double value of [%s] in %s field: %s\n", + printf("Error: cannot get double value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -1104,14 +1104,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if ((err1 = grib_get_bytes(handle1, name, uval1, &len1)) != GRIB_SUCCESS) { printInfo(handle1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in %s field: %s\n", + printf("Error: cannot get bytes value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); } if ((err2 = grib_get_bytes(handle2, name, uval2, &len2)) != GRIB_SUCCESS) { printInfo(handle1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in %s field: %s\n", + printf("Error: cannot get bytes value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); } @@ -1316,7 +1316,6 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; @@ -1336,7 +1335,6 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt const void *msg1 = NULL, *msg2 = NULL; size_t size1 = 0, size2 = 0; int memcmp_ret = 0; - /* int ii=0; */ GRIB_CHECK_NOLINE(grib_get_message(handle1, &msg1, &size1), 0); GRIB_CHECK_NOLINE(grib_get_message(handle2, &msg2, &size2), 0); if (size1 == size2 && !(memcmp_ret = memcmp(msg1, msg2, size1))) { diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index 9b9cef404..cace206fe 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -711,7 +711,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if (type1 == GRIB_TYPE_UNDEFINED && (err = grib_get_native_type(h1, name, &type1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get type of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -724,7 +724,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h return err; } printInfo(h1); - printf("Oops... cannot get type of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -746,7 +746,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err = grib_get_size(h1, name, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get size of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -760,7 +760,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h } printInfo(h1); - printf("Oops... cannot get size of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err)); save_error(c, name); return err; } @@ -818,14 +818,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_string(h1, name, sval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_string(h2, name, sval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in %s field: %s\n", + printf("Error: cannot get string value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -875,14 +875,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_long_array(h1, name, lval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in %s field: %s\n", + printf("Error: cannot get long value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_long_array(h2, name, lval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in %s field: %s\n", + printf("Error: cannot get long value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -1000,14 +1000,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_double_array(h1, name, dval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get double value of [%s] in %s field: %s\n", + printf("Error: cannot get double value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_double_array(h2, name, dval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get double value of [%s] in %s field: %s\n", + printf("Error: cannot get double value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); save_error(c, name); } @@ -1121,14 +1121,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_bytes(h1, name, uval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in %s field: %s\n", + printf("Error: cannot get bytes value of [%s] in %s field: %s\n", name, first_str, grib_get_error_message(err1)); } if ((err2 = grib_get_bytes(h2, name, uval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in %s field: %s\n", + printf("Error: cannot get bytes value of [%s] in %s field: %s\n", name, second_str, grib_get_error_message(err2)); } diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index c9bb66af7..849f84554 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -406,7 +406,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if (type1 == GRIB_TYPE_UNDEFINED && (err = grib_get_native_type(h1, name, &type1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get type of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -419,7 +419,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h return err; } printInfo(h1); - printf("Oops... cannot get type of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -443,7 +443,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err = grib_get_size(h1, name, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get size of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -457,7 +457,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h } printInfo(h1); - printf("Oops... cannot get size of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -515,14 +515,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_string(h1, name, sval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in 1st field: %s\n", + printf("Error: cannot get string value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_string(h2, name, sval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in 2nd field: %s\n", + printf("Error: cannot get string value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); save_error(c, name); } @@ -556,14 +556,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_long_array(h1, name, lval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in 1st field: %s\n", + printf("Error: cannot get long value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_long_array(h2, name, lval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in 2nd field: %s\n", + printf("Error: cannot get long value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); save_error(c, name); } @@ -625,14 +625,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_bytes(h1, name, uval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in 1st field: %s\n", + printf("Error: cannot get bytes value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); } if ((err2 = grib_get_bytes(h2, name, uval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in 2nd field: %s\n", + printf("Error: cannot get bytes value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); } diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index c275273bb..c8e824387 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -478,7 +478,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if (type1 == GRIB_TYPE_UNDEFINED && (err = grib_get_native_type(h1, name, &type1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get type of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -491,7 +491,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h return err; } printInfo(h1); - printf("Oops... cannot get type of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get type of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -505,7 +505,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err = grib_get_size(h1, name, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get size of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -519,7 +519,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h } printInfo(h1); - printf("Oops... cannot get size of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); + printf("Error: cannot get size of [%s] in 2nd field: %s\n", name, grib_get_error_message(err)); save_error(c, name); return err; } @@ -567,14 +567,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_string(h1, name, sval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in 1st field: %s\n", + printf("Error: cannot get string value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_string(h2, name, sval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get string value of [%s] in 2nd field: %s\n", + printf("Error: cannot get string value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); save_error(c, name); } @@ -608,14 +608,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_long_array(h1, name, lval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in 1st field: %s\n", + printf("Error: cannot get long value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_long_array(h2, name, lval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get long value of [%s] in 2nd field: %s\n", + printf("Error: cannot get long value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); save_error(c, name); } @@ -674,14 +674,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_double_array(h1, name, dval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get double value of [%s] in 1st field: %s\n", + printf("Error: cannot get double value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); save_error(c, name); } if ((err2 = grib_get_double_array(h2, name, dval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); - printf("Oops... cannot get double value of [%s] in 2nd field: %s\n", + printf("Error: cannot get double value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); save_error(c, name); } @@ -770,14 +770,14 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h if ((err1 = grib_get_bytes(h1, name, uval1, &len1)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in 1st field: %s\n", + printf("Error: cannot get bytes value of [%s] in 1st field: %s\n", name, grib_get_error_message(err1)); } if ((err2 = grib_get_bytes(h2, name, uval2, &len2)) != GRIB_SUCCESS) { printInfo(h1); save_error(c, name); - printf("Oops... cannot get bytes value of [%s] in 2nd field: %s\n", + printf("Error: cannot get bytes value of [%s] in 2nd field: %s\n", name, grib_get_error_message(err2)); } From f80aa163f1e2345551b6e2d8248df490aae5dffb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 13:17:53 +0000 Subject: [PATCH 243/469] Testing: compare with -f --- tests/bufr_compare.sh | 11 +++++++++++ tests/grib_compare.sh | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index fb0b11ea9..56fc335f8 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -328,6 +328,17 @@ set -e [ $status -ne 0 ] grep -q "Failed to unpack 2nd message" $fLog +# ---------------------------------------- +# Summary mode (-f) +# ---------------------------------------- +set +e +${tools_dir}/bufr_compare -f aaen_55.bufr aben_55.bufr > $fLog 2>&1 +status=$? +set -e +[ $status -eq 1 ] +grep -q "Summary of different key values" $fLog + + # Clean up # ------------- diff --git a/tests/grib_compare.sh b/tests/grib_compare.sh index 7b813dc74..65cbd2bb7 100755 --- a/tests/grib_compare.sh +++ b/tests/grib_compare.sh @@ -175,6 +175,16 @@ ${tools_dir}/grib_compare -b $BLACKLIST -R all=2 $temp1 $temp2 cp ${data_dir}/tigge_cf_ecmwf.grib2 $temp1 ${tools_dir}/grib_compare -w typeOfLevel=surface ${data_dir}/tigge_cf_ecmwf.grib2 $temp1 +# ---------------------------------------- +# Summary mode (-f) +# ---------------------------------------- +set +e +${tools_dir}/grib_compare -f ${data_dir}/tigge_cf_ecmwf.grib2 ${data_dir}/tigge_pf_ecmwf.grib2 > $outfile 2>&1 +status=$? +set -e +[ $status -eq 1 ] +grep -q "indicatorOfUnitForTimeIncrement . 7 different" $outfile + # ---------------------------------------- # ECC-651: Two-way (symmetric) comparison From 7e9a6b4078c76c08ac807320e6d968f490320852 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 16:30:36 +0000 Subject: [PATCH 244/469] Tools: Error messages --- tools/grib_get.cc | 1 + tools/grib_ls.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/tools/grib_get.cc b/tools/grib_get.cc index 6251c436f..19ae34a3e 100644 --- a/tools/grib_get.cc +++ b/tools/grib_get.cc @@ -113,6 +113,7 @@ int grib_tool_init(grib_runtime_options* options) grib_handle* hh; FILE* f = fopen(options->latlon_mask, "r"); if (!f) { + fprintf(stderr, "%s: unable to open mask file %s\n", tool_name, options->latlon_mask); perror(options->latlon_mask); exit(1); } diff --git a/tools/grib_ls.cc b/tools/grib_ls.cc index 2be9333e4..ab53e200f 100644 --- a/tools/grib_ls.cc +++ b/tools/grib_ls.cc @@ -137,6 +137,7 @@ int grib_tool_init(grib_runtime_options* options) int idx_overall = -1; FILE* f = fopen(options->latlon_mask, "r"); if (!f) { + fprintf(stderr, "%s: unable to open mask file %s\n", tool_name, options->latlon_mask); perror(options->latlon_mask); exit(1); } From 4ac57746267aa27aaa9efd52c8274c7eb61f7f6d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 16:31:07 +0000 Subject: [PATCH 245/469] Testing: Error conditions --- tests/grib_get_fail.sh | 30 ++++++++++++++++++++++++++++++ tests/grib_ls.sh | 10 ++++++++++ 2 files changed, 40 insertions(+) diff --git a/tests/grib_get_fail.sh b/tests/grib_get_fail.sh index f4a6102e3..d7d0d5b1b 100755 --- a/tests/grib_get_fail.sh +++ b/tests/grib_get_fail.sh @@ -50,6 +50,36 @@ set -e grep -q "Key Nj cannot be 0" $tempText +set +e +${tools_dir}/grib_get -l 0,0,5 $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Wrong mode given" $tempText + + +set +e +${tools_dir}/grib_get -l 0,0,1,nonexistingmask $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "unable to open mask file" $tempText + + +# ------------------------ +# Unreadable message +# ------------------------ +outfile=temp.$label.out +echo GRIB > $outfile +set +e +${tools_dir}/grib_get -p edition $outfile /dev/null > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unreadable message" $tempText +rm -f $outfile + # Clean up rm -f $tempText diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index 2a6f6c5ab..1101d4d52 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -225,6 +225,8 @@ grib_check_key_equals $file 'expver:s' '0001' ${tools_dir}/grib_ls -j -l0,0 -p referenceValue:d $data_dir/sample.grib2 ${tools_dir}/grib_ls -j -l0,0 -p referenceValue:i $data_dir/sample.grib2 +${tools_dir}/grib_get -l0,0,4 $data_dir/sample.grib2 + set +e ${tools_dir}/grib_ls -l0,0,666 $data_dir/sample.grib2 > $tempText 2>&1 status=$? @@ -233,5 +235,13 @@ set -e grep -q "Wrong mode given" $tempText +set +e +${tools_dir}/grib_ls -l0,0,1,nonexistingmask $data_dir/sample.grib2 > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unable to open mask file" $tempText + + # Clean up rm -f $temp1 $temp2 $tempText $tempLog From 0090d8f0cd9868af06609bd45a6020de8ad12a01 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 16:59:58 +0000 Subject: [PATCH 246/469] Testing: gts_dump --- tests/CMakeLists.txt | 1 + tests/gts_dump.sh | 27 +++++++++++++++++++++++++++ tools/gts_dump.cc | 10 +--------- 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100755 tests/gts_dump.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4766e0f73..4e790b091 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -254,6 +254,7 @@ if( HAVE_BUILD_TOOLS ) gts_ls gts_count gts_compare + gts_dump wrap taf pseudo_diag diff --git a/tests/gts_dump.sh b/tests/gts_dump.sh new file mode 100755 index 000000000..b8c8db2e8 --- /dev/null +++ b/tests/gts_dump.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="gts_dump_test" + +fLog=${label}.log +fTmp=${label}.tmp.txt + +# Enter data dir +cd ${data_dir}/gts + +gts_file=EGRR20150317121020_00493212.DAT +${tools_dir}/gts_dump -w count=1 $gts_file +${tools_dir}/gts_dump -Dat $gts_file +${tools_dir}/gts_dump -OH $gts_file + +# Clean up +rm -f $fLog $fTmp diff --git a/tools/gts_dump.cc b/tools/gts_dump.cc index 0f297393b..eff44c548 100644 --- a/tools/gts_dump.cc +++ b/tools/gts_dump.cc @@ -8,12 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/* - * Implementation: gts_dump - * - * - */ - #include "grib_tools.h" grib_option grib_options[] = { @@ -41,7 +35,6 @@ const char* tool_usage = "[options] file file ..."; int grib_options_count = sizeof(grib_options) / sizeof(grib_option); /** -* gts_dump * Dump the content of a GTS file * */ @@ -57,11 +50,10 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { - int opt = grib_options_on("C") + grib_options_on("O") + grib_options_on("D"); + int opt = grib_options_on("O") + grib_options_on("D"); options->dump_mode = (char*)"default"; - if (opt > 1) { printf("%s: simultaneous O/D options not allowed\n", tool_name); exit(1); From c857a1d45faa11e07d880ef877a727c24d397aad Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 17:13:38 +0000 Subject: [PATCH 247/469] Testing: metar_dump -j --- tests/metar_dump.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh index 3be590228..1dfb10874 100755 --- a/tests/metar_dump.sh +++ b/tests/metar_dump.sh @@ -46,4 +46,9 @@ ${tools_dir}/metar_dump $f 2> $REDIRECT > $res_dump diff $ref_dump $res_dump >$REDIRECT 2> $REDIRECT +# JSON +${tools_dir}/metar_dump -j $f + + +# Clean up rm -f $fLog $res_dump From 58a3afbba818446b0632a13dbf85a3f134659529 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 17:16:48 +0000 Subject: [PATCH 248/469] Testing: metar_dump -w --- tests/metar_dump.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh index 1dfb10874..cd9074c22 100755 --- a/tests/metar_dump.sh +++ b/tests/metar_dump.sh @@ -49,6 +49,8 @@ diff $ref_dump $res_dump >$REDIRECT 2> $REDIRECT # JSON ${tools_dir}/metar_dump -j $f +# Skip +${tools_dir}/metar_dump -w count=11 $f # Clean up rm -f $fLog $res_dump From f05870d89a873ed62106f08e06c0e08ee996c8c8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 17:17:58 +0000 Subject: [PATCH 249/469] Testing: metar_dump -d --- tests/metar_dump.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh index cd9074c22..86389a0e0 100755 --- a/tests/metar_dump.sh +++ b/tests/metar_dump.sh @@ -46,6 +46,9 @@ ${tools_dir}/metar_dump $f 2> $REDIRECT > $res_dump diff $ref_dump $res_dump >$REDIRECT 2> $REDIRECT +# Data +${tools_dir}/metar_dump -d $f + # JSON ${tools_dir}/metar_dump -j $f From 05f6952ab44f4d614c349351c26fe168ea306890 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jan 2024 17:35:09 +0000 Subject: [PATCH 250/469] Testing: grib_get_data --- tests/grib_iterator.sh | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tests/grib_iterator.sh b/tests/grib_iterator.sh index 4b8eec5f7..393b3e680 100755 --- a/tests/grib_iterator.sh +++ b/tests/grib_iterator.sh @@ -51,7 +51,7 @@ ${tools_dir}/grib_set -s Ni=33 $samp_dir/GRIB2.tmpl $tempGrib set +e ${tools_dir}/grib_get_data $tempGrib > $tempText 2>&1 status=$? -set +e +set -e [ $status -ne 0 ] grep -q "Grid description is wrong or inconsistent" $tempText @@ -60,16 +60,44 @@ ${tools_dir}/grib_set -s Ni=MISSING $samp_dir/GRIB2.tmpl $tempGrib set +e ${tools_dir}/grib_get_data $tempGrib > $tempText 2>&1 status=$? -set +e +set -e [ $status -ne 0 ] grep -q "Grid description is wrong or inconsistent" $tempText +set +e ${tools_dir}/grib_ls -s Ni=missing -j -p latLonValues $data_dir/sample.grib2 > $tempText 2>&1 -cat $tempText +status=$? +set -e +[ $status -ne 0 ] grep -q "Key Ni cannot be 'missing' for a regular grid" $tempText grep -q "latlonvalues: Unable to create iterator" $tempText +# -w option +${tools_dir}/grib_get_data -w count=11 $data_dir/tigge_cf_ecmwf.grib2 > $tempText + + +# ------------------------ +# Bad key +# ------------------------ +${tools_dir}/grib_get_data -f -p nonexistingkey $data_dir/sample.grib2 > $tempText +grep -q "not found" $tempText + + +# ------------------------ +# Unreadable message +# ------------------------ +echo GRIB > $tempGrib +set +e +${tools_dir}/grib_get_data $tempGrib > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "unreadable message" $tempText + + + # Clean up rm -f $tempText $tempGrib From f9ba1ad66dab89e783a25a1db527256159b0e8c4 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Fri, 5 Jan 2024 15:44:30 +0000 Subject: [PATCH 251/469] Initial commit --- .../localConcepts/ecmf/marsLevtypeConcept.def | 1 + .../localConcepts/ecmf/typeOfLevelConcept.def | 2 ++ .../grib2/tables/local/ecmf/1/0.0.table | 2 ++ .../grib2/tables/local/ecmf/1/4.1.254.table | 2 ++ .../tables/local/ecmf/1/4.2.254.254.table | 22 +++++++++++++++++++ .../grib2/tables/local/ecmf/1/4.5.table | 1 + definitions/mars/type.table | 1 + 7 files changed, 31 insertions(+) create mode 100644 definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def create mode 100644 definitions/grib2/tables/local/ecmf/1/0.0.table create mode 100644 definitions/grib2/tables/local/ecmf/1/4.1.254.table create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.254.254.table diff --git a/definitions/grib2/localConcepts/ecmf/marsLevtypeConcept.def b/definitions/grib2/localConcepts/ecmf/marsLevtypeConcept.def index 8a568ab6f..1f2c64121 100644 --- a/definitions/grib2/localConcepts/ecmf/marsLevtypeConcept.def +++ b/definitions/grib2/localConcepts/ecmf/marsLevtypeConcept.def @@ -6,3 +6,4 @@ 'o2d' = {typeOfFirstFixedSurface=102; typeOfSecondFixedSurface=255;gridDefinitionTemplateNumber=101;numberOfGridUsed=5;} 'o2d' = {typeOfFirstFixedSurface=102; typeOfSecondFixedSurface=255;gridDefinitionTemplateNumber=101;numberOfGridUsed=6;} 'o2d' = {typeOfFirstFixedSurface=102; typeOfSecondFixedSurface=255;gridDefinitionTemplateNumber=101;numberOfGridUsed=7;} +'sfc' = {typeOfFirstFixedSurface=254;} diff --git a/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def b/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def new file mode 100644 index 000000000..1f3b6d47b --- /dev/null +++ b/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def @@ -0,0 +1,2 @@ +# Concept typeOfLevel +'MarsSfcFromMultipleLevels' = {typeOfFirstFixedSurface=254;} diff --git a/definitions/grib2/tables/local/ecmf/1/0.0.table b/definitions/grib2/tables/local/ecmf/1/0.0.table new file mode 100644 index 000000000..a48f89506 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/0.0.table @@ -0,0 +1,2 @@ +# Code table 0.0 for ECMWF - Discipline of processed data in the GRIB message, number of GRIB Master table +254 254 Model internal fields diff --git a/definitions/grib2/tables/local/ecmf/1/4.1.254.table b/definitions/grib2/tables/local/ecmf/1/4.1.254.table new file mode 100644 index 000000000..39abd06a3 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.1.254.table @@ -0,0 +1,2 @@ +# Product discipline 254 for ECMWF - Model internal fields +254 254 Covariances diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table b/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table new file mode 100644 index 000000000..b97ea25e4 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table @@ -0,0 +1,22 @@ +# Code table 4.2 - discipline=254 category=254 for ECMWF +192 192 Covariance between 2-metre temperature and volumetric soil water layer 1 [K m**3 m**-3] +193 193 Covariance between 2-metre relative humidity and volumetric soil water layer 1 [K m**3 m**-3] +194 194 Covariance between surface soil moisture and volumetric soil water layer 1 [m**3 m**-3 m**3 m**-3] +195 195 Covariance between 2-metre temperature and volumetric soil water layer 2 [K m**3 m**-3] +196 196 Covariance between 2-metre relative humidity and volumetric soil water layer 2 [% m**3 m**-3] +197 197 Covariance between surface soil moisture and volumetric soil water layer 2 [m**3 m**-3 m**3 m**-3] +198 198 Covariance between 2-metre temperature and volumetric soil water layer 3 [K m**3 m**-3] +199 199 Covariance between 2-metre relative humidity and volumetric soil water layer 3 [% m**3 m**-3] +200 200 Covariance between surface soil moisture and volumetric soil water layer 3 [m**3 m**-3 m**3 m**-3] +201 201 Covariance between 2-metre temperature and soil temperature layer 1 [K K] +202 202 Covariance between 2-metre relative humidity and soil temperature layer 1 [% K] +203 203 Covariance between 2-metre temperature and soil temperature layer 2 [K K] +204 204 Covariance between 2-metre relative humidity and soil temperature layer 2 [% K] +205 205 Covariance between 2-metre temperature and soil temperature layer 3 [K K] +206 206 Covariance between 2-metre relative humidity and soil temperature layer 3 [% K] +207 207 Covariance between 2-metre temperature and temperature of snow layer 1 [K K] +208 208 Covariance between 2-metre relative humidity and temperature of snow layer 1 [% K] +209 209 Covariance between 2-metre temperature and temperature of snow layer 2 [K K] +210 210 Covariance between 2-metre relative humidity and temperature of snow layer 2 [% K] +211 211 Covariance between 2-metre temperature and temperature of snow layer 3 [K K] +212 212 Covariance between 2-metre relative humidity and temperature of snow layer 3 [% K] diff --git a/definitions/grib2/tables/local/ecmf/1/4.5.table b/definitions/grib2/tables/local/ecmf/1/4.5.table index d479c0944..64153aaee 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.5.table +++ b/definitions/grib2/tables/local/ecmf/1/4.5.table @@ -1 +1,2 @@ 173 173 Top surface of snow, over ice, on sea, lake or river +254 254 MARS levtype SFC originating from fields on multiple levels diff --git a/definitions/mars/type.table b/definitions/mars/type.table index 4850d9f43..1985ee678 100644 --- a/definitions/mars/type.table +++ b/definitions/mars/type.table @@ -73,3 +73,4 @@ 92 pfc Point values 93 ppm Point value metrics 94 gwt Weather types +95 est Ensemble statistics From 8709a6d32d0f7bc4d5e6a280647a39baa30311f3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 16:05:59 +0000 Subject: [PATCH 252/469] Testing: Gaussian sub-area legacy --- data/grib_data_files.txt | 2 ++ tests/grib_iterator.sh | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/data/grib_data_files.txt b/data/grib_data_files.txt index 0647dc142..f6d3a9124 100644 --- a/data/grib_data_files.txt +++ b/data/grib_data_files.txt @@ -90,3 +90,5 @@ gfs.complex.mvmu.grib2 mercator.grib2 run_length_packing.grib2 boustrophedonic.grib1 +reduced_gaussian_sub_area.legacy.grib1 + diff --git a/tests/grib_iterator.sh b/tests/grib_iterator.sh index 393b3e680..45d6543ca 100755 --- a/tests/grib_iterator.sh +++ b/tests/grib_iterator.sh @@ -26,11 +26,11 @@ files="reduced_latlon_surface.grib1 \ regular_latlon_surface.grib2" for f in $files; do - file=${data_dir}/$f - # Must exclude the first line of grib_get_data which is "Latitude Longitude Value" - iterator_count=`${tools_dir}/grib_get_data -m 9999:missing -f -p centre -F "%g" -w count=1 $file | grep -v Lat |wc -l ` - numberOfPoints=`${tools_dir}/grib_get -w count=1 -p numberOfPoints $file` - [ $numberOfPoints = ${iterator_count} ] + file=${data_dir}/$f + # Must exclude the first line of grib_get_data which is "Latitude Longitude Value" + iterator_count=`${tools_dir}/grib_get_data -m 9999:missing -f -p centre -F "%g" -w count=1 $file | grep -v Lat |wc -l ` + numberOfPoints=`${tools_dir}/grib_get -w count=1 -p numberOfPoints $file` + [ $numberOfPoints = ${iterator_count} ] done @@ -97,6 +97,16 @@ set -e cat $tempText grep -q "unreadable message" $tempText +# Legacy Gaussian sub-area (produced by old ProdGen) +# See ECC-906: +# grib_get_data not working correctly with old-style sub-areas of reduced grids +# ------------------------------------------------- +input=$data_dir/reduced_gaussian_sub_area.legacy.grib1 +${tools_dir}/grib_get_data $input > $tempText +grib_check_key_equals $input legacyGaussSubarea 1 + +ECCODES_DEBUG=-1 ${tools_dir}/grib_ls -p numberOfDataPoints $input > $tempText 2>&1 +grep -q "LEGACY MODE activated. Count.=253982. changed to num values.=254139" $tempText # Clean up From aca931a8012bca96c76575e493793b4e54e7317b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 16:53:52 +0000 Subject: [PATCH 253/469] Dead code removal --- src/eccodes_prototypes.h | 2 -- src/grib_value.cc | 39 +++++++++++++++++++-------------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index c6e6e9e17..0771c2656 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1162,8 +1162,6 @@ int grib_set_float_array(grib_handle* h, const char* name, const float* val, siz int grib_set_long_array_internal(grib_handle* h, const char* name, const long* val, size_t length); int grib_set_long_array(grib_handle* h, const char* name, const long* val, size_t length); int grib_get_long_internal(grib_handle* h, const char* name, long* val); -int grib_is_in_dump(const grib_handle* h, const char* name); -int grib_attributes_count(const grib_accessor* a, size_t* size); int grib_get_long(const grib_handle* h, const char* name, long* val); int grib_get_double_internal(grib_handle* h, const char* name, double* val); int grib_get_double(const grib_handle* h, const char* name, double* val); diff --git a/src/grib_value.cc b/src/grib_value.cc index cac46c01a..50cdca970 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -951,27 +951,26 @@ int grib_get_long_internal(grib_handle* h, const char* name, long* val) return ret; } -int grib_is_in_dump(const grib_handle* h, const char* name) -{ - const grib_accessor* a = grib_find_accessor(h, name); - if (a != NULL && (a->flags & GRIB_ACCESSOR_FLAG_DUMP)) - return 1; - else - return 0; -} - -int grib_attributes_count(const grib_accessor* a, size_t* size) -{ - if (a) { - *size = 0; - while (a->attributes[*size] != NULL) { - (*size)++; - } - return GRIB_SUCCESS; - } +// int grib_is_in_dump(const grib_handle* h, const char* name) +// { +// const grib_accessor* a = grib_find_accessor(h, name); +// if (a != NULL && (a->flags & GRIB_ACCESSOR_FLAG_DUMP)) +// return 1; +// else +// return 0; +// } - return GRIB_NOT_FOUND; -} +// int grib_attributes_count(const grib_accessor* a, size_t* size) +// { +// if (a) { +// *size = 0; +// while (a->attributes[*size] != NULL) { +// (*size)++; +// } +// return GRIB_SUCCESS; +// } +// return GRIB_NOT_FOUND; +// } int grib_get_long(const grib_handle* h, const char* name, long* val) { From 731c329e41a111dc35c9ada4c1fa49710dc69c8e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 16:54:42 +0000 Subject: [PATCH 254/469] Testing: Iterator with DEBUG enabled --- tests/grib_iterator.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tests/grib_iterator.sh b/tests/grib_iterator.sh index 45d6543ca..8c9a4fbf8 100755 --- a/tests/grib_iterator.sh +++ b/tests/grib_iterator.sh @@ -102,11 +102,18 @@ grep -q "unreadable message" $tempText # grib_get_data not working correctly with old-style sub-areas of reduced grids # ------------------------------------------------- input=$data_dir/reduced_gaussian_sub_area.legacy.grib1 -${tools_dir}/grib_get_data $input > $tempText -grib_check_key_equals $input legacyGaussSubarea 1 - -ECCODES_DEBUG=-1 ${tools_dir}/grib_ls -p numberOfDataPoints $input > $tempText 2>&1 -grep -q "LEGACY MODE activated. Count.=253982. changed to num values.=254139" $tempText +if [ -f "$input" ]; then + ${tools_dir}/grib_get_data $input > $tempText + grib_check_key_equals $input legacyGaussSubarea 1 + + ECCODES_DEBUG=-1 ${tools_dir}/grib_ls -p numberOfDataPoints $input > $tempText 2>&1 + grep -q "LEGACY MODE activated. Count.=253982. changed to num values.=254139" $tempText +fi + +# Iterate with DEBUG on +input=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl +ECCODES_DEBUG=1 ${tools_dir}/grib_get_data $input > $tempText 2>&1 +grep "global num points=6114" $tempText # Clean up From 90ed7d1e670baf5e13ef15300a2d0343c8136474 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 17:02:12 +0000 Subject: [PATCH 255/469] Dead code removal --- src/eccodes_prototypes.h | 1 - src/grib_value.cc | 152 +++++++++++++++++++-------------------- 2 files changed, 74 insertions(+), 79 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 0771c2656..d2d29d60e 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1201,7 +1201,6 @@ int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, si int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_t* length); grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list); void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl); -int grib_get_key_value_list(grib_handle* h, grib_key_value_list* list); int grib_get_values(grib_handle* h, grib_values* args, size_t count); int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); diff --git a/src/grib_value.cc b/src/grib_value.cc index 50cdca970..513adc2ac 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1598,74 +1598,70 @@ static void grib_clean_key_value(grib_context* c, grib_key_value_list* kv) kv->size = 0; } -static int grib_get_key_value(grib_handle* h, grib_key_value_list* kv) -{ - int err = 0; - size_t size = 0; - grib_keys_iterator* iter = NULL; - grib_key_value_list* list = NULL; - - if (kv->has_value) - grib_clean_key_value(h->context, kv); - - err = grib_get_size(h, kv->name, &size); - if (err) { - kv->error = err; - return err; - } - if (size == 0) - size = 512; - - switch (kv->type) { - case GRIB_TYPE_LONG: - kv->long_value = (long*)grib_context_malloc_clear(h->context, size * sizeof(long)); - err = grib_get_long_array(h, kv->name, kv->long_value, &size); - kv->error = err; - break; - case GRIB_TYPE_DOUBLE: - kv->double_value = (double*)grib_context_malloc_clear(h->context, size * sizeof(double)); - err = grib_get_double_array(h, kv->name, kv->double_value, &size); - kv->error = err; - break; - case GRIB_TYPE_STRING: - grib_get_string_length(h, kv->name, &size); - kv->string_value = (char*)grib_context_malloc_clear(h->context, size * sizeof(char)); - err = grib_get_string(h, kv->name, kv->string_value, &size); - kv->error = err; - break; - case GRIB_TYPE_BYTES: - kv->string_value = (char*)grib_context_malloc_clear(h->context, size * sizeof(char)); - err = grib_get_bytes(h, kv->name, (unsigned char*)kv->string_value, &size); - kv->error = err; - break; - case CODES_NAMESPACE: - iter = grib_keys_iterator_new(h, 0, kv->name); - list = (grib_key_value_list*)grib_context_malloc_clear(h->context, sizeof(grib_key_value_list)); - kv->namespace_value = list; - while (grib_keys_iterator_next(iter)) { - list->name = grib_keys_iterator_get_name(iter); - err = grib_get_native_type(h, list->name, &(list->type)); - if (err) - return err; - err = grib_get_key_value(h, list); - if (err) - return err; - list->next = (grib_key_value_list*)grib_context_malloc_clear(h->context, sizeof(grib_key_value_list)); - list = list->next; - } - grib_keys_iterator_delete(iter); - break; - - default: - err = grib_get_native_type(h, kv->name, &(kv->type)); - if (err) - return err; - err = grib_get_key_value(h, kv); - break; - } - kv->has_value = 1; - return err; -} +// static int grib_get_key_value(grib_handle* h, grib_key_value_list* kv) +// { +// int err = 0; +// size_t size = 0; +// grib_keys_iterator* iter = NULL; +// grib_key_value_list* list = NULL; +// if (kv->has_value) +// grib_clean_key_value(h->context, kv); +// err = grib_get_size(h, kv->name, &size); +// if (err) { +// kv->error = err; +// return err; +// } +// if (size == 0) +// size = 512; +// switch (kv->type) { +// case GRIB_TYPE_LONG: +// kv->long_value = (long*)grib_context_malloc_clear(h->context, size * sizeof(long)); +// err = grib_get_long_array(h, kv->name, kv->long_value, &size); +// kv->error = err; +// break; +// case GRIB_TYPE_DOUBLE: +// kv->double_value = (double*)grib_context_malloc_clear(h->context, size * sizeof(double)); +// err = grib_get_double_array(h, kv->name, kv->double_value, &size); +// kv->error = err; +// break; +// case GRIB_TYPE_STRING: +// grib_get_string_length(h, kv->name, &size); +// kv->string_value = (char*)grib_context_malloc_clear(h->context, size * sizeof(char)); +// err = grib_get_string(h, kv->name, kv->string_value, &size); +// kv->error = err; +// break; +// case GRIB_TYPE_BYTES: +// kv->string_value = (char*)grib_context_malloc_clear(h->context, size * sizeof(char)); +// err = grib_get_bytes(h, kv->name, (unsigned char*)kv->string_value, &size); +// kv->error = err; +// break; +// case CODES_NAMESPACE: +// iter = grib_keys_iterator_new(h, 0, kv->name); +// list = (grib_key_value_list*)grib_context_malloc_clear(h->context, sizeof(grib_key_value_list)); +// kv->namespace_value = list; +// while (grib_keys_iterator_next(iter)) { +// list->name = grib_keys_iterator_get_name(iter); +// err = grib_get_native_type(h, list->name, &(list->type)); +// if (err) +// return err; +// err = grib_get_key_value(h, list); +// if (err) +// return err; +// list->next = (grib_key_value_list*)grib_context_malloc_clear(h->context, sizeof(grib_key_value_list)); +// list = list->next; +// } +// grib_keys_iterator_delete(iter); +// break; +// default: +// err = grib_get_native_type(h, kv->name, &(kv->type)); +// if (err) +// return err; +// err = grib_get_key_value(h, kv); +// break; +// } +// kv->has_value = 1; +// return err; +// } grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list) { @@ -1696,16 +1692,16 @@ void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl) } } -int grib_get_key_value_list(grib_handle* h, grib_key_value_list* list) -{ - int ret = 0; - grib_key_value_list* kvl = list; - while (kvl) { - ret = grib_get_key_value(h, kvl); - kvl = kvl->next; - } - return ret; -} +// int grib_get_key_value_list(grib_handle* h, grib_key_value_list* list) +// { +// int ret = 0; +// grib_key_value_list* kvl = list; +// while (kvl) { +// ret = grib_get_key_value(h, kvl); +// kvl = kvl->next; +// } +// return ret; +// } int grib_get_values(grib_handle* h, grib_values* args, size_t count) { From 1016c2e0f1aadde302ffc7cb3f7eced72a73bf62 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 17:22:03 +0000 Subject: [PATCH 256/469] Dead code removal --- src/eccodes_prototypes.h | 2 - src/grib_value.cc | 88 ++++++++++++++++++++-------------------- 2 files changed, 43 insertions(+), 47 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index d2d29d60e..ba44e941a 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1199,8 +1199,6 @@ int grib_get_string_array(const grib_handle* h, const char* name, char** val, si int ecc__grib_get_long_array_internal(const grib_handle* h, grib_accessor* a, long* val, size_t buffer_len, size_t* decoded_length); int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, size_t* length); int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_t* length); -grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list); -void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl); int grib_get_values(grib_handle* h, grib_values* args, size_t count); int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); diff --git a/src/grib_value.cc b/src/grib_value.cc index 513adc2ac..538e73c2a 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1579,24 +1579,24 @@ int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_ return ret; } -static void grib_clean_key_value(grib_context* c, grib_key_value_list* kv) -{ - if (kv->long_value) - grib_context_free(c, kv->long_value); - kv->long_value = NULL; - if (kv->double_value) - grib_context_free(c, kv->double_value); - kv->double_value = NULL; - if (kv->string_value) - grib_context_free(c, kv->string_value); - kv->string_value = NULL; - if (kv->namespace_value) - grib_key_value_list_delete(c, kv->namespace_value); - kv->namespace_value = NULL; - kv->error = 0; - kv->has_value = 0; - kv->size = 0; -} +// static void grib_clean_key_value(grib_context* c, grib_key_value_list* kv) +// { +// if (kv->long_value) +// grib_context_free(c, kv->long_value); +// kv->long_value = NULL; +// if (kv->double_value) +// grib_context_free(c, kv->double_value); +// kv->double_value = NULL; +// if (kv->string_value) +// grib_context_free(c, kv->string_value); +// kv->string_value = NULL; +// if (kv->namespace_value) +// grib_key_value_list_delete(c, kv->namespace_value); +// kv->namespace_value = NULL; +// kv->error = 0; +// kv->has_value = 0; +// kv->size = 0; +// } // static int grib_get_key_value(grib_handle* h, grib_key_value_list* kv) // { @@ -1663,34 +1663,32 @@ static void grib_clean_key_value(grib_context* c, grib_key_value_list* kv) // return err; // } -grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list) -{ - grib_key_value_list* next = list; - grib_key_value_list* the_clone = (grib_key_value_list*)grib_context_malloc_clear(c, sizeof(grib_key_value_list)); - grib_key_value_list* p = the_clone; - - while (next && next->name) { - p->name = grib_context_strdup(c, next->name); - p->type = next->type; - next = next->next; - } - return the_clone; -} - -void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl) -{ - grib_key_value_list* next = kvl; - grib_key_value_list* p = NULL; - while (next) { - p = next->next; - if (next->type == CODES_NAMESPACE) - grib_key_value_list_delete(c, next->namespace_value); +// grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list) +// { +// grib_key_value_list* next = list; +// grib_key_value_list* the_clone = (grib_key_value_list*)grib_context_malloc_clear(c, sizeof(grib_key_value_list)); +// grib_key_value_list* p = the_clone; +// while (next && next->name) { +// p->name = grib_context_strdup(c, next->name); +// p->type = next->type; +// next = next->next; +// } +// return the_clone; +// } - grib_clean_key_value(c, next); - grib_context_free(c, next); - next = p; - } -} +// void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl) +// { +// grib_key_value_list* next = kvl; +// grib_key_value_list* p = NULL; +// while (next) { +// p = next->next; +// if (next->type == CODES_NAMESPACE) +// grib_key_value_list_delete(c, next->namespace_value); +// grib_clean_key_value(c, next); +// grib_context_free(c, next); +// next = p; +// } +// } // int grib_get_key_value_list(grib_handle* h, grib_key_value_list* list) // { From 23854304362a69c605a61a14d5932085d161c412 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 18:57:22 +0000 Subject: [PATCH 257/469] Testing: Fortran nearest --- examples/F90/CMakeLists.txt | 2 ++ examples/F90/grib_nearest_four_single.f90 | 31 +++++++++++++++++++++++ examples/F90/grib_nearest_four_single.sh | 12 +++++++++ examples/F90/grib_set_data_force.f90 | 15 +++++++---- 4 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 examples/F90/grib_nearest_four_single.f90 create mode 100755 examples/F90/grib_nearest_four_single.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 880a47f37..738ccec6e 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -37,6 +37,7 @@ if( HAVE_BUILD_TOOLS ) grib_elements grib_nearest grib_nearest_single + grib_nearest_four_single grib_precision grib_print_data grib_set_keys @@ -90,6 +91,7 @@ else() grib_nearest grib_elements grib_nearest_single + grib_nearest_four_single grib_precision grib_print_data grib_set_missing diff --git a/examples/F90/grib_nearest_four_single.f90 b/examples/F90/grib_nearest_four_single.f90 new file mode 100644 index 000000000..674745bfd --- /dev/null +++ b/examples/F90/grib_nearest_four_single.f90 @@ -0,0 +1,31 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +program find_nearest_4single + use eccodes + implicit none + integer :: infile, i + integer :: igrib + real(8) :: inlat = 5, inlon = 10 + real(8) :: outlats(4), outlons(4) + real(8) :: values(4), distances(4) + integer(kind=kindOfInt) :: indexes(4) + + call codes_open_file(infile, '../../data/reduced_gaussian_lsm.grib1', 'r') + call codes_grib_new_from_file(infile, igrib) + + call codes_grib_find_nearest_four_single(igrib, .true., inlat, inlon, outlats, outlons, values, distances, indexes) + call codes_release(igrib) + + call codes_close_file(infile) + + print *, ' outlats outlons values distances indexes' + do i = 1, 4 + write (*, '(F10.3, F10.3, F10.5, F10.3, I8)') outlats(i), outlons(i), values(i), distances(i), indexes(i) + end do +end program diff --git a/examples/F90/grib_nearest_four_single.sh b/examples/F90/grib_nearest_four_single.sh new file mode 100755 index 000000000..22b07624f --- /dev/null +++ b/examples/F90/grib_nearest_four_single.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_nearest_four_single diff --git a/examples/F90/grib_set_data_force.f90 b/examples/F90/grib_set_data_force.f90 index a5a3db2fc..d8762e649 100644 --- a/examples/F90/grib_set_data_force.f90 +++ b/examples/F90/grib_set_data_force.f90 @@ -13,7 +13,8 @@ program set_data_force integer :: outfile integer :: i, igrib, iret, numberOfValues, cnt real :: d, e - real, dimension(:), allocatable :: values + real(4), dimension(:), allocatable :: values_real4 + real(8), dimension(:), allocatable :: values_real8 integer, parameter :: max_strsize = 200 character(len=max_strsize) :: outfile_name @@ -24,7 +25,8 @@ program set_data_force call codes_get_size(igrib, 'values', numberOfValues) - allocate (values(numberOfValues), stat=iret) + allocate (values_real4(numberOfValues), stat=iret) + allocate (values_real8(numberOfValues), stat=iret) d = 10e-8 e = d cnt = 1 @@ -33,7 +35,8 @@ program set_data_force e = e*10 cnt = 1 end if - values(i) = d + values_real4(i) = d + values_real8(i) = d d = d + e cnt = cnt + 1 end do @@ -42,9 +45,11 @@ program set_data_force call codes_set(igrib, 'bitmapPresent', 1) ! set data values - call codes_set_force(igrib, 'codedValues', values) + call codes_set_force(igrib, 'codedValues', values_real4) + call codes_set_force(igrib, 'codedValues', values_real8) call codes_write(igrib, outfile) call codes_release(igrib) - deallocate (values) + deallocate (values_real4) + deallocate (values_real8) end program set_data_force From 634cff7c6c2bb21b70ed8f3c589fd4623ba09187 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jan 2024 19:49:41 +0000 Subject: [PATCH 258/469] Testing: Fortran index read --- examples/F90/grib_index.f90 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/F90/grib_index.f90 b/examples/F90/grib_index.f90 index d0d248978..1d928e2ea 100644 --- a/examples/F90/grib_index.f90 +++ b/examples/F90/grib_index.f90 @@ -23,7 +23,7 @@ program index character(len=20) :: oshortName integer :: shortNameSize, numberSize, levelSize, stepSize integer :: i, j, k, l - integer :: idx, igrib, count1 + integer :: idx, idx1, igrib, count1 character(len=10) :: index_file = 'index.idx' ! uncomment following line to load index from file @@ -107,7 +107,10 @@ program index ! save the index to a file for later reuse call codes_index_write(idx, index_file) + call codes_index_read(idx1, index_file) + call codes_index_release(idx) + call codes_index_release(idx1) deallocate (level) deallocate (shortName) From 0f3d2bf9d2a66a8451627d7d10ed81ae7e876682 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 6 Jan 2024 13:54:53 +0000 Subject: [PATCH 259/469] Testing: codes_any_new_from_loaded --- examples/F90/CMakeLists.txt | 1 + examples/F90/codes_load_file.f90 | 43 ++++++++++++++++++++++++++++++++ examples/F90/codes_load_file.sh | 12 +++++++++ 3 files changed, 56 insertions(+) create mode 100644 examples/F90/codes_load_file.f90 create mode 100755 examples/F90/codes_load_file.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 738ccec6e..c8c291514 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -23,6 +23,7 @@ if( HAVE_BUILD_TOOLS ) grib_index codes_dump codes_scan_file + codes_load_file grib_copy_message bufr_copy_message grib_get_keys diff --git a/examples/F90/codes_load_file.f90 b/examples/F90/codes_load_file.f90 new file mode 100644 index 000000000..0c4d809dd --- /dev/null +++ b/examples/F90/codes_load_file.f90 @@ -0,0 +1,43 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program codes_load_file + use eccodes + implicit none + + integer :: ifile, cnt, level, step + integer :: i, igrib, iret + character(len=32) :: infile_name = '../../data/index.grib' + + call codes_open_file(ifile, infile_name, 'r') + + call codes_any_load_all_from_file(ifile, cnt) + + i = 45 + call codes_any_new_from_loaded(i, igrib) + call codes_get(igrib, 'level', level) + call codes_get(igrib, 'stepRange', step) + + print *, 'Num messages=', cnt + print *, 'Msg ',i,' level=',level, ' step=', step + + call codes_release(igrib) + + ! Invalid msg number + i = 450 + call codes_any_new_from_loaded(i, igrib, iret) + if (iret /= GRIB_INVALID_ARGUMENT) then + call codes_check(iret, 'Error', 'codes_any_new_from_loaded should have failed') + else + print *,'Invalid message index returned error (as expected)' + end if + + call codes_close_file(ifile) + +end program diff --git a/examples/F90/codes_load_file.sh b/examples/F90/codes_load_file.sh new file mode 100755 index 000000000..77d5ac169 --- /dev/null +++ b/examples/F90/codes_load_file.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_codes_load_file From 7bd5d6228baf499e2c4e131e1c189ca6ab45069e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 6 Jan 2024 13:55:05 +0000 Subject: [PATCH 260/469] Cleanup --- fortran/grib_fortran.c | 80 ++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 258b9a003..2c0cbb0d4 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1439,7 +1439,7 @@ int any_f_scan_file_(int* fid, int* n) { grib_context* c=grib_context_get_default(); /* this needs a callback to a destructor*/ - /* grib_oarray_delete_content(c,binary_messages); */ + /* grib_oarray_delete_content(c, info_messages); */ grib_oarray_delete(c, info_messages); info_messages=grib_oarray_new(c, 1000, 1000); @@ -1500,64 +1500,65 @@ int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid) } /*****************************************************************************/ -int any_f_load_all_from_file_(int* fid,int* n) { +int any_f_load_all_from_file_(int* fid, int* n) { int err = 0; off_t offset=0; - void *data = NULL; + void* data = NULL; size_t olen = 0; l_binary_message* msg=0; FILE* f = get_file(*fid); - grib_context* c=grib_context_get_default(); + grib_context* c = grib_context_get_default(); /* this needs a callback to a destructor*/ - /* grib_oarray_delete_content(c,binary_messages); */ + /* grib_oarray_delete_content(c, binary_messages); */ - grib_oarray_delete(c,binary_messages); - binary_messages=grib_oarray_new(c,1000,1000); + grib_oarray_delete(c, binary_messages); + binary_messages = grib_oarray_new(c, 1000, 1000); if (f) { - while (err!=GRIB_END_OF_FILE) { - data = wmo_read_any_from_file_malloc ( f, 0,&olen,&offset,&err ); - msg=(l_binary_message*)grib_context_malloc_clear(c,sizeof(l_binary_message)); - msg->data=data; - msg->size=olen; + while (err != GRIB_END_OF_FILE) { + data = wmo_read_any_from_file_malloc (f, 0,&olen, &offset, &err); + msg = (l_binary_message*)grib_context_malloc_clear(c,sizeof(l_binary_message)); + msg->data = data; + msg->size = olen; - if (err==0 && data) grib_oarray_push(c,binary_messages,msg); + if (err == 0 && data) grib_oarray_push(c, binary_messages, msg); } - if (err==GRIB_END_OF_FILE) err=0; + if (err == GRIB_END_OF_FILE) err = 0; } - *n=binary_messages->n; + *n = binary_messages->n; return err; } /*****************************************************************************/ -int any_f_new_from_loaded_(int* msgid,int* gid) +int any_f_new_from_loaded_(int* msgid, int* gid) { - grib_handle *h = NULL; - grib_context* c=grib_context_get_default(); + grib_handle* h = NULL; + grib_context* c = grib_context_get_default(); /* fortran convention of 1 based index*/ - const int n=*msgid-1; + const int n = *msgid - 1; - l_binary_message* msg=(l_binary_message*)grib_oarray_get(binary_messages,n); + l_binary_message* msg = (l_binary_message*)grib_oarray_get(binary_messages, n); if (msg && msg->data) - h=grib_handle_new_from_message_copy (c,msg->data,msg->size); + h = grib_handle_new_from_message_copy(c, msg->data, msg->size); - if(h){ - push_handle(h,gid); + if (h) { + push_handle(h, gid); return GRIB_SUCCESS; - } else { - *gid=-1; + } + else { + *gid = -1; return GRIB_END_OF_FILE; } } /*****************************************************************************/ int codes_f_clear_loaded_from_file_(void) { - grib_context* c=grib_context_get_default(); + grib_context* c = grib_context_get_default(); /* grib_oarray_delete_content(c,binary_messages); */ - grib_oarray_delete(c,binary_messages); + grib_oarray_delete(c, binary_messages); return GRIB_SUCCESS; } @@ -1565,27 +1566,28 @@ int codes_f_clear_loaded_from_file_(void) { int grib_f_count_in_file_(int* fid,int* n) { int err = 0; FILE* f = get_file(*fid); - if (f) err=grib_count_in_file(0, f,n); + if (f) err = grib_count_in_file(0, f, n); return err; } /*****************************************************************************/ -int any_f_new_from_file_(int* fid, int* gid){ - int err = 0; - FILE* f = get_file(*fid); - grib_handle *h = NULL; +int any_f_new_from_file_(int* fid, int* gid) { + int err = 0; + FILE* f = get_file(*fid); + grib_handle* h = NULL; - if(f){ - h = codes_handle_new_from_file(0,f,PRODUCT_ANY,&err); - if(h){ - push_handle(h,gid); + if (f) { + h = codes_handle_new_from_file(0, f, PRODUCT_ANY, &err); + if (h) { + push_handle(h, gid); return GRIB_SUCCESS; - } else { - *gid=-1; + } + else { + *gid = -1; return GRIB_END_OF_FILE; } } - *gid=-1; + *gid = -1; return GRIB_INVALID_FILE; } From 3f266ab17f9551f7efcc49bb4f6a37550f7bccfc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 6 Jan 2024 13:55:19 +0000 Subject: [PATCH 261/469] Testing: Padding --- tests/grib_padding.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_padding.sh b/tests/grib_padding.sh index daa64fe8f..6aeb757ec 100755 --- a/tests/grib_padding.sh +++ b/tests/grib_padding.sh @@ -15,6 +15,11 @@ REDIRECT=/dev/null tempGrib=temp.local.$label.grib1 tempFilt=temp.local.$label.filt +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + ${tools_dir}/grib_set -s setLocalDefinition=1 ${data_dir}/regular_latlon_surface.grib1 $tempGrib cat > $tempFilt < Date: Sat, 6 Jan 2024 20:49:08 +0000 Subject: [PATCH 262/469] Testing: Fortran scan/load and GTS compare --- examples/F90/codes_load_file.f90 | 2 +- examples/F90/codes_load_file.sh | 11 +++- examples/F90/codes_scan_file.f90 | 10 ++-- examples/F90/codes_scan_file.sh | 7 ++- tests/gts_compare.sh | 14 +++++ tools/gts_compare.cc | 95 +++----------------------------- 6 files changed, 40 insertions(+), 99 deletions(-) diff --git a/examples/F90/codes_load_file.f90 b/examples/F90/codes_load_file.f90 index 0c4d809dd..3572b4b4d 100644 --- a/examples/F90/codes_load_file.f90 +++ b/examples/F90/codes_load_file.f90 @@ -13,7 +13,7 @@ program codes_load_file integer :: ifile, cnt, level, step integer :: i, igrib, iret - character(len=32) :: infile_name = '../../data/index.grib' + character(len=32) :: infile_name = '../../data/index.grib' call codes_open_file(ifile, infile_name, 'r') diff --git a/examples/F90/codes_load_file.sh b/examples/F90/codes_load_file.sh index 77d5ac169..6a4fa78d8 100755 --- a/examples/F90/codes_load_file.sh +++ b/examples/F90/codes_load_file.sh @@ -9,4 +9,13 @@ . ./include.ctest.sh -${examples_dir}/eccodes_f_codes_load_file +label='eccodes_f_codes_load_file' +temp=temp.$label.txt + +# The input file is hard coded => data/index.grib +${examples_dir}/eccodes_f_codes_load_file > $temp + +grep -q "Num messages= *384" $temp +grep -q "level= *700 step= *60" $temp + +rm -f $temp diff --git a/examples/F90/codes_scan_file.f90 b/examples/F90/codes_scan_file.f90 index 7c0438275..9c21ef77b 100644 --- a/examples/F90/codes_scan_file.f90 +++ b/examples/F90/codes_scan_file.f90 @@ -10,12 +10,10 @@ program codes_scan_file use eccodes implicit none - integer, parameter :: max_strsize = 200 - integer :: ifile, cnt, level, step - integer :: i, igrib, iret - character(len=max_strsize) :: infile_name - call getarg(1, infile_name) + integer :: ifile, cnt, level, step + integer :: i, igrib, iret + character(len=32) :: infile_name = '../../data/index.grib' call codes_open_file(ifile, infile_name, 'r') @@ -35,7 +33,7 @@ program codes_scan_file i = 450 call codes_any_new_from_scanned_file(ifile, i, igrib, iret) if (iret /= GRIB_INVALID_ARGUMENT) then - call codes_check(iret, 'codes_any_new_from_scanned_file', 'exit') + call codes_check(iret, 'Error', 'codes_any_new_from_scanned_file should have failed') else print *,'Invalid message index returned error (as expected)' end if diff --git a/examples/F90/codes_scan_file.sh b/examples/F90/codes_scan_file.sh index 80ca95bc3..4df8398b5 100755 --- a/examples/F90/codes_scan_file.sh +++ b/examples/F90/codes_scan_file.sh @@ -9,10 +9,11 @@ . ./include.ctest.sh -temp='temp.eccodes_f_codes_scan_file.txt' +label='eccodes_f_codes_scan_file' +temp=temp.$label.txt -input=../../data/index.grib -${examples_dir}/eccodes_f_codes_scan_file $input > $temp +# The input file is hard coded => data/index.grib +${examples_dir}/eccodes_f_codes_scan_file > $temp grep -q "Num messages= *384" $temp grep -q "level= *700 step= *60" $temp diff --git a/tests/gts_compare.sh b/tests/gts_compare.sh index 6b57e0369..0860530c3 100755 --- a/tests/gts_compare.sh +++ b/tests/gts_compare.sh @@ -73,6 +73,20 @@ temp2=temp.$label.2.gts ${tools_dir}/gts_copy -w count=1 $gts_file $temp1 ${tools_dir}/gts_copy -w count=4 $gts_file $temp2 ${tools_dir}/gts_compare -c theMessage $temp1 $temp2 +${tools_dir}/gts_compare -c theMessage -a $temp1 $temp2 + +set +e +${tools_dir}/gts_compare -c ls:n $temp1 $temp2 +status=$? +set -e +[ $status -eq 1 ] + +set +e +${tools_dir}/gts_compare -c ls:n -a $temp1 $temp2 +status=$? +set -e +[ $status -eq 1 ] + rm -f $temp1 $temp2 #---------------------------------------------------- diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index 849f84554..2d3392526 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -395,7 +395,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h int isMissing1 = 0, isMissing2 = 0; char *sval1 = NULL, *sval2 = NULL; - unsigned char *uval1 = NULL, *uval2 = NULL; long *lval1 = NULL, *lval2 = NULL; grib_context* c = h1->context; @@ -424,23 +423,12 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h return err; } - /* - if(type1 != type2) - { - printInfo(h1); - printf("Warning, [%s] has different types: 1st field: [%s], 2nd field: [%s]\n", - name,grib_get_type_name(type1),grib_get_type_name(type2)); - return GRIB_TYPE_MISMATCH; - } - */ - if (type1 == GRIB_TYPE_LABEL) return err; if (type1 == GRIB_TYPE_SECTION) return err; - if ((err = grib_get_size(h1, name, &len1)) != GRIB_SUCCESS) { printInfo(h1); printf("Error: cannot get size of [%s] in 1st field: %s\n", name, grib_get_error_message(err)); @@ -462,16 +450,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h return err; } - /* - if(len1 != len2 && type1 != GRIB_TYPE_STRING) - { - printInfo(h1); - printf("[%s] has different size: 1st field: %ld, 2nd field: %ld\n",name,(long)len1,(long)len2); - save_error(c,name); - return GRIB_COUNT_MISMATCH; - } - */ - if (options->mode != MODE_GTS) { /* TODO: Ignore missing values for keys in GTS. Not yet implemented */ isMissing1 = ((grib_is_missing(h1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; @@ -485,8 +463,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h } if (isMissing1 == 1) { - if (verbose) - printf(" is set to missing in 1st field\n"); + if (verbose) printf(" is set to missing in 1st field\n"); printInfo(h1); printf("%s is set to missing in 1st field but is not missing in 2nd field\n", name); err1 = GRIB_VALUE_MISMATCH; @@ -495,8 +472,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h } if (isMissing2 == 1) { - if (verbose) - printf(" is set to missing in 1st field\n"); + if (verbose) printf(" is set to missing in 1st field\n"); printInfo(h1); printf("%s is set to missing in 2nd field but is not missing in 1st field\n", name); err1 = GRIB_VALUE_MISMATCH; @@ -506,8 +482,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h switch (type1) { case GRIB_TYPE_STRING: - if (verbose) - printf(" as string\n"); + if (verbose) printf(" as string\n"); grib_get_string_length(h1, name, &len1); grib_get_string_length(h2, name, &len2); sval1 = (char*)grib_context_malloc(h1->context, len1 * sizeof(char)); @@ -548,8 +523,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h break; case GRIB_TYPE_LONG: - if (verbose) - printf(" as long\n"); + if (verbose) printf(" as long\n"); lval1 = (long*)grib_context_malloc(h1->context, len1 * sizeof(long)); lval2 = (long*)grib_context_malloc(h2->context, len2 * sizeof(long)); @@ -609,71 +583,19 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h break; case GRIB_TYPE_BYTES: - if (verbose) - printf(" as bytes\n"); + if (verbose) printf(" as bytes\n"); if (options->mode == MODE_GTS) { // We do not want to compare the message itself return 0; } - if (len1 < 2) - len1 = 512; - if (len2 < 2) - len2 = 512; - uval1 = (unsigned char*)grib_context_malloc(h1->context, len1 * sizeof(unsigned char)); - uval2 = (unsigned char*)grib_context_malloc(h2->context, len2 * sizeof(unsigned char)); - - if ((err1 = grib_get_bytes(h1, name, uval1, &len1)) != GRIB_SUCCESS) { - printInfo(h1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in 1st field: %s\n", - name, grib_get_error_message(err1)); - } - - if ((err2 = grib_get_bytes(h2, name, uval2, &len2)) != GRIB_SUCCESS) { - printInfo(h1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in 2nd field: %s\n", - name, grib_get_error_message(err2)); - } - - if (err1 == GRIB_SUCCESS && err2 == GRIB_SUCCESS) { - if (memcmp(uval1, uval2, len1) != 0) { - size_t i; - for (i = 0; i < len1; i++) - if (uval1[i] != uval2[i]) { - printInfo(h1); - save_error(c, name); - if (len1 == 1) - printf("[%s] byte values are different: [%02x] and [%02x]\n", - name, uval1[i], uval2[i]); - else - printf("[%s] byte value %zu of %ld are different: [%02x] and [%02x]\n", - name, i, (long)len1, uval1[i], uval2[i]); - - err1 = GRIB_VALUE_MISMATCH; - break; - } - err1 = GRIB_VALUE_MISMATCH; - } - } - - grib_context_free(h1->context, uval1); - grib_context_free(h2->context, uval2); - - if (err1) - return err1; - if (err2) - return err2; break; case GRIB_TYPE_LABEL: - if (verbose) - printf(" as label\n"); + if (verbose) printf(" as label\n"); break; default: - if (verbose) - printf("\n"); + if (verbose) printf("\n"); printInfo(h1); save_error(c, name); printf("Cannot compare [%s], unsupported type %d\n", name, type1); @@ -699,7 +621,6 @@ static int compare_all_dump_keys(grib_handle* h1, grib_handle* h2, grib_runtime_ while (grib_keys_iterator_next(iter)) { grib_accessor* xa = grib_keys_iterator_get_accessor(iter); name = grib_keys_iterator_get_name(iter); - /* printf("----- comparing %s\n",name); */ if (blocklisted(name)) continue; @@ -735,7 +656,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; @@ -796,7 +716,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ if (blocklisted(name)) continue; From 1458690dcf85f2bdabfcfcdd6cf4ae7e1e7dd68a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 6 Jan 2024 21:35:38 +0000 Subject: [PATCH 263/469] Tools: Dead code removal --- tools/gts_compare.cc | 2 +- tools/metar_compare.cc | 51 +----------------------------------------- 2 files changed, 2 insertions(+), 51 deletions(-) diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index 2d3392526..b7692f65a 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -383,7 +383,7 @@ static void save_error(grib_context* c, const char* key) } } -static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_handle* h2, const char* name, int type) +static int compare_values(const grib_runtime_options* options, grib_handle* h1, grib_handle* h2, const char* name, int type) { size_t len1 = 0; size_t len2 = 0; diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index c8e824387..48db23534 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -452,7 +452,7 @@ static void save_error(grib_context* c, const char* key) } } -static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_handle* h2, const char* name, int type) +static int compare_values(const grib_runtime_options* options, grib_handle* h1, grib_handle* h2, const char* name, int type) { size_t len1 = 0; size_t len2 = 0; @@ -464,7 +464,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h int isMissing1 = 0, isMissing2 = 0; char *sval1 = NULL, *sval2 = NULL; - unsigned char *uval1 = NULL, *uval2 = NULL; double *dval1 = NULL, *dval2 = NULL; long *lval1 = NULL, *lval2 = NULL; double maxdiff = 0; @@ -760,54 +759,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h printf(" as bytes\n"); if (options->mode == MODE_METAR) return 0; - if (len1 < 2) - len1 = 512; - if (len2 < 2) - len2 = 512; - uval1 = (unsigned char*)grib_context_malloc(h1->context, len1 * sizeof(unsigned char)); - uval2 = (unsigned char*)grib_context_malloc(h2->context, len2 * sizeof(unsigned char)); - - if ((err1 = grib_get_bytes(h1, name, uval1, &len1)) != GRIB_SUCCESS) { - printInfo(h1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in 1st field: %s\n", - name, grib_get_error_message(err1)); - } - - if ((err2 = grib_get_bytes(h2, name, uval2, &len2)) != GRIB_SUCCESS) { - printInfo(h1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in 2nd field: %s\n", - name, grib_get_error_message(err2)); - } - - if (err1 == GRIB_SUCCESS && err2 == GRIB_SUCCESS) { - if (memcmp(uval1, uval2, len1) != 0) { - for (i = 0; i < len1; i++) - if (uval1[i] != uval2[i]) { - printInfo(h1); - save_error(c, name); - if (len1 == 1) - printf("[%s] byte values are different: [%02x] and [%02x]\n", - name, uval1[i], uval2[i]); - else - printf("[%s] byte value %d of %ld are different: [%02x] and [%02x]\n", - name, i, (long)len1, uval1[i], uval2[i]); - - err1 = GRIB_VALUE_MISMATCH; - break; - } - err1 = GRIB_VALUE_MISMATCH; - } - } - - grib_context_free(h1->context, uval1); - grib_context_free(h2->context, uval2); - - if (err1) - return err1; - if (err2) - return err2; break; case GRIB_TYPE_LABEL: From 25ca99dc0baee368b4c04873f673f72e4a7b90c7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 13:22:05 +0000 Subject: [PATCH 264/469] Testing: HDF5 --- samples/hdf5.tmpl | Bin 0 -> 342 bytes tests/CMakeLists.txt | 1 + tests/hdf5.sh | 29 +++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 samples/hdf5.tmpl create mode 100755 tests/hdf5.sh diff --git a/samples/hdf5.tmpl b/samples/hdf5.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..a517bc7dd5eb27f84006276c1b3f631dcd906ef7 GIT binary patch literal 342 zcmeD5aB<`1lHy|G;9!7(|4VzTjB5F62zpyp}WW%8CNg~fz-e>!e}lg q2A~maybM5!$=&cU)EowP7=vQkHi+XJ8BSt|px9=d2F%mquK@tT?mdkF literal 0 HcmV?d00001 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4e790b091..a02568dbf 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -256,6 +256,7 @@ if( HAVE_BUILD_TOOLS ) gts_compare gts_dump wrap + hdf5 taf pseudo_diag metar_ls diff --git a/tests/hdf5.sh b/tests/hdf5.sh new file mode 100755 index 000000000..1f8d90a72 --- /dev/null +++ b/tests/hdf5.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="hdf5_test" + +tempOut=temp.${label}.out +tempTxt=temp.${label}.txt +tempRef=temp.${label}.ref + +input=$ECCODES_SAMPLES_PATH/hdf5.tmpl + +${tools_dir}/grib_dump -TA -O $input > $tempTxt +grep -q "versionNumberOfSuperblock = 2" $tempTxt +grep -q "endOfFileAddress = 342" $tempTxt + +id=`${tools_dir}/grib_get -TA -p identifier $input` +[ "$id" = "HDF5" ] + +# Clean up +rm -f $tempOut $tempRef $tempTxt From b5470b229742f564a579680d386e1807fb72051e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 14:07:23 +0000 Subject: [PATCH 265/469] Dead code removal: TAF and METAR --- src/eccodes_prototypes.h | 2 - src/grib_io.cc | 95 +++++++++++++++++++--------------------- 2 files changed, 44 insertions(+), 53 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index ba44e941a..ba88a265f 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1020,8 +1020,6 @@ int wmo_read_any_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_grib_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); -int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len); -int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_any_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); int wmo_read_grib_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); int wmo_read_bufr_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); diff --git a/src/grib_io.cc b/src/grib_io.cc index ce8d2aa65..978885c09 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1267,57 +1267,50 @@ int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len) return err; } -int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len) -{ - int err; - user_buffer_t u; - reader r; - - u.user_buffer = buffer; - u.buffer_size = *len; - - r.read_data = f; - r.read = &stdio_read; - r.alloc_data = &u; - r.alloc = &user_provider_buffer; - r.headers_only = 0; - r.seek = &stdio_seek; - r.seek_from_start = &stdio_seek_from_start; - r.tell = &stdio_tell; - r.offset = 0; - r.message_size = 0; - - err = read_any_taf(&r); - *len = r.message_size; - - return err; -} - -int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len) -{ - int err; - user_buffer_t u; - reader r; - - u.user_buffer = buffer; - u.buffer_size = *len; - - r.read_data = f; - r.read = &stdio_read; - r.alloc_data = &u; - r.alloc = &user_provider_buffer; - r.headers_only = 0; - r.seek = &stdio_seek; - r.seek_from_start = &stdio_seek_from_start; - r.tell = &stdio_tell; - r.offset = 0; - r.message_size = 0; - - err = read_any_metar(&r); - *len = r.message_size; - - return err; -} +// int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len) +// { +// int err; +// user_buffer_t u; +// reader r; +// u.user_buffer = buffer; +// u.buffer_size = *len; + +// r.read_data = f; +// r.read = &stdio_read; +// r.alloc_data = &u; +// r.alloc = &user_provider_buffer; +// r.headers_only = 0; +// r.seek = &stdio_seek; +// r.seek_from_start = &stdio_seek_from_start; +// r.tell = &stdio_tell; +// r.offset = 0; +// r.message_size = 0; +// err = read_any_taf(&r); +// *len = r.message_size; +// return err; +// } + +// int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len) +// { +// int err; +// user_buffer_t u; +// reader r; +// u.user_buffer = buffer; +// u.buffer_size = *len; +// r.read_data = f; +// r.read = &stdio_read; +// r.alloc_data = &u; +// r.alloc = &user_provider_buffer; +// r.headers_only = 0; +// r.seek = &stdio_seek; +// r.seek_from_start = &stdio_seek_from_start; +// r.tell = &stdio_tell; +// r.offset = 0; +// r.message_size = 0; +// err = read_any_metar(&r); +// *len = r.message_size; +// return err; +// } /*================== */ From 5eb9379428b50c9ae354bb3a104b4b2c8999ac23 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 14:10:33 +0000 Subject: [PATCH 266/469] Testing: Fix for Windows --- tests/hdf5.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/hdf5.sh b/tests/hdf5.sh index 1f8d90a72..c1c41597e 100755 --- a/tests/hdf5.sh +++ b/tests/hdf5.sh @@ -12,6 +12,11 @@ label="hdf5_test" +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + tempOut=temp.${label}.out tempTxt=temp.${label}.txt tempRef=temp.${label}.ref From 28b7d13eea65ad8b35df5f838a8f2945eff567cd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 15:26:58 +0000 Subject: [PATCH 267/469] Testing: grib_repair/grib_read_any_from_memory --- src/grib_handle.cc | 2 ++ src/grib_io.cc | 2 -- tests/CMakeLists.txt | 1 + tests/grib_repair.sh | 25 +++++++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100755 tests/grib_repair.sh diff --git a/src/grib_handle.cc b/src/grib_handle.cc index d4c94e4e3..f476ab9f2 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -428,6 +428,8 @@ grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind pr return metar_new_from_file(c, f, error); if (product == PRODUCT_GTS) return gts_new_from_file(c, f, error); + //if (product == PRODUCT_TAF) + // return taf_new_from_file(c, f, error); if (product == PRODUCT_ANY) return any_new_from_file(c, f, error); diff --git a/src/grib_io.cc b/src/grib_io.cc index 978885c09..d4d876cca 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1274,7 +1274,6 @@ int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len) // reader r; // u.user_buffer = buffer; // u.buffer_size = *len; - // r.read_data = f; // r.read = &stdio_read; // r.alloc_data = &u; @@ -1724,7 +1723,6 @@ int grib_read_any_from_memory(grib_context* ctx, unsigned char** data, size_t* d err = read_any(&r, /*no_alloc=*/0, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); *len = r.message_size; - *data_length = m.data_len; *data = m.data; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a02568dbf..7f36206d0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -160,6 +160,7 @@ if( HAVE_BUILD_TOOLS ) # and/or take much longer list(APPEND tests_extra grib_data_quality_checks + grib_repair grib_g1monthlydate grib_g1fcperiod grib_bpv_limit diff --git a/tests/grib_repair.sh b/tests/grib_repair.sh new file mode 100755 index 000000000..3d7178408 --- /dev/null +++ b/tests/grib_repair.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_repair_test" +tempText=temp.$label.txt +tempGrib=temp.$label.grib + +export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 + +${tools_dir}/grib_repair $data_dir/bad.grib $tempGrib > $tempText 2>&1 +${tools_dir}/grib_ls $tempGrib + +grep -q "Wrong message length" $tempText + +# Clean up +rm -f $tempText $tempGrib From 22104b872b03689ff45f12583e5bbdee1b9f7b59 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 15:48:25 +0000 Subject: [PATCH 268/469] Remove deprecated files --- examples/F90/include.sh | 59 -------------------------------------- examples/python/include.sh | 32 --------------------- 2 files changed, 91 deletions(-) delete mode 100755 examples/F90/include.sh delete mode 100644 examples/python/include.sh diff --git a/examples/F90/include.sh b/examples/F90/include.sh deleted file mode 100755 index 74403ee37..000000000 --- a/examples/F90/include.sh +++ /dev/null @@ -1,59 +0,0 @@ -# (C) Copyright 2005- ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - -CMAKE_INCLUDE_FILE=include.ctest.sh -if [ -f "$CMAKE_INCLUDE_FILE" ]; then - # This is the config file for Cmake tests - . ./$CMAKE_INCLUDE_FILE - -else - set -eax - - echo - echo "TEST: $0" - - if [ -z "${data_dir}" ] - then - cd ../../ - cpath=`pwd` - ECCODES_DEFINITION_PATH=$cpath/definitions - export ECCODES_DEFINITION_PATH - ECCODES_SAMPLES_PATH=$cpath/samples - export ECCODES_SAMPLES_PATH - tools_dir=$cpath/tools - examples_dir=$cpath/examples/F90 - data_dir=$cpath/data - samples_dir=$cpath/samples - - if test "x$ECCODES_TEST_WITH_VALGRIND" != "x"; then - tools_dir="valgrind --error-exitcode=1 -q $cpath/tools" - examples_dir="valgrind --error-exitcode=1 -q $cpath/examples/F90" - fi - - else - echo "Skipping test $0" - exit - fi - - cd "$cpath/examples/F90" - - if [ -z "${GRIB_API_INCLUDE}" ] - then - GRIB_API_INCLUDE=`pwd`/src - fi - - if [ -z "${GRIB_API_LIB}" ] - then - GRIB_API_LIB=`pwd`/src - fi - - # Download the data needed for tests - ${data_dir}/download.sh "${data_dir}" - - set -u -fi diff --git a/examples/python/include.sh b/examples/python/include.sh deleted file mode 100644 index e91fdd3d6..000000000 --- a/examples/python/include.sh +++ /dev/null @@ -1,32 +0,0 @@ -CMAKE_INCLUDE_FILE=include.ctest.sh -if [ -f "$CMAKE_INCLUDE_FILE" ]; then - # This is the config file for Cmake tests - . ./$CMAKE_INCLUDE_FILE - -else - set -eax - echo - echo "TEST: $0" - - cpath=$TOPBUILDDIR - ECCODES_DEFINITION_PATH=$cpath/definitions - export ECCODES_DEFINITION_PATH - ECCODES_SAMPLES_PATH=$cpath/samples - export ECCODES_SAMPLES_PATH - tools_dir=$cpath/tools - examples_dir=$cpath/examples/python - data_dir=$cpath/data - examples_src=$examples_dir - - PYTHONPATH=$cpath/python:$cpath/python/.libs:$PYTHONPATH - export PYTHONPATH - - HAVE_MEMFS=0 - ECCODES_ON_WINDOWS=0 - - # Download the data needed for tests - ${data_dir}/download.sh "${data_dir}" - - set -u - -fi From 393efa3b702d4e3ed5ccf1369f0ef301831705cb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 16:19:43 +0000 Subject: [PATCH 269/469] Testing: Cleanup --- tests/grib_ecc-1212.sh | 3 --- tests/grib_indexing.sh | 3 --- 2 files changed, 6 deletions(-) diff --git a/tests/grib_ecc-1212.sh b/tests/grib_ecc-1212.sh index 7ae426756..e1f32e596 100755 --- a/tests/grib_ecc-1212.sh +++ b/tests/grib_ecc-1212.sh @@ -66,7 +66,6 @@ cat > $tempRef < $tempOut # edition centre date time dataType gridType typeOfLevel level shortName packingType echo "2 ecmf 20200805 1200 an regular_ll surface 0 t grid_simple" > $tempRef -cat $tempOut diff -w $tempRef $tempOut # Check "time" namespace @@ -84,7 +82,6 @@ ${tools_dir}/grib_get -n time $tempGrib > $tempOut echo "h 20200804 0000 36" > $tempRef diff -w $tempRef $tempOut - # numberOfForecastsUsedInLocalTime > 1 # ------------------------------------ cat > $tempFilt </dev/null # Must remove first two lines (filename specifics) ${tools_dir}/grib_dump ${tempIndex} | sed '1,2d' > $tempOut -#cat $tempOut cat > $tempRef <$tempOut status=$? set -e [ $status -ne 0 ] -cat $tempOut grep -q "Indexes contained in the input files have different keys" $tempOut rm -f $tempIndex1 $tempIndex2 $tempOut @@ -130,7 +128,6 @@ ${tools_dir}/grib_compare -v $tempIndex2 $tempIndex1 2>$tempOut status=$? set -e [ $status -ne 0 ] -cat $tempOut grep -q "Indexes contained in the input files have different keys" $tempOut rm -f $tempIndex1 $tempIndex2 $tempOut From 557da6b2de43435e782dea995316ec73d6ae688c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 16:20:03 +0000 Subject: [PATCH 270/469] Testing: extract offsets --- tests/extract_offsets.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index 828a4dd3f..b36005cb9 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -48,5 +48,13 @@ set -e [ $status -ne 0 ] grep -q "Wrong message length" $tempLog +set +e +$EXEC ${test_dir}/extract_offsets nonexistentfile > $tempLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Unable to read file" $tempLog + + # Clean up rm -f $temp1 $temp2 $tempLog From 290e1ba3211ff70b8c74917ed8e43f5c7f867e9d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 16:34:22 +0000 Subject: [PATCH 271/469] Testing: Failing test --- tests/grib_repair.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/grib_repair.sh b/tests/grib_repair.sh index 3d7178408..794b75307 100755 --- a/tests/grib_repair.sh +++ b/tests/grib_repair.sh @@ -16,7 +16,9 @@ tempGrib=temp.$label.grib export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 +ls -l $data_dir/bad.grib ${tools_dir}/grib_repair $data_dir/bad.grib $tempGrib > $tempText 2>&1 +cat $tempText ${tools_dir}/grib_ls $tempGrib grep -q "Wrong message length" $tempText From 1c0c10cedb4925a9576c8739d2c98791af283a40 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 16:52:57 +0000 Subject: [PATCH 272/469] Testing: Fix grib_repair test --- tests/CMakeLists.txt | 5 ++++- tests/grib_repair.sh | 14 +++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7f36206d0..94bbc2882 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -160,7 +160,6 @@ if( HAVE_BUILD_TOOLS ) # and/or take much longer list(APPEND tests_extra grib_data_quality_checks - grib_repair grib_g1monthlydate grib_g1fcperiod grib_bpv_limit @@ -363,6 +362,10 @@ if( HAVE_BUILD_TOOLS ) TYPE SCRIPT CONDITION ECCODES_INSTALL_EXTRA_TOOLS COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_check_gaussian_grids.sh ) + ecbuild_add_test( TARGET eccodes_t_grib_repair + TYPE SCRIPT + CONDITION ECCODES_INSTALL_EXTRA_TOOLS AND ENABLE_EXTRA_TESTS + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_repair.sh ) # Note: making the test dependent on the grib files (with DEPENDS) diff --git a/tests/grib_repair.sh b/tests/grib_repair.sh index 794b75307..430fa89cb 100755 --- a/tests/grib_repair.sh +++ b/tests/grib_repair.sh @@ -14,14 +14,14 @@ label="grib_repair_test" tempText=temp.$label.txt tempGrib=temp.$label.grib -export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 +if [ -e "${tools_dir}/grib_repair" ]; then + export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 + ${tools_dir}/grib_repair $data_dir/bad.grib $tempGrib > $tempText 2>&1 + cat $tempText + ${tools_dir}/grib_ls $tempGrib -ls -l $data_dir/bad.grib -${tools_dir}/grib_repair $data_dir/bad.grib $tempGrib > $tempText 2>&1 -cat $tempText -${tools_dir}/grib_ls $tempGrib - -grep -q "Wrong message length" $tempText + grep -q "Wrong message length" $tempText +fi # Clean up rm -f $tempText $tempGrib From 574bdc080ad82236325b3432392008702a09c3b2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 17:28:36 +0000 Subject: [PATCH 273/469] Testing: bufr_filter unreadable message --- tests/bufr_filter_fail.sh | 16 ++++++++++++++++ tests/grib_repair.sh | 21 ++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/tests/bufr_filter_fail.sh b/tests/bufr_filter_fail.sh index ed38ba64c..2ab8b3ef0 100755 --- a/tests/bufr_filter_fail.sh +++ b/tests/bufr_filter_fail.sh @@ -105,6 +105,22 @@ cat $tempErr grep -q "Input output problem" $tempErr +# ------------------------ +# Unreadable message +# ------------------------ +cat > $fRules < $outfile +set +e +${tools_dir}/bufr_filter $fRules $outfile > $tempErr 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unreadable message" $tempErr +rm -f $outfile + # Clean up rm -f $fLog $fRules $tempErr diff --git a/tests/grib_repair.sh b/tests/grib_repair.sh index 430fa89cb..876ebdff0 100755 --- a/tests/grib_repair.sh +++ b/tests/grib_repair.sh @@ -3,7 +3,7 @@ # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# +# # In applying this licence, ECMWF does not waive the privileges and immunities granted to it by # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # @@ -12,16 +12,23 @@ label="grib_repair_test" tempText=temp.$label.txt -tempGrib=temp.$label.grib +tempGoodGribs=temp.$label.good.grib +tempBadGribs=temp.$label.bad.grib if [ -e "${tools_dir}/grib_repair" ]; then export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 - ${tools_dir}/grib_repair $data_dir/bad.grib $tempGrib > $tempText 2>&1 - cat $tempText - ${tools_dir}/grib_ls $tempGrib - + ${tools_dir}/grib_repair $data_dir/bad.grib $tempGoodGribs $tempBadGribs > $tempText 2>&1 grep -q "Wrong message length" $tempText + + count=$( ${tools_dir}/grib_count $tempGoodGribs ) + [ $count -eq 1 ] + + count=$( ${tools_dir}/grib_count $tempBadGribs ) + [ $count -eq 3 ] + + ${tools_dir}/grib_ls $tempGoodGribs + ${tools_dir}/grib_ls $tempBadGribs fi # Clean up -rm -f $tempText $tempGrib +rm -f $tempText $tempGoodGribs $tempBadGribs From 808aa46225e20697eb9f7eee63a208e21091fd20 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 7 Jan 2024 17:52:23 +0000 Subject: [PATCH 274/469] Testing: Error conditions (unreadable message) --- tests/bufr_compare.sh | 11 +++++++++++ tests/bufr_get.sh | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index 56fc335f8..819900b15 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -339,6 +339,17 @@ set -e grep -q "Summary of different key values" $fLog +# ---------------------------------------- +# Unreadable message +# ---------------------------------------- +echo BUFR > $fBufrTmp +set +e +${tools_dir}/bufr_compare $fBufrTmp $fBufrTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unreadable message" $fLog + # Clean up # ------------- diff --git a/tests/bufr_get.sh b/tests/bufr_get.sh index 57dade77e..0449cfc92 100755 --- a/tests/bufr_get.sh +++ b/tests/bufr_get.sh @@ -120,6 +120,18 @@ result=`${tools_dir}/bufr_get -p unpack:s,heightOfStation aaen_55.bufr` [ "$result" = "0 858000" ] +# ---------------------------------------- +# Unreadable message +# ---------------------------------------- +echo BUFR > $fTmp +set +e +${tools_dir}/bufr_get -p edition $fTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "unreadable message" $fLog + + # Clean up rm -f $fLog $fTmp $res_get $tempRef From 75d9b0ccc0f1b8854a16c7de9454cd92d42fbc93 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 13:42:39 +0000 Subject: [PATCH 275/469] Testing: Fortran read bytes --- examples/F90/CMakeLists.txt | 1 + examples/F90/grib_read_bytes.f90 | 27 +++++++++++++++++++++++++++ examples/F90/grib_read_bytes.sh | 12 ++++++++++++ fortran/grib_fortran.c | 2 ++ 4 files changed, 42 insertions(+) create mode 100644 examples/F90/grib_read_bytes.f90 create mode 100755 examples/F90/grib_read_bytes.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index c8c291514..88b77e9fa 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -50,6 +50,7 @@ if( HAVE_BUILD_TOOLS ) grib_copy_namespace grib_read_message grib_read_from_file + grib_read_bytes grib_get_set_uuid grib_clone grib_ecc-1316 diff --git a/examples/F90/grib_read_bytes.f90 b/examples/F90/grib_read_bytes.f90 new file mode 100644 index 000000000..950eb2924 --- /dev/null +++ b/examples/F90/grib_read_bytes.f90 @@ -0,0 +1,27 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program grib_read_bytes + use eccodes + implicit none + integer :: ifile + integer :: intsize + parameter(intsize=10000) + character, dimension(intsize) :: bufferChar + character(len=32) :: input_grib_file = '../../data/v.grib2' + + call codes_open_file(ifile, input_grib_file, 'r') + + ! First 4 chars should be 'GRIB' + call codes_read_bytes(ifile, bufferChar, 4) + print*, bufferChar(1:5) + + call codes_close_file(ifile) + +end program diff --git a/examples/F90/grib_read_bytes.sh b/examples/F90/grib_read_bytes.sh new file mode 100755 index 000000000..37858c63f --- /dev/null +++ b/examples/F90/grib_read_bytes.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_read_bytes diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 2c0cbb0d4..d9ab1f459 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -840,6 +840,7 @@ static int clear_bufr_keys_iterator(int keys_iterator_id) } /*****************************************************************************/ +#if 0 int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbytes) { grib_context* c; int err=0; @@ -853,6 +854,7 @@ int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbyt return GRIB_INVALID_FILE; } } +#endif /*****************************************************************************/ int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { From ada0309905714647ebd9370eefbf0c2ff1b6dd52 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 15:14:08 +0000 Subject: [PATCH 276/469] Error messages: GRIB1 large messages --- src/grib_accessor_class_g1_message_length.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index adff03efe..630202579 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -203,7 +203,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_find_accessor(grib_handle_of_accessor(a), self->sec4_length), &total_length, &sec4_length); - + if (total_length != *val) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s %s: Failed to set GRIB1 message length to %ld" + " (actual length=%ld)", + cclass_name, __func__, *val, total_length); + grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try encoding as GRIB2\n"); + } Assert(total_length == *val); } From 42d45cee1e8f74b24db8d4c8145624d509c08cf0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 17:39:10 +0000 Subject: [PATCH 277/469] ECC-1741: Assertion failure: Encoding a large field in GRIB1 --- src/eccodes_prototypes.h | 2 +- src/grib_accessor_class.cc | 3 ++- src/grib_accessor_class_data_g1simple_packing.cc | 3 ++- src/grib_accessor_class_g1_message_length.cc | 1 + src/grib_accessor_class_g1bitmap.cc | 3 ++- src/grib_buffer.cc | 8 +++++--- src/grib_value.cc | 4 ++-- tests/grib_png.sh | 2 +- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index ba88a265f..aba20c9b4 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -801,7 +801,7 @@ void grib_grow_buffer(const grib_context* c, grib_buffer* b, size_t new_size); void grib_buffer_set_ulength_bits(const grib_context* c, grib_buffer* b, size_t length_bits); void grib_buffer_set_ulength(const grib_context* c, grib_buffer* b, size_t length); void grib_recompute_sections_lengths(grib_section* s); -void grib_buffer_replace(grib_accessor* a, const unsigned char* data, size_t newsize, int update_lengths, int update_paddings); +int grib_buffer_replace(grib_accessor* a, const unsigned char* data, size_t newsize, int update_lengths, int update_paddings); void grib_update_sections_lengths(grib_handle* h); /* grib_dumper.cc*/ diff --git a/src/grib_accessor_class.cc b/src/grib_accessor_class.cc index 06da7e830..524e40ecf 100644 --- a/src/grib_accessor_class.cc +++ b/src/grib_accessor_class.cc @@ -322,7 +322,8 @@ int grib_section_adjust_sizes(grib_section* s, int update, int depth) if (update) { plen = length; lret = grib_pack_long(s->aclength, &plen, &len); - Assert(lret == GRIB_SUCCESS); + if (lret != GRIB_SUCCESS) + return lret; s->padding = 0; } else { diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index 0541388f6..c863f7595 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -313,7 +313,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_data_g1simple_packing : pack_double : packing %s, %d values", a->name, n_vals); - grib_buffer_replace(a, buf, buflen, 1, 1); + ret = grib_buffer_replace(a, buf, buflen, 1, 1); + if (ret != GRIB_SUCCESS) return ret; grib_context_buffer_free(a->context, buf); diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index 630202579..44e2f84bc 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -210,6 +210,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) " (actual length=%ld)", cclass_name, __func__, *val, total_length); grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try encoding as GRIB2\n"); + return GRIB_ENCODING_ERROR; } Assert(total_length == *val); } diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index bfa835f01..b624d4dbe 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -149,7 +149,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits, tlen * 8 - *len)) != GRIB_SUCCESS) return err; - grib_buffer_replace(a, buf, tlen, 1, 1); + err = grib_buffer_replace(a, buf, tlen, 1, 1); + if (err) return err; grib_context_free(a->context, buf); diff --git a/src/grib_buffer.cc b/src/grib_buffer.cc index 43e7f7bc3..525e59f31 100644 --- a/src/grib_buffer.cc +++ b/src/grib_buffer.cc @@ -195,8 +195,8 @@ static void update_offsets_after(grib_accessor* a, long len) // update_sections_lengths(s->owner->parent); // } -void grib_buffer_replace(grib_accessor* a, const unsigned char* data, - size_t newsize, int update_lengths, int update_paddings) +int grib_buffer_replace(grib_accessor* a, const unsigned char* data, + size_t newsize, int update_lengths, int update_paddings) { size_t offset = a->offset; long oldsize = grib_get_next_position_offset(a) - offset; @@ -232,11 +232,13 @@ void grib_buffer_replace(grib_accessor* a, const unsigned char* data, update_offsets_after(a, increase); if (update_lengths) { grib_update_size(a, newsize); - grib_section_adjust_sizes(grib_handle_of_accessor(a)->root, 1, 0); + int err = grib_section_adjust_sizes(grib_handle_of_accessor(a)->root, 1, 0); + if (err) return err; if (update_paddings) grib_update_paddings(grib_handle_of_accessor(a)->root); } } + return GRIB_SUCCESS; } void grib_update_sections_lengths(grib_handle* h) diff --git a/src/grib_value.cc b/src/grib_value.cc index 538e73c2a..2ac9cb3ce 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -755,7 +755,7 @@ int grib_set_double_array_internal(grib_handle* h, const char* name, const doubl } if (ret != GRIB_SUCCESS) - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set double array %s (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set double array '%s' (%s)", name, grib_get_error_message(ret)); /*if (h->context->debug) fprintf(stderr,"ECCODES DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/ return ret; @@ -928,7 +928,7 @@ int grib_set_long_array_internal(grib_handle* h, const char* name, const long* v { int ret = _grib_set_long_array(h, name, val, length, 0); if (ret != GRIB_SUCCESS) - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set long array %s (%s)", + grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set long array '%s' (%s)", name, grib_get_error_message(ret)); return ret; } diff --git a/tests/grib_png.sh b/tests/grib_png.sh index eee61eec5..6ad01ed3e 100755 --- a/tests/grib_png.sh +++ b/tests/grib_png.sh @@ -53,7 +53,7 @@ infile=${data_dir}/sample.grib2 set +e ${tools_dir}/grib_set -r -s packingType=grid_png $infile $temp > $tempErr 2>&1 set -e -grep -q "Unable to set double array codedValues" $tempErr +grep -q "Unable to set double array 'codedValues'" $tempErr # Nearest neighbour # ---------------------- From bfda78d07ce894e0e3962c2477af34dd310099e6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 18:20:27 +0000 Subject: [PATCH 278/469] ECC-1741: Add test --- tests/CMakeLists.txt | 2 + tests/grib_set_large_message_fail.cc | 65 ++++++++++++++++++++++++++++ tests/grib_set_large_message_fail.sh | 14 ++++++ 3 files changed, 81 insertions(+) create mode 100644 tests/grib_set_large_message_fail.cc create mode 100755 tests/grib_set_large_message_fail.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 94bbc2882..3bed4fc84 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -19,6 +19,7 @@ list(APPEND test_c_bins grib_multi_from_message grib_clone_headers_only grib_read_index + grib_set_large_message_fail unit_tests bufr_keys_iter grib_keys_iter @@ -160,6 +161,7 @@ if( HAVE_BUILD_TOOLS ) # and/or take much longer list(APPEND tests_extra grib_data_quality_checks + grib_set_large_message_fail grib_g1monthlydate grib_g1fcperiod grib_bpv_limit diff --git a/tests/grib_set_large_message_fail.cc b/tests/grib_set_large_message_fail.cc new file mode 100644 index 000000000..ea0b2a2c9 --- /dev/null +++ b/tests/grib_set_large_message_fail.cc @@ -0,0 +1,65 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include +#include +#undef NDEBUG +#include + +#include "eccodes.h" + +int main(int argc, char** argv) +{ + int err = 0, i = 0, NUM_MISSING = 10; + codes_handle* h = NULL; + size_t values_len = 0; + long Ni = 0, Nj = 0; + double* values = NULL; + const double missing = 1.0e36; + bool use_bitmap = true; + + h = codes_grib_handle_new_from_samples(NULL, "GRIB1"); + + CODES_CHECK(codes_set_double(h, "missingValue", missing), 0); + + Ni = Nj = 20000; + values_len = Ni * Nj; + + values = (double*)calloc(values_len, sizeof(double)); + + CODES_CHECK(codes_set_long(h, "Ni", Ni), 0); + CODES_CHECK(codes_set_long(h, "Nj", Nj), 0); + + if (use_bitmap) { + printf("Adding a bitmap...\n"); + CODES_CHECK(codes_set_long(h, "bitmapPresent", 1), 0); + for (i = 0; i < NUM_MISSING; i++) { + values[i] = missing; + } + } else { + printf("Not adding a bitmap...\n"); + values[0] = 42; + values[1] = 52; + } + + printf("Setting the values array...\n"); + err = codes_set_double_array(h, "values", values, values_len); + if (err) { + printf("codes_set_double_array failed as expected: err=%s\n", codes_get_error_message(err)); + } else { + fprintf(stderr, "codes_set_double_array should have failed!\n"); + return 1; + } + + codes_handle_delete(h); + free(values); + + return 0; +} diff --git a/tests/grib_set_large_message_fail.sh b/tests/grib_set_large_message_fail.sh new file mode 100755 index 000000000..fbee28b36 --- /dev/null +++ b/tests/grib_set_large_message_fail.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +$EXEC ${test_dir}/grib_set_large_message_fail + From b367af2fca04ef9cab608b19c799d57038ac5cfd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 18:28:16 +0000 Subject: [PATCH 279/469] ECC-1741: Test with and without bitmap --- tests/grib_set_large_message_fail.cc | 9 +++++++-- tests/grib_set_large_message_fail.sh | 11 ++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/grib_set_large_message_fail.cc b/tests/grib_set_large_message_fail.cc index ea0b2a2c9..599d017be 100644 --- a/tests/grib_set_large_message_fail.cc +++ b/tests/grib_set_large_message_fail.cc @@ -23,9 +23,14 @@ int main(int argc, char** argv) long Ni = 0, Nj = 0; double* values = NULL; const double missing = 1.0e36; - bool use_bitmap = true; + bool use_bitmap = false; + + if (argc == 2 && strcmp(argv[1], "-b")==0) { + use_bitmap = true; + } h = codes_grib_handle_new_from_samples(NULL, "GRIB1"); + assert(h); CODES_CHECK(codes_set_double(h, "missingValue", missing), 0); @@ -54,7 +59,7 @@ int main(int argc, char** argv) if (err) { printf("codes_set_double_array failed as expected: err=%s\n", codes_get_error_message(err)); } else { - fprintf(stderr, "codes_set_double_array should have failed!\n"); + fprintf(stderr, "Error: codes_set_double_array should have failed!\n"); return 1; } diff --git a/tests/grib_set_large_message_fail.sh b/tests/grib_set_large_message_fail.sh index fbee28b36..9e8a4c775 100755 --- a/tests/grib_set_large_message_fail.sh +++ b/tests/grib_set_large_message_fail.sh @@ -10,5 +10,14 @@ . ./include.ctest.sh -$EXEC ${test_dir}/grib_set_large_message_fail +label='grib_set_large_message_fail_test' +temp=temp.$label.txt +$EXEC ${test_dir}/grib_set_large_message_fail > $temp 2>&1 +grep -q "Failed to set GRIB1 message length" $temp + +$EXEC ${test_dir}/grib_set_large_message_fail -b > $temp 2>&1 +grep -q "Unable to set double array.*bitmap" $temp + +# Clean up +rm -f $temp From adb1261b752f8b144b61ce00b6f9306ae8441c55 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Jan 2024 18:50:33 +0000 Subject: [PATCH 280/469] Remove deprecated file --- examples/python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt index 42d8a2c52..abbf8b21a 100644 --- a/examples/python/CMakeLists.txt +++ b/examples/python/CMakeLists.txt @@ -3,7 +3,7 @@ # Configure the file which all CMake tests will include configure_file( include.ctest.sh.in include.ctest.sh @ONLY ) -execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include.sh ${CMAKE_CURRENT_BINARY_DIR} ) +# execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include.sh ${CMAKE_CURRENT_BINARY_DIR} ) # Build the executables used by test scripts ################################################ From 81f40a3735e4f2dc79f6890355914698ef3717d5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 Jan 2024 10:23:13 +0000 Subject: [PATCH 281/469] Check return value of grib_buffer_replace --- ...g1second_order_general_extended_packing.cc | 6 ++--- ...ib_accessor_class_data_g1simple_packing.cc | 6 +++-- src/grib_accessor_class_g1_message_length.cc | 23 ++++++------------- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 2f1946b7b..e8dc5b1bb 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -1350,10 +1350,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* ECC-259: Set correct number of values */ ret = grib_set_long_internal(a->parent->h, self->number_of_values, *len); - if (ret) - return ret; + if (ret) return ret; - grib_buffer_replace(a, buffer, size, 1, 1); + ret = grib_buffer_replace(a, buffer, size, 1, 1); + if (ret) return ret; grib_context_free(a->context, buffer); grib_context_free(a->context, X); diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index c863f7595..e9f4aefdc 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -236,7 +236,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) constantFieldHalfByte = 0; if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->half_byte, constantFieldHalfByte)) != GRIB_SUCCESS) return ret; - grib_buffer_replace(a, NULL, 0, 1, 1); + ret = grib_buffer_replace(a, NULL, 0, 1, 1); + if (ret != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; break; case GRIB_NO_VALUES: @@ -252,7 +253,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) return ret; if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->half_byte, constantFieldHalfByte)) != GRIB_SUCCESS) return ret; - grib_buffer_replace(a, NULL, 0, 1, 1); + ret = grib_buffer_replace(a, NULL, 0, 1, 1); + if (ret != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; break; case GRIB_INVALID_BPV: diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index 44e2f84bc..1d38e7ea4 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_g1_message_length = &_grib_accessor_cla static void init(grib_accessor* a, const long len, grib_arguments* args) { grib_accessor_g1_message_length* self = (grib_accessor_g1_message_length*)a; - self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a), args, 0); + self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a), args, 0); } int grib_get_g1_message_size(grib_handle* h, grib_accessor* tl, grib_accessor* s4, @@ -134,15 +134,12 @@ int grib_get_g1_message_size(grib_handle* h, grib_accessor* tl, grib_accessor* s if (slen < 120 && (tlen & 0x800000)) { /* printf("DECODING large grib tlen=%ld slen=%ld\n",tlen,slen); */ - tlen &= 0x7fffff; tlen *= 120; tlen -= slen; tlen += 4; slen = tlen - s4->offset - 4; /* 4 is for 7777 */ - - /*printf("DECODING large grib total=%ld section4=%ld\n",tlen,slen);*/ } *total_length = tlen; @@ -184,7 +181,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) slen = t120 * 120 - tlen; tlen = 0x800000 | t120; - /* printf("ENCODING large grib total = %ld tlen=%ld slen=%ld \n",*val,tlen,slen); */ *len = 1; if ((ret = grib_pack_long(s4, &slen, len)) != GRIB_SUCCESS) return ret; @@ -198,11 +194,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) { long total_length = -1, sec4_length = -1; - grib_get_g1_message_size(grib_handle_of_accessor(a), - a, + grib_get_g1_message_size(grib_handle_of_accessor(a), a, grib_find_accessor(grib_handle_of_accessor(a), self->sec4_length), - &total_length, - &sec4_length); + &total_length, &sec4_length); if (total_length != *val) { const char* cclass_name = a->cclass->name; grib_context_log(a->context, GRIB_LOG_ERROR, @@ -212,7 +206,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try encoding as GRIB2\n"); return GRIB_ENCODING_ERROR; } - Assert(total_length == *val); } return GRIB_SUCCESS; @@ -222,16 +215,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g1_message_length* self = (grib_accessor_g1_message_length*)a; int ret; - long total_length, sec4_length; - if ((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), - a, + if ((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), a, grib_find_accessor(grib_handle_of_accessor(a), self->sec4_length), - &total_length, - &sec4_length)) != GRIB_SUCCESS) + &total_length, &sec4_length)) != GRIB_SUCCESS) + { return ret; - + } *val = total_length; return GRIB_SUCCESS; From 86db8002ad161570cfe9d5999505f3d9221aef78 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 Jan 2024 13:13:32 +0000 Subject: [PATCH 282/469] Testing: Windows --- tests/bufr_dump_decode_filter.sh | 10 +++++++--- tests/bufr_json_data.sh | 6 ++++++ tests/grib_check_param_concepts.sh | 8 ++++++++ tests/grib_mars_keys1.sh | 5 +++++ tests/grib_mars_keys2.sh | 4 ++++ tests/grib_tigge_conversions1.sh | 7 +++++++ tests/grib_tigge_conversions2.sh | 6 ++++++ tests/list_codetable_flagtable_keys.sh | 7 +++++++ 8 files changed, 50 insertions(+), 3 deletions(-) diff --git a/tests/bufr_dump_decode_filter.sh b/tests/bufr_dump_decode_filter.sh index f36b03577..d2a06c196 100755 --- a/tests/bufr_dump_decode_filter.sh +++ b/tests/bufr_dump_decode_filter.sh @@ -8,14 +8,18 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -set -x . ./include.ctest.sh -cd ${data_dir}/bufr - # Define a common label for all the tmp files label="bufr_dump_decode_filter_test" +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + +cd ${data_dir}/bufr + # Create log file fLog=temp.${label}".log" rm -f $fLog diff --git a/tests/bufr_json_data.sh b/tests/bufr_json_data.sh index eedf01f33..5e0991373 100755 --- a/tests/bufr_json_data.sh +++ b/tests/bufr_json_data.sh @@ -16,6 +16,12 @@ tempOut=temp.${label}.txt tempBufr=temp.${label}.bufr +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + + REDIRECT=/dev/null cd ${data_dir}/bufr diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index 940762ddc..24b2a3e5f 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -11,6 +11,14 @@ . ./include.ctest.sh label="grib_check_param_concepts_test" + + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + + # # Do various checks on the concepts files # diff --git a/tests/grib_mars_keys1.sh b/tests/grib_mars_keys1.sh index d13d880fd..29b6b841a 100755 --- a/tests/grib_mars_keys1.sh +++ b/tests/grib_mars_keys1.sh @@ -15,6 +15,11 @@ tempOut=temp.${label}.out tempGrib=temp.${label}.grib tempRef=temp.${label}.ref +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + grib1_sample=$ECCODES_SAMPLES_PATH/GRIB1.tmpl grib2_sample=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl types_table=$ECCODES_DEFINITION_PATH/mars/type.table diff --git a/tests/grib_mars_keys2.sh b/tests/grib_mars_keys2.sh index 5d4b13425..2396e0236 100755 --- a/tests/grib_mars_keys2.sh +++ b/tests/grib_mars_keys2.sh @@ -16,6 +16,10 @@ tempGrib=temp.${label}.grib grib1_sample=$ECCODES_SAMPLES_PATH/GRIB1.tmpl grib2_sample=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi # Check lowercase/uppercase ${tools_dir}/grib_set -s class=YT,type=EM,stream=DCWV $grib1_sample $tempGrib diff --git a/tests/grib_tigge_conversions1.sh b/tests/grib_tigge_conversions1.sh index 088066951..fc7c75a33 100755 --- a/tests/grib_tigge_conversions1.sh +++ b/tests/grib_tigge_conversions1.sh @@ -21,6 +21,13 @@ dir="${data_dir}/tigge" temp1="temp.${label}.grib1_" temp2="temp.${label}.grib2_" + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + + # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" diff --git a/tests/grib_tigge_conversions2.sh b/tests/grib_tigge_conversions2.sh index 4bf8666b4..3d80771e6 100755 --- a/tests/grib_tigge_conversions2.sh +++ b/tests/grib_tigge_conversions2.sh @@ -21,6 +21,12 @@ dir="${data_dir}/tigge" temp1="temp.${label}.grib1_" temp2="temp.${label}.grib2_" + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" diff --git a/tests/list_codetable_flagtable_keys.sh b/tests/list_codetable_flagtable_keys.sh index b5733f394..96e930161 100755 --- a/tests/list_codetable_flagtable_keys.sh +++ b/tests/list_codetable_flagtable_keys.sh @@ -13,6 +13,13 @@ OUTPUT=all_codetable_flagtable_keys.txt TEMP=temp.list_codetable_flagtable_keys.txt + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + + [ -z "$ECCODES_DEFINITION_PATH" ] || ECCODES_DEFINITION_PATH=`${tools_dir}/codes_info -d` touch $TEMP From 9f565bed858bbf62f3095ecc946065ec05c04042 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 Jan 2024 15:42:16 +0000 Subject: [PATCH 283/469] Const correctness --- src/action_class_if.cc | 2 +- src/action_class_write.cc | 2 +- src/bufr_keys_iterator.cc | 4 ++-- src/bufr_util.cc | 6 +++--- src/codes_util.cc | 4 ++-- src/eccodes_prototypes.h | 2 +- src/grib_accessor_class_bitmap.cc | 2 +- src/grib_accessor_class_bufr_data_array.cc | 2 +- src/grib_accessor_class_scale_values.cc | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/action_class_if.cc b/src/action_class_if.cc index a5d28725a..0302e0625 100644 --- a/src/action_class_if.cc +++ b/src/action_class_if.cc @@ -92,7 +92,7 @@ static void init_class(grib_action_class* c) grib_action* grib_action_create_if(grib_context* context, grib_expression* expression, grib_action* block_true, grib_action* block_false, int transient, - int lineno, char* file_being_parsed) + int lineno, const char* file_being_parsed) { char name[1024]; const size_t nameLen = sizeof(name); diff --git a/src/action_class_write.cc b/src/action_class_write.cc index 6b18a90d6..dc29ad050 100644 --- a/src/action_class_write.cc +++ b/src/action_class_write.cc @@ -174,7 +174,7 @@ static int execute(grib_action* act, grib_handle* h) } if (h->gts_header) { - char gts_trailer[4] = { '\x0D', '\x0D', '\x0A', '\x03' }; + const char gts_trailer[4] = { '\x0D', '\x0D', '\x0A', '\x03' }; if (fwrite(gts_trailer, 1, 4, of->handle) != 4) { grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR), "Error writing GTS trailer to %s", filename); diff --git a/src/bufr_keys_iterator.cc b/src/bufr_keys_iterator.cc index cc8b1b3ca..e1ab89697 100644 --- a/src/bufr_keys_iterator.cc +++ b/src/bufr_keys_iterator.cc @@ -199,7 +199,7 @@ char* codes_bufr_keys_iterator_get_name(const bufr_keys_iterator* ckiter) bufr_keys_iterator* kiter = (bufr_keys_iterator*)ckiter; int* r = 0; char* ret = 0; - grib_context* c = kiter->handle->context; + const grib_context* c = kiter->handle->context; DEBUG_ASSERT(kiter->current); if (kiter->prefix) { @@ -236,7 +236,7 @@ grib_accessor* codes_bufr_keys_iterator_get_accessor(bufr_keys_iterator* kiter) int codes_bufr_keys_iterator_delete(bufr_keys_iterator* kiter) { if (kiter) { - grib_context* c = kiter->handle->context; + const grib_context* c = kiter->handle->context; kiter->key_name = NULL; if (kiter->seen) grib_trie_delete(kiter->seen); diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 7691c1fe0..0b4ffb0e7 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -18,7 +18,7 @@ int compute_bufr_key_rank(grib_handle* h, grib_string_list* keys, const char* ke grib_string_list* prev = keys; int theRank = 0; size_t size = 0; - grib_context* c = h->context; + const grib_context* c = h->context; DEBUG_ASSERT(h->product_kind == PRODUCT_BUFR); while (next && next->value && strcmp(next->value, key)) { @@ -1114,7 +1114,7 @@ int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* v // Returns 1 if the BUFR key is in the header and 0 if it is in the data section int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err) { - grib_accessor* acc = grib_find_accessor(h, key); + const grib_accessor* acc = grib_find_accessor(h, key); if (!acc) { *err = GRIB_NOT_FOUND; return 0; @@ -1126,7 +1126,7 @@ int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err) // Returns 1 if the BUFR key is a coordinate descriptor int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err) { - grib_accessor* acc = grib_find_accessor(h, key); + const grib_accessor* acc = grib_find_accessor(h, key); if (!acc) { *err = GRIB_NOT_FOUND; return 0; diff --git a/src/codes_util.cc b/src/codes_util.cc index 61174f2f9..1b73432f8 100644 --- a/src/codes_util.cc +++ b/src/codes_util.cc @@ -133,7 +133,7 @@ char* codes_getenv(const char* name) int codes_check_grib_ieee_packing_value(int value) { - grib_context* c = grib_context_get_default(); + const grib_context* c = grib_context_get_default(); if (value != 32 && value != 64) { grib_context_log(c, GRIB_LOG_ERROR, "Invalid value for ECCODES_GRIB_IEEE_PACKING: should be 32 or 64"); return GRIB_INVALID_ARGUMENT; @@ -146,7 +146,7 @@ int codes_flush_sync_close_file(FILE* f) { int err = 0; int fd = 0; - grib_context* c = grib_context_get_default(); + const grib_context* c = grib_context_get_default(); Assert(f); fd = fileno(f); diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index aba20c9b4..f9e208e88 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -20,7 +20,7 @@ grib_action* grib_action_create_alias(grib_context* context, const char* name, c grib_action* grib_action_create_gen(grib_context* context, const char* name, const char* op, const long len, grib_arguments* params, grib_arguments* default_value, int flags, const char* name_space, const char* set); /* action_class_if.cc */ -grib_action* grib_action_create_if(grib_context* context, grib_expression* expression, grib_action* block_true, grib_action* block_false, int transient, int lineno, char* file_being_parsed); +grib_action* grib_action_create_if(grib_context* context, grib_expression* expression, grib_action* block_true, grib_action* block_false, int transient, int lineno, const char* file_being_parsed); /* action_class_switch.cc */ grib_action* grib_action_create_switch(grib_context* context, grib_arguments* args, grib_case* Case, grib_action* Default); diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index a25d79a49..e5825a3c3 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -193,7 +193,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) long tlen = 0; long i = 0; int err = 0; - grib_handle* hand = grib_handle_of_accessor(a); + const grib_handle* hand = grib_handle_of_accessor(a); err = grib_value_count(a, &tlen); if (err) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index ec0baa494..9f745ba56 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -254,7 +254,7 @@ static size_t get_length(grib_accessor* a) grib_accessor_bufr_data_array* self = (grib_accessor_bufr_data_array*)a; size_t len = 0; - grib_handle* h = grib_handle_of_accessor(a); + const grib_handle* h = grib_handle_of_accessor(a); grib_get_size(h, self->bufrDataEncodedName, &len); diff --git a/src/grib_accessor_class_scale_values.cc b/src/grib_accessor_class_scale_values.cc index bae505f23..8c4b33fcb 100644 --- a/src/grib_accessor_class_scale_values.cc +++ b/src/grib_accessor_class_scale_values.cc @@ -131,7 +131,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t size = 0; int ret = 0, i = 0; grib_accessor_scale_values* self = (grib_accessor_scale_values*)a; - grib_context* c = a->context; + const grib_context* c = a->context; grib_handle* h = grib_handle_of_accessor(a); if (*val == 1) From 3bb3e025f8ff7a9161021da98bd4934ae62172e2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 12:42:17 +0000 Subject: [PATCH 284/469] Tools: deprecated options --- tests/bufr_copy.sh | 2 +- tests/gts_get.sh | 9 ++++++++- tests/metar_ls.sh | 5 +++++ tools/gts_copy.cc | 16 ++++++++-------- tools/gts_dump.cc | 7 +++---- tools/metar_copy.cc | 1 - tools/metar_ls.cc | 6 ------ 7 files changed, 25 insertions(+), 21 deletions(-) diff --git a/tests/bufr_copy.sh b/tests/bufr_copy.sh index eb3b877fb..10a44688e 100755 --- a/tests/bufr_copy.sh +++ b/tests/bufr_copy.sh @@ -30,7 +30,7 @@ echo "Test: copy synop messages ..." rm -f $fBufrTmp echo "Test: copy synop messages " >> $fLog -${tools_dir}/bufr_copy -w dataCategory=0 $fBufrInput $fBufrTmp >> $fLog +${tools_dir}/bufr_copy -p typicalDate -w dataCategory=0 $fBufrInput $fBufrTmp >> $fLog for i in 1 2 3 ;do category=`${tools_dir}/bufr_get -w count=$i -p dataCategory:l $fBufrTmp` diff --git a/tests/gts_get.sh b/tests/gts_get.sh index 2f50f10f6..cf6b2b51d 100755 --- a/tests/gts_get.sh +++ b/tests/gts_get.sh @@ -29,7 +29,14 @@ ${tools_dir}/gts_get -p TT,AA,II,CCCC,YY,GG,gg,BBB $gts_file >/dev/null #---------------------------------------------- # Test "-w" switch #---------------------------------------------- -${tools_dir}/gts_get -p TT -w count=3 $gts_file >/dev/null +${tools_dir}/gts_get -p TT -w count=3 $gts_file + + +#---------------------------------------------- +# Test "-s" switch +#---------------------------------------------- +result=$( ${tools_dir}/gts_get -s YY=ab -p YY -w count=3 $gts_file ) +[ "$result" = "ab" ] gts_file=${data_dir}/gts.grib diff --git a/tests/metar_ls.sh b/tests/metar_ls.sh index 779619b8f..65571ca34 100755 --- a/tests/metar_ls.sh +++ b/tests/metar_ls.sh @@ -42,6 +42,11 @@ ${tools_dir}/metar_ls $f >> $fLog ${tools_dir}/metar_ls -w CCCC=VILK $f >> $fLog +#------------------------------------------- +# Test "-s" switch +#------------------------------------------- +${tools_dir}/metar_ls -s dummy=1 -w count=5 $f >> $fLog + #------------------------------------------- # Test "-p" switch #------------------------------------------- diff --git a/tools/gts_copy.cc b/tools/gts_copy.cc index 9fdf7041a..bf17f85e9 100644 --- a/tools/gts_copy.cc +++ b/tools/gts_copy.cc @@ -73,14 +73,14 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) { - int err = 0; - if (!options->skip) { - if (options->set_values_count != 0) - err = grib_set_values(h, options->set_values, options->set_values_count); - - if (err != GRIB_SUCCESS && options->fail) - exit(err); - } + // int err = 0; + // if (!options->skip) { + // if (options->set_values_count != 0) + // err = grib_set_values(h, options->set_values, options->set_values_count); + + // if (err != GRIB_SUCCESS && options->fail) + // exit(err); + // } grib_tools_write_message(options, h); return 0; diff --git a/tools/gts_dump.cc b/tools/gts_dump.cc index eff44c548..a58f93ddf 100644 --- a/tools/gts_dump.cc +++ b/tools/gts_dump.cc @@ -95,8 +95,7 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi if (!options->current_infile->name) return 0; snprintf(tmp, 1024, "FILE: %s ", options->current_infile->name); - if (!grib_options_on("C")) - fprintf(stdout, "***** %s\n", tmp); + fprintf(stdout, "***** %s\n", tmp); return 0; } @@ -114,8 +113,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) grib_set_flag(h, options->print_keys[i].name, GRIB_ACCESSOR_FLAG_DUMP); snprintf(tmp, 1024, "MESSAGE %d ( length=%ld )", options->handle_count, length); - if (!grib_options_on("C")) - fprintf(stdout, "#============== %-38s ==============\n", tmp); + + fprintf(stdout, "#============== %-38s ==============\n", tmp); if (!strcmp(options->dump_mode, "default")) { GRIB_CHECK_NOLINE(grib_get_string(h, "identifier", identifier, &idlen), 0); printf("%s {\n", identifier); diff --git a/tools/metar_copy.cc b/tools/metar_copy.cc index 0ea7e14d4..9e4e14ef7 100644 --- a/tools/metar_copy.cc +++ b/tools/metar_copy.cc @@ -31,7 +31,6 @@ grib_option grib_options[] = { "double (key:d) or an integer (key:i)\n\t\ttype can be defined. Default type " "is string.\n", 0, 1, 0 }, - { "B:", 0, 0, 0, 1, 0 }, { "V", 0, 0, 0, 1, 0 }, { "W:", 0, 0, 0, 1, 0 }, { "U", 0, 0, 1, 0, 0 }, diff --git a/tools/metar_ls.cc b/tools/metar_ls.cc index 98c748863..630cf62a7 100644 --- a/tools/metar_ls.cc +++ b/tools/metar_ls.cc @@ -17,24 +17,18 @@ grib_option grib_options[] = { { "F:", 0, 0, 1, 1, "%g" }, { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, - // { "j", 0, "json output\n", 0, 1, 0 }, - { "B:", 0, 0, 0, 1, 0 }, - /* {"l:",0,0,0,1,0}, */ { "s:", 0, 0, 0, 1, 0 }, - /* {"i:",0,0,0,1,0}, */ { "n:", 0, 0, 1, 1, "ls" }, { "m", 0, 0, 0, 1, 0 }, { "V", 0, 0, 0, 1, 0 }, { "W:", 0, 0, 1, 1, "10" }, { "S", 0, 0, 1, 0, 0 }, - /* {"M",0,0,0,1,0}, */ { "H", 0, 0, 1, 0, 0 }, { "g", 0, 0, 0, 1, 0 }, { "P", 0, 0, 1, 0, 0 }, { "T:", 0, 0, 1, 0, "M" }, { "7", 0, 0, 0, 1, 0 }, { "v", 0, 0, 1, 0, 0 } - /*{"x",0,0,0,1,0}*/ }; const char* tool_description = From 6081d7c0d53502d09b0ea84dd7ed5668be954277 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 12:42:45 +0000 Subject: [PATCH 285/469] Testing: Tools options --- tests/bufr_ls.sh | 7 +++++++ tests/bufr_set.sh | 5 +++++ tests/grib_copy.sh | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/bufr_ls.sh b/tests/bufr_ls.sh index 0aed3128e..865d97032 100755 --- a/tests/bufr_ls.sh +++ b/tests/bufr_ls.sh @@ -80,6 +80,13 @@ set -e [ $status -ne 0 ] grep -w "unreadable message" $fLog +set +e +${tools_dir}/bufr_ls -j $fTmp > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -w "unreadable message" $fLog + # Clean up rm -f $fLog $res_ls diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index f8224c0e1..55e6eea80 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -52,6 +52,11 @@ for i in 1 2 3 ;do [ $centre = "222" ] done +# Strict option +f=aeolus_wmo_26.bufr +${tools_dir}/bufr_set -S -w localNumberOfObservations=40 -s rdbType=3 $f $fBufrTmp +cnt=$( ${tools_dir}/bufr_count $fBufrTmp ) +[ $cnt -eq 3 ] #----------------------------------------------------- # Test: setting data values for single message file diff --git a/tests/grib_copy.sh b/tests/grib_copy.sh index 09b0c50f1..79546fb54 100755 --- a/tests/grib_copy.sh +++ b/tests/grib_copy.sh @@ -27,7 +27,8 @@ val2=`${tools_dir}/gts_get -p AA $temp` [ "$val1" = "$val2" ] [ "$val1" = "XK" ] -${tools_dir}/grib_copy -w count=1 $input $temp +${tools_dir}/grib_copy -p edition -w count=1 $input $temp +${tools_dir}/grib_copy -p shortName -w count=2 $input $temp set +e ${tools_dir}/gts_get -p AA $temp status=$? From b5f86e688a2f18b10444431b7a5207300a63be24 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 12:43:12 +0000 Subject: [PATCH 286/469] Actions: Dead code removal --- src/action_class_put.cc | 94 ++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/src/action_class_put.cc b/src/action_class_put.cc index 49ec4bf6e..4c61c10e2 100644 --- a/src/action_class_put.cc +++ b/src/action_class_put.cc @@ -77,64 +77,62 @@ static void init_class(grib_action_class* c) grib_action* grib_action_create_put(grib_context* context, const char* name, grib_arguments* args) { - grib_action_put* a = NULL; - grib_action_class* c = grib_action_class_put; - grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); - act->next = NULL; - act->name = grib_context_strdup_persistent(context, name); - act->op = grib_context_strdup_persistent(context, "forward"); - act->cclass = c; - act->context = context; - a = (grib_action_put*)act; - a->args = args; - return act; + grib_context_log(context, GRIB_LOG_FATAL, "Function '%s' is deprecated", __func__); + return NULL; + // grib_action_put* a = NULL; + // grib_action_class* c = grib_action_class_put; + // grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); + // act->next = NULL; + // act->name = grib_context_strdup_persistent(context, name); + // act->op = grib_context_strdup_persistent(context, "forward"); + // act->cclass = c; + // act->context = context; + // a = (grib_action_put*)act; + // a->args = args; + // return act; } static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { - grib_action_put* a = (grib_action_put*)act; - - grib_section* ts = NULL; - - grib_accessor* ga = NULL; - - ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h, a->args, 1)); - if (ga) - ts = ga->sub_section; - /* ts = grib_get_sub_section(ga); */ - else - return GRIB_BUFFER_TOO_SMALL; - - if (ts) { - ga = grib_accessor_factory(ts, act, 0, a->args); - if (ga) - grib_push_accessor(ga, ts->block); - else - return GRIB_BUFFER_TOO_SMALL; - } - else { - grib_context_log(act->context, GRIB_LOG_ERROR, "Action_class_put : create_accessor_buffer : No Section named %s to export %s ", grib_arguments_get_name(p->h, a->args, 1), grib_arguments_get_name(p->h, a->args, 0)); - } - return GRIB_SUCCESS; + grib_context_log(act->context, GRIB_LOG_FATAL, "Action '%s' is deprecated", act->op); + return GRIB_NOT_IMPLEMENTED; + + // grib_action_put* a = (grib_action_put*)act; + // grib_section* ts = NULL; + // grib_accessor* ga = NULL; + // ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h, a->args, 1)); + // if (ga) + // ts = ga->sub_section; + // /* ts = grib_get_sub_section(ga); */ + // else + // return GRIB_BUFFER_TOO_SMALL; + + // if (ts) { + // ga = grib_accessor_factory(ts, act, 0, a->args); + // if (ga) + // grib_push_accessor(ga, ts->block); + // else + // return GRIB_BUFFER_TOO_SMALL; + // } + // else { + // grib_context_log(act->context, GRIB_LOG_ERROR, "Action_class_put : create_accessor_buffer : No Section named %s to export %s ", grib_arguments_get_name(p->h, a->args, 1), grib_arguments_get_name(p->h, a->args, 0)); + // } + // return GRIB_SUCCESS; } static void dump(grib_action* act, FILE* f, int lvl) { - grib_action_put* a = (grib_action_put*)act; - - int i = 0; - - for (i = 0; i < lvl; i++) - grib_context_print(act->context, f, " "); - - grib_context_print(act->context, f, "put %s as %s in %s\n", grib_arguments_get_name(0, a->args, 0), act->name, grib_arguments_get_name(0, a->args, 1)); + // grib_action_put* a = (grib_action_put*)act; + // int i = 0; + // for (i = 0; i < lvl; i++) + // grib_context_print(act->context, f, " "); + // grib_context_print(act->context, f, "put %s as %s in %s\n", grib_arguments_get_name(0, a->args, 0), act->name, grib_arguments_get_name(0, a->args, 1)); } static void destroy(grib_context* context, grib_action* act) { - grib_action_put* a = (grib_action_put*)act; - - grib_arguments_free(context, a->args); - grib_context_free_persistent(context, act->name); - grib_context_free_persistent(context, act->op); + // grib_action_put* a = (grib_action_put*)act; + // grib_arguments_free(context, a->args); + // grib_context_free_persistent(context, act->name); + // grib_context_free_persistent(context, act->op); } From 2ae963866379d4cfebcfdca191fe852e9563d340 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 13:18:20 +0000 Subject: [PATCH 287/469] Testing: Deprecated statements --- src/action_class_put.cc | 125 +------------------------- src/action_class_trigger.cc | 4 +- src/action_class_while.cc | 2 +- src/deprecated/action_class_put.cc | 140 +++++++++++++++++++++++++++++ tests/codes_deprecated.sh | 17 ++-- 5 files changed, 156 insertions(+), 132 deletions(-) create mode 100644 src/deprecated/action_class_put.cc diff --git a/src/action_class_put.cc b/src/action_class_put.cc index 4c61c10e2..8574ab2c4 100644 --- a/src/action_class_put.cc +++ b/src/action_class_put.cc @@ -8,131 +8,12 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/*************************************************************************** - * Jean Baptiste Filippi - 01.11.2005 * - ***************************************************************************/ #include "grib_api_internal.h" -/* - This is used by make_class.pl - - START_CLASS_DEF - CLASS = action - IMPLEMENTS = create_accessor - IMPLEMENTS = dump - IMPLEMENTS = destroy - MEMBERS = grib_arguments* args - END_CLASS_DEF - - */ - -/* START_CLASS_IMP */ - -/* - -Don't edit anything between START_CLASS_IMP and END_CLASS_IMP -Instead edit values between START_CLASS_DEF and END_CLASS_DEF -or edit "action.class" and rerun ./make_class.pl - -*/ - -static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); -static void destroy (grib_context*,grib_action*); -static int create_accessor(grib_section*,grib_action*,grib_loader*); - - -typedef struct grib_action_put { - grib_action act; - /* Members defined in put */ - grib_arguments* args; -} grib_action_put; - - -static grib_action_class _grib_action_class_put = { - 0, /* super */ - "action_class_put", /* name */ - sizeof(grib_action_put), /* size */ - 0, /* inited */ - &init_class, /* init_class */ - 0, /* init */ - &destroy, /* destroy */ - - &dump, /* dump */ - 0, /* xref */ - - &create_accessor, /* create_accessor*/ - - 0, /* notify_change */ - 0, /* reparse */ - 0, /* execute */ -}; - -grib_action_class* grib_action_class_put = &_grib_action_class_put; - -static void init_class(grib_action_class* c) -{ -} -/* END_CLASS_IMP */ - +// No longer used: For the original intent see +// src/deprecated/action_class_put.cc grib_action* grib_action_create_put(grib_context* context, const char* name, grib_arguments* args) { - grib_context_log(context, GRIB_LOG_FATAL, "Function '%s' is deprecated", __func__); + grib_context_log(context, GRIB_LOG_ERROR, "The 'export' statement is deprecated"); return NULL; - // grib_action_put* a = NULL; - // grib_action_class* c = grib_action_class_put; - // grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); - // act->next = NULL; - // act->name = grib_context_strdup_persistent(context, name); - // act->op = grib_context_strdup_persistent(context, "forward"); - // act->cclass = c; - // act->context = context; - // a = (grib_action_put*)act; - // a->args = args; - // return act; -} - -static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) -{ - grib_context_log(act->context, GRIB_LOG_FATAL, "Action '%s' is deprecated", act->op); - return GRIB_NOT_IMPLEMENTED; - - // grib_action_put* a = (grib_action_put*)act; - // grib_section* ts = NULL; - // grib_accessor* ga = NULL; - // ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h, a->args, 1)); - // if (ga) - // ts = ga->sub_section; - // /* ts = grib_get_sub_section(ga); */ - // else - // return GRIB_BUFFER_TOO_SMALL; - - // if (ts) { - // ga = grib_accessor_factory(ts, act, 0, a->args); - // if (ga) - // grib_push_accessor(ga, ts->block); - // else - // return GRIB_BUFFER_TOO_SMALL; - // } - // else { - // grib_context_log(act->context, GRIB_LOG_ERROR, "Action_class_put : create_accessor_buffer : No Section named %s to export %s ", grib_arguments_get_name(p->h, a->args, 1), grib_arguments_get_name(p->h, a->args, 0)); - // } - // return GRIB_SUCCESS; -} - -static void dump(grib_action* act, FILE* f, int lvl) -{ - // grib_action_put* a = (grib_action_put*)act; - // int i = 0; - // for (i = 0; i < lvl; i++) - // grib_context_print(act->context, f, " "); - // grib_context_print(act->context, f, "put %s as %s in %s\n", grib_arguments_get_name(0, a->args, 0), act->name, grib_arguments_get_name(0, a->args, 1)); -} - -static void destroy(grib_context* context, grib_action* act) -{ - // grib_action_put* a = (grib_action_put*)act; - // grib_arguments_free(context, a->args); - // grib_context_free_persistent(context, act->name); - // grib_context_free_persistent(context, act->op); } diff --git a/src/action_class_trigger.cc b/src/action_class_trigger.cc index f4a7413dc..c62893db6 100644 --- a/src/action_class_trigger.cc +++ b/src/action_class_trigger.cc @@ -10,8 +10,10 @@ #include "grib_api_internal.h" +// No longer used: For the original intent see +// src/deprecated/action_class_trigger.cc grib_action* grib_action_create_trigger(grib_context* context, grib_arguments* args, grib_action* block) { - grib_context_log(context, GRIB_LOG_FATAL, "The 'trigger' statement is deprecated"); + grib_context_log(context, GRIB_LOG_ERROR, "The 'trigger' statement is deprecated"); return NULL; } diff --git a/src/action_class_while.cc b/src/action_class_while.cc index 6ec144d15..e7d7dde75 100644 --- a/src/action_class_while.cc +++ b/src/action_class_while.cc @@ -14,6 +14,6 @@ // src/deprecated/action_class_while.cc grib_action* grib_action_create_while(grib_context* context, grib_expression* expression, grib_action* block) { - grib_context_log(context, GRIB_LOG_FATAL, "The 'while' statement is deprecated"); + grib_context_log(context, GRIB_LOG_ERROR, "The 'while' statement is deprecated"); return NULL; } diff --git a/src/deprecated/action_class_put.cc b/src/deprecated/action_class_put.cc new file mode 100644 index 000000000..49ec4bf6e --- /dev/null +++ b/src/deprecated/action_class_put.cc @@ -0,0 +1,140 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +/*************************************************************************** + * Jean Baptiste Filippi - 01.11.2005 * + ***************************************************************************/ +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = action + IMPLEMENTS = create_accessor + IMPLEMENTS = dump + IMPLEMENTS = destroy + MEMBERS = grib_arguments* args + END_CLASS_DEF + + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "action.class" and rerun ./make_class.pl + +*/ + +static void init_class (grib_action_class*); +static void dump (grib_action* d, FILE*,int); +static void destroy (grib_context*,grib_action*); +static int create_accessor(grib_section*,grib_action*,grib_loader*); + + +typedef struct grib_action_put { + grib_action act; + /* Members defined in put */ + grib_arguments* args; +} grib_action_put; + + +static grib_action_class _grib_action_class_put = { + 0, /* super */ + "action_class_put", /* name */ + sizeof(grib_action_put), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* init */ + &destroy, /* destroy */ + + &dump, /* dump */ + 0, /* xref */ + + &create_accessor, /* create_accessor*/ + + 0, /* notify_change */ + 0, /* reparse */ + 0, /* execute */ +}; + +grib_action_class* grib_action_class_put = &_grib_action_class_put; + +static void init_class(grib_action_class* c) +{ +} +/* END_CLASS_IMP */ + +grib_action* grib_action_create_put(grib_context* context, const char* name, grib_arguments* args) +{ + grib_action_put* a = NULL; + grib_action_class* c = grib_action_class_put; + grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); + act->next = NULL; + act->name = grib_context_strdup_persistent(context, name); + act->op = grib_context_strdup_persistent(context, "forward"); + act->cclass = c; + act->context = context; + a = (grib_action_put*)act; + a->args = args; + return act; +} + +static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) +{ + grib_action_put* a = (grib_action_put*)act; + + grib_section* ts = NULL; + + grib_accessor* ga = NULL; + + ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h, a->args, 1)); + if (ga) + ts = ga->sub_section; + /* ts = grib_get_sub_section(ga); */ + else + return GRIB_BUFFER_TOO_SMALL; + + if (ts) { + ga = grib_accessor_factory(ts, act, 0, a->args); + if (ga) + grib_push_accessor(ga, ts->block); + else + return GRIB_BUFFER_TOO_SMALL; + } + else { + grib_context_log(act->context, GRIB_LOG_ERROR, "Action_class_put : create_accessor_buffer : No Section named %s to export %s ", grib_arguments_get_name(p->h, a->args, 1), grib_arguments_get_name(p->h, a->args, 0)); + } + return GRIB_SUCCESS; +} + +static void dump(grib_action* act, FILE* f, int lvl) +{ + grib_action_put* a = (grib_action_put*)act; + + int i = 0; + + for (i = 0; i < lvl; i++) + grib_context_print(act->context, f, " "); + + grib_context_print(act->context, f, "put %s as %s in %s\n", grib_arguments_get_name(0, a->args, 0), act->name, grib_arguments_get_name(0, a->args, 1)); +} + +static void destroy(grib_context* context, grib_action* act) +{ + grib_action_put* a = (grib_action_put*)act; + + grib_arguments_free(context, a->args); + grib_context_free_persistent(context, act->name); + grib_context_free_persistent(context, act->op); +} diff --git a/tests/codes_deprecated.sh b/tests/codes_deprecated.sh index 3dd59188b..e953b8d30 100755 --- a/tests/codes_deprecated.sh +++ b/tests/codes_deprecated.sh @@ -24,11 +24,7 @@ echo "Deprecated while statement" cat >$tempFilt < $tempOut 2>&1 -status=$? -set -e -[ $status -ne 0 ] grep -q "statement is deprecated" $tempOut @@ -37,13 +33,18 @@ echo "Deprecated trigger statement" cat >$tempFilt < $tempOut 2>&1 -status=$? -set -e -[ $status -ne 0 ] grep -q "statement is deprecated" $tempOut +echo "Deprecated export statement" +# ----------------------------------------- +cat >$tempFilt < $tempOut 2>&1 +grep -q "is deprecated" $tempOut + + # Clean up rm -f $tempGrib $tempFilt $tempOut $tempRef From 21a76256ce68b4d4dd0a9b7ba1ae3ccd29524aea Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 13:26:23 +0000 Subject: [PATCH 288/469] Testing: Unused accessors --- src/grib_accessor_class_signed_bits.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/grib_accessor_class_signed_bits.cc b/src/grib_accessor_class_signed_bits.cc index 7082f827e..1750af3eb 100644 --- a/src/grib_accessor_class_signed_bits.cc +++ b/src/grib_accessor_class_signed_bits.cc @@ -159,6 +159,8 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int unpack_long(grib_accessor* a, long* val, size_t* len) { + return GRIB_NOT_IMPLEMENTED; +#if 0 grib_accessor_signed_bits* self = (grib_accessor_signed_bits*)a; int i; int ret = 0; @@ -193,10 +195,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) *len = rlen; return GRIB_SUCCESS; +#endif } static int pack_long(grib_accessor* a, const long* val, size_t* len) { + return GRIB_NOT_IMPLEMENTED; +#if 0 grib_accessor_signed_bits* self = (grib_accessor_signed_bits*)a; int ret = 0; long off = 0; @@ -232,6 +237,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_context_free(a->context, buf); return ret; +#endif } static int value_count(grib_accessor* a, long* numberOfElements) From ea84ba63810c5f69d150725dbd31ef62d9e7d13e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 14:43:23 +0000 Subject: [PATCH 289/469] Testing: is_in_list expression --- src/grib_expression_class_is_in_list.cc | 25 +++++++------- tests/CMakeLists.txt | 1 + tests/filter_is_in_list.sh | 45 +++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 12 deletions(-) create mode 100755 tests/filter_is_in_list.sh diff --git a/src/grib_expression_class_is_in_list.cc b/src/grib_expression_class_is_in_list.cc index 4a6c3dc3b..0d61cf82c 100644 --- a/src/grib_expression_class_is_in_list.cc +++ b/src/grib_expression_class_is_in_list.cc @@ -173,22 +173,23 @@ static int evaluate_long(grib_expression* g, grib_handle* h, long* result) static int evaluate_double(grib_expression* g, grib_handle* h, double* result) { - grib_expression_is_in_list* e = (grib_expression_is_in_list*)g; - int err = 0; - char mybuf[1024] = {0,}; - size_t size = 1024; + return GRIB_NOT_IMPLEMENTED; + // grib_expression_is_in_list* e = (grib_expression_is_in_list*)g; + // int err = 0; + // char mybuf[1024] = {0,}; + // size_t size = 1024; - grib_trie* list = load_list(h->context, g, &err); + // grib_trie* list = load_list(h->context, g, &err); - if ((err = grib_get_string_internal(h, e->name, mybuf, &size)) != GRIB_SUCCESS) - return err; + // if ((err = grib_get_string_internal(h, e->name, mybuf, &size)) != GRIB_SUCCESS) + // return err; - if (grib_trie_get(list, mybuf)) - *result = 1; - else - *result = 0; + // if (grib_trie_get(list, mybuf)) + // *result = 1; + // else + // *result = 0; - return err; + // return err; } static string evaluate_string(grib_expression* g, grib_handle* h, char* buf, size_t* size, int* err) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3bed4fc84..9c50bad59 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -97,6 +97,7 @@ if( HAVE_BUILD_TOOLS ) grib_ifsParam grib_packing_order filter_substr + filter_is_in_list filter_transient_darray grib_uerra grib_ecpoint diff --git a/tests/filter_is_in_list.sh b/tests/filter_is_in_list.sh new file mode 100755 index 000000000..4f771a43b --- /dev/null +++ b/tests/filter_is_in_list.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="filter_is_in_list_test" +temp=temp.$label.txt +sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +# Evaluate long +${tools_dir}/grib_filter - $sample <$temp < Date: Wed, 10 Jan 2024 15:50:30 +0000 Subject: [PATCH 290/469] Action write: check for -ve value --- src/action_class_write.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/action_class_write.cc b/src/action_class_write.cc index dc29ad050..8f92d5753 100644 --- a/src/action_class_write.cc +++ b/src/action_class_write.cc @@ -103,7 +103,7 @@ static int execute(grib_action* act, grib_handle* h) { grib_action_write* a = (grib_action_write*)act; int err = GRIB_SUCCESS; - size_t size; + size_t size = 0; const void* buffer = NULL; const char* filename = NULL; char string[1024] = {0,}; @@ -116,13 +116,13 @@ static int execute(grib_action* act, grib_handle* h) } if (strlen(a->name) != 0) { - err = grib_recompose_name(h, NULL, a->name, string, 0); + err = grib_recompose_name(h, NULL, a->name, string, 0); filename = string; } else { if (act->context->outfilename) { filename = act->context->outfilename; - err = grib_recompose_name(h, NULL, act->context->outfilename, string, 0); + err = grib_recompose_name(h, NULL, act->context->outfilename, string, 0); if (!err) filename = string; } @@ -159,14 +159,16 @@ static int execute(grib_action* act, grib_handle* h) if (a->padtomultiple) { char* zeros = NULL; + if (a->padtomultiple < 0) + return GRIB_INVALID_ARGUMENT; size_t padding = a->padtomultiple - size % a->padtomultiple; - /* printf("XXX padding=%d size=%d padtomultiple=%d\n",padding,size,a->padtomultiple); */ + /* printf("XXX padding=%zu size=%zu padtomultiple=%d\n", padding, size,a->padtomultiple); */ zeros = (char*)calloc(padding, 1); if (!zeros) return GRIB_OUT_OF_MEMORY; if (fwrite(zeros, 1, padding, of->handle) != padding) { grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR), - "Error writing to %s", filename); + "Error writing to '%s'", filename); free(zeros); return GRIB_IO_PROBLEM; } @@ -177,7 +179,7 @@ static int execute(grib_action* act, grib_handle* h) const char gts_trailer[4] = { '\x0D', '\x0D', '\x0A', '\x03' }; if (fwrite(gts_trailer, 1, 4, of->handle) != 4) { grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR), - "Error writing GTS trailer to %s", filename); + "Error writing GTS trailer to '%s'", filename); return GRIB_IO_PROBLEM; } } From cf737502681851ad976d1f44e02c51edf5efe577 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 15:50:44 +0000 Subject: [PATCH 291/469] Testing: filter write --- tests/grib_filter.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index c65daa128..5758f8813 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -406,6 +406,32 @@ EOF ${tools_dir}/grib_filter $tempFilt $ECCODES_SAMPLES_PATH/GRIB2.tmpl +# Write statement with padding +# ------------------------------------------------------------------------ +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +echo 'write;' | ${tools_dir}/grib_filter -o $tempGrib - $input +cmp $input $tempGrib # No padding added + +echo 'write(0);' | ${tools_dir}/grib_filter -o $tempGrib - $input +cmp $input $tempGrib # zero bytes padding + +echo 'write(10);' | ${tools_dir}/grib_filter -o $tempGrib - $input +set +e +cmp $input $tempGrib # output should be different byte-wise +status=$? +set -e +[ $status -ne 0 ] +${tools_dir}/grib_compare $input $tempGrib # compare should succeed + +set +e +echo 'write(-10);' | ${tools_dir}/grib_filter -o $tempGrib - $input > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid argument" $tempOut + + # Bad filter set +e ${tools_dir}/grib_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/GRIB2.tmpl > $tempOut 2>&1 From cbd277dc64c6255721e36e6838da402780512030 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 16:05:58 +0000 Subject: [PATCH 292/469] Testing: filter GTS headers --- tests/grib_filter.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index 5758f8813..50c2a5105 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -432,7 +432,22 @@ set -e grep -q "Invalid argument" $tempOut +# GTS header +# --------------- +input=$data_dir/gts.grib +echo 'write;' | ${tools_dir}/grib_filter -g -o $tempGrib - $input +cmp $input $tempGrib + +echo 'write;' | ${tools_dir}/grib_filter -o $tempGrib - $input +set +e +cmp $input $tempGrib +status=$? +set -e +[ $status -ne 0 ] + + # Bad filter +# ---------------- set +e ${tools_dir}/grib_filter a_non_existent_filter_file $ECCODES_SAMPLES_PATH/GRIB2.tmpl > $tempOut 2>&1 status=$? From f3f8025d574a6674fe44863b2246fc372ed8a319 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 16:20:12 +0000 Subject: [PATCH 293/469] Testing: GRIB1 data_dummy_field packing --- tests/grib_copy.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/grib_copy.sh b/tests/grib_copy.sh index 79546fb54..1aeac80e6 100755 --- a/tests/grib_copy.sh +++ b/tests/grib_copy.sh @@ -103,6 +103,12 @@ set -e grep -w "unreadable message" $fLog +#------------------------------------------------------------------- +echo "Test: dummy field ..." +#------------------------------------------------------------------- +input=${data_dir}/missing_field.grib1 +${tools_dir}/grib_copy -r $input $temp + #${tools_dir}/grib_copy -w count=1 -X 57143 $input $temp #Last msg #r1=`${tools_dir}/grib_get -w count=37 -n ls $input` #r2=`${tools_dir}/grib_get -n ls $temp` From 78aa5199616d9a9265930bc008b0d53a5846814a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 16:20:19 +0000 Subject: [PATCH 294/469] Testing: GRIB1 data_dummy_field packing --- src/grib_accessor_class_data_dummy_field.cc | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/grib_accessor_class_data_dummy_field.cc b/src/grib_accessor_class_data_dummy_field.cc index 0f654045c..65b6d5a8f 100644 --- a/src/grib_accessor_class_data_dummy_field.cc +++ b/src/grib_accessor_class_data_dummy_field.cc @@ -132,19 +132,18 @@ grib_accessor_class* grib_accessor_class_data_dummy_field = &_grib_accessor_clas static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_dummy_field* self = (grib_accessor_data_dummy_field*)a; - self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->numberOfPoints = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + self->numberOfPoints = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); } static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_data_dummy_field* self = (grib_accessor_data_dummy_field*)a; - size_t i = 0; - size_t n_vals = 0; + size_t i = 0, n_vals = 0; long numberOfPoints; double missing_value = 0; - int err = 0; + int err = 0; if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints, &numberOfPoints)) != GRIB_SUCCESS) return err; @@ -174,15 +173,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_dummy_field* self = (grib_accessor_data_dummy_field*)a; - size_t n_vals = *len; int err = 0; - long bits_per_value = 0; - long half_byte = 0; - - size_t buflen = 0; + size_t buflen = 0; unsigned char* buf = NULL; if (*len == 0) @@ -213,8 +208,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) static int value_count(grib_accessor* a, long* numberOfPoints) { grib_accessor_data_dummy_field* self = (grib_accessor_data_dummy_field*)a; - int err = 0; - *numberOfPoints = 0; + int err = 0; + *numberOfPoints = 0; if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints, numberOfPoints)) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, "Unable to get count of %s (%s)", a->name, grib_get_error_message(err)); From 9c693eabab94f5ecce780303ef3e690788bbf079 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 17:08:29 +0000 Subject: [PATCH 295/469] Tools: Error messages --- tools/bufr_index_build.cc | 2 +- tools/codes_export_resource.cc | 1 + tools/grib_index_build.cc | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/bufr_index_build.cc b/tools/bufr_index_build.cc index ac29bd6b7..d05a2f622 100644 --- a/tools/bufr_index_build.cc +++ b/tools/bufr_index_build.cc @@ -86,7 +86,7 @@ int grib_tool_new_filename_action(grib_runtime_options* options, const char* fil printf("--- %s: processing %s\n", tool_name, file); ret = grib_index_add_file(idx, file); if (ret) { - printf("error: %s\n", grib_get_error_message(ret)); + fprintf(stderr, "Error: %s\n", grib_get_error_message(ret)); exit(ret); } return 0; diff --git a/tools/codes_export_resource.cc b/tools/codes_export_resource.cc index 400373d83..f2d484fbb 100644 --- a/tools/codes_export_resource.cc +++ b/tools/codes_export_resource.cc @@ -75,6 +75,7 @@ int main(int argc, char* argv[]) fout = fopen(out_file, "wb"); if (!fout) { fprintf(stderr, "Failed to open output file '%s'\n", out_file); + perror(out_file); return 1; } fin = codes_fopen(full_path, "r"); diff --git a/tools/grib_index_build.cc b/tools/grib_index_build.cc index 6e933da2b..0d294fbaf 100644 --- a/tools/grib_index_build.cc +++ b/tools/grib_index_build.cc @@ -83,7 +83,7 @@ int grib_tool_new_filename_action(grib_runtime_options* options, const char* fil printf("--- %s: processing %s\n", tool_name, file); ret = grib_index_add_file(idx, file); if (ret) { - printf("error: %s\n", grib_get_error_message(ret)); + fprintf(stderr, "Error: %s\n", grib_get_error_message(ret)); exit(ret); } return 0; From d061202a59685e9d5677dbc3de54edefaa51f10a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 17:09:10 +0000 Subject: [PATCH 296/469] Testing: Error conditions (indexing tools) --- tests/bufr_indexing.sh | 15 ++++++++++++++- tests/codes_export_resource.sh | 6 ++++++ tests/grib_indexing.sh | 12 ++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/tests/bufr_indexing.sh b/tests/bufr_indexing.sh index a3030d46c..297f71bba 100755 --- a/tests/bufr_indexing.sh +++ b/tests/bufr_indexing.sh @@ -12,6 +12,7 @@ label="bufr_indexing_test" tempIndex=temp.$label.$$.idx +tempBufr=temp.$label.$$.bufr tempOut=temp.$label.$$.out tempRef=temp.$label.$$.ref @@ -41,5 +42,17 @@ ${tools_dir}/bufr_index_build -k mars.ident -o $tempIndex $infile |\ grep -q "mars.ident = { 01001, 01003, 01007 }" +# ------------------ +# Error conditions +# ------------------ +echo BUFR > $tempBufr +set +e +${tools_dir}/bufr_index_build $tempBufr > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "End of resource reached" $tempOut + + # Clean up -rm -f $tempIndex $tempOut $tempRef +rm -f $tempIndex $tempOut $tempRef $tempBufr diff --git a/tests/codes_export_resource.sh b/tests/codes_export_resource.sh index fddb45c45..13623c8a3 100755 --- a/tests/codes_export_resource.sh +++ b/tests/codes_export_resource.sh @@ -67,6 +67,12 @@ status=$? set -e [ $status -eq 1 ] +set +e +${tools_dir}/codes_export_resource -s GRIB2 / +status=$? +set -e +[ $status -eq 1 ] + # Clean up rm -f $temp diff --git a/tests/grib_indexing.sh b/tests/grib_indexing.sh index 58980f85d..69d1031bc 100755 --- a/tests/grib_indexing.sh +++ b/tests/grib_indexing.sh @@ -153,6 +153,18 @@ ${tools_dir}/grib_index_build -N -o $tempIndex1 $sample1 > /dev/null ${tools_dir}/grib_dump $tempIndex1 >/dev/null +# ------------------ +# Error conditions +# ------------------ +echo GRIB > $tempGribFile1 +set +e +${tools_dir}/grib_index_build $tempGribFile1 > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "End of resource reached" $tempOut + + # Clean up rm -f $tempOut $tempRef rm -f $tempIndex $tempIndex1 $tempIndex2 $tempGribFile1 $tempGribFile2 From 5e843d160024cb9064e590f4947615e4b8a07146 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 17:26:12 +0000 Subject: [PATCH 297/469] Testing: GTS/METAR tools --- tests/gts_dump.sh | 1 + tools/metar_dump.cc | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/gts_dump.sh b/tests/gts_dump.sh index b8c8db2e8..21733d0a6 100755 --- a/tests/gts_dump.sh +++ b/tests/gts_dump.sh @@ -20,6 +20,7 @@ cd ${data_dir}/gts gts_file=EGRR20150317121020_00493212.DAT ${tools_dir}/gts_dump -w count=1 $gts_file +${tools_dir}/gts_dump -w count=2 $gts_file ${tools_dir}/gts_dump -Dat $gts_file ${tools_dir}/gts_dump -OH $gts_file diff --git a/tools/metar_dump.cc b/tools/metar_dump.cc index f992d1f36..52c5b45be 100644 --- a/tools/metar_dump.cc +++ b/tools/metar_dump.cc @@ -99,7 +99,7 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi if (!options->current_infile->name) return 0; snprintf(tmp, 1024, "FILE: %s ", options->current_infile->name); - if ( !grib_options_on("C") && !grib_options_on("j") ) + if ( !grib_options_on("j") ) fprintf(stdout, "***** %s\n", tmp); return 0; } @@ -118,7 +118,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) grib_set_flag(h, options->print_keys[i].name, GRIB_ACCESSOR_FLAG_DUMP); snprintf(tmp, 1024, "MESSAGE %d ( length=%ld )", options->handle_count, length); - if (!grib_options_on("C") && !grib_options_on("j")) + if (!grib_options_on("j")) fprintf(stdout, "#============== %-38s ==============\n", tmp); if (!strcmp(options->dump_mode, "default")) { GRIB_CHECK_NOLINE(grib_get_string(h, "identifier", identifier, &idlen), 0); From ff522d0990388e5ca4eee453a30fb4644c220ae3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 17:38:46 +0000 Subject: [PATCH 298/469] Tools: Dead code removal --- tools/bufr_compare.cc | 52 ------------------------------------------- 1 file changed, 52 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index 9a1905944..d2d1f0e7a 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -698,7 +698,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g char *sval1 = NULL, *sval2 = NULL; char **svals1 = NULL, **svals2 = NULL; - unsigned char *uval1 = NULL, *uval2 = NULL; double *dval1 = NULL, *dval2 = NULL; long *lval1 = NULL, *lval2 = NULL; double maxdiff = 0; @@ -1094,60 +1093,9 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g printf(" as bytes\n"); if (options->mode == MODE_BUFR) return 0; - if (len1 < 2) - len1 = 512; - if (len2 < 2) - len2 = 512; - uval1 = (unsigned char*)grib_context_malloc(handle1->context, len1 * sizeof(unsigned char)); - uval2 = (unsigned char*)grib_context_malloc(handle2->context, len2 * sizeof(unsigned char)); - - if ((err1 = grib_get_bytes(handle1, name, uval1, &len1)) != GRIB_SUCCESS) { - printInfo(handle1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in %s field: %s\n", - name, first_str, grib_get_error_message(err1)); - } - - if ((err2 = grib_get_bytes(handle2, name, uval2, &len2)) != GRIB_SUCCESS) { - printInfo(handle1); - save_error(c, name); - printf("Error: cannot get bytes value of [%s] in %s field: %s\n", - name, second_str, grib_get_error_message(err2)); - } - - if (err1 == GRIB_SUCCESS && err2 == GRIB_SUCCESS) { - if (memcmp(uval1, uval2, len1) != 0) { - for (i = 0; i < len1; i++) { - if (uval1[i] != uval2[i]) { - printInfo(handle1); - save_error(c, name); - if (len1 == 1) - printf("[%s] byte values are different: [%02x] and [%02x]\n", - name, uval1[i], uval2[i]); - else - printf("[%s] byte value %d of %ld are different: [%02x] and [%02x]\n", - name, i, (long)len1, uval1[i], uval2[i]); - - err1 = GRIB_VALUE_MISMATCH; - break; - } - } - err1 = GRIB_VALUE_MISMATCH; - } - } - - grib_context_free(handle1->context, uval1); - grib_context_free(handle2->context, uval2); - - if (err1) - return err1; - if (err2) - return err2; break; case GRIB_TYPE_LABEL: - if (verbose) - printf(" as label\n"); break; default: From 45f47d1b9063e7771bc0222fae74ac20d254409e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 17:57:20 +0000 Subject: [PATCH 299/469] Indexing: Make functions local --- src/eccodes_prototypes.h | 13 ---------- src/grib_index.cc | 54 ++++++++++++++++++++-------------------- 2 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index f9e208e88..febe5573e 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -635,19 +635,6 @@ grib_action* grib_action_create_set_missing(grib_context* context, const char* n /* grib_index.cc*/ int grib_index_compress(grib_index* index); -int grib_read_uchar(FILE* fh, unsigned char* val); -int grib_read_short(FILE* fh, short* val); -int grib_read_long(FILE* fh, long* val); -int grib_read_unsigned_long(FILE* fh, unsigned long* val); -int grib_write_uchar(FILE* fh, unsigned char val); -int grib_write_short(FILE* fh, short val); -int grib_write_long(FILE* fh, long val); -int grib_write_unsigned_long(FILE* fh, unsigned long val); -int grib_write_string(FILE* fh, const char* s); -int grib_write_identifier(FILE* fh, const char* id); -int grib_write_null_marker(FILE* fh); -int grib_write_not_null_marker(FILE* fh); -char* grib_read_string(grib_context* c, FILE* fh, int* err); grib_field_tree* grib_read_field_tree(grib_context* c, FILE* fh, grib_file** files, int* err); grib_index* grib_index_new(grib_context* c, const char* key, int* err); void grib_index_delete(grib_index* index); diff --git a/src/grib_index.cc b/src/grib_index.cc index ca6e0defc..2432d620d 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -274,7 +274,7 @@ static grib_index_key* grib_index_new_key(grib_context* c, grib_index_key* keys, return keys; } -int grib_read_uchar(FILE* fh, unsigned char* val) +static int grib_read_uchar(FILE* fh, unsigned char* val) { if (fread(val, sizeof(unsigned char), 1, fh) < 1) { if (feof(fh)) @@ -285,7 +285,7 @@ int grib_read_uchar(FILE* fh, unsigned char* val) return GRIB_SUCCESS; } -int grib_read_short(FILE* fh, short* val) +static int grib_read_short(FILE* fh, short* val) { if (fread(val, sizeof(short), 1, fh) < 1) { if (feof(fh)) @@ -296,18 +296,18 @@ int grib_read_short(FILE* fh, short* val) return GRIB_SUCCESS; } -int grib_read_long(FILE* fh, long* val) -{ - if (fread(val, sizeof(long), 1, fh) < 1) { - if (feof(fh)) - return GRIB_END_OF_FILE; - else - return GRIB_IO_PROBLEM; - } - return GRIB_SUCCESS; -} +// static int grib_read_long(FILE* fh, long* val) +// { +// if (fread(val, sizeof(long), 1, fh) < 1) { +// if (feof(fh)) +// return GRIB_END_OF_FILE; +// else +// return GRIB_IO_PROBLEM; +// } +// return GRIB_SUCCESS; +// } -int grib_read_unsigned_long(FILE* fh, unsigned long* val) +static int grib_read_unsigned_long(FILE* fh, unsigned long* val) { if (fread(val, sizeof(long), 1, fh) < 1) { if (feof(fh)) @@ -318,35 +318,35 @@ int grib_read_unsigned_long(FILE* fh, unsigned long* val) return GRIB_SUCCESS; } -int grib_write_uchar(FILE* fh, unsigned char val) +static int grib_write_uchar(FILE* fh, unsigned char val) { if (fwrite(&val, sizeof(unsigned char), 1, fh) < 1) return GRIB_IO_PROBLEM; return GRIB_SUCCESS; } -int grib_write_short(FILE* fh, short val) +static int grib_write_short(FILE* fh, short val) { if (fwrite(&val, sizeof(short), 1, fh) < 1) return GRIB_IO_PROBLEM; return GRIB_SUCCESS; } -int grib_write_long(FILE* fh, long val) -{ - if (fwrite(&val, sizeof(long), 1, fh) < 1) - return GRIB_IO_PROBLEM; - return GRIB_SUCCESS; -} +// static int grib_write_long(FILE* fh, long val) +// { +// if (fwrite(&val, sizeof(long), 1, fh) < 1) +// return GRIB_IO_PROBLEM; +// return GRIB_SUCCESS; +// } -int grib_write_unsigned_long(FILE* fh, unsigned long val) +static int grib_write_unsigned_long(FILE* fh, unsigned long val) { if (fwrite(&val, sizeof(long), 1, fh) < 1) return GRIB_IO_PROBLEM; return GRIB_SUCCESS; } -int grib_write_string(FILE* fh, const char* s) +static int grib_write_string(FILE* fh, const char* s) { size_t len = 0; if (s == NULL) @@ -358,22 +358,22 @@ int grib_write_string(FILE* fh, const char* s) return GRIB_SUCCESS; } -int grib_write_identifier(FILE* fh, const char* ID) +static int grib_write_identifier(FILE* fh, const char* ID) { return grib_write_string(fh, ID); } -int grib_write_null_marker(FILE* fh) +static int grib_write_null_marker(FILE* fh) { return grib_write_uchar(fh, NULL_MARKER); } -int grib_write_not_null_marker(FILE* fh) +static int grib_write_not_null_marker(FILE* fh) { return grib_write_uchar(fh, NOT_NULL_MARKER); } -char* grib_read_string(grib_context* c, FILE* fh, int* err) +static char* grib_read_string(grib_context* c, FILE* fh, int* err) { unsigned char len = 0; char* s = NULL; From d3e7e2ecb28e794e291dd70ee946815fdc305870 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 Jan 2024 21:05:38 +0000 Subject: [PATCH 300/469] Testing: Fortran key setting --- examples/F90/grib_set_gvc.f90 | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/F90/grib_set_gvc.f90 b/examples/F90/grib_set_gvc.f90 index af6a340ec..08d0ef7a0 100644 --- a/examples/F90/grib_set_gvc.f90 +++ b/examples/F90/grib_set_gvc.f90 @@ -15,8 +15,12 @@ program set use eccodes implicit none - integer :: infile, outfile - integer :: igrib + integer :: infile, outfile + integer :: igrib + real(4) :: nlev_real4 = 12.21 + real(8) :: nlev_real8 = 12.21 + integer(4) :: PDTN_int = 11 + integer(8) :: PDTN_long = 11 call codes_open_file(infile, '../../data/sample.grib2', 'r') @@ -25,13 +29,15 @@ program set call codes_grib_new_from_file(infile, igrib) ! individual ensemble forecast - call codes_set(igrib, 'productDefinitionTemplateNumber', 11) + call codes_set(igrib, 'productDefinitionTemplateNumber', PDTN_int) + call codes_set(igrib, 'productDefinitionTemplateNumber', PDTN_long) ! select level type as Generalized Vertical Height Coordinate call codes_set(igrib, 'typeOfLevel', 'generalVertical') ! now set keys specific to this level type - call codes_set(igrib, 'nlev', 12.21) + call codes_set(igrib, 'nlev', nlev_real4) + call codes_set(igrib, 'nlev', nlev_real8) call codes_set(igrib, 'numberOfVGridUsed', 13.55) ! check integrity of GRIB message From 6f4a3f625a951ec9f77be7c4b81481e1593de777 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 12:37:38 +0000 Subject: [PATCH 301/469] Fortran: Dead code removal --- fortran/grib_fortran.c | 48 ++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index d9ab1f459..9a4b48996 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -748,6 +748,7 @@ static int _clear_index(int index_id) return GRIB_SUCCESS; } +#if 0 static int _clear_multi_handle(int multi_handle_id) { l_grib_multi_handle* current = multi_handle_set; @@ -761,6 +762,7 @@ static int _clear_multi_handle(int multi_handle_id) } return GRIB_SUCCESS; } +#endif static int clear_handle(int handle_id) { @@ -782,6 +784,7 @@ static int clear_index(int index_id) return ret; } +#if 0 static int clear_multi_handle(int multi_handle_id) { int ret=0; @@ -791,6 +794,7 @@ static int clear_multi_handle(int multi_handle_id) GRIB_MUTEX_UNLOCK(&multi_handle_mutex); return ret; } +#endif static int _clear_keys_iterator(int keys_iterator_id) { @@ -1214,22 +1218,23 @@ int grib_f_skip_function_(int* iterid) { /*****************************************************************************/ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { - size_t lsize=len; + size_t input_len = len; + size_t lsize = len; char buf[1024]={0,}; grib_keys_iterator* kiter=get_keys_iterator(*iterid); if (!kiter) return GRIB_INVALID_KEYS_ITERATOR; - fort_char_clean(name,len); + fort_char_clean(name, len); sprintf(buf,"%s",grib_keys_iterator_get_name(kiter)); - lsize=strlen(buf); - if (len < lsize) return GRIB_ARRAY_TOO_SMALL; + lsize = strlen(buf); + if (input_len < lsize) return GRIB_ARRAY_TOO_SMALL; - memcpy(name,buf,lsize); + memcpy(name, buf, lsize); - czstr_to_fortran(name,len); + czstr_to_fortran(name, len); return 0; } @@ -1279,23 +1284,24 @@ int codes_f_bufr_keys_iterator_next_(int* iterid) { } /*****************************************************************************/ -int codes_f_bufr_keys_iterator_get_name_(int* iterid,char* name,int len) { - size_t lsize=len; - char buf[1024]={0,}; +int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len) { + size_t input_len = len; + size_t lsize = len; + char buf[1024] = {0,}; - bufr_keys_iterator* kiter=get_bufr_keys_iterator(*iterid); + bufr_keys_iterator* kiter = get_bufr_keys_iterator(*iterid); if (!kiter) return GRIB_INVALID_KEYS_ITERATOR; - fort_char_clean(name,len); + fort_char_clean(name, len); - sprintf(buf,"%s",codes_bufr_keys_iterator_get_name(kiter)); - lsize=strlen(buf); - if (len < lsize) return GRIB_ARRAY_TOO_SMALL; + sprintf(buf, "%s", codes_bufr_keys_iterator_get_name(kiter)); + lsize = strlen(buf); + if (input_len < lsize) return GRIB_ARRAY_TOO_SMALL; - memcpy(name,buf,lsize); + memcpy(name, buf, lsize); - czstr_to_fortran(name,len); + czstr_to_fortran(name, len); return 0; } @@ -1758,9 +1764,9 @@ int grib_f_index_release_(int* hid){ return clear_index(*hid); } -int grib_f_multi_handle_release_(int* hid){ +/* int grib_f_multi_handle_release_(int* hid){ return clear_multi_handle(*hid); -} +} */ int grib_f_release_(int* hid){ return clear_handle(*hid); @@ -1818,7 +1824,7 @@ int grib_f_print_(int* gid, char* key, int len){ } #endif /*****************************************************************************/ -int grib_f_get_error_string_(int* err, char* buf, int len){ +int grib_f_get_error_string_(int* err, char* buf, int len) { const char* err_msg = grib_get_error_message(*err); const size_t erlen = strlen(err_msg); if( len < erlen) return GRIB_ARRAY_TOO_SMALL; @@ -1827,7 +1833,7 @@ int grib_f_get_error_string_(int* err, char* buf, int len){ } /*****************************************************************************/ -int grib_f_get_api_version_(int* apiVersion,int len){ +int grib_f_get_api_version_(int* apiVersion,int len) { *apiVersion = grib_get_api_version(); return GRIB_SUCCESS; } @@ -2221,7 +2227,7 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s int err = GRIB_SUCCESS; char buf[1024]; size_t lsize = *size; - long i=0; + size_t i = 0; double* val8 = NULL; if(!h) return GRIB_INVALID_GRIB; From 5e6313407f467ad07d1b3f3e4c319f407296d119 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 13:40:07 +0000 Subject: [PATCH 302/469] Fortran: Reformatting --- fortran/grib_fortran.c | 353 +++++++++++++++++++++++++---------------- 1 file changed, 215 insertions(+), 138 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 9a4b48996..be814a1bd 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -845,7 +845,8 @@ static int clear_bufr_keys_iterator(int keys_iterator_id) /*****************************************************************************/ #if 0 -int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbytes) { +int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbytes) +{ grib_context* c; int err=0; FILE* f=get_file(*fid); @@ -861,7 +862,8 @@ int grib_f_read_any_headers_only_from_file_(int* fid, char* buffer, size_t* nbyt #endif /*****************************************************************************/ -int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { +int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) +{ grib_context* c; int err=0; FILE* f=get_file(*fid); @@ -876,7 +878,8 @@ int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes) { } /*****************************************************************************/ -int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) { +int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) +{ grib_context* c; FILE* f=get_file(*fid); @@ -895,7 +898,8 @@ int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes) { } /*****************************************************************************/ -int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) { +int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) +{ grib_context* c; FILE* f=get_file(*fid); @@ -914,7 +918,8 @@ int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes) { } /*****************************************************************************/ -int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { +int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) +{ FILE* f = NULL; int ioerr=0; char oper[1024]; /* GRIB-576: open mode */ @@ -961,7 +966,8 @@ int grib_f_open_file_(int* fid, char* name , char* op, int lname, int lop) { } /*****************************************************************************/ -int grib_f_close_file_(int* fid){ +int grib_f_close_file_(int* fid) +{ return clear_file(*fid); } @@ -990,12 +996,14 @@ void grib_f_write_on_fail_(int* gid) { grib_f_write_on_fail(gid); } /*****************************************************************************/ -int grib_f_multi_support_on_(){ +int grib_f_multi_support_on_() +{ grib_multi_support_on(0); return GRIB_SUCCESS; } -int grib_f_multi_support_off_(){ +int grib_f_multi_support_off_() +{ grib_multi_support_off(0); return GRIB_SUCCESS; } @@ -1128,7 +1136,8 @@ int grib_f_iterator_delete_(int* iterid) { #endif /*FORTRAN_GEOITERATOR_SUPPORT*/ /*****************************************************************************/ -static int _grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { +static int _grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) +{ int err=0; char buf[1024]; grib_handle* h; @@ -1146,7 +1155,8 @@ static int _grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int *iterid=-1; return err; } -int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { +int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) +{ int ret=0; GRIB_MUTEX_INIT_ONCE(&once,&init) GRIB_MUTEX_LOCK(&keys_iterator_mutex) @@ -1156,7 +1166,8 @@ int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) { } /*****************************************************************************/ -int grib_f_keys_iterator_next_(int* iterid) { +int grib_f_keys_iterator_next_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; @@ -1164,60 +1175,70 @@ int grib_f_keys_iterator_next_(int* iterid) { } /*****************************************************************************/ -int grib_f_keys_iterator_delete_(int* iterid) { +int grib_f_keys_iterator_delete_(int* iterid) +{ return clear_keys_iterator(*iterid); } /*****************************************************************************/ -int grib_f_gribex_mode_on_() { +int grib_f_gribex_mode_on_() +{ grib_gribex_mode_on(0); return GRIB_SUCCESS; } -int grib_f_gribex_mode_off_() { +int grib_f_gribex_mode_off_() +{ grib_gribex_mode_off(0); return GRIB_SUCCESS; } /*****************************************************************************/ -int grib_f_skip_computed_(int* iterid) { +int grib_f_skip_computed_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_COMPUTED); } -int grib_f_skip_coded_(int* iterid) { +int grib_f_skip_coded_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_CODED); } -int grib_f_skip_edition_specific_(int* iterid) { +int grib_f_skip_edition_specific_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC); } -int grib_f_skip_duplicates_(int* iterid) { +int grib_f_skip_duplicates_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_DUPLICATES); } -int grib_f_skip_read_only_(int* iterid) { +int grib_f_skip_read_only_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_READ_ONLY); } -int grib_f_skip_function_(int* iterid) { +int grib_f_skip_function_(int* iterid) +{ grib_keys_iterator* iter=get_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; return grib_keys_iterator_set_flags(iter,GRIB_KEYS_ITERATOR_SKIP_FUNCTION); } /*****************************************************************************/ -int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { +int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) +{ size_t input_len = len; size_t lsize = len; char buf[1024]={0,}; @@ -1240,7 +1261,8 @@ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len) { } /*****************************************************************************/ -int grib_f_keys_iterator_rewind_(int* kiter) { +int grib_f_keys_iterator_rewind_(int* kiter) +{ grib_keys_iterator* i=get_keys_iterator(*kiter); if (!i) return GRIB_INVALID_KEYS_ITERATOR; @@ -1249,7 +1271,8 @@ int grib_f_keys_iterator_rewind_(int* kiter) { /* BUFR keys iterator */ /*****************************************************************************/ -static int _codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { +static int _codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) +{ int err=0; grib_handle* h; bufr_keys_iterator* iter; @@ -1267,7 +1290,8 @@ static int _codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { *iterid=-1; return err; } -int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { +int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) +{ int ret=0; GRIB_MUTEX_INIT_ONCE(&once,&init) GRIB_MUTEX_LOCK(&keys_iterator_mutex) @@ -1276,7 +1300,8 @@ int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid) { return ret; } /*****************************************************************************/ -int codes_f_bufr_keys_iterator_next_(int* iterid) { +int codes_f_bufr_keys_iterator_next_(int* iterid) +{ bufr_keys_iterator* iter=get_bufr_keys_iterator(*iterid); if (!iter) return GRIB_INVALID_KEYS_ITERATOR; @@ -1284,7 +1309,8 @@ int codes_f_bufr_keys_iterator_next_(int* iterid) { } /*****************************************************************************/ -int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len) { +int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len) +{ size_t input_len = len; size_t lsize = len; char buf[1024] = {0,}; @@ -1306,7 +1332,8 @@ int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len) { return 0; } /*****************************************************************************/ -int codes_f_bufr_keys_iterator_rewind_(int* kiter) { +int codes_f_bufr_keys_iterator_rewind_(int* kiter) +{ bufr_keys_iterator* i=get_bufr_keys_iterator(*kiter); if (!i) return GRIB_INVALID_KEYS_ITERATOR; @@ -1314,12 +1341,14 @@ int codes_f_bufr_keys_iterator_rewind_(int* kiter) { } /*****************************************************************************/ -int codes_f_bufr_keys_iterator_delete_(int* iterid) { +int codes_f_bufr_keys_iterator_delete_(int* iterid) +{ return clear_bufr_keys_iterator(*iterid); } /*****************************************************************************/ -int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { +int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) +{ grib_handle *h = NULL; h = grib_handle_new_from_message_copy(0, buffer, *bufsize); if (h){ @@ -1331,12 +1360,14 @@ int grib_f_new_from_message_(int* gid, void* buffer, size_t* bufsize) { } /* See SUP-3893: Need to provide an 'int' version */ -int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) { +int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) +{ /* Call the version with void pointer */ return grib_f_new_from_message_(gid, (void*)buffer, bufsize); } /*****************************************************************************/ -int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ +int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize) +{ grib_handle *h = NULL; h = grib_handle_new_from_message_copy(0, buffer, *bufsize); if(h){ @@ -1348,7 +1379,8 @@ int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize){ } /*****************************************************************************/ -int grib_f_new_from_samples_(int* gid, char* name, int lname){ +int grib_f_new_from_samples_(int* gid, char* name, int lname) +{ char fname[1024]; grib_handle *h = grib_handle_new_from_samples(NULL,cast_char(fname,name,lname)); /* grib_context_set_debug(h->context,1);*/ @@ -1362,7 +1394,8 @@ int grib_f_new_from_samples_(int* gid, char* name, int lname){ } /*****************************************************************************/ -int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ +int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname) +{ char fname[1024]; grib_handle* h = codes_bufr_handle_new_from_samples(NULL,cast_char(fname,name,lname)); /* grib_context_set_debug(h->context,1);*/ @@ -1376,7 +1409,8 @@ int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname){ } /*****************************************************************************/ -int grib_f_clone_(int* gidsrc,int* giddest){ +int grib_f_clone_(int* gidsrc,int* giddest) +{ grib_handle *src = get_handle(*gidsrc); grib_handle *dest = NULL; @@ -1409,7 +1443,8 @@ int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len) } /*****************************************************************************/ -int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout){ +int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout) +{ int err=0; grib_handle *hfrom = get_handle(*gidfrom); grib_handle *hto = get_handle(*gidto); @@ -1425,7 +1460,8 @@ int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout){ } /*****************************************************************************/ -int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ +int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len) +{ char buf[1024]={0,}; grib_handle *src = get_handle(*gidsrc); grib_handle *dest = get_handle(*giddest); @@ -1437,7 +1473,8 @@ int grib_f_copy_namespace_(int* gidsrc,char* name,int* giddest,int len){ } /*****************************************************************************/ -int any_f_scan_file_(int* fid, int* n) { +int any_f_scan_file_(int* fid, int* n) +{ int err = 0; off_t offset=0; void *data = NULL; @@ -1508,7 +1545,8 @@ int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid) } /*****************************************************************************/ -int any_f_load_all_from_file_(int* fid, int* n) { +int any_f_load_all_from_file_(int* fid, int* n) +{ int err = 0; off_t offset=0; void* data = NULL; @@ -1563,7 +1601,8 @@ int any_f_new_from_loaded_(int* msgid, int* gid) } /*****************************************************************************/ -int codes_f_clear_loaded_from_file_(void) { +int codes_f_clear_loaded_from_file_(void) +{ grib_context* c = grib_context_get_default(); /* grib_oarray_delete_content(c,binary_messages); */ grib_oarray_delete(c, binary_messages); @@ -1571,7 +1610,8 @@ int codes_f_clear_loaded_from_file_(void) { } /*****************************************************************************/ -int grib_f_count_in_file_(int* fid,int* n) { +int grib_f_count_in_file_(int* fid,int* n) +{ int err = 0; FILE* f = get_file(*fid); if (f) err = grib_count_in_file(0, f, n); @@ -1579,7 +1619,8 @@ int grib_f_count_in_file_(int* fid,int* n) { } /*****************************************************************************/ -int any_f_new_from_file_(int* fid, int* gid) { +int any_f_new_from_file_(int* fid, int* gid) +{ int err = 0; FILE* f = get_file(*fid); grib_handle* h = NULL; @@ -1600,7 +1641,8 @@ int any_f_new_from_file_(int* fid, int* gid) { } /*****************************************************************************/ -int bufr_f_new_from_file_(int* fid, int* gid){ +int bufr_f_new_from_file_(int* fid, int* gid) +{ int err = 0; FILE* f = get_file(*fid); @@ -1617,12 +1659,13 @@ int bufr_f_new_from_file_(int* fid, int* gid){ } } - *gid=-1; + *gid = -1; return GRIB_INVALID_FILE; } /*****************************************************************************/ -int grib_f_new_from_file_(int* fid, int* gid){ +int grib_f_new_from_file_(int* fid, int* gid) +{ int err = 0; FILE* f = get_file(*fid); @@ -1644,7 +1687,8 @@ int grib_f_new_from_file_(int* fid, int* gid){ } /*****************************************************************************/ -int grib_f_headers_only_new_from_file_(int* fid, int* gid){ +int grib_f_headers_only_new_from_file_(int* fid, int* gid) +{ int err = 0; FILE* f = get_file(*fid); grib_handle *h = NULL; @@ -1666,7 +1710,8 @@ int grib_f_headers_only_new_from_file_(int* fid, int* gid){ } /*****************************************************************************/ -int grib_f_new_from_index_(int* iid, int* gid) { +int grib_f_new_from_index_(int* iid, int* gid) +{ int err = 0; grib_index* i = get_index(*iid); grib_handle *h = NULL; @@ -1687,7 +1732,8 @@ int grib_f_new_from_index_(int* iid, int* gid) { } /*****************************************************************************/ -int grib_f_index_new_from_file_(char* file, char* keys, int* gid, int lfile, int lkeys) { +int grib_f_index_new_from_file_(char* file, char* keys, int* gid, int lfile, int lkeys) +{ int err = 0; char fname[1024] = {0,}; char knames[1024] = {0,}; @@ -1710,7 +1756,8 @@ int grib_f_index_new_from_file_(char* file, char* keys, int* gid, int lfile, int } /*****************************************************************************/ -int grib_f_index_add_file_(int* iid, char* file, int lfile) { +int grib_f_index_add_file_(int* iid, char* file, int lfile) +{ grib_index *i = get_index(*iid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1724,7 +1771,8 @@ int grib_f_index_add_file_(int* iid, char* file, int lfile) { } /*****************************************************************************/ -int grib_f_index_read_(char* file, int* gid, int lfile) { +int grib_f_index_read_(char* file, int* gid, int lfile) +{ int err = 0; char fname[1024]={0,}; @@ -1746,7 +1794,8 @@ int grib_f_index_read_(char* file, int* gid, int lfile) { } /*****************************************************************************/ -int grib_f_index_write_(int* gid, char* file, int lfile) { +int grib_f_index_write_(int* gid, char* file, int lfile) +{ grib_index *i = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1760,7 +1809,8 @@ int grib_f_index_write_(int* gid, char* file, int lfile) { } /*****************************************************************************/ -int grib_f_index_release_(int* hid){ +int grib_f_index_release_(int* hid) +{ return clear_index(*hid); } @@ -1768,7 +1818,8 @@ int grib_f_index_release_(int* hid){ return clear_multi_handle(*hid); } */ -int grib_f_release_(int* hid){ +int grib_f_release_(int* hid) +{ return clear_handle(*hid); } @@ -1794,9 +1845,9 @@ static void do_the_dump(grib_handle* h) grib_dump_content(h,stdout, "wmo", dump_flags, NULL); } } -int grib_f_dump_(int* gid){ +int grib_f_dump_(int* gid) +{ grib_handle *h = get_handle(*gid); - if(!h) return GRIB_INVALID_GRIB; else @@ -1807,7 +1858,8 @@ int grib_f_dump_(int* gid){ /*****************************************************************************/ #ifdef USE_GRIB_PRINT -int grib_f_print_(int* gid, char* key, int len){ +int grib_f_print_(int* gid, char* key, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; grib_dumper* d = NULL; @@ -1824,7 +1876,8 @@ int grib_f_print_(int* gid, char* key, int len){ } #endif /*****************************************************************************/ -int grib_f_get_error_string_(int* err, char* buf, int len) { +int grib_f_get_error_string_(int* err, char* buf, int len) +{ const char* err_msg = grib_get_error_message(*err); const size_t erlen = strlen(err_msg); if( len < erlen) return GRIB_ARRAY_TOO_SMALL; @@ -1833,7 +1886,8 @@ int grib_f_get_error_string_(int* err, char* buf, int len) { } /*****************************************************************************/ -int grib_f_get_api_version_(int* apiVersion,int len) { +int grib_f_get_api_version_(int* apiVersion,int len) +{ *apiVersion = grib_get_api_version(); return GRIB_SUCCESS; } @@ -1856,7 +1910,8 @@ int grib_f_get_size_int_(int* gid, char* key, int* val, int len) } } -int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ +int grib_f_get_size_long_(int* gid, char* key, long* val, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1872,7 +1927,8 @@ int grib_f_get_size_long_(int* gid, char* key, long* val, int len){ } /*****************************************************************************/ -int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ +int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1887,7 +1943,8 @@ int grib_f_index_get_size_int_(int* gid, char* key, int* val, int len){ } } -int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ +int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1903,7 +1960,8 @@ int grib_f_index_get_size_long_(int* gid, char* key, long* val, int len){ } /*****************************************************************************/ -int grib_f_get_int_(int* gid, char* key, int* val, int len){ +int grib_f_get_int_(int* gid, char* key, int* val, int len) +{ grib_handle *h = get_handle(*gid); long long_val; int err = GRIB_SUCCESS; @@ -1915,7 +1973,8 @@ int grib_f_get_int_(int* gid, char* key, int* val, int len){ return err; } -int grib_f_get_long_(int* gid, char* key, long* val, int len){ +int grib_f_get_long_(int* gid, char* key, long* val, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1926,7 +1985,8 @@ int grib_f_get_long_(int* gid, char* key, long* val, int len){ } /*****************************************************************************/ -int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ +int grib_f_get_native_type_(int* gid, char* key, int* val, int len) +{ grib_handle *h = get_handle(*gid); int type_val = 0; int err = GRIB_SUCCESS; @@ -1939,8 +1999,8 @@ int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ } /*****************************************************************************/ -int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ - +int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len) +{ grib_handle *h = get_handle(*gid); long* long_val = NULL; int err = GRIB_SUCCESS; @@ -1970,8 +2030,8 @@ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ return err; } /*****************************************************************************/ -int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ - +int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -1986,8 +2046,8 @@ int grib_f_get_long_array_(int* gid, char* key, long *val, int* size, int len){ } /*****************************************************************************/ -int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv){ - +int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2002,8 +2062,8 @@ int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, i } /*****************************************************************************/ -int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* size, int len){ - +int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* size, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; int i; @@ -2043,8 +2103,8 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* } /*****************************************************************************/ -int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ - +int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2057,14 +2117,13 @@ int grib_f_index_get_long_(int* gid, char* key, long *val, int* size, int len){ } /*****************************************************************************/ -int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ - +int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; - size_t lsize = *size; + size_t lsize = *size, i = 0; long* lval=0; - int i; if(!h) return GRIB_INVALID_GRIB; @@ -2080,8 +2139,8 @@ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ } /*****************************************************************************/ -int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len){ - +int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len) +{ grib_index *h = get_index(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2094,7 +2153,8 @@ int grib_f_index_get_real8_(int* gid, char* key, double *val, int* size, int len } /*****************************************************************************/ -int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ +int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2125,7 +2185,8 @@ int grib_f_set_int_array_(int* gid, char* key, int* val, int* size, int len){ } /*****************************************************************************/ -int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ +int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; size_t lsize = *size; @@ -2136,7 +2197,8 @@ int grib_f_set_long_array_(int* gid, char* key, long* val, int* size, int len){ } /*****************************************************************************/ -int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, int len, int lenv){ +int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, int len, int lenv) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2151,7 +2213,8 @@ int grib_f_set_byte_array_(int* gid, char* key, unsigned char* val, int* size, i } /*****************************************************************************/ -int grib_f_set_int_(int* gid, char* key, int* val, int len){ +int grib_f_set_int_(int* gid, char* key, int* val, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; long long_val = *val; @@ -2159,7 +2222,8 @@ int grib_f_set_int_(int* gid, char* key, int* val, int len){ return grib_set_long(h, cast_char(buf,key,len), long_val); } -int grib_f_set_long_(int* gid, char* key, long* val, int len){ +int grib_f_set_long_(int* gid, char* key, long* val, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; if(!h) return GRIB_INVALID_GRIB; @@ -2167,7 +2231,8 @@ int grib_f_set_long_(int* gid, char* key, long* val, int len){ } /*****************************************************************************/ -int grib_f_set_missing_(int* gid, char* key,int len){ +int grib_f_set_missing_(int* gid, char* key,int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; @@ -2176,7 +2241,8 @@ int grib_f_set_missing_(int* gid, char* key,int len){ return grib_set_missing(h, cast_char(buf,key,len)); } -int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ +int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len) +{ int err=0; grib_handle *h = get_handle(*gid); char buf[1024]; @@ -2187,7 +2253,8 @@ int grib_f_is_missing_(int* gid, char* key,int* isMissing,int len){ } /*****************************************************************************/ -int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len){ +int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; if(!h) return GRIB_INVALID_GRIB; @@ -2197,8 +2264,8 @@ int grib_f_is_defined_(int* gid, char* key,int* isDefined,int len){ } /*****************************************************************************/ -int grib_f_set_real4_(int* gid, char* key, float* val, int len){ - +int grib_f_set_real4_(int* gid, char* key, float* val, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; double val8 = *val; @@ -2207,8 +2274,8 @@ int grib_f_set_real4_(int* gid, char* key, float* val, int len){ return grib_set_double(h, cast_char(buf,key,len), val8); } -int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int len){ - +int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2221,8 +2288,8 @@ int grib_f_get_real4_element_(int* gid, char* key, int* index,float* val, int le return err; } -int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* size, int len){ - +int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* size, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2249,8 +2316,8 @@ int grib_f_get_real4_elements_(int* gid, char* key,int* index, float *val,int* s return err; } -int grib_f_get_real4_(int* gid, char* key, float* val, int len){ - +int grib_f_get_real4_(int* gid, char* key, float* val, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2400,21 +2467,21 @@ int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int val int grib_f_index_select_int_(int* gid, char* key, int* val, int len) { grib_index *h = get_index(*gid); - long lval=*val; - char buf[1024]; + long lval = *val; + char buf[1024] = {0,}; - if(!h) return GRIB_INVALID_GRIB; - return grib_index_select_long(h, cast_char(buf,key,len), lval); + if (!h) return GRIB_INVALID_GRIB; + return grib_index_select_long(h, cast_char(buf, key, len), lval); } /*****************************************************************************/ int grib_f_index_select_long_(int* gid, char* key, long* val, int len) { grib_index *h = get_index(*gid); - char buf[1024]; + char buf[1024] = {0,}; - if(!h) return GRIB_INVALID_GRIB; - return grib_index_select_long(h, cast_char(buf,key,len), *val); + if (!h) return GRIB_INVALID_GRIB; + return grib_index_select_long(h, cast_char(buf, key, len), *val); } /*****************************************************************************/ @@ -2438,8 +2505,8 @@ int grib_f_get_real8_(int* gid, char* key, double* val, int len) } /*****************************************************************************/ -int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int len){ - +int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; @@ -2449,8 +2516,8 @@ int grib_f_get_real8_element_(int* gid, char* key,int* index, double* val, int l } /*****************************************************************************/ -int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int *size, int len){ - +int grib_f_get_real8_elements_(int* gid, char* key,int* index, double* val, int *size, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; @@ -2489,10 +2556,9 @@ int grib_f_find_nearest_single_(int* gid,int* is_lsm, double* inlats,double* inlons, double* outlats,double* outlons, double* values,double* distances, - int* indexes) { - + int* indexes) +{ grib_handle *h = get_handle(*gid); - if(!h) return GRIB_INVALID_GRIB; return grib_nearest_find_multiple(h,*is_lsm, @@ -2505,10 +2571,9 @@ int grib_f_find_nearest_multiple_(int* gid,int* is_lsm, double* inlats,double* inlons, double* outlats,double* outlons, double* values,double* distances, - int* indexes, int* npoints) { - + int* indexes, int* npoints) +{ grib_handle *h = get_handle(*gid); - if(!h) return GRIB_INVALID_GRIB; return grib_nearest_find_multiple(h,*is_lsm, @@ -2517,8 +2582,8 @@ int grib_f_find_nearest_multiple_(int* gid,int* is_lsm, } /*****************************************************************************/ -int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len){ - +int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2534,8 +2599,8 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) } /*****************************************************************************/ -int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, int len){ - +int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; size_t lsize = *size; @@ -2546,8 +2611,8 @@ int grib_f_set_force_real8_array_(int* gid, char* key, double*val, int* size, in } /*****************************************************************************/ -int grib_f_set_real8_array_(int* gid, char* key, double*val, int* size, int len){ - +int grib_f_set_real8_array_(int* gid, char* key, double*val, int* size, int len) +{ grib_handle *h = get_handle(*gid); char buf[1024]; size_t lsize = *size; @@ -2636,8 +2701,8 @@ int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen } /*****************************************************************************/ -int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){ - +int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; @@ -2664,8 +2729,8 @@ static int is_all_spaces(const char *s) } /*****************************************************************************/ -int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ - +int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2) +{ grib_handle *h = get_handle(*gid); char* val_str = NULL; @@ -2686,8 +2751,8 @@ int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){ } /*****************************************************************************/ -int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_t* size) { - +int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_t* size) +{ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; double *lat8=NULL,*lon8=NULL,*val8 = NULL; @@ -2717,14 +2782,15 @@ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_ return err; } -int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) { +int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) +{ grib_handle *h = get_handle(*gid); return grib_get_data(h,lats,lons,values); - } /*****************************************************************************/ -int grib_f_get_message_size_(int* gid, size_t *len){ +int grib_f_get_message_size_(int* gid, size_t *len) +{ grib_handle *h = get_handle(*gid); if(!h) return GRIB_INVALID_GRIB; *len = h->buffer->ulength; @@ -2732,7 +2798,8 @@ int grib_f_get_message_size_(int* gid, size_t *len){ } /*****************************************************************************/ -int grib_f_copy_message_(int* gid, void* mess, size_t* len){ +int grib_f_copy_message_(int* gid, void* mess, size_t* len) +{ grib_handle *h = get_handle(*gid); if(!h) return GRIB_INVALID_GRIB; @@ -2749,7 +2816,8 @@ int grib_f_copy_message_(int* gid, void* mess, size_t* len){ } /*****************************************************************************/ -void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ +void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr) +{ char bufstr[1024]={0,}; char bufcall[1024]={0,}; grib_context* c=grib_context_get_default(); @@ -2764,7 +2832,8 @@ void grib_f_check_(int* err,char* call,char* str,int lencall,int lenstr){ } /*****************************************************************************/ -int grib_f_write_(int* gid, int* fid) { +int grib_f_write_(int* gid, int* fid) +{ grib_handle *h = get_handle(*gid); FILE* f = get_file(*fid); const void* mess = NULL; @@ -2783,7 +2852,8 @@ int grib_f_write_(int* gid, int* fid) { } /*****************************************************************************/ -int grib_f_multi_write_(int* gid, int* fid) { +int grib_f_multi_write_(int* gid, int* fid) +{ grib_multi_handle *h = get_multi_handle(*gid); FILE* f = get_file(*fid); @@ -2793,7 +2863,8 @@ int grib_f_multi_write_(int* gid, int* fid) { return grib_multi_handle_write(h,f); } -int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { +int grib_f_multi_append_(int* ingid, int* sec,int* mgid) +{ grib_handle *h = get_handle(*ingid); grib_multi_handle *mh = get_multi_handle(*mgid); @@ -2808,18 +2879,21 @@ int grib_f_multi_append_(int* ingid, int* sec,int* mgid) { } /*****************************************************************************/ -int codes_f_bufr_multi_element_constant_arrays_on_() { +int codes_f_bufr_multi_element_constant_arrays_on_() +{ codes_bufr_multi_element_constant_arrays_on(NULL); return GRIB_SUCCESS; } -int codes_f_bufr_multi_element_constant_arrays_off_() { +int codes_f_bufr_multi_element_constant_arrays_off_() +{ codes_bufr_multi_element_constant_arrays_off(NULL); return GRIB_SUCCESS; } /*****************************************************************************/ -int grib_f_set_definitions_path_(char* path, int len){ +int grib_f_set_definitions_path_(char* path, int len) +{ grib_context* c = grib_context_get_default(); char buf[1024]; grib_context_set_definitions_path(c, cast_char(buf,path,len)); @@ -2827,7 +2901,8 @@ int grib_f_set_definitions_path_(char* path, int len){ } /*****************************************************************************/ -int grib_f_set_samples_path_(char* path, int len){ +int grib_f_set_samples_path_(char* path, int len) +{ grib_context* c = grib_context_get_default(); char buf[1024]; grib_context_set_samples_path(c, cast_char(buf,path,len)); @@ -2835,11 +2910,13 @@ int grib_f_set_samples_path_(char* path, int len){ } /*****************************************************************************/ -int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) { +int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second) +{ return grib_julian_to_datetime(*jd,year,month,day,hour,minute,second); } /*****************************************************************************/ -int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) { +int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd) +{ return grib_datetime_to_julian(*year,*month,*day,*hour,*minute,*second,jd); } From 5619ade9c28f8f9427f93829075b6e62b67cd0af Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 13:40:31 +0000 Subject: [PATCH 303/469] Examples: Test long integer interface --- examples/F90/bufr_ecc-1019.f90 | 9 +++++---- examples/F90/grib_ecc-1316.f90 | 12 +++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/examples/F90/bufr_ecc-1019.f90 b/examples/F90/bufr_ecc-1019.f90 index d595c624b..5974132e6 100644 --- a/examples/F90/bufr_ecc-1019.f90 +++ b/examples/F90/bufr_ecc-1019.f90 @@ -11,6 +11,7 @@ program operator_3_test implicit none integer :: iret, outfile, ibufr integer(kind=4), dimension(:), allocatable :: ivalues + integer(kind=8), dimension(:), allocatable :: lvalues character(len=100) :: outfile_name call getarg(1, outfile_name) @@ -21,10 +22,10 @@ program operator_3_test stop 1 endif - allocate(ivalues(1)) - ivalues=(/ -16383 /) - call codes_set(ibufr,'inputOverriddenReferenceValues',ivalues) - deallocate(ivalues) + allocate(lvalues(1)) + lvalues=(/ -16383 /) + call codes_set(ibufr,'inputOverriddenReferenceValues',lvalues) + deallocate(lvalues) allocate(ivalues(3)) ivalues=(/ 2,2,2 /) diff --git a/examples/F90/grib_ecc-1316.f90 b/examples/F90/grib_ecc-1316.f90 index b6f521ce5..913d49fde 100644 --- a/examples/F90/grib_ecc-1316.f90 +++ b/examples/F90/grib_ecc-1316.f90 @@ -12,6 +12,9 @@ program grib_ecc_1316 implicit none integer :: iret, ostep, olevel, onumber + ! Test both interfaces: 4 byte and 8 byte integers + integer(4) :: step_int = 96, level_int = 0, number_int = 0 + integer(8) :: step_long = 96, level_long = 0, number_long = 0 character(len=80) :: parameterName integer :: idx, igrib, count1 = 0 @@ -19,9 +22,12 @@ program grib_ecc_1316 call codes_index_create(idx, '../../data/tigge_cf_ecmwf.grib2', & 'parameterName,number,level,step') - call codes_index_select(idx, 'step', 96) - call codes_index_select(idx, 'level', 0) - call codes_index_select(idx, 'number', 0) + call codes_index_select(idx, 'step', step_int) + call codes_index_select(idx, 'level', level_int) + call codes_index_select(idx, 'number', number_int) + call codes_index_select(idx, 'step', step_long) + call codes_index_select(idx, 'level', level_long) + call codes_index_select(idx, 'number', number_long) call codes_index_select(idx, 'parameterName', 'Soil moisture') do while (.true.) From b3ae7cdef625e0ad4070703ea91459b7c98bdb62 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 11 Jan 2024 13:42:03 +0000 Subject: [PATCH 304/469] correction of unit --- definitions/grib2/tables/local/ecmf/1/4.2.254.254.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table b/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table index b97ea25e4..170a12cab 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.254.254.table @@ -1,6 +1,6 @@ # Code table 4.2 - discipline=254 category=254 for ECMWF 192 192 Covariance between 2-metre temperature and volumetric soil water layer 1 [K m**3 m**-3] -193 193 Covariance between 2-metre relative humidity and volumetric soil water layer 1 [K m**3 m**-3] +193 193 Covariance between 2-metre relative humidity and volumetric soil water layer 1 [% m**3 m**-3] 194 194 Covariance between surface soil moisture and volumetric soil water layer 1 [m**3 m**-3 m**3 m**-3] 195 195 Covariance between 2-metre temperature and volumetric soil water layer 2 [K m**3 m**-3] 196 196 Covariance between 2-metre relative humidity and volumetric soil water layer 2 [% m**3 m**-3] From e65ca5f98cc4ab500f90920237387b72228fa98a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 16:16:37 +0000 Subject: [PATCH 305/469] Expressions/Actions: Unused functions --- src/action_class_assert.cc | 12 ++++++------ src/grib_expression_class_is_integer.cc | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/action_class_assert.cc b/src/action_class_assert.cc index 804dedda0..4261524fd 100644 --- a/src/action_class_assert.cc +++ b/src/action_class_assert.cc @@ -107,12 +107,12 @@ static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) static void dump(grib_action* act, FILE* f, int lvl) { - int i = 0; - grib_action_assert* self = (grib_action_assert*)act; - for (i = 0; i < lvl; i++) - grib_context_print(act->context, f, " "); - grib_expression_print(act->context, self->expression, 0); - printf("\n"); + // int i = 0; + // grib_action_assert* self = (grib_action_assert*)act; + // for (i = 0; i < lvl; i++) + // grib_context_print(act->context, f, " "); + // grib_expression_print(act->context, self->expression, 0); + // printf("\n"); } static void destroy(grib_context* context, grib_action* act) diff --git a/src/grib_expression_class_is_integer.cc b/src/grib_expression_class_is_integer.cc index c42ae9f86..03554ece7 100644 --- a/src/grib_expression_class_is_integer.cc +++ b/src/grib_expression_class_is_integer.cc @@ -155,14 +155,14 @@ static string evaluate_string(grib_expression* g, grib_handle* h, char* buf, siz static void print(grib_context* c, grib_expression* g, grib_handle* f) { - grib_expression_is_integer* e = (grib_expression_is_integer*)g; - printf("access('%s", e->name); - if (f) { - long s = 0; - grib_get_long(f, e->name, &s); - printf("=%ld", s); - } - printf("')"); + // grib_expression_is_integer* e = (grib_expression_is_integer*)g; + // printf("access('%s", e->name); + // if (f) { + // long s = 0; + // grib_get_long(f, e->name, &s); + // printf("=%ld", s); + // } + // printf("')"); } static void destroy(grib_context* c, grib_expression* g) From c35fdc2471d6a6b1ad7666a7364f0310028e28ba Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 16:56:33 +0000 Subject: [PATCH 306/469] Unused variables --- src/grib_accessor_class_bufr_data_array.cc | 8 ++++---- src/grib_accessor_class_g1bitmap.cc | 4 ++-- src/grib_accessor_class_g2bitmap.cc | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 9f745ba56..c1bff6ea6 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -2427,7 +2427,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset bufr_descriptor* descriptor; /*grib_section* sectionUp=0;*/ grib_section* groupSection = 0; - long groupNumber = 0; + // long groupNumber = 0; /*long indexOfGroupNumber=0;*/ int depth; int max_depth = -1; /* highest value of depth */ @@ -2481,7 +2481,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset self->tempStrings = self->numberOfSubsets? grib_sarray_new(c, self->numberOfSubsets, 500) : NULL; end = self->compressedData ? 1 : self->numberOfSubsets; - groupNumber = 1; + // groupNumber = 1; gaGroup = grib_accessor_factory(self->dataKeys, &creatorGroup, 0, NULL); //gaGroup->bufr_group_number = groupNumber; @@ -2525,7 +2525,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset self->unpackMode == CODES_BUFR_UNPACK_STRUCTURE) { const int sidx = descriptor->Y + significanceQualifierIndexArray[descriptor->X] * NUMBER_OF_QUALIFIERS_PER_CATEGORY; DEBUG_ASSERT(sidx > 0); - groupNumber++; + // groupNumber++; add_coord_flag = 1; if (significanceQualifierGroup[sidx]) { @@ -2569,7 +2569,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset else if (descriptor->code == 31031 && incrementBitmapIndex != 0) { /* bitmap */ bitmapIndex++; - groupNumber++; + // groupNumber++; incrementBitmapIndex = 0; if (bitmapIndex >= MAX_NUMBER_OF_BITMAPS) { //grib_context_log(c, GRIB_LOG_ERROR, "Bitmap error: bitmap index=%d, max num bitmaps=%d\n", bitmapIndex, MAX_NUMBER_OF_BITMAPS); diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index b624d4dbe..519638f6a 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -125,7 +125,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t i; int err = 0; long pos = 0; - long bmaplen = 0; + //long bmaplen = 0; const int bit_padding = 16; double miss_values = 0; tlen = ((*len + bit_padding - 1) / bit_padding * bit_padding) / 8; @@ -141,7 +141,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (val[i] == miss_values) pos++; else { - bmaplen++; + //bmaplen++; grib_set_bit_on(buf, &pos); } } diff --git a/src/grib_accessor_class_g2bitmap.cc b/src/grib_accessor_class_g2bitmap.cc index 3d928e804..441ad70a6 100644 --- a/src/grib_accessor_class_g2bitmap.cc +++ b/src/grib_accessor_class_g2bitmap.cc @@ -134,7 +134,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t i; int err = 0; long pos = 0; - long bmaplen = 0; + // long bmaplen = 0; double miss_values = 0; tlen = (*len + 7) / 8; @@ -149,7 +149,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (val[i] == miss_values) pos++; else { - bmaplen++; + // bmaplen++; grib_set_bit_on(buf, &pos); } } From 52f6530493e2d0ab3422d0fe1941e2e0dfc33993 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 17:25:52 +0000 Subject: [PATCH 307/469] Testing: Avoid comparing floats as strings (SD-88343) --- tests/bufr_extract_headers.sh | 2 +- tests/grib_tigge_conversions1.sh | 11 +++++++---- tests/grib_tigge_conversions2.sh | 11 +++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/bufr_extract_headers.sh b/tests/bufr_extract_headers.sh index ad6e2b534..32cd620ec 100755 --- a/tests/bufr_extract_headers.sh +++ b/tests/bufr_extract_headers.sh @@ -203,7 +203,7 @@ tropical_cyclone.bufr tros_31.bufr " -KEYS='localLongitude1,localLatitude1,localLongitude2,localLatitude2,localNumberOfObservations,satelliteID,restricted' +KEYS='typicalDate,localNumberOfObservations,satelliteID,restricted' for bf in ${bufr_files}; do input=${data_dir}/bufr/$bf $EXEC ${test_dir}/bufr_extract_headers $KEYS $input > $temp1 diff --git a/tests/grib_tigge_conversions1.sh b/tests/grib_tigge_conversions1.sh index fc7c75a33..0147738f8 100755 --- a/tests/grib_tigge_conversions1.sh +++ b/tests/grib_tigge_conversions1.sh @@ -31,18 +31,21 @@ fi # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" +# Some very small floating-point differences shown for these +blacklist="-b iDirectionIncrementInDegrees,jDirectionIncrementInDegrees" + for file in ${dir}/tigge_[a-e]*.grib; do exclude=`echo $file | awk " /$exclusion_pattern/ {print \"found\";} "` if [ -z "$exclude" ]; then rm -f ${temp1} ${temp2} # 2 to 1 conversion check - ${tools_dir}/grib_set -s editionNumber=1 ${file} ${temp1} 2> $REDIRECT > $REDIRECT - ${tools_dir}/grib_compare -P -c data:n,geography:n ${temp1} ${file} 2> $REDIRECT > $REDIRECT + ${tools_dir}/grib_set -s editionNumber=1 ${file} ${temp1} + ${tools_dir}/grib_compare $blacklist -P -c data:n,geography:n ${temp1} ${file} # 1 to 2 conversion check - ${tools_dir}/grib_set -s editionNumber=2 ${temp1} ${temp2} 2> $REDIRECT > $REDIRECT - ${tools_dir}/grib_compare -P -c shortName,data:n,geography:n ${temp2} ${file} 2> $REDIRECT > $REDIRECT + ${tools_dir}/grib_set -s editionNumber=2 ${temp1} ${temp2} + ${tools_dir}/grib_compare $blacklist -P -c shortName,data:n,geography:n ${temp2} ${file} fi done diff --git a/tests/grib_tigge_conversions2.sh b/tests/grib_tigge_conversions2.sh index 3d80771e6..73b7a5455 100755 --- a/tests/grib_tigge_conversions2.sh +++ b/tests/grib_tigge_conversions2.sh @@ -30,18 +30,21 @@ fi # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" +# Some very small floating-point differences shown for these +blacklist="-b iDirectionIncrementInDegrees,jDirectionIncrementInDegrees" + for file in ${dir}/tigge_[f-z]*.grib; do exclude=`echo $file | awk " /$exclusion_pattern/ {print \"found\";} "` if [ -z "$exclude" ]; then rm -f ${temp1} ${temp2} # 2 to 1 conversion check - ${tools_dir}/grib_set -s editionNumber=1 ${file} ${temp1} 2> $REDIRECT > $REDIRECT - ${tools_dir}/grib_compare -P -c data:n,geography:n ${temp1} ${file} 2> $REDIRECT > $REDIRECT + ${tools_dir}/grib_set -s editionNumber=1 ${file} ${temp1} + ${tools_dir}/grib_compare $blacklist -P -c data:n,geography:n ${temp1} ${file} # 1 to 2 conversion check - ${tools_dir}/grib_set -s editionNumber=2 ${temp1} ${temp2} 2> $REDIRECT > $REDIRECT - ${tools_dir}/grib_compare -P -c shortName,data:n,geography:n ${temp2} ${file} 2> $REDIRECT > $REDIRECT + ${tools_dir}/grib_set -s editionNumber=2 ${temp1} ${temp2} + ${tools_dir}/grib_compare $blacklist -P -c shortName,data:n,geography:n ${temp2} ${file} fi done From eb4bf8dea7f161621eb0ece14dd8eeed9fcaeaa3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jan 2024 17:59:58 +0000 Subject: [PATCH 308/469] Compiler warnings: Unused variables --- ...data_g1second_order_general_extended_packing.cc | 5 +++-- src/grib_accessor_class_data_g2secondary_bitmap.cc | 4 ++-- src/grib_accessor_class_data_sh_packed.cc | 9 +++++---- src/grib_accessor_class_smart_table.cc | 7 ++++--- src/grib_handle.cc | 14 ++++++++------ tools/grib_get_data.cc | 3 --- tools/grib_to_netcdf.cc | 2 -- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index e8dc5b1bb..4bc5a7900 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -359,7 +359,8 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len double reference_value; long binary_scale_factor; long decimal_scale_factor; - long j, count = 0; + long j; + // long count = 0; long *groupWidths = NULL, *groupLengths = NULL; long orderOfSPD = 0; long* SPD = 0; @@ -456,7 +457,7 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len &X[n]); for (j = 0; j < groupLengths[i]; j++) { X[n] += firstOrderValues[i]; - count++; + // count++; n++; } diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index 7511b78cf..cceb3d765 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -126,7 +126,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long primary_len = 0, secondary_len = 0; double* primary_bitmap = NULL; double* secondary_bitmap = NULL; - long i = 0, j = 0, on = 0, k = 0, m = 0; + long i = 0, j = 0, k = 0, m = 0; double missing_value = 0, present_value = 0; long expand_by = 0; @@ -177,7 +177,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) primary_bitmap[k++] = present_value; for (j = 0; j < expand_by; j++) secondary_bitmap[m++] = val[i + j]; - on++; + //on++; } } diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index a02d60275..25687d262 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -204,7 +204,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) size_t i = 0; int ret = GRIB_SUCCESS; - long hcount = 0, lcount = 0, hpos = 0, lup = 0, mmax = 0, n_vals = 0; + // long lup = 0; + long hcount = 0, lcount = 0, hpos = 0, mmax = 0, n_vals = 0; double* scals = NULL; /* double *pscals=NULL; */ @@ -330,12 +331,12 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) i = 0; while (maxv > 0) { - lup = mmax; + // lup = mmax; if (sub_k >= 0) { for (hcount = 0; hcount < sub_k + 1; hcount++) { decode_float(grib_decode_unsigned_long(hres, &hpos, 8 * bytes)); decode_float(grib_decode_unsigned_long(hres, &hpos, 8 * bytes)); - lup++; + // lup++; } sub_k--; } @@ -352,7 +353,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) reference_value); if (mmax == 0) val[i - 1] = 0; - lup++; + // lup++; } maxv--; diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index 61b5d49e3..dd6cfcd41 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -284,7 +284,8 @@ static int grib_load_smart_table(grib_context* c, const char* filename, { char line[1024] = {0,}; FILE* f = NULL; - int lineNumber, numberOfColumns, code; + // int lineNumber; + int numberOfColumns, code; grib_context_log(c, GRIB_LOG_DEBUG, "Loading code table from %s", filename); @@ -313,14 +314,14 @@ static int grib_load_smart_table(grib_context* c, const char* filename, t->recomposed_name[2] = grib_context_strdup_persistent(c, recomposed_name); } - lineNumber = 0; + // lineNumber = 0; while (fgets(line, sizeof(line) - 1, f)) { char* s = line; char* p; line[strlen(line) - 1] = 0; - ++lineNumber; + // ++lineNumber; while (*s != '\0' && isspace(*s)) s++; diff --git a/src/grib_handle.cc b/src/grib_handle.cc index f476ab9f2..e2dd6ec7c 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -597,7 +597,8 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, long edition = 0; size_t seclen = 0; unsigned char* secbegin = 0; - int secnum = 0, seccount = 0; + int secnum = 0; + // int seccount = 0; int err = 0, i = 0; grib_multi_support* gm = NULL; @@ -631,9 +632,9 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, secbegin = gm->sections[gm->section_number]; seclen = gm->sections_length[gm->section_number]; secnum = gm->section_number; - seccount = 0; + // seccount = 0; while (grib2_get_next_section((unsigned char*)message, olen, &secbegin, &seclen, &secnum, &err)) { - seccount++; + // seccount++; /*printf(" - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/ gm->sections[secnum] = secbegin; @@ -716,7 +717,8 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in long edition = 0; size_t seclen = 0; unsigned char* secbegin = 0; - int secnum = 0, seccount = 0; + int secnum = 0; + // int seccount = 0; int err = 0, i = 0; grib_multi_support* gm = NULL; off_t gts_header_offset = 0; @@ -784,9 +786,9 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in secbegin = gm->sections[gm->section_number]; seclen = gm->sections_length[gm->section_number]; secnum = gm->section_number; - seccount = 0; + // seccount = 0; while (grib2_get_next_section((unsigned char*)data, olen, &secbegin, &seclen, &secnum, &err)) { - seccount++; + // seccount++; /*printf(" - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/ gm->sections[secnum] = secbegin; diff --git a/tools/grib_get_data.cc b/tools/grib_get_data.cc index 54185ac61..814664ef0 100644 --- a/tools/grib_get_data.cc +++ b/tools/grib_get_data.cc @@ -92,7 +92,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) long* bitmap = NULL; /* bitmap array */ size_t bmp_len = 0; double *data_values = 0, *lats = 0, *lons = 0; - int n = 0; size_t size = 0, num_bytes = 0; long hasMissingValues = 0; @@ -239,7 +238,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if (print_keys) print_key_values(values, options->print_keys_count); fprintf(dump_file, "\n"); - n++; } } else if (skip_missing == 1) { @@ -259,7 +257,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if (print_keys) print_key_values(values, options->print_keys_count); fprintf(dump_file, "\n"); - n++; } } } diff --git a/tools/grib_to_netcdf.cc b/tools/grib_to_netcdf.cc index b46145123..47c9e8335 100644 --- a/tools/grib_to_netcdf.cc +++ b/tools/grib_to_netcdf.cc @@ -1607,7 +1607,6 @@ static void cube_indexes( int i = 0; int index = 0; int n = 1; - int ok = 0; if (size < c) { grib_context_log(ctx, GRIB_LOG_ERROR, "Internal error in cube_indexes. size=%d < axis=%d", size, c); @@ -1649,7 +1648,6 @@ static void cube_indexes( if (h->compare ? h->compare[i](w, v) : (w == v)) { index += j * n; n *= dims; - ok++; ((hypercube*)h)->index_cache[i] = j; break; } From 94e804c71600c4e23e06520e01f62ab8bd4db67f Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Fri, 12 Jan 2024 10:57:01 +0000 Subject: [PATCH 309/469] renamed level in local ECMWF table --- definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def | 2 +- definitions/grib2/tables/local/ecmf/1/4.5.table | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def b/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def index 1f3b6d47b..3044148ff 100644 --- a/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def +++ b/definitions/grib2/localConcepts/ecmf/typeOfLevelConcept.def @@ -1,2 +1,2 @@ # Concept typeOfLevel -'MarsSfcFromMultipleLevels' = {typeOfFirstFixedSurface=254;} +'abstractLevel' = {typeOfFirstFixedSurface=254;} diff --git a/definitions/grib2/tables/local/ecmf/1/4.5.table b/definitions/grib2/tables/local/ecmf/1/4.5.table index 64153aaee..573e9d12f 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.5.table +++ b/definitions/grib2/tables/local/ecmf/1/4.5.table @@ -1,2 +1,2 @@ 173 173 Top surface of snow, over ice, on sea, lake or river -254 254 MARS levtype SFC originating from fields on multiple levels +254 254 Abstract level with no vertical localization or meaning From cd9a4b2f0a9fb951ed3edc09c4d89c6f060aa90a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 Jan 2024 11:11:27 +0000 Subject: [PATCH 310/469] ECC-1744: Rounding errors in 2 tests with intel LLVM-based compilers 2023.2 --- tests/bufr_extract_headers.sh | 10 +++------- tests/grib_tigge_conversions1.sh | 2 +- tests/grib_tigge_conversions2.sh | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tests/bufr_extract_headers.sh b/tests/bufr_extract_headers.sh index 32cd620ec..1b7961cb4 100755 --- a/tests/bufr_extract_headers.sh +++ b/tests/bufr_extract_headers.sh @@ -99,8 +99,8 @@ for bf in ${bufr_files}; do done -# BUFRs with localLatitude1, localLongitude2 etc -# ---------------------------------------------- +# BUFRs with specific keys to compare +# ------------------------------------ bufr_files=" aaen_55.bufr aben_55.bufr @@ -179,21 +179,16 @@ modw_87.bufr monw_87.bufr nomi_206.bufr nos1_208.bufr -nos2_208.bufr nos3_208.bufr nos4_208.bufr -nos5_208.bufr nos6_208.bufr -nos7_208.bufr nos8_208.bufr pgps_110.bufr -rada_250.bufr rado_250.bufr s4kn_165.bufr sb19_206.bufr sbu8_206.bufr smin_49.bufr -smis_49.bufr smiu_49.bufr smos_203.bufr sn4k_165.bufr @@ -203,6 +198,7 @@ tropical_cyclone.bufr tros_31.bufr " +# ECC-1744: Do not compare floating-point keys like localLatitude1, localLongitude2 KEYS='typicalDate,localNumberOfObservations,satelliteID,restricted' for bf in ${bufr_files}; do input=${data_dir}/bufr/$bf diff --git a/tests/grib_tigge_conversions1.sh b/tests/grib_tigge_conversions1.sh index 0147738f8..848798d9e 100755 --- a/tests/grib_tigge_conversions1.sh +++ b/tests/grib_tigge_conversions1.sh @@ -31,7 +31,7 @@ fi # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" -# Some very small floating-point differences shown for these +# ECC-1744: Some very small floating-point differences shown for these blacklist="-b iDirectionIncrementInDegrees,jDirectionIncrementInDegrees" for file in ${dir}/tigge_[a-e]*.grib; do diff --git a/tests/grib_tigge_conversions2.sh b/tests/grib_tigge_conversions2.sh index 73b7a5455..a07fbdcb2 100755 --- a/tests/grib_tigge_conversions2.sh +++ b/tests/grib_tigge_conversions2.sh @@ -30,7 +30,7 @@ fi # --- Do I want to exclude any file pattern from the comparison ? exclusion_pattern="tcw|ssr|str|skt|cap|ci|ttr|st|sm|sd|slhf|sshf" -# Some very small floating-point differences shown for these +# ECC-1744: Some very small floating-point differences shown for these blacklist="-b iDirectionIncrementInDegrees,jDirectionIncrementInDegrees" for file in ${dir}/tigge_[f-z]*.grib; do From a5406e2063a568d778888ca2bb5eb0ce687f7d61 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 Jan 2024 11:12:18 +0000 Subject: [PATCH 311/469] ECC-1743: GRIB2: new hydro and wave parameters --- definitions/grib2/cfVarName.def | 64 +++++++++++++++++++++++++++++++++ definitions/grib2/name.def | 64 +++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 64 +++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 64 +++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 64 +++++++++++++++++++++++++++++++++ 5 files changed, 320 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 797e0ec9e..4fc68355c 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -958,6 +958,36 @@ parameterCategory = 0 ; parameterNumber = 52 ; } +#Envelope-maximum individual wave height +'envhmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 93 ; + } +#Time domain maximum individual crest height +'tdcmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 94 ; + } +#Time domain maximum individual wave height +'tdhmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 95 ; + } +#Space time maximum individual crest height +'stcmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 96 ; + } +#Space time maximum individual wave height +'sthmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 97 ; + } #Wave Spectral Skewness 'wss' = { discipline = 10 ; @@ -4454,6 +4484,40 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Lake depth +'lakdph' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River depth +'rivdph' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River outflow of water +'rivout' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + } +#Floodplain outflow of water +'fldout' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 18 ; + } +#Floodpath outflow of water +'pthflw' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } #Latitude 'lat' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 2ed74a3cd..a596d2950 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -958,6 +958,36 @@ parameterCategory = 0 ; parameterNumber = 52 ; } +#Envelope-maximum individual wave height +'Envelope-maximum individual wave height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 93 ; + } +#Time domain maximum individual crest height +'Time domain maximum individual crest height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 94 ; + } +#Time domain maximum individual wave height +'Time domain maximum individual wave height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 95 ; + } +#Space time maximum individual crest height +'Space time maximum individual crest height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 96 ; + } +#Space time maximum individual wave height +'Space time maximum individual wave height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 97 ; + } #Wave Spectral Skewness 'Wave Spectral Skewness' = { discipline = 10 ; @@ -4454,6 +4484,40 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Lake depth +'Lake depth' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River depth +'River depth' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River outflow of water +'River outflow of water' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + } +#Floodplain outflow of water +'Floodplain outflow of water' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 18 ; + } +#Floodpath outflow of water +'Floodpath outflow of water' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } #Latitude 'Latitude' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index baebb7f27..cd3ccc913 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -958,6 +958,36 @@ parameterCategory = 0 ; parameterNumber = 52 ; } +#Envelope-maximum individual wave height +'140130' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 93 ; + } +#Time domain maximum individual crest height +'140131' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 94 ; + } +#Time domain maximum individual wave height +'140132' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 95 ; + } +#Space time maximum individual crest height +'140133' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 96 ; + } +#Space time maximum individual wave height +'140134' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 97 ; + } #Wave Spectral Skewness '140207' = { discipline = 10 ; @@ -4454,6 +4484,40 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Lake depth +'240030' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River depth +'240031' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River outflow of water +'240032' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + } +#Floodplain outflow of water +'240033' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 18 ; + } +#Floodpath outflow of water +'240034' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } #Latitude '250001' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 28070723b..e0a5039d9 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -958,6 +958,36 @@ parameterCategory = 0 ; parameterNumber = 52 ; } +#Envelope-maximum individual wave height +'envhmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 93 ; + } +#Time domain maximum individual crest height +'tdcmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 94 ; + } +#Time domain maximum individual wave height +'tdhmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 95 ; + } +#Space time maximum individual crest height +'stcmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 96 ; + } +#Space time maximum individual wave height +'sthmax' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 97 ; + } #Wave Spectral Skewness 'wss' = { discipline = 10 ; @@ -4454,6 +4484,40 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Lake depth +'lakdph' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River depth +'rivdph' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River outflow of water +'rivout' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + } +#Floodplain outflow of water +'fldout' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 18 ; + } +#Floodpath outflow of water +'pthflw' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } #Latitude 'lat' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index cee71a951..2a197be6f 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -958,6 +958,36 @@ parameterCategory = 0 ; parameterNumber = 52 ; } +#Envelope-maximum individual wave height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 93 ; + } +#Time domain maximum individual crest height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 94 ; + } +#Time domain maximum individual wave height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 95 ; + } +#Space time maximum individual crest height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 96 ; + } +#Space time maximum individual wave height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 97 ; + } #Wave Spectral Skewness 'Numeric' = { discipline = 10 ; @@ -4454,6 +4484,40 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Lake depth +'m' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River depth +'m' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + } +#River outflow of water +'m**3 s**-1' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + } +#Floodplain outflow of water +'m**3 s**-1' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 18 ; + } +#Floodpath outflow of water +'m**3 s**-1' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } #Latitude 'Degree N' = { discipline = 0 ; From 27ef7b906223b712a5e935de747ec41fd289ed61 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 Jan 2024 13:38:57 +0000 Subject: [PATCH 312/469] Debugging: Output list of key/value pairs being set --- src/eccodes_prototypes.h | 2 +- src/grib_value.cc | 31 +++++++++++++++++++++++-------- tests/unit_tests.cc | 6 +++--- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index febe5573e..1a57e46ae 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1187,7 +1187,7 @@ int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_ int grib_get_values(grib_handle* h, grib_values* args, size_t count); int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); -void grib_print_values(const char* title, grib_values* values); +void grib_print_values(const char* title, grib_values* values, FILE* out); int grib_values_check(grib_handle* h, grib_values* values, int count); int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err); int codes_copy_key(grib_handle* h1, grib_handle* h2, const char* key, int type); diff --git a/src/grib_value.cc b/src/grib_value.cc index 2ac9cb3ce..9c0365789 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -131,6 +131,11 @@ int grib_set_long(grib_handle* h, const char* name, long val) return ret; } + + if (h->context->debug) { + fprintf(stderr, "ECCODES DEBUG grib_set_long %s=%ld (Key not found)\n", name, val); + } + return GRIB_NOT_FOUND; } @@ -476,6 +481,11 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t* l } return ret; } + + if (h->context->debug) { + fprintf(stderr, "ECCODES DEBUG grib_set_string %s=|%s| (Key not found)\n", name, val); + } + return GRIB_NOT_FOUND; } @@ -1769,6 +1779,12 @@ int grib_set_values(grib_handle* h, grib_values* args, size_t count) for (i = 0; i < count; i++) args[i].error = GRIB_NOT_FOUND; + if (h->context->debug) { + for (i = 0; i < count; i++) { + grib_print_values("ECCODES DEBUG set key/value pairs", &args[i], stderr); + } + } + while (more) { more = 0; for (i = 0; i < count; i++) { @@ -1839,23 +1855,22 @@ int grib_get_nearest_smaller_value(grib_handle* h, const char* name, return grib_nearest_smaller_value(act, val, nearest); } -void grib_print_values(const char* title, grib_values* values) +void grib_print_values(const char* title, grib_values* values, FILE* out) { - while(values) { - printf("%s: %s%s", title, values->name, (values->equal?"=":"!=")); + if (values) { + fprintf(out, "%s: %s=", title, values->name); switch (values->type) { case GRIB_TYPE_LONG: - printf("%ld", values->long_value); + fprintf(out, "%ld", values->long_value); break; case GRIB_TYPE_DOUBLE: - printf("%g", values->double_value); + fprintf(out, "%g", values->double_value); break; case GRIB_TYPE_STRING: - printf("%s", values->string_value); + fprintf(out, "%s", values->string_value); break; } - printf(" (type=%s)\n", grib_get_type_name(values->type)); - values = values->next; + fprintf(out, " (type=%s)\n", grib_get_type_name(values->type)); } } diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 0fb193e41..695de023c 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -454,7 +454,7 @@ static void test_parse_keyval_string() values_required, GRIB_TYPE_UNDEFINED, values1, &count); Assert( !err ); Assert( count == 2 ); - grib_print_values("print values test: values1", values1); + grib_print_values("print values test: values1", values1, stdout); Assert( strcmp(values1[0].name, "key1")==0 ); Assert( strcmp(values1[0].string_value, "value1")==0 ); @@ -474,7 +474,7 @@ static void test_parse_keyval_string() values_required, GRIB_TYPE_LONG, values2, &count); Assert( !err ); Assert( count == 1 ); - grib_print_values("print values test: values2", values2); + grib_print_values("print values test: values2", values2, stdout); Assert( strcmp(values2[0].name, "x")==0 ); Assert( values2[0].long_value == 14 ); Assert( values2[0].equal == 1 ); @@ -485,7 +485,7 @@ static void test_parse_keyval_string() values_required, GRIB_TYPE_DOUBLE, values3, &count); Assert( !err ); Assert( count == 1 ); - grib_print_values("print values test: values3", values3); + grib_print_values("print values test: values3", values3, stdout); Assert( strcmp(values3[0].name, "mars.level")==0 ); free( (void*)values3[0].name ); } From 080f08363d03f4c3ec3ed5cf7931fd693c464bf5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 Jan 2024 13:43:25 +0000 Subject: [PATCH 313/469] ECC-1745: GRIB2: Local ECMWF parameters for covariances --- .../grib2/localConcepts/ecmf/cfVarName.def | 168 ++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 168 ++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 168 ++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 168 ++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 168 ++++++++++++++++++ 5 files changed, 840 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 3f3a05316..9e62226b7 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13825,6 +13825,174 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Covariance between 2-metre temperature and volumetric soil water layer 1 +'covar_t2m_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 1 +'covar_rh2m_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 1 +'covar_ssm_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 2 +'covar_t2m_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 2 +'covar_rh2m_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 2 +'covar_ssm_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 3 +'covar_t2m_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 3 +'covar_rh2m_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 3 +'covar_ssm_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 1 +'covar_t2m_stl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 1 +'covar_rh2m_stl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 2 +'covar_t2m_stl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 2 +'covar_rh2m_stl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 3 +'covar_t2m_stl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 205 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 3 +'covar_rh2m_stl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 206 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 1 +'covar_t2m_tsn1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 207 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 1 +'covar_rh2m_tsn1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 208 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 2 +'covar_t2m_tsn2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 209 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 2 +'covar_rh2m_tsn2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 210 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 3 +'covar_t2m_tsn3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 211 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 3 +'covar_rh2m_tsn3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 212 ; + typeOfFirstFixedSurface = 254 ; + } #Surface roughness length for heat 'srlh' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index a0081e32f..30466e4c5 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13825,6 +13825,174 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Covariance between 2-metre temperature and volumetric soil water layer 1 +'Covariance between 2-metre temperature and volumetric soil water layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 1 +'Covariance between 2-metre relative humidity and volumetric soil water layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 1 +'Covariance between surface soil moisture and volumetric soil water layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 2 +'Covariance between 2-metre temperature and volumetric soil water layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 2 +'Covariance between 2-metre relative humidity and volumetric soil water layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 2 +'Covariance between surface soil moisture and volumetric soil water layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 3 +'Covariance between 2-metre temperature and volumetric soil water layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 3 +'Covariance between 2-metre relative humidity and volumetric soil water layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 3 +'Covariance between surface soil moisture and volumetric soil water layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 1 +'Covariance between 2-metre temperature and soil temperature layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 1 +'Covariance between 2-metre relative humidity and soil temperature layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 2 +'Covariance between 2-metre temperature and soil temperature layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 2 +'Covariance between 2-metre relative humidity and soil temperature layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 3 +'Covariance between 2-metre temperature and soil temperature layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 205 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 3 +'Covariance between 2-metre relative humidity and soil temperature layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 206 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 1 +'Covariance between 2-metre temperature and temperature of snow layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 207 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 1 +'Covariance between 2-metre relative humidity and temperature of snow layer 1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 208 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 2 +'Covariance between 2-metre temperature and temperature of snow layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 209 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 2 +'Covariance between 2-metre relative humidity and temperature of snow layer 2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 210 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 3 +'Covariance between 2-metre temperature and temperature of snow layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 211 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 3 +'Covariance between 2-metre relative humidity and temperature of snow layer 3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 212 ; + typeOfFirstFixedSurface = 254 ; + } #Surface roughness length for heat 'Surface roughness length for heat' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 8b6604847..6ba1493c0 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13825,6 +13825,174 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Covariance between 2-metre temperature and volumetric soil water layer 1 +'254001' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 1 +'254002' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 1 +'254003' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 2 +'254004' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 2 +'254005' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 2 +'254006' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 3 +'254007' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 3 +'254008' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 3 +'254009' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 1 +'254010' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 1 +'254011' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 2 +'254012' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 2 +'254013' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 3 +'254014' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 205 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 3 +'254015' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 206 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 1 +'254016' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 207 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 1 +'254017' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 208 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 2 +'254018' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 209 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 2 +'254019' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 210 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 3 +'254020' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 211 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 3 +'254021' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 212 ; + typeOfFirstFixedSurface = 254 ; + } #Surface roughness length for heat '260651' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 0a3476f15..1ec2bca2e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13825,6 +13825,174 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Covariance between 2-metre temperature and volumetric soil water layer 1 +'covar_t2m_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 1 +'covar_rh2m_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 1 +'covar_ssm_swvl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 2 +'covar_t2m_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 2 +'covar_rh2m_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 2 +'covar_ssm_swvl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 3 +'covar_t2m_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 3 +'covar_rh2m_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 3 +'covar_ssm_swvl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 1 +'covar_t2m_stl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 1 +'covar_rh2m_stl1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 2 +'covar_t2m_stl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 2 +'covar_rh2m_stl2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 3 +'covar_t2m_stl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 205 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 3 +'covar_rh2m_stl3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 206 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 1 +'covar_t2m_tsn1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 207 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 1 +'covar_rh2m_tsn1' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 208 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 2 +'covar_t2m_tsn2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 209 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 2 +'covar_rh2m_tsn2' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 210 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 3 +'covar_t2m_tsn3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 211 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 3 +'covar_rh2m_tsn3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 212 ; + typeOfFirstFixedSurface = 254 ; + } #Surface roughness length for heat 'srlh' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index f1a5418f3..36b703fe7 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13825,6 +13825,174 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Covariance between 2-metre temperature and volumetric soil water layer 1 +'K m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 1 +'% m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 1 +'m**3 m**-3 m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 2 +'K m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 2 +'% m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 2 +'m**3 m**-3 m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and volumetric soil water layer 3 +'K m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and volumetric soil water layer 3 +'% m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between surface soil moisture and volumetric soil water layer 3 +'m**3 m**-3 m**3 m**-3' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 1 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 1 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 2 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 2 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and soil temperature layer 3 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 205 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and soil temperature layer 3 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 206 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 1 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 207 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 1 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 208 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 2 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 209 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 2 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 210 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre temperature and temperature of snow layer 3 +'K K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 211 ; + typeOfFirstFixedSurface = 254 ; + } +#Covariance between 2-metre relative humidity and temperature of snow layer 3 +'% K' = { + localTablesVersion = 1 ; + discipline = 254 ; + parameterCategory = 254 ; + parameterNumber = 212 ; + typeOfFirstFixedSurface = 254 ; + } #Surface roughness length for heat 'm' = { localTablesVersion = 1 ; From 87f34c24b880ec1e6b153c87a1547c16faaf2a3a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 14:52:25 +0000 Subject: [PATCH 314/469] Testing: Sub-hourly with grib_filter (needs fixing - see src/grib_accessor_class_optimal_step_units.cc) --- src/grib_accessor_class_g2step_range.cc | 2 +- tests/grib_sub_hourly.sh | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 2089f493b..e15d195f3 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -44,8 +44,8 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); -static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index c9ac1f34e..37799249e 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -51,9 +51,10 @@ if (set -u; : ${ECCODES_GRIB_SHOW_HOUR_STEPUNIT?}) 2> /dev/null; then fi -label="grib_ecc-1620" -temp=temp.$label -temp2=temp_2.$label +label="grib_sub_hourly" +temp=temp.1.$label +temp2=temp.2.$label +tempFilt=temp.$label.filt samples_dir=$ECCODES_SAMPLES_PATH instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 @@ -466,7 +467,20 @@ grib_check_key_equals $temp "-p $keys_s" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" -rm -f $temp $temp2 +cat >$tempFilt<$tempFilt< Date: Sat, 13 Jan 2024 17:14:08 +0000 Subject: [PATCH 315/469] Examples: Fortran --- examples/F90/bufr_copy_message.f90 | 4 ++-- examples/F90/grib_count_messages.f90 | 11 +++++------ examples/F90/grib_get_keys.f90 | 4 ++-- examples/F90/grib_print_data_static.f90 | 4 ++-- examples/F90/grib_set_missing.f90 | 4 ++-- examples/F90/set_missing_fortran.f90 | 4 ++-- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/examples/F90/bufr_copy_message.f90 b/examples/F90/bufr_copy_message.f90 index 2fcbd2fe2..f2cbfcf3f 100644 --- a/examples/F90/bufr_copy_message.f90 +++ b/examples/F90/bufr_copy_message.f90 @@ -10,7 +10,7 @@ ! Description: How to copy a BUFR message in memory ! ! -program copy +program bufr_copy_message use eccodes implicit none integer :: err, sub_centre @@ -50,4 +50,4 @@ program copy call codes_close_file(outfile) deallocate (message) -end program copy +end program diff --git a/examples/F90/grib_count_messages.f90 b/examples/F90/grib_count_messages.f90 index 512b5ce5c..e4ae30210 100644 --- a/examples/F90/grib_count_messages.f90 +++ b/examples/F90/grib_count_messages.f90 @@ -9,7 +9,7 @@ ! Description: Count messages before processing ! ! -program get +program grib_count_messages use eccodes implicit none @@ -17,7 +17,7 @@ program get integer :: iret integer :: n integer :: i - integer, dimension(:), allocatable :: igrib + integer, dimension(:), allocatable :: igrib real :: latitudeOfFirstPointInDegrees real :: longitudeOfFirstPointInDegrees real :: latitudeOfLastPointInDegrees @@ -25,11 +25,10 @@ program get integer :: numberOfPointsAlongAParallel integer :: numberOfPointsAlongAMeridian real, dimension(:), allocatable :: values - integer :: numberOfValues + integer(8) :: numberOfValues real :: average, min_val, max_val - call codes_open_file(ifile, & - '../../data/tigge_pf_ecmwf.grib2', 'r') + call codes_open_file(ifile, '../../data/tigge_pf_ecmwf.grib2', 'r') ! count the messages in the file call codes_count_in_file(ifile, n) @@ -106,4 +105,4 @@ program get deallocate (igrib) -end program get +end program diff --git a/examples/F90/grib_get_keys.f90 b/examples/F90/grib_get_keys.f90 index 5a20b8179..7eae46d03 100644 --- a/examples/F90/grib_get_keys.f90 +++ b/examples/F90/grib_get_keys.f90 @@ -21,8 +21,8 @@ program grib_get_keys real :: longitudeOfFirstPointInDegrees real :: latitudeOfLastPointInDegrees real :: longitudeOfLastPointInDegrees - integer :: numberOfPointsAlongAParallel - integer :: numberOfPointsAlongAMeridian + integer(4) :: numberOfPointsAlongAParallel + integer(8) :: numberOfPointsAlongAMeridian real, dimension(:), allocatable :: values integer :: numberOfValues real :: average, min_val, max_val diff --git a/examples/F90/grib_print_data_static.f90 b/examples/F90/grib_print_data_static.f90 index d7e9d4b37..17a96d325 100644 --- a/examples/F90/grib_print_data_static.f90 +++ b/examples/F90/grib_print_data_static.f90 @@ -12,7 +12,7 @@ ! rather than the new ALLOCATABLE array ! ! -program print_data +program print_data_static use grib_api implicit none integer :: ifile @@ -55,4 +55,4 @@ program print_data call grib_release(igrib) call grib_close_file(ifile) -end program print_data +end program diff --git a/examples/F90/grib_set_missing.f90 b/examples/F90/grib_set_missing.f90 index 7c0887571..44160fbee 100644 --- a/examples/F90/grib_set_missing.f90 +++ b/examples/F90/grib_set_missing.f90 @@ -11,7 +11,7 @@ ! ! ! -program set +program set_missing use eccodes implicit none integer :: infile, outfile @@ -48,4 +48,4 @@ program set call codes_close_file(infile) call codes_close_file(outfile) -end program set +end program diff --git a/examples/F90/set_missing_fortran.f90 b/examples/F90/set_missing_fortran.f90 index d0ae2403b..093092aa4 100644 --- a/examples/F90/set_missing_fortran.f90 +++ b/examples/F90/set_missing_fortran.f90 @@ -9,7 +9,7 @@ ! Description: how to set key values. ! ! -program set +program set_missing_fortran use eccodes implicit none integer :: infile, outfile @@ -40,4 +40,4 @@ program set call codes_close_file(outfile) -end program set +end program From 82f695986a2a0714e7a37a84b8eb7f4df85b1743 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 18:21:13 +0000 Subject: [PATCH 316/469] Testing: METAR compare doubles --- tests/metar_compare.sh | 22 +++++++++++++++++++++- tools/metar_compare.cc | 4 ---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index 2d43f289c..e6e656c4a 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -78,7 +78,7 @@ ${tools_dir}/metar_compare -c latitude -A 17 $temp1 $temp2 rm -f $temp1 $temp2 #---------------------------------------------------- -# Test: comparing with and without the -b switch +# Comparing with and without the -b switch #---------------------------------------------------- if [ $ECCODES_ON_WINDOWS -eq 0 ]; then # Add wrong blocklist. Should still fail @@ -91,5 +91,25 @@ if [ $ECCODES_ON_WINDOWS -eq 0 ]; then ${tools_dir}/metar_compare -b minute,theMessage $metar_file $fMetarTmp fi +#---------------------------------------------------- +# Compare doubles +#---------------------------------------------------- +temp1=temp.$label.1.metar +temp2=temp.$label.2.metar +echo 'METAR LQMO 022350Z 09003KT 6000 FEW010 SCT035 BKN060 09/09 Q1003=' > $temp1 +${tools_dir}/metar_copy -w count=1 $metar_file $temp2 +set +e +${tools_dir}/metar_compare -b theMessage -f -v $temp1 $temp2 > $fLog +status=$? +set -e +[ $status -ne 0 ] +grep -q "temperature .*1 different" $fLog +grep -q "dewPointTemperature .*1 different" $fLog + +# dewPointTemperature diffs: absolute diff. = 1, relative diff. = 0.111111 +${tools_dir}/metar_compare -b temperature,theMessage -R dewPointTemperature=0.12 $temp1 $temp2 + +rm -f $temp1 $temp2 + # Clean up rm -f $fLog $fMetarTmp diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index 48db23534..7b67c7004 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -755,15 +755,11 @@ static int compare_values(const grib_runtime_options* options, grib_handle* h1, break; case GRIB_TYPE_BYTES: - if (verbose) - printf(" as bytes\n"); if (options->mode == MODE_METAR) return 0; break; case GRIB_TYPE_LABEL: - if (verbose) - printf(" as label\n"); break; default: From d493d658136f6928d66629413eea8ec84c2cc5e5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 18:27:19 +0000 Subject: [PATCH 317/469] Tools: Dead code removal --- tools/gts_compare.cc | 10 ++++------ tools/metar_compare.cc | 10 +++++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index b7692f65a..5a748ff98 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -450,11 +450,11 @@ static int compare_values(const grib_runtime_options* options, grib_handle* h1, return err; } - if (options->mode != MODE_GTS) { + //if (options->mode != MODE_GTS) { /* TODO: Ignore missing values for keys in GTS. Not yet implemented */ - isMissing1 = ((grib_is_missing(h1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; - isMissing2 = ((grib_is_missing(h2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; - } + //isMissing1 = ((grib_is_missing(h1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; + //isMissing2 = ((grib_is_missing(h2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; + //} if ((isMissing1 == 1) && (isMissing2 == 1)) { if (verbose) @@ -583,7 +583,6 @@ static int compare_values(const grib_runtime_options* options, grib_handle* h1, break; case GRIB_TYPE_BYTES: - if (verbose) printf(" as bytes\n"); if (options->mode == MODE_GTS) { // We do not want to compare the message itself return 0; @@ -591,7 +590,6 @@ static int compare_values(const grib_runtime_options* options, grib_handle* h1, break; case GRIB_TYPE_LABEL: - if (verbose) printf(" as label\n"); break; default: diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index 7b67c7004..d78b8369c 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -523,11 +523,11 @@ static int compare_values(const grib_runtime_options* options, grib_handle* h1, return err; } - if (options->mode != MODE_METAR) { - /* TODO: Ignore missing values for keys in METAR. Not yet implemented */ - isMissing1 = ((grib_is_missing(h1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; - isMissing2 = ((grib_is_missing(h2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; - } + // if (options->mode != MODE_METAR) { + // // TODO: Ignore missing values for keys in METAR. Not yet implemented + // isMissing1 = ((grib_is_missing(h1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; + // isMissing2 = ((grib_is_missing(h2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; + // } if ((isMissing1 == 1) && (isMissing2 == 1)) { if (verbose) From 68ad7518079422704ce96d84639409a740ecea98 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 18:59:17 +0000 Subject: [PATCH 318/469] Update author list --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 13606179a..f21f35fcf 100755 --- a/AUTHORS +++ b/AUTHORS @@ -1,5 +1,6 @@ Enrico Fucile Shahram Najm +Eugen Betke Sandor Kertesz Sebastien Villaume Florian Rathgeber From a0e6daca02f9c5baded6af0822a182dc0acb2c16 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 19:00:05 +0000 Subject: [PATCH 319/469] Testing: Error conditions --- tests/gts_compare.sh | 9 +++++++++ tests/metar_compare.sh | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/tests/gts_compare.sh b/tests/gts_compare.sh index 0860530c3..196fa2756 100755 --- a/tests/gts_compare.sh +++ b/tests/gts_compare.sh @@ -99,5 +99,14 @@ cp $gts_file $tempDir ${tools_dir}/gts_compare $gts_file $tempDir rm -r $tempDir +# Non-existence +set +e +${tools_dir}/gts_compare non-exist1 non-exist2 > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "No such file or directory" $fLog + + # Clean up rm -f $fLog $fGtsTmp $fRules diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index e6e656c4a..b63656201 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -111,5 +111,23 @@ ${tools_dir}/metar_compare -b temperature,theMessage -R dewPointTemperature=0.12 rm -f $temp1 $temp2 +#---------------------------------------------------- +# Test with file of the same name in a dir +#---------------------------------------------------- +tempDir=temp.$label.dir +rm -fr $tempDir +mkdir $tempDir +cp $metar_file $tempDir +${tools_dir}/metar_compare $metar_file $tempDir +rm -r $tempDir + +# Non-existence +set +e +${tools_dir}/metar_compare non-exist1 non-exist2 > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "No such file or directory" $fLog + # Clean up rm -f $fLog $fMetarTmp From e712c6940abf7db13490b6cb40e4d54883410e4f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 13 Jan 2024 20:58:44 +0000 Subject: [PATCH 320/469] Testing: Tools --- tests/bufr_compare.sh | 3 ++- tests/grib_dump.sh | 6 +++++- tests/gts_dump.sh | 9 ++++++++- tools/bufr_compare.cc | 15 +++++---------- tools/grib_tools.cc | 3 ++- tools/metar_copy.cc | 17 +++++++++-------- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index 819900b15..882fa3293 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -177,10 +177,11 @@ ${tools_dir}/bufr_set -s section2Present=1 $f $fBufrTmp ${tools_dir}/bufr_compare $f $fBufrTmp # Compare with -2 option set +e -${tools_dir}/bufr_compare -2 $f $fBufrTmp > $fLog 2>&1 +${tools_dir}/bufr_compare -2 -v $f $fBufrTmp > $fLog 2>&1 status=$? set -e [ $status -eq 1 ] +grep Swapping $fLog #---------------------------------------------------- # ECC-656: using relative comparison (-R) with 'all' diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index 33655a60a..ef84af3f1 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -106,8 +106,12 @@ grep -q "dataDate = 19090206" $temp # Skip handle ${tools_dir}/grib_dump -w count=4 $file > $temp 2>&1 -ECCODES_DEBUG=1 ${tools_dir}/grib_dump $data_dir/sample.grib2 +ECCODES_DEBUG=1 ${tools_dir}/grib_dump $data_dir/sample.grib2 > $temp 2>&1 +# Error conditions +#----------------------------------------------------------- +${tools_dir}/grib_dump -p nonexist $file > $temp 2>&1 +grep -q "Key/value not found" $temp # Unreadable message #----------------------------------------------------------- diff --git a/tests/gts_dump.sh b/tests/gts_dump.sh index 21733d0a6..8303e03b6 100755 --- a/tests/gts_dump.sh +++ b/tests/gts_dump.sh @@ -22,7 +22,14 @@ gts_file=EGRR20150317121020_00493212.DAT ${tools_dir}/gts_dump -w count=1 $gts_file ${tools_dir}/gts_dump -w count=2 $gts_file ${tools_dir}/gts_dump -Dat $gts_file -${tools_dir}/gts_dump -OH $gts_file +${tools_dir}/gts_dump -OH $gts_file +${tools_dir}/gts_dump -d $gts_file + +set +e +${tools_dir}/gts_dump -OD $gts_file +status=$? +set -e +[ $status -ne 0 ] # Clean up rm -f $fLog $fTmp diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index d2d1f0e7a..9a59a9149 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -778,19 +778,17 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g if (options->mode != MODE_BUFR) { /* TODO: Ignore missing values for keys in BUFR. Not yet implemented */ - isMissing1 = ((grib_is_missing(handle1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; - isMissing2 = ((grib_is_missing(handle2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; + //isMissing1 = ((grib_is_missing(handle1, name, &err1) == 1) && (err1 == 0)) ? 1 : 0; + //isMissing2 = ((grib_is_missing(handle2, name, &err2) == 1) && (err2 == 0)) ? 1 : 0; } if ((isMissing1 == 1) && (isMissing2 == 1)) { - if (verbose) - printf(" is set to missing in both fields\n"); + // if (verbose) printf(" is set to missing in both fields\n"); return GRIB_SUCCESS; } if (isMissing1 == 1) { - if (verbose) - printf(" is set to missing in %s field\n", first_str); + // if (verbose) printf(" is set to missing in %s field\n", first_str); printInfo(handle1); printf("%s is set to missing in %s field is not missing in %s field\n", name, first_str, second_str); err1 = GRIB_VALUE_MISMATCH; @@ -799,8 +797,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g } if (isMissing2 == 1) { - if (verbose) - printf(" is set to missing in %s field\n", first_str); + // if (verbose) printf(" is set to missing in %s field\n", first_str); printInfo(handle1); printf("%s is set to missing in %s field is not missing in %s field\n", name, second_str, first_str); err1 = GRIB_VALUE_MISMATCH; @@ -1089,8 +1086,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g break; case GRIB_TYPE_BYTES: - if (verbose) - printf(" as bytes\n"); if (options->mode == MODE_BUFR) return 0; break; diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index fef2950e0..be3891497 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -450,7 +450,8 @@ static int navigate(grib_field_tree* fields, grib_runtime_options* options) message_type = CODES_BUFR; break; default: - Assert(0); + fprintf(stderr, "%s %s: Invalid mode", tool_name, __func__); + exit(1); } if (fields->field) { diff --git a/tools/metar_copy.cc b/tools/metar_copy.cc index 9e4e14ef7..ff46dd0e1 100644 --- a/tools/metar_copy.cc +++ b/tools/metar_copy.cc @@ -72,14 +72,15 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) { - int err = 0; - if (!options->skip) { - if (options->set_values_count != 0) - err = grib_set_values(h, options->set_values, options->set_values_count); - - if (err != GRIB_SUCCESS && options->fail) - exit(err); - } + Assert(options->set_values_count==0); // Cannot set keys in this tool + + // int err = 0; + // if (!options->skip) { + // if (options->set_values_count != 0) + // err = grib_set_values(h, options->set_values, options->set_values_count); + // if (err != GRIB_SUCCESS && options->fail) + // exit(err); + // } grib_tools_write_message(options, h); return 0; From 66127fb65975a585269a3731a22dd825c32dbad5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 00:13:59 +0000 Subject: [PATCH 321/469] Testing: Unit tests and examples --- examples/C/CMakeLists.txt | 1 + examples/C/grib_mars_param.sh | 20 ++++++++++++++++++++ tests/grib_data_quality_checks.sh | 2 ++ tests/unit_tests.cc | 26 ++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100755 examples/C/grib_mars_param.sh diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 539077c2b..30b8a5bf9 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -81,6 +81,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_bitmap grib_list grib_get_data + grib_mars_param grib_nearest grib_nearest_multiple grib_multi diff --git a/examples/C/grib_mars_param.sh b/examples/C/grib_mars_param.sh new file mode 100755 index 000000000..483cf184b --- /dev/null +++ b/examples/C/grib_mars_param.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_mars_param_c" +fTmp=${label}.tmp +fOut=${label}.tmp.out +fRef=${label}.tmp.ref + +${examples_dir}/c_mars_param + +rm -f ${fTmp} ${fRef} ${fOut} diff --git a/tests/grib_data_quality_checks.sh b/tests/grib_data_quality_checks.sh index 81657d24b..2b8ed80f2 100755 --- a/tests/grib_data_quality_checks.sh +++ b/tests/grib_data_quality_checks.sh @@ -42,12 +42,14 @@ ${tools_dir}/grib_set -s scaleValuesBy=100 $input2 $tempOut echo "Data quality checks enabled. Repacking should fail..." # ----------------------------------------------------------- export ECCODES_GRIB_DATA_QUALITY_CHECKS=1 +export ECCODES_DEBUG=-1 set +e ${tools_dir}/grib_copy -r $tempOut /dev/null 2>$tempErr status=$? set -e [ $status -ne 0 ] grep -q 'more than the allowable limit' $tempErr +unset ECCODES_DEBUG echo "Data quality checks enabled but only as a warning. Repacking should pass..." # -------------------------------------------------------------------------------- diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 695de023c..5eb126128 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -655,10 +655,36 @@ void test_codes_get_type_name() Assert( STR_EQUAL("section", grib_get_type_name(GRIB_TYPE_SECTION)) ); } +void test_grib2_select_PDTN() +{ + //int pdtn = 0; + printf("Running %s ...\n", __func__); + + // eps instant chemical chemical_srcsink chemical_distfn aerosol aerosol_optical + Assert( 40 == grib2_select_PDTN(0,1,1,0,0,0,0) ); + Assert( 41 == grib2_select_PDTN(1,1,1,0,0,0,0) ); + Assert( 42 == grib2_select_PDTN(0,0,1,0,0,0,0) ); + Assert( 43 == grib2_select_PDTN(1,0,1,0,0,0,0) ); + + Assert( 76 == grib2_select_PDTN(0,1,0,1,0,0,0) ); + Assert( 77 == grib2_select_PDTN(1,1,0,1,0,0,0) ); + Assert( 78 == grib2_select_PDTN(0,0,0,1,0,0,0) ); + Assert( 79 == grib2_select_PDTN(1,0,0,1,0,0,0) ); + + Assert( 0 == grib2_select_PDTN(0,1,0,0,0,0,0) ); + Assert( 1 == grib2_select_PDTN(1,1,0,0,0,0,0) ); + Assert( 8 == grib2_select_PDTN(0,0,0,0,0,0,0) ); + Assert( 11 == grib2_select_PDTN(1,0,0,0,0,0,0) ); + + //pdtn = grib2_select_PDTN(1,0,0,0,0,0,0); printf(" %d\n", pdtn); +} + int main(int argc, char** argv) { printf("Doing unit tests. ecCodes version = %ld\n", grib_get_api_version()); + test_grib2_select_PDTN(); + test_iarray(); test_darray(); test_sarray(); From 05ae3ce7a1c79f1dc6eb4ca3f8b6daa6d4531007 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 14:39:09 +0000 Subject: [PATCH 322/469] Testing: BUFR header double keys --- tests/bufr_extract_headers.sh | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/tests/bufr_extract_headers.sh b/tests/bufr_extract_headers.sh index 1b7961cb4..6b6f0a907 100755 --- a/tests/bufr_extract_headers.sh +++ b/tests/bufr_extract_headers.sh @@ -113,7 +113,6 @@ amsb_55.bufr amse_55.bufr amsu_55.bufr amv2_87.bufr -amv3_87.bufr asbh_139.bufr asbl_139.bufr asca_139.bufr @@ -130,26 +129,18 @@ avhm_87.bufr avhn_87.bufr avhr_58.bufr b003_56.bufr -b005_87.bufr b005_89.bufr -b007_31.bufr cmwi_87.bufr cmwn_87.bufr cori_156.bufr crit_202.bufr csrh_189.bufr emsg_189.bufr -emsg_87.bufr euwv_87.bufr fy3a_154.bufr -fy3b_154.bufr g2nd_208.bufr g2to_206.bufr go15_87.bufr -goee_87.bufr -goes_87.bufr -goga_89.bufr -gosat.bufr grst_26.bufr gsd1_208.bufr gsd2_208.bufr @@ -169,20 +160,12 @@ j2nb_216.bufr jaso_214.bufr kond_209.bufr maer_207.bufr -mhen_55.bufr -mhsa_55.bufr -mhsb_55.bufr -mhse_55.bufr mloz_206.bufr modi_87.bufr modw_87.bufr monw_87.bufr nomi_206.bufr nos1_208.bufr -nos3_208.bufr -nos4_208.bufr -nos6_208.bufr -nos8_208.bufr pgps_110.bufr rado_250.bufr s4kn_165.bufr @@ -207,8 +190,21 @@ for bf in ${bufr_files}; do diff $temp1 $temp2 done +# Floating-point keys +input=${data_dir}/bufr/aaen_55.bufr +$EXEC ${test_dir}/bufr_extract_headers 'localLongitude1,localLatitude1,localLongitude2,localLatitude2' $input +$EXEC ${test_dir}/bufr_extract_headers 'localLatitude,localLongitude' $input + +# Some local keys +input=${data_dir}/bufr/aaen_55.bufr +$EXEC ${test_dir}/bufr_extract_headers 'localMonth,localDay,localHour,localMinute,localSecond' $input +$EXEC ${test_dir}/bufr_extract_headers 'rdbtimeDay,rdbtimeHour,rdbtimeMinute,rdbtimeSecond' $input +$EXEC ${test_dir}/bufr_extract_headers 'rectimeDay,rectimeHour,rectimeMinute,rectimeSecond' $input + + # Test restricted -${tools_dir}/bufr_set -s restricted=1 ${data_dir}/bufr/aaen_55.bufr $temp1 +input=${data_dir}/bufr/aaen_55.bufr +${tools_dir}/bufr_set -s restricted=1 $input $temp1 r=`$EXEC ${test_dir}/bufr_extract_headers restricted $temp1` [ "$r" = "1" ] From 1f6f592e57887a94a75dd5457bee40bfff0ec467 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 14:39:23 +0000 Subject: [PATCH 323/469] Testing: GRIB2 PDTN --- tests/unit_tests.cc | 61 +++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 5eb126128..ca73ca27f 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -657,34 +657,51 @@ void test_codes_get_type_name() void test_grib2_select_PDTN() { - //int pdtn = 0; printf("Running %s ...\n", __func__); - - // eps instant chemical chemical_srcsink chemical_distfn aerosol aerosol_optical - Assert( 40 == grib2_select_PDTN(0,1,1,0,0,0,0) ); - Assert( 41 == grib2_select_PDTN(1,1,1,0,0,0,0) ); - Assert( 42 == grib2_select_PDTN(0,0,1,0,0,0,0) ); - Assert( 43 == grib2_select_PDTN(1,0,1,0,0,0,0) ); - - Assert( 76 == grib2_select_PDTN(0,1,0,1,0,0,0) ); - Assert( 77 == grib2_select_PDTN(1,1,0,1,0,0,0) ); - Assert( 78 == grib2_select_PDTN(0,0,0,1,0,0,0) ); - Assert( 79 == grib2_select_PDTN(1,0,0,1,0,0,0) ); - - Assert( 0 == grib2_select_PDTN(0,1,0,0,0,0,0) ); - Assert( 1 == grib2_select_PDTN(1,1,0,0,0,0,0) ); - Assert( 8 == grib2_select_PDTN(0,0,0,0,0,0,0) ); - Assert( 11 == grib2_select_PDTN(1,0,0,0,0,0,0) ); - - //pdtn = grib2_select_PDTN(1,0,0,0,0,0,0); printf(" %d\n", pdtn); + int eps = 1; + int instant = 1; + int chemical = 1; + int chemical_srcsink = 1; + int chemical_distfn = 1; + int aerosol = 1; + //int aerosol_optical = 1; + + // arguments = eps instant chemical chemical_srcsink chemical_distfn aerosol aerosol_optical + + // Chemicals + Assert( 40 == grib2_select_PDTN(!eps, instant, chemical, 0, 0, 0, 0) ); + Assert( 41 == grib2_select_PDTN(eps, instant, chemical, 0, 0, 0, 0) ); + Assert( 42 == grib2_select_PDTN(!eps, !instant, chemical, 0, 0, 0, 0) ); + Assert( 43 == grib2_select_PDTN(eps, !instant, chemical, 0, 0, 0, 0) ); + + // Chemical source/sink + Assert( 76 == grib2_select_PDTN(!eps, instant, !chemical, chemical_srcsink,0,0,0) ); + Assert( 77 == grib2_select_PDTN(eps, instant, !chemical, chemical_srcsink,0,0,0) ); + Assert( 78 == grib2_select_PDTN(!eps, !instant, !chemical, chemical_srcsink,0,0,0) ); + Assert( 79 == grib2_select_PDTN(eps, !instant, !chemical, chemical_srcsink,0,0,0) ); + + // Aerosols + Assert( 48 == grib2_select_PDTN(!eps, instant, !chemical, !chemical_srcsink, !chemical_distfn, aerosol, 0) ); + Assert( 46 == grib2_select_PDTN(!eps, !instant, !chemical, !chemical_srcsink, !chemical_distfn, aerosol, 0) ); + Assert( 45 == grib2_select_PDTN(eps, instant, !chemical, !chemical_srcsink, !chemical_distfn, aerosol, 0) ); + Assert( 85 == grib2_select_PDTN(eps, !instant, !chemical, !chemical_srcsink, !chemical_distfn, aerosol, 0) ); + + // Plain vanilla + Assert( 0 == grib2_select_PDTN(!eps, instant, !chemical, !chemical_srcsink, !chemical_distfn, !aerosol,0) ); + Assert( 1 == grib2_select_PDTN(1,1,0,0,0, !aerosol,0) ); + Assert( 8 == grib2_select_PDTN(0,0,0,0,0, !aerosol,0) ); + Assert( 11 == grib2_select_PDTN(1,0,0,0,0, !aerosol,0) ); + + //printf("%d\n", grib2_select_PDTN(!eps, instant, !chemical, !chemical_srcsink, !chemical_distfn, aerosol, 0) ); + Assert( 1 == grib2_is_PDTN_EPS(1) ); + Assert( 1 == grib2_is_PDTN_EPS(11) ); + Assert( 0 == grib2_is_PDTN_EPS(0) ); } int main(int argc, char** argv) { printf("Doing unit tests. ecCodes version = %ld\n", grib_get_api_version()); - test_grib2_select_PDTN(); - test_iarray(); test_darray(); test_sarray(); @@ -735,5 +752,7 @@ int main(int argc, char** argv) test_string_replace_char(); test_string_remove_char(); + test_grib2_select_PDTN(); + return 0; } From bc8362f9850f31cadf79c34f82409b1783ae1fd1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 14:39:46 +0000 Subject: [PATCH 324/469] Testing: grib_util_set_spec packing types --- tests/grib_util_set_spec.cc | 2 ++ tests/grib_util_set_spec.sh | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/tests/grib_util_set_spec.cc b/tests/grib_util_set_spec.cc index cf254aff4..31af1bcb5 100644 --- a/tests/grib_util_set_spec.cc +++ b/tests/grib_util_set_spec.cc @@ -27,6 +27,8 @@ static int get_packing_type_code(const char* packingType) return GRIB_UTIL_PACKING_TYPE_GRID_SECOND_ORDER; else if (STR_EQUAL(packingType, "grid_ieee")) return GRIB_UTIL_PACKING_TYPE_IEEE; + else if (STR_EQUAL(packingType, "grid_complex")) + return GRIB_UTIL_PACKING_TYPE_GRID_COMPLEX; Assert(!"Invalid packingType"); return result; diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh index 3daf5d0db..4f0b92cd5 100755 --- a/tests/grib_util_set_spec.sh +++ b/tests/grib_util_set_spec.sh @@ -74,6 +74,20 @@ if [ $HAVE_AEC -eq 1 ]; then grib_check_key_equals $outfile packingType grid_simple fi +infile=${data_dir}/sample.grib2 +$EXEC $grib_util_set_spec -p grid_ieee $infile $outfile +grib_check_key_equals $outfile 'packingType,precision' 'grid_ieee 1' + +infile=${data_dir}/sample.grib2 +$EXEC $grib_util_set_spec -p grid_second_order $infile $outfile +grib_check_key_equals $outfile 'packingType' 'grid_second_order' + +infile=${data_dir}/sample.grib2 +$EXEC $grib_util_set_spec -p grid_complex $infile $outfile +# $tools_dir/grib_ls $outfile +grib_check_key_equals $outfile 'packingType' 'grid_complex' + + # -------------------------------------------------- # Reduced Gaussian Grid N=32 second order packing # -------------------------------------------------- From 75bd5d16cda1c764aa09d56484a3c52865872d35 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 21:16:30 +0000 Subject: [PATCH 325/469] Fix Windows test --- tests/grib_util_set_spec.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh index 4f0b92cd5..5328a9576 100755 --- a/tests/grib_util_set_spec.sh +++ b/tests/grib_util_set_spec.sh @@ -74,9 +74,11 @@ if [ $HAVE_AEC -eq 1 ]; then grib_check_key_equals $outfile packingType grid_simple fi -infile=${data_dir}/sample.grib2 -$EXEC $grib_util_set_spec -p grid_ieee $infile $outfile -grib_check_key_equals $outfile 'packingType,precision' 'grid_ieee 1' +if [ $ECCODES_ON_WINDOWS -eq 0 ]; then + infile=${data_dir}/sample.grib2 + $EXEC $grib_util_set_spec -p grid_ieee $infile $outfile + grib_check_key_equals $outfile 'packingType,precision' 'grid_ieee 1' +fi infile=${data_dir}/sample.grib2 $EXEC $grib_util_set_spec -p grid_second_order $infile $outfile From cc83c34c1aa5713557020c891f7b64b8265f932b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 14 Jan 2024 21:54:37 +0000 Subject: [PATCH 326/469] Testing: grib_util_set_spec IEEE --- tests/grib_util_set_spec.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh index 5328a9576..e18047bae 100755 --- a/tests/grib_util_set_spec.sh +++ b/tests/grib_util_set_spec.sh @@ -75,9 +75,9 @@ if [ $HAVE_AEC -eq 1 ]; then fi if [ $ECCODES_ON_WINDOWS -eq 0 ]; then - infile=${data_dir}/sample.grib2 + infile=$ECCODES_SAMPLES_PATH/GRIB1.tmpl $EXEC $grib_util_set_spec -p grid_ieee $infile $outfile - grib_check_key_equals $outfile 'packingType,precision' 'grid_ieee 1' + grib_check_key_equals $outfile 'packingType' 'grid_ieee' fi infile=${data_dir}/sample.grib2 From d54b83ae14142a88d05146c05a49f2590376ab03 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 15 Jan 2024 10:57:50 +0000 Subject: [PATCH 327/469] Fix time interval setting for instantenous fields --- src/grib_accessor_class_g2step_range.cc | 46 +++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 2089f493b..6a67342ac 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -13,6 +13,7 @@ #include "step_utilities.h" #include #include +#include /* This is used by make_class.pl @@ -195,11 +196,45 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } +//static int pack_string(grib_accessor* a, const char* val, size_t* len) +//{ +// grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; +// grib_handle* h = grib_handle_of_accessor(a); + +// long start = 0, theEnd = -1; +// int ret = 0; +// char *p = NULL, *q = NULL; + +// start = strtol(val, &p, 10); +// theEnd = start; + +// if (*p != 0) +// theEnd = strtol(++p, &q, 10); +// ret = grib_set_long_internal(h, self->startStep, start); +// if (ret) +// return ret; + +// if (self->endStep != NULL) { +// ret = grib_set_long_internal(h, self->endStep, theEnd); +// if (ret) +// return ret; +// } + +// return 0; +//} + + + +// Step range format: [-] +// and can be in different units +// stepRange="0" in instantaneous field is equivalent to set step=0 +// stepRange="0" in accumulated field is equivalent to ??? static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; + std::cerr << "VAL: " << val << std::endl; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) @@ -232,11 +267,16 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) if ((ret = set_step(h, "forecastTime" , "indicatorOfUnitOfTimeRange", step_0)) != GRIB_SUCCESS) return ret; - if ((self->end_step != NULL) && (steps.size() > 1)) { + if (self->end_step != NULL) { if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) return ret; - if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) - return ret; + if (steps.size() > 1) { + if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) + return ret; + } else { + if ((ret = grib_set_long_internal(h, self->end_step, step_0.value()))) + return ret; + } } } catch (std::exception& e) { From 7d27cc45cc94339141ab52587b8ca8724c14b4dc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 11:01:36 +0000 Subject: [PATCH 328/469] Compiler warnings: unreferenced local variable e --- src/step_unit.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/step_unit.h b/src/step_unit.h index 3d8897bbe..bd078f403 100644 --- a/src/step_unit.h +++ b/src/step_unit.h @@ -20,21 +20,21 @@ namespace eccodes { -template using Minutes = std::chrono::duration>; -template using Hours = std::chrono::duration>; -template using Days = std::chrono::duration>; -template using Months = std::chrono::duration>; -template using Years = std::chrono::duration>; -template using Years10 = std::chrono::duration>; -template using Years30 = std::chrono::duration>; +template using Minutes = std::chrono::duration>; +template using Hours = std::chrono::duration>; +template using Days = std::chrono::duration>; +template using Months = std::chrono::duration>; +template using Years = std::chrono::duration>; +template using Years10 = std::chrono::duration>; +template using Years30 = std::chrono::duration>; template using Centuries = std::chrono::duration>; -template using Hours3 = std::chrono::duration>; -template using Hours6 = std::chrono::duration>; -template using Hours12 = std::chrono::duration>; -template using Seconds = std::chrono::duration>; +template using Hours3 = std::chrono::duration>; +template using Hours6 = std::chrono::duration>; +template using Hours12 = std::chrono::duration>; +template using Seconds = std::chrono::duration>; template using Minutes15 = std::chrono::duration>; template using Minutes30 = std::chrono::duration>; -template using Missing = std::chrono::duration>; +template using Missing = std::chrono::duration>; @@ -70,7 +70,7 @@ class Unit { try { internal_value_ = map_.name_to_unit(unit_value); } catch (std::exception& e) { - throw std::runtime_error(std::string{"Unit not found"}); + throw std::runtime_error(std::string{"Unit not found "} + e.what()); } } @@ -78,7 +78,7 @@ class Unit { try { internal_value_ = map_.long_to_unit(unit_value); } catch (std::exception& e) { - throw std::runtime_error(std::string{"Unit not found"}); + throw std::runtime_error(std::string{"Unit not found "} + e.what()); } } @@ -93,13 +93,13 @@ class Unit { return *this; } - template T value() const; static std::vector grib_selected_units; static std::vector complete_unit_order_; static std::vector list_supported_units() { std::vector result; + result.reserve(32); for (const auto& val : complete_unit_order_) { if (val == Value::MISSING) continue; From 91b5c19105cd21caf756897e6fbb5d967d6de90e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 11:36:21 +0000 Subject: [PATCH 329/469] Remove cerr --- src/grib_accessor_class_g2step_range.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 71fa118e4..3ed1366cf 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -234,7 +234,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - std::cerr << "VAL: " << val << std::endl; + //std::cerr << "VAL: " << val << std::endl; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) From 3ff619c7f70f3632cf9dbd1f76e90b0d4f85c3f1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 12:12:01 +0000 Subject: [PATCH 330/469] ECC-1746: GRIB2 template 4.34: Incorrect values for 'time' namespace --- definitions/grib2/template.4.34.def | 1 - tests/grib2_templates.sh | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/template.4.34.def b/definitions/grib2/template.4.34.def index 308074981..c5856ebb2 100644 --- a/definitions/grib2/template.4.34.def +++ b/definitions/grib2/template.4.34.def @@ -5,7 +5,6 @@ include "grib2/template.4.parameter.def" include "grib2/template.4.generating_process.def" include "grib2/template.4.forecast_time.def" -include "grib2/template.4.point_in_time.def" include "grib2/template.4.satellite.def" include "grib2/template.4.eps.def" include "grib2/template.4.statistical.def" diff --git a/tests/grib2_templates.sh b/tests/grib2_templates.sh index 4b08f2619..437eb36b1 100755 --- a/tests/grib2_templates.sh +++ b/tests/grib2_templates.sh @@ -32,6 +32,12 @@ awk '$1 !~ /#/ && $1 < 65000 {print $1}' $latest_codetable_file | while read pdt fi done +# ECC-1746 +# ------------- +$tools_dir/grib_set -s tablesVersion=31,productDefinitionTemplateNumber=34 $sample2 $temp +$tools_dir/grib_ls -j -n time $temp > $tempText +grep -q "stepRange.: 0," $tempText +grep -q "validityDate.: 20070323," $tempText # Template 4.86 # ------------- From fb8cd565ac7f51959c75e618c4351cb31651794e Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 15 Jan 2024 12:37:21 +0000 Subject: [PATCH 331/469] Set correct unit --- src/grib_accessor_class_g2step_range.cc | 39 ++++--------------------- 1 file changed, 6 insertions(+), 33 deletions(-) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 3ed1366cf..becc5da73 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -196,45 +196,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } -//static int pack_string(grib_accessor* a, const char* val, size_t* len) -//{ -// grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; -// grib_handle* h = grib_handle_of_accessor(a); - -// long start = 0, theEnd = -1; -// int ret = 0; -// char *p = NULL, *q = NULL; - -// start = strtol(val, &p, 10); -// theEnd = start; - -// if (*p != 0) -// theEnd = strtol(++p, &q, 10); -// ret = grib_set_long_internal(h, self->startStep, start); -// if (ret) -// return ret; - -// if (self->endStep != NULL) { -// ret = grib_set_long_internal(h, self->endStep, theEnd); -// if (ret) -// return ret; -// } - -// return 0; -//} - - // Step range format: [-] // and can be in different units -// stepRange="0" in instantaneous field is equivalent to set step=0 -// stepRange="0" in accumulated field is equivalent to ??? +// stepRange="X" in instantaneous field is equivalent to set step=X +// stepRange="X" in accumulated field is equivalent to startStep=X, endStep=startStep static int pack_string(grib_accessor* a, const char* val, size_t* len) { grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; grib_handle* h = grib_handle_of_accessor(a); int ret = 0; - //std::cerr << "VAL: " << val << std::endl; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) @@ -268,12 +239,14 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) return ret; if (self->end_step != NULL) { - if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) - return ret; if (steps.size() > 1) { + if ((ret = grib_set_long_internal(h, "endStepUnit", step_1.unit().value()))) + return ret; if ((ret = grib_set_long_internal(h, self->end_step, step_1.value()))) return ret; } else { + if ((ret = grib_set_long_internal(h, "endStepUnit", step_0.unit().value()))) + return ret; if ((ret = grib_set_long_internal(h, self->end_step, step_0.value()))) return ret; } From ccdd6f3d34fb8f74ae8fdf15f9173a864afc94fa Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 15 Jan 2024 14:58:27 +0000 Subject: [PATCH 332/469] Include stepUnits definition file --- definitions/grib2/stepUnits.def | 7 +++++++ definitions/grib2/template.4.20.def | 4 +--- definitions/grib2/template.4.forecast_time.def | 4 +--- definitions/grib2/template.4.forecast_time_44.def | 4 +--- definitions/grib2/template.4.localtime.def | 5 ++--- 5 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 definitions/grib2/stepUnits.def diff --git a/definitions/grib2/stepUnits.def b/definitions/grib2/stepUnits.def new file mode 100644 index 000000000..68efa462a --- /dev/null +++ b/definitions/grib2/stepUnits.def @@ -0,0 +1,7 @@ +# alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 +# template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; +# codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; + +meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; +transient startStepUnit = 255 : hidden; # 255 means MISSING. See code table 4.4 +transient endStepUnit = 255 : hidden; diff --git a/definitions/grib2/template.4.20.def b/definitions/grib2/template.4.20.def index 83db46bc5..b739bf6bb 100644 --- a/definitions/grib2/template.4.20.def +++ b/definitions/grib2/template.4.20.def @@ -15,9 +15,7 @@ unsigned[1] numberOfRadarSitesUsed : dump; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 -template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +include "grib2/stepUnits.def" # Site latitude (in microdegrees) unsigned[4] siteLatitude : dump; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index 8dc62f16b..f228d0a9e 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -12,9 +12,7 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; -transient startStepUnit = 255 : hidden; # 255 means MISSING. See code table 4.4 -transient endStepUnit = 255 : hidden; +include "grib2/stepUnits.def"; # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; diff --git a/definitions/grib2/template.4.forecast_time_44.def b/definitions/grib2/template.4.forecast_time_44.def index 0ad48c53b..aa35f543e 100644 --- a/definitions/grib2/template.4.forecast_time_44.def +++ b/definitions/grib2/template.4.forecast_time_44.def @@ -14,9 +14,7 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 -template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +include "grib2/stepUnits.def"; # Forecast time in units defined by previous octet # See GRIB-530: We have to make a special case for the error in WMO spec diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index 3432f8b6a..a3e47c754 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -3,9 +3,8 @@ remove is_localtime; transient is_localtime=1; -alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 -template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; -codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; +#include "grib2/stepUnits.def"; + alias time.stepUnits = stepUnits; # Method used to calculate the field value at the local time specified in section 1 From 4c1048cb1e0c30b6fe089e2343890eaad3c24606 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 15:07:59 +0000 Subject: [PATCH 333/469] Fix virtual function table (delimiters) --- src/grib_accessor_class_optimal_step_units.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 7ac95a902..940785e3e 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -17,9 +17,9 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_gen - IMPLEMENTS = pack_long,unpack_long;dump - IMPLEMENTS = pack_string,unpack_string;dump - IMPLEMENTS = string_length + IMPLEMENTS = pack_long;unpack_long;dump + IMPLEMENTS = pack_string;unpack_string;dump + IMPLEMENTS = string_length;get_native_type IMPLEMENTS = init MEMBERS = const char* forecast_time_value MEMBERS = const char* forecast_time_unit From fb4aeedeb5c01ecf6bc228f6b3ad09c682d8d7a5 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 15 Jan 2024 15:18:35 +0000 Subject: [PATCH 334/469] Add pack_expression(), is_missing() and get_native_type() --- src/grib_accessor_class_optimal_step_units.cc | 52 +++++++++++++++++-- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 7ac95a902..eee4303c1 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -17,9 +17,9 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_gen - IMPLEMENTS = pack_long,unpack_long;dump - IMPLEMENTS = pack_string,unpack_string;dump - IMPLEMENTS = string_length + IMPLEMENTS = pack_long;unpack_long;dump + IMPLEMENTS = pack_string;unpack_string;dump + IMPLEMENTS = string_length;pack_expression;get_native_type;is_missing IMPLEMENTS = init MEMBERS = const char* forecast_time_value MEMBERS = const char* forecast_time_unit @@ -40,8 +40,10 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); +static int is_missing(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); +static int pack_expression(grib_accessor*, grib_expression*); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); @@ -79,7 +81,7 @@ static grib_accessor_class _grib_accessor_class_optimal_step_units = { &get_native_type, /* get native type */ 0, /* get sub_section */ 0, /* pack_missing */ - 0, /* is_missing */ + &is_missing, /* is_missing */ &pack_long, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ @@ -92,7 +94,7 @@ static grib_accessor_class _grib_accessor_class_optimal_step_units = { 0, /* unpack_string_array */ 0, /* pack_bytes */ 0, /* unpack_bytes */ - 0, /* pack_expression */ + &pack_expression, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ 0, /* preferred_size */ @@ -137,6 +139,39 @@ static size_t string_length(grib_accessor* a) return 255; } + +static int pack_expression(grib_accessor* a, grib_expression* e) +{ + const char* cval = NULL; + int ret = 0; + long lval = 0; + size_t len = 1; + grib_handle* hand = grib_handle_of_accessor(a); + + if (strcmp(e->cclass->name, "long") == 0) { + grib_expression_evaluate_long(hand, e, &lval); /* TDOD: check return value */ + //if (hand->context->debug) printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %ld\n", a->name,lval); + ret = grib_pack_long(a, &lval, &len); + } + else { + char tmp[1024]; + len = sizeof(tmp); + cval = grib_expression_evaluate_string(hand, e, tmp, &len, &ret); + if (ret != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "grib_accessor_codetable.%s: Unable to evaluate string %s to be set in %s", + __func__, grib_expression_get_name(e), a->name); + return ret; + } + len = strlen(cval) + 1; + //if (hand->context->debug) + // printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %s\n", a->name, cval); + ret = grib_pack_string(a, cval, &len); + } + return ret; +} + + static long staticStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); static long staticForceStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); @@ -239,6 +274,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } +// Step units are never missing +// If the user does not specify a step unit, we default to hours +static int is_missing(grib_accessor* a) +{ + return 0; +} + static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; From 0d6e197fb137ffef5af6af64900d6b09fa7ace46 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 15 Jan 2024 15:59:17 +0000 Subject: [PATCH 335/469] Uncomment include step units --- definitions/grib2/template.4.localtime.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index a3e47c754..3f082a227 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -3,7 +3,7 @@ remove is_localtime; transient is_localtime=1; -#include "grib2/stepUnits.def"; +include "grib2/stepUnits.def"; alias time.stepUnits = stepUnits; From 74048199a6c1ea0a9a2dd58f4b10cbe3dac27369 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 16:24:11 +0000 Subject: [PATCH 336/469] Cleanup --- src/grib_accessor_class_codetable.cc | 2 +- src/grib_accessor_class_optimal_step_units.cc | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index d450ffd97..18ee5d0ac 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -842,7 +842,7 @@ static int pack_expression(grib_accessor* a, grib_expression* e) grib_handle* hand = grib_handle_of_accessor(a); if (strcmp(e->cclass->name, "long") == 0) { - grib_expression_evaluate_long(hand, e, &lval); /* TDOD: check return value */ + grib_expression_evaluate_long(hand, e, &lval); /* TODO: check return value */ //if (hand->context->debug) printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %ld\n", a->name,lval); ret = grib_pack_long(a, &lval, &len); } diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index eee4303c1..330531c24 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -139,7 +139,6 @@ static size_t string_length(grib_accessor* a) return 255; } - static int pack_expression(grib_accessor* a, grib_expression* e) { const char* cval = NULL; @@ -147,10 +146,10 @@ static int pack_expression(grib_accessor* a, grib_expression* e) long lval = 0; size_t len = 1; grib_handle* hand = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; if (strcmp(e->cclass->name, "long") == 0) { - grib_expression_evaluate_long(hand, e, &lval); /* TDOD: check return value */ - //if (hand->context->debug) printf("ECCODES DEBUG grib_accessor_class_codetable::pack_expression %s %ld\n", a->name,lval); + grib_expression_evaluate_long(hand, e, &lval); /* TODO: check return value */ ret = grib_pack_long(a, &lval, &len); } else { @@ -159,8 +158,8 @@ static int pack_expression(grib_accessor* a, grib_expression* e) cval = grib_expression_evaluate_string(hand, e, tmp, &len, &ret); if (ret != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_codetable.%s: Unable to evaluate string %s to be set in %s", - __func__, grib_expression_get_name(e), a->name); + "%s.%s: Unable to evaluate string %s to be set in %s", + cclass_name, __func__, grib_expression_get_name(e), a->name); return ret; } len = strlen(cval) + 1; @@ -171,7 +170,6 @@ static int pack_expression(grib_accessor* a, grib_expression* e) return ret; } - static long staticStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); static long staticForceStepUnits = eccodes::Unit{eccodes::Unit::Value::MISSING}.value(); From fa6cc1e32da44a3815e4b34c60c9d4f4bf7d87d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jan 2024 16:38:38 +0000 Subject: [PATCH 337/469] Remove useless 'stepunits' key (no longer in the mars namespace) --- definitions/grib1/section.1.def | 1 - definitions/grib2/products_s2s.def | 1 - definitions/grib2/template.4.localtime.def | 1 - definitions/grib2/template.4.point_in_time.def | 1 - definitions/grib2/template.4.statistical.def | 1 - tests/grib_sub_hourly.sh | 6 +++--- 6 files changed, 3 insertions(+), 8 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index fcb306cb5..3d89bd277 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -222,7 +222,6 @@ alias ls.stepRange = stepRange; alias ls.dataDate = dataDate; alias mars.step = endStep; -alias stepunits = stepUnits; alias mars.date = dataDate; alias mars.levtype = indicatorOfTypeOfLevel; alias mars.time = dataTime; diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index 7063def51..13c90fb72 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -73,7 +73,6 @@ alias mars.type = marsType; # Normally MARS step is endStep but for monthly means we want stepRange if (stepType is "avg") { alias mars.step = stepRange; - alias stepunits = stepUnits; } if (isHindcast == 1) { diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index 3f082a227..5ae994b1d 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -81,7 +81,6 @@ if (numberOfForecastsUsedInLocalTime == 1) { alias mars.date = dateOfForecastUsedInLocalTime : dump; alias mars.time = timeOfForecastUsedInLocalTime : dump; alias mars.step = endStep; - alias stepunits = stepUnits; alias time.dataDate = dateOfForecastUsedInLocalTime; alias time.dataTime = timeOfForecastUsedInLocalTime; alias time.endStep = endStep; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 7e188b230..98885540a 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -7,7 +7,6 @@ alias step=startStep; alias marsStep=startStep; alias mars.step=startStep; -alias stepunits=stepUnits; alias marsStartStep = startStep; alias marsEndStep = endStep; diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index fa40bbd37..a2286e453 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -112,7 +112,6 @@ if (numberOfTimeRanges == 1 || numberOfTimeRanges == 2) { alias ls.stepRange=stepRange; alias mars.step=endStep; -alias stepunits=stepUnits; alias time.stepType=stepType; alias time.stepRange=stepRange; diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index 37799249e..19bdae580 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -70,7 +70,7 @@ keys_start_step="startStep,startStep:s,startStep:i,startStep:d,stepUnits:s" keys_end_step="endStep,endStep:s,endStep:i,endStep:d,stepUnits:s" ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "0 h" -${tools_dir}/grib_set -s stepunits=m,step=59 $fn $temp +${tools_dir}/grib_set -s stepUnits=m,step=59 $fn $temp grib_check_key_equals $temp "-p $keys_step" "59m 59m 59 59 m" grib_check_key_equals $temp "-p $keys_step_range" "59m 59m 59 59 m" grib_check_key_equals $temp "-p $keys_start_step" "59m 59m 59 59 m" @@ -97,7 +97,7 @@ keys_s="step:s" keys_i="step:i,stepUnits:s" keys_d="step:d,stepUnits:s" -${tools_dir}/grib_set -s stepunits=m,step=60 $fn $temp +${tools_dir}/grib_set -s stepUnits=m,step=60 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m" grib_check_key_equals $temp "-p $keys_s" "1$HOUR" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "60m" @@ -119,7 +119,7 @@ keys_s="step:s,startStep:s,endStep:s,stepRange:s,stepUnits:s" keys_i="step:i,startStep:i,endStep:i,stepRange:i,stepUnits:s" keys_d="step:d,startStep:d,endStep:d,stepRange:d,stepUnits:s" -${tools_dir}/grib_set -s stepunits=m,stepRange=60-120 $fn $temp +${tools_dir}/grib_set -s stepUnits=m,stepRange=60-120 $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "60 m 60 m" grib_check_key_equals $temp "-p $keys_s" "2$HOUR 1$HOUR 2$HOUR 1$HOUR-2$HOUR h" grib_check_key_equals $temp "-p $keys_s -s stepUnits=m" "120m 60m 120m 60m-120m m" From ea68f3c580f29efd6bb167cfb70deabe76f9e095 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 10:16:34 +0000 Subject: [PATCH 338/469] Definitions: Remove unused key --- definitions/grib1/section.1.def | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 3d89bd277..62d8c79e1 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -1,6 +1,5 @@ constant ECMWF = 98 : hidden; -constant ECMWF_s = "ecmf" : hidden; -constant WMO= 0; +constant WMO = 0; constant conceptsMasterDir="grib1" : hidden; constant conceptsLocalDirECMF="grib1/localConcepts/ecmf" : hidden; constant conceptsLocalDirAll="grib1/localConcepts/[centre:s]" : hidden; @@ -267,7 +266,6 @@ if(((section1Length > 40) or new() or setLocalDefinition> 0) and deleteLocalDefi } template_nofail marsKeywords "mars/grib.[stream:s].[type:s].def"; - } else { @@ -314,12 +312,12 @@ alias time.stepType=stepType; # ECC-457: GRIB1 to GRIB2 conversion concept_nofail stepTypeForConversion (unknown, "stepTypeForConversion.def", conceptsDir2, conceptsDir1); if (stepTypeForConversion is "accum" ) { - if (productDefinitionTemplateNumber == 1) { - alias productDefinitionTemplateNumber=eleven; - } - else { - alias productDefinitionTemplateNumber=eight; - } + if (productDefinitionTemplateNumber == 1) { + alias productDefinitionTemplateNumber=eleven; + } + else { + alias productDefinitionTemplateNumber=eight; + } } meta md5Section1 md5(offsetSection1,section1Length); From c98f55cc1faae569aa32717b42f711896b0db357 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 12:39:40 +0000 Subject: [PATCH 339/469] Sub hourly: Add test for optimal step units (pack_expression) --- tests/grib_sub_hourly.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index 19bdae580..bea7ed451 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -478,9 +478,18 @@ cat >$tempFilt<$tempFilt< Date: Tue, 16 Jan 2024 12:40:17 +0000 Subject: [PATCH 340/469] Definitions: Cleanup --- definitions/grib2/local.destine.1.def | 2 +- definitions/grib2/template.1.0.def | 2 +- definitions/grib2/template.1.1.def | 2 +- definitions/grib2/template.1.2.def | 4 +-- definitions/grib2/template.3.0.def | 4 +-- definitions/grib2/template.3.1.def | 6 ++--- definitions/grib2/template.3.10.def | 6 ++--- definitions/grib2/template.3.100.def | 17 +++++------- definitions/grib2/template.3.1000.def | 27 +++++++++---------- definitions/grib2/template.3.110.def | 19 +++++++------ definitions/grib2/template.3.1100.def | 4 +-- definitions/grib2/template.3.12.def | 6 ++--- definitions/grib2/template.3.120.def | 2 +- definitions/grib2/template.3.130.def | 2 +- definitions/grib2/template.3.140.def | 4 +-- definitions/grib2/template.3.150.def | 6 ++--- definitions/grib2/template.3.2.def | 6 ++--- definitions/grib2/template.3.20.def | 4 +-- definitions/grib2/template.3.3.def | 8 +++--- definitions/grib2/template.3.30.def | 6 ++--- definitions/grib2/template.3.31.def | 6 ++--- definitions/grib2/template.3.4.def | 4 +-- definitions/grib2/template.3.40.def | 4 +-- definitions/grib2/template.3.41.def | 6 ++--- definitions/grib2/template.3.42.def | 6 ++--- definitions/grib2/template.3.43.def | 8 +++--- definitions/grib2/template.3.5.def | 6 ++--- definitions/grib2/template.3.50.def | 2 +- definitions/grib2/template.3.51.def | 4 +-- definitions/grib2/template.3.52.def | 4 +-- definitions/grib2/template.3.53.def | 6 ++--- definitions/grib2/template.3.61.def | 2 +- definitions/grib2/template.3.62.def | 6 ++--- definitions/grib2/template.3.63.def | 8 +++--- definitions/grib2/template.3.90.def | 6 ++--- definitions/grib2/template.3.gaussian.def | 4 +-- definitions/grib2/template.3.latlon.def | 4 +-- definitions/grib2/template.3.latlon_vares.def | 10 +++---- .../grib2/template.3.spherical_harmonics.def | 18 ++++++------- definitions/grib2/template.5.0.def | 4 +-- definitions/grib2/template.5.1.def | 2 +- definitions/grib2/template.5.2.def | 4 +-- definitions/grib2/template.5.3.def | 4 +-- definitions/grib2/template.5.40.def | 4 +-- definitions/grib2/template.5.41.def | 4 +-- definitions/grib2/template.5.42.def | 4 +-- definitions/grib2/template.5.50.def | 4 +-- definitions/grib2/template.5.50000.def | 4 +-- definitions/grib2/template.5.51.def | 2 +- definitions/grib2/template.5.53.def | 2 +- definitions/grib2/template.5.61.def | 4 +-- 51 files changed, 142 insertions(+), 151 deletions(-) diff --git a/definitions/grib2/local.destine.1.def b/definitions/grib2/local.destine.1.def index db1f2f389..ccb9bfbfd 100644 --- a/definitions/grib2/local.destine.1.def +++ b/definitions/grib2/local.destine.1.def @@ -1,7 +1,7 @@ # DestinE MARS layout # Base keywords for all datasets -include "grib2/local.destine.base.def"; +include "grib2/local.destine.base.def" # Keywords based on dataset template_nofail datasetTemplate "grib2/local.destine.[dataset:s].def"; diff --git a/definitions/grib2/template.1.0.def b/definitions/grib2/template.1.0.def index 0f8f32271..9c73ed2cc 100644 --- a/definitions/grib2/template.1.0.def +++ b/definitions/grib2/template.1.0.def @@ -2,4 +2,4 @@ # TEMPLATE 1.0, Calendar Definition -include "grib2/template.1.calendar.def"; +include "grib2/template.1.calendar.def" diff --git a/definitions/grib2/template.1.1.def b/definitions/grib2/template.1.1.def index 7fcf51f53..6d559c4d7 100644 --- a/definitions/grib2/template.1.1.def +++ b/definitions/grib2/template.1.1.def @@ -2,4 +2,4 @@ # TEMPLATE 1.1, Paleontological Offset -include "grib2/template.1.offset.def"; +include "grib2/template.1.offset.def" diff --git a/definitions/grib2/template.1.2.def b/definitions/grib2/template.1.2.def index 3d5c0e3ba..3544cd8ef 100644 --- a/definitions/grib2/template.1.2.def +++ b/definitions/grib2/template.1.2.def @@ -2,5 +2,5 @@ # TEMPLATE 1.2, Calendar Definition and Paleontological Offset -include "grib2/template.1.calendar.def"; -include "grib2/template.1.offset.def"; +include "grib2/template.1.calendar.def" +include "grib2/template.1.offset.def" diff --git a/definitions/grib2/template.3.0.def b/definitions/grib2/template.3.0.def index 11b5f0b0c..309391679 100644 --- a/definitions/grib2/template.3.0.def +++ b/definitions/grib2/template.3.0.def @@ -2,5 +2,5 @@ # TEMPLATE 3.0, Latitude/longitude (or equidistant cylindrical, or Plate Carree) -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon.def" diff --git a/definitions/grib2/template.3.1.def b/definitions/grib2/template.3.1.def index 1cfca8e5d..45cd7200f 100644 --- a/definitions/grib2/template.3.1.def +++ b/definitions/grib2/template.3.1.def @@ -2,6 +2,6 @@ # TEMPLATE 3.1, Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree) -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon.def"; -include "grib2/template.3.rotation.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon.def" +include "grib2/template.3.rotation.def" diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index df1821add..6fb8f1a46 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.10, Mercator -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -27,7 +27,7 @@ signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; alias Lo1 = longitudeOfFirstGridPoint; meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -include "grib2/template.3.resolution_flags.def"; +include "grib2/template.3.resolution_flags.def" # LaD - Latitude(s) at which the Mercator projection intersects the Earth # (Latitude(s) where Di and Dj are specified) @@ -44,7 +44,7 @@ signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; alias Lo2 = longitudeOfLastGridPoint; meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Orientation of the grid, angle between i direction on the map and the equator # NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, diff --git a/definitions/grib2/template.3.100.def b/definitions/grib2/template.3.100.def index 76881b671..8f44d4d42 100644 --- a/definitions/grib2/template.3.100.def +++ b/definitions/grib2/template.3.100.def @@ -3,16 +3,16 @@ # TEMPLATE 3.100, Triangular grid based on an icosahedron (see Attachment I.2-GRIB-Att.) constant isGridded = true; -# n2 - exponent of 2 for the number of intervals on main triangle sides +# Exponent of 2 for the number of intervals on main triangle sides unsigned[1] n2 : dump ; -# n3 - exponent of 3 for the number of intervals on main triangle sides +# Exponent of 3 for the number of intervals on main triangle sides unsigned[1] n3 : dump ; -# Ni - number of intervals on main triangle sides of the icosahedron +# Number of intervals on main triangle sides of the icosahedron unsigned[2] Ni : dump ; -# nd - Number of diamonds +# Number of diamonds unsigned[1] nd : dump ; alias numberOfDiamonds=nd; @@ -28,17 +28,12 @@ meta geography.longitudeOfThePolePointInDegrees g2lon(longitudeOfThePolePoint); unsigned[4] longitudeOfFirstDiamondCentreLine : dump ; meta geography.longitudeOfFirstDiamondCentreLineInDegrees g2lon(longitudeOfFirstDiamondCentreLine); -# Grid point position codetable[1] gridPointPosition ('3.8.table',masterDir,localDir); -# Numbering order of diamonds flags[1] numberingOrderOfDiamonds 'grib2/tables/[tablesVersion]/3.9.table'; -# Scanning mode for one diamond flags[1] scanningModeForOneDiamond 'grib2/tables/[tablesVersion]/3.10.table'; -# nt - total number of grid points -unsigned[4] totalNumberOfGridPoints : dump ; - -alias nt = totalNumberOfGridPoints; +unsigned[4] totalNumberOfGridPoints : dump ; +alias nt = totalNumberOfGridPoints; diff --git a/definitions/grib2/template.3.1000.def b/definitions/grib2/template.3.1000.def index eda324224..e76507aaf 100644 --- a/definitions/grib2/template.3.1000.def +++ b/definitions/grib2/template.3.1000.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.1000, Cross-section grid, with points equally spaced on the horizontal -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -12,27 +12,26 @@ unsigned[4] numberOfHorizontalPoints : dump ; unsigned[4] basicAngleOfTheInitialProductionDomain = 0; # Subdivisions of basic angle used to define extreme longitudes and latitudes -unsigned[4] subdivisionsOfBasicAngle = missing() : can_be_missing;; +unsigned[4] subdivisionsOfBasicAngle = missing() : can_be_missing; -# La1 - latitude of first grid point +# Latitude of first grid point signed[4] latitudeOfFirstGridPoint : edition_specific ; - alias La1 = latitudeOfFirstGridPoint; -# Lo1 - longitude of first grid point -unsigned[4] longitudeOfFirstGridPoint : edition_specific; +# Longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; alias Lo1 = longitudeOfFirstGridPoint; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" -# La2 - latitude of last grid point +# Latitude of last grid point signed[4] latitudeOfLastGridPoint : edition_specific; - alias La2 = latitudeOfLastGridPoint; -# Lo2 - longitude of last grid point -unsigned[4] longitudeOfLastGridPoint: edition_specific ; +# Longitude of last grid point +unsigned[4] longitudeOfLastGridPoint: edition_specific ; alias Lo2 = longitudeOfLastGridPoint; + # Type of horizontal line codetable[1] typeOfHorizontalLine ('3.20.table',masterDir,localDir) : dump ; @@ -45,10 +44,8 @@ codetable[1] meaningOfVerticalCoordinate ('3.15.table',masterDir,localDir) : dum # Vertical dimension coordinate values definition codetable[1] verticalCoordinate ('3.21.table',masterDir,localDir) : dump ; -# NC - Number of coefficients or values used to specify vertical coordinates +# Number of coefficients or values used to specify vertical coordinates unsigned[2] NC : dump ; -# Octets 67-(66+NC*4) : Coefficients to define vertical dimension coordinate values in functional form, or the explicit coordinate values +# Octets 67-(66+NC*4): Coefficients to define vertical dimension coordinate values in functional form, or the explicit coordinate values # (IEEE 32-bit floating-point values) -# ???? coefficients_to_define_vertical_dimension_coordinate_values_in_functional_form_or_the_explicit_coordinate_values - diff --git a/definitions/grib2/template.3.110.def b/definitions/grib2/template.3.110.def index ee332ca7a..fae3e5420 100644 --- a/definitions/grib2/template.3.110.def +++ b/definitions/grib2/template.3.110.def @@ -1,41 +1,40 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.110, Equatorial azimuthal equidistant projection -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; -# Nx - number of points along X-axis +# Number of points along X-axis unsigned[4] numberOfPointsAlongXAxis : dump; alias Nx = numberOfPointsAlongXAxis; alias numberOfPointsAlongAParallel = Nx; alias Ni = Nx; -# Ny - number of points along Y-axis +# Number of points along Y-axis unsigned[4] numberOfPointsAlongYAxis : dump; alias Ny = numberOfPointsAlongYAxis; alias numberOfPointsAlongAMeridian = Ny; alias Nj = Ny; -# La1 - latitude of tangency point (centre of grid) +# Latitude of tangency point (centre of grid) signed[4] latitudeOfTangencyPoint : dump; - alias La1 = latitudeOfTangencyPoint; -# Lo1 - longitude of tangency point -unsigned[4] longitudeOfTangencyPoint : dump; +# Longitude of tangency point +unsigned[4] longitudeOfTangencyPoint : dump; alias Lo1 = longitudeOfTangencyPoint; # Resolution and component flag flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : dump; -# Dx - X-direction grid length in units of 10 -3 m as measured at the point of the axis +# X-direction grid length in units of 10 -3 m as measured at the point of the axis unsigned[4] Dx : dump; -# Dy - Y-direction grid length in units of 10 -3 m as measured at the point of the axis +# Y-direction grid length in units of 10 -3 m as measured at the point of the axis unsigned[4] Dy : dump; # Projection centre flag unsigned[1] projectionCentreFlag : dump; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" diff --git a/definitions/grib2/template.3.1100.def b/definitions/grib2/template.3.1100.def index e9c0b75f7..26fe4a92a 100644 --- a/definitions/grib2/template.3.1100.def +++ b/definitions/grib2/template.3.1100.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.1100, Hovmoller diagram grid with points equally spaced on the horizontal -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -23,7 +23,7 @@ unsigned[4] longitudeOfFirstGridPoint : edition_specific,dump; alias Lo1 =longitudeOfFirstGridPoint; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # La2 - latitude of last grid point signed[4] latitudeOfLastGridPoint : edition_specific,dump; diff --git a/definitions/grib2/template.3.12.def b/definitions/grib2/template.3.12.def index c96177bf8..fa3b2a8a0 100644 --- a/definitions/grib2/template.3.12.def +++ b/definitions/grib2/template.3.12.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.12, Transverse Mercator -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -27,7 +27,7 @@ signed[4] longitudeOfReferencePoint : edition_specific,no_copy; alias LoR = longitudeOfReferencePoint; meta geography.longitudeOfReferencePointInDegrees scale(longitudeOfReferencePoint,oneConstant,grib2divider,truncateDegrees) : dump; -include "grib2/template.3.resolution_flags.def"; +include "grib2/template.3.resolution_flags.def" # m - scale factor at reference point ratio of distance on map to distance on spheroid # (IEEE 32-bit floating-point values) @@ -45,7 +45,7 @@ signed[4] YR : edition_specific,no_copy ; alias falseNorthing = YR; meta geography.YRInMetres scale(YR,one,hundred) : dump; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Di - i-direction increment length in units of 10-2 m unsigned[4] Di : edition_specific,no_copy; diff --git a/definitions/grib2/template.3.120.def b/definitions/grib2/template.3.120.def index 34e77d345..e208cab7c 100644 --- a/definitions/grib2/template.3.120.def +++ b/definitions/grib2/template.3.120.def @@ -34,7 +34,7 @@ alias Dx = spacingOfBinsAlongRadials; unsigned[4] offsetFromOriginToInnerBound; alias Dstart = offsetFromOriginToInnerBound; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Octets 40-(39+4Nr) : For each of Nr radials: radials list(numberOfRadials){ diff --git a/definitions/grib2/template.3.130.def b/definitions/grib2/template.3.130.def index 960a65b82..eec6dbc5b 100644 --- a/definitions/grib2/template.3.130.def +++ b/definitions/grib2/template.3.130.def @@ -6,7 +6,7 @@ constant isGridded = true; # Note: This template is deprecated. -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" points list(numberOfDataPoints) { signed[4] latitude; diff --git a/definitions/grib2/template.3.140.def b/definitions/grib2/template.3.140.def index b14cd1c2e..d5c7b4666 100644 --- a/definitions/grib2/template.3.140.def +++ b/definitions/grib2/template.3.140.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.140, Lambert azimuthal equal area projection -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -52,7 +52,7 @@ alias Dy = yDirectionGridLengthInMillimetres ; meta geography.yDirectionGridLengthInMetres scale(yDirectionGridLengthInMillimetres,one,thousand,truncateDegrees): dump; alias DyInMetres = yDirectionGridLengthInMetres; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" iterator lambert_azimuthal_equal_area( numberOfPoints,missingValue,values, diff --git a/definitions/grib2/template.3.150.def b/definitions/grib2/template.3.150.def index ea9f76811..360e4d579 100644 --- a/definitions/grib2/template.3.150.def +++ b/definitions/grib2/template.3.150.def @@ -1,7 +1,7 @@ # TEMPLATE 3.150 - The HEALPix grid # See https://healpix.jpl.nasa.gov/pdf/intro.pdf -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.resolution_flags.def"; -include "grib2/template.3.healpix.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.resolution_flags.def" +include "grib2/template.3.healpix.def" diff --git a/definitions/grib2/template.3.2.def b/definitions/grib2/template.3.2.def index f587f9886..cc422db4d 100644 --- a/definitions/grib2/template.3.2.def +++ b/definitions/grib2/template.3.2.def @@ -2,6 +2,6 @@ # TEMPLATE 3.2, Stretched Latitude/longitude (or equidistant cylindrical, or Plate Carree) -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index fa596d063..80b1dce80 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.20, Polar stereographic projection -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -63,7 +63,7 @@ flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; # If bit 1 is 1, then the South Pole is on the projection plane flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" iterator polar_stereographic(numberOfPoints,missingValue,values, radius,Nx,Ny, diff --git a/definitions/grib2/template.3.3.def b/definitions/grib2/template.3.3.def index 908695d1e..264a09c7a 100644 --- a/definitions/grib2/template.3.3.def +++ b/definitions/grib2/template.3.3.def @@ -2,8 +2,8 @@ # TEMPLATE 3.3, Stretched and Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree) -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon.def"; -include "grib2/template.3.rotation.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon.def" +include "grib2/template.3.rotation.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index 387009b85..0168c967d 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.30, Lambert conformal -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -32,7 +32,7 @@ meta geography.longitudeOfFirstGridPointInDegrees alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; #meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; -include "grib2/template.3.resolution_flags.def"; +include "grib2/template.3.resolution_flags.def" # LaD - Latitude where Dx and Dy are specified signed[4] LaD : edition_specific; @@ -58,7 +58,7 @@ meta geography.DyInMetres scale(Dy,one,thousand) : dump; # Projection centre flag flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere signed[4] Latin1 : edition_specific; diff --git a/definitions/grib2/template.3.31.def b/definitions/grib2/template.3.31.def index e10d53b99..d6e85c6c3 100644 --- a/definitions/grib2/template.3.31.def +++ b/definitions/grib2/template.3.31.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.31, Albers equal area -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -23,7 +23,7 @@ alias La1 = latitudeOfFirstGridPoint; unsigned[4] longitudeOfFirstGridPoint : edition_specific,dump; alias Lo1 = longitudeOfFirstGridPoint; -include "grib2/template.3.resolution_flags.def"; +include "grib2/template.3.resolution_flags.def" # LaD - Latitude where Dx and Dy are specified signed[4] LaD : dump; @@ -42,7 +42,7 @@ alias Dy = yDirectionGridLength; # Projection centre flag flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere signed[4] Latin1 :edition_specific; diff --git a/definitions/grib2/template.3.4.def b/definitions/grib2/template.3.4.def index 4e533b4b2..224d12e7b 100644 --- a/definitions/grib2/template.3.4.def +++ b/definitions/grib2/template.3.4.def @@ -1,5 +1,5 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.4, Variable resolution latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon_vares.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon_vares.def" diff --git a/definitions/grib2/template.3.40.def b/definitions/grib2/template.3.40.def index 4cc651ed1..2f1c86a27 100644 --- a/definitions/grib2/template.3.40.def +++ b/definitions/grib2/template.3.40.def @@ -2,5 +2,5 @@ # TEMPLATE 3.40, Gaussian latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.gaussian.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.gaussian.def" diff --git a/definitions/grib2/template.3.41.def b/definitions/grib2/template.3.41.def index e3443dd34..7c72c31e3 100644 --- a/definitions/grib2/template.3.41.def +++ b/definitions/grib2/template.3.41.def @@ -2,6 +2,6 @@ # TEMPLATE 3.41, Rotated Gaussian latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.gaussian.def"; -include "grib2/template.3.rotation.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.gaussian.def" +include "grib2/template.3.rotation.def" diff --git a/definitions/grib2/template.3.42.def b/definitions/grib2/template.3.42.def index 192fd676d..8ec6895eb 100644 --- a/definitions/grib2/template.3.42.def +++ b/definitions/grib2/template.3.42.def @@ -2,6 +2,6 @@ # TEMPLATE 3.42, Stretched Gaussian latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.gaussian.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.gaussian.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.43.def b/definitions/grib2/template.3.43.def index b1301137e..7e35de9d8 100644 --- a/definitions/grib2/template.3.43.def +++ b/definitions/grib2/template.3.43.def @@ -2,7 +2,7 @@ # TEMPLATE 3.43, Stretched and rotated Gaussian latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.gaussian.def"; -include "grib2/template.3.rotation.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.gaussian.def" +include "grib2/template.3.rotation.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.5.def b/definitions/grib2/template.3.5.def index ecfb3e07c..b80f9264e 100644 --- a/definitions/grib2/template.3.5.def +++ b/definitions/grib2/template.3.5.def @@ -2,6 +2,6 @@ # TEMPLATE 3.5, Variable resolution rotated latitude/longitude -include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.latlon_vares.def"; -include "grib2/template.3.rotation.def"; +include "grib2/template.3.shape_of_the_earth.def" +include "grib2/template.3.latlon_vares.def" +include "grib2/template.3.rotation.def" diff --git a/definitions/grib2/template.3.50.def b/definitions/grib2/template.3.50.def index 6d869799c..3db24135a 100644 --- a/definitions/grib2/template.3.50.def +++ b/definitions/grib2/template.3.50.def @@ -2,4 +2,4 @@ # TEMPLATE 3.50, Spherical harmonic coefficients -include "grib2/template.3.spherical_harmonics.def"; +include "grib2/template.3.spherical_harmonics.def" diff --git a/definitions/grib2/template.3.51.def b/definitions/grib2/template.3.51.def index cd385a04c..633355082 100644 --- a/definitions/grib2/template.3.51.def +++ b/definitions/grib2/template.3.51.def @@ -2,5 +2,5 @@ # TEMPLATE 3.51, Rotated spherical harmonic coefficients -include "grib2/template.3.spherical_harmonics.def"; -include "grib2/template.3.rotation.def"; +include "grib2/template.3.spherical_harmonics.def" +include "grib2/template.3.rotation.def" diff --git a/definitions/grib2/template.3.52.def b/definitions/grib2/template.3.52.def index 5b471bd0e..3d6975591 100644 --- a/definitions/grib2/template.3.52.def +++ b/definitions/grib2/template.3.52.def @@ -2,5 +2,5 @@ # TEMPLATE 3.52, Stretched spherical harmonic coefficients -include "grib2/template.3.spherical_harmonics.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.spherical_harmonics.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.53.def b/definitions/grib2/template.3.53.def index 7ad169452..69a93fca8 100644 --- a/definitions/grib2/template.3.53.def +++ b/definitions/grib2/template.3.53.def @@ -2,6 +2,6 @@ # TEMPLATE 3.53, Stretched and rotated spherical harmonic coefficients -include "grib2/template.3.spherical_harmonics.def"; -include "grib2/template.3.rotation.def"; -include "grib2/template.3.stretching.def"; +include "grib2/template.3.spherical_harmonics.def" +include "grib2/template.3.rotation.def" +include "grib2/template.3.stretching.def" diff --git a/definitions/grib2/template.3.61.def b/definitions/grib2/template.3.61.def index 0a9044ec6..2da3b7a99 100644 --- a/definitions/grib2/template.3.61.def +++ b/definitions/grib2/template.3.61.def @@ -7,7 +7,7 @@ transient biFourierMakeTemplate = 0; include "grib2/template.3.bf.def" -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; diff --git a/definitions/grib2/template.3.62.def b/definitions/grib2/template.3.62.def index e1d2407ce..03f2808c3 100644 --- a/definitions/grib2/template.3.62.def +++ b/definitions/grib2/template.3.62.def @@ -7,7 +7,7 @@ transient biFourierMakeTemplate = 0; include "grib2/template.3.bf.def" -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint : edition_specific ; @@ -23,7 +23,7 @@ alias Lo1 = longitudeOfFirstGridPoint; flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : dump; # LaD - Latitude where Dx and Dy are specified -signed[4] LaD : edition_specific; +signed[4] LaD : edition_specific; alias latitudeWhereDxAndDyAreSpecified=LaD; meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; @@ -31,7 +31,7 @@ alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; # LoV - orientation of the grid # LoV is the longitude value of the meridian which is parallel to the y-axis (or columns of the grid) # along which latitude increases as the y-coordinate increases -signed[4] orientationOfTheGrid : edition_specific; +signed[4] orientationOfTheGrid : edition_specific; alias LoV = orientationOfTheGrid ; meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; diff --git a/definitions/grib2/template.3.63.def b/definitions/grib2/template.3.63.def index a9c90ce77..443283c5c 100644 --- a/definitions/grib2/template.3.63.def +++ b/definitions/grib2/template.3.63.def @@ -6,7 +6,7 @@ transient biFourierMakeTemplate = 0; include "grib2/template.3.bf.def" -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint : edition_specific; @@ -30,19 +30,19 @@ alias latitudeWhereDxAndDyAreSpecified=LaD; meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; # LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases -unsigned[4] LoV : edition_specific; +unsigned[4] LoV : edition_specific; meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; # Projection centre flag flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin1 : edition_specific; +signed[4] Latin1 : edition_specific; alias FirstLatitude=Latin1; meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; # Latin 2 - second latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin2 : dump; +signed[4] Latin2 : dump; alias SecondLatitude=Latin2; meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; diff --git a/definitions/grib2/template.3.90.def b/definitions/grib2/template.3.90.def index 62db324da..9f8ef1198 100644 --- a/definitions/grib2/template.3.90.def +++ b/definitions/grib2/template.3.90.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 3.90, Space view perspective or orthographic -include "grib2/template.3.shape_of_the_earth.def"; +include "grib2/template.3.shape_of_the_earth.def" constant isGridded = true; @@ -25,7 +25,7 @@ signed[4] longitudeOfSubSatellitePoint; meta geography.latitudeOfSubSatellitePointInDegrees scale(latitudeOfSubSatellitePoint,one,grib2divider,truncateDegrees) : dump; meta geography.longitudeOfSubSatellitePointInDegrees scale(longitudeOfSubSatellitePoint,one,grib2divider,truncateDegrees) : dump; -include "grib2/template.3.resolution_flags.def"; +include "grib2/template.3.resolution_flags.def" # dx - apparent diameter of Earth in grid lengths, in X-direction unsigned[4] dx : dump; @@ -47,7 +47,7 @@ unsigned[4] Yp : no_copy; meta geography.YpInGridLengths scale(Yp,one,thousand) : dump; alias yCoordinateOfSubSatellitePoint=YpInGridLengths; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" # Orientation of the grid; i.e. the angle between the increasing Y-axis and the meridian # of the sub-satellite point in the direction of increasing latitude diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def index 10505d281..e243b39eb 100644 --- a/definitions/grib2/template.3.gaussian.def +++ b/definitions/grib2/template.3.gaussian.def @@ -1,6 +1,6 @@ # (C) Copyright 2005- ECMWF. -include "grib2/template.3.grid.def"; +include "grib2/template.3.grid.def" # Di - i direction increment unsigned[4] iDirectionIncrement : can_be_missing; @@ -11,7 +11,7 @@ unsigned[4] N : dump; alias numberOfParallelsBetweenAPoleAndTheEquator=N ; alias geography.N=N; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" modify Ni : can_be_missing,dump; diff --git a/definitions/grib2/template.3.latlon.def b/definitions/grib2/template.3.latlon.def index 2b6ace29b..407aa4eca 100644 --- a/definitions/grib2/template.3.latlon.def +++ b/definitions/grib2/template.3.latlon.def @@ -1,6 +1,6 @@ # (C) Copyright 2005- ECMWF. -include "grib2/template.3.grid.def"; +include "grib2/template.3.grid.def" # Di - i direction increment unsigned[4] iDirectionIncrement : can_be_missing,edition_specific; @@ -12,7 +12,7 @@ unsigned[4] jDirectionIncrement : can_be_missing,edition_specific; alias Dj = jDirectionIncrement; alias Dy = jDirectionIncrement; -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" meta g2grid g2grid( latitudeOfFirstGridPoint, diff --git a/definitions/grib2/template.3.latlon_vares.def b/definitions/grib2/template.3.latlon_vares.def index 3c29438ea..db25b45cf 100644 --- a/definitions/grib2/template.3.latlon_vares.def +++ b/definitions/grib2/template.3.latlon_vares.def @@ -1,4 +1,5 @@ # (C) Copyright 2005- ECMWF. + # Variable resolution latitude/longitude unsigned[4] Ni : dump; alias numberOfPointsAlongAParallel=Ni; @@ -7,11 +8,10 @@ alias Nx = Ni; unsigned[4] Nj : dump; alias numberOfPointsAlongAMeridian=Nj; alias Ny = Nj; - alias geography.Ni=Ni; alias geography.Nj=Nj; -# Basic angle of the initial production domain +# Basic angle of the initial production domain unsigned[4] basicAngleOfTheInitialProductionDomain = 0; transient mBasicAngle=basicAngleOfTheInitialProductionDomain*oneMillionConstant; transient angleMultiplier = 1; @@ -24,7 +24,7 @@ when (basicAngleOfTheInitialProductionDomain == 0) { set mAngleMultiplier = mBasicAngle; } -# Subdivisions of basic angle used to define extreme longitudes and latitudes, and direction increments +# Subdivisions of basic angle used to define extreme longitudes and latitudes, and direction increments unsigned[4] subdivisionsOfBasicAngle = missing() : can_be_missing; transient angleDivisor = 1000000; @@ -39,9 +39,9 @@ include "grib2/template.3.resolution_flags.def" include "grib2/template.3.scanning_mode.def"; longitudesList list(Ni) { - unsigned[4] longitude; + unsigned[4] longitude; } latitudesList list(Nj) { - signed[4] latitude; + signed[4] latitude; } diff --git a/definitions/grib2/template.3.spherical_harmonics.def b/definitions/grib2/template.3.spherical_harmonics.def index 0a295c2f7..6af68c820 100644 --- a/definitions/grib2/template.3.spherical_harmonics.def +++ b/definitions/grib2/template.3.spherical_harmonics.def @@ -3,23 +3,23 @@ constant sphericalHarmonics=1; # constant dataRepresentationType = 50; -# J - pentagonal resolution parameter -unsigned[4] J : dump; -alias pentagonalResolutionParameterJ=J ; +# Pentagonal resolution parameter +unsigned[4] J : dump; +alias pentagonalResolutionParameterJ=J; alias geography.J=J; -# K - pentagonal resolution parameter -unsigned[4] K : dump; +# Pentagonal resolution parameter +unsigned[4] K : dump; alias pentagonalResolutionParameterK=K; alias geography.K=K; -# M - pentagonal resolution parameter -unsigned[4] M : dump; -alias pentagonalResolutionParameterM = M ; +# Pentagonal resolution parameter +unsigned[4] M : dump; +alias pentagonalResolutionParameterM = M; alias geography.M=M; # Representation type indicating the method used to define the norm -codetable[1] spectralType ('3.6.table',masterDir,localDir) = 1 : no_copy; +codetable[1] spectralType ('3.6.table',masterDir,localDir) = 1 : no_copy; alias spectralDataRepresentationType=spectralType; # Representation mode indicating the order of the coefficients diff --git a/definitions/grib2/template.5.0.def b/definitions/grib2/template.5.0.def index 9ec20b0ea..709f8be74 100644 --- a/definitions/grib2/template.5.0.def +++ b/definitions/grib2/template.5.0.def @@ -2,6 +2,6 @@ # TEMPLATE 5.0, Grid point data - simple packing -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" diff --git a/definitions/grib2/template.5.1.def b/definitions/grib2/template.5.1.def index a12cd4153..8f1c22bea 100644 --- a/definitions/grib2/template.5.1.def +++ b/definitions/grib2/template.5.1.def @@ -4,7 +4,7 @@ # Preliminary note: # This template was not validated at the time of publication and should be used with caution -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" unsigned[1] matrixBitmapsPresent; # same as in edition 1 diff --git a/definitions/grib2/template.5.2.def b/definitions/grib2/template.5.2.def index 165f70cc6..59f7f5342 100644 --- a/definitions/grib2/template.5.2.def +++ b/definitions/grib2/template.5.2.def @@ -2,8 +2,8 @@ # TEMPLATE 5.2, Grid point data - complex packing -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" # Group splitting method used codetable[1] groupSplittingMethodUsed ('5.4.table',masterDir,localDir); diff --git a/definitions/grib2/template.5.3.def b/definitions/grib2/template.5.3.def index 0d08b4e32..2640883f4 100644 --- a/definitions/grib2/template.5.3.def +++ b/definitions/grib2/template.5.3.def @@ -2,8 +2,8 @@ # TEMPLATE 5.3, Grid point data - complex packing and spatial differencing -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" # Group splitting method used codetable[1] groupSplittingMethodUsed ('5.4.table',masterDir,localDir); diff --git a/definitions/grib2/template.5.40.def b/definitions/grib2/template.5.40.def index 3b2f33ef0..51a56b1b7 100644 --- a/definitions/grib2/template.5.40.def +++ b/definitions/grib2/template.5.40.def @@ -2,8 +2,8 @@ # TEMPLATE 5.40, Grid point data - JPEG 2000 Code Stream Format -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" codetable[1] typeOfCompressionUsed ('5.40.table',masterDir,localDir) ; diff --git a/definitions/grib2/template.5.41.def b/definitions/grib2/template.5.41.def index bc3c621e8..58ebd8e34 100644 --- a/definitions/grib2/template.5.41.def +++ b/definitions/grib2/template.5.41.def @@ -2,5 +2,5 @@ # TEMPLATE 5.41, Grid point data - PNG Code Stream Format -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" diff --git a/definitions/grib2/template.5.42.def b/definitions/grib2/template.5.42.def index 1f8abb2b2..401966908 100644 --- a/definitions/grib2/template.5.42.def +++ b/definitions/grib2/template.5.42.def @@ -2,8 +2,8 @@ # TEMPLATE 5.42, Grid point data - CCSDS recommended lossless compression -include "grib2/template.5.packing.def"; -include "grib2/template.5.original_values.def"; +include "grib2/template.5.packing.def" +include "grib2/template.5.original_values.def" unsigned[1] ccsdsFlags : dump; alias ccsdsCompressionOptionsMask=ccsdsFlags; diff --git a/definitions/grib2/template.5.50.def b/definitions/grib2/template.5.50.def index 9c63c39dd..ab444b3ec 100644 --- a/definitions/grib2/template.5.50.def +++ b/definitions/grib2/template.5.50.def @@ -1,7 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 5.50, Spectral data - simple packing -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" # Real part of (0,0) -ieeefloat realPartOf00 ; +ieeefloat realPartOf00; diff --git a/definitions/grib2/template.5.50000.def b/definitions/grib2/template.5.50000.def index be9894cbf..19c5b14da 100644 --- a/definitions/grib2/template.5.50000.def +++ b/definitions/grib2/template.5.50000.def @@ -1,8 +1,8 @@ # (C) Copyright 2005- ECMWF. -# TEMPLATE 5.50000, Spherical harmonics data - complex packing ( IEEE ) +# TEMPLATE 5.50000, Spherical harmonics data - complex packing (IEEE) -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" if (gribex_mode_on()) { transient computeLaplacianOperator=0 : hidden; diff --git a/definitions/grib2/template.5.51.def b/definitions/grib2/template.5.51.def index d8db34ed9..f7dc292ca 100644 --- a/definitions/grib2/template.5.51.def +++ b/definitions/grib2/template.5.51.def @@ -2,7 +2,7 @@ # TEMPLATE 5.51, Spherical harmonics data - complex packing -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" if (gribex_mode_on()) { transient computeLaplacianOperator=0 : hidden; diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index 7921851ce..c7b21de5f 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -3,7 +3,7 @@ # TEMPLATE 5.53, BiFourier coefficients data - complex packing # Spectral data for limited area models - complex packing -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" transient computeLaplacianOperator=1 : hidden; diff --git a/definitions/grib2/template.5.61.def b/definitions/grib2/template.5.61.def index 1077f1f97..9c8e73a9e 100644 --- a/definitions/grib2/template.5.61.def +++ b/definitions/grib2/template.5.61.def @@ -6,6 +6,6 @@ # This template is experimental, was not validated at the time of publication and should be used only for bilateral previously agreed tests constant typeOfPreProcessing = 1; -include "grib2/template.5.packing.def"; +include "grib2/template.5.packing.def" -ieeefloat preProcessingParameter : read_only; +ieeefloat preProcessingParameter : read_only; From 71fd0c3abb9d1162879fbc841429a2975d7e9281 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 13:40:36 +0000 Subject: [PATCH 341/469] Sub hourly: Add test for bad stepUnits --- tests/grib_sub_hourly.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index bea7ed451..86001abb3 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -55,7 +55,9 @@ label="grib_sub_hourly" temp=temp.1.$label temp2=temp.2.$label tempFilt=temp.$label.filt -samples_dir=$ECCODES_SAMPLES_PATH +tempText=temp.$label.txt + +sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 @@ -319,8 +321,6 @@ grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "59 m" #grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0.983333" # not supported - - ${tools_dir}/grib_set -s forecastTime=0,indicatorOfUnitOfTimeRange=m $fn $temp grib_check_key_equals $temp "-p $keys_i -s stepUnits=s" "0 s" grib_check_key_equals $temp "-p $keys_i -s stepUnits=m" "0 m" @@ -330,7 +330,6 @@ grib_check_key_equals $temp "-p $keys_d -s stepUnits=m" "0 m" grib_check_key_equals $temp "-p $keys_d -s stepUnits=h" "0 h" - fn="$instantaneous_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s" keys__="step,stepUnits:s" @@ -402,7 +401,6 @@ low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indi ${tools_dir}/grib_set -s stepRange=60m-2h $fn $temp grib_check_key_equals $temp "-p $low_level_keys" "1 h 1 h" - fn="$accumulated_field" low_level_keys="forecastTime,indicatorOfUnitOfTimeRange:s,lengthOfTimeRange,indicatorOfUnitForTimeRange:s" keys__="stepRange,startStep,endStep" @@ -484,12 +482,18 @@ cat >$tempFilt< $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid unit" $tempText # Clean up -rm -f $temp $temp2 $tempFilt +rm -f $temp $temp2 $tempFilt $tempText From 3b6e2de6fe0395d23cc75696db7cc16c6b4fa5dd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 13:40:57 +0000 Subject: [PATCH 342/469] Accessors: Evaluate grib_handle_of_accessor once --- src/grib_accessor_class_optimal_step_units.cc | 20 +++++++------ src/grib_accessor_class_step_in_units.cc | 28 +++++++++---------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/grib_accessor_class_optimal_step_units.cc b/src/grib_accessor_class_optimal_step_units.cc index 330531c24..9bcf338be 100644 --- a/src/grib_accessor_class_optimal_step_units.cc +++ b/src/grib_accessor_class_optimal_step_units.cc @@ -119,13 +119,13 @@ grib_accessor_class* grib_accessor_class_optimal_step_units = &_grib_accessor_cl static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; - + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_unit= grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_value = grib_arguments_get_name(hand, c, n++); + self->forecast_time_unit = grib_arguments_get_name(hand, c, n++); + self->time_range_value = grib_arguments_get_name(hand, c, n++); + self->time_range_unit = grib_arguments_get_name(hand, c, n++); a->length = 0; } @@ -190,7 +190,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) supported_units_str += eccodes::Unit{u}.value() + ","; supported_units_str.pop_back(); - std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + ". Available units are: " + supported_units_str; + std::string msg = std::string{"Invalid unit: "} + std::to_string(*val) + " (" + e.what() + ")" + + ". Available units are: " + supported_units_str; grib_context_log(a->context, GRIB_LOG_ERROR, msg.c_str()); return GRIB_INVALID_ARGUMENT; } @@ -212,14 +213,15 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; - grib_handle* h = grib_handle_of_accessor(a); + const grib_accessor_optimal_step_units* self = (grib_accessor_optimal_step_units*)a; + grib_handle* h = grib_handle_of_accessor(a); auto forecast_time_opt = get_step(h, self->forecast_time_value, self->forecast_time_unit); auto time_range_opt = get_step(h, self->time_range_value, self->time_range_unit); if (forecast_time_opt && time_range_opt) { - auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); + auto [step_a, step_b] = find_common_units(forecast_time_opt.value().optimize_unit(), + (forecast_time_opt.value() + time_range_opt.value()).optimize_unit()); *val = step_a.unit().value(); } else if (forecast_time_opt && !time_range_opt) { diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index b6800f6fb..01c2e515b 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -123,13 +123,14 @@ grib_accessor_class* grib_accessor_class_step_in_units = &_grib_accessor_class_s static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->forecast_time_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->forecast_time_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->step_units = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_unit = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->time_range_value = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->forecast_time_value = grib_arguments_get_name(hand, c, n++); + self->forecast_time_unit = grib_arguments_get_name(hand, c, n++); + self->step_units = grib_arguments_get_name(hand, c, n++); + self->time_range_unit = grib_arguments_get_name(hand, c, n++); + self->time_range_value = grib_arguments_get_name(hand, c, n++); } static void dump(grib_accessor* a, grib_dumper* dumper) @@ -139,7 +140,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int unpack_long(grib_accessor* a, long* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + const grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); @@ -170,7 +171,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int unpack_double(grib_accessor* a, double * val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + const grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; int err = 0; long forecast_time_value, forecast_time_unit, step_units; grib_handle* h = grib_handle_of_accessor(a); @@ -200,7 +201,7 @@ static int unpack_double(grib_accessor* a, double * val, size_t* len) static int pack_long_new_(grib_accessor* a, const long start_step_value, const long start_step_unit, const long force_step_units) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + const grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; grib_handle* h = grib_handle_of_accessor(a); int err = 0; long forecast_time_unit; @@ -304,12 +305,12 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int unpack_string(grib_accessor* a, char* val, size_t* len) { - grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; - grib_handle* h = grib_handle_of_accessor(a); + const grib_accessor_step_in_units* self = (grib_accessor_step_in_units*)a; + grib_handle* h = grib_handle_of_accessor(a); int ret = GRIB_SUCCESS; - long start_step_value; - long start_step_unit; - long step_units; + long start_step_value = 0; + long start_step_unit = 0; + long step_units = 0; char fp_format[128] = "%g"; size_t fp_format_len = sizeof(fp_format); int show_hours = a->context->show_hour_stepunit; @@ -346,7 +347,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_SUCCESS; } - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_STRING; From 83adc956f593f57c2a906e85e22c411eb00fc34d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 13:54:10 +0000 Subject: [PATCH 343/469] Compiler warning re const strings --- tests/unit_tests.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index ca73ca27f..625f1c4bc 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -622,8 +622,11 @@ void test_sarray() printf("Running %s ...\n", __func__); grib_context* c = grib_context_get_default(); grib_sarray* a = grib_sarray_new(c, 10, 10); - grib_sarray_push(c, a, "ants"); - grib_sarray_push(c, a, "bugs"); + + char ants_s[] = "ants"; + char bugs_s[] = "bugs"; + grib_sarray_push(c, a, ants_s); + grib_sarray_push(c, a, bugs_s); grib_sarray_print("sarray", a); grib_vsarray* va = grib_vsarray_new(c, 1, 1); From b51ec51192d0306fc573c7bf344cfe3e16528f31 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 13:54:32 +0000 Subject: [PATCH 344/469] Definitions: Cleanup --- definitions/grib2/boot.def | 2 +- definitions/grib2/template.3.latlon_vares.def | 2 +- definitions/grib2/template.4.forecast_time.def | 4 ++-- definitions/grib2/template.4.forecast_time_44.def | 6 +++--- definitions/grib2/template.4.localtime.def | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index b37a9b83f..61f3c000d 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -30,7 +30,7 @@ transient missingValue = 9999; constant ieeeFloats = 1 : edition_specific; constant isHindcast = 0; -include "grib2/section.0.def"; +include "grib2/section.0.def" template core "grib2/sections.def"; diff --git a/definitions/grib2/template.3.latlon_vares.def b/definitions/grib2/template.3.latlon_vares.def index db25b45cf..764690332 100644 --- a/definitions/grib2/template.3.latlon_vares.def +++ b/definitions/grib2/template.3.latlon_vares.def @@ -36,7 +36,7 @@ when (missing(subdivisionsOfBasicAngle) || subdivisionsOfBasicAngle == 0) { include "grib2/template.3.resolution_flags.def" -include "grib2/template.3.scanning_mode.def"; +include "grib2/template.3.scanning_mode.def" longitudesList list(Ni) { unsigned[4] longitude; diff --git a/definitions/grib2/template.4.forecast_time.def b/definitions/grib2/template.4.forecast_time.def index f228d0a9e..c12da70e3 100644 --- a/definitions/grib2/template.4.forecast_time.def +++ b/definitions/grib2/template.4.forecast_time.def @@ -12,7 +12,7 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -include "grib2/stepUnits.def"; +include "grib2/stepUnits.def" # Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time) -signed[4] forecastTime : dump; +signed[4] forecastTime : dump; diff --git a/definitions/grib2/template.4.forecast_time_44.def b/definitions/grib2/template.4.forecast_time_44.def index aa35f543e..0b4ad445b 100644 --- a/definitions/grib2/template.4.forecast_time_44.def +++ b/definitions/grib2/template.4.forecast_time_44.def @@ -14,7 +14,7 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange; -include "grib2/stepUnits.def"; +include "grib2/stepUnits.def" # Forecast time in units defined by previous octet # See GRIB-530: We have to make a special case for the error in WMO spec @@ -23,9 +23,9 @@ if ( new() || (section4Length - 4*NV == 45) ) { # Newly created messages # Existing GRIBs which have 45 bytes before the pv array # The 45 bytes = length of product def template 4.44 - unsigned[2] forecastTime : dump; + unsigned[2] forecastTime : dump; } else { # This is for existing gribs which were written with 4 octets (GRIB-29: supports negative forecast time) - signed[4] forecastTime : dump; + signed[4] forecastTime : dump; } diff --git a/definitions/grib2/template.4.localtime.def b/definitions/grib2/template.4.localtime.def index 5ae994b1d..96d655d68 100644 --- a/definitions/grib2/template.4.localtime.def +++ b/definitions/grib2/template.4.localtime.def @@ -3,7 +3,7 @@ remove is_localtime; transient is_localtime=1; -include "grib2/stepUnits.def"; +include "grib2/stepUnits.def" alias time.stepUnits = stepUnits; From e785c67ce4b7e8b26b8dd4f79954cf68293c5452 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 15:38:34 +0000 Subject: [PATCH 345/469] Testing: Local Def 300 (ECC-1440) --- tests/CMakeLists.txt | 1 + tests/grib_ecc-1440.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100755 tests/grib_ecc-1440.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7d5d94f46..8fe2fa72c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -130,6 +130,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1322 grib_ecc-1319 grib_ecc-1406 + grib_ecc-1440 grib_ecc-1560 grib_ecc-1571 grib_ecc-1654 diff --git a/tests/grib_ecc-1440.sh b/tests/grib_ecc-1440.sh new file mode 100755 index 000000000..b6f3e843a --- /dev/null +++ b/tests/grib_ecc-1440.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +REDIRECT=/dev/null + +label="grib_ecc-1440_test" +tempGrib=temp.$label.grib +tempLog=temp.$label.log + +sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +set +e +${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=300 $sample_grib2 $tempGrib > $tempLog 2>&1 +status=$? +set -e +grep -q "This local definition has been deprecated" $tempLog + +rm -f $tempGrib $tempLog From 281612a23ad79365fb1c1823853c114601e5727f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 17:01:45 +0000 Subject: [PATCH 346/469] Testing: Dump modes --- tests/bufr_dump_samples.sh | 37 +++++++++++++++++++++++++++++++++++++ tools/bufr_dump.cc | 7 ------- tools/grib_dump.cc | 2 +- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/tests/bufr_dump_samples.sh b/tests/bufr_dump_samples.sh index 105c9f9b3..9b3aaa531 100755 --- a/tests/bufr_dump_samples.sh +++ b/tests/bufr_dump_samples.sh @@ -34,4 +34,41 @@ for lang in C python fortran filter; do ${tools_dir}/bufr_dump -E $lang $input >/dev/null done +# Extra options +input=$ECCODES_SAMPLES_PATH/BUFR4.tmpl +${tools_dir}/bufr_dump -OHat $input >/dev/null + + +# Error cases +input=$ECCODES_SAMPLES_PATH/BUFR4.tmpl +set +e +${tools_dir}/bufr_dump -EXX $input > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid language specified" $temp + +set +e +${tools_dir}/bufr_dump -DXX $input > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid language specified" $temp + +set +e +${tools_dir}/bufr_dump -jX $input > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid JSON option" $temp + +export ECCODES_BUFR_MULTI_ELEMENT_CONSTANT_ARRAYS=1 +set +e +${tools_dir}/bufr_dump -EC $input > $temp 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "not implemented" $temp + +# Clean up rm -f $temp diff --git a/tools/bufr_dump.cc b/tools/bufr_dump.cc index ed5fe88b8..840478728 100644 --- a/tools/bufr_dump.cc +++ b/tools/bufr_dump.cc @@ -99,16 +99,9 @@ static void check_code_gen_dump_mode(const char* language) int grib_tool_init(grib_runtime_options* options) { - int opt = grib_options_on("C") + grib_options_on("O"); - options->dump_mode = (char*)"default"; options->strict = 1; /* Must set here as bufr_dump has its own -S option */ - if (opt > 1) { - printf("%s: simultaneous j/C/O options not allowed\n", tool_name); - exit(1); - } - if (grib_options_on("j:")) { options->dump_mode = (char*)"json"; json_option = grib_options_get_option("j:"); diff --git a/tools/grib_dump.cc b/tools/grib_dump.cc index c7e0c02d9..f0db16c25 100644 --- a/tools/grib_dump.cc +++ b/tools/grib_dump.cc @@ -61,7 +61,7 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { - int opt = grib_options_on("C") + grib_options_on("O") + grib_options_on("D") + grib_options_on("j"); + const int opt = grib_options_on("C") + grib_options_on("O") + grib_options_on("D") + grib_options_on("j"); options->dump_mode = (char*)"default"; From 37ae4ceca5d9316c22a87cde649eaa225533f123 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jan 2024 17:27:48 +0000 Subject: [PATCH 347/469] Testing: grib_ls JSON modes --- tests/grib_ls.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index 1101d4d52..799b57ccd 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -221,9 +221,14 @@ file=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl grib_check_key_equals $file 'expver:d' 1 grib_check_key_equals $file 'expver:s' '0001' - +# JSON and lat/lon ${tools_dir}/grib_ls -j -l0,0 -p referenceValue:d $data_dir/sample.grib2 ${tools_dir}/grib_ls -j -l0,0 -p referenceValue:i $data_dir/sample.grib2 +${tools_dir}/grib_ls -j -l0,0 -p bitmap $data_dir/simple_bitmap.grib > $tempText 2>&1 +grep -q "invalid_type" $tempText +${tools_dir}/grib_ls -j -l0,0 -p nosuchkey $data_dir/sample.grib2 > $tempText 2>&1 +grep -q "nosuchkey.* null" $tempText + ${tools_dir}/grib_get -l0,0,4 $data_dir/sample.grib2 @@ -234,6 +239,13 @@ set -e [ $status -ne 0 ] grep -q "Wrong mode given" $tempText +set +e +${tools_dir}/grib_ls -l poo $data_dir/sample.grib2 > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Wrong latitude value" $tempText + set +e ${tools_dir}/grib_ls -l0,0,1,nonexistingmask $data_dir/sample.grib2 > $tempText 2>&1 From eea0ffe9748e2144791b3f98a386316b030ec613 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jan 2024 11:52:44 +0000 Subject: [PATCH 348/469] Sub hourly: Re-add the lowercase 'stepunits' key (For MARS compatibility) --- definitions/grib2/stepUnits.def | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/definitions/grib2/stepUnits.def b/definitions/grib2/stepUnits.def index 68efa462a..cffc236be 100644 --- a/definitions/grib2/stepUnits.def +++ b/definitions/grib2/stepUnits.def @@ -1,3 +1,5 @@ +# (C) Copyright 2005- ECMWF. + # alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 # template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; # codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; @@ -5,3 +7,5 @@ meta stepUnits optimal_step_units(forecastTime,indicatorOfUnitOfTimeRange,lengthOfTimeRange,indicatorOfUnitForTimeRange) : transient,dump; transient startStepUnit = 255 : hidden; # 255 means MISSING. See code table 4.4 transient endStepUnit = 255 : hidden; +# The lowercase version is to unify it with the helper key in the MARS language +alias stepunits = stepUnits; From c9fd7006d505abbab3870944b854abd21b8a681f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jan 2024 12:12:21 +0000 Subject: [PATCH 349/469] Sub hourly: Test for the lowercase 'stepunits' key --- definitions/grib1/section.1.def | 2 ++ tests/grib_sub_hourly.sh | 3 +++ 2 files changed, 5 insertions(+) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 62d8c79e1..500b7de8f 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -180,6 +180,8 @@ meta dataTime time(hour,minute,second) : dump; meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific; codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy; +# The lowercase version is to unify it with the helper key in the MARS language +alias stepunits = stepUnits; concept_nofail stepType (timeRangeIndicator, "stepType.def", conceptsDir2, conceptsDir1); diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index 86001abb3..d3c031ee8 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -62,6 +62,9 @@ sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl instantaneous_field=$data_dir/reduced_gaussian_surface.grib2 accumulated_field=$data_dir/reduced_gaussian_sub_area.grib2 +# Check the lowercase alias 'stepunits' for a variety of step types (instant, accum etc) +${tools_dir}/grib_get -p stepunits $data_dir/tigge_cf_ecmwf.grib2 + #### Make sure that step, stepRange, startStep, endStep produce the same result for instantaneous fields fn="$instantaneous_field" From 77a71acf11e4869442150386f00f4bcfca277226 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jan 2024 13:49:36 +0000 Subject: [PATCH 350/469] ECC-1748: Tools: grib_dump on index file should print the key types --- src/eccodes_prototypes.h | 4 ++-- src/grib_index.cc | 19 +++++++++++-------- tests/grib_indexing.sh | 6 ++++++ tools/bufr_dump.cc | 2 +- tools/grib_dump.cc | 2 +- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 1a57e46ae..20efaae32 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -652,8 +652,8 @@ int grib_index_select_long(grib_index* index, const char* skey, long value); int grib_index_select_double(grib_index* index, const char* skey, double value); int grib_index_select_string(grib_index* index, const char* skey, const char* value); grib_handle* codes_index_get_handle(grib_field* field, int message_type, int* err); -int grib_index_dump_file(FILE* fout, const char* filename); -void grib_index_dump(FILE* fout, grib_index* index); +int grib_index_dump_file(FILE* fout, const char* filename, unsigned long flags); +void grib_index_dump(FILE* fout, grib_index* index, unsigned long flags); char* grib_get_field_file(grib_index* index, off_t* offset); grib_handle* grib_handle_new_from_index(grib_index* index, int* err); grib_handle* codes_new_from_index(grib_index* index, int message_type, int* err); diff --git a/src/grib_index.cc b/src/grib_index.cc index 2432d620d..9998ac843 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -1739,16 +1739,19 @@ static void grib_dump_key_values(FILE* fout, grib_string_list* values) } fprintf(fout, "\n"); } -static void grib_dump_index_keys(FILE* fout, grib_index_key* keys) + +static void grib_dump_index_keys(FILE* fout, grib_index_key* keys, unsigned long flags) { if (!keys) return; fprintf(fout, "key name = %s\n", keys->name); - /* fprintf(fout, "key type = %d\n", keys->type); */ - + if ((flags & GRIB_DUMP_FLAG_TYPE) != 0) { + fprintf(fout, "key type = %s\n", grib_get_type_name(keys->type)); + } grib_dump_key_values(fout, keys->values); - grib_dump_index_keys(fout, keys->next); + grib_dump_index_keys(fout, keys->next, flags); } + #ifdef INDEX_DUMPS static void grib_dump_files(FILE* fout, grib_file* files) { @@ -1780,7 +1783,7 @@ static void grib_dump_field_tree(FILE* fout, grib_field_tree* tree) } #endif -int grib_index_dump_file(FILE* fout, const char* filename) +int grib_index_dump_file(FILE* fout, const char* filename, unsigned long flags) { int err = 0; grib_index* index = NULL; @@ -1821,13 +1824,13 @@ int grib_index_dump_file(FILE* fout, const char* filename) fclose(fh); } - grib_index_dump(fout, index); + grib_index_dump(fout, index, flags); grib_index_delete(index); return GRIB_SUCCESS; } -void grib_index_dump(FILE* fout, grib_index* index) +void grib_index_dump(FILE* fout, grib_index* index, unsigned long flags) { if (!index) return; @@ -1838,7 +1841,7 @@ void grib_index_dump(FILE* fout, grib_index* index) /* grib_dump_files(fout, index->files); */ fprintf(fout, "Index keys:\n"); - grib_dump_index_keys(fout, index->keys); + grib_dump_index_keys(fout, index->keys, flags); /* * fprintf(fout, "Index field tree:\n"); diff --git a/tests/grib_indexing.sh b/tests/grib_indexing.sh index 69d1031bc..79026c9a3 100755 --- a/tests/grib_indexing.sh +++ b/tests/grib_indexing.sh @@ -91,6 +91,12 @@ EOF diff $tempRef $tempOut +# ECC-1748 +${tools_dir}/grib_dump -t ${tempIndex} > $tempOut +grep -q "key type = string" $tempOut +grep -q "key type = long" $tempOut + + ${tools_dir}/grib_index_build -N -k mars.levtype -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\ grep -q "mars.levtype = { sfc, pl, pv, pt }" diff --git a/tools/bufr_dump.cc b/tools/bufr_dump.cc index 840478728..12f68083d 100644 --- a/tools/bufr_dump.cc +++ b/tools/bufr_dump.cc @@ -189,7 +189,7 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi const char* filename = options->current_infile->name; json = 0; - err = grib_index_dump_file(stdout, filename); + err = grib_index_dump_file(stdout, filename, options->dump_flags); if (err) { grib_context_log(c, GRIB_LOG_ERROR, "%s: Could not dump index file \"%s\".\n%s\n", tool_name, diff --git a/tools/grib_dump.cc b/tools/grib_dump.cc index f0db16c25..f15a870a9 100644 --- a/tools/grib_dump.cc +++ b/tools/grib_dump.cc @@ -141,7 +141,7 @@ int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* fi grib_context* c = grib_context_get_default(); const char* filename = options->current_infile->name; - err = grib_index_dump_file(stdout, filename); + err = grib_index_dump_file(stdout, filename, options->dump_flags); if (err) { grib_context_log(c, GRIB_LOG_ERROR, "%s: Could not dump index file \"%s\".\n%s\n", tool_name, From 0f3e710d33ab81153a324783f5e093706a883062 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jan 2024 13:50:39 +0000 Subject: [PATCH 351/469] Sub hourly: Native type of step and endStep for backward compatibility (Experimental idea) --- src/grib_accessor_class_g2end_step.cc | 10 ++++++++++ src/grib_accessor_class_step_in_units.cc | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index e967268ef..a1e89d57c 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -744,5 +744,15 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { +#if 0 + grib_handle* h = grib_handle_of_accessor(a); + + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (step_units == 1) { + return GRIB_TYPE_LONG; + } + } +#endif return GRIB_TYPE_STRING; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 01c2e515b..9d22d1864 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -349,5 +349,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { +#if 0 + grib_handle* h = grib_handle_of_accessor(a); + + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (step_units == 1) { + return GRIB_TYPE_LONG; + } + } +#endif + return GRIB_TYPE_STRING; } From eca34ff1a6b8c5776c4cc9d0250e9bc9727d2d8d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 11:57:27 +0000 Subject: [PATCH 352/469] Testing: Get native type of all keys --- definitions/grib2/local.98.1.def | 4 +--- tests/grib_keys_iter.cc | 7 ++++++- tests/grib_keys_iter.sh | 5 +++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/definitions/grib2/local.98.1.def b/definitions/grib2/local.98.1.def index b8b49723e..1afea9783 100644 --- a/definitions/grib2/local.98.1.def +++ b/definitions/grib2/local.98.1.def @@ -1,3 +1 @@ -label "_local 98.1"; - - +label "_x"; diff --git a/tests/grib_keys_iter.cc b/tests/grib_keys_iter.cc index d0f368021..146e09344 100644 --- a/tests/grib_keys_iter.cc +++ b/tests/grib_keys_iter.cc @@ -34,7 +34,12 @@ int main(int argc, char* argv[]) while (grib_keys_iterator_next(kiter)) { const char* name = grib_keys_iterator_get_name(kiter); Assert(name); - printf("%s\n", name); + int type = 0; + GRIB_CHECK(grib_get_native_type(h, name, &type), 0); + Assert( type > 0 && type < 7 ); + const char* type_name = grib_get_type_name(type); + Assert( !STR_EQUAL(type_name, "unknown") ); + printf("%s = %s (%d)\n", name, type_name, type); } grib_keys_iterator_delete(kiter); diff --git a/tests/grib_keys_iter.sh b/tests/grib_keys_iter.sh index f1bd1e4f9..18d8da421 100755 --- a/tests/grib_keys_iter.sh +++ b/tests/grib_keys_iter.sh @@ -19,6 +19,11 @@ cd ${data_dir} f='tigge/tiggelam_cnmc_sfc.grib' $EXEC ${test_dir}/grib_keys_iter $f > /dev/null +# Samples +$EXEC ${test_dir}/grib_keys_iter $ECCODES_SAMPLES_PATH/GRIB1.tmpl > /dev/null +$EXEC ${test_dir}/grib_keys_iter $ECCODES_SAMPLES_PATH/GRIB2.tmpl > /dev/null +$EXEC ${test_dir}/grib_keys_iter $ECCODES_SAMPLES_PATH/sh_ml_grib2.tmpl > /dev/null + grib_files=`cat ${data_dir}/grib_data_files.txt` for f in ${grib_files}; do ${test_dir}/grib_keys_iter $f > $tempOut From f6c87944ced2fdf6e03790c2279e6a704e4f9ce6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 12:39:37 +0000 Subject: [PATCH 353/469] Testing: Test label keys --- tests/grib_keys_iter.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/grib_keys_iter.cc b/tests/grib_keys_iter.cc index 146e09344..d68977b13 100644 --- a/tests/grib_keys_iter.cc +++ b/tests/grib_keys_iter.cc @@ -13,6 +13,8 @@ #include "grib_api_internal.h" +#define MAX_VAL_LEN 1024 + int main(int argc, char* argv[]) { FILE* f = NULL; @@ -40,6 +42,13 @@ int main(int argc, char* argv[]) const char* type_name = grib_get_type_name(type); Assert( !STR_EQUAL(type_name, "unknown") ); printf("%s = %s (%d)\n", name, type_name, type); + + if (STR_EQUAL(type_name, "label")) { + char value[MAX_VAL_LEN] = {0,}; + size_t vlen = MAX_VAL_LEN; + GRIB_CHECK(grib_get_string(h, name, value, &vlen), name); + Assert( strlen(value) > 0 ); + } } grib_keys_iterator_delete(kiter); From d35419ec219c05b825b5f2871411eeaf93041eb1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 13:38:40 +0000 Subject: [PATCH 354/469] Accessors: Dead code removal (METAR message sizing) --- src/grib_accessor_class_message.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 1334209dc..739e5d55d 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -118,19 +118,19 @@ static void init(grib_accessor* a, const long len, grib_arguments* arg) static void update_size(grib_accessor* a, size_t new_size) { - /* printf("update_size: grib_accessor_class_message.c %ld %ld %s %s\n", (long)new_size,(long)a->length,a->cclass->name,a->name); */ a->length = new_size; } static void resize(grib_accessor* a, size_t new_size) { - void* zero = grib_context_malloc_clear(a->context, new_size); - - grib_buffer_replace(a, (const unsigned char*)zero, new_size, 1, 0); - grib_context_free(a->context, zero); - grib_context_log(a->context, GRIB_LOG_DEBUG, "resize: grib_accessor_class_message %ld %ld %s %s", - (long)new_size, (long)a->length, a->cclass->name, a->name); - Assert(new_size == a->length); + grib_context_log(a->context, GRIB_LOG_FATAL, "%s %s: Not supported", a->cclass->name, __func__); + + // void* zero = grib_context_malloc_clear(a->context, new_size); + // grib_buffer_replace(a, (const unsigned char*)zero, new_size, 1, 0); + // grib_context_free(a->context, zero); + // grib_context_log(a->context, GRIB_LOG_DEBUG, "resize: grib_accessor_class_message %ld %ld %s %s", + // (long)new_size, (long)a->length, a->cclass->name, a->name); + // Assert(new_size == a->length); } static int value_count(grib_accessor* a, long* count) From 92d3ec50eb41ba5a703d2660e7f44e9b51d7af29 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 15:52:10 +0000 Subject: [PATCH 355/469] Testing: GRIB2 local definitions --- src/grib_accessor_class_padding.cc | 15 ++++++++------- tests/grib_local.sh | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_padding.cc b/src/grib_accessor_class_padding.cc index 44e1083b2..790ea9db2 100644 --- a/src/grib_accessor_class_padding.cc +++ b/src/grib_accessor_class_padding.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -121,7 +117,6 @@ static int compare(grib_accessor* a, grib_accessor* b) static void update_size(grib_accessor* a, size_t new_size) { - /* printf("update_size: grib_accessor_class_padding.c %ld %ld %s %s\n", (long)new_size,(long)a->length,a->cclass->name,a->name); */ a->length = new_size; } @@ -129,9 +124,13 @@ static void resize(grib_accessor* a, size_t new_size) { void* zero = grib_context_malloc_clear(a->context, new_size); - grib_buffer_replace(a, (const unsigned char*)zero, new_size, 1, 0); + grib_buffer_replace(a, (const unsigned char*)zero, new_size, + /*update_lengths=*/1, /*update_paddings=*/0); grib_context_free(a->context, zero); - grib_context_log(a->context, GRIB_LOG_DEBUG, "resize: grib_accessor_class_padding.c %ld %ld %s %s\n", (long)new_size, (long)a->length, a->cclass->name, a->name); + + grib_context_log(a->context, GRIB_LOG_DEBUG, + "grib_accessor_class_padding::resize new_size=%zu a->length=%ld %s %s", + new_size, a->length, a->cclass->name, a->name); Assert(new_size == a->length); } @@ -140,10 +139,12 @@ static int value_count(grib_accessor* a, long* c) *c = a->length; return 0; } + static long byte_count(grib_accessor* a) { return a->length; } + static size_t string_length(grib_accessor* a) { return (size_t)a->length; diff --git a/tests/grib_local.sh b/tests/grib_local.sh index 3242a61f7..62b1b27e4 100755 --- a/tests/grib_local.sh +++ b/tests/grib_local.sh @@ -125,6 +125,12 @@ ${tools_dir}/grib_set -s \ grib_check_key_equals $temp "mars.levelist,roundedMarsLevelist:d,roundedMarsLevelist:s" "1 1.234 1.234" +# Local Definition 192 +# --------------------------------------- +${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=192 $sample_g2 $temp +${tools_dir}/grib_set -s stepType=accum,setLocalDefinition=1,localDefinitionNumber=192 $sample_g2 $temp + + # Local Definition 5: Forecast probability data # --------------------------------------------- sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl @@ -207,5 +213,18 @@ grib_check_key_exists $temp mars.number,constituentType,sourceSinkChemicalPhysic ${tools_dir}/grib_set -s localDefinitionNumber=36 $temp $temp.1 ${tools_dir}/grib_compare $temp $temp.1 +# Chemicals, aerosols etc (check GRIB2 templates are selected) +${tools_dir}/grib_set -s paramId=211123,setLocalDefinition=1,localDefinitionNumber=36 $sample_g2 $temp +grib_check_key_equals $temp productDefinitionTemplateNumber 40 + +${tools_dir}/grib_set -s paramId=456000,setLocalDefinition=1,localDefinitionNumber=36 $sample_g2 $temp +grib_check_key_equals $temp productDefinitionTemplateNumber 76 + +${tools_dir}/grib_set -s paramId=215225,setLocalDefinition=1,localDefinitionNumber=36 $sample_g2 $temp +grib_check_key_equals $temp productDefinitionTemplateNumber 48 + +${tools_dir}/grib_set -s paramId=210251,setLocalDefinition=1,localDefinitionNumber=36 $sample_g2 $temp + + # Clean up rm -f $temp $temp.1 $temp.2 $temp.3 From 12c31bbac7c05a3b72550e6606c3f492a7d051ec Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 16:36:51 +0000 Subject: [PATCH 356/469] Examples: Use consistent labelling --- examples/C/grib_index.sh | 18 ++++++++++++++++++ examples/C/grib_nearest_multiple.sh | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100755 examples/C/grib_index.sh diff --git a/examples/C/grib_index.sh b/examples/C/grib_index.sh new file mode 100755 index 000000000..fe4ea5698 --- /dev/null +++ b/examples/C/grib_index.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +label="grib_index_c" +tempIndex=temp.$label.idx + +input=$data_dir/tigge_cf_ecmwf.grib2 +${examples_dir}/c_grib_index $input $tempIndex + +rm -f $tempIndex diff --git a/examples/C/grib_nearest_multiple.sh b/examples/C/grib_nearest_multiple.sh index ee43c5881..3d8c1ecf3 100755 --- a/examples/C/grib_nearest_multiple.sh +++ b/examples/C/grib_nearest_multiple.sh @@ -10,7 +10,7 @@ . ./include.ctest.sh -label="grib_nearest_multiple" +label="grib_nearest_multiple_c" temp1=$label.temp1.$$ temp2=$label.temp2.$$ tempRef=$label.ref.$$ From 305f636ece014605c749b0576683bc93be963ccf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 17:13:42 +0000 Subject: [PATCH 357/469] Sub hourly: Dynamic native type for step, startStep and endStep for backward compatibility --- src/grib_accessor_class_g2end_step.cc | 7 ++++--- src/grib_accessor_class_step_in_units.cc | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index a1e89d57c..d6e1caa49 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -744,15 +744,16 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { -#if 0 - grib_handle* h = grib_handle_of_accessor(a); + // TODO: Still experimental. + // Change the type to depend on the stepUnits for backward compatibility + grib_handle* h = grib_handle_of_accessor(a); long step_units = 0; if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { if (step_units == 1) { return GRIB_TYPE_LONG; } } -#endif + return GRIB_TYPE_STRING; } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 9d22d1864..4b516e518 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -349,16 +349,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { -#if 0 - grib_handle* h = grib_handle_of_accessor(a); + // TODO: Still experimental. + // Change the type to depend on the stepUnits for backward compatibility + grib_handle* h = grib_handle_of_accessor(a); long step_units = 0; if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { if (step_units == 1) { return GRIB_TYPE_LONG; } } -#endif return GRIB_TYPE_STRING; } From afc918b3f0029d1ecee94d090d8225edd5ccd9d6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 Jan 2024 17:14:22 +0000 Subject: [PATCH 358/469] Sub hourly: Extra tests for native type of step keys --- examples/C/CMakeLists.txt | 1 + examples/C/grib_index.c | 14 ++++++++------ examples/C/grib_index.sh | 9 +++++++-- tests/grib_filter.sh | 11 +++++++++++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 30b8a5bf9..a50dc8d0a 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -77,6 +77,7 @@ if( HAVE_BUILD_TOOLS ) grib_clone grib_copy_message grib_ensemble_index + grib_index grib_set_pv grib_set_bitmap grib_list diff --git a/examples/C/grib_index.c b/examples/C/grib_index.c index 64a131dcd..2e37baead 100644 --- a/examples/C/grib_index.c +++ b/examples/C/grib_index.c @@ -19,7 +19,7 @@ static void usage(const char* prog) { - printf("usage: %s infile\n", prog); + printf("usage: %s gribfile indexfile\n", prog); exit(1); } @@ -27,7 +27,8 @@ int main(int argc, char* argv[]) { codes_index* index = NULL; codes_handle* h = NULL; - char* infile = NULL; + char* inputfile = NULL; + char* indexfile = NULL; long *steps, *levels, *numbers; /* arrays */ char** shortName = NULL; int i, j, k, l; @@ -37,8 +38,9 @@ int main(int argc, char* argv[]) size_t lenshortName = sizeof(oshortName); int ret = 0, count = 0; - if (argc != 2) usage(argv[0]); - infile = argv[1]; + if (argc != 3) usage(argv[0]); + inputfile = argv[1]; + indexfile = argv[2]; printf("indexing...\n"); @@ -50,7 +52,7 @@ int main(int argc, char* argv[]) } /* indexes a file */ - ret = codes_index_add_file(index, infile); + ret = codes_index_add_file(index, inputfile); if (ret) { fprintf(stderr, "Error: %s\n", codes_get_error_message(ret)); exit(ret); @@ -152,7 +154,7 @@ int main(int argc, char* argv[]) } printf(" %d messages selected\n", count); - codes_index_write(index, "out.gribidx"); + codes_index_write(index, indexfile); codes_index_delete(index); return 0; diff --git a/examples/C/grib_index.sh b/examples/C/grib_index.sh index fe4ea5698..06244169e 100755 --- a/examples/C/grib_index.sh +++ b/examples/C/grib_index.sh @@ -11,8 +11,13 @@ label="grib_index_c" tempIndex=temp.$label.idx +tempText=temp.$label.txt input=$data_dir/tigge_cf_ecmwf.grib2 -${examples_dir}/c_grib_index $input $tempIndex +${examples_dir}/c_grib_index $input $tempIndex > $tempText -rm -f $tempIndex +grep -q "43 messages selected" $tempText + +${tools_dir}/grib_dump $tempIndex + +rm -f $tempIndex $tempText diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index 50c2a5105..57bc4cb8f 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -445,6 +445,17 @@ status=$? set -e [ $status -ne 0 ] +# Setting step +# ------------- +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +echo 'set step = 12; write;' | ${tools_dir}/grib_filter -o $tempGrib - $input +${tools_dir}/grib_compare -b forecastTime $input $tempGrib +grib_check_key_equals $tempGrib step 12 +grib_check_key_equals $tempGrib forecastTime 12 +echo 'set endStep = 12; write;' | ${tools_dir}/grib_filter -o $tempGrib - $input +grib_check_key_equals $tempGrib step 12 +grib_check_key_equals $tempGrib forecastTime 12 + # Bad filter # ---------------- From b8830c337bf6a195b045cdbf8b0cad3d91b67d1c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 19 Jan 2024 09:29:16 +0000 Subject: [PATCH 359/469] Default native step type is string. It's long if unit is not shown. --- src/grib_accessor_class_g2end_step.cc | 15 ++++++++------- src/grib_accessor_class_step_in_units.cc | 16 ++++++++-------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index d6e1caa49..beaf00776 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -744,14 +744,15 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { - // TODO: Still experimental. - // Change the type to depend on the stepUnits for backward compatibility - grib_handle* h = grib_handle_of_accessor(a); - long step_units = 0; - if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { - if (step_units == 1) { - return GRIB_TYPE_LONG; + int show_hours = a->context->show_hour_stepunit; + + if (!show_hours) { + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { + return GRIB_TYPE_LONG; + } } } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 4b516e518..9323ec115 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -349,16 +349,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { - // TODO: Still experimental. - // Change the type to depend on the stepUnits for backward compatibility - grib_handle* h = grib_handle_of_accessor(a); - long step_units = 0; - if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { - if (step_units == 1) { - return GRIB_TYPE_LONG; + int show_hours = a->context->show_hour_stepunit; + + if (!show_hours) { + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { + return GRIB_TYPE_LONG; + } } } - return GRIB_TYPE_STRING; } From 0a8e91342fb2cdf386ede71004753993f626651c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 11:24:22 +0000 Subject: [PATCH 360/469] Testing: wmo_read_bufr_from_file --- tests/CMakeLists.txt | 2 ++ tests/wmo_read_bufr_from_file.cc | 36 ++++++++++++++++++++++++++++++++ tests/wmo_read_bufr_from_file.sh | 25 ++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 tests/wmo_read_bufr_from_file.cc create mode 100755 tests/wmo_read_bufr_from_file.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8fe2fa72c..9d06c3f87 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,6 +10,7 @@ execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_S ################################################ list(APPEND test_c_bins list_codetable_flagtable_keys + wmo_read_bufr_from_file grib_bpv_limit grib_double_cmp read_any @@ -178,6 +179,7 @@ if( HAVE_BUILD_TOOLS ) grib_unpack_subarray grib_count grib_clone_headers_only + wmo_read_bufr_from_file bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_bufr_from_file.cc b/tests/wmo_read_bufr_from_file.cc new file mode 100644 index 000000000..0afd44878 --- /dev/null +++ b/tests/wmo_read_bufr_from_file.cc @@ -0,0 +1,36 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include + +#include "grib_api_internal.h" + +#define SIZE 1024 * 1024 +char buffer[SIZE]; + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + err = wmo_read_bufr_from_file(in, buffer, &len); + if (err == GRIB_END_OF_FILE && len == 0) + printf("end of file\n"); + + printf("BUFR: size: %zu err: %d (%s)\n", len, err, grib_get_error_message(err)); + + return 0; +} diff --git a/tests/wmo_read_bufr_from_file.sh b/tests/wmo_read_bufr_from_file.sh new file mode 100755 index 000000000..5d7b156a3 --- /dev/null +++ b/tests/wmo_read_bufr_from_file.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="wmo_read_bufr_from_file_test" +tempText=temp.$label.txt +tempBufr=temp.$label.bufr + +${test_dir}/wmo_read_bufr_from_file $data_dir/bufr/ias1_240.bufr > $tempText +grep -q "BUFR: size: 180696 .*No error" $tempText + +echo BUFR > $tempBufr +${test_dir}/wmo_read_bufr_from_file $tempBufr > $tempText +grep -q "BUFR: size: 0 .*End of resource reached when reading message" $tempText + +# Clean up +rm -f $tempText $tempBufr From a96a5b12adaa950f864d42574788cf8db9547e08 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 11:24:50 +0000 Subject: [PATCH 361/469] Tools: Type safety --- tools/grib_repair.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/grib_repair.cc b/tools/grib_repair.cc index 484bfe69f..7560a9206 100644 --- a/tools/grib_repair.cc +++ b/tools/grib_repair.cc @@ -71,7 +71,7 @@ int main(int argc, char** argv) for (;;) { size_t len = SIZE; - long ret = wmo_read_grib_from_file(in, buffer, &len); + int ret = wmo_read_grib_from_file(in, buffer, &len); if (ret == GRIB_END_OF_FILE && len == 0) break; if (count > MAX_NUM_MESSAGES) { @@ -81,7 +81,7 @@ int main(int argc, char** argv) break; } - printf("GRIB %lu: size: %ld code: %ld (%s)\n", ++count, (long)len, ret, grib_get_error_message(ret)); + printf("GRIB %lu: size: %zu code: %d (%s)\n", ++count, len, ret, grib_get_error_message(ret)); switch (ret) { case 0: @@ -98,7 +98,7 @@ int main(int argc, char** argv) len = data_len = SIZE; data = (unsigned char*)&buffer[0]; ret = grib_read_any_from_memory(NULL, &data, &data_len, buffer, &len); - printf(" -> GRIB %lu: size: %ld code: %ld (%s)\n", count, (long)len, ret, grib_get_error_message(ret)); + printf(" -> GRIB %lu: size: %zu code: %d (%s)\n", count, len, ret, grib_get_error_message(ret)); if (ret == 0) { if (fwrite(buffer, 1, len, bad) != len) { perror(cbad); From e392cb9607c986e245eb111457d366fde05960a1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 12:15:28 +0000 Subject: [PATCH 362/469] Testing: Sub-hourly step value in filter (showing hours) --- tests/grib_sub_hourly.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index d3c031ee8..ffb0a17f7 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -490,6 +490,15 @@ grib_check_key_equals $temp '-p startStep' '16m' grib_check_key_equals $temp '-p indicatorOfUnitOfTimeRange' '0' grib_check_key_equals $temp '-p forecastTime' '16' + +export ECCODES_GRIB_SHOW_HOUR_STEPUNIT=1 +cat >$tempFilt< $tempText 2>&1 From 39571269c0d20c9403e88f4f9c3ff8ea5a4b0253 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 12:29:21 +0000 Subject: [PATCH 363/469] Dead code removal --- src/eccodes_prototypes.h | 1 - src/grib_value.cc | 38 +++++++++++++++++--------------------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 20efaae32..e74a94f19 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1127,7 +1127,6 @@ int grib_set_double(grib_handle* h, const char* name, double val); int grib_set_string_internal(grib_handle* h, const char* name, const char* val, size_t* length); int grib_set_string(grib_handle* h, const char* name, const char* val, size_t* length); int grib_set_string_array(grib_handle* h, const char* name, const char** val, size_t length); -int grib_set_bytes_internal(grib_handle* h, const char* name, const unsigned char* val, size_t* length); int grib_set_bytes(grib_handle* h, const char* name, const unsigned char* val, size_t* length); int grib_set_missing(grib_handle* h, const char* name); int grib_is_missing_long(grib_accessor* a, long x); diff --git a/src/grib_value.cc b/src/grib_value.cc index 9c0365789..c6ec63369 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -513,27 +513,23 @@ int grib_set_string_array(grib_handle* h, const char* name, const char** val, si return GRIB_NOT_FOUND; } -int grib_set_bytes_internal(grib_handle* h, const char* name, const unsigned char* val, size_t* length) -{ - int ret = GRIB_SUCCESS; - grib_accessor* a = NULL; - - a = grib_find_accessor(h, name); - - if (a) { - ret = grib_pack_bytes(a, val, length); - if (ret == GRIB_SUCCESS) { - return grib_dependency_notify_change(a); - } - - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=%s as bytes (%s)", - name, val, grib_get_error_message(ret)); - return ret; - } - - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); - return GRIB_NOT_FOUND; -} +// int grib_set_bytes_internal(grib_handle* h, const char* name, const unsigned char* val, size_t* length) +// { +// int ret = GRIB_SUCCESS; +// grib_accessor* a = NULL; +// a = grib_find_accessor(h, name); +// if (a) { +// ret = grib_pack_bytes(a, val, length); +// if (ret == GRIB_SUCCESS) { +// return grib_dependency_notify_change(a); +// } +// grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s=%s as bytes (%s)", +// name, val, grib_get_error_message(ret)); +// return ret; +// } +// grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to find accessor %s", name); +// return GRIB_NOT_FOUND; +// } int grib_set_bytes(grib_handle* h, const char* name, const unsigned char* val, size_t* length) { From cd10437b0aa51ded02fbe07c8623eff275e33d2e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 12:29:58 +0000 Subject: [PATCH 364/469] Testing: Increase coverage --- tests/grib_run_length_packing.sh | 3 +++ tests/wmo_read_bufr_from_file.sh | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/tests/grib_run_length_packing.sh b/tests/grib_run_length_packing.sh index ce44c7c95..3b39bf0e8 100755 --- a/tests/grib_run_length_packing.sh +++ b/tests/grib_run_length_packing.sh @@ -34,7 +34,10 @@ grib_check_key_equals $input missingValuesPresent 1 # Encoding # ----------------- +export ECCODES_DEBUG=-1 $EXEC ${test_dir}/grib_run_length_packing $tempGrib +unset ECCODES_DEBUG + ${tools_dir}/grib_dump -O $tempGrib ${tools_dir}/grib_get_data -mXXX $tempGrib grib_check_key_equals $tempGrib packingType grid_run_length diff --git a/tests/wmo_read_bufr_from_file.sh b/tests/wmo_read_bufr_from_file.sh index 5d7b156a3..5cab41b88 100755 --- a/tests/wmo_read_bufr_from_file.sh +++ b/tests/wmo_read_bufr_from_file.sh @@ -14,11 +14,18 @@ label="wmo_read_bufr_from_file_test" tempText=temp.$label.txt tempBufr=temp.$label.bufr +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + ${test_dir}/wmo_read_bufr_from_file $data_dir/bufr/ias1_240.bufr > $tempText +cat $tempText grep -q "BUFR: size: 180696 .*No error" $tempText echo BUFR > $tempBufr ${test_dir}/wmo_read_bufr_from_file $tempBufr > $tempText +cat $tempText grep -q "BUFR: size: 0 .*End of resource reached when reading message" $tempText # Clean up From 699491023df448dbd6114325d2f26f39be612b75 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 12:36:30 +0000 Subject: [PATCH 365/469] Testing: Increase coverage --- tests/grib_ecc-1467.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/grib_ecc-1467.cc b/tests/grib_ecc-1467.cc index 34d7867e6..20a2b7268 100644 --- a/tests/grib_ecc-1467.cc +++ b/tests/grib_ecc-1467.cc @@ -23,8 +23,7 @@ int main(int argc, char** argv) double abs_error = 0; const double max_abs_error = 1e-03; const double tolerance = 1e-03; - double dmin; - double dmax; + double dmin, dmax, dval; float fval; FILE* in = NULL; @@ -44,6 +43,10 @@ int main(int argc, char** argv) h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); Assert(h); + CODES_CHECK(codes_get_float(h, "referenceValue", &fval), 0); + CODES_CHECK(codes_get_double(h, "referenceValue", &dval), 0); + printf("dval = %g, fval = %g\n", dval, fval); + CODES_CHECK(codes_get_size(h, "values", &values_len), 0); fvalues = (float*)malloc(values_len * sizeof(float)); From 501fa84cadd910272a66ba557519dc68b142387d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 12:44:37 +0000 Subject: [PATCH 366/469] Testing: Increase coverage --- examples/C/bufr_subset.c | 5 ++++- src/eccodes_prototypes.h | 1 - src/grib_value.cc | 20 +++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/C/bufr_subset.c b/examples/C/bufr_subset.c index 66bf695b4..e1676188f 100644 --- a/examples/C/bufr_subset.c +++ b/examples/C/bufr_subset.c @@ -32,7 +32,7 @@ int main(int argc, char* argv[]) size_t stringLen; char stringVal[100] = {0,}; int i, err = 0; - int cnt = 0; + int cnt = 0, ktype = 0; const char* infile = "../../data/bufr/synop_multi_subset.bufr"; in = fopen(infile, "rb"); @@ -62,6 +62,9 @@ int main(int argc, char* argv[]) for (i = 1; i <= numberOfSubsets; i++) { snprintf(key, sizeof(key), "/subsetNumber=%d/blockNumber", i); + CODES_CHECK(codes_get_native_type(h, key, &ktype), 0); + //printf("Type = %d\n", ktype); + printf(" subsetNumber=%d", i); /* read and print some data values */ CODES_CHECK(codes_get_long(h, key, &longVal), 0); diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index e74a94f19..5080843d7 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1162,7 +1162,6 @@ int grib_get_double_elements(const grib_handle* h, const char* name, const int* int grib_get_float_elements(const grib_handle* h, const char* name, const int* index_array, long len, float* val_array); int grib_get_string_internal(grib_handle* h, const char* name, char* val, size_t* length); int grib_get_string(const grib_handle* h, const char* name, char* val, size_t* length); -int grib_get_bytes_internal(const grib_handle* h, const char* name, unsigned char* val, size_t* length); int grib_get_bytes(const grib_handle* h, const char* name, unsigned char* val, size_t* length); int grib_get_native_type(const grib_handle* h, const char* name, int* type); int ecc__grib_get_double_array_internal(const grib_handle* h, grib_accessor* a, double* val, size_t buffer_len, size_t* decoded_length); diff --git a/src/grib_value.cc b/src/grib_value.cc index c6ec63369..e6c382626 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1218,17 +1218,15 @@ int grib_get_string(const grib_handle* h, const char* name, char* val, size_t* l } } -int grib_get_bytes_internal(const grib_handle* h, const char* name, unsigned char* val, size_t* length) -{ - int ret = grib_get_bytes(h, name, val, length); - - if (ret != GRIB_SUCCESS) - grib_context_log(h->context, GRIB_LOG_ERROR, - "Unable to get %s as bytes (%s)", - name, grib_get_error_message(ret)); - - return ret; -} +// int grib_get_bytes_internal(const grib_handle* h, const char* name, unsigned char* val, size_t* length) +// { +// int ret = grib_get_bytes(h, name, val, length); +// if (ret != GRIB_SUCCESS) +// grib_context_log(h->context, GRIB_LOG_ERROR, +// "Unable to get %s as bytes (%s)", +// name, grib_get_error_message(ret)); +// return ret; +// } int grib_get_bytes(const grib_handle* h, const char* name, unsigned char* val, size_t* length) { From c368d65b16f25a33d0a8aa9b7cd972898c031560 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 13:25:00 +0000 Subject: [PATCH 367/469] Testing: wmo_read_gts_from_file --- tests/CMakeLists.txt | 2 ++ tests/wmo_read_gts_from_file.cc | 37 +++++++++++++++++++++++++++++++++ tests/wmo_read_gts_from_file.sh | 27 ++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 tests/wmo_read_gts_from_file.cc create mode 100755 tests/wmo_read_gts_from_file.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9d06c3f87..19661bb91 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -11,6 +11,7 @@ execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_S list(APPEND test_c_bins list_codetable_flagtable_keys wmo_read_bufr_from_file + wmo_read_gts_from_file grib_bpv_limit grib_double_cmp read_any @@ -180,6 +181,7 @@ if( HAVE_BUILD_TOOLS ) grib_count grib_clone_headers_only wmo_read_bufr_from_file + wmo_read_gts_from_file bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_gts_from_file.cc b/tests/wmo_read_gts_from_file.cc new file mode 100644 index 000000000..01a39ff0e --- /dev/null +++ b/tests/wmo_read_gts_from_file.cc @@ -0,0 +1,37 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include + +#include "grib_api_internal.h" + +#define SIZE 5 * 1024 * 1024 +char buffer[SIZE]; + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + err = wmo_read_gts_from_file(in, buffer, &len); + printf("err=%d\n", err); + if (err == GRIB_END_OF_FILE && len == 0) + printf("end of file\n"); + + printf("GTS: size: %zu err: %d (%s)\n", len, err, grib_get_error_message(err)); + + return 0; +} diff --git a/tests/wmo_read_gts_from_file.sh b/tests/wmo_read_gts_from_file.sh new file mode 100755 index 000000000..b4899e2dc --- /dev/null +++ b/tests/wmo_read_gts_from_file.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="wmo_read_gts_from_file_test" +tempText=temp.$label.txt + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + +input=${data_dir}/gts/EGRR20150317121020_00493212.DAT +${test_dir}/wmo_read_gts_from_file $input > $tempText +cat $tempText + + +# Clean up +rm -f $tempText From 180608f8c4bd6848450e9e5a0347ea8c7c5db721 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 13:53:25 +0000 Subject: [PATCH 368/469] Testing: wmo_read_any_from_file --- tests/CMakeLists.txt | 2 ++ tests/wmo_read_any_from_file.cc | 36 +++++++++++++++++++++++ tests/wmo_read_any_from_file.sh | 51 +++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 tests/wmo_read_any_from_file.cc create mode 100755 tests/wmo_read_any_from_file.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 19661bb91..d6bb281d1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND test_c_bins list_codetable_flagtable_keys wmo_read_bufr_from_file wmo_read_gts_from_file + wmo_read_any_from_file grib_bpv_limit grib_double_cmp read_any @@ -182,6 +183,7 @@ if( HAVE_BUILD_TOOLS ) grib_clone_headers_only wmo_read_bufr_from_file wmo_read_gts_from_file + wmo_read_any_from_file bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_any_from_file.cc b/tests/wmo_read_any_from_file.cc new file mode 100644 index 000000000..8e480a544 --- /dev/null +++ b/tests/wmo_read_any_from_file.cc @@ -0,0 +1,36 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include + +#include "grib_api_internal.h" + +#define SIZE 1024 * 1024 +char buffer[SIZE]; + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + err = wmo_read_any_from_file(in, buffer, &len); + if (err == GRIB_END_OF_FILE && len == 0) + printf("end of file\n"); + + printf("ANY: size: %zu err: %d (%s)\n", len, err, grib_get_error_message(err)); + + return err; +} diff --git a/tests/wmo_read_any_from_file.sh b/tests/wmo_read_any_from_file.sh new file mode 100755 index 000000000..2edf10772 --- /dev/null +++ b/tests/wmo_read_any_from_file.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="wmo_read_any_from_file_test" +tempText=temp.$label.txt +tempBufr=temp.$label.bufr + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + +${test_dir}/wmo_read_any_from_file $data_dir/bufr/aaen_55.bufr +${test_dir}/wmo_read_any_from_file $data_dir/sample.grib2 +${test_dir}/wmo_read_any_from_file $data_dir/second_ord_rbr.grib1 +${test_dir}/wmo_read_any_from_file $data_dir/gts/EGRR20150317121020_00493212.DAT +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/wrap.tmpl +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/budg.tmpl +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/hdf5.tmpl + +# Bad input +echo BUFR > $tempBufr +set +e +${test_dir}/wmo_read_any_from_file $tempBufr > $tempText +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "End of resource reached when reading message" $tempText + + +set +e +${test_dir}/wmo_read_any_from_file $data_dir > $tempText +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "Input output problem" $tempText + + +# Clean up +rm -f $tempText $tempBufr From 3c2961106623c57082a4fdc1a78fc4bef97f3441 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 14:57:17 +0000 Subject: [PATCH 369/469] Cleanup --- src/grib_accessor_class_g2end_step.cc | 42 +++++++++++++----------- src/grib_accessor_class_step_in_units.cc | 6 ++-- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index beaf00776..353f830ac 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -153,8 +153,8 @@ grib_accessor_class* grib_accessor_class_g2end_step = &_grib_accessor_class_g2en static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - int n = 0; - grib_handle* h = grib_handle_of_accessor(a); + int n = 0; + grib_handle* h = grib_handle_of_accessor(a); self->start_step_value = grib_arguments_get_name(h, c, n++); self->step_units = grib_arguments_get_name(h, c, n++); @@ -228,7 +228,7 @@ static int convert_time_range_long_( static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - int err = 0; + int err = 0; long start_step_value; long step_units; long time_range_unit; @@ -273,7 +273,7 @@ static int unpack_one_time_range_long_(grib_accessor* a, long* val, size_t* len) static int unpack_one_time_range_double_(grib_accessor* a, double *val , size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - int err = 0; + int err = 0; double start_step_value; long start_step_unit; long step_units; @@ -323,10 +323,10 @@ static int unpack_multiple_time_ranges_long_(grib_accessor* a, long* val, size_t { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; int i = 0, err = 0; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); long numberOfTimeRange = 0, step_units = 0, start_step_value = 0; - size_t count = 0; + size_t count = 0; long arr_typeOfTimeIncrement[MAX_NUM_TIME_RANGES] = {0,}; long arr_coded_unit[MAX_NUM_TIME_RANGES] = {0,}; long arr_coded_time_range[MAX_NUM_TIME_RANGES] = {0,}; @@ -382,7 +382,7 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si long start_step_value = 0; long start_step_unit = 0; - size_t count = 0; + size_t count = 0; long arr_typeOfTimeIncrement[MAX_NUM_TIME_RANGES] = {0, }; long arr_coded_unit[MAX_NUM_TIME_RANGES] = {0, }; long arr_coded_time_range[MAX_NUM_TIME_RANGES] = {0, }; @@ -438,7 +438,7 @@ static int unpack_multiple_time_ranges_double_(grib_accessor* a, double* val, si static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int ret = 0; long start_step_value; long numberOfTimeRange; @@ -478,7 +478,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int ret = 0; long start_step_value; long numberOfTimeRange; @@ -518,7 +518,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) static int pack_long_(grib_accessor* a, const long end_step_value, const long end_step_unit) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int err = 0; long year; @@ -540,7 +540,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en long typeOfTimeIncrement; double dend, dstep; - int show_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->show_hour_stepunit; eccodes::Step end_step{end_step_value, end_step_unit}; @@ -589,7 +589,9 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en if (time_range.value() < 0) { grib_context_log(h->context, GRIB_LOG_ERROR, - "endStep < startStep (%s < %s)", end_step.value("%g", show_hours).c_str(), start_step.value("%g", show_hours).c_str()); + "endStep < startStep (%s < %s)", + end_step.value("%g", show_units_for_hours).c_str(), + start_step.value("%g", show_units_for_hours).c_str()); return GRIB_WRONG_STEP; } @@ -646,14 +648,14 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int ret = 0; char fp_format[128] = "%g"; size_t fp_format_len = sizeof(fp_format); size_t step_len = 0; long step_value; long step_units; - int show_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->show_hour_stepunit; if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; @@ -668,7 +670,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) std::stringstream ss; - ss << step.value(fp_format, show_hours); + ss << step.value(fp_format, show_units_for_hours); size_t size = ss.str().size() + 1; @@ -689,7 +691,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int ret; long force_step_units; @@ -719,7 +721,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int pack_string(grib_accessor* a, const char* val, size_t* len) { - grib_handle* h = grib_handle_of_accessor(a); + grib_handle* h = grib_handle_of_accessor(a); int ret = 0; long force_step_units; if ((ret = grib_get_long_internal(h, "forceStepUnits", &force_step_units)) != GRIB_SUCCESS) @@ -745,13 +747,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { grib_handle* h = grib_handle_of_accessor(a); - int show_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->show_hour_stepunit; - if (!show_hours) { + if (!show_units_for_hours) { long step_units = 0; if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { - return GRIB_TYPE_LONG; + return GRIB_TYPE_LONG; // For backward compatibility } } } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 9323ec115..5c816725d 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -350,13 +350,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { grib_handle* h = grib_handle_of_accessor(a); - int show_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->show_hour_stepunit; - if (!show_hours) { + if (!show_units_for_hours) { long step_units = 0; if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { - return GRIB_TYPE_LONG; + return GRIB_TYPE_LONG; // For backward compatibility } } } From e637b26e76a0fc2afc0baf3a8baffdc6f5259c33 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 14:57:30 +0000 Subject: [PATCH 370/469] Testing: Increase coverage --- tests/grib_dump.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index ef84af3f1..6355ea2f2 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -104,15 +104,26 @@ ${tools_dir}/grib_dump -s year=1909 $file > $temp 2>&1 grep -q "dataDate = 19090206" $temp # Skip handle +file=$data_dir/sample.grib2 ${tools_dir}/grib_dump -w count=4 $file > $temp 2>&1 -ECCODES_DEBUG=1 ${tools_dir}/grib_dump $data_dir/sample.grib2 > $temp 2>&1 +file=$data_dir/sample.grib2 +ECCODES_DEBUG=1 ${tools_dir}/grib_dump $file > $temp 2>&1 + + +# Dump long array +# ---------------- +input=$data_dir/lfpw.grib1 +${tools_dir}/grib_dump -w count=1 -p SPD $input + # Error conditions #----------------------------------------------------------- +file=$data_dir/sample.grib2 ${tools_dir}/grib_dump -p nonexist $file > $temp 2>&1 grep -q "Key/value not found" $temp + # Unreadable message #----------------------------------------------------------- tempOut=temp.$label.out From 6776116c1104df262d503df0154f11fcb18d76f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 17:18:29 +0000 Subject: [PATCH 371/469] ECC-1749: grib_dump: No gap between offsets and key name --- src/grib_dumper_class_wmo.cc | 26 +++++++++++++------------- tests/grib_dump.sh | 7 +++++++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/grib_dumper_class_wmo.cc b/src/grib_dumper_class_wmo.cc index a884d2966..4eab6d91d 100644 --- a/src/grib_dumper_class_wmo.cc +++ b/src/grib_dumper_class_wmo.cc @@ -85,7 +85,6 @@ grib_dumper_class* grib_dumper_class_wmo = &_grib_dumper_class_wmo; /* END_CLASS_IMP */ static void set_begin_end(grib_dumper* d, grib_accessor* a); -static void print_offset(FILE* out, long begin, long theEnd); static void print_hexadecimal(FILE* out, unsigned long flags, grib_accessor* a); static void init_class(grib_dumper_class* c) {} @@ -103,6 +102,18 @@ static int destroy(grib_dumper* d) return GRIB_SUCCESS; } +static void print_offset(FILE* out, long begin, long theEnd, int width=10) +{ + char tmp[50]; + + if (begin == theEnd) + fprintf(out, "%-*ld", width, begin); + else { + snprintf(tmp, sizeof(tmp), "%ld-%ld", begin, theEnd); + fprintf(out, "%-*s", width, tmp); + } +} + static void aliases(grib_dumper* d, grib_accessor* a) { int i; @@ -438,7 +449,7 @@ static void dump_values(grib_dumper* d, grib_accessor* a) is_char = 1; } - print_offset(self->dumper.out, self->begin, self->theEnd); + print_offset(self->dumper.out, self->begin, self->theEnd, 12); // ECC-1749 if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { char type_name[32] = ""; const long native_type = grib_accessor_get_native_type(a); @@ -563,17 +574,6 @@ static void set_begin_end(grib_dumper* d, grib_accessor* a) } } -static void print_offset(FILE* out, long begin, long theEnd) -{ - char tmp[50]; - if (begin == theEnd) - fprintf(out, "%-10ld", begin); - else { - snprintf(tmp, sizeof(tmp), "%ld-%ld", begin, theEnd); - fprintf(out, "%-10s", tmp); - } -} - static void print_hexadecimal(FILE* out, unsigned long flags, grib_accessor* a) { int i = 0; diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index 6355ea2f2..c2844ec0d 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -117,6 +117,13 @@ input=$data_dir/lfpw.grib1 ${tools_dir}/grib_dump -w count=1 -p SPD $input +# ECC-1749: grib_dump: No gap between offsets and key name +#----------------------------------------------------------- +file=$data_dir/sst_globus0083.grib +${tools_dir}/grib_dump -O $file > $temp 2>&1 +grep -q "12-10227752 codedValues" $temp + + # Error conditions #----------------------------------------------------------- file=$data_dir/sample.grib2 From 3c922034265362ab1f7a2bc58ab4c6acdc581d76 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 13:51:56 +0000 Subject: [PATCH 372/469] Tools: Increase coverage --- tests/metar_compare.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index b63656201..3c91703c5 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -32,6 +32,13 @@ echo "Test: comparing the same files" >> $fLog echo "file: $metar_file" >> $fLog ${tools_dir}/metar_compare $metar_file $metar_file + +#---------------------------------------------------- +# Test: comparing with skip +#---------------------------------------------------- +metar_file="metar.txt" +${tools_dir}/metar_compare -w CCCC=VILK $metar_file $metar_file + #---------------------------------------------------- # Test: comparing two different files #---------------------------------------------------- From c3f13b323be8138cdb0f1cf67765e5027663adca Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 13:57:44 +0000 Subject: [PATCH 373/469] Tools: Dead code removal --- tools/metar_compare.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index d78b8369c..f54390ce9 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -219,10 +219,6 @@ int grib_tool_init(grib_runtime_options* options) else onlyListed = 1; - if (grib_options_on("H") && grib_options_on("c:")) { - printf("Error: -H and -c options are incompatible. Choose one of the two please.\n"); - exit(1); - } if (grib_options_on("a") && !grib_options_on("c:")) { printf("Error: -a option requires -c option. Please define a list of keys with the -c option.\n"); exit(1); From 3759b41c96b33f1c1f08078669bb5c5b5e14ca30 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 13:57:58 +0000 Subject: [PATCH 374/469] Tools: Increase coverage --- tests/metar_compare.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index 3c91703c5..758509ac4 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -136,5 +136,14 @@ set -e [ $status -ne 0 ] grep -q "No such file or directory" $fLog +# Options +set +e +${tools_dir}/metar_compare -a $metar_file $metar_file > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "option requires" $fLog + + # Clean up rm -f $fLog $fMetarTmp From 2be9319973111d4998ebc8326c9b7ddeb593e36b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 14:09:15 +0000 Subject: [PATCH 375/469] Tools: Dead code removal --- tools/gts_compare.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index 5a748ff98..934aee66d 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -20,7 +20,6 @@ grib_option grib_options[] = { { "S:", "start", "First field to be processed.\n", 0, 1, 0 }, { "E:", "end", "Last field to be processed.\n", 0, 1, 0 }, { "a", 0, "-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n", 0, 1, 0 }, - /*{"H",0,"Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n",0,1,0},*/ /*{"R:",0,0,0,1,0},*/ /*{"A:",0,0,0,1,0},*/ { "w:", 0, 0, 0, 1, 0 }, @@ -184,10 +183,6 @@ int grib_tool_init(grib_runtime_options* options) else onlyListed = 1; - if (grib_options_on("H") && grib_options_on("c:")) { - printf("Error: -H and -c options are incompatible. Choose one of the two please.\n"); - exit(1); - } if (grib_options_on("a") && !grib_options_on("c:")) { printf("Error: -a option requires -c option. Please define a list of keys with the -c option.\n"); exit(1); From ecf1f5ec8626a6d83675cf8a7ce7d3e62d2ac0a6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 14:09:25 +0000 Subject: [PATCH 376/469] Tools: Increase coverage --- tests/grib_repair.sh | 32 +++++++++++++++++++++----------- tests/gts_compare.sh | 15 +++++++++++++++ 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/tests/grib_repair.sh b/tests/grib_repair.sh index 876ebdff0..3212861e4 100755 --- a/tests/grib_repair.sh +++ b/tests/grib_repair.sh @@ -15,20 +15,30 @@ tempText=temp.$label.txt tempGoodGribs=temp.$label.good.grib tempBadGribs=temp.$label.bad.grib -if [ -e "${tools_dir}/grib_repair" ]; then - export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 - ${tools_dir}/grib_repair $data_dir/bad.grib $tempGoodGribs $tempBadGribs > $tempText 2>&1 - grep -q "Wrong message length" $tempText +if [ ! -e "${tools_dir}/grib_repair" ]; then + exit 0 +fi - count=$( ${tools_dir}/grib_count $tempGoodGribs ) - [ $count -eq 1 ] +set +e +${tools_dir}/grib_repair +status=$? +set -e +[ $status -ne 0 ] - count=$( ${tools_dir}/grib_count $tempBadGribs ) - [ $count -eq 3 ] - ${tools_dir}/grib_ls $tempGoodGribs - ${tools_dir}/grib_ls $tempBadGribs -fi +export ECCODES_GRIB_REPAIR_MAX_NUM_MESSAGES=3 +${tools_dir}/grib_repair $data_dir/bad.grib $tempGoodGribs $tempBadGribs > $tempText 2>&1 +grep -q "Wrong message length" $tempText + +count=$( ${tools_dir}/grib_count $tempGoodGribs ) +[ $count -eq 1 ] + +count=$( ${tools_dir}/grib_count $tempBadGribs ) +[ $count -eq 3 ] + +${tools_dir}/grib_ls $tempGoodGribs +${tools_dir}/grib_ls $tempBadGribs + # Clean up rm -f $tempText $tempGoodGribs $tempBadGribs diff --git a/tests/gts_compare.sh b/tests/gts_compare.sh index 196fa2756..678d8b571 100755 --- a/tests/gts_compare.sh +++ b/tests/gts_compare.sh @@ -31,6 +31,12 @@ echo "Test: comparing the same files" >> $fLog echo "file: $gts_file" >> $fLog ${tools_dir}/gts_compare $gts_file $gts_file +#---------------------------------------------------- +# Test: comparing with skip +#---------------------------------------------------- +gts_file="EGRR20150317121020_00493212.DAT" +${tools_dir}/gts_compare -w TT=SA $gts_file $gts_file + #---------------------------------------------------- # Test: comparing two different files #---------------------------------------------------- @@ -99,6 +105,15 @@ cp $gts_file $tempDir ${tools_dir}/gts_compare $gts_file $tempDir rm -r $tempDir +# Options +set +e +${tools_dir}/gts_compare -a $gts_file $gts_file > $fLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "option requires" $fLog + + # Non-existence set +e ${tools_dir}/gts_compare non-exist1 non-exist2 > $fLog 2>&1 From 4e308ae0a82902ebc525b63d5dfc72fbf0c9edca Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 14:50:49 +0000 Subject: [PATCH 377/469] Testing: Geoiterator options --- tests/grib_iterator.sh | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tests/grib_iterator.sh b/tests/grib_iterator.sh index 8c9a4fbf8..152e95c0c 100755 --- a/tests/grib_iterator.sh +++ b/tests/grib_iterator.sh @@ -75,16 +75,42 @@ grep -q "latlonvalues: Unable to create iterator" $tempText # -w option -${tools_dir}/grib_get_data -w count=11 $data_dir/tigge_cf_ecmwf.grib2 > $tempText +input=$data_dir/tigge_cf_ecmwf.grib2 +${tools_dir}/grib_get_data -w count=11 $input > $tempText +# Skip missing +input=$data_dir/simple_bitmap.grib +grib_check_key_equals $input bitmapPresent 1 +${tools_dir}/grib_get_data $input > $tempText + +# Print a double key +input=$data_dir/simple_bitmap.grib +${tools_dir}/grib_get_data -p referenceValue $input > $tempText + +# Print a key with missing value +input=$data_dir/sample.grib2 +${tools_dir}/grib_get_data -p scaleFactorOfEarthMajorAxis $input > $tempText # ------------------------ # Bad key # ------------------------ -${tools_dir}/grib_get_data -f -p nonexistingkey $data_dir/sample.grib2 > $tempText +input=$data_dir/sample.grib2 +${tools_dir}/grib_get_data -f -p nonexistingkey $input > $tempText grep -q "not found" $tempText +# ------------------------ +# Bad options +# ------------------------ +input=$data_dir/sample.grib2 +set +e +${tools_dir}/grib_get_data -Lxxx $input > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid lats/lons format option" $tempText + + # ------------------------ # Unreadable message # ------------------------ @@ -100,7 +126,7 @@ grep -q "unreadable message" $tempText # Legacy Gaussian sub-area (produced by old ProdGen) # See ECC-906: # grib_get_data not working correctly with old-style sub-areas of reduced grids -# ------------------------------------------------- +# ------------------------------------------------------------------------------ input=$data_dir/reduced_gaussian_sub_area.legacy.grib1 if [ -f "$input" ]; then ${tools_dir}/grib_get_data $input > $tempText From 86131db2f21430ef5906c2459559981f25887162 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 19:07:44 +0000 Subject: [PATCH 378/469] Accessors: Dead code removal --- src/grib_accessor_class_uint16.cc | 10 +--------- src/grib_accessor_class_uint32.cc | 9 +-------- src/grib_accessor_class_uint32_little_endian.cc | 10 +--------- src/grib_accessor_class_uint64.cc | 9 +-------- src/grib_accessor_class_uint64_little_endian.cc | 10 +--------- src/grib_accessor_class_uint8.cc | 10 +--------- 6 files changed, 6 insertions(+), 52 deletions(-) diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index e95105b32..ca8b1ac4d 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint16 @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint16 = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -116,12 +114,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_NOT_IMPLEMENTED; } - -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index 01889e79c..eed3dfbca 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint32 @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint32 = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -116,11 +114,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_NOT_IMPLEMENTED; } -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index 79907c466..9b6e1f59c 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint32_little_endian @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -116,12 +114,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_NOT_IMPLEMENTED; } - -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index 1e8ef3a93..2478569c3 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint64 @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint64 = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -132,11 +130,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index cd579403e..bb58d9b48 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint64_little_endian @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -132,12 +130,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index 1c0ac0a2e..39ca6f06d 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -17,7 +17,6 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = unpack_long - IMPLEMENTS = pack_long IMPLEMENTS = get_native_type END_CLASS_DEF @@ -34,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int get_native_type(grib_accessor*); -static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); typedef struct grib_accessor_uint8 @@ -65,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_uint8 = { 0, /* get sub_section */ 0, /* pack_missing */ 0, /* is_missing */ - &pack_long, /* pack_long */ + 0, /* pack_long */ &unpack_long, /* unpack_long */ 0, /* pack_double */ 0, /* pack_float */ @@ -118,12 +116,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } - -static int pack_long(grib_accessor* a, const long* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; From ee7d5a5b11aded64dc8af39ba8466a8c3dcc98e2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 20 Jan 2024 21:22:14 +0000 Subject: [PATCH 379/469] Performance: Replace multiple calls to grib_handle_of_accessor --- ...ccessor_class_bufr_extract_area_subsets.cc | 32 +++++++------- ...rib_accessor_class_bufr_simple_thinning.cc | 15 ++++--- ...ccessor_class_change_scanning_direction.cc | 23 +++++----- src/grib_accessor_class_data_png_packing.cc | 32 +++++++------- ...rib_accessor_class_simple_packing_error.cc | 44 ++++++++----------- tests/wrap.sh | 2 + 6 files changed, 73 insertions(+), 75 deletions(-) diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.cc b/src/grib_accessor_class_bufr_extract_area_subsets.cc index 5659ace91..473a5148d 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_area_subsets.cc @@ -119,20 +119,21 @@ grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets = &_grib_acce static void init(grib_accessor* a, const long len, grib_arguments* arg) { - int n = 0; grib_accessor_bufr_extract_area_subsets* self = (grib_accessor_bufr_extract_area_subsets*)a; + grib_handle* h = grib_handle_of_accessor(a); + int n = 0; a->length = 0; - self->doExtractSubsets = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractSubsetList = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaWestLongitude = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaEastLongitude = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaNorthLatitude = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaSouthLatitude = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaLongitudeRank = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractAreaLatitudeRank = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractedAreaNumberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); + self->doExtractSubsets = grib_arguments_get_name(h, arg, n++); + self->numberOfSubsets = grib_arguments_get_name(h, arg, n++); + self->extractSubsetList = grib_arguments_get_name(h, arg, n++); + self->extractAreaWestLongitude = grib_arguments_get_name(h, arg, n++); + self->extractAreaEastLongitude = grib_arguments_get_name(h, arg, n++); + self->extractAreaNorthLatitude = grib_arguments_get_name(h, arg, n++); + self->extractAreaSouthLatitude = grib_arguments_get_name(h, arg, n++); + self->extractAreaLongitudeRank = grib_arguments_get_name(h, arg, n++); + self->extractAreaLatitudeRank = grib_arguments_get_name(h, arg, n++); + self->extractedAreaNumberOfSubsets = grib_arguments_get_name(h, arg, n++); a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; } @@ -152,11 +153,12 @@ static void fill_in(double a[], long length) static int select_area(grib_accessor* a) { - int ret = 0; - long compressed = 0; grib_accessor_bufr_extract_area_subsets* self = (grib_accessor_bufr_extract_area_subsets*)a; - grib_handle* h = grib_handle_of_accessor(a); - grib_context* c = h->context; + + int ret = 0; + long compressed = 0; + grib_handle* h = grib_handle_of_accessor(a); + grib_context* c = h->context; double* lat = NULL; double* lon = NULL; diff --git a/src/grib_accessor_class_bufr_simple_thinning.cc b/src/grib_accessor_class_bufr_simple_thinning.cc index e4d110262..b457d0e9e 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.cc +++ b/src/grib_accessor_class_bufr_simple_thinning.cc @@ -111,16 +111,17 @@ grib_accessor_class* grib_accessor_class_bufr_simple_thinning = &_grib_accessor_ static void init(grib_accessor* a, const long len, grib_arguments* arg) { - int n = 0; grib_accessor_bufr_simple_thinning* self = (grib_accessor_bufr_simple_thinning*)a; + grib_handle* h = grib_handle_of_accessor(a); + int n = 0; a->length = 0; - self->doExtractSubsets = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->extractSubsetList = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->simpleThinningStart = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->simpleThinningMissingRadius = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); - self->simpleThinningSkip = grib_arguments_get_name(grib_handle_of_accessor(a), arg, n++); + self->doExtractSubsets = grib_arguments_get_name(h, arg, n++); + self->numberOfSubsets = grib_arguments_get_name(h, arg, n++); + self->extractSubsetList = grib_arguments_get_name(h, arg, n++); + self->simpleThinningStart = grib_arguments_get_name(h, arg, n++); + self->simpleThinningMissingRadius = grib_arguments_get_name(h, arg, n++); + self->simpleThinningSkip = grib_arguments_get_name(h, arg, n++); a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; } diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index 91e597135..88fbc35fb 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -117,17 +117,18 @@ grib_accessor_class* grib_accessor_class_change_scanning_direction = &_grib_acce static void init(grib_accessor* a, const long len, grib_arguments* args) { - int n = 0; grib_accessor_change_scanning_direction* self = (grib_accessor_change_scanning_direction*)a; - - self->values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->Ni = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->Nj = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->i_scans_negatively = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->j_scans_positively = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->first = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->last = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->axis = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + grib_handle* h = grib_handle_of_accessor(a); + int n = 0; + + self->values = grib_arguments_get_name(h, args, n++); + self->Ni = grib_arguments_get_name(h, args, n++); + self->Nj = grib_arguments_get_name(h, args, n++); + self->i_scans_negatively = grib_arguments_get_name(h, args, n++); + self->j_scans_positively = grib_arguments_get_name(h, args, n++); + self->first = grib_arguments_get_name(h, args, n++); + self->last = grib_arguments_get_name(h, args, n++); + self->axis = grib_arguments_get_name(h, args, n++); a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->length = 0; @@ -150,7 +151,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) const char* cclass_name = a->cclass->name; if (*val == 0) - return 0; + return GRIB_SUCCESS; /* Make sure Ni / Nj are not missing */ if (grib_is_missing(h, self->Ni, &err) && !err) { diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 44e9b41f6..41c90617b 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -136,26 +136,25 @@ grib_accessor_class* grib_accessor_class_data_png_packing = &_grib_accessor_clas static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_png_packing* self = (grib_accessor_data_png_packing*)a; - - self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->reference_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->binary_scale_factor = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->decimal_scale_factor = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->bits_per_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - - self->ni = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->nj = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - - self->list_defining_points = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->number_of_data_points = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->scanning_mode = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + grib_handle* h = grib_handle_of_accessor(a); + + self->number_of_values = grib_arguments_get_name(h, args, self->carg++); + self->reference_value = grib_arguments_get_name(h, args, self->carg++); + self->binary_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->decimal_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->bits_per_value = grib_arguments_get_name(h, args, self->carg++); + self->ni = grib_arguments_get_name(h, args, self->carg++); + self->nj = grib_arguments_get_name(h, args, self->carg++); + self->list_defining_points = grib_arguments_get_name(h, args, self->carg++); + self->number_of_data_points = grib_arguments_get_name(h, args, self->carg++); + self->scanning_mode = grib_arguments_get_name(h, args, self->carg++); a->flags |= GRIB_ACCESSOR_FLAG_DATA; } static int value_count(grib_accessor* a, long* n_vals) { grib_accessor_data_png_packing* self = (grib_accessor_data_png_packing*)a; - *n_vals = 0; + *n_vals = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, n_vals); } @@ -228,10 +227,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) self->dirty = 0; - err = grib_value_count(a, &nn); + err = grib_value_count(a, &nn); n_vals = nn; - if (err) - return err; + if (err) return err; if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) return err; diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 3f5038a78..64f96eeea 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -8,11 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - - #include "grib_scaling.h" #include "grib_api_internal.h" /* @@ -116,13 +111,14 @@ grib_accessor_class* grib_accessor_class_simple_packing_error = &_grib_accessor_ static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; - int n = 0; + int n = 0; + grib_handle* h = grib_handle_of_accessor(a); - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->binaryScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->decimalScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->referenceValue = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->floatType = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->bitsPerValue = grib_arguments_get_name(h, c, n++); + self->binaryScaleFactor = grib_arguments_get_name(h, c, n++); + self->decimalScaleFactor = grib_arguments_get_name(h, c, n++); + self->referenceValue = grib_arguments_get_name(h, c, n++); + self->floatType = grib_arguments_get_name(h, c, n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->length = 0; @@ -131,25 +127,23 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; - int ret = 0; - long binaryScaleFactor = 0; - long bitsPerValue = 0; - long decimalScaleFactor = 0; - double referenceValue = 0; - - if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->binaryScaleFactor, &binaryScaleFactor)) != GRIB_SUCCESS) + + int ret = 0; + long binaryScaleFactor = 0; + long bitsPerValue = 0; + long decimalScaleFactor = 0; + double referenceValue = 0; + grib_handle* h = grib_handle_of_accessor(a); + + if ((ret = grib_get_long_internal(h, self->binaryScaleFactor, &binaryScaleFactor)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->bitsPerValue, &bitsPerValue)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->bitsPerValue, &bitsPerValue)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->decimalScaleFactor, &decimalScaleFactor)) != GRIB_SUCCESS) + if ((ret = grib_get_long_internal(h, self->decimalScaleFactor, &decimalScaleFactor)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_double_internal(grib_handle_of_accessor(a), - self->referenceValue, &referenceValue)) != GRIB_SUCCESS) + if ((ret = grib_get_double_internal(h, self->referenceValue, &referenceValue)) != GRIB_SUCCESS) return ret; if (!strcmp(self->floatType, "ibm")) diff --git a/tests/wrap.sh b/tests/wrap.sh index 9f9221e9c..c8bf966e1 100755 --- a/tests/wrap.sh +++ b/tests/wrap.sh @@ -22,5 +22,7 @@ ${tools_dir}/grib_dump -TA -O $input id=`${tools_dir}/grib_get -TA -p identifier $input` [ "$id" = "WRAP" ] +echo 'print "[data]";' | ${tools_dir}/grib_filter -TA - $input + # Clean up rm -f $tempOut $tempRef $tempTxt From b08ee05f373b831f4986ce023e0106dacfba51e6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 14:33:45 +0000 Subject: [PATCH 380/469] Debug messages --- examples/F90/grib_sections_copy.f90 | 28 ++++++++++++++++++++++++++++ examples/F90/grib_sections_copy.sh | 12 ++++++++++++ src/grib_util.cc | 10 ++++++++++ 3 files changed, 50 insertions(+) create mode 100644 examples/F90/grib_sections_copy.f90 create mode 100755 examples/F90/grib_sections_copy.sh diff --git a/examples/F90/grib_sections_copy.f90 b/examples/F90/grib_sections_copy.f90 new file mode 100644 index 000000000..05ca26a55 --- /dev/null +++ b/examples/F90/grib_sections_copy.f90 @@ -0,0 +1,28 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program grib_sections_copy + use eccodes + implicit none + + integer :: igrib1, igrib2, igrib3 + + call codes_grib_new_from_samples(igrib1, 'regular_ll_sfc_grib2') + call codes_grib_new_from_samples(igrib2, 'reduced_gg_pl_640_grib2') + + ! Turn all bits on: + ! GRIB_SECTION_PRODUCT, GRIB_SECTION_GRID, GRIB_SECTION_LOCAL + ! GRIB_SECTION_DATA, GRIB_SECTION_BITMAP + call codes_grib_util_sections_copy(igrib1, igrib2, 31, igrib3) + + call codes_release(igrib1) + call codes_release(igrib2) + call codes_release(igrib3) + +end program diff --git a/examples/F90/grib_sections_copy.sh b/examples/F90/grib_sections_copy.sh new file mode 100755 index 000000000..01da1a706 --- /dev/null +++ b/examples/F90/grib_sections_copy.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_sections_copy diff --git a/src/grib_util.cc b/src/grib_util.cc index 5b8f5b9cc..e5f507a73 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -190,6 +190,16 @@ grib_handle* grib_util_sections_copy(grib_handle* hfrom, grib_handle* hto, int w if (*err) return NULL; + if (hfrom->context->debug) { + fprintf(stderr, "ECCODES DEBUG %s: Copying the following sections: ", __func__); + if (what & GRIB_SECTION_GRID) fprintf(stderr, "Grid, "); + if (what & GRIB_SECTION_PRODUCT) fprintf(stderr, "Product, "); + if (what & GRIB_SECTION_LOCAL) fprintf(stderr, "Local, "); + if (what & GRIB_SECTION_DATA) fprintf(stderr, "Data, "); + if (what & GRIB_SECTION_BITMAP) fprintf(stderr, "Bitmap, "); + fprintf(stderr, "\n"); + } + if (edition_to != 1 && edition_to != 2) { *err = GRIB_NOT_IMPLEMENTED; return NULL; From fd0f41ef648a5aedb7b1486819cb74135291cc16 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 14:34:54 +0000 Subject: [PATCH 381/469] Fortran: grib_sections_copy --- examples/F90/CMakeLists.txt | 1 + fortran/grib_api_externals.h | 1 - fortran/grib_fortran.c | 19 ++++++++++--------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 88b77e9fa..e4104bd83 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -25,6 +25,7 @@ if( HAVE_BUILD_TOOLS ) codes_scan_file codes_load_file grib_copy_message + grib_sections_copy bufr_copy_message grib_get_keys grib_get_data diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h index 85a442c96..f789fb92e 100644 --- a/fortran/grib_api_externals.h +++ b/fortran/grib_api_externals.h @@ -21,7 +21,6 @@ integer, external :: grib_f_keys_iterator_get_name, & grib_f_keys_iterator_rewind integer, external :: grib_f_new_from_message, & grib_f_new_from_message_int, & - grib_f_new_from_message_copy, & grib_f_new_from_samples, & codes_bufr_f_new_from_samples, & grib_f_read_any_from_file, & diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index be814a1bd..e1835ae47 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1366,6 +1366,7 @@ int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize) return grib_f_new_from_message_(gid, (void*)buffer, bufsize); } /*****************************************************************************/ +#if 0 int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize) { grib_handle *h = NULL; @@ -1377,7 +1378,7 @@ int grib_f_new_from_message_copy_(int* gid, void* buffer, size_t* bufsize) *gid = -1; return GRIB_INTERNAL_ERROR; } - +#endif /*****************************************************************************/ int grib_f_new_from_samples_(int* gid, char* name, int lname) { @@ -1443,16 +1444,16 @@ int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len) } /*****************************************************************************/ -int grib_f_util_sections_copy_(int* gidfrom,int* gidto,int* what,int *gidout) +int grib_f_util_sections_copy_(int* gidfrom, int* gidto, int* what, int* gidout) { - int err=0; - grib_handle *hfrom = get_handle(*gidfrom); - grib_handle *hto = get_handle(*gidto); - grib_handle *out =0; + int err = 0; + grib_handle* hfrom = get_handle(*gidfrom); + grib_handle* hto = get_handle(*gidto); + grib_handle* out = 0; - if(hfrom && hto) out=grib_util_sections_copy(hfrom,hto,*what,&err); - if(out){ - push_handle(out,gidout); + if (hfrom && hto) out = grib_util_sections_copy(hfrom, hto, *what, &err); + if (out) { + push_handle(out, gidout); return GRIB_SUCCESS; } From cb81a32901adfd2c035c8cc550942302bd6669f2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 15:35:02 +0000 Subject: [PATCH 382/469] Examples: F90 grib_sections_copy --- examples/F90/grib_sections_copy.f90 | 25 ++++++++++++++++++------- examples/F90/grib_sections_copy.sh | 1 + 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/examples/F90/grib_sections_copy.f90 b/examples/F90/grib_sections_copy.f90 index 05ca26a55..93e72675f 100644 --- a/examples/F90/grib_sections_copy.f90 +++ b/examples/F90/grib_sections_copy.f90 @@ -11,18 +11,29 @@ program grib_sections_copy use eccodes implicit none - integer :: igrib1, igrib2, igrib3 + integer :: igrib_a, igrib_b, igrib_c, iret + character(len=40) :: error_message - call codes_grib_new_from_samples(igrib1, 'regular_ll_sfc_grib2') - call codes_grib_new_from_samples(igrib2, 'reduced_gg_pl_640_grib2') + call codes_grib_new_from_samples(igrib_a, 'regular_ll_sfc_grib1') + call codes_grib_new_from_samples(igrib_b, 'reduced_gg_pl_640_grib1') ! Turn all bits on: ! GRIB_SECTION_PRODUCT, GRIB_SECTION_GRID, GRIB_SECTION_LOCAL ! GRIB_SECTION_DATA, GRIB_SECTION_BITMAP - call codes_grib_util_sections_copy(igrib1, igrib2, 31, igrib3) + call codes_grib_util_sections_copy(igrib_a, igrib_b, 31, igrib_c) - call codes_release(igrib1) - call codes_release(igrib2) - call codes_release(igrib3) + call codes_release(igrib_a) + call codes_release(igrib_b) + call codes_release(igrib_c) + + ! Try from grib1 to grib2 + call codes_grib_new_from_samples(igrib_a, 'GRIB1') + call codes_grib_new_from_samples(igrib_b, 'GRIB2') + call codes_grib_util_sections_copy(igrib_a, igrib_b, 31, igrib_c, iret) + if (iret /= GRIB_DIFFERENT_EDITION) then + call codes_check(CODES_INTERNAL_ERROR, 'Error', 'codes_grib_util_sections_copy: Should have failed') + end if + call codes_get_error_string(iret, error_message) + write (*, *) 'error message: ', adjustl( adjustr(trim(error_message)) ) end program diff --git a/examples/F90/grib_sections_copy.sh b/examples/F90/grib_sections_copy.sh index 01da1a706..548401df9 100755 --- a/examples/F90/grib_sections_copy.sh +++ b/examples/F90/grib_sections_copy.sh @@ -9,4 +9,5 @@ . ./include.ctest.sh +export ECCODES_DEBUG=-1 ${examples_dir}/eccodes_f_grib_sections_copy From a8e1f837ff984166b7de0ade315afa18ec06e4e7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 16:22:33 +0000 Subject: [PATCH 383/469] Testing: octet_number --- src/grib_accessor_class_octet_number.cc | 12 +++--------- tests/grib_spectral.sh | 5 +++++ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/grib_accessor_class_octet_number.cc b/src/grib_accessor_class_octet_number.cc index 0f2a0d5be..cce0e742b 100644 --- a/src/grib_accessor_class_octet_number.cc +++ b/src/grib_accessor_class_octet_number.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -109,8 +105,8 @@ grib_accessor_class* grib_accessor_class_octet_number = &_grib_accessor_class_oc static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_octet_number* self = (grib_accessor_octet_number*)a; - int n = 0; + int n = 0; self->left = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); self->right = grib_arguments_get_long(grib_handle_of_accessor(a), c, n++); @@ -120,17 +116,15 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_octet_number* self = (grib_accessor_octet_number*)a; - int ret = 0; + int ret = GRIB_SUCCESS; long offset; offset = a->offset + self->right; - /*printf("-------- setting %s to %ld\n", self->left,offset);*/ if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->left, offset)) != GRIB_SUCCESS) return ret; *val = offset; - *len = 1; return ret; @@ -138,5 +132,5 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - return 0; + return GRIB_SUCCESS; } diff --git a/tests/grib_spectral.sh b/tests/grib_spectral.sh index c4dbe1a3c..c55c9239d 100755 --- a/tests/grib_spectral.sh +++ b/tests/grib_spectral.sh @@ -24,4 +24,9 @@ input_simple=$label.simple.grib ${tools_dir}/grib_set -rs packingType=spectral_simple $input_complex $input_simple $EXEC ${test_dir}/grib_spectral $input_simple $output +# GRIB1: octet_number pack_long +input_complex=$ECCODES_SAMPLES_PATH/sh_ml_grib1.tmpl +${tools_dir}/grib_set -s Nassigned=1 $input_complex $output + + rm -f $output $input_simple From 6cc13b3853caffcda1d0c3e5829a86304960176e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 16:23:06 +0000 Subject: [PATCH 384/469] Accessors: Error messages --- src/grib_accessor_class_uint16.cc | 2 -- src/grib_accessor_class_uint32.cc | 2 -- src/grib_accessor_class_uint32_little_endian.cc | 2 -- src/grib_accessor_class_uint64.cc | 2 -- src/grib_accessor_class_uint64_little_endian.cc | 2 -- src/grib_accessor_class_uint8.cc | 2 -- 6 files changed, 12 deletions(-) diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index ca8b1ac4d..4bac26b59 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -104,8 +104,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) /*unsigned char* data = grib_handle_of_accessor(a)->buffer->data;*/ if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %d values", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index eed3dfbca..b45b7451f 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -104,8 +104,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */ if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index 9b6e1f59c..3e39e0586 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -104,8 +104,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */ if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index 2478569c3..20bd7e194 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -106,8 +106,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) int i; if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index bb58d9b48..0553aefbf 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -106,8 +106,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) int i; if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index 39ca6f06d..3f4195eff 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -104,8 +104,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) unsigned char* data = grib_handle_of_accessor(a)->buffer->data; if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); - *len = 0; return GRIB_ARRAY_TOO_SMALL; } From 1df68d88c4e25c6d19747a6ff0efe487d6300df2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 16:38:00 +0000 Subject: [PATCH 385/469] Accessors: Dead code removal --- src/action_class_rename.cc | 19 ++++++++----------- src/grib_accessor_class_section.cc | 11 ++++------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/action_class_rename.cc b/src/action_class_rename.cc index b6533895e..3fb65a704 100644 --- a/src/action_class_rename.cc +++ b/src/action_class_rename.cc @@ -112,15 +112,14 @@ static void rename_accessor(grib_accessor* a, char* name) static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { grib_action_rename* a = (grib_action_rename*)act; - grib_accessor* ga = NULL; - - ga = grib_find_accessor(p->h, a->the_old); + grib_accessor* ga = grib_find_accessor(p->h, a->the_old); if (ga) { rename_accessor(ga, a->the_new); } else { - grib_context_log(act->context, GRIB_LOG_DEBUG, "Action_class_rename : create_accessor_buffer : No accessor named %s to rename ", a->the_old); + grib_context_log(act->context, GRIB_LOG_DEBUG, + "Action_class_rename::create_accessor: No accessor named %s to rename", a->the_old); } return GRIB_SUCCESS; @@ -128,14 +127,12 @@ static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) static void dump(grib_action* act, FILE* f, int lvl) { - grib_action_rename* a = (grib_action_rename*)act; - - int i = 0; - - for (i = 0; i < lvl; i++) - grib_context_print(act->context, f, " "); + // grib_action_rename* a = (grib_action_rename*)act; + // int i = 0; + // for (i = 0; i < lvl; i++) + // grib_context_print(act->context, f, " "); - grib_context_print(act->context, f, "rename %s as %s in %s\n", a->the_old, act->name, a->the_new); + // grib_context_print(act->context, f, "rename %s as %s in %s\n", a->the_old, act->name, a->the_new); } static void destroy(grib_context* context, grib_action* act) diff --git a/src/grib_accessor_class_section.cc b/src/grib_accessor_class_section.cc index 4b29c93bd..f9c8857a7 100644 --- a/src/grib_accessor_class_section.cc +++ b/src/grib_accessor_class_section.cc @@ -151,7 +151,6 @@ static int get_native_type(grib_accessor* a) static grib_section* sub_section(grib_accessor* a) { - /* grib_accessor_section* self = (grib_accessor_section*)a; */ return a->sub_section; } @@ -163,17 +162,15 @@ static void update_size(grib_accessor* a, size_t length) if (a->sub_section->aclength) { int e = grib_pack_long(a->sub_section->aclength, &len, &size); Assert(e == GRIB_SUCCESS); - printf("update_length %s %ld %ld\n", a->sub_section->aclength->name, - (long)a->sub_section->aclength->offset, - (long)a->sub_section->aclength->length - - ); + // printf("update_length %s %ld %ld\n", a->sub_section->aclength->name, + // (long)a->sub_section->aclength->offset, + // (long)a->sub_section->aclength->length); } a->sub_section->length = a->length = length; a->sub_section->padding = 0; - printf("update_size %s %ld\n", a->name, a->length); + // printf("update_size %s %ld\n", a->name, a->length); Assert(a->length >= 0); } From e59d9d3064b7b410cbbcc9e7d3027987de8bfe17 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 16:45:59 +0000 Subject: [PATCH 386/469] Const correctness --- src/grib_accessor_class_gen.cc | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 30d37f729..a8965ae89 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -193,8 +193,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* param) static void dump(grib_accessor* a, grib_dumper* dumper) { - int type = grib_accessor_get_native_type(a); - + const int type = grib_accessor_get_native_type(a); switch (type) { case GRIB_TYPE_STRING: grib_dump_string(dumper, a, NULL); @@ -246,8 +245,8 @@ static long byte_offset(grib_accessor* a) static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t* len) { unsigned char* buf = grib_handle_of_accessor(a)->buffer->data; - long length = grib_byte_count(a); - long offset = grib_byte_offset(a); + const long length = grib_byte_count(a); + const long offset = grib_byte_offset(a); if (*len < length) { grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it is %ld bytes long", a->name, length); @@ -264,8 +263,8 @@ static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t* len) static int clear(grib_accessor* a) { unsigned char* buf = grib_handle_of_accessor(a)->buffer->data; - long length = grib_byte_count(a); - long offset = grib_byte_offset(a); + const long length = grib_byte_count(a); + const long offset = grib_byte_offset(a); memset(buf + offset, 0, length); @@ -384,10 +383,9 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) static int unpack_string_array(grib_accessor* a, char** v, size_t* len) { - int err = 0; size_t length = 0; - err = ecc__grib_get_string_length(a, &length); + int err = ecc__grib_get_string_length(a, &length); if (err) return err; v[0] = (char*)grib_context_malloc_clear(a->context, length); @@ -519,13 +517,12 @@ static int pack_double(grib_accessor* a, const double* v, size_t* len) static int pack_string_array(grib_accessor* a, const char** v, size_t* len) { - long i; int err = 0; size_t length = 0; grib_accessor* as = 0; as = a; - i = (long)*len - 1; + long i = (long)*len - 1; while (as && i >= 0) { length = strlen(v[i]); err = grib_pack_string(as, v[i], &length); @@ -599,9 +596,8 @@ static int notify_change(grib_accessor* self, grib_accessor* observed) static void update_size(grib_accessor* a, size_t s) { - grib_context_log(a->context, GRIB_LOG_ERROR, + grib_context_log(a->context, GRIB_LOG_FATAL, "Accessor %s [%s] must implement 'update_size'", a->name, a->cclass->name); - Assert(0); } static grib_accessor* next(grib_accessor* a, int mod) From 5607af0f030a8ca3c0a77daf91e06e7f38ddfcfb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 17:49:23 +0000 Subject: [PATCH 387/469] Tools: Remove redundant method grib_tool_print_key_values --- tools/bufr_compare.cc | 5 ----- tools/bufr_copy.cc | 5 ----- tools/bufr_dump.cc | 5 ----- tools/bufr_filter.cc | 5 ----- tools/bufr_get.cc | 5 ----- tools/bufr_index_build.cc | 4 ---- tools/bufr_ls.cc | 6 ------ tools/bufr_set.cc | 5 ----- tools/grib_compare.cc | 5 ----- tools/grib_copy.cc | 5 ----- tools/grib_dump.cc | 5 ----- tools/grib_filter.cc | 5 ----- tools/grib_get.cc | 5 ----- tools/grib_get_data.cc | 5 ----- tools/grib_histogram.cc | 5 ----- tools/grib_index_build.cc | 4 ---- tools/grib_ls.cc | 6 ------ tools/grib_merge.cc | 5 ----- tools/grib_set.cc | 5 ----- tools/grib_to_netcdf.cc | 4 ---- tools/grib_tools.cc | 2 +- tools/grib_tools.h | 1 - tools/gts_copy.cc | 1 - tools/gts_ls.cc | 2 -- tools/metar_compare.cc | 5 ----- tools/metar_copy.cc | 5 ----- tools/metar_dump.cc | 5 ----- tools/metar_filter.cc | 5 ----- tools/metar_get.cc | 5 ----- tools/metar_ls.cc | 6 ------ tools/taf_ls.cc | 1 - 31 files changed, 1 insertion(+), 136 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index 9a59a9149..c6714fedb 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -525,11 +525,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_error* e = error_summary; diff --git a/tools/bufr_copy.cc b/tools/bufr_copy.cc index c4c8cbf8d..563ea8f69 100644 --- a/tools/bufr_copy.cc +++ b/tools/bufr_copy.cc @@ -103,11 +103,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { /* if (options->outfile->file) diff --git a/tools/bufr_dump.cc b/tools/bufr_dump.cc index 12f68083d..ae4c485cc 100644 --- a/tools/bufr_dump.cc +++ b/tools/bufr_dump.cc @@ -569,11 +569,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { if (json) diff --git a/tools/bufr_filter.cc b/tools/bufr_filter.cc index effceb7b9..3e7817dbf 100644 --- a/tools/bufr_filter.cc +++ b/tools/bufr_filter.cc @@ -101,11 +101,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { int err = 0; diff --git a/tools/bufr_get.cc b/tools/bufr_get.cc index ba76afca7..8b7e6de76 100644 --- a/tools/bufr_get.cc +++ b/tools/bufr_get.cc @@ -99,11 +99,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/bufr_index_build.cc b/tools/bufr_index_build.cc index d05a2f622..90ca749ac 100644 --- a/tools/bufr_index_build.cc +++ b/tools/bufr_index_build.cc @@ -107,10 +107,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_index_key* the_keys; diff --git a/tools/bufr_ls.cc b/tools/bufr_ls.cc index 4537cc666..c57114617 100644 --- a/tools/bufr_ls.cc +++ b/tools/bufr_ls.cc @@ -129,12 +129,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -/* key values can be printed here. Headers are already printed if requested */ -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - /* This is executed after the last message in the last file is processed */ int grib_tool_finalise_action(grib_runtime_options* options) { diff --git a/tools/bufr_set.cc b/tools/bufr_set.cc index 687127987..7b6c62a4e 100644 --- a/tools/bufr_set.cc +++ b/tools/bufr_set.cc @@ -110,11 +110,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { int err = 0; diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index cace206fe..e70119d6d 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -569,11 +569,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_error* e = error_summary; diff --git a/tools/grib_copy.cc b/tools/grib_copy.cc index 349a32259..7c6f4268f 100644 --- a/tools/grib_copy.cc +++ b/tools/grib_copy.cc @@ -123,11 +123,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { int err = 0; diff --git a/tools/grib_dump.cc b/tools/grib_dump.cc index f15a870a9..dcdd47b50 100644 --- a/tools/grib_dump.cc +++ b/tools/grib_dump.cc @@ -231,11 +231,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { if (json) { diff --git a/tools/grib_filter.cc b/tools/grib_filter.cc index ae0a1c5e3..3d0b11383 100644 --- a/tools/grib_filter.cc +++ b/tools/grib_filter.cc @@ -99,11 +99,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { int err = 0; diff --git a/tools/grib_get.cc b/tools/grib_get.cc index 19ae34a3e..b80272763 100644 --- a/tools/grib_get.cc +++ b/tools/grib_get.cc @@ -221,11 +221,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { if (nearest) diff --git a/tools/grib_get_data.cc b/tools/grib_get_data.cc index 814664ef0..1b1f02ee1 100644 --- a/tools/grib_get_data.cc +++ b/tools/grib_get_data.cc @@ -282,11 +282,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/grib_histogram.cc b/tools/grib_histogram.cc index 789cdcc26..08ce17f89 100644 --- a/tools/grib_histogram.cc +++ b/tools/grib_histogram.cc @@ -175,11 +175,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/grib_index_build.cc b/tools/grib_index_build.cc index 0d294fbaf..1ecafaf8f 100644 --- a/tools/grib_index_build.cc +++ b/tools/grib_index_build.cc @@ -104,10 +104,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_index_key* the_keys; diff --git a/tools/grib_ls.cc b/tools/grib_ls.cc index ab53e200f..59f25306b 100644 --- a/tools/grib_ls.cc +++ b/tools/grib_ls.cc @@ -397,12 +397,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -/* key values can be printed here. Headers are already printed if requested */ -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - /* This is executed after the last message in the last file is processed */ int grib_tool_finalise_action(grib_runtime_options* options) { diff --git a/tools/grib_merge.cc b/tools/grib_merge.cc index 7848935ff..e7ae4ac7b 100644 --- a/tools/grib_merge.cc +++ b/tools/grib_merge.cc @@ -366,11 +366,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_tools_write_message(options, hh); diff --git a/tools/grib_set.cc b/tools/grib_set.cc index 537eb8a9f..70adef8e3 100644 --- a/tools/grib_set.cc +++ b/tools/grib_set.cc @@ -158,11 +158,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { int err = 0; diff --git a/tools/grib_to_netcdf.cc b/tools/grib_to_netcdf.cc index 47c9e8335..c1e09d7cc 100644 --- a/tools/grib_to_netcdf.cc +++ b/tools/grib_to_netcdf.cc @@ -4273,10 +4273,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ -} - int grib_tool_finalise_action(grib_runtime_options* options) { request* config_r = NULL; diff --git a/tools/grib_tools.cc b/tools/grib_tools.cc index be3891497..7a79fd718 100644 --- a/tools/grib_tools.cc +++ b/tools/grib_tools.cc @@ -292,7 +292,7 @@ static int grib_tool_with_orderby(grib_runtime_options* options) grib_tool_new_handle_action(options, h); - grib_tool_print_key_values(options, h); + grib_print_key_values(options, h); grib_handle_delete(h); } diff --git a/tools/grib_tools.h b/tools/grib_tools.h index ef9ed42c1..34465b628 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -200,7 +200,6 @@ int grib_tool_init(grib_runtime_options* options); int grib_tool_new_file_action(grib_runtime_options* options, grib_tools_file* file); int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h); int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h); -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h); int grib_tool_finalise_action(grib_runtime_options* options); void grib_skip_check(grib_runtime_options* options, grib_handle* h); void grib_print_key_values(grib_runtime_options* options, grib_handle* h); diff --git a/tools/gts_copy.cc b/tools/gts_copy.cc index bf17f85e9..568babe2b 100644 --- a/tools/gts_copy.cc +++ b/tools/gts_copy.cc @@ -31,7 +31,6 @@ grib_option grib_options[] = { "double (key:d) or an integer (key:i)\n\t\ttype can be defined. Default type " "is string.\n", 0, 1, 0 }, - { "B:", 0, 0, 0, 1, 0 }, { "V", 0, 0, 0, 1, 0 }, { "W:", 0, 0, 0, 1, 0 }, { "U", 0, 0, 1, 0, 0 }, diff --git a/tools/gts_ls.cc b/tools/gts_ls.cc index 50a8a70cf..c0b912887 100644 --- a/tools/gts_ls.cc +++ b/tools/gts_ls.cc @@ -17,8 +17,6 @@ grib_option grib_options[] = { { "F:", 0, 0, 1, 1, "%g" }, { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, - /*{"j",0,"json output\n",0,1,0},*/ - { "B:", 0, 0, 0, 1, 0 }, { "s:", 0, 0, 0, 1, 0 }, { "n:", 0, 0, 1, 1, "ls" }, { "V", 0, 0, 0, 1, 0 }, diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index f54390ce9..973794988 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -367,11 +367,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_error* e = error_summary; diff --git a/tools/metar_copy.cc b/tools/metar_copy.cc index ff46dd0e1..2e9fbb38b 100644 --- a/tools/metar_copy.cc +++ b/tools/metar_copy.cc @@ -92,11 +92,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/metar_dump.cc b/tools/metar_dump.cc index 52c5b45be..74b30e2ba 100644 --- a/tools/metar_dump.cc +++ b/tools/metar_dump.cc @@ -138,11 +138,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/metar_filter.cc b/tools/metar_filter.cc index 6cfd6514f..c670b112b 100644 --- a/tools/metar_filter.cc +++ b/tools/metar_filter.cc @@ -93,11 +93,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_file_pool_clean(); diff --git a/tools/metar_get.cc b/tools/metar_get.cc index 79fd1342c..f11763357 100644 --- a/tools/metar_get.cc +++ b/tools/metar_get.cc @@ -95,11 +95,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/metar_ls.cc b/tools/metar_ls.cc index 630cf62a7..ad378d537 100644 --- a/tools/metar_ls.cc +++ b/tools/metar_ls.cc @@ -110,12 +110,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -/* key values can be printed in this function. Headers are already printed if requested.*/ -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - /* this is executed after the last message in the last file is processed */ int grib_tool_finalise_action(grib_runtime_options* options) { diff --git a/tools/taf_ls.cc b/tools/taf_ls.cc index 1c1ad049d..3886198c3 100644 --- a/tools/taf_ls.cc +++ b/tools/taf_ls.cc @@ -18,7 +18,6 @@ grib_option grib_options[] = { { "P:", 0, 0, 0, 1, 0 }, { "w:", 0, 0, 0, 1, 0 }, { "j", 0, "json output\n", 0, 1, 0 }, - { "B:", 0, 0, 0, 1, 0 }, { "l:", 0, 0, 0, 1, 0 }, { "s:", 0, 0, 0, 1, 0 }, { "i:", 0, 0, 0, 1, 0 }, From a5de5c90be361eb8291c4f486d3b4d34310b0322 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 Jan 2024 19:12:58 +0000 Subject: [PATCH 388/469] Tools: Remove redundant method grib_tool_print_key_values --- tests/codes_info.sh | 15 +++++++++++++++ tools/gts_compare.cc | 5 ----- tools/gts_copy.cc | 5 ----- tools/gts_dump.cc | 5 ----- tools/gts_filter.cc | 5 ----- tools/gts_get.cc | 5 ----- tools/gts_ls.cc | 6 ------ tools/taf_dump.cc | 5 ----- tools/taf_filter.cc | 5 ----- tools/taf_get.cc | 5 ----- tools/taf_ls.cc | 5 ----- 11 files changed, 15 insertions(+), 51 deletions(-) diff --git a/tests/codes_info.sh b/tests/codes_info.sh index 4d81e2061..b9cff23fd 100755 --- a/tests/codes_info.sh +++ b/tests/codes_info.sh @@ -29,6 +29,14 @@ status=$? set -e [ $status -eq 1 ] +# Wrong arguments +set +e +${tools_dir}/codes_info abcd > $tempLog 2>&1 +status=$? +set -e +[ $status -eq 1 ] + + # Verbose debug output ECCODES_DEBUG=1 ${tools_dir}/codes_info @@ -49,6 +57,13 @@ ECCODES_DEBUG=1 ${tools_dir}/codes_info unset _ECCODES_ECMWF_TEST_DEFINITION_PATH unset _ECCODES_ECMWF_TEST_SAMPLES_PATH +${tools_dir}/codes_info -d +${tools_dir}/codes_info -s + +export ECCODES_EXTRA_SAMPLES_PATH=abcd +ECCODES_DEBUG=1 ${tools_dir}/codes_info +unset ECCODES_EXTRA_SAMPLES_PATH + # Clean up rm -f $tempLog diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index 934aee66d..cedbfa4b6 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -297,11 +297,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_error* e = error_summary; diff --git a/tools/gts_copy.cc b/tools/gts_copy.cc index 568babe2b..a05df672c 100644 --- a/tools/gts_copy.cc +++ b/tools/gts_copy.cc @@ -91,11 +91,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/gts_dump.cc b/tools/gts_dump.cc index a58f93ddf..d289ee2da 100644 --- a/tools/gts_dump.cc +++ b/tools/gts_dump.cc @@ -133,11 +133,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/gts_filter.cc b/tools/gts_filter.cc index c57dc7dce..91a24b41d 100644 --- a/tools/gts_filter.cc +++ b/tools/gts_filter.cc @@ -95,11 +95,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_file_pool_clean(); diff --git a/tools/gts_get.cc b/tools/gts_get.cc index ccdf51d83..38aa6feba 100644 --- a/tools/gts_get.cc +++ b/tools/gts_get.cc @@ -92,11 +92,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/gts_ls.cc b/tools/gts_ls.cc index c0b912887..b1b0920ac 100644 --- a/tools/gts_ls.cc +++ b/tools/gts_ls.cc @@ -107,12 +107,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -/* key values can be printed in this function. Headers are already printed if requested.*/ -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - /* this is executed after the last message in the last file is processed */ int grib_tool_finalise_action(grib_runtime_options* options) { diff --git a/tools/taf_dump.cc b/tools/taf_dump.cc index fa5636509..bc7c62227 100644 --- a/tools/taf_dump.cc +++ b/tools/taf_dump.cc @@ -143,11 +143,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/taf_filter.cc b/tools/taf_filter.cc index 7851f1ca6..5405e2be0 100644 --- a/tools/taf_filter.cc +++ b/tools/taf_filter.cc @@ -94,11 +94,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { grib_file_pool_clean(); diff --git a/tools/taf_get.cc b/tools/taf_get.cc index 9e873f957..4e0853753 100644 --- a/tools/taf_get.cc +++ b/tools/taf_get.cc @@ -96,11 +96,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { return 0; diff --git a/tools/taf_ls.cc b/tools/taf_ls.cc index 3886198c3..1262a85f3 100644 --- a/tools/taf_ls.cc +++ b/tools/taf_ls.cc @@ -145,11 +145,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) return 0; } -void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) -{ - grib_print_key_values(options, h); -} - int grib_tool_finalise_action(grib_runtime_options* options) { if (json) From 58d3c71681beb408b6213788878b4590c59e1d7d Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Mon, 22 Jan 2024 11:49:55 +0000 Subject: [PATCH 389/469] adding new class ai for operational AIFS --- definitions/mars/class.table | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/mars/class.table b/definitions/mars/class.table index f2338f0ad..efe2be6b1 100644 --- a/definitions/mars/class.table +++ b/definitions/mars/class.table @@ -49,6 +49,7 @@ 48 eh C3S European hydrology 49 gh C3S Global hydrology 50 ci CERISE project +51 ai Operational AIFS 99 te Test 100 at Austria 101 be Belgium From 5c61344551bebc84c275f00c3e43e1dc6d0a9d3a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 22 Jan 2024 20:25:26 +0000 Subject: [PATCH 390/469] Cleanup --- examples/C/bufr_subset.c | 2 +- examples/C/new_sample.c | 3 +++ src/grib_handle.cc | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/examples/C/bufr_subset.c b/examples/C/bufr_subset.c index e1676188f..d2ff95942 100644 --- a/examples/C/bufr_subset.c +++ b/examples/C/bufr_subset.c @@ -63,7 +63,7 @@ int main(int argc, char* argv[]) snprintf(key, sizeof(key), "/subsetNumber=%d/blockNumber", i); CODES_CHECK(codes_get_native_type(h, key, &ktype), 0); - //printf("Type = %d\n", ktype); + /* printf("Type = %d\n", ktype); */ printf(" subsetNumber=%d", i); /* read and print some data values */ diff --git a/examples/C/new_sample.c b/examples/C/new_sample.c index 53014845c..9560e3924 100644 --- a/examples/C/new_sample.c +++ b/examples/C/new_sample.c @@ -26,6 +26,9 @@ int main(int argc, char** argv) } /* h = codes_grib_handle_new_from_samples(NULL, "GRIB2"); */ + h = codes_handle_new_from_samples(NULL, "just a test"); + if (h) return 1; + h = codes_handle_new_from_samples(NULL, "GRIB2"); if (!h) { fprintf(stderr, "Cannot create grib handle\n"); diff --git a/src/grib_handle.cc b/src/grib_handle.cc index e2dd6ec7c..328502c29 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -229,12 +229,13 @@ grib_handle* codes_handle_new_from_samples(grib_context* c, const char* name) } g = codes_external_template(c, PRODUCT_ANY, name); - if (!g) + if (!g) { grib_context_log(c, GRIB_LOG_ERROR, "Unable to load sample file '%s.tmpl'\n" " from %s\n" " (ecCodes Version=%s)", name, c->grib_samples_path, ECCODES_VERSION_STR); + } return g; } @@ -514,7 +515,7 @@ grib_handle* grib_handle_new_from_partial_message_copy(grib_context* c, const vo memcpy(copy, data, size); - g = grib_handle_new_from_partial_message(c, copy, size); + g = grib_handle_new_from_partial_message(c, copy, size); g->buffer->property = CODES_MY_BUFFER; return g; From 1e55b8d89fffe57d7e7767bbdbfc34e19be05d94 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 09:24:39 +0000 Subject: [PATCH 391/469] Testing: get_message_offset --- tests/grib_copy_message.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/grib_copy_message.cc b/tests/grib_copy_message.cc index b3ea95cdc..6be23d543 100644 --- a/tests/grib_copy_message.cc +++ b/tests/grib_copy_message.cc @@ -20,6 +20,7 @@ int main(int argc, char* argv[]) size_t totalLength = 0, size = 0; unsigned char* buffer = NULL; codes_handle* new_handle = NULL; + off_t offset = 0; assert (argc == 3); @@ -31,6 +32,9 @@ int main(int argc, char* argv[]) source_handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); assert(source_handle); + CODES_CHECK(codes_get_message_offset(source_handle, &offset), 0); + printf("offset = %lld\n", offset); + // How big is the input GRIB message? CODES_CHECK(codes_get_message_size(source_handle, &totalLength), 0); From 80c9c5ea5644472840340cceede3d5ffe7d947ee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 13:35:09 +0000 Subject: [PATCH 392/469] Testing: GRIB multi-fields and GTS header --- tests/grib_bitmap.sh | 12 +++++++++++- tests/grib_ls.sh | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index e2765806e..46d213a0d 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -23,6 +23,7 @@ tempData1=out.bmp.grib1.data tempData2=out.bmp.grib2.data tempRules=bitmap.rules tempRef=grib_bitmap.ref +tempOut=grib_bitmap.txt rm -f $outfile @@ -144,7 +145,16 @@ stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $tempComplexSD` rm -f $tempComplexSD rm -f $tempSimple +# Secondary bitmap +grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +${tools_dir}/grib_set -s bitMapIndicator=254 $grib2_sample $tempData1 +set +e +${tools_dir}/grib_dump -O $tempData1 > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "missing bitmap" $tempOut # Clean up -rm -f $tempData1 $tempData2 $temp1 $temp2 $tempRules +rm -f $tempData1 $tempData2 $temp1 $temp2 $tempRules $tempOut diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index 799b57ccd..bdbdba4d4 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -229,6 +229,9 @@ grep -q "invalid_type" $tempText ${tools_dir}/grib_ls -j -l0,0 -p nosuchkey $data_dir/sample.grib2 > $tempText 2>&1 grep -q "nosuchkey.* null" $tempText +# -M and -g options +${tools_dir}/grib_ls -M -g $data_dir/gts.grib + ${tools_dir}/grib_get -l0,0,4 $data_dir/sample.grib2 From ad54ad7725dfebb829c2861b25a5af60b069aab3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 13:49:13 +0000 Subject: [PATCH 393/469] Sub hourly: Rename environment variable --- src/grib_accessor_class_g2end_step.cc | 6 +++--- src/grib_accessor_class_g2step_range.cc | 2 +- src/grib_accessor_class_step_in_units.cc | 4 ++-- src/grib_api_internal.h | 2 +- src/grib_context.cc | 4 ++-- tests/grib_sub_hourly.sh | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 353f830ac..ed47e5133 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -540,7 +540,7 @@ static int pack_long_(grib_accessor* a, const long end_step_value, const long en long typeOfTimeIncrement; double dend, dstep; - const int show_units_for_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->grib_hourly_steps_with_units; eccodes::Step end_step{end_step_value, end_step_unit}; @@ -655,7 +655,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t step_len = 0; long step_value; long step_units; - const int show_units_for_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->grib_hourly_steps_with_units; if ((ret = unpack_long(a, &step_value, &step_len)) != GRIB_SUCCESS) return ret; @@ -747,7 +747,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { grib_handle* h = grib_handle_of_accessor(a); - const int show_units_for_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->grib_hourly_steps_with_units; if (!show_units_for_hours) { long step_units = 0; diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index becc5da73..c39601a40 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -143,7 +143,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) double end_step_value = 0; long step_units; - int show_hours = a->context->show_hour_stepunit; + int show_hours = a->context->grib_hourly_steps_with_units; if ((ret = grib_get_double_internal(h, self->start_step, &start_step_value)) != GRIB_SUCCESS) return ret; diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 5c816725d..a25c85aec 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -313,7 +313,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) long step_units = 0; char fp_format[128] = "%g"; size_t fp_format_len = sizeof(fp_format); - int show_hours = a->context->show_hour_stepunit; + int show_hours = a->context->grib_hourly_steps_with_units; if ((ret = grib_get_long_internal(h, "startStep", &start_step_value)) != GRIB_SUCCESS) return ret; @@ -350,7 +350,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { grib_handle* h = grib_handle_of_accessor(a); - const int show_units_for_hours = a->context->show_hour_stepunit; + const int show_units_for_hours = a->context->grib_hourly_steps_with_units; if (!show_units_for_hours) { long step_units = 0; diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 57b4ed562..cea8a7de1 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1004,7 +1004,7 @@ struct grib_context int no_big_group_split; int no_spd; int keep_matrix; - int show_hour_stepunit; + int grib_hourly_steps_with_units; char* grib_definition_files_path; char* grib_samples_path; char* grib_concept_path; diff --git a/src/grib_context.cc b/src/grib_context.cc index d77fd2c06..0c1921138 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -417,7 +417,7 @@ grib_context* grib_context_get_default() no_big_group_split = codes_getenv("ECCODES_GRIB_NO_BIG_GROUP_SPLIT"); no_spd = codes_getenv("ECCODES_GRIB_NO_SPD"); keep_matrix = codes_getenv("ECCODES_GRIB_KEEP_MATRIX"); - show_hour_stepunit = codes_getenv("ECCODES_GRIB_SHOW_HOUR_STEPUNIT"); + show_hour_stepunit = codes_getenv("ECCODES_GRIB_HOURLY_STEPS_WITH_UNITS"); file_pool_max_opened_files = getenv("ECCODES_FILE_POOL_MAX_OPENED_FILES"); /* On UNIX, when we read from a file we get exactly what is in the file on disk. @@ -432,7 +432,7 @@ grib_context* grib_context_get_default() default_grib_context.no_big_group_split = no_big_group_split ? atoi(no_big_group_split) : 0; default_grib_context.no_spd = no_spd ? atoi(no_spd) : 0; default_grib_context.keep_matrix = keep_matrix ? atoi(keep_matrix) : 1; - default_grib_context.show_hour_stepunit = show_hour_stepunit ? atoi(show_hour_stepunit) : 0; + default_grib_context.grib_hourly_steps_with_units = show_hour_stepunit ? atoi(show_hour_stepunit) : 0; default_grib_context.write_on_fail = write_on_fail ? atoi(write_on_fail) : 0; default_grib_context.no_abort = no_abort ? atoi(no_abort) : 0; default_grib_context.debug = debug ? atoi(debug) : 0; diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index ffb0a17f7..668f89376 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -44,8 +44,8 @@ grib_check_key_equals() } HOUR="" -if (set -u; : ${ECCODES_GRIB_SHOW_HOUR_STEPUNIT?}) 2> /dev/null; then - if [ $ECCODES_GRIB_SHOW_HOUR_STEPUNIT -gt 0 ]; then +if (set -u; : ${ECCODES_GRIB_HOURLY_STEPS_WITH_UNITS?}) 2> /dev/null; then + if [ $ECCODES_GRIB_HOURLY_STEPS_WITH_UNITS -gt 0 ]; then export HOUR="h" fi fi @@ -491,13 +491,13 @@ grib_check_key_equals $temp '-p indicatorOfUnitOfTimeRange' '0' grib_check_key_equals $temp '-p forecastTime' '16' -export ECCODES_GRIB_SHOW_HOUR_STEPUNIT=1 +export ECCODES_GRIB_HOURLY_STEPS_WITH_UNITS=1 cat >$tempFilt< Date: Tue, 23 Jan 2024 14:14:56 +0000 Subject: [PATCH 394/469] Tools: Increase coverage (grib_handle) --- src/grib_handle.cc | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 328502c29..2b3b99665 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -153,14 +153,14 @@ grib_handle* grib_new_handle(grib_context* c) g = (grib_handle*)grib_context_malloc_clear(c, sizeof(grib_handle)); if (g == NULL) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_new_handle: cannot allocate handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot allocate handle", __func__); } else { g->context = c; g->product_kind = PRODUCT_ANY; /* Default. Will later be set to a specific product */ } - grib_context_log(c, GRIB_LOG_DEBUG, "grib_new_handle: allocated handle %p", (void*)g); + grib_context_log(c, GRIB_LOG_DEBUG, "%s: Allocated handle %p", __func__, (void*)g); return g; } @@ -185,13 +185,13 @@ static grib_handle* grib_handle_create(grib_handle* gl, grib_context* c, const v gl->root = grib_create_root_section(gl->context, gl); if (!gl->root) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_create: cannot create root section"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create root section", __func__); grib_handle_delete(gl); return NULL; } if (!gl->context->grib_reader || !gl->context->grib_reader->first) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_create: cannot create handle, no definitions found"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle, no definitions found", __func__); grib_handle_delete(gl); return NULL; } @@ -552,7 +552,7 @@ grib_handle* grib_handle_new_from_message(grib_context* c, const void* data, siz if (h->product_kind == PRODUCT_GRIB) { if (!grib_is_defined(h, "7777")) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_message: No final 7777 in message!"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: No final 7777 in message!", __func__); /* TODO: Return NULL. An incomplete message is no use to anyone. * But first check the MARS Client and other applications */ @@ -646,7 +646,7 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, if (grib_decode_unsigned_byte_long(secbegin, 5, 1) == 254) { if (!gm->bitmap_section) { grib_context_log(c, GRIB_LOG_ERROR, - "grib_handle_new_multi : cannot create handle, missing bitmap"); + "%s: Cannot create handle, missing bitmap", __func__); return NULL; } gm->sections[secnum] = gm->bitmap_section; @@ -699,7 +699,7 @@ static grib_handle* grib_handle_new_multi(grib_context* c, unsigned char** data, gl = grib_handle_new_from_message(c, message, olen); if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_multi: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); return NULL; } @@ -799,7 +799,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in /* Special case for inherited bitmaps */ if (grib_decode_unsigned_byte_long(secbegin, 5, 1) == 254) { if (!gm->bitmap_section) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle, missing bitmap"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle, missing bitmap", __func__); grib_context_free(c, data); return NULL; } @@ -843,7 +843,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in } else if (edition == 3) { /* GRIB3: Multi-field mode not yet supported */ - printf("WARNING: %s\n", "grib_handle_new_from_file_multi: GRIB3 multi-field mode not yet implemented! Reverting to single-field mode"); + printf("WARNING: %s: GRIB3 multi-field mode not yet implemented! Reverting to single-field mode", __func__); gm->message_length = 0; gm->message = NULL; } @@ -855,7 +855,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in gl = grib_handle_new_from_message(c, data, olen); if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -935,7 +935,7 @@ grib_handle* gts_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "gts_new_from_file: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -976,7 +976,7 @@ grib_handle* taf_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "taf_new_from_file: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -1017,7 +1017,7 @@ grib_handle* metar_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "metar_new_from_file: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -1085,7 +1085,7 @@ grib_handle* bufr_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "bufr_new_from_file: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -1137,7 +1137,7 @@ grib_handle* any_new_from_file(grib_context* c, FILE* f, int* error) if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "any_new_from_file: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } @@ -1210,7 +1210,7 @@ static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, if (!gl) { *error = GRIB_DECODING_ERROR; - grib_context_log(c, GRIB_LOG_ERROR, "grib_handle_new_from_file_no_multi: cannot create handle"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Cannot create handle", __func__); grib_context_free(c, data); return NULL; } From 44adab05692966785e0aa7e5ed526abe1166271f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 14:50:27 +0000 Subject: [PATCH 395/469] Fix compiler warnings --- src/grib_handle.cc | 3 ++- tests/bufr_ecc-517.cc | 4 ++++ tests/grib_copy_message.cc | 11 ++++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 2b3b99665..1460ed4d8 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -280,12 +280,13 @@ grib_handle* codes_bufr_handle_new_from_samples(grib_context* c, const char* nam } g = codes_external_template(c, PRODUCT_BUFR, name); - if (!g) + if (!g) { grib_context_log(c, GRIB_LOG_ERROR, "Unable to load BUFR sample file '%s.tmpl'\n" " from %s\n" " (ecCodes Version=%s)", name, c->grib_samples_path, ECCODES_VERSION_STR); + } return g; } diff --git a/tests/bufr_ecc-517.cc b/tests/bufr_ecc-517.cc index 2e4f28ba0..e4dc5d563 100644 --- a/tests/bufr_ecc-517.cc +++ b/tests/bufr_ecc-517.cc @@ -25,6 +25,10 @@ int main(int argc, char** argv) assert(argc == 2); outfilename = argv[1]; + // Test non-existent sample file. Should fail + h = codes_bufr_handle_new_from_samples(NULL, "some rubbish"); + assert(!h); + h = codes_bufr_handle_new_from_samples(NULL, sampleName); assert(h); diff --git a/tests/grib_copy_message.cc b/tests/grib_copy_message.cc index 6be23d543..7fba676cf 100644 --- a/tests/grib_copy_message.cc +++ b/tests/grib_copy_message.cc @@ -7,7 +7,12 @@ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include + +#include +using std::cerr; +using std::cout; +using std::endl; + #undef NDEBUG #include #include "eccodes.h" @@ -24,7 +29,7 @@ int main(int argc, char* argv[]) assert (argc == 3); - printf("%ld\n", codes_get_api_version()); + cout << codes_get_api_version() << endl; in = fopen(argv[1], "rb"); assert(in); @@ -33,7 +38,7 @@ int main(int argc, char* argv[]) assert(source_handle); CODES_CHECK(codes_get_message_offset(source_handle, &offset), 0); - printf("offset = %lld\n", offset); + cout << "offset = "<< offset << endl; // How big is the input GRIB message? CODES_CHECK(codes_get_message_size(source_handle, &totalLength), 0); From f09051b3f51499cc02931de2240c0f87cbf456ac Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 14:50:53 +0000 Subject: [PATCH 396/469] Testing: BUFR new from samples --- tests/bufr_ecc-517.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/tests/bufr_ecc-517.sh b/tests/bufr_ecc-517.sh index b20325376..82cdcb4c8 100755 --- a/tests/bufr_ecc-517.sh +++ b/tests/bufr_ecc-517.sh @@ -10,16 +10,20 @@ . ./include.ctest.sh -OUTPUT=temp.ecc-517.bufr -TEMP=temp.ecc-517.txt +label="bufr_ecc-517_test" +tempBufr=temp.$label.bufr +tempText=temp.$label.txt # Run program to create output BUFR file with replication -$EXEC ${test_dir}/bufr_ecc-517 $OUTPUT +export ECCODES_DEBUG=-1 +$EXEC ${test_dir}/bufr_ecc-517 $tempBufr > $tempText 2>&1 +unset ECCODES_DEBUG +rm -f $tempText # Check file is OK and has the expected number of descriptors -${tools_dir}/bufr_dump -jf $OUTPUT > $TEMP -count=`grep -c extendedVerticalSoundingSignificance $TEMP` -[ $count -eq 487 ] +${tools_dir}/bufr_dump -jf $tempBufr > $tempText +count=$(grep -c extendedVerticalSoundingSignificance $tempText) +[ $count -eq 487 ] - -rm $OUTPUT $TEMP +# Clean up +rm $tempBufr $tempText From 564d2354557574e5f5702af4e118520404f038f7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 15:35:53 +0000 Subject: [PATCH 397/469] Testing: BUFR operators --- tests/bufr_filter_fail.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/bufr_filter_fail.sh b/tests/bufr_filter_fail.sh index 2ab8b3ef0..3f1dd0370 100755 --- a/tests/bufr_filter_fail.sh +++ b/tests/bufr_filter_fail.sh @@ -105,6 +105,24 @@ cat $tempErr grep -q "Input output problem" $tempErr +#----------------------------------------------------------- +# Test: with invalid operator +#----------------------------------------------------------- +cat > $fRules <> $fLog 1>> $fLog +status=$? +set -e +[ $status -ne 0 ] +grep -q "unsupported operator" $fLog + + # ------------------------ # Unreadable message # ------------------------ From cdf341eb95c05c313083c3fda4f9d6d953951feb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 16:12:00 +0000 Subject: [PATCH 398/469] Testing: BUFR operators --- tests/bufr_ecc-680.sh | 13 +++++++++++++ tests/bufr_filter_fail.sh | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/bufr_ecc-680.sh b/tests/bufr_ecc-680.sh index 6669c030e..e4faece01 100755 --- a/tests/bufr_ecc-680.sh +++ b/tests/bufr_ecc-680.sh @@ -91,6 +91,19 @@ set -e fgrep -q "number of overridden reference values (2) different from number of descriptors between operator 203YYY and 203255" $tempText +# No overridden ref vals provided +cat > $tempFilt < $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +fgrep -q "Overridden Reference Values array is empty" $tempText + + +# Ref val too large cat > $tempFilt < $fRules <> $fLog 1>> $fLog status=$? set -e [ $status -ne 0 ] -grep -q "unsupported operator" $fLog +grep -q "unsupported operator 63" $fLog # ------------------------ From cb47e6953dba4d3cb33ee85e8a08f29dd83a5fa6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 16:55:09 +0000 Subject: [PATCH 399/469] Testing: BUFR error conditions --- tests/bufr_dump_data.sh | 2 ++ tests/bufr_ecc-379.sh | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/bufr_dump_data.sh b/tests/bufr_dump_data.sh index 4f8594755..4a62f27c0 100755 --- a/tests/bufr_dump_data.sh +++ b/tests/bufr_dump_data.sh @@ -55,6 +55,8 @@ export ECCODES_LOG_STREAM=stdout ${tools_dir}/bufr_dump -O ${data_dir}/bufr/$file > $fLog grep -q "parsing include file" $fLog +${tools_dir}/bufr_dump -p ${data_dir}/bufr/$file > $fLog + unset ECCODES_DEBUG unset ECCODES_LOG_STREAM diff --git a/tests/bufr_ecc-379.sh b/tests/bufr_ecc-379.sh index 9ce06692a..851897e71 100755 --- a/tests/bufr_ecc-379.sh +++ b/tests/bufr_ecc-379.sh @@ -23,7 +23,7 @@ tempText=temp.${label}.text tempRef=temp.${label}.ref # -------------------------------------------------------- -# Test 1 +# Test: Maximum value exceeded # -------------------------------------------------------- BufrFile=airs_57.bufr cat > $tempRules < $tempRules <$tempText +status=$? +set -e +[ $status -ne 0 ] +grep -q 'Minimum value .* out of range' $tempText + + # Now set environment variable to turn out-of-range values into 'missing' export ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE=1 ${tools_dir}/codes_bufr_filter -o $tempOut $tempRules $BufrFile 2>$tempText From 2c3e2399499e05cc440171db7d8e0fd22cb6c7ad Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 17:46:58 +0000 Subject: [PATCH 400/469] GitHub actions: Enable PNG --- .github/.cmake-options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/.cmake-options b/.github/.cmake-options index 05fc1f6c2..13779380b 100644 --- a/.github/.cmake-options +++ b/.github/.cmake-options @@ -1 +1 @@ --DENABLE_EXTRA_TESTS=1 -DECCODES_INSTALL_EXTRA_TOOLS=1 +-DENABLE_EXTRA_TESTS=1 -DECCODES_INSTALL_EXTRA_TOOLS=1 -DENABLE_PNG=1 From 9f2be9a5072329949ea9e1d562f96aa41d48e41c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 18:16:27 +0000 Subject: [PATCH 401/469] Fix compiler warnings --- src/grib_accessor_class_data_ccsds_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 3b5cee87d..06f9317b7 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -624,7 +624,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } break; default: - grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: unpacking %s, bits_per_value=%d (max 32)", + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: unpacking %s, bits_per_value=%ld (max 32)", cclass_name, __func__, a->name, bits_per_value); err = GRIB_INVALID_BPV; goto cleanup; From 1fd6add50824df50a0fd1a8f7034acbf530d4a4b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 19:42:29 +0000 Subject: [PATCH 402/469] Comments --- src/grib_accessor_class_data_png_packing.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 41c90617b..4620a3f91 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -465,6 +465,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) width = ni; height = nj; + // jPointsAreConsecutive if ((scanning_mode & (1 << 5)) != 0) { long tmp = width; width = height; From 7cc8567e4c1b74831d046e906f97b962778ef63f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 23 Jan 2024 19:42:46 +0000 Subject: [PATCH 403/469] Testing: PNG packing --- tests/grib_double_cmp.sh | 11 +++++++++++ tests/grib_keys_iter.sh | 1 + tests/grib_png.sh | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/tests/grib_double_cmp.sh b/tests/grib_double_cmp.sh index ca01eb02b..af0c8f83a 100755 --- a/tests/grib_double_cmp.sh +++ b/tests/grib_double_cmp.sh @@ -14,6 +14,9 @@ . ./include.ctest.sh +label="grib_double_cmp_test" +tempGrib=temp.$label.grib + infiles=" grid_ieee.grib regular_latlon_surface_constant.grib2 @@ -25,6 +28,12 @@ if [ $HAVE_JPEG -eq 1 ]; then infiles="jpeg.grib2 "$infiles fi +if [ $HAVE_PNG -eq 1 ]; then + infile=$data_dir/reduced_gaussian_model_level.grib2 + ${tools_dir}/grib_set -r -s packingType=grid_png $infile $data_dir/$tempGrib + infiles="$tempGrib "$infiles +fi + if [ $HAVE_AEC -eq 1 ]; then infiles="ccsds.grib2 "$infiles fi @@ -33,3 +42,5 @@ for f in $infiles; do infile=$data_dir/$f $EXEC ${test_dir}/grib_double_cmp ${infile} done + +rm -f $data_dir/$tempGrib diff --git a/tests/grib_keys_iter.sh b/tests/grib_keys_iter.sh index 18d8da421..ffc3ea610 100755 --- a/tests/grib_keys_iter.sh +++ b/tests/grib_keys_iter.sh @@ -28,6 +28,7 @@ grib_files=`cat ${data_dir}/grib_data_files.txt` for f in ${grib_files}; do ${test_dir}/grib_keys_iter $f > $tempOut done +rm -f $tempOut cd ${data_dir}/tigge tigge_files=`cat ${data_dir}/tigge/tigge_data_files.txt` diff --git a/tests/grib_png.sh b/tests/grib_png.sh index 6ad01ed3e..64c6ba4de 100755 --- a/tests/grib_png.sh +++ b/tests/grib_png.sh @@ -65,6 +65,10 @@ grep -q "224.455" $temp1 ${tools_dir}/grib_ls -F%.6g -l 48.835,327.600 $temp > $temp1 grep -q "Grid Point chosen #4 index=936 " $temp1 +# jPointsAreConsecutive +infile=${data_dir}/reduced_gaussian_model_level.grib2 +${tools_dir}/grib_set -r -s jPointsAreConsecutive=1,packingType=grid_png $infile $temp + # Conversion from IEEE to PNG # ---------------------------- From 1c94d0c67af9c9dfc12b267e3b05f7d817684128 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jan 2024 12:19:40 +0000 Subject: [PATCH 404/469] ECC-1753: Scripts: Update create_def.pl to work with the new Parameter Database design --- definitions/create_def.pl | 85 ++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/definitions/create_def.pl b/definitions/create_def.pl index 155ee810e..da5bed1ee 100755 --- a/definitions/create_def.pl +++ b/definitions/create_def.pl @@ -29,10 +29,16 @@ sub create_cfName { my $query= <<"EOF"; select $field,force128,edition, - centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName - from param,grib,attribute,centre,units,cf where param.hide_def=0 and param.id=grib.param_id - and attribute.id=grib.attribute_id and centre.id=grib.centre and units.id=param.units_id and param.id=cf.grib1_ecmwf - order by edition,centre,param.o,param.id,grib.param_version,attribute.o; + centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName from + param,grib_encoding,grib,attribute,centre,units,cf where + param.hide_def=0 and + grib_encoding.id=grib.encoding_id and + param.id=grib_encoding.param_id and + attribute.id=grib.attribute_id and + centre.id=grib_encoding.centre_id and + units.id=param.units_id and + param.id=cf.grib1_ecmwf order by + edition,centre_id,param.o,param.id,grib_encoding.param_version,attribute.o; EOF my $qh=$dbh->prepare($query); @@ -46,7 +52,7 @@ sub create_cfName { while (my ($keyval,$force128,$edition,$centre,$paramId,$attribute,$value,$name,$shortName)=$qh->fetchrow_array ) { - if ($centre eq "all" ) { $conceptDir=""; } + if ($centre eq "wmo" ) { $conceptDir=""; } else { $conceptDir="/localConcepts/$centre"; } if ($filebase ne "$basedir/grib$edition$conceptDir") { @@ -101,11 +107,16 @@ sub create_def { if ($key =~ /units/) { $field="units.name"; } my $query= <<"EOF"; - select $field,force128,edition, + select $field,force128,edition, centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName - from param,grib,attribute,centre,units where param.hide_def=0 and param.id=grib.param_id - and attribute.id=grib.attribute_id and centre.id=grib.centre and units.id=param.units_id - order by edition,centre,param.o,param.id,grib.param_version,attribute.o; + from param,grib_encoding,grib,attribute,centre,units where + param.hide_def=0 and + grib_encoding.id=grib.encoding_id and + param.id=grib_encoding.param_id and + attribute.id=grib.attribute_id and + centre.id=grib_encoding.centre_id and + units.id=param.units_id + order by edition,centre_id,param.o,param.id,grib_encoding.param_version,attribute.o; EOF my $qh=$dbh->prepare($query); @@ -119,7 +130,7 @@ sub create_def { while (my ($keyval,$force128,$edition,$centre,$paramId,$attribute,$value,$name,$shortName)=$qh->fetchrow_array ) { - if ($centre eq "all" ) { $conceptDir=""; } + if ($centre eq "wmo" ) { $conceptDir=""; } else { $conceptDir="/localConcepts/$centre"; } #if ($key =~ /paramId/ && $force128==1 && $keyval >1000) { # $keyval= $keyval % 1000; @@ -174,16 +185,19 @@ sub create_paramId_def { my $p; my %seen; my $query="select edition,centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName - from param,grib,attribute,centre where param.hide_def=0 and param.id=grib.param_id - and attribute.id=grib.attribute_id and centre.id=grib.centre - order by edition,centre,param.o,param.id,attribute.o"; - + from param,grib_encoding,grib,attribute,centre where + param.hide_def=0 and + grib_encoding.id=grib.encoding_id and + param.id=grib_encoding.param_id and + attribute.id=grib.attribute_id and + centre.id=grib_encoding.centre_id + order by edition,centre_id,param.o,param.id,attribute.o"; my $qh=$dbh->prepare($query); $qh->execute(); while (my ($edition,$centre,$paramId,$attribute,$value,$name,$shortName)=$qh->fetchrow_array ) { - if ($centre eq "all" ) { $conceptDir=""; } + if ($centre eq "wmo" ) { $conceptDir=""; } else { $conceptDir="/localConcepts/$centre"; } if ($filebase ne "$basedir/grib$edition$conceptDir") { @@ -226,7 +240,7 @@ sub create_def_old { while (my ($edition,$centre,$paramId,$value)=$qh->fetchrow_array ) { - if ($centre eq "all" ) { $conceptDir=""; } + if ($centre eq "wmo" ) { $conceptDir=""; } else { $conceptDir="/localConcepts/$centre"; } if ($filebase ne "$basedir/grib$edition$conceptDir") { @@ -255,26 +269,33 @@ sub create_def_old { create_def("units"); create_cfName("cfName"); -#create_paramId_def(); +# #create_paramId_def(); + +# $query="select distinct edition,centre.abbreviation,param_id,param.shortName from param,grib_encoding,centre where +# param.hide_def=0 and +# param.id=grib_encoding.param_id and +# centre.id=grib_encoding.centre_id and +# shortName!='~' order by abbreviation,edition,param.o,param.id,shortName"; + -$query="select distinct edition,centre.abbreviation,param_id,param.shortName -from param,grib,centre where param.hide_def=0 and param.id=grib.param_id and -centre.id=grib.centre and shortName!='~' -order by centre,edition,param.o,param_id"; +# #select distinct edition,centre.abbreviation,param_id,param.shortName +# #from param,grib_encoding,grib,centre where param.hide_def=0 and param.id=grib.param_id and +# #centre.id=grib_encoding.centre_id and shortName!='~' +# #order by centre,edition,param.o,param_id"; -#create_def("shortName",$query); +# #create_def("shortName",$query); -$query="select distinct edition,centre.abbreviation,param_id,param.name -from param,grib,centre where param.hide_def=0 and param.id=grib.param_id and -centre.id=grib.centre and shortName!='~' -order by centre,edition,param.o,param_id"; +# $query="select distinct edition,centre.abbreviation,param_id,param.name +# from param,grib,centre where param.hide_def=0 and param.id=grib.param_id and +# centre.id=grib.centre and shortName!='~' +# order by centre,edition,param.o,param_id"; -#create_def("name",$query); +# #create_def("name",$query); -$query="select distinct edition,centre.abbreviation,param_id,units.name -from param,grib,centre,units where param.hide_def=0 and param.id=grib.param_id and units.id=param.units_id -and centre.id=grib.centre and shortName!='~' -order by centre,edition,param.o,param_id"; +# $query="select distinct edition,centre.abbreviation,param_id,units.name +# from param,grib,centre,units where param.hide_def=0 and param.id=grib.param_id and units.id=param.units_id +# and centre.id=grib.centre and shortName!='~' +# order by centre,edition,param.o,param_id"; -#create_def("units",$query); +# #create_def("units",$query); From 4471477f673c7fd04c559d1caf9f3c9d7bcec6cc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jan 2024 12:21:53 +0000 Subject: [PATCH 405/469] ECC-1752 and ECC-1753: Harmonise cfVarName.def files (new DB design) --- definitions/grib1/cfName.def | 438 +- definitions/grib1/cfVarName.def | 2902 ++--- .../grib1/localConcepts/rjtd/cfName.def | 112 + definitions/grib1/name.def | 2724 ++--- definitions/grib1/paramId.def | 2724 ++--- definitions/grib1/shortName.def | 2724 ++--- definitions/grib1/units.def | 2716 ++--- definitions/grib2/cfName.def | 266 +- definitions/grib2/cfVarName.def | 9876 ++++++++--------- definitions/grib2/name.def | 9820 ++++++++-------- definitions/grib2/paramId.def | 9820 ++++++++-------- definitions/grib2/shortName.def | 9820 ++++++++-------- definitions/grib2/units.def | 9870 ++++++++-------- 13 files changed, 31962 insertions(+), 31850 deletions(-) create mode 100644 definitions/grib1/localConcepts/rjtd/cfName.def diff --git a/definitions/grib1/cfName.def b/definitions/grib1/cfName.def index 17313406e..6a08a4575 100644 --- a/definitions/grib1/cfName.def +++ b/definitions/grib1/cfName.def @@ -4,257 +4,87 @@ table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'geopotential' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'geopotential' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature 'air_temperature' = { table2Version = 3 ; indicatorOfParameter = 11 ; } -#U component of wind -'eastward_wind' = { - table2Version = 3 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'northward_wind' = { - table2Version = 3 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'specific_humidity' = { - table2Version = 3 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'surface_air_pressure' = { - table2Version = 3 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'lagrangian_tendency_of_air_pressure' = { - table2Version = 3 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'atmosphere_relative_vorticity' = { - table2Version = 3 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'air_pressure_at_mean_sea_level' = { - table2Version = 3 ; - indicatorOfParameter = 2 ; - } -#Divergence -'divergence_of_wind' = { - table2Version = 3 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'geopotential_height' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'relative_humidity' = { - table2Version = 3 ; - indicatorOfParameter = 52 ; - } -#Land-sea mask -'land_binary_mask' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'surface_roughness_length' = { - table2Version = 3 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'lwe_thickness_of_water_evaporation_amount' = { - table2Version = 3 ; - indicatorOfParameter = 57 ; - } -#Total column ozone -'atmosphere_mass_content_of_ozone' = { - table2Version = 3 ; - indicatorOfParameter = 10 ; - } -#Snow depth -'lwe_thickness_of_surface_snow_amount' = { - table2Version = 3 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'convective_cloud_area_fraction' = { - table2Version = 3 ; - indicatorOfParameter = 72 ; - } -#Latent heat flux -'surface_upward_latent_heat_flux' = { - table2Version = 3 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'surface_upward_sensible_heat_flux' = { - table2Version = 3 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { - table2Version = 3 ; - indicatorOfParameter = 123 ; - } -#Forecast albedo -'surface_albedo' = { - table2Version = 3 ; - indicatorOfParameter = 84 ; - } -#Convective precipitation (water) -'lwe_thickness_of_convective_precipitation_amount' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Geopotential -'geopotential' = { +#Temperature +'air_temperature' = { table2Version = 2 ; - indicatorOfParameter = 6 ; + indicatorOfParameter = 11 ; } #Temperature 'air_temperature' = { - table2Version = 2 ; + table2Version = 1 ; indicatorOfParameter = 11 ; } #U component of wind +'eastward_wind' = { + table2Version = 3 ; + indicatorOfParameter = 33 ; + } +#U component of wind 'eastward_wind' = { table2Version = 2 ; indicatorOfParameter = 33 ; } +#U component of wind +'eastward_wind' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } +#V component of wind +'northward_wind' = { + table2Version = 3 ; + indicatorOfParameter = 34 ; + } #V component of wind 'northward_wind' = { table2Version = 2 ; indicatorOfParameter = 34 ; } +#V component of wind +'northward_wind' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } +#Specific humidity +'specific_humidity' = { + table2Version = 3 ; + indicatorOfParameter = 51 ; + } #Specific humidity 'specific_humidity' = { table2Version = 2 ; indicatorOfParameter = 51 ; } +#Specific humidity +'specific_humidity' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure 'surface_air_pressure' = { - table2Version = 2 ; + table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } -#Vertical velocity -'lagrangian_tendency_of_air_pressure' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'atmosphere_relative_vorticity' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'air_pressure_at_mean_sea_level' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'divergence_of_wind' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'geopotential_height' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'relative_humidity' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#Land-sea mask -'land_binary_mask' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'surface_roughness_length' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'lwe_thickness_of_water_evaporation_amount' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Total column ozone -'atmosphere_mass_content_of_ozone' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Snow depth -'lwe_thickness_of_surface_snow_amount' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'convective_cloud_area_fraction' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Latent heat flux -'surface_upward_latent_heat_flux' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'surface_upward_sensible_heat_flux' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Forecast albedo -'surface_albedo' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Convective precipitation (water) -'lwe_thickness_of_convective_precipitation_amount' = { +#Surface pressure +'surface_air_pressure' = { table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Geopotential -'geopotential' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'air_temperature' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'eastward_wind' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'northward_wind' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'specific_humidity' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; } #Surface pressure 'surface_air_pressure' = { @@ -263,86 +93,256 @@ indicatorOfTypeOfLevel = 1 ; } #Vertical velocity +'lagrangian_tendency_of_air_pressure' = { + table2Version = 3 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'lagrangian_tendency_of_air_pressure' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity 'lagrangian_tendency_of_air_pressure' = { table2Version = 1 ; indicatorOfParameter = 39 ; } #Vorticity (relative) +'atmosphere_relative_vorticity' = { + table2Version = 3 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'atmosphere_relative_vorticity' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) 'atmosphere_relative_vorticity' = { table2Version = 1 ; indicatorOfParameter = 43 ; } #Mean sea level pressure +'air_pressure_at_mean_sea_level' = { + table2Version = 3 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'air_pressure_at_mean_sea_level' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure 'air_pressure_at_mean_sea_level' = { table2Version = 1 ; indicatorOfParameter = 2 ; } #Divergence +'divergence_of_wind' = { + table2Version = 3 ; + indicatorOfParameter = 44 ; + } +#Divergence +'divergence_of_wind' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence 'divergence_of_wind' = { table2Version = 1 ; indicatorOfParameter = 44 ; } #Geopotential height +'geopotential_height' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'geopotential_height' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height 'geopotential_height' = { table2Version = 1 ; indicatorOfParameter = 7 ; } #Relative humidity +'relative_humidity' = { + table2Version = 3 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'relative_humidity' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity 'relative_humidity' = { table2Version = 1 ; indicatorOfParameter = 52 ; } #Land-sea mask +'land_binary_mask' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'land_binary_mask' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask 'land_binary_mask' = { table2Version = 1 ; indicatorOfParameter = 81 ; } #Surface roughness (climatological) +'surface_roughness_length' = { + table2Version = 3 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'surface_roughness_length' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 1 ; indicatorOfParameter = 83 ; } #Evaporation +'lwe_thickness_of_water_evaporation_amount' = { + table2Version = 3 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'lwe_thickness_of_water_evaporation_amount' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation 'lwe_thickness_of_water_evaporation_amount' = { table2Version = 1 ; indicatorOfParameter = 57 ; } #Total column ozone +'atmosphere_mass_content_of_ozone' = { + table2Version = 3 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'atmosphere_mass_content_of_ozone' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone 'atmosphere_mass_content_of_ozone' = { table2Version = 1 ; indicatorOfParameter = 10 ; } #Snow depth +'lwe_thickness_of_surface_snow_amount' = { + table2Version = 3 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'lwe_thickness_of_surface_snow_amount' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth 'lwe_thickness_of_surface_snow_amount' = { table2Version = 1 ; indicatorOfParameter = 66 ; } #Convective cloud cover +'convective_cloud_area_fraction' = { + table2Version = 3 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'convective_cloud_area_fraction' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover 'convective_cloud_area_fraction' = { table2Version = 1 ; indicatorOfParameter = 72 ; } #Latent heat flux +'surface_upward_latent_heat_flux' = { + table2Version = 3 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'surface_upward_latent_heat_flux' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux 'surface_upward_latent_heat_flux' = { table2Version = 1 ; indicatorOfParameter = 121 ; } #Sensible heat flux +'surface_upward_sensible_heat_flux' = { + table2Version = 3 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'surface_upward_sensible_heat_flux' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux 'surface_upward_sensible_heat_flux' = { table2Version = 1 ; indicatorOfParameter = 122 ; } #Boundary layer dissipation +'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { + table2Version = 3 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation 'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { table2Version = 1 ; indicatorOfParameter = 123 ; } #Forecast albedo +'surface_albedo' = { + table2Version = 3 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'surface_albedo' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo 'surface_albedo' = { table2Version = 1 ; indicatorOfParameter = 84 ; } #Convective precipitation (water) +'lwe_thickness_of_convective_precipitation_amount' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'lwe_thickness_of_convective_precipitation_amount' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) 'lwe_thickness_of_convective_precipitation_amount' = { table2Version = 1 ; indicatorOfParameter = 63 ; diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def index e4b1aa07d..50489e1a6 100644 --- a/definitions/grib1/cfVarName.def +++ b/definitions/grib1/cfVarName.def @@ -4,31 +4,91 @@ table2Version = 3 ; indicatorOfParameter = 35 ; } +#Stream function +'strf' = { + table2Version = 2 ; + indicatorOfParameter = 35 ; + } +#Stream function +'strf' = { + table2Version = 1 ; + indicatorOfParameter = 35 ; + } #Velocity potential 'vp' = { table2Version = 3 ; indicatorOfParameter = 36 ; } +#Velocity potential +'vp' = { + table2Version = 2 ; + indicatorOfParameter = 36 ; + } +#Velocity potential +'vp' = { + table2Version = 1 ; + indicatorOfParameter = 36 ; + } #Potential temperature 'pt' = { table2Version = 3 ; indicatorOfParameter = 13 ; } +#Potential temperature +'pt' = { + table2Version = 2 ; + indicatorOfParameter = 13 ; + } +#Potential temperature +'pt' = { + table2Version = 1 ; + indicatorOfParameter = 13 ; + } #Wind speed 'ws' = { table2Version = 3 ; indicatorOfParameter = 32 ; } +#Wind speed +'ws' = { + table2Version = 2 ; + indicatorOfParameter = 32 ; + } +#Wind speed +'ws' = { + table2Version = 1 ; + indicatorOfParameter = 32 ; + } #Pressure 'pres' = { table2Version = 3 ; indicatorOfParameter = 1 ; } +#Pressure +'pres' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + } +#Pressure +'pres' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + } #Potential vorticity 'pv' = { table2Version = 3 ; indicatorOfParameter = 4 ; } +#Potential vorticity +'pv' = { + table2Version = 2 ; + indicatorOfParameter = 4 ; + } +#Potential vorticity +'pv' = { + table2Version = 1 ; + indicatorOfParameter = 4 ; + } #Maximum temperature at 2 metres in the last 6 hours 'mx2t6' = { table2Version = 3 ; @@ -36,6 +96,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + table2Version = 1 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Minimum temperature at 2 metres in the last 6 hours 'mn2t6' = { table2Version = 3 ; @@ -43,67 +117,203 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + table2Version = 1 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Geopotential 'z' = { table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'z' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'z' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature 't' = { table2Version = 3 ; indicatorOfParameter = 11 ; } +#Temperature +'t' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + } +#Temperature +'t' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + } #U component of wind 'u' = { table2Version = 3 ; indicatorOfParameter = 33 ; } +#U component of wind +'u' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + } +#U component of wind +'u' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } #V component of wind 'v' = { table2Version = 3 ; indicatorOfParameter = 34 ; } +#V component of wind +'v' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + } +#V component of wind +'v' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } #Specific humidity 'q' = { table2Version = 3 ; indicatorOfParameter = 51 ; } +#Specific humidity +'q' = { + table2Version = 2 ; + indicatorOfParameter = 51 ; + } +#Specific humidity +'q' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure 'sp' = { table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } +#Surface pressure +'sp' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Surface pressure +'sp' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } #Vertical velocity 'w' = { table2Version = 3 ; indicatorOfParameter = 39 ; } +#Vertical velocity +'w' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'w' = { + table2Version = 1 ; + indicatorOfParameter = 39 ; + } #Vorticity (relative) 'vo' = { table2Version = 3 ; indicatorOfParameter = 43 ; } +#Vorticity (relative) +'vo' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'vo' = { + table2Version = 1 ; + indicatorOfParameter = 43 ; + } #Mean sea level pressure 'msl' = { table2Version = 3 ; indicatorOfParameter = 2 ; } +#Mean sea level pressure +'msl' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'msl' = { + table2Version = 1 ; + indicatorOfParameter = 2 ; + } #Divergence 'd' = { table2Version = 3 ; indicatorOfParameter = 44 ; } +#Divergence +'d' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence +'d' = { + table2Version = 1 ; + indicatorOfParameter = 44 ; + } #Geopotential height 'gh' = { table2Version = 3 ; indicatorOfParameter = 7 ; } +#Geopotential height +'gh' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'gh' = { + table2Version = 1 ; + indicatorOfParameter = 7 ; + } #Relative humidity 'r' = { table2Version = 3 ; indicatorOfParameter = 52 ; } +#Relative humidity +'r' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'r' = { + table2Version = 1 ; + indicatorOfParameter = 52 ; + } #10 metre U wind component 'u10' = { table2Version = 3 ; @@ -111,6 +321,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre U wind component +'u10' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre U wind component +'u10' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #10 metre V wind component 'v10' = { table2Version = 3 ; @@ -118,6 +342,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre V wind component +'v10' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre V wind component +'v10' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #2 metre temperature 't2m' = { table2Version = 3 ; @@ -125,6 +363,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#2 metre temperature +'t2m' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre temperature +'t2m' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #2 metre dewpoint temperature 'd2m' = { table2Version = 3 ; @@ -132,1925 +384,1673 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } -#Land-sea mask -'lsm' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; +#2 metre dewpoint temperature +'d2m' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre dewpoint temperature +'d2m' = { + table2Version = 1 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Land-sea mask +'lsm' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'lsm' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'lsm' = { + table2Version = 1 ; + indicatorOfParameter = 81 ; } #Surface roughness (climatological) 'sr' = { table2Version = 3 ; indicatorOfParameter = 83 ; } +#Surface roughness (climatological) +'sr' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'sr' = { + table2Version = 1 ; + indicatorOfParameter = 83 ; + } #Evaporation 'e' = { table2Version = 3 ; indicatorOfParameter = 57 ; } +#Evaporation +'e' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'e' = { + table2Version = 1 ; + indicatorOfParameter = 57 ; + } #Brightness temperature 'btmp' = { table2Version = 3 ; indicatorOfParameter = 118 ; } +#Brightness temperature +'btmp' = { + table2Version = 2 ; + indicatorOfParameter = 118 ; + } +#Brightness temperature +'btmp' = { + table2Version = 1 ; + indicatorOfParameter = 118 ; + } #Runoff 'ro' = { table2Version = 3 ; indicatorOfParameter = 90 ; } +#Runoff +'ro' = { + table2Version = 2 ; + indicatorOfParameter = 90 ; + } +#Runoff +'ro' = { + table2Version = 1 ; + indicatorOfParameter = 90 ; + } #Total column ozone 'tco3' = { table2Version = 3 ; indicatorOfParameter = 10 ; } +#Total column ozone +'tco3' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'tco3' = { + table2Version = 1 ; + indicatorOfParameter = 10 ; + } #Large-scale precipitation 'lsp' = { table2Version = 3 ; indicatorOfParameter = 62 ; } +#Large-scale precipitation +'lsp' = { + table2Version = 2 ; + indicatorOfParameter = 62 ; + } +#Large-scale precipitation +'lsp' = { + table2Version = 1 ; + indicatorOfParameter = 62 ; + } #Snow depth 'sde' = { table2Version = 3 ; indicatorOfParameter = 66 ; } +#Snow depth +'sde' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'sde' = { + table2Version = 1 ; + indicatorOfParameter = 66 ; + } #Convective cloud cover 'ccc' = { table2Version = 3 ; indicatorOfParameter = 72 ; } +#Convective cloud cover +'ccc' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'ccc' = { + table2Version = 1 ; + indicatorOfParameter = 72 ; + } #Low cloud cover 'lcc' = { table2Version = 3 ; indicatorOfParameter = 73 ; } +#Low cloud cover +'lcc' = { + table2Version = 2 ; + indicatorOfParameter = 73 ; + } +#Low cloud cover +'lcc' = { + table2Version = 1 ; + indicatorOfParameter = 73 ; + } #Medium cloud cover 'mcc' = { table2Version = 3 ; indicatorOfParameter = 74 ; } +#Medium cloud cover +'mcc' = { + table2Version = 2 ; + indicatorOfParameter = 74 ; + } +#Medium cloud cover +'mcc' = { + table2Version = 1 ; + indicatorOfParameter = 74 ; + } #High cloud cover 'hcc' = { table2Version = 3 ; indicatorOfParameter = 75 ; } +#High cloud cover +'hcc' = { + table2Version = 2 ; + indicatorOfParameter = 75 ; + } +#High cloud cover +'hcc' = { + table2Version = 1 ; + indicatorOfParameter = 75 ; + } #Large scale snow 'lssf' = { table2Version = 3 ; indicatorOfParameter = 79 ; } +#Large scale snow +'lssf' = { + table2Version = 2 ; + indicatorOfParameter = 79 ; + } +#Large scale snow +'lssf' = { + table2Version = 1 ; + indicatorOfParameter = 79 ; + } #Latent heat flux 'lhf' = { table2Version = 3 ; indicatorOfParameter = 121 ; } +#Latent heat flux +'lhf' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'lhf' = { + table2Version = 1 ; + indicatorOfParameter = 121 ; + } #Sensible heat flux 'shf' = { table2Version = 3 ; indicatorOfParameter = 122 ; } +#Sensible heat flux +'shf' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'shf' = { + table2Version = 1 ; + indicatorOfParameter = 122 ; + } #Boundary layer dissipation 'bld' = { table2Version = 3 ; indicatorOfParameter = 123 ; } +#Boundary layer dissipation +'bld' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'bld' = { + table2Version = 1 ; + indicatorOfParameter = 123 ; + } #Convective snow 'snoc' = { table2Version = 3 ; indicatorOfParameter = 78 ; } +#Convective snow +'snoc' = { + table2Version = 2 ; + indicatorOfParameter = 78 ; + } +#Convective snow +'snoc' = { + table2Version = 1 ; + indicatorOfParameter = 78 ; + } #Cloud water -'p260102' = { +'cwat' = { table2Version = 3 ; indicatorOfParameter = 76 ; } +#Cloud water +'cwat' = { + table2Version = 2 ; + indicatorOfParameter = 76 ; + } +#Cloud water +'cwat' = { + table2Version = 1 ; + indicatorOfParameter = 76 ; + } #Forecast albedo 'al' = { table2Version = 3 ; indicatorOfParameter = 84 ; } -#Virtual temperature -'p300012' = { +#Forecast albedo +'al' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'al' = { table2Version = 1 ; + indicatorOfParameter = 84 ; + } +#Virtual temperature +'vtmp' = { + table2Version = 3 ; indicatorOfParameter = 12 ; } #Virtual temperature -'p300012' = { +'vtmp' = { table2Version = 2 ; indicatorOfParameter = 12 ; } #Virtual temperature -'p300012' = { - table2Version = 3 ; +'vtmp' = { + table2Version = 1 ; indicatorOfParameter = 12 ; } #Pressure tendency -'p3003' = { +'ptend' = { table2Version = 3 ; indicatorOfParameter = 3 ; } +#Pressure tendency +'ptend' = { + table2Version = 2 ; + indicatorOfParameter = 3 ; + } +#Pressure tendency +'ptend' = { + table2Version = 1 ; + indicatorOfParameter = 3 ; + } #ICAO Standard Atmosphere reference height -'p3005' = { +'icaht' = { table2Version = 3 ; indicatorOfParameter = 5 ; } +#ICAO Standard Atmosphere reference height +'icaht' = { + table2Version = 2 ; + indicatorOfParameter = 5 ; + } +#ICAO Standard Atmosphere reference height +'icaht' = { + table2Version = 1 ; + indicatorOfParameter = 5 ; + } #Geometrical height -'p3008' = { +'h' = { table2Version = 3 ; indicatorOfParameter = 8 ; } +#Geometrical height +'h' = { + table2Version = 2 ; + indicatorOfParameter = 8 ; + } +#Geometrical height +'h' = { + table2Version = 1 ; + indicatorOfParameter = 8 ; + } #Standard deviation of height -'p3009' = { +'hstdv' = { table2Version = 3 ; indicatorOfParameter = 9 ; } +#Standard deviation of height +'hstdv' = { + table2Version = 2 ; + indicatorOfParameter = 9 ; + } +#Standard deviation of height +'hstdv' = { + table2Version = 1 ; + indicatorOfParameter = 9 ; + } #Pseudo-adiabatic potential temperature -'p3014' = { +'papt' = { table2Version = 3 ; indicatorOfParameter = 14 ; } +#Pseudo-adiabatic potential temperature +'papt' = { + table2Version = 2 ; + indicatorOfParameter = 14 ; + } +#Pseudo-adiabatic potential temperature +'papt' = { + table2Version = 1 ; + indicatorOfParameter = 14 ; + } #Maximum temperature -'p3015' = { +'tmax' = { table2Version = 3 ; indicatorOfParameter = 15 ; } -#Minimum temperature -'p3016' = { - table2Version = 3 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'p3017' = { - table2Version = 3 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'p3018' = { - table2Version = 3 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'p3019' = { - table2Version = 3 ; - indicatorOfParameter = 19 ; - } -#Visibility -'p3020' = { - table2Version = 3 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'p3021' = { - table2Version = 3 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'p3022' = { - table2Version = 3 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'p3023' = { - table2Version = 3 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'p3024' = { - table2Version = 3 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'p3025' = { - table2Version = 3 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'p3026' = { - table2Version = 3 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'p3027' = { - table2Version = 3 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'p3028' = { - table2Version = 3 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'p3029' = { - table2Version = 3 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'p3030' = { - table2Version = 3 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'p3031' = { - table2Version = 3 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'p3037' = { - table2Version = 3 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'p3038' = { - table2Version = 3 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'p3041' = { - table2Version = 3 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'p3042' = { - table2Version = 3 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'p3045' = { - table2Version = 3 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'p3046' = { - table2Version = 3 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'p3047' = { - table2Version = 3 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'p3048' = { - table2Version = 3 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'p3049' = { - table2Version = 3 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'p3050' = { - table2Version = 3 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'p3053' = { - table2Version = 3 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'p3054' = { - table2Version = 3 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'p3055' = { - table2Version = 3 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'p3056' = { - table2Version = 3 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'p3059' = { - table2Version = 3 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'p3060' = { - table2Version = 3 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'p3063' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'p3064' = { - table2Version = 3 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'p3067' = { - table2Version = 3 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'p3068' = { - table2Version = 3 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'p3069' = { - table2Version = 3 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'p3070' = { - table2Version = 3 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'p3077' = { - table2Version = 3 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'p3080' = { - table2Version = 3 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'p3082' = { - table2Version = 3 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'p3086' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Salinity -'p3088' = { - table2Version = 3 ; - indicatorOfParameter = 88 ; - } -#Density -'p3089' = { - table2Version = 3 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'p3091' = { - table2Version = 3 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'p3092' = { - table2Version = 3 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'p3093' = { - table2Version = 3 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'p3094' = { - table2Version = 3 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'p3095' = { - table2Version = 3 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'p3096' = { - table2Version = 3 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'p3097' = { - table2Version = 3 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'p3098' = { - table2Version = 3 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'snom' = { - table2Version = 3 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'p3100' = { - table2Version = 3 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'p3101' = { - table2Version = 3 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'p3102' = { - table2Version = 3 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'p3103' = { - table2Version = 3 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'p3104' = { - table2Version = 3 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'p3105' = { - table2Version = 3 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'p3106' = { - table2Version = 3 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'p3107' = { - table2Version = 3 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'p3108' = { - table2Version = 3 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'p3109' = { - table2Version = 3 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'p3110' = { - table2Version = 3 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'p3111' = { - table2Version = 3 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'p3112' = { - table2Version = 3 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'p3113' = { - table2Version = 3 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'p3114' = { - table2Version = 3 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'p3115' = { - table2Version = 3 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'p3116' = { - table2Version = 3 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'p3117' = { - table2Version = 3 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'p3119' = { - table2Version = 3 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'p3120' = { - table2Version = 3 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'p3124' = { - table2Version = 3 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'p3125' = { - table2Version = 3 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'p3126' = { - table2Version = 3 ; - indicatorOfParameter = 126 ; - } -#Image data -'p3127' = { - table2Version = 3 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'vegrea' = { - table2Version = 3 ; - indicatorOfParameter = 87 ; - } -#Orography -'orog' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'sm' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'st' = { - table2Version = 3 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'sf' = { - table2Version = 3 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'tcc' = { - table2Version = 3 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'tp' = { - table2Version = 3 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'strf' = { - table2Version = 2 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'vp' = { - table2Version = 2 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'pt' = { - table2Version = 2 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'ws' = { - table2Version = 2 ; - indicatorOfParameter = 32 ; - } -#Pressure -'pres' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'pv' = { - table2Version = 2 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'z' = { - table2Version = 2 ; - indicatorOfParameter = 6 ; - } -#Temperature -'t' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'u' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'v' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'q' = { - table2Version = 2 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'sp' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'w' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'vo' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'msl' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'d' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gh' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'r' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'u10' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'v10' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'t2m' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'d2m' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'lsm' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'sr' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'e' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'btmp' = { - table2Version = 2 ; - indicatorOfParameter = 118 ; - } -#Runoff -'ro' = { - table2Version = 2 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'tco3' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'lsp' = { - table2Version = 2 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'sd' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'ccc' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'lcc' = { - table2Version = 2 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'mcc' = { - table2Version = 2 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'hcc' = { - table2Version = 2 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'lssf' = { - table2Version = 2 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'lhf' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'shf' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'bld' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'snoc' = { - table2Version = 2 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'p260102' = { - table2Version = 2 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'al' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'p3003' = { - table2Version = 2 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'p3005' = { - table2Version = 2 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'p3008' = { - table2Version = 2 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'p3009' = { - table2Version = 2 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'p3014' = { - table2Version = 2 ; - indicatorOfParameter = 14 ; - } -#Maximum temperature -'p3015' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'p3016' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'p3017' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'p3018' = { - table2Version = 2 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'p3019' = { - table2Version = 2 ; - indicatorOfParameter = 19 ; - } -#Visibility -'p3020' = { - table2Version = 2 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'p3021' = { - table2Version = 2 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'p3022' = { - table2Version = 2 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'p3023' = { - table2Version = 2 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'p3024' = { - table2Version = 2 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'p3025' = { - table2Version = 2 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'p3026' = { - table2Version = 2 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'p3027' = { - table2Version = 2 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'p3028' = { - table2Version = 2 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'p3029' = { - table2Version = 2 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'p3030' = { - table2Version = 2 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'p3031' = { - table2Version = 2 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'p3037' = { - table2Version = 2 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'p3038' = { - table2Version = 2 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'p3041' = { - table2Version = 2 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'p3042' = { - table2Version = 2 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'p3045' = { - table2Version = 2 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'p3046' = { - table2Version = 2 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'p3047' = { - table2Version = 2 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'p3048' = { - table2Version = 2 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'p3049' = { - table2Version = 2 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'p3050' = { - table2Version = 2 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'p3053' = { - table2Version = 2 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'p3054' = { - table2Version = 2 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'p3055' = { - table2Version = 2 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'p3056' = { - table2Version = 2 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'p3059' = { - table2Version = 2 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'p3060' = { - table2Version = 2 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'p3063' = { - table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'p3064' = { - table2Version = 2 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'p3067' = { - table2Version = 2 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'p3068' = { - table2Version = 2 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'p3069' = { - table2Version = 2 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'p3070' = { - table2Version = 2 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'p3077' = { - table2Version = 2 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'p3080' = { - table2Version = 2 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'p3082' = { - table2Version = 2 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'p3086' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Salinity -'p3088' = { - table2Version = 2 ; - indicatorOfParameter = 88 ; - } -#Density -'p3089' = { - table2Version = 2 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'p3091' = { - table2Version = 2 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'p3092' = { - table2Version = 2 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'p3093' = { - table2Version = 2 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'p3094' = { - table2Version = 2 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'p3095' = { - table2Version = 2 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'p3096' = { - table2Version = 2 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'p3097' = { - table2Version = 2 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'p3098' = { - table2Version = 2 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'snom' = { - table2Version = 2 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'p3100' = { - table2Version = 2 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'p3101' = { - table2Version = 2 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'p3102' = { - table2Version = 2 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'p3103' = { - table2Version = 2 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'p3104' = { - table2Version = 2 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'p3105' = { - table2Version = 2 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'p3106' = { - table2Version = 2 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'p3107' = { - table2Version = 2 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'p3108' = { - table2Version = 2 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'p3109' = { - table2Version = 2 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'p3110' = { - table2Version = 2 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'p3111' = { - table2Version = 2 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'p3112' = { - table2Version = 2 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'p3113' = { - table2Version = 2 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'p3114' = { - table2Version = 2 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'p3115' = { - table2Version = 2 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'p3116' = { - table2Version = 2 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'p3117' = { - table2Version = 2 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'p3119' = { - table2Version = 2 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'p3120' = { - table2Version = 2 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'p3124' = { - table2Version = 2 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'p3125' = { - table2Version = 2 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'p3126' = { - table2Version = 2 ; - indicatorOfParameter = 126 ; - } -#Image data -'p3127' = { - table2Version = 2 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'vegrea' = { - table2Version = 2 ; - indicatorOfParameter = 87 ; - } -#Orography -'orog' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'sm' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'st' = { - table2Version = 2 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'sf' = { - table2Version = 2 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'tcc' = { - table2Version = 2 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'tp' = { - table2Version = 2 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'strf' = { - table2Version = 1 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'vp' = { - table2Version = 1 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'pt' = { - table2Version = 1 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'ws' = { - table2Version = 1 ; - indicatorOfParameter = 32 ; - } -#Pressure -'pres' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'pv' = { - table2Version = 1 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - table2Version = 1 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'z' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'t' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'u' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'v' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'q' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'sp' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'w' = { - table2Version = 1 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'vo' = { - table2Version = 1 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'msl' = { - table2Version = 1 ; - indicatorOfParameter = 2 ; - } -#Divergence -'d' = { - table2Version = 1 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gh' = { - table2Version = 1 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'r' = { - table2Version = 1 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'u10' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'v10' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'t2m' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'d2m' = { - table2Version = 1 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'lsm' = { - table2Version = 1 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'sr' = { - table2Version = 1 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'e' = { - table2Version = 1 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'btmp' = { - table2Version = 1 ; - indicatorOfParameter = 118 ; - } -#Runoff -'ro' = { - table2Version = 1 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'tco3' = { - table2Version = 1 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'lsp' = { - table2Version = 1 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'sd' = { - table2Version = 1 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'ccc' = { - table2Version = 1 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'lcc' = { - table2Version = 1 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'mcc' = { - table2Version = 1 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'hcc' = { - table2Version = 1 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'lssf' = { - table2Version = 1 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'lhf' = { - table2Version = 1 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'shf' = { - table2Version = 1 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'bld' = { - table2Version = 1 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'snoc' = { - table2Version = 1 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'p260102' = { - table2Version = 1 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'al' = { - table2Version = 1 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'p3003' = { - table2Version = 1 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'p3005' = { - table2Version = 1 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'p3008' = { - table2Version = 1 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'p3009' = { - table2Version = 1 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'p3014' = { - table2Version = 1 ; - indicatorOfParameter = 14 ; +#Maximum temperature +'tmax' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; } #Maximum temperature -'p3015' = { +'tmax' = { table2Version = 1 ; indicatorOfParameter = 15 ; } #Minimum temperature -'p3016' = { +'tmin' = { + table2Version = 3 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature +'tmin' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature +'tmin' = { table2Version = 1 ; indicatorOfParameter = 16 ; } #Dew point temperature -'p3017' = { +'dpt' = { + table2Version = 3 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'dpt' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'dpt' = { table2Version = 1 ; indicatorOfParameter = 17 ; } #Dew point depression (or deficit) -'p3018' = { +'depr' = { + table2Version = 3 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'depr' = { + table2Version = 2 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'depr' = { table2Version = 1 ; indicatorOfParameter = 18 ; } #Lapse rate -'p3019' = { +'lapr' = { + table2Version = 3 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'lapr' = { + table2Version = 2 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'lapr' = { table2Version = 1 ; indicatorOfParameter = 19 ; } #Visibility -'p3020' = { +'vis' = { + table2Version = 3 ; + indicatorOfParameter = 20 ; + } +#Visibility +'vis' = { + table2Version = 2 ; + indicatorOfParameter = 20 ; + } +#Visibility +'vis' = { table2Version = 1 ; indicatorOfParameter = 20 ; } #Radar spectra (1) -'p3021' = { +'rdsp1' = { + table2Version = 3 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'rdsp1' = { + table2Version = 2 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'rdsp1' = { table2Version = 1 ; indicatorOfParameter = 21 ; } #Radar spectra (2) -'p3022' = { +'rdsp2' = { + table2Version = 3 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'rdsp2' = { + table2Version = 2 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'rdsp2' = { table2Version = 1 ; indicatorOfParameter = 22 ; } #Radar spectra (3) -'p3023' = { +'rdsp3' = { + table2Version = 3 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'rdsp3' = { + table2Version = 2 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'rdsp3' = { table2Version = 1 ; indicatorOfParameter = 23 ; } #Parcel lifted index (to 500 hPa) -'p3024' = { +'pli' = { + table2Version = 3 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'pli' = { + table2Version = 2 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'pli' = { table2Version = 1 ; indicatorOfParameter = 24 ; } #Temperature anomaly -'p3025' = { +'ta' = { + table2Version = 3 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'ta' = { + table2Version = 2 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'ta' = { table2Version = 1 ; indicatorOfParameter = 25 ; } #Pressure anomaly -'p3026' = { +'presa' = { + table2Version = 3 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'presa' = { + table2Version = 2 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'presa' = { table2Version = 1 ; indicatorOfParameter = 26 ; } #Geopotential height anomaly -'p3027' = { +'gpa' = { + table2Version = 3 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'gpa' = { + table2Version = 2 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'gpa' = { table2Version = 1 ; indicatorOfParameter = 27 ; } #Wave spectra (1) -'p3028' = { +'wvsp1' = { + table2Version = 3 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'wvsp1' = { + table2Version = 2 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'wvsp1' = { table2Version = 1 ; indicatorOfParameter = 28 ; } #Wave spectra (2) -'p3029' = { +'wvsp2' = { + table2Version = 3 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'wvsp2' = { + table2Version = 2 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'wvsp2' = { table2Version = 1 ; indicatorOfParameter = 29 ; } #Wave spectra (3) -'p3030' = { +'wvsp3' = { + table2Version = 3 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'wvsp3' = { + table2Version = 2 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'wvsp3' = { table2Version = 1 ; indicatorOfParameter = 30 ; } #Wind direction -'p3031' = { +'wdir' = { + table2Version = 3 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'wdir' = { + table2Version = 2 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'wdir' = { table2Version = 1 ; indicatorOfParameter = 31 ; } #Montgomery stream Function -'p3037' = { +'mntsf' = { + table2Version = 3 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'mntsf' = { + table2Version = 2 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'mntsf' = { table2Version = 1 ; indicatorOfParameter = 37 ; } #Sigma coordinate vertical velocity -'p3038' = { +'sgcvv' = { + table2Version = 3 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'sgcvv' = { + table2Version = 2 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'sgcvv' = { table2Version = 1 ; indicatorOfParameter = 38 ; } #Absolute vorticity -'p3041' = { +'absv' = { + table2Version = 3 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'absv' = { + table2Version = 2 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'absv' = { table2Version = 1 ; indicatorOfParameter = 41 ; } #Absolute divergence -'p3042' = { +'absd' = { + table2Version = 3 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'absd' = { + table2Version = 2 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'absd' = { table2Version = 1 ; indicatorOfParameter = 42 ; } #Vertical u-component shear -'p3045' = { +'vucsh' = { + table2Version = 3 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'vucsh' = { + table2Version = 2 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'vucsh' = { table2Version = 1 ; indicatorOfParameter = 45 ; } #Vertical v-component shear -'p3046' = { +'vvcsh' = { + table2Version = 3 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'vvcsh' = { + table2Version = 2 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'vvcsh' = { table2Version = 1 ; indicatorOfParameter = 46 ; } #Direction of current -'p3047' = { +'dirc' = { + table2Version = 3 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'dirc' = { + table2Version = 2 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'dirc' = { table2Version = 1 ; indicatorOfParameter = 47 ; } #Speed of current -'p3048' = { +'spc' = { + table2Version = 3 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'spc' = { + table2Version = 2 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'spc' = { table2Version = 1 ; indicatorOfParameter = 48 ; } -#U-component of current -'p3049' = { +#U-component of current +'ucurr' = { + table2Version = 3 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'ucurr' = { + table2Version = 2 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'ucurr' = { table2Version = 1 ; indicatorOfParameter = 49 ; } -#V-component of current -'p3050' = { +#V-component of current +'vcurr' = { + table2Version = 3 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'vcurr' = { + table2Version = 2 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'vcurr' = { table2Version = 1 ; indicatorOfParameter = 50 ; } #Humidity mixing ratio -'p3053' = { +'mixr' = { + table2Version = 3 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'mixr' = { + table2Version = 2 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'mixr' = { table2Version = 1 ; indicatorOfParameter = 53 ; } #Precipitable water -'p3054' = { +'pwat' = { + table2Version = 3 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'pwat' = { + table2Version = 2 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'pwat' = { table2Version = 1 ; indicatorOfParameter = 54 ; } #Vapour pressure -'p3055' = { +'vp' = { + table2Version = 3 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'vp' = { + table2Version = 2 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'vp' = { table2Version = 1 ; indicatorOfParameter = 55 ; } #Saturation deficit -'p3056' = { +'satd' = { + table2Version = 3 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'satd' = { + table2Version = 2 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'satd' = { table2Version = 1 ; indicatorOfParameter = 56 ; } #Precipitation rate -'p3059' = { +'prate' = { + table2Version = 3 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'prate' = { + table2Version = 2 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'prate' = { table2Version = 1 ; indicatorOfParameter = 59 ; } #Thunderstorm probability -'p3060' = { +'tstm' = { + table2Version = 3 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'tstm' = { + table2Version = 2 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'tstm' = { table2Version = 1 ; indicatorOfParameter = 60 ; } #Convective precipitation (water) -'p3063' = { +'acpcp' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'acpcp' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'acpcp' = { table2Version = 1 ; indicatorOfParameter = 63 ; } #Snow fall rate water equivalent -'p3064' = { +'srweq' = { + table2Version = 3 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'srweq' = { + table2Version = 2 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'srweq' = { table2Version = 1 ; indicatorOfParameter = 64 ; } #Mixed layer depth -'p3067' = { +'mld' = { + table2Version = 3 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'mld' = { + table2Version = 2 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'mld' = { table2Version = 1 ; indicatorOfParameter = 67 ; } #Transient thermocline depth -'p3068' = { +'tthdp' = { + table2Version = 3 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'tthdp' = { + table2Version = 2 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'tthdp' = { table2Version = 1 ; indicatorOfParameter = 68 ; } #Main thermocline depth -'p3069' = { +'mthd' = { + table2Version = 3 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'mthd' = { + table2Version = 2 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'mthd' = { table2Version = 1 ; indicatorOfParameter = 69 ; } #Main thermocline anomaly -'p3070' = { +'mtha' = { + table2Version = 3 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'mtha' = { + table2Version = 2 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'mtha' = { table2Version = 1 ; indicatorOfParameter = 70 ; } #Best lifted index (to 500 hPa) -'p3077' = { +'bli' = { + table2Version = 3 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'bli' = { + table2Version = 2 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'bli' = { table2Version = 1 ; indicatorOfParameter = 77 ; } #Water temperature -'p3080' = { +'wtmp' = { + table2Version = 3 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'wtmp' = { + table2Version = 2 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'wtmp' = { table2Version = 1 ; indicatorOfParameter = 80 ; } #Deviation of sea-level from mean -'p3082' = { +'dslm' = { + table2Version = 3 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'dslm' = { + table2Version = 2 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'dslm' = { table2Version = 1 ; indicatorOfParameter = 82 ; } #Soil moisture content -'p3086' = { +'ssw' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'ssw' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'ssw' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Salinity -'p3088' = { +'s' = { + table2Version = 3 ; + indicatorOfParameter = 88 ; + } +#Salinity +'s' = { + table2Version = 2 ; + indicatorOfParameter = 88 ; + } +#Salinity +'s' = { table2Version = 1 ; indicatorOfParameter = 88 ; } #Density -'p3089' = { +'den' = { + table2Version = 3 ; + indicatorOfParameter = 89 ; + } +#Density +'den' = { + table2Version = 2 ; + indicatorOfParameter = 89 ; + } +#Density +'den' = { table2Version = 1 ; indicatorOfParameter = 89 ; } #Ice cover (1=ice, 0=no ice) -'p3091' = { +'icec' = { + table2Version = 3 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'icec' = { + table2Version = 2 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'icec' = { table2Version = 1 ; indicatorOfParameter = 91 ; } #Ice thickness -'p3092' = { +'icetk' = { + table2Version = 3 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'icetk' = { + table2Version = 2 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'icetk' = { table2Version = 1 ; indicatorOfParameter = 92 ; } #Direction of ice drift -'p3093' = { +'diced' = { + table2Version = 3 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'diced' = { + table2Version = 2 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'diced' = { table2Version = 1 ; indicatorOfParameter = 93 ; } #Speed of ice drift -'p3094' = { +'siced' = { + table2Version = 3 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'siced' = { + table2Version = 2 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'siced' = { table2Version = 1 ; indicatorOfParameter = 94 ; } #U-component of ice drift -'p3095' = { +'uice' = { + table2Version = 3 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'uice' = { + table2Version = 2 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'uice' = { table2Version = 1 ; indicatorOfParameter = 95 ; } #V-component of ice drift -'p3096' = { +'vice' = { + table2Version = 3 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'vice' = { + table2Version = 2 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'vice' = { table2Version = 1 ; indicatorOfParameter = 96 ; } #Ice growth rate -'p3097' = { +'iceg' = { + table2Version = 3 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'iceg' = { + table2Version = 2 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'iceg' = { table2Version = 1 ; indicatorOfParameter = 97 ; } #Ice divergence -'p3098' = { +'iced' = { + table2Version = 3 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'iced' = { + table2Version = 2 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'iced' = { table2Version = 1 ; indicatorOfParameter = 98 ; } #Snowmelt +'snom' = { + table2Version = 3 ; + indicatorOfParameter = 99 ; + } +#Snowmelt +'snom' = { + table2Version = 2 ; + indicatorOfParameter = 99 ; + } +#Snowmelt 'snom' = { table2Version = 1 ; indicatorOfParameter = 99 ; } #Signific.height,combined wind waves+swell -'p3100' = { +'swh' = { + table2Version = 3 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'swh' = { + table2Version = 2 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'swh' = { table2Version = 1 ; indicatorOfParameter = 100 ; } #Mean direction of wind waves -'p3101' = { +'mdww' = { + table2Version = 3 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'mdww' = { + table2Version = 2 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'mdww' = { table2Version = 1 ; indicatorOfParameter = 101 ; } #Significant height of wind waves -'p3102' = { +'shww' = { + table2Version = 3 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'shww' = { + table2Version = 2 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'shww' = { table2Version = 1 ; indicatorOfParameter = 102 ; } #Mean period of wind waves -'p3103' = { +'mpww' = { + table2Version = 3 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'mpww' = { + table2Version = 2 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'mpww' = { table2Version = 1 ; indicatorOfParameter = 103 ; } #Direction of swell waves -'p3104' = { +'swdir' = { + table2Version = 3 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'swdir' = { + table2Version = 2 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'swdir' = { table2Version = 1 ; indicatorOfParameter = 104 ; } #Significant height of swell waves -'p3105' = { +'swell' = { + table2Version = 3 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'swell' = { + table2Version = 2 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'swell' = { table2Version = 1 ; indicatorOfParameter = 105 ; } #Mean period of swell waves -'p3106' = { +'swper' = { + table2Version = 3 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'swper' = { + table2Version = 2 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'swper' = { table2Version = 1 ; indicatorOfParameter = 106 ; } #Primary wave direction -'p3107' = { +'mdps' = { + table2Version = 3 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'mdps' = { + table2Version = 2 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'mdps' = { table2Version = 1 ; indicatorOfParameter = 107 ; } #Primary wave mean period -'p3108' = { +'mpps' = { + table2Version = 3 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'mpps' = { + table2Version = 2 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'mpps' = { table2Version = 1 ; indicatorOfParameter = 108 ; } #Secondary wave direction -'p3109' = { +'dirsw' = { + table2Version = 3 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'dirsw' = { + table2Version = 2 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'dirsw' = { table2Version = 1 ; indicatorOfParameter = 109 ; } #Secondary wave mean period -'p3110' = { +'swp' = { + table2Version = 3 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'swp' = { + table2Version = 2 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'swp' = { table2Version = 1 ; indicatorOfParameter = 110 ; } #Net short-wave radiation flux (surface) -'p3111' = { +'nswrs' = { + table2Version = 3 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'nswrs' = { + table2Version = 2 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'nswrs' = { table2Version = 1 ; indicatorOfParameter = 111 ; } #Net long-wave radiation flux (surface) -'p3112' = { +'nlwrs' = { + table2Version = 3 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'nlwrs' = { + table2Version = 2 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'nlwrs' = { table2Version = 1 ; indicatorOfParameter = 112 ; } #Net short-wave radiation flux(atmosph.top) -'p3113' = { +'nswrt' = { + table2Version = 3 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'nswrt' = { + table2Version = 2 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'nswrt' = { table2Version = 1 ; indicatorOfParameter = 113 ; } #Net long-wave radiation flux(atmosph.top) -'p3114' = { +'nlwrt' = { + table2Version = 3 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'nlwrt' = { + table2Version = 2 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'nlwrt' = { table2Version = 1 ; indicatorOfParameter = 114 ; } #Long wave radiation flux -'p3115' = { +'lwavr' = { + table2Version = 3 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'lwavr' = { + table2Version = 2 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'lwavr' = { table2Version = 1 ; indicatorOfParameter = 115 ; } #Short wave radiation flux -'p3116' = { +'swavr' = { + table2Version = 3 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'swavr' = { + table2Version = 2 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'swavr' = { table2Version = 1 ; indicatorOfParameter = 116 ; } #Global radiation flux -'p3117' = { +'grad' = { + table2Version = 3 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'grad' = { + table2Version = 2 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'grad' = { table2Version = 1 ; indicatorOfParameter = 117 ; } #Radiance (with respect to wave number) -'p3119' = { +'lwrad' = { + table2Version = 3 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'lwrad' = { + table2Version = 2 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'lwrad' = { table2Version = 1 ; indicatorOfParameter = 119 ; } #Radiance (with respect to wave length) -'p3120' = { +'swrad' = { + table2Version = 3 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'swrad' = { + table2Version = 2 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'swrad' = { table2Version = 1 ; indicatorOfParameter = 120 ; } #Momentum flux, u-component -'p3124' = { +'uflx' = { + table2Version = 3 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'uflx' = { + table2Version = 2 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'uflx' = { table2Version = 1 ; indicatorOfParameter = 124 ; } #Momentum flux, v-component -'p3125' = { +'vflx' = { + table2Version = 3 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'vflx' = { + table2Version = 2 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'vflx' = { table2Version = 1 ; indicatorOfParameter = 125 ; } #Wind mixing energy -'p3126' = { +'wmixe' = { + table2Version = 3 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'wmixe' = { + table2Version = 2 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'wmixe' = { table2Version = 1 ; indicatorOfParameter = 126 ; } #Image data -'p3127' = { +'imgd' = { + table2Version = 3 ; + indicatorOfParameter = 127 ; + } +#Image data +'imgd' = { + table2Version = 2 ; + indicatorOfParameter = 127 ; + } +#Image data +'imgd' = { table2Version = 1 ; indicatorOfParameter = 127 ; } #Percentage of vegetation +'vegrea' = { + table2Version = 3 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation +'vegrea' = { + table2Version = 2 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation 'vegrea' = { table2Version = 1 ; indicatorOfParameter = 87 ; } #Orography +'orog' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography +'orog' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography 'orog' = { table2Version = 1 ; indicatorOfParameter = 7 ; indicatorOfTypeOfLevel = 1 ; } #Soil moisture +'sm' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture +'sm' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture 'sm' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Soil temperature +'st' = { + table2Version = 3 ; + indicatorOfParameter = 85 ; + } +#Soil temperature +'st' = { + table2Version = 2 ; + indicatorOfParameter = 85 ; + } +#Soil temperature 'st' = { table2Version = 1 ; indicatorOfParameter = 85 ; } #Snowfall water equivalent +'sf' = { + table2Version = 3 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent +'sf' = { + table2Version = 2 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent 'sf' = { table2Version = 1 ; indicatorOfParameter = 65 ; } #Total Cloud Cover +'tcc' = { + table2Version = 3 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover +'tcc' = { + table2Version = 2 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover 'tcc' = { table2Version = 1 ; indicatorOfParameter = 71 ; } #Total Precipitation +'tp' = { + table2Version = 3 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation +'tp' = { + table2Version = 2 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation 'tp' = { table2Version = 1 ; indicatorOfParameter = 61 ; diff --git a/definitions/grib1/localConcepts/rjtd/cfName.def b/definitions/grib1/localConcepts/rjtd/cfName.def new file mode 100644 index 000000000..fa3d101b1 --- /dev/null +++ b/definitions/grib1/localConcepts/rjtd/cfName.def @@ -0,0 +1,112 @@ +# Automatically generated by ./create_def.pl, do not edit +#Sea ice area fraction +'sea_ice_area_fraction' = { + table2Version = 200 ; + indicatorOfParameter = 91 ; + } +#Geopotential +'geopotential' = { + table2Version = 200 ; + indicatorOfParameter = 6 ; + } +#Temperature +'air_temperature' = { + table2Version = 200 ; + indicatorOfParameter = 11 ; + } +#U component of wind +'eastward_wind' = { + table2Version = 200 ; + indicatorOfParameter = 33 ; + } +#V component of wind +'northward_wind' = { + table2Version = 200 ; + indicatorOfParameter = 34 ; + } +#Specific humidity +'specific_humidity' = { + table2Version = 200 ; + indicatorOfParameter = 51 ; + } +#Surface pressure +'surface_air_pressure' = { + table2Version = 200 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Vertical velocity +'lagrangian_tendency_of_air_pressure' = { + table2Version = 200 ; + indicatorOfParameter = 39 ; + } +#Total column vertically-integrated water vapour +'lwe_thickness_of_atmosphere_mass_content_of_water_vapor' = { + table2Version = 200 ; + indicatorOfParameter = 54 ; + } +#Vorticity (relative) +'atmosphere_relative_vorticity' = { + table2Version = 200 ; + indicatorOfParameter = 43 ; + } +#Mean sea level pressure +'air_pressure_at_mean_sea_level' = { + table2Version = 200 ; + indicatorOfParameter = 2 ; + } +#Divergence +'divergence_of_wind' = { + table2Version = 200 ; + indicatorOfParameter = 44 ; + } +#Geopotential height +'geopotential_height' = { + table2Version = 200 ; + indicatorOfParameter = 7 ; + } +#Relative humidity +'relative_humidity' = { + table2Version = 200 ; + indicatorOfParameter = 52 ; + } +#Land-sea mask +'land_binary_mask' = { + table2Version = 200 ; + indicatorOfParameter = 81 ; + } +#Surface roughness (climatological) +'surface_roughness_length' = { + table2Version = 200 ; + indicatorOfParameter = 83 ; + } +#Snow depth +'lwe_thickness_of_surface_snow_amount' = { + table2Version = 200 ; + indicatorOfParameter = 66 ; + } +#Convective cloud cover +'convective_cloud_area_fraction' = { + table2Version = 200 ; + indicatorOfParameter = 72 ; + } +#Latent heat flux +'surface_upward_latent_heat_flux' = { + table2Version = 200 ; + indicatorOfParameter = 121 ; + } +#Sensible heat flux +'surface_upward_sensible_heat_flux' = { + table2Version = 200 ; + indicatorOfParameter = 122 ; + } +#Boundary layer dissipation +'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { + table2Version = 200 ; + indicatorOfParameter = 123 ; + } +#Forecast albedo +'surface_albedo' = { + table2Version = 200 ; + indicatorOfParameter = 84 ; +} diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def index 8bda2a845..7d9a3f84b 100644 --- a/definitions/grib1/name.def +++ b/definitions/grib1/name.def @@ -4,31 +4,91 @@ table2Version = 3 ; indicatorOfParameter = 35 ; } +#Stream function +'Stream function' = { + table2Version = 2 ; + indicatorOfParameter = 35 ; + } +#Stream function +'Stream function' = { + table2Version = 1 ; + indicatorOfParameter = 35 ; + } #Velocity potential 'Velocity potential' = { table2Version = 3 ; indicatorOfParameter = 36 ; } +#Velocity potential +'Velocity potential' = { + table2Version = 2 ; + indicatorOfParameter = 36 ; + } +#Velocity potential +'Velocity potential' = { + table2Version = 1 ; + indicatorOfParameter = 36 ; + } #Potential temperature 'Potential temperature' = { table2Version = 3 ; indicatorOfParameter = 13 ; } +#Potential temperature +'Potential temperature' = { + table2Version = 2 ; + indicatorOfParameter = 13 ; + } +#Potential temperature +'Potential temperature' = { + table2Version = 1 ; + indicatorOfParameter = 13 ; + } #Wind speed 'Wind speed' = { table2Version = 3 ; indicatorOfParameter = 32 ; } +#Wind speed +'Wind speed' = { + table2Version = 2 ; + indicatorOfParameter = 32 ; + } +#Wind speed +'Wind speed' = { + table2Version = 1 ; + indicatorOfParameter = 32 ; + } #Pressure 'Pressure' = { table2Version = 3 ; indicatorOfParameter = 1 ; } +#Pressure +'Pressure' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + } +#Pressure +'Pressure' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + } #Potential vorticity 'Potential vorticity' = { table2Version = 3 ; indicatorOfParameter = 4 ; } +#Potential vorticity +'Potential vorticity' = { + table2Version = 2 ; + indicatorOfParameter = 4 ; + } +#Potential vorticity +'Potential vorticity' = { + table2Version = 1 ; + indicatorOfParameter = 4 ; + } #Maximum temperature at 2 metres in the last 6 hours 'Maximum temperature at 2 metres in the last 6 hours' = { table2Version = 3 ; @@ -36,6 +96,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Maximum temperature at 2 metres in the last 6 hours +'Maximum temperature at 2 metres in the last 6 hours' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Maximum temperature at 2 metres in the last 6 hours +'Maximum temperature at 2 metres in the last 6 hours' = { + table2Version = 1 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Minimum temperature at 2 metres in the last 6 hours 'Minimum temperature at 2 metres in the last 6 hours' = { table2Version = 3 ; @@ -43,67 +117,203 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Minimum temperature at 2 metres in the last 6 hours +'Minimum temperature at 2 metres in the last 6 hours' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'Minimum temperature at 2 metres in the last 6 hours' = { + table2Version = 1 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Geopotential 'Geopotential' = { table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'Geopotential' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'Geopotential' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature 'Temperature' = { table2Version = 3 ; indicatorOfParameter = 11 ; } +#Temperature +'Temperature' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + } +#Temperature +'Temperature' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + } #U component of wind 'U component of wind' = { table2Version = 3 ; indicatorOfParameter = 33 ; } +#U component of wind +'U component of wind' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + } +#U component of wind +'U component of wind' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } #V component of wind 'V component of wind' = { table2Version = 3 ; indicatorOfParameter = 34 ; } +#V component of wind +'V component of wind' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + } +#V component of wind +'V component of wind' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } #Specific humidity 'Specific humidity' = { table2Version = 3 ; indicatorOfParameter = 51 ; } +#Specific humidity +'Specific humidity' = { + table2Version = 2 ; + indicatorOfParameter = 51 ; + } +#Specific humidity +'Specific humidity' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure 'Surface pressure' = { table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } +#Surface pressure +'Surface pressure' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Surface pressure +'Surface pressure' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } #Vertical velocity 'Vertical velocity' = { table2Version = 3 ; indicatorOfParameter = 39 ; } +#Vertical velocity +'Vertical velocity' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'Vertical velocity' = { + table2Version = 1 ; + indicatorOfParameter = 39 ; + } #Vorticity (relative) 'Vorticity (relative)' = { table2Version = 3 ; indicatorOfParameter = 43 ; } +#Vorticity (relative) +'Vorticity (relative)' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'Vorticity (relative)' = { + table2Version = 1 ; + indicatorOfParameter = 43 ; + } #Mean sea level pressure 'Mean sea level pressure' = { table2Version = 3 ; indicatorOfParameter = 2 ; } +#Mean sea level pressure +'Mean sea level pressure' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'Mean sea level pressure' = { + table2Version = 1 ; + indicatorOfParameter = 2 ; + } #Divergence 'Divergence' = { table2Version = 3 ; indicatorOfParameter = 44 ; } +#Divergence +'Divergence' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence +'Divergence' = { + table2Version = 1 ; + indicatorOfParameter = 44 ; + } #Geopotential height 'Geopotential height' = { table2Version = 3 ; indicatorOfParameter = 7 ; } +#Geopotential height +'Geopotential height' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'Geopotential height' = { + table2Version = 1 ; + indicatorOfParameter = 7 ; + } #Relative humidity 'Relative humidity' = { table2Version = 3 ; indicatorOfParameter = 52 ; } +#Relative humidity +'Relative humidity' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'Relative humidity' = { + table2Version = 1 ; + indicatorOfParameter = 52 ; + } #10 metre U wind component '10 metre U wind component' = { table2Version = 3 ; @@ -111,6 +321,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre U wind component +'10 metre U wind component' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre U wind component +'10 metre U wind component' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #10 metre V wind component '10 metre V wind component' = { table2Version = 3 ; @@ -118,6 +342,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre V wind component +'10 metre V wind component' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre V wind component +'10 metre V wind component' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #2 metre temperature '2 metre temperature' = { table2Version = 3 ; @@ -125,6 +363,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#2 metre temperature +'2 metre temperature' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre temperature +'2 metre temperature' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #2 metre dewpoint temperature '2 metre dewpoint temperature' = { table2Version = 3 ; @@ -132,104 +384,308 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } -#Land-sea mask -'Land-sea mask' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; +#2 metre dewpoint temperature +'2 metre dewpoint temperature' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre dewpoint temperature +'2 metre dewpoint temperature' = { + table2Version = 1 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Land-sea mask +'Land-sea mask' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'Land-sea mask' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'Land-sea mask' = { + table2Version = 1 ; + indicatorOfParameter = 81 ; } #Surface roughness (climatological) 'Surface roughness (climatological)' = { table2Version = 3 ; indicatorOfParameter = 83 ; } +#Surface roughness (climatological) +'Surface roughness (climatological)' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'Surface roughness (climatological)' = { + table2Version = 1 ; + indicatorOfParameter = 83 ; + } #Evaporation 'Evaporation' = { table2Version = 3 ; indicatorOfParameter = 57 ; } +#Evaporation +'Evaporation' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'Evaporation' = { + table2Version = 1 ; + indicatorOfParameter = 57 ; + } #Brightness temperature 'Brightness temperature' = { table2Version = 3 ; indicatorOfParameter = 118 ; } +#Brightness temperature +'Brightness temperature' = { + table2Version = 2 ; + indicatorOfParameter = 118 ; + } +#Brightness temperature +'Brightness temperature' = { + table2Version = 1 ; + indicatorOfParameter = 118 ; + } #Runoff 'Runoff' = { table2Version = 3 ; indicatorOfParameter = 90 ; } +#Runoff +'Runoff' = { + table2Version = 2 ; + indicatorOfParameter = 90 ; + } +#Runoff +'Runoff' = { + table2Version = 1 ; + indicatorOfParameter = 90 ; + } #Total column ozone 'Total column ozone' = { table2Version = 3 ; indicatorOfParameter = 10 ; } +#Total column ozone +'Total column ozone' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'Total column ozone' = { + table2Version = 1 ; + indicatorOfParameter = 10 ; + } #Large-scale precipitation 'Large-scale precipitation' = { table2Version = 3 ; indicatorOfParameter = 62 ; } +#Large-scale precipitation +'Large-scale precipitation' = { + table2Version = 2 ; + indicatorOfParameter = 62 ; + } +#Large-scale precipitation +'Large-scale precipitation' = { + table2Version = 1 ; + indicatorOfParameter = 62 ; + } #Snow depth 'Snow depth' = { table2Version = 3 ; indicatorOfParameter = 66 ; } +#Snow depth +'Snow depth' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'Snow depth' = { + table2Version = 1 ; + indicatorOfParameter = 66 ; + } #Convective cloud cover 'Convective cloud cover' = { table2Version = 3 ; indicatorOfParameter = 72 ; } +#Convective cloud cover +'Convective cloud cover' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'Convective cloud cover' = { + table2Version = 1 ; + indicatorOfParameter = 72 ; + } #Low cloud cover 'Low cloud cover' = { table2Version = 3 ; indicatorOfParameter = 73 ; } +#Low cloud cover +'Low cloud cover' = { + table2Version = 2 ; + indicatorOfParameter = 73 ; + } +#Low cloud cover +'Low cloud cover' = { + table2Version = 1 ; + indicatorOfParameter = 73 ; + } #Medium cloud cover 'Medium cloud cover' = { table2Version = 3 ; indicatorOfParameter = 74 ; } +#Medium cloud cover +'Medium cloud cover' = { + table2Version = 2 ; + indicatorOfParameter = 74 ; + } +#Medium cloud cover +'Medium cloud cover' = { + table2Version = 1 ; + indicatorOfParameter = 74 ; + } #High cloud cover 'High cloud cover' = { table2Version = 3 ; indicatorOfParameter = 75 ; } +#High cloud cover +'High cloud cover' = { + table2Version = 2 ; + indicatorOfParameter = 75 ; + } +#High cloud cover +'High cloud cover' = { + table2Version = 1 ; + indicatorOfParameter = 75 ; + } #Large scale snow 'Large scale snow' = { table2Version = 3 ; indicatorOfParameter = 79 ; } +#Large scale snow +'Large scale snow' = { + table2Version = 2 ; + indicatorOfParameter = 79 ; + } +#Large scale snow +'Large scale snow' = { + table2Version = 1 ; + indicatorOfParameter = 79 ; + } #Latent heat flux 'Latent heat flux' = { table2Version = 3 ; indicatorOfParameter = 121 ; } +#Latent heat flux +'Latent heat flux' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'Latent heat flux' = { + table2Version = 1 ; + indicatorOfParameter = 121 ; + } #Sensible heat flux 'Sensible heat flux' = { table2Version = 3 ; indicatorOfParameter = 122 ; } +#Sensible heat flux +'Sensible heat flux' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'Sensible heat flux' = { + table2Version = 1 ; + indicatorOfParameter = 122 ; + } #Boundary layer dissipation 'Boundary layer dissipation' = { table2Version = 3 ; indicatorOfParameter = 123 ; } +#Boundary layer dissipation +'Boundary layer dissipation' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'Boundary layer dissipation' = { + table2Version = 1 ; + indicatorOfParameter = 123 ; + } #Convective snow 'Convective snow' = { table2Version = 3 ; indicatorOfParameter = 78 ; } +#Convective snow +'Convective snow' = { + table2Version = 2 ; + indicatorOfParameter = 78 ; + } +#Convective snow +'Convective snow' = { + table2Version = 1 ; + indicatorOfParameter = 78 ; + } #Cloud water 'Cloud water' = { table2Version = 3 ; indicatorOfParameter = 76 ; } +#Cloud water +'Cloud water' = { + table2Version = 2 ; + indicatorOfParameter = 76 ; + } +#Cloud water +'Cloud water' = { + table2Version = 1 ; + indicatorOfParameter = 76 ; + } #Forecast albedo 'Forecast albedo' = { table2Version = 3 ; indicatorOfParameter = 84 ; } +#Forecast albedo +'Forecast albedo' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'Forecast albedo' = { + table2Version = 1 ; + indicatorOfParameter = 84 ; + } #Virtual temperature 'Virtual temperature' = { - table2Version = 1 ; + table2Version = 3 ; indicatorOfParameter = 12 ; } #Virtual temperature @@ -239,7 +695,7 @@ } #Virtual temperature 'Virtual temperature' = { - table2Version = 3 ; + table2Version = 1 ; indicatorOfParameter = 12 ; } #Pressure tendency @@ -247,1382 +703,70 @@ table2Version = 3 ; indicatorOfParameter = 3 ; } +#Pressure tendency +'Pressure tendency' = { + table2Version = 2 ; + indicatorOfParameter = 3 ; + } +#Pressure tendency +'Pressure tendency' = { + table2Version = 1 ; + indicatorOfParameter = 3 ; + } #ICAO Standard Atmosphere reference height 'ICAO Standard Atmosphere reference height' = { table2Version = 3 ; indicatorOfParameter = 5 ; } +#ICAO Standard Atmosphere reference height +'ICAO Standard Atmosphere reference height' = { + table2Version = 2 ; + indicatorOfParameter = 5 ; + } +#ICAO Standard Atmosphere reference height +'ICAO Standard Atmosphere reference height' = { + table2Version = 1 ; + indicatorOfParameter = 5 ; + } #Geometrical height 'Geometrical height' = { table2Version = 3 ; indicatorOfParameter = 8 ; } +#Geometrical height +'Geometrical height' = { + table2Version = 2 ; + indicatorOfParameter = 8 ; + } +#Geometrical height +'Geometrical height' = { + table2Version = 1 ; + indicatorOfParameter = 8 ; + } #Standard deviation of height 'Standard deviation of height' = { table2Version = 3 ; indicatorOfParameter = 9 ; } +#Standard deviation of height +'Standard deviation of height' = { + table2Version = 2 ; + indicatorOfParameter = 9 ; + } +#Standard deviation of height +'Standard deviation of height' = { + table2Version = 1 ; + indicatorOfParameter = 9 ; + } #Pseudo-adiabatic potential temperature 'Pseudo-adiabatic potential temperature' = { table2Version = 3 ; indicatorOfParameter = 14 ; } -#Maximum temperature -'Maximum temperature' = { - table2Version = 3 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'Minimum temperature' = { - table2Version = 3 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'Dew point temperature' = { - table2Version = 3 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'Dew point depression (or deficit)' = { - table2Version = 3 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'Lapse rate' = { - table2Version = 3 ; - indicatorOfParameter = 19 ; - } -#Visibility -'Visibility' = { - table2Version = 3 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'Radar spectra (1)' = { - table2Version = 3 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'Radar spectra (2)' = { - table2Version = 3 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'Radar spectra (3)' = { - table2Version = 3 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'Parcel lifted index (to 500 hPa)' = { - table2Version = 3 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'Temperature anomaly' = { - table2Version = 3 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'Pressure anomaly' = { - table2Version = 3 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'Geopotential height anomaly' = { - table2Version = 3 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'Wave spectra (1)' = { - table2Version = 3 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'Wave spectra (2)' = { - table2Version = 3 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'Wave spectra (3)' = { - table2Version = 3 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'Wind direction' = { - table2Version = 3 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'Montgomery stream Function' = { - table2Version = 3 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'Sigma coordinate vertical velocity' = { - table2Version = 3 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'Absolute vorticity' = { - table2Version = 3 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'Absolute divergence' = { - table2Version = 3 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'Vertical u-component shear' = { - table2Version = 3 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'Vertical v-component shear' = { - table2Version = 3 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'Direction of current' = { - table2Version = 3 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'Speed of current' = { - table2Version = 3 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'U-component of current' = { - table2Version = 3 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'V-component of current' = { - table2Version = 3 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'Humidity mixing ratio' = { - table2Version = 3 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'Precipitable water' = { - table2Version = 3 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'Vapour pressure' = { - table2Version = 3 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'Saturation deficit' = { - table2Version = 3 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'Precipitation rate' = { - table2Version = 3 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'Thunderstorm probability' = { - table2Version = 3 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'Convective precipitation (water)' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'Snow fall rate water equivalent' = { - table2Version = 3 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'Mixed layer depth' = { - table2Version = 3 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'Transient thermocline depth' = { - table2Version = 3 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'Main thermocline depth' = { - table2Version = 3 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'Main thermocline anomaly' = { - table2Version = 3 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'Best lifted index (to 500 hPa)' = { - table2Version = 3 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'Water temperature' = { - table2Version = 3 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'Deviation of sea-level from mean' = { - table2Version = 3 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'Soil moisture content' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Salinity -'Salinity' = { - table2Version = 3 ; - indicatorOfParameter = 88 ; - } -#Density -'Density' = { - table2Version = 3 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'Ice cover (1=ice, 0=no ice)' = { - table2Version = 3 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'Ice thickness' = { - table2Version = 3 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'Direction of ice drift' = { - table2Version = 3 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'Speed of ice drift' = { - table2Version = 3 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'U-component of ice drift' = { - table2Version = 3 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'V-component of ice drift' = { - table2Version = 3 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'Ice growth rate' = { - table2Version = 3 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'Ice divergence' = { - table2Version = 3 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'Snowmelt' = { - table2Version = 3 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'Signific.height,combined wind waves+swell' = { - table2Version = 3 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'Mean direction of wind waves' = { - table2Version = 3 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'Significant height of wind waves' = { - table2Version = 3 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'Mean period of wind waves' = { - table2Version = 3 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'Direction of swell waves' = { - table2Version = 3 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'Significant height of swell waves' = { - table2Version = 3 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'Mean period of swell waves' = { - table2Version = 3 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'Primary wave direction' = { - table2Version = 3 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'Primary wave mean period' = { - table2Version = 3 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'Secondary wave direction' = { - table2Version = 3 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'Secondary wave mean period' = { - table2Version = 3 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'Net short-wave radiation flux (surface)' = { - table2Version = 3 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'Net long-wave radiation flux (surface)' = { - table2Version = 3 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'Net short-wave radiation flux(atmosph.top)' = { - table2Version = 3 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'Net long-wave radiation flux(atmosph.top)' = { - table2Version = 3 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'Long wave radiation flux' = { - table2Version = 3 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'Short wave radiation flux' = { - table2Version = 3 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'Global radiation flux' = { - table2Version = 3 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'Radiance (with respect to wave number)' = { - table2Version = 3 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'Radiance (with respect to wave length)' = { - table2Version = 3 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'Momentum flux, u-component' = { - table2Version = 3 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'Momentum flux, v-component' = { - table2Version = 3 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'Wind mixing energy' = { - table2Version = 3 ; - indicatorOfParameter = 126 ; - } -#Image data -'Image data' = { - table2Version = 3 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'Percentage of vegetation' = { - table2Version = 3 ; - indicatorOfParameter = 87 ; - } -#Orography -'Orography' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'Soil moisture' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'Soil temperature' = { - table2Version = 3 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'Snowfall water equivalent' = { - table2Version = 3 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'Total Cloud Cover' = { - table2Version = 3 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'Total Precipitation' = { - table2Version = 3 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'Stream function' = { - table2Version = 2 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'Velocity potential' = { - table2Version = 2 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'Potential temperature' = { - table2Version = 2 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'Wind speed' = { - table2Version = 2 ; - indicatorOfParameter = 32 ; - } -#Pressure -'Pressure' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'Potential vorticity' = { - table2Version = 2 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'Maximum temperature at 2 metres in the last 6 hours' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'Minimum temperature at 2 metres in the last 6 hours' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'Geopotential' = { - table2Version = 2 ; - indicatorOfParameter = 6 ; - } -#Temperature -'Temperature' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'U component of wind' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'V component of wind' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'Specific humidity' = { - table2Version = 2 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'Surface pressure' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'Vertical velocity' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'Vorticity (relative)' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'Mean sea level pressure' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'Divergence' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'Geopotential height' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'Relative humidity' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'10 metre U wind component' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'10 metre V wind component' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'2 metre temperature' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'2 metre dewpoint temperature' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'Land-sea mask' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'Surface roughness (climatological)' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'Evaporation' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'Brightness temperature' = { - table2Version = 2 ; - indicatorOfParameter = 118 ; - } -#Runoff -'Runoff' = { - table2Version = 2 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'Total column ozone' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'Large-scale precipitation' = { - table2Version = 2 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'Snow depth' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'Convective cloud cover' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'Low cloud cover' = { - table2Version = 2 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'Medium cloud cover' = { - table2Version = 2 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'High cloud cover' = { - table2Version = 2 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'Large scale snow' = { - table2Version = 2 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'Latent heat flux' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'Sensible heat flux' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'Boundary layer dissipation' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'Convective snow' = { - table2Version = 2 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'Cloud water' = { - table2Version = 2 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'Forecast albedo' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'Pressure tendency' = { - table2Version = 2 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'ICAO Standard Atmosphere reference height' = { - table2Version = 2 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'Geometrical height' = { - table2Version = 2 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'Standard deviation of height' = { - table2Version = 2 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'Pseudo-adiabatic potential temperature' = { - table2Version = 2 ; - indicatorOfParameter = 14 ; - } -#Maximum temperature -'Maximum temperature' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'Minimum temperature' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'Dew point temperature' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'Dew point depression (or deficit)' = { - table2Version = 2 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'Lapse rate' = { - table2Version = 2 ; - indicatorOfParameter = 19 ; - } -#Visibility -'Visibility' = { - table2Version = 2 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'Radar spectra (1)' = { - table2Version = 2 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'Radar spectra (2)' = { - table2Version = 2 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'Radar spectra (3)' = { - table2Version = 2 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'Parcel lifted index (to 500 hPa)' = { - table2Version = 2 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'Temperature anomaly' = { - table2Version = 2 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'Pressure anomaly' = { - table2Version = 2 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'Geopotential height anomaly' = { - table2Version = 2 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'Wave spectra (1)' = { - table2Version = 2 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'Wave spectra (2)' = { - table2Version = 2 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'Wave spectra (3)' = { - table2Version = 2 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'Wind direction' = { - table2Version = 2 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'Montgomery stream Function' = { - table2Version = 2 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'Sigma coordinate vertical velocity' = { - table2Version = 2 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'Absolute vorticity' = { - table2Version = 2 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'Absolute divergence' = { - table2Version = 2 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'Vertical u-component shear' = { - table2Version = 2 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'Vertical v-component shear' = { - table2Version = 2 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'Direction of current' = { - table2Version = 2 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'Speed of current' = { - table2Version = 2 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'U-component of current' = { - table2Version = 2 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'V-component of current' = { - table2Version = 2 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'Humidity mixing ratio' = { - table2Version = 2 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'Precipitable water' = { - table2Version = 2 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'Vapour pressure' = { - table2Version = 2 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'Saturation deficit' = { - table2Version = 2 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'Precipitation rate' = { - table2Version = 2 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'Thunderstorm probability' = { - table2Version = 2 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'Convective precipitation (water)' = { - table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'Snow fall rate water equivalent' = { - table2Version = 2 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'Mixed layer depth' = { - table2Version = 2 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'Transient thermocline depth' = { - table2Version = 2 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'Main thermocline depth' = { - table2Version = 2 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'Main thermocline anomaly' = { - table2Version = 2 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'Best lifted index (to 500 hPa)' = { - table2Version = 2 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'Water temperature' = { - table2Version = 2 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'Deviation of sea-level from mean' = { - table2Version = 2 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'Soil moisture content' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Salinity -'Salinity' = { - table2Version = 2 ; - indicatorOfParameter = 88 ; - } -#Density -'Density' = { - table2Version = 2 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'Ice cover (1=ice, 0=no ice)' = { - table2Version = 2 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'Ice thickness' = { - table2Version = 2 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'Direction of ice drift' = { - table2Version = 2 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'Speed of ice drift' = { - table2Version = 2 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'U-component of ice drift' = { - table2Version = 2 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'V-component of ice drift' = { - table2Version = 2 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'Ice growth rate' = { - table2Version = 2 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'Ice divergence' = { - table2Version = 2 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'Snowmelt' = { - table2Version = 2 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'Signific.height,combined wind waves+swell' = { - table2Version = 2 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'Mean direction of wind waves' = { - table2Version = 2 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'Significant height of wind waves' = { - table2Version = 2 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'Mean period of wind waves' = { - table2Version = 2 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'Direction of swell waves' = { - table2Version = 2 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'Significant height of swell waves' = { - table2Version = 2 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'Mean period of swell waves' = { - table2Version = 2 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'Primary wave direction' = { - table2Version = 2 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'Primary wave mean period' = { - table2Version = 2 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'Secondary wave direction' = { - table2Version = 2 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'Secondary wave mean period' = { - table2Version = 2 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'Net short-wave radiation flux (surface)' = { - table2Version = 2 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'Net long-wave radiation flux (surface)' = { - table2Version = 2 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'Net short-wave radiation flux(atmosph.top)' = { - table2Version = 2 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'Net long-wave radiation flux(atmosph.top)' = { - table2Version = 2 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'Long wave radiation flux' = { - table2Version = 2 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'Short wave radiation flux' = { - table2Version = 2 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'Global radiation flux' = { - table2Version = 2 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'Radiance (with respect to wave number)' = { - table2Version = 2 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'Radiance (with respect to wave length)' = { - table2Version = 2 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'Momentum flux, u-component' = { - table2Version = 2 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'Momentum flux, v-component' = { - table2Version = 2 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'Wind mixing energy' = { - table2Version = 2 ; - indicatorOfParameter = 126 ; - } -#Image data -'Image data' = { - table2Version = 2 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'Percentage of vegetation' = { - table2Version = 2 ; - indicatorOfParameter = 87 ; - } -#Orography -'Orography' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'Soil moisture' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'Soil temperature' = { - table2Version = 2 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'Snowfall water equivalent' = { - table2Version = 2 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'Total Cloud Cover' = { - table2Version = 2 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'Total Precipitation' = { - table2Version = 2 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'Stream function' = { - table2Version = 1 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'Velocity potential' = { - table2Version = 1 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'Potential temperature' = { - table2Version = 1 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'Wind speed' = { - table2Version = 1 ; - indicatorOfParameter = 32 ; - } -#Pressure -'Pressure' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'Potential vorticity' = { - table2Version = 1 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'Maximum temperature at 2 metres in the last 6 hours' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'Minimum temperature at 2 metres in the last 6 hours' = { - table2Version = 1 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'Geopotential' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'Temperature' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'U component of wind' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'V component of wind' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'Specific humidity' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'Surface pressure' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'Vertical velocity' = { - table2Version = 1 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'Vorticity (relative)' = { - table2Version = 1 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'Mean sea level pressure' = { - table2Version = 1 ; - indicatorOfParameter = 2 ; - } -#Divergence -'Divergence' = { - table2Version = 1 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'Geopotential height' = { - table2Version = 1 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'Relative humidity' = { - table2Version = 1 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'10 metre U wind component' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'10 metre V wind component' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'2 metre temperature' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'2 metre dewpoint temperature' = { - table2Version = 1 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'Land-sea mask' = { - table2Version = 1 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'Surface roughness (climatological)' = { - table2Version = 1 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'Evaporation' = { - table2Version = 1 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'Brightness temperature' = { - table2Version = 1 ; - indicatorOfParameter = 118 ; - } -#Runoff -'Runoff' = { - table2Version = 1 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'Total column ozone' = { - table2Version = 1 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'Large-scale precipitation' = { - table2Version = 1 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'Snow depth' = { - table2Version = 1 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'Convective cloud cover' = { - table2Version = 1 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'Low cloud cover' = { - table2Version = 1 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'Medium cloud cover' = { - table2Version = 1 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'High cloud cover' = { - table2Version = 1 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'Large scale snow' = { - table2Version = 1 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'Latent heat flux' = { - table2Version = 1 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'Sensible heat flux' = { - table2Version = 1 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'Boundary layer dissipation' = { - table2Version = 1 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'Convective snow' = { - table2Version = 1 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'Cloud water' = { - table2Version = 1 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'Forecast albedo' = { - table2Version = 1 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'Pressure tendency' = { - table2Version = 1 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'ICAO Standard Atmosphere reference height' = { - table2Version = 1 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'Geometrical height' = { - table2Version = 1 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'Standard deviation of height' = { - table2Version = 1 ; - indicatorOfParameter = 9 ; +#Pseudo-adiabatic potential temperature +'Pseudo-adiabatic potential temperature' = { + table2Version = 2 ; + indicatorOfParameter = 14 ; } #Pseudo-adiabatic potential temperature 'Pseudo-adiabatic potential temperature' = { @@ -1630,427 +774,1283 @@ indicatorOfParameter = 14 ; } #Maximum temperature +'Maximum temperature' = { + table2Version = 3 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature +'Maximum temperature' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature 'Maximum temperature' = { table2Version = 1 ; indicatorOfParameter = 15 ; } #Minimum temperature +'Minimum temperature' = { + table2Version = 3 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature +'Minimum temperature' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature 'Minimum temperature' = { table2Version = 1 ; indicatorOfParameter = 16 ; } #Dew point temperature +'Dew point temperature' = { + table2Version = 3 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'Dew point temperature' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature 'Dew point temperature' = { table2Version = 1 ; indicatorOfParameter = 17 ; } #Dew point depression (or deficit) +'Dew point depression (or deficit)' = { + table2Version = 3 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'Dew point depression (or deficit)' = { + table2Version = 2 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) 'Dew point depression (or deficit)' = { table2Version = 1 ; indicatorOfParameter = 18 ; } #Lapse rate +'Lapse rate' = { + table2Version = 3 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'Lapse rate' = { + table2Version = 2 ; + indicatorOfParameter = 19 ; + } +#Lapse rate 'Lapse rate' = { table2Version = 1 ; indicatorOfParameter = 19 ; } #Visibility +'Visibility' = { + table2Version = 3 ; + indicatorOfParameter = 20 ; + } +#Visibility +'Visibility' = { + table2Version = 2 ; + indicatorOfParameter = 20 ; + } +#Visibility 'Visibility' = { table2Version = 1 ; indicatorOfParameter = 20 ; } #Radar spectra (1) +'Radar spectra (1)' = { + table2Version = 3 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'Radar spectra (1)' = { + table2Version = 2 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) 'Radar spectra (1)' = { table2Version = 1 ; indicatorOfParameter = 21 ; } #Radar spectra (2) +'Radar spectra (2)' = { + table2Version = 3 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'Radar spectra (2)' = { + table2Version = 2 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) 'Radar spectra (2)' = { table2Version = 1 ; indicatorOfParameter = 22 ; } #Radar spectra (3) +'Radar spectra (3)' = { + table2Version = 3 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'Radar spectra (3)' = { + table2Version = 2 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) 'Radar spectra (3)' = { table2Version = 1 ; indicatorOfParameter = 23 ; } #Parcel lifted index (to 500 hPa) +'Parcel lifted index (to 500 hPa)' = { + table2Version = 3 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'Parcel lifted index (to 500 hPa)' = { + table2Version = 2 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) 'Parcel lifted index (to 500 hPa)' = { table2Version = 1 ; indicatorOfParameter = 24 ; } #Temperature anomaly +'Temperature anomaly' = { + table2Version = 3 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'Temperature anomaly' = { + table2Version = 2 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly 'Temperature anomaly' = { table2Version = 1 ; indicatorOfParameter = 25 ; } #Pressure anomaly +'Pressure anomaly' = { + table2Version = 3 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'Pressure anomaly' = { + table2Version = 2 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly 'Pressure anomaly' = { table2Version = 1 ; indicatorOfParameter = 26 ; } #Geopotential height anomaly +'Geopotential height anomaly' = { + table2Version = 3 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'Geopotential height anomaly' = { + table2Version = 2 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly 'Geopotential height anomaly' = { table2Version = 1 ; indicatorOfParameter = 27 ; } #Wave spectra (1) +'Wave spectra (1)' = { + table2Version = 3 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'Wave spectra (1)' = { + table2Version = 2 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) 'Wave spectra (1)' = { table2Version = 1 ; indicatorOfParameter = 28 ; } #Wave spectra (2) +'Wave spectra (2)' = { + table2Version = 3 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'Wave spectra (2)' = { + table2Version = 2 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) 'Wave spectra (2)' = { table2Version = 1 ; indicatorOfParameter = 29 ; } #Wave spectra (3) +'Wave spectra (3)' = { + table2Version = 3 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'Wave spectra (3)' = { + table2Version = 2 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) 'Wave spectra (3)' = { table2Version = 1 ; indicatorOfParameter = 30 ; } #Wind direction +'Wind direction' = { + table2Version = 3 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'Wind direction' = { + table2Version = 2 ; + indicatorOfParameter = 31 ; + } +#Wind direction 'Wind direction' = { table2Version = 1 ; indicatorOfParameter = 31 ; } #Montgomery stream Function +'Montgomery stream Function' = { + table2Version = 3 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'Montgomery stream Function' = { + table2Version = 2 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function 'Montgomery stream Function' = { table2Version = 1 ; indicatorOfParameter = 37 ; } #Sigma coordinate vertical velocity +'Sigma coordinate vertical velocity' = { + table2Version = 3 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'Sigma coordinate vertical velocity' = { + table2Version = 2 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity 'Sigma coordinate vertical velocity' = { table2Version = 1 ; indicatorOfParameter = 38 ; } #Absolute vorticity +'Absolute vorticity' = { + table2Version = 3 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'Absolute vorticity' = { + table2Version = 2 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity 'Absolute vorticity' = { table2Version = 1 ; indicatorOfParameter = 41 ; } #Absolute divergence +'Absolute divergence' = { + table2Version = 3 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'Absolute divergence' = { + table2Version = 2 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence 'Absolute divergence' = { table2Version = 1 ; indicatorOfParameter = 42 ; } #Vertical u-component shear +'Vertical u-component shear' = { + table2Version = 3 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'Vertical u-component shear' = { + table2Version = 2 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear 'Vertical u-component shear' = { table2Version = 1 ; indicatorOfParameter = 45 ; } #Vertical v-component shear +'Vertical v-component shear' = { + table2Version = 3 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'Vertical v-component shear' = { + table2Version = 2 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear 'Vertical v-component shear' = { table2Version = 1 ; indicatorOfParameter = 46 ; } #Direction of current +'Direction of current' = { + table2Version = 3 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'Direction of current' = { + table2Version = 2 ; + indicatorOfParameter = 47 ; + } +#Direction of current 'Direction of current' = { table2Version = 1 ; indicatorOfParameter = 47 ; } #Speed of current +'Speed of current' = { + table2Version = 3 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'Speed of current' = { + table2Version = 2 ; + indicatorOfParameter = 48 ; + } +#Speed of current 'Speed of current' = { table2Version = 1 ; indicatorOfParameter = 48 ; } #U-component of current +'U-component of current' = { + table2Version = 3 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'U-component of current' = { + table2Version = 2 ; + indicatorOfParameter = 49 ; + } +#U-component of current 'U-component of current' = { table2Version = 1 ; indicatorOfParameter = 49 ; } #V-component of current +'V-component of current' = { + table2Version = 3 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'V-component of current' = { + table2Version = 2 ; + indicatorOfParameter = 50 ; + } +#V-component of current 'V-component of current' = { table2Version = 1 ; indicatorOfParameter = 50 ; } #Humidity mixing ratio +'Humidity mixing ratio' = { + table2Version = 3 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'Humidity mixing ratio' = { + table2Version = 2 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio 'Humidity mixing ratio' = { table2Version = 1 ; indicatorOfParameter = 53 ; } #Precipitable water +'Precipitable water' = { + table2Version = 3 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'Precipitable water' = { + table2Version = 2 ; + indicatorOfParameter = 54 ; + } +#Precipitable water 'Precipitable water' = { table2Version = 1 ; indicatorOfParameter = 54 ; } #Vapour pressure +'Vapour pressure' = { + table2Version = 3 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'Vapour pressure' = { + table2Version = 2 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure 'Vapour pressure' = { table2Version = 1 ; indicatorOfParameter = 55 ; } #Saturation deficit +'Saturation deficit' = { + table2Version = 3 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'Saturation deficit' = { + table2Version = 2 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit 'Saturation deficit' = { table2Version = 1 ; indicatorOfParameter = 56 ; } #Precipitation rate +'Precipitation rate' = { + table2Version = 3 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'Precipitation rate' = { + table2Version = 2 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate 'Precipitation rate' = { table2Version = 1 ; indicatorOfParameter = 59 ; } #Thunderstorm probability +'Thunderstorm probability' = { + table2Version = 3 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'Thunderstorm probability' = { + table2Version = 2 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability 'Thunderstorm probability' = { table2Version = 1 ; indicatorOfParameter = 60 ; } #Convective precipitation (water) +'Convective precipitation (water)' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'Convective precipitation (water)' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) 'Convective precipitation (water)' = { table2Version = 1 ; indicatorOfParameter = 63 ; } #Snow fall rate water equivalent +'Snow fall rate water equivalent' = { + table2Version = 3 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'Snow fall rate water equivalent' = { + table2Version = 2 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent 'Snow fall rate water equivalent' = { table2Version = 1 ; indicatorOfParameter = 64 ; } #Mixed layer depth +'Mixed layer depth' = { + table2Version = 3 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'Mixed layer depth' = { + table2Version = 2 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth 'Mixed layer depth' = { table2Version = 1 ; indicatorOfParameter = 67 ; } #Transient thermocline depth +'Transient thermocline depth' = { + table2Version = 3 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'Transient thermocline depth' = { + table2Version = 2 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth 'Transient thermocline depth' = { table2Version = 1 ; indicatorOfParameter = 68 ; } #Main thermocline depth +'Main thermocline depth' = { + table2Version = 3 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'Main thermocline depth' = { + table2Version = 2 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth 'Main thermocline depth' = { table2Version = 1 ; indicatorOfParameter = 69 ; } #Main thermocline anomaly +'Main thermocline anomaly' = { + table2Version = 3 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'Main thermocline anomaly' = { + table2Version = 2 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly 'Main thermocline anomaly' = { table2Version = 1 ; indicatorOfParameter = 70 ; } #Best lifted index (to 500 hPa) +'Best lifted index (to 500 hPa)' = { + table2Version = 3 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'Best lifted index (to 500 hPa)' = { + table2Version = 2 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) 'Best lifted index (to 500 hPa)' = { table2Version = 1 ; indicatorOfParameter = 77 ; } #Water temperature +'Water temperature' = { + table2Version = 3 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'Water temperature' = { + table2Version = 2 ; + indicatorOfParameter = 80 ; + } +#Water temperature 'Water temperature' = { table2Version = 1 ; indicatorOfParameter = 80 ; } #Deviation of sea-level from mean +'Deviation of sea-level from mean' = { + table2Version = 3 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'Deviation of sea-level from mean' = { + table2Version = 2 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean 'Deviation of sea-level from mean' = { table2Version = 1 ; indicatorOfParameter = 82 ; } #Soil moisture content +'Soil moisture content' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'Soil moisture content' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content 'Soil moisture content' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Salinity +'Salinity' = { + table2Version = 3 ; + indicatorOfParameter = 88 ; + } +#Salinity +'Salinity' = { + table2Version = 2 ; + indicatorOfParameter = 88 ; + } +#Salinity 'Salinity' = { table2Version = 1 ; indicatorOfParameter = 88 ; } #Density +'Density' = { + table2Version = 3 ; + indicatorOfParameter = 89 ; + } +#Density +'Density' = { + table2Version = 2 ; + indicatorOfParameter = 89 ; + } +#Density 'Density' = { table2Version = 1 ; indicatorOfParameter = 89 ; } #Ice cover (1=ice, 0=no ice) +'Ice cover (1=ice, 0=no ice)' = { + table2Version = 3 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'Ice cover (1=ice, 0=no ice)' = { + table2Version = 2 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) 'Ice cover (1=ice, 0=no ice)' = { table2Version = 1 ; indicatorOfParameter = 91 ; } #Ice thickness +'Ice thickness' = { + table2Version = 3 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'Ice thickness' = { + table2Version = 2 ; + indicatorOfParameter = 92 ; + } +#Ice thickness 'Ice thickness' = { table2Version = 1 ; indicatorOfParameter = 92 ; } #Direction of ice drift +'Direction of ice drift' = { + table2Version = 3 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'Direction of ice drift' = { + table2Version = 2 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift 'Direction of ice drift' = { table2Version = 1 ; indicatorOfParameter = 93 ; } #Speed of ice drift +'Speed of ice drift' = { + table2Version = 3 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'Speed of ice drift' = { + table2Version = 2 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift 'Speed of ice drift' = { table2Version = 1 ; indicatorOfParameter = 94 ; } #U-component of ice drift +'U-component of ice drift' = { + table2Version = 3 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'U-component of ice drift' = { + table2Version = 2 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift 'U-component of ice drift' = { table2Version = 1 ; indicatorOfParameter = 95 ; } #V-component of ice drift +'V-component of ice drift' = { + table2Version = 3 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'V-component of ice drift' = { + table2Version = 2 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift 'V-component of ice drift' = { table2Version = 1 ; indicatorOfParameter = 96 ; } #Ice growth rate +'Ice growth rate' = { + table2Version = 3 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'Ice growth rate' = { + table2Version = 2 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate 'Ice growth rate' = { table2Version = 1 ; indicatorOfParameter = 97 ; } #Ice divergence +'Ice divergence' = { + table2Version = 3 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'Ice divergence' = { + table2Version = 2 ; + indicatorOfParameter = 98 ; + } +#Ice divergence 'Ice divergence' = { table2Version = 1 ; indicatorOfParameter = 98 ; } #Snowmelt +'Snowmelt' = { + table2Version = 3 ; + indicatorOfParameter = 99 ; + } +#Snowmelt +'Snowmelt' = { + table2Version = 2 ; + indicatorOfParameter = 99 ; + } +#Snowmelt 'Snowmelt' = { table2Version = 1 ; indicatorOfParameter = 99 ; } #Signific.height,combined wind waves+swell +'Signific.height,combined wind waves+swell' = { + table2Version = 3 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'Signific.height,combined wind waves+swell' = { + table2Version = 2 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell 'Signific.height,combined wind waves+swell' = { table2Version = 1 ; indicatorOfParameter = 100 ; } #Mean direction of wind waves +'Mean direction of wind waves' = { + table2Version = 3 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'Mean direction of wind waves' = { + table2Version = 2 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves 'Mean direction of wind waves' = { table2Version = 1 ; indicatorOfParameter = 101 ; } #Significant height of wind waves +'Significant height of wind waves' = { + table2Version = 3 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'Significant height of wind waves' = { + table2Version = 2 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves 'Significant height of wind waves' = { table2Version = 1 ; indicatorOfParameter = 102 ; } #Mean period of wind waves +'Mean period of wind waves' = { + table2Version = 3 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'Mean period of wind waves' = { + table2Version = 2 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves 'Mean period of wind waves' = { table2Version = 1 ; indicatorOfParameter = 103 ; } #Direction of swell waves +'Direction of swell waves' = { + table2Version = 3 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'Direction of swell waves' = { + table2Version = 2 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves 'Direction of swell waves' = { table2Version = 1 ; indicatorOfParameter = 104 ; } #Significant height of swell waves +'Significant height of swell waves' = { + table2Version = 3 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'Significant height of swell waves' = { + table2Version = 2 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves 'Significant height of swell waves' = { table2Version = 1 ; indicatorOfParameter = 105 ; } #Mean period of swell waves +'Mean period of swell waves' = { + table2Version = 3 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'Mean period of swell waves' = { + table2Version = 2 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves 'Mean period of swell waves' = { table2Version = 1 ; indicatorOfParameter = 106 ; } #Primary wave direction +'Primary wave direction' = { + table2Version = 3 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'Primary wave direction' = { + table2Version = 2 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction 'Primary wave direction' = { table2Version = 1 ; indicatorOfParameter = 107 ; } #Primary wave mean period +'Primary wave mean period' = { + table2Version = 3 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'Primary wave mean period' = { + table2Version = 2 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period 'Primary wave mean period' = { table2Version = 1 ; indicatorOfParameter = 108 ; } #Secondary wave direction +'Secondary wave direction' = { + table2Version = 3 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'Secondary wave direction' = { + table2Version = 2 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction 'Secondary wave direction' = { table2Version = 1 ; indicatorOfParameter = 109 ; } #Secondary wave mean period +'Secondary wave mean period' = { + table2Version = 3 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'Secondary wave mean period' = { + table2Version = 2 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period 'Secondary wave mean period' = { table2Version = 1 ; indicatorOfParameter = 110 ; } #Net short-wave radiation flux (surface) +'Net short-wave radiation flux (surface)' = { + table2Version = 3 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'Net short-wave radiation flux (surface)' = { + table2Version = 2 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) 'Net short-wave radiation flux (surface)' = { table2Version = 1 ; indicatorOfParameter = 111 ; } #Net long-wave radiation flux (surface) +'Net long-wave radiation flux (surface)' = { + table2Version = 3 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'Net long-wave radiation flux (surface)' = { + table2Version = 2 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) 'Net long-wave radiation flux (surface)' = { table2Version = 1 ; indicatorOfParameter = 112 ; } #Net short-wave radiation flux(atmosph.top) +'Net short-wave radiation flux(atmosph.top)' = { + table2Version = 3 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'Net short-wave radiation flux(atmosph.top)' = { + table2Version = 2 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) 'Net short-wave radiation flux(atmosph.top)' = { table2Version = 1 ; indicatorOfParameter = 113 ; } #Net long-wave radiation flux(atmosph.top) +'Net long-wave radiation flux(atmosph.top)' = { + table2Version = 3 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'Net long-wave radiation flux(atmosph.top)' = { + table2Version = 2 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) 'Net long-wave radiation flux(atmosph.top)' = { table2Version = 1 ; indicatorOfParameter = 114 ; } #Long wave radiation flux +'Long wave radiation flux' = { + table2Version = 3 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'Long wave radiation flux' = { + table2Version = 2 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux 'Long wave radiation flux' = { table2Version = 1 ; indicatorOfParameter = 115 ; } #Short wave radiation flux +'Short wave radiation flux' = { + table2Version = 3 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'Short wave radiation flux' = { + table2Version = 2 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux 'Short wave radiation flux' = { table2Version = 1 ; indicatorOfParameter = 116 ; } #Global radiation flux +'Global radiation flux' = { + table2Version = 3 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'Global radiation flux' = { + table2Version = 2 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux 'Global radiation flux' = { table2Version = 1 ; indicatorOfParameter = 117 ; } #Radiance (with respect to wave number) +'Radiance (with respect to wave number)' = { + table2Version = 3 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'Radiance (with respect to wave number)' = { + table2Version = 2 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) 'Radiance (with respect to wave number)' = { table2Version = 1 ; indicatorOfParameter = 119 ; } #Radiance (with respect to wave length) +'Radiance (with respect to wave length)' = { + table2Version = 3 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'Radiance (with respect to wave length)' = { + table2Version = 2 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) 'Radiance (with respect to wave length)' = { table2Version = 1 ; indicatorOfParameter = 120 ; } #Momentum flux, u-component +'Momentum flux, u-component' = { + table2Version = 3 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'Momentum flux, u-component' = { + table2Version = 2 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component 'Momentum flux, u-component' = { table2Version = 1 ; indicatorOfParameter = 124 ; } #Momentum flux, v-component +'Momentum flux, v-component' = { + table2Version = 3 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'Momentum flux, v-component' = { + table2Version = 2 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component 'Momentum flux, v-component' = { table2Version = 1 ; indicatorOfParameter = 125 ; } #Wind mixing energy +'Wind mixing energy' = { + table2Version = 3 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'Wind mixing energy' = { + table2Version = 2 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy 'Wind mixing energy' = { table2Version = 1 ; indicatorOfParameter = 126 ; } #Image data +'Image data' = { + table2Version = 3 ; + indicatorOfParameter = 127 ; + } +#Image data +'Image data' = { + table2Version = 2 ; + indicatorOfParameter = 127 ; + } +#Image data 'Image data' = { table2Version = 1 ; indicatorOfParameter = 127 ; } #Percentage of vegetation +'Percentage of vegetation' = { + table2Version = 3 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation +'Percentage of vegetation' = { + table2Version = 2 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation 'Percentage of vegetation' = { table2Version = 1 ; indicatorOfParameter = 87 ; } #Orography +'Orography' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography +'Orography' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography 'Orography' = { table2Version = 1 ; indicatorOfParameter = 7 ; indicatorOfTypeOfLevel = 1 ; } #Soil moisture +'Soil moisture' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture +'Soil moisture' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture 'Soil moisture' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Soil temperature +'Soil temperature' = { + table2Version = 3 ; + indicatorOfParameter = 85 ; + } +#Soil temperature +'Soil temperature' = { + table2Version = 2 ; + indicatorOfParameter = 85 ; + } +#Soil temperature 'Soil temperature' = { table2Version = 1 ; indicatorOfParameter = 85 ; } #Snowfall water equivalent +'Snowfall water equivalent' = { + table2Version = 3 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent +'Snowfall water equivalent' = { + table2Version = 2 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent 'Snowfall water equivalent' = { table2Version = 1 ; indicatorOfParameter = 65 ; } #Total Cloud Cover +'Total Cloud Cover' = { + table2Version = 3 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover +'Total Cloud Cover' = { + table2Version = 2 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover 'Total Cloud Cover' = { table2Version = 1 ; indicatorOfParameter = 71 ; } #Total Precipitation +'Total Precipitation' = { + table2Version = 3 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation +'Total Precipitation' = { + table2Version = 2 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation 'Total Precipitation' = { table2Version = 1 ; indicatorOfParameter = 61 ; diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def index 6c10f9258..f3031f392 100644 --- a/definitions/grib1/paramId.def +++ b/definitions/grib1/paramId.def @@ -4,31 +4,91 @@ table2Version = 3 ; indicatorOfParameter = 35 ; } +#Stream function +'1' = { + table2Version = 2 ; + indicatorOfParameter = 35 ; + } +#Stream function +'1' = { + table2Version = 1 ; + indicatorOfParameter = 35 ; + } #Velocity potential '2' = { table2Version = 3 ; indicatorOfParameter = 36 ; } +#Velocity potential +'2' = { + table2Version = 2 ; + indicatorOfParameter = 36 ; + } +#Velocity potential +'2' = { + table2Version = 1 ; + indicatorOfParameter = 36 ; + } #Potential temperature '3' = { table2Version = 3 ; indicatorOfParameter = 13 ; } +#Potential temperature +'3' = { + table2Version = 2 ; + indicatorOfParameter = 13 ; + } +#Potential temperature +'3' = { + table2Version = 1 ; + indicatorOfParameter = 13 ; + } #Wind speed '10' = { table2Version = 3 ; indicatorOfParameter = 32 ; } +#Wind speed +'10' = { + table2Version = 2 ; + indicatorOfParameter = 32 ; + } +#Wind speed +'10' = { + table2Version = 1 ; + indicatorOfParameter = 32 ; + } #Pressure '54' = { table2Version = 3 ; indicatorOfParameter = 1 ; } +#Pressure +'54' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + } +#Pressure +'54' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + } #Potential vorticity '60' = { table2Version = 3 ; indicatorOfParameter = 4 ; } +#Potential vorticity +'60' = { + table2Version = 2 ; + indicatorOfParameter = 4 ; + } +#Potential vorticity +'60' = { + table2Version = 1 ; + indicatorOfParameter = 4 ; + } #Maximum temperature at 2 metres in the last 6 hours '121' = { table2Version = 3 ; @@ -36,6 +96,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Maximum temperature at 2 metres in the last 6 hours +'121' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Maximum temperature at 2 metres in the last 6 hours +'121' = { + table2Version = 1 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Minimum temperature at 2 metres in the last 6 hours '122' = { table2Version = 3 ; @@ -43,67 +117,203 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Minimum temperature at 2 metres in the last 6 hours +'122' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'122' = { + table2Version = 1 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Geopotential '129' = { table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'129' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'129' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature '130' = { table2Version = 3 ; indicatorOfParameter = 11 ; } +#Temperature +'130' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + } +#Temperature +'130' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + } #U component of wind '131' = { table2Version = 3 ; indicatorOfParameter = 33 ; } +#U component of wind +'131' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + } +#U component of wind +'131' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } #V component of wind '132' = { table2Version = 3 ; indicatorOfParameter = 34 ; } +#V component of wind +'132' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + } +#V component of wind +'132' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } #Specific humidity '133' = { table2Version = 3 ; indicatorOfParameter = 51 ; } +#Specific humidity +'133' = { + table2Version = 2 ; + indicatorOfParameter = 51 ; + } +#Specific humidity +'133' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure '134' = { table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } +#Surface pressure +'134' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Surface pressure +'134' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } #Vertical velocity '135' = { table2Version = 3 ; indicatorOfParameter = 39 ; } +#Vertical velocity +'135' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'135' = { + table2Version = 1 ; + indicatorOfParameter = 39 ; + } #Vorticity (relative) '138' = { table2Version = 3 ; indicatorOfParameter = 43 ; } +#Vorticity (relative) +'138' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'138' = { + table2Version = 1 ; + indicatorOfParameter = 43 ; + } #Mean sea level pressure '151' = { table2Version = 3 ; indicatorOfParameter = 2 ; } +#Mean sea level pressure +'151' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'151' = { + table2Version = 1 ; + indicatorOfParameter = 2 ; + } #Divergence '155' = { table2Version = 3 ; indicatorOfParameter = 44 ; } +#Divergence +'155' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence +'155' = { + table2Version = 1 ; + indicatorOfParameter = 44 ; + } #Geopotential height '156' = { table2Version = 3 ; indicatorOfParameter = 7 ; } +#Geopotential height +'156' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'156' = { + table2Version = 1 ; + indicatorOfParameter = 7 ; + } #Relative humidity '157' = { table2Version = 3 ; indicatorOfParameter = 52 ; } +#Relative humidity +'157' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'157' = { + table2Version = 1 ; + indicatorOfParameter = 52 ; + } #10 metre U wind component '165' = { table2Version = 3 ; @@ -111,6 +321,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre U wind component +'165' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre U wind component +'165' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #10 metre V wind component '166' = { table2Version = 3 ; @@ -118,6 +342,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre V wind component +'166' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre V wind component +'166' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #2 metre temperature '167' = { table2Version = 3 ; @@ -125,6 +363,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#2 metre temperature +'167' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre temperature +'167' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #2 metre dewpoint temperature '168' = { table2Version = 3 ; @@ -132,104 +384,308 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } -#Land-sea mask -'172' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; +#2 metre dewpoint temperature +'168' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre dewpoint temperature +'168' = { + table2Version = 1 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Land-sea mask +'172' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'172' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'172' = { + table2Version = 1 ; + indicatorOfParameter = 81 ; } #Surface roughness (climatological) '173' = { table2Version = 3 ; indicatorOfParameter = 83 ; } +#Surface roughness (climatological) +'173' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'173' = { + table2Version = 1 ; + indicatorOfParameter = 83 ; + } #Evaporation '182' = { table2Version = 3 ; indicatorOfParameter = 57 ; } +#Evaporation +'182' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'182' = { + table2Version = 1 ; + indicatorOfParameter = 57 ; + } #Brightness temperature '194' = { table2Version = 3 ; indicatorOfParameter = 118 ; } +#Brightness temperature +'194' = { + table2Version = 2 ; + indicatorOfParameter = 118 ; + } +#Brightness temperature +'194' = { + table2Version = 1 ; + indicatorOfParameter = 118 ; + } #Runoff '205' = { table2Version = 3 ; indicatorOfParameter = 90 ; } +#Runoff +'205' = { + table2Version = 2 ; + indicatorOfParameter = 90 ; + } +#Runoff +'205' = { + table2Version = 1 ; + indicatorOfParameter = 90 ; + } #Total column ozone '206' = { table2Version = 3 ; indicatorOfParameter = 10 ; } +#Total column ozone +'206' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'206' = { + table2Version = 1 ; + indicatorOfParameter = 10 ; + } #Large-scale precipitation '3062' = { table2Version = 3 ; indicatorOfParameter = 62 ; } +#Large-scale precipitation +'3062' = { + table2Version = 2 ; + indicatorOfParameter = 62 ; + } +#Large-scale precipitation +'3062' = { + table2Version = 1 ; + indicatorOfParameter = 62 ; + } #Snow depth '3066' = { table2Version = 3 ; indicatorOfParameter = 66 ; } +#Snow depth +'3066' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'3066' = { + table2Version = 1 ; + indicatorOfParameter = 66 ; + } #Convective cloud cover '3072' = { table2Version = 3 ; indicatorOfParameter = 72 ; } +#Convective cloud cover +'3072' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'3072' = { + table2Version = 1 ; + indicatorOfParameter = 72 ; + } #Low cloud cover '3073' = { table2Version = 3 ; indicatorOfParameter = 73 ; } +#Low cloud cover +'3073' = { + table2Version = 2 ; + indicatorOfParameter = 73 ; + } +#Low cloud cover +'3073' = { + table2Version = 1 ; + indicatorOfParameter = 73 ; + } #Medium cloud cover '3074' = { table2Version = 3 ; indicatorOfParameter = 74 ; } +#Medium cloud cover +'3074' = { + table2Version = 2 ; + indicatorOfParameter = 74 ; + } +#Medium cloud cover +'3074' = { + table2Version = 1 ; + indicatorOfParameter = 74 ; + } #High cloud cover '3075' = { table2Version = 3 ; indicatorOfParameter = 75 ; } +#High cloud cover +'3075' = { + table2Version = 2 ; + indicatorOfParameter = 75 ; + } +#High cloud cover +'3075' = { + table2Version = 1 ; + indicatorOfParameter = 75 ; + } #Large scale snow '3079' = { table2Version = 3 ; indicatorOfParameter = 79 ; } +#Large scale snow +'3079' = { + table2Version = 2 ; + indicatorOfParameter = 79 ; + } +#Large scale snow +'3079' = { + table2Version = 1 ; + indicatorOfParameter = 79 ; + } #Latent heat flux '3121' = { table2Version = 3 ; indicatorOfParameter = 121 ; } +#Latent heat flux +'3121' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'3121' = { + table2Version = 1 ; + indicatorOfParameter = 121 ; + } #Sensible heat flux '3122' = { table2Version = 3 ; indicatorOfParameter = 122 ; } +#Sensible heat flux +'3122' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'3122' = { + table2Version = 1 ; + indicatorOfParameter = 122 ; + } #Boundary layer dissipation '3123' = { table2Version = 3 ; indicatorOfParameter = 123 ; } +#Boundary layer dissipation +'3123' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'3123' = { + table2Version = 1 ; + indicatorOfParameter = 123 ; + } #Convective snow '260011' = { table2Version = 3 ; indicatorOfParameter = 78 ; } +#Convective snow +'260011' = { + table2Version = 2 ; + indicatorOfParameter = 78 ; + } +#Convective snow +'260011' = { + table2Version = 1 ; + indicatorOfParameter = 78 ; + } #Cloud water '260102' = { table2Version = 3 ; indicatorOfParameter = 76 ; } +#Cloud water +'260102' = { + table2Version = 2 ; + indicatorOfParameter = 76 ; + } +#Cloud water +'260102' = { + table2Version = 1 ; + indicatorOfParameter = 76 ; + } #Forecast albedo '260509' = { table2Version = 3 ; indicatorOfParameter = 84 ; } +#Forecast albedo +'260509' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'260509' = { + table2Version = 1 ; + indicatorOfParameter = 84 ; + } #Virtual temperature '300012' = { - table2Version = 1 ; + table2Version = 3 ; indicatorOfParameter = 12 ; } #Virtual temperature @@ -239,7 +695,7 @@ } #Virtual temperature '300012' = { - table2Version = 3 ; + table2Version = 1 ; indicatorOfParameter = 12 ; } #Pressure tendency @@ -247,1382 +703,70 @@ table2Version = 3 ; indicatorOfParameter = 3 ; } +#Pressure tendency +'3003' = { + table2Version = 2 ; + indicatorOfParameter = 3 ; + } +#Pressure tendency +'3003' = { + table2Version = 1 ; + indicatorOfParameter = 3 ; + } #ICAO Standard Atmosphere reference height '3005' = { table2Version = 3 ; indicatorOfParameter = 5 ; } +#ICAO Standard Atmosphere reference height +'3005' = { + table2Version = 2 ; + indicatorOfParameter = 5 ; + } +#ICAO Standard Atmosphere reference height +'3005' = { + table2Version = 1 ; + indicatorOfParameter = 5 ; + } #Geometrical height '3008' = { table2Version = 3 ; indicatorOfParameter = 8 ; } +#Geometrical height +'3008' = { + table2Version = 2 ; + indicatorOfParameter = 8 ; + } +#Geometrical height +'3008' = { + table2Version = 1 ; + indicatorOfParameter = 8 ; + } #Standard deviation of height '3009' = { table2Version = 3 ; indicatorOfParameter = 9 ; } +#Standard deviation of height +'3009' = { + table2Version = 2 ; + indicatorOfParameter = 9 ; + } +#Standard deviation of height +'3009' = { + table2Version = 1 ; + indicatorOfParameter = 9 ; + } #Pseudo-adiabatic potential temperature '3014' = { table2Version = 3 ; indicatorOfParameter = 14 ; } -#Maximum temperature -'3015' = { - table2Version = 3 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'3016' = { - table2Version = 3 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'3017' = { - table2Version = 3 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'3018' = { - table2Version = 3 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'3019' = { - table2Version = 3 ; - indicatorOfParameter = 19 ; - } -#Visibility -'3020' = { - table2Version = 3 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'3021' = { - table2Version = 3 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'3022' = { - table2Version = 3 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'3023' = { - table2Version = 3 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'3024' = { - table2Version = 3 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'3025' = { - table2Version = 3 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'3026' = { - table2Version = 3 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'3027' = { - table2Version = 3 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'3028' = { - table2Version = 3 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'3029' = { - table2Version = 3 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'3030' = { - table2Version = 3 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'3031' = { - table2Version = 3 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'3037' = { - table2Version = 3 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'3038' = { - table2Version = 3 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'3041' = { - table2Version = 3 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'3042' = { - table2Version = 3 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'3045' = { - table2Version = 3 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'3046' = { - table2Version = 3 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'3047' = { - table2Version = 3 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'3048' = { - table2Version = 3 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'3049' = { - table2Version = 3 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'3050' = { - table2Version = 3 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'3053' = { - table2Version = 3 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'3054' = { - table2Version = 3 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'3055' = { - table2Version = 3 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'3056' = { - table2Version = 3 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'3059' = { - table2Version = 3 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'3060' = { - table2Version = 3 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'3063' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'3064' = { - table2Version = 3 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'3067' = { - table2Version = 3 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'3068' = { - table2Version = 3 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'3069' = { - table2Version = 3 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'3070' = { - table2Version = 3 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'3077' = { - table2Version = 3 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'3080' = { - table2Version = 3 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'3082' = { - table2Version = 3 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'3086' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Salinity -'3088' = { - table2Version = 3 ; - indicatorOfParameter = 88 ; - } -#Density -'3089' = { - table2Version = 3 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'3091' = { - table2Version = 3 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'3092' = { - table2Version = 3 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'3093' = { - table2Version = 3 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'3094' = { - table2Version = 3 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'3095' = { - table2Version = 3 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'3096' = { - table2Version = 3 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'3097' = { - table2Version = 3 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'3098' = { - table2Version = 3 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'3099' = { - table2Version = 3 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'3100' = { - table2Version = 3 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'3101' = { - table2Version = 3 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'3102' = { - table2Version = 3 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'3103' = { - table2Version = 3 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'3104' = { - table2Version = 3 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'3105' = { - table2Version = 3 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'3106' = { - table2Version = 3 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'3107' = { - table2Version = 3 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'3108' = { - table2Version = 3 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'3109' = { - table2Version = 3 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'3110' = { - table2Version = 3 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'3111' = { - table2Version = 3 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'3112' = { - table2Version = 3 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'3113' = { - table2Version = 3 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'3114' = { - table2Version = 3 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'3115' = { - table2Version = 3 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'3116' = { - table2Version = 3 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'3117' = { - table2Version = 3 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'3119' = { - table2Version = 3 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'3120' = { - table2Version = 3 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'3124' = { - table2Version = 3 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'3125' = { - table2Version = 3 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'3126' = { - table2Version = 3 ; - indicatorOfParameter = 126 ; - } -#Image data -'3127' = { - table2Version = 3 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'160199' = { - table2Version = 3 ; - indicatorOfParameter = 87 ; - } -#Orography -'228002' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'228039' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'228139' = { - table2Version = 3 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'228144' = { - table2Version = 3 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'228164' = { - table2Version = 3 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'228228' = { - table2Version = 3 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'1' = { - table2Version = 2 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'2' = { - table2Version = 2 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'3' = { - table2Version = 2 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'10' = { - table2Version = 2 ; - indicatorOfParameter = 32 ; - } -#Pressure -'54' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'60' = { - table2Version = 2 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'121' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'122' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'129' = { - table2Version = 2 ; - indicatorOfParameter = 6 ; - } -#Temperature -'130' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'131' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'132' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'133' = { - table2Version = 2 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'134' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'135' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'138' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'151' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'155' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'156' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'157' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'165' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'166' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'167' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'168' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'172' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'173' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'182' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'194' = { - table2Version = 2 ; - indicatorOfParameter = 118 ; - } -#Runoff -'205' = { - table2Version = 2 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'206' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'3062' = { - table2Version = 2 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'3066' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'3072' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'3073' = { - table2Version = 2 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'3074' = { - table2Version = 2 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'3075' = { - table2Version = 2 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'3079' = { - table2Version = 2 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'3121' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'3122' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'3123' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'260011' = { - table2Version = 2 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'260102' = { - table2Version = 2 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'260509' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'3003' = { - table2Version = 2 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'3005' = { - table2Version = 2 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'3008' = { - table2Version = 2 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'3009' = { - table2Version = 2 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'3014' = { - table2Version = 2 ; - indicatorOfParameter = 14 ; - } -#Maximum temperature -'3015' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'3016' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'3017' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'3018' = { - table2Version = 2 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'3019' = { - table2Version = 2 ; - indicatorOfParameter = 19 ; - } -#Visibility -'3020' = { - table2Version = 2 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'3021' = { - table2Version = 2 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'3022' = { - table2Version = 2 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'3023' = { - table2Version = 2 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'3024' = { - table2Version = 2 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'3025' = { - table2Version = 2 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'3026' = { - table2Version = 2 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'3027' = { - table2Version = 2 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'3028' = { - table2Version = 2 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'3029' = { - table2Version = 2 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'3030' = { - table2Version = 2 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'3031' = { - table2Version = 2 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'3037' = { - table2Version = 2 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'3038' = { - table2Version = 2 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'3041' = { - table2Version = 2 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'3042' = { - table2Version = 2 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'3045' = { - table2Version = 2 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'3046' = { - table2Version = 2 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'3047' = { - table2Version = 2 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'3048' = { - table2Version = 2 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'3049' = { - table2Version = 2 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'3050' = { - table2Version = 2 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'3053' = { - table2Version = 2 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'3054' = { - table2Version = 2 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'3055' = { - table2Version = 2 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'3056' = { - table2Version = 2 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'3059' = { - table2Version = 2 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'3060' = { - table2Version = 2 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'3063' = { - table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'3064' = { - table2Version = 2 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'3067' = { - table2Version = 2 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'3068' = { - table2Version = 2 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'3069' = { - table2Version = 2 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'3070' = { - table2Version = 2 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'3077' = { - table2Version = 2 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'3080' = { - table2Version = 2 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'3082' = { - table2Version = 2 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'3086' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Salinity -'3088' = { - table2Version = 2 ; - indicatorOfParameter = 88 ; - } -#Density -'3089' = { - table2Version = 2 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'3091' = { - table2Version = 2 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'3092' = { - table2Version = 2 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'3093' = { - table2Version = 2 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'3094' = { - table2Version = 2 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'3095' = { - table2Version = 2 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'3096' = { - table2Version = 2 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'3097' = { - table2Version = 2 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'3098' = { - table2Version = 2 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'3099' = { - table2Version = 2 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'3100' = { - table2Version = 2 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'3101' = { - table2Version = 2 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'3102' = { - table2Version = 2 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'3103' = { - table2Version = 2 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'3104' = { - table2Version = 2 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'3105' = { - table2Version = 2 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'3106' = { - table2Version = 2 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'3107' = { - table2Version = 2 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'3108' = { - table2Version = 2 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'3109' = { - table2Version = 2 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'3110' = { - table2Version = 2 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'3111' = { - table2Version = 2 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'3112' = { - table2Version = 2 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'3113' = { - table2Version = 2 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'3114' = { - table2Version = 2 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'3115' = { - table2Version = 2 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'3116' = { - table2Version = 2 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'3117' = { - table2Version = 2 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'3119' = { - table2Version = 2 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'3120' = { - table2Version = 2 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'3124' = { - table2Version = 2 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'3125' = { - table2Version = 2 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'3126' = { - table2Version = 2 ; - indicatorOfParameter = 126 ; - } -#Image data -'3127' = { - table2Version = 2 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'160199' = { - table2Version = 2 ; - indicatorOfParameter = 87 ; - } -#Orography -'228002' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'228039' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'228139' = { - table2Version = 2 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'228144' = { - table2Version = 2 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'228164' = { - table2Version = 2 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'228228' = { - table2Version = 2 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'1' = { - table2Version = 1 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'2' = { - table2Version = 1 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'3' = { - table2Version = 1 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'10' = { - table2Version = 1 ; - indicatorOfParameter = 32 ; - } -#Pressure -'54' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'60' = { - table2Version = 1 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'121' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'122' = { - table2Version = 1 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'129' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'130' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'131' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'132' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'133' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'134' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'135' = { - table2Version = 1 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'138' = { - table2Version = 1 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'151' = { - table2Version = 1 ; - indicatorOfParameter = 2 ; - } -#Divergence -'155' = { - table2Version = 1 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'156' = { - table2Version = 1 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'157' = { - table2Version = 1 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'165' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'166' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'167' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'168' = { - table2Version = 1 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'172' = { - table2Version = 1 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'173' = { - table2Version = 1 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'182' = { - table2Version = 1 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'194' = { - table2Version = 1 ; - indicatorOfParameter = 118 ; - } -#Runoff -'205' = { - table2Version = 1 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'206' = { - table2Version = 1 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'3062' = { - table2Version = 1 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'3066' = { - table2Version = 1 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'3072' = { - table2Version = 1 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'3073' = { - table2Version = 1 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'3074' = { - table2Version = 1 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'3075' = { - table2Version = 1 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'3079' = { - table2Version = 1 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'3121' = { - table2Version = 1 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'3122' = { - table2Version = 1 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'3123' = { - table2Version = 1 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'260011' = { - table2Version = 1 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'260102' = { - table2Version = 1 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'260509' = { - table2Version = 1 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'3003' = { - table2Version = 1 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'3005' = { - table2Version = 1 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'3008' = { - table2Version = 1 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'3009' = { - table2Version = 1 ; - indicatorOfParameter = 9 ; +#Pseudo-adiabatic potential temperature +'3014' = { + table2Version = 2 ; + indicatorOfParameter = 14 ; } #Pseudo-adiabatic potential temperature '3014' = { @@ -1630,427 +774,1283 @@ indicatorOfParameter = 14 ; } #Maximum temperature +'3015' = { + table2Version = 3 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature +'3015' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature '3015' = { table2Version = 1 ; indicatorOfParameter = 15 ; } #Minimum temperature +'3016' = { + table2Version = 3 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature +'3016' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature '3016' = { table2Version = 1 ; indicatorOfParameter = 16 ; } #Dew point temperature +'3017' = { + table2Version = 3 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'3017' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature '3017' = { table2Version = 1 ; indicatorOfParameter = 17 ; } #Dew point depression (or deficit) +'3018' = { + table2Version = 3 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'3018' = { + table2Version = 2 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) '3018' = { table2Version = 1 ; indicatorOfParameter = 18 ; } #Lapse rate +'3019' = { + table2Version = 3 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'3019' = { + table2Version = 2 ; + indicatorOfParameter = 19 ; + } +#Lapse rate '3019' = { table2Version = 1 ; indicatorOfParameter = 19 ; } #Visibility +'3020' = { + table2Version = 3 ; + indicatorOfParameter = 20 ; + } +#Visibility +'3020' = { + table2Version = 2 ; + indicatorOfParameter = 20 ; + } +#Visibility '3020' = { table2Version = 1 ; indicatorOfParameter = 20 ; } #Radar spectra (1) +'3021' = { + table2Version = 3 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'3021' = { + table2Version = 2 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) '3021' = { table2Version = 1 ; indicatorOfParameter = 21 ; } #Radar spectra (2) +'3022' = { + table2Version = 3 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'3022' = { + table2Version = 2 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) '3022' = { table2Version = 1 ; indicatorOfParameter = 22 ; } #Radar spectra (3) +'3023' = { + table2Version = 3 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'3023' = { + table2Version = 2 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) '3023' = { table2Version = 1 ; indicatorOfParameter = 23 ; } #Parcel lifted index (to 500 hPa) +'3024' = { + table2Version = 3 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'3024' = { + table2Version = 2 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) '3024' = { table2Version = 1 ; indicatorOfParameter = 24 ; } #Temperature anomaly +'3025' = { + table2Version = 3 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'3025' = { + table2Version = 2 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly '3025' = { table2Version = 1 ; indicatorOfParameter = 25 ; } #Pressure anomaly +'3026' = { + table2Version = 3 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'3026' = { + table2Version = 2 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly '3026' = { table2Version = 1 ; indicatorOfParameter = 26 ; } #Geopotential height anomaly +'3027' = { + table2Version = 3 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'3027' = { + table2Version = 2 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly '3027' = { table2Version = 1 ; indicatorOfParameter = 27 ; } #Wave spectra (1) +'3028' = { + table2Version = 3 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'3028' = { + table2Version = 2 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) '3028' = { table2Version = 1 ; indicatorOfParameter = 28 ; } #Wave spectra (2) +'3029' = { + table2Version = 3 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'3029' = { + table2Version = 2 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) '3029' = { table2Version = 1 ; indicatorOfParameter = 29 ; } #Wave spectra (3) +'3030' = { + table2Version = 3 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'3030' = { + table2Version = 2 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) '3030' = { table2Version = 1 ; indicatorOfParameter = 30 ; } #Wind direction +'3031' = { + table2Version = 3 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'3031' = { + table2Version = 2 ; + indicatorOfParameter = 31 ; + } +#Wind direction '3031' = { table2Version = 1 ; indicatorOfParameter = 31 ; } #Montgomery stream Function +'3037' = { + table2Version = 3 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'3037' = { + table2Version = 2 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function '3037' = { table2Version = 1 ; indicatorOfParameter = 37 ; } #Sigma coordinate vertical velocity +'3038' = { + table2Version = 3 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'3038' = { + table2Version = 2 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity '3038' = { table2Version = 1 ; indicatorOfParameter = 38 ; } #Absolute vorticity +'3041' = { + table2Version = 3 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'3041' = { + table2Version = 2 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity '3041' = { table2Version = 1 ; indicatorOfParameter = 41 ; } #Absolute divergence +'3042' = { + table2Version = 3 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'3042' = { + table2Version = 2 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence '3042' = { table2Version = 1 ; indicatorOfParameter = 42 ; } #Vertical u-component shear +'3045' = { + table2Version = 3 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'3045' = { + table2Version = 2 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear '3045' = { table2Version = 1 ; indicatorOfParameter = 45 ; } #Vertical v-component shear +'3046' = { + table2Version = 3 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'3046' = { + table2Version = 2 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear '3046' = { table2Version = 1 ; indicatorOfParameter = 46 ; } #Direction of current +'3047' = { + table2Version = 3 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'3047' = { + table2Version = 2 ; + indicatorOfParameter = 47 ; + } +#Direction of current '3047' = { table2Version = 1 ; indicatorOfParameter = 47 ; } #Speed of current +'3048' = { + table2Version = 3 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'3048' = { + table2Version = 2 ; + indicatorOfParameter = 48 ; + } +#Speed of current '3048' = { table2Version = 1 ; indicatorOfParameter = 48 ; } #U-component of current +'3049' = { + table2Version = 3 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'3049' = { + table2Version = 2 ; + indicatorOfParameter = 49 ; + } +#U-component of current '3049' = { table2Version = 1 ; indicatorOfParameter = 49 ; } #V-component of current +'3050' = { + table2Version = 3 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'3050' = { + table2Version = 2 ; + indicatorOfParameter = 50 ; + } +#V-component of current '3050' = { table2Version = 1 ; indicatorOfParameter = 50 ; } #Humidity mixing ratio +'3053' = { + table2Version = 3 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'3053' = { + table2Version = 2 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio '3053' = { table2Version = 1 ; indicatorOfParameter = 53 ; } #Precipitable water +'3054' = { + table2Version = 3 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'3054' = { + table2Version = 2 ; + indicatorOfParameter = 54 ; + } +#Precipitable water '3054' = { table2Version = 1 ; indicatorOfParameter = 54 ; } #Vapour pressure +'3055' = { + table2Version = 3 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'3055' = { + table2Version = 2 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure '3055' = { table2Version = 1 ; indicatorOfParameter = 55 ; } #Saturation deficit +'3056' = { + table2Version = 3 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'3056' = { + table2Version = 2 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit '3056' = { table2Version = 1 ; indicatorOfParameter = 56 ; } #Precipitation rate +'3059' = { + table2Version = 3 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'3059' = { + table2Version = 2 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate '3059' = { table2Version = 1 ; indicatorOfParameter = 59 ; } #Thunderstorm probability +'3060' = { + table2Version = 3 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'3060' = { + table2Version = 2 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability '3060' = { table2Version = 1 ; indicatorOfParameter = 60 ; } #Convective precipitation (water) +'3063' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'3063' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) '3063' = { table2Version = 1 ; indicatorOfParameter = 63 ; } #Snow fall rate water equivalent +'3064' = { + table2Version = 3 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'3064' = { + table2Version = 2 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent '3064' = { table2Version = 1 ; indicatorOfParameter = 64 ; } #Mixed layer depth +'3067' = { + table2Version = 3 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'3067' = { + table2Version = 2 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth '3067' = { table2Version = 1 ; indicatorOfParameter = 67 ; } #Transient thermocline depth +'3068' = { + table2Version = 3 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'3068' = { + table2Version = 2 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth '3068' = { table2Version = 1 ; indicatorOfParameter = 68 ; } #Main thermocline depth +'3069' = { + table2Version = 3 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'3069' = { + table2Version = 2 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth '3069' = { table2Version = 1 ; indicatorOfParameter = 69 ; } #Main thermocline anomaly +'3070' = { + table2Version = 3 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'3070' = { + table2Version = 2 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly '3070' = { table2Version = 1 ; indicatorOfParameter = 70 ; } #Best lifted index (to 500 hPa) +'3077' = { + table2Version = 3 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'3077' = { + table2Version = 2 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) '3077' = { table2Version = 1 ; indicatorOfParameter = 77 ; } #Water temperature +'3080' = { + table2Version = 3 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'3080' = { + table2Version = 2 ; + indicatorOfParameter = 80 ; + } +#Water temperature '3080' = { table2Version = 1 ; indicatorOfParameter = 80 ; } #Deviation of sea-level from mean +'3082' = { + table2Version = 3 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'3082' = { + table2Version = 2 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean '3082' = { table2Version = 1 ; indicatorOfParameter = 82 ; } #Soil moisture content +'3086' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'3086' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content '3086' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Salinity +'3088' = { + table2Version = 3 ; + indicatorOfParameter = 88 ; + } +#Salinity +'3088' = { + table2Version = 2 ; + indicatorOfParameter = 88 ; + } +#Salinity '3088' = { table2Version = 1 ; indicatorOfParameter = 88 ; } #Density +'3089' = { + table2Version = 3 ; + indicatorOfParameter = 89 ; + } +#Density +'3089' = { + table2Version = 2 ; + indicatorOfParameter = 89 ; + } +#Density '3089' = { table2Version = 1 ; indicatorOfParameter = 89 ; } #Ice cover (1=ice, 0=no ice) +'3091' = { + table2Version = 3 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'3091' = { + table2Version = 2 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) '3091' = { table2Version = 1 ; indicatorOfParameter = 91 ; } #Ice thickness +'3092' = { + table2Version = 3 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'3092' = { + table2Version = 2 ; + indicatorOfParameter = 92 ; + } +#Ice thickness '3092' = { table2Version = 1 ; indicatorOfParameter = 92 ; } #Direction of ice drift +'3093' = { + table2Version = 3 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'3093' = { + table2Version = 2 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift '3093' = { table2Version = 1 ; indicatorOfParameter = 93 ; } #Speed of ice drift +'3094' = { + table2Version = 3 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'3094' = { + table2Version = 2 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift '3094' = { table2Version = 1 ; indicatorOfParameter = 94 ; } #U-component of ice drift +'3095' = { + table2Version = 3 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'3095' = { + table2Version = 2 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift '3095' = { table2Version = 1 ; indicatorOfParameter = 95 ; } #V-component of ice drift +'3096' = { + table2Version = 3 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'3096' = { + table2Version = 2 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift '3096' = { table2Version = 1 ; indicatorOfParameter = 96 ; } #Ice growth rate +'3097' = { + table2Version = 3 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'3097' = { + table2Version = 2 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate '3097' = { table2Version = 1 ; indicatorOfParameter = 97 ; } #Ice divergence +'3098' = { + table2Version = 3 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'3098' = { + table2Version = 2 ; + indicatorOfParameter = 98 ; + } +#Ice divergence '3098' = { table2Version = 1 ; indicatorOfParameter = 98 ; } #Snowmelt +'3099' = { + table2Version = 3 ; + indicatorOfParameter = 99 ; + } +#Snowmelt +'3099' = { + table2Version = 2 ; + indicatorOfParameter = 99 ; + } +#Snowmelt '3099' = { table2Version = 1 ; indicatorOfParameter = 99 ; } #Signific.height,combined wind waves+swell +'3100' = { + table2Version = 3 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'3100' = { + table2Version = 2 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell '3100' = { table2Version = 1 ; indicatorOfParameter = 100 ; } #Mean direction of wind waves +'3101' = { + table2Version = 3 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'3101' = { + table2Version = 2 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves '3101' = { table2Version = 1 ; indicatorOfParameter = 101 ; } #Significant height of wind waves +'3102' = { + table2Version = 3 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'3102' = { + table2Version = 2 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves '3102' = { table2Version = 1 ; indicatorOfParameter = 102 ; } #Mean period of wind waves +'3103' = { + table2Version = 3 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'3103' = { + table2Version = 2 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves '3103' = { table2Version = 1 ; indicatorOfParameter = 103 ; } #Direction of swell waves +'3104' = { + table2Version = 3 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'3104' = { + table2Version = 2 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves '3104' = { table2Version = 1 ; indicatorOfParameter = 104 ; } #Significant height of swell waves +'3105' = { + table2Version = 3 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'3105' = { + table2Version = 2 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves '3105' = { table2Version = 1 ; indicatorOfParameter = 105 ; } #Mean period of swell waves +'3106' = { + table2Version = 3 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'3106' = { + table2Version = 2 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves '3106' = { table2Version = 1 ; indicatorOfParameter = 106 ; } #Primary wave direction +'3107' = { + table2Version = 3 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'3107' = { + table2Version = 2 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction '3107' = { table2Version = 1 ; indicatorOfParameter = 107 ; } #Primary wave mean period +'3108' = { + table2Version = 3 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'3108' = { + table2Version = 2 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period '3108' = { table2Version = 1 ; indicatorOfParameter = 108 ; } #Secondary wave direction +'3109' = { + table2Version = 3 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'3109' = { + table2Version = 2 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction '3109' = { table2Version = 1 ; indicatorOfParameter = 109 ; } #Secondary wave mean period +'3110' = { + table2Version = 3 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'3110' = { + table2Version = 2 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period '3110' = { table2Version = 1 ; indicatorOfParameter = 110 ; } #Net short-wave radiation flux (surface) +'3111' = { + table2Version = 3 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'3111' = { + table2Version = 2 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) '3111' = { table2Version = 1 ; indicatorOfParameter = 111 ; } #Net long-wave radiation flux (surface) +'3112' = { + table2Version = 3 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'3112' = { + table2Version = 2 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) '3112' = { table2Version = 1 ; indicatorOfParameter = 112 ; } #Net short-wave radiation flux(atmosph.top) +'3113' = { + table2Version = 3 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'3113' = { + table2Version = 2 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) '3113' = { table2Version = 1 ; indicatorOfParameter = 113 ; } #Net long-wave radiation flux(atmosph.top) +'3114' = { + table2Version = 3 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'3114' = { + table2Version = 2 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) '3114' = { table2Version = 1 ; indicatorOfParameter = 114 ; } #Long wave radiation flux +'3115' = { + table2Version = 3 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'3115' = { + table2Version = 2 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux '3115' = { table2Version = 1 ; indicatorOfParameter = 115 ; } #Short wave radiation flux +'3116' = { + table2Version = 3 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'3116' = { + table2Version = 2 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux '3116' = { table2Version = 1 ; indicatorOfParameter = 116 ; } #Global radiation flux +'3117' = { + table2Version = 3 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'3117' = { + table2Version = 2 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux '3117' = { table2Version = 1 ; indicatorOfParameter = 117 ; } #Radiance (with respect to wave number) +'3119' = { + table2Version = 3 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'3119' = { + table2Version = 2 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) '3119' = { table2Version = 1 ; indicatorOfParameter = 119 ; } #Radiance (with respect to wave length) +'3120' = { + table2Version = 3 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'3120' = { + table2Version = 2 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) '3120' = { table2Version = 1 ; indicatorOfParameter = 120 ; } #Momentum flux, u-component +'3124' = { + table2Version = 3 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'3124' = { + table2Version = 2 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component '3124' = { table2Version = 1 ; indicatorOfParameter = 124 ; } #Momentum flux, v-component +'3125' = { + table2Version = 3 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'3125' = { + table2Version = 2 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component '3125' = { table2Version = 1 ; indicatorOfParameter = 125 ; } #Wind mixing energy +'3126' = { + table2Version = 3 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'3126' = { + table2Version = 2 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy '3126' = { table2Version = 1 ; indicatorOfParameter = 126 ; } #Image data +'3127' = { + table2Version = 3 ; + indicatorOfParameter = 127 ; + } +#Image data +'3127' = { + table2Version = 2 ; + indicatorOfParameter = 127 ; + } +#Image data '3127' = { table2Version = 1 ; indicatorOfParameter = 127 ; } #Percentage of vegetation +'160199' = { + table2Version = 3 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation +'160199' = { + table2Version = 2 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation '160199' = { table2Version = 1 ; indicatorOfParameter = 87 ; } #Orography +'228002' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography +'228002' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography '228002' = { table2Version = 1 ; indicatorOfParameter = 7 ; indicatorOfTypeOfLevel = 1 ; } #Soil moisture +'228039' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture +'228039' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture '228039' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Soil temperature +'228139' = { + table2Version = 3 ; + indicatorOfParameter = 85 ; + } +#Soil temperature +'228139' = { + table2Version = 2 ; + indicatorOfParameter = 85 ; + } +#Soil temperature '228139' = { table2Version = 1 ; indicatorOfParameter = 85 ; } #Snowfall water equivalent +'228144' = { + table2Version = 3 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent +'228144' = { + table2Version = 2 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent '228144' = { table2Version = 1 ; indicatorOfParameter = 65 ; } #Total Cloud Cover +'228164' = { + table2Version = 3 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover +'228164' = { + table2Version = 2 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover '228164' = { table2Version = 1 ; indicatorOfParameter = 71 ; } #Total Precipitation +'228228' = { + table2Version = 3 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation +'228228' = { + table2Version = 2 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation '228228' = { table2Version = 1 ; indicatorOfParameter = 61 ; diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def index 07bb584dd..d78bf0d39 100644 --- a/definitions/grib1/shortName.def +++ b/definitions/grib1/shortName.def @@ -4,31 +4,91 @@ table2Version = 3 ; indicatorOfParameter = 35 ; } +#Stream function +'strf' = { + table2Version = 2 ; + indicatorOfParameter = 35 ; + } +#Stream function +'strf' = { + table2Version = 1 ; + indicatorOfParameter = 35 ; + } #Velocity potential 'vp' = { table2Version = 3 ; indicatorOfParameter = 36 ; } +#Velocity potential +'vp' = { + table2Version = 2 ; + indicatorOfParameter = 36 ; + } +#Velocity potential +'vp' = { + table2Version = 1 ; + indicatorOfParameter = 36 ; + } #Potential temperature 'pt' = { table2Version = 3 ; indicatorOfParameter = 13 ; } +#Potential temperature +'pt' = { + table2Version = 2 ; + indicatorOfParameter = 13 ; + } +#Potential temperature +'pt' = { + table2Version = 1 ; + indicatorOfParameter = 13 ; + } #Wind speed 'ws' = { table2Version = 3 ; indicatorOfParameter = 32 ; } +#Wind speed +'ws' = { + table2Version = 2 ; + indicatorOfParameter = 32 ; + } +#Wind speed +'ws' = { + table2Version = 1 ; + indicatorOfParameter = 32 ; + } #Pressure 'pres' = { table2Version = 3 ; indicatorOfParameter = 1 ; } +#Pressure +'pres' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + } +#Pressure +'pres' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + } #Potential vorticity 'pv' = { table2Version = 3 ; indicatorOfParameter = 4 ; } +#Potential vorticity +'pv' = { + table2Version = 2 ; + indicatorOfParameter = 4 ; + } +#Potential vorticity +'pv' = { + table2Version = 1 ; + indicatorOfParameter = 4 ; + } #Maximum temperature at 2 metres in the last 6 hours 'mx2t6' = { table2Version = 3 ; @@ -36,6 +96,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + table2Version = 1 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Minimum temperature at 2 metres in the last 6 hours 'mn2t6' = { table2Version = 3 ; @@ -43,67 +117,203 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + table2Version = 1 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Geopotential 'z' = { table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'z' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'z' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature 't' = { table2Version = 3 ; indicatorOfParameter = 11 ; } +#Temperature +'t' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + } +#Temperature +'t' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + } #U component of wind 'u' = { table2Version = 3 ; indicatorOfParameter = 33 ; } +#U component of wind +'u' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + } +#U component of wind +'u' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } #V component of wind 'v' = { table2Version = 3 ; indicatorOfParameter = 34 ; } +#V component of wind +'v' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + } +#V component of wind +'v' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } #Specific humidity 'q' = { table2Version = 3 ; indicatorOfParameter = 51 ; } +#Specific humidity +'q' = { + table2Version = 2 ; + indicatorOfParameter = 51 ; + } +#Specific humidity +'q' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure 'sp' = { table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } +#Surface pressure +'sp' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Surface pressure +'sp' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } #Vertical velocity 'w' = { table2Version = 3 ; indicatorOfParameter = 39 ; } +#Vertical velocity +'w' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'w' = { + table2Version = 1 ; + indicatorOfParameter = 39 ; + } #Vorticity (relative) 'vo' = { table2Version = 3 ; indicatorOfParameter = 43 ; } +#Vorticity (relative) +'vo' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'vo' = { + table2Version = 1 ; + indicatorOfParameter = 43 ; + } #Mean sea level pressure 'msl' = { table2Version = 3 ; indicatorOfParameter = 2 ; } +#Mean sea level pressure +'msl' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'msl' = { + table2Version = 1 ; + indicatorOfParameter = 2 ; + } #Divergence 'd' = { table2Version = 3 ; indicatorOfParameter = 44 ; } +#Divergence +'d' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence +'d' = { + table2Version = 1 ; + indicatorOfParameter = 44 ; + } #Geopotential height 'gh' = { table2Version = 3 ; indicatorOfParameter = 7 ; } +#Geopotential height +'gh' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'gh' = { + table2Version = 1 ; + indicatorOfParameter = 7 ; + } #Relative humidity 'r' = { table2Version = 3 ; indicatorOfParameter = 52 ; } +#Relative humidity +'r' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'r' = { + table2Version = 1 ; + indicatorOfParameter = 52 ; + } #10 metre U wind component '10u' = { table2Version = 3 ; @@ -111,6 +321,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre U wind component +'10u' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre U wind component +'10u' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #10 metre V wind component '10v' = { table2Version = 3 ; @@ -118,6 +342,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre V wind component +'10v' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre V wind component +'10v' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #2 metre temperature '2t' = { table2Version = 3 ; @@ -125,6 +363,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#2 metre temperature +'2t' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre temperature +'2t' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #2 metre dewpoint temperature '2d' = { table2Version = 3 ; @@ -132,104 +384,308 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } -#Land-sea mask -'lsm' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; +#2 metre dewpoint temperature +'2d' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre dewpoint temperature +'2d' = { + table2Version = 1 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Land-sea mask +'lsm' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'lsm' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'lsm' = { + table2Version = 1 ; + indicatorOfParameter = 81 ; } #Surface roughness (climatological) 'sr' = { table2Version = 3 ; indicatorOfParameter = 83 ; } +#Surface roughness (climatological) +'sr' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'sr' = { + table2Version = 1 ; + indicatorOfParameter = 83 ; + } #Evaporation 'e' = { table2Version = 3 ; indicatorOfParameter = 57 ; } +#Evaporation +'e' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'e' = { + table2Version = 1 ; + indicatorOfParameter = 57 ; + } #Brightness temperature 'btmp' = { table2Version = 3 ; indicatorOfParameter = 118 ; } +#Brightness temperature +'btmp' = { + table2Version = 2 ; + indicatorOfParameter = 118 ; + } +#Brightness temperature +'btmp' = { + table2Version = 1 ; + indicatorOfParameter = 118 ; + } #Runoff 'ro' = { table2Version = 3 ; indicatorOfParameter = 90 ; } +#Runoff +'ro' = { + table2Version = 2 ; + indicatorOfParameter = 90 ; + } +#Runoff +'ro' = { + table2Version = 1 ; + indicatorOfParameter = 90 ; + } #Total column ozone 'tco3' = { table2Version = 3 ; indicatorOfParameter = 10 ; } +#Total column ozone +'tco3' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'tco3' = { + table2Version = 1 ; + indicatorOfParameter = 10 ; + } #Large-scale precipitation 'lsp' = { table2Version = 3 ; indicatorOfParameter = 62 ; } +#Large-scale precipitation +'lsp' = { + table2Version = 2 ; + indicatorOfParameter = 62 ; + } +#Large-scale precipitation +'lsp' = { + table2Version = 1 ; + indicatorOfParameter = 62 ; + } #Snow depth 'sde' = { table2Version = 3 ; indicatorOfParameter = 66 ; } +#Snow depth +'sde' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'sde' = { + table2Version = 1 ; + indicatorOfParameter = 66 ; + } #Convective cloud cover 'ccc' = { table2Version = 3 ; indicatorOfParameter = 72 ; } +#Convective cloud cover +'ccc' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'ccc' = { + table2Version = 1 ; + indicatorOfParameter = 72 ; + } #Low cloud cover 'lcc' = { table2Version = 3 ; indicatorOfParameter = 73 ; } +#Low cloud cover +'lcc' = { + table2Version = 2 ; + indicatorOfParameter = 73 ; + } +#Low cloud cover +'lcc' = { + table2Version = 1 ; + indicatorOfParameter = 73 ; + } #Medium cloud cover 'mcc' = { table2Version = 3 ; indicatorOfParameter = 74 ; } +#Medium cloud cover +'mcc' = { + table2Version = 2 ; + indicatorOfParameter = 74 ; + } +#Medium cloud cover +'mcc' = { + table2Version = 1 ; + indicatorOfParameter = 74 ; + } #High cloud cover 'hcc' = { table2Version = 3 ; indicatorOfParameter = 75 ; } +#High cloud cover +'hcc' = { + table2Version = 2 ; + indicatorOfParameter = 75 ; + } +#High cloud cover +'hcc' = { + table2Version = 1 ; + indicatorOfParameter = 75 ; + } #Large scale snow 'lssf' = { table2Version = 3 ; indicatorOfParameter = 79 ; } +#Large scale snow +'lssf' = { + table2Version = 2 ; + indicatorOfParameter = 79 ; + } +#Large scale snow +'lssf' = { + table2Version = 1 ; + indicatorOfParameter = 79 ; + } #Latent heat flux 'lhf' = { table2Version = 3 ; indicatorOfParameter = 121 ; } +#Latent heat flux +'lhf' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'lhf' = { + table2Version = 1 ; + indicatorOfParameter = 121 ; + } #Sensible heat flux 'shf' = { table2Version = 3 ; indicatorOfParameter = 122 ; } +#Sensible heat flux +'shf' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'shf' = { + table2Version = 1 ; + indicatorOfParameter = 122 ; + } #Boundary layer dissipation 'bld' = { table2Version = 3 ; indicatorOfParameter = 123 ; } +#Boundary layer dissipation +'bld' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'bld' = { + table2Version = 1 ; + indicatorOfParameter = 123 ; + } #Convective snow 'snoc' = { table2Version = 3 ; indicatorOfParameter = 78 ; } +#Convective snow +'snoc' = { + table2Version = 2 ; + indicatorOfParameter = 78 ; + } +#Convective snow +'snoc' = { + table2Version = 1 ; + indicatorOfParameter = 78 ; + } #Cloud water 'cwat' = { table2Version = 3 ; indicatorOfParameter = 76 ; } +#Cloud water +'cwat' = { + table2Version = 2 ; + indicatorOfParameter = 76 ; + } +#Cloud water +'cwat' = { + table2Version = 1 ; + indicatorOfParameter = 76 ; + } #Forecast albedo 'al' = { table2Version = 3 ; indicatorOfParameter = 84 ; } +#Forecast albedo +'al' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'al' = { + table2Version = 1 ; + indicatorOfParameter = 84 ; + } #Virtual temperature 'vtmp' = { - table2Version = 1 ; + table2Version = 3 ; indicatorOfParameter = 12 ; } #Virtual temperature @@ -239,7 +695,7 @@ } #Virtual temperature 'vtmp' = { - table2Version = 3 ; + table2Version = 1 ; indicatorOfParameter = 12 ; } #Pressure tendency @@ -247,1382 +703,70 @@ table2Version = 3 ; indicatorOfParameter = 3 ; } +#Pressure tendency +'ptend' = { + table2Version = 2 ; + indicatorOfParameter = 3 ; + } +#Pressure tendency +'ptend' = { + table2Version = 1 ; + indicatorOfParameter = 3 ; + } #ICAO Standard Atmosphere reference height 'icaht' = { table2Version = 3 ; indicatorOfParameter = 5 ; } +#ICAO Standard Atmosphere reference height +'icaht' = { + table2Version = 2 ; + indicatorOfParameter = 5 ; + } +#ICAO Standard Atmosphere reference height +'icaht' = { + table2Version = 1 ; + indicatorOfParameter = 5 ; + } #Geometrical height 'h' = { table2Version = 3 ; indicatorOfParameter = 8 ; } +#Geometrical height +'h' = { + table2Version = 2 ; + indicatorOfParameter = 8 ; + } +#Geometrical height +'h' = { + table2Version = 1 ; + indicatorOfParameter = 8 ; + } #Standard deviation of height 'hstdv' = { table2Version = 3 ; indicatorOfParameter = 9 ; } +#Standard deviation of height +'hstdv' = { + table2Version = 2 ; + indicatorOfParameter = 9 ; + } +#Standard deviation of height +'hstdv' = { + table2Version = 1 ; + indicatorOfParameter = 9 ; + } #Pseudo-adiabatic potential temperature 'papt' = { table2Version = 3 ; indicatorOfParameter = 14 ; } -#Maximum temperature -'tmax' = { - table2Version = 3 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'tmin' = { - table2Version = 3 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'dpt' = { - table2Version = 3 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'depr' = { - table2Version = 3 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'lapr' = { - table2Version = 3 ; - indicatorOfParameter = 19 ; - } -#Visibility -'vis' = { - table2Version = 3 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'rdsp1' = { - table2Version = 3 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'rdsp2' = { - table2Version = 3 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'rdsp3' = { - table2Version = 3 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'pli' = { - table2Version = 3 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'ta' = { - table2Version = 3 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'presa' = { - table2Version = 3 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'gpa' = { - table2Version = 3 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'wvsp1' = { - table2Version = 3 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'wvsp2' = { - table2Version = 3 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'wvsp3' = { - table2Version = 3 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'wdir' = { - table2Version = 3 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'mntsf' = { - table2Version = 3 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'sgcvv' = { - table2Version = 3 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'absv' = { - table2Version = 3 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'absd' = { - table2Version = 3 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'vucsh' = { - table2Version = 3 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'vvcsh' = { - table2Version = 3 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'dirc' = { - table2Version = 3 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'spc' = { - table2Version = 3 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'ucurr' = { - table2Version = 3 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'vcurr' = { - table2Version = 3 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'mixr' = { - table2Version = 3 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'pwat' = { - table2Version = 3 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'vp' = { - table2Version = 3 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'satd' = { - table2Version = 3 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'prate' = { - table2Version = 3 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'tstm' = { - table2Version = 3 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'acpcp' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'srweq' = { - table2Version = 3 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'mld' = { - table2Version = 3 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'tthdp' = { - table2Version = 3 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'mthd' = { - table2Version = 3 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'mtha' = { - table2Version = 3 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'bli' = { - table2Version = 3 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'wtmp' = { - table2Version = 3 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'dslm' = { - table2Version = 3 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'ssw' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Salinity -'s' = { - table2Version = 3 ; - indicatorOfParameter = 88 ; - } -#Density -'den' = { - table2Version = 3 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'icec' = { - table2Version = 3 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'icetk' = { - table2Version = 3 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'diced' = { - table2Version = 3 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'siced' = { - table2Version = 3 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'uice' = { - table2Version = 3 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'vice' = { - table2Version = 3 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'iceg' = { - table2Version = 3 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'iced' = { - table2Version = 3 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'snom' = { - table2Version = 3 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'swh' = { - table2Version = 3 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'mdww' = { - table2Version = 3 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'shww' = { - table2Version = 3 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'mpww' = { - table2Version = 3 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'swdir' = { - table2Version = 3 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'swell' = { - table2Version = 3 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'swper' = { - table2Version = 3 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'mdps' = { - table2Version = 3 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'mpps' = { - table2Version = 3 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'dirsw' = { - table2Version = 3 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'swp' = { - table2Version = 3 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'nswrs' = { - table2Version = 3 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'nlwrs' = { - table2Version = 3 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'nswrt' = { - table2Version = 3 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'nlwrt' = { - table2Version = 3 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'lwavr' = { - table2Version = 3 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'swavr' = { - table2Version = 3 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'grad' = { - table2Version = 3 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'lwrad' = { - table2Version = 3 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'swrad' = { - table2Version = 3 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'uflx' = { - table2Version = 3 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'vflx' = { - table2Version = 3 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'wmixe' = { - table2Version = 3 ; - indicatorOfParameter = 126 ; - } -#Image data -'imgd' = { - table2Version = 3 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'vegrea' = { - table2Version = 3 ; - indicatorOfParameter = 87 ; - } -#Orography -'orog' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'sm' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'st' = { - table2Version = 3 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'sf' = { - table2Version = 3 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'tcc' = { - table2Version = 3 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'tp' = { - table2Version = 3 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'strf' = { - table2Version = 2 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'vp' = { - table2Version = 2 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'pt' = { - table2Version = 2 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'ws' = { - table2Version = 2 ; - indicatorOfParameter = 32 ; - } -#Pressure -'pres' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'pv' = { - table2Version = 2 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'z' = { - table2Version = 2 ; - indicatorOfParameter = 6 ; - } -#Temperature -'t' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'u' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'v' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'q' = { - table2Version = 2 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'sp' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'w' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'vo' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'msl' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'d' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gh' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'r' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'10u' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'10v' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'2t' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'2d' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'lsm' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'sr' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'e' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'btmp' = { - table2Version = 2 ; - indicatorOfParameter = 118 ; - } -#Runoff -'ro' = { - table2Version = 2 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'tco3' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'lsp' = { - table2Version = 2 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'sde' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'ccc' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'lcc' = { - table2Version = 2 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'mcc' = { - table2Version = 2 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'hcc' = { - table2Version = 2 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'lssf' = { - table2Version = 2 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'lhf' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'shf' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'bld' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'snoc' = { - table2Version = 2 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'cwat' = { - table2Version = 2 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'al' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'ptend' = { - table2Version = 2 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'icaht' = { - table2Version = 2 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'h' = { - table2Version = 2 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'hstdv' = { - table2Version = 2 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'papt' = { - table2Version = 2 ; - indicatorOfParameter = 14 ; - } -#Maximum temperature -'tmax' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'tmin' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'dpt' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'depr' = { - table2Version = 2 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'lapr' = { - table2Version = 2 ; - indicatorOfParameter = 19 ; - } -#Visibility -'vis' = { - table2Version = 2 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'rdsp1' = { - table2Version = 2 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'rdsp2' = { - table2Version = 2 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'rdsp3' = { - table2Version = 2 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'pli' = { - table2Version = 2 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'ta' = { - table2Version = 2 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'presa' = { - table2Version = 2 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'gpa' = { - table2Version = 2 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'wvsp1' = { - table2Version = 2 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'wvsp2' = { - table2Version = 2 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'wvsp3' = { - table2Version = 2 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'wdir' = { - table2Version = 2 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'mntsf' = { - table2Version = 2 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'sgcvv' = { - table2Version = 2 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'absv' = { - table2Version = 2 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'absd' = { - table2Version = 2 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'vucsh' = { - table2Version = 2 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'vvcsh' = { - table2Version = 2 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'dirc' = { - table2Version = 2 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'spc' = { - table2Version = 2 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'ucurr' = { - table2Version = 2 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'vcurr' = { - table2Version = 2 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'mixr' = { - table2Version = 2 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'pwat' = { - table2Version = 2 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'vp' = { - table2Version = 2 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'satd' = { - table2Version = 2 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'prate' = { - table2Version = 2 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'tstm' = { - table2Version = 2 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'acpcp' = { - table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'srweq' = { - table2Version = 2 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'mld' = { - table2Version = 2 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'tthdp' = { - table2Version = 2 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'mthd' = { - table2Version = 2 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'mtha' = { - table2Version = 2 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'bli' = { - table2Version = 2 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'wtmp' = { - table2Version = 2 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'dslm' = { - table2Version = 2 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'ssw' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Salinity -'s' = { - table2Version = 2 ; - indicatorOfParameter = 88 ; - } -#Density -'den' = { - table2Version = 2 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'icec' = { - table2Version = 2 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'icetk' = { - table2Version = 2 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'diced' = { - table2Version = 2 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'siced' = { - table2Version = 2 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'uice' = { - table2Version = 2 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'vice' = { - table2Version = 2 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'iceg' = { - table2Version = 2 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'iced' = { - table2Version = 2 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'snom' = { - table2Version = 2 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'swh' = { - table2Version = 2 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'mdww' = { - table2Version = 2 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'shww' = { - table2Version = 2 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'mpww' = { - table2Version = 2 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'swdir' = { - table2Version = 2 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'swell' = { - table2Version = 2 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'swper' = { - table2Version = 2 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'mdps' = { - table2Version = 2 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'mpps' = { - table2Version = 2 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'dirsw' = { - table2Version = 2 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'swp' = { - table2Version = 2 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'nswrs' = { - table2Version = 2 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'nlwrs' = { - table2Version = 2 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'nswrt' = { - table2Version = 2 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'nlwrt' = { - table2Version = 2 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'lwavr' = { - table2Version = 2 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'swavr' = { - table2Version = 2 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'grad' = { - table2Version = 2 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'lwrad' = { - table2Version = 2 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'swrad' = { - table2Version = 2 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'uflx' = { - table2Version = 2 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'vflx' = { - table2Version = 2 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'wmixe' = { - table2Version = 2 ; - indicatorOfParameter = 126 ; - } -#Image data -'imgd' = { - table2Version = 2 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'vegrea' = { - table2Version = 2 ; - indicatorOfParameter = 87 ; - } -#Orography -'orog' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'sm' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'st' = { - table2Version = 2 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'sf' = { - table2Version = 2 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'tcc' = { - table2Version = 2 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'tp' = { - table2Version = 2 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'strf' = { - table2Version = 1 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'vp' = { - table2Version = 1 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'pt' = { - table2Version = 1 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'ws' = { - table2Version = 1 ; - indicatorOfParameter = 32 ; - } -#Pressure -'pres' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'pv' = { - table2Version = 1 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - table2Version = 1 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'z' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'t' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'u' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'v' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'q' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'sp' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'w' = { - table2Version = 1 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'vo' = { - table2Version = 1 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'msl' = { - table2Version = 1 ; - indicatorOfParameter = 2 ; - } -#Divergence -'d' = { - table2Version = 1 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gh' = { - table2Version = 1 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'r' = { - table2Version = 1 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'10u' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'10v' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'2t' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'2d' = { - table2Version = 1 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'lsm' = { - table2Version = 1 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'sr' = { - table2Version = 1 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'e' = { - table2Version = 1 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'btmp' = { - table2Version = 1 ; - indicatorOfParameter = 118 ; - } -#Runoff -'ro' = { - table2Version = 1 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'tco3' = { - table2Version = 1 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'lsp' = { - table2Version = 1 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'sde' = { - table2Version = 1 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'ccc' = { - table2Version = 1 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'lcc' = { - table2Version = 1 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'mcc' = { - table2Version = 1 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'hcc' = { - table2Version = 1 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'lssf' = { - table2Version = 1 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'lhf' = { - table2Version = 1 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'shf' = { - table2Version = 1 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'bld' = { - table2Version = 1 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'snoc' = { - table2Version = 1 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'cwat' = { - table2Version = 1 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'al' = { - table2Version = 1 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'ptend' = { - table2Version = 1 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'icaht' = { - table2Version = 1 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'h' = { - table2Version = 1 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'hstdv' = { - table2Version = 1 ; - indicatorOfParameter = 9 ; +#Pseudo-adiabatic potential temperature +'papt' = { + table2Version = 2 ; + indicatorOfParameter = 14 ; } #Pseudo-adiabatic potential temperature 'papt' = { @@ -1630,427 +774,1283 @@ indicatorOfParameter = 14 ; } #Maximum temperature +'tmax' = { + table2Version = 3 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature +'tmax' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + } +#Maximum temperature 'tmax' = { table2Version = 1 ; indicatorOfParameter = 15 ; } #Minimum temperature +'tmin' = { + table2Version = 3 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature +'tmin' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + } +#Minimum temperature 'tmin' = { table2Version = 1 ; indicatorOfParameter = 16 ; } #Dew point temperature +'dpt' = { + table2Version = 3 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'dpt' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature 'dpt' = { table2Version = 1 ; indicatorOfParameter = 17 ; } #Dew point depression (or deficit) +'depr' = { + table2Version = 3 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'depr' = { + table2Version = 2 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) 'depr' = { table2Version = 1 ; indicatorOfParameter = 18 ; } #Lapse rate +'lapr' = { + table2Version = 3 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'lapr' = { + table2Version = 2 ; + indicatorOfParameter = 19 ; + } +#Lapse rate 'lapr' = { table2Version = 1 ; indicatorOfParameter = 19 ; } #Visibility +'vis' = { + table2Version = 3 ; + indicatorOfParameter = 20 ; + } +#Visibility +'vis' = { + table2Version = 2 ; + indicatorOfParameter = 20 ; + } +#Visibility 'vis' = { table2Version = 1 ; indicatorOfParameter = 20 ; } #Radar spectra (1) +'rdsp1' = { + table2Version = 3 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'rdsp1' = { + table2Version = 2 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) 'rdsp1' = { table2Version = 1 ; indicatorOfParameter = 21 ; } #Radar spectra (2) +'rdsp2' = { + table2Version = 3 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'rdsp2' = { + table2Version = 2 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) 'rdsp2' = { table2Version = 1 ; indicatorOfParameter = 22 ; } #Radar spectra (3) +'rdsp3' = { + table2Version = 3 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'rdsp3' = { + table2Version = 2 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) 'rdsp3' = { table2Version = 1 ; indicatorOfParameter = 23 ; } #Parcel lifted index (to 500 hPa) +'pli' = { + table2Version = 3 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'pli' = { + table2Version = 2 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) 'pli' = { table2Version = 1 ; indicatorOfParameter = 24 ; } #Temperature anomaly +'ta' = { + table2Version = 3 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'ta' = { + table2Version = 2 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly 'ta' = { table2Version = 1 ; indicatorOfParameter = 25 ; } #Pressure anomaly +'presa' = { + table2Version = 3 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'presa' = { + table2Version = 2 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly 'presa' = { table2Version = 1 ; indicatorOfParameter = 26 ; } #Geopotential height anomaly +'gpa' = { + table2Version = 3 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'gpa' = { + table2Version = 2 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly 'gpa' = { table2Version = 1 ; indicatorOfParameter = 27 ; } #Wave spectra (1) +'wvsp1' = { + table2Version = 3 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'wvsp1' = { + table2Version = 2 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) 'wvsp1' = { table2Version = 1 ; indicatorOfParameter = 28 ; } #Wave spectra (2) +'wvsp2' = { + table2Version = 3 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'wvsp2' = { + table2Version = 2 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) 'wvsp2' = { table2Version = 1 ; indicatorOfParameter = 29 ; } #Wave spectra (3) +'wvsp3' = { + table2Version = 3 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'wvsp3' = { + table2Version = 2 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) 'wvsp3' = { table2Version = 1 ; indicatorOfParameter = 30 ; } #Wind direction +'wdir' = { + table2Version = 3 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'wdir' = { + table2Version = 2 ; + indicatorOfParameter = 31 ; + } +#Wind direction 'wdir' = { table2Version = 1 ; indicatorOfParameter = 31 ; } #Montgomery stream Function +'mntsf' = { + table2Version = 3 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'mntsf' = { + table2Version = 2 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function 'mntsf' = { table2Version = 1 ; indicatorOfParameter = 37 ; } #Sigma coordinate vertical velocity +'sgcvv' = { + table2Version = 3 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'sgcvv' = { + table2Version = 2 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity 'sgcvv' = { table2Version = 1 ; indicatorOfParameter = 38 ; } #Absolute vorticity +'absv' = { + table2Version = 3 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'absv' = { + table2Version = 2 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity 'absv' = { table2Version = 1 ; indicatorOfParameter = 41 ; } #Absolute divergence +'absd' = { + table2Version = 3 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'absd' = { + table2Version = 2 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence 'absd' = { table2Version = 1 ; indicatorOfParameter = 42 ; } #Vertical u-component shear +'vucsh' = { + table2Version = 3 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'vucsh' = { + table2Version = 2 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear 'vucsh' = { table2Version = 1 ; indicatorOfParameter = 45 ; } #Vertical v-component shear +'vvcsh' = { + table2Version = 3 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'vvcsh' = { + table2Version = 2 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear 'vvcsh' = { table2Version = 1 ; indicatorOfParameter = 46 ; } #Direction of current +'dirc' = { + table2Version = 3 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'dirc' = { + table2Version = 2 ; + indicatorOfParameter = 47 ; + } +#Direction of current 'dirc' = { table2Version = 1 ; indicatorOfParameter = 47 ; } #Speed of current +'spc' = { + table2Version = 3 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'spc' = { + table2Version = 2 ; + indicatorOfParameter = 48 ; + } +#Speed of current 'spc' = { table2Version = 1 ; indicatorOfParameter = 48 ; } #U-component of current +'ucurr' = { + table2Version = 3 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'ucurr' = { + table2Version = 2 ; + indicatorOfParameter = 49 ; + } +#U-component of current 'ucurr' = { table2Version = 1 ; indicatorOfParameter = 49 ; } #V-component of current +'vcurr' = { + table2Version = 3 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'vcurr' = { + table2Version = 2 ; + indicatorOfParameter = 50 ; + } +#V-component of current 'vcurr' = { table2Version = 1 ; indicatorOfParameter = 50 ; } #Humidity mixing ratio +'mixr' = { + table2Version = 3 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'mixr' = { + table2Version = 2 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio 'mixr' = { table2Version = 1 ; indicatorOfParameter = 53 ; } #Precipitable water +'pwat' = { + table2Version = 3 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'pwat' = { + table2Version = 2 ; + indicatorOfParameter = 54 ; + } +#Precipitable water 'pwat' = { table2Version = 1 ; indicatorOfParameter = 54 ; } #Vapour pressure +'vp' = { + table2Version = 3 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'vp' = { + table2Version = 2 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure 'vp' = { table2Version = 1 ; indicatorOfParameter = 55 ; } #Saturation deficit +'satd' = { + table2Version = 3 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'satd' = { + table2Version = 2 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit 'satd' = { table2Version = 1 ; indicatorOfParameter = 56 ; } #Precipitation rate +'prate' = { + table2Version = 3 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'prate' = { + table2Version = 2 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate 'prate' = { table2Version = 1 ; indicatorOfParameter = 59 ; } #Thunderstorm probability +'tstm' = { + table2Version = 3 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'tstm' = { + table2Version = 2 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability 'tstm' = { table2Version = 1 ; indicatorOfParameter = 60 ; } #Convective precipitation (water) +'acpcp' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'acpcp' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) 'acpcp' = { table2Version = 1 ; indicatorOfParameter = 63 ; } #Snow fall rate water equivalent +'srweq' = { + table2Version = 3 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'srweq' = { + table2Version = 2 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent 'srweq' = { table2Version = 1 ; indicatorOfParameter = 64 ; } #Mixed layer depth +'mld' = { + table2Version = 3 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'mld' = { + table2Version = 2 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth 'mld' = { table2Version = 1 ; indicatorOfParameter = 67 ; } #Transient thermocline depth +'tthdp' = { + table2Version = 3 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'tthdp' = { + table2Version = 2 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth 'tthdp' = { table2Version = 1 ; indicatorOfParameter = 68 ; } #Main thermocline depth +'mthd' = { + table2Version = 3 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'mthd' = { + table2Version = 2 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth 'mthd' = { table2Version = 1 ; indicatorOfParameter = 69 ; } #Main thermocline anomaly +'mtha' = { + table2Version = 3 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'mtha' = { + table2Version = 2 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly 'mtha' = { table2Version = 1 ; indicatorOfParameter = 70 ; } #Best lifted index (to 500 hPa) +'bli' = { + table2Version = 3 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'bli' = { + table2Version = 2 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) 'bli' = { table2Version = 1 ; indicatorOfParameter = 77 ; } #Water temperature +'wtmp' = { + table2Version = 3 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'wtmp' = { + table2Version = 2 ; + indicatorOfParameter = 80 ; + } +#Water temperature 'wtmp' = { table2Version = 1 ; indicatorOfParameter = 80 ; } #Deviation of sea-level from mean +'dslm' = { + table2Version = 3 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'dslm' = { + table2Version = 2 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean 'dslm' = { table2Version = 1 ; indicatorOfParameter = 82 ; } #Soil moisture content +'ssw' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'ssw' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content 'ssw' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Salinity +'s' = { + table2Version = 3 ; + indicatorOfParameter = 88 ; + } +#Salinity +'s' = { + table2Version = 2 ; + indicatorOfParameter = 88 ; + } +#Salinity 's' = { table2Version = 1 ; indicatorOfParameter = 88 ; } #Density +'den' = { + table2Version = 3 ; + indicatorOfParameter = 89 ; + } +#Density +'den' = { + table2Version = 2 ; + indicatorOfParameter = 89 ; + } +#Density 'den' = { table2Version = 1 ; indicatorOfParameter = 89 ; } #Ice cover (1=ice, 0=no ice) +'icec' = { + table2Version = 3 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'icec' = { + table2Version = 2 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) 'icec' = { table2Version = 1 ; indicatorOfParameter = 91 ; } #Ice thickness +'icetk' = { + table2Version = 3 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'icetk' = { + table2Version = 2 ; + indicatorOfParameter = 92 ; + } +#Ice thickness 'icetk' = { table2Version = 1 ; indicatorOfParameter = 92 ; } #Direction of ice drift +'diced' = { + table2Version = 3 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'diced' = { + table2Version = 2 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift 'diced' = { table2Version = 1 ; indicatorOfParameter = 93 ; } #Speed of ice drift +'siced' = { + table2Version = 3 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'siced' = { + table2Version = 2 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift 'siced' = { table2Version = 1 ; indicatorOfParameter = 94 ; } #U-component of ice drift +'uice' = { + table2Version = 3 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'uice' = { + table2Version = 2 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift 'uice' = { table2Version = 1 ; indicatorOfParameter = 95 ; } #V-component of ice drift +'vice' = { + table2Version = 3 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'vice' = { + table2Version = 2 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift 'vice' = { table2Version = 1 ; indicatorOfParameter = 96 ; } #Ice growth rate +'iceg' = { + table2Version = 3 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'iceg' = { + table2Version = 2 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate 'iceg' = { table2Version = 1 ; indicatorOfParameter = 97 ; } #Ice divergence +'iced' = { + table2Version = 3 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'iced' = { + table2Version = 2 ; + indicatorOfParameter = 98 ; + } +#Ice divergence 'iced' = { table2Version = 1 ; indicatorOfParameter = 98 ; } #Snowmelt +'snom' = { + table2Version = 3 ; + indicatorOfParameter = 99 ; + } +#Snowmelt +'snom' = { + table2Version = 2 ; + indicatorOfParameter = 99 ; + } +#Snowmelt 'snom' = { table2Version = 1 ; indicatorOfParameter = 99 ; } #Signific.height,combined wind waves+swell +'swh' = { + table2Version = 3 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'swh' = { + table2Version = 2 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell 'swh' = { table2Version = 1 ; indicatorOfParameter = 100 ; } #Mean direction of wind waves +'mdww' = { + table2Version = 3 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'mdww' = { + table2Version = 2 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves 'mdww' = { table2Version = 1 ; indicatorOfParameter = 101 ; } #Significant height of wind waves +'shww' = { + table2Version = 3 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'shww' = { + table2Version = 2 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves 'shww' = { table2Version = 1 ; indicatorOfParameter = 102 ; } #Mean period of wind waves +'mpww' = { + table2Version = 3 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'mpww' = { + table2Version = 2 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves 'mpww' = { table2Version = 1 ; indicatorOfParameter = 103 ; } #Direction of swell waves +'swdir' = { + table2Version = 3 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'swdir' = { + table2Version = 2 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves 'swdir' = { table2Version = 1 ; indicatorOfParameter = 104 ; } #Significant height of swell waves +'swell' = { + table2Version = 3 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'swell' = { + table2Version = 2 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves 'swell' = { table2Version = 1 ; indicatorOfParameter = 105 ; } #Mean period of swell waves +'swper' = { + table2Version = 3 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'swper' = { + table2Version = 2 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves 'swper' = { table2Version = 1 ; indicatorOfParameter = 106 ; } #Primary wave direction +'mdps' = { + table2Version = 3 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'mdps' = { + table2Version = 2 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction 'mdps' = { table2Version = 1 ; indicatorOfParameter = 107 ; } #Primary wave mean period +'mpps' = { + table2Version = 3 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'mpps' = { + table2Version = 2 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period 'mpps' = { table2Version = 1 ; indicatorOfParameter = 108 ; } #Secondary wave direction +'dirsw' = { + table2Version = 3 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'dirsw' = { + table2Version = 2 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction 'dirsw' = { table2Version = 1 ; indicatorOfParameter = 109 ; } #Secondary wave mean period +'swp' = { + table2Version = 3 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'swp' = { + table2Version = 2 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period 'swp' = { table2Version = 1 ; indicatorOfParameter = 110 ; } #Net short-wave radiation flux (surface) +'nswrs' = { + table2Version = 3 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'nswrs' = { + table2Version = 2 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) 'nswrs' = { table2Version = 1 ; indicatorOfParameter = 111 ; } #Net long-wave radiation flux (surface) +'nlwrs' = { + table2Version = 3 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'nlwrs' = { + table2Version = 2 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) 'nlwrs' = { table2Version = 1 ; indicatorOfParameter = 112 ; } #Net short-wave radiation flux(atmosph.top) +'nswrt' = { + table2Version = 3 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'nswrt' = { + table2Version = 2 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) 'nswrt' = { table2Version = 1 ; indicatorOfParameter = 113 ; } #Net long-wave radiation flux(atmosph.top) +'nlwrt' = { + table2Version = 3 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'nlwrt' = { + table2Version = 2 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) 'nlwrt' = { table2Version = 1 ; indicatorOfParameter = 114 ; } #Long wave radiation flux +'lwavr' = { + table2Version = 3 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'lwavr' = { + table2Version = 2 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux 'lwavr' = { table2Version = 1 ; indicatorOfParameter = 115 ; } #Short wave radiation flux +'swavr' = { + table2Version = 3 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'swavr' = { + table2Version = 2 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux 'swavr' = { table2Version = 1 ; indicatorOfParameter = 116 ; } #Global radiation flux +'grad' = { + table2Version = 3 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'grad' = { + table2Version = 2 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux 'grad' = { table2Version = 1 ; indicatorOfParameter = 117 ; } #Radiance (with respect to wave number) +'lwrad' = { + table2Version = 3 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'lwrad' = { + table2Version = 2 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) 'lwrad' = { table2Version = 1 ; indicatorOfParameter = 119 ; } #Radiance (with respect to wave length) +'swrad' = { + table2Version = 3 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'swrad' = { + table2Version = 2 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) 'swrad' = { table2Version = 1 ; indicatorOfParameter = 120 ; } #Momentum flux, u-component +'uflx' = { + table2Version = 3 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'uflx' = { + table2Version = 2 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component 'uflx' = { table2Version = 1 ; indicatorOfParameter = 124 ; } #Momentum flux, v-component +'vflx' = { + table2Version = 3 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'vflx' = { + table2Version = 2 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component 'vflx' = { table2Version = 1 ; indicatorOfParameter = 125 ; } #Wind mixing energy +'wmixe' = { + table2Version = 3 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'wmixe' = { + table2Version = 2 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy 'wmixe' = { table2Version = 1 ; indicatorOfParameter = 126 ; } #Image data +'imgd' = { + table2Version = 3 ; + indicatorOfParameter = 127 ; + } +#Image data +'imgd' = { + table2Version = 2 ; + indicatorOfParameter = 127 ; + } +#Image data 'imgd' = { table2Version = 1 ; indicatorOfParameter = 127 ; } #Percentage of vegetation +'vegrea' = { + table2Version = 3 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation +'vegrea' = { + table2Version = 2 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation 'vegrea' = { table2Version = 1 ; indicatorOfParameter = 87 ; } #Orography +'orog' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography +'orog' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography 'orog' = { table2Version = 1 ; indicatorOfParameter = 7 ; indicatorOfTypeOfLevel = 1 ; } #Soil moisture +'sm' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture +'sm' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture 'sm' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Soil temperature +'st' = { + table2Version = 3 ; + indicatorOfParameter = 85 ; + } +#Soil temperature +'st' = { + table2Version = 2 ; + indicatorOfParameter = 85 ; + } +#Soil temperature 'st' = { table2Version = 1 ; indicatorOfParameter = 85 ; } #Snowfall water equivalent +'sf' = { + table2Version = 3 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent +'sf' = { + table2Version = 2 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent 'sf' = { table2Version = 1 ; indicatorOfParameter = 65 ; } #Total Cloud Cover +'tcc' = { + table2Version = 3 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover +'tcc' = { + table2Version = 2 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover 'tcc' = { table2Version = 1 ; indicatorOfParameter = 71 ; } #Total Precipitation +'tp' = { + table2Version = 3 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation +'tp' = { + table2Version = 2 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation 'tp' = { table2Version = 1 ; indicatorOfParameter = 61 ; diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def index 5c54afcd0..a8a949696 100644 --- a/definitions/grib1/units.def +++ b/definitions/grib1/units.def @@ -4,31 +4,91 @@ table2Version = 3 ; indicatorOfParameter = 35 ; } +#Stream function +'m**2 s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 35 ; + } +#Stream function +'m**2 s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 35 ; + } #Velocity potential 'm**2 s**-1' = { table2Version = 3 ; indicatorOfParameter = 36 ; } +#Velocity potential +'m**2 s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 36 ; + } +#Velocity potential +'m**2 s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 36 ; + } #Potential temperature 'K' = { table2Version = 3 ; indicatorOfParameter = 13 ; } +#Potential temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 13 ; + } +#Potential temperature +'K' = { + table2Version = 1 ; + indicatorOfParameter = 13 ; + } #Wind speed 'm s**-1' = { table2Version = 3 ; indicatorOfParameter = 32 ; } +#Wind speed +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 32 ; + } +#Wind speed +'m s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 32 ; + } #Pressure 'Pa' = { table2Version = 3 ; indicatorOfParameter = 1 ; } +#Pressure +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + } +#Pressure +'Pa' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + } #Potential vorticity 'K m**2 kg**-1 s**-1' = { table2Version = 3 ; indicatorOfParameter = 4 ; } +#Potential vorticity +'K m**2 kg**-1 s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 4 ; + } +#Potential vorticity +'K m**2 kg**-1 s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 4 ; + } #Maximum temperature at 2 metres in the last 6 hours 'K' = { table2Version = 3 ; @@ -36,6 +96,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Maximum temperature at 2 metres in the last 6 hours +'K' = { + table2Version = 2 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Maximum temperature at 2 metres in the last 6 hours +'K' = { + table2Version = 1 ; + indicatorOfParameter = 15 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Minimum temperature at 2 metres in the last 6 hours 'K' = { table2Version = 3 ; @@ -43,67 +117,203 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#Minimum temperature at 2 metres in the last 6 hours +'K' = { + table2Version = 2 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'K' = { + table2Version = 1 ; + indicatorOfParameter = 16 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #Geopotential 'm**2 s**-2' = { table2Version = 3 ; indicatorOfParameter = 6 ; } +#Geopotential +'m**2 s**-2' = { + table2Version = 2 ; + indicatorOfParameter = 6 ; + } +#Geopotential +'m**2 s**-2' = { + table2Version = 1 ; + indicatorOfParameter = 6 ; + } #Temperature 'K' = { table2Version = 3 ; indicatorOfParameter = 11 ; } +#Temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + } +#Temperature +'K' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + } #U component of wind 'm s**-1' = { table2Version = 3 ; indicatorOfParameter = 33 ; } +#U component of wind +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + } +#U component of wind +'m s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + } #V component of wind 'm s**-1' = { table2Version = 3 ; indicatorOfParameter = 34 ; } +#V component of wind +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + } +#V component of wind +'m s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + } #Specific humidity 'kg kg**-1' = { table2Version = 3 ; indicatorOfParameter = 51 ; } +#Specific humidity +'kg kg**-1' = { + table2Version = 2 ; + indicatorOfParameter = 51 ; + } +#Specific humidity +'kg kg**-1' = { + table2Version = 1 ; + indicatorOfParameter = 51 ; + } #Surface pressure 'Pa' = { table2Version = 3 ; indicatorOfParameter = 1 ; indicatorOfTypeOfLevel = 1 ; } +#Surface pressure +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } +#Surface pressure +'Pa' = { + table2Version = 1 ; + indicatorOfParameter = 1 ; + indicatorOfTypeOfLevel = 1 ; + } #Vertical velocity 'Pa s**-1' = { table2Version = 3 ; indicatorOfParameter = 39 ; } +#Vertical velocity +'Pa s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 39 ; + } +#Vertical velocity +'Pa s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 39 ; + } #Vorticity (relative) 's**-1' = { table2Version = 3 ; indicatorOfParameter = 43 ; } +#Vorticity (relative) +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 43 ; + } +#Vorticity (relative) +'s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 43 ; + } #Mean sea level pressure 'Pa' = { table2Version = 3 ; indicatorOfParameter = 2 ; } +#Mean sea level pressure +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 2 ; + } +#Mean sea level pressure +'Pa' = { + table2Version = 1 ; + indicatorOfParameter = 2 ; + } #Divergence 's**-1' = { table2Version = 3 ; indicatorOfParameter = 44 ; } +#Divergence +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 44 ; + } +#Divergence +'s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 44 ; + } #Geopotential height 'gpm' = { table2Version = 3 ; indicatorOfParameter = 7 ; } +#Geopotential height +'gpm' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + } +#Geopotential height +'gpm' = { + table2Version = 1 ; + indicatorOfParameter = 7 ; + } #Relative humidity '%' = { table2Version = 3 ; indicatorOfParameter = 52 ; } +#Relative humidity +'%' = { + table2Version = 2 ; + indicatorOfParameter = 52 ; + } +#Relative humidity +'%' = { + table2Version = 1 ; + indicatorOfParameter = 52 ; + } #10 metre U wind component 'm s**-1' = { table2Version = 3 ; @@ -111,6 +321,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre U wind component +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre U wind component +'m s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 33 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #10 metre V wind component 'm s**-1' = { table2Version = 3 ; @@ -118,6 +342,20 @@ indicatorOfTypeOfLevel = 105 ; level = 10 ; } +#10 metre V wind component +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } +#10 metre V wind component +'m s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 34 ; + indicatorOfTypeOfLevel = 105 ; + level = 10 ; + } #2 metre temperature 'K' = { table2Version = 3 ; @@ -125,6 +363,20 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } +#2 metre temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre temperature +'K' = { + table2Version = 1 ; + indicatorOfParameter = 11 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } #2 metre dewpoint temperature 'K' = { table2Version = 3 ; @@ -132,104 +384,308 @@ indicatorOfTypeOfLevel = 105 ; level = 2 ; } -#Land-sea mask -'(0 - 1)' = { - table2Version = 3 ; - indicatorOfParameter = 81 ; +#2 metre dewpoint temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#2 metre dewpoint temperature +'K' = { + table2Version = 1 ; + indicatorOfParameter = 17 ; + indicatorOfTypeOfLevel = 105 ; + level = 2 ; + } +#Land-sea mask +'(0 - 1)' = { + table2Version = 3 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'(0 - 1)' = { + table2Version = 2 ; + indicatorOfParameter = 81 ; + } +#Land-sea mask +'(0 - 1)' = { + table2Version = 1 ; + indicatorOfParameter = 81 ; } #Surface roughness (climatological) 'm' = { table2Version = 3 ; indicatorOfParameter = 83 ; } +#Surface roughness (climatological) +'m' = { + table2Version = 2 ; + indicatorOfParameter = 83 ; + } +#Surface roughness (climatological) +'m' = { + table2Version = 1 ; + indicatorOfParameter = 83 ; + } #Evaporation 'm of water equivalent' = { table2Version = 3 ; indicatorOfParameter = 57 ; } +#Evaporation +'m of water equivalent' = { + table2Version = 2 ; + indicatorOfParameter = 57 ; + } +#Evaporation +'m of water equivalent' = { + table2Version = 1 ; + indicatorOfParameter = 57 ; + } #Brightness temperature 'K' = { table2Version = 3 ; indicatorOfParameter = 118 ; } +#Brightness temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 118 ; + } +#Brightness temperature +'K' = { + table2Version = 1 ; + indicatorOfParameter = 118 ; + } #Runoff 'm' = { table2Version = 3 ; indicatorOfParameter = 90 ; } +#Runoff +'m' = { + table2Version = 2 ; + indicatorOfParameter = 90 ; + } +#Runoff +'m' = { + table2Version = 1 ; + indicatorOfParameter = 90 ; + } #Total column ozone 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 10 ; } +#Total column ozone +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 10 ; + } +#Total column ozone +'kg m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 10 ; + } #Large-scale precipitation 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 62 ; } +#Large-scale precipitation +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 62 ; + } +#Large-scale precipitation +'kg m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 62 ; + } #Snow depth 'm' = { table2Version = 3 ; indicatorOfParameter = 66 ; } +#Snow depth +'m' = { + table2Version = 2 ; + indicatorOfParameter = 66 ; + } +#Snow depth +'m' = { + table2Version = 1 ; + indicatorOfParameter = 66 ; + } #Convective cloud cover '%' = { table2Version = 3 ; indicatorOfParameter = 72 ; } +#Convective cloud cover +'%' = { + table2Version = 2 ; + indicatorOfParameter = 72 ; + } +#Convective cloud cover +'%' = { + table2Version = 1 ; + indicatorOfParameter = 72 ; + } #Low cloud cover '%' = { table2Version = 3 ; indicatorOfParameter = 73 ; } +#Low cloud cover +'%' = { + table2Version = 2 ; + indicatorOfParameter = 73 ; + } +#Low cloud cover +'%' = { + table2Version = 1 ; + indicatorOfParameter = 73 ; + } #Medium cloud cover '%' = { table2Version = 3 ; indicatorOfParameter = 74 ; } +#Medium cloud cover +'%' = { + table2Version = 2 ; + indicatorOfParameter = 74 ; + } +#Medium cloud cover +'%' = { + table2Version = 1 ; + indicatorOfParameter = 74 ; + } #High cloud cover '%' = { table2Version = 3 ; indicatorOfParameter = 75 ; } +#High cloud cover +'%' = { + table2Version = 2 ; + indicatorOfParameter = 75 ; + } +#High cloud cover +'%' = { + table2Version = 1 ; + indicatorOfParameter = 75 ; + } #Large scale snow 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 79 ; } +#Large scale snow +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 79 ; + } +#Large scale snow +'kg m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 79 ; + } #Latent heat flux 'W m**-2' = { table2Version = 3 ; indicatorOfParameter = 121 ; } +#Latent heat flux +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 121 ; + } +#Latent heat flux +'W m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 121 ; + } #Sensible heat flux 'W m**-2' = { table2Version = 3 ; indicatorOfParameter = 122 ; } +#Sensible heat flux +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 122 ; + } +#Sensible heat flux +'W m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 122 ; + } #Boundary layer dissipation 'W m**-2' = { table2Version = 3 ; indicatorOfParameter = 123 ; } +#Boundary layer dissipation +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 123 ; + } +#Boundary layer dissipation +'W m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 123 ; + } #Convective snow 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 78 ; } +#Convective snow +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 78 ; + } +#Convective snow +'kg m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 78 ; + } #Cloud water 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 76 ; } +#Cloud water +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 76 ; + } +#Cloud water +'kg m**-2' = { + table2Version = 1 ; + indicatorOfParameter = 76 ; + } #Forecast albedo '%' = { table2Version = 3 ; indicatorOfParameter = 84 ; } +#Forecast albedo +'%' = { + table2Version = 2 ; + indicatorOfParameter = 84 ; + } +#Forecast albedo +'%' = { + table2Version = 1 ; + indicatorOfParameter = 84 ; + } #Virtual temperature 'K' = { - table2Version = 1 ; + table2Version = 3 ; indicatorOfParameter = 12 ; } #Virtual temperature @@ -239,7 +695,7 @@ } #Virtual temperature 'K' = { - table2Version = 3 ; + table2Version = 1 ; indicatorOfParameter = 12 ; } #Pressure tendency @@ -247,1392 +703,100 @@ table2Version = 3 ; indicatorOfParameter = 3 ; } +#Pressure tendency +'Pa s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 3 ; + } +#Pressure tendency +'Pa s**-1' = { + table2Version = 1 ; + indicatorOfParameter = 3 ; + } #ICAO Standard Atmosphere reference height 'm' = { table2Version = 3 ; indicatorOfParameter = 5 ; } +#ICAO Standard Atmosphere reference height +'m' = { + table2Version = 2 ; + indicatorOfParameter = 5 ; + } +#ICAO Standard Atmosphere reference height +'m' = { + table2Version = 1 ; + indicatorOfParameter = 5 ; + } #Geometrical height 'm' = { table2Version = 3 ; indicatorOfParameter = 8 ; } +#Geometrical height +'m' = { + table2Version = 2 ; + indicatorOfParameter = 8 ; + } +#Geometrical height +'m' = { + table2Version = 1 ; + indicatorOfParameter = 8 ; + } #Standard deviation of height 'm' = { table2Version = 3 ; indicatorOfParameter = 9 ; } +#Standard deviation of height +'m' = { + table2Version = 2 ; + indicatorOfParameter = 9 ; + } +#Standard deviation of height +'m' = { + table2Version = 1 ; + indicatorOfParameter = 9 ; + } #Pseudo-adiabatic potential temperature 'K' = { table2Version = 3 ; indicatorOfParameter = 14 ; } -#Maximum temperature +#Pseudo-adiabatic potential temperature 'K' = { - table2Version = 3 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'K' = { - table2Version = 3 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'K' = { - table2Version = 3 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'K' = { - table2Version = 3 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'K m**-1' = { - table2Version = 3 ; - indicatorOfParameter = 19 ; - } -#Visibility -'m' = { - table2Version = 3 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'K' = { - table2Version = 3 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'K' = { - table2Version = 3 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'Pa' = { - table2Version = 3 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'gpm' = { - table2Version = 3 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'~' = { - table2Version = 3 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'m**2 s**-2' = { - table2Version = 3 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'kg kg**-1' = { - table2Version = 3 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'Pa' = { - table2Version = 3 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'Pa' = { - table2Version = 3 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'kg m**-2 s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'%' = { - table2Version = 3 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'kg m**-2 s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'m' = { - table2Version = 3 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'m' = { - table2Version = 3 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'m' = { - table2Version = 3 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'m' = { - table2Version = 3 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'K' = { - table2Version = 3 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'K' = { - table2Version = 3 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'m' = { - table2Version = 3 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Salinity -'kg kg**-1' = { - table2Version = 3 ; - indicatorOfParameter = 88 ; - } -#Density -'kg m**-3' = { - table2Version = 3 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'(0 - 1)' = { - table2Version = 3 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'m' = { - table2Version = 3 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'m s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'s**-1' = { - table2Version = 3 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'m' = { - table2Version = 3 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'m' = { - table2Version = 3 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'s' = { - table2Version = 3 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'m' = { - table2Version = 3 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'s' = { - table2Version = 3 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'s' = { - table2Version = 3 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'Degree true' = { - table2Version = 3 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'s' = { - table2Version = 3 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'W m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'W m**-1 sr**-1' = { - table2Version = 3 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'W m**-3 sr**-1' = { - table2Version = 3 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'N m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'N m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'J' = { - table2Version = 3 ; - indicatorOfParameter = 126 ; - } -#Image data -'~' = { - table2Version = 3 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'%' = { - table2Version = 3 ; - indicatorOfParameter = 87 ; - } -#Orography -'m' = { - table2Version = 3 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'kg m**-3' = { - table2Version = 3 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'K' = { - table2Version = 3 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'%' = { - table2Version = 3 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'kg m**-2' = { - table2Version = 3 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'m**2 s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'m**2 s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 32 ; - } -#Pressure -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'K m**2 kg**-1 s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'K' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'K' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'m**2 s**-2' = { - table2Version = 2 ; - indicatorOfParameter = 6 ; - } -#Temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'kg kg**-1' = { - table2Version = 2 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'Pa s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 2 ; - } -#Divergence -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gpm' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'%' = { - table2Version = 2 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#2 metre temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#2 metre dewpoint temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'(0 - 1)' = { - table2Version = 2 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'m' = { - table2Version = 2 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'m of water equivalent' = { - table2Version = 2 ; - indicatorOfParameter = 57 ; - } -#Brightness temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 118 ; - } -#Runoff -'m' = { - table2Version = 2 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'m' = { - table2Version = 2 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'%' = { - table2Version = 2 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'%' = { - table2Version = 2 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'%' = { - table2Version = 2 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'%' = { - table2Version = 2 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'%' = { - table2Version = 2 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'Pa s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'m' = { - table2Version = 2 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'m' = { - table2Version = 2 ; - indicatorOfParameter = 8 ; - } -#Standard deviation of height -'m' = { - table2Version = 2 ; - indicatorOfParameter = 9 ; - } -#Pseudo-adiabatic potential temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 14 ; - } -#Maximum temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 15 ; - } -#Minimum temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 16 ; - } -#Dew point temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 17 ; - } -#Dew point depression (or deficit) -'K' = { - table2Version = 2 ; - indicatorOfParameter = 18 ; - } -#Lapse rate -'K m**-1' = { - table2Version = 2 ; - indicatorOfParameter = 19 ; - } -#Visibility -'m' = { - table2Version = 2 ; - indicatorOfParameter = 20 ; - } -#Radar spectra (1) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 21 ; - } -#Radar spectra (2) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 22 ; - } -#Radar spectra (3) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 23 ; - } -#Parcel lifted index (to 500 hPa) -'K' = { - table2Version = 2 ; - indicatorOfParameter = 24 ; - } -#Temperature anomaly -'K' = { - table2Version = 2 ; - indicatorOfParameter = 25 ; - } -#Pressure anomaly -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 26 ; - } -#Geopotential height anomaly -'gpm' = { - table2Version = 2 ; - indicatorOfParameter = 27 ; - } -#Wave spectra (1) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 28 ; - } -#Wave spectra (2) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 29 ; - } -#Wave spectra (3) -'~' = { - table2Version = 2 ; - indicatorOfParameter = 30 ; - } -#Wind direction -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 31 ; - } -#Montgomery stream Function -'m**2 s**-2' = { - table2Version = 2 ; - indicatorOfParameter = 37 ; - } -#Sigma coordinate vertical velocity -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 38 ; - } -#Absolute vorticity -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 41 ; - } -#Absolute divergence -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 42 ; - } -#Vertical u-component shear -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 45 ; - } -#Vertical v-component shear -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 46 ; - } -#Direction of current -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 47 ; - } -#Speed of current -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 48 ; - } -#U-component of current -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 49 ; - } -#V-component of current -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 50 ; - } -#Humidity mixing ratio -'kg kg**-1' = { - table2Version = 2 ; - indicatorOfParameter = 53 ; - } -#Precipitable water -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 54 ; - } -#Vapour pressure -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 55 ; - } -#Saturation deficit -'Pa' = { - table2Version = 2 ; - indicatorOfParameter = 56 ; - } -#Precipitation rate -'kg m**-2 s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 59 ; - } -#Thunderstorm probability -'%' = { - table2Version = 2 ; - indicatorOfParameter = 60 ; - } -#Convective precipitation (water) -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 63 ; - } -#Snow fall rate water equivalent -'kg m**-2 s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 64 ; - } -#Mixed layer depth -'m' = { - table2Version = 2 ; - indicatorOfParameter = 67 ; - } -#Transient thermocline depth -'m' = { - table2Version = 2 ; - indicatorOfParameter = 68 ; - } -#Main thermocline depth -'m' = { - table2Version = 2 ; - indicatorOfParameter = 69 ; - } -#Main thermocline anomaly -'m' = { - table2Version = 2 ; - indicatorOfParameter = 70 ; - } -#Best lifted index (to 500 hPa) -'K' = { - table2Version = 2 ; - indicatorOfParameter = 77 ; - } -#Water temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 80 ; - } -#Deviation of sea-level from mean -'m' = { - table2Version = 2 ; - indicatorOfParameter = 82 ; - } -#Soil moisture content -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Salinity -'kg kg**-1' = { - table2Version = 2 ; - indicatorOfParameter = 88 ; - } -#Density -'kg m**-3' = { - table2Version = 2 ; - indicatorOfParameter = 89 ; - } -#Ice cover (1=ice, 0=no ice) -'(0 - 1)' = { - table2Version = 2 ; - indicatorOfParameter = 91 ; - } -#Ice thickness -'m' = { - table2Version = 2 ; - indicatorOfParameter = 92 ; - } -#Direction of ice drift -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 93 ; - } -#Speed of ice drift -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 94 ; - } -#U-component of ice drift -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 95 ; - } -#V-component of ice drift -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 96 ; - } -#Ice growth rate -'m s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 97 ; - } -#Ice divergence -'s**-1' = { - table2Version = 2 ; - indicatorOfParameter = 98 ; - } -#Snowmelt -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 99 ; - } -#Signific.height,combined wind waves+swell -'m' = { - table2Version = 2 ; - indicatorOfParameter = 100 ; - } -#Mean direction of wind waves -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 101 ; - } -#Significant height of wind waves -'m' = { - table2Version = 2 ; - indicatorOfParameter = 102 ; - } -#Mean period of wind waves -'s' = { - table2Version = 2 ; - indicatorOfParameter = 103 ; - } -#Direction of swell waves -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 104 ; - } -#Significant height of swell waves -'m' = { - table2Version = 2 ; - indicatorOfParameter = 105 ; - } -#Mean period of swell waves -'s' = { - table2Version = 2 ; - indicatorOfParameter = 106 ; - } -#Primary wave direction -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 107 ; - } -#Primary wave mean period -'s' = { - table2Version = 2 ; - indicatorOfParameter = 108 ; - } -#Secondary wave direction -'Degree true' = { - table2Version = 2 ; - indicatorOfParameter = 109 ; - } -#Secondary wave mean period -'s' = { - table2Version = 2 ; - indicatorOfParameter = 110 ; - } -#Net short-wave radiation flux (surface) -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 111 ; - } -#Net long-wave radiation flux (surface) -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 112 ; - } -#Net short-wave radiation flux(atmosph.top) -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 113 ; - } -#Net long-wave radiation flux(atmosph.top) -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 114 ; - } -#Long wave radiation flux -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 115 ; - } -#Short wave radiation flux -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 116 ; - } -#Global radiation flux -'W m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 117 ; - } -#Radiance (with respect to wave number) -'W m**-1 sr**-1' = { - table2Version = 2 ; - indicatorOfParameter = 119 ; - } -#Radiance (with respect to wave length) -'W m**-3 sr**-1' = { - table2Version = 2 ; - indicatorOfParameter = 120 ; - } -#Momentum flux, u-component -'N m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 124 ; - } -#Momentum flux, v-component -'N m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 125 ; - } -#Wind mixing energy -'J' = { - table2Version = 2 ; - indicatorOfParameter = 126 ; - } -#Image data -'~' = { - table2Version = 2 ; - indicatorOfParameter = 127 ; - } -#Percentage of vegetation -'%' = { - table2Version = 2 ; - indicatorOfParameter = 87 ; - } -#Orography -'m' = { - table2Version = 2 ; - indicatorOfParameter = 7 ; - indicatorOfTypeOfLevel = 1 ; - } -#Soil moisture -'kg m**-3' = { - table2Version = 2 ; - indicatorOfParameter = 86 ; - } -#Soil temperature -'K' = { - table2Version = 2 ; - indicatorOfParameter = 85 ; - } -#Snowfall water equivalent -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 65 ; - } -#Total Cloud Cover -'%' = { - table2Version = 2 ; - indicatorOfParameter = 71 ; - } -#Total Precipitation -'kg m**-2' = { - table2Version = 2 ; - indicatorOfParameter = 61 ; - indicatorOfTypeOfLevel = 1 ; - level = 0 ; - } -#Stream function -'m**2 s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 35 ; - } -#Velocity potential -'m**2 s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 36 ; - } -#Potential temperature -'K' = { - table2Version = 1 ; - indicatorOfParameter = 13 ; - } -#Wind speed -'m s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 32 ; - } -#Pressure -'Pa' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - } -#Potential vorticity -'K m**2 kg**-1 s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 4 ; - } -#Maximum temperature at 2 metres in the last 6 hours -'K' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'K' = { - table2Version = 1 ; - indicatorOfParameter = 16 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Geopotential -'m**2 s**-2' = { - table2Version = 1 ; - indicatorOfParameter = 6 ; - } -#Temperature -'K' = { - table2Version = 1 ; - indicatorOfParameter = 11 ; - } -#U component of wind -'m s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - } -#V component of wind -'m s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - } -#Specific humidity -'kg kg**-1' = { - table2Version = 1 ; - indicatorOfParameter = 51 ; - } -#Surface pressure -'Pa' = { - table2Version = 1 ; - indicatorOfParameter = 1 ; - indicatorOfTypeOfLevel = 1 ; - } -#Vertical velocity -'Pa s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 39 ; - } -#Vorticity (relative) -'s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 43 ; - } -#Mean sea level pressure -'Pa' = { - table2Version = 1 ; - indicatorOfParameter = 2 ; - } -#Divergence -'s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 44 ; - } -#Geopotential height -'gpm' = { - table2Version = 1 ; - indicatorOfParameter = 7 ; - } -#Relative humidity -'%' = { - table2Version = 1 ; - indicatorOfParameter = 52 ; - } -#10 metre U wind component -'m s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 33 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; - } -#10 metre V wind component -'m s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 34 ; - indicatorOfTypeOfLevel = 105 ; - level = 10 ; + table2Version = 2 ; + indicatorOfParameter = 14 ; } -#2 metre temperature +#Pseudo-adiabatic potential temperature 'K' = { table2Version = 1 ; - indicatorOfParameter = 11 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; + indicatorOfParameter = 14 ; } -#2 metre dewpoint temperature +#Maximum temperature 'K' = { - table2Version = 1 ; - indicatorOfParameter = 17 ; - indicatorOfTypeOfLevel = 105 ; - level = 2 ; - } -#Land-sea mask -'(0 - 1)' = { - table2Version = 1 ; - indicatorOfParameter = 81 ; - } -#Surface roughness (climatological) -'m' = { - table2Version = 1 ; - indicatorOfParameter = 83 ; - } -#Evaporation -'m of water equivalent' = { - table2Version = 1 ; - indicatorOfParameter = 57 ; + table2Version = 3 ; + indicatorOfParameter = 15 ; } -#Brightness temperature +#Maximum temperature 'K' = { - table2Version = 1 ; - indicatorOfParameter = 118 ; - } -#Runoff -'m' = { - table2Version = 1 ; - indicatorOfParameter = 90 ; - } -#Total column ozone -'kg m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 10 ; - } -#Large-scale precipitation -'kg m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 62 ; - } -#Snow depth -'m' = { - table2Version = 1 ; - indicatorOfParameter = 66 ; - } -#Convective cloud cover -'%' = { - table2Version = 1 ; - indicatorOfParameter = 72 ; - } -#Low cloud cover -'%' = { - table2Version = 1 ; - indicatorOfParameter = 73 ; - } -#Medium cloud cover -'%' = { - table2Version = 1 ; - indicatorOfParameter = 74 ; - } -#High cloud cover -'%' = { - table2Version = 1 ; - indicatorOfParameter = 75 ; - } -#Large scale snow -'kg m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 79 ; - } -#Latent heat flux -'W m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 121 ; - } -#Sensible heat flux -'W m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 122 ; - } -#Boundary layer dissipation -'W m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 123 ; - } -#Convective snow -'kg m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 78 ; - } -#Cloud water -'kg m**-2' = { - table2Version = 1 ; - indicatorOfParameter = 76 ; - } -#Forecast albedo -'%' = { - table2Version = 1 ; - indicatorOfParameter = 84 ; - } -#Pressure tendency -'Pa s**-1' = { - table2Version = 1 ; - indicatorOfParameter = 3 ; - } -#ICAO Standard Atmosphere reference height -'m' = { - table2Version = 1 ; - indicatorOfParameter = 5 ; - } -#Geometrical height -'m' = { - table2Version = 1 ; - indicatorOfParameter = 8 ; + table2Version = 2 ; + indicatorOfParameter = 15 ; } -#Standard deviation of height -'m' = { +#Maximum temperature +'K' = { table2Version = 1 ; - indicatorOfParameter = 9 ; + indicatorOfParameter = 15 ; } -#Pseudo-adiabatic potential temperature +#Minimum temperature 'K' = { - table2Version = 1 ; - indicatorOfParameter = 14 ; + table2Version = 3 ; + indicatorOfParameter = 16 ; } -#Maximum temperature +#Minimum temperature 'K' = { - table2Version = 1 ; - indicatorOfParameter = 15 ; + table2Version = 2 ; + indicatorOfParameter = 16 ; } #Minimum temperature 'K' = { @@ -1640,417 +804,1253 @@ indicatorOfParameter = 16 ; } #Dew point temperature +'K' = { + table2Version = 3 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 17 ; + } +#Dew point temperature 'K' = { table2Version = 1 ; indicatorOfParameter = 17 ; } #Dew point depression (or deficit) +'K' = { + table2Version = 3 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) +'K' = { + table2Version = 2 ; + indicatorOfParameter = 18 ; + } +#Dew point depression (or deficit) 'K' = { table2Version = 1 ; indicatorOfParameter = 18 ; } #Lapse rate +'K m**-1' = { + table2Version = 3 ; + indicatorOfParameter = 19 ; + } +#Lapse rate +'K m**-1' = { + table2Version = 2 ; + indicatorOfParameter = 19 ; + } +#Lapse rate 'K m**-1' = { table2Version = 1 ; indicatorOfParameter = 19 ; } #Visibility +'m' = { + table2Version = 3 ; + indicatorOfParameter = 20 ; + } +#Visibility +'m' = { + table2Version = 2 ; + indicatorOfParameter = 20 ; + } +#Visibility 'm' = { table2Version = 1 ; indicatorOfParameter = 20 ; } #Radar spectra (1) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 21 ; + } +#Radar spectra (1) '~' = { table2Version = 1 ; indicatorOfParameter = 21 ; } #Radar spectra (2) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 22 ; + } +#Radar spectra (2) '~' = { table2Version = 1 ; indicatorOfParameter = 22 ; } #Radar spectra (3) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 23 ; + } +#Radar spectra (3) '~' = { table2Version = 1 ; indicatorOfParameter = 23 ; } #Parcel lifted index (to 500 hPa) +'K' = { + table2Version = 3 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) +'K' = { + table2Version = 2 ; + indicatorOfParameter = 24 ; + } +#Parcel lifted index (to 500 hPa) 'K' = { table2Version = 1 ; indicatorOfParameter = 24 ; } #Temperature anomaly +'K' = { + table2Version = 3 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly +'K' = { + table2Version = 2 ; + indicatorOfParameter = 25 ; + } +#Temperature anomaly 'K' = { table2Version = 1 ; indicatorOfParameter = 25 ; } #Pressure anomaly +'Pa' = { + table2Version = 3 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 26 ; + } +#Pressure anomaly 'Pa' = { table2Version = 1 ; indicatorOfParameter = 26 ; } #Geopotential height anomaly +'gpm' = { + table2Version = 3 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly +'gpm' = { + table2Version = 2 ; + indicatorOfParameter = 27 ; + } +#Geopotential height anomaly 'gpm' = { table2Version = 1 ; indicatorOfParameter = 27 ; } #Wave spectra (1) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 28 ; + } +#Wave spectra (1) '~' = { table2Version = 1 ; indicatorOfParameter = 28 ; } #Wave spectra (2) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 29 ; + } +#Wave spectra (2) '~' = { table2Version = 1 ; indicatorOfParameter = 29 ; } #Wave spectra (3) +'~' = { + table2Version = 3 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) +'~' = { + table2Version = 2 ; + indicatorOfParameter = 30 ; + } +#Wave spectra (3) '~' = { table2Version = 1 ; indicatorOfParameter = 30 ; } #Wind direction +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 31 ; + } +#Wind direction +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 31 ; + } +#Wind direction 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 31 ; } #Montgomery stream Function +'m**2 s**-2' = { + table2Version = 3 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function +'m**2 s**-2' = { + table2Version = 2 ; + indicatorOfParameter = 37 ; + } +#Montgomery stream Function 'm**2 s**-2' = { table2Version = 1 ; indicatorOfParameter = 37 ; } #Sigma coordinate vertical velocity +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 38 ; + } +#Sigma coordinate vertical velocity 's**-1' = { table2Version = 1 ; indicatorOfParameter = 38 ; } #Absolute vorticity +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 41 ; + } +#Absolute vorticity 's**-1' = { table2Version = 1 ; indicatorOfParameter = 41 ; } #Absolute divergence +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 42 ; + } +#Absolute divergence 's**-1' = { table2Version = 1 ; indicatorOfParameter = 42 ; } #Vertical u-component shear +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 45 ; + } +#Vertical u-component shear 's**-1' = { table2Version = 1 ; indicatorOfParameter = 45 ; } #Vertical v-component shear +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 46 ; + } +#Vertical v-component shear 's**-1' = { table2Version = 1 ; indicatorOfParameter = 46 ; } #Direction of current +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 47 ; + } +#Direction of current +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 47 ; + } +#Direction of current 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 47 ; } #Speed of current +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 48 ; + } +#Speed of current +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 48 ; + } +#Speed of current 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 48 ; } #U-component of current +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 49 ; + } +#U-component of current +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 49 ; + } +#U-component of current 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 49 ; } #V-component of current +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 50 ; + } +#V-component of current +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 50 ; + } +#V-component of current 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 50 ; } #Humidity mixing ratio +'kg kg**-1' = { + table2Version = 3 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio +'kg kg**-1' = { + table2Version = 2 ; + indicatorOfParameter = 53 ; + } +#Humidity mixing ratio 'kg kg**-1' = { table2Version = 1 ; indicatorOfParameter = 53 ; } #Precipitable water +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 54 ; + } +#Precipitable water +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 54 ; + } +#Precipitable water 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 54 ; } #Vapour pressure +'Pa' = { + table2Version = 3 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 55 ; + } +#Vapour pressure 'Pa' = { table2Version = 1 ; indicatorOfParameter = 55 ; } #Saturation deficit +'Pa' = { + table2Version = 3 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit +'Pa' = { + table2Version = 2 ; + indicatorOfParameter = 56 ; + } +#Saturation deficit 'Pa' = { table2Version = 1 ; indicatorOfParameter = 56 ; } #Precipitation rate +'kg m**-2 s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate +'kg m**-2 s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 59 ; + } +#Precipitation rate 'kg m**-2 s**-1' = { table2Version = 1 ; indicatorOfParameter = 59 ; } #Thunderstorm probability +'%' = { + table2Version = 3 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability +'%' = { + table2Version = 2 ; + indicatorOfParameter = 60 ; + } +#Thunderstorm probability '%' = { table2Version = 1 ; indicatorOfParameter = 60 ; } #Convective precipitation (water) +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 63 ; + } +#Convective precipitation (water) 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 63 ; } #Snow fall rate water equivalent +'kg m**-2 s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent +'kg m**-2 s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 64 ; + } +#Snow fall rate water equivalent 'kg m**-2 s**-1' = { table2Version = 1 ; indicatorOfParameter = 64 ; } #Mixed layer depth +'m' = { + table2Version = 3 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth +'m' = { + table2Version = 2 ; + indicatorOfParameter = 67 ; + } +#Mixed layer depth 'm' = { table2Version = 1 ; indicatorOfParameter = 67 ; } #Transient thermocline depth +'m' = { + table2Version = 3 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth +'m' = { + table2Version = 2 ; + indicatorOfParameter = 68 ; + } +#Transient thermocline depth 'm' = { table2Version = 1 ; indicatorOfParameter = 68 ; } #Main thermocline depth +'m' = { + table2Version = 3 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth +'m' = { + table2Version = 2 ; + indicatorOfParameter = 69 ; + } +#Main thermocline depth 'm' = { table2Version = 1 ; indicatorOfParameter = 69 ; } #Main thermocline anomaly +'m' = { + table2Version = 3 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly +'m' = { + table2Version = 2 ; + indicatorOfParameter = 70 ; + } +#Main thermocline anomaly 'm' = { table2Version = 1 ; indicatorOfParameter = 70 ; } #Best lifted index (to 500 hPa) +'K' = { + table2Version = 3 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) +'K' = { + table2Version = 2 ; + indicatorOfParameter = 77 ; + } +#Best lifted index (to 500 hPa) 'K' = { table2Version = 1 ; indicatorOfParameter = 77 ; } #Water temperature +'K' = { + table2Version = 3 ; + indicatorOfParameter = 80 ; + } +#Water temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 80 ; + } +#Water temperature 'K' = { table2Version = 1 ; indicatorOfParameter = 80 ; } #Deviation of sea-level from mean +'m' = { + table2Version = 3 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean +'m' = { + table2Version = 2 ; + indicatorOfParameter = 82 ; + } +#Deviation of sea-level from mean 'm' = { table2Version = 1 ; indicatorOfParameter = 82 ; } #Soil moisture content +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture content 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Salinity +'kg kg**-1' = { + table2Version = 3 ; + indicatorOfParameter = 88 ; + } +#Salinity +'kg kg**-1' = { + table2Version = 2 ; + indicatorOfParameter = 88 ; + } +#Salinity 'kg kg**-1' = { table2Version = 1 ; indicatorOfParameter = 88 ; } #Density +'kg m**-3' = { + table2Version = 3 ; + indicatorOfParameter = 89 ; + } +#Density +'kg m**-3' = { + table2Version = 2 ; + indicatorOfParameter = 89 ; + } +#Density 'kg m**-3' = { table2Version = 1 ; indicatorOfParameter = 89 ; } #Ice cover (1=ice, 0=no ice) +'(0 - 1)' = { + table2Version = 3 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) +'(0 - 1)' = { + table2Version = 2 ; + indicatorOfParameter = 91 ; + } +#Ice cover (1=ice, 0=no ice) '(0 - 1)' = { table2Version = 1 ; indicatorOfParameter = 91 ; } #Ice thickness +'m' = { + table2Version = 3 ; + indicatorOfParameter = 92 ; + } +#Ice thickness +'m' = { + table2Version = 2 ; + indicatorOfParameter = 92 ; + } +#Ice thickness 'm' = { table2Version = 1 ; indicatorOfParameter = 92 ; } #Direction of ice drift +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 93 ; + } +#Direction of ice drift 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 93 ; } #Speed of ice drift +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 94 ; + } +#Speed of ice drift 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 94 ; } #U-component of ice drift +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 95 ; + } +#U-component of ice drift 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 95 ; } #V-component of ice drift +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 96 ; + } +#V-component of ice drift 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 96 ; } #Ice growth rate +'m s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate +'m s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 97 ; + } +#Ice growth rate 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 97 ; } #Ice divergence +'s**-1' = { + table2Version = 3 ; + indicatorOfParameter = 98 ; + } +#Ice divergence +'s**-1' = { + table2Version = 2 ; + indicatorOfParameter = 98 ; + } +#Ice divergence 's**-1' = { table2Version = 1 ; indicatorOfParameter = 98 ; } #Snowmelt +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 99 ; + } +#Snowmelt +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 99 ; + } +#Snowmelt 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 99 ; } #Signific.height,combined wind waves+swell +'m' = { + table2Version = 3 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell +'m' = { + table2Version = 2 ; + indicatorOfParameter = 100 ; + } +#Signific.height,combined wind waves+swell 'm' = { table2Version = 1 ; indicatorOfParameter = 100 ; } #Mean direction of wind waves +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 101 ; + } +#Mean direction of wind waves 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 101 ; } #Significant height of wind waves +'m' = { + table2Version = 3 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves +'m' = { + table2Version = 2 ; + indicatorOfParameter = 102 ; + } +#Significant height of wind waves 'm' = { table2Version = 1 ; indicatorOfParameter = 102 ; } #Mean period of wind waves +'s' = { + table2Version = 3 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves +'s' = { + table2Version = 2 ; + indicatorOfParameter = 103 ; + } +#Mean period of wind waves 's' = { table2Version = 1 ; indicatorOfParameter = 103 ; } #Direction of swell waves +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 104 ; + } +#Direction of swell waves 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 104 ; } #Significant height of swell waves +'m' = { + table2Version = 3 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves +'m' = { + table2Version = 2 ; + indicatorOfParameter = 105 ; + } +#Significant height of swell waves 'm' = { table2Version = 1 ; indicatorOfParameter = 105 ; } #Mean period of swell waves +'s' = { + table2Version = 3 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves +'s' = { + table2Version = 2 ; + indicatorOfParameter = 106 ; + } +#Mean period of swell waves 's' = { table2Version = 1 ; indicatorOfParameter = 106 ; } #Primary wave direction +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 107 ; + } +#Primary wave direction 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 107 ; } #Primary wave mean period +'s' = { + table2Version = 3 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period +'s' = { + table2Version = 2 ; + indicatorOfParameter = 108 ; + } +#Primary wave mean period 's' = { table2Version = 1 ; indicatorOfParameter = 108 ; } #Secondary wave direction +'Degree true' = { + table2Version = 3 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction +'Degree true' = { + table2Version = 2 ; + indicatorOfParameter = 109 ; + } +#Secondary wave direction 'Degree true' = { table2Version = 1 ; indicatorOfParameter = 109 ; } #Secondary wave mean period +'s' = { + table2Version = 3 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period +'s' = { + table2Version = 2 ; + indicatorOfParameter = 110 ; + } +#Secondary wave mean period 's' = { table2Version = 1 ; indicatorOfParameter = 110 ; } #Net short-wave radiation flux (surface) +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 111 ; + } +#Net short-wave radiation flux (surface) 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 111 ; } #Net long-wave radiation flux (surface) +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 112 ; + } +#Net long-wave radiation flux (surface) 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 112 ; } #Net short-wave radiation flux(atmosph.top) +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 113 ; + } +#Net short-wave radiation flux(atmosph.top) 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 113 ; } #Net long-wave radiation flux(atmosph.top) +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 114 ; + } +#Net long-wave radiation flux(atmosph.top) 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 114 ; } #Long wave radiation flux +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 115 ; + } +#Long wave radiation flux 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 115 ; } #Short wave radiation flux +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 116 ; + } +#Short wave radiation flux 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 116 ; } #Global radiation flux +'W m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux +'W m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 117 ; + } +#Global radiation flux 'W m**-2' = { table2Version = 1 ; indicatorOfParameter = 117 ; } #Radiance (with respect to wave number) +'W m**-1 sr**-1' = { + table2Version = 3 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) +'W m**-1 sr**-1' = { + table2Version = 2 ; + indicatorOfParameter = 119 ; + } +#Radiance (with respect to wave number) 'W m**-1 sr**-1' = { table2Version = 1 ; indicatorOfParameter = 119 ; } #Radiance (with respect to wave length) +'W m**-3 sr**-1' = { + table2Version = 3 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) +'W m**-3 sr**-1' = { + table2Version = 2 ; + indicatorOfParameter = 120 ; + } +#Radiance (with respect to wave length) 'W m**-3 sr**-1' = { table2Version = 1 ; indicatorOfParameter = 120 ; } #Momentum flux, u-component +'N m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component +'N m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 124 ; + } +#Momentum flux, u-component 'N m**-2' = { table2Version = 1 ; indicatorOfParameter = 124 ; } #Momentum flux, v-component +'N m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component +'N m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 125 ; + } +#Momentum flux, v-component 'N m**-2' = { table2Version = 1 ; indicatorOfParameter = 125 ; } #Wind mixing energy +'J' = { + table2Version = 3 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy +'J' = { + table2Version = 2 ; + indicatorOfParameter = 126 ; + } +#Wind mixing energy 'J' = { table2Version = 1 ; indicatorOfParameter = 126 ; } #Image data +'~' = { + table2Version = 3 ; + indicatorOfParameter = 127 ; + } +#Image data +'~' = { + table2Version = 2 ; + indicatorOfParameter = 127 ; + } +#Image data '~' = { table2Version = 1 ; indicatorOfParameter = 127 ; } #Percentage of vegetation +'%' = { + table2Version = 3 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation +'%' = { + table2Version = 2 ; + indicatorOfParameter = 87 ; + } +#Percentage of vegetation '%' = { table2Version = 1 ; indicatorOfParameter = 87 ; } #Orography +'m' = { + table2Version = 3 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography +'m' = { + table2Version = 2 ; + indicatorOfParameter = 7 ; + indicatorOfTypeOfLevel = 1 ; + } +#Orography 'm' = { table2Version = 1 ; indicatorOfParameter = 7 ; indicatorOfTypeOfLevel = 1 ; } #Soil moisture +'kg m**-3' = { + table2Version = 3 ; + indicatorOfParameter = 86 ; + } +#Soil moisture +'kg m**-3' = { + table2Version = 2 ; + indicatorOfParameter = 86 ; + } +#Soil moisture 'kg m**-3' = { table2Version = 1 ; indicatorOfParameter = 86 ; } #Soil temperature +'K' = { + table2Version = 3 ; + indicatorOfParameter = 85 ; + } +#Soil temperature +'K' = { + table2Version = 2 ; + indicatorOfParameter = 85 ; + } +#Soil temperature 'K' = { table2Version = 1 ; indicatorOfParameter = 85 ; } #Snowfall water equivalent +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 65 ; + } +#Snowfall water equivalent 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 65 ; } #Total Cloud Cover +'%' = { + table2Version = 3 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover +'%' = { + table2Version = 2 ; + indicatorOfParameter = 71 ; + } +#Total Cloud Cover '%' = { table2Version = 1 ; indicatorOfParameter = 71 ; } #Total Precipitation +'kg m**-2' = { + table2Version = 3 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation +'kg m**-2' = { + table2Version = 2 ; + indicatorOfParameter = 61 ; + indicatorOfTypeOfLevel = 1 ; + level = 0 ; + } +#Total Precipitation 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 61 ; diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 7e769ee34..3ff5e57ac 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -6,6 +6,49 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'geopotential' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'air_temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'eastward_wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'northward_wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'specific_humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'surface_air_pressure' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'lagrangian_tendency_of_air_pressure' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } #Total column vertically-integrated water vapour 'lwe_thickness_of_atmosphere_mass_content_of_water_vapor' = { discipline = 0 ; @@ -14,6 +57,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'atmosphere_relative_vorticity' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation 'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { discipline = 0 ; @@ -21,6 +70,47 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'surface_upward_sensible_heat_flux' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'surface_upward_latent_heat_flux' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Mean sea level pressure +'air_pressure_at_mean_sea_level' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'divergence_of_wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'geopotential_height' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'relative_humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Surface short-wave (solar) radiation downwards 'surface_downwelling_shortwave_flux_in_air' = { discipline = 0 ; @@ -29,6 +119,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'land_binary_mask' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) 'surface_roughness_length' = { discipline = 2 ; @@ -37,6 +134,22 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Surface net short-wave (solar) radiation +'surface_net_downward_shortwave_flux' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'surface_net_upward_longwave_flux' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation 'toa_net_upward_shortwave_flux' = { discipline = 0 ; @@ -45,6 +158,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'toa_outgoing_longwave_flux' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress 'surface_downward_eastward_stress' = { discipline = 0 ; @@ -150,6 +271,12 @@ constituentType = 11 ; is_chemical = 1 ; } +#Forecast albedo +'surface_albedo' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; + } #Sea surface practical salinity 'sea_surface_salinity' = { discipline = 10 ; @@ -210,6 +337,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Convective precipitation (water) +'lwe_thickness_of_convective_precipitation_amount' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; + } #Eastward sea water velocity 'eastward_sea_water_velocity' = { discipline = 10 ; @@ -255,137 +388,4 @@ parameterNumber = 2 ; constituentType = 0 ; is_chemical = 1 ; - } -#Geopotential -'geopotential' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Temperature -'air_temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#U component of wind -'eastward_wind' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 2 ; - } -#V component of wind -'northward_wind' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 3 ; - } -#Specific humidity -'specific_humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; - } -#Surface pressure -'surface_air_pressure' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - } -#Vertical velocity -'lagrangian_tendency_of_air_pressure' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - } -#Vorticity (relative) -'atmosphere_relative_vorticity' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 12 ; - } -#Surface sensible heat flux -'surface_upward_sensible_heat_flux' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Surface latent heat flux -'surface_upward_latent_heat_flux' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Mean sea level pressure -'air_pressure_at_mean_sea_level' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } -#Divergence -'divergence_of_wind' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - } -#Geopotential height -'geopotential_height' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } -#Relative humidity -'relative_humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - } -#Land-sea mask -'land_binary_mask' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - } -#Surface net short-wave (solar) radiation -'surface_net_downward_shortwave_flux' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Surface net long-wave (thermal) radiation -'surface_net_upward_longwave_flux' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Top net long-wave (thermal) radiation -'toa_outgoing_longwave_flux' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; - } -#Forecast albedo -'surface_albedo' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; - } -#Convective precipitation (water) -'lwe_thickness_of_convective_precipitation_amount' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; } diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 4fc68355c..bf37ecbb7 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -23,6 +23,30 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; } +#Total precipitation of at least 10 mm +'tpg10' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 10 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Total precipitation of at least 20 mm +'tpg20' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } #Total precipitation of at least 40 mm 'tpg40' = { discipline = 0 ; @@ -107,6 +131,24 @@ scaleFactorOfLowerLimit = -2 ; probabilityType = 3 ; } +#Stream function +'strf' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + } +#Velocity potential +'vp' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + } +#Potential temperature +'pt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } #Wind speed 'ws' = { discipline = 0 ; @@ -230,6 +272,12 @@ parameterCategory = 2 ; parameterNumber = 6 ; } +#Pressure +'pres' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + } #Downward UV radiation at the surface 'uvb' = { discipline = 0 ; @@ -246,6 +294,20 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Convective available potential energy +'cape' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Potential vorticity +'pv' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + } #Leaf area index, low vegetation 'lai_lv' = { discipline = 2 ; @@ -299,6 +361,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 2 ; + lengthOfTimeRange = 6 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 3 ; + lengthOfTimeRange = 6 ; + } #Surface emissivity 'emis' = { discipline = 2 ; @@ -306,6 +392,57 @@ parameterNumber = 62 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'z' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'q' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'sp' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'w' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Total column water +'tcw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column vertically-integrated water vapour 'tcwv' = { discipline = 0 ; @@ -314,6 +451,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'vo' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation 'bld' = { discipline = 0 ; @@ -321,6 +464,22 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'sshf' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'slhf' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Charnock 'chnk' = { discipline = 10 ; @@ -343,6 +502,31 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Mean sea level pressure +'msl' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'d' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'gh' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'r' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Boundary layer height 'blh' = { discipline = 0 ; @@ -373,6 +557,42 @@ parameterCategory = 3 ; parameterNumber = 22 ; } +#10 metre U wind component +'u10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#10 metre V wind component +'v10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre temperature +'t2m' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre dewpoint temperature +'d2m' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface short-wave (solar) radiation downwards 'ssrd' = { discipline = 0 ; @@ -381,6 +601,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'lsm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) 'sr' = { discipline = 2 ; @@ -397,6 +624,22 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface net short-wave (solar) radiation +'ssr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'str' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation 'tsr' = { discipline = 0 ; @@ -405,6 +648,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'ttr' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress 'ewss' = { discipline = 0 ; @@ -421,10 +672,24 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Eastward gravity wave surface stress -'lgws' = { +#Sunshine duration +'sund' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 6 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Brightness temperature +'btmp' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 4 ; + } +#Eastward gravity wave surface stress +'lgws' = { + discipline = 0 ; + parameterCategory = 3 ; parameterNumber = 16 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; @@ -470,6 +735,15 @@ parameterCategory = 14 ; parameterNumber = 1 ; } +#10 metre wind speed +'si10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Top net short-wave (solar) radiation, clear sky 'tsrc' = { discipline = 0 ; @@ -555,6 +829,13 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + } #Temperature of snow layer 'tsn' = { discipline = 2 ; @@ -3455,7 +3736,7 @@ typeOfFirstFixedSurface = 20 ; } #Roof temperature -'rflt' = { +'rft' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; @@ -3469,7 +3750,7 @@ typeOfFirstFixedSurface = 186 ; } #Road temperature -'rdlt' = { +'rdt' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; @@ -4618,6110 +4899,5799 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Total snowfall -'asnow' = { +#Latent heat net flux +'lhtfl' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Total snow precipitation -'tsnowp' = { +#Heat index +'heatx' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Total column integrated ozone -'tcioz' = { +#Wind chill factor +'wcf' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#2 metre relative humidity -'r2' = { +#Minimum dew point depression +'mindpd' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Apparent temperature -'aptmp' = { +#Snow phase change heat flux +'snohf' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 21 ; + parameterNumber = 16 ; } -#Haines Index -'hindex' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Vapor pressure +'vapp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Cloud cover -'ccl' = { +#Large scale precipitation (non-convective) +'ncpcp' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Evaporation -'eva' = { +#Snowfall rate water equivalent +'srweq' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 12 ; } -#10 metre wind direction -'wdir10' = { +#Convective snow +'snoc' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 1 ; + parameterNumber = 14 ; } -#Direct short wave radiation flux -'dirswrf' = { +#Large scale snow +'snol' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Diffuse short wave radiation flux -'difswrf' = { +#Snow age +'snoag' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 14 ; + parameterCategory = 1 ; + parameterNumber = 17 ; } -#Evaporation in the last 6 hours -'eva06' = { +#Absolute humidity +'absh' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; + parameterNumber = 18 ; } -#Evaporation in the last 24 hours -'eva24' = { +#Precipitation type +'ptype' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + parameterNumber = 19 ; } -#Fraction of snow cover -'fscov' = { +#Integrated liquid water +'iliqw' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 121 ; + parameterNumber = 20 ; } -#Clear air turbulence (CAT) -'cat' = { +#Condensate +'tcond' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 29 ; + parameterCategory = 1 ; + parameterNumber = 21 ; } -#Mountain wave turbulence (eddy dissipation rate) -'mwt' = { +#Cloud mixing ratio +'clwmr' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 28 ; + parameterCategory = 1 ; + parameterNumber = 22 ; } -#Specific rain water content (convective) -'crwc_conv' = { +#Ice water mixing ratio +'icmr' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 144 ; + parameterNumber = 23 ; } -#Specific snow water content (convective) -'cswc_conv' = { +#Rain mixing ratio +'rwmr' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 145 ; + parameterNumber = 24 ; } -#Glacier mask -'glm' = { - discipline = 2 ; - parameterCategory = 5 ; - parameterNumber = 0 ; +#Snow mixing ratio +'snmr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 25 ; } -#Precipitation type (most severe) in the last 1 hour -'ptype_sev1h' = { +#Horizontal moisture convergence +'mconv' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 1 ; + parameterNumber = 26 ; } -#Precipitation type (most severe) in the last 3 hours -'ptype_sev3h' = { +#Maximum relative humidity +'maxrh' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 3 ; + parameterNumber = 27 ; } -#Precipitation type (most frequent) in the last 1 hour -'ptype_freq1h' = { +#Maximum absolute humidity +'maxah' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 1 ; + parameterNumber = 28 ; } -#Precipitation type (most frequent) in the last 3 hours -'ptype_freq3h' = { +#Total snowfall +'asnow' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 3 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Precipitation type (most severe) in the last 6 hours -'ptype_sev6h' = { +#Precipitable water category +'pwcat' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 6 ; + parameterNumber = 30 ; } -#Precipitation type (most frequent) in the last 6 hours -'ptype_freq6h' = { +#Hail +'hail' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 6 ; + parameterNumber = 31 ; } -#Soil temperature -'sot' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - } -#Downward short-wave radiation flux, clear sky -'dswrf_cs' = { +#Graupel (snow pellets) +'grle' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 52 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Upward short-wave radiation flux, clear sky -'uswrf_cs' = { +#Categorical rain +'crain' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; + parameterCategory = 1 ; + parameterNumber = 33 ; } -#Downward long-wave radiation flux, clear sky -'dlwrf_cs' = { +#Categorical freezing rain +'cfrzr' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 8 ; - } -#Soil heat flux -'sohf' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 26 ; - } -#Percolation rate -'percr' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Soil depth -'sod' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 27 ; + parameterCategory = 1 ; + parameterNumber = 34 ; } -#Soil moisture -'som' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; +#Categorical ice pellets +'cicep' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 35 ; } -#Accumulated surface upward short-wave radiation flux, clear sky -'auswrf_cs' = { +#Categorical snow +'csnow' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 1 ; + parameterNumber = 36 ; } -#Percolation -'perc' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 177 ; - typeOfStatisticalProcessing = 1 ; +#Convective precipitation rate +'cprat' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 37 ; } -#Evapotranspiration rate -'et' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; +#Horizontal moisture divergence +'mdiv' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 38 ; } -#Time-mean evapotranspiration rate in the last 24h -'avg_et24' = { - discipline = 2 ; - parameterCategory = 0 ; +#Percent frozen precipitation +'cpofp' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } -#Potential evapotranspiration rate -'pet' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - } -#Time-integrated potential evapotranspiration rate in the last 24h -'acc_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; +#Potential evaporation +'pevap' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Time-mean potential evapotranspiration rate in the last 24h -'avg_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Snow cover +'snowc' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 42 ; } -#Time-mean volumetric soil moisture -'avg_swv24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Rain fraction of total cloud water +'frain' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 43 ; } -#Water runoff and drainage rate -'rod' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; +#Rime factor +'rime' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 44 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'acc_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; +#Total column integrated rain +'tcolr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 45 ; } -#Time-mean water runoff and drainage rate in the last 24h -'avg_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Total column integrated snow +'tcols' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 46 ; } -#Time-mean snow depth water equivalent -'avg_sd24' = { +#Large scale water precipitation (non-convective) +'lswp' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterNumber = 47 ; } -#Time-mean skin temperature -'avg_skt24' = { +#Convective water precipitation +'cwp' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterCategory = 1 ; + parameterNumber = 48 ; } -#Snow melt rate -'smr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; +#Total water precipitation +'twatp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 49 ; } -#Time-integrated snow melt rate in the last 24h -'acc_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; +#Total snow precipitation +'tsnowp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Cloudy brightness temperature -'clbt' = { - discipline = 3 ; +#Total column water (Vertically integrated total water (vapour + cloud water/ice)) +'tcwat' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 14 ; + parameterNumber = 51 ; } -#Clear-sky brightness temperature -'csbt' = { - discipline = 3 ; +#Total precipitation rate +'tprate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 15 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; } -#Cloudy reflectance -'cdrfl' = { - discipline = 3 ; +#Total snowfall rate water equivalent +'tsrwe' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 31 ; + parameterNumber = 53 ; } -#Clear reflectance -'crrfl' = { - discipline = 3 ; +#Large scale precipitation rate +'lsprate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 32 ; + parameterNumber = 54 ; } -#Scaled radiance -'p260530' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Total snowfall rate +'tsrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; } -#Scaled albedo -'p260531' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Convective snowfall rate +'csrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 58 ; } -#Scaled brightness temperature -'p260532' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Large scale snowfall rate +'lssrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 59 ; } -#Scaled precipitable water -'p260533' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 3 ; +#Water equivalent of accumulated snow depth (deprecated) +'sdwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Scaled lifted index -'p260534' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Rain precipitation rate +'rprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 65 ; } -#Scaled cloud top pressure -'p260535' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 5 ; +#Snow precipitation rate +'sprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; } -#Scaled skin temperature -'p260536' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Freezing rain precipitation rate +'fprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 67 ; } -#Cloud mask -'p260537' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Ice pellets precipitation rate +'iprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 68 ; } -#Pixel scene type -'p260538' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 8 ; +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; } -#Fire detection indicator -'p260539' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 9 ; +#Wind speed (gust) +'gust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; } -#Forest fire weather index (as defined by the Canadian Forest Service) -'fwinx' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 5 ; +#u-component of wind (gust) +'ugust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; } -#Fine fuel moisture code (as defined by the Canadian Forest Service) -'ffmcode' = { - discipline = 2 ; +#v-component of wind (gust) +'vgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + } +#Vertical speed shear +'vwsh' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + } +#Horizontal momentum flux +'mflx' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 26 ; + } +#U-component storm motion +'ustm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 27 ; + } +#V-component storm motion +'vstm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 28 ; + } +#Drag coefficient +'cd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + } +#Frictional velocity +'fricv' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 30 ; + } +#Pressure reduced to MSL +'prmsl' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Altimeter setting +'alts' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + } +#Thickness +'thick' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 12 ; + } +#Pressure altitude +'presalt' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + } +#Density altitude +'denalt' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + } +#5-wave geopotential height +'wavh5' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + } +#Zonal flux of gravity wave stress +'u-gwd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + } +#Meridional flux of gravity wave stress +'v-gwd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + } +#5-wave geopotential height anomaly +'wava5' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + } +#Net short-wave radiation flux (top of atmosphere) +'nswrt' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 6 ; + parameterNumber = 1 ; } -#Duff moisture code (as defined by the Canadian Forest Service) -'dufmcode' = { - discipline = 2 ; +#Downward short-wave radiation flux +'dswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 7 ; } -#Drought code (as defined by the Canadian Forest Service) -'drtcode' = { - discipline = 2 ; +#Upward short-wave radiation flux +'uswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 8 ; } -#Initial fire spread index (as defined by the Canadian Forest Service) -'infsinx' = { - discipline = 2 ; +#Net short wave radiation flux +'nswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 9 ; } -#Fire buildup index (as defined by the Canadian Forest Service) -'fbupinx' = { - discipline = 2 ; +#Photosynthetically active radiation +'photar' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 10 ; } -#Fire daily severity rating (as defined by the Canadian Forest Service) -'fdsrte' = { - discipline = 2 ; +#Net short-wave radiation flux, clear sky +'nswrfcs' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 11 ; } -#Cloudy radiance (with respect to wave number) -'p260550' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 16 ; +#Downward UV radiation +'dwuvr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 12 ; } -#Clear-sky radiance (with respect to wave number) -'p260551' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#UV index (under clear sky) +'uviucs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 50 ; } -#Wind speed -'p260552' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#UV index +'uvi' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 51 ; } -#Aerosol optical thickness at 0.635 um -'p260553' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; } -#Aerosol optical thickness at 0.810 um -'p260554' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; } -#Aerosol optical thickness at 1.640 um -'p260555' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Downward long-wave radiation flux +'dlwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 3 ; } -#Angstrom coefficient -'p260556' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Upward long-wave radiation flux +'ulwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 4 ; } -#Keetch-Byram drought index -'kbdi' = { - discipline = 2 ; - parameterCategory = 4 ; +#Net long wave radiation flux +'nlwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + } +#Net long-wave radiation flux, clear sky +'nlwrcs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 6 ; + } +#Cloud Ice +'cice' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Cloud water +'cwat' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 6 ; + } +#Cloud amount +'cdca' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 7 ; + } +#Cloud type +'cdct' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 8 ; + } +#Thunderstorm maximum tops +'tmaxt' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 9 ; + } +#Thunderstorm coverage +'thunc' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 10 ; + } +#Cloud top +'cdct' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 12 ; } -#Drought factor (as defined by the Australian forest service) -'drtmrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Ceiling +'ceil' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 13 ; } -#Rate of spread (as defined by the Australian forest service) -'rosmrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Non-convective cloud cover +'cdlyr' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 14 ; } -#Fire danger index (as defined by the Australian forest service) -'fdimrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Cloud work function +'cwork' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 15 ; } -#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'scnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Convective cloud efficiency +'cuefi' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 16 ; } -#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) -'buinfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total condensate +'tcond' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 17 ; } -#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'icnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud water +'tcolw' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 18 ; } -#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'ercnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud ice +'tcoli' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 19 ; } -#Volumetric soil ice -'vsi' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 38 ; +#Total column-integrated condensate +'tcolc' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 20 ; } -#Time integral of total solid precipitation flux -'titspf' = { +#Ice fraction of total condensate +'fice' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 128 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 6 ; + parameterNumber = 21 ; } -#10 metre eastward wind gust since previous post-processing -'efg10' = { +#Cloud ice mixing ratio +'cdcimr' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#10 metre northward wind gust since previous post-processing -'nfg10' = { +#Sunshine +'suns' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#Fog -'fog' = { +#Horizontal extent of cumulonimbus (CB) +'p260120' = { discipline = 0 ; parameterCategory = 6 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 25 ; } -#Time-integrated eastward turbulent surface stress due to orographic form drag -'etssofd' = { +#K index +'kx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 64 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 2 ; } -#Time-integrated northward turbulent surface stress due to orographic form drag -'ntssofd' = { +#KO index +'kox' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 65 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 3 ; } -#Time-integrated eastward turbulent surface stress due to surface roughness -'etsssr' = { +#Total totals index +'totalx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 4 ; } -#Time-integrated northward turbulent surface stress due to surface roughness -'ntsssr' = { +#Sweat index +'sx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 67 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 5 ; } -#Saturation specific humidity with respect to water -'sqw' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 168 ; +#Storm relative helicity +'hlcy' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 8 ; } -#Total column integrated saturation specific humidity with respect to water -'tcsqw' = { +#Energy helicity index +'ehlx' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 169 ; + parameterCategory = 7 ; + parameterNumber = 9 ; + } +#Surface lifted index +'lftx' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 10 ; + } +#Best (4-layer) lifted index +'lftx4' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 11 ; + } +#Aerosol type +'aerot' = { + discipline = 0 ; + parameterCategory = 13 ; + parameterNumber = 0 ; + } +#Total ozone +'tozne' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 0 ; + } +#Total column integrated ozone +'tcioz' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 2 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Universal thermal climate index -'utci' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base spectrum width +'bswid' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 0 ; } -#Mean radiant temperature -'mrt' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base reflectivity +'bref' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 1 ; } -#Fraction of Malaria cases -'mal_cases_frac' = { - discipline = 20 ; - parameterCategory = 1 ; +#Base radial velocity +'brvel' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 2 ; + } +#Vertically-integrated liquid +'veril' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 3 ; + } +#Layer-maximum base reflectivity +'lmaxbr' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 4 ; + } +#Precipitation +'prec' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 5 ; + } +#Air concentration of Caesium 137 +'acces' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 0 ; } -#Malaria circumsporozoite protein ratio -'mal_prot_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of Iodine 131 +'aciod' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 1 ; } -#Plasmodium falciparum entomological inoculation rate -'mal_innoc_rate' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of radioactive pollutant +'acradp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 2 ; } -#Human bite rate by anopheles vectors -'mal_hbite_rate' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Caesium 137 +'gdces' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 3 ; } -#Malaria immunity ratio -'mal_immun_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Iodine 131 +'gdiod' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 4 ; } -#Falciparum parasite ratio -'mal_infect_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of radioactive pollutant +'gdradp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 5 ; } -#Detectable falciparum parasite ratio (after day 10) -'mal_infect_d10_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of caesium pollutant +'tiaccp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 6 ; } -#Anopheles vector to host ratio -'mal_host_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of iodine pollutant +'tiacip' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 7 ; } -#Anopheles vector density -'mal_vect_dens' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of radioactive pollutant +'tiacrp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 8 ; } -#Fraction of malarial vector reproductive habitat -'mal_hab_frac' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 9 ; - } -#Population density -'pop_dens' = { - discipline = 20 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Wet bulb globe temperature -'wbgt' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Globe temperature -'gt' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Humidex -'hmdx' = { - discipline = 20 ; - parameterCategory = 0 ; +#Volcanic ash +'volash' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 4 ; } -#Effective temperature -'efft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing top +'icit' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 5 ; } -#Normal effective temperature -'nefft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing base +'icib' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 6 ; } -#Standard effective temperature -'sefft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing +'ici' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 7 ; } -#Physiological equivalent temperature -'peqt' = { - discipline = 20 ; - parameterCategory = 0 ; +#Turbulence top +'turbt' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 8 ; } -#Saturation water vapour pressure -'swvp' = { +#Turbulence base +'turbb' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 9 ; } -#Wet-bulb potential temperature -'wbpt' = { +#Turbulence +'turb' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 10 ; } -#Sea ice thickness -'sithick' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulent kinetic energy +'tke' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 11 ; } -#Sea ice area fraction -'siconc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Eastward sea ice velocity -'siue' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Planetary boundary layer regime +'pblreg' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 12 ; } -#Northward sea ice velocity -'sivn' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail intensity +'conti' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 13 ; } -#Sea ice albedo -'sialb' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail engine type +'contet' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice surface temperature -'sitemptop' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice growth -'sigrowth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice volume per unit area -'sivol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail top +'contt' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow volume over sea ice per unit area -'snvol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail base +'contb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Vertically averaged sea ice temperature -'vasit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Snow temperature over sea ice -'sntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice temperature at the sea ice and snow interface -'sisntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Underside ice temperature -'usitemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice heat content -'sihc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow heat content over sea ice -'snhc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Snow free albedo +'snfalb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice freeboard thickness -'sifbr' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; } -#Sea ice melt pond fraction -'sipf' = { - discipline = 10 ; - parameterCategory = 2 ; +#Icing +'p260151' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond depth -'sipd' = { - discipline = 10 ; - parameterCategory = 2 ; +#In-cloud turbulence +'p260164' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond volume per unit area -'sipvol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Relative clear air turbulence (RCAT) +'rcat' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice fraction tendency due to parameterization -'bckinsic' = { - discipline = 10 ; - parameterCategory = 2 ; +#Supercooled large droplet probability (see Note 4) +'p260166' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'six' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Arbitrary text string +'var190m0' = { + discipline = 0 ; + parameterCategory = 190 ; + parameterNumber = 0 ; } -#Y-component of sea ice velocity -'siy' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Seconds prior to initial reference time (defined in Section 1) +'tsec' = { + discipline = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea ice temperature -'sit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref +'ffldg' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Sea surface practical salinity -'sos' = { - discipline = 10 ; - parameterCategory = 3 ; +#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) +'ffldro' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Remotely sensed snow cover +'rssc' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Elevation of snow covered terrain +'esct' = { + discipline = 1 ; + parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface temperature -'tos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Snow water equivalent percent of normal +'swepon' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Depth of 14 C isotherm -'t14d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Baseflow-groundwater runoff +'bgrun' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Depth of 17 C isotherm -'t17d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Storm surface runoff +'ssrun' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Depth of 20 C isotherm -'t20d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) +'cppop' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Depth of 26 C isotherm -'t26d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th +'pposp' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Depth of 28 C isotherm -'t28d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Probability of 0.01 inch of precipitation (POP) +'pop' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Barotropic stream function -'stfbarot' = { - discipline = 10 ; - parameterCategory = 191 ; +#Vegetation +'veg' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Surface downward heat flux -'hfds' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Water runoff +'watr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Northward surface stress -'tauvon' = { - discipline = 10 ; - parameterCategory = 3 ; +#Evapotranspiration +'evapt' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Eastward surface stress -'tauuoe' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Model terrain height +'mterh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Y-component of surface stress -'tauvo' = { - discipline = 10 ; - parameterCategory = 3 ; +#Land use +'landu' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of surface stress -'tauuo' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ground heat flux +'gflux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'mlotst010' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Moisture availability +'mstav' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'mlotst030' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Exchange coefficient +'sfexc' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'mlotst125' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Plant canopy surface water +'cnwat' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Ocean mixed layer depth defined by temperature 0.2 C -'mlott02' = { - discipline = 10 ; - parameterCategory = 4 ; +#Blackadar mixing length scale +'bmixl' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Ocean mixed layer depth defined by temperature 0.5 C -'mlott05' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Canopy conductance +'ccond' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Average sea water practical salinity in the upper 300 m -'sc300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Minimal stomatal resistance +'rsmin' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Average sea water practical salinity in the upper 700 m -'sc700m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar parameter in canopy conductance +'rcs' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 18 ; } -#Total column average sea water practical salinity -'scbtm' = { - discipline = 10 ; - parameterCategory = 4 ; +#Temperature parameter in canopy conductance +'rct' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } +#Soil moisture parameter in canopy conductance +'rcsol' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 20 ; + } +#Humidity parameter in canopy conductance +'rcq' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated heat content in the upper 300 m -'hc300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Column-integrated soil water +'cisoilw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 23 ; } -#Vertically-integrated heat content in the upper 700 m -'hc700m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Heat flux +'hflux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 24 ; } -#Total column of heat content -'hcbtm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric soil moisture +'vsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; } -#Sea surface height -'zos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric wilting point +'vwiltm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Steric change in sea surface height -'stheig' = { - discipline = 10 ; +#Number of soil layers in root zone +'rlyrs' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 6 ; } -#Halosteric change in sea surface height -'hstheig' = { - discipline = 10 ; +#Liquid volumetric soil moisture (non-frozen) +'liqvsm' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Thermosteric change in sea surface height -'tstheig' = { - discipline = 10 ; +#Volumetric transpiration stress-onset (soil moisture) +'voltso' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 11 ; } -#Thermocline depth -'thcline' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Transpiration stress-onset (soil moisture) +'transo' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Bottom pressure equivalent height -'btp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Net surface upward water flux -'swfup' = { - discipline = 10 ; +#Volumetric direct evaporation cease (soil moisture) +'voldec' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux into sea water (from rivers) -'fw2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Virtual salt flux into sea water -'vsf2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Heat flux correction -'hfcorr' = { - discipline = 10 ; +#Direct evaporation cease (soil moisture) +'direc' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux correction -'fwcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Virtual salt flux correction -'vsfcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Turbocline depth (kz=5e-4) -'turbocl' = { - discipline = 10 ; - parameterCategory = 4 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of surface sea water velocity -'svy' = { - discipline = 10 ; +#Soil porosity +'soilp' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 15 ; } -#X-component of surface sea water velocity -'svx' = { - discipline = 10 ; +#Volumetric saturation of soil moisture +'vsosm' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Northward surface sea water velocity -'svn' = { - discipline = 10 ; +#Saturation of soil moisture +'satosm' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 17 ; } -#Eastward surface sea water velocity -'sve' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated precipitation +'estp' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Heat Content surface to 26C isotherm -'hct26' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; +#Instantaneous rain rate +'irrate' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Sea surface height tendency due to parameterization -'bckineta' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud top height +'ctoph' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Sea surface height with inverse barometer correction -'zosib' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; +#Cloud top height quality indicator +'ctophqi' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Average sea water potential temperature in the upper 300m -'pt300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Estimated u component of wind +'estu' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Sea surface salinity -'sss' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated v component of wind +'estv' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Vertically integrated sea water practical salinity in the upper 300 m -'sc300v' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Number of pixels used +'npixu' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 6 ; } -#Vertically integrated sea water practical salinity in the upper 700 m -'sc700v' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar zenith angle +'solza' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Total column vertically integrated sea water practical salinity -'scbtv' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea water practical salinity -'so' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Relative azimuth angle +'raza' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 8 ; } -#Sea water potential temperature -'thetao' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.6 micron channel +'rfl06' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Sea water sigma theta -'sigmat' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.8 micron channel +'rfl08' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Y-component of sea water velocity -'vo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 1.6 micron channel +'rfl16' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 11 ; } -#X-component of sea water velocity -'uo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 3.9 micron channel +'rfl39' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 12 ; } -#Northward sea water velocity -'von' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Atmospheric divergence +'atmdiv' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Eastward sea water velocity -'uoe' = { +#Direction of wind waves +'wvdir' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Upward sea water velocity -'wo' = { +#Primary wave direction +'dirpw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Sea water potential temperature tendency due to newtonian relaxation -'thetaodmp' = { +#Primary wave mean period +'perpw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Sea water salinity tendency due to newtonian relaxation -'sodmp' = { +#Secondary wave mean period +'persw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Sea water temperature tendency due to parameterization -'bckint' = { +#Current direction +'dirc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Sea water salinity tendency due to parameterization -'bckins' = { +#Current speed +'spc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Eastward sea water velocity tendency due to parameterization -'bckine' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Geometric vertical velocity +'wz' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 9 ; } -#Northward sea water velocity tendency due to parameterization -'bckinn' = { +#Seconds prior to initial reference time (defined in Section 1) +'tsec' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea water temperature tendency due to direct bias correction -'tdbiascorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#2 metre relative humidity +'r2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Sea water salinity tendency due to direct bias correction -'sdbiascorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Apparent temperature +'aptmp' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Sea water salinity -'salo' = { - discipline = 10 ; +#Haines Index +'hindex' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterNumber = 2 ; } -#Net short wave radiation rate at sea surface -'ssr_sea' = { +#Cloud cover +'ccl' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 6 ; + parameterNumber = 22 ; } -#Wind stress at sea surface -'wst_sea' = { +#Evaporation +'eva' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Wind speed at 10m above sea surface -'ws10_sea' = { +#10 metre wind direction +'wdir10' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Neutral drag coefficient at 10m above sea surface -'nd10_sea' = { +#Direct short wave radiation flux +'dirswrf' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 4 ; + parameterNumber = 13 ; } -#Total precipitation rate at sea surface -'tprate_sea' = { +#Diffuse short wave radiation flux +'difswrf' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + } +#Evaporation in the last 6 hours +'eva06' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; } -#Snow precipitation rate at sea surface -'snrate_sea' = { +#Evaporation in the last 24 hours +'eva24' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Eastward of wind stress over sea ice -'ewst_sea' = { +#Fraction of snow cover +'fscov' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 121 ; } -#Northward of wind stress over sea ice -'nwst_sea' = { +#Clear air turbulence (CAT) +'cat' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 29 ; } -#U-component of wind stress over sea ice -'uwst_sea' = { +#Mountain wave turbulence (eddy dissipation rate) +'mwt' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 28 ; } -#V-component of wind stress over sea ice -'vwst_sea' = { +#Specific rain water content (convective) +'crwc_conv' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 144 ; } -#Time-mean sea ice thickness -'avg_sithick' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific snow water content (convective) +'cswc_conv' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 145 ; } -#Time-mean sea ice area fraction -'avg_siconc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Glacier mask +'glm' = { + discipline = 2 ; + parameterCategory = 5 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean eastward sea ice velocity -'avg_siue' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward sea ice velocity -'avg_sivn' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 1 hour +'ptype_sev1h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 1 ; } -#Time-mean sea ice albedo -'avg_sialb' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 3 hours +'ptype_sev3h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice surface temperature -'avg_sitemptop' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 1 hour +'ptype_freq1h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 1 ; } -#Time-mean sea ice growth -'avg_sigrowth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 3 hours +'ptype_freq3h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice volume per unit area -'avg_sivol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 6 hours +'ptype_sev6h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 6 ; } -#Time-mean snow volume over sea ice per unit area -'avg_snvol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 6 hours +'ptype_freq6h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 6 ; } -#Time-mean vertically averaged sea ice temperature -'avg_vasit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil temperature +'sot' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; } -#Time-mean snow temperature over sea ice -'avg_sntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Downward short-wave radiation flux, clear sky +'dswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 52 ; } -#Time-mean sea ice temperature at the sea ice and snow interface -'avg_sisntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Upward short-wave radiation flux, clear sky +'uswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; } -#Time-mean underside ice temperature -'avg_usitemp' = { - discipline = 10 ; - parameterCategory = 2 ; +#Downward long-wave radiation flux, clear sky +'dlwrf_cs' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice heat content -'avg_sihc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil heat flux +'sohf' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 26 ; } -#Time-mean snow heat content over sea ice -'avg_snhc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation rate +'percr' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Time-mean sea ice freeboard thickness -'avg_sifbr' = { - discipline = 10 ; - parameterCategory = 2 ; +#Soil depth +'sod' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + } +#Soil moisture +'som' = { + discipline = 2 ; + parameterCategory = 3 ; parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice melt pond fraction -'avg_sipf' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Accumulated surface upward short-wave radiation flux, clear sky +'auswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond depth -'avg_sipd' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation +'perc' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 177 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond volume per unit area -'avg_sipvol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evapotranspiration rate +'et' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; } -#Time-mean sea ice fraction tendency due to parameterization -'avg_bckinsic' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean evapotranspiration rate in the last 24h +'avg_et24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean X-component of sea ice velocity -'avg_six' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Potential evapotranspiration rate +'pet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + } +#Time-integrated potential evapotranspiration rate in the last 24h +'acc_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; + } +#Time-mean potential evapotranspiration rate in the last 24h +'avg_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean Y-component of sea ice velocity -'avg_siy' = { - discipline = 10 ; - parameterCategory = 2 ; +#Time-mean volumetric soil moisture +'avg_swv24' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea ice temperature -'avg_sit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfStatisticalProcessing = 0 ; +#Water runoff and drainage rate +'rod' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; } -#Time-mean sea surface practical salinity -'avg_sos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated water runoff and drainage rate in the last 24h +'acc_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea surface temperature -'avg_tos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean water runoff and drainage rate in the last 24h +'avg_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 14 C isotherm -'avg_t14d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean snow depth water equivalent +'avg_sd24' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 17 C isotherm -'avg_t17d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean skin temperature +'avg_skt24' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 20 C isotherm -'avg_t20d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Snow melt rate +'smr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; } -#Time-mean depth of 26 C isotherm -'avg_t26d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated snow melt rate in the last 24h +'acc_smr24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 28 C isotherm -'avg_t28d' = { - discipline = 10 ; - parameterCategory = 4 ; +#Forecast albedo +'al' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; + } +#Cloudy brightness temperature +'clbt' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean barotropic stream function -'avg_stfbarot' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Clear-sky brightness temperature +'csbt' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Time-mean surface downward heat flux -'avg_hfds' = { - discipline = 10 ; - parameterCategory = 3 ; +#Cloudy reflectance +'cdrfl' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 31 ; + } +#Clear reflectance +'crrfl' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 32 ; + } +#Scaled radiance +'p260530' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Scaled albedo +'p260531' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Scaled brightness temperature +'p260532' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Scaled precipitable water +'p260533' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Scaled lifted index +'p260534' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward surface stress -'avg_tauvon' = { - discipline = 10 ; - parameterCategory = 3 ; +#Scaled cloud top pressure +'p260535' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Scaled skin temperature +'p260536' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward surface stress -'avg_tauuoe' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloud mask +'p260537' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Time mean Y-component of surface stress -'avg_tauvo' = { - discipline = 10 ; - parameterCategory = 3 ; +#Pixel scene type +'p260538' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of surface stress -'avg_tauuo' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Fire detection indicator +'p260539' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'avg_mlotst010' = { - discipline = 10 ; +#Forest fire weather index (as defined by the Canadian Forest Service) +'fwinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 5 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'avg_mlotst030' = { - discipline = 10 ; +#Fine fuel moisture code (as defined by the Canadian Forest Service) +'ffmcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 6 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'avg_mlotst125' = { - discipline = 10 ; +#Duff moisture code (as defined by the Canadian Forest Service) +'dufmcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 7 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.2 C -'avg_mlott02' = { - discipline = 10 ; +#Drought code (as defined by the Canadian Forest Service) +'drtcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 8 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.5 C -'avg_mlott05' = { - discipline = 10 ; +#Initial fire spread index (as defined by the Canadian Forest Service) +'infsinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean average sea water practical salinity in the upper 300 m -'avg_sc300m' = { - discipline = 10 ; +#Fire buildup index (as defined by the Canadian Forest Service) +'fbupinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 10 ; } -#Time-mean average sea water practical salinity in the upper 700 m -'avg_sc700m' = { - discipline = 10 ; +#Fire daily severity rating (as defined by the Canadian Forest Service) +'fdsrte' = { + discipline = 2 ; parameterCategory = 4 ; + parameterNumber = 11 ; + } +#Cloudy radiance (with respect to wave number) +'p260550' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } +#Clear-sky radiance (with respect to wave number) +'p260551' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 17 ; + } +#Wind speed +'p260552' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + } +#Aerosol optical thickness at 0.635 um +'p260553' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 20 ; + } +#Aerosol optical thickness at 0.810 um +'p260554' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total column average sea water practical salinity -'avg_scbtm' = { - discipline = 10 ; +#Aerosol optical thickness at 1.640 um +'p260555' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 22 ; + } +#Angstrom coefficient +'p260556' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 23 ; + } +#Keetch-Byram drought index +'kbdi' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 12 ; } -#Time-mean vertically-integrated heat content in the upper 300 m -'avg_hc300m' = { - discipline = 10 ; +#Drought factor (as defined by the Australian forest service) +'drtmrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean vertically-integrated heat content in the upper 700 m -'avg_hc700m' = { - discipline = 10 ; +#Rate of spread (as defined by the Australian forest service) +'rosmrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 14 ; } -#Time-mean total column heat content -'avg_hcbtm' = { - discipline = 10 ; +#Fire danger index (as defined by the Australian forest service) +'fdimrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 15 ; } -#Time-mean sea surface height -'avg_zos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'scnfdr' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 16 ; } -#Time-mean steric change in sea surface height -'avg_stheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) +'buinfdr' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 17 ; } -#Time-mean halosteric change in sea surface height -'avg_hstheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermosteric change in sea surface height -'avg_tstheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermocline depth -'avg_thcline' = { - discipline = 10 ; +#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'icnfdr' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 18 ; } -#Time-mean bottom pressure equivalent height -'avg_btp' = { - discipline = 10 ; +#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'ercnfdr' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 19 ; } -#Time-mean net surface upward water flux -'avg_swfup' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric soil ice +'vsi' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Time-mean fresh water flux into sea water (from rivers) -'avg_fw2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; +#Time integral of total solid precipitation flux +'titspf' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 128 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean virtual salt flux into sea water -'avg_vsf2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; +#10 metre eastward wind gust since previous post-processing +'efg10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean heat flux correction -'avg_hfcorr' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; +#10 metre northward wind gust since previous post-processing +'nfg10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean fresh water flux correction -'avg_fwcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; +#Fog +'fog' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean virtual salt flux correction -'avg_vsfcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to orographic form drag +'etssofd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 64 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean turbocline depth (kz=5e-4) -'avg_turbocl' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to orographic form drag +'ntssofd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 65 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean Y-component of surface sea water velocity -'avg_svy' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to surface roughness +'etsssr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean X-component of surface sea water velocity -'avg_svx' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to surface roughness +'ntsssr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 67 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean northward surface sea water velocity -'avg_svn' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Saturation specific humidity with respect to water +'sqw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 168 ; } -#Time-mean eastward surface sea water velocity -'avg_sve' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Total column integrated saturation specific humidity with respect to water +'tcsqw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 169 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Time-mean heat content surface to 26C isotherm -'avg_hct26' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; - typeOfStatisticalProcessing = 0 ; +#Universal thermal climate index +'utci' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Time-mean sea surface height tendency due to parameterization -'avg_bckineta' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Mean radiant temperature +'mrt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Time-mean sea surface height with inverse barometer correction -'avg_zosib' = { - discipline = 10 ; +#Fraction of Malaria cases +'mal_cases_frac' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Malaria circumsporozoite protein ratio +'mal_prot_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Plasmodium falciparum entomological inoculation rate +'mal_innoc_rate' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 2 ; + } +#Human bite rate by anopheles vectors +'mal_hbite_rate' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; + } +#Malaria immunity ratio +'mal_immun_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 4 ; + } +#Falciparum parasite ratio +'mal_infect_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 5 ; + } +#Detectable falciparum parasite ratio (after day 10) +'mal_infect_d10_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 6 ; + } +#Anopheles vector to host ratio +'mal_host_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 7 ; + } +#Anopheles vector density +'mal_vect_dens' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 8 ; + } +#Fraction of malarial vector reproductive habitat +'mal_hab_frac' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 9 ; + } +#Population density +'pop_dens' = { + discipline = 20 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + } +#Wet bulb globe temperature +'wbgt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Globe temperature +'gt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Humidex +'hmdx' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 4 ; + } +#Effective temperature +'efft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Normal effective temperature +'nefft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + } +#Standard effective temperature +'sefft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 7 ; + } +#Physiological equivalent temperature +'peqt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 8 ; + } +#Saturation water vapour pressure +'swvp' = { + discipline = 0 ; parameterCategory = 3 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 32 ; } -#Time-mean average sea water potential temperature in the upper 300m -'avg_pt300m' = { +#Wet-bulb potential temperature +'wbpt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 32 ; + } +#Sea ice thickness +'sithick' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea surface salinity -'avg_sss' = { +#Sea ice area fraction +'siconc' = { discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 300 m -'avg_sc300v' = { +#Eastward sea ice velocity +'siue' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean vertically integrated sea water practical salinity in the upper 700 m -'avg_sc700v' = { +#Northward sea ice velocity +'sivn' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean total column vertically integrated sea water practical salinity -'avg_scbtv' = { +#Sea ice albedo +'sialb' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea water practical salinity -'avg_so' = { +#Sea ice surface temperature +'sitemptop' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea water potential temperature -'avg_thetao' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea water sigma theta -'avg_sigmat' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean Y-component of sea water velocity -'avg_vo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean X-component of sea water velocity -'avg_uo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean northward sea water velocity -'avg_von' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean eastward sea water velocity -'avg_uoe' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean upward sea water velocity -'avg_wo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea water potential temperature tendency due to newtonian relaxation -'avg_thetaodmp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea water salinity tendency due to newtonian relaxation -'avg_sodmp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea water temperature tendency due to parameterization -'avg_bckint' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to parameterization -'avg_bckins' = { +#Sea ice growth +'sigrowth' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity tendency due to parameterization -'avg_bckine' = { +#Sea ice volume per unit area +'sivol' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity tendency due to parameterization -'avg_bckinn' = { +#Snow volume over sea ice per unit area +'snvol' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to direct bias correction -'avg_tdbiascorr' = { +#Vertically averaged sea ice temperature +'vasit' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to direct bias correction -'avg_sdbiascorr' = { +#Snow temperature over sea ice +'sntemp' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity -'avg_salo' = { +#Sea ice temperature at the sea ice and snow interface +'sisntemp' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean net short wave radiation rate at sea surface -'avg_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind stress at sea surface -'avg_wst_sea' = { - discipline = 0 ; +#Underside ice temperature +'usitemp' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind speed at 10m above sea surface -'avg_10ws_sea' = { - discipline = 0 ; +#Sea ice heat content +'sihc' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean neutral drag coefficient at 10m above sea surface -'avg_10nd_sea' = { - discipline = 0 ; +#Snow heat content over sea ice +'snhc' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total precipitation rate at sea surface -'avg_tprate_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; +#Sea ice freeboard thickness +'sifbr' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + } +#Sea ice melt pond fraction +'sipf' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow precipitation rate at sea surface -'avg_snrate_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; +#Sea ice melt pond depth +'sipd' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward of wind stress over sea ice -'avg_ewst_sea' = { - discipline = 0 ; +#Sea ice melt pond volume per unit area +'sipvol' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward of wind stress over sea ice -'avg_nwst_sea' = { - discipline = 0 ; +#Sea ice fraction tendency due to parameterization +'bckinsic' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 51 ; + parameterNumber = 23 ; typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean U-component of wind stress over sea ice -'avg_uwst_sea' = { - discipline = 0 ; +#X-component of sea ice velocity +'six' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 52 ; + parameterNumber = 24 ; typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + typeOfSecondFixedSurface = 176 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean V-component of wind stress over sea ice -'avg_vwst_sea' = { - discipline = 0 ; +#Y-component of sea ice velocity +'siy' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 53 ; + parameterNumber = 25 ; typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + typeOfSecondFixedSurface = 176 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'acc_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Sea ice temperature +'sit' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Sea surface practical salinity +'sos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated total precipitation at sea surface -'tp_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; +#Sea surface temperature +'tos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 0 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated snow precipitation at sea surface -'sn_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 14 C isotherm +'t14d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Virtual temperature -'vtmp' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 1 ; } -#Mass density -'mdens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 0 ; +#Depth of 17 C isotherm +'t17d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total column vertically-integrated mass density -'tc_mdens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Depth of 20 C isotherm +'t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mass mixing ratio -'mass_mixrat' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; +#Depth of 26 C isotherm +'t26d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux -'emi_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 255 ; +#Depth of 28 C isotherm +'t28d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Dry deposition velocity -'drydep_vel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; +#Barotropic stream function +'stfbarot' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wet deposition mass flux -'wetdep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; +#Surface downward heat flux +'hfds' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Dry deposition mass flux -'drydep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; +#Northward surface stress +'tauvon' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sedimentation mass flux -'sed_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 11 ; - } -#Volume mixing ratio -'vol_mixrat' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 52 ; - } -#Wet deposition mass flux by large-scale precipitation -'wetdep_mflx_lsp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 9 ; - } -#Wet deposition mass flux by convective precipitation -'wetdep_mflx_cp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 10 ; - } -#Emission mass flux from natural sources -'emi_mflx_natsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 6 ; - } -#Emission mass flux from anthropogenic sources -'emi_mflx_antsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 4 ; - } -#Emission mass flux from elevated anthropogenic sources -'emi_mflx_elevantsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 12 ; - } -#Emission mass flux from surface anthropogenic sources -'emi_mflx_sfcantsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 13 ; - } -#Emission from aviation -'emi_mflx_aviation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 1 ; - } -#Emission mass flux from agriculture livestock -'emi_mflx_agriliv' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 14 ; - } -#Emission mass flux from agriculture soils -'emi_mflx_agrisol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 15 ; - } -#Emission mass flux from agricultural waste burning -'emi_mflx_agriwasburn' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 16 ; - } -#Emission mass flux from residential, commercial and other combustion -'emi_mflx_rescomb' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 18 ; - } -#Emission mass flux from power generation -'emi_mflx_powgen' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 19 ; - } -#Emission mass flux from fugitives -'emi_mflx_fug' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 21 ; - } -#Emission mass flux from industrial process -'emi_mflx_indproc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 22 ; - } -#Emission mass flux from solvents -'emi_mflx_solv' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 23 ; - } -#Emission mass flux from ships -'emi_mflx_shp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 24 ; - } -#Emission mass flux from wastes (solid and water) -'emi_mflx_wastes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 25 ; - } -#Emission mass flux from off-road transportation -'emi_mflx_offrdtrans' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 27 ; - } -#Emission mass flux from road transportation -'emi_mflx_rdtrans' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 26 ; - } -#Emission mass flux from super power stations -'emi_mflx_suppowstn' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 20 ; - } -#Emission mass flux from volcanoes -'emi_mflx_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Emission mass flux from wetlands -'emi_mflx_wetl' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 10 ; - } -#Net ecosystem exchange flux -'neef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - } -#Mean net ecosystem exchange flux -'mneef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated net ecosystem exchange flux -'aneef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 1 ; - } -#Gross primary production flux -'gppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - } -#Mean gross primary production flux -'mgppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated gross primary production flux -'agppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 1 ; - } -#Ecosystem respiration flux -'erf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - } -#Mean ecosystem respiration flux -'merf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated ecosystem respiration flux -'aerf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 1 ; - } -#Emission mass flux from bio fuel -'emi_mflx_biofuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 8 ; - } -#Emission mass flux from fossil fuel -'emi_mflx_fossilfuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 9 ; - } -#Emission mass flux from other -'emi_mflx_other' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 0 ; - } -#Emission mass flux from oceans -'emi_mflx_ocean' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 11 ; - } -#Accumulated wet deposition mass flux -'acc_wetdep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated dry deposition mass flux -'acc_drydep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - typeOfStatisticalProcessing = 1 ; - } -#Aerosol number density -'aer_ndens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 59 ; - } -#Mass mixing ratio from volcanoes -'mass_mixrat_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Total column vertically-integrated mass density from volcanoes -'tc_mdens_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Dry deposition velocity from volcanoes -'drydep_vel_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Virtual potential temperature -'vptmp' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 15 ; - } -#Pseudo-adiabatic potential temperature -'papt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Wind direction -'wdir' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Snowmelt -'snom' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Period corresponding to maximum individual wave height -'tmax' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - } -#Maximum individual wave height -'hmax' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - } -#Model bathymetry -'wmb' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 7 ; - } -#Mean wave period based on first moment -'mp1' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - } -#Mean zero-crossing wave period -'mp2' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 28 ; - } -#Wave spectral directional width -'wdw' = { +#Eastward surface stress +'tauuoe' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 31 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment for wind waves -'p1ww' = { +#Y-component of surface stress +'tauvo' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 26 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on second moment for wind waves -'p2ww' = { +#X-component of surface stress +'tauuo' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 29 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for wind waves -'dwww' = { +#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'mlotst010' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment for swell -'p1ps' = { +#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'mlotst030' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 27 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on second moment for swell -'p2ps' = { +#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'mlotst125' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for swell -'dwps' = { +#Ocean mixed layer depth defined by temperature 0.2 C +'mlott02' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 33 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of combined wind waves and swell -'swh' = { +#Ocean mixed layer depth defined by temperature 0.5 C +'mlott05' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 3 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave direction -'mwd' = { +#Average sea water practical salinity in the upper 300 m +'sc300m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 14 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Peak wave period -'pp1d' = { +#Average sea water practical salinity in the upper 700 m +'sc700m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period -'mwp' = { +#Total column average sea water practical salinity +'scbtm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Coefficient of drag with waves -'cdww' = { +#Vertically-integrated heat content in the upper 300 m +'hc300m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Significant height of wind waves -'shww' = { +#Vertically-integrated heat content in the upper 700 m +'hc700m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 5 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean direction of wind waves -'mdww' = { +#Total column of heat content +'hcbtm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 75 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of wind waves -'mpww' = { +#Sea surface height +'zos' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of total swell -'shts' = { +#Steric change in sea surface height +'stheig' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of total swell -'mdts' = { +#Halosteric change in sea surface height +'hstheig' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 74 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of total swell -'mpts' = { +#Thermosteric change in sea surface height +'tstheig' = { discipline = 10 ; - parameterCategory = 0 ; + parameterCategory = 3 ; parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean square slope of waves -'msqs' = { +#Thermocline depth +'thcline' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 20 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind speed -'wind' = { +#Bottom pressure equivalent height +'btp' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter wave height -'awh' = { +#Net surface upward water flux +'swfup' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 37 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter corrected wave height -'acwh' = { +#Fresh water flux into sea water (from rivers) +'fw2sw' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter range relative correction -'arrc' = { +#Virtual salt flux into sea water +'vsf2sw' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind direction -'dwi' = { +#Heat flux correction +'hfcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#2D wave spectra (single) -'d2fd' = { +#Fresh water flux correction +'fwcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 86 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral kurtosis -'wsk' = { +#Virtual salt flux correction +'vsfcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 43 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Benjamin-Feir index -'bfi' = { +#Turbocline depth (kz=5e-4) +'turbocl' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 44 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Eastward sea water velocity -'uoe' = { +#Y-component of surface sea water velocity +'svy' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 2 ; + parameterCategory = 3 ; + parameterNumber = 17 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Northward sea water velocity -'von' = { +#X-component of surface sea water velocity +'svx' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 16 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Skin reservoir content -'srcrea' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 50 ; - } -#Vertical integral of mass of atmosphere -'vima' = { - discipline = 0 ; +#Northward surface sea water velocity +'svn' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated kinetic energy -'vike' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated enthalpy -'vithe' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated potential + internal energy -'vipie' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of potential+internal+latent energy -'vipile' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated total energy -'vitoe' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of eastward heat flux -'vithee' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of northward heat flux -'vithen' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of eastward water vapour flux -'viwve' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 150 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of northward water vapour flux -'viwvn' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 151 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically integrated moisture divergence flux -'viwvd' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 165 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Eastward surface sea water velocity +'sve' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to short-wave radiation -'srta' = { - discipline = 0 ; - parameterCategory = 0 ; +#Heat Content surface to 26C isotherm +'hct26' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 22 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; } -#Time-integrated temperature tendency due to long-wave radiation -'trta' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - typeOfStatisticalProcessing = 1 ; +#Sea surface height tendency due to parameterization +'bckineta' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to short wave radiation, clear sky -'srtca' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - typeOfStatisticalProcessing = 1 ; +#Sea surface height with inverse barometer correction +'zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; } -#Time-integrated temperature tendency due to long-wave radiation, clear sky -'trtca' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - typeOfStatisticalProcessing = 1 ; +#Average sea water potential temperature in the upper 300m +'pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-integrated updraught mass flux -'umfa' = { - discipline = 0 ; +#Sea surface salinity +'sss' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 27 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated downdraught mass flux -'dmfa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 28 ; - typeOfStatisticalProcessing = 1 ; +#Vertically integrated sea water practical salinity in the upper 300 m +'sc300v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-integrated updraught detrainment rate -'udra' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 29 ; - typeOfStatisticalProcessing = 1 ; +#Vertically integrated sea water practical salinity in the upper 700 m +'sc700v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-integrated downdraught detrainment rate -'ddra' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 30 ; - typeOfStatisticalProcessing = 1 ; +#Total column vertically integrated sea water practical salinity +'scbtv' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated total precipitation flux -'tpfa' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; +#Sea water practical salinity +'so' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated turbulent diffusion coefficient for heat -'tdcha' = { - discipline = 0 ; - parameterCategory = 0 ; +#Sea water potential temperature +'thetao' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } +#Sea water sigma theta +'sigmat' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 20 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to parametrisations -'ttpha' = { - discipline = 0 ; - parameterCategory = 0 ; +#Y-component of sea water velocity +'vo' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 26 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated specific humidity tendency due to parametrisations -'qtpha' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 108 ; - typeOfStatisticalProcessing = 1 ; +#X-component of sea water velocity +'uo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated eastward wind tendency due to parametrisations -'utpha' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 39 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity +'von' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated northward wind tendency due to parametrisations -'vtpha' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 40 ; - typeOfStatisticalProcessing = 1 ; +#Eastward sea water velocity +'uoe' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-mean surface net radiation flux (SW and LW) -'msnrf' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; +#Upward sea water velocity +'wo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Surface runoff -'sro' = { - discipline = 2 ; - parameterCategory = 0 ; +#Sea water potential temperature tendency due to newtonian relaxation +'thetaodmp' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Nitrogen dioxide mass mixing ratio -'no2' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - is_chemical = 1 ; - } -#Sulphur dioxide mass mixing ratio -'so2' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - is_chemical = 1 ; +#Sea water salinity tendency due to newtonian relaxation +'sodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Carbon monoxide mass mixing ratio -'co' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - is_chemical = 1 ; +#Sea water temperature tendency due to parameterization +'bckint' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Ozone mass mixing ratio (full chemistry scheme) -'go3' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - is_chemical = 1 ; +#Sea water salinity tendency due to parameterization +'bckins' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Nitrogen dioxide mass mixing ratio difference -'no2diff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Eastward sea water velocity tendency due to parameterization +'bckine' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Sulphur dioxide mass mixing ratio difference -'so2diff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Northward sea water velocity tendency due to parameterization +'bckinn' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Carbon monoxide mass mixing ratio difference -'codiff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Sea water temperature tendency due to direct bias correction +'tdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Ozone mass mixing ratio difference (full chemistry scheme) -'go3diff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Sea water salinity tendency due to direct bias correction +'sdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Friction velocity -'zust' = { +#Sea water salinity +'salo' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 17 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Mean 2 metre temperature -'mean2t' = { +#Net short wave radiation rate at sea surface +'ssr_sea' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; - } -#Lake total depth -'dl' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Lake mix-layer temperature -'lmlt' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; - } -#Lake mix-layer depth -'lmld' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; - } -#Lake bottom temperature -'lblt' = { - discipline = 1 ; +#Wind stress at sea surface +'wst_sea' = { + discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 162 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - } -#Lake total layer temperature -'ltlt' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Lake shape factor -'lshf' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 10 ; - } -#Lake ice surface temperature -'lict' = { - discipline = 1 ; +#Wind speed at 10m above sea surface +'ws10_sea' = { + discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; typeOfSecondFixedSurface = 255 ; - } -#Lake ice total depth -'licd' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Minimum vertical gradient of refractivity inside trapping layer -'dndzn' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 45 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'dndza' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 44 ; - } -#Duct base height -'dctb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 41 ; - } -#Trapping layer base height -'tplb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 42 ; - } -#Trapping layer top height -'tplt' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 43 ; - } -#10 metre u-component of neutral wind -'u10n' = { +#Neutral drag coefficient at 10m above sea surface +'nd10_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 103 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre v-component of neutral wind -'v10n' = { +#Total precipitation rate at sea surface +'tprate_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#U-component surface stokes drift -'ust' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 21 ; - } -#V-component surface stokes drift -'vst' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - } -#100 metre U wind component -'u100' = { +#Snow precipitation rate at sea surface +'snrate_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#100 metre V wind component -'v100' = { +#Eastward of wind stress over sea ice +'ewst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total precipitation of at least 10 mm -'tpg10' = { +#Northward of wind stress over sea ice +'nwst_sea' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 10 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + parameterCategory = 2 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total precipitation of at least 20 mm -'tpg20' = { +#U-component of wind stress over sea ice +'uwst_sea' = { discipline = 0 ; - parameterCategory = 1 ; + parameterCategory = 2 ; parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Stream function -'strf' = { +#V-component of wind stress over sea ice +'vwst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 4 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Velocity potential -'vp' = { - discipline = 0 ; +#Time-mean sea ice thickness +'avg_sithick' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; - } -#Potential temperature -'pt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Pressure -'pres' = { - discipline = 0 ; - parameterCategory = 3 ; +#Time-mean sea ice area fraction +'avg_siconc' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective available potential energy -'cape' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Time-mean eastward sea ice velocity +'avg_siue' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential vorticity -'pv' = { - discipline = 0 ; +#Time-mean northward sea ice velocity +'avg_sivn' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 14 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 2 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice albedo +'avg_sialb' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 3 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice surface temperature +'avg_sitemptop' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential -'z' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; +#Time-mean sea ice growth +'avg_sigrowth' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Temperature -'t' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Time-mean sea ice volume per unit area +'avg_sivol' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U component of wind -'u' = { - discipline = 0 ; +#Time-mean snow volume over sea ice per unit area +'avg_snvol' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V component of wind -'v' = { - discipline = 0 ; +#Time-mean vertically averaged sea ice temperature +'avg_vasit' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Specific humidity -'q' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Time-mean snow temperature over sea ice +'avg_sntemp' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface pressure -'sp' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean sea ice temperature at the sea ice and snow interface +'avg_sisntemp' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical velocity -'w' = { - discipline = 0 ; +#Time-mean underside ice temperature +'avg_usitemp' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water -'tcw' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Time-mean sea ice heat content +'avg_sihc' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vorticity (relative) -'vo' = { - discipline = 0 ; +#Time-mean snow heat content over sea ice +'avg_snhc' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 12 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface sensible heat flux -'sshf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean sea ice freeboard thickness +'avg_sifbr' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Surface latent heat flux -'slhf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean sea ice melt pond fraction +'avg_sipf' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Mean sea level pressure -'msl' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; +#Time-mean sea ice melt pond depth +'avg_sipd' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Divergence -'d' = { - discipline = 0 ; +#Time-mean sea ice melt pond volume per unit area +'avg_sipvol' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 13 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential height -'gh' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; +#Time-mean sea ice fraction tendency due to parameterization +'avg_bckinsic' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Relative humidity -'r' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Time-mean X-component of sea ice velocity +'avg_six' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre U wind component -'u10' = { - discipline = 0 ; +#Time-mean Y-component of sea ice velocity +'avg_siy' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre V wind component -'v10' = { - discipline = 0 ; +#Time-mean sea ice temperature +'avg_sit' = { + discipline = 10 ; parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface practical salinity +'avg_sos' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre temperature -'t2m' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean sea surface temperature +'avg_tos' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - } -#2 metre dewpoint temperature -'d2m' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Land-sea mask -'lsm' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean depth of 14 C isotherm +'avg_t14d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net short-wave (solar) radiation -'ssr' = { - discipline = 0 ; +#Time-mean depth of 17 C isotherm +'avg_t17d' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Surface net long-wave (thermal) radiation -'str' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Top net long-wave (thermal) radiation -'ttr' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 20 C isotherm +'avg_t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine duration -'sund' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 26 C isotherm +'avg_t26d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Brightness temperature -'btmp' = { - discipline = 0 ; +#Time-mean depth of 28 C isotherm +'avg_t28d' = { + discipline = 10 ; parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean barotropic stream function +'avg_stfbarot' = { + discipline = 10 ; + parameterCategory = 191 ; parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre wind speed -'si10' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; +#Time-mean surface downward heat flux +'avg_hfds' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Skin temperature -'skt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean northward surface stress +'avg_tauvon' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Latent heat net flux -'lhtfl' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; +#Time-mean eastward surface stress +'avg_tauuoe' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Heat index -'heatx' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Time mean Y-component of surface stress +'avg_tauvo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind chill factor -'wcf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 13 ; +#Time-mean X-component of surface stress +'avg_tauuo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'avg_mlotst010' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow phase change heat flux -'snohf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Vapor pressure -'vapp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 4 ; - } -#Large scale precipitation (non-convective) -'ncpcp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 9 ; - } -#Snowfall rate water equivalent -'srweq' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 12 ; - } -#Convective snow -'snoc' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'avg_mlotst030' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snow -'snol' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 15 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'avg_mlotst125' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow age -'snoag' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#Time-mean ocean mixed layer depth defined by temperature 0.2 C +'avg_mlott02' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Absolute humidity -'absh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 18 ; +#Time-mean ocean mixed layer depth defined by temperature 0.5 C +'avg_mlott05' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitation type -'ptype' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#Time-mean average sea water practical salinity in the upper 300 m +'avg_sc300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Integrated liquid water -'iliqw' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#Time-mean average sea water practical salinity in the upper 700 m +'avg_sc700m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Condensate -'tcond' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean total column average sea water practical salinity +'avg_scbtm' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Cloud mixing ratio -'clwmr' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean vertically-integrated heat content in the upper 300 m +'avg_hc300m' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Ice water mixing ratio -'icmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Time-mean vertically-integrated heat content in the upper 700 m +'avg_hc700m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain mixing ratio -'rwmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 24 ; +#Time-mean total column heat content +'avg_hcbtm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow mixing ratio -'snmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 25 ; +#Time-mean sea surface height +'avg_zos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture convergence -'mconv' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 26 ; +#Time-mean steric change in sea surface height +'avg_stheig' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum relative humidity -'maxrh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; +#Time-mean halosteric change in sea surface height +'avg_hstheig' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum absolute humidity -'maxah' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; +#Time-mean thermosteric change in sea surface height +'avg_tstheig' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitable water category -'pwcat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 30 ; +#Time-mean thermocline depth +'avg_thcline' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Hail -'hail' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 31 ; +#Time-mean bottom pressure equivalent height +'avg_btp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Graupel (snow pellets) -'grle' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean net surface upward water flux +'avg_swfup' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean fresh water flux into sea water (from rivers) +'avg_fw2sw' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean virtual salt flux into sea water +'avg_vsf2sw' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical rain -'crain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 33 ; +#Time-mean heat flux correction +'avg_hfcorr' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical freezing rain -'cfrzr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 34 ; +#Time-mean fresh water flux correction +'avg_fwcorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical ice pellets -'cicep' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 35 ; +#Time-mean virtual salt flux correction +'avg_vsfcorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical snow -'csnow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 36 ; +#Time-mean turbocline depth (kz=5e-4) +'avg_turbocl' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective precipitation rate -'cprat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 37 ; +#Time-mean Y-component of surface sea water velocity +'avg_svy' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture divergence -'mdiv' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 38 ; +#Time-mean X-component of surface sea water velocity +'avg_svx' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Percent frozen precipitation -'cpofp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 39 ; +#Time-mean northward surface sea water velocity +'avg_svn' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential evaporation -'pevap' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 40 ; +#Time-mean eastward surface sea water velocity +'avg_sve' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow cover -'snowc' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 42 ; +#Time-mean heat content surface to 26C isotherm +'avg_hct26' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; + typeOfStatisticalProcessing = 0 ; } -#Rain fraction of total cloud water -'frain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 43 ; +#Time-mean sea surface height tendency due to parameterization +'avg_bckineta' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rime factor -'rime' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 44 ; +#Time-mean sea surface height with inverse barometer correction +'avg_zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated rain -'tcolr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 45 ; +#Time-mean average sea water potential temperature in the upper 300m +'avg_pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated snow -'tcols' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 46 ; +#Time-mean sea surface salinity +'avg_sss' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Large scale water precipitation (non-convective) -'lswp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 47 ; +#Time-mean vertically integrated sea water practical salinity in the upper 300 m +'avg_sc300v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Convective water precipitation -'cwp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 48 ; +#Time-mean vertically integrated sea water practical salinity in the upper 700 m +'avg_sc700v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Total water precipitation -'twatp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; +#Time-mean total column vertically integrated sea water practical salinity +'avg_scbtv' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water (Vertically integrated total water (vapour + cloud water/ice)) -'tcwat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; +#Time-mean sea water practical salinity +'avg_so' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total precipitation rate -'tprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean sea water potential temperature +'avg_thetao' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate water equivalent -'tsrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; +#Time-mean sea water sigma theta +'avg_sigmat' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation rate -'lsprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 54 ; +#Time-mean Y-component of sea water velocity +'avg_vo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate -'tsrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; +#Time-mean X-component of sea water velocity +'avg_uo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective snowfall rate -'csrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 58 ; +#Time-mean northward sea water velocity +'avg_von' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snowfall rate -'lssrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 59 ; +#Time-mean eastward sea water velocity +'avg_uoe' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Water equivalent of accumulated snow depth (deprecated) -'sdwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Time-mean upward sea water velocity +'avg_wo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Rain precipitation rate -'rprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 65 ; +#Time-mean sea water potential temperature tendency due to newtonian relaxation +'avg_thetaodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Snow precipitation rate -'sprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#Time-mean sea water salinity tendency due to newtonian relaxation +'avg_sodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Freezing rain precipitation rate -'fprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 67 ; +#Time-mean sea water temperature tendency due to parameterization +'avg_bckint' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Ice pellets precipitation rate -'iprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 68 ; +#Time-mean sea water salinity tendency due to parameterization +'avg_bckins' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Maximum wind speed -'maxgust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 21 ; +#Time-mean eastward sea water velocity tendency due to parameterization +'avg_bckine' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Wind speed (gust) -'gust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; +#Time-mean northward sea water velocity tendency due to parameterization +'avg_bckinn' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#u-component of wind (gust) -'ugust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 23 ; +#Time-mean sea water temperature tendency due to direct bias correction +'avg_tdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#v-component of wind (gust) -'vgust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 24 ; +#Time-mean sea water salinity tendency due to direct bias correction +'avg_sdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical speed shear -'vwsh' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 25 ; +#Time-mean sea water salinity +'avg_salo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal momentum flux -'mflx' = { +#Time-mean net short wave radiation rate at sea surface +'avg_ssr_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 26 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component storm motion -'ustm' = { +#Time-mean wind stress at sea surface +'avg_wst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 27 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component storm motion -'vstm' = { +#Time-mean wind speed at 10m above sea surface +'avg_10ws_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 28 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Drag coefficient -'cd' = { +#Time-mean neutral drag coefficient at 10m above sea surface +'avg_10nd_sea' = { discipline = 0 ; parameterCategory = 2 ; parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Frictional velocity -'fricv' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 30 ; - } -#Pressure reduced to MSL -'prmsl' = { +#Time-mean total precipitation rate at sea surface +'avg_tprate_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Altimeter setting -'alts' = { +#Time-mean snow precipitation rate at sea surface +'avg_snrate_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 11 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Thickness -'thick' = { +#Time-mean eastward of wind stress over sea ice +'avg_ewst_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Pressure altitude -'presalt' = { +#Time-mean northward of wind stress over sea ice +'avg_nwst_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Density altitude -'denalt' = { +#Time-mean U-component of wind stress over sea ice +'avg_uwst_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#5-wave geopotential height -'wavh5' = { +#Time-mean V-component of wind stress over sea ice +'avg_vwst_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 15 ; + parameterCategory = 2 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Zonal flux of gravity wave stress -'p260081' = { +#Time-accumulated net short wave radiation at sea surface +'acc_ssr_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Meridional flux of gravity wave stress -'p260082' = { +#Time-accumulated total precipitation at sea surface +'tp_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 17 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#5-wave geopotential height anomaly -'p260084' = { +#Time-accumulated snow precipitation at sea surface +'sn_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 19 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Net short-wave radiation flux (top of atmosphere) -'nswrt' = { +#Virtual temperature +'vtmp' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 0 ; parameterNumber = 1 ; } -#Downward short-wave radiation flux -'dswrf' = { +#Mass density +'mdens' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 0 ; } -#Upward short-wave radiation flux -'uswrf' = { +#Total column vertically-integrated mass density +'tc_mdens' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Net short wave radiation flux -'nswrf' = { +#Mass mixing ratio +'mass_mixrat' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 2 ; } -#Photosynthetically active radiation -'photar' = { +#Emission mass flux +'emi_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } -#Net short-wave radiation flux, clear sky -'nswrfcs' = { +#Dry deposition velocity +'drydep_vel' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 15 ; } -#Downward UV radiation -'dwuvr' = { +#Wet deposition mass flux +'wetdep_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 7 ; } -#UV index (under clear sky) -'uviucs' = { +#Dry deposition mass flux +'drydep_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 50 ; + parameterCategory = 20 ; + parameterNumber = 6 ; } -#UV index -'uvi' = { +#Sedimentation mass flux +'sed_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 51 ; - } -#Net long wave radiation flux (surface) -'nlwrs' = { + parameterCategory = 20 ; + parameterNumber = 11 ; + } +#Volume mixing ratio +'vol_mixrat' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 52 ; } -#Net long wave radiation flux (top of atmosphere) -'nlwrt' = { +#Wet deposition mass flux by large-scale precipitation +'wetdep_mflx_lsp' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 9 ; } -#Downward long-wave radiation flux -'dlwrf' = { +#Wet deposition mass flux by convective precipitation +'wetdep_mflx_cp' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 10 ; } -#Upward long-wave radiation flux -'ulwrf' = { +#Emission mass flux from natural sources +'emi_mflx_natsrc' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 6 ; } -#Net long wave radiation flux -'nlwrf' = { +#Emission mass flux from anthropogenic sources +'emi_mflx_antsrc' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 4 ; } -#Net long-wave radiation flux, clear sky -'nlwrcs' = { +#Emission mass flux from elevated anthropogenic sources +'emi_mflx_elevantsrc' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 12 ; } -#Cloud Ice -'cice' = { +#Emission mass flux from surface anthropogenic sources +'emi_mflx_sfcantsrc' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 13 ; } -#Cloud water -'cwat' = { +#Emission from aviation +'emi_mflx_aviation' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 1 ; } -#Cloud amount -'cdca' = { +#Emission mass flux from agriculture livestock +'emi_mflx_agriliv' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 14 ; } -#Cloud type -'cdct' = { +#Emission mass flux from agriculture soils +'emi_mflx_agrisol' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 15 ; } -#Thunderstorm maximum tops -'tmaxt' = { +#Emission mass flux from agricultural waste burning +'emi_mflx_agriwasburn' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 16 ; } -#Thunderstorm coverage -'thunc' = { +#Emission mass flux from residential, commercial and other combustion +'emi_mflx_rescomb' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 18 ; } -#Cloud top -'cdct' = { +#Emission mass flux from power generation +'emi_mflx_powgen' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 19 ; } -#Ceiling -'ceil' = { +#Emission mass flux from fugitives +'emi_mflx_fug' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 21 ; } -#Non-convective cloud cover -'cdlyr' = { +#Emission mass flux from industrial process +'emi_mflx_indproc' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 22 ; } -#Cloud work function -'cwork' = { +#Emission mass flux from solvents +'emi_mflx_solv' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 23 ; } -#Convective cloud efficiency -'cuefi' = { +#Emission mass flux from ships +'emi_mflx_shp' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 24 ; } -#Total condensate -'tcond' = { +#Emission mass flux from wastes (solid and water) +'emi_mflx_wastes' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 25 ; } -#Total column-integrated cloud water -'tcolw' = { +#Emission mass flux from off-road transportation +'emi_mflx_offrdtrans' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 18 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 27 ; } -#Total column-integrated cloud ice -'tcoli' = { +#Emission mass flux from road transportation +'emi_mflx_rdtrans' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 26 ; } -#Total column-integrated condensate -'tcolc' = { +#Emission mass flux from super power stations +'emi_mflx_suppowstn' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 20 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 20 ; } -#Ice fraction of total condensate -'fice' = { +#Emission mass flux from volcanoes +'emi_mflx_vol' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 21 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Cloud ice mixing ratio -'cdcimr' = { +#Emission mass flux from wetlands +'emi_mflx_wetl' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 23 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } +#Net ecosystem exchange flux +'neef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'mneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'aneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'gppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'mgppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine -'suns' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; +#Accumulated gross primary production flux +'agppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; } -#Horizontal extent of cumulonimbus (CB) -'p260120' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 25 ; +#Ecosystem respiration flux +'erf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; } -#K index -'kx' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 2 ; +#Mean ecosystem respiration flux +'merf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; } -#KO index -'kox' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 3 ; +#Accumulated ecosystem respiration flux +'aerf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; } -#Total totals index -'totalx' = { +#Emission mass flux from bio fuel +'emi_mflx_biofuel' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; } -#Sweat index -'sx' = { +#Emission mass flux from fossil fuel +'emi_mflx_fossilfuel' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; } -#Storm relative helicity -'hlcy' = { +#Emission mass flux from other +'emi_mflx_other' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; } -#Energy helicity index -'ehlx' = { +#Emission mass flux from oceans +'emi_mflx_ocean' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; } -#Surface lifted index -'lftx' = { +#Accumulated wet deposition mass flux +'acc_wetdep_mflx' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; } -#Best (4-layer) lifted index -'lftx4' = { +#Accumulated dry deposition mass flux +'acc_drydep_mflx' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; } -#Aerosol type -'aerot' = { +#Aerosol number density +'aer_ndens' = { discipline = 0 ; - parameterCategory = 13 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 59 ; } -#Total ozone -'tozne' = { +#Mass mixing ratio from volcanoes +'mass_mixrat_vol' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Base spectrum width -'bswid' = { +#Total column vertically-integrated mass density from volcanoes +'tc_mdens_vol' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Base reflectivity -'bref' = { +#Dry deposition velocity from volcanoes +'drydep_vel_vol' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Base radial velocity -'brvel' = { +#Pressure tendency +'ptend' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 3 ; parameterNumber = 2 ; } -#Vertically-integrated liquid -'veril' = { +#ICAO Standard Atmosphere reference height +'icaht' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 3 ; parameterNumber = 3 ; } -#Layer-maximum base reflectivity -'lmaxbr' = { - discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 4 ; - } -#Precipitation -'prec' = { - discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 5 ; - } -#Air concentration of Caesium 137 -'acces' = { +#Geometrical height +'h' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Air concentration of Iodine 131 -'aciod' = { +#Standard deviation of height +'hstdv' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 1 ; + parameterCategory = 3 ; + parameterNumber = 7 ; } -#Air concentration of radioactive pollutant -'acradp' = { +#Virtual potential temperature +'vptmp' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Ground deposition of Caesium 137 -'gdces' = { +#Pseudo-adiabatic potential temperature +'papt' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Ground deposition of Iodine 131 -'gdiod' = { +#Maximum temperature +'tmax' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 4 ; } -#Ground deposition of radioactive pollutant -'gdradp' = { +#Minimum temperature +'tmin' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Time-integrated air concentration of caesium pollutant -'tiaccp' = { +#Dew point temperature +'dpt' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 6 ; } -#Time-integrated air concentration of iodine pollutant -'tiacip' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 7 ; - } -#Time-integrated air concentration of radioactive pollutant -'tiacrp' = { +#Lapse rate +'lapr' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Volcanic ash -'volash' = { +#Visibility +'vis' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 4 ; + parameterNumber = 0 ; } -#Icing top -'icit' = { +#Radar spectra (1) +'rdsp1' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; + parameterCategory = 15 ; + parameterNumber = 6 ; } -#Icing base -'icib' = { +#Radar spectra (2) +'rdsp2' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 6 ; + parameterCategory = 15 ; + parameterNumber = 7 ; + } +#Radar spectra (3) +'rdsp3' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 8 ; + } +#Parcel lifted index (to 500 hPa) +'pli' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 0 ; } -#Icing -'ici' = { +#Temperature anomaly +'ta' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 7 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Turbulence top -'turbt' = { +#Pressure anomaly +'presa' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 8 ; } -#Turbulence base -'turbb' = { +#Geopotential height anomaly +'gpa' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 9 ; } -#Turbulence -'turb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 10 ; +#Wave spectra (1) +'wvsp1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Turbulent kinetic energy -'tke' = { +#Wave spectra (2) +'wvsp2' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Wave spectra (3) +'wvsp3' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Wind direction +'wdir' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 11 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Planetary boundary layer regime -'pblreg' = { +#Sigma coordinate vertical velocity +'sgcvv' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Contrail intensity -'conti' = { +#Absolute vorticity +'absv' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Contrail engine type -'contet' = { +#Absolute divergence +'absd' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 11 ; } -#Contrail top -'contt' = { +#Vertical u-component shear +'vucsh' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 15 ; } -#Contrail base -'contb' = { +#Vertical v-component shear +'vvcsh' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 16 ; } -#Maximum snow albedo -'mxsalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; +#U-component of current +'ucurr' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Snow free albedo -'snfalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 18 ; +#V-component of current +'vcurr' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Icing -'p260163' = { +#Precipitable water +'pwat' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#In-cloud turbulence -'p260164' = { +#Saturation deficit +'satd' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 21 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Relative clear air turbulence (RCAT) -'rcat' = { +#Precipitation rate +'prate' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Supercooled large droplet probability (see Note 4) -'p260166' = { +#Thunderstorm probability +'tstm' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 23 ; + parameterNumber = 2 ; } -#Arbitrary text string -'var190m0' = { +#Convective precipitation (water) +'acpcp' = { discipline = 0 ; - parameterCategory = 190 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Seconds prior to initial reference time (defined in Section 1) -'tsec' = { +#Mixed layer depth +'mld' = { discipline = 0 ; - parameterCategory = 191 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 3 ; } -#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref -'ffldg' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Transient thermocline depth +'tthdp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 2 ; } -#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) -'ffldro' = { - discipline = 1 ; - parameterCategory = 0 ; +#Main thermocline anomaly +'mtha' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 1 ; } -#Remotely sensed snow cover -'rssc' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Best lifted index (to 500 hPa) +'bli' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 1 ; } -#Elevation of snow covered terrain -'esct' = { - discipline = 1 ; +#Soil moisture content +'ssw' = { + discipline = 2 ; parameterCategory = 0 ; parameterNumber = 3 ; } -#Snow water equivalent percent of normal -'swepon' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Baseflow-groundwater runoff -'bgrun' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Storm surface runoff -'ssrun' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - } -#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) -'cppop' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Salinity +'s' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th -'pposp' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density +'den' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Probability of 0.01 inch of precipitation (POP) -'pop' = { - discipline = 1 ; - parameterCategory = 1 ; +#Direction of ice drift +'diced' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 2 ; } -#Vegetation -'veg' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Water runoff -'watr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Evapotranspiration -'evapt' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Speed of ice drift +'siced' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 3 ; } -#Model terrain height -'mterh' = { - discipline = 2 ; - parameterCategory = 0 ; +#Ice divergence +'iced' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 7 ; } -#Land use -'landu' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 8 ; - } -#Ground heat flux -'gflux' = { +#Snowmelt +'snom' = { discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Moisture availability -'mstav' = { - discipline = 2 ; +#Direction of swell waves +'swdir' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 7 ; } -#Exchange coefficient -'sfexc' = { - discipline = 2 ; +#Secondary wave direction +'dirsw' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 12 ; } -#Plant canopy surface water -'cnwat' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Blackadar mixing length scale -'bmixl' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 14 ; +#Net short-wave radiation flux (surface) +'nswrs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 0 ; } -#Canopy conductance -'ccond' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 15 ; +#Global radiation flux +'grad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Minimal stomatal resistance -'rsmin' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Radiance (with respect to wave number) +'lwrad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 5 ; } -#Solar parameter in canopy conductance -'rcs' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 18 ; +#Radiance (with respect to wave length) +'swrad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 6 ; } -#Temperature parameter in canopy conductance -'rct' = { - discipline = 2 ; - parameterCategory = 0 ; +#Wind mixing energy +'wmixe' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 19 ; } -#Soil moisture parameter in canopy conductance -'rcsol' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 20 ; +#10 metre wind gust of at least 15 m/s +'fg10g15' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 15 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Humidity parameter in canopy conductance -'rcq' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 21 ; +#10 metre wind gust of at least 20 m/s +'fg10g20' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Column-integrated soil water -'cisoilw' = { - discipline = 2 ; +#Period corresponding to maximum individual wave height +'tmax' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 23 ; } -#Heat flux -'hflux' = { - discipline = 2 ; +#Maximum individual wave height +'hmax' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 24 ; } -#Volumetric soil moisture -'vsw' = { - discipline = 2 ; +#Model bathymetry +'wmb' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Mean wave period based on first moment +'mp1' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 25 ; } -#Volumetric wilting point -'vwiltm' = { - discipline = 2 ; +#Mean zero-crossing wave period +'mp2' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 27 ; - } -#Number of soil layers in root zone -'rlyrs' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - } -#Liquid volumetric soil moisture (non-frozen) -'liqvsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 10 ; + parameterNumber = 28 ; } -#Volumetric transpiration stress-onset (soil moisture) -'voltso' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 11 ; +#Wave spectral directional width +'wdw' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 31 ; } -#Transpiration stress-onset (soil moisture) -'transo' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 12 ; +#Mean wave period based on first moment for wind waves +'p1ww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 26 ; } -#Volumetric direct evaporation cease (soil moisture) -'voldec' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 13 ; +#Mean wave period based on second moment for wind waves +'p2ww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 29 ; } -#Direct evaporation cease (soil moisture) -'direc' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 14 ; +#Wave spectral directional width for wind waves +'dwww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 32 ; } -#Soil porosity -'soilp' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 15 ; +#Mean wave period based on first moment for swell +'p1ps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Volumetric saturation of soil moisture -'vsosm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 16 ; +#Mean wave period based on second moment for swell +'p2ps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 30 ; } -#Saturation of soil moisture -'satosm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 17 ; +#Wave spectral directional width for swell +'dwps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 33 ; } -#Estimated precipitation -'estp' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Significant height of combined wind waves and swell +'swh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Instantaneous rain rate -'irrate' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Mean wave direction +'mwd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Cloud top height -'ctoph' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#Peak wave period +'pp1d' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 34 ; } -#Cloud top height quality indicator -'ctophqi' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Mean wave period +'mwp' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Estimated u component of wind -'estu' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Coefficient of drag with waves +'cdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Estimated v component of wind -'estv' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of wind waves +'shww' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Number of pixels used -'npixu' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Mean direction of wind waves +'mdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; } -#Solar zenith angle -'solza' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 7 ; +#Mean period of wind waves +'mpww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Relative azimuth angle -'raza' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of total swell +'shts' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Reflectance in 0.6 micron channel -'rfl06' = { - discipline = 3 ; - parameterCategory = 1 ; +#Mean direction of total swell +'mdts' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#Mean period of total swell +'mpts' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Reflectance in 0.8 micron channel -'rfl08' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 10 ; +#Mean square slope of waves +'msqs' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Reflectance in 1.6 micron channel -'rfl16' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 11 ; +#10 metre wind speed +'wind' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Reflectance in 3.9 micron channel -'rfl39' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Altimeter wave height +'awh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 37 ; } -#Atmospheric divergence -'atmdiv' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Altimeter corrected wave height +'acwh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Direction of wind waves -'wvdir' = { +#Altimeter range relative correction +'arrc' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 39 ; } -#Primary wave direction -'dirpw' = { +#10 metre wind direction +'dwi' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Primary wave mean period -'perpw' = { +#2D wave spectra (single) +'d2fd' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 86 ; } -#Secondary wave mean period -'persw' = { +#Wave spectral kurtosis +'wsk' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 13 ; + parameterNumber = 43 ; } -#Current direction -'dirc' = { +#Benjamin-Feir index +'bfi' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 44 ; + } +#Eastward sea water velocity +'uoe' = { discipline = 10 ; parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 160 ; } -#Current speed -'spc' = { +#Northward sea water velocity +'von' = { discipline = 10 ; parameterCategory = 1 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + } +#Skin reservoir content +'srcrea' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated kinetic energy +'vike' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometric vertical velocity -'wz' = { +#Total column vertically-integrated enthalpy +'vithe' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 9 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Seconds prior to initial reference time (defined in Section 1) -'tsec' = { - discipline = 10 ; - parameterCategory = 191 ; +#Total column vertically-integrated potential + internal energy +'vipie' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Forecast albedo -'al' = { +#Vertical integral of potential+internal+latent energy +'vipile' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Pressure tendency -'ptend' = { +#Total column vertically-integrated total energy +'vitoe' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 21 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#ICAO Standard Atmosphere reference height -'icaht' = { +#Vertical integral of eastward heat flux +'vithee' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 3 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'vithen' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward water vapour flux +'viwve' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometrical height -'h' = { +#Vertical integral of northward water vapour flux +'viwvn' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 6 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Standard deviation of height -'hstdv' = { +#Vertically integrated moisture divergence flux +'viwvd' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Maximum temperature -'tmax' = { +#Time-integrated temperature tendency due to short-wave radiation +'srta' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfStatisticalProcessing = 1 ; } -#Minimum temperature -'tmin' = { +#Time-integrated temperature tendency due to long-wave radiation +'trta' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 5 ; + parameterNumber = 23 ; + typeOfStatisticalProcessing = 1 ; } -#Dew point temperature -'dpt' = { +#Time-integrated temperature tendency due to short wave radiation, clear sky +'srtca' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 24 ; + typeOfStatisticalProcessing = 1 ; } -#Lapse rate -'lapr' = { +#Time-integrated temperature tendency due to long-wave radiation, clear sky +'trtca' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 1 ; } -#Visibility -'vis' = { +#Time-integrated updraught mass flux +'umfa' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (1) -'rdsp1' = { +#Time-integrated downdraught mass flux +'dmfa' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 28 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (2) -'rdsp2' = { +#Time-integrated updraught detrainment rate +'udra' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 7 ; + parameterCategory = 3 ; + parameterNumber = 29 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (3) -'rdsp3' = { +#Time-integrated downdraught detrainment rate +'ddra' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 30 ; + typeOfStatisticalProcessing = 1 ; } -#Parcel lifted index (to 500 hPa) -'pli' = { +#Time-integrated total precipitation flux +'tpfa' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; } -#Temperature anomaly -'ta' = { +#Time-integrated turbulent diffusion coefficient for heat +'tdcha' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Pressure anomaly -'presa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 8 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 1 ; } -#Geopotential height anomaly -'gpa' = { +#Time-integrated temperature tendency due to parametrisations +'ttpha' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } -#Wave spectra (1) -'wvsp1' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Wave spectra (2) -'wvsp2' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } -#Wave spectra (3) -'wvsp3' = { - discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 2 ; + parameterNumber = 26 ; + typeOfStatisticalProcessing = 1 ; } -#Sigma coordinate vertical velocity -'sgcvv' = { +#Time-integrated specific humidity tendency due to parametrisations +'qtpha' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 108 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute vorticity -'absv' = { +#Time-integrated eastward wind tendency due to parametrisations +'utpha' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 39 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute divergence -'absd' = { +#Time-integrated northward wind tendency due to parametrisations +'vtpha' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 11 ; + parameterNumber = 40 ; + typeOfStatisticalProcessing = 1 ; } -#Vertical u-component shear -'vucsh' = { +#Time-mean surface net radiation flux (SW and LW) +'msnrf' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 15 ; + parameterCategory = 19 ; + parameterNumber = 46 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical v-component shear -'vvcsh' = { +#Surface runoff +'sro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Nitrogen dioxide mass mixing ratio +'no2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + is_chemical = 1 ; } -#U-component of current -'ucurr' = { - discipline = 10 ; - parameterCategory = 1 ; +#Sulphur dioxide mass mixing ratio +'so2' = { + discipline = 0 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 8 ; + is_chemical = 1 ; } -#V-component of current -'vcurr' = { - discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Carbon monoxide mass mixing ratio +'co' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 4 ; + is_chemical = 1 ; } -#Precipitable water -'pwat' = { +#Ozone mass mixing ratio (full chemistry scheme) +'go3' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + is_chemical = 1 ; } -#Saturation deficit -'satd' = { +#Nitrogen dioxide mass mixing ratio difference +'no2diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Precipitation rate -'prate' = { +#Sulphur dioxide mass mixing ratio difference +'so2diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Thunderstorm probability -'tstm' = { +#Carbon monoxide mass mixing ratio difference +'codiff' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 4 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Convective precipitation (water) -'acpcp' = { +#Ozone mass mixing ratio difference (full chemistry scheme) +'go3diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Mixed layer depth -'mld' = { +#Convective inhibition +'cin' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 3 ; + parameterCategory = 7 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Transient thermocline depth -'tthdp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Orography +'orog' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; } -#Main thermocline anomaly -'mtha' = { +#Friction velocity +'zust' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; } -#Best lifted index (to 500 hPa) -'bli' = { +#Mean 2 metre temperature +'mean2t' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 1 ; - } -#Soil moisture content -'ssw' = { - discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Salinity -'s' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; +#Lake total depth +'dl' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Density -'den' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 10 ; +#Lake mix-layer temperature +'lmlt' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Direction of ice drift -'diced' = { - discipline = 10 ; +#Lake mix-layer depth +'lmld' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Speed of ice drift -'siced' = { - discipline = 10 ; +#Lake bottom temperature +'lblt' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 162 ; + typeOfSecondFixedSurface = 255 ; } -#Ice divergence -'iced' = { - discipline = 10 ; +#Lake total layer temperature +'ltlt' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Direction of swell waves -'swdir' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Lake shape factor +'lshf' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Secondary wave direction -'dirsw' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Lake ice surface temperature +'lict' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; } -#Net short-wave radiation flux (surface) -'nswrs' = { +#Lake ice total depth +'licd' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; } -#Global radiation flux -'grad' = { +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 3 ; + parameterCategory = 19 ; + parameterNumber = 44 ; } -#Radiance (with respect to wave number) -'lwrad' = { +#Duct base height +'dctb' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 41 ; } -#Radiance (with respect to wave length) -'swrad' = { +#Trapping layer base height +'tplb' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 6 ; + parameterCategory = 19 ; + parameterNumber = 42 ; } -#Wind mixing energy -'wmixe' = { +#Trapping layer top height +'tplt' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 19 ; + parameterCategory = 19 ; + parameterNumber = 43 ; } -#10 metre wind gust of at least 15 m/s -'fg10g15' = { +#Soil moisture +'sm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#10 metre u-component of neutral wind +'u10n' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 56 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 15 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } -#10 metre wind gust of at least 20 m/s -'fg10g20' = { +#10 metre v-component of neutral wind +'v10n' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 57 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Convective inhibition -'cin' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Orography -'orog' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - } -#Soil moisture -'sm' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 22 ; } #Soil temperature 'st' = { @@ -10782,4 +10752,34 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; + } +#U-component surface stokes drift +'ust' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 21 ; + } +#V-component surface stokes drift +'vst' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#100 metre U wind component +'u100' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'v100' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; } diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index a596d2950..ed770e28f 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -23,6 +23,30 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; } +#Total precipitation of at least 10 mm +'Total precipitation of at least 10 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 10 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Total precipitation of at least 20 mm +'Total precipitation of at least 20 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } #Total precipitation of at least 40 mm 'Total precipitation of at least 40 mm' = { discipline = 0 ; @@ -107,6 +131,24 @@ scaleFactorOfLowerLimit = -2 ; probabilityType = 3 ; } +#Stream function +'Stream function' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + } +#Velocity potential +'Velocity potential' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + } +#Potential temperature +'Potential temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } #Wind speed 'Wind speed' = { discipline = 0 ; @@ -230,6 +272,12 @@ parameterCategory = 2 ; parameterNumber = 6 ; } +#Pressure +'Pressure' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + } #Downward UV radiation at the surface 'Downward UV radiation at the surface' = { discipline = 0 ; @@ -246,6 +294,20 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Convective available potential energy +'Convective available potential energy' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Potential vorticity +'Potential vorticity' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + } #Leaf area index, low vegetation 'Leaf area index, low vegetation' = { discipline = 2 ; @@ -299,6 +361,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Maximum temperature at 2 metres in the last 6 hours +'Maximum temperature at 2 metres in the last 6 hours' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 2 ; + lengthOfTimeRange = 6 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'Minimum temperature at 2 metres in the last 6 hours' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 3 ; + lengthOfTimeRange = 6 ; + } #Surface emissivity 'Surface emissivity' = { discipline = 2 ; @@ -306,6 +392,57 @@ parameterNumber = 62 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'Geopotential' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'Temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'U component of wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'V component of wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'Specific humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'Surface pressure' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'Vertical velocity' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Total column water +'Total column water' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column vertically-integrated water vapour 'Total column vertically-integrated water vapour' = { discipline = 0 ; @@ -314,6 +451,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'Vorticity (relative)' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation 'Boundary layer dissipation' = { discipline = 0 ; @@ -321,6 +464,22 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'Surface sensible heat flux' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'Surface latent heat flux' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Charnock 'Charnock' = { discipline = 10 ; @@ -343,6 +502,31 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Mean sea level pressure +'Mean sea level pressure' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'Divergence' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'Geopotential height' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'Relative humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Boundary layer height 'Boundary layer height' = { discipline = 0 ; @@ -373,6 +557,42 @@ parameterCategory = 3 ; parameterNumber = 22 ; } +#10 metre U wind component +'10 metre U wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#10 metre V wind component +'10 metre V wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre temperature +'2 metre temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre dewpoint temperature +'2 metre dewpoint temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface short-wave (solar) radiation downwards 'Surface short-wave (solar) radiation downwards' = { discipline = 0 ; @@ -381,6 +601,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'Land-sea mask' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) 'Surface roughness (climatological)' = { discipline = 2 ; @@ -397,6 +624,22 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface net short-wave (solar) radiation +'Surface net short-wave (solar) radiation' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'Surface net long-wave (thermal) radiation' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation 'Top net short-wave (solar) radiation' = { discipline = 0 ; @@ -405,6 +648,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'Top net long-wave (thermal) radiation' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress 'Time-integrated eastward turbulent surface stress' = { discipline = 0 ; @@ -421,10 +672,24 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Eastward gravity wave surface stress -'Eastward gravity wave surface stress' = { +#Sunshine duration +'Sunshine duration' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 6 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Brightness temperature +'Brightness temperature' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 4 ; + } +#Eastward gravity wave surface stress +'Eastward gravity wave surface stress' = { + discipline = 0 ; + parameterCategory = 3 ; parameterNumber = 16 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; @@ -470,6 +735,15 @@ parameterCategory = 14 ; parameterNumber = 1 ; } +#10 metre wind speed +'10 metre wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Top net short-wave (solar) radiation, clear sky 'Top net short-wave (solar) radiation, clear sky' = { discipline = 0 ; @@ -555,6 +829,13 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Skin temperature +'Skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + } #Temperature of snow layer 'Temperature of snow layer' = { discipline = 2 ; @@ -4618,6110 +4899,5799 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Total snowfall -'Total snowfall' = { +#Latent heat net flux +'Latent heat net flux' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Total snow precipitation -'Total snow precipitation' = { +#Heat index +'Heat index' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Total column integrated ozone -'Total column integrated ozone' = { +#Wind chill factor +'Wind chill factor' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#2 metre relative humidity -'2 metre relative humidity' = { +#Minimum dew point depression +'Minimum dew point depression' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Apparent temperature -'Apparent temperature' = { +#Snow phase change heat flux +'Snow phase change heat flux' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 21 ; + parameterNumber = 16 ; } -#Haines Index -'Haines Index' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Vapor pressure +'Vapor pressure' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Cloud cover -'Cloud cover' = { +#Large scale precipitation (non-convective) +'Large scale precipitation (non-convective)' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Evaporation -'Evaporation' = { +#Snowfall rate water equivalent +'Snowfall rate water equivalent' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 12 ; } -#10 metre wind direction -'10 metre wind direction' = { +#Convective snow +'Convective snow' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 1 ; + parameterNumber = 14 ; } -#Direct short wave radiation flux -'Direct short wave radiation flux' = { +#Large scale snow +'Large scale snow' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Diffuse short wave radiation flux -'Diffuse short wave radiation flux' = { +#Snow age +'Snow age' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 14 ; + parameterCategory = 1 ; + parameterNumber = 17 ; } -#Evaporation in the last 6 hours -'Evaporation in the last 6 hours' = { +#Absolute humidity +'Absolute humidity' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; + parameterNumber = 18 ; } -#Evaporation in the last 24 hours -'Evaporation in the last 24 hours' = { +#Precipitation type +'Precipitation type' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + parameterNumber = 19 ; } -#Fraction of snow cover -'Fraction of snow cover' = { +#Integrated liquid water +'Integrated liquid water' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 121 ; + parameterNumber = 20 ; } -#Clear air turbulence (CAT) -'Clear air turbulence (CAT)' = { +#Condensate +'Condensate' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 29 ; + parameterCategory = 1 ; + parameterNumber = 21 ; } -#Mountain wave turbulence (eddy dissipation rate) -'Mountain wave turbulence (eddy dissipation rate)' = { +#Cloud mixing ratio +'Cloud mixing ratio' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 28 ; + parameterCategory = 1 ; + parameterNumber = 22 ; } -#Specific rain water content (convective) -'Specific rain water content (convective)' = { +#Ice water mixing ratio +'Ice water mixing ratio' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 144 ; + parameterNumber = 23 ; } -#Specific snow water content (convective) -'Specific snow water content (convective)' = { +#Rain mixing ratio +'Rain mixing ratio' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 145 ; + parameterNumber = 24 ; } -#Glacier mask -'Glacier mask' = { - discipline = 2 ; - parameterCategory = 5 ; - parameterNumber = 0 ; +#Snow mixing ratio +'Snow mixing ratio' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 25 ; } -#Precipitation type (most severe) in the last 1 hour -'Precipitation type (most severe) in the last 1 hour' = { +#Horizontal moisture convergence +'Horizontal moisture convergence' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 1 ; + parameterNumber = 26 ; } -#Precipitation type (most severe) in the last 3 hours -'Precipitation type (most severe) in the last 3 hours' = { +#Maximum relative humidity +'Maximum relative humidity' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 3 ; + parameterNumber = 27 ; } -#Precipitation type (most frequent) in the last 1 hour -'Precipitation type (most frequent) in the last 1 hour' = { +#Maximum absolute humidity +'Maximum absolute humidity' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 1 ; + parameterNumber = 28 ; } -#Precipitation type (most frequent) in the last 3 hours -'Precipitation type (most frequent) in the last 3 hours' = { +#Total snowfall +'Total snowfall' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 3 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Precipitation type (most severe) in the last 6 hours -'Precipitation type (most severe) in the last 6 hours' = { +#Precipitable water category +'Precipitable water category' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 6 ; + parameterNumber = 30 ; } -#Precipitation type (most frequent) in the last 6 hours -'Precipitation type (most frequent) in the last 6 hours' = { +#Hail +'Hail' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 6 ; + parameterNumber = 31 ; } -#Soil temperature -'Soil temperature' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - } -#Downward short-wave radiation flux, clear sky -'Downward short-wave radiation flux, clear sky' = { +#Graupel (snow pellets) +'Graupel (snow pellets)' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 52 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Upward short-wave radiation flux, clear sky -'Upward short-wave radiation flux, clear sky' = { +#Categorical rain +'Categorical rain' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; + parameterCategory = 1 ; + parameterNumber = 33 ; } -#Downward long-wave radiation flux, clear sky -'Downward long-wave radiation flux, clear sky' = { +#Categorical freezing rain +'Categorical freezing rain' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 8 ; - } -#Soil heat flux -'Soil heat flux' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 26 ; - } -#Percolation rate -'Percolation rate' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Soil depth -'Soil depth' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 27 ; + parameterCategory = 1 ; + parameterNumber = 34 ; } -#Soil moisture -'Soil moisture' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; +#Categorical ice pellets +'Categorical ice pellets' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 35 ; } -#Accumulated surface upward short-wave radiation flux, clear sky -'Accumulated surface upward short-wave radiation flux, clear sky' = { +#Categorical snow +'Categorical snow' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 1 ; + parameterNumber = 36 ; } -#Percolation -'Percolation' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 177 ; - typeOfStatisticalProcessing = 1 ; +#Convective precipitation rate +'Convective precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 37 ; } -#Evapotranspiration rate -'Evapotranspiration rate' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; +#Horizontal moisture divergence +'Horizontal moisture divergence' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 38 ; } -#Time-mean evapotranspiration rate in the last 24h -'Time-mean evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; +#Percent frozen precipitation +'Percent frozen precipitation' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } -#Potential evapotranspiration rate -'Potential evapotranspiration rate' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - } -#Time-integrated potential evapotranspiration rate in the last 24h -'Time-integrated potential evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; +#Potential evaporation +'Potential evaporation' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Time-mean potential evapotranspiration rate in the last 24h -'Time-mean potential evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Snow cover +'Snow cover' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 42 ; } -#Time-mean volumetric soil moisture -'Time-mean volumetric soil moisture' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Rain fraction of total cloud water +'Rain fraction of total cloud water' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 43 ; } -#Water runoff and drainage rate -'Water runoff and drainage rate' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; +#Rime factor +'Rime factor' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 44 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'Time-integrated water runoff and drainage rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; +#Total column integrated rain +'Total column integrated rain' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 45 ; } -#Time-mean water runoff and drainage rate in the last 24h -'Time-mean water runoff and drainage rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Total column integrated snow +'Total column integrated snow' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 46 ; } -#Time-mean snow depth water equivalent -'Time-mean snow depth water equivalent' = { +#Large scale water precipitation (non-convective) +'Large scale water precipitation (non-convective)' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterNumber = 47 ; } -#Time-mean skin temperature -'Time-mean skin temperature' = { +#Convective water precipitation +'Convective water precipitation' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterCategory = 1 ; + parameterNumber = 48 ; } -#Snow melt rate -'Snow melt rate' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; +#Total water precipitation +'Total water precipitation' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 49 ; } -#Time-integrated snow melt rate in the last 24h -'Time-integrated snow melt rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; +#Total snow precipitation +'Total snow precipitation' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Cloudy brightness temperature -'Cloudy brightness temperature' = { - discipline = 3 ; +#Total column water (Vertically integrated total water (vapour + cloud water/ice)) +'Total column water (Vertically integrated total water (vapour + cloud water/ice))' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 14 ; + parameterNumber = 51 ; } -#Clear-sky brightness temperature -'Clear-sky brightness temperature' = { - discipline = 3 ; +#Total precipitation rate +'Total precipitation rate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 15 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; } -#Cloudy reflectance -'Cloudy reflectance' = { - discipline = 3 ; +#Total snowfall rate water equivalent +'Total snowfall rate water equivalent' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 31 ; + parameterNumber = 53 ; } -#Clear reflectance -'Clear reflectance' = { - discipline = 3 ; +#Large scale precipitation rate +'Large scale precipitation rate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 32 ; + parameterNumber = 54 ; } -#Scaled radiance -'Scaled radiance' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Total snowfall rate +'Total snowfall rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; } -#Scaled albedo -'Scaled albedo' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Convective snowfall rate +'Convective snowfall rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 58 ; } -#Scaled brightness temperature -'Scaled brightness temperature' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Large scale snowfall rate +'Large scale snowfall rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 59 ; } -#Scaled precipitable water -'Scaled precipitable water' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 3 ; +#Water equivalent of accumulated snow depth (deprecated) +'Water equivalent of accumulated snow depth (deprecated)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Scaled lifted index -'Scaled lifted index' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Rain precipitation rate +'Rain precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 65 ; } -#Scaled cloud top pressure -'Scaled cloud top pressure' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 5 ; +#Snow precipitation rate +'Snow precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; } -#Scaled skin temperature -'Scaled skin temperature' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Freezing rain precipitation rate +'Freezing rain precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 67 ; } -#Cloud mask -'Cloud mask' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Ice pellets precipitation rate +'Ice pellets precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 68 ; } -#Pixel scene type -'Pixel scene type' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 8 ; +#Maximum wind speed +'Maximum wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; } -#Fire detection indicator -'Fire detection indicator' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 9 ; +#Wind speed (gust) +'Wind speed (gust)' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; } -#Forest fire weather index (as defined by the Canadian Forest Service) -'Forest fire weather index (as defined by the Canadian Forest Service)' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 5 ; +#u-component of wind (gust) +'u-component of wind (gust)' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; } -#Fine fuel moisture code (as defined by the Canadian Forest Service) -'Fine fuel moisture code (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#v-component of wind (gust) +'v-component of wind (gust)' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + } +#Vertical speed shear +'Vertical speed shear' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + } +#Horizontal momentum flux +'Horizontal momentum flux' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 26 ; + } +#U-component storm motion +'U-component storm motion' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 27 ; + } +#V-component storm motion +'V-component storm motion' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 28 ; + } +#Drag coefficient +'Drag coefficient' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + } +#Frictional velocity +'Frictional velocity' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 30 ; + } +#Pressure reduced to MSL +'Pressure reduced to MSL' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Altimeter setting +'Altimeter setting' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + } +#Thickness +'Thickness' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 12 ; + } +#Pressure altitude +'Pressure altitude' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + } +#Density altitude +'Density altitude' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + } +#5-wave geopotential height +'5-wave geopotential height' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + } +#Zonal flux of gravity wave stress +'Zonal flux of gravity wave stress' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + } +#Meridional flux of gravity wave stress +'Meridional flux of gravity wave stress' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + } +#5-wave geopotential height anomaly +'5-wave geopotential height anomaly' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + } +#Net short-wave radiation flux (top of atmosphere) +'Net short-wave radiation flux (top of atmosphere)' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 6 ; + parameterNumber = 1 ; } -#Duff moisture code (as defined by the Canadian Forest Service) -'Duff moisture code (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#Downward short-wave radiation flux +'Downward short-wave radiation flux' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 7 ; } -#Drought code (as defined by the Canadian Forest Service) -'Drought code (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#Upward short-wave radiation flux +'Upward short-wave radiation flux' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 8 ; } -#Initial fire spread index (as defined by the Canadian Forest Service) -'Initial fire spread index (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#Net short wave radiation flux +'Net short wave radiation flux' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 9 ; } -#Fire buildup index (as defined by the Canadian Forest Service) -'Fire buildup index (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#Photosynthetically active radiation +'Photosynthetically active radiation' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 10 ; } -#Fire daily severity rating (as defined by the Canadian Forest Service) -'Fire daily severity rating (as defined by the Canadian Forest Service)' = { - discipline = 2 ; +#Net short-wave radiation flux, clear sky +'Net short-wave radiation flux, clear sky' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 11 ; } -#Cloudy radiance (with respect to wave number) -'Cloudy radiance (with respect to wave number)' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } -#Clear-sky radiance (with respect to wave number) -'Clear-sky radiance (with respect to wave number)' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#Downward UV radiation +'Downward UV radiation' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 12 ; } -#Wind speed -'Wind speed' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#UV index (under clear sky) +'UV index (under clear sky)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 50 ; } -#Aerosol optical thickness at 0.635 um -'Aerosol optical thickness at 0.635 um' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#UV index +'UV index' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 51 ; } -#Aerosol optical thickness at 0.810 um -'Aerosol optical thickness at 0.810 um' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Net long wave radiation flux (surface) +'Net long wave radiation flux (surface)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; } -#Aerosol optical thickness at 1.640 um -'Aerosol optical thickness at 1.640 um' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Net long wave radiation flux (top of atmosphere) +'Net long wave radiation flux (top of atmosphere)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; } -#Angstrom coefficient -'Angstrom coefficient' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Downward long-wave radiation flux +'Downward long-wave radiation flux' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 3 ; } -#Keetch-Byram drought index -'Keetch-Byram drought index' = { - discipline = 2 ; - parameterCategory = 4 ; +#Upward long-wave radiation flux +'Upward long-wave radiation flux' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 4 ; + } +#Net long wave radiation flux +'Net long wave radiation flux' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + } +#Net long-wave radiation flux, clear sky +'Net long-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 6 ; + } +#Cloud Ice +'Cloud Ice' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Cloud water +'Cloud water' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 6 ; + } +#Cloud amount +'Cloud amount' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 7 ; + } +#Cloud type +'Cloud type' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 8 ; + } +#Thunderstorm maximum tops +'Thunderstorm maximum tops' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 9 ; + } +#Thunderstorm coverage +'Thunderstorm coverage' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 10 ; + } +#Cloud top +'Cloud top' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 12 ; } -#Drought factor (as defined by the Australian forest service) -'Drought factor (as defined by the Australian forest service)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Ceiling +'Ceiling' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 13 ; } -#Rate of spread (as defined by the Australian forest service) -'Rate of spread (as defined by the Australian forest service)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Non-convective cloud cover +'Non-convective cloud cover' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 14 ; } -#Fire danger index (as defined by the Australian forest service) -'Fire danger index (as defined by the Australian forest service)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Cloud work function +'Cloud work function' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 15 ; } -#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Convective cloud efficiency +'Convective cloud efficiency' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 16 ; } -#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total condensate +'Total condensate' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 17 ; } -#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud water +'Total column-integrated cloud water' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 18 ; } -#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud ice +'Total column-integrated cloud ice' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 19 ; } -#Volumetric soil ice -'Volumetric soil ice' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 38 ; +#Total column-integrated condensate +'Total column-integrated condensate' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 20 ; } -#Time integral of total solid precipitation flux -'Time integral of total solid precipitation flux' = { +#Ice fraction of total condensate +'Ice fraction of total condensate' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 128 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 6 ; + parameterNumber = 21 ; } -#10 metre eastward wind gust since previous post-processing -'10 metre eastward wind gust since previous post-processing' = { +#Cloud ice mixing ratio +'Cloud ice mixing ratio' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#10 metre northward wind gust since previous post-processing -'10 metre northward wind gust since previous post-processing' = { +#Sunshine +'Sunshine' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#Fog -'Fog' = { +#Horizontal extent of cumulonimbus (CB) +'Horizontal extent of cumulonimbus (CB)' = { discipline = 0 ; parameterCategory = 6 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 25 ; } -#Time-integrated eastward turbulent surface stress due to orographic form drag -'Time-integrated eastward turbulent surface stress due to orographic form drag' = { +#K index +'K index' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 64 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 2 ; } -#Time-integrated northward turbulent surface stress due to orographic form drag -'Time-integrated northward turbulent surface stress due to orographic form drag' = { +#KO index +'KO index' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 65 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 3 ; } -#Time-integrated eastward turbulent surface stress due to surface roughness -'Time-integrated eastward turbulent surface stress due to surface roughness' = { +#Total totals index +'Total totals index' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 4 ; } -#Time-integrated northward turbulent surface stress due to surface roughness -'Time-integrated northward turbulent surface stress due to surface roughness' = { +#Sweat index +'Sweat index' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 67 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 5 ; } -#Saturation specific humidity with respect to water -'Saturation specific humidity with respect to water' = { +#Storm relative helicity +'Storm relative helicity' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 168 ; + parameterCategory = 7 ; + parameterNumber = 8 ; } -#Total column integrated saturation specific humidity with respect to water -'Total column integrated saturation specific humidity with respect to water' = { +#Energy helicity index +'Energy helicity index' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 169 ; + parameterCategory = 7 ; + parameterNumber = 9 ; + } +#Surface lifted index +'Surface lifted index' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 10 ; + } +#Best (4-layer) lifted index +'Best (4-layer) lifted index' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 11 ; + } +#Aerosol type +'Aerosol type' = { + discipline = 0 ; + parameterCategory = 13 ; + parameterNumber = 0 ; + } +#Total ozone +'Total ozone' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 0 ; + } +#Total column integrated ozone +'Total column integrated ozone' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 2 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Universal thermal climate index -'Universal thermal climate index' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base spectrum width +'Base spectrum width' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 0 ; } -#Mean radiant temperature -'Mean radiant temperature' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base reflectivity +'Base reflectivity' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 1 ; } -#Fraction of Malaria cases -'Fraction of Malaria cases' = { - discipline = 20 ; - parameterCategory = 1 ; +#Base radial velocity +'Base radial velocity' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 2 ; + } +#Vertically-integrated liquid +'Vertically-integrated liquid' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 3 ; + } +#Layer-maximum base reflectivity +'Layer-maximum base reflectivity' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 4 ; + } +#Precipitation +'Precipitation' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 5 ; + } +#Air concentration of Caesium 137 +'Air concentration of Caesium 137' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 0 ; } -#Malaria circumsporozoite protein ratio -'Malaria circumsporozoite protein ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of Iodine 131 +'Air concentration of Iodine 131' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 1 ; } -#Plasmodium falciparum entomological inoculation rate -'Plasmodium falciparum entomological inoculation rate' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of radioactive pollutant +'Air concentration of radioactive pollutant' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 2 ; } -#Human bite rate by anopheles vectors -'Human bite rate by anopheles vectors' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Caesium 137 +'Ground deposition of Caesium 137' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 3 ; } -#Malaria immunity ratio -'Malaria immunity ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Iodine 131 +'Ground deposition of Iodine 131' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 4 ; } -#Falciparum parasite ratio -'Falciparum parasite ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of radioactive pollutant +'Ground deposition of radioactive pollutant' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 5 ; } -#Detectable falciparum parasite ratio (after day 10) -'Detectable falciparum parasite ratio (after day 10)' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of caesium pollutant +'Time-integrated air concentration of caesium pollutant' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 6 ; } -#Anopheles vector to host ratio -'Anopheles vector to host ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of iodine pollutant +'Time-integrated air concentration of iodine pollutant' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 7 ; } -#Anopheles vector density -'Anopheles vector density' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of radioactive pollutant +'Time-integrated air concentration of radioactive pollutant' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 8 ; } -#Fraction of malarial vector reproductive habitat -'Fraction of malarial vector reproductive habitat' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 9 ; - } -#Population density -'Population density' = { - discipline = 20 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Wet bulb globe temperature -'Wet bulb globe temperature' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Globe temperature -'Globe temperature' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Humidex -'Humidex' = { - discipline = 20 ; - parameterCategory = 0 ; +#Volcanic ash +'Volcanic ash' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 4 ; } -#Effective temperature -'Effective temperature' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing top +'Icing top' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 5 ; } -#Normal effective temperature -'Normal effective temperature' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing base +'Icing base' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 6 ; } -#Standard effective temperature -'Standard effective temperature' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing +'Icing' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 7 ; } -#Physiological equivalent temperature -'Physiological equivalent temperature' = { - discipline = 20 ; - parameterCategory = 0 ; +#Turbulence top +'Turbulence top' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 8 ; } -#Saturation water vapour pressure -'Saturation water vapour pressure' = { +#Turbulence base +'Turbulence base' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 9 ; } -#Wet-bulb potential temperature -'Wet-bulb potential temperature' = { +#Turbulence +'Turbulence' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 10 ; } -#Sea ice thickness -'Sea ice thickness' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulent kinetic energy +'Turbulent kinetic energy' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 11 ; } -#Sea ice area fraction -'Sea ice area fraction' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Eastward sea ice velocity -'Eastward sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Planetary boundary layer regime +'Planetary boundary layer regime' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 12 ; } -#Northward sea ice velocity -'Northward sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail intensity +'Contrail intensity' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 13 ; } -#Sea ice albedo -'Sea ice albedo' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail engine type +'Contrail engine type' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice surface temperature -'Sea ice surface temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice growth -'Sea ice growth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice volume per unit area -'Sea ice volume per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail top +'Contrail top' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow volume over sea ice per unit area -'Snow volume over sea ice per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail base +'Contrail base' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Vertically averaged sea ice temperature -'Vertically averaged sea ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Snow temperature over sea ice -'Snow temperature over sea ice' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice temperature at the sea ice and snow interface -'Sea ice temperature at the sea ice and snow interface' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Underside ice temperature -'Underside ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice heat content -'Sea ice heat content' = { - discipline = 10 ; - parameterCategory = 2 ; +#Maximum snow albedo +'Maximum snow albedo' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow heat content over sea ice -'Snow heat content over sea ice' = { - discipline = 10 ; - parameterCategory = 2 ; +#Snow free albedo +'Snow free albedo' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice freeboard thickness -'Sea ice freeboard thickness' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; } -#Sea ice melt pond fraction -'Sea ice melt pond fraction' = { - discipline = 10 ; - parameterCategory = 2 ; +#Icing +'Icing' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond depth -'Sea ice melt pond depth' = { - discipline = 10 ; - parameterCategory = 2 ; +#In-cloud turbulence +'In-cloud turbulence' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond volume per unit area -'Sea ice melt pond volume per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; +#Relative clear air turbulence (RCAT) +'Relative clear air turbulence (RCAT)' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice fraction tendency due to parameterization -'Sea ice fraction tendency due to parameterization' = { - discipline = 10 ; - parameterCategory = 2 ; +#Supercooled large droplet probability (see Note 4) +'Supercooled large droplet probability (see Note 4)' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'X-component of sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Arbitrary text string +'Arbitrary text string' = { + discipline = 0 ; + parameterCategory = 190 ; + parameterNumber = 0 ; } -#Y-component of sea ice velocity -'Y-component of sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Seconds prior to initial reference time (defined in Section 1) +'Seconds prior to initial reference time (defined in Section 1)' = { + discipline = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea ice temperature -'Sea ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref +'Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Sea surface practical salinity -'Sea surface practical salinity' = { - discipline = 10 ; - parameterCategory = 3 ; +#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) +'Flash flood runoff (Encoded as an accumulation over a floating subinterval of time)' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Remotely sensed snow cover +'Remotely sensed snow cover' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Elevation of snow covered terrain +'Elevation of snow covered terrain' = { + discipline = 1 ; + parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface temperature -'Sea surface temperature' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Snow water equivalent percent of normal +'Snow water equivalent percent of normal' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Depth of 14 C isotherm -'Depth of 14 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Baseflow-groundwater runoff +'Baseflow-groundwater runoff' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Depth of 17 C isotherm -'Depth of 17 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Storm surface runoff +'Storm surface runoff' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Depth of 20 C isotherm -'Depth of 20 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) +'Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation)' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Depth of 26 C isotherm -'Depth of 26 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th +'Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Depth of 28 C isotherm -'Depth of 28 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Probability of 0.01 inch of precipitation (POP) +'Probability of 0.01 inch of precipitation (POP)' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Barotropic stream function -'Barotropic stream function' = { - discipline = 10 ; - parameterCategory = 191 ; +#Vegetation +'Vegetation' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Surface downward heat flux -'Surface downward heat flux' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Water runoff +'Water runoff' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Northward surface stress -'Northward surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; +#Evapotranspiration +'Evapotranspiration' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Eastward surface stress -'Eastward surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Model terrain height +'Model terrain height' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Y-component of surface stress -'Y-component of surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; +#Land use +'Land use' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of surface stress -'X-component of surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ground heat flux +'Ground heat flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'Ocean mixed layer depth defined by sigma theta 0.01 kg m-3' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Moisture availability +'Moisture availability' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'Ocean mixed layer depth defined by sigma theta 0.03 kg m-3' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Exchange coefficient +'Exchange coefficient' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'Ocean mixed layer depth defined by sigma theta 0.125 kg m-3' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Plant canopy surface water +'Plant canopy surface water' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Ocean mixed layer depth defined by temperature 0.2 C -'Ocean mixed layer depth defined by temperature 0.2 C' = { - discipline = 10 ; - parameterCategory = 4 ; +#Blackadar mixing length scale +'Blackadar mixing length scale' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Ocean mixed layer depth defined by temperature 0.5 C -'Ocean mixed layer depth defined by temperature 0.5 C' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Canopy conductance +'Canopy conductance' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Average sea water practical salinity in the upper 300 m -'Average sea water practical salinity in the upper 300 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Minimal stomatal resistance +'Minimal stomatal resistance' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Average sea water practical salinity in the upper 700 m -'Average sea water practical salinity in the upper 700 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar parameter in canopy conductance +'Solar parameter in canopy conductance' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 18 ; } -#Total column average sea water practical salinity -'Total column average sea water practical salinity' = { - discipline = 10 ; - parameterCategory = 4 ; +#Temperature parameter in canopy conductance +'Temperature parameter in canopy conductance' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } +#Soil moisture parameter in canopy conductance +'Soil moisture parameter in canopy conductance' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 20 ; + } +#Humidity parameter in canopy conductance +'Humidity parameter in canopy conductance' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated heat content in the upper 300 m -'Vertically-integrated heat content in the upper 300 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Column-integrated soil water +'Column-integrated soil water' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 23 ; } -#Vertically-integrated heat content in the upper 700 m -'Vertically-integrated heat content in the upper 700 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Heat flux +'Heat flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 24 ; } -#Total column of heat content -'Total column of heat content' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric soil moisture +'Volumetric soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; } -#Sea surface height -'Sea surface height' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric wilting point +'Volumetric wilting point' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Steric change in sea surface height -'Steric change in sea surface height' = { - discipline = 10 ; +#Number of soil layers in root zone +'Number of soil layers in root zone' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 6 ; } -#Halosteric change in sea surface height -'Halosteric change in sea surface height' = { - discipline = 10 ; +#Liquid volumetric soil moisture (non-frozen) +'Liquid volumetric soil moisture (non-frozen)' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Thermosteric change in sea surface height -'Thermosteric change in sea surface height' = { - discipline = 10 ; +#Volumetric transpiration stress-onset (soil moisture) +'Volumetric transpiration stress-onset (soil moisture)' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 11 ; } -#Thermocline depth -'Thermocline depth' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Transpiration stress-onset (soil moisture) +'Transpiration stress-onset (soil moisture)' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Bottom pressure equivalent height -'Bottom pressure equivalent height' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Net surface upward water flux -'Net surface upward water flux' = { - discipline = 10 ; +#Volumetric direct evaporation cease (soil moisture) +'Volumetric direct evaporation cease (soil moisture)' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux into sea water (from rivers) -'Fresh water flux into sea water (from rivers)' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Virtual salt flux into sea water -'Virtual salt flux into sea water' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Heat flux correction -'Heat flux correction' = { - discipline = 10 ; +#Direct evaporation cease (soil moisture) +'Direct evaporation cease (soil moisture)' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux correction -'Fresh water flux correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Virtual salt flux correction -'Virtual salt flux correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Turbocline depth (kz=5e-4) -'Turbocline depth (kz=5e-4)' = { - discipline = 10 ; - parameterCategory = 4 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of surface sea water velocity -'Y-component of surface sea water velocity' = { - discipline = 10 ; +#Soil porosity +'Soil porosity' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 15 ; } -#X-component of surface sea water velocity -'X-component of surface sea water velocity' = { - discipline = 10 ; +#Volumetric saturation of soil moisture +'Volumetric saturation of soil moisture' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Northward surface sea water velocity -'Northward surface sea water velocity' = { - discipline = 10 ; +#Saturation of soil moisture +'Saturation of soil moisture' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 17 ; } -#Eastward surface sea water velocity -'Eastward surface sea water velocity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated precipitation +'Estimated precipitation' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Heat Content surface to 26C isotherm -'Heat Content surface to 26C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; +#Instantaneous rain rate +'Instantaneous rain rate' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Sea surface height tendency due to parameterization -'Sea surface height tendency due to parameterization' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud top height +'Cloud top height' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Sea surface height with inverse barometer correction -'Sea surface height with inverse barometer correction' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; +#Cloud top height quality indicator +'Cloud top height quality indicator' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Average sea water potential temperature in the upper 300m -'Average sea water potential temperature in the upper 300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Estimated u component of wind +'Estimated u component of wind' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Sea surface salinity -'Sea surface salinity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated v component of wind +'Estimated v component of wind' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Vertically integrated sea water practical salinity in the upper 300 m -'Vertically integrated sea water practical salinity in the upper 300 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Number of pixels used +'Number of pixels used' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 6 ; } -#Vertically integrated sea water practical salinity in the upper 700 m -'Vertically integrated sea water practical salinity in the upper 700 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar zenith angle +'Solar zenith angle' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Total column vertically integrated sea water practical salinity -'Total column vertically integrated sea water practical salinity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea water practical salinity -'Sea water practical salinity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Relative azimuth angle +'Relative azimuth angle' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 8 ; } -#Sea water potential temperature -'Sea water potential temperature' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.6 micron channel +'Reflectance in 0.6 micron channel' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Sea water sigma theta -'Sea water sigma theta' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.8 micron channel +'Reflectance in 0.8 micron channel' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Y-component of sea water velocity -'Y-component of sea water velocity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 1.6 micron channel +'Reflectance in 1.6 micron channel' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 11 ; } -#X-component of sea water velocity -'X-component of sea water velocity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 3.9 micron channel +'Reflectance in 3.9 micron channel' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 12 ; } -#Northward sea water velocity -'Northward sea water velocity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Atmospheric divergence +'Atmospheric divergence' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Eastward sea water velocity -'Eastward sea water velocity' = { +#Direction of wind waves +'Direction of wind waves' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Upward sea water velocity -'Upward sea water velocity' = { +#Primary wave direction +'Primary wave direction' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Sea water potential temperature tendency due to newtonian relaxation -'Sea water potential temperature tendency due to newtonian relaxation' = { +#Primary wave mean period +'Primary wave mean period' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Sea water salinity tendency due to newtonian relaxation -'Sea water salinity tendency due to newtonian relaxation' = { +#Secondary wave mean period +'Secondary wave mean period' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Sea water temperature tendency due to parameterization -'Sea water temperature tendency due to parameterization' = { +#Current direction +'Current direction' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Sea water salinity tendency due to parameterization -'Sea water salinity tendency due to parameterization' = { +#Current speed +'Current speed' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Eastward sea water velocity tendency due to parameterization -'Eastward sea water velocity tendency due to parameterization' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Geometric vertical velocity +'Geometric vertical velocity' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 9 ; } -#Northward sea water velocity tendency due to parameterization -'Northward sea water velocity tendency due to parameterization' = { +#Seconds prior to initial reference time (defined in Section 1) +'Seconds prior to initial reference time (defined in Section 1)' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea water temperature tendency due to direct bias correction -'Sea water temperature tendency due to direct bias correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#2 metre relative humidity +'2 metre relative humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Sea water salinity tendency due to direct bias correction -'Sea water salinity tendency due to direct bias correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Apparent temperature +'Apparent temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Sea water salinity -'Sea water salinity' = { - discipline = 10 ; +#Haines Index +'Haines Index' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterNumber = 2 ; } -#Net short wave radiation rate at sea surface -'Net short wave radiation rate at sea surface' = { +#Cloud cover +'Cloud cover' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 6 ; + parameterNumber = 22 ; } -#Wind stress at sea surface -'Wind stress at sea surface' = { +#Evaporation +'Evaporation' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Wind speed at 10m above sea surface -'Wind speed at 10m above sea surface' = { +#10 metre wind direction +'10 metre wind direction' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Neutral drag coefficient at 10m above sea surface -'Neutral drag coefficient at 10m above sea surface' = { +#Direct short wave radiation flux +'Direct short wave radiation flux' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 4 ; + parameterNumber = 13 ; } -#Total precipitation rate at sea surface -'Total precipitation rate at sea surface' = { +#Diffuse short wave radiation flux +'Diffuse short wave radiation flux' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + } +#Evaporation in the last 6 hours +'Evaporation in the last 6 hours' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; } -#Snow precipitation rate at sea surface -'Snow precipitation rate at sea surface' = { +#Evaporation in the last 24 hours +'Evaporation in the last 24 hours' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Eastward of wind stress over sea ice -'Eastward of wind stress over sea ice' = { +#Fraction of snow cover +'Fraction of snow cover' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 121 ; } -#Northward of wind stress over sea ice -'Northward of wind stress over sea ice' = { +#Clear air turbulence (CAT) +'Clear air turbulence (CAT)' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 29 ; } -#U-component of wind stress over sea ice -'U-component of wind stress over sea ice' = { +#Mountain wave turbulence (eddy dissipation rate) +'Mountain wave turbulence (eddy dissipation rate)' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 28 ; } -#V-component of wind stress over sea ice -'V-component of wind stress over sea ice' = { +#Specific rain water content (convective) +'Specific rain water content (convective)' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 144 ; } -#Time-mean sea ice thickness -'Time-mean sea ice thickness' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific snow water content (convective) +'Specific snow water content (convective)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 145 ; } -#Time-mean sea ice area fraction -'Time-mean sea ice area fraction' = { - discipline = 10 ; - parameterCategory = 2 ; +#Glacier mask +'Glacier mask' = { + discipline = 2 ; + parameterCategory = 5 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward sea ice velocity -'Time-mean eastward sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 1 hour +'Precipitation type (most severe) in the last 1 hour' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 1 ; } -#Time-mean northward sea ice velocity -'Time-mean northward sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 3 hours +'Precipitation type (most severe) in the last 3 hours' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice albedo -'Time-mean sea ice albedo' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 1 hour +'Precipitation type (most frequent) in the last 1 hour' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 1 ; } -#Time-mean sea ice surface temperature -'Time-mean sea ice surface temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 3 hours +'Precipitation type (most frequent) in the last 3 hours' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice growth -'Time-mean sea ice growth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 6 hours +'Precipitation type (most severe) in the last 6 hours' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 6 ; } -#Time-mean sea ice volume per unit area -'Time-mean sea ice volume per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 6 hours +'Precipitation type (most frequent) in the last 6 hours' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 6 ; } -#Time-mean snow volume over sea ice per unit area -'Time-mean snow volume over sea ice per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil temperature +'Soil temperature' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; } -#Time-mean vertically averaged sea ice temperature -'Time-mean vertically averaged sea ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Downward short-wave radiation flux, clear sky +'Downward short-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 52 ; } -#Time-mean snow temperature over sea ice -'Time-mean snow temperature over sea ice' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Upward short-wave radiation flux, clear sky +'Upward short-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; } -#Time-mean sea ice temperature at the sea ice and snow interface -'Time-mean sea ice temperature at the sea ice and snow interface' = { - discipline = 10 ; - parameterCategory = 2 ; +#Downward long-wave radiation flux, clear sky +'Downward long-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean underside ice temperature -'Time-mean underside ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil heat flux +'Soil heat flux' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 26 ; } -#Time-mean sea ice heat content -'Time-mean sea ice heat content' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation rate +'Percolation rate' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Time-mean snow heat content over sea ice -'Time-mean snow heat content over sea ice' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil depth +'Soil depth' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 27 ; } -#Time-mean sea ice freeboard thickness -'Time-mean sea ice freeboard thickness' = { - discipline = 10 ; - parameterCategory = 2 ; +#Soil moisture +'Soil moisture' = { + discipline = 2 ; + parameterCategory = 3 ; parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice melt pond fraction -'Time-mean sea ice melt pond fraction' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Accumulated surface upward short-wave radiation flux, clear sky +'Accumulated surface upward short-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond depth -'Time-mean sea ice melt pond depth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation +'Percolation' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 177 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond volume per unit area -'Time-mean sea ice melt pond volume per unit area' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evapotranspiration rate +'Evapotranspiration rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; } -#Time-mean sea ice fraction tendency due to parameterization -'Time-mean sea ice fraction tendency due to parameterization' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean evapotranspiration rate in the last 24h +'Time-mean evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean X-component of sea ice velocity -'Time-mean X-component of sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Potential evapotranspiration rate +'Potential evapotranspiration rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + } +#Time-integrated potential evapotranspiration rate in the last 24h +'Time-integrated potential evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; + } +#Time-mean potential evapotranspiration rate in the last 24h +'Time-mean potential evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean Y-component of sea ice velocity -'Time-mean Y-component of sea ice velocity' = { - discipline = 10 ; - parameterCategory = 2 ; +#Time-mean volumetric soil moisture +'Time-mean volumetric soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea ice temperature -'Time-mean sea ice temperature' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfStatisticalProcessing = 0 ; +#Water runoff and drainage rate +'Water runoff and drainage rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; } -#Time-mean sea surface practical salinity -'Time-mean sea surface practical salinity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated water runoff and drainage rate in the last 24h +'Time-integrated water runoff and drainage rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea surface temperature -'Time-mean sea surface temperature' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean water runoff and drainage rate in the last 24h +'Time-mean water runoff and drainage rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 14 C isotherm -'Time-mean depth of 14 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean snow depth water equivalent +'Time-mean snow depth water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 17 C isotherm -'Time-mean depth of 17 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean skin temperature +'Time-mean skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 20 C isotherm -'Time-mean depth of 20 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Snow melt rate +'Snow melt rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; } -#Time-mean depth of 26 C isotherm -'Time-mean depth of 26 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated snow melt rate in the last 24h +'Time-integrated snow melt rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 28 C isotherm -'Time-mean depth of 28 C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; +#Forecast albedo +'Forecast albedo' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; + } +#Cloudy brightness temperature +'Cloudy brightness temperature' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean barotropic stream function -'Time-mean barotropic stream function' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Clear-sky brightness temperature +'Clear-sky brightness temperature' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Time-mean surface downward heat flux -'Time-mean surface downward heat flux' = { - discipline = 10 ; - parameterCategory = 3 ; +#Cloudy reflectance +'Cloudy reflectance' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 31 ; + } +#Clear reflectance +'Clear reflectance' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 32 ; + } +#Scaled radiance +'Scaled radiance' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Scaled albedo +'Scaled albedo' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Scaled brightness temperature +'Scaled brightness temperature' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Scaled precipitable water +'Scaled precipitable water' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Scaled lifted index +'Scaled lifted index' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward surface stress -'Time-mean northward surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; +#Scaled cloud top pressure +'Scaled cloud top pressure' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Scaled skin temperature +'Scaled skin temperature' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward surface stress -'Time-mean eastward surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloud mask +'Cloud mask' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Time mean Y-component of surface stress -'Time mean Y-component of surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; +#Pixel scene type +'Pixel scene type' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of surface stress -'Time-mean X-component of surface stress' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Fire detection indicator +'Fire detection indicator' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3' = { - discipline = 10 ; +#Forest fire weather index (as defined by the Canadian Forest Service) +'Forest fire weather index (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 5 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3' = { - discipline = 10 ; +#Fine fuel moisture code (as defined by the Canadian Forest Service) +'Fine fuel moisture code (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 6 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3' = { - discipline = 10 ; +#Duff moisture code (as defined by the Canadian Forest Service) +'Duff moisture code (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 7 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.2 C -'Time-mean ocean mixed layer depth defined by temperature 0.2 C' = { - discipline = 10 ; +#Drought code (as defined by the Canadian Forest Service) +'Drought code (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 8 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.5 C -'Time-mean ocean mixed layer depth defined by temperature 0.5 C' = { - discipline = 10 ; +#Initial fire spread index (as defined by the Canadian Forest Service) +'Initial fire spread index (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean average sea water practical salinity in the upper 300 m -'Time-mean average sea water practical salinity in the upper 300 m' = { - discipline = 10 ; +#Fire buildup index (as defined by the Canadian Forest Service) +'Fire buildup index (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 10 ; } -#Time-mean average sea water practical salinity in the upper 700 m -'Time-mean average sea water practical salinity in the upper 700 m' = { - discipline = 10 ; +#Fire daily severity rating (as defined by the Canadian Forest Service) +'Fire daily severity rating (as defined by the Canadian Forest Service)' = { + discipline = 2 ; parameterCategory = 4 ; + parameterNumber = 11 ; + } +#Cloudy radiance (with respect to wave number) +'Cloudy radiance (with respect to wave number)' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } +#Clear-sky radiance (with respect to wave number) +'Clear-sky radiance (with respect to wave number)' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 17 ; + } +#Wind speed +'Wind speed' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + } +#Aerosol optical thickness at 0.635 um +'Aerosol optical thickness at 0.635 um' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 20 ; + } +#Aerosol optical thickness at 0.810 um +'Aerosol optical thickness at 0.810 um' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total column average sea water practical salinity -'Time-mean total column average sea water practical salinity' = { - discipline = 10 ; +#Aerosol optical thickness at 1.640 um +'Aerosol optical thickness at 1.640 um' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 22 ; + } +#Angstrom coefficient +'Angstrom coefficient' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 23 ; + } +#Keetch-Byram drought index +'Keetch-Byram drought index' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 12 ; } -#Time-mean vertically-integrated heat content in the upper 300 m -'Time-mean vertically-integrated heat content in the upper 300 m' = { - discipline = 10 ; +#Drought factor (as defined by the Australian forest service) +'Drought factor (as defined by the Australian forest service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean vertically-integrated heat content in the upper 700 m -'Time-mean vertically-integrated heat content in the upper 700 m' = { - discipline = 10 ; +#Rate of spread (as defined by the Australian forest service) +'Rate of spread (as defined by the Australian forest service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 14 ; } -#Time-mean total column heat content -'Time-mean total column heat content' = { - discipline = 10 ; +#Fire danger index (as defined by the Australian forest service) +'Fire danger index (as defined by the Australian forest service)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 15 ; } -#Time-mean sea surface height -'Time-mean sea surface height' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 16 ; } -#Time-mean steric change in sea surface height -'Time-mean steric change in sea surface height' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 17 ; } -#Time-mean halosteric change in sea surface height -'Time-mean halosteric change in sea surface height' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermosteric change in sea surface height -'Time-mean thermosteric change in sea surface height' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermocline depth -'Time-mean thermocline depth' = { - discipline = 10 ; +#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 18 ; } -#Time-mean bottom pressure equivalent height -'Time-mean bottom pressure equivalent height' = { - discipline = 10 ; +#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System)' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 19 ; } -#Time-mean net surface upward water flux -'Time-mean net surface upward water flux' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric soil ice +'Volumetric soil ice' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Time-mean fresh water flux into sea water (from rivers) -'Time-mean fresh water flux into sea water (from rivers)' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; +#Time integral of total solid precipitation flux +'Time integral of total solid precipitation flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 128 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean virtual salt flux into sea water -'Time-mean virtual salt flux into sea water' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; +#10 metre eastward wind gust since previous post-processing +'10 metre eastward wind gust since previous post-processing' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean heat flux correction -'Time-mean heat flux correction' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; +#10 metre northward wind gust since previous post-processing +'10 metre northward wind gust since previous post-processing' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean fresh water flux correction -'Time-mean fresh water flux correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; +#Fog +'Fog' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean virtual salt flux correction -'Time-mean virtual salt flux correction' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to orographic form drag +'Time-integrated eastward turbulent surface stress due to orographic form drag' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 64 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean turbocline depth (kz=5e-4) -'Time-mean turbocline depth (kz=5e-4)' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to orographic form drag +'Time-integrated northward turbulent surface stress due to orographic form drag' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 65 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean Y-component of surface sea water velocity -'Time-mean Y-component of surface sea water velocity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to surface roughness +'Time-integrated eastward turbulent surface stress due to surface roughness' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean X-component of surface sea water velocity -'Time-mean X-component of surface sea water velocity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to surface roughness +'Time-integrated northward turbulent surface stress due to surface roughness' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 67 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean northward surface sea water velocity -'Time-mean northward surface sea water velocity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Saturation specific humidity with respect to water +'Saturation specific humidity with respect to water' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 168 ; } -#Time-mean eastward surface sea water velocity -'Time-mean eastward surface sea water velocity' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Total column integrated saturation specific humidity with respect to water +'Total column integrated saturation specific humidity with respect to water' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 169 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Time-mean heat content surface to 26C isotherm -'Time-mean heat content surface to 26C isotherm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; - typeOfStatisticalProcessing = 0 ; +#Universal thermal climate index +'Universal thermal climate index' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Time-mean sea surface height tendency due to parameterization -'Time-mean sea surface height tendency due to parameterization' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Mean radiant temperature +'Mean radiant temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Time-mean sea surface height with inverse barometer correction -'Time-mean sea surface height with inverse barometer correction' = { - discipline = 10 ; +#Fraction of Malaria cases +'Fraction of Malaria cases' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Malaria circumsporozoite protein ratio +'Malaria circumsporozoite protein ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Plasmodium falciparum entomological inoculation rate +'Plasmodium falciparum entomological inoculation rate' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 2 ; + } +#Human bite rate by anopheles vectors +'Human bite rate by anopheles vectors' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; + } +#Malaria immunity ratio +'Malaria immunity ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 4 ; + } +#Falciparum parasite ratio +'Falciparum parasite ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 5 ; + } +#Detectable falciparum parasite ratio (after day 10) +'Detectable falciparum parasite ratio (after day 10)' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 6 ; + } +#Anopheles vector to host ratio +'Anopheles vector to host ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 7 ; + } +#Anopheles vector density +'Anopheles vector density' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 8 ; + } +#Fraction of malarial vector reproductive habitat +'Fraction of malarial vector reproductive habitat' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 9 ; + } +#Population density +'Population density' = { + discipline = 20 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + } +#Wet bulb globe temperature +'Wet bulb globe temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Globe temperature +'Globe temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Humidex +'Humidex' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 4 ; + } +#Effective temperature +'Effective temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Normal effective temperature +'Normal effective temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + } +#Standard effective temperature +'Standard effective temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 7 ; + } +#Physiological equivalent temperature +'Physiological equivalent temperature' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 8 ; + } +#Saturation water vapour pressure +'Saturation water vapour pressure' = { + discipline = 0 ; parameterCategory = 3 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 32 ; } -#Time-mean average sea water potential temperature in the upper 300m -'Time-mean average sea water potential temperature in the upper 300m' = { +#Wet-bulb potential temperature +'Wet-bulb potential temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 32 ; + } +#Sea ice thickness +'Sea ice thickness' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea surface salinity -'Time-mean sea surface salinity' = { +#Sea ice area fraction +'Sea ice area fraction' = { discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 300 m -'Time-mean vertically integrated sea water practical salinity in the upper 300 m' = { +#Eastward sea ice velocity +'Eastward sea ice velocity' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean vertically integrated sea water practical salinity in the upper 700 m -'Time-mean vertically integrated sea water practical salinity in the upper 700 m' = { +#Northward sea ice velocity +'Northward sea ice velocity' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean total column vertically integrated sea water practical salinity -'Time-mean total column vertically integrated sea water practical salinity' = { +#Sea ice albedo +'Sea ice albedo' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea water practical salinity -'Time-mean sea water practical salinity' = { +#Sea ice surface temperature +'Sea ice surface temperature' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature -'Time-mean sea water potential temperature' = { +#Sea ice growth +'Sea ice growth' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water sigma theta -'Time-mean sea water sigma theta' = { +#Sea ice volume per unit area +'Sea ice volume per unit area' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean Y-component of sea water velocity -'Time-mean Y-component of sea water velocity' = { +#Snow volume over sea ice per unit area +'Snow volume over sea ice per unit area' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean X-component of sea water velocity -'Time-mean X-component of sea water velocity' = { +#Vertically averaged sea ice temperature +'Vertically averaged sea ice temperature' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity -'Time-mean northward sea water velocity' = { +#Snow temperature over sea ice +'Snow temperature over sea ice' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity -'Time-mean eastward sea water velocity' = { +#Sea ice temperature at the sea ice and snow interface +'Sea ice temperature at the sea ice and snow interface' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean upward sea water velocity -'Time-mean upward sea water velocity' = { +#Underside ice temperature +'Underside ice temperature' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature tendency due to newtonian relaxation -'Time-mean sea water potential temperature tendency due to newtonian relaxation' = { +#Sea ice heat content +'Sea ice heat content' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to newtonian relaxation -'Time-mean sea water salinity tendency due to newtonian relaxation' = { +#Snow heat content over sea ice +'Snow heat content over sea ice' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to parameterization -'Time-mean sea water temperature tendency due to parameterization' = { +#Sea ice freeboard thickness +'Sea ice freeboard thickness' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-mean sea water salinity tendency due to parameterization -'Time-mean sea water salinity tendency due to parameterization' = { +#Sea ice melt pond fraction +'Sea ice melt pond fraction' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity tendency due to parameterization -'Time-mean eastward sea water velocity tendency due to parameterization' = { +#Sea ice melt pond depth +'Sea ice melt pond depth' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity tendency due to parameterization -'Time-mean northward sea water velocity tendency due to parameterization' = { +#Sea ice melt pond volume per unit area +'Sea ice melt pond volume per unit area' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to direct bias correction -'Time-mean sea water temperature tendency due to direct bias correction' = { +#Sea ice fraction tendency due to parameterization +'Sea ice fraction tendency due to parameterization' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to direct bias correction -'Time-mean sea water salinity tendency due to direct bias correction' = { +#X-component of sea ice velocity +'X-component of sea ice velocity' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity -'Time-mean sea water salinity' = { +#Y-component of sea ice velocity +'Y-component of sea ice velocity' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean net short wave radiation rate at sea surface -'Time-mean net short wave radiation rate at sea surface' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Sea ice temperature +'Sea ice temperature' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Sea surface practical salinity +'Sea surface practical salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind stress at sea surface -'Time-mean wind stress at sea surface' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; +#Sea surface temperature +'Sea surface temperature' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 0 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind speed at 10m above sea surface -'Time-mean wind speed at 10m above sea surface' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 14 C isotherm +'Depth of 14 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean neutral drag coefficient at 10m above sea surface -'Time-mean neutral drag coefficient at 10m above sea surface' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 17 C isotherm +'Depth of 17 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total precipitation rate at sea surface -'Time-mean total precipitation rate at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 20 C isotherm +'Depth of 20 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow precipitation rate at sea surface -'Time-mean snow precipitation rate at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 26 C isotherm +'Depth of 26 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward of wind stress over sea ice -'Time-mean eastward of wind stress over sea ice' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; +#Depth of 28 C isotherm +'Depth of 28 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward of wind stress over sea ice -'Time-mean northward of wind stress over sea ice' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; +#Barotropic stream function +'Barotropic stream function' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean U-component of wind stress over sea ice -'Time-mean U-component of wind stress over sea ice' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; +#Surface downward heat flux +'Surface downward heat flux' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean V-component of wind stress over sea ice -'Time-mean V-component of wind stress over sea ice' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; +#Northward surface stress +'Northward surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'Time-accumulated net short wave radiation at sea surface' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Eastward surface stress +'Eastward surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 5 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated total precipitation at sea surface -'Time-accumulated total precipitation at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; +#Y-component of surface stress +'Y-component of surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated snow precipitation at sea surface -'Time-accumulated snow precipitation at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#X-component of surface stress +'X-component of surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Virtual temperature -'Virtual temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'Ocean mixed layer depth defined by sigma theta 0.01 kg m-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mass density -'Mass density' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 0 ; +#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'Ocean mixed layer depth defined by sigma theta 0.03 kg m-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total column vertically-integrated mass density -'Total column vertically-integrated mass density' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Mass mixing ratio -'Mass mixing ratio' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - } -#Emission mass flux -'Emission mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 255 ; - } -#Dry deposition velocity -'Dry deposition velocity' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - } -#Wet deposition mass flux -'Wet deposition mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - } -#Dry deposition mass flux -'Dry deposition mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - } -#Sedimentation mass flux -'Sedimentation mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 11 ; - } -#Volume mixing ratio -'Volume mixing ratio' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 52 ; - } -#Wet deposition mass flux by large-scale precipitation -'Wet deposition mass flux by large-scale precipitation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 9 ; - } -#Wet deposition mass flux by convective precipitation -'Wet deposition mass flux by convective precipitation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 10 ; - } -#Emission mass flux from natural sources -'Emission mass flux from natural sources' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 6 ; - } -#Emission mass flux from anthropogenic sources -'Emission mass flux from anthropogenic sources' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 4 ; - } -#Emission mass flux from elevated anthropogenic sources -'Emission mass flux from elevated anthropogenic sources' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 12 ; - } -#Emission mass flux from surface anthropogenic sources -'Emission mass flux from surface anthropogenic sources' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 13 ; - } -#Emission from aviation -'Emission from aviation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 1 ; - } -#Emission mass flux from agriculture livestock -'Emission mass flux from agriculture livestock' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 14 ; - } -#Emission mass flux from agriculture soils -'Emission mass flux from agriculture soils' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 15 ; - } -#Emission mass flux from agricultural waste burning -'Emission mass flux from agricultural waste burning' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 16 ; - } -#Emission mass flux from residential, commercial and other combustion -'Emission mass flux from residential, commercial and other combustion' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 18 ; - } -#Emission mass flux from power generation -'Emission mass flux from power generation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 19 ; - } -#Emission mass flux from fugitives -'Emission mass flux from fugitives' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 21 ; - } -#Emission mass flux from industrial process -'Emission mass flux from industrial process' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 22 ; - } -#Emission mass flux from solvents -'Emission mass flux from solvents' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 23 ; - } -#Emission mass flux from ships -'Emission mass flux from ships' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 24 ; - } -#Emission mass flux from wastes (solid and water) -'Emission mass flux from wastes (solid and water)' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 25 ; - } -#Emission mass flux from off-road transportation -'Emission mass flux from off-road transportation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 27 ; - } -#Emission mass flux from road transportation -'Emission mass flux from road transportation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 26 ; - } -#Emission mass flux from super power stations -'Emission mass flux from super power stations' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 20 ; - } -#Emission mass flux from volcanoes -'Emission mass flux from volcanoes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Emission mass flux from wetlands -'Emission mass flux from wetlands' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 10 ; - } -#Net ecosystem exchange flux -'Net ecosystem exchange flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - } -#Mean net ecosystem exchange flux -'Mean net ecosystem exchange flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated net ecosystem exchange flux -'Accumulated net ecosystem exchange flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 1 ; - } -#Gross primary production flux -'Gross primary production flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - } -#Mean gross primary production flux -'Mean gross primary production flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated gross primary production flux -'Accumulated gross primary production flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 1 ; - } -#Ecosystem respiration flux -'Ecosystem respiration flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - } -#Mean ecosystem respiration flux -'Mean ecosystem respiration flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated ecosystem respiration flux -'Accumulated ecosystem respiration flux' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 1 ; - } -#Emission mass flux from bio fuel -'Emission mass flux from bio fuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 8 ; - } -#Emission mass flux from fossil fuel -'Emission mass flux from fossil fuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 9 ; - } -#Emission mass flux from other -'Emission mass flux from other' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 0 ; - } -#Emission mass flux from oceans -'Emission mass flux from oceans' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 11 ; - } -#Accumulated wet deposition mass flux -'Accumulated wet deposition mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated dry deposition mass flux -'Accumulated dry deposition mass flux' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - typeOfStatisticalProcessing = 1 ; - } -#Aerosol number density -'Aerosol number density' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 59 ; - } -#Mass mixing ratio from volcanoes -'Mass mixing ratio from volcanoes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Total column vertically-integrated mass density from volcanoes -'Total column vertically-integrated mass density from volcanoes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Dry deposition velocity from volcanoes -'Dry deposition velocity from volcanoes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Virtual potential temperature -'Virtual potential temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 15 ; - } -#Pseudo-adiabatic potential temperature -'Pseudo-adiabatic potential temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Wind direction -'Wind direction' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Snowmelt -'Snowmelt' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Period corresponding to maximum individual wave height -'Period corresponding to maximum individual wave height' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - } -#Maximum individual wave height -'Maximum individual wave height' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - } -#Model bathymetry -'Model bathymetry' = { +#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'Ocean mixed layer depth defined by sigma theta 0.125 kg m-3' = { discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 7 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment -'Mean wave period based on first moment' = { +#Ocean mixed layer depth defined by temperature 0.2 C +'Ocean mixed layer depth defined by temperature 0.2 C' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 25 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean zero-crossing wave period -'Mean zero-crossing wave period' = { +#Ocean mixed layer depth defined by temperature 0.5 C +'Ocean mixed layer depth defined by temperature 0.5 C' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 28 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width -'Wave spectral directional width' = { +#Average sea water practical salinity in the upper 300 m +'Average sea water practical salinity in the upper 300 m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 31 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for wind waves -'Mean wave period based on first moment for wind waves' = { +#Average sea water practical salinity in the upper 700 m +'Average sea water practical salinity in the upper 700 m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 26 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for wind waves -'Mean wave period based on second moment for wind waves' = { +#Total column average sea water practical salinity +'Total column average sea water practical salinity' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 29 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for wind waves -'Wave spectral directional width for wind waves' = { +#Vertically-integrated heat content in the upper 300 m +'Vertically-integrated heat content in the upper 300 m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for swell -'Mean wave period based on first moment for swell' = { +#Vertically-integrated heat content in the upper 700 m +'Vertically-integrated heat content in the upper 700 m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 27 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for swell -'Mean wave period based on second moment for swell' = { +#Total column of heat content +'Total column of heat content' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for swell -'Wave spectral directional width for swell' = { +#Sea surface height +'Sea surface height' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 33 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of combined wind waves and swell -'Significant height of combined wind waves and swell' = { +#Steric change in sea surface height +'Steric change in sea surface height' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave direction -'Mean wave direction' = { +#Halosteric change in sea surface height +'Halosteric change in sea surface height' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 14 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Peak wave period -'Peak wave period' = { +#Thermosteric change in sea surface height +'Thermosteric change in sea surface height' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period -'Mean wave period' = { +#Thermocline depth +'Thermocline depth' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Coefficient of drag with waves -'Coefficient of drag with waves' = { +#Bottom pressure equivalent height +'Bottom pressure equivalent height' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of wind waves -'Significant height of wind waves' = { +#Net surface upward water flux +'Net surface upward water flux' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 5 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of wind waves -'Mean direction of wind waves' = { +#Fresh water flux into sea water (from rivers) +'Fresh water flux into sea water (from rivers)' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 75 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of wind waves -'Mean period of wind waves' = { +#Virtual salt flux into sea water +'Virtual salt flux into sea water' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of total swell -'Significant height of total swell' = { +#Heat flux correction +'Heat flux correction' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of total swell -'Mean direction of total swell' = { +#Fresh water flux correction +'Fresh water flux correction' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 74 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of total swell -'Mean period of total swell' = { +#Virtual salt flux correction +'Virtual salt flux correction' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 9 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean square slope of waves -'Mean square slope of waves' = { +#Turbocline depth (kz=5e-4) +'Turbocline depth (kz=5e-4)' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 20 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind speed -'10 metre wind speed' = { +#Y-component of surface sea water velocity +'Y-component of surface sea water velocity' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter wave height -'Altimeter wave height' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 37 ; - } -#Altimeter corrected wave height -'Altimeter corrected wave height' = { +#X-component of surface sea water velocity +'X-component of surface sea water velocity' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter range relative correction -'Altimeter range relative correction' = { +#Northward surface sea water velocity +'Northward surface sea water velocity' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind direction -'10 metre wind direction' = { +#Eastward surface sea water velocity +'Eastward surface sea water velocity' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#2D wave spectra (single) -'2D wave spectra (single)' = { +#Heat Content surface to 26C isotherm +'Heat Content surface to 26C isotherm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 86 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; } -#Wave spectral kurtosis -'Wave spectral kurtosis' = { +#Sea surface height tendency due to parameterization +'Sea surface height tendency due to parameterization' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 43 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Benjamin-Feir index -'Benjamin-Feir index' = { +#Sea surface height with inverse barometer correction +'Sea surface height with inverse barometer correction' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 44 ; + parameterCategory = 3 ; + parameterNumber = 20 ; } -#Eastward sea water velocity -'Eastward sea water velocity' = { +#Average sea water potential temperature in the upper 300m +'Average sea water potential temperature in the upper 300m' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 2 ; + parameterCategory = 4 ; + parameterNumber = 18 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Northward sea water velocity -'Northward sea water velocity' = { +#Sea surface salinity +'Sea surface salinity' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 21 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Skin reservoir content -'Skin reservoir content' = { - discipline = 2 ; - parameterCategory = 0 ; +#Vertically integrated sea water practical salinity in the upper 300 m +'Vertically integrated sea water practical salinity in the upper 300 m' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Vertical integral of mass of atmosphere -'Vertical integral of mass of atmosphere' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated kinetic energy -'Total column vertically-integrated kinetic energy' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated enthalpy -'Total column vertically-integrated enthalpy' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Vertically integrated sea water practical salinity in the upper 700 m +'Vertically integrated sea water practical salinity in the upper 700 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Total column vertically-integrated potential + internal energy -'Total column vertically-integrated potential + internal energy' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Total column vertically integrated sea water practical salinity +'Total column vertically integrated sea water practical salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of potential+internal+latent energy -'Vertical integral of potential+internal+latent energy' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water practical salinity +'Sea water practical salinity' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated total energy -'Total column vertically-integrated total energy' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of eastward heat flux -'Vertical integral of eastward heat flux' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Sea water potential temperature +'Sea water potential temperature' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward heat flux -'Vertical integral of northward heat flux' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water sigma theta +'Sea water sigma theta' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of eastward water vapour flux -'Vertical integral of eastward water vapour flux' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 150 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward water vapour flux -'Vertical integral of northward water vapour flux' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 151 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Y-component of sea water velocity +'Y-component of sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertically integrated moisture divergence flux -'Vertically integrated moisture divergence flux' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 165 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#X-component of sea water velocity +'X-component of sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short-wave radiation -'Time-integrated temperature tendency due to short-wave radiation' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity +'Northward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation -'Time-integrated temperature tendency due to long-wave radiation' = { - discipline = 0 ; - parameterCategory = 0 ; +#Eastward sea water velocity +'Eastward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 23 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short wave radiation, clear sky -'Time-integrated temperature tendency due to short wave radiation, clear sky' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - typeOfStatisticalProcessing = 1 ; +#Upward sea water velocity +'Upward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation, clear sky -'Time-integrated temperature tendency due to long-wave radiation, clear sky' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - typeOfStatisticalProcessing = 1 ; +#Sea water potential temperature tendency due to newtonian relaxation +'Sea water potential temperature tendency due to newtonian relaxation' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught mass flux -'Time-integrated updraught mass flux' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 27 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to newtonian relaxation +'Sea water salinity tendency due to newtonian relaxation' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught mass flux -'Time-integrated downdraught mass flux' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 28 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to parameterization +'Sea water temperature tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught detrainment rate -'Time-integrated updraught detrainment rate' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 29 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to parameterization +'Sea water salinity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught detrainment rate -'Time-integrated downdraught detrainment rate' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 30 ; - typeOfStatisticalProcessing = 1 ; +#Eastward sea water velocity tendency due to parameterization +'Eastward sea water velocity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated total precipitation flux -'Time-integrated total precipitation flux' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity tendency due to parameterization +'Northward sea water velocity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated turbulent diffusion coefficient for heat -'Time-integrated turbulent diffusion coefficient for heat' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to direct bias correction +'Sea water temperature tendency due to direct bias correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to parametrisations -'Time-integrated temperature tendency due to parametrisations' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 26 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to direct bias correction +'Sea water salinity tendency due to direct bias correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated specific humidity tendency due to parametrisations -'Time-integrated specific humidity tendency due to parametrisations' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 108 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity +'Sea water salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated eastward wind tendency due to parametrisations -'Time-integrated eastward wind tendency due to parametrisations' = { +#Net short wave radiation rate at sea surface +'Net short wave radiation rate at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 39 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated northward wind tendency due to parametrisations -'Time-integrated northward wind tendency due to parametrisations' = { +#Wind stress at sea surface +'Wind stress at sea surface' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 40 ; - typeOfStatisticalProcessing = 1 ; - } -#Time-mean surface net radiation flux (SW and LW) -'Time-mean surface net radiation flux (SW and LW)' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } -#Surface runoff -'Surface runoff' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio -'Nitrogen dioxide mass mixing ratio' = { +#Wind speed at 10m above sea surface +'Wind speed at 10m above sea surface' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio -'Sulphur dioxide mass mixing ratio' = { +#Neutral drag coefficient at 10m above sea surface +'Neutral drag coefficient at 10m above sea surface' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio -'Carbon monoxide mass mixing ratio' = { +#Total precipitation rate at sea surface +'Total precipitation rate at sea surface' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio (full chemistry scheme) -'Ozone mass mixing ratio (full chemistry scheme)' = { +#Snow precipitation rate at sea surface +'Snow precipitation rate at sea surface' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio difference -'Nitrogen dioxide mass mixing ratio difference' = { +#Eastward of wind stress over sea ice +'Eastward of wind stress over sea ice' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio difference -'Sulphur dioxide mass mixing ratio difference' = { +#Northward of wind stress over sea ice +'Northward of wind stress over sea ice' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio difference -'Carbon monoxide mass mixing ratio difference' = { +#U-component of wind stress over sea ice +'U-component of wind stress over sea ice' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio difference (full chemistry scheme) -'Ozone mass mixing ratio difference (full chemistry scheme)' = { +#V-component of wind stress over sea ice +'V-component of wind stress over sea ice' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Friction velocity -'Friction velocity' = { +#Time-mean sea ice thickness +'Time-mean sea ice thickness' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - } -#Mean 2 metre temperature -'Mean 2 metre temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Lake total depth -'Lake total depth' = { - discipline = 1 ; +#Time-mean sea ice area fraction +'Time-mean sea ice area fraction' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer temperature -'Lake mix-layer temperature' = { - discipline = 1 ; +#Time-mean eastward sea ice velocity +'Time-mean eastward sea ice velocity' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer depth -'Lake mix-layer depth' = { - discipline = 1 ; +#Time-mean northward sea ice velocity +'Time-mean northward sea ice velocity' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake bottom temperature -'Lake bottom temperature' = { - discipline = 1 ; +#Time-mean sea ice albedo +'Time-mean sea ice albedo' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 162 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - } -#Lake total layer temperature -'Lake total layer temperature' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake shape factor -'Lake shape factor' = { - discipline = 1 ; +#Time-mean sea ice surface temperature +'Time-mean sea ice surface temperature' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice surface temperature -'Lake ice surface temperature' = { - discipline = 1 ; +#Time-mean sea ice growth +'Time-mean sea ice growth' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 6 ; typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice total depth -'Lake ice total depth' = { - discipline = 1 ; +#Time-mean sea ice volume per unit area +'Time-mean sea ice volume per unit area' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; + parameterNumber = 15 ; typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 176 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'Minimum vertical gradient of refractivity inside trapping layer' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 45 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'Mean vertical gradient of refractivity inside trapping layer' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 44 ; - } -#Duct base height -'Duct base height' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 41 ; - } -#Trapping layer base height -'Trapping layer base height' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 42 ; - } -#Trapping layer top height -'Trapping layer top height' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 43 ; - } -#10 metre u-component of neutral wind -'10 metre u-component of neutral wind' = { - discipline = 0 ; +#Time-mean snow volume over sea ice per unit area +'Time-mean snow volume over sea ice per unit area' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre v-component of neutral wind -'10 metre v-component of neutral wind' = { - discipline = 0 ; +#Time-mean vertically averaged sea ice temperature +'Time-mean vertically averaged sea ice temperature' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component surface stokes drift -'U-component surface stokes drift' = { +#Time-mean snow temperature over sea ice +'Time-mean snow temperature over sea ice' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 21 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component surface stokes drift -'V-component surface stokes drift' = { +#Time-mean sea ice temperature at the sea ice and snow interface +'Time-mean sea ice temperature at the sea ice and snow interface' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - } -#100 metre U wind component -'100 metre U wind component' = { - discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#100 metre V wind component -'100 metre V wind component' = { - discipline = 0 ; +#Time-mean underside ice temperature +'Time-mean underside ice temperature' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } -#Total precipitation of at least 10 mm -'Total precipitation of at least 10 mm' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 10 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Total precipitation of at least 20 mm -'Total precipitation of at least 20 mm' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Stream function -'Stream function' = { - discipline = 0 ; +#Time-mean sea ice heat content +'Time-mean sea ice heat content' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 4 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Velocity potential -'Velocity potential' = { - discipline = 0 ; +#Time-mean snow heat content over sea ice +'Time-mean snow heat content over sea ice' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; - } -#Potential temperature -'Potential temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Pressure -'Pressure' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - } -#Convective available potential energy -'Convective available potential energy' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential vorticity -'Potential vorticity' = { - discipline = 0 ; +#Time-mean sea ice freeboard thickness +'Time-mean sea ice freeboard thickness' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 14 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Maximum temperature at 2 metres in the last 6 hours -'Maximum temperature at 2 metres in the last 6 hours' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 2 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond fraction +'Time-mean sea ice melt pond fraction' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum temperature at 2 metres in the last 6 hours -'Minimum temperature at 2 metres in the last 6 hours' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 3 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond depth +'Time-mean sea ice melt pond depth' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential -'Geopotential' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; +#Time-mean sea ice melt pond volume per unit area +'Time-mean sea ice melt pond volume per unit area' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Temperature -'Temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Time-mean sea ice fraction tendency due to parameterization +'Time-mean sea ice fraction tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U component of wind -'U component of wind' = { - discipline = 0 ; +#Time-mean X-component of sea ice velocity +'Time-mean X-component of sea ice velocity' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V component of wind -'V component of wind' = { - discipline = 0 ; +#Time-mean Y-component of sea ice velocity +'Time-mean Y-component of sea ice velocity' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Specific humidity -'Specific humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Time-mean sea ice temperature +'Time-mean sea ice temperature' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfStatisticalProcessing = 0 ; } -#Surface pressure -'Surface pressure' = { - discipline = 0 ; +#Time-mean sea surface practical salinity +'Time-mean sea surface practical salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface temperature +'Time-mean sea surface temperature' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical velocity -'Vertical velocity' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Time-mean depth of 14 C isotherm +'Time-mean depth of 14 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water -'Total column water' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Time-mean depth of 17 C isotherm +'Time-mean depth of 17 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vorticity (relative) -'Vorticity (relative)' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 12 ; +#Time-mean depth of 20 C isotherm +'Time-mean depth of 20 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface sensible heat flux -'Surface sensible heat flux' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 26 C isotherm +'Time-mean depth of 26 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface latent heat flux -'Surface latent heat flux' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 28 C isotherm +'Time-mean depth of 28 C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean barotropic stream function +'Time-mean barotropic stream function' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Mean sea level pressure -'Mean sea level pressure' = { - discipline = 0 ; +#Time-mean surface downward heat flux +'Time-mean surface downward heat flux' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Divergence -'Divergence' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 13 ; +#Time-mean northward surface stress +'Time-mean northward surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential height -'Geopotential height' = { - discipline = 0 ; +#Time-mean eastward surface stress +'Time-mean eastward surface stress' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 5 ; - } -#Relative humidity -'Relative humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - } -#10 metre U wind component -'10 metre U wind component' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre V wind component -'10 metre V wind component' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; +#Time mean Y-component of surface stress +'Time mean Y-component of surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre temperature -'2 metre temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; +#Time-mean X-component of surface stress +'Time-mean X-component of surface stress' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre dewpoint temperature -'2 metre dewpoint temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 103 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by temperature 0.2 C +'Time-mean ocean mixed layer depth defined by temperature 0.2 C' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Land-sea mask -'Land-sea mask' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean ocean mixed layer depth defined by temperature 0.5 C +'Time-mean ocean mixed layer depth defined by temperature 0.5 C' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net short-wave (solar) radiation -'Surface net short-wave (solar) radiation' = { - discipline = 0 ; +#Time-mean average sea water practical salinity in the upper 300 m +'Time-mean average sea water practical salinity in the upper 300 m' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Surface net long-wave (thermal) radiation -'Surface net long-wave (thermal) radiation' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean average sea water practical salinity in the upper 700 m +'Time-mean average sea water practical salinity in the upper 700 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Top net long-wave (thermal) radiation -'Top net long-wave (thermal) radiation' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean total column average sea water practical salinity +'Time-mean total column average sea water practical salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine duration -'Sunshine duration' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean vertically-integrated heat content in the upper 300 m +'Time-mean vertically-integrated heat content in the upper 300 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Brightness temperature -'Brightness temperature' = { - discipline = 0 ; +#Time-mean vertically-integrated heat content in the upper 700 m +'Time-mean vertically-integrated heat content in the upper 700 m' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#10 metre wind speed -'10 metre wind speed' = { - discipline = 0 ; - parameterCategory = 2 ; +#Time-mean total column heat content +'Time-mean total column heat content' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface height +'Time-mean sea surface height' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Skin temperature -'Skin temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean steric change in sea surface height +'Time-mean steric change in sea surface height' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Latent heat net flux -'Latent heat net flux' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean halosteric change in sea surface height +'Time-mean halosteric change in sea surface height' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Heat index -'Heat index' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 12 ; - } -#Wind chill factor -'Wind chill factor' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Minimum dew point depression -'Minimum dew point depression' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; - } -#Snow phase change heat flux -'Snow phase change heat flux' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Vapor pressure -'Vapor pressure' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 4 ; - } -#Large scale precipitation (non-convective) -'Large scale precipitation (non-convective)' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean thermosteric change in sea surface height +'Time-mean thermosteric change in sea surface height' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snowfall rate water equivalent -'Snowfall rate water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 12 ; - } -#Convective snow -'Convective snow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 14 ; - } -#Large scale snow -'Large scale snow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 15 ; - } -#Snow age -'Snow age' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 17 ; - } -#Absolute humidity -'Absolute humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 18 ; - } -#Precipitation type -'Precipitation type' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 19 ; - } -#Integrated liquid water -'Integrated liquid water' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 20 ; - } -#Condensate -'Condensate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Time-mean thermocline depth +'Time-mean thermocline depth' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Cloud mixing ratio -'Cloud mixing ratio' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Time-mean bottom pressure equivalent height +'Time-mean bottom pressure equivalent height' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Ice water mixing ratio -'Ice water mixing ratio' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Time-mean net surface upward water flux +'Time-mean net surface upward water flux' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rain mixing ratio -'Rain mixing ratio' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 24 ; +#Time-mean fresh water flux into sea water (from rivers) +'Time-mean fresh water flux into sea water (from rivers)' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow mixing ratio -'Snow mixing ratio' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 25 ; +#Time-mean virtual salt flux into sea water +'Time-mean virtual salt flux into sea water' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture convergence -'Horizontal moisture convergence' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 26 ; +#Time-mean heat flux correction +'Time-mean heat flux correction' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum relative humidity -'Maximum relative humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; +#Time-mean fresh water flux correction +'Time-mean fresh water flux correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum absolute humidity -'Maximum absolute humidity' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; +#Time-mean virtual salt flux correction +'Time-mean virtual salt flux correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitable water category -'Precipitable water category' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 30 ; +#Time-mean turbocline depth (kz=5e-4) +'Time-mean turbocline depth (kz=5e-4)' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Hail -'Hail' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 31 ; +#Time-mean Y-component of surface sea water velocity +'Time-mean Y-component of surface sea water velocity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Graupel (snow pellets) -'Graupel (snow pellets)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 32 ; +#Time-mean X-component of surface sea water velocity +'Time-mean X-component of surface sea water velocity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical rain -'Categorical rain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 33 ; +#Time-mean northward surface sea water velocity +'Time-mean northward surface sea water velocity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical freezing rain -'Categorical freezing rain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 34 ; +#Time-mean eastward surface sea water velocity +'Time-mean eastward surface sea water velocity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical ice pellets -'Categorical ice pellets' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 35 ; +#Time-mean heat content surface to 26C isotherm +'Time-mean heat content surface to 26C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; + typeOfStatisticalProcessing = 0 ; } -#Categorical snow -'Categorical snow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 36 ; +#Time-mean sea surface height tendency due to parameterization +'Time-mean sea surface height tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective precipitation rate -'Convective precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 37 ; +#Time-mean sea surface height with inverse barometer correction +'Time-mean sea surface height with inverse barometer correction' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture divergence -'Horizontal moisture divergence' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 38 ; +#Time-mean average sea water potential temperature in the upper 300m +'Time-mean average sea water potential temperature in the upper 300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Percent frozen precipitation -'Percent frozen precipitation' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 39 ; +#Time-mean sea surface salinity +'Time-mean sea surface salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential evaporation -'Potential evaporation' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 40 ; +#Time-mean vertically integrated sea water practical salinity in the upper 300 m +'Time-mean vertically integrated sea water practical salinity in the upper 300 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Snow cover -'Snow cover' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 42 ; +#Time-mean vertically integrated sea water practical salinity in the upper 700 m +'Time-mean vertically integrated sea water practical salinity in the upper 700 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain fraction of total cloud water -'Rain fraction of total cloud water' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 43 ; +#Time-mean total column vertically integrated sea water practical salinity +'Time-mean total column vertically integrated sea water practical salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rime factor -'Rime factor' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 44 ; +#Time-mean sea water practical salinity +'Time-mean sea water practical salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated rain -'Total column integrated rain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 45 ; +#Time-mean sea water potential temperature +'Time-mean sea water potential temperature' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated snow -'Total column integrated snow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 46 ; +#Time-mean sea water sigma theta +'Time-mean sea water sigma theta' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale water precipitation (non-convective) -'Large scale water precipitation (non-convective)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 47 ; +#Time-mean Y-component of sea water velocity +'Time-mean Y-component of sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective water precipitation -'Convective water precipitation' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 48 ; +#Time-mean X-component of sea water velocity +'Time-mean X-component of sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total water precipitation -'Total water precipitation' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; +#Time-mean northward sea water velocity +'Time-mean northward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column water (Vertically integrated total water (vapour + cloud water/ice)) -'Total column water (Vertically integrated total water (vapour + cloud water/ice))' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; +#Time-mean eastward sea water velocity +'Time-mean eastward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total precipitation rate -'Total precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean upward sea water velocity +'Time-mean upward sea water velocity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate water equivalent -'Total snowfall rate water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; +#Time-mean sea water potential temperature tendency due to newtonian relaxation +'Time-mean sea water potential temperature tendency due to newtonian relaxation' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation rate -'Large scale precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 54 ; +#Time-mean sea water salinity tendency due to newtonian relaxation +'Time-mean sea water salinity tendency due to newtonian relaxation' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate -'Total snowfall rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; +#Time-mean sea water temperature tendency due to parameterization +'Time-mean sea water temperature tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective snowfall rate -'Convective snowfall rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 58 ; +#Time-mean sea water salinity tendency due to parameterization +'Time-mean sea water salinity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snowfall rate -'Large scale snowfall rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 59 ; +#Time-mean eastward sea water velocity tendency due to parameterization +'Time-mean eastward sea water velocity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Water equivalent of accumulated snow depth (deprecated) -'Water equivalent of accumulated snow depth (deprecated)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Time-mean northward sea water velocity tendency due to parameterization +'Time-mean northward sea water velocity tendency due to parameterization' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Rain precipitation rate -'Rain precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 65 ; +#Time-mean sea water temperature tendency due to direct bias correction +'Time-mean sea water temperature tendency due to direct bias correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Snow precipitation rate -'Snow precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#Time-mean sea water salinity tendency due to direct bias correction +'Time-mean sea water salinity tendency due to direct bias correction' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Freezing rain precipitation rate -'Freezing rain precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 67 ; +#Time-mean sea water salinity +'Time-mean sea water salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Ice pellets precipitation rate -'Ice pellets precipitation rate' = { +#Time-mean net short wave radiation rate at sea surface +'Time-mean net short wave radiation rate at sea surface' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 68 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum wind speed -'Maximum wind speed' = { +#Time-mean wind stress at sea surface +'Time-mean wind stress at sea surface' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 21 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind speed (gust) -'Wind speed (gust)' = { +#Time-mean wind speed at 10m above sea surface +'Time-mean wind speed at 10m above sea surface' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#u-component of wind (gust) -'u-component of wind (gust)' = { +#Time-mean neutral drag coefficient at 10m above sea surface +'Time-mean neutral drag coefficient at 10m above sea surface' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 23 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#v-component of wind (gust) -'v-component of wind (gust)' = { +#Time-mean total precipitation rate at sea surface +'Time-mean total precipitation rate at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 24 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical speed shear -'Vertical speed shear' = { +#Time-mean snow precipitation rate at sea surface +'Time-mean snow precipitation rate at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 25 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal momentum flux -'Horizontal momentum flux' = { +#Time-mean eastward of wind stress over sea ice +'Time-mean eastward of wind stress over sea ice' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 26 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component storm motion -'U-component storm motion' = { +#Time-mean northward of wind stress over sea ice +'Time-mean northward of wind stress over sea ice' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 27 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component storm motion -'V-component storm motion' = { +#Time-mean U-component of wind stress over sea ice +'Time-mean U-component of wind stress over sea ice' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 28 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Drag coefficient -'Drag coefficient' = { +#Time-mean V-component of wind stress over sea ice +'Time-mean V-component of wind stress over sea ice' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 29 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Frictional velocity -'Frictional velocity' = { +#Time-accumulated net short wave radiation at sea surface +'Time-accumulated net short wave radiation at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Pressure reduced to MSL -'Pressure reduced to MSL' = { +#Time-accumulated total precipitation at sea surface +'Time-accumulated total precipitation at sea surface' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Altimeter setting -'Altimeter setting' = { +#Time-accumulated snow precipitation at sea surface +'Time-accumulated snow precipitation at sea surface' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 11 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Thickness -'Thickness' = { +#Virtual temperature +'Virtual temperature' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 12 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Pressure altitude -'Pressure altitude' = { +#Mass density +'Mass density' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 0 ; } -#Density altitude -'Density altitude' = { +#Total column vertically-integrated mass density +'Total column vertically-integrated mass density' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#5-wave geopotential height -'5-wave geopotential height' = { +#Mass mixing ratio +'Mass mixing ratio' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 2 ; } -#Zonal flux of gravity wave stress -'Zonal flux of gravity wave stress' = { +#Emission mass flux +'Emission mass flux' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } -#Meridional flux of gravity wave stress -'Meridional flux of gravity wave stress' = { +#Dry deposition velocity +'Dry deposition velocity' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 15 ; } -#5-wave geopotential height anomaly -'5-wave geopotential height anomaly' = { +#Wet deposition mass flux +'Wet deposition mass flux' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 7 ; } -#Net short-wave radiation flux (top of atmosphere) -'Net short-wave radiation flux (top of atmosphere)' = { +#Dry deposition mass flux +'Dry deposition mass flux' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 6 ; } -#Downward short-wave radiation flux -'Downward short-wave radiation flux' = { +#Sedimentation mass flux +'Sedimentation mass flux' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 11 ; } -#Upward short-wave radiation flux -'Upward short-wave radiation flux' = { +#Volume mixing ratio +'Volume mixing ratio' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 52 ; } -#Net short wave radiation flux -'Net short wave radiation flux' = { +#Wet deposition mass flux by large-scale precipitation +'Wet deposition mass flux by large-scale precipitation' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 9 ; } -#Photosynthetically active radiation -'Photosynthetically active radiation' = { +#Wet deposition mass flux by convective precipitation +'Wet deposition mass flux by convective precipitation' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 10 ; } -#Net short-wave radiation flux, clear sky -'Net short-wave radiation flux, clear sky' = { +#Emission mass flux from natural sources +'Emission mass flux from natural sources' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 6 ; } -#Downward UV radiation -'Downward UV radiation' = { +#Emission mass flux from anthropogenic sources +'Emission mass flux from anthropogenic sources' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 4 ; } -#UV index (under clear sky) -'UV index (under clear sky)' = { +#Emission mass flux from elevated anthropogenic sources +'Emission mass flux from elevated anthropogenic sources' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 50 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 12 ; } -#UV index -'UV index' = { +#Emission mass flux from surface anthropogenic sources +'Emission mass flux from surface anthropogenic sources' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 51 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 13 ; } -#Net long wave radiation flux (surface) -'Net long wave radiation flux (surface)' = { +#Emission from aviation +'Emission from aviation' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 1 ; } -#Net long wave radiation flux (top of atmosphere) -'Net long wave radiation flux (top of atmosphere)' = { +#Emission mass flux from agriculture livestock +'Emission mass flux from agriculture livestock' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 14 ; } -#Downward long-wave radiation flux -'Downward long-wave radiation flux' = { +#Emission mass flux from agriculture soils +'Emission mass flux from agriculture soils' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 15 ; } -#Upward long-wave radiation flux -'Upward long-wave radiation flux' = { +#Emission mass flux from agricultural waste burning +'Emission mass flux from agricultural waste burning' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 16 ; } -#Net long wave radiation flux -'Net long wave radiation flux' = { +#Emission mass flux from residential, commercial and other combustion +'Emission mass flux from residential, commercial and other combustion' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 18 ; } -#Net long-wave radiation flux, clear sky -'Net long-wave radiation flux, clear sky' = { +#Emission mass flux from power generation +'Emission mass flux from power generation' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 19 ; } -#Cloud Ice -'Cloud Ice' = { +#Emission mass flux from fugitives +'Emission mass flux from fugitives' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 21 ; } -#Cloud water -'Cloud water' = { +#Emission mass flux from industrial process +'Emission mass flux from industrial process' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 22 ; } -#Cloud amount -'Cloud amount' = { +#Emission mass flux from solvents +'Emission mass flux from solvents' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 23 ; } -#Cloud type -'Cloud type' = { +#Emission mass flux from ships +'Emission mass flux from ships' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 24 ; } -#Thunderstorm maximum tops -'Thunderstorm maximum tops' = { +#Emission mass flux from wastes (solid and water) +'Emission mass flux from wastes (solid and water)' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 25 ; } -#Thunderstorm coverage -'Thunderstorm coverage' = { +#Emission mass flux from off-road transportation +'Emission mass flux from off-road transportation' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 27 ; } -#Cloud top -'Cloud top' = { +#Emission mass flux from road transportation +'Emission mass flux from road transportation' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 26 ; } -#Ceiling -'Ceiling' = { +#Emission mass flux from super power stations +'Emission mass flux from super power stations' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 20 ; } -#Non-convective cloud cover -'Non-convective cloud cover' = { +#Emission mass flux from volcanoes +'Emission mass flux from volcanoes' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Cloud work function -'Cloud work function' = { +#Emission mass flux from wetlands +'Emission mass flux from wetlands' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; } -#Convective cloud efficiency -'Convective cloud efficiency' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 16 ; +#Net ecosystem exchange flux +'Net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; } -#Total condensate -'Total condensate' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 17 ; +#Mean net ecosystem exchange flux +'Mean net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; } -#Total column-integrated cloud water -'Total column-integrated cloud water' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 18 ; +#Accumulated net ecosystem exchange flux +'Accumulated net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; } -#Total column-integrated cloud ice -'Total column-integrated cloud ice' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 19 ; +#Gross primary production flux +'Gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; } -#Total column-integrated condensate -'Total column-integrated condensate' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 20 ; +#Mean gross primary production flux +'Mean gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'Accumulated gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'Ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; } -#Ice fraction of total condensate -'Ice fraction of total condensate' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 21 ; +#Mean ecosystem respiration flux +'Mean ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; } -#Cloud ice mixing ratio -'Cloud ice mixing ratio' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 23 ; +#Accumulated ecosystem respiration flux +'Accumulated ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; } -#Sunshine -'Sunshine' = { +#Emission mass flux from bio fuel +'Emission mass flux from bio fuel' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; } -#Horizontal extent of cumulonimbus (CB) -'Horizontal extent of cumulonimbus (CB)' = { +#Emission mass flux from fossil fuel +'Emission mass flux from fossil fuel' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 25 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; } -#K index -'K index' = { +#Emission mass flux from other +'Emission mass flux from other' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 2 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; } -#KO index -'KO index' = { +#Emission mass flux from oceans +'Emission mass flux from oceans' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; } -#Total totals index -'Total totals index' = { +#Accumulated wet deposition mass flux +'Accumulated wet deposition mass flux' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; } -#Sweat index -'Sweat index' = { +#Accumulated dry deposition mass flux +'Accumulated dry deposition mass flux' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; } -#Storm relative helicity -'Storm relative helicity' = { +#Aerosol number density +'Aerosol number density' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 59 ; } -#Energy helicity index -'Energy helicity index' = { +#Mass mixing ratio from volcanoes +'Mass mixing ratio from volcanoes' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Surface lifted index -'Surface lifted index' = { +#Total column vertically-integrated mass density from volcanoes +'Total column vertically-integrated mass density from volcanoes' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Best (4-layer) lifted index -'Best (4-layer) lifted index' = { +#Dry deposition velocity from volcanoes +'Dry deposition velocity from volcanoes' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Aerosol type -'Aerosol type' = { +#Pressure tendency +'Pressure tendency' = { discipline = 0 ; - parameterCategory = 13 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 2 ; } -#Total ozone -'Total ozone' = { +#ICAO Standard Atmosphere reference height +'ICAO Standard Atmosphere reference height' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 3 ; } -#Base spectrum width -'Base spectrum width' = { +#Geometrical height +'Geometrical height' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Base reflectivity -'Base reflectivity' = { +#Standard deviation of height +'Standard deviation of height' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 1 ; + parameterCategory = 3 ; + parameterNumber = 7 ; } -#Base radial velocity -'Base radial velocity' = { +#Virtual potential temperature +'Virtual potential temperature' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Vertically-integrated liquid -'Vertically-integrated liquid' = { +#Pseudo-adiabatic potential temperature +'Pseudo-adiabatic potential temperature' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Layer-maximum base reflectivity -'Layer-maximum base reflectivity' = { +#Maximum temperature +'Maximum temperature' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 4 ; } -#Precipitation -'Precipitation' = { +#Minimum temperature +'Minimum temperature' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Air concentration of Caesium 137 -'Air concentration of Caesium 137' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 0 ; - } -#Air concentration of Iodine 131 -'Air concentration of Iodine 131' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 1 ; - } -#Air concentration of radioactive pollutant -'Air concentration of radioactive pollutant' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 2 ; - } -#Ground deposition of Caesium 137 -'Ground deposition of Caesium 137' = { +#Dew point temperature +'Dew point temperature' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 3 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Ground deposition of Iodine 131 -'Ground deposition of Iodine 131' = { +#Lapse rate +'Lapse rate' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 4 ; + parameterCategory = 0 ; + parameterNumber = 8 ; } -#Ground deposition of radioactive pollutant -'Ground deposition of radioactive pollutant' = { +#Visibility +'Visibility' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 0 ; } -#Time-integrated air concentration of caesium pollutant -'Time-integrated air concentration of caesium pollutant' = { +#Radar spectra (1) +'Radar spectra (1)' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 6 ; } -#Time-integrated air concentration of iodine pollutant -'Time-integrated air concentration of iodine pollutant' = { +#Radar spectra (2) +'Radar spectra (2)' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 7 ; } -#Time-integrated air concentration of radioactive pollutant -'Time-integrated air concentration of radioactive pollutant' = { +#Radar spectra (3) +'Radar spectra (3)' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 8 ; } -#Volcanic ash -'Volcanic ash' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 4 ; - } -#Icing top -'Icing top' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } -#Icing base -'Icing base' = { +#Parcel lifted index (to 500 hPa) +'Parcel lifted index (to 500 hPa)' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 6 ; + parameterCategory = 7 ; + parameterNumber = 0 ; } -#Icing -'Icing' = { +#Temperature anomaly +'Temperature anomaly' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 7 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Turbulence top -'Turbulence top' = { +#Pressure anomaly +'Pressure anomaly' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 8 ; } -#Turbulence base -'Turbulence base' = { +#Geopotential height anomaly +'Geopotential height anomaly' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 9 ; } -#Turbulence -'Turbulence' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 10 ; +#Wave spectra (1) +'Wave spectra (1)' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Turbulent kinetic energy -'Turbulent kinetic energy' = { +#Wave spectra (2) +'Wave spectra (2)' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Wave spectra (3) +'Wave spectra (3)' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Wind direction +'Wind direction' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 11 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Planetary boundary layer regime -'Planetary boundary layer regime' = { +#Sigma coordinate vertical velocity +'Sigma coordinate vertical velocity' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Contrail intensity -'Contrail intensity' = { +#Absolute vorticity +'Absolute vorticity' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Contrail engine type -'Contrail engine type' = { +#Absolute divergence +'Absolute divergence' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 11 ; } -#Contrail top -'Contrail top' = { +#Vertical u-component shear +'Vertical u-component shear' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 15 ; } -#Contrail base -'Contrail base' = { +#Vertical v-component shear +'Vertical v-component shear' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 16 ; } -#Maximum snow albedo -'Maximum snow albedo' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; +#U-component of current +'U-component of current' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Snow free albedo -'Snow free albedo' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 18 ; +#V-component of current +'V-component of current' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Icing -'Icing' = { +#Precipitable water +'Precipitable water' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#In-cloud turbulence -'In-cloud turbulence' = { +#Saturation deficit +'Saturation deficit' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 21 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Relative clear air turbulence (RCAT) -'Relative clear air turbulence (RCAT)' = { +#Precipitation rate +'Precipitation rate' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Supercooled large droplet probability (see Note 4) -'Supercooled large droplet probability (see Note 4)' = { +#Thunderstorm probability +'Thunderstorm probability' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 23 ; + parameterNumber = 2 ; } -#Arbitrary text string -'Arbitrary text string' = { +#Convective precipitation (water) +'Convective precipitation (water)' = { discipline = 0 ; - parameterCategory = 190 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Seconds prior to initial reference time (defined in Section 1) -'Seconds prior to initial reference time (defined in Section 1)' = { +#Mixed layer depth +'Mixed layer depth' = { discipline = 0 ; - parameterCategory = 191 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 3 ; } -#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref -'Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Transient thermocline depth +'Transient thermocline depth' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 2 ; } -#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) -'Flash flood runoff (Encoded as an accumulation over a floating subinterval of time)' = { - discipline = 1 ; - parameterCategory = 0 ; +#Main thermocline anomaly +'Main thermocline anomaly' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 1 ; } -#Remotely sensed snow cover -'Remotely sensed snow cover' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Best lifted index (to 500 hPa) +'Best lifted index (to 500 hPa)' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 1 ; } -#Elevation of snow covered terrain -'Elevation of snow covered terrain' = { - discipline = 1 ; +#Soil moisture content +'Soil moisture content' = { + discipline = 2 ; parameterCategory = 0 ; parameterNumber = 3 ; } -#Snow water equivalent percent of normal -'Snow water equivalent percent of normal' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Baseflow-groundwater runoff -'Baseflow-groundwater runoff' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Storm surface runoff -'Storm surface runoff' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - } -#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) -'Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation)' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Salinity +'Salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th -'Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density +'Density' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Probability of 0.01 inch of precipitation (POP) -'Probability of 0.01 inch of precipitation (POP)' = { - discipline = 1 ; - parameterCategory = 1 ; +#Direction of ice drift +'Direction of ice drift' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 2 ; } -#Vegetation -'Vegetation' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Water runoff -'Water runoff' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Evapotranspiration -'Evapotranspiration' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Speed of ice drift +'Speed of ice drift' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 3 ; } -#Model terrain height -'Model terrain height' = { - discipline = 2 ; - parameterCategory = 0 ; +#Ice divergence +'Ice divergence' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 7 ; } -#Land use -'Land use' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 8 ; - } -#Ground heat flux -'Ground heat flux' = { +#Snowmelt +'Snowmelt' = { discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Moisture availability -'Moisture availability' = { - discipline = 2 ; +#Direction of swell waves +'Direction of swell waves' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 7 ; } -#Exchange coefficient -'Exchange coefficient' = { - discipline = 2 ; +#Secondary wave direction +'Secondary wave direction' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 12 ; } -#Plant canopy surface water -'Plant canopy surface water' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Blackadar mixing length scale -'Blackadar mixing length scale' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 14 ; +#Net short-wave radiation flux (surface) +'Net short-wave radiation flux (surface)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 0 ; } -#Canopy conductance -'Canopy conductance' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 15 ; +#Global radiation flux +'Global radiation flux' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Minimal stomatal resistance -'Minimal stomatal resistance' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Radiance (with respect to wave number) +'Radiance (with respect to wave number)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 5 ; } -#Solar parameter in canopy conductance -'Solar parameter in canopy conductance' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 18 ; +#Radiance (with respect to wave length) +'Radiance (with respect to wave length)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 6 ; } -#Temperature parameter in canopy conductance -'Temperature parameter in canopy conductance' = { - discipline = 2 ; - parameterCategory = 0 ; +#Wind mixing energy +'Wind mixing energy' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 19 ; } -#Soil moisture parameter in canopy conductance -'Soil moisture parameter in canopy conductance' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 20 ; +#10 metre wind gust of at least 15 m/s +'10 metre wind gust of at least 15 m/s' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 15 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Humidity parameter in canopy conductance -'Humidity parameter in canopy conductance' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 21 ; +#10 metre wind gust of at least 20 m/s +'10 metre wind gust of at least 20 m/s' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Column-integrated soil water -'Column-integrated soil water' = { - discipline = 2 ; +#Period corresponding to maximum individual wave height +'Period corresponding to maximum individual wave height' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 23 ; } -#Heat flux -'Heat flux' = { - discipline = 2 ; +#Maximum individual wave height +'Maximum individual wave height' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 24 ; } -#Volumetric soil moisture -'Volumetric soil moisture' = { - discipline = 2 ; +#Model bathymetry +'Model bathymetry' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Mean wave period based on first moment +'Mean wave period based on first moment' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 25 ; } -#Volumetric wilting point -'Volumetric wilting point' = { - discipline = 2 ; +#Mean zero-crossing wave period +'Mean zero-crossing wave period' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 27 ; - } -#Number of soil layers in root zone -'Number of soil layers in root zone' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - } -#Liquid volumetric soil moisture (non-frozen) -'Liquid volumetric soil moisture (non-frozen)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 10 ; + parameterNumber = 28 ; } -#Volumetric transpiration stress-onset (soil moisture) -'Volumetric transpiration stress-onset (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 11 ; +#Wave spectral directional width +'Wave spectral directional width' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 31 ; } -#Transpiration stress-onset (soil moisture) -'Transpiration stress-onset (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 12 ; +#Mean wave period based on first moment for wind waves +'Mean wave period based on first moment for wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 26 ; } -#Volumetric direct evaporation cease (soil moisture) -'Volumetric direct evaporation cease (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 13 ; +#Mean wave period based on second moment for wind waves +'Mean wave period based on second moment for wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 29 ; } -#Direct evaporation cease (soil moisture) -'Direct evaporation cease (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 14 ; +#Wave spectral directional width for wind waves +'Wave spectral directional width for wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 32 ; } -#Soil porosity -'Soil porosity' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 15 ; +#Mean wave period based on first moment for swell +'Mean wave period based on first moment for swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Volumetric saturation of soil moisture -'Volumetric saturation of soil moisture' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 16 ; +#Mean wave period based on second moment for swell +'Mean wave period based on second moment for swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 30 ; } -#Saturation of soil moisture -'Saturation of soil moisture' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 17 ; +#Wave spectral directional width for swell +'Wave spectral directional width for swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 33 ; } -#Estimated precipitation -'Estimated precipitation' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Significant height of combined wind waves and swell +'Significant height of combined wind waves and swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Instantaneous rain rate -'Instantaneous rain rate' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Mean wave direction +'Mean wave direction' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Cloud top height -'Cloud top height' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#Peak wave period +'Peak wave period' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 34 ; } -#Cloud top height quality indicator -'Cloud top height quality indicator' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Mean wave period +'Mean wave period' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Estimated u component of wind -'Estimated u component of wind' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Coefficient of drag with waves +'Coefficient of drag with waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Estimated v component of wind -'Estimated v component of wind' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of wind waves +'Significant height of wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Number of pixels used -'Number of pixels used' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Mean direction of wind waves +'Mean direction of wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; } -#Solar zenith angle -'Solar zenith angle' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 7 ; +#Mean period of wind waves +'Mean period of wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Relative azimuth angle -'Relative azimuth angle' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of total swell +'Significant height of total swell' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Reflectance in 0.6 micron channel -'Reflectance in 0.6 micron channel' = { - discipline = 3 ; - parameterCategory = 1 ; +#Mean direction of total swell +'Mean direction of total swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#Mean period of total swell +'Mean period of total swell' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Reflectance in 0.8 micron channel -'Reflectance in 0.8 micron channel' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 10 ; +#Mean square slope of waves +'Mean square slope of waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Reflectance in 1.6 micron channel -'Reflectance in 1.6 micron channel' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 11 ; +#10 metre wind speed +'10 metre wind speed' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Reflectance in 3.9 micron channel -'Reflectance in 3.9 micron channel' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Altimeter wave height +'Altimeter wave height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 37 ; } -#Atmospheric divergence -'Atmospheric divergence' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Altimeter corrected wave height +'Altimeter corrected wave height' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Direction of wind waves -'Direction of wind waves' = { +#Altimeter range relative correction +'Altimeter range relative correction' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 39 ; } -#Primary wave direction -'Primary wave direction' = { +#10 metre wind direction +'10 metre wind direction' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Primary wave mean period -'Primary wave mean period' = { +#2D wave spectra (single) +'2D wave spectra (single)' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 86 ; } -#Secondary wave mean period -'Secondary wave mean period' = { +#Wave spectral kurtosis +'Wave spectral kurtosis' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 13 ; + parameterNumber = 43 ; } -#Current direction -'Current direction' = { +#Benjamin-Feir index +'Benjamin-Feir index' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 44 ; + } +#Eastward sea water velocity +'Eastward sea water velocity' = { discipline = 10 ; parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 160 ; } -#Current speed -'Current speed' = { +#Northward sea water velocity +'Northward sea water velocity' = { discipline = 10 ; parameterCategory = 1 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + } +#Skin reservoir content +'Skin reservoir content' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'Vertical integral of mass of atmosphere' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated kinetic energy +'Total column vertically-integrated kinetic energy' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometric vertical velocity -'Geometric vertical velocity' = { +#Total column vertically-integrated enthalpy +'Total column vertically-integrated enthalpy' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 9 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Seconds prior to initial reference time (defined in Section 1) -'Seconds prior to initial reference time (defined in Section 1)' = { - discipline = 10 ; - parameterCategory = 191 ; +#Total column vertically-integrated potential + internal energy +'Total column vertically-integrated potential + internal energy' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Forecast albedo -'Forecast albedo' = { +#Vertical integral of potential+internal+latent energy +'Vertical integral of potential+internal+latent energy' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Pressure tendency -'Pressure tendency' = { +#Total column vertically-integrated total energy +'Total column vertically-integrated total energy' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 21 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#ICAO Standard Atmosphere reference height -'ICAO Standard Atmosphere reference height' = { +#Vertical integral of eastward heat flux +'Vertical integral of eastward heat flux' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 3 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'Vertical integral of northward heat flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward water vapour flux +'Vertical integral of eastward water vapour flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometrical height -'Geometrical height' = { +#Vertical integral of northward water vapour flux +'Vertical integral of northward water vapour flux' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 6 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Standard deviation of height -'Standard deviation of height' = { +#Vertically integrated moisture divergence flux +'Vertically integrated moisture divergence flux' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Maximum temperature -'Maximum temperature' = { +#Time-integrated temperature tendency due to short-wave radiation +'Time-integrated temperature tendency due to short-wave radiation' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfStatisticalProcessing = 1 ; } -#Minimum temperature -'Minimum temperature' = { +#Time-integrated temperature tendency due to long-wave radiation +'Time-integrated temperature tendency due to long-wave radiation' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 5 ; + parameterNumber = 23 ; + typeOfStatisticalProcessing = 1 ; } -#Dew point temperature -'Dew point temperature' = { +#Time-integrated temperature tendency due to short wave radiation, clear sky +'Time-integrated temperature tendency due to short wave radiation, clear sky' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 24 ; + typeOfStatisticalProcessing = 1 ; } -#Lapse rate -'Lapse rate' = { +#Time-integrated temperature tendency due to long-wave radiation, clear sky +'Time-integrated temperature tendency due to long-wave radiation, clear sky' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 1 ; } -#Visibility -'Visibility' = { +#Time-integrated updraught mass flux +'Time-integrated updraught mass flux' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (1) -'Radar spectra (1)' = { +#Time-integrated downdraught mass flux +'Time-integrated downdraught mass flux' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 28 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (2) -'Radar spectra (2)' = { +#Time-integrated updraught detrainment rate +'Time-integrated updraught detrainment rate' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 7 ; + parameterCategory = 3 ; + parameterNumber = 29 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (3) -'Radar spectra (3)' = { +#Time-integrated downdraught detrainment rate +'Time-integrated downdraught detrainment rate' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 30 ; + typeOfStatisticalProcessing = 1 ; } -#Parcel lifted index (to 500 hPa) -'Parcel lifted index (to 500 hPa)' = { +#Time-integrated total precipitation flux +'Time-integrated total precipitation flux' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; } -#Temperature anomaly -'Temperature anomaly' = { +#Time-integrated turbulent diffusion coefficient for heat +'Time-integrated turbulent diffusion coefficient for heat' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Pressure anomaly -'Pressure anomaly' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 8 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 1 ; } -#Geopotential height anomaly -'Geopotential height anomaly' = { +#Time-integrated temperature tendency due to parametrisations +'Time-integrated temperature tendency due to parametrisations' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } -#Wave spectra (1) -'Wave spectra (1)' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Wave spectra (2) -'Wave spectra (2)' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } -#Wave spectra (3) -'Wave spectra (3)' = { - discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 2 ; + parameterNumber = 26 ; + typeOfStatisticalProcessing = 1 ; } -#Sigma coordinate vertical velocity -'Sigma coordinate vertical velocity' = { +#Time-integrated specific humidity tendency due to parametrisations +'Time-integrated specific humidity tendency due to parametrisations' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 108 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute vorticity -'Absolute vorticity' = { +#Time-integrated eastward wind tendency due to parametrisations +'Time-integrated eastward wind tendency due to parametrisations' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 39 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute divergence -'Absolute divergence' = { +#Time-integrated northward wind tendency due to parametrisations +'Time-integrated northward wind tendency due to parametrisations' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 11 ; + parameterNumber = 40 ; + typeOfStatisticalProcessing = 1 ; } -#Vertical u-component shear -'Vertical u-component shear' = { +#Time-mean surface net radiation flux (SW and LW) +'Time-mean surface net radiation flux (SW and LW)' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 15 ; + parameterCategory = 19 ; + parameterNumber = 46 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical v-component shear -'Vertical v-component shear' = { +#Surface runoff +'Surface runoff' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Nitrogen dioxide mass mixing ratio +'Nitrogen dioxide mass mixing ratio' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + is_chemical = 1 ; } -#U-component of current -'U-component of current' = { - discipline = 10 ; - parameterCategory = 1 ; +#Sulphur dioxide mass mixing ratio +'Sulphur dioxide mass mixing ratio' = { + discipline = 0 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 8 ; + is_chemical = 1 ; } -#V-component of current -'V-component of current' = { - discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Carbon monoxide mass mixing ratio +'Carbon monoxide mass mixing ratio' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 4 ; + is_chemical = 1 ; } -#Precipitable water -'Precipitable water' = { +#Ozone mass mixing ratio (full chemistry scheme) +'Ozone mass mixing ratio (full chemistry scheme)' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + is_chemical = 1 ; } -#Saturation deficit -'Saturation deficit' = { +#Nitrogen dioxide mass mixing ratio difference +'Nitrogen dioxide mass mixing ratio difference' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Precipitation rate -'Precipitation rate' = { +#Sulphur dioxide mass mixing ratio difference +'Sulphur dioxide mass mixing ratio difference' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Thunderstorm probability -'Thunderstorm probability' = { +#Carbon monoxide mass mixing ratio difference +'Carbon monoxide mass mixing ratio difference' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 4 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Convective precipitation (water) -'Convective precipitation (water)' = { +#Ozone mass mixing ratio difference (full chemistry scheme) +'Ozone mass mixing ratio difference (full chemistry scheme)' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Mixed layer depth -'Mixed layer depth' = { +#Convective inhibition +'Convective inhibition' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 3 ; + parameterCategory = 7 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Transient thermocline depth -'Transient thermocline depth' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Orography +'Orography' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; } -#Main thermocline anomaly -'Main thermocline anomaly' = { +#Friction velocity +'Friction velocity' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; } -#Best lifted index (to 500 hPa) -'Best lifted index (to 500 hPa)' = { +#Mean 2 metre temperature +'Mean 2 metre temperature' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 1 ; - } -#Soil moisture content -'Soil moisture content' = { - discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Salinity -'Salinity' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; +#Lake total depth +'Lake total depth' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Density -'Density' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 10 ; +#Lake mix-layer temperature +'Lake mix-layer temperature' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Direction of ice drift -'Direction of ice drift' = { - discipline = 10 ; +#Lake mix-layer depth +'Lake mix-layer depth' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Speed of ice drift -'Speed of ice drift' = { - discipline = 10 ; +#Lake bottom temperature +'Lake bottom temperature' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 162 ; + typeOfSecondFixedSurface = 255 ; } -#Ice divergence -'Ice divergence' = { - discipline = 10 ; +#Lake total layer temperature +'Lake total layer temperature' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Direction of swell waves -'Direction of swell waves' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Lake shape factor +'Lake shape factor' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Secondary wave direction -'Secondary wave direction' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Lake ice surface temperature +'Lake ice surface temperature' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; } -#Net short-wave radiation flux (surface) -'Net short-wave radiation flux (surface)' = { +#Lake ice total depth +'Lake ice total depth' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Minimum vertical gradient of refractivity inside trapping layer +'Minimum vertical gradient of refractivity inside trapping layer' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; } -#Global radiation flux -'Global radiation flux' = { +#Mean vertical gradient of refractivity inside trapping layer +'Mean vertical gradient of refractivity inside trapping layer' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 3 ; + parameterCategory = 19 ; + parameterNumber = 44 ; } -#Radiance (with respect to wave number) -'Radiance (with respect to wave number)' = { +#Duct base height +'Duct base height' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 41 ; } -#Radiance (with respect to wave length) -'Radiance (with respect to wave length)' = { +#Trapping layer base height +'Trapping layer base height' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 6 ; + parameterCategory = 19 ; + parameterNumber = 42 ; } -#Wind mixing energy -'Wind mixing energy' = { +#Trapping layer top height +'Trapping layer top height' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 19 ; + parameterCategory = 19 ; + parameterNumber = 43 ; } -#10 metre wind gust of at least 15 m/s -'10 metre wind gust of at least 15 m/s' = { +#Soil moisture +'Soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#10 metre u-component of neutral wind +'10 metre u-component of neutral wind' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 56 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 15 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } -#10 metre wind gust of at least 20 m/s -'10 metre wind gust of at least 20 m/s' = { +#10 metre v-component of neutral wind +'10 metre v-component of neutral wind' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 57 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Convective inhibition -'Convective inhibition' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Orography -'Orography' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - } -#Soil moisture -'Soil moisture' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 22 ; } #Soil temperature 'Soil temperature' = { @@ -10782,4 +10752,34 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; + } +#U-component surface stokes drift +'U-component surface stokes drift' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 21 ; + } +#V-component surface stokes drift +'V-component surface stokes drift' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#100 metre U wind component +'100 metre U wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'100 metre V wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; } diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index cd3ccc913..281adc5d6 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -23,6 +23,30 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; } +#Total precipitation of at least 10 mm +'131062' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 10 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Total precipitation of at least 20 mm +'131063' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } #Total precipitation of at least 40 mm '131082' = { discipline = 0 ; @@ -107,6 +131,24 @@ scaleFactorOfLowerLimit = -2 ; probabilityType = 3 ; } +#Stream function +'1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + } +#Velocity potential +'2' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + } +#Potential temperature +'3' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } #Wind speed '10' = { discipline = 0 ; @@ -230,6 +272,12 @@ parameterCategory = 2 ; parameterNumber = 6 ; } +#Pressure +'54' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + } #Downward UV radiation at the surface '57' = { discipline = 0 ; @@ -246,6 +294,20 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Convective available potential energy +'59' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Potential vorticity +'60' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + } #Leaf area index, low vegetation '66' = { discipline = 2 ; @@ -299,6 +361,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Maximum temperature at 2 metres in the last 6 hours +'121' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 2 ; + lengthOfTimeRange = 6 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'122' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 3 ; + lengthOfTimeRange = 6 ; + } #Surface emissivity '124' = { discipline = 2 ; @@ -306,6 +392,57 @@ parameterNumber = 62 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'129' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'130' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'131' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'132' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'133' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'134' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'135' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Total column water +'136' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column vertically-integrated water vapour '137' = { discipline = 0 ; @@ -314,6 +451,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'138' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation '145' = { discipline = 0 ; @@ -321,6 +464,22 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'146' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'147' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Charnock '148' = { discipline = 10 ; @@ -343,6 +502,31 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Mean sea level pressure +'151' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'155' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'156' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'157' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Boundary layer height '159' = { discipline = 0 ; @@ -373,6 +557,42 @@ parameterCategory = 3 ; parameterNumber = 22 ; } +#10 metre U wind component +'165' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#10 metre V wind component +'166' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre temperature +'167' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre dewpoint temperature +'168' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface short-wave (solar) radiation downwards '169' = { discipline = 0 ; @@ -381,6 +601,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'172' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) '173' = { discipline = 2 ; @@ -397,6 +624,22 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface net short-wave (solar) radiation +'176' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'177' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation '178' = { discipline = 0 ; @@ -405,6 +648,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'179' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress '180' = { discipline = 0 ; @@ -421,10 +672,24 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Eastward gravity wave surface stress -'195' = { +#Sunshine duration +'189' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 6 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Brightness temperature +'194' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 4 ; + } +#Eastward gravity wave surface stress +'195' = { + discipline = 0 ; + parameterCategory = 3 ; parameterNumber = 16 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; @@ -470,6 +735,15 @@ parameterCategory = 14 ; parameterNumber = 1 ; } +#10 metre wind speed +'207' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Top net short-wave (solar) radiation, clear sky '208' = { discipline = 0 ; @@ -555,6 +829,13 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Skin temperature +'235' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + } #Temperature of snow layer '238' = { discipline = 2 ; @@ -4618,6110 +4899,5799 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Total snowfall -'260025' = { +#Latent heat net flux +'260002' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Total snow precipitation -'260046' = { +#Heat index +'260004' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Total column integrated ozone -'260132' = { +#Wind chill factor +'260005' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#2 metre relative humidity -'260242' = { +#Minimum dew point depression +'260006' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Apparent temperature -'260255' = { +#Snow phase change heat flux +'260007' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 21 ; + parameterNumber = 16 ; } -#Haines Index -'260256' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Vapor pressure +'260008' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Cloud cover -'260257' = { +#Large scale precipitation (non-convective) +'260009' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Evaporation -'260259' = { +#Snowfall rate water equivalent +'260010' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 12 ; } -#10 metre wind direction -'260260' = { +#Convective snow +'260011' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 1 ; + parameterNumber = 14 ; } -#Direct short wave radiation flux -'260262' = { +#Large scale snow +'260012' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Diffuse short wave radiation flux -'260263' = { +#Snow age +'260013' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 14 ; + parameterCategory = 1 ; + parameterNumber = 17 ; } -#Evaporation in the last 6 hours -'260265' = { +#Absolute humidity +'260014' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; + parameterNumber = 18 ; } -#Evaporation in the last 24 hours -'260266' = { +#Precipitation type +'260015' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + parameterNumber = 19 ; } -#Fraction of snow cover -'260289' = { +#Integrated liquid water +'260016' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 121 ; + parameterNumber = 20 ; } -#Clear air turbulence (CAT) -'260290' = { +#Condensate +'260017' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 29 ; + parameterCategory = 1 ; + parameterNumber = 21 ; } -#Mountain wave turbulence (eddy dissipation rate) -'260291' = { +#Cloud mixing ratio +'260018' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 28 ; + parameterCategory = 1 ; + parameterNumber = 22 ; } -#Specific rain water content (convective) -'260292' = { +#Ice water mixing ratio +'260019' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 144 ; + parameterNumber = 23 ; } -#Specific snow water content (convective) -'260293' = { +#Rain mixing ratio +'260020' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 145 ; + parameterNumber = 24 ; } -#Glacier mask -'260294' = { - discipline = 2 ; - parameterCategory = 5 ; - parameterNumber = 0 ; +#Snow mixing ratio +'260021' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 25 ; } -#Precipitation type (most severe) in the last 1 hour -'260318' = { +#Horizontal moisture convergence +'260022' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 1 ; + parameterNumber = 26 ; } -#Precipitation type (most severe) in the last 3 hours -'260319' = { +#Maximum relative humidity +'260023' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 3 ; + parameterNumber = 27 ; } -#Precipitation type (most frequent) in the last 1 hour -'260320' = { +#Maximum absolute humidity +'260024' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 1 ; + parameterNumber = 28 ; } -#Precipitation type (most frequent) in the last 3 hours -'260321' = { +#Total snowfall +'260025' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 3 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Precipitation type (most severe) in the last 6 hours -'260338' = { +#Precipitable water category +'260026' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 6 ; + parameterNumber = 30 ; } -#Precipitation type (most frequent) in the last 6 hours -'260339' = { +#Hail +'260027' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 6 ; + parameterNumber = 31 ; } -#Soil temperature -'260360' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - } -#Downward short-wave radiation flux, clear sky -'260361' = { +#Graupel (snow pellets) +'260028' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 52 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Upward short-wave radiation flux, clear sky -'260362' = { +#Categorical rain +'260029' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; + parameterCategory = 1 ; + parameterNumber = 33 ; } -#Downward long-wave radiation flux, clear sky -'260363' = { +#Categorical freezing rain +'260030' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 8 ; - } -#Soil heat flux -'260364' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 26 ; - } -#Percolation rate -'260365' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Soil depth -'260367' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 27 ; + parameterCategory = 1 ; + parameterNumber = 34 ; } -#Soil moisture -'260368' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; +#Categorical ice pellets +'260031' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 35 ; } -#Accumulated surface upward short-wave radiation flux, clear sky -'260427' = { +#Categorical snow +'260032' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 1 ; + parameterNumber = 36 ; } -#Percolation -'260430' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 177 ; - typeOfStatisticalProcessing = 1 ; +#Convective precipitation rate +'260033' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 37 ; } -#Evapotranspiration rate -'260433' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; +#Horizontal moisture divergence +'260034' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 38 ; } -#Time-mean evapotranspiration rate in the last 24h -'260435' = { - discipline = 2 ; - parameterCategory = 0 ; +#Percent frozen precipitation +'260035' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } -#Potential evapotranspiration rate -'260436' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - } -#Time-integrated potential evapotranspiration rate in the last 24h -'260437' = { - discipline = 2 ; - parameterCategory = 0 ; +#Potential evaporation +'260036' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Time-mean potential evapotranspiration rate in the last 24h -'260438' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Snow cover +'260038' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 42 ; } -#Time-mean volumetric soil moisture -'260440' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Rain fraction of total cloud water +'260039' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 43 ; } -#Water runoff and drainage rate -'260443' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; +#Rime factor +'260040' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 44 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'260444' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; +#Total column integrated rain +'260041' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 45 ; } -#Time-mean water runoff and drainage rate in the last 24h -'260445' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Total column integrated snow +'260042' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 46 ; } -#Time-mean snow depth water equivalent -'260472' = { +#Large scale water precipitation (non-convective) +'260043' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterNumber = 47 ; } -#Time-mean skin temperature -'260473' = { +#Convective water precipitation +'260044' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterCategory = 1 ; + parameterNumber = 48 ; } -#Snow melt rate -'260475' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; +#Total water precipitation +'260045' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 49 ; } -#Time-integrated snow melt rate in the last 24h -'260476' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; +#Total snow precipitation +'260046' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Cloudy brightness temperature -'260510' = { - discipline = 3 ; +#Total column water (Vertically integrated total water (vapour + cloud water/ice)) +'260047' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 14 ; + parameterNumber = 51 ; } -#Clear-sky brightness temperature -'260511' = { - discipline = 3 ; +#Total precipitation rate +'260048' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 15 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; } -#Cloudy reflectance -'260512' = { - discipline = 3 ; +#Total snowfall rate water equivalent +'260049' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 31 ; + parameterNumber = 53 ; } -#Clear reflectance -'260513' = { - discipline = 3 ; +#Large scale precipitation rate +'260050' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 32 ; + parameterNumber = 54 ; } -#Scaled radiance -'260530' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Total snowfall rate +'260053' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; } -#Scaled albedo -'260531' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Convective snowfall rate +'260054' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 58 ; } -#Scaled brightness temperature -'260532' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Large scale snowfall rate +'260055' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 59 ; } -#Scaled precipitable water -'260533' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 3 ; +#Water equivalent of accumulated snow depth (deprecated) +'260056' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Scaled lifted index -'260534' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Rain precipitation rate +'260058' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 65 ; } -#Scaled cloud top pressure -'260535' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 5 ; +#Snow precipitation rate +'260059' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; } -#Scaled skin temperature -'260536' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Freezing rain precipitation rate +'260060' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 67 ; } -#Cloud mask -'260537' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Ice pellets precipitation rate +'260061' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 68 ; } -#Pixel scene type -'260538' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 8 ; +#Maximum wind speed +'260064' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; } -#Fire detection indicator -'260539' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 9 ; +#Wind speed (gust) +'260065' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; } -#Forest fire weather index (as defined by the Canadian Forest Service) -'260540' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 5 ; +#u-component of wind (gust) +'260066' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; } -#Fine fuel moisture code (as defined by the Canadian Forest Service) -'260541' = { - discipline = 2 ; +#v-component of wind (gust) +'260067' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + } +#Vertical speed shear +'260068' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + } +#Horizontal momentum flux +'260069' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 26 ; + } +#U-component storm motion +'260070' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 27 ; + } +#V-component storm motion +'260071' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 28 ; + } +#Drag coefficient +'260072' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + } +#Frictional velocity +'260073' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 30 ; + } +#Pressure reduced to MSL +'260074' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Altimeter setting +'260076' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + } +#Thickness +'260077' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 12 ; + } +#Pressure altitude +'260078' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + } +#Density altitude +'260079' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + } +#5-wave geopotential height +'260080' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + } +#Zonal flux of gravity wave stress +'260081' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + } +#Meridional flux of gravity wave stress +'260082' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + } +#5-wave geopotential height anomaly +'260084' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + } +#Net short-wave radiation flux (top of atmosphere) +'260086' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 6 ; + parameterNumber = 1 ; } -#Duff moisture code (as defined by the Canadian Forest Service) -'260542' = { - discipline = 2 ; +#Downward short-wave radiation flux +'260087' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 7 ; } -#Drought code (as defined by the Canadian Forest Service) -'260543' = { - discipline = 2 ; +#Upward short-wave radiation flux +'260088' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 8 ; } -#Initial fire spread index (as defined by the Canadian Forest Service) -'260544' = { - discipline = 2 ; +#Net short wave radiation flux +'260089' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 9 ; } -#Fire buildup index (as defined by the Canadian Forest Service) -'260545' = { - discipline = 2 ; +#Photosynthetically active radiation +'260090' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 10 ; } -#Fire daily severity rating (as defined by the Canadian Forest Service) -'260546' = { - discipline = 2 ; +#Net short-wave radiation flux, clear sky +'260091' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 11 ; } -#Cloudy radiance (with respect to wave number) -'260550' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } -#Clear-sky radiance (with respect to wave number) -'260551' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#Downward UV radiation +'260092' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 12 ; } -#Wind speed -'260552' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#UV index (under clear sky) +'260093' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 50 ; } -#Aerosol optical thickness at 0.635 um -'260553' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#UV index +'260094' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 51 ; } -#Aerosol optical thickness at 0.810 um -'260554' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Net long wave radiation flux (surface) +'260095' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; } -#Aerosol optical thickness at 1.640 um -'260555' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Net long wave radiation flux (top of atmosphere) +'260096' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; } -#Angstrom coefficient -'260556' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Downward long-wave radiation flux +'260097' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 3 ; } -#Keetch-Byram drought index -'260557' = { - discipline = 2 ; - parameterCategory = 4 ; +#Upward long-wave radiation flux +'260098' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 4 ; + } +#Net long wave radiation flux +'260099' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + } +#Net long-wave radiation flux, clear sky +'260100' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 6 ; + } +#Cloud Ice +'260101' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Cloud water +'260102' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 6 ; + } +#Cloud amount +'260103' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 7 ; + } +#Cloud type +'260104' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 8 ; + } +#Thunderstorm maximum tops +'260105' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 9 ; + } +#Thunderstorm coverage +'260106' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 10 ; + } +#Cloud top +'260108' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 12 ; } -#Drought factor (as defined by the Australian forest service) -'260558' = { - discipline = 2 ; - parameterCategory = 4 ; +#Ceiling +'260109' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 13 ; } -#Rate of spread (as defined by the Australian forest service) -'260559' = { - discipline = 2 ; - parameterCategory = 4 ; +#Non-convective cloud cover +'260110' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 14 ; } -#Fire danger index (as defined by the Australian forest service) -'260560' = { - discipline = 2 ; - parameterCategory = 4 ; +#Cloud work function +'260111' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 15 ; } -#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'260561' = { - discipline = 2 ; - parameterCategory = 4 ; +#Convective cloud efficiency +'260112' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 16 ; } -#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) -'260562' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total condensate +'260113' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 17 ; } -#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'260563' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud water +'260114' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 18 ; } -#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'260564' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud ice +'260115' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 19 ; } -#Volumetric soil ice -'260644' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 38 ; +#Total column-integrated condensate +'260116' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 20 ; } -#Time integral of total solid precipitation flux -'260645' = { +#Ice fraction of total condensate +'260117' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 128 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 6 ; + parameterNumber = 21 ; } -#10 metre eastward wind gust since previous post-processing -'260646' = { +#Cloud ice mixing ratio +'260118' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#10 metre northward wind gust since previous post-processing -'260647' = { +#Sunshine +'260119' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#Fog -'260648' = { +#Horizontal extent of cumulonimbus (CB) +'260120' = { discipline = 0 ; parameterCategory = 6 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 25 ; } -#Time-integrated eastward turbulent surface stress due to orographic form drag -'260652' = { +#K index +'260121' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 64 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 2 ; } -#Time-integrated northward turbulent surface stress due to orographic form drag -'260653' = { +#KO index +'260122' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 65 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 3 ; } -#Time-integrated eastward turbulent surface stress due to surface roughness -'260654' = { +#Total totals index +'260123' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 4 ; } -#Time-integrated northward turbulent surface stress due to surface roughness -'260655' = { +#Sweat index +'260124' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 67 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 5 ; } -#Saturation specific humidity with respect to water -'260656' = { +#Storm relative helicity +'260125' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 168 ; + parameterCategory = 7 ; + parameterNumber = 8 ; } -#Total column integrated saturation specific humidity with respect to water -'260657' = { +#Energy helicity index +'260126' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 169 ; + parameterCategory = 7 ; + parameterNumber = 9 ; + } +#Surface lifted index +'260127' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 10 ; + } +#Best (4-layer) lifted index +'260128' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 11 ; + } +#Aerosol type +'260129' = { + discipline = 0 ; + parameterCategory = 13 ; + parameterNumber = 0 ; + } +#Total ozone +'260130' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 0 ; + } +#Total column integrated ozone +'260132' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 2 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Universal thermal climate index -'261001' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base spectrum width +'260133' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 0 ; } -#Mean radiant temperature -'261002' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base reflectivity +'260134' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 1 ; } -#Fraction of Malaria cases -'261003' = { - discipline = 20 ; - parameterCategory = 1 ; +#Base radial velocity +'260135' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 2 ; + } +#Vertically-integrated liquid +'260136' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 3 ; + } +#Layer-maximum base reflectivity +'260137' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 4 ; + } +#Precipitation +'260138' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 5 ; + } +#Air concentration of Caesium 137 +'260139' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 0 ; } -#Malaria circumsporozoite protein ratio -'261004' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of Iodine 131 +'260140' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 1 ; } -#Plasmodium falciparum entomological inoculation rate -'261005' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of radioactive pollutant +'260141' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 2 ; } -#Human bite rate by anopheles vectors -'261006' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Caesium 137 +'260142' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 3 ; } -#Malaria immunity ratio -'261007' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Iodine 131 +'260143' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 4 ; } -#Falciparum parasite ratio -'261008' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of radioactive pollutant +'260144' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 5 ; } -#Detectable falciparum parasite ratio (after day 10) -'261009' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of caesium pollutant +'260145' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 6 ; } -#Anopheles vector to host ratio -'261010' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of iodine pollutant +'260146' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 7 ; } -#Anopheles vector density -'261011' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of radioactive pollutant +'260147' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 8 ; } -#Fraction of malarial vector reproductive habitat -'261012' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 9 ; - } -#Population density -'261013' = { - discipline = 20 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Wet bulb globe temperature -'261014' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Globe temperature -'261015' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Humidex -'261016' = { - discipline = 20 ; - parameterCategory = 0 ; +#Volcanic ash +'260148' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 4 ; } -#Effective temperature -'261017' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing top +'260149' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 5 ; } -#Normal effective temperature -'261018' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing base +'260150' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 6 ; } -#Standard effective temperature -'261019' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing +'260151' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 7 ; } -#Physiological equivalent temperature -'261020' = { - discipline = 20 ; - parameterCategory = 0 ; +#Turbulence top +'260152' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 8 ; } -#Saturation water vapour pressure -'261021' = { +#Turbulence base +'260153' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 9 ; } -#Wet-bulb potential temperature -'261022' = { +#Turbulence +'260154' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 10 ; } -#Sea ice thickness -'262000' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulent kinetic energy +'260155' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 11 ; } -#Sea ice area fraction -'262001' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Eastward sea ice velocity -'262003' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Planetary boundary layer regime +'260156' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 12 ; } -#Northward sea ice velocity -'262004' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail intensity +'260157' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 13 ; } -#Sea ice albedo -'262005' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail engine type +'260158' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice surface temperature -'262006' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice growth -'262007' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice volume per unit area -'262008' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail top +'260159' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow volume over sea ice per unit area -'262009' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail base +'260160' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Vertically averaged sea ice temperature -'262010' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Snow temperature over sea ice -'262011' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice temperature at the sea ice and snow interface -'262012' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Underside ice temperature -'262013' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice heat content -'262014' = { - discipline = 10 ; - parameterCategory = 2 ; +#Maximum snow albedo +'260161' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow heat content over sea ice -'262015' = { - discipline = 10 ; - parameterCategory = 2 ; +#Snow free albedo +'260162' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice freeboard thickness -'262016' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; } -#Sea ice melt pond fraction -'262017' = { - discipline = 10 ; - parameterCategory = 2 ; +#Icing +'260163' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond depth -'262018' = { - discipline = 10 ; - parameterCategory = 2 ; +#In-cloud turbulence +'260164' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond volume per unit area -'262019' = { - discipline = 10 ; - parameterCategory = 2 ; +#Relative clear air turbulence (RCAT) +'260165' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice fraction tendency due to parameterization -'262020' = { - discipline = 10 ; - parameterCategory = 2 ; +#Supercooled large droplet probability (see Note 4) +'260166' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'262021' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Arbitrary text string +'260167' = { + discipline = 0 ; + parameterCategory = 190 ; + parameterNumber = 0 ; } -#Y-component of sea ice velocity -'262022' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Seconds prior to initial reference time (defined in Section 1) +'260168' = { + discipline = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea ice temperature -'262024' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref +'260169' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Sea surface practical salinity -'262100' = { - discipline = 10 ; - parameterCategory = 3 ; +#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) +'260170' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Remotely sensed snow cover +'260171' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Elevation of snow covered terrain +'260172' = { + discipline = 1 ; + parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface temperature -'262101' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Snow water equivalent percent of normal +'260173' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Depth of 14 C isotherm -'262102' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Baseflow-groundwater runoff +'260174' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Depth of 17 C isotherm -'262103' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Storm surface runoff +'260175' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Depth of 20 C isotherm -'262104' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) +'260176' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Depth of 26 C isotherm -'262105' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th +'260177' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Depth of 28 C isotherm -'262106' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Probability of 0.01 inch of precipitation (POP) +'260178' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Barotropic stream function -'262107' = { - discipline = 10 ; - parameterCategory = 191 ; +#Vegetation +'260180' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Surface downward heat flux -'262108' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Water runoff +'260181' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Northward surface stress -'262109' = { - discipline = 10 ; - parameterCategory = 3 ; +#Evapotranspiration +'260182' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Eastward surface stress -'262110' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Model terrain height +'260183' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Y-component of surface stress -'262111' = { - discipline = 10 ; - parameterCategory = 3 ; +#Land use +'260184' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of surface stress -'262112' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ground heat flux +'260186' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'262113' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Moisture availability +'260187' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'262114' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Exchange coefficient +'260188' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'262115' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Plant canopy surface water +'260189' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Ocean mixed layer depth defined by temperature 0.2 C -'262116' = { - discipline = 10 ; - parameterCategory = 4 ; +#Blackadar mixing length scale +'260190' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Ocean mixed layer depth defined by temperature 0.5 C -'262117' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Canopy conductance +'260191' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Average sea water practical salinity in the upper 300 m -'262118' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Minimal stomatal resistance +'260192' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Average sea water practical salinity in the upper 700 m -'262119' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar parameter in canopy conductance +'260193' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 18 ; } -#Total column average sea water practical salinity -'262120' = { - discipline = 10 ; - parameterCategory = 4 ; +#Temperature parameter in canopy conductance +'260194' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } +#Soil moisture parameter in canopy conductance +'260195' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 20 ; + } +#Humidity parameter in canopy conductance +'260196' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated heat content in the upper 300 m -'262121' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Column-integrated soil water +'260197' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 23 ; } -#Vertically-integrated heat content in the upper 700 m -'262122' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Heat flux +'260198' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 24 ; } -#Total column of heat content -'262123' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric soil moisture +'260199' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; } -#Sea surface height -'262124' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric wilting point +'260200' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Steric change in sea surface height -'262125' = { - discipline = 10 ; +#Number of soil layers in root zone +'260206' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 6 ; } -#Halosteric change in sea surface height -'262126' = { - discipline = 10 ; +#Liquid volumetric soil moisture (non-frozen) +'260210' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Thermosteric change in sea surface height -'262127' = { - discipline = 10 ; +#Volumetric transpiration stress-onset (soil moisture) +'260211' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 11 ; } -#Thermocline depth -'262128' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Transpiration stress-onset (soil moisture) +'260212' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Bottom pressure equivalent height -'262129' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Net surface upward water flux -'262130' = { - discipline = 10 ; +#Volumetric direct evaporation cease (soil moisture) +'260213' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux into sea water (from rivers) -'262131' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Virtual salt flux into sea water -'262132' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Heat flux correction -'262133' = { - discipline = 10 ; +#Direct evaporation cease (soil moisture) +'260214' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux correction -'262134' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Virtual salt flux correction -'262135' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Turbocline depth (kz=5e-4) -'262136' = { - discipline = 10 ; - parameterCategory = 4 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of surface sea water velocity -'262137' = { - discipline = 10 ; +#Soil porosity +'260215' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 15 ; } -#X-component of surface sea water velocity -'262138' = { - discipline = 10 ; +#Volumetric saturation of soil moisture +'260216' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Northward surface sea water velocity -'262139' = { - discipline = 10 ; +#Saturation of soil moisture +'260217' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 17 ; } -#Eastward surface sea water velocity -'262140' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated precipitation +'260218' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Heat Content surface to 26C isotherm -'262141' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; +#Instantaneous rain rate +'260219' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Sea surface height tendency due to parameterization -'262142' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud top height +'260220' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Sea surface height with inverse barometer correction -'262143' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; +#Cloud top height quality indicator +'260221' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Average sea water potential temperature in the upper 300m -'262144' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Estimated u component of wind +'260222' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Sea surface salinity -'262145' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated v component of wind +'260223' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Vertically integrated sea water practical salinity in the upper 300 m -'262146' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Number of pixels used +'260224' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 6 ; } -#Vertically integrated sea water practical salinity in the upper 700 m -'262147' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar zenith angle +'260225' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Total column vertically integrated sea water practical salinity -'262148' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea water practical salinity -'262500' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Relative azimuth angle +'260226' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 8 ; } -#Sea water potential temperature -'262501' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.6 micron channel +'260227' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Sea water sigma theta -'262502' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.8 micron channel +'260228' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Y-component of sea water velocity -'262503' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 1.6 micron channel +'260229' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 11 ; } -#X-component of sea water velocity -'262504' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 3.9 micron channel +'260230' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 12 ; } -#Northward sea water velocity -'262505' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Atmospheric divergence +'260231' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Eastward sea water velocity -'262506' = { +#Direction of wind waves +'260232' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Upward sea water velocity -'262507' = { +#Primary wave direction +'260233' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Sea water potential temperature tendency due to newtonian relaxation -'262508' = { +#Primary wave mean period +'260234' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Sea water salinity tendency due to newtonian relaxation -'262509' = { +#Secondary wave mean period +'260235' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Sea water temperature tendency due to parameterization -'262510' = { +#Current direction +'260236' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Sea water salinity tendency due to parameterization -'262511' = { +#Current speed +'260237' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Eastward sea water velocity tendency due to parameterization -'262512' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Geometric vertical velocity +'260238' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 9 ; } -#Northward sea water velocity tendency due to parameterization -'262513' = { +#Seconds prior to initial reference time (defined in Section 1) +'260241' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea water temperature tendency due to direct bias correction -'262514' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#2 metre relative humidity +'260242' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Sea water salinity tendency due to direct bias correction -'262515' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Apparent temperature +'260255' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Sea water salinity -'262516' = { - discipline = 10 ; +#Haines Index +'260256' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterNumber = 2 ; } -#Net short wave radiation rate at sea surface -'262900' = { +#Cloud cover +'260257' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 6 ; + parameterNumber = 22 ; } -#Wind stress at sea surface -'262901' = { +#Evaporation +'260259' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Wind speed at 10m above sea surface -'262902' = { +#10 metre wind direction +'260260' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Neutral drag coefficient at 10m above sea surface -'262903' = { +#Direct short wave radiation flux +'260262' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 4 ; + parameterNumber = 13 ; } -#Total precipitation rate at sea surface -'262904' = { +#Diffuse short wave radiation flux +'260263' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + } +#Evaporation in the last 6 hours +'260265' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; } -#Snow precipitation rate at sea surface -'262905' = { +#Evaporation in the last 24 hours +'260266' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Eastward of wind stress over sea ice -'262906' = { +#Fraction of snow cover +'260289' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 121 ; } -#Northward of wind stress over sea ice -'262907' = { +#Clear air turbulence (CAT) +'260290' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 29 ; } -#U-component of wind stress over sea ice -'262908' = { +#Mountain wave turbulence (eddy dissipation rate) +'260291' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 28 ; } -#V-component of wind stress over sea ice -'262909' = { +#Specific rain water content (convective) +'260292' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 144 ; } -#Time-mean sea ice thickness -'263000' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific snow water content (convective) +'260293' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 145 ; } -#Time-mean sea ice area fraction -'263001' = { - discipline = 10 ; - parameterCategory = 2 ; +#Glacier mask +'260294' = { + discipline = 2 ; + parameterCategory = 5 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward sea ice velocity -'263003' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 1 hour +'260318' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 1 ; } -#Time-mean northward sea ice velocity -'263004' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 3 hours +'260319' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice albedo -'263005' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 1 hour +'260320' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 1 ; } -#Time-mean sea ice surface temperature -'263006' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 3 hours +'260321' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice growth -'263007' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 6 hours +'260338' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 6 ; } -#Time-mean sea ice volume per unit area -'263008' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 6 hours +'260339' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 6 ; } -#Time-mean snow volume over sea ice per unit area -'263009' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil temperature +'260360' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; } -#Time-mean vertically averaged sea ice temperature -'263010' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Downward short-wave radiation flux, clear sky +'260361' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 52 ; } -#Time-mean snow temperature over sea ice -'263011' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Upward short-wave radiation flux, clear sky +'260362' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; } -#Time-mean sea ice temperature at the sea ice and snow interface -'263012' = { - discipline = 10 ; - parameterCategory = 2 ; +#Downward long-wave radiation flux, clear sky +'260363' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean underside ice temperature -'263013' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil heat flux +'260364' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 26 ; } -#Time-mean sea ice heat content -'263014' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation rate +'260365' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Time-mean snow heat content over sea ice -'263015' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil depth +'260367' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 27 ; } -#Time-mean sea ice freeboard thickness -'263016' = { - discipline = 10 ; - parameterCategory = 2 ; +#Soil moisture +'260368' = { + discipline = 2 ; + parameterCategory = 3 ; parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice melt pond fraction -'263017' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Accumulated surface upward short-wave radiation flux, clear sky +'260427' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond depth -'263018' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation +'260430' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 177 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond volume per unit area -'263019' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evapotranspiration rate +'260433' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; } -#Time-mean sea ice fraction tendency due to parameterization -'263020' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean evapotranspiration rate in the last 24h +'260435' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean X-component of sea ice velocity -'263021' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Potential evapotranspiration rate +'260436' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + } +#Time-integrated potential evapotranspiration rate in the last 24h +'260437' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; + } +#Time-mean potential evapotranspiration rate in the last 24h +'260438' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean Y-component of sea ice velocity -'263022' = { - discipline = 10 ; - parameterCategory = 2 ; +#Time-mean volumetric soil moisture +'260440' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea ice temperature -'263024' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfStatisticalProcessing = 0 ; +#Water runoff and drainage rate +'260443' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; } -#Time-mean sea surface practical salinity -'263100' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated water runoff and drainage rate in the last 24h +'260444' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea surface temperature -'263101' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean water runoff and drainage rate in the last 24h +'260445' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 14 C isotherm -'263102' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean snow depth water equivalent +'260472' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 17 C isotherm -'263103' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean skin temperature +'260473' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 20 C isotherm -'263104' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Snow melt rate +'260475' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; } -#Time-mean depth of 26 C isotherm -'263105' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated snow melt rate in the last 24h +'260476' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 28 C isotherm -'263106' = { - discipline = 10 ; - parameterCategory = 4 ; +#Forecast albedo +'260509' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; + } +#Cloudy brightness temperature +'260510' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean barotropic stream function -'263107' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Clear-sky brightness temperature +'260511' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Time-mean surface downward heat flux -'263108' = { - discipline = 10 ; - parameterCategory = 3 ; +#Cloudy reflectance +'260512' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 31 ; + } +#Clear reflectance +'260513' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 32 ; + } +#Scaled radiance +'260530' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Scaled albedo +'260531' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Scaled brightness temperature +'260532' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Scaled precipitable water +'260533' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Scaled lifted index +'260534' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward surface stress -'263109' = { - discipline = 10 ; - parameterCategory = 3 ; +#Scaled cloud top pressure +'260535' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Scaled skin temperature +'260536' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward surface stress -'263110' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloud mask +'260537' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Time mean Y-component of surface stress -'263111' = { - discipline = 10 ; - parameterCategory = 3 ; +#Pixel scene type +'260538' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of surface stress -'263112' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Fire detection indicator +'260539' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'263113' = { - discipline = 10 ; +#Forest fire weather index (as defined by the Canadian Forest Service) +'260540' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 5 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'263114' = { - discipline = 10 ; +#Fine fuel moisture code (as defined by the Canadian Forest Service) +'260541' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 6 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'263115' = { - discipline = 10 ; +#Duff moisture code (as defined by the Canadian Forest Service) +'260542' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 7 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.2 C -'263116' = { - discipline = 10 ; +#Drought code (as defined by the Canadian Forest Service) +'260543' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 8 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.5 C -'263117' = { - discipline = 10 ; +#Initial fire spread index (as defined by the Canadian Forest Service) +'260544' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean average sea water practical salinity in the upper 300 m -'263118' = { - discipline = 10 ; +#Fire buildup index (as defined by the Canadian Forest Service) +'260545' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 10 ; } -#Time-mean average sea water practical salinity in the upper 700 m -'263119' = { - discipline = 10 ; +#Fire daily severity rating (as defined by the Canadian Forest Service) +'260546' = { + discipline = 2 ; parameterCategory = 4 ; + parameterNumber = 11 ; + } +#Cloudy radiance (with respect to wave number) +'260550' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } +#Clear-sky radiance (with respect to wave number) +'260551' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 17 ; + } +#Wind speed +'260552' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + } +#Aerosol optical thickness at 0.635 um +'260553' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 20 ; + } +#Aerosol optical thickness at 0.810 um +'260554' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total column average sea water practical salinity -'263120' = { - discipline = 10 ; +#Aerosol optical thickness at 1.640 um +'260555' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 22 ; + } +#Angstrom coefficient +'260556' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 23 ; + } +#Keetch-Byram drought index +'260557' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 12 ; } -#Time-mean vertically-integrated heat content in the upper 300 m -'263121' = { - discipline = 10 ; +#Drought factor (as defined by the Australian forest service) +'260558' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean vertically-integrated heat content in the upper 700 m -'263122' = { - discipline = 10 ; +#Rate of spread (as defined by the Australian forest service) +'260559' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 14 ; } -#Time-mean total column heat content -'263123' = { - discipline = 10 ; +#Fire danger index (as defined by the Australian forest service) +'260560' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 15 ; } -#Time-mean sea surface height -'263124' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'260561' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 16 ; } -#Time-mean steric change in sea surface height -'263125' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) +'260562' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 17 ; } -#Time-mean halosteric change in sea surface height -'263126' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermosteric change in sea surface height -'263127' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermocline depth -'263128' = { - discipline = 10 ; +#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'260563' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 18 ; } -#Time-mean bottom pressure equivalent height -'263129' = { - discipline = 10 ; +#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'260564' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 19 ; } -#Time-mean net surface upward water flux -'263130' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric soil ice +'260644' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Time-mean fresh water flux into sea water (from rivers) -'263131' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; +#Time integral of total solid precipitation flux +'260645' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 128 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean virtual salt flux into sea water -'263132' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; +#10 metre eastward wind gust since previous post-processing +'260646' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean heat flux correction -'263133' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; +#10 metre northward wind gust since previous post-processing +'260647' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean fresh water flux correction -'263134' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; +#Fog +'260648' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean virtual salt flux correction -'263135' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to orographic form drag +'260652' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 64 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean turbocline depth (kz=5e-4) -'263136' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to orographic form drag +'260653' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 65 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean Y-component of surface sea water velocity -'263137' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to surface roughness +'260654' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean X-component of surface sea water velocity -'263138' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to surface roughness +'260655' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 67 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean northward surface sea water velocity -'263139' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Saturation specific humidity with respect to water +'260656' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 168 ; } -#Time-mean eastward surface sea water velocity -'263140' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Total column integrated saturation specific humidity with respect to water +'260657' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 169 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Time-mean heat content surface to 26C isotherm -'263141' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; - typeOfStatisticalProcessing = 0 ; +#Universal thermal climate index +'261001' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Time-mean sea surface height tendency due to parameterization -'263142' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Mean radiant temperature +'261002' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Time-mean sea surface height with inverse barometer correction -'263143' = { - discipline = 10 ; +#Fraction of Malaria cases +'261003' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Malaria circumsporozoite protein ratio +'261004' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Plasmodium falciparum entomological inoculation rate +'261005' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 2 ; + } +#Human bite rate by anopheles vectors +'261006' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; + } +#Malaria immunity ratio +'261007' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 4 ; + } +#Falciparum parasite ratio +'261008' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 5 ; + } +#Detectable falciparum parasite ratio (after day 10) +'261009' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 6 ; + } +#Anopheles vector to host ratio +'261010' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 7 ; + } +#Anopheles vector density +'261011' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 8 ; + } +#Fraction of malarial vector reproductive habitat +'261012' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 9 ; + } +#Population density +'261013' = { + discipline = 20 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + } +#Wet bulb globe temperature +'261014' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Globe temperature +'261015' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Humidex +'261016' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 4 ; + } +#Effective temperature +'261017' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Normal effective temperature +'261018' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + } +#Standard effective temperature +'261019' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 7 ; + } +#Physiological equivalent temperature +'261020' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 8 ; + } +#Saturation water vapour pressure +'261021' = { + discipline = 0 ; parameterCategory = 3 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 32 ; } -#Time-mean average sea water potential temperature in the upper 300m -'263144' = { +#Wet-bulb potential temperature +'261022' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 32 ; + } +#Sea ice thickness +'262000' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea surface salinity -'263145' = { +#Sea ice area fraction +'262001' = { discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 300 m -'263146' = { +#Eastward sea ice velocity +'262003' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean vertically integrated sea water practical salinity in the upper 700 m -'263147' = { +#Northward sea ice velocity +'262004' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean total column vertically integrated sea water practical salinity -'263148' = { +#Sea ice albedo +'262005' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea water practical salinity -'263500' = { +#Sea ice surface temperature +'262006' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature -'263501' = { +#Sea ice growth +'262007' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water sigma theta -'263502' = { +#Sea ice volume per unit area +'262008' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean Y-component of sea water velocity -'263503' = { +#Snow volume over sea ice per unit area +'262009' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean X-component of sea water velocity -'263504' = { +#Vertically averaged sea ice temperature +'262010' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity -'263505' = { +#Snow temperature over sea ice +'262011' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity -'263506' = { +#Sea ice temperature at the sea ice and snow interface +'262012' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean upward sea water velocity -'263507' = { +#Underside ice temperature +'262013' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature tendency due to newtonian relaxation -'263508' = { +#Sea ice heat content +'262014' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to newtonian relaxation -'263509' = { +#Snow heat content over sea ice +'262015' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to parameterization -'263510' = { +#Sea ice freeboard thickness +'262016' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-mean sea water salinity tendency due to parameterization -'263511' = { +#Sea ice melt pond fraction +'262017' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity tendency due to parameterization -'263512' = { +#Sea ice melt pond depth +'262018' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity tendency due to parameterization -'263513' = { +#Sea ice melt pond volume per unit area +'262019' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to direct bias correction -'263514' = { +#Sea ice fraction tendency due to parameterization +'262020' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to direct bias correction -'263515' = { +#X-component of sea ice velocity +'262021' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity -'263516' = { +#Y-component of sea ice velocity +'262022' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean net short wave radiation rate at sea surface -'263900' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Sea ice temperature +'262024' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Sea surface practical salinity +'262100' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind stress at sea surface -'263901' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; +#Sea surface temperature +'262101' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 0 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind speed at 10m above sea surface -'263902' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 14 C isotherm +'262102' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean neutral drag coefficient at 10m above sea surface -'263903' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 17 C isotherm +'262103' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total precipitation rate at sea surface -'263904' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 20 C isotherm +'262104' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow precipitation rate at sea surface -'263905' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 26 C isotherm +'262105' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward of wind stress over sea ice -'263906' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; +#Depth of 28 C isotherm +'262106' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward of wind stress over sea ice -'263907' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; +#Barotropic stream function +'262107' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean U-component of wind stress over sea ice -'263908' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; +#Surface downward heat flux +'262108' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean V-component of wind stress over sea ice -'263909' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; +#Northward surface stress +'262109' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'264900' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Eastward surface stress +'262110' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 5 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated total precipitation at sea surface -'264904' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; +#Y-component of surface stress +'262111' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated snow precipitation at sea surface -'264905' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#X-component of surface stress +'262112' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Virtual temperature -'300012' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'262113' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mass density -'400000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 0 ; +#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'262114' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total column vertically-integrated mass density -'401000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Mass mixing ratio -'402000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - } -#Emission mass flux -'403000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 255 ; - } -#Dry deposition velocity -'404000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - } -#Wet deposition mass flux -'405000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - } -#Dry deposition mass flux -'406000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - } -#Sedimentation mass flux -'407000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 11 ; - } -#Volume mixing ratio -'408000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 52 ; - } -#Wet deposition mass flux by large-scale precipitation -'410000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 9 ; - } -#Wet deposition mass flux by convective precipitation -'411000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 10 ; - } -#Emission mass flux from natural sources -'413000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 6 ; - } -#Emission mass flux from anthropogenic sources -'414000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 4 ; - } -#Emission mass flux from elevated anthropogenic sources -'415000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 12 ; - } -#Emission mass flux from surface anthropogenic sources -'416000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 13 ; - } -#Emission from aviation -'418000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 1 ; - } -#Emission mass flux from agriculture livestock -'419000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 14 ; - } -#Emission mass flux from agriculture soils -'420000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 15 ; - } -#Emission mass flux from agricultural waste burning -'421000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 16 ; - } -#Emission mass flux from residential, commercial and other combustion -'422000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 18 ; - } -#Emission mass flux from power generation -'423000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 19 ; - } -#Emission mass flux from fugitives -'424000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 21 ; - } -#Emission mass flux from industrial process -'425000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 22 ; - } -#Emission mass flux from solvents -'426000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 23 ; - } -#Emission mass flux from ships -'427000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 24 ; - } -#Emission mass flux from wastes (solid and water) -'428000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 25 ; - } -#Emission mass flux from off-road transportation -'429000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 27 ; - } -#Emission mass flux from road transportation -'430000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 26 ; - } -#Emission mass flux from super power stations -'431000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 20 ; - } -#Emission mass flux from volcanoes -'433000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Emission mass flux from wetlands -'434000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 10 ; - } -#Net ecosystem exchange flux -'435000' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - } -#Mean net ecosystem exchange flux -'435001' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated net ecosystem exchange flux -'435002' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 1 ; - } -#Gross primary production flux -'436000' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - } -#Mean gross primary production flux -'436001' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated gross primary production flux -'436002' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 1 ; - } -#Ecosystem respiration flux -'437000' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - } -#Mean ecosystem respiration flux -'437001' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated ecosystem respiration flux -'437002' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 1 ; - } -#Emission mass flux from bio fuel -'438000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 8 ; - } -#Emission mass flux from fossil fuel -'439000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 9 ; - } -#Emission mass flux from other -'440000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 0 ; - } -#Emission mass flux from oceans -'441000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 11 ; - } -#Accumulated wet deposition mass flux -'444000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated dry deposition mass flux -'445000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - typeOfStatisticalProcessing = 1 ; - } -#Aerosol number density -'450000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 59 ; - } -#Mass mixing ratio from volcanoes -'454000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Total column vertically-integrated mass density from volcanoes -'455000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Dry deposition velocity from volcanoes -'456000' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Virtual potential temperature -'3012' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 15 ; - } -#Pseudo-adiabatic potential temperature -'3014' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Wind direction -'3031' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Snowmelt -'3099' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Period corresponding to maximum individual wave height -'140217' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - } -#Maximum individual wave height -'140218' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - } -#Model bathymetry -'140219' = { +#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'262115' = { discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 7 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment -'140220' = { +#Ocean mixed layer depth defined by temperature 0.2 C +'262116' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 25 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean zero-crossing wave period -'140221' = { +#Ocean mixed layer depth defined by temperature 0.5 C +'262117' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 28 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width -'140222' = { +#Average sea water practical salinity in the upper 300 m +'262118' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 31 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for wind waves -'140223' = { +#Average sea water practical salinity in the upper 700 m +'262119' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 26 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for wind waves -'140224' = { +#Total column average sea water practical salinity +'262120' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 29 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for wind waves -'140225' = { +#Vertically-integrated heat content in the upper 300 m +'262121' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for swell -'140226' = { +#Vertically-integrated heat content in the upper 700 m +'262122' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 27 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for swell -'140227' = { +#Total column of heat content +'262123' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for swell -'140228' = { +#Sea surface height +'262124' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 33 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of combined wind waves and swell -'140229' = { +#Steric change in sea surface height +'262125' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave direction -'140230' = { +#Halosteric change in sea surface height +'262126' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 14 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Peak wave period -'140231' = { +#Thermosteric change in sea surface height +'262127' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period -'140232' = { +#Thermocline depth +'262128' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Coefficient of drag with waves -'140233' = { +#Bottom pressure equivalent height +'262129' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of wind waves -'140234' = { +#Net surface upward water flux +'262130' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 5 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of wind waves -'140235' = { +#Fresh water flux into sea water (from rivers) +'262131' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 75 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of wind waves -'140236' = { +#Virtual salt flux into sea water +'262132' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of total swell -'140237' = { +#Heat flux correction +'262133' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of total swell -'140238' = { +#Fresh water flux correction +'262134' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 74 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of total swell -'140239' = { +#Virtual salt flux correction +'262135' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 9 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean square slope of waves -'140244' = { +#Turbocline depth (kz=5e-4) +'262136' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 20 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind speed -'140245' = { +#Y-component of surface sea water velocity +'262137' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter wave height -'140246' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 37 ; - } -#Altimeter corrected wave height -'140247' = { +#X-component of surface sea water velocity +'262138' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter range relative correction -'140248' = { +#Northward surface sea water velocity +'262139' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind direction -'140249' = { +#Eastward surface sea water velocity +'262140' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#2D wave spectra (single) -'140251' = { +#Heat Content surface to 26C isotherm +'262141' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 86 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; } -#Wave spectral kurtosis -'140252' = { +#Sea surface height tendency due to parameterization +'262142' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 43 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Benjamin-Feir index -'140253' = { +#Sea surface height with inverse barometer correction +'262143' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 44 ; + parameterCategory = 3 ; + parameterNumber = 20 ; } -#Eastward sea water velocity -'151131' = { +#Average sea water potential temperature in the upper 300m +'262144' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 2 ; + parameterCategory = 4 ; + parameterNumber = 18 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Northward sea water velocity -'151132' = { +#Sea surface salinity +'262145' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 21 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Skin reservoir content -'160198' = { - discipline = 2 ; - parameterCategory = 0 ; +#Vertically integrated sea water practical salinity in the upper 300 m +'262146' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Vertical integral of mass of atmosphere -'162053' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated kinetic energy -'162059' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated enthalpy -'162060' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Vertically integrated sea water practical salinity in the upper 700 m +'262147' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Total column vertically-integrated potential + internal energy -'162061' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Total column vertically integrated sea water practical salinity +'262148' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of potential+internal+latent energy -'162062' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water practical salinity +'262500' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated total energy -'162063' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of eastward heat flux -'162069' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Sea water potential temperature +'262501' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward heat flux -'162070' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water sigma theta +'262502' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of eastward water vapour flux -'162071' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 150 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward water vapour flux -'162072' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 151 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Y-component of sea water velocity +'262503' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertically integrated moisture divergence flux -'162084' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 165 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#X-component of sea water velocity +'262504' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short-wave radiation -'162100' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity +'262505' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation -'162101' = { - discipline = 0 ; - parameterCategory = 0 ; +#Eastward sea water velocity +'262506' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 23 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short wave radiation, clear sky -'162102' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - typeOfStatisticalProcessing = 1 ; +#Upward sea water velocity +'262507' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation, clear sky -'162103' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - typeOfStatisticalProcessing = 1 ; +#Sea water potential temperature tendency due to newtonian relaxation +'262508' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught mass flux -'162104' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 27 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to newtonian relaxation +'262509' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught mass flux -'162105' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 28 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to parameterization +'262510' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught detrainment rate -'162106' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 29 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to parameterization +'262511' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught detrainment rate -'162107' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 30 ; - typeOfStatisticalProcessing = 1 ; +#Eastward sea water velocity tendency due to parameterization +'262512' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated total precipitation flux -'162108' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity tendency due to parameterization +'262513' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated turbulent diffusion coefficient for heat -'162109' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to direct bias correction +'262514' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to parametrisations -'162110' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 26 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to direct bias correction +'262515' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated specific humidity tendency due to parametrisations -'162111' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 108 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity +'262516' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated eastward wind tendency due to parametrisations -'162112' = { +#Net short wave radiation rate at sea surface +'262900' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 39 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated northward wind tendency due to parametrisations -'162113' = { +#Wind stress at sea surface +'262901' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 40 ; - typeOfStatisticalProcessing = 1 ; - } -#Time-mean surface net radiation flux (SW and LW) -'172149' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } -#Surface runoff -'174008' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio -'210121' = { +#Wind speed at 10m above sea surface +'262902' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio -'210122' = { +#Neutral drag coefficient at 10m above sea surface +'262903' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio -'210123' = { +#Total precipitation rate at sea surface +'262904' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio (full chemistry scheme) -'210203' = { +#Snow precipitation rate at sea surface +'262905' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio difference -'211121' = { +#Eastward of wind stress over sea ice +'262906' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio difference -'211122' = { +#Northward of wind stress over sea ice +'262907' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio difference -'211123' = { +#U-component of wind stress over sea ice +'262908' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio difference (full chemistry scheme) -'211203' = { +#V-component of wind stress over sea ice +'262909' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Friction velocity -'228003' = { +#Time-mean sea ice thickness +'263000' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - } -#Mean 2 metre temperature -'228004' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Lake total depth -'228007' = { - discipline = 1 ; +#Time-mean sea ice area fraction +'263001' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer temperature -'228008' = { - discipline = 1 ; +#Time-mean eastward sea ice velocity +'263003' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer depth -'228009' = { - discipline = 1 ; +#Time-mean northward sea ice velocity +'263004' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake bottom temperature -'228010' = { - discipline = 1 ; +#Time-mean sea ice albedo +'263005' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 162 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - } -#Lake total layer temperature -'228011' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake shape factor -'228012' = { - discipline = 1 ; +#Time-mean sea ice surface temperature +'263006' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice surface temperature -'228013' = { - discipline = 1 ; +#Time-mean sea ice growth +'263007' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 6 ; typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice total depth -'228014' = { - discipline = 1 ; +#Time-mean sea ice volume per unit area +'263008' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; + parameterNumber = 15 ; typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 176 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'228015' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 45 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'228016' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 44 ; - } -#Duct base height -'228017' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 41 ; - } -#Trapping layer base height -'228018' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 42 ; - } -#Trapping layer top height -'228019' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 43 ; - } -#10 metre u-component of neutral wind -'228131' = { - discipline = 0 ; +#Time-mean snow volume over sea ice per unit area +'263009' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre v-component of neutral wind -'228132' = { - discipline = 0 ; +#Time-mean vertically averaged sea ice temperature +'263010' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component surface stokes drift -'140215' = { +#Time-mean snow temperature over sea ice +'263011' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 21 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component surface stokes drift -'140216' = { +#Time-mean sea ice temperature at the sea ice and snow interface +'263012' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - } -#100 metre U wind component -'228246' = { - discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#100 metre V wind component -'228247' = { - discipline = 0 ; +#Time-mean underside ice temperature +'263013' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } -#Total precipitation of at least 10 mm -'131062' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 10 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Total precipitation of at least 20 mm -'131063' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Stream function -'1' = { - discipline = 0 ; +#Time-mean sea ice heat content +'263014' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 4 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Velocity potential -'2' = { - discipline = 0 ; +#Time-mean snow heat content over sea ice +'263015' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; - } -#Potential temperature -'3' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Pressure -'54' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - } -#Convective available potential energy -'59' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential vorticity -'60' = { - discipline = 0 ; +#Time-mean sea ice freeboard thickness +'263016' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 14 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Maximum temperature at 2 metres in the last 6 hours -'121' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 2 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond fraction +'263017' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum temperature at 2 metres in the last 6 hours -'122' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 3 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond depth +'263018' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential -'129' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; +#Time-mean sea ice melt pond volume per unit area +'263019' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Temperature -'130' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Time-mean sea ice fraction tendency due to parameterization +'263020' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U component of wind -'131' = { - discipline = 0 ; +#Time-mean X-component of sea ice velocity +'263021' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V component of wind -'132' = { - discipline = 0 ; +#Time-mean Y-component of sea ice velocity +'263022' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Specific humidity -'133' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Time-mean sea ice temperature +'263024' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfStatisticalProcessing = 0 ; } -#Surface pressure -'134' = { - discipline = 0 ; +#Time-mean sea surface practical salinity +'263100' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface temperature +'263101' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical velocity -'135' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Time-mean depth of 14 C isotherm +'263102' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water -'136' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Time-mean depth of 17 C isotherm +'263103' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vorticity (relative) -'138' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 12 ; +#Time-mean depth of 20 C isotherm +'263104' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface sensible heat flux -'146' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 26 C isotherm +'263105' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface latent heat flux -'147' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 28 C isotherm +'263106' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean barotropic stream function +'263107' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Mean sea level pressure -'151' = { - discipline = 0 ; +#Time-mean surface downward heat flux +'263108' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Divergence -'155' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 13 ; +#Time-mean northward surface stress +'263109' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential height -'156' = { - discipline = 0 ; +#Time-mean eastward surface stress +'263110' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 5 ; - } -#Relative humidity -'157' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - } -#10 metre U wind component -'165' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre V wind component -'166' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; +#Time mean Y-component of surface stress +'263111' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre temperature -'167' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; +#Time-mean X-component of surface stress +'263112' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre dewpoint temperature -'168' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 103 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'263113' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'263114' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'263115' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by temperature 0.2 C +'263116' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Land-sea mask -'172' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean ocean mixed layer depth defined by temperature 0.5 C +'263117' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net short-wave (solar) radiation -'176' = { - discipline = 0 ; +#Time-mean average sea water practical salinity in the upper 300 m +'263118' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Surface net long-wave (thermal) radiation -'177' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean average sea water practical salinity in the upper 700 m +'263119' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Top net long-wave (thermal) radiation -'179' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean total column average sea water practical salinity +'263120' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine duration -'189' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean vertically-integrated heat content in the upper 300 m +'263121' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Brightness temperature -'194' = { - discipline = 0 ; +#Time-mean vertically-integrated heat content in the upper 700 m +'263122' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#10 metre wind speed -'207' = { - discipline = 0 ; - parameterCategory = 2 ; +#Time-mean total column heat content +'263123' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface height +'263124' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Skin temperature -'235' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean steric change in sea surface height +'263125' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Latent heat net flux -'260002' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean halosteric change in sea surface height +'263126' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Heat index -'260004' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 12 ; - } -#Wind chill factor -'260005' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Minimum dew point depression -'260006' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; - } -#Snow phase change heat flux -'260007' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Vapor pressure -'260008' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 4 ; - } -#Large scale precipitation (non-convective) -'260009' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean thermosteric change in sea surface height +'263127' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snowfall rate water equivalent -'260010' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 12 ; - } -#Convective snow -'260011' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 14 ; - } -#Large scale snow -'260012' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 15 ; - } -#Snow age -'260013' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 17 ; - } -#Absolute humidity -'260014' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 18 ; - } -#Precipitation type -'260015' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 19 ; - } -#Integrated liquid water -'260016' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 20 ; - } -#Condensate -'260017' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Time-mean thermocline depth +'263128' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Cloud mixing ratio -'260018' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Time-mean bottom pressure equivalent height +'263129' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Ice water mixing ratio -'260019' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Time-mean net surface upward water flux +'263130' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rain mixing ratio -'260020' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 24 ; +#Time-mean fresh water flux into sea water (from rivers) +'263131' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow mixing ratio -'260021' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 25 ; +#Time-mean virtual salt flux into sea water +'263132' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture convergence -'260022' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 26 ; +#Time-mean heat flux correction +'263133' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum relative humidity -'260023' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; +#Time-mean fresh water flux correction +'263134' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum absolute humidity -'260024' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; +#Time-mean virtual salt flux correction +'263135' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitable water category -'260026' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 30 ; +#Time-mean turbocline depth (kz=5e-4) +'263136' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Hail -'260027' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 31 ; +#Time-mean Y-component of surface sea water velocity +'263137' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Graupel (snow pellets) -'260028' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 32 ; +#Time-mean X-component of surface sea water velocity +'263138' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical rain -'260029' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 33 ; +#Time-mean northward surface sea water velocity +'263139' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical freezing rain -'260030' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 34 ; +#Time-mean eastward surface sea water velocity +'263140' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical ice pellets -'260031' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 35 ; +#Time-mean heat content surface to 26C isotherm +'263141' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; + typeOfStatisticalProcessing = 0 ; } -#Categorical snow -'260032' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 36 ; +#Time-mean sea surface height tendency due to parameterization +'263142' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective precipitation rate -'260033' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 37 ; +#Time-mean sea surface height with inverse barometer correction +'263143' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture divergence -'260034' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 38 ; +#Time-mean average sea water potential temperature in the upper 300m +'263144' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Percent frozen precipitation -'260035' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 39 ; +#Time-mean sea surface salinity +'263145' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential evaporation -'260036' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 40 ; +#Time-mean vertically integrated sea water practical salinity in the upper 300 m +'263146' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Snow cover -'260038' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 42 ; +#Time-mean vertically integrated sea water practical salinity in the upper 700 m +'263147' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain fraction of total cloud water -'260039' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 43 ; +#Time-mean total column vertically integrated sea water practical salinity +'263148' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rime factor -'260040' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 44 ; +#Time-mean sea water practical salinity +'263500' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated rain -'260041' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 45 ; +#Time-mean sea water potential temperature +'263501' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated snow -'260042' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 46 ; +#Time-mean sea water sigma theta +'263502' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale water precipitation (non-convective) -'260043' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 47 ; +#Time-mean Y-component of sea water velocity +'263503' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective water precipitation -'260044' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 48 ; +#Time-mean X-component of sea water velocity +'263504' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total water precipitation -'260045' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; +#Time-mean northward sea water velocity +'263505' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column water (Vertically integrated total water (vapour + cloud water/ice)) -'260047' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; +#Time-mean eastward sea water velocity +'263506' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total precipitation rate -'260048' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean upward sea water velocity +'263507' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate water equivalent -'260049' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; +#Time-mean sea water potential temperature tendency due to newtonian relaxation +'263508' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation rate -'260050' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 54 ; +#Time-mean sea water salinity tendency due to newtonian relaxation +'263509' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate -'260053' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; +#Time-mean sea water temperature tendency due to parameterization +'263510' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective snowfall rate -'260054' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 58 ; +#Time-mean sea water salinity tendency due to parameterization +'263511' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snowfall rate -'260055' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 59 ; +#Time-mean eastward sea water velocity tendency due to parameterization +'263512' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Water equivalent of accumulated snow depth (deprecated) -'260056' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Time-mean northward sea water velocity tendency due to parameterization +'263513' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Rain precipitation rate -'260058' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 65 ; +#Time-mean sea water temperature tendency due to direct bias correction +'263514' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Snow precipitation rate -'260059' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#Time-mean sea water salinity tendency due to direct bias correction +'263515' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Freezing rain precipitation rate -'260060' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 67 ; +#Time-mean sea water salinity +'263516' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Ice pellets precipitation rate -'260061' = { +#Time-mean net short wave radiation rate at sea surface +'263900' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 68 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum wind speed -'260064' = { +#Time-mean wind stress at sea surface +'263901' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 21 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind speed (gust) -'260065' = { +#Time-mean wind speed at 10m above sea surface +'263902' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#u-component of wind (gust) -'260066' = { +#Time-mean neutral drag coefficient at 10m above sea surface +'263903' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 23 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#v-component of wind (gust) -'260067' = { +#Time-mean total precipitation rate at sea surface +'263904' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 24 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical speed shear -'260068' = { +#Time-mean snow precipitation rate at sea surface +'263905' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 25 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal momentum flux -'260069' = { +#Time-mean eastward of wind stress over sea ice +'263906' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 26 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component storm motion -'260070' = { +#Time-mean northward of wind stress over sea ice +'263907' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 27 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component storm motion -'260071' = { +#Time-mean U-component of wind stress over sea ice +'263908' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 28 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Drag coefficient -'260072' = { +#Time-mean V-component of wind stress over sea ice +'263909' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 29 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Frictional velocity -'260073' = { +#Time-accumulated net short wave radiation at sea surface +'264900' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Pressure reduced to MSL -'260074' = { +#Time-accumulated total precipitation at sea surface +'264904' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Altimeter setting -'260076' = { +#Time-accumulated snow precipitation at sea surface +'264905' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 11 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Thickness -'260077' = { +#Virtual temperature +'300012' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 12 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Pressure altitude -'260078' = { +#Mass density +'400000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 0 ; } -#Density altitude -'260079' = { +#Total column vertically-integrated mass density +'401000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#5-wave geopotential height -'260080' = { +#Mass mixing ratio +'402000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 2 ; } -#Zonal flux of gravity wave stress -'260081' = { +#Emission mass flux +'403000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } -#Meridional flux of gravity wave stress -'260082' = { +#Dry deposition velocity +'404000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 15 ; } -#5-wave geopotential height anomaly -'260084' = { +#Wet deposition mass flux +'405000' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 7 ; } -#Net short-wave radiation flux (top of atmosphere) -'260086' = { +#Dry deposition mass flux +'406000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 6 ; } -#Downward short-wave radiation flux -'260087' = { +#Sedimentation mass flux +'407000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 11 ; } -#Upward short-wave radiation flux -'260088' = { +#Volume mixing ratio +'408000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 52 ; } -#Net short wave radiation flux -'260089' = { +#Wet deposition mass flux by large-scale precipitation +'410000' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 9 ; } -#Photosynthetically active radiation -'260090' = { +#Wet deposition mass flux by convective precipitation +'411000' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 10 ; } -#Net short-wave radiation flux, clear sky -'260091' = { +#Emission mass flux from natural sources +'413000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 6 ; } -#Downward UV radiation -'260092' = { +#Emission mass flux from anthropogenic sources +'414000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 4 ; } -#UV index (under clear sky) -'260093' = { +#Emission mass flux from elevated anthropogenic sources +'415000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 50 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 12 ; } -#UV index -'260094' = { +#Emission mass flux from surface anthropogenic sources +'416000' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 51 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 13 ; } -#Net long wave radiation flux (surface) -'260095' = { +#Emission from aviation +'418000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 1 ; } -#Net long wave radiation flux (top of atmosphere) -'260096' = { +#Emission mass flux from agriculture livestock +'419000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 14 ; } -#Downward long-wave radiation flux -'260097' = { +#Emission mass flux from agriculture soils +'420000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 15 ; } -#Upward long-wave radiation flux -'260098' = { +#Emission mass flux from agricultural waste burning +'421000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 16 ; } -#Net long wave radiation flux -'260099' = { +#Emission mass flux from residential, commercial and other combustion +'422000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 18 ; } -#Net long-wave radiation flux, clear sky -'260100' = { +#Emission mass flux from power generation +'423000' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 19 ; } -#Cloud Ice -'260101' = { +#Emission mass flux from fugitives +'424000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 21 ; } -#Cloud water -'260102' = { +#Emission mass flux from industrial process +'425000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 22 ; } -#Cloud amount -'260103' = { +#Emission mass flux from solvents +'426000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 23 ; } -#Cloud type -'260104' = { +#Emission mass flux from ships +'427000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 24 ; } -#Thunderstorm maximum tops -'260105' = { +#Emission mass flux from wastes (solid and water) +'428000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 25 ; } -#Thunderstorm coverage -'260106' = { +#Emission mass flux from off-road transportation +'429000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 27 ; } -#Cloud top -'260108' = { +#Emission mass flux from road transportation +'430000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 26 ; } -#Ceiling -'260109' = { +#Emission mass flux from super power stations +'431000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 20 ; } -#Non-convective cloud cover -'260110' = { +#Emission mass flux from volcanoes +'433000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Cloud work function -'260111' = { +#Emission mass flux from wetlands +'434000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; } -#Convective cloud efficiency -'260112' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 16 ; +#Net ecosystem exchange flux +'435000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; } -#Total condensate -'260113' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 17 ; +#Mean net ecosystem exchange flux +'435001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; } -#Total column-integrated cloud water -'260114' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 18 ; +#Accumulated net ecosystem exchange flux +'435002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; } -#Total column-integrated cloud ice -'260115' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 19 ; +#Gross primary production flux +'436000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; } -#Total column-integrated condensate -'260116' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 20 ; +#Mean gross primary production flux +'436001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'436002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'437000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; } -#Ice fraction of total condensate -'260117' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 21 ; +#Mean ecosystem respiration flux +'437001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; } -#Cloud ice mixing ratio -'260118' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 23 ; +#Accumulated ecosystem respiration flux +'437002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; } -#Sunshine -'260119' = { +#Emission mass flux from bio fuel +'438000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; } -#Horizontal extent of cumulonimbus (CB) -'260120' = { +#Emission mass flux from fossil fuel +'439000' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 25 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; } -#K index -'260121' = { +#Emission mass flux from other +'440000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 2 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; } -#KO index -'260122' = { +#Emission mass flux from oceans +'441000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; } -#Total totals index -'260123' = { +#Accumulated wet deposition mass flux +'444000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; } -#Sweat index -'260124' = { +#Accumulated dry deposition mass flux +'445000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; } -#Storm relative helicity -'260125' = { +#Aerosol number density +'450000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 59 ; } -#Energy helicity index -'260126' = { +#Mass mixing ratio from volcanoes +'454000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Surface lifted index -'260127' = { +#Total column vertically-integrated mass density from volcanoes +'455000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Best (4-layer) lifted index -'260128' = { +#Dry deposition velocity from volcanoes +'456000' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Aerosol type -'260129' = { +#Pressure tendency +'3003' = { discipline = 0 ; - parameterCategory = 13 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 2 ; } -#Total ozone -'260130' = { +#ICAO Standard Atmosphere reference height +'3005' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 3 ; } -#Base spectrum width -'260133' = { +#Geometrical height +'3008' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Base reflectivity -'260134' = { +#Standard deviation of height +'3009' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 1 ; + parameterCategory = 3 ; + parameterNumber = 7 ; } -#Base radial velocity -'260135' = { +#Virtual potential temperature +'3012' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Vertically-integrated liquid -'260136' = { +#Pseudo-adiabatic potential temperature +'3014' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Layer-maximum base reflectivity -'260137' = { +#Maximum temperature +'3015' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 4 ; } -#Precipitation -'260138' = { +#Minimum temperature +'3016' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Air concentration of Caesium 137 -'260139' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 0 ; - } -#Air concentration of Iodine 131 -'260140' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 1 ; - } -#Air concentration of radioactive pollutant -'260141' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 2 ; - } -#Ground deposition of Caesium 137 -'260142' = { +#Dew point temperature +'3017' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 3 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Ground deposition of Iodine 131 -'260143' = { +#Lapse rate +'3019' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 4 ; + parameterCategory = 0 ; + parameterNumber = 8 ; } -#Ground deposition of radioactive pollutant -'260144' = { +#Visibility +'3020' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 0 ; } -#Time-integrated air concentration of caesium pollutant -'260145' = { +#Radar spectra (1) +'3021' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 6 ; } -#Time-integrated air concentration of iodine pollutant -'260146' = { +#Radar spectra (2) +'3022' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 7 ; } -#Time-integrated air concentration of radioactive pollutant -'260147' = { +#Radar spectra (3) +'3023' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 8 ; } -#Volcanic ash -'260148' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 4 ; - } -#Icing top -'260149' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } -#Icing base -'260150' = { +#Parcel lifted index (to 500 hPa) +'3024' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 6 ; + parameterCategory = 7 ; + parameterNumber = 0 ; } -#Icing -'260151' = { +#Temperature anomaly +'3025' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 7 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Turbulence top -'260152' = { +#Pressure anomaly +'3026' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 8 ; } -#Turbulence base -'260153' = { +#Geopotential height anomaly +'3027' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 9 ; } -#Turbulence -'260154' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 10 ; +#Wave spectra (1) +'3028' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Turbulent kinetic energy -'260155' = { +#Wave spectra (2) +'3029' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Wave spectra (3) +'3030' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Wind direction +'3031' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 11 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Planetary boundary layer regime -'260156' = { +#Sigma coordinate vertical velocity +'3038' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Contrail intensity -'260157' = { +#Absolute vorticity +'3041' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Contrail engine type -'260158' = { +#Absolute divergence +'3042' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 11 ; } -#Contrail top -'260159' = { +#Vertical u-component shear +'3045' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 15 ; } -#Contrail base -'260160' = { +#Vertical v-component shear +'3046' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 16 ; } -#Maximum snow albedo -'260161' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; +#U-component of current +'3049' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Snow free albedo -'260162' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 18 ; +#V-component of current +'3050' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Icing -'260163' = { +#Precipitable water +'3054' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#In-cloud turbulence -'260164' = { +#Saturation deficit +'3056' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 21 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Relative clear air turbulence (RCAT) -'260165' = { +#Precipitation rate +'3059' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Supercooled large droplet probability (see Note 4) -'260166' = { +#Thunderstorm probability +'3060' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 23 ; + parameterNumber = 2 ; } -#Arbitrary text string -'260167' = { +#Convective precipitation (water) +'3063' = { discipline = 0 ; - parameterCategory = 190 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Seconds prior to initial reference time (defined in Section 1) -'260168' = { +#Mixed layer depth +'3067' = { discipline = 0 ; - parameterCategory = 191 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 3 ; } -#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref -'260169' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Transient thermocline depth +'3068' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 2 ; } -#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) -'260170' = { - discipline = 1 ; - parameterCategory = 0 ; +#Main thermocline anomaly +'3070' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 1 ; } -#Remotely sensed snow cover -'260171' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Best lifted index (to 500 hPa) +'3077' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 1 ; } -#Elevation of snow covered terrain -'260172' = { - discipline = 1 ; +#Soil moisture content +'3086' = { + discipline = 2 ; parameterCategory = 0 ; parameterNumber = 3 ; } -#Snow water equivalent percent of normal -'260173' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Baseflow-groundwater runoff -'260174' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Storm surface runoff -'260175' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - } -#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) -'260176' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Salinity +'3088' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th -'260177' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density +'3089' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Probability of 0.01 inch of precipitation (POP) -'260178' = { - discipline = 1 ; - parameterCategory = 1 ; +#Direction of ice drift +'3093' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 2 ; } -#Vegetation -'260180' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Water runoff -'260181' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Evapotranspiration -'260182' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Speed of ice drift +'3094' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 3 ; } -#Model terrain height -'260183' = { - discipline = 2 ; - parameterCategory = 0 ; +#Ice divergence +'3098' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 7 ; } -#Land use -'260184' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 8 ; - } -#Ground heat flux -'260186' = { +#Snowmelt +'3099' = { discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Moisture availability -'260187' = { - discipline = 2 ; +#Direction of swell waves +'3104' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 7 ; } -#Exchange coefficient -'260188' = { - discipline = 2 ; +#Secondary wave direction +'3109' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 12 ; } -#Plant canopy surface water -'260189' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Blackadar mixing length scale -'260190' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 14 ; +#Net short-wave radiation flux (surface) +'3111' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 0 ; } -#Canopy conductance -'260191' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 15 ; +#Global radiation flux +'3117' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Minimal stomatal resistance -'260192' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Radiance (with respect to wave number) +'3119' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 5 ; } -#Solar parameter in canopy conductance -'260193' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 18 ; +#Radiance (with respect to wave length) +'3120' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 6 ; } -#Temperature parameter in canopy conductance -'260194' = { - discipline = 2 ; - parameterCategory = 0 ; +#Wind mixing energy +'3126' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 19 ; } -#Soil moisture parameter in canopy conductance -'260195' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 20 ; +#10 metre wind gust of at least 15 m/s +'131070' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 15 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Humidity parameter in canopy conductance -'260196' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 21 ; +#10 metre wind gust of at least 20 m/s +'131071' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Column-integrated soil water -'260197' = { - discipline = 2 ; +#Period corresponding to maximum individual wave height +'140217' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 23 ; } -#Heat flux -'260198' = { - discipline = 2 ; +#Maximum individual wave height +'140218' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 24 ; } -#Volumetric soil moisture -'260199' = { - discipline = 2 ; +#Model bathymetry +'140219' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Mean wave period based on first moment +'140220' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 25 ; } -#Volumetric wilting point -'260200' = { - discipline = 2 ; +#Mean zero-crossing wave period +'140221' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 27 ; - } -#Number of soil layers in root zone -'260206' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - } -#Liquid volumetric soil moisture (non-frozen) -'260210' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 10 ; + parameterNumber = 28 ; } -#Volumetric transpiration stress-onset (soil moisture) -'260211' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 11 ; +#Wave spectral directional width +'140222' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 31 ; } -#Transpiration stress-onset (soil moisture) -'260212' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 12 ; +#Mean wave period based on first moment for wind waves +'140223' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 26 ; } -#Volumetric direct evaporation cease (soil moisture) -'260213' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 13 ; +#Mean wave period based on second moment for wind waves +'140224' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 29 ; } -#Direct evaporation cease (soil moisture) -'260214' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 14 ; +#Wave spectral directional width for wind waves +'140225' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 32 ; } -#Soil porosity -'260215' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 15 ; +#Mean wave period based on first moment for swell +'140226' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Volumetric saturation of soil moisture -'260216' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 16 ; +#Mean wave period based on second moment for swell +'140227' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 30 ; } -#Saturation of soil moisture -'260217' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 17 ; +#Wave spectral directional width for swell +'140228' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 33 ; } -#Estimated precipitation -'260218' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Significant height of combined wind waves and swell +'140229' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Instantaneous rain rate -'260219' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Mean wave direction +'140230' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Cloud top height -'260220' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#Peak wave period +'140231' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 34 ; } -#Cloud top height quality indicator -'260221' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Mean wave period +'140232' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Estimated u component of wind -'260222' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Coefficient of drag with waves +'140233' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Estimated v component of wind -'260223' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of wind waves +'140234' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Number of pixels used -'260224' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Mean direction of wind waves +'140235' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; } -#Solar zenith angle -'260225' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 7 ; +#Mean period of wind waves +'140236' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Relative azimuth angle -'260226' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of total swell +'140237' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Reflectance in 0.6 micron channel -'260227' = { - discipline = 3 ; - parameterCategory = 1 ; +#Mean direction of total swell +'140238' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#Mean period of total swell +'140239' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Reflectance in 0.8 micron channel -'260228' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 10 ; +#Mean square slope of waves +'140244' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Reflectance in 1.6 micron channel -'260229' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 11 ; +#10 metre wind speed +'140245' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Reflectance in 3.9 micron channel -'260230' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Altimeter wave height +'140246' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 37 ; } -#Atmospheric divergence -'260231' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Altimeter corrected wave height +'140247' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Direction of wind waves -'260232' = { +#Altimeter range relative correction +'140248' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 39 ; } -#Primary wave direction -'260233' = { +#10 metre wind direction +'140249' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Primary wave mean period -'260234' = { +#2D wave spectra (single) +'140251' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 86 ; } -#Secondary wave mean period -'260235' = { +#Wave spectral kurtosis +'140252' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 13 ; + parameterNumber = 43 ; } -#Current direction -'260236' = { +#Benjamin-Feir index +'140253' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 44 ; + } +#Eastward sea water velocity +'151131' = { discipline = 10 ; parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 160 ; } -#Current speed -'260237' = { +#Northward sea water velocity +'151132' = { discipline = 10 ; parameterCategory = 1 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + } +#Skin reservoir content +'160198' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'162053' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated kinetic energy +'162059' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometric vertical velocity -'260238' = { +#Total column vertically-integrated enthalpy +'162060' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 9 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Seconds prior to initial reference time (defined in Section 1) -'260241' = { - discipline = 10 ; - parameterCategory = 191 ; +#Total column vertically-integrated potential + internal energy +'162061' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Forecast albedo -'260509' = { +#Vertical integral of potential+internal+latent energy +'162062' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Pressure tendency -'3003' = { +#Total column vertically-integrated total energy +'162063' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 21 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#ICAO Standard Atmosphere reference height -'3005' = { +#Vertical integral of eastward heat flux +'162069' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 3 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'162070' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward water vapour flux +'162071' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometrical height -'3008' = { +#Vertical integral of northward water vapour flux +'162072' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 6 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Standard deviation of height -'3009' = { +#Vertically integrated moisture divergence flux +'162084' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Maximum temperature -'3015' = { +#Time-integrated temperature tendency due to short-wave radiation +'162100' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfStatisticalProcessing = 1 ; } -#Minimum temperature -'3016' = { +#Time-integrated temperature tendency due to long-wave radiation +'162101' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 5 ; + parameterNumber = 23 ; + typeOfStatisticalProcessing = 1 ; } -#Dew point temperature -'3017' = { +#Time-integrated temperature tendency due to short wave radiation, clear sky +'162102' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 24 ; + typeOfStatisticalProcessing = 1 ; } -#Lapse rate -'3019' = { +#Time-integrated temperature tendency due to long-wave radiation, clear sky +'162103' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 1 ; } -#Visibility -'3020' = { +#Time-integrated updraught mass flux +'162104' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (1) -'3021' = { +#Time-integrated downdraught mass flux +'162105' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 28 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (2) -'3022' = { +#Time-integrated updraught detrainment rate +'162106' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 7 ; + parameterCategory = 3 ; + parameterNumber = 29 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (3) -'3023' = { +#Time-integrated downdraught detrainment rate +'162107' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 30 ; + typeOfStatisticalProcessing = 1 ; } -#Parcel lifted index (to 500 hPa) -'3024' = { +#Time-integrated total precipitation flux +'162108' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; } -#Temperature anomaly -'3025' = { +#Time-integrated turbulent diffusion coefficient for heat +'162109' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Pressure anomaly -'3026' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 8 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 1 ; } -#Geopotential height anomaly -'3027' = { +#Time-integrated temperature tendency due to parametrisations +'162110' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } -#Wave spectra (1) -'3028' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Wave spectra (2) -'3029' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } -#Wave spectra (3) -'3030' = { - discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 2 ; + parameterNumber = 26 ; + typeOfStatisticalProcessing = 1 ; } -#Sigma coordinate vertical velocity -'3038' = { +#Time-integrated specific humidity tendency due to parametrisations +'162111' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 108 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute vorticity -'3041' = { +#Time-integrated eastward wind tendency due to parametrisations +'162112' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 39 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute divergence -'3042' = { +#Time-integrated northward wind tendency due to parametrisations +'162113' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 11 ; + parameterNumber = 40 ; + typeOfStatisticalProcessing = 1 ; } -#Vertical u-component shear -'3045' = { +#Time-mean surface net radiation flux (SW and LW) +'172149' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 15 ; + parameterCategory = 19 ; + parameterNumber = 46 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical v-component shear -'3046' = { +#Surface runoff +'174008' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Nitrogen dioxide mass mixing ratio +'210121' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + is_chemical = 1 ; } -#U-component of current -'3049' = { - discipline = 10 ; - parameterCategory = 1 ; +#Sulphur dioxide mass mixing ratio +'210122' = { + discipline = 0 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 8 ; + is_chemical = 1 ; } -#V-component of current -'3050' = { - discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Carbon monoxide mass mixing ratio +'210123' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 4 ; + is_chemical = 1 ; } -#Precipitable water -'3054' = { +#Ozone mass mixing ratio (full chemistry scheme) +'210203' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + is_chemical = 1 ; } -#Saturation deficit -'3056' = { +#Nitrogen dioxide mass mixing ratio difference +'211121' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Precipitation rate -'3059' = { +#Sulphur dioxide mass mixing ratio difference +'211122' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Thunderstorm probability -'3060' = { +#Carbon monoxide mass mixing ratio difference +'211123' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 4 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Convective precipitation (water) -'3063' = { +#Ozone mass mixing ratio difference (full chemistry scheme) +'211203' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Mixed layer depth -'3067' = { +#Convective inhibition +'228001' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 3 ; + parameterCategory = 7 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Transient thermocline depth -'3068' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Orography +'228002' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; } -#Main thermocline anomaly -'3070' = { +#Friction velocity +'228003' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; } -#Best lifted index (to 500 hPa) -'3077' = { +#Mean 2 metre temperature +'228004' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 1 ; - } -#Soil moisture content -'3086' = { - discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Salinity -'3088' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; +#Lake total depth +'228007' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Density -'3089' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 10 ; +#Lake mix-layer temperature +'228008' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Direction of ice drift -'3093' = { - discipline = 10 ; +#Lake mix-layer depth +'228009' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Speed of ice drift -'3094' = { - discipline = 10 ; +#Lake bottom temperature +'228010' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 162 ; + typeOfSecondFixedSurface = 255 ; } -#Ice divergence -'3098' = { - discipline = 10 ; +#Lake total layer temperature +'228011' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Direction of swell waves -'3104' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Lake shape factor +'228012' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Secondary wave direction -'3109' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Lake ice surface temperature +'228013' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; } -#Net short-wave radiation flux (surface) -'3111' = { +#Lake ice total depth +'228014' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Minimum vertical gradient of refractivity inside trapping layer +'228015' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; } -#Global radiation flux -'3117' = { +#Mean vertical gradient of refractivity inside trapping layer +'228016' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 3 ; + parameterCategory = 19 ; + parameterNumber = 44 ; } -#Radiance (with respect to wave number) -'3119' = { +#Duct base height +'228017' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 41 ; } -#Radiance (with respect to wave length) -'3120' = { +#Trapping layer base height +'228018' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 6 ; + parameterCategory = 19 ; + parameterNumber = 42 ; } -#Wind mixing energy -'3126' = { +#Trapping layer top height +'228019' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 19 ; + parameterCategory = 19 ; + parameterNumber = 43 ; } -#10 metre wind gust of at least 15 m/s -'131070' = { +#Soil moisture +'228039' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#10 metre u-component of neutral wind +'228131' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 56 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 15 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } -#10 metre wind gust of at least 20 m/s -'131071' = { +#10 metre v-component of neutral wind +'228132' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 57 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Convective inhibition -'228001' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Orography -'228002' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - } -#Soil moisture -'228039' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 22 ; } #Soil temperature '228139' = { @@ -10782,4 +10752,34 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; + } +#U-component surface stokes drift +'140215' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 21 ; + } +#V-component surface stokes drift +'140216' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#100 metre U wind component +'228246' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'228247' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; } diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index e0a5039d9..94adbdbf7 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -23,6 +23,30 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; } +#Total precipitation of at least 10 mm +'tpg10' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 10 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Total precipitation of at least 20 mm +'tpg20' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } #Total precipitation of at least 40 mm 'tpg40' = { discipline = 0 ; @@ -107,6 +131,24 @@ scaleFactorOfLowerLimit = -2 ; probabilityType = 3 ; } +#Stream function +'strf' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + } +#Velocity potential +'vp' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + } +#Potential temperature +'pt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } #Wind speed 'ws' = { discipline = 0 ; @@ -230,6 +272,12 @@ parameterCategory = 2 ; parameterNumber = 6 ; } +#Pressure +'pres' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + } #Downward UV radiation at the surface 'uvb' = { discipline = 0 ; @@ -246,6 +294,20 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Convective available potential energy +'cape' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Potential vorticity +'pv' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + } #Leaf area index, low vegetation 'lai_lv' = { discipline = 2 ; @@ -299,6 +361,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Maximum temperature at 2 metres in the last 6 hours +'mx2t6' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 2 ; + lengthOfTimeRange = 6 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'mn2t6' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 3 ; + lengthOfTimeRange = 6 ; + } #Surface emissivity 'emis' = { discipline = 2 ; @@ -306,6 +392,57 @@ parameterNumber = 62 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'z' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'q' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'sp' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'w' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Total column water +'tcw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column vertically-integrated water vapour 'tcwv' = { discipline = 0 ; @@ -314,6 +451,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'vo' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation 'bld' = { discipline = 0 ; @@ -321,6 +464,22 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'sshf' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'slhf' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Charnock 'chnk' = { discipline = 10 ; @@ -343,6 +502,31 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Mean sea level pressure +'msl' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'d' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'gh' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'r' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Boundary layer height 'blh' = { discipline = 0 ; @@ -373,6 +557,42 @@ parameterCategory = 3 ; parameterNumber = 22 ; } +#10 metre U wind component +'10u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#10 metre V wind component +'10v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre temperature +'2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre dewpoint temperature +'2d' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface short-wave (solar) radiation downwards 'ssrd' = { discipline = 0 ; @@ -381,6 +601,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'lsm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) 'sr' = { discipline = 2 ; @@ -397,6 +624,22 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface net short-wave (solar) radiation +'ssr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'str' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation 'tsr' = { discipline = 0 ; @@ -405,6 +648,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'ttr' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress 'ewss' = { discipline = 0 ; @@ -421,10 +672,24 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Eastward gravity wave surface stress -'lgws' = { +#Sunshine duration +'sund' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 6 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Brightness temperature +'btmp' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 4 ; + } +#Eastward gravity wave surface stress +'lgws' = { + discipline = 0 ; + parameterCategory = 3 ; parameterNumber = 16 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; @@ -470,6 +735,15 @@ parameterCategory = 14 ; parameterNumber = 1 ; } +#10 metre wind speed +'10si' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Top net short-wave (solar) radiation, clear sky 'tsrc' = { discipline = 0 ; @@ -555,6 +829,13 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + } #Temperature of snow layer 'tsn' = { discipline = 2 ; @@ -4618,6110 +4899,5799 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Total snowfall -'asnow' = { +#Latent heat net flux +'lhtfl' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Total snow precipitation -'tsnowp' = { +#Heat index +'heatx' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Total column integrated ozone -'tcioz' = { +#Wind chill factor +'wcf' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#2 metre relative humidity -'2r' = { +#Minimum dew point depression +'mindpd' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Apparent temperature -'aptmp' = { +#Snow phase change heat flux +'snohf' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 21 ; + parameterNumber = 16 ; } -#Haines Index -'hindex' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Vapor pressure +'vapp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Cloud cover -'ccl' = { +#Large scale precipitation (non-convective) +'ncpcp' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Evaporation -'eva' = { +#Snowfall rate water equivalent +'srweq' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 12 ; } -#10 metre wind direction -'10wdir' = { +#Convective snow +'snoc' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 1 ; + parameterNumber = 14 ; } -#Direct short wave radiation flux -'dirswrf' = { +#Large scale snow +'snol' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Diffuse short wave radiation flux -'difswrf' = { +#Snow age +'snoag' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 14 ; + parameterCategory = 1 ; + parameterNumber = 17 ; } -#Evaporation in the last 6 hours -'eva06' = { +#Absolute humidity +'absh' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; + parameterNumber = 18 ; } -#Evaporation in the last 24 hours -'eva24' = { +#Precipitation type +'ptype' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + parameterNumber = 19 ; } -#Fraction of snow cover -'fscov' = { +#Integrated liquid water +'iliqw' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 121 ; + parameterNumber = 20 ; } -#Clear air turbulence (CAT) -'cat' = { +#Condensate +'tcond' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 29 ; + parameterCategory = 1 ; + parameterNumber = 21 ; } -#Mountain wave turbulence (eddy dissipation rate) -'mwt' = { +#Cloud mixing ratio +'clwmr' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 28 ; + parameterCategory = 1 ; + parameterNumber = 22 ; } -#Specific rain water content (convective) -'crwc_conv' = { +#Ice water mixing ratio +'icmr' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 144 ; + parameterNumber = 23 ; } -#Specific snow water content (convective) -'cswc_conv' = { +#Rain mixing ratio +'rwmr' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 145 ; + parameterNumber = 24 ; } -#Glacier mask -'glm' = { - discipline = 2 ; - parameterCategory = 5 ; - parameterNumber = 0 ; +#Snow mixing ratio +'snmr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 25 ; } -#Precipitation type (most severe) in the last 1 hour -'ptype_sev1h' = { +#Horizontal moisture convergence +'mconv' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 1 ; + parameterNumber = 26 ; } -#Precipitation type (most severe) in the last 3 hours -'ptype_sev3h' = { +#Maximum relative humidity +'maxrh' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 3 ; + parameterNumber = 27 ; } -#Precipitation type (most frequent) in the last 1 hour -'ptype_freq1h' = { +#Maximum absolute humidity +'maxah' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 1 ; + parameterNumber = 28 ; } -#Precipitation type (most frequent) in the last 3 hours -'ptype_freq3h' = { +#Total snowfall +'asnow' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 3 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Precipitation type (most severe) in the last 6 hours -'ptype_sev6h' = { +#Precipitable water category +'pwcat' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 6 ; + parameterNumber = 30 ; } -#Precipitation type (most frequent) in the last 6 hours -'ptype_freq6h' = { +#Hail +'hail' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 6 ; + parameterNumber = 31 ; } -#Soil temperature -'sot' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - } -#Downward short-wave radiation flux, clear sky -'dswrf_cs' = { +#Graupel (snow pellets) +'grle' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 52 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Upward short-wave radiation flux, clear sky -'uswrf_cs' = { +#Categorical rain +'crain' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; + parameterCategory = 1 ; + parameterNumber = 33 ; } -#Downward long-wave radiation flux, clear sky -'dlwrf_cs' = { +#Categorical freezing rain +'cfrzr' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 8 ; - } -#Soil heat flux -'sohf' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 26 ; - } -#Percolation rate -'percr' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Soil depth -'sod' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 27 ; + parameterCategory = 1 ; + parameterNumber = 34 ; } -#Soil moisture -'som' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; +#Categorical ice pellets +'cicep' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 35 ; } -#Accumulated surface upward short-wave radiation flux, clear sky -'auswrf_cs' = { +#Categorical snow +'csnow' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 1 ; + parameterNumber = 36 ; } -#Percolation -'perc' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 177 ; - typeOfStatisticalProcessing = 1 ; +#Convective precipitation rate +'cprat' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 37 ; } -#Evapotranspiration rate -'et' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; +#Horizontal moisture divergence +'mdiv' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 38 ; } -#Time-mean evapotranspiration rate in the last 24h -'avg_et24' = { - discipline = 2 ; - parameterCategory = 0 ; +#Percent frozen precipitation +'cpofp' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } -#Potential evapotranspiration rate -'pet' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - } -#Time-integrated potential evapotranspiration rate in the last 24h -'acc_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; +#Potential evaporation +'pevap' = { + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Time-mean potential evapotranspiration rate in the last 24h -'avg_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Snow cover +'snowc' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 42 ; } -#Time-mean volumetric soil moisture -'avg_swv24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Rain fraction of total cloud water +'frain' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 43 ; } -#Water runoff and drainage rate -'rod' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; +#Rime factor +'rime' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 44 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'acc_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; +#Total column integrated rain +'tcolr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 45 ; } -#Time-mean water runoff and drainage rate in the last 24h -'avg_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Total column integrated snow +'tcols' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 46 ; } -#Time-mean snow depth water equivalent -'avg_sd24' = { +#Large scale water precipitation (non-convective) +'lswp' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterNumber = 47 ; } -#Time-mean skin temperature -'avg_skt24' = { +#Convective water precipitation +'cwp' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterCategory = 1 ; + parameterNumber = 48 ; } -#Snow melt rate -'smr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; +#Total water precipitation +'twatp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 49 ; } -#Time-integrated snow melt rate in the last 24h -'acc_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; +#Total snow precipitation +'tsnowp' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Cloudy brightness temperature -'clbt' = { - discipline = 3 ; +#Total column water (Vertically integrated total water (vapour + cloud water/ice)) +'tcwat' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 14 ; + parameterNumber = 51 ; } -#Clear-sky brightness temperature -'csbt' = { - discipline = 3 ; +#Total precipitation rate +'tprate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 15 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; } -#Cloudy reflectance -'cdrfl' = { - discipline = 3 ; +#Total snowfall rate water equivalent +'tsrwe' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 31 ; + parameterNumber = 53 ; } -#Clear reflectance -'crrfl' = { - discipline = 3 ; +#Large scale precipitation rate +'lsprate' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 32 ; + parameterNumber = 54 ; } -#Scaled radiance -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Total snowfall rate +'tsrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; } -#Scaled albedo -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Convective snowfall rate +'csrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 58 ; } -#Scaled brightness temperature -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Large scale snowfall rate +'lssrate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 59 ; } -#Scaled precipitable water -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 3 ; +#Water equivalent of accumulated snow depth (deprecated) +'sdwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Scaled lifted index -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Rain precipitation rate +'rprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 65 ; } -#Scaled cloud top pressure -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 5 ; +#Snow precipitation rate +'sprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; } -#Scaled skin temperature -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Freezing rain precipitation rate +'fprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 67 ; } -#Cloud mask -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Ice pellets precipitation rate +'iprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 68 ; } -#Pixel scene type -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 8 ; +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; } -#Fire detection indicator -'~' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 9 ; +#Wind speed (gust) +'gust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; } -#Forest fire weather index (as defined by the Canadian Forest Service) -'fwinx' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 5 ; +#u-component of wind (gust) +'ugust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; } -#Fine fuel moisture code (as defined by the Canadian Forest Service) -'ffmcode' = { - discipline = 2 ; +#v-component of wind (gust) +'vgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + } +#Vertical speed shear +'vwsh' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + } +#Horizontal momentum flux +'mflx' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 26 ; + } +#U-component storm motion +'ustm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 27 ; + } +#V-component storm motion +'vstm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 28 ; + } +#Drag coefficient +'cd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + } +#Frictional velocity +'fricv' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 30 ; + } +#Pressure reduced to MSL +'prmsl' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Altimeter setting +'alts' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + } +#Thickness +'thick' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 12 ; + } +#Pressure altitude +'presalt' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + } +#Density altitude +'denalt' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + } +#5-wave geopotential height +'5wavh' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + } +#Zonal flux of gravity wave stress +'u-gwd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + } +#Meridional flux of gravity wave stress +'v-gwd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + } +#5-wave geopotential height anomaly +'5wava' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + } +#Net short-wave radiation flux (top of atmosphere) +'nswrt' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 6 ; + parameterNumber = 1 ; } -#Duff moisture code (as defined by the Canadian Forest Service) -'dufmcode' = { - discipline = 2 ; +#Downward short-wave radiation flux +'dswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 7 ; } -#Drought code (as defined by the Canadian Forest Service) -'drtcode' = { - discipline = 2 ; +#Upward short-wave radiation flux +'uswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 8 ; } -#Initial fire spread index (as defined by the Canadian Forest Service) -'infsinx' = { - discipline = 2 ; +#Net short wave radiation flux +'nswrf' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 9 ; } -#Fire buildup index (as defined by the Canadian Forest Service) -'fbupinx' = { - discipline = 2 ; +#Photosynthetically active radiation +'photar' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 10 ; } -#Fire daily severity rating (as defined by the Canadian Forest Service) -'fdsrte' = { - discipline = 2 ; +#Net short-wave radiation flux, clear sky +'nswrfcs' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 11 ; } -#Cloudy radiance (with respect to wave number) -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } -#Clear-sky radiance (with respect to wave number) -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#Downward UV radiation +'dwuvr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 12 ; } -#Wind speed -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#UV index (under clear sky) +'uviucs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 50 ; } -#Aerosol optical thickness at 0.635 um -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#UV index +'uvi' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 51 ; } -#Aerosol optical thickness at 0.810 um -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; } -#Aerosol optical thickness at 1.640 um -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; } -#Angstrom coefficient -'~' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Downward long-wave radiation flux +'dlwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 3 ; } -#Keetch-Byram drought index -'kbdi' = { - discipline = 2 ; - parameterCategory = 4 ; +#Upward long-wave radiation flux +'ulwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 4 ; + } +#Net long wave radiation flux +'nlwrf' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + } +#Net long-wave radiation flux, clear sky +'nlwrcs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 6 ; + } +#Cloud Ice +'cice' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Cloud water +'cwat' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 6 ; + } +#Cloud amount +'cdca' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 7 ; + } +#Cloud type +'cdct' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 8 ; + } +#Thunderstorm maximum tops +'tmaxt' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 9 ; + } +#Thunderstorm coverage +'thunc' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 10 ; + } +#Cloud top +'cdct' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 12 ; } -#Drought factor (as defined by the Australian forest service) -'drtmrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Ceiling +'ceil' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 13 ; } -#Rate of spread (as defined by the Australian forest service) -'rosmrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Non-convective cloud cover +'cdlyr' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 14 ; } -#Fire danger index (as defined by the Australian forest service) -'fdimrk' = { - discipline = 2 ; - parameterCategory = 4 ; +#Cloud work function +'cwork' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 15 ; } -#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'scnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Convective cloud efficiency +'cuefi' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 16 ; } -#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) -'buinfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total condensate +'tcond' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 17 ; } -#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'icnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud water +'tcolw' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 18 ; } -#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'ercnfdr' = { - discipline = 2 ; - parameterCategory = 4 ; +#Total column-integrated cloud ice +'tcoli' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 19 ; } -#Volumetric soil ice -'vsi' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 38 ; +#Total column-integrated condensate +'tcolc' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 20 ; } -#Time integral of total solid precipitation flux -'titspf' = { +#Ice fraction of total condensate +'fice' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 128 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 6 ; + parameterNumber = 21 ; } -#10 metre eastward wind gust since previous post-processing -'10efg' = { +#Cloud ice mixing ratio +'cdcimr' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#10 metre northward wind gust since previous post-processing -'10nfg' = { +#Sunshine +'suns' = { discipline = 0 ; - parameterCategory = 2 ; + parameterCategory = 6 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#Fog -'fog' = { +#Horizontal extent of cumulonimbus (CB) +'~' = { discipline = 0 ; parameterCategory = 6 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 25 ; } -#Time-integrated eastward turbulent surface stress due to orographic form drag -'etssofd' = { +#K index +'kx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 64 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 2 ; } -#Time-integrated northward turbulent surface stress due to orographic form drag -'ntssofd' = { +#KO index +'kox' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 65 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 3 ; } -#Time-integrated eastward turbulent surface stress due to surface roughness -'etsssr' = { +#Total totals index +'totalx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 4 ; } -#Time-integrated northward turbulent surface stress due to surface roughness -'ntsssr' = { +#Sweat index +'sx' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 67 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 7 ; + parameterNumber = 5 ; } -#Saturation specific humidity with respect to water -'sqw' = { +#Storm relative helicity +'hlcy' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 168 ; + parameterCategory = 7 ; + parameterNumber = 8 ; } -#Total column integrated saturation specific humidity with respect to water -'tcsqw' = { +#Energy helicity index +'ehlx' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 169 ; + parameterCategory = 7 ; + parameterNumber = 9 ; + } +#Surface lifted index +'lftx' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 10 ; + } +#Best (4-layer) lifted index +'4lftx' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 11 ; + } +#Aerosol type +'aerot' = { + discipline = 0 ; + parameterCategory = 13 ; + parameterNumber = 0 ; + } +#Total ozone +'tozne' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 0 ; + } +#Total column integrated ozone +'tcioz' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 2 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Universal thermal climate index -'utci' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base spectrum width +'bswid' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 0 ; } -#Mean radiant temperature -'mrt' = { - discipline = 20 ; - parameterCategory = 0 ; +#Base reflectivity +'bref' = { + discipline = 0 ; + parameterCategory = 15 ; parameterNumber = 1 ; } -#Fraction of Malaria cases -'mal_cases_frac' = { - discipline = 20 ; - parameterCategory = 1 ; +#Base radial velocity +'brvel' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 2 ; + } +#Vertically-integrated liquid +'veril' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 3 ; + } +#Layer-maximum base reflectivity +'lmaxbr' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 4 ; + } +#Precipitation +'prec' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 5 ; + } +#Air concentration of Caesium 137 +'acces' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 0 ; } -#Malaria circumsporozoite protein ratio -'mal_prot_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of Iodine 131 +'aciod' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 1 ; } -#Plasmodium falciparum entomological inoculation rate -'mal_innoc_rate' = { - discipline = 20 ; - parameterCategory = 1 ; +#Air concentration of radioactive pollutant +'acradp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 2 ; } -#Human bite rate by anopheles vectors -'mal_hbite_rate' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Caesium 137 +'gdces' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 3 ; } -#Malaria immunity ratio -'mal_immun_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of Iodine 131 +'gdiod' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 4 ; } -#Falciparum parasite ratio -'mal_infect_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Ground deposition of radioactive pollutant +'gdradp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 5 ; } -#Detectable falciparum parasite ratio (after day 10) -'mal_infect_d10_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of caesium pollutant +'tiaccp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 6 ; } -#Anopheles vector to host ratio -'mal_host_ratio' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of iodine pollutant +'tiacip' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 7 ; } -#Anopheles vector density -'mal_vect_dens' = { - discipline = 20 ; - parameterCategory = 1 ; +#Time-integrated air concentration of radioactive pollutant +'tiacrp' = { + discipline = 0 ; + parameterCategory = 18 ; parameterNumber = 8 ; } -#Fraction of malarial vector reproductive habitat -'mal_hab_frac' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 9 ; - } -#Population density -'pop_dens' = { - discipline = 20 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Wet bulb globe temperature -'wbgt' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Globe temperature -'gt' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Humidex -'hmdx' = { - discipline = 20 ; - parameterCategory = 0 ; +#Volcanic ash +'volash' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 4 ; } -#Effective temperature -'efft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing top +'icit' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 5 ; } -#Normal effective temperature -'nefft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing base +'icib' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 6 ; } -#Standard effective temperature -'sefft' = { - discipline = 20 ; - parameterCategory = 0 ; +#Icing +'ici' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 7 ; } -#Physiological equivalent temperature -'peqt' = { - discipline = 20 ; - parameterCategory = 0 ; +#Turbulence top +'turbt' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 8 ; } -#Saturation water vapour pressure -'swvp' = { +#Turbulence base +'turbb' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 9 ; } -#Wet-bulb potential temperature -'wbpt' = { +#Turbulence +'turb' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 19 ; + parameterNumber = 10 ; } -#Sea ice thickness -'sithick' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulent kinetic energy +'tke' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 11 ; } -#Sea ice area fraction -'siconc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Eastward sea ice velocity -'siue' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Planetary boundary layer regime +'pblreg' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 12 ; } -#Northward sea ice velocity -'sivn' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail intensity +'conti' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 13 ; } -#Sea ice albedo -'sialb' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail engine type +'contet' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice surface temperature -'sitemptop' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice growth -'sigrowth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice volume per unit area -'sivol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail top +'contt' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow volume over sea ice per unit area -'snvol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Contrail base +'contb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Vertically averaged sea ice temperature -'vasit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Snow temperature over sea ice -'sntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice temperature at the sea ice and snow interface -'sisntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Underside ice temperature -'usitemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice heat content -'sihc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow heat content over sea ice -'snhc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Snow free albedo +'snfalb' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice freeboard thickness -'sifbr' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; } -#Sea ice melt pond fraction -'sipf' = { - discipline = 10 ; - parameterCategory = 2 ; +#Icing +'~' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond depth -'sipd' = { - discipline = 10 ; - parameterCategory = 2 ; +#In-cloud turbulence +'~' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond volume per unit area -'sipvol' = { - discipline = 10 ; - parameterCategory = 2 ; +#Relative clear air turbulence (RCAT) +'rcat' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice fraction tendency due to parameterization -'bckinsic' = { - discipline = 10 ; - parameterCategory = 2 ; +#Supercooled large droplet probability (see Note 4) +'~' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'six' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Arbitrary text string +'var190m0' = { + discipline = 0 ; + parameterCategory = 190 ; + parameterNumber = 0 ; } -#Y-component of sea ice velocity -'siy' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Seconds prior to initial reference time (defined in Section 1) +'tsec' = { + discipline = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea ice temperature -'sit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref +'ffldg' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Sea surface practical salinity -'sos' = { - discipline = 10 ; - parameterCategory = 3 ; +#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) +'ffldro' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Remotely sensed snow cover +'rssc' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Elevation of snow covered terrain +'esct' = { + discipline = 1 ; + parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface temperature -'tos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Snow water equivalent percent of normal +'swepon' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Depth of 14 C isotherm -'t14d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Baseflow-groundwater runoff +'bgrun' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Depth of 17 C isotherm -'t17d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Storm surface runoff +'ssrun' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Depth of 20 C isotherm -'t20d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) +'cppop' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Depth of 26 C isotherm -'t26d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th +'pposp' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Depth of 28 C isotherm -'t28d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Probability of 0.01 inch of precipitation (POP) +'pop' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Barotropic stream function -'stfbarot' = { - discipline = 10 ; - parameterCategory = 191 ; +#Vegetation +'veg' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Surface downward heat flux -'hfds' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Water runoff +'watr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Northward surface stress -'tauvon' = { - discipline = 10 ; - parameterCategory = 3 ; +#Evapotranspiration +'evapt' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Eastward surface stress -'tauuoe' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Model terrain height +'mterh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Y-component of surface stress -'tauvo' = { - discipline = 10 ; - parameterCategory = 3 ; +#Land use +'landu' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of surface stress -'tauuo' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ground heat flux +'gflux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'mlotst010' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Moisture availability +'mstav' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'mlotst030' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Exchange coefficient +'sfexc' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'mlotst125' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Plant canopy surface water +'cnwat' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Ocean mixed layer depth defined by temperature 0.2 C -'mlott02' = { - discipline = 10 ; - parameterCategory = 4 ; +#Blackadar mixing length scale +'bmixl' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Ocean mixed layer depth defined by temperature 0.5 C -'mlott05' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Canopy conductance +'ccond' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Average sea water practical salinity in the upper 300 m -'sc300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Minimal stomatal resistance +'rsmin' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Average sea water practical salinity in the upper 700 m -'sc700m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar parameter in canopy conductance +'rcs' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 18 ; } -#Total column average sea water practical salinity -'scbtm' = { - discipline = 10 ; - parameterCategory = 4 ; +#Temperature parameter in canopy conductance +'rct' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 19 ; + } +#Soil moisture parameter in canopy conductance +'rcsol' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 20 ; + } +#Humidity parameter in canopy conductance +'rcq' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated heat content in the upper 300 m -'hc300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Column-integrated soil water +'cisoilw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 23 ; } -#Vertically-integrated heat content in the upper 700 m -'hc700m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Heat flux +'hflux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 24 ; } -#Total column of heat content -'hcbtm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric soil moisture +'vsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; } -#Sea surface height -'zos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric wilting point +'vwiltm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Steric change in sea surface height -'stheig' = { - discipline = 10 ; +#Number of soil layers in root zone +'rlyrs' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 6 ; } -#Halosteric change in sea surface height -'hstheig' = { - discipline = 10 ; +#Liquid volumetric soil moisture (non-frozen) +'liqvsm' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Thermosteric change in sea surface height -'tstheig' = { - discipline = 10 ; +#Volumetric transpiration stress-onset (soil moisture) +'voltso' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 11 ; } -#Thermocline depth -'thcline' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Transpiration stress-onset (soil moisture) +'transo' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Bottom pressure equivalent height -'btp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Net surface upward water flux -'swfup' = { - discipline = 10 ; +#Volumetric direct evaporation cease (soil moisture) +'voldec' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux into sea water (from rivers) -'fw2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Virtual salt flux into sea water -'vsf2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Heat flux correction -'hfcorr' = { - discipline = 10 ; +#Direct evaporation cease (soil moisture) +'direc' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Fresh water flux correction -'fwcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Virtual salt flux correction -'vsfcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Turbocline depth (kz=5e-4) -'turbocl' = { - discipline = 10 ; - parameterCategory = 4 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of surface sea water velocity -'svy' = { - discipline = 10 ; +#Soil porosity +'soilp' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 15 ; } -#X-component of surface sea water velocity -'svx' = { - discipline = 10 ; +#Volumetric saturation of soil moisture +'vsosm' = { + discipline = 2 ; parameterCategory = 3 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Northward surface sea water velocity -'svn' = { - discipline = 10 ; +#Saturation of soil moisture +'satosm' = { + discipline = 2 ; parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 17 ; } -#Eastward surface sea water velocity -'sve' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated precipitation +'estp' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Heat Content surface to 26C isotherm -'hct26' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; +#Instantaneous rain rate +'irrate' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Sea surface height tendency due to parameterization -'bckineta' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud top height +'ctoph' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Sea surface height with inverse barometer correction -'zosib' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; +#Cloud top height quality indicator +'ctophqi' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Average sea water potential temperature in the upper 300m -'pt300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Estimated u component of wind +'estu' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Sea surface salinity -'sss' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Estimated v component of wind +'estv' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Vertically integrated sea water practical salinity in the upper 300 m -'sc300v' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Number of pixels used +'npixu' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 6 ; } -#Vertically integrated sea water practical salinity in the upper 700 m -'sc700v' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Solar zenith angle +'solza' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Total column vertically integrated sea water practical salinity -'scbtv' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea water practical salinity -'so' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Relative azimuth angle +'raza' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 8 ; } -#Sea water potential temperature -'thetao' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.6 micron channel +'rfl06' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Sea water sigma theta -'sigmat' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 0.8 micron channel +'rfl08' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Y-component of sea water velocity -'vo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 1.6 micron channel +'rfl16' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 11 ; } -#X-component of sea water velocity -'uo' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Reflectance in 3.9 micron channel +'rfl39' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 12 ; } -#Northward sea water velocity -'von' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Atmospheric divergence +'atmdiv' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 13 ; } -#Eastward sea water velocity -'uoe' = { +#Direction of wind waves +'wvdir' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Upward sea water velocity -'wo' = { +#Primary wave direction +'dirpw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Sea water potential temperature tendency due to newtonian relaxation -'thetaodmp' = { +#Primary wave mean period +'perpw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Sea water salinity tendency due to newtonian relaxation -'sodmp' = { +#Secondary wave mean period +'persw' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Sea water temperature tendency due to parameterization -'bckint' = { +#Current direction +'dirc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Sea water salinity tendency due to parameterization -'bckins' = { +#Current speed +'spc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Eastward sea water velocity tendency due to parameterization -'bckine' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Geometric vertical velocity +'wz' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 9 ; } -#Northward sea water velocity tendency due to parameterization -'bckinn' = { +#Seconds prior to initial reference time (defined in Section 1) +'tsec' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea water temperature tendency due to direct bias correction -'tdbiascorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#2 metre relative humidity +'2r' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Sea water salinity tendency due to direct bias correction -'sdbiascorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Apparent temperature +'aptmp' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Sea water salinity -'salo' = { - discipline = 10 ; +#Haines Index +'hindex' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; + parameterNumber = 2 ; } -#Net short wave radiation rate at sea surface -'ssr_sea' = { +#Cloud cover +'ccl' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 6 ; + parameterNumber = 22 ; } -#Wind stress at sea surface -'wst_sea' = { +#Evaporation +'eva' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Wind speed at 10m above sea surface -'10ws_sea' = { +#10 metre wind direction +'10wdir' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Neutral drag coefficient at 10m above sea surface -'10nd_sea' = { +#Direct short wave radiation flux +'dirswrf' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 4 ; + parameterNumber = 13 ; } -#Total precipitation rate at sea surface -'tprate_sea' = { +#Diffuse short wave radiation flux +'difswrf' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + } +#Evaporation in the last 6 hours +'eva06' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; } -#Snow precipitation rate at sea surface -'snrate_sea' = { +#Evaporation in the last 24 hours +'eva24' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Eastward of wind stress over sea ice -'ewst_sea' = { +#Fraction of snow cover +'fscov' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 121 ; } -#Northward of wind stress over sea ice -'nwst_sea' = { +#Clear air turbulence (CAT) +'cat' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 29 ; } -#U-component of wind stress over sea ice -'uwst_sea' = { +#Mountain wave turbulence (eddy dissipation rate) +'mwt' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 19 ; + parameterNumber = 28 ; } -#V-component of wind stress over sea ice -'vwst_sea' = { +#Specific rain water content (convective) +'crwc_conv' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterCategory = 1 ; + parameterNumber = 144 ; } -#Time-mean sea ice thickness -'avg_sithick' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific snow water content (convective) +'cswc_conv' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 145 ; } -#Time-mean sea ice area fraction -'avg_siconc' = { - discipline = 10 ; - parameterCategory = 2 ; +#Glacier mask +'glm' = { + discipline = 2 ; + parameterCategory = 5 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward sea ice velocity -'avg_siue' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 1 hour +'ptype_sev1h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 1 ; } -#Time-mean northward sea ice velocity -'avg_sivn' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 3 hours +'ptype_sev3h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice albedo -'avg_sialb' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 1 hour +'ptype_freq1h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 1 ; } -#Time-mean sea ice surface temperature -'avg_sitemptop' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 3 hours +'ptype_freq3h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 3 ; } -#Time-mean sea ice growth -'avg_sigrowth' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 6 hours +'ptype_sev6h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 6 ; } -#Time-mean sea ice volume per unit area -'avg_sivol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 6 hours +'ptype_freq6h' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 6 ; } -#Time-mean snow volume over sea ice per unit area -'avg_snvol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil temperature +'sot' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; } -#Time-mean vertically averaged sea ice temperature -'avg_vasit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Downward short-wave radiation flux, clear sky +'dswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 52 ; } -#Time-mean snow temperature over sea ice -'avg_sntemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Upward short-wave radiation flux, clear sky +'uswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; } -#Time-mean sea ice temperature at the sea ice and snow interface -'avg_sisntemp' = { - discipline = 10 ; - parameterCategory = 2 ; +#Downward long-wave radiation flux, clear sky +'dlwrf_cs' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean underside ice temperature -'avg_usitemp' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil heat flux +'sohf' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 26 ; } -#Time-mean sea ice heat content -'avg_sihc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation rate +'percr' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Time-mean snow heat content over sea ice -'avg_snhc' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil depth +'sod' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 27 ; } -#Time-mean sea ice freeboard thickness -'avg_sifbr' = { - discipline = 10 ; - parameterCategory = 2 ; +#Soil moisture +'som' = { + discipline = 2 ; + parameterCategory = 3 ; parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice melt pond fraction -'avg_sipf' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Accumulated surface upward short-wave radiation flux, clear sky +'auswrf_cs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond depth -'avg_sipd' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation +'perc' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 177 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea ice melt pond volume per unit area -'avg_sipvol' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evapotranspiration rate +'et' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; } -#Time-mean sea ice fraction tendency due to parameterization -'avg_bckinsic' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean evapotranspiration rate in the last 24h +'avg_et24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean X-component of sea ice velocity -'avg_six' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Potential evapotranspiration rate +'pet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + } +#Time-integrated potential evapotranspiration rate in the last 24h +'acc_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; + } +#Time-mean potential evapotranspiration rate in the last 24h +'avg_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean Y-component of sea ice velocity -'avg_siy' = { - discipline = 10 ; - parameterCategory = 2 ; +#Time-mean volumetric soil moisture +'avg_swv24' = { + discipline = 2 ; + parameterCategory = 0 ; parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea ice temperature -'avg_sit' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfStatisticalProcessing = 0 ; +#Water runoff and drainage rate +'rod' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; } -#Time-mean sea surface practical salinity -'avg_sos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated water runoff and drainage rate in the last 24h +'acc_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean sea surface temperature -'avg_tos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean water runoff and drainage rate in the last 24h +'avg_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 14 C isotherm -'avg_t14d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean snow depth water equivalent +'avg_sd24' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 17 C isotherm -'avg_t17d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean skin temperature +'avg_skt24' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 20 C isotherm -'avg_t20d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Snow melt rate +'smr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; } -#Time-mean depth of 26 C isotherm -'avg_t26d' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated snow melt rate in the last 24h +'acc_smr24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 28 C isotherm -'avg_t28d' = { - discipline = 10 ; - parameterCategory = 4 ; +#Forecast albedo +'al' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; + } +#Cloudy brightness temperature +'clbt' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean barotropic stream function -'avg_stfbarot' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Clear-sky brightness temperature +'csbt' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 15 ; } -#Time-mean surface downward heat flux -'avg_hfds' = { - discipline = 10 ; - parameterCategory = 3 ; +#Cloudy reflectance +'cdrfl' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 31 ; + } +#Clear reflectance +'crrfl' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 32 ; + } +#Scaled radiance +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Scaled albedo +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Scaled brightness temperature +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Scaled precipitable water +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Scaled lifted index +'~' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward surface stress -'avg_tauvon' = { - discipline = 10 ; - parameterCategory = 3 ; +#Scaled cloud top pressure +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Scaled skin temperature +'~' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward surface stress -'avg_tauuoe' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloud mask +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Time mean Y-component of surface stress -'avg_tauvo' = { - discipline = 10 ; - parameterCategory = 3 ; +#Pixel scene type +'~' = { + discipline = 3 ; + parameterCategory = 0 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of surface stress -'avg_tauuo' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Fire detection indicator +'~' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'avg_mlotst010' = { - discipline = 10 ; +#Forest fire weather index (as defined by the Canadian Forest Service) +'fwinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 5 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'avg_mlotst030' = { - discipline = 10 ; +#Fine fuel moisture code (as defined by the Canadian Forest Service) +'ffmcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 6 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'avg_mlotst125' = { - discipline = 10 ; +#Duff moisture code (as defined by the Canadian Forest Service) +'dufmcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 7 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.2 C -'avg_mlott02' = { - discipline = 10 ; +#Drought code (as defined by the Canadian Forest Service) +'drtcode' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 8 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.5 C -'avg_mlott05' = { - discipline = 10 ; +#Initial fire spread index (as defined by the Canadian Forest Service) +'infsinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean average sea water practical salinity in the upper 300 m -'avg_sc300m' = { - discipline = 10 ; +#Fire buildup index (as defined by the Canadian Forest Service) +'fbupinx' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 10 ; } -#Time-mean average sea water practical salinity in the upper 700 m -'avg_sc700m' = { - discipline = 10 ; +#Fire daily severity rating (as defined by the Canadian Forest Service) +'fdsrte' = { + discipline = 2 ; parameterCategory = 4 ; + parameterNumber = 11 ; + } +#Cloudy radiance (with respect to wave number) +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } +#Clear-sky radiance (with respect to wave number) +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 17 ; + } +#Wind speed +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + } +#Aerosol optical thickness at 0.635 um +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 20 ; + } +#Aerosol optical thickness at 0.810 um +'~' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total column average sea water practical salinity -'avg_scbtm' = { - discipline = 10 ; +#Aerosol optical thickness at 1.640 um +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 22 ; + } +#Angstrom coefficient +'~' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 23 ; + } +#Keetch-Byram drought index +'kbdi' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 12 ; } -#Time-mean vertically-integrated heat content in the upper 300 m -'avg_hc300m' = { - discipline = 10 ; +#Drought factor (as defined by the Australian forest service) +'drtmrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean vertically-integrated heat content in the upper 700 m -'avg_hc700m' = { - discipline = 10 ; +#Rate of spread (as defined by the Australian forest service) +'rosmrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 14 ; } -#Time-mean total column heat content -'avg_hcbtm' = { - discipline = 10 ; +#Fire danger index (as defined by the Australian forest service) +'fdimrk' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 15 ; } -#Time-mean sea surface height -'avg_zos' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'scnfdr' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 16 ; } -#Time-mean steric change in sea surface height -'avg_stheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) +'buinfdr' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 17 ; } -#Time-mean halosteric change in sea surface height -'avg_hstheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermosteric change in sea surface height -'avg_tstheig' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean thermocline depth -'avg_thcline' = { - discipline = 10 ; +#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'icnfdr' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 18 ; } -#Time-mean bottom pressure equivalent height -'avg_btp' = { - discipline = 10 ; +#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'ercnfdr' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 19 ; } -#Time-mean net surface upward water flux -'avg_swfup' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric soil ice +'vsi' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Time-mean fresh water flux into sea water (from rivers) -'avg_fw2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; +#Time integral of total solid precipitation flux +'titspf' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 128 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean virtual salt flux into sea water -'avg_vsf2sw' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; +#10 metre eastward wind gust since previous post-processing +'10efg' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean heat flux correction -'avg_hfcorr' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; +#10 metre northward wind gust since previous post-processing +'10nfg' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean fresh water flux correction -'avg_fwcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; +#Fog +'fog' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean virtual salt flux correction -'avg_vsfcorr' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to orographic form drag +'etssofd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 64 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean turbocline depth (kz=5e-4) -'avg_turbocl' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to orographic form drag +'ntssofd' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 65 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean Y-component of surface sea water velocity -'avg_svy' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated eastward turbulent surface stress due to surface roughness +'etsssr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean X-component of surface sea water velocity -'avg_svx' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated northward turbulent surface stress due to surface roughness +'ntsssr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 67 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean northward surface sea water velocity -'avg_svn' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Saturation specific humidity with respect to water +'sqw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 168 ; } -#Time-mean eastward surface sea water velocity -'avg_sve' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Total column integrated saturation specific humidity with respect to water +'tcsqw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 169 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Time-mean heat content surface to 26C isotherm -'avg_hct26' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; - typeOfStatisticalProcessing = 0 ; +#Universal thermal climate index +'utci' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Time-mean sea surface height tendency due to parameterization -'avg_bckineta' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Mean radiant temperature +'mrt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Time-mean sea surface height with inverse barometer correction -'avg_zosib' = { - discipline = 10 ; +#Fraction of Malaria cases +'mal_cases_frac' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Malaria circumsporozoite protein ratio +'mal_prot_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Plasmodium falciparum entomological inoculation rate +'mal_innoc_rate' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 2 ; + } +#Human bite rate by anopheles vectors +'mal_hbite_rate' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; + } +#Malaria immunity ratio +'mal_immun_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 4 ; + } +#Falciparum parasite ratio +'mal_infect_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 5 ; + } +#Detectable falciparum parasite ratio (after day 10) +'mal_infect_d10_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 6 ; + } +#Anopheles vector to host ratio +'mal_host_ratio' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 7 ; + } +#Anopheles vector density +'mal_vect_dens' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 8 ; + } +#Fraction of malarial vector reproductive habitat +'mal_hab_frac' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 9 ; + } +#Population density +'pop_dens' = { + discipline = 20 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + } +#Wet bulb globe temperature +'wbgt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Globe temperature +'gt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 3 ; + } +#Humidex +'hmdx' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 4 ; + } +#Effective temperature +'efft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Normal effective temperature +'nefft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + } +#Standard effective temperature +'sefft' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 7 ; + } +#Physiological equivalent temperature +'peqt' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 8 ; + } +#Saturation water vapour pressure +'swvp' = { + discipline = 0 ; parameterCategory = 3 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 32 ; } -#Time-mean average sea water potential temperature in the upper 300m -'avg_pt300m' = { +#Wet-bulb potential temperature +'wbpt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 32 ; + } +#Sea ice thickness +'sithick' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea surface salinity -'avg_sss' = { +#Sea ice area fraction +'siconc' = { discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 300 m -'avg_sc300v' = { +#Eastward sea ice velocity +'siue' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean vertically integrated sea water practical salinity in the upper 700 m -'avg_sc700v' = { +#Northward sea ice velocity +'sivn' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean total column vertically integrated sea water practical salinity -'avg_scbtv' = { +#Sea ice albedo +'sialb' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea water practical salinity -'avg_so' = { +#Sea ice surface temperature +'sitemptop' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature -'avg_thetao' = { +#Sea ice growth +'sigrowth' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water sigma theta -'avg_sigmat' = { +#Sea ice volume per unit area +'sivol' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean Y-component of sea water velocity -'avg_vo' = { +#Snow volume over sea ice per unit area +'snvol' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean X-component of sea water velocity -'avg_uo' = { +#Vertically averaged sea ice temperature +'vasit' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity -'avg_von' = { +#Snow temperature over sea ice +'sntemp' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity -'avg_uoe' = { +#Sea ice temperature at the sea ice and snow interface +'sisntemp' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean upward sea water velocity -'avg_wo' = { +#Underside ice temperature +'usitemp' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water potential temperature tendency due to newtonian relaxation -'avg_thetaodmp' = { +#Sea ice heat content +'sihc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to newtonian relaxation -'avg_sodmp' = { +#Snow heat content over sea ice +'snhc' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to parameterization -'avg_bckint' = { +#Sea ice freeboard thickness +'sifbr' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-mean sea water salinity tendency due to parameterization -'avg_bckins' = { +#Sea ice melt pond fraction +'sipf' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean eastward sea water velocity tendency due to parameterization -'avg_bckine' = { +#Sea ice melt pond depth +'sipd' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean northward sea water velocity tendency due to parameterization -'avg_bckinn' = { +#Sea ice melt pond volume per unit area +'sipvol' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water temperature tendency due to direct bias correction -'avg_tdbiascorr' = { +#Sea ice fraction tendency due to parameterization +'bckinsic' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity tendency due to direct bias correction -'avg_sdbiascorr' = { +#X-component of sea ice velocity +'six' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean sea water salinity -'avg_salo' = { +#Y-component of sea ice velocity +'siy' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean net short wave radiation rate at sea surface -'avg_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Sea ice temperature +'sit' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Sea surface practical salinity +'sos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind stress at sea surface -'avg_wst_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; +#Sea surface temperature +'tos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 0 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean wind speed at 10m above sea surface -'avg_10ws_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 14 C isotherm +'t14d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean neutral drag coefficient at 10m above sea surface -'avg_10nd_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; +#Depth of 17 C isotherm +'t17d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean total precipitation rate at sea surface -'avg_tprate_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 20 C isotherm +'t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow precipitation rate at sea surface -'avg_snrate_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; +#Depth of 26 C isotherm +'t26d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward of wind stress over sea ice -'avg_ewst_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; +#Depth of 28 C isotherm +'t28d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean northward of wind stress over sea ice -'avg_nwst_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; +#Barotropic stream function +'stfbarot' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean U-component of wind stress over sea ice -'avg_uwst_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; +#Surface downward heat flux +'hfds' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean V-component of wind stress over sea ice -'avg_vwst_sea' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; +#Northward surface stress +'tauvon' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'acc_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; +#Eastward surface stress +'tauuoe' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 5 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated total precipitation at sea surface -'tp_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; +#Y-component of surface stress +'tauvo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Time-accumulated snow precipitation at sea surface -'sn_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#X-component of surface stress +'tauuo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; typeOfFirstFixedSurface = 160 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; } -#Virtual temperature -'vtmp' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'mlotst010' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mass density -'mdens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 0 ; +#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'mlotst030' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total column vertically-integrated mass density -'tc_mdens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Mass mixing ratio -'mass_mixrat' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - } -#Emission mass flux -'emi_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 255 ; - } -#Dry deposition velocity -'drydep_vel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - } -#Wet deposition mass flux -'wetdep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - } -#Dry deposition mass flux -'drydep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - } -#Sedimentation mass flux -'sed_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 11 ; - } -#Volume mixing ratio -'vol_mixrat' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 52 ; - } -#Wet deposition mass flux by large-scale precipitation -'wetdep_mflx_lsp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 9 ; - } -#Wet deposition mass flux by convective precipitation -'wetdep_mflx_cp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 10 ; - } -#Emission mass flux from natural sources -'emi_mflx_natsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 6 ; - } -#Emission mass flux from anthropogenic sources -'emi_mflx_antsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 4 ; - } -#Emission mass flux from elevated anthropogenic sources -'emi_mflx_elevantsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 12 ; - } -#Emission mass flux from surface anthropogenic sources -'emi_mflx_sfcantsrc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 13 ; - } -#Emission from aviation -'emi_mflx_aviation' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 1 ; - } -#Emission mass flux from agriculture livestock -'emi_mflx_agriliv' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 14 ; - } -#Emission mass flux from agriculture soils -'emi_mflx_agrisol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 15 ; - } -#Emission mass flux from agricultural waste burning -'emi_mflx_agriwasburn' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 16 ; - } -#Emission mass flux from residential, commercial and other combustion -'emi_mflx_rescomb' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 18 ; - } -#Emission mass flux from power generation -'emi_mflx_powgen' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 19 ; - } -#Emission mass flux from fugitives -'emi_mflx_fug' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 21 ; - } -#Emission mass flux from industrial process -'emi_mflx_indproc' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 22 ; - } -#Emission mass flux from solvents -'emi_mflx_solv' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 23 ; - } -#Emission mass flux from ships -'emi_mflx_shp' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 24 ; - } -#Emission mass flux from wastes (solid and water) -'emi_mflx_wastes' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 25 ; - } -#Emission mass flux from off-road transportation -'emi_mflx_offrdtrans' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 27 ; - } -#Emission mass flux from road transportation -'emi_mflx_rdtrans' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 26 ; - } -#Emission mass flux from super power stations -'emi_mflx_suppowstn' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 20 ; - } -#Emission mass flux from volcanoes -'emi_mflx_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Emission mass flux from wetlands -'emi_mflx_wetl' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 10 ; - } -#Net ecosystem exchange flux -'neef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - } -#Mean net ecosystem exchange flux -'mneef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated net ecosystem exchange flux -'aneef' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 1 ; - } -#Gross primary production flux -'gppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - } -#Mean gross primary production flux -'mgppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated gross primary production flux -'agppf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 1 ; - } -#Ecosystem respiration flux -'erf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - } -#Mean ecosystem respiration flux -'merf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated ecosystem respiration flux -'aerf' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 1 ; - } -#Emission mass flux from bio fuel -'emi_mflx_biofuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 8 ; - } -#Emission mass flux from fossil fuel -'emi_mflx_fossilfuel' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 9 ; - } -#Emission mass flux from other -'emi_mflx_other' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 0 ; - } -#Emission mass flux from oceans -'emi_mflx_ocean' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 11 ; - } -#Accumulated wet deposition mass flux -'acc_wetdep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated dry deposition mass flux -'acc_drydep_mflx' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - typeOfStatisticalProcessing = 1 ; - } -#Aerosol number density -'aer_ndens' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 59 ; - } -#Mass mixing ratio from volcanoes -'mass_mixrat_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Total column vertically-integrated mass density from volcanoes -'tc_mdens_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Dry deposition velocity from volcanoes -'drydep_vel_vol' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Virtual potential temperature -'vptmp' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 15 ; - } -#Pseudo-adiabatic potential temperature -'papt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Wind direction -'wdir' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - } -#Snowmelt -'snom' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Period corresponding to maximum individual wave height -'tmax' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - } -#Maximum individual wave height -'hmax' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - } -#Model bathymetry -'wmb' = { +#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'mlotst125' = { discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 7 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment -'mp1' = { +#Ocean mixed layer depth defined by temperature 0.2 C +'mlott02' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 25 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean zero-crossing wave period -'mp2' = { +#Ocean mixed layer depth defined by temperature 0.5 C +'mlott05' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 28 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width -'wdw' = { +#Average sea water practical salinity in the upper 300 m +'sc300m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 31 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for wind waves -'p1ww' = { +#Average sea water practical salinity in the upper 700 m +'sc700m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 26 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for wind waves -'p2ww' = { +#Total column average sea water practical salinity +'scbtm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 29 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for wind waves -'dwww' = { +#Vertically-integrated heat content in the upper 300 m +'hc300m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment for swell -'p1ps' = { +#Vertically-integrated heat content in the upper 700 m +'hc700m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 27 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on second moment for swell -'p2ps' = { +#Total column of heat content +'hcbtm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for swell -'dwps' = { +#Sea surface height +'zos' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 33 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of combined wind waves and swell -'swh' = { +#Steric change in sea surface height +'stheig' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave direction -'mwd' = { +#Halosteric change in sea surface height +'hstheig' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 14 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Peak wave period -'pp1d' = { +#Thermosteric change in sea surface height +'tstheig' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period -'mwp' = { +#Thermocline depth +'thcline' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Coefficient of drag with waves -'cdww' = { +#Bottom pressure equivalent height +'btp' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of wind waves -'shww' = { +#Net surface upward water flux +'swfup' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 5 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of wind waves -'mdww' = { +#Fresh water flux into sea water (from rivers) +'fw2sw' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 75 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of wind waves -'mpww' = { +#Virtual salt flux into sea water +'vsf2sw' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of total swell -'shts' = { +#Heat flux correction +'hfcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of total swell -'mdts' = { +#Fresh water flux correction +'fwcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 74 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of total swell -'mpts' = { +#Virtual salt flux correction +'vsfcorr' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 9 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean square slope of waves -'msqs' = { +#Turbocline depth (kz=5e-4) +'turbocl' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 20 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind speed -'wind' = { +#Y-component of surface sea water velocity +'svy' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter wave height -'awh' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 37 ; - } -#Altimeter corrected wave height -'acwh' = { +#X-component of surface sea water velocity +'svx' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter range relative correction -'arrc' = { +#Northward surface sea water velocity +'svn' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind direction -'dwi' = { +#Eastward surface sea water velocity +'sve' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#2D wave spectra (single) -'2dfd' = { +#Heat Content surface to 26C isotherm +'hct26' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 86 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; } -#Wave spectral kurtosis -'wsk' = { +#Sea surface height tendency due to parameterization +'bckineta' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 43 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Benjamin-Feir index -'bfi' = { +#Sea surface height with inverse barometer correction +'zosib' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 44 ; + parameterCategory = 3 ; + parameterNumber = 20 ; } -#Eastward sea water velocity -'ocu' = { +#Average sea water potential temperature in the upper 300m +'pt300m' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 2 ; + parameterCategory = 4 ; + parameterNumber = 18 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Northward sea water velocity -'ocv' = { +#Sea surface salinity +'sss' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 3 ; + parameterNumber = 21 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Skin reservoir content -'srcrea' = { - discipline = 2 ; - parameterCategory = 0 ; +#Vertically integrated sea water practical salinity in the upper 300 m +'sc300v' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Vertical integral of mass of atmosphere -'vima' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated kinetic energy -'vike' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated enthalpy -'vithe' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Vertically integrated sea water practical salinity in the upper 700 m +'sc700v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Total column vertically-integrated potential + internal energy -'vipie' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Total column vertically integrated sea water practical salinity +'scbtv' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of potential+internal+latent energy -'vipile' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water practical salinity +'so' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated total energy -'vitoe' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of eastward heat flux -'vithee' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Sea water potential temperature +'thetao' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward heat flux -'vithen' = { - discipline = 0 ; - parameterCategory = 21 ; +#Sea water sigma theta +'sigmat' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vertical integral of eastward water vapour flux -'viwve' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 150 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertical integral of northward water vapour flux -'viwvn' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 151 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Y-component of sea water velocity +'vo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Vertically integrated moisture divergence flux -'viwvd' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 165 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#X-component of sea water velocity +'uo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short-wave radiation -'srta' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity +'von' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation -'trta' = { - discipline = 0 ; - parameterCategory = 0 ; +#Eastward sea water velocity +'uoe' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 23 ; - typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to short wave radiation, clear sky -'srtca' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - typeOfStatisticalProcessing = 1 ; +#Upward sea water velocity +'wo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to long-wave radiation, clear sky -'trtca' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - typeOfStatisticalProcessing = 1 ; +#Sea water potential temperature tendency due to newtonian relaxation +'thetaodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught mass flux -'umfa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 27 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to newtonian relaxation +'sodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught mass flux -'dmfa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 28 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to parameterization +'bckint' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated updraught detrainment rate -'udra' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 29 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to parameterization +'bckins' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated downdraught detrainment rate -'ddra' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 30 ; - typeOfStatisticalProcessing = 1 ; +#Eastward sea water velocity tendency due to parameterization +'bckine' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated total precipitation flux -'tpfa' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; +#Northward sea water velocity tendency due to parameterization +'bckinn' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated turbulent diffusion coefficient for heat -'tdcha' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 1 ; +#Sea water temperature tendency due to direct bias correction +'tdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated temperature tendency due to parametrisations -'ttpha' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 26 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity tendency due to direct bias correction +'sdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated specific humidity tendency due to parametrisations -'qtpha' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 108 ; - typeOfStatisticalProcessing = 1 ; +#Sea water salinity +'salo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Time-integrated eastward wind tendency due to parametrisations -'utpha' = { +#Net short wave radiation rate at sea surface +'ssr_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 39 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated northward wind tendency due to parametrisations -'vtpha' = { +#Wind stress at sea surface +'wst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 40 ; - typeOfStatisticalProcessing = 1 ; - } -#Time-mean surface net radiation flux (SW and LW) -'msnrf' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } -#Surface runoff -'sro' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 34 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio -'no2' = { +#Wind speed at 10m above sea surface +'10ws_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio -'so2' = { +#Neutral drag coefficient at 10m above sea surface +'10nd_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio -'co' = { +#Total precipitation rate at sea surface +'tprate_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio (full chemistry scheme) -'go3' = { +#Snow precipitation rate at sea surface +'snrate_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - is_chemical = 1 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Nitrogen dioxide mass mixing ratio difference -'no2diff' = { +#Eastward of wind stress over sea ice +'ewst_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio difference -'so2diff' = { +#Northward of wind stress over sea ice +'nwst_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Carbon monoxide mass mixing ratio difference -'codiff' = { +#U-component of wind stress over sea ice +'uwst_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Ozone mass mixing ratio difference (full chemistry scheme) -'go3diff' = { +#V-component of wind stress over sea ice +'vwst_sea' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; + parameterCategory = 2 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Friction velocity -'zust' = { +#Time-mean sea ice thickness +'avg_sithick' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - } -#Mean 2 metre temperature -'mean2t' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Lake total depth -'dl' = { - discipline = 1 ; +#Time-mean sea ice area fraction +'avg_siconc' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer temperature -'lmlt' = { - discipline = 1 ; +#Time-mean eastward sea ice velocity +'avg_siue' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake mix-layer depth -'lmld' = { - discipline = 1 ; +#Time-mean northward sea ice velocity +'avg_sivn' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake bottom temperature -'lblt' = { - discipline = 1 ; +#Time-mean sea ice albedo +'avg_sialb' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 162 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 255 ; - } -#Lake total layer temperature -'ltlt' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake shape factor -'lshf' = { - discipline = 1 ; +#Time-mean sea ice surface temperature +'avg_sitemptop' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice surface temperature -'lict' = { - discipline = 1 ; +#Time-mean sea ice growth +'avg_sigrowth' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 6 ; typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Lake ice total depth -'licd' = { - discipline = 1 ; +#Time-mean sea ice volume per unit area +'avg_sivol' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; + parameterNumber = 15 ; typeOfFirstFixedSurface = 174 ; typeOfSecondFixedSurface = 176 ; scaledValueOfFirstFixedSurface = missing() ; scaleFactorOfFirstFixedSurface = missing() ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'dndzn' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 45 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'dndza' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 44 ; - } -#Duct base height -'dctb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 41 ; - } -#Trapping layer base height -'tplb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 42 ; - } -#Trapping layer top height -'tplt' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 43 ; - } -#10 metre u-component of neutral wind -'u10n' = { - discipline = 0 ; +#Time-mean snow volume over sea ice per unit area +'avg_snvol' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre v-component of neutral wind -'v10n' = { - discipline = 0 ; +#Time-mean vertically averaged sea ice temperature +'avg_vasit' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component surface stokes drift -'ust' = { +#Time-mean snow temperature over sea ice +'avg_sntemp' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 21 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component surface stokes drift -'vst' = { +#Time-mean sea ice temperature at the sea ice and snow interface +'avg_sisntemp' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - } -#100 metre U wind component -'100u' = { - discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#100 metre V wind component -'100v' = { - discipline = 0 ; +#Time-mean underside ice temperature +'avg_usitemp' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } -#Total precipitation of at least 10 mm -'tpg10' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 10 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Total precipitation of at least 20 mm -'tpg20' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Stream function -'strf' = { - discipline = 0 ; +#Time-mean sea ice heat content +'avg_sihc' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 4 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Velocity potential -'vp' = { - discipline = 0 ; +#Time-mean snow heat content over sea ice +'avg_snhc' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 5 ; - } -#Potential temperature -'pt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Pressure -'pres' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - } -#Convective available potential energy -'cape' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential vorticity -'pv' = { - discipline = 0 ; +#Time-mean sea ice freeboard thickness +'avg_sifbr' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 14 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Maximum temperature at 2 metres in the last 6 hours -'mx2t6' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 2 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond fraction +'avg_sipf' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum temperature at 2 metres in the last 6 hours -'mn2t6' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 3 ; - lengthOfTimeRange = 6 ; +#Time-mean sea ice melt pond depth +'avg_sipd' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential -'z' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; +#Time-mean sea ice melt pond volume per unit area +'avg_sipvol' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Temperature -'t' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Time-mean sea ice fraction tendency due to parameterization +'avg_bckinsic' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U component of wind -'u' = { - discipline = 0 ; +#Time-mean X-component of sea ice velocity +'avg_six' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V component of wind -'v' = { - discipline = 0 ; +#Time-mean Y-component of sea ice velocity +'avg_siy' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Specific humidity -'q' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Time-mean sea ice temperature +'avg_sit' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfStatisticalProcessing = 0 ; } -#Surface pressure -'sp' = { - discipline = 0 ; +#Time-mean sea surface practical salinity +'avg_sos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface temperature +'avg_tos' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical velocity -'w' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 8 ; +#Time-mean depth of 14 C isotherm +'avg_t14d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water -'tcw' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Time-mean depth of 17 C isotherm +'avg_t17d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vorticity (relative) -'vo' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 12 ; +#Time-mean depth of 20 C isotherm +'avg_t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface sensible heat flux -'sshf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 26 C isotherm +'avg_t26d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface latent heat flux -'slhf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean depth of 28 C isotherm +'avg_t28d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean barotropic stream function +'avg_stfbarot' = { + discipline = 10 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Mean sea level pressure -'msl' = { - discipline = 0 ; +#Time-mean surface downward heat flux +'avg_hfds' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Divergence -'d' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 13 ; +#Time-mean northward surface stress +'avg_tauvon' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Geopotential height -'gh' = { - discipline = 0 ; +#Time-mean eastward surface stress +'avg_tauuoe' = { + discipline = 10 ; parameterCategory = 3 ; parameterNumber = 5 ; - } -#Relative humidity -'r' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - } -#10 metre U wind component -'10u' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre V wind component -'10v' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; +#Time mean Y-component of surface stress +'avg_tauvo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre temperature -'2t' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; +#Time-mean X-component of surface stress +'avg_tauuo' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre dewpoint temperature -'2d' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 103 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'avg_mlotst010' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'avg_mlotst030' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'avg_mlotst125' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by temperature 0.2 C +'avg_mlott02' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Land-sea mask -'lsm' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean ocean mixed layer depth defined by temperature 0.5 C +'avg_mlott05' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net short-wave (solar) radiation -'ssr' = { - discipline = 0 ; +#Time-mean average sea water practical salinity in the upper 300 m +'avg_sc300m' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Surface net long-wave (thermal) radiation -'str' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean average sea water practical salinity in the upper 700 m +'avg_sc700m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Top net long-wave (thermal) radiation -'ttr' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean total column average sea water practical salinity +'avg_scbtm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine duration -'sund' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean vertically-integrated heat content in the upper 300 m +'avg_hc300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Brightness temperature -'btmp' = { - discipline = 0 ; +#Time-mean vertically-integrated heat content in the upper 700 m +'avg_hc700m' = { + discipline = 10 ; parameterCategory = 4 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#10 metre wind speed -'10si' = { - discipline = 0 ; - parameterCategory = 2 ; +#Time-mean total column heat content +'avg_hcbtm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea surface height +'avg_zos' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Skin temperature -'skt' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean steric change in sea surface height +'avg_stheig' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Latent heat net flux -'lhtfl' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean halosteric change in sea surface height +'avg_hstheig' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Heat index -'heatx' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 12 ; - } -#Wind chill factor -'wcf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; - } -#Snow phase change heat flux -'snohf' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - } -#Vapor pressure -'vapp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 4 ; - } -#Large scale precipitation (non-convective) -'ncpcp' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean thermosteric change in sea surface height +'avg_tstheig' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snowfall rate water equivalent -'srweq' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 12 ; - } -#Convective snow -'snoc' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 14 ; - } -#Large scale snow -'snol' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 15 ; - } -#Snow age -'snoag' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 17 ; - } -#Absolute humidity -'absh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 18 ; - } -#Precipitation type -'ptype' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 19 ; - } -#Integrated liquid water -'iliqw' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 20 ; - } -#Condensate -'tcond' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 21 ; +#Time-mean thermocline depth +'avg_thcline' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Cloud mixing ratio -'clwmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 22 ; +#Time-mean bottom pressure equivalent height +'avg_btp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Ice water mixing ratio -'icmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Time-mean net surface upward water flux +'avg_swfup' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rain mixing ratio -'rwmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 24 ; +#Time-mean fresh water flux into sea water (from rivers) +'avg_fw2sw' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow mixing ratio -'snmr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 25 ; +#Time-mean virtual salt flux into sea water +'avg_vsf2sw' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture convergence -'mconv' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 26 ; +#Time-mean heat flux correction +'avg_hfcorr' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum relative humidity -'maxrh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; +#Time-mean fresh water flux correction +'avg_fwcorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum absolute humidity -'maxah' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; +#Time-mean virtual salt flux correction +'avg_vsfcorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitable water category -'pwcat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 30 ; +#Time-mean turbocline depth (kz=5e-4) +'avg_turbocl' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Hail -'hail' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 31 ; +#Time-mean Y-component of surface sea water velocity +'avg_svy' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Graupel (snow pellets) -'grle' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 32 ; +#Time-mean X-component of surface sea water velocity +'avg_svx' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical rain -'crain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 33 ; +#Time-mean northward surface sea water velocity +'avg_svn' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical freezing rain -'cfrzr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 34 ; +#Time-mean eastward surface sea water velocity +'avg_sve' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical ice pellets -'cicep' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 35 ; +#Time-mean heat content surface to 26C isotherm +'avg_hct26' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; + typeOfStatisticalProcessing = 0 ; } -#Categorical snow -'csnow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 36 ; +#Time-mean sea surface height tendency due to parameterization +'avg_bckineta' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective precipitation rate -'cprat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 37 ; +#Time-mean sea surface height with inverse barometer correction +'avg_zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture divergence -'mdiv' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 38 ; +#Time-mean average sea water potential temperature in the upper 300m +'avg_pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Percent frozen precipitation -'cpofp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 39 ; +#Time-mean sea surface salinity +'avg_sss' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Potential evaporation -'pevap' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 40 ; +#Time-mean vertically integrated sea water practical salinity in the upper 300 m +'avg_sc300v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Snow cover -'snowc' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 42 ; +#Time-mean vertically integrated sea water practical salinity in the upper 700 m +'avg_sc700v' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain fraction of total cloud water -'frain' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 43 ; +#Time-mean total column vertically integrated sea water practical salinity +'avg_scbtv' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rime factor -'rime' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 44 ; +#Time-mean sea water practical salinity +'avg_so' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated rain -'tcolr' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 45 ; +#Time-mean sea water potential temperature +'avg_thetao' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated snow -'tcols' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 46 ; +#Time-mean sea water sigma theta +'avg_sigmat' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale water precipitation (non-convective) -'lswp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 47 ; +#Time-mean Y-component of sea water velocity +'avg_vo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective water precipitation -'cwp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 48 ; +#Time-mean X-component of sea water velocity +'avg_uo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total water precipitation -'twatp' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; +#Time-mean northward sea water velocity +'avg_von' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column water (Vertically integrated total water (vapour + cloud water/ice)) -'tcwat' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; +#Time-mean eastward sea water velocity +'avg_uoe' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total precipitation rate -'tprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean upward sea water velocity +'avg_wo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate water equivalent -'tsrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; +#Time-mean sea water potential temperature tendency due to newtonian relaxation +'avg_thetaodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation rate -'lsprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 54 ; +#Time-mean sea water salinity tendency due to newtonian relaxation +'avg_sodmp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate -'tsrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; +#Time-mean sea water temperature tendency due to parameterization +'avg_bckint' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective snowfall rate -'csrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 58 ; +#Time-mean sea water salinity tendency due to parameterization +'avg_bckins' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snowfall rate -'lssrate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 59 ; +#Time-mean eastward sea water velocity tendency due to parameterization +'avg_bckine' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Water equivalent of accumulated snow depth (deprecated) -'sdwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Time-mean northward sea water velocity tendency due to parameterization +'avg_bckinn' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Rain precipitation rate -'rprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 65 ; +#Time-mean sea water temperature tendency due to direct bias correction +'avg_tdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Snow precipitation rate -'sprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#Time-mean sea water salinity tendency due to direct bias correction +'avg_sdbiascorr' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Freezing rain precipitation rate -'fprate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 67 ; +#Time-mean sea water salinity +'avg_salo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Ice pellets precipitation rate -'iprate' = { +#Time-mean net short wave radiation rate at sea surface +'avg_ssr_sea' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 68 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum wind speed -'maxgust' = { +#Time-mean wind stress at sea surface +'avg_wst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 21 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind speed (gust) -'gust' = { +#Time-mean wind speed at 10m above sea surface +'avg_10ws_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#u-component of wind (gust) -'ugust' = { +#Time-mean neutral drag coefficient at 10m above sea surface +'avg_10nd_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 23 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#v-component of wind (gust) -'vgust' = { +#Time-mean total precipitation rate at sea surface +'avg_tprate_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 24 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical speed shear -'vwsh' = { +#Time-mean snow precipitation rate at sea surface +'avg_snrate_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 25 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal momentum flux -'mflx' = { +#Time-mean eastward of wind stress over sea ice +'avg_ewst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 26 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U-component storm motion -'ustm' = { +#Time-mean northward of wind stress over sea ice +'avg_nwst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 27 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component storm motion -'vstm' = { +#Time-mean U-component of wind stress over sea ice +'avg_uwst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 28 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Drag coefficient -'cd' = { +#Time-mean V-component of wind stress over sea ice +'avg_vwst_sea' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 29 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Frictional velocity -'fricv' = { +#Time-accumulated net short wave radiation at sea surface +'acc_ssr_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 30 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Pressure reduced to MSL -'prmsl' = { +#Time-accumulated total precipitation at sea surface +'tp_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 1 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Altimeter setting -'alts' = { +#Time-accumulated snow precipitation at sea surface +'sn_sea' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 11 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Thickness -'thick' = { +#Virtual temperature +'vtmp' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 12 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Pressure altitude -'presalt' = { +#Mass density +'mdens' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 0 ; } -#Density altitude -'denalt' = { +#Total column vertically-integrated mass density +'tc_mdens' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#5-wave geopotential height -'5wavh' = { +#Mass mixing ratio +'mass_mixrat' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 2 ; } -#Zonal flux of gravity wave stress -'u-gwd' = { +#Emission mass flux +'emi_mflx' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } -#Meridional flux of gravity wave stress -'v-gwd' = { +#Dry deposition velocity +'drydep_vel' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 15 ; } -#5-wave geopotential height anomaly -'5wava' = { +#Wet deposition mass flux +'wetdep_mflx' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 7 ; } -#Net short-wave radiation flux (top of atmosphere) -'nswrt' = { +#Dry deposition mass flux +'drydep_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 6 ; } -#Downward short-wave radiation flux -'dswrf' = { +#Sedimentation mass flux +'sed_mflx' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 11 ; } -#Upward short-wave radiation flux -'uswrf' = { +#Volume mixing ratio +'vol_mixrat' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 52 ; } -#Net short wave radiation flux -'nswrf' = { +#Wet deposition mass flux by large-scale precipitation +'wetdep_mflx_lsp' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 9 ; } -#Photosynthetically active radiation -'photar' = { +#Wet deposition mass flux by convective precipitation +'wetdep_mflx_cp' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 10 ; } -#Net short-wave radiation flux, clear sky -'nswrfcs' = { +#Emission mass flux from natural sources +'emi_mflx_natsrc' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 6 ; } -#Downward UV radiation -'dwuvr' = { +#Emission mass flux from anthropogenic sources +'emi_mflx_antsrc' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 4 ; } -#UV index (under clear sky) -'uviucs' = { +#Emission mass flux from elevated anthropogenic sources +'emi_mflx_elevantsrc' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 50 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 12 ; } -#UV index -'uvi' = { +#Emission mass flux from surface anthropogenic sources +'emi_mflx_sfcantsrc' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 51 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 13 ; } -#Net long wave radiation flux (surface) -'nlwrs' = { +#Emission from aviation +'emi_mflx_aviation' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 1 ; } -#Net long wave radiation flux (top of atmosphere) -'nlwrt' = { +#Emission mass flux from agriculture livestock +'emi_mflx_agriliv' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 14 ; } -#Downward long-wave radiation flux -'dlwrf' = { +#Emission mass flux from agriculture soils +'emi_mflx_agrisol' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 15 ; } -#Upward long-wave radiation flux -'ulwrf' = { +#Emission mass flux from agricultural waste burning +'emi_mflx_agriwasburn' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 16 ; } -#Net long wave radiation flux -'nlwrf' = { +#Emission mass flux from residential, commercial and other combustion +'emi_mflx_rescomb' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 18 ; } -#Net long-wave radiation flux, clear sky -'nlwrcs' = { +#Emission mass flux from power generation +'emi_mflx_powgen' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 19 ; } -#Cloud Ice -'cice' = { +#Emission mass flux from fugitives +'emi_mflx_fug' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 21 ; } -#Cloud water -'cwat' = { +#Emission mass flux from industrial process +'emi_mflx_indproc' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 22 ; } -#Cloud amount -'cdca' = { +#Emission mass flux from solvents +'emi_mflx_solv' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 23 ; } -#Cloud type -'cdct' = { +#Emission mass flux from ships +'emi_mflx_shp' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 24 ; } -#Thunderstorm maximum tops -'tmaxt' = { +#Emission mass flux from wastes (solid and water) +'emi_mflx_wastes' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 25 ; } -#Thunderstorm coverage -'thunc' = { +#Emission mass flux from off-road transportation +'emi_mflx_offrdtrans' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 27 ; } -#Cloud top -'cdct' = { +#Emission mass flux from road transportation +'emi_mflx_rdtrans' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 26 ; } -#Ceiling -'ceil' = { +#Emission mass flux from super power stations +'emi_mflx_suppowstn' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 20 ; } -#Non-convective cloud cover -'cdlyr' = { +#Emission mass flux from volcanoes +'emi_mflx_vol' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Cloud work function -'cwork' = { +#Emission mass flux from wetlands +'emi_mflx_wetl' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; } -#Convective cloud efficiency -'cuefi' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 16 ; +#Net ecosystem exchange flux +'neef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; } -#Total condensate -'tcond' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 17 ; +#Mean net ecosystem exchange flux +'mneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; } -#Total column-integrated cloud water -'tcolw' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 18 ; +#Accumulated net ecosystem exchange flux +'aneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; } -#Total column-integrated cloud ice -'tcoli' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 19 ; +#Gross primary production flux +'gppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; } -#Total column-integrated condensate -'tcolc' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 20 ; +#Mean gross primary production flux +'mgppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'agppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'erf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; } -#Ice fraction of total condensate -'fice' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 21 ; +#Mean ecosystem respiration flux +'merf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; } -#Cloud ice mixing ratio -'cdcimr' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 23 ; +#Accumulated ecosystem respiration flux +'aerf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; } -#Sunshine -'suns' = { +#Emission mass flux from bio fuel +'emi_mflx_biofuel' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; } -#Horizontal extent of cumulonimbus (CB) -'~' = { +#Emission mass flux from fossil fuel +'emi_mflx_fossilfuel' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 25 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; } -#K index -'kx' = { +#Emission mass flux from other +'emi_mflx_other' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 2 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; } -#KO index -'kox' = { +#Emission mass flux from oceans +'emi_mflx_ocean' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; } -#Total totals index -'totalx' = { +#Accumulated wet deposition mass flux +'acc_wetdep_mflx' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; } -#Sweat index -'sx' = { +#Accumulated dry deposition mass flux +'acc_drydep_mflx' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; } -#Storm relative helicity -'hlcy' = { +#Aerosol number density +'aer_ndens' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 59 ; } -#Energy helicity index -'ehlx' = { +#Mass mixing ratio from volcanoes +'mass_mixrat_vol' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Surface lifted index -'lftx' = { +#Total column vertically-integrated mass density from volcanoes +'tc_mdens_vol' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Best (4-layer) lifted index -'4lftx' = { +#Dry deposition velocity from volcanoes +'drydep_vel_vol' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Aerosol type -'aerot' = { +#Pressure tendency +'ptend' = { discipline = 0 ; - parameterCategory = 13 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 2 ; } -#Total ozone -'tozne' = { +#ICAO Standard Atmosphere reference height +'icaht' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 3 ; } -#Base spectrum width -'bswid' = { +#Geometrical height +'h' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Base reflectivity -'bref' = { +#Standard deviation of height +'hstdv' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 1 ; + parameterCategory = 3 ; + parameterNumber = 7 ; } -#Base radial velocity -'brvel' = { +#Virtual potential temperature +'vptmp' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Vertically-integrated liquid -'veril' = { +#Pseudo-adiabatic potential temperature +'papt' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Layer-maximum base reflectivity -'lmaxbr' = { +#Maximum temperature +'tmax' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 4 ; } -#Precipitation -'prec' = { +#Minimum temperature +'tmin' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Air concentration of Caesium 137 -'acces' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 0 ; - } -#Air concentration of Iodine 131 -'aciod' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 1 ; - } -#Air concentration of radioactive pollutant -'acradp' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 2 ; - } -#Ground deposition of Caesium 137 -'gdces' = { +#Dew point temperature +'dpt' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 3 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Ground deposition of Iodine 131 -'gdiod' = { +#Lapse rate +'lapr' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 4 ; + parameterCategory = 0 ; + parameterNumber = 8 ; } -#Ground deposition of radioactive pollutant -'gdradp' = { +#Visibility +'vis' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 0 ; } -#Time-integrated air concentration of caesium pollutant -'tiaccp' = { +#Radar spectra (1) +'rdsp1' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 6 ; } -#Time-integrated air concentration of iodine pollutant -'tiacip' = { +#Radar spectra (2) +'rdsp2' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 7 ; } -#Time-integrated air concentration of radioactive pollutant -'tiacrp' = { +#Radar spectra (3) +'rdsp3' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 15 ; parameterNumber = 8 ; } -#Volcanic ash -'volash' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 4 ; - } -#Icing top -'icit' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } -#Icing base -'icib' = { +#Parcel lifted index (to 500 hPa) +'pli' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 6 ; + parameterCategory = 7 ; + parameterNumber = 0 ; } -#Icing -'ici' = { +#Temperature anomaly +'ta' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 7 ; + parameterCategory = 0 ; + parameterNumber = 9 ; } -#Turbulence top -'turbt' = { +#Pressure anomaly +'presa' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 8 ; } -#Turbulence base -'turbb' = { +#Geopotential height anomaly +'gpa' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 3 ; parameterNumber = 9 ; } -#Turbulence -'turb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 10 ; +#Wave spectra (1) +'wvsp1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Turbulent kinetic energy -'tke' = { +#Wave spectra (2) +'wvsp2' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Wave spectra (3) +'wvsp3' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Wind direction +'wdir' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 11 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Planetary boundary layer regime -'pblreg' = { +#Sigma coordinate vertical velocity +'sgcvv' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Contrail intensity -'conti' = { +#Absolute vorticity +'absv' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Contrail engine type -'contet' = { +#Absolute divergence +'absd' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 11 ; } -#Contrail top -'contt' = { +#Vertical u-component shear +'vucsh' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 15 ; } -#Contrail base -'contb' = { +#Vertical v-component shear +'vvcsh' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 16 ; } -#Maximum snow albedo -'mxsalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; +#U-component of current +'ucurr' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Snow free albedo -'snfalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 18 ; +#V-component of current +'vcurr' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Icing -'~' = { +#Precipitable water +'pwat' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#In-cloud turbulence -'~' = { +#Saturation deficit +'satd' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 21 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Relative clear air turbulence (RCAT) -'rcat' = { +#Precipitation rate +'prate' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Supercooled large droplet probability (see Note 4) -'~' = { +#Thunderstorm probability +'tstm' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 23 ; + parameterNumber = 2 ; } -#Arbitrary text string -'var190m0' = { +#Convective precipitation (water) +'acpcp' = { discipline = 0 ; - parameterCategory = 190 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Seconds prior to initial reference time (defined in Section 1) -'tsec' = { +#Mixed layer depth +'mld' = { discipline = 0 ; - parameterCategory = 191 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 3 ; } -#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref -'ffldg' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Transient thermocline depth +'tthdp' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 2 ; } -#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) -'ffldro' = { - discipline = 1 ; - parameterCategory = 0 ; +#Main thermocline anomaly +'mtha' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 1 ; } -#Remotely sensed snow cover -'rssc' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Best lifted index (to 500 hPa) +'bli' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 1 ; } -#Elevation of snow covered terrain -'esct' = { - discipline = 1 ; +#Soil moisture content +'ssw' = { + discipline = 2 ; parameterCategory = 0 ; parameterNumber = 3 ; } -#Snow water equivalent percent of normal -'swepon' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Baseflow-groundwater runoff -'bgrun' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Storm surface runoff -'ssrun' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - } -#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) -'cppop' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Salinity +'s' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th -'pposp' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density +'den' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Probability of 0.01 inch of precipitation (POP) -'pop' = { - discipline = 1 ; - parameterCategory = 1 ; +#Direction of ice drift +'diced' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 2 ; } -#Vegetation -'veg' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Water runoff -'watr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Evapotranspiration -'evapt' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 6 ; +#Speed of ice drift +'siced' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 3 ; } -#Model terrain height -'mterh' = { - discipline = 2 ; - parameterCategory = 0 ; +#Ice divergence +'iced' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 7 ; } -#Land use -'landu' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 8 ; - } -#Ground heat flux -'gflux' = { +#Snowmelt +'snom' = { discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Moisture availability -'mstav' = { - discipline = 2 ; +#Direction of swell waves +'swdir' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 7 ; } -#Exchange coefficient -'sfexc' = { - discipline = 2 ; +#Secondary wave direction +'dirsw' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 12 ; } -#Plant canopy surface water -'cnwat' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 13 ; - } -#Blackadar mixing length scale -'bmixl' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 14 ; +#Net short-wave radiation flux (surface) +'nswrs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 0 ; } -#Canopy conductance -'ccond' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 15 ; +#Global radiation flux +'grad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Minimal stomatal resistance -'rsmin' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Radiance (with respect to wave number) +'lwrad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 5 ; } -#Solar parameter in canopy conductance -'rcs' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 18 ; +#Radiance (with respect to wave length) +'swrad' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 6 ; } -#Temperature parameter in canopy conductance -'rct' = { - discipline = 2 ; - parameterCategory = 0 ; +#Wind mixing energy +'wmixe' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 19 ; } -#Soil moisture parameter in canopy conductance -'rcsol' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 20 ; +#10 metre wind gust of at least 15 m/s +'10fgg15' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 15 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Humidity parameter in canopy conductance -'rcq' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 21 ; +#10 metre wind gust of at least 20 m/s +'10fgg20' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Column-integrated soil water -'cisoilw' = { - discipline = 2 ; +#Period corresponding to maximum individual wave height +'tmax' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 23 ; } -#Heat flux -'hflux' = { - discipline = 2 ; +#Maximum individual wave height +'hmax' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 24 ; } -#Volumetric soil moisture -'vsw' = { - discipline = 2 ; +#Model bathymetry +'wmb' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Mean wave period based on first moment +'mp1' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 25 ; } -#Volumetric wilting point -'vwiltm' = { - discipline = 2 ; +#Mean zero-crossing wave period +'mp2' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 27 ; - } -#Number of soil layers in root zone -'rlyrs' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - } -#Liquid volumetric soil moisture (non-frozen) -'liqvsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 10 ; + parameterNumber = 28 ; } -#Volumetric transpiration stress-onset (soil moisture) -'voltso' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 11 ; +#Wave spectral directional width +'wdw' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 31 ; } -#Transpiration stress-onset (soil moisture) -'transo' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 12 ; +#Mean wave period based on first moment for wind waves +'p1ww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 26 ; } -#Volumetric direct evaporation cease (soil moisture) -'voldec' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 13 ; +#Mean wave period based on second moment for wind waves +'p2ww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 29 ; } -#Direct evaporation cease (soil moisture) -'direc' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 14 ; +#Wave spectral directional width for wind waves +'dwww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 32 ; } -#Soil porosity -'soilp' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 15 ; +#Mean wave period based on first moment for swell +'p1ps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#Volumetric saturation of soil moisture -'vsosm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 16 ; +#Mean wave period based on second moment for swell +'p2ps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 30 ; } -#Saturation of soil moisture -'satosm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 17 ; +#Wave spectral directional width for swell +'dwps' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 33 ; } -#Estimated precipitation -'estp' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Significant height of combined wind waves and swell +'swh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Instantaneous rain rate -'irrate' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Mean wave direction +'mwd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Cloud top height -'ctoph' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#Peak wave period +'pp1d' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 34 ; } -#Cloud top height quality indicator -'ctophqi' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Mean wave period +'mwp' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Estimated u component of wind -'estu' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Coefficient of drag with waves +'cdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Estimated v component of wind -'estv' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of wind waves +'shww' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Number of pixels used -'npixu' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Mean direction of wind waves +'mdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; } -#Solar zenith angle -'solza' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 7 ; +#Mean period of wind waves +'mpww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Relative azimuth angle -'raza' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of total swell +'shts' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Reflectance in 0.6 micron channel -'rfl06' = { - discipline = 3 ; - parameterCategory = 1 ; +#Mean direction of total swell +'mdts' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#Mean period of total swell +'mpts' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Reflectance in 0.8 micron channel -'rfl08' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 10 ; +#Mean square slope of waves +'msqs' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Reflectance in 1.6 micron channel -'rfl16' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 11 ; +#10 metre wind speed +'wind' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Reflectance in 3.9 micron channel -'rfl39' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Altimeter wave height +'awh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 37 ; } -#Atmospheric divergence -'atmdiv' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Altimeter corrected wave height +'acwh' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Direction of wind waves -'wvdir' = { +#Altimeter range relative correction +'arrc' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 39 ; } -#Primary wave direction -'dirpw' = { +#10 metre wind direction +'dwi' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Primary wave mean period -'perpw' = { +#2D wave spectra (single) +'2dfd' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 86 ; } -#Secondary wave mean period -'persw' = { +#Wave spectral kurtosis +'wsk' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 13 ; + parameterNumber = 43 ; } -#Current direction -'dirc' = { +#Benjamin-Feir index +'bfi' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 44 ; + } +#Eastward sea water velocity +'ocu' = { discipline = 10 ; parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 160 ; } -#Current speed -'spc' = { +#Northward sea water velocity +'ocv' = { discipline = 10 ; parameterCategory = 1 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + } +#Skin reservoir content +'srcrea' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated kinetic energy +'vike' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometric vertical velocity -'wz' = { +#Total column vertically-integrated enthalpy +'vithe' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 9 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Seconds prior to initial reference time (defined in Section 1) -'tsec' = { - discipline = 10 ; - parameterCategory = 191 ; +#Total column vertically-integrated potential + internal energy +'vipie' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Forecast albedo -'al' = { +#Vertical integral of potential+internal+latent energy +'vipile' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Pressure tendency -'ptend' = { +#Total column vertically-integrated total energy +'vitoe' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 21 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#ICAO Standard Atmosphere reference height -'icaht' = { +#Vertical integral of eastward heat flux +'vithee' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 3 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'vithen' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward water vapour flux +'viwve' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometrical height -'h' = { +#Vertical integral of northward water vapour flux +'viwvn' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 6 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Standard deviation of height -'hstdv' = { +#Vertically integrated moisture divergence flux +'viwvd' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Maximum temperature -'tmax' = { +#Time-integrated temperature tendency due to short-wave radiation +'srta' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfStatisticalProcessing = 1 ; } -#Minimum temperature -'tmin' = { +#Time-integrated temperature tendency due to long-wave radiation +'trta' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 5 ; + parameterNumber = 23 ; + typeOfStatisticalProcessing = 1 ; } -#Dew point temperature -'dpt' = { +#Time-integrated temperature tendency due to short wave radiation, clear sky +'srtca' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 24 ; + typeOfStatisticalProcessing = 1 ; } -#Lapse rate -'lapr' = { +#Time-integrated temperature tendency due to long-wave radiation, clear sky +'trtca' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 1 ; } -#Visibility -'vis' = { +#Time-integrated updraught mass flux +'umfa' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (1) -'rdsp1' = { +#Time-integrated downdraught mass flux +'dmfa' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 28 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (2) -'rdsp2' = { +#Time-integrated updraught detrainment rate +'udra' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 7 ; + parameterCategory = 3 ; + parameterNumber = 29 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (3) -'rdsp3' = { +#Time-integrated downdraught detrainment rate +'ddra' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 30 ; + typeOfStatisticalProcessing = 1 ; } -#Parcel lifted index (to 500 hPa) -'pli' = { +#Time-integrated total precipitation flux +'tpfa' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; } -#Temperature anomaly -'ta' = { +#Time-integrated turbulent diffusion coefficient for heat +'tdcha' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Pressure anomaly -'presa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 8 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 1 ; } -#Geopotential height anomaly -'gpa' = { +#Time-integrated temperature tendency due to parametrisations +'ttpha' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } -#Wave spectra (1) -'wvsp1' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Wave spectra (2) -'wvsp2' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } -#Wave spectra (3) -'wvsp3' = { - discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 2 ; + parameterNumber = 26 ; + typeOfStatisticalProcessing = 1 ; } -#Sigma coordinate vertical velocity -'sgcvv' = { +#Time-integrated specific humidity tendency due to parametrisations +'qtpha' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 108 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute vorticity -'absv' = { +#Time-integrated eastward wind tendency due to parametrisations +'utpha' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 39 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute divergence -'absd' = { +#Time-integrated northward wind tendency due to parametrisations +'vtpha' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 11 ; + parameterNumber = 40 ; + typeOfStatisticalProcessing = 1 ; } -#Vertical u-component shear -'vucsh' = { +#Time-mean surface net radiation flux (SW and LW) +'msnrf' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 15 ; + parameterCategory = 19 ; + parameterNumber = 46 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical v-component shear -'vvcsh' = { +#Surface runoff +'sro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Nitrogen dioxide mass mixing ratio +'no2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + is_chemical = 1 ; } -#U-component of current -'ucurr' = { - discipline = 10 ; - parameterCategory = 1 ; +#Sulphur dioxide mass mixing ratio +'so2' = { + discipline = 0 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 8 ; + is_chemical = 1 ; } -#V-component of current -'vcurr' = { - discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Carbon monoxide mass mixing ratio +'co' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 4 ; + is_chemical = 1 ; } -#Precipitable water -'pwat' = { +#Ozone mass mixing ratio (full chemistry scheme) +'go3' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + is_chemical = 1 ; } -#Saturation deficit -'satd' = { +#Nitrogen dioxide mass mixing ratio difference +'no2diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Precipitation rate -'prate' = { +#Sulphur dioxide mass mixing ratio difference +'so2diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Thunderstorm probability -'tstm' = { +#Carbon monoxide mass mixing ratio difference +'codiff' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 4 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Convective precipitation (water) -'acpcp' = { +#Ozone mass mixing ratio difference (full chemistry scheme) +'go3diff' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Mixed layer depth -'mld' = { +#Convective inhibition +'cin' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 3 ; + parameterCategory = 7 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Transient thermocline depth -'tthdp' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 2 ; +#Orography +'orog' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; } -#Main thermocline anomaly -'mtha' = { +#Friction velocity +'zust' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; } -#Best lifted index (to 500 hPa) -'bli' = { +#Mean 2 metre temperature +'mean2t' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 1 ; - } -#Soil moisture content -'ssw' = { - discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Salinity -'s' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; +#Lake total depth +'dl' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Density -'den' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 10 ; +#Lake mix-layer temperature +'lmlt' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Direction of ice drift -'diced' = { - discipline = 10 ; +#Lake mix-layer depth +'lmld' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Speed of ice drift -'siced' = { - discipline = 10 ; +#Lake bottom temperature +'lblt' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 162 ; + typeOfSecondFixedSurface = 255 ; } -#Ice divergence -'iced' = { - discipline = 10 ; +#Lake total layer temperature +'ltlt' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Direction of swell waves -'swdir' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Lake shape factor +'lshf' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Secondary wave direction -'dirsw' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Lake ice surface temperature +'lict' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; } -#Net short-wave radiation flux (surface) -'nswrs' = { +#Lake ice total depth +'licd' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; } -#Global radiation flux -'grad' = { +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 3 ; + parameterCategory = 19 ; + parameterNumber = 44 ; } -#Radiance (with respect to wave number) -'lwrad' = { +#Duct base height +'dctb' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 41 ; } -#Radiance (with respect to wave length) -'swrad' = { +#Trapping layer base height +'tplb' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 6 ; + parameterCategory = 19 ; + parameterNumber = 42 ; } -#Wind mixing energy -'wmixe' = { +#Trapping layer top height +'tplt' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 19 ; + parameterCategory = 19 ; + parameterNumber = 43 ; } -#10 metre wind gust of at least 15 m/s -'10fgg15' = { +#Soil moisture +'sm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#10 metre u-component of neutral wind +'u10n' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 56 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 15 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } -#10 metre wind gust of at least 20 m/s -'10fgg20' = { +#10 metre v-component of neutral wind +'v10n' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 57 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Convective inhibition -'cin' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Orography -'orog' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - } -#Soil moisture -'sm' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 22 ; } #Soil temperature 'st' = { @@ -10782,4 +10752,34 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; + } +#U-component surface stokes drift +'ust' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 21 ; + } +#V-component surface stokes drift +'vst' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#100 metre U wind component +'100u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'100v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; } diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 2a197be6f..77cd1af91 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -23,6 +23,30 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; } +#Total precipitation of at least 10 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 10 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Total precipitation of at least 20 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } #Total precipitation of at least 40 mm '%' = { discipline = 0 ; @@ -107,6 +131,24 @@ scaleFactorOfLowerLimit = -2 ; probabilityType = 3 ; } +#Stream function +'m**2 s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + } +#Velocity potential +'m**2 s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + } +#Potential temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } #Wind speed 'm s**-1' = { discipline = 0 ; @@ -230,6 +272,12 @@ parameterCategory = 2 ; parameterNumber = 6 ; } +#Pressure +'Pa' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + } #Downward UV radiation at the surface 'J m**-2' = { discipline = 0 ; @@ -246,6 +294,20 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Convective available potential energy +'J kg**-1' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Potential vorticity +'K m**2 kg**-1 s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + } #Leaf area index, low vegetation 'm**2 m**-2' = { discipline = 2 ; @@ -299,6 +361,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Maximum temperature at 2 metres in the last 6 hours +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 2 ; + lengthOfTimeRange = 6 ; + } +#Minimum temperature at 2 metres in the last 6 hours +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 3 ; + lengthOfTimeRange = 6 ; + } #Surface emissivity 'Proportion' = { discipline = 2 ; @@ -306,6 +392,57 @@ parameterNumber = 62 ; typeOfFirstFixedSurface = 1 ; } +#Geopotential +'m**2 s**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#U component of wind +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + } +#V component of wind +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Specific humidity +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Surface pressure +'Pa' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } +#Vertical velocity +'Pa s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + } +#Total column water +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column vertically-integrated water vapour 'kg m**-2' = { discipline = 0 ; @@ -314,6 +451,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vorticity (relative) +'s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 12 ; + } #Boundary layer dissipation 'J m**-2' = { discipline = 0 ; @@ -321,6 +464,22 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Surface sensible heat flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface latent heat flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Charnock 'Numeric' = { discipline = 10 ; @@ -343,6 +502,31 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Mean sea level pressure +'Pa' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 101 ; + } +#Divergence +'s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + } +#Geopotential height +'gpm' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Relative humidity +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } #Boundary layer height 'm' = { discipline = 0 ; @@ -373,6 +557,42 @@ parameterCategory = 3 ; parameterNumber = 22 ; } +#10 metre U wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#10 metre V wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#2 metre dewpoint temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface short-wave (solar) radiation downwards 'J m**-2' = { discipline = 0 ; @@ -381,6 +601,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Land-sea mask +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + } #Surface roughness (climatological) 'm' = { discipline = 2 ; @@ -397,6 +624,22 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface net short-wave (solar) radiation +'J m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Surface net long-wave (thermal) radiation +'J m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Top net short-wave (solar) radiation 'J m**-2' = { discipline = 0 ; @@ -405,6 +648,14 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Top net long-wave (thermal) radiation +'J m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time-integrated eastward turbulent surface stress 'N m**-2 s' = { discipline = 0 ; @@ -421,10 +672,24 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Eastward gravity wave surface stress -'N m**-2 s' = { +#Sunshine duration +'s' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 6 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Brightness temperature +'K' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 4 ; + } +#Eastward gravity wave surface stress +'N m**-2 s' = { + discipline = 0 ; + parameterCategory = 3 ; parameterNumber = 16 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; @@ -470,6 +735,15 @@ parameterCategory = 14 ; parameterNumber = 1 ; } +#10 metre wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Top net short-wave (solar) radiation, clear sky 'J m**-2' = { discipline = 0 ; @@ -555,6 +829,13 @@ typeOfFirstFixedSurface = 1 ; typeOfGeneratingProcess = 9 ; } +#Skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + } #Temperature of snow layer 'K' = { discipline = 2 ; @@ -4618,6110 +4899,5799 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Total snowfall -'m' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Total snow precipitation -'kg m**-2' = { +#Latent heat net flux +'W m**-2' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Total column integrated ozone -'DU' = { +#Heat index +'K' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#2 metre relative humidity -'%' = { +#Wind chill factor +'K' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Apparent temperature +#Minimum dew point depression 'K' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 21 ; - } -#Haines Index -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 2 ; + parameterNumber = 14 ; } -#Cloud cover -'%' = { +#Snow phase change heat flux +'W m**-2' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 22 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Evaporation -'kg m**-2' = { +#Vapor pressure +'Pa' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 4 ; } -#10 metre wind direction -'Degree true' = { +#Large scale precipitation (non-convective) +'kg m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 1 ; + parameterNumber = 9 ; } -#Direct short wave radiation flux -'W m**-2' = { +#Snowfall rate water equivalent +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 12 ; } -#Diffuse short wave radiation flux -'W m**-2' = { +#Convective snow +'kg m**-2' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 1 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours +#Large scale snow 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; + parameterNumber = 15 ; } -#Evaporation in the last 24 hours -'kg m**-2' = { +#Snow age +'day' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + parameterNumber = 17 ; } -#Fraction of snow cover -'Proportion' = { +#Absolute humidity +'kg m**-3' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 121 ; + parameterNumber = 18 ; } -#Clear air turbulence (CAT) -'m**2/3 s**-1' = { +#Precipitation type +'code table (4.201)' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 29 ; + parameterCategory = 1 ; + parameterNumber = 19 ; } -#Mountain wave turbulence (eddy dissipation rate) -'m**2/3 s**-1' = { +#Integrated liquid water +'kg m**-2' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 28 ; + parameterCategory = 1 ; + parameterNumber = 20 ; } -#Specific rain water content (convective) +#Condensate 'kg kg**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 144 ; + parameterNumber = 21 ; } -#Specific snow water content (convective) +#Cloud mixing ratio 'kg kg**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 145 ; - } -#Glacier mask -'Proportion' = { - discipline = 2 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterNumber = 22 ; } -#Precipitation type (most severe) in the last 1 hour -'code table (4.201)' = { +#Ice water mixing ratio +'kg kg**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 1 ; + parameterNumber = 23 ; } -#Precipitation type (most severe) in the last 3 hours -'code table (4.201)' = { +#Rain mixing ratio +'kg kg**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 3 ; + parameterNumber = 24 ; } -#Precipitation type (most frequent) in the last 1 hour -'code table (4.201)' = { +#Snow mixing ratio +'kg kg**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 1 ; + parameterNumber = 25 ; } -#Precipitation type (most frequent) in the last 3 hours -'code table (4.201)' = { +#Horizontal moisture convergence +'kg kg**-1 s**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 3 ; + parameterNumber = 26 ; } -#Precipitation type (most severe) in the last 6 hours -'code table (4.201)' = { +#Maximum relative humidity +'%' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 100 ; - lengthOfTimeRange = 6 ; + parameterNumber = 27 ; } -#Precipitation type (most frequent) in the last 6 hours -'code table (4.201)' = { +#Maximum absolute humidity +'kg m**-3' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 101 ; - lengthOfTimeRange = 6 ; - } -#Soil temperature -'K' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; + parameterNumber = 28 ; } -#Downward short-wave radiation flux, clear sky -'W m**-2' = { +#Total snowfall +'m' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 52 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Upward short-wave radiation flux, clear sky -'W m**-2' = { +#Precipitable water category +'code table (4.202)' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; + parameterCategory = 1 ; + parameterNumber = 30 ; } -#Downward long-wave radiation flux, clear sky -'W m**-2' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 8 ; - } -#Soil heat flux -'W m**-2' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 26 ; +#Hail +'m' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 31 ; } -#Percolation rate -'kg m**-2 s**-1' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Graupel (snow pellets) +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Soil depth -'m' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 27 ; +#Categorical rain +'(Code table 4.222)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 33 ; } -#Soil moisture -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; +#Categorical freezing rain +'(Code table 4.222)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 34 ; } -#Accumulated surface upward short-wave radiation flux, clear sky -'J m**-2' = { +#Categorical ice pellets +'(Code table 4.222)' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 1 ; + parameterNumber = 35 ; } -#Percolation -'kg m**-2' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 177 ; - typeOfStatisticalProcessing = 1 ; +#Categorical snow +'(Code table 4.222)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 36 ; } -#Evapotranspiration rate +#Convective precipitation rate 'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 37 ; } -#Time-mean evapotranspiration rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Horizontal moisture divergence +'kg kg**-1 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 38 ; } -#Potential evapotranspiration rate -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; +#Percent frozen precipitation +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 39 ; } -#Time-integrated potential evapotranspiration rate in the last 24h +#Potential evaporation 'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; + discipline = 0 ; + parameterCategory = 1 ; parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Time-mean potential evapotranspiration rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Snow cover +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 42 ; } -#Time-mean volumetric soil moisture -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Rain fraction of total cloud water +'Proportion' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 43 ; } -#Water runoff and drainage rate -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; +#Rime factor +'Numeric' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 44 ; } -#Time-integrated water runoff and drainage rate in the last 24h +#Total column integrated rain 'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 45 ; } -#Time-mean water runoff and drainage rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; +#Total column integrated snow +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 46 ; } -#Time-mean snow depth water equivalent +#Large scale water precipitation (non-convective) 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterNumber = 47 ; } -#Time-mean skin temperature -'K' = { +#Convective water precipitation +'kg m**-2' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; + parameterCategory = 1 ; + parameterNumber = 48 ; } -#Snow melt rate -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; +#Total water precipitation +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 49 ; } -#Time-integrated snow melt rate in the last 24h +#Total snow precipitation 'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; } -#Cloudy brightness temperature -'K' = { - discipline = 3 ; +#Total column water (Vertically integrated total water (vapour + cloud water/ice)) +'kg m**-2' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 14 ; + parameterNumber = 51 ; } -#Clear-sky brightness temperature -'K' = { - discipline = 3 ; +#Total precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 15 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; } -#Cloudy reflectance -'%' = { - discipline = 3 ; +#Total snowfall rate water equivalent +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 31 ; + parameterNumber = 53 ; } -#Clear reflectance -'%' = { - discipline = 3 ; +#Large scale precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 32 ; - } -#Scaled radiance -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 0 ; + parameterNumber = 54 ; } -#Scaled albedo -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Total snowfall rate +'m s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; } -#Scaled brightness temperature -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Scaled precipitable water -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Scaled lifted index -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 4 ; - } -#Scaled cloud top pressure -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Scaled skin temperature -'Numeric' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - } -#Cloud mask -'Code table 4.217' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 7 ; - } -#Pixel scene type -'Code table 4.218' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 8 ; - } -#Fire detection indicator -'Code table 4.223' = { - discipline = 3 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Forest fire weather index (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 5 ; - } -#Fine fuel moisture code (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 6 ; - } -#Duff moisture code (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 7 ; - } -#Drought code (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 8 ; - } -#Initial fire spread index (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - } -#Fire buildup index (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 10 ; - } -#Fire daily severity rating (as defined by the Canadian Forest Service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - } -#Cloudy radiance (with respect to wave number) -'W m**-1 sr**-1' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } -#Clear-sky radiance (with respect to wave number) -'W m**-1 sr**-1' = { - discipline = 3 ; +#Convective snowfall rate +'m s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 17 ; + parameterNumber = 58 ; } -#Wind speed +#Large scale snowfall rate 'm s**-1' = { - discipline = 3 ; + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 19 ; + parameterNumber = 59 ; } -#Aerosol optical thickness at 0.635 um -'dimensionless' = { - discipline = 3 ; +#Water equivalent of accumulated snow depth (deprecated) +'kg m**-2' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 20 ; + parameterNumber = 13 ; } -#Aerosol optical thickness at 0.810 um -'dimensionless' = { - discipline = 3 ; +#Rain precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 21 ; + parameterNumber = 65 ; } -#Aerosol optical thickness at 1.640 um -'dimensionless' = { - discipline = 3 ; +#Snow precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 22 ; + parameterNumber = 66 ; } -#Angstrom coefficient -'dimensionless' = { - discipline = 3 ; +#Freezing rain precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 23 ; - } -#Keetch-Byram drought index -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterNumber = 67 ; } -#Drought factor (as defined by the Australian forest service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 13 ; +#Ice pellets precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 68 ; } -#Rate of spread (as defined by the Australian forest service) +#Maximum wind speed 'm s**-1' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - } -#Fire danger index (as defined by the Australian forest service) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - } -#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 16 ; - } -#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) -'Numeric' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 17 ; - } -#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'%' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - } -#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) -'J m**-2' = { - discipline = 2 ; - parameterCategory = 4 ; - parameterNumber = 19 ; - } -#Volumetric soil ice -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; } -#Time integral of total solid precipitation flux -'kg m**-2' = { +#Wind speed (gust) +'m s**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 128 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; - typeOfStatisticalProcessing = 1 ; + parameterCategory = 2 ; + parameterNumber = 22 ; } -#10 metre eastward wind gust since previous post-processing +#u-component of wind (gust) 'm s**-1' = { discipline = 0 ; parameterCategory = 2 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#10 metre northward wind gust since previous post-processing +#v-component of wind (gust) 'm s**-1' = { discipline = 0 ; parameterCategory = 2 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 103 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; } -#Fog -'%' = { +#Vertical speed shear +'s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 255 ; + parameterCategory = 2 ; + parameterNumber = 25 ; } -#Time-integrated eastward turbulent surface stress due to orographic form drag -'N m**-2 s' = { +#Horizontal momentum flux +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 64 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 26 ; } -#Time-integrated northward turbulent surface stress due to orographic form drag -'N m**-2 s' = { +#U-component storm motion +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 65 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 27 ; } -#Time-integrated eastward turbulent surface stress due to surface roughness -'N m**-2 s' = { +#V-component storm motion +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 28 ; } -#Time-integrated northward turbulent surface stress due to surface roughness -'N m**-2 s' = { +#Drag coefficient +'Numeric' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 67 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 29 ; } -#Saturation specific humidity with respect to water -'kg m**-3' = { +#Frictional velocity +'m s**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 168 ; + parameterCategory = 2 ; + parameterNumber = 30 ; } -#Total column integrated saturation specific humidity with respect to water -'kg m**-2' = { +#Pressure reduced to MSL +'Pa' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 169 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 3 ; + parameterNumber = 1 ; } -#Universal thermal climate index -'K' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 0 ; +#Altimeter setting +'Pa' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 11 ; } -#Mean radiant temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 1 ; +#Thickness +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Fraction of Malaria cases -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Pressure altitude +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 13 ; } -#Malaria circumsporozoite protein ratio -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density altitude +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 14 ; } -#Plasmodium falciparum entomological inoculation rate -'Bites per day per person' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#5-wave geopotential height +'gpm' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 15 ; } -#Human bite rate by anopheles vectors -'Bites per day per person' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Zonal flux of gravity wave stress +'N m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 16 ; } -#Malaria immunity ratio -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Meridional flux of gravity wave stress +'N m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 17 ; } -#Falciparum parasite ratio -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 5 ; +#5-wave geopotential height anomaly +'gpm' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 19 ; } -#Detectable falciparum parasite ratio (after day 10) -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Net short-wave radiation flux (top of atmosphere) +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; } -#Anopheles vector to host ratio -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; +#Downward short-wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; parameterNumber = 7 ; } -#Anopheles vector density -'Number m**-2' = { - discipline = 20 ; - parameterCategory = 1 ; +#Upward short-wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; parameterNumber = 8 ; } -#Fraction of malarial vector reproductive habitat -'Fraction' = { - discipline = 20 ; - parameterCategory = 1 ; +#Net short wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; parameterNumber = 9 ; } -#Population density -'Person m**-2' = { - discipline = 20 ; - parameterCategory = 2 ; +#Photosynthetically active radiation +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Net short-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } +#Downward UV radiation +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 12 ; + } +#UV index (under clear sky) +'Numeric' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + } +#UV index +'Numeric' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 51 ; + } +#Net long wave radiation flux (surface) +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 0 ; } -#Wet bulb globe temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Net long wave radiation flux (top of atmosphere) +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; } -#Globe temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; +#Downward long-wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 3 ; } -#Humidex -'K' = { - discipline = 20 ; - parameterCategory = 0 ; +#Upward long-wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 4 ; } -#Effective temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; +#Net long wave radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 5 ; } -#Normal effective temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; +#Net long-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; parameterNumber = 6 ; } -#Standard effective temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 7 ; - } -#Physiological equivalent temperature -'K' = { - discipline = 20 ; - parameterCategory = 0 ; - parameterNumber = 8 ; +#Cloud Ice +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 0 ; } -#Saturation water vapour pressure -'Pa' = { +#Cloud water +'kg m**-2' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 32 ; + parameterCategory = 6 ; + parameterNumber = 6 ; } -#Wet-bulb potential temperature -'K' = { +#Cloud amount +'%' = { discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 6 ; + parameterNumber = 7 ; } -#Sea ice thickness -'m' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice area fraction -'Fraction' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud type +'code table (4.203)' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 8 ; } -#Eastward sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Thunderstorm maximum tops +'m' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 9 ; } -#Northward sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Thunderstorm coverage +'code table (4.204)' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 10 ; } -#Sea ice albedo -'Fraction' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Cloud top +'m' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 12 ; } -#Sea ice surface temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ceiling +'m' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 13 ; } -#Sea ice growth -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Non-convective cloud cover +'%' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 14 ; } -#Sea ice volume per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; +#Cloud work function +'J kg**-1' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow volume over sea ice per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; +#Convective cloud efficiency +'Proportion' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Vertically averaged sea ice temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Snow temperature over sea ice -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice temperature at the sea ice and snow interface -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Underside ice temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice heat content -'J m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; +#Total condensate +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Snow heat content over sea ice -'J m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; +#Total column-integrated cloud water +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice freeboard thickness -'m' = { - discipline = 10 ; - parameterCategory = 2 ; +#Total column-integrated cloud ice +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; } -#Sea ice melt pond fraction -'Proportion' = { - discipline = 10 ; - parameterCategory = 2 ; +#Total column-integrated condensate +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond depth -'m' = { - discipline = 10 ; - parameterCategory = 2 ; +#Ice fraction of total condensate +'Proportion' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice melt pond volume per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Sea ice fraction tendency due to parameterization -'s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; +#Cloud ice mixing ratio +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; +#Sunshine +'Numeric' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; +#Horizontal extent of cumulonimbus (CB) +'%' = { + discipline = 0 ; + parameterCategory = 6 ; parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea ice temperature +#K index 'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 2 ; } -#Sea surface practical salinity -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 3 ; +#KO index +'K' = { + discipline = 0 ; + parameterCategory = 7 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface temperature +#Total totals index 'K' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 4 ; } -#Depth of 14 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Sweat index +'Numeric' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 5 ; } -#Depth of 17 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Storm relative helicity +'m**2 s**-2' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 8 ; } -#Depth of 20 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Energy helicity index +'Numeric' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 9 ; } -#Depth of 26 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Surface lifted index +'K' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 10 ; } -#Depth of 28 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Best (4-layer) lifted index +'K' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 11 ; } -#Barotropic stream function -'m**3 s**-1' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Aerosol type +'code table (4.205)' = { + discipline = 0 ; + parameterCategory = 13 ; + parameterNumber = 0 ; } -#Surface downward heat flux -'W m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Total ozone +'DU' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 0 ; } -#Northward surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Total column integrated ozone +'DU' = { + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Eastward surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Base spectrum width +'m s**-1' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 0 ; } -#Y-component of surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Base reflectivity +'dB' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 1 ; } -#X-component of surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Base radial velocity +'m s**-1' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 2 ; } -#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Vertically-integrated liquid +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 3 ; } -#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Layer-maximum base reflectivity +'dB' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 4 ; } -#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Precipitation +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 15 ; + parameterNumber = 5 ; } -#Ocean mixed layer depth defined by temperature 0.2 C -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Air concentration of Caesium 137 +'Bq m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 0 ; } -#Ocean mixed layer depth defined by temperature 0.5 C -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Air concentration of Iodine 131 +'Bq m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 1 ; } -#Average sea water practical salinity in the upper 300 m -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Air concentration of radioactive pollutant +'Bq m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 2 ; } -#Average sea water practical salinity in the upper 700 m -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Ground deposition of Caesium 137 +'Bq m**-2' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 3 ; } -#Total column average sea water practical salinity -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Ground deposition of Iodine 131 +'Bq m**-2' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 4 ; } -#Vertically-integrated heat content in the upper 300 m -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Ground deposition of radioactive pollutant +'Bq m**-2' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 5 ; } -#Vertically-integrated heat content in the upper 700 m -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Time-integrated air concentration of caesium pollutant +'Bq s m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 6 ; } -#Total column of heat content -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-integrated air concentration of iodine pollutant +'Bq s m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 7 ; } -#Sea surface height +#Time-integrated air concentration of radioactive pollutant +'Bq s m**-3' = { + discipline = 0 ; + parameterCategory = 18 ; + parameterNumber = 8 ; + } +#Volcanic ash +'code table (4.206)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 4 ; + } +#Icing top 'm' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 5 ; } -#Steric change in sea surface height +#Icing base 'm' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 6 ; } -#Halosteric change in sea surface height +#Icing +'code table (4.207)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 7 ; + } +#Turbulence top 'm' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 8 ; } -#Thermosteric change in sea surface height +#Turbulence base 'm' = { - discipline = 10 ; - parameterCategory = 3 ; + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#Thermocline depth -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Bottom pressure equivalent height -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Net surface upward water flux -'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulence +'code table (4.208)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 10 ; } -#Fresh water flux into sea water (from rivers) -'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Turbulent kinetic energy +'J kg**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 11 ; } -#Virtual salt flux into sea water -'g kg**-1 m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Planetary boundary layer regime +'code table (4.209)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 12 ; } -#Heat flux correction -'W m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail intensity +'code table (4.210)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 13 ; } -#Fresh water flux correction -'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail engine type +'code table (4.211)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 14 ; } -#Virtual salt flux correction -'g kg**-1 m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Contrail top +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 15 ; } -#Turbocline depth (kz=5e-4) +#Contrail base 'm' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 16 ; } -#Y-component of surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; +#Maximum snow albedo +'%' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Snow free albedo +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 18 ; } -#Northward surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Icing +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 20 ; } -#Eastward surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#In-cloud turbulence +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 21 ; } -#Heat Content surface to 26C isotherm -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; +#Relative clear air turbulence (RCAT) +'%' = { + discipline = 0 ; + parameterCategory = 19 ; parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; } -#Sea surface height tendency due to parameterization -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Supercooled large droplet probability (see Note 4) +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 23 ; } -#Sea surface height with inverse barometer correction -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; +#Arbitrary text string +'CCITTIA5' = { + discipline = 0 ; + parameterCategory = 190 ; + parameterNumber = 0 ; } -#Average sea water potential temperature in the upper 300m -'K' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Seconds prior to initial reference time (defined in Section 1) +'s' = { + discipline = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Sea surface salinity -'kg kg**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Vertically integrated sea water practical salinity in the upper 300 m -'g kg**-1 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Vertically integrated sea water practical salinity in the upper 700 m -'g kg**-1 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; +#Remotely sensed snow cover +'(code table 4.215)' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 2 ; } -#Total column vertically integrated sea water practical salinity -'g kg**-1 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Elevation of snow covered terrain +'(code table 4.216)' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Sea water practical salinity -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Snow water equivalent percent of normal +'%' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Sea water potential temperature -'K' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Baseflow-groundwater runoff +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Sea water sigma theta -'kg m**-3' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Storm surface runoff +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Y-component of sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#X-component of sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th +'%' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 1 ; } -#Northward sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Probability of 0.01 inch of precipitation (POP) +'%' = { + discipline = 1 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Eastward sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Vegetation +'%' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Upward sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Water runoff +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Sea water potential temperature tendency due to newtonian relaxation -'K s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Evapotranspiration +'kg**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Sea water salinity tendency due to newtonian relaxation -'g kg**-1 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Model terrain height +'m' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Sea water temperature tendency due to parameterization -'K s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Land use +'code table (4.212)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 8 ; } -#Sea water salinity tendency due to parameterization -'g kg**-1 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Ground heat flux +'W m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Eastward sea water velocity tendency due to parameterization -'m s**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Moisture availability +'%' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Northward sea water velocity tendency due to parameterization -'m s**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Exchange coefficient +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 12 ; } -#Sea water temperature tendency due to direct bias correction -'K s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Plant canopy surface water +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Sea water salinity tendency due to direct bias correction -'g kg**-1 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Blackadar mixing length scale +'m' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Sea water salinity -'kg kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; +#Canopy conductance +'m s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Net short wave radiation rate at sea surface -'W m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Minimal stomatal resistance +'s m**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 16 ; } -#Wind stress at sea surface -'N m**-2' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Solar parameter in canopy conductance +'Proportion' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 18 ; } -#Wind speed at 10m above sea surface -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Temperature parameter in canopy conductance +'Proportion' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 19 ; } -#Neutral drag coefficient at 10m above sea surface -'dimensionless' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Soil moisture parameter in canopy conductance +'Proportion' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Total precipitation rate at sea surface -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Humidity parameter in canopy conductance +'Proportion' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Snow precipitation rate at sea surface -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Column-integrated soil water +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 23 ; } -#Eastward of wind stress over sea ice -'N m**-2' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Heat flux +'W m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 24 ; } -#Northward of wind stress over sea ice -'N m**-2' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; } -#U-component of wind stress over sea ice -'N m**-2' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Volumetric wilting point +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 27 ; } -#V-component of wind stress over sea ice -'N m**-2' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Number of soil layers in root zone +'Numeric' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Time-mean sea ice thickness -'m' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Liquid volumetric soil moisture (non-frozen) +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Time-mean sea ice area fraction -'Fraction' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric transpiration stress-onset (soil moisture) +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 11 ; } -#Time-mean eastward sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Transpiration stress-onset (soil moisture) +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 12 ; } -#Time-mean northward sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Volumetric direct evaporation cease (soil moisture) +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 13 ; } -#Time-mean sea ice albedo -'Fraction' = { - discipline = 10 ; - parameterCategory = 2 ; +#Direct evaporation cease (soil moisture) +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice surface temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Soil porosity +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 15 ; } -#Time-mean sea ice growth +#Volumetric saturation of soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + } +#Saturation of soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + } +#Estimated precipitation +'kg m**-2' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 0 ; + } +#Instantaneous rain rate +'kg m**-2 s**-1' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Cloud top height +'m' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 2 ; + } +#Cloud top height quality indicator +'Code table 4.219' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 3 ; + } +#Estimated u component of wind 'm s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Time-mean sea ice volume per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Estimated v component of wind +'m s**-1' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Time-mean snow volume over sea ice per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Number of pixels used +'Numeric' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 6 ; } -#Time-mean vertically averaged sea ice temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; +#Solar zenith angle +'Degree' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 7 ; + } +#Relative azimuth angle +'Degree' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 8 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow temperature over sea ice -'K' = { - discipline = 10 ; - parameterCategory = 2 ; +#Reflectance in 0.6 micron channel +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 9 ; + } +#Reflectance in 0.8 micron channel +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 10 ; + } +#Reflectance in 1.6 micron channel +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 11 ; + } +#Reflectance in 3.9 micron channel +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 12 ; + } +#Atmospheric divergence +'s**-1' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 13 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean sea ice temperature at the sea ice and snow interface -'K' = { +#Direction of wind waves +'Degree true' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 175 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Time-mean underside ice temperature -'K' = { +#Primary wave direction +'Degree true' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 176 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 0 ; + parameterNumber = 10 ; } -#Time-mean sea ice heat content -'J m**-2' = { +#Primary wave mean period +'s' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 0 ; + parameterNumber = 11 ; } -#Time-mean snow heat content over sea ice -'J m**-2' = { +#Secondary wave mean period +'s' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 173 ; - typeOfSecondFixedSurface = 175 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 0 ; + parameterNumber = 13 ; } -#Time-mean sea ice freeboard thickness -'m' = { +#Current direction +'Degree true' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = 0 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 1 ; + parameterNumber = 0 ; } -#Time-mean sea ice melt pond fraction -'Proportion' = { +#Current speed +'m s**-1' = { discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + } +#Geometric vertical velocity +'m s**-1' = { + discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean sea ice melt pond depth -'m' = { +#Seconds prior to initial reference time (defined in Section 1) +'s' = { discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean sea ice melt pond volume per unit area -'m**3 m**-2' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 188 ; - typeOfSecondFixedSurface = 189 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterCategory = 191 ; + parameterNumber = 0 ; } -#Time-mean sea ice fraction tendency due to parameterization -'s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#2 metre relative humidity +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Time-mean X-component of sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Apparent temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 21 ; } -#Time-mean Y-component of sea ice velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Haines Index +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 2 ; } -#Time-mean sea ice temperature -'K' = { - discipline = 10 ; - parameterCategory = 2 ; - parameterNumber = 8 ; - typeOfStatisticalProcessing = 0 ; +#Cloud cover +'%' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 22 ; } -#Time-mean sea surface practical salinity -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evaporation +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea surface temperature -'K' = { - discipline = 10 ; - parameterCategory = 3 ; +#10 metre wind direction +'Degree true' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean depth of 14 C isotherm -'m' = { - discipline = 10 ; +#Direct short wave radiation flux +'W m**-2' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 28715 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean depth of 17 C isotherm -'m' = { - discipline = 10 ; +#Diffuse short wave radiation flux +'W m**-2' = { + discipline = 0 ; parameterCategory = 4 ; parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29015 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean depth of 20 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29315 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evaporation in the last 6 hours +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; } -#Time-mean depth of 26 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 29915 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evaporation in the last 24 hours +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean depth of 28 C isotherm -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 20 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 30115 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Fraction of snow cover +'Proportion' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 121 ; } -#Time-mean barotropic stream function -'m**3 s**-1' = { - discipline = 10 ; - parameterCategory = 191 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Clear air turbulence (CAT) +'m**2/3 s**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; } -#Time-mean surface downward heat flux -'W m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Mountain wave turbulence (eddy dissipation rate) +'m**2/3 s**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; } -#Time-mean northward surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific rain water content (convective) +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 144 ; } -#Time-mean eastward surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Specific snow water content (convective) +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 145 ; } -#Time mean Y-component of surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Glacier mask +'Proportion' = { + discipline = 2 ; + parameterCategory = 5 ; + parameterNumber = 0 ; } -#Time-mean X-component of surface stress -'N m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 1 hour +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 1 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 1 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 3 hours +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 3 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 3 ; - scaleFactorOfFirstFixedSurface = 2 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 1 hour +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 1 ; } -#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 169 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 125 ; - scaleFactorOfFirstFixedSurface = 3 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 3 hours +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 3 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.2 C -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most severe) in the last 6 hours +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 100 ; + lengthOfTimeRange = 6 ; } -#Time-mean ocean mixed layer depth defined by temperature 0.5 C -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 170 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 1 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Precipitation type (most frequent) in the last 6 hours +'code table (4.201)' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 19 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 101 ; + lengthOfTimeRange = 6 ; } -#Time-mean average sea water practical salinity in the upper 300 m -'g kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; +#Soil temperature +'K' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; } -#Time-mean average sea water practical salinity in the upper 700 m -'g kg**-1' = { - discipline = 10 ; +#Downward short-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 52 ; } -#Time-mean total column average sea water practical salinity -'g kg**-1' = { - discipline = 10 ; +#Upward short-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 53 ; } -#Time-mean vertically-integrated heat content in the upper 300 m -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; +#Downward long-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 8 ; } -#Time-mean vertically-integrated heat content in the upper 700 m +#Soil heat flux +'W m**-2' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 26 ; + } +#Percolation rate +'kg m**-2 s**-1' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + } +#Soil depth +'m' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + } +#Soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + } +#Accumulated surface upward short-wave radiation flux, clear sky 'J m**-2' = { - discipline = 10 ; + discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean total column heat content -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Percolation +'kg m**-2' = { + discipline = 1 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 177 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean sea surface height -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Evapotranspiration rate +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; } -#Time-mean steric change in sea surface height -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean evapotranspiration rate in the last 24h +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean halosteric change in sea surface height -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Potential evapotranspiration rate +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; } -#Time-mean thermosteric change in sea surface height -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated potential evapotranspiration rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean thermocline depth -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean potential evapotranspiration rate in the last 24h +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean bottom pressure equivalent height -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean volumetric soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean net surface upward water flux +#Water runoff and drainage rate 'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; } -#Time-mean fresh water flux into sea water (from rivers) +#Time-integrated water runoff and drainage rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; + } +#Time-mean water runoff and drainage rate in the last 24h 'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 30 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean virtual salt flux into sea water -'g kg**-1 m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 32 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean snow depth water equivalent +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean heat flux correction -'W m**-2' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Time-mean skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; } -#Time-mean fresh water flux correction +#Snow melt rate 'kg m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 31 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; } -#Time-mean virtual salt flux correction -'g kg**-1 m**-2 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 33 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Time-integrated snow melt rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; } -#Time-mean turbocline depth (kz=5e-4) -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 171 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 5 ; - scaleFactorOfFirstFixedSurface = 4 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean Y-component of surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Forecast albedo +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 1 ; } -#Time-mean X-component of surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloudy brightness temperature +'K' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 14 ; } -#Time-mean northward surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; +#Clear-sky brightness temperature +'K' = { + discipline = 3 ; + parameterCategory = 1 ; parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean eastward surface sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Cloudy reflectance +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 31 ; } -#Time-mean heat content surface to 26C isotherm -'J m**-2' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 20 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 29915 ; - scaleFactorOfSecondFixedSurface = 2 ; - typeOfStatisticalProcessing = 0 ; +#Clear reflectance +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 32 ; } -#Time-mean sea surface height tendency due to parameterization -'m s**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Scaled radiance +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 0 ; } -#Time-mean sea surface height with inverse barometer correction -'m' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 20 ; - typeOfStatisticalProcessing = 0 ; +#Scaled albedo +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#Time-mean average sea water potential temperature in the upper 300m -'K' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; +#Scaled brightness temperature +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 2 ; } -#Time-mean sea surface salinity -'kg kg**-1' = { - discipline = 10 ; - parameterCategory = 3 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; +#Scaled precipitable water +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 300 m -'g kg**-1 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; +#Scaled lifted index +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Time-mean vertically integrated sea water practical salinity in the upper 700 m -'g kg**-1 m' = { - discipline = 10 ; +#Scaled cloud top pressure +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 5 ; + } +#Scaled skin temperature +'Numeric' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 6 ; + } +#Cloud mask +'Code table 4.217' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 7 ; + } +#Pixel scene type +'Code table 4.218' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 8 ; + } +#Fire detection indicator +'Code table 4.223' = { + discipline = 3 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Forest fire weather index (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 700 ; - scaleFactorOfSecondFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 5 ; } -#Time-mean total column vertically integrated sea water practical salinity -'g kg**-1 m' = { - discipline = 10 ; +#Fine fuel moisture code (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 9 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 6 ; } -#Time-mean sea water practical salinity -'g kg**-1' = { - discipline = 10 ; +#Duff moisture code (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 7 ; } -#Time-mean sea water potential temperature -'K' = { - discipline = 10 ; +#Drought code (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 18 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 8 ; } -#Time-mean sea water sigma theta -'kg m**-3' = { - discipline = 10 ; +#Initial fire spread index (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 9 ; } -#Time-mean Y-component of sea water velocity -'m s**-1' = { - discipline = 10 ; +#Fire buildup index (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 26 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 10 ; } -#Time-mean X-component of sea water velocity -'m s**-1' = { - discipline = 10 ; +#Fire daily severity rating (as defined by the Canadian Forest Service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 25 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 11 ; } -#Time-mean northward sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; +#Cloudy radiance (with respect to wave number) +'W m**-1 sr**-1' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 16 ; } -#Time-mean eastward sea water velocity -'m s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 23 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; +#Clear-sky radiance (with respect to wave number) +'W m**-1 sr**-1' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 17 ; } -#Time-mean upward sea water velocity +#Wind speed 'm s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 27 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 19 ; } -#Time-mean sea water potential temperature tendency due to newtonian relaxation -'K s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; +#Aerosol optical thickness at 0.635 um +'dimensionless' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 20 ; } -#Time-mean sea water salinity tendency due to newtonian relaxation -'g kg**-1 s**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 35 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; +#Aerosol optical thickness at 0.810 um +'dimensionless' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 21 ; } -#Time-mean sea water temperature tendency due to parameterization -'K s**-1' = { - discipline = 10 ; +#Aerosol optical thickness at 1.640 um +'dimensionless' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 22 ; + } +#Angstrom coefficient +'dimensionless' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 23 ; + } +#Keetch-Byram drought index +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 36 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 12 ; } -#Time-mean sea water salinity tendency due to parameterization -'g kg**-1 s**-1' = { - discipline = 10 ; +#Drought factor (as defined by the Australian forest service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 37 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 13 ; } -#Time-mean eastward sea water velocity tendency due to parameterization -'m s**-2' = { - discipline = 10 ; +#Rate of spread (as defined by the Australian forest service) +'m s**-1' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 38 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 14 ; } -#Time-mean northward sea water velocity tendency due to parameterization -'m s**-2' = { - discipline = 10 ; +#Fire danger index (as defined by the Australian forest service) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 15 ; } -#Time-mean sea water temperature tendency due to direct bias correction -'K s**-1' = { - discipline = 10 ; +#Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 16 ; } -#Time-mean sea water salinity tendency due to direct bias correction -'g kg**-1 s**-1' = { - discipline = 10 ; +#Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) +'Numeric' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 17 ; } -#Time-mean sea water salinity -'kg kg**-1' = { - discipline = 10 ; +#Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'%' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 168 ; - typeOfSecondFixedSurface = 168 ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 18 ; } -#Time-mean net short wave radiation rate at sea surface -'W m**-2' = { - discipline = 0 ; +#Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) +'J m**-2' = { + discipline = 2 ; parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 19 ; } -#Time-mean wind stress at sea surface -'N m**-2' = { +#Volumetric soil ice +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 38 ; + } +#Time integral of total solid precipitation flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 1 ; + parameterNumber = 128 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean wind speed at 10m above sea surface +#10 metre eastward wind gust since previous post-processing 'm s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 102 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean neutral drag coefficient at 10m above sea surface -'dimensionless' = { +#10 metre northward wind gust since previous post-processing +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 29 ; - typeOfFirstFixedSurface = 102 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 103 ; typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + typeOfStatisticalProcessing = 2 ; } -#Time-mean total precipitation rate at sea surface -'kg m**-2 s**-1' = { +#Fog +'%' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; + parameterCategory = 6 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; } -#Time-mean snow precipitation rate at sea surface -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-mean eastward of wind stress over sea ice -'N m**-2' = { +#Time-integrated eastward turbulent surface stress due to orographic form drag +'N m**-2 s' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 50 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 64 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean northward of wind stress over sea ice -'N m**-2' = { +#Time-integrated northward turbulent surface stress due to orographic form drag +'N m**-2 s' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 65 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean U-component of wind stress over sea ice -'N m**-2' = { +#Time-integrated eastward turbulent surface stress due to surface roughness +'N m**-2 s' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Time-mean V-component of wind stress over sea ice -'N m**-2' = { +#Time-integrated northward turbulent surface stress due to surface roughness +'N m**-2 s' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 53 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } -#Time-accumulated net short wave radiation at sea surface -'J m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; + parameterNumber = 67 ; + typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Time-accumulated total precipitation at sea surface -'kg m**-2' = { +#Saturation specific humidity with respect to water +'kg m**-3' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 168 ; } -#Time-accumulated snow precipitation at sea surface +#Total column integrated saturation specific humidity with respect to water 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 169 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Virtual temperature +#Universal thermal climate index 'K' = { - discipline = 0 ; + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Mean radiant temperature +'K' = { + discipline = 20 ; parameterCategory = 0 ; parameterNumber = 1 ; } -#Mass density -'kg m**-3' = { - discipline = 0 ; - parameterCategory = 20 ; +#Fraction of Malaria cases +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; parameterNumber = 0 ; } -#Total column vertically-integrated mass density -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 20 ; +#Malaria circumsporozoite protein ratio +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; } -#Mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; +#Plasmodium falciparum entomological inoculation rate +'Bites per day per person' = { + discipline = 20 ; + parameterCategory = 1 ; parameterNumber = 2 ; } -#Emission mass flux -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 255 ; +#Human bite rate by anopheles vectors +'Bites per day per person' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Dry deposition velocity -'m s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; +#Malaria immunity ratio +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 4 ; } -#Wet deposition mass flux -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; +#Falciparum parasite ratio +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Dry deposition mass flux -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; +#Detectable falciparum parasite ratio (after day 10) +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; parameterNumber = 6 ; } -#Sedimentation mass flux -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 11 ; +#Anopheles vector to host ratio +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Volume mixing ratio -'mol mol**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 52 ; +#Anopheles vector density +'Number m**-2' = { + discipline = 20 ; + parameterCategory = 1 ; + parameterNumber = 8 ; } -#Wet deposition mass flux by large-scale precipitation -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; +#Fraction of malarial vector reproductive habitat +'Fraction' = { + discipline = 20 ; + parameterCategory = 1 ; parameterNumber = 9 ; } -#Wet deposition mass flux by convective precipitation -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 10 ; +#Population density +'Person m**-2' = { + discipline = 20 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Emission mass flux from natural sources -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 6 ; +#Wet bulb globe temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 2 ; } -#Emission mass flux from anthropogenic sources -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 4 ; +#Globe temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 3 ; } -#Emission mass flux from elevated anthropogenic sources -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 12 ; +#Humidex +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 4 ; } -#Emission mass flux from surface anthropogenic sources -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 13 ; - } -#Emission from aviation -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 1 ; +#Effective temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 5 ; } -#Emission mass flux from agriculture livestock -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 14 ; +#Normal effective temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Emission mass flux from agriculture soils -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 15 ; +#Standard effective temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 7 ; } -#Emission mass flux from agricultural waste burning -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 16 ; +#Physiological equivalent temperature +'K' = { + discipline = 20 ; + parameterCategory = 0 ; + parameterNumber = 8 ; } -#Emission mass flux from residential, commercial and other combustion -'kg m**-2 s**-1' = { +#Saturation water vapour pressure +'Pa' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 18 ; + parameterCategory = 3 ; + parameterNumber = 32 ; } -#Emission mass flux from power generation -'kg m**-2 s**-1' = { +#Wet-bulb potential temperature +'K' = { discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 19 ; + parameterCategory = 0 ; + parameterNumber = 32 ; } -#Emission mass flux from fugitives -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 21 ; +#Sea ice thickness +'m' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from industrial process -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 22 ; +#Sea ice area fraction +'Fraction' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from solvents -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 23 ; +#Eastward sea ice velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from ships -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 24 ; +#Northward sea ice velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from wastes (solid and water) -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 25 ; +#Sea ice albedo +'Fraction' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from off-road transportation -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 27 ; +#Sea ice surface temperature +'K' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from road transportation -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 26 ; +#Sea ice growth +'m s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from super power stations -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 20 ; +#Sea ice volume per unit area +'m**3 m**-2' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from volcanoes -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; +#Snow volume over sea ice per unit area +'m**3 m**-2' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Emission mass flux from wetlands -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 10 ; +#Vertically averaged sea ice temperature +'K' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Net ecosystem exchange flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - } -#Mean net ecosystem exchange flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated net ecosystem exchange flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 59 ; - typeOfStatisticalProcessing = 1 ; - } -#Gross primary production flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - } -#Mean gross primary production flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated gross primary production flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 60 ; - typeOfStatisticalProcessing = 1 ; - } -#Ecosystem respiration flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - } -#Mean ecosystem respiration flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 0 ; - } -#Accumulated ecosystem respiration flux -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 61 ; - typeOfStatisticalProcessing = 1 ; - } -#Emission mass flux from bio fuel -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 8 ; - } -#Emission mass flux from fossil fuel -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 9 ; - } -#Emission mass flux from other -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 0 ; - } -#Emission mass flux from oceans -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 77 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 11 ; - } -#Accumulated wet deposition mass flux -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 7 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated dry deposition mass flux -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 6 ; - typeOfStatisticalProcessing = 1 ; - } -#Aerosol number density -'m**-3' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 59 ; - } -#Mass mixing ratio from volcanoes -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Total column vertically-integrated mass density from volcanoes -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Dry deposition velocity from volcanoes -'m s**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 15 ; - is_chemical_srcsink = 1 ; - sourceSinkChemicalPhysicalProcess = 7 ; - } -#Virtual potential temperature +#Snow temperature over sea ice 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Pseudo-adiabatic potential temperature +#Sea ice temperature at the sea ice and snow interface 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Wind direction -'Degree true' = { - discipline = 0 ; + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Snowmelt -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Underside ice temperature +'K' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Period corresponding to maximum individual wave height -'s' = { +#Sea ice heat content +'J m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 23 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Maximum individual wave height -'m' = { +#Snow heat content over sea ice +'J m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 24 ; + parameterCategory = 2 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Model bathymetry +#Sea ice freeboard thickness 'm' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 7 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Mean wave period based on first moment -'s' = { +#Sea ice melt pond fraction +'Proportion' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 25 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean zero-crossing wave period -'s' = { +#Sea ice melt pond depth +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 28 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width -'radians' = { +#Sea ice melt pond volume per unit area +'m**3 m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 31 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment for wind waves -'s' = { +#Sea ice fraction tendency due to parameterization +'s**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 26 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on second moment for wind waves -'s' = { +#X-component of sea ice velocity +'m s**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 29 ; + parameterCategory = 2 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for wind waves -'radians' = { +#Y-component of sea ice velocity +'m s**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 32 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean wave period based on first moment for swell -'s' = { +#Sea ice temperature +'K' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 27 ; + parameterCategory = 2 ; + parameterNumber = 8 ; } -#Mean wave period based on second moment for swell -'s' = { +#Sea surface practical salinity +'g kg**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 30 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral directional width for swell -'radians' = { +#Sea surface temperature +'K' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 33 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of combined wind waves and swell +#Depth of 14 C isotherm 'm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Mean wave direction -'Degree true' = { - discipline = 10 ; - parameterCategory = 0 ; + parameterCategory = 4 ; parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Peak wave period -'s' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 34 ; - } -#Mean wave period -'s' = { +#Depth of 17 C isotherm +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 15 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Coefficient of drag with waves -'dimensionless' = { +#Depth of 20 C isotherm +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 16 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of wind waves +#Depth of 26 C isotherm 'm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 5 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of wind waves -'degrees' = { +#Depth of 28 C isotherm +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 75 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of wind waves -'s' = { +#Barotropic stream function +'m**3 s**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterCategory = 191 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Significant height of total swell -'m' = { +#Surface downward heat flux +'W m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean direction of total swell -'degrees' = { +#Northward surface stress +'N m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 74 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean period of total swell -'s' = { +#Eastward surface stress +'N m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 9 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Mean square slope of waves -'dimensionless' = { +#Y-component of surface stress +'N m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 20 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind speed -'m s**-1' = { +#X-component of surface stress +'N m**-2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter wave height +#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3 'm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 37 ; - } -#Altimeter corrected wave height -'m' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 38 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Altimeter range relative correction -'~' = { +#Ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 39 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre wind direction -'degrees' = { +#Ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#2D wave spectra (single) -'m**2 s radian**-1' = { +#Ocean mixed layer depth defined by temperature 0.2 C +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 86 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Wave spectral kurtosis -'dimensionless' = { +#Ocean mixed layer depth defined by temperature 0.5 C +'m' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 43 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Benjamin-Feir index -'dimensionless' = { +#Average sea water practical salinity in the upper 300 m +'g kg**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 44 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Eastward sea water velocity -'m s**-1' = { +#Average sea water practical salinity in the upper 700 m +'g kg**-1' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Northward sea water velocity -'m s**-1' = { +#Total column average sea water practical salinity +'g kg**-1' = { discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 4 ; + parameterNumber = 21 ; typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Skin reservoir content -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 50 ; - } -#Vertical integral of mass of atmosphere -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 39 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated kinetic energy -'J m**-2' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Total column vertically-integrated enthalpy +#Vertically-integrated heat content in the upper 300 m 'J m**-2' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Total column vertically-integrated potential + internal energy +#Vertically-integrated heat content in the upper 700 m 'J m**-2' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Vertical integral of potential+internal+latent energy +#Total column of heat content 'J m**-2' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 21 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total column vertically-integrated total energy -'J m**-2' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of eastward heat flux -'W m**-1' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 19 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Steric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of northward heat flux -'W m**-1' = { - discipline = 0 ; - parameterCategory = 21 ; - parameterNumber = 20 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Halosteric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of eastward water vapour flux -'kg m**-1 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 150 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Thermosteric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertical integral of northward water vapour flux -'kg m**-1 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 151 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; +#Thermocline depth +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically integrated moisture divergence flux +#Bottom pressure equivalent height +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Net surface upward water flux 'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 165 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to short-wave radiation -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - typeOfStatisticalProcessing = 1 ; +#Fresh water flux into sea water (from rivers) +'kg m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to long-wave radiation -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 23 ; - typeOfStatisticalProcessing = 1 ; +#Virtual salt flux into sea water +'g kg**-1 m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to short wave radiation, clear sky -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 24 ; - typeOfStatisticalProcessing = 1 ; +#Heat flux correction +'W m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated temperature tendency due to long-wave radiation, clear sky -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - typeOfStatisticalProcessing = 1 ; +#Fresh water flux correction +'kg m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated updraught mass flux -'kg m**-2' = { - discipline = 0 ; +#Virtual salt flux correction +'g kg**-1 m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Turbocline depth (kz=5e-4) +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Y-component of surface sea water velocity +'m s**-1' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 27 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated downdraught mass flux -'kg m**-2' = { - discipline = 0 ; +#X-component of surface sea water velocity +'m s**-1' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 28 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated updraught detrainment rate -'kg m**-3' = { - discipline = 0 ; +#Northward surface sea water velocity +'m s**-1' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 29 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated downdraught detrainment rate -'kg m**-3' = { - discipline = 0 ; +#Eastward surface sea water velocity +'m s**-1' = { + discipline = 10 ; parameterCategory = 3 ; - parameterNumber = 30 ; - typeOfStatisticalProcessing = 1 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-integrated total precipitation flux -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; +#Heat Content surface to 26C isotherm +'J m**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; } -#Time-integrated turbulent diffusion coefficient for heat -'m**2' = { - discipline = 0 ; - parameterCategory = 0 ; +#Sea surface height tendency due to parameterization +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Sea surface height with inverse barometer correction +'m' = { + discipline = 10 ; + parameterCategory = 3 ; parameterNumber = 20 ; - typeOfStatisticalProcessing = 1 ; } -#Time-integrated temperature tendency due to parametrisations +#Average sea water potential temperature in the upper 300m 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 26 ; - typeOfStatisticalProcessing = 1 ; + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Time-integrated specific humidity tendency due to parametrisations +#Sea surface salinity 'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 108 ; - typeOfStatisticalProcessing = 1 ; - } -#Time-integrated eastward wind tendency due to parametrisations -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 39 ; - typeOfStatisticalProcessing = 1 ; - } -#Time-integrated northward wind tendency due to parametrisations -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 40 ; - typeOfStatisticalProcessing = 1 ; + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Time-mean surface net radiation flux (SW and LW) -'W m**-2' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; +#Vertically integrated sea water practical salinity in the upper 300 m +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Surface runoff -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 34 ; +#Vertically integrated sea water practical salinity in the upper 700 m +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; } -#Nitrogen dioxide mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - is_chemical = 1 ; +#Total column vertically integrated sea water practical salinity +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Sulphur dioxide mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - is_chemical = 1 ; +#Sea water practical salinity +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Carbon monoxide mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - is_chemical = 1 ; +#Sea water potential temperature +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Ozone mass mixing ratio (full chemistry scheme) -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - is_chemical = 1 ; +#Sea water sigma theta +'kg m**-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Nitrogen dioxide mass mixing ratio difference -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 5 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Y-component of sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Sulphur dioxide mass mixing ratio difference -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 8 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#X-component of sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Carbon monoxide mass mixing ratio difference -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 4 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Northward sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Ozone mass mixing ratio difference (full chemistry scheme) -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - constituentType = 0 ; - typeOfGeneratingProcess = 20 ; - is_chemical = 1 ; +#Eastward sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Friction velocity +#Upward sea water velocity 'm s**-1' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 17 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Mean 2 metre temperature -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 0 ; +#Sea water potential temperature tendency due to newtonian relaxation +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Lake total depth -'m' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; +#Sea water salinity tendency due to newtonian relaxation +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Lake mix-layer temperature -'K' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; +#Sea water temperature tendency due to parameterization +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Lake mix-layer depth -'m' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 166 ; - typeOfSecondFixedSurface = 255 ; +#Sea water salinity tendency due to parameterization +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Lake bottom temperature -'K' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 162 ; - typeOfSecondFixedSurface = 255 ; +#Eastward sea water velocity tendency due to parameterization +'m s**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Lake total layer temperature -'K' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 162 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Lake shape factor -'dimensionless' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 10 ; - } -#Lake ice surface temperature -'K' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 255 ; - } -#Lake ice total depth -'m' = { - discipline = 1 ; - parameterCategory = 2 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 174 ; - typeOfSecondFixedSurface = 176 ; - scaledValueOfFirstFixedSurface = missing() ; - scaleFactorOfFirstFixedSurface = missing() ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } -#Minimum vertical gradient of refractivity inside trapping layer -'m**-1' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 45 ; +#Northward sea water velocity tendency due to parameterization +'m s**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Mean vertical gradient of refractivity inside trapping layer -'m**-1' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 44 ; +#Sea water temperature tendency due to direct bias correction +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Duct base height -'m' = { - discipline = 0 ; - parameterCategory = 19 ; +#Sea water salinity tendency due to direct bias correction +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#Trapping layer base height -'m' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 42 ; - } -#Trapping layer top height -'m' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 43 ; +#Sea water salinity +'kg kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; } -#10 metre u-component of neutral wind -'m s**-1' = { +#Net short wave radiation rate at sea surface +'W m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#10 metre v-component of neutral wind -'m s**-1' = { +#Wind stress at sea surface +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 57 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#U-component surface stokes drift -'m s**-1' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 21 ; - } -#V-component surface stokes drift -'m s**-1' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 22 ; - } -#100 metre U wind component +#Wind speed at 10m above sea surface 'm s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#100 metre V wind component -'m s**-1' = { +#Neutral drag coefficient at 10m above sea surface +'dimensionless' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total precipitation of at least 10 mm -'%' = { +#Total precipitation rate at sea surface +'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 10 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Total precipitation of at least 20 mm -'%' = { +#Snow precipitation rate at sea surface +'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Stream function -'m**2 s**-1' = { +#Eastward of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Velocity potential -'m**2 s**-1' = { +#Northward of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 5 ; - } -#Potential temperature -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 2 ; - } -#Pressure -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Convective available potential energy -'J kg**-1' = { +#U-component of wind stress over sea ice +'N m**-2' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; + parameterCategory = 2 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Potential vorticity -'K m**2 kg**-1 s**-1' = { +#V-component of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 14 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Maximum temperature at 2 metres in the last 6 hours -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 2 ; - lengthOfTimeRange = 6 ; - } -#Minimum temperature at 2 metres in the last 6 hours -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 3 ; - lengthOfTimeRange = 6 ; - } -#Geopotential -'m**2 s**-2' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 4 ; +#Time-mean sea ice thickness +'m' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Temperature -'K' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean sea ice area fraction +'Fraction' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#U component of wind +#Time-mean eastward sea ice velocity 'm s**-1' = { - discipline = 0 ; + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V component of wind +#Time-mean northward sea ice velocity 'm s**-1' = { - discipline = 0 ; + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; - } -#Specific humidity -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface pressure -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean sea ice albedo +'Fraction' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical velocity -'Pa s**-1' = { - discipline = 0 ; +#Time-mean sea ice surface temperature +'K' = { + discipline = 10 ; parameterCategory = 2 ; parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Total column water -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Vorticity (relative) -'s**-1' = { - discipline = 0 ; +#Time-mean sea ice growth +'m s**-1' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 12 ; - } -#Surface sensible heat flux -'J m**-2' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Surface latent heat flux -'J m**-2' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } -#Mean sea level pressure -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Divergence -'s**-1' = { - discipline = 0 ; +#Time-mean sea ice volume per unit area +'m**3 m**-2' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 13 ; - } -#Geopotential height -'gpm' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Relative humidity -'%' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Time-mean snow volume over sea ice per unit area +'m**3 m**-2' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre U wind component -'m s**-1' = { - discipline = 0 ; +#Time-mean vertically averaged sea ice temperature +'K' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 2 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre V wind component -'m s**-1' = { - discipline = 0 ; +#Time-mean snow temperature over sea ice +'K' = { + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 3 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre temperature +#Time-mean sea ice temperature at the sea ice and snow interface 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 175 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#2 metre dewpoint temperature +#Time-mean underside ice temperature 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 6 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 2 ; - scaleFactorOfFirstFixedSurface = 0 ; - } -#Land-sea mask -'(0 - 1)' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 1 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 176 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net short-wave (solar) radiation +#Time-mean sea ice heat content 'J m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Surface net long-wave (thermal) radiation +#Time-mean snow heat content over sea ice 'J m**-2' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 173 ; + typeOfSecondFixedSurface = 175 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Top net long-wave (thermal) radiation -'J m**-2' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean sea ice freeboard thickness +'m' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Sunshine duration -'s' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; +#Time-mean sea ice melt pond fraction +'Proportion' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Brightness temperature -'K' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 4 ; +#Time-mean sea ice melt pond depth +'m' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#10 metre wind speed +#Time-mean sea ice melt pond volume per unit area +'m**3 m**-2' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 188 ; + typeOfSecondFixedSurface = 189 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea ice fraction tendency due to parameterization +'s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean X-component of sea ice velocity 'm s**-1' = { - discipline = 0 ; + discipline = 10 ; parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Skin temperature +#Time-mean Y-component of sea ice velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean sea ice temperature 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - typeOfFirstFixedSurface = 1 ; + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 8 ; + typeOfStatisticalProcessing = 0 ; } -#Latent heat net flux -'W m**-2' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 10 ; +#Time-mean sea surface practical salinity +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Heat index +#Time-mean sea surface temperature 'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 12 ; + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind chill factor -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 13 ; +#Time-mean depth of 14 C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 28715 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Minimum dew point depression -'K' = { - discipline = 0 ; - parameterCategory = 0 ; +#Time-mean depth of 17 C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29015 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow phase change heat flux -'W m**-2' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 16 ; +#Time-mean depth of 20 C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vapor pressure -'Pa' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean depth of 26 C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 29915 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean depth of 28 C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 30115 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean barotropic stream function +'m**3 s**-1' = { + discipline = 10 ; + parameterCategory = 191 ; parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation (non-convective) -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 9 ; +#Time-mean surface downward heat flux +'W m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snowfall rate water equivalent -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Time-mean northward surface stress +'N m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Convective snow -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean eastward surface stress +'N m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time mean Y-component of surface stress +'N m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean X-component of surface stress +'N m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean ocean mixed layer depth defined by sigma theta 0.01 kg m-3 +'m' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snow -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 15 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.03 kg m-3 +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 3 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow age -'day' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 17 ; +#Time-mean ocean mixed layer depth defined by sigma theta 0.125 kg m-3 +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 125 ; + scaleFactorOfFirstFixedSurface = 3 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Absolute humidity -'kg m**-3' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 18 ; +#Time-mean ocean mixed layer depth defined by temperature 0.2 C +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitation type -'code table (4.201)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 19 ; +#Time-mean ocean mixed layer depth defined by temperature 0.5 C +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 170 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 1 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Integrated liquid water -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 20 ; +#Time-mean average sea water practical salinity in the upper 300 m +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Condensate -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean average sea water practical salinity in the upper 700 m +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean total column average sea water practical salinity +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Cloud mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; +#Time-mean vertically-integrated heat content in the upper 300 m +'J m**-2' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Ice water mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 23 ; +#Time-mean vertically-integrated heat content in the upper 700 m +'J m**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 24 ; +#Time-mean total column heat content +'J m**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 25 ; +#Time-mean sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean steric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean halosteric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean thermosteric change in sea surface height +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean thermocline depth +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean bottom pressure equivalent height +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean net surface upward water flux +'kg m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean fresh water flux into sea water (from rivers) +'kg m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 30 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture convergence -'kg kg**-1 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 26 ; +#Time-mean virtual salt flux into sea water +'g kg**-1 m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 32 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum relative humidity -'%' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; +#Time-mean heat flux correction +'W m**-2' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum absolute humidity -'kg m**-3' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; +#Time-mean fresh water flux correction +'kg m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 31 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Precipitable water category -'code table (4.202)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 30 ; +#Time-mean virtual salt flux correction +'g kg**-1 m**-2 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 33 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Hail +#Time-mean turbocline depth (kz=5e-4) 'm' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 31 ; + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 171 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 5 ; + scaleFactorOfFirstFixedSurface = 4 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Graupel (snow pellets) -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 32 ; +#Time-mean Y-component of surface sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical rain -'(Code table 4.222)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 33 ; +#Time-mean X-component of surface sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical freezing rain -'(Code table 4.222)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 34 ; +#Time-mean northward surface sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical ice pellets -'(Code table 4.222)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 35 ; +#Time-mean eastward surface sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Categorical snow -'(Code table 4.222)' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 36 ; +#Time-mean heat content surface to 26C isotherm +'J m**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 29915 ; + scaleFactorOfSecondFixedSurface = 2 ; + typeOfStatisticalProcessing = 0 ; } -#Convective precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 37 ; +#Time-mean sea surface height tendency due to parameterization +'m s**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal moisture divergence -'kg kg**-1 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 38 ; +#Time-mean sea surface height with inverse barometer correction +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 0 ; } -#Percent frozen precipitation -'%' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 39 ; +#Time-mean average sea water potential temperature in the upper 300m +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Potential evaporation -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 40 ; +#Time-mean sea surface salinity +'kg kg**-1' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Snow cover -'%' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 42 ; +#Time-mean vertically integrated sea water practical salinity in the upper 300 m +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean vertically integrated sea water practical salinity in the upper 700 m +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 700 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Rain fraction of total cloud water -'Proportion' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 43 ; +#Time-mean total column vertically integrated sea water practical salinity +'g kg**-1 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 9 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Rime factor -'Numeric' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 44 ; +#Time-mean sea water practical salinity +'g kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated rain -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 45 ; +#Time-mean sea water potential temperature +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column integrated snow -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 46 ; +#Time-mean sea water sigma theta +'kg m**-3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale water precipitation (non-convective) -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 47 ; +#Time-mean Y-component of sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 26 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective water precipitation -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 48 ; +#Time-mean X-component of sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total water precipitation -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; +#Time-mean northward sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total column water (Vertically integrated total water (vapour + cloud water/ice)) -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; +#Time-mean eastward sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 1 ; +#Time-mean upward sea water velocity +'m s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 27 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate water equivalent -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; +#Time-mean sea water potential temperature tendency due to newtonian relaxation +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 34 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 54 ; +#Time-mean sea water salinity tendency due to newtonian relaxation +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Total snowfall rate -'m s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 57 ; +#Time-mean sea water temperature tendency due to parameterization +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Convective snowfall rate -'m s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 58 ; +#Time-mean sea water salinity tendency due to parameterization +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Large scale snowfall rate -'m s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 59 ; +#Time-mean eastward sea water velocity tendency due to parameterization +'m s**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 38 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Water equivalent of accumulated snow depth (deprecated) -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Time-mean northward sea water velocity tendency due to parameterization +'m s**-2' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Rain precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 65 ; +#Time-mean sea water temperature tendency due to direct bias correction +'K s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Snow precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; +#Time-mean sea water salinity tendency due to direct bias correction +'g kg**-1 s**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Freezing rain precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 67 ; +#Time-mean sea water salinity +'kg kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + typeOfStatisticalProcessing = 0 ; } -#Ice pellets precipitation rate -'kg m**-2 s**-1' = { +#Time-mean net short wave radiation rate at sea surface +'W m**-2' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 68 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Maximum wind speed -'m s**-1' = { +#Time-mean wind stress at sea surface +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 21 ; + parameterNumber = 49 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Wind speed (gust) +#Time-mean wind speed at 10m above sea surface 'm s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#u-component of wind (gust) -'m s**-1' = { +#Time-mean neutral drag coefficient at 10m above sea surface +'dimensionless' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 23 ; + parameterNumber = 29 ; + typeOfFirstFixedSurface = 102 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#v-component of wind (gust) -'m s**-1' = { +#Time-mean total precipitation rate at sea surface +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 24 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Vertical speed shear -'s**-1' = { +#Time-mean snow precipitation rate at sea surface +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 25 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal momentum flux +#Time-mean eastward of wind stress over sea ice 'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 26 ; - } -#U-component storm motion -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 27 ; + parameterNumber = 50 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#V-component storm motion -'m s**-1' = { +#Time-mean northward of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 28 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Drag coefficient -'Numeric' = { +#Time-mean U-component of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 29 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Frictional velocity -'m s**-1' = { +#Time-mean V-component of wind stress over sea ice +'N m**-2' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 30 ; - } -#Pressure reduced to MSL -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 1 ; + parameterNumber = 53 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 0 ; } -#Altimeter setting -'Pa' = { +#Time-accumulated net short wave radiation at sea surface +'J m**-2' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 11 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Thickness -'m' = { +#Time-accumulated total precipitation at sea surface +'kg m**-2' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 12 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Pressure altitude -'m' = { +#Time-accumulated snow precipitation at sea surface +'kg m**-2' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 13 ; + parameterCategory = 1 ; + parameterNumber = 66 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + typeOfStatisticalProcessing = 1 ; } -#Density altitude -'m' = { +#Virtual temperature +'K' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 14 ; + parameterCategory = 0 ; + parameterNumber = 1 ; } -#5-wave geopotential height -'gpm' = { +#Mass density +'kg m**-3' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 0 ; } -#Zonal flux of gravity wave stress -'N m**-2' = { +#Total column vertically-integrated mass density +'kg m**-2' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Meridional flux of gravity wave stress -'N m**-2' = { +#Mass mixing ratio +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 2 ; } -#5-wave geopotential height anomaly -'gpm' = { +#Emission mass flux +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } -#Net short-wave radiation flux (top of atmosphere) -'W m**-2' = { +#Dry deposition velocity +'m s**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 15 ; } -#Downward short-wave radiation flux -'W m**-2' = { +#Wet deposition mass flux +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 7 ; } -#Upward short-wave radiation flux -'W m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 8 ; - } -#Net short wave radiation flux -'W m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - } -#Photosynthetically active radiation -'W m**-2' = { +#Dry deposition mass flux +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 6 ; } -#Net short-wave radiation flux, clear sky -'W m**-2' = { +#Sedimentation mass flux +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; + parameterCategory = 20 ; parameterNumber = 11 ; } -#Downward UV radiation -'W m**-2' = { +#Volume mixing ratio +'mol mol**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 52 ; } -#UV index (under clear sky) -'Numeric' = { +#Wet deposition mass flux by large-scale precipitation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 50 ; + parameterCategory = 20 ; + parameterNumber = 9 ; } -#UV index -'Numeric' = { +#Wet deposition mass flux by convective precipitation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 51 ; + parameterCategory = 20 ; + parameterNumber = 10 ; } -#Net long wave radiation flux (surface) -'W m**-2' = { +#Emission mass flux from natural sources +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 6 ; } -#Net long wave radiation flux (top of atmosphere) -'W m**-2' = { +#Emission mass flux from anthropogenic sources +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 4 ; } -#Downward long-wave radiation flux -'W m**-2' = { +#Emission mass flux from elevated anthropogenic sources +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 12 ; } -#Upward long-wave radiation flux -'W m**-2' = { +#Emission mass flux from surface anthropogenic sources +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 4 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 13 ; } -#Net long wave radiation flux -'W m**-2' = { +#Emission from aviation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 1 ; } -#Net long-wave radiation flux, clear sky -'W m**-2' = { +#Emission mass flux from agriculture livestock +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 14 ; } -#Cloud Ice -'kg m**-2' = { +#Emission mass flux from agriculture soils +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 15 ; } -#Cloud water -'kg m**-2' = { +#Emission mass flux from agricultural waste burning +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 6 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 16 ; } -#Cloud amount -'%' = { +#Emission mass flux from residential, commercial and other combustion +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 18 ; } -#Cloud type -'code table (4.203)' = { +#Emission mass flux from power generation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 19 ; } -#Thunderstorm maximum tops -'m' = { +#Emission mass flux from fugitives +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 21 ; } -#Thunderstorm coverage -'code table (4.204)' = { +#Emission mass flux from industrial process +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 22 ; } -#Cloud top -'m' = { +#Emission mass flux from solvents +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 12 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 23 ; } -#Ceiling -'m' = { +#Emission mass flux from ships +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 13 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 24 ; } -#Non-convective cloud cover -'%' = { +#Emission mass flux from wastes (solid and water) +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 14 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 25 ; } -#Cloud work function -'J kg**-1' = { +#Emission mass flux from off-road transportation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 27 ; } -#Convective cloud efficiency -'Proportion' = { +#Emission mass flux from road transportation +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 26 ; } -#Total condensate -'kg kg**-1' = { +#Emission mass flux from super power stations +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 17 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 20 ; } -#Total column-integrated cloud water -'kg m**-2' = { +#Emission mass flux from volcanoes +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 18 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Total column-integrated cloud ice -'kg m**-2' = { +#Emission mass flux from wetlands +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 19 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; } -#Total column-integrated condensate -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 20 ; +#Net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; } -#Ice fraction of total condensate -'Proportion' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 21 ; +#Mean net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; } -#Cloud ice mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 23 ; +#Gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; } -#Sunshine -'Numeric' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 24 ; +#Mean gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } -#Horizontal extent of cumulonimbus (CB) -'%' = { - discipline = 0 ; - parameterCategory = 6 ; - parameterNumber = 25 ; +#Accumulated gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; } -#K index -'K' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 2 ; +#Ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; } -#KO index -'K' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 3 ; +#Mean ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; } -#Total totals index -'K' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 4 ; +#Accumulated ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; } -#Sweat index -'Numeric' = { +#Emission mass flux from bio fuel +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; } -#Storm relative helicity -'m**2 s**-2' = { +#Emission mass flux from fossil fuel +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 8 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; } -#Energy helicity index -'Numeric' = { +#Emission mass flux from other +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 9 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; } -#Surface lifted index -'K' = { +#Emission mass flux from oceans +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 10 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; } -#Best (4-layer) lifted index -'K' = { +#Accumulated wet deposition mass flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 11 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; } -#Aerosol type -'code table (4.205)' = { +#Accumulated dry deposition mass flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 13 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; } -#Total ozone -'DU' = { +#Aerosol number density +'m**-3' = { discipline = 0 ; - parameterCategory = 14 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 59 ; } -#Base spectrum width -'m s**-1' = { +#Mass mixing ratio from volcanoes +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Base reflectivity -'dB' = { +#Total column vertically-integrated mass density from volcanoes +'kg m**-2' = { discipline = 0 ; - parameterCategory = 15 ; + parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Base radial velocity +#Dry deposition velocity from volcanoes 'm s**-1' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 2 ; - } -#Vertically-integrated liquid -'kg m**-1' = { - discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 15 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 7 ; } -#Layer-maximum base reflectivity -'dB' = { +#Pressure tendency +'Pa s**-1' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 4 ; + parameterCategory = 3 ; + parameterNumber = 2 ; } -#Precipitation -'kg m**-2' = { +#ICAO Standard Atmosphere reference height +'m' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 5 ; + parameterCategory = 3 ; + parameterNumber = 3 ; } -#Air concentration of Caesium 137 -'Bq m**-3' = { +#Geometrical height +'m' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 6 ; } -#Air concentration of Iodine 131 -'Bq m**-3' = { +#Standard deviation of height +'m' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 1 ; + parameterCategory = 3 ; + parameterNumber = 7 ; } -#Air concentration of radioactive pollutant -'Bq m**-3' = { +#Virtual potential temperature +'K' = { discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 2 ; + parameterCategory = 0 ; + parameterNumber = 15 ; } -#Ground deposition of Caesium 137 -'Bq m**-2' = { +#Pseudo-adiabatic potential temperature +'K' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Ground deposition of Iodine 131 -'Bq m**-2' = { +#Maximum temperature +'K' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 4 ; } -#Ground deposition of radioactive pollutant -'Bq m**-2' = { +#Minimum temperature +'K' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Time-integrated air concentration of caesium pollutant -'Bq s m**-3' = { +#Dew point temperature +'K' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 6 ; } -#Time-integrated air concentration of iodine pollutant -'Bq s m**-3' = { - discipline = 0 ; - parameterCategory = 18 ; - parameterNumber = 7 ; - } -#Time-integrated air concentration of radioactive pollutant -'Bq s m**-3' = { +#Lapse rate +'K m**-1' = { discipline = 0 ; - parameterCategory = 18 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Volcanic ash -'code table (4.206)' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 4 ; - } -#Icing top +#Visibility 'm' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 5 ; + parameterNumber = 0 ; } -#Icing base -'m' = { +#Radar spectra (1) +'~' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 15 ; parameterNumber = 6 ; } -#Icing -'code table (4.207)' = { +#Radar spectra (2) +'~' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 15 ; parameterNumber = 7 ; } -#Turbulence top -'m' = { +#Radar spectra (3) +'~' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 15 ; parameterNumber = 8 ; } -#Turbulence base -'m' = { +#Parcel lifted index (to 500 hPa) +'K' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 7 ; + parameterNumber = 0 ; + } +#Temperature anomaly +'K' = { + discipline = 0 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Turbulence -'code table (4.208)' = { +#Pressure anomaly +'Pa' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 10 ; + parameterCategory = 3 ; + parameterNumber = 8 ; } -#Turbulent kinetic energy -'J kg**-1' = { +#Geopotential height anomaly +'gpm' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 11 ; + parameterCategory = 3 ; + parameterNumber = 9 ; } -#Planetary boundary layer regime -'code table (4.209)' = { +#Wave spectra (1) +'~' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + } +#Wave spectra (2) +'~' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } +#Wave spectra (3) +'~' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 2 ; + } +#Wind direction +'Degree true' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 12 ; + parameterCategory = 2 ; + parameterNumber = 0 ; } -#Contrail intensity -'code table (4.210)' = { +#Sigma coordinate vertical velocity +'s**-1' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 13 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Contrail engine type -'code table (4.211)' = { +#Absolute vorticity +'s**-1' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 14 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Contrail top -'m' = { +#Absolute divergence +'s**-1' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; + parameterNumber = 11 ; + } +#Vertical u-component shear +'s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; parameterNumber = 15 ; } -#Contrail base -'m' = { +#Vertical v-component shear +'s**-1' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 2 ; parameterNumber = 16 ; } -#Maximum snow albedo -'%' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; +#U-component of current +'m s**-1' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 2 ; } -#Snow free albedo -'%' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 18 ; +#V-component of current +'m s**-1' = { + discipline = 10 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#Icing -'%' = { +#Precipitable water +'kg m**-2' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 20 ; + parameterCategory = 1 ; + parameterNumber = 3 ; } -#In-cloud turbulence -'%' = { +#Saturation deficit +'Pa' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 21 ; + parameterCategory = 1 ; + parameterNumber = 5 ; } -#Relative clear air turbulence (RCAT) -'%' = { +#Precipitation rate +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 22 ; + parameterCategory = 1 ; + parameterNumber = 7 ; } -#Supercooled large droplet probability (see Note 4) +#Thunderstorm probability '%' = { discipline = 0 ; parameterCategory = 19 ; - parameterNumber = 23 ; + parameterNumber = 2 ; } -#Arbitrary text string -'CCITTIA5' = { +#Convective precipitation (water) +'kg m**-2' = { discipline = 0 ; - parameterCategory = 190 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 10 ; } -#Seconds prior to initial reference time (defined in Section 1) -'s' = { +#Mixed layer depth +'m' = { discipline = 0 ; - parameterCategory = 191 ; - parameterNumber = 0 ; - } -#Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the ref -'kg m**-2' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) -'kg m**-2' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 1 ; + parameterCategory = 19 ; + parameterNumber = 3 ; } -#Remotely sensed snow cover -'(code table 4.215)' = { - discipline = 1 ; - parameterCategory = 0 ; +#Transient thermocline depth +'m' = { + discipline = 10 ; + parameterCategory = 4 ; parameterNumber = 2 ; } -#Elevation of snow covered terrain -'(code table 4.216)' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 3 ; - } -#Snow water equivalent percent of normal -'%' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Main thermocline anomaly +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 1 ; } -#Baseflow-groundwater runoff -'kg m**-2' = { - discipline = 1 ; - parameterCategory = 0 ; - parameterNumber = 5 ; +#Best lifted index (to 500 hPa) +'K' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 1 ; } -#Storm surface runoff +#Soil moisture content 'kg m**-2' = { - discipline = 1 ; + discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 3 ; } -#Conditional percent precipitation amount fractile for an overall period (Encoded as an accumulation) -'kg m**-2' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 0 ; +#Salinity +'kg kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Percent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over th -'%' = { - discipline = 1 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Density +'kg m**-3' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 10 ; } -#Probability of 0.01 inch of precipitation (POP) -'%' = { - discipline = 1 ; - parameterCategory = 1 ; +#Direction of ice drift +'Degree true' = { + discipline = 10 ; + parameterCategory = 2 ; parameterNumber = 2 ; } -#Vegetation -'%' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 4 ; +#Speed of ice drift +'m s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + } +#Ice divergence +'s**-1' = { + discipline = 10 ; + parameterCategory = 2 ; + parameterNumber = 7 ; } -#Water runoff +#Snowmelt 'kg m**-2' = { discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 5 ; - } -#Evapotranspiration -'kg**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } -#Model terrain height -'m' = { - discipline = 2 ; +#Direction of swell waves +'Degree true' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 7 ; } -#Land use -'code table (4.212)' = { - discipline = 2 ; +#Secondary wave direction +'Degree true' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 12 ; } -#Ground heat flux +#Net short-wave radiation flux (surface) 'W m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 10 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 0 ; } -#Moisture availability -'%' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 11 ; +#Global radiation flux +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 3 ; } -#Exchange coefficient -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Radiance (with respect to wave number) +'W m**-1 sr**-1' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 5 ; } -#Plant canopy surface water -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 13 ; +#Radiance (with respect to wave length) +'W m**-3 sr**-1' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 6 ; } -#Blackadar mixing length scale -'m' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 14 ; +#Wind mixing energy +'J' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 19 ; } -#Canopy conductance -'m s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 15 ; +#10 metre wind gust of at least 15 m/s +'%' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 15 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; } -#Minimal stomatal resistance -'s m**-1' = { - discipline = 2 ; +#10 metre wind gust of at least 20 m/s +'%' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + scaledValueOfLowerLimit = 20 ; + scaleFactorOfLowerLimit = 0 ; + probabilityType = 3 ; + } +#Period corresponding to maximum individual wave height +'s' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 16 ; + parameterNumber = 23 ; } -#Solar parameter in canopy conductance -'Proportion' = { - discipline = 2 ; +#Maximum individual wave height +'m' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 18 ; + parameterNumber = 24 ; } -#Temperature parameter in canopy conductance -'Proportion' = { - discipline = 2 ; +#Model bathymetry +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Mean wave period based on first moment +'s' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 19 ; + parameterNumber = 25 ; } -#Soil moisture parameter in canopy conductance -'Proportion' = { - discipline = 2 ; +#Mean zero-crossing wave period +'s' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 20 ; + parameterNumber = 28 ; } -#Humidity parameter in canopy conductance -'Proportion' = { - discipline = 2 ; +#Wave spectral directional width +'radians' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 21 ; + parameterNumber = 31 ; } -#Column-integrated soil water -'kg m**-2' = { - discipline = 2 ; +#Mean wave period based on first moment for wind waves +'s' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 23 ; + parameterNumber = 26 ; } -#Heat flux -'W m**-2' = { - discipline = 2 ; +#Mean wave period based on second moment for wind waves +'s' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 24 ; + parameterNumber = 29 ; } -#Volumetric soil moisture -'m**3 m**-3' = { - discipline = 2 ; +#Wave spectral directional width for wind waves +'radians' = { + discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 25 ; + parameterNumber = 32 ; } -#Volumetric wilting point -'m**3 m**-3' = { - discipline = 2 ; +#Mean wave period based on first moment for swell +'s' = { + discipline = 10 ; parameterCategory = 0 ; parameterNumber = 27 ; } -#Number of soil layers in root zone -'Numeric' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 6 ; - } -#Liquid volumetric soil moisture (non-frozen) -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 10 ; - } -#Volumetric transpiration stress-onset (soil moisture) -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 11 ; - } -#Transpiration stress-onset (soil moisture) -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 12 ; - } -#Volumetric direct evaporation cease (soil moisture) -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 13 ; - } -#Direct evaporation cease (soil moisture) -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 14 ; - } -#Soil porosity -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 15 ; - } -#Volumetric saturation of soil moisture -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 16 ; - } -#Saturation of soil moisture -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 17 ; - } -#Estimated precipitation -'kg m**-2' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 0 ; - } -#Instantaneous rain rate -'kg m**-2 s**-1' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 1 ; +#Mean wave period based on second moment for swell +'s' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 30 ; } -#Cloud top height -'m' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 2 ; +#Wave spectral directional width for swell +'radians' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 33 ; } -#Cloud top height quality indicator -'Code table 4.219' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of combined wind waves and swell +'m' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 3 ; } -#Estimated u component of wind -'m s**-1' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 4 ; +#Mean wave direction +'Degree true' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 14 ; } -#Estimated v component of wind -'m s**-1' = { - discipline = 3 ; - parameterCategory = 1 ; +#Peak wave period +'s' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Mean wave period +'s' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 15 ; + } +#Coefficient of drag with waves +'dimensionless' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 16 ; + } +#Significant height of wind waves +'m' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 5 ; } -#Number of pixels used -'Numeric' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 6 ; +#Mean direction of wind waves +'degrees' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; } -#Solar zenith angle -'Degree' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 7 ; +#Mean period of wind waves +'s' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 6 ; } -#Relative azimuth angle -'Degree' = { - discipline = 3 ; - parameterCategory = 1 ; +#Significant height of total swell +'m' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 8 ; } -#Reflectance in 0.6 micron channel -'%' = { - discipline = 3 ; - parameterCategory = 1 ; +#Mean direction of total swell +'degrees' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#Mean period of total swell +'s' = { + discipline = 10 ; + parameterCategory = 0 ; parameterNumber = 9 ; } -#Reflectance in 0.8 micron channel -'%' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 10 ; +#Mean square slope of waves +'dimensionless' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 20 ; } -#Reflectance in 1.6 micron channel -'%' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 11 ; +#10 metre wind speed +'m s**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Reflectance in 3.9 micron channel -'%' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 12 ; +#Altimeter wave height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 37 ; } -#Atmospheric divergence -'s**-1' = { - discipline = 3 ; - parameterCategory = 1 ; - parameterNumber = 13 ; +#Altimeter corrected wave height +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 38 ; } -#Direction of wind waves -'Degree true' = { +#Altimeter range relative correction +'~' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 39 ; } -#Primary wave direction -'Degree true' = { +#10 metre wind direction +'degrees' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 10 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 102 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; } -#Primary wave mean period -'s' = { +#2D wave spectra (single) +'m**2 s radian**-1' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 11 ; + parameterNumber = 86 ; } -#Secondary wave mean period -'s' = { +#Wave spectral kurtosis +'dimensionless' = { discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 13 ; + parameterNumber = 43 ; } -#Current direction -'Degree true' = { +#Benjamin-Feir index +'dimensionless' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 44 ; + } +#Eastward sea water velocity +'m s**-1' = { discipline = 10 ; parameterCategory = 1 ; - parameterNumber = 0 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 160 ; } -#Current speed +#Northward sea water velocity 'm s**-1' = { discipline = 10 ; parameterCategory = 1 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + } +#Skin reservoir content +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated kinetic energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometric vertical velocity -'m s**-1' = { +#Total column vertically-integrated enthalpy +'J m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 9 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Seconds prior to initial reference time (defined in Section 1) -'s' = { - discipline = 10 ; - parameterCategory = 191 ; +#Total column vertically-integrated potential + internal energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Forecast albedo -'%' = { +#Vertical integral of potential+internal+latent energy +'J m**-2' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 1 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Pressure tendency -'Pa s**-1' = { +#Total column vertically-integrated total energy +'J m**-2' = { discipline = 0 ; - parameterCategory = 3 ; + parameterCategory = 21 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'W m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'W m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#ICAO Standard Atmosphere reference height -'m' = { +#Vertical integral of eastward water vapour flux +'kg m**-1 s**-1' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 3 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Geometrical height -'m' = { +#Vertical integral of northward water vapour flux +'kg m**-1 s**-1' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 6 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Standard deviation of height -'m' = { +#Vertically integrated moisture divergence flux +'kg m**-2 s**-1' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 7 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Maximum temperature +#Time-integrated temperature tendency due to short-wave radiation 'K' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 4 ; + parameterNumber = 22 ; + typeOfStatisticalProcessing = 1 ; } -#Minimum temperature +#Time-integrated temperature tendency due to long-wave radiation 'K' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 5 ; + parameterNumber = 23 ; + typeOfStatisticalProcessing = 1 ; } -#Dew point temperature +#Time-integrated temperature tendency due to short wave radiation, clear sky 'K' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 6 ; + parameterNumber = 24 ; + typeOfStatisticalProcessing = 1 ; } -#Lapse rate -'K m**-1' = { +#Time-integrated temperature tendency due to long-wave radiation, clear sky +'K' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 8 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 1 ; } -#Visibility -'m' = { +#Time-integrated updraught mass flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 0 ; + parameterCategory = 3 ; + parameterNumber = 27 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (1) -'~' = { +#Time-integrated downdraught mass flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 6 ; + parameterCategory = 3 ; + parameterNumber = 28 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (2) -'~' = { +#Time-integrated updraught detrainment rate +'kg m**-3' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 7 ; + parameterCategory = 3 ; + parameterNumber = 29 ; + typeOfStatisticalProcessing = 1 ; } -#Radar spectra (3) -'~' = { +#Time-integrated downdraught detrainment rate +'kg m**-3' = { discipline = 0 ; - parameterCategory = 15 ; - parameterNumber = 8 ; + parameterCategory = 3 ; + parameterNumber = 30 ; + typeOfStatisticalProcessing = 1 ; } -#Parcel lifted index (to 500 hPa) -'K' = { +#Time-integrated total precipitation flux +'kg m**-2' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; } -#Temperature anomaly -'K' = { +#Time-integrated turbulent diffusion coefficient for heat +'m**2' = { discipline = 0 ; parameterCategory = 0 ; - parameterNumber = 9 ; - } -#Pressure anomaly -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 8 ; + parameterNumber = 20 ; + typeOfStatisticalProcessing = 1 ; } -#Geopotential height anomaly -'gpm' = { +#Time-integrated temperature tendency due to parametrisations +'K' = { discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } -#Wave spectra (1) -'~' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 0 ; - } -#Wave spectra (2) -'~' = { - discipline = 10 ; parameterCategory = 0 ; - parameterNumber = 1 ; + parameterNumber = 26 ; + typeOfStatisticalProcessing = 1 ; } -#Wave spectra (3) -'~' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 2 ; +#Time-integrated specific humidity tendency due to parametrisations +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 108 ; + typeOfStatisticalProcessing = 1 ; } -#Sigma coordinate vertical velocity -'s**-1' = { +#Time-integrated eastward wind tendency due to parametrisations +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 39 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute vorticity -'s**-1' = { +#Time-integrated northward wind tendency due to parametrisations +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 10 ; + parameterNumber = 40 ; + typeOfStatisticalProcessing = 1 ; } -#Absolute divergence -'s**-1' = { +#Time-mean surface net radiation flux (SW and LW) +'W m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 11 ; + parameterCategory = 19 ; + parameterNumber = 46 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; } -#Vertical u-component shear -'s**-1' = { +#Surface runoff +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 34 ; + } +#Nitrogen dioxide mass mixing ratio +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 15 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + is_chemical = 1 ; } -#Vertical v-component shear -'s**-1' = { +#Sulphur dioxide mass mixing ratio +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 16 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + is_chemical = 1 ; } -#U-component of current -'m s**-1' = { - discipline = 10 ; - parameterCategory = 1 ; +#Carbon monoxide mass mixing ratio +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 4 ; + is_chemical = 1 ; } -#V-component of current -'m s**-1' = { - discipline = 10 ; - parameterCategory = 1 ; - parameterNumber = 3 ; +#Ozone mass mixing ratio (full chemistry scheme) +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 0 ; + is_chemical = 1 ; } -#Precipitable water -'kg m**-2' = { +#Nitrogen dioxide mass mixing ratio difference +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 3 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 5 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Saturation deficit -'Pa' = { +#Sulphur dioxide mass mixing ratio difference +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 5 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 8 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Precipitation rate -'kg m**-2 s**-1' = { +#Carbon monoxide mass mixing ratio difference +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 7 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + constituentType = 4 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Thunderstorm probability -'%' = { +#Ozone mass mixing ratio difference (full chemistry scheme) +'kg kg**-1' = { discipline = 0 ; - parameterCategory = 19 ; + parameterCategory = 20 ; parameterNumber = 2 ; + constituentType = 0 ; + typeOfGeneratingProcess = 20 ; + is_chemical = 1 ; } -#Convective precipitation (water) -'kg m**-2' = { +#Convective inhibition +'J kg**-1' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 10 ; + parameterCategory = 7 ; + parameterNumber = 7 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } -#Mixed layer depth +#Orography 'm' = { discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 3 ; - } -#Transient thermocline depth -'m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; } -#Main thermocline anomaly -'m' = { +#Friction velocity +'m s**-1' = { discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 1 ; + parameterCategory = 0 ; + parameterNumber = 17 ; } -#Best lifted index (to 500 hPa) +#Mean 2 metre temperature 'K' = { discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 1 ; - } -#Soil moisture content -'kg m**-2' = { - discipline = 2 ; parameterCategory = 0 ; - parameterNumber = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; } -#Salinity -'kg kg**-1' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 3 ; +#Lake total depth +'m' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Density -'kg m**-3' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 10 ; +#Lake mix-layer temperature +'K' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Direction of ice drift -'Degree true' = { - discipline = 10 ; +#Lake mix-layer depth +'m' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 2 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 166 ; + typeOfSecondFixedSurface = 255 ; } -#Speed of ice drift -'m s**-1' = { - discipline = 10 ; +#Lake bottom temperature +'K' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 3 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 162 ; + typeOfSecondFixedSurface = 255 ; } -#Ice divergence -'s**-1' = { - discipline = 10 ; +#Lake total layer temperature +'K' = { + discipline = 1 ; parameterCategory = 2 ; - parameterNumber = 7 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 162 ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; } -#Direction of swell waves -'Degree true' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 7 ; +#Lake shape factor +'dimensionless' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 10 ; } -#Secondary wave direction -'Degree true' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 12 ; +#Lake ice surface temperature +'K' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 255 ; } -#Net short-wave radiation flux (surface) -'W m**-2' = { +#Lake ice total depth +'m' = { + discipline = 1 ; + parameterCategory = 2 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 174 ; + typeOfSecondFixedSurface = 176 ; + scaledValueOfFirstFixedSurface = missing() ; + scaleFactorOfFirstFixedSurface = missing() ; + scaledValueOfSecondFixedSurface = missing() ; + scaleFactorOfSecondFixedSurface = missing() ; + } +#Minimum vertical gradient of refractivity inside trapping layer +'m**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; } -#Global radiation flux -'W m**-2' = { +#Mean vertical gradient of refractivity inside trapping layer +'m**-1' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 3 ; + parameterCategory = 19 ; + parameterNumber = 44 ; } -#Radiance (with respect to wave number) -'W m**-1 sr**-1' = { +#Duct base height +'m' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 5 ; + parameterCategory = 19 ; + parameterNumber = 41 ; } -#Radiance (with respect to wave length) -'W m**-3 sr**-1' = { +#Trapping layer base height +'m' = { discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 6 ; + parameterCategory = 19 ; + parameterNumber = 42 ; } -#Wind mixing energy -'J' = { +#Trapping layer top height +'m' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 19 ; + parameterCategory = 19 ; + parameterNumber = 43 ; } -#10 metre wind gust of at least 15 m/s -'%' = { +#Soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#10 metre u-component of neutral wind +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 56 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 15 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } -#10 metre wind gust of at least 20 m/s -'%' = { +#10 metre v-component of neutral wind +'m s**-1' = { discipline = 0 ; parameterCategory = 2 ; - parameterNumber = 22 ; - productDefinitionTemplateNumber = 9 ; + parameterNumber = 57 ; typeOfFirstFixedSurface = 103 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - scaledValueOfLowerLimit = 20 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; - } -#Convective inhibition -'J kg**-1' = { - discipline = 0 ; - parameterCategory = 7 ; - parameterNumber = 7 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } -#Orography -'m' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - typeOfFirstFixedSurface = 1 ; - } -#Soil moisture -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 22 ; } #Soil temperature 'K' = { @@ -10782,4 +10752,34 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; + } +#U-component surface stokes drift +'m s**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 21 ; + } +#V-component surface stokes drift +'m s**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 22 ; + } +#100 metre U wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; } From 6ae2c39300b9d106e4cbca9eaa53dac74b09dda0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jan 2024 14:48:29 +0000 Subject: [PATCH 406/469] ECC-1754: CMake: Remove deprecated 'FindPythonInterp' module --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cf89afc7..eac898f92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,7 +165,7 @@ endif() ecbuild_add_option( FEATURE MEMFS DESCRIPTION "Memory based access to definitions/samples" DEFAULT OFF - REQUIRED_PACKAGES PythonInterp ) + REQUIRED_PACKAGES Python3 ) #if( HAVE_MEMFS AND "${CMAKE_C_COMPILER_ID}" STREQUAL "Cray") # set( HAVE_MEMFS OFF ) From 6570759ceca826acb7cd07bdd2c7b348fd91c309 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jan 2024 15:59:36 +0000 Subject: [PATCH 407/469] Move function grib_key_equal --- src/eccodes_prototypes.h | 1 - src/grib_value.cc | 38 -------------------------------------- tools/grib_merge.cc | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 39 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 5080843d7..c18286467 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1187,7 +1187,6 @@ int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); void grib_print_values(const char* title, grib_values* values, FILE* out); int grib_values_check(grib_handle* h, grib_values* values, int count); -int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err); int codes_copy_key(grib_handle* h1, grib_handle* h2, const char* key, int type); int codes_compare_key(grib_handle* h1, grib_handle* h2, const char* key, int compare_flags); diff --git a/src/grib_value.cc b/src/grib_value.cc index e6c382626..4e9cc8158 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1933,44 +1933,6 @@ int grib_values_check(grib_handle* h, grib_values* values, int count) return 0; } -int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err) -{ - double d1 = 0, d2 = 0; - long l1 = 0, l2 = 0; - char s1[500] = {0,}; - char s2[500] = {0,}; - size_t len1, len2; - - if (type != GRIB_TYPE_DOUBLE && - type != GRIB_TYPE_LONG && - type != GRIB_TYPE_STRING) { - *err = grib_get_native_type(h1, key, &type); - } - switch (type) { - case GRIB_TYPE_DOUBLE: - *err = grib_get_double(h1, key, &d1); - *err = grib_get_double(h2, key, &d2); - if (d1 != d2) - return 0; - break; - case GRIB_TYPE_LONG: - *err = grib_get_long(h1, key, &l1); - *err = grib_get_long(h2, key, &l2); - if (l1 != l2) - return 0; - break; - default: - len1 = sizeof(s1) / sizeof(*s1); - len2 = sizeof(s2) / sizeof(*s2); - *err = grib_get_string(h1, key, s1, &len1); - *err = grib_get_string(h2, key, s2, &len2); - if (grib_inline_strcmp(s1, s2)) - return 0; - break; - } - return 1; -} - int codes_copy_key(grib_handle* h1, grib_handle* h2, const char* key, int type) { double d; diff --git a/tools/grib_merge.cc b/tools/grib_merge.cc index e7ae4ac7b..3c510b8bb 100644 --- a/tools/grib_merge.cc +++ b/tools/grib_merge.cc @@ -62,6 +62,44 @@ grib_option grib_options[] = { int grib_options_count = sizeof(grib_options) / sizeof(grib_option); +static int grib_key_equal(const grib_handle* h1, const grib_handle* h2, const char* key, int type, int* err) +{ + double d1 = 0, d2 = 0; + long l1 = 0, l2 = 0; + char s1[500] = {0,}; + char s2[500] = {0,}; + size_t len1, len2; + + if (type != GRIB_TYPE_DOUBLE && + type != GRIB_TYPE_LONG && + type != GRIB_TYPE_STRING) { + *err = grib_get_native_type(h1, key, &type); + } + switch (type) { + case GRIB_TYPE_DOUBLE: + *err = grib_get_double(h1, key, &d1); + *err = grib_get_double(h2, key, &d2); + if (d1 != d2) + return 0; + break; + case GRIB_TYPE_LONG: + *err = grib_get_long(h1, key, &l1); + *err = grib_get_long(h2, key, &l2); + if (l1 != l2) + return 0; + break; + default: + len1 = sizeof(s1) / sizeof(*s1); + len2 = sizeof(s2) / sizeof(*s2); + *err = grib_get_string(h1, key, s1, &len1); + *err = grib_get_string(h2, key, s2, &len2); + if (!STR_EQUAL(s1, s2)) + return 0; + break; + } + return 1; +} + int main(int argc, char* argv[]) { return grib_tool(argc, argv); From 22becf52694daaff9d4febaa9f7078d6ecac825a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Jan 2024 17:31:44 +0000 Subject: [PATCH 408/469] Expression packing: Use the type of the expression and not the accessor --- src/grib_accessor_class_gen.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index a8965ae89..d74babf19 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -404,7 +404,8 @@ static int pack_expression(grib_accessor* a, grib_expression* e) int ret = 0; grib_handle* hand = grib_handle_of_accessor(a); - switch (grib_accessor_get_native_type(a)) { + // Use the native type of the expression not the accessor + switch (grib_expression_native_type(hand, e)) { case GRIB_TYPE_LONG: { len = 1; ret = grib_expression_evaluate_long(hand, e, &lval); @@ -542,7 +543,7 @@ static int pack_string(grib_accessor* a, const char* v, size_t* len) double val = strtod(v, &endPtr); if (*endPtr) { grib_context_log(a->context, GRIB_LOG_ERROR, - "%s: Invalid value (%s) for %s. String cannot be converted to a double", + "%s: Invalid value (%s) for key '%s'. String cannot be converted to a double", __func__, v, a->name); return GRIB_WRONG_TYPE; } From cf1428f6f53193e5846fc4595162d6fded2ea6b8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Jan 2024 22:38:05 +0000 Subject: [PATCH 409/469] Expression packing: Test --- tests/grib_sub_hourly.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/grib_sub_hourly.sh b/tests/grib_sub_hourly.sh index 668f89376..75b113b7e 100755 --- a/tests/grib_sub_hourly.sh +++ b/tests/grib_sub_hourly.sh @@ -468,6 +468,27 @@ grib_check_key_equals $temp "-p $keys_s" "18$HOUR-24$HOUR 18$HOUR 24$HOUR" grib_check_key_equals $temp "-p $keys_i" "24 18 24" grib_check_key_equals $temp "-p $keys_d" "24 18 24" +# Pack expression +cat >$tempFilt<$tempFilt<$tempFilt<$tempFilt< Date: Fri, 26 Jan 2024 11:08:23 +0000 Subject: [PATCH 410/469] Expression packing: Fix test --- tests/grib_ecc-1170.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_ecc-1170.sh b/tests/grib_ecc-1170.sh index d18bf80db..9ac4a543a 100755 --- a/tests/grib_ecc-1170.sh +++ b/tests/grib_ecc-1170.sh @@ -30,7 +30,7 @@ set -e [ $status -ne 0 ] #cat $tempErr -grep -q "Unable to set values as double" $tempErr +grep -q "String cannot be converted to a double" $tempErr # Clean up From be94fed831764cd60f87993a61d27e095360cd09 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 12:55:05 +0000 Subject: [PATCH 411/469] Dead code removal --- src/eccodes_prototypes.h | 1 - src/grib_value.cc | 94 ++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index c18286467..c8a12553b 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1182,7 +1182,6 @@ int grib_get_string_array(const grib_handle* h, const char* name, char** val, si int ecc__grib_get_long_array_internal(const grib_handle* h, grib_accessor* a, long* val, size_t buffer_len, size_t* decoded_length); int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, size_t* length); int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_t* length); -int grib_get_values(grib_handle* h, grib_values* args, size_t count); int grib_set_values(grib_handle* h, grib_values* args, size_t count); int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest); void grib_print_values(const char* title, grib_values* values, FILE* out); diff --git a/src/grib_value.cc b/src/grib_value.cc index 4e9cc8158..dba9852fa 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1705,57 +1705,49 @@ int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_ // return ret; // } -int grib_get_values(grib_handle* h, grib_values* args, size_t count) -{ - int ret = 0; - int i = 0; - - for (i = 0; i < count; i++) { - char buff[1024] = {0,}; - size_t len = sizeof(buff) / sizeof(*buff); - - if (!args[i].name) { - args[i].error = GRIB_INVALID_ARGUMENT; - continue; - } - - if (args[i].type == 0) { - args[i].error = grib_get_native_type(h, args[i].name, &(args[i].type)); - if (args[i].error != GRIB_SUCCESS) - ret = args[i].error; - } - - switch (args[i].type) { - case GRIB_TYPE_LONG: - args[i].error = grib_get_long(h, args[i].name, &(args[i].long_value)); - if (args[i].error != GRIB_SUCCESS) - ret = args[i].error; - break; - - case GRIB_TYPE_DOUBLE: - args[i].error = grib_get_double(h, args[i].name, &(args[i].double_value)); - if (args[i].error != GRIB_SUCCESS) - ret = args[i].error; - break; - - case GRIB_TYPE_STRING: - args[i].error = grib_get_string(h, args[i].name, buff, &len); - args[i].string_value = strdup(buff); - if (args[i].error != GRIB_SUCCESS) - ret = args[i].error; - break; - - default: - args[i].error = grib_get_string(h, args[i].name, buff, &len); - args[i].string_value = strdup(buff); - if (args[i].error != GRIB_SUCCESS) - ret = args[i].error; - break; - } - } - - return ret; -} +// int grib_get_values(grib_handle* h, grib_values* args, size_t count) +// { +// int ret = 0; +// int i = 0; +// for (i = 0; i < count; i++) { +// char buff[1024] = {0,}; +// size_t len = sizeof(buff) / sizeof(*buff); +// if (!args[i].name) { +// args[i].error = GRIB_INVALID_ARGUMENT; +// continue; +// } +// if (args[i].type == 0) { +// args[i].error = grib_get_native_type(h, args[i].name, &(args[i].type)); +// if (args[i].error != GRIB_SUCCESS) +// ret = args[i].error; +// } +// switch (args[i].type) { +// case GRIB_TYPE_LONG: +// args[i].error = grib_get_long(h, args[i].name, &(args[i].long_value)); +// if (args[i].error != GRIB_SUCCESS) +// ret = args[i].error; +// break; +// case GRIB_TYPE_DOUBLE: +// args[i].error = grib_get_double(h, args[i].name, &(args[i].double_value)); +// if (args[i].error != GRIB_SUCCESS) +// ret = args[i].error; +// break; +// case GRIB_TYPE_STRING: +// args[i].error = grib_get_string(h, args[i].name, buff, &len); +// args[i].string_value = strdup(buff); +// if (args[i].error != GRIB_SUCCESS) +// ret = args[i].error; +// break; +// default: +// args[i].error = grib_get_string(h, args[i].name, buff, &len); +// args[i].string_value = strdup(buff); +// if (args[i].error != GRIB_SUCCESS) +// ret = args[i].error; +// break; +// } +// } +// return ret; +// } int grib_set_values(grib_handle* h, grib_values* args, size_t count) { From d7a090264bea6702bf27843d10e8bdd0cef78936 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 14:16:25 +0000 Subject: [PATCH 412/469] Testing: grib_read_any_headers_only_from_file --- src/grib_io.cc | 1 - tests/wmo_read_any_from_file.cc | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index d4d876cca..6f878c8af 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -689,7 +689,6 @@ static int read_WRAP(reader* r) tmp[i++] = 'P'; if ((r->read(r->read_data, buf, 8, &err) != 8) || err) { - printf("error\n"); return err; } diff --git a/tests/wmo_read_any_from_file.cc b/tests/wmo_read_any_from_file.cc index 8e480a544..c68c573da 100644 --- a/tests/wmo_read_any_from_file.cc +++ b/tests/wmo_read_any_from_file.cc @@ -26,6 +26,13 @@ int main(int argc, char** argv) in = fopen(argv[1], "r"); if (!in) return 1; + grib_context* c = grib_context_get_default(); + err = grib_read_any_headers_only_from_file(c, in, buffer, &len); + printf("ANY (headers only): err=%s, len=%zu\n", grib_get_error_message(err), len); + + rewind(in); + len = SIZE; + err = wmo_read_any_from_file(in, buffer, &len); if (err == GRIB_END_OF_FILE && len == 0) printf("end of file\n"); From a1fd00e80ff7e520c310c7d305146e379023d651 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 15:33:55 +0000 Subject: [PATCH 413/469] Fix grib_multi_support_reset --- src/grib_handle.cc | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 1460ed4d8..8a7719234 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -1639,10 +1639,8 @@ static void grib2_build_message(grib_context* context, unsigned char* sections[] /* For multi support mode: Reset all file handles equal to f. See GRIB-249 */ void grib_multi_support_reset_file(grib_context* c, FILE* f) { - grib_multi_support* gm = NULL; - if (!c) - c = grib_context_get_default(); - gm = c->multi_support; + if (!c) c = grib_context_get_default(); + grib_multi_support* gm = c->multi_support; while (gm) { if (gm->file == f) { gm->file = NULL; @@ -1691,23 +1689,23 @@ static grib_multi_support* grib_get_multi_support(grib_context* c, FILE* f) void grib_multi_support_reset(grib_context* c) { - grib_multi_support* gm = c->multi_support; - grib_multi_support* next = NULL; - int i = 0; - while (next) { - next = gm->next; + if (!c) c = grib_context_get_default(); + const int GRIB2_END_SECTION = 8; + + grib_multi_support* gm = c->multi_support; + while (gm) { if (gm->file) fclose(gm->file); if (gm->message) grib_context_free(c, gm->message); gm->message = NULL; - for (i = 0; i < 8; i++) + for (int i = 0; i < GRIB2_END_SECTION; i++) gm->sections[i] = 0; if (gm->bitmap_section) grib_context_free(c, gm->bitmap_section); gm->bitmap_section = NULL; - grib_context_free(c, gm); - gm = NULL; + //grib_context_free(c, gm); + gm = gm->next; } } From 297ae1723aaaca3d5b12b332e299e56f866756c5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 21:26:50 +0000 Subject: [PATCH 414/469] Testing: grib_multi_support_reset --- examples/C/multi2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/C/multi2.c b/examples/C/multi2.c index c680cea58..4f35fa6eb 100644 --- a/examples/C/multi2.c +++ b/examples/C/multi2.c @@ -74,6 +74,7 @@ int main(int argc, char** argv) } fclose(fp); + codes_context_delete(NULL); printf("All OK\n"); return 0; } From d718d303d41f12d6512232e5e92a96201289e1b0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 22:04:50 +0000 Subject: [PATCH 415/469] ECC-1751: GRIB2: Consolidate parameters with fixed statistical processing ranges (part 1) --- definitions/grib2/cfVarName.def | 147 ++++++++++---------------------- definitions/grib2/name.def | 147 ++++++++++---------------------- definitions/grib2/paramId.def | 147 ++++++++++---------------------- definitions/grib2/shortName.def | 147 ++++++++++---------------------- definitions/grib2/units.def | 147 ++++++++++---------------------- 5 files changed, 230 insertions(+), 505 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index bf37ecbb7..3a2f1f247 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -4661,6 +4661,52 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Time-mean evapotranspiration flux +'metrf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time integral of potential evapotranspiration rate +'tipet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-mean potential evapotranspiration rate +'mpet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean volumetric soil moisture +'mvsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean snow depth water equivalent +'msd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean skin temperature +'mskt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Cross sectional area of flow in channel 'chcross' = { discipline = 1 ; @@ -6258,26 +6304,6 @@ parameterCategory = 4 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours -'eva06' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; - } -#Evaporation in the last 24 hours -'eva24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Fraction of snow cover 'fscov' = { discipline = 0 ; @@ -6438,105 +6464,24 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#Time-mean evapotranspiration rate in the last 24h -'avg_et24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Potential evapotranspiration rate 'pet' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 40 ; } -#Time-integrated potential evapotranspiration rate in the last 24h -'acc_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean potential evapotranspiration rate in the last 24h -'avg_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean volumetric soil moisture -'avg_swv24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Water runoff and drainage rate 'rod' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 42 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'acc_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean water runoff and drainage rate in the last 24h -'avg_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow depth water equivalent -'avg_sd24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean skin temperature -'avg_skt24' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Snow melt rate 'smr' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; } -#Time-integrated snow melt rate in the last 24h -'acc_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Forecast albedo 'al' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index ed770e28f..2a8c0a64b 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -4661,6 +4661,52 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Time-mean evapotranspiration flux +'Time-mean evapotranspiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time integral of potential evapotranspiration rate +'Time integral of potential evapotranspiration rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-mean potential evapotranspiration rate +'Time-mean potential evapotranspiration rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean volumetric soil moisture +'Time-mean volumetric soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean snow depth water equivalent +'Time-mean snow depth water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean skin temperature +'Time-mean skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Cross sectional area of flow in channel 'Cross sectional area of flow in channel' = { discipline = 1 ; @@ -6258,26 +6304,6 @@ parameterCategory = 4 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours -'Evaporation in the last 6 hours' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; - } -#Evaporation in the last 24 hours -'Evaporation in the last 24 hours' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Fraction of snow cover 'Fraction of snow cover' = { discipline = 0 ; @@ -6438,105 +6464,24 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#Time-mean evapotranspiration rate in the last 24h -'Time-mean evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Potential evapotranspiration rate 'Potential evapotranspiration rate' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 40 ; } -#Time-integrated potential evapotranspiration rate in the last 24h -'Time-integrated potential evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean potential evapotranspiration rate in the last 24h -'Time-mean potential evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean volumetric soil moisture -'Time-mean volumetric soil moisture' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Water runoff and drainage rate 'Water runoff and drainage rate' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 42 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'Time-integrated water runoff and drainage rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean water runoff and drainage rate in the last 24h -'Time-mean water runoff and drainage rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow depth water equivalent -'Time-mean snow depth water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean skin temperature -'Time-mean skin temperature' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Snow melt rate 'Snow melt rate' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; } -#Time-integrated snow melt rate in the last 24h -'Time-integrated snow melt rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Forecast albedo 'Forecast albedo' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 281adc5d6..453a51920 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -4661,6 +4661,52 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Time-mean evapotranspiration flux +'235074' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time integral of potential evapotranspiration rate +'235075' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-mean potential evapotranspiration rate +'235076' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean volumetric soil moisture +'235077' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean snow depth water equivalent +'235078' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean skin temperature +'235079' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Cross sectional area of flow in channel '240011' = { discipline = 1 ; @@ -6258,26 +6304,6 @@ parameterCategory = 4 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours -'260265' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; - } -#Evaporation in the last 24 hours -'260266' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Fraction of snow cover '260289' = { discipline = 0 ; @@ -6438,105 +6464,24 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#Time-mean evapotranspiration rate in the last 24h -'260435' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Potential evapotranspiration rate '260436' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 40 ; } -#Time-integrated potential evapotranspiration rate in the last 24h -'260437' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean potential evapotranspiration rate in the last 24h -'260438' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean volumetric soil moisture -'260440' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Water runoff and drainage rate '260443' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 42 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'260444' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean water runoff and drainage rate in the last 24h -'260445' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow depth water equivalent -'260472' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean skin temperature -'260473' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Snow melt rate '260475' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; } -#Time-integrated snow melt rate in the last 24h -'260476' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Forecast albedo '260509' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 94adbdbf7..806350301 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -4661,6 +4661,52 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Time-mean evapotranspiration flux +'metrf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time integral of potential evapotranspiration rate +'tipet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-mean potential evapotranspiration rate +'mpet' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean volumetric soil moisture +'mvsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean snow depth water equivalent +'msd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean skin temperature +'mskt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Cross sectional area of flow in channel 'chcross' = { discipline = 1 ; @@ -6258,26 +6304,6 @@ parameterCategory = 4 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours -'eva06' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; - } -#Evaporation in the last 24 hours -'eva24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Fraction of snow cover 'fscov' = { discipline = 0 ; @@ -6438,105 +6464,24 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#Time-mean evapotranspiration rate in the last 24h -'avg_et24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Potential evapotranspiration rate 'pet' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 40 ; } -#Time-integrated potential evapotranspiration rate in the last 24h -'acc_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean potential evapotranspiration rate in the last 24h -'avg_pet24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean volumetric soil moisture -'avg_swv24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Water runoff and drainage rate 'rod' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 42 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'acc_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean water runoff and drainage rate in the last 24h -'avg_rod24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow depth water equivalent -'avg_sd24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean skin temperature -'avg_skt24' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Snow melt rate 'smr' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; } -#Time-integrated snow melt rate in the last 24h -'acc_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Forecast albedo 'al' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 77cd1af91..411ec5996 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -4661,6 +4661,52 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Time-mean evapotranspiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time integral of potential evapotranspiration rate +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-mean potential evapotranspiration rate +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean volumetric soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean snow depth water equivalent +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-mean skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Cross sectional area of flow in channel 'm**2' = { discipline = 1 ; @@ -6258,26 +6304,6 @@ parameterCategory = 4 ; parameterNumber = 14 ; } -#Evaporation in the last 6 hours -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 6 ; - } -#Evaporation in the last 24 hours -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 79 ; - typeOfFirstFixedSurface = 1 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Fraction of snow cover 'Proportion' = { discipline = 0 ; @@ -6438,105 +6464,24 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#Time-mean evapotranspiration rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Potential evapotranspiration rate 'kg m**-2 s**-1' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 40 ; } -#Time-integrated potential evapotranspiration rate in the last 24h -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean potential evapotranspiration rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 40 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean volumetric soil moisture -'m**3 m**-3' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 25 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Water runoff and drainage rate 'kg m**-2 s**-1' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 42 ; } -#Time-integrated water runoff and drainage rate in the last 24h -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean water runoff and drainage rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 42 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow depth water equivalent -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 60 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean skin temperature -'K' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 17 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } #Snow melt rate 'kg m**-2 s**-1' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; } -#Time-integrated snow melt rate in the last 24h -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } #Forecast albedo '%' = { discipline = 0 ; From f3840e4e3aaa1f41cd68d4ae833319dfa224d95c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 22:05:19 +0000 Subject: [PATCH 416/469] Scripts: Use the retired feature --- definitions/create_def.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/definitions/create_def.pl b/definitions/create_def.pl index da5bed1ee..677a189df 100755 --- a/definitions/create_def.pl +++ b/definitions/create_def.pl @@ -32,6 +32,7 @@ sub create_cfName { centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName from param,grib_encoding,grib,attribute,centre,units,cf where param.hide_def=0 and + param.retired=0 and grib_encoding.id=grib.encoding_id and param.id=grib_encoding.param_id and attribute.id=grib.attribute_id and @@ -111,6 +112,7 @@ sub create_def { centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName from param,grib_encoding,grib,attribute,centre,units where param.hide_def=0 and + param.retired=0 and grib_encoding.id=grib.encoding_id and param.id=grib_encoding.param_id and attribute.id=grib.attribute_id and @@ -187,6 +189,7 @@ sub create_paramId_def { my $query="select edition,centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName from param,grib_encoding,grib,attribute,centre where param.hide_def=0 and + param.retired=0 and grib_encoding.id=grib.encoding_id and param.id=grib_encoding.param_id and attribute.id=grib.attribute_id and From 5868eb2006e5423e4938d25b53363208e8293114 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jan 2024 22:06:18 +0000 Subject: [PATCH 417/469] ECC-1751: GRIB2: Consolidate parameters with fixed statistical processing ranges (part 2) --- definitions/grib2/cfVarName.legacy.def | 91 ++++++++++++++++++++++++++ definitions/grib2/name.legacy.def | 91 ++++++++++++++++++++++++++ definitions/grib2/paramId.legacy.def | 91 ++++++++++++++++++++++++++ definitions/grib2/shortName.legacy.def | 91 ++++++++++++++++++++++++++ definitions/grib2/units.legacy.def | 91 ++++++++++++++++++++++++++ 5 files changed, 455 insertions(+) diff --git a/definitions/grib2/cfVarName.legacy.def b/definitions/grib2/cfVarName.legacy.def index 8a246b72e..40534b276 100644 --- a/definitions/grib2/cfVarName.legacy.def +++ b/definitions/grib2/cfVarName.legacy.def @@ -66,3 +66,94 @@ parameterNumber = 37 ; typeOfFirstFixedSurface = 1 ; } +#Evaporation in the last 6 hours +'eva06' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; +} +#Time-mean evapotranspiration rate in the last 24h +'avg_et24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated potential evapotranspiration rate in the last 24h +'acc_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean potential evapotranspiration rate in the last 24h +'avg_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean volumetric soil moisture +'avg_swv24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated water runoff and drainage rate in the last 24h +'acc_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean water runoff and drainage rate in the last 24h +'avg_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean snow depth water equivalent +'avg_sd24' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean skin temperature +'avg_skt24' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated snow melt rate in the last 24h +'acc_smr24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} diff --git a/definitions/grib2/name.legacy.def b/definitions/grib2/name.legacy.def index 613a417d7..62e965b1c 100644 --- a/definitions/grib2/name.legacy.def +++ b/definitions/grib2/name.legacy.def @@ -66,3 +66,94 @@ parameterNumber = 37 ; typeOfFirstFixedSurface = 1 ; } +#Evaporation in the last 6 hours +'Evaporation in the last 6 hours' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; +} +#Time-mean evapotranspiration rate in the last 24h +'Time-mean evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated potential evapotranspiration rate in the last 24h +'Time-integrated potential evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean potential evapotranspiration rate in the last 24h +'Time-mean potential evapotranspiration rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean volumetric soil moisture +'Time-mean volumetric soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated water runoff and drainage rate in the last 24h +'Time-integrated water runoff and drainage rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean water runoff and drainage rate in the last 24h +'Time-mean water runoff and drainage rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean snow depth water equivalent +'Time-mean snow depth water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean skin temperature +'Time-mean skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated snow melt rate in the last 24h +'Time-integrated snow melt rate in the last 24h' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} diff --git a/definitions/grib2/paramId.legacy.def b/definitions/grib2/paramId.legacy.def index 1bda192d7..489f33c41 100644 --- a/definitions/grib2/paramId.legacy.def +++ b/definitions/grib2/paramId.legacy.def @@ -66,3 +66,94 @@ parameterNumber = 37 ; typeOfFirstFixedSurface = 1 ; } +#Evaporation in the last 6 hours +'260265' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; +} +#Time-mean evapotranspiration rate in the last 24h +'260435' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated potential evapotranspiration rate in the last 24h +'260437' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean potential evapotranspiration rate in the last 24h +'260438' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean volumetric soil moisture +'260440' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated water runoff and drainage rate in the last 24h +'260444' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean water runoff and drainage rate in the last 24h +'260445' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean snow depth water equivalent +'260472' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean skin temperature +'260473' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated snow melt rate in the last 24h +'260476' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} diff --git a/definitions/grib2/shortName.legacy.def b/definitions/grib2/shortName.legacy.def index 8a246b72e..40534b276 100644 --- a/definitions/grib2/shortName.legacy.def +++ b/definitions/grib2/shortName.legacy.def @@ -66,3 +66,94 @@ parameterNumber = 37 ; typeOfFirstFixedSurface = 1 ; } +#Evaporation in the last 6 hours +'eva06' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; +} +#Time-mean evapotranspiration rate in the last 24h +'avg_et24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated potential evapotranspiration rate in the last 24h +'acc_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean potential evapotranspiration rate in the last 24h +'avg_pet24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean volumetric soil moisture +'avg_swv24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated water runoff and drainage rate in the last 24h +'acc_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean water runoff and drainage rate in the last 24h +'avg_rod24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean snow depth water equivalent +'avg_sd24' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean skin temperature +'avg_skt24' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated snow melt rate in the last 24h +'acc_smr24' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} diff --git a/definitions/grib2/units.legacy.def b/definitions/grib2/units.legacy.def index 5ce488f2e..145f4aaac 100644 --- a/definitions/grib2/units.legacy.def +++ b/definitions/grib2/units.legacy.def @@ -66,3 +66,94 @@ parameterNumber = 37 ; typeOfFirstFixedSurface = 1 ; } +#Evaporation in the last 6 hours +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 6 ; +} +#Time-mean evapotranspiration rate in the last 24h +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 39 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated potential evapotranspiration rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean potential evapotranspiration rate in the last 24h +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 40 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean volumetric soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated water runoff and drainage rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} +#Time-mean water runoff and drainage rate in the last 24h +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 42 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean snow depth water equivalent +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-mean skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 24 ; +} +#Time-integrated snow melt rate in the last 24h +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfStatisticalProcessing = 1 ; + lengthOfTimeRange = 24 ; +} From ff4e751cf01cbe88310048ee68d2b6ac2971585d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 27 Jan 2024 23:49:54 +0000 Subject: [PATCH 418/469] Testing: codes_values_check (string and double) --- examples/C/grib_values_check.c | 39 +++++++++++++++++++++------------ examples/C/grib_values_check.sh | 4 ++-- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/examples/C/grib_values_check.c b/examples/C/grib_values_check.c index 5582c6af6..901286834 100644 --- a/examples/C/grib_values_check.c +++ b/examples/C/grib_values_check.c @@ -16,9 +16,9 @@ int main(int argc, char* argv[]) char infile[] = "../../data/reduced_gaussian_model_level.grib1"; codes_handle* h = NULL; codes_context* c = codes_context_get_default(); - codes_values values[2]; - int nvalues = 2; - int i; + codes_values values[4]; + const int nvalues = sizeof(values)/sizeof(values[0]); + int i = 0; char* name = NULL; f = fopen(infile, "rb"); @@ -34,30 +34,41 @@ int main(int argc, char* argv[]) } fclose(f); - values[0].type = CODES_TYPE_LONG; - values[0].name = "centre"; - values[0].long_value = 98; + values[i].type = CODES_TYPE_LONG; + values[i].name = "centre"; + values[i].long_value = 98; + i++; - values[1].type = CODES_TYPE_LONG; - values[1].name = "level"; - values[1].long_value = 2; + values[i].type = CODES_TYPE_DOUBLE; + values[i].name = "bitsPerValue"; + values[i].double_value = 13; + i++; + + values[i].type = CODES_TYPE_STRING; + values[i].name = "identifier"; + values[i].string_value = "GRIB"; + i++; + + values[i].type = CODES_TYPE_LONG; + values[i].name = "level"; + values[i].long_value = 2; /* Intentionally made different; actual level==1 */ - /*CODES_VALUE_DIFFERENT -> value is different*/ err = codes_values_check(h, values, nvalues); if (err) { for (i = 0; i < nvalues; i++) { + printf("i=%d %s\n",i, values[i].name); if (values[i].error == err) name = (char*)values[i].name; } - fprintf(stderr, "Error: \"%s\" %s\n", name, codes_get_error_message(err)); + fprintf(stderr, "Error: \"%s\" - %s\n", name, codes_get_error_message(err)); } - values[1].name = "levelll"; - err = codes_values_check(h, values, nvalues); + values[1].name = "levelll"; /* non-existent key */ + err = codes_values_check(h, values, nvalues); if (err) { for (i = 0; i < nvalues; i++) { if (values[i].error == err) name = (char*)values[i].name; } - fprintf(stderr, "Error: \"%s\" %s\n", name, codes_get_error_message(err)); + fprintf(stderr, "Error: \"%s\" - %s\n", name, codes_get_error_message(err)); } codes_handle_delete(h); diff --git a/examples/C/grib_values_check.sh b/examples/C/grib_values_check.sh index 4a86131dc..943028848 100755 --- a/examples/C/grib_values_check.sh +++ b/examples/C/grib_values_check.sh @@ -16,8 +16,8 @@ tempErr=${label}.tmp.err tempRef=${label}.tmp.ref cat > $tempRef < Date: Sun, 28 Jan 2024 14:50:24 +0000 Subject: [PATCH 419/469] Testing: grib_copy_key (arrays) --- examples/C/CMakeLists.txt | 2 ++ examples/C/grib_copy_keys.c | 69 ++++++++++++++++++++++++++++++++++++ examples/C/grib_copy_keys.sh | 15 ++++++++ 3 files changed, 86 insertions(+) create mode 100644 examples/C/grib_copy_keys.c create mode 100755 examples/C/grib_copy_keys.sh diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index a50dc8d0a..5e3795ef8 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -25,6 +25,7 @@ list( APPEND test_bins grib_list grib_get_data grib_sections_copy + grib_copy_keys grib_iterator_bitmap grib_clone grib_copy_message @@ -65,6 +66,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_data large_grib1 grib_sections_copy + grib_copy_keys get_product_kind_samples) list(APPEND tests_extra grib_iterator diff --git a/examples/C/grib_copy_keys.c b/examples/C/grib_copy_keys.c new file mode 100644 index 000000000..1b2de9fe7 --- /dev/null +++ b/examples/C/grib_copy_keys.c @@ -0,0 +1,69 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ +#include "eccodes.h" +#include + +static void usage(const char* prog) +{ + printf("usage: %s in1.grib in2.grib\n", prog); + exit(1); +} + +int main(int argc, char* argv[]) +{ + codes_handle *hfrom, *hto; + FILE* in; + char *in_name1, *in_name2; + int i = 0, err = 0; + const char* keys[] = { "gridType", "pl", "values" }; + const int keys_count = sizeof(keys) / sizeof(keys[0]); + + if (argc != 3) usage(argv[0]); + + in_name1 = argv[1]; + in_name2 = argv[2]; + + in = fopen(in_name1, "rb"); + if (!in) { + perror(in_name1); + exit(1); + } + + hfrom = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); + CODES_CHECK(err, 0); + fclose(in); + + in = fopen(in_name2, "rb"); + if (!in) { + perror(in_name2); + exit(1); + } + + hto = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); + CODES_CHECK(err, 0); + fclose(in); + + for (i = 0; i < keys_count; i++) { + printf("Copy key: %s\n", keys[i]); + err = codes_copy_key(hfrom, hto, keys[i], GRIB_TYPE_UNDEFINED); + CODES_CHECK(err, 0); + } + + // codes_write_message(hto, "temp.out", "w"); CODES_CHECK(err, 0); + { + int dump_flags = GRIB_DUMP_FLAG_CODED | GRIB_DUMP_FLAG_OCTET | GRIB_DUMP_FLAG_VALUES | GRIB_DUMP_FLAG_READ_ONLY; + codes_dump_content(hto, stdout, "wmo", dump_flags, NULL); + } + + codes_handle_delete(hfrom); + codes_handle_delete(hto); + + return err; +} diff --git a/examples/C/grib_copy_keys.sh b/examples/C/grib_copy_keys.sh new file mode 100755 index 000000000..20b247242 --- /dev/null +++ b/examples/C/grib_copy_keys.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +FROM_FILE=$ECCODES_SAMPLES_PATH/gg_sfc_grib2.tmpl +TO_FILE=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +${examples_dir}/c_grib_copy_keys $FROM_FILE $TO_FILE From bacaabd32f751be6e5e60cb1674d3225a853756e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 28 Jan 2024 14:50:38 +0000 Subject: [PATCH 420/469] Testing: grib_copy_key (arrays) --- examples/C/grib_copy_keys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/C/grib_copy_keys.c b/examples/C/grib_copy_keys.c index 1b2de9fe7..2b4585df1 100644 --- a/examples/C/grib_copy_keys.c +++ b/examples/C/grib_copy_keys.c @@ -51,7 +51,7 @@ int main(int argc, char* argv[]) fclose(in); for (i = 0; i < keys_count; i++) { - printf("Copy key: %s\n", keys[i]); + printf("Copying key: %s\n", keys[i]); err = codes_copy_key(hfrom, hto, keys[i], GRIB_TYPE_UNDEFINED); CODES_CHECK(err, 0); } From dda4b129d10bdee695230b9c26228ef5aeec0b07 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 28 Jan 2024 17:32:29 +0000 Subject: [PATCH 421/469] Testing: get_error_message --- tests/unit_tests.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 625f1c4bc..539b03873 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -701,10 +701,19 @@ void test_grib2_select_PDTN() Assert( 0 == grib2_is_PDTN_EPS(0) ); } +void test_codes_get_error_message() +{ + printf("Running %s ...\n", __func__); + const char* errmsg = grib_get_error_message(6666); + Assert( STR_EQUAL(errmsg, "Unknown error -6666")); +} + int main(int argc, char** argv) { printf("Doing unit tests. ecCodes version = %ld\n", grib_get_api_version()); + test_codes_get_error_message(); + test_iarray(); test_darray(); test_sarray(); From f3f13ba36df4de56c04a132b31f09725539a2052 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 28 Jan 2024 17:32:44 +0000 Subject: [PATCH 422/469] Dead code removal --- src/grib_accessor_class_mars_param.cc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index fc120dd89..beb7a68c5 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -15,7 +15,7 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_ascii - IMPLEMENTS = pack_string;unpack_string + IMPLEMENTS = unpack_string IMPLEMENTS = init; string_length MEMBERS= const char* paramId MEMBERS= const char* table @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); @@ -77,7 +76,7 @@ static grib_accessor_class _grib_accessor_class_mars_param = { 0, /* pack_float */ 0, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ + 0, /* pack_string */ &unpack_string, /* unpack_string */ 0, /* pack_string_array */ 0, /* unpack_string_array */ @@ -114,14 +113,12 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) self->param = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); } -// For an alternative implementation of pack_string and unpack_string, see +// For an implementation of pack_string, see // src/deprecated/grib_accessor_class_mars_param.cc -// -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} +// For an alternative implementation of unpack_string, see +// src/deprecated/grib_accessor_class_mars_param.cc +// static int unpack_string(grib_accessor* a, char* val, size_t* len) { grib_accessor_mars_param* self = (grib_accessor_mars_param*)a; From 09eecc2d2a5d8c5faa494c71a94486dd2790364b Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Mon, 29 Jan 2024 13:29:02 +0100 Subject: [PATCH 423/469] add stream configuation for class cerise --- definitions/mars/grib.mmsf.fc.def | 2 ++ definitions/mars/grib.msmm.fcmean.def | 2 ++ 2 files changed, 4 insertions(+) diff --git a/definitions/mars/grib.mmsf.fc.def b/definitions/mars/grib.mmsf.fc.def index 9d47177d1..d213cee45 100644 --- a/definitions/mars/grib.mmsf.fc.def +++ b/definitions/mars/grib.mmsf.fc.def @@ -15,3 +15,5 @@ if (centre == 80 && subCentre == 98 && class is "c3") { constant cnmc_cmcc = 'cmcc'; alias mars.origin = cnmc_cmcc; } + +if (class is "ci") { unalias mars.method; } diff --git a/definitions/mars/grib.msmm.fcmean.def b/definitions/mars/grib.msmm.fcmean.def index 2330d5ace..800a49134 100644 --- a/definitions/mars/grib.msmm.fcmean.def +++ b/definitions/mars/grib.msmm.fcmean.def @@ -16,3 +16,5 @@ if (centre == 80 && subCentre == 98 && class is "c3") { constant cnmc_cmcc = 'cmcc'; alias mars.origin = cnmc_cmcc; } + +if (class is "ci") { unalias mars.method; } From 9a7842d549ec8be3a97558f465cca6b954adce55 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jan 2024 12:30:49 +0000 Subject: [PATCH 424/469] Testing: GRIB bitmap as string --- src/grib_accessor_class_bitmap.cc | 5 +++-- tests/grib_bitmap.sh | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index e5825a3c3..0bdc52d25 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -274,7 +274,7 @@ static void update_size(grib_accessor* a, size_t s) static int unpack_string(grib_accessor* a, char* val, size_t* len) { - int i = 0; + long i = 0; grib_handle* hand = grib_handle_of_accessor(a); if (len[0] < (a->length)) { @@ -284,8 +284,9 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) return GRIB_ARRAY_TOO_SMALL; } - for (i = 0; i < a->length; i++) + for (i = 0; i < a->length; i++) { val[i] = hand->buffer->data[a->offset + i]; + } len[0] = a->length; diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index 46d213a0d..75da0d70a 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -156,5 +156,13 @@ set -e grep -q "missing bitmap" $tempOut +# bitmap as string +cat > $tempRules< Date: Mon, 29 Jan 2024 12:53:07 +0000 Subject: [PATCH 425/469] Testing: GRIB bitmap string length --- src/grib_accessor_class_bitmap.cc | 14 ++++++++++---- tests/grib_bitmap.sh | 6 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 0bdc52d25..89cf46948 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -17,12 +17,12 @@ START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_bytes - IMPLEMENTS = next_offset IMPLEMENTS = unpack_double;unpack_double_element;unpack_double_element_set IMPLEMENTS = unpack_float IMPLEMENTS = unpack_long IMPLEMENTS = unpack_string + IMPLEMENTS = string_length IMPLEMENTS = init;dump;update_size MEMBERS=const char* tableReference MEMBERS=const char* missing_value @@ -46,6 +46,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); +static size_t string_length(grib_accessor*); static long next_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); @@ -78,7 +79,7 @@ static grib_accessor_class _grib_accessor_class_bitmap = { 0, /* destroy */ &dump, /* dump */ &next_offset, /* next_offset */ - 0, /* get length of string */ + &string_length, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ @@ -272,14 +273,19 @@ static void update_size(grib_accessor* a, size_t s) a->length = s; } +static size_t string_length(grib_accessor* a) +{ + return a->length; +} + static int unpack_string(grib_accessor* a, char* val, size_t* len) { long i = 0; grib_handle* hand = grib_handle_of_accessor(a); if (len[0] < (a->length)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", - len[0], a->name, a->length); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s, it contains %ld values", + __func__, len[0], a->name, a->length); len[0] = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index 75da0d70a..fb5994db4 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -160,9 +160,9 @@ grep -q "missing bitmap" $tempOut cat > $tempRules< $REDIRECT +${tools_dir}/grib_filter $tempRules $data_dir/missing_field.grib1 > $REDIRECT +${tools_dir}/grib_filter $tempRules $data_dir/reduced_latlon_surface.grib2 > $REDIRECT # Clean up rm -f $tempData1 $tempData2 $temp1 $temp2 $tempRules $tempOut From a97fef24f70434041c11004399eabf773fd3734b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jan 2024 16:21:44 +0000 Subject: [PATCH 426/469] Testing: wmo_read_any_from_stream --- tests/CMakeLists.txt | 2 ++ tests/wmo_read_any_from_stream.cc | 48 +++++++++++++++++++++++++++++++ tests/wmo_read_any_from_stream.sh | 25 ++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 tests/wmo_read_any_from_stream.cc create mode 100755 tests/wmo_read_any_from_stream.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d6bb281d1..96e828a69 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,6 +13,7 @@ list(APPEND test_c_bins wmo_read_bufr_from_file wmo_read_gts_from_file wmo_read_any_from_file + wmo_read_any_from_stream grib_bpv_limit grib_double_cmp read_any @@ -184,6 +185,7 @@ if( HAVE_BUILD_TOOLS ) wmo_read_bufr_from_file wmo_read_gts_from_file wmo_read_any_from_file + wmo_read_any_from_stream bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_any_from_stream.cc b/tests/wmo_read_any_from_stream.cc new file mode 100644 index 000000000..003a4b51c --- /dev/null +++ b/tests/wmo_read_any_from_stream.cc @@ -0,0 +1,48 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include + +#include "grib_api_internal.h" + +#define SIZE 1024 * 1024 +char buffer[SIZE]; + +static long readcb(void* data, void* buffer, long len) +{ + //long l = handle->read(buffer, len); + // ecCodes interprets a -1 as EOF + //return l == 0 ? -1 : l; + return -1; +} + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + grib_handle* h = NULL; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + h = grib_handle_new_from_file(0, in, &err); + if (!h) return 1; + + const void* data = NULL; + GRIB_CHECK(grib_get_message(h, &data, &len), 0); + + err = wmo_read_any_from_stream( (void*)data, &readcb, buffer, &len ); + printf("err = %d \n",err); + + return 0; +} diff --git a/tests/wmo_read_any_from_stream.sh b/tests/wmo_read_any_from_stream.sh new file mode 100755 index 000000000..cb1040478 --- /dev/null +++ b/tests/wmo_read_any_from_stream.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="wmo_read_any_from_stream_test" +tempText=temp.$label.txt +tempGrib=temp.$label.grib + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + +${test_dir}/wmo_read_any_from_stream $data_dir/sample.grib2 + +# Clean up +rm -f $tempText $tempGrib From 73c79afd024061b0f2342a00435a80c7e4585ae8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jan 2024 17:30:19 +0000 Subject: [PATCH 427/469] Examples: sections copy --- examples/C/grib_sections_copy.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/C/grib_sections_copy.sh b/examples/C/grib_sections_copy.sh index 13cdf6a69..eb69f7d23 100755 --- a/examples/C/grib_sections_copy.sh +++ b/examples/C/grib_sections_copy.sh @@ -13,6 +13,13 @@ REGUL_GRID_FILE=${proj_dir}/samples/regular_ll_sfc_grib2.tmpl GAUSS_GRID_FILE=${proj_dir}/samples/reduced_gg_pl_640_grib2.tmpl OUTPUT=temp.sections.grib + +sample_pv=$ECCODES_SAMPLES_PATH/reduced_gg_ml_grib1.tmpl +sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl +${examples_dir}/c_grib_sections_copy $sample_pv $sample_g1 l $OUTPUT +${examples_dir}/c_grib_sections_copy $sample_pv $sample_pv g $OUTPUT + + ################## # Copy the GRID section from REGUL_GRID_FILE ${examples_dir}/c_grib_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE g $OUTPUT >/dev/null From c7374ce82c5e445b99914ff8ca32ad7b2e16d2fd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jan 2024 18:57:43 +0000 Subject: [PATCH 428/469] Function rename --- src/eccodes_prototypes.h | 2 +- src/grib_accessor_class_data_ccsds_packing.cc | 2 +- src/grib_accessor_class_data_simple_packing.cc | 2 +- src/grib_util.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index c8a12553b..9041e2bc2 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1351,7 +1351,7 @@ int grib2_is_PDTN_AerosolOptical(long productDefinitionTemplateNumber); int grib2_select_PDTN(int is_eps, int is_instant, int is_chemical, int is_chemical_srcsink, int is_chemical_distfn, int is_aerosol, int is_aerosol_optical); size_t sum_of_pl_array(const long* pl, size_t plsize); int grib_is_earth_oblate(grib_handle* h); -int grib_check_data_values_range(grib_handle* h, const double min_val, const double max_val); +int grib_check_data_values_minmax(grib_handle* h, const double min_val, const double max_val); int grib_producing_large_constant_fields(grib_handle* h, int edition); int grib_util_grib_data_quality_check(grib_handle* h, double min_val, double max_val); diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 06f9317b7..f5c31d74f 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -274,7 +274,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) else if (val[i] < min) min = val[i]; } - if ((err = grib_check_data_values_range(hand, min, max)) != GRIB_SUCCESS) { + if ((err = grib_check_data_values_minmax(hand, min, max)) != GRIB_SUCCESS) { return err; } diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 92d9394ce..0d44acd7f 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -632,7 +632,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) else if (val[i] < min) min = val[i]; } - if ((err = grib_check_data_values_range(gh, min, max)) != GRIB_SUCCESS) { + if ((err = grib_check_data_values_minmax(gh, min, max)) != GRIB_SUCCESS) { return err; } diff --git a/src/grib_util.cc b/src/grib_util.cc index e5f507a73..e09bc7a27 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -2055,7 +2055,7 @@ int grib_is_earth_oblate(grib_handle* h) return 0; } -int grib_check_data_values_range(grib_handle* h, const double min_val, const double max_val) +int grib_check_data_values_minmax(grib_handle* h, const double min_val, const double max_val) { int result = GRIB_SUCCESS; grib_context* ctx = h->context; From 80b06beee81d6900067a2726f79200a020f6d904 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jan 2024 12:08:46 +0000 Subject: [PATCH 429/469] Get rid of the NUMBER macro --- src/grib_accessor_class.cc | 4 +--- src/grib_accessor_class_proj_string.cc | 4 ++-- src/grib_dumper_class.cc | 10 +++++----- src/grib_errors.cc | 5 ++--- src/grib_errors.cc.in | 5 ++--- src/grib_geography.cc | 5 ++--- src/grib_iterator_class.cc | 7 +++---- src/grib_nearest_class.cc | 9 ++++----- src/grib_templates.cc | 4 +--- src/grib_util.cc | 6 ++---- 10 files changed, 24 insertions(+), 35 deletions(-) diff --git a/src/grib_accessor_class.cc b/src/grib_accessor_class.cc index 524e40ecf..9de104328 100644 --- a/src/grib_accessor_class.cc +++ b/src/grib_accessor_class.cc @@ -71,8 +71,6 @@ static struct table_entry table[] = { }; #endif /* ACCESSOR_FACTORY_USE_TRIE */ -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - grib_section* grib_create_root_section(const grib_context* context, grib_handle* h) { char* fpath = 0; @@ -113,7 +111,7 @@ static GRIB_INLINE grib_accessor_class* get_class(grib_context* c, char* type) if ((the_class = (grib_accessor_class**)grib_trie_get(c->classes, type)) != NULL) return *(the_class); - table_count = NUMBER(table); + const int table_count = sizeof(table) / sizeof(table[0]); for (i = 0; i < table_count; i++) { if (grib_inline_strcmp(type, table[i].type) == 0) { grib_trie_insert(c->classes, type, table[i].cclass); diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 00b25c6a3..219ff09d5 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -275,7 +275,6 @@ static int proj_mercator(grib_handle* h, char* result) return err; } -#define NUMBER(a) (sizeof(a) / sizeof(a[0])) static proj_mapping proj_mappings[] = { { "regular_ll", &proj_unprojected }, { "regular_gg", &proj_unprojected }, @@ -308,7 +307,8 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) err = grib_get_string(h, self->grid_type, grid_type, &size); if (err) return err; - for (i = 0; !found && i < NUMBER(proj_mappings); ++i) { + const size_t num_proj_mappings = sizeof(proj_mappings) / sizeof(proj_mappings[0]); + for (i = 0; !found && i < num_proj_mappings; ++i) { proj_mapping pm = proj_mappings[i]; if (strcmp(grid_type, pm.gridType) == 0) { found = 1; diff --git a/src/grib_dumper_class.cc b/src/grib_dumper_class.cc index 3f204957c..abd1cbf02 100644 --- a/src/grib_dumper_class.cc +++ b/src/grib_dumper_class.cc @@ -26,12 +26,11 @@ static struct table_entry table[] = { #include "grib_dumper_factory.h" }; -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - grib_dumper* grib_dumper_factory(const char* op, const grib_handle* h, FILE* out, unsigned long option_flags, void* arg) { - int i; - for (i = 0; i < NUMBER(table); i++) + size_t i = 0; + const size_t num_table_entries = sizeof(table) / sizeof(table[0]); + for (i = 0; i < num_table_entries; i++) if (strcmp(op, table[i].type) == 0) { grib_dumper_class* c = *(table[i].cclass); grib_dumper* d = (grib_dumper*)grib_context_malloc_clear(h->context, c->size); @@ -83,7 +82,8 @@ void grib_dump_content(const grib_handle* h, FILE* f, const char* mode, unsigned dumper = grib_dumper_factory(mode ? mode : "serialize", h, f, flags, data); if (!dumper) { fprintf(stderr, "Here are some possible values for the dumper mode:\n"); - for (size_t i = 0; i < NUMBER(table); i++) { + const size_t num_table_entries = sizeof(table) / sizeof(table[0]); + for (size_t i = 0; i < num_table_entries; i++) { const char* t = table[i].type; if (strstr(t, "bufr") == NULL && strstr(t, "grib") == NULL) { fprintf(stderr, "\t%s\n", t); diff --git a/src/grib_errors.cc b/src/grib_errors.cc index d94b5f845..90dc45e79 100644 --- a/src/grib_errors.cc +++ b/src/grib_errors.cc @@ -94,12 +94,11 @@ static const char *errors[] = { "Assertion failure", /* -79 GRIB_ASSERTION_FAILURE */ }; -#define NUMBER(a) sizeof(a)/sizeof(a[0]) - const char* grib_get_error_message(int code) { code = -code; - if (code < 0 || code >= NUMBER(errors)) { + const int num_errors = int( sizeof(errors)/sizeof(errors[0]) ); + if (code < 0 || code >= num_errors) { static char mess[64]; snprintf(mess, sizeof(mess), "Unknown error %d", code); return mess; diff --git a/src/grib_errors.cc.in b/src/grib_errors.cc.in index 4e826bb8b..dfc1a1db1 100644 --- a/src/grib_errors.cc.in +++ b/src/grib_errors.cc.in @@ -15,12 +15,11 @@ static const char *errors[] = { !ERRORS go in here }; -#define NUMBER(a) sizeof(a)/sizeof(a[0]) - const char* grib_get_error_message(int code) { code = -code; - if (code < 0 || code >= NUMBER(errors)) { + const int num_errors = int( sizeof(errors)/sizeof(errors[0]) ); + if (code < 0 || code >= num_errors) { static char mess[64]; snprintf(mess, sizeof(mess), "Unknown error %d", code); return mess; diff --git a/src/grib_geography.cc b/src/grib_geography.cc index d70945d32..844a38abb 100644 --- a/src/grib_geography.cc +++ b/src/grib_geography.cc @@ -16,7 +16,6 @@ #include #include -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) #define MAXITER 10 #define RAD2DEG 57.29577951308232087684 /* 180 over pi */ @@ -28,7 +27,7 @@ static void gauss_first_guess(long trunc, double* vals) { - long i = 0, numVals; + long i = 0, numVals; static double gvals[] = { 2.4048255577E0, 5.5200781103E0, @@ -82,7 +81,7 @@ static void gauss_first_guess(long trunc, double* vals) 156.2950342685E0, }; - numVals = NUMBER(gvals); + numVals = sizeof(gvals) / sizeof(gvals[0]); for (i = 0; i < trunc; i++) { if (i < numVals) vals[i] = gvals[i]; diff --git a/src/grib_iterator_class.cc b/src/grib_iterator_class.cc index 571221836..6e1ec78b7 100644 --- a/src/grib_iterator_class.cc +++ b/src/grib_iterator_class.cc @@ -15,8 +15,6 @@ #include "grib_api_internal.h" -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - /* This file is generated by ./make_class.pl */ #include "grib_iterator_class.h" @@ -33,11 +31,12 @@ static const struct table_entry table[] = { grib_iterator* grib_iterator_factory(grib_handle* h, grib_arguments* args, unsigned long flags, int* error) { - size_t i = 0; + size_t i = 0, num_table_entries = 0; const char* type = (char*)grib_arguments_get_name(h, args, 0); *error = GRIB_NOT_IMPLEMENTED; - for (i = 0; i < NUMBER(table); i++) { + num_table_entries = sizeof(table) / sizeof(table[0]); + for (i = 0; i < num_table_entries; i++) { if (strcmp(type, table[i].type) == 0) { grib_iterator_class* c = *(table[i].cclass); grib_iterator* it = (grib_iterator*)grib_context_malloc_clear(h->context, c->size); diff --git a/src/grib_nearest_class.cc b/src/grib_nearest_class.cc index 42e618ff8..8128e844e 100644 --- a/src/grib_nearest_class.cc +++ b/src/grib_nearest_class.cc @@ -10,8 +10,6 @@ #include "grib_api_internal.h" -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - /* This file is generated by ./make_class.pl */ #include "grib_nearest_class.h" @@ -28,11 +26,12 @@ static const struct table_entry table[] = { grib_nearest* grib_nearest_factory(grib_handle* h, grib_arguments* args, int* error) { - size_t i = 0; - *error = GRIB_NOT_IMPLEMENTED; + size_t i = 0, num_table_entries = 0; + *error = GRIB_NOT_IMPLEMENTED; char* type = (char*)grib_arguments_get_name(h, args, 0); - for (i = 0; i < NUMBER(table); i++) { + num_table_entries = sizeof(table) / sizeof(table[0]); + for (i = 0; i < num_table_entries; i++) { if (strcmp(type, table[i].type) == 0) { grib_nearest_class* c = *(table[i].cclass); grib_nearest* it = (grib_nearest*)grib_context_malloc_clear(h->context, c->size); diff --git a/src/grib_templates.cc b/src/grib_templates.cc index 01e0bc39f..3e357382c 100644 --- a/src/grib_templates.cc +++ b/src/grib_templates.cc @@ -25,12 +25,10 @@ // size_t size; // } grib_templates; -// #define NUMBER(x) (sizeof(x) / sizeof(x[0])) // grib_handle* grib_internal_sample(grib_context* c,const char* name) // { // size_t i; -// const size_t num_samples = NUMBER(templates); -// Assert(0); +// const size_t num_samples = sizeof(templates) / sizeof(templates[0]); // for(i = 0; i < num_samples; i++) // if(strcmp(name,templates[i].name) == 0) // return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size); diff --git a/src/grib_util.cc b/src/grib_util.cc index e09bc7a27..ab6283987 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -1862,13 +1862,11 @@ int parse_keyval_string(const char* grib_tool, // Return 1 if the productDefinitionTemplateNumber (GRIB2) is for EPS (ensemble) products int grib2_is_PDTN_EPS(long pdtn) { -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - static int eps_pdtns[] = { 1, 11, 33, 34, 41, 43, 45, 47, 49, 54, 56, 58, 59, 60, 61, 63, 68, 71, 73, 77, 79, 81, 83, 84, 85, 92, 94, 96, 98 }; - size_t i; - for (i = 0; i < NUMBER(eps_pdtns); ++i) { + size_t i = 0, num_epss = (sizeof(eps_pdtns) / sizeof(eps_pdtns[0])); + for (i = 0; i < num_epss; ++i) { if (eps_pdtns[i] == pdtn) return 1; } return 0; From a58fc7816849a7fc4fbf0225725bf66df968cedc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jan 2024 15:57:40 +0000 Subject: [PATCH 430/469] codes_get_string error conditions --- src/grib_accessor_class_md5.cc | 10 ++++---- tests/CMakeLists.txt | 2 ++ tests/codes_get_string.cc | 44 ++++++++++++++++++++++++++++++++++ tests/codes_get_string.sh | 34 ++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 tests/codes_get_string.cc create mode 100755 tests/codes_get_string.sh diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 142270098..d70e53af1 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -176,13 +176,13 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) unsigned char* p; long offset = 0, length = 0; grib_string_list* blocklist = NULL; - grib_accessor* b = NULL; - int ret = 0; - int i = 0; + int ret = GRIB_SUCCESS; + long i = 0; struct grib_md5_state md5c; if (*len < 32) { - grib_context_log(a->context, GRIB_LOG_ERROR, "md5: array too small"); + // grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_md5 unpack_string: Array too small"); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_ARRAY_TOO_SMALL; } @@ -201,7 +201,7 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) if (self->blocklist) blocklist = self->blocklist; while (blocklist && blocklist->value) { - b = grib_find_accessor(grib_handle_of_accessor(a), blocklist->value); + const grib_accessor* b = grib_find_accessor(grib_handle_of_accessor(a), blocklist->value); if (!b) { grib_context_free(a->context, mess); return GRIB_NOT_FOUND; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 96e828a69..eca4a11b3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -57,6 +57,7 @@ list(APPEND test_c_bins codes_compare_keys codes_dump_content codes_codetable + codes_get_string grib_sh_ieee64 grib_ieee grib_set_bytes @@ -262,6 +263,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_force bufr_ecc-556 codes_ecc-1698 + codes_get_string codes_codetable gts_get gts_ls diff --git a/tests/codes_get_string.cc b/tests/codes_get_string.cc new file mode 100644 index 000000000..8ca3bccb7 --- /dev/null +++ b/tests/codes_get_string.cc @@ -0,0 +1,44 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "eccodes.h" +#undef NDEBUG +#include + +int main(int argc, char* argv[]) +{ + codes_handle* h = NULL; + size_t len = 0; + int err = 0; + + assert(argc == 3); + + const char* infile = argv[1]; + FILE* in = fopen(infile, "rb"); + assert(in); + char* key = argv[2]; + char kvalue[2] = {0,}; // deliberately short + + h = codes_handle_new_from_file(NULL, in, PRODUCT_ANY, &err); + assert(h); + assert(!err); + + CODES_CHECK(codes_get_length(h, key, &len), 0); + printf("Correct len=|%zu|\n", len); + len = 1; // Cause it to fail + + err = codes_get_string(h, key, kvalue, &len); + printf("err=%d kvalue=|%s|\n", err, kvalue); + assert(err == CODES_ARRAY_TOO_SMALL || err == CODES_BUFFER_TOO_SMALL); + + codes_handle_delete(h); + fclose(in); + return 0; +} diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh new file mode 100755 index 000000000..9292ad882 --- /dev/null +++ b/tests/codes_get_string.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="codes_get_string_test" +tempText=temp.$label.txt + +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +keys="identifier md5Headers packingType" +for k in $keys; do + $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText + grep -q "Wrong size" $tempText +done + + +input=$ECCODES_SAMPLES_PATH/reduced_gg_ml_grib2.tmpl +$EXEC ${test_dir}/codes_get_string "$input" gridName 2> $tempText +# TODO: No message + +# shortName = swh +input=$data_dir/reduced_latlon_surface.grib1 +$EXEC ${test_dir}/codes_get_string "$input" shortName 2> $tempText +grep -q "Wrong size" $tempText + + +rm -f $tempText From 31cbc3be24146887117dd4af5e1a162104936048 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 15:57:58 +0000 Subject: [PATCH 431/469] Remove deprecated stuff --- project_summary.cmake | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/project_summary.cmake b/project_summary.cmake index 24ccc35c8..644f7db4d 100644 --- a/project_summary.cmake +++ b/project_summary.cmake @@ -1,7 +1,4 @@ -#if( SWIG_FOUND ) -# message( STATUS " SWIG command : [${SWIG_EXECUTABLE}]" ) -#endif() - +# Third-party libraries foreach( _tpl ${ECCODES_TPLS} ) string( TOUPPER ${_tpl} TPL ) if( ${TPL}_FOUND ) From 354a14dbc31cb8eb8ea760027d4874e72f203df9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 15:58:42 +0000 Subject: [PATCH 432/469] Error messages --- src/grib_accessor_class_codetable_title.cc | 1 + src/grib_accessor_class_codetable_units.cc | 12 +++++++----- src/grib_accessor_class_data_ccsds_packing.cc | 6 +++--- src/grib_accessor_class_data_complex_packing.cc | 4 ++-- ...ta_g1second_order_general_extended_packing.cc | 2 +- src/grib_accessor_class_data_png_packing.cc | 2 +- src/grib_accessor_class_double.cc | 6 ++++-- src/grib_accessor_class_gaussian_grid_name.cc | 1 + src/grib_accessor_class_long.cc | 5 ++++- src/grib_accessor_class_mars_step.cc | 7 ++++--- src/grib_accessor_class_md5.cc | 3 +-- src/grib_accessor_class_offset_file.cc | 15 ++++++--------- src/grib_accessor_class_proj_string.cc | 5 +++++ src/grib_accessor_class_time.cc | 16 +++++++++------- src/grib_accessor_class_validity_time.cc | 13 ++++++++----- src/grib_optimize_decimal_factor.cc | 4 ++-- 16 files changed, 59 insertions(+), 43 deletions(-) diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index 88d2a0e91..70a0079b4 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -157,6 +157,7 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) if (*len < l) { *len = l; + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index 55faaa0bb..57f1a9c30 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -117,9 +117,10 @@ typedef struct grib_accessor_codetable static void init(grib_accessor* a, const long len, grib_arguments* params) { grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; - int n = 0; - self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a), params, n++); - a->length = 0; + + int n = 0; + self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a), params, n++); + a->length = 0; a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } @@ -131,13 +132,13 @@ static int get_native_type(grib_accessor* a) static int unpack_string(grib_accessor* a, char* buffer, size_t* len) { grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; - grib_codetable* table = NULL; + grib_codetable* table = NULL; size_t size = 1; long value; int err = GRIB_SUCCESS; char tmp[1024]; - size_t l = 1024; + size_t l = sizeof(tmp); grib_accessor_codetable* ca = (grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a), self->codetable); if ((err = grib_unpack_long((grib_accessor*)ca, &value, &size)) != GRIB_SUCCESS) @@ -156,6 +157,7 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) if (*len < l) { *len = l; + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index f5c31d74f..28e961e86 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -295,7 +295,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif if (grib_get_nearest_smaller_value(hand, self->reference_value, val[0], &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); + "%s %s: Unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if ((err = grib_set_double_internal(hand, self->reference_value, reference_value)) != GRIB_SUCCESS) @@ -322,7 +322,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); + "%s %s: Unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } @@ -367,7 +367,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); + "%s %s: Unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = codes_power(decimal_scale_factor, 10); diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 95612de5a..49d312611 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -536,7 +536,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) &reference_value); if (ret != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, min, self->reference_value); + "%s: Unable to find nearest_smaller_value of %g for %s", cclass_name, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = codes_power(+decimal_scale_factor, 10); @@ -545,7 +545,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) d = codes_power(+decimal_scale_factor, 10); if (grib_get_nearest_smaller_value(gh, self->reference_value, d * min, &reference_value) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, d * min, self->reference_value); + "%s: Unable to find nearest_smaller_value of %g for %s", cclass_name, d * min, self->reference_value); return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(d * max, reference_value, bits_per_value, &ret); diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 4bc5a7900..d337dba48 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -805,7 +805,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(handle, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "Unable to find nearest_smaller_value of %g for %s", min, self->reference_value); return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &ret); diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 4620a3f91..e9747b19d 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -508,7 +508,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(grib_handle_of_accessor(a), self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "Unable to find nearest_smaller_value of %g for %s", min, self->reference_value); return GRIB_INTERNAL_ERROR; } diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index 3f635720c..3a2933aff 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -113,6 +113,7 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) char repres[1024]; char format[32] = "%g"; grib_handle* h = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; grib_unpack_double(a, &val, &l); @@ -127,8 +128,9 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) l = strlen(repres) + 1; if (l > *len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name); - + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index 59a268f95..7cc0c48cc 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -158,6 +158,7 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) if (*len < length) { *len = length; + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index e5fed8235..015051856 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -122,6 +122,7 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) char repres[1024]; char format[32] = "%ld"; grib_handle* h = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; err = grib_unpack_long(a, &val, &l); /* TODO: We should catch all errors but in this case the test ERA_Gen.sh will fail @@ -140,7 +141,9 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) l = strlen(repres) + 1; if (l > *len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name); + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_mars_step.cc b/src/grib_accessor_class_mars_step.cc index 81b7d7750..7792995a7 100644 --- a/src/grib_accessor_class_mars_step.cc +++ b/src/grib_accessor_class_mars_step.cc @@ -151,9 +151,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) size_t buflen = 100; long step; grib_accessor* stepRangeAcc = grib_find_accessor(grib_handle_of_accessor(a), self->stepRange); + const char* cclass_name = a->cclass->name; if (!stepRangeAcc) { - grib_context_log(a->context, GRIB_LOG_ERROR, "%s not found", self->stepRange); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: %s not found", cclass_name, self->stepRange); return GRIB_NOT_FOUND; } @@ -162,8 +163,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (*len < buflen) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_class_mars_step: Buffer too small for %s. It is %ld bytes long (len=%ld)\n", - a->name, buflen, *len); + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, buflen, *len); *len = buflen; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index d70e53af1..86aa62dd9 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -181,9 +181,8 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) struct grib_md5_state md5c; if (*len < 32) { - // grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_md5 unpack_string: Array too small"); grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; } if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offset, &offset)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_offset_file.cc b/src/grib_accessor_class_offset_file.cc index d056af268..8fd0a0018 100644 --- a/src/grib_accessor_class_offset_file.cc +++ b/src/grib_accessor_class_offset_file.cc @@ -7,10 +7,6 @@ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - #include "grib_api_internal.h" /* @@ -121,21 +117,22 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) size_t l = 1; char repres[1024] = {0,}; int err = 0; + const char* cclass_name = a->cclass->name; err = grib_unpack_double(a, &val, &l); - if (err) - return err; + if (err) return err; snprintf(repres, sizeof(repres), "%.0f", val); l = strlen(repres) + 1; if (l > *len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_offset: unpack_string: Buffer too small for %s", - a->name); + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; return GRIB_BUFFER_TOO_SMALL; } - grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_offset: Casting double %s to string", a->name); + grib_context_log(a->context, GRIB_LOG_DEBUG, "%s: Casting double %s to string", __func__, a->name); *len = l; diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 219ff09d5..7f4f608bb 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -304,6 +304,11 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) Assert(self->endpoint == ENDPOINT_SOURCE || self->endpoint == ENDPOINT_TARGET); + if (*len < 100) { // Safe bet + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); + return GRIB_BUFFER_TOO_SMALL; + } + err = grib_get_string(h, self->grid_type, grid_type, &size); if (err) return err; diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index 1a7f135fa..cf7350605 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -191,20 +191,22 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) static int unpack_string(grib_accessor* a, char* val, size_t* len) { - long v = 0; - size_t lsize = 1; + long v = 0; + size_t lsize = 1, lmin = 5; unpack_long(a, &v, &lsize); - if (*len < 5) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Key %s (unpack_string): Buffer too small", a->name); - - *len = 5; + if (*len < lmin) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, lmin, *len); + *len = lmin; return GRIB_BUFFER_TOO_SMALL; } snprintf(val, 64, "%04ld", v); - len[0] = 5; + len[0] = lmin; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_validity_time.cc b/src/grib_accessor_class_validity_time.cc index e07e71e15..0b2c9697f 100644 --- a/src/grib_accessor_class_validity_time.cc +++ b/src/grib_accessor_class_validity_time.cc @@ -234,19 +234,22 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { int err = 0; long v = 0; - size_t lsize = 1; + size_t lsize = 1, lmin = 5; err = unpack_long(a, &v, &lsize); if (err) return err; - if (*len < 5) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Key %s (unpack_string): Buffer too small", a->name); - *len = 5; + if (*len < lmin) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, lmin, *len); + *len = lmin; return GRIB_BUFFER_TOO_SMALL; } snprintf(val, 64, "%04ld", v); - len[0] = 5; + len[0] = lmin; return GRIB_SUCCESS; } diff --git a/src/grib_optimize_decimal_factor.cc b/src/grib_optimize_decimal_factor.cc index ea6ac3a08..a407044c3 100644 --- a/src/grib_optimize_decimal_factor.cc +++ b/src/grib_optimize_decimal_factor.cc @@ -148,7 +148,7 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, long vmin, vmax; if (grib_get_nearest_smaller_value(gh, reference_value, min, ref) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, reference_value); + "Unable to find nearest_smaller_value of %g for %s", min, reference_value); return GRIB_INTERNAL_ERROR; } @@ -191,7 +191,7 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, if (grib_get_nearest_smaller_value(gh, reference_value, min, ref) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, reference_value); + "Unable to find nearest_smaller_value of %g for %s", min, reference_value); return GRIB_INTERNAL_ERROR; } From bdba606ec781750f394aa4d90c5a86295db4dfb9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 15:59:12 +0000 Subject: [PATCH 433/469] Testing: codes_get_string --- tests/codes_get_string.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 9292ad882..40655fc78 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -14,16 +14,20 @@ label="codes_get_string_test" tempText=temp.$label.txt input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -keys="identifier md5Headers packingType" +keys="identifier md5Headers packingType gridDefinitionDescription parameterUnits projString" for k in $keys; do $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText grep -q "Wrong size" $tempText done +input=$data_dir/reduced_latlon_surface.grib2 +$EXEC ${test_dir}/codes_get_string "$input" bitmap 2> $tempText +grep -q "Wrong size" $tempText input=$ECCODES_SAMPLES_PATH/reduced_gg_ml_grib2.tmpl $EXEC ${test_dir}/codes_get_string "$input" gridName 2> $tempText -# TODO: No message +grep -q "Wrong size" $tempText + # shortName = swh input=$data_dir/reduced_latlon_surface.grib1 From f8f8d50099e2afe8ae595fb41847f82f3bd9ab6c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 16:55:55 +0000 Subject: [PATCH 434/469] ECC-1751: GRIB2: Consolidate parameters with fixed statistical processing ranges (part 3) --- .../grib2/localConcepts/hydro/cfVarName.def | 27 ------------------- .../grib2/localConcepts/hydro/name.def | 27 ------------------- .../grib2/localConcepts/hydro/paramId.def | 27 ------------------- .../grib2/localConcepts/hydro/shortName.def | 27 ------------------- .../grib2/localConcepts/hydro/units.def | 27 ------------------- .../grib2/localConcepts/s2s/cfVarName.def | 8 ++++++ definitions/grib2/localConcepts/s2s/name.def | 8 ++++++ .../grib2/localConcepts/s2s/paramId.def | 8 ++++++ .../grib2/localConcepts/s2s/shortName.def | 8 ++++++ definitions/grib2/localConcepts/s2s/units.def | 8 ++++++ .../grib2/localConcepts/uerra/cfVarName.def | 15 +++++++++++ .../grib2/localConcepts/uerra/name.def | 15 +++++++++++ .../grib2/localConcepts/uerra/paramId.def | 15 +++++++++++ .../grib2/localConcepts/uerra/shortName.def | 15 +++++++++++ .../grib2/localConcepts/uerra/units.def | 15 +++++++++++ 15 files changed, 115 insertions(+), 135 deletions(-) diff --git a/definitions/grib2/localConcepts/hydro/cfVarName.def b/definitions/grib2/localConcepts/hydro/cfVarName.def index fd845ff80..19b565498 100644 --- a/definitions/grib2/localConcepts/hydro/cfVarName.def +++ b/definitions/grib2/localConcepts/hydro/cfVarName.def @@ -18,31 +18,4 @@ indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 1 ; lengthOfTimeRange = 24 ; - } -#Time-integrated evapotranspiration rate in the last 24h -'acc_et24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean total precipitation rate -'avg_tp24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow melt rate in the last 24h -'avg_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } diff --git a/definitions/grib2/localConcepts/hydro/name.def b/definitions/grib2/localConcepts/hydro/name.def index a965a0ad2..5390805f1 100644 --- a/definitions/grib2/localConcepts/hydro/name.def +++ b/definitions/grib2/localConcepts/hydro/name.def @@ -18,31 +18,4 @@ indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 1 ; lengthOfTimeRange = 24 ; - } -#Time-integrated evapotranspiration rate in the last 24h -'Time-integrated evapotranspiration rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean total precipitation rate -'Time-mean total precipitation rate' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow melt rate in the last 24h -'Time-mean snow melt rate in the last 24h' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } diff --git a/definitions/grib2/localConcepts/hydro/paramId.def b/definitions/grib2/localConcepts/hydro/paramId.def index fe0e452fc..dfd704793 100644 --- a/definitions/grib2/localConcepts/hydro/paramId.def +++ b/definitions/grib2/localConcepts/hydro/paramId.def @@ -18,31 +18,4 @@ indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 1 ; lengthOfTimeRange = 24 ; - } -#Time-integrated evapotranspiration rate in the last 24h -'260434' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean total precipitation rate -'260441' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow melt rate in the last 24h -'260477' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } diff --git a/definitions/grib2/localConcepts/hydro/shortName.def b/definitions/grib2/localConcepts/hydro/shortName.def index fd845ff80..19b565498 100644 --- a/definitions/grib2/localConcepts/hydro/shortName.def +++ b/definitions/grib2/localConcepts/hydro/shortName.def @@ -18,31 +18,4 @@ indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 1 ; lengthOfTimeRange = 24 ; - } -#Time-integrated evapotranspiration rate in the last 24h -'acc_et24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean total precipitation rate -'avg_tp24' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow melt rate in the last 24h -'avg_smr24' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } diff --git a/definitions/grib2/localConcepts/hydro/units.def b/definitions/grib2/localConcepts/hydro/units.def index 0c28cbfb1..60d462f2d 100644 --- a/definitions/grib2/localConcepts/hydro/units.def +++ b/definitions/grib2/localConcepts/hydro/units.def @@ -18,31 +18,4 @@ indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 1 ; lengthOfTimeRange = 24 ; - } -#Time-integrated evapotranspiration rate in the last 24h -'kg m**-2' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 39 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 1 ; - lengthOfTimeRange = 24 ; - } -#Time-mean total precipitation rate -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; - } -#Time-mean snow melt rate in the last 24h -'kg m**-2 s**-1' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 24 ; } diff --git a/definitions/grib2/localConcepts/s2s/cfVarName.def b/definitions/grib2/localConcepts/s2s/cfVarName.def index 18ae6bde2..13a346191 100644 --- a/definitions/grib2/localConcepts/s2s/cfVarName.def +++ b/definitions/grib2/localConcepts/s2s/cfVarName.def @@ -84,6 +84,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Mean sea water potential temperature in the upper 300 m 'mswpt300m' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/s2s/name.def b/definitions/grib2/localConcepts/s2s/name.def index 207a8bf75..67dd7608e 100644 --- a/definitions/grib2/localConcepts/s2s/name.def +++ b/definitions/grib2/localConcepts/s2s/name.def @@ -84,6 +84,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Skin temperature +'Skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Mean sea water potential temperature in the upper 300 m 'Mean sea water potential temperature in the upper 300 m' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/s2s/paramId.def b/definitions/grib2/localConcepts/s2s/paramId.def index 9c9436700..1156927c0 100644 --- a/definitions/grib2/localConcepts/s2s/paramId.def +++ b/definitions/grib2/localConcepts/s2s/paramId.def @@ -84,6 +84,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Skin temperature +'235' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Mean sea water potential temperature in the upper 300 m '151126' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/s2s/shortName.def b/definitions/grib2/localConcepts/s2s/shortName.def index e850dd014..824ef22e7 100644 --- a/definitions/grib2/localConcepts/s2s/shortName.def +++ b/definitions/grib2/localConcepts/s2s/shortName.def @@ -84,6 +84,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Mean sea water potential temperature in the upper 300 m 'mswpt300m' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/s2s/units.def b/definitions/grib2/localConcepts/s2s/units.def index f96b2c9e1..4b7e30d55 100644 --- a/definitions/grib2/localConcepts/s2s/units.def +++ b/definitions/grib2/localConcepts/s2s/units.def @@ -84,6 +84,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Mean sea water potential temperature in the upper 300 m 'K' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index d6dc24dd5..bdfb195ee 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -150,6 +150,14 @@ typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 6 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Total column integrated water vapour 'tciwv' = { discipline = 0 ; @@ -276,4 +284,11 @@ scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + } +#Snow depth water equivalent +'sd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 82a308c53..44e7fc33a 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -150,6 +150,14 @@ typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 6 ; } +#Skin temperature +'Skin temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Total column integrated water vapour 'Total column integrated water vapour' = { discipline = 0 ; @@ -276,4 +284,11 @@ scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + } +#Snow depth water equivalent +'Snow depth water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index ba96f916a..3da7902bd 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -150,6 +150,14 @@ typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 6 ; } +#Skin temperature +'235' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Total column integrated water vapour '260057' = { discipline = 0 ; @@ -276,4 +284,11 @@ scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + } +#Snow depth water equivalent +'228141' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index c4d665aa2..61abd0f89 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -150,6 +150,14 @@ typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 6 ; } +#Skin temperature +'skt' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Total column integrated water vapour 'tciwv' = { discipline = 0 ; @@ -276,4 +284,11 @@ scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + } +#Snow depth water equivalent +'sd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index b97971c2a..d706064f6 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -150,6 +150,14 @@ typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 6 ; } +#Skin temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Total column integrated water vapour 'kg m**-2' = { discipline = 0 ; @@ -276,4 +284,11 @@ scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; + } +#Snow depth water equivalent +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; } From 15c5c2ebcc57c7f861cd0eefbaa8531c7a76a47a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 16:56:06 +0000 Subject: [PATCH 435/469] Fix comments --- examples/C/grib_copy_keys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/C/grib_copy_keys.c b/examples/C/grib_copy_keys.c index 2b4585df1..f48d2bd55 100644 --- a/examples/C/grib_copy_keys.c +++ b/examples/C/grib_copy_keys.c @@ -56,7 +56,7 @@ int main(int argc, char* argv[]) CODES_CHECK(err, 0); } - // codes_write_message(hto, "temp.out", "w"); CODES_CHECK(err, 0); + /* codes_write_message(hto, "temp.out", "w"); CODES_CHECK(err, 0); */ { int dump_flags = GRIB_DUMP_FLAG_CODED | GRIB_DUMP_FLAG_OCTET | GRIB_DUMP_FLAG_VALUES | GRIB_DUMP_FLAG_READ_ONLY; codes_dump_content(hto, stdout, "wmo", dump_flags, NULL); From 1eb6c9ae166391e4d438da9a78e3fe6dce49d34a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jan 2024 17:39:27 +0000 Subject: [PATCH 436/469] CMake: Attempt to fix broken CI workflow (clang@rocky-8.6) --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eac898f92..94bab62b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,9 +74,11 @@ endif() # some variables/options of this project if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - ecbuild_add_cxx_flags("-Wno-write-strings -Wno-deprecated") + ecbuild_add_cxx_flags("-Wno-write-strings") + ecbuild_add_cxx_flags("-Wno-deprecated") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - ecbuild_add_cxx_flags("-Wno-write-strings -Wno-deprecated") + ecbuild_add_cxx_flags("-Wno-write-strings") + ecbuild_add_cxx_flags("-Wno-deprecated") elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) set(CMAKE_CXX_FLAGS "-hstd=c++11 ${CMAKE_CXX_FLAGS}") endif() From 7d445bf0b83c5b332b6849f1c6055a629d98e2bc Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 1 Feb 2024 09:37:52 +0000 Subject: [PATCH 437/469] DGOV-452: Add stream rfsd --- definitions/mars/stream.table | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/mars/stream.table b/definitions/mars/stream.table index d41e21eee..8fb9fb06d 100644 --- a/definitions/mars/stream.table +++ b/definitions/mars/stream.table @@ -116,6 +116,7 @@ 1253 ocda Ocean data assimilation 1254 olda Ocean Long window data assimilation 1255 gfra Global fire assimilation system reanalysis +1256 rfsd Retrospective forcing and simulation data 2231 cnrm Meteo France climate centre 2232 mpic Max Plank Institute 2233 ukmo UKMO climate centre From bf957dc013cb2adbdc30c4b18823686a1a0495fb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 10:54:58 +0000 Subject: [PATCH 438/469] ECC-1751: GRIB2: Consolidate parameters with fixed statistical processing ranges (part 4) --- definitions/grib2/localConcepts/uerra/cfVarName.def | 7 +++++++ definitions/grib2/localConcepts/uerra/name.def | 7 +++++++ definitions/grib2/localConcepts/uerra/paramId.def | 7 +++++++ definitions/grib2/localConcepts/uerra/shortName.def | 7 +++++++ definitions/grib2/localConcepts/uerra/units.def | 7 +++++++ 5 files changed, 35 insertions(+) diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index bdfb195ee..30e719795 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -190,6 +190,13 @@ parameterCategory = 6 ; parameterNumber = 11 ; } +#Volumetric soil moisture +'vsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } #2 metre relative humidity 'r2' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 44e7fc33a..c1a909c5f 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -190,6 +190,13 @@ parameterCategory = 6 ; parameterNumber = 11 ; } +#Volumetric soil moisture +'Volumetric soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } #2 metre relative humidity '2 metre relative humidity' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index 3da7902bd..e572aa115 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -190,6 +190,13 @@ parameterCategory = 6 ; parameterNumber = 11 ; } +#Volumetric soil moisture +'260199' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } #2 metre relative humidity '260242' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 61abd0f89..ee52342c2 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -190,6 +190,13 @@ parameterCategory = 6 ; parameterNumber = 11 ; } +#Volumetric soil moisture +'vsw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } #2 metre relative humidity '2r' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index d706064f6..b8d037b96 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -190,6 +190,13 @@ parameterCategory = 6 ; parameterNumber = 11 ; } +#Volumetric soil moisture +'m**3 m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 25 ; + typeOfStatisticalProcessing = 0 ; + } #2 metre relative humidity '%' = { discipline = 0 ; From 98e8126ae94bdbeb2457fca2e3dec2c02203aefb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 12:08:34 +0000 Subject: [PATCH 439/469] CMake: Attempt to fix broken CI workflow (clang@rocky-8.6) (part 2) --- CMakeLists.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 94bab62b7..152d8ec1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,8 +77,10 @@ if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) ecbuild_add_cxx_flags("-Wno-write-strings") ecbuild_add_cxx_flags("-Wno-deprecated") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - ecbuild_add_cxx_flags("-Wno-write-strings") - ecbuild_add_cxx_flags("-Wno-deprecated") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16) + ecbuild_add_cxx_flags("-Wno-write-strings") + ecbuild_add_cxx_flags("-Wno-deprecated") + endif() elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) set(CMAKE_CXX_FLAGS "-hstd=c++11 ${CMAKE_CXX_FLAGS}") endif() @@ -480,10 +482,10 @@ endif() ############################################################################### # Debugging aid. Print all known CMake variables -# get_cmake_property(_variableNames VARIABLES) -# foreach( _variableName ${_variableNames} ) +#get_cmake_property(_variableNames VARIABLES) +#foreach( _variableName ${_variableNames} ) # ecbuild_info(" ${_variableName}=${${_variableName}}") -# endforeach() +#endforeach() ############################################################################### # finalize From 439ff5479fec2fc2a4ad60b9d43aee27aef0cb2d Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 1 Feb 2024 16:08:38 +0000 Subject: [PATCH 440/469] ECC-1756: Add pseudo centre cerise --- definitions/grib2/section.4.def | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index ca9349e73..512544da4 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -28,6 +28,7 @@ concept datasetForLocal(unknown) { "tigge" = {productionStatusOfProcessedData=5;} "s2s" = {productionStatusOfProcessedData=6;} "s2s" = {productionStatusOfProcessedData=7;} + "cerise" = {marsClass="ci";} "era6" = {marsClass="e6";} # for ERA6 parameters with constituentType "hydro" = {marsClass="ce";} # EFAS/GLOFAS "hydro" = {marsClass="ul";} # ULYSSES From b7d78a79b242a80ac7ba28380b905fb51420d080 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 17:23:58 +0000 Subject: [PATCH 441/469] Testing: codes_get_string --- src/grib_accessor_class_bitmap.cc | 13 ++++++++----- src/grib_accessor_class_codetable.cc | 4 ++++ src/grib_accessor_class_codetable_title.cc | 5 ++++- src/grib_accessor_class_concept.cc | 2 +- src/grib_accessor_class_gaussian_grid_name.cc | 5 ++++- src/grib_accessor_class_long.cc | 4 ++-- src/grib_accessor_class_proj_string.cc | 13 +++++++++---- tests/codes_get_string.sh | 13 ++++++++----- 8 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 89cf46948..b5708d5c6 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -282,11 +282,14 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { long i = 0; grib_handle* hand = grib_handle_of_accessor(a); - - if (len[0] < (a->length)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s, it contains %ld values", - __func__, len[0], a->name, a->length); - len[0] = 0; + const size_t l = a->length; + + if (*len < l) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); + *len = l; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 18ee5d0ac..0d97efdfb 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -700,6 +700,10 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) l = strlen(tmp) + 1; if (*len < l) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index 70a0079b4..2ddd0f3cb 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -156,8 +156,11 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) l = strlen(tmp) + 1; if (*len < l) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index 28c09006d..c409a6f92 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -559,7 +559,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) slen = strlen(p) + 1; if (*len < slen) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Concept unpack_string. Wrong size for %s, value='%s' which requires %lu bytes (len=%lu)", + "Concept unpack_string. Buffer too small for %s, value='%s' which requires %lu bytes (len=%lu)", a->name, p, slen, *len); *len = slen; return GRIB_BUFFER_TOO_SMALL; diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index 7cc0c48cc..21117d4f1 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -157,8 +157,11 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) length = strlen(tmp) + 1; if (*len < length) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, length, *len); *len = length; - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 015051856..aeccdac78 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -122,7 +122,6 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) char repres[1024]; char format[32] = "%ld"; grib_handle* h = grib_handle_of_accessor(a); - const char* cclass_name = a->cclass->name; err = grib_unpack_long(a, &val, &l); /* TODO: We should catch all errors but in this case the test ERA_Gen.sh will fail @@ -140,7 +139,8 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) l = strlen(repres) + 1; - if (l > *len) { + if (*len < l) { + const char* cclass_name = a->cclass->name; grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", cclass_name, a->name, l, *len); diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 7f4f608bb..7edfbf5be 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -297,15 +297,20 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) { grib_accessor_proj_string* self = (grib_accessor_proj_string*)a; int err = 0, found = 0; - size_t i = 0; + size_t i = 0; char grid_type[64] = {0,}; grib_handle* h = grib_handle_of_accessor(a); - size_t size = sizeof(grid_type) / sizeof(*grid_type); + size_t size = sizeof(grid_type) / sizeof(*grid_type); Assert(self->endpoint == ENDPOINT_SOURCE || self->endpoint == ENDPOINT_TARGET); - if (*len < 100) { // Safe bet - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); + size_t l = 100; // Safe bet + if (*len < l) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is at least %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); + *len = l; return GRIB_BUFFER_TOO_SMALL; } diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 40655fc78..14ce6f503 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -14,25 +14,28 @@ label="codes_get_string_test" tempText=temp.$label.txt input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -keys="identifier md5Headers packingType gridDefinitionDescription parameterUnits projString" +keys="identifier md5Headers parameterUnits" for k in $keys; do $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText grep -q "Wrong size" $tempText done input=$data_dir/reduced_latlon_surface.grib2 -$EXEC ${test_dir}/codes_get_string "$input" bitmap 2> $tempText -grep -q "Wrong size" $tempText +keys="projString bitmap class year gridDefinitionDescription packingType" +for k in $keys; do + $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText + grep -q "Buffer too small" $tempText +done input=$ECCODES_SAMPLES_PATH/reduced_gg_ml_grib2.tmpl $EXEC ${test_dir}/codes_get_string "$input" gridName 2> $tempText -grep -q "Wrong size" $tempText +grep -q "Buffer too small" $tempText # shortName = swh input=$data_dir/reduced_latlon_surface.grib1 $EXEC ${test_dir}/codes_get_string "$input" shortName 2> $tempText -grep -q "Wrong size" $tempText +grep -q "Buffer too small" $tempText rm -f $tempText From c96c128032a57a16ddabac76dd168aaf79a8981c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 17:48:56 +0000 Subject: [PATCH 442/469] Actions: Dead code removal --- src/action_class_close.cc | 8 +------- src/action_class_modify.cc | 8 +------- src/action_class_noop.cc | 9 ++------- src/action_class_print.cc | 8 +------- src/action_class_write.cc | 8 +------- 5 files changed, 6 insertions(+), 35 deletions(-) diff --git a/src/action_class_close.cc b/src/action_class_close.cc index 5867d6af5..3c8d51900 100644 --- a/src/action_class_close.cc +++ b/src/action_class_close.cc @@ -14,7 +14,6 @@ START_CLASS_DEF CLASS = action - IMPLEMENTS = dump IMPLEMENTS = destroy;execute MEMBERS = char *filename END_CLASS_DEF @@ -32,7 +31,6 @@ or edit "action.class" and rerun ./make_class.pl */ static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); static void destroy (grib_context*,grib_action*); static int execute(grib_action* a,grib_handle* h); @@ -53,7 +51,7 @@ static grib_action_class _grib_action_class_close = { 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* xref */ 0, /* create_accessor*/ @@ -113,10 +111,6 @@ static int execute(grib_action* act, grib_handle* h) return GRIB_SUCCESS; } -static void dump(grib_action* act, FILE* f, int lvl) -{ -} - static void destroy(grib_context* context, grib_action* act) { grib_action_close* a = (grib_action_close*)act; diff --git a/src/action_class_modify.cc b/src/action_class_modify.cc index ef09a3c96..cc5795559 100644 --- a/src/action_class_modify.cc +++ b/src/action_class_modify.cc @@ -17,7 +17,6 @@ START_CLASS_DEF CLASS = action - IMPLEMENTS = dump IMPLEMENTS = create_accessor IMPLEMENTS = destroy MEMBERS = long flags @@ -37,7 +36,6 @@ or edit "action.class" and rerun ./make_class.pl */ static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); static void destroy (grib_context*,grib_action*); static int create_accessor(grib_section*,grib_action*,grib_loader*); @@ -59,7 +57,7 @@ static grib_action_class _grib_action_class_modify = { 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* xref */ &create_accessor, /* create_accessor*/ @@ -96,10 +94,6 @@ grib_action* grib_action_create_modify(grib_context* context, const char* name, return act; } -static void dump(grib_action* act, FILE* f, int lvl) -{ -} - static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { grib_action_modify* a = (grib_action_modify*)act; diff --git a/src/action_class_noop.cc b/src/action_class_noop.cc index d4d2ff133..a898da06a 100644 --- a/src/action_class_noop.cc +++ b/src/action_class_noop.cc @@ -17,7 +17,7 @@ START_CLASS_DEF CLASS = action - IMPLEMENTS = dump;destroy;execute + IMPLEMENTS = destroy;execute END_CLASS_DEF */ @@ -33,7 +33,6 @@ or edit "action.class" and rerun ./make_class.pl */ static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); static void destroy (grib_context*,grib_action*); static int execute(grib_action* a,grib_handle* h); @@ -53,7 +52,7 @@ static grib_action_class _grib_action_class_noop = { 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* xref */ 0, /* create_accessor*/ @@ -90,10 +89,6 @@ grib_action* grib_action_create_noop(grib_context* context, const char* fname) return act; } -static void dump(grib_action* act, FILE* f, int lvl) -{ -} - static void destroy(grib_context* context, grib_action* act) { grib_context_free_persistent(context, act->name); diff --git a/src/action_class_print.cc b/src/action_class_print.cc index f29300544..0286c636f 100644 --- a/src/action_class_print.cc +++ b/src/action_class_print.cc @@ -17,7 +17,6 @@ START_CLASS_DEF CLASS = action - IMPLEMENTS = dump IMPLEMENTS = destroy;execute MEMBERS = char *name MEMBERS = char *outname @@ -36,7 +35,6 @@ or edit "action.class" and rerun ./make_class.pl */ static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); static void destroy (grib_context*,grib_action*); static int execute(grib_action* a,grib_handle* h); @@ -58,7 +56,7 @@ static grib_action_class _grib_action_class_print = { 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* xref */ 0, /* create_accessor*/ @@ -138,10 +136,6 @@ static int execute(grib_action* act, grib_handle* h) return err; } -static void dump(grib_action* act, FILE* f, int lvl) -{ -} - static void destroy(grib_context* context, grib_action* act) { grib_action_print* a = (grib_action_print*)act; diff --git a/src/action_class_write.cc b/src/action_class_write.cc index 8f92d5753..190264e9c 100644 --- a/src/action_class_write.cc +++ b/src/action_class_write.cc @@ -14,7 +14,6 @@ START_CLASS_DEF CLASS = action - IMPLEMENTS = dump IMPLEMENTS = destroy;execute MEMBERS = char *name MEMBERS = int append @@ -34,7 +33,6 @@ or edit "action.class" and rerun ./make_class.pl */ static void init_class (grib_action_class*); -static void dump (grib_action* d, FILE*,int); static void destroy (grib_context*,grib_action*); static int execute(grib_action* a,grib_handle* h); @@ -57,7 +55,7 @@ static grib_action_class _grib_action_class_write = { 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ + 0, /* dump */ 0, /* xref */ 0, /* create_accessor*/ @@ -193,10 +191,6 @@ static int execute(grib_action* act, grib_handle* h) return err; } -static void dump(grib_action* act, FILE* f, int lvl) -{ -} - static void destroy(grib_context* context, grib_action* act) { grib_action_write* a = (grib_action_write*)act; From f72c6ac9bf517908711023de74d9975e44537f22 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 19:50:19 +0000 Subject: [PATCH 443/469] CMake: Clang v16 warnings --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 152d8ec1f..26cb0b6c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,8 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16) ecbuild_add_cxx_flags("-Wno-write-strings") ecbuild_add_cxx_flags("-Wno-deprecated") + else() + ecbuild_add_cxx_flags("-Wno-writable-strings") endif() elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) set(CMAKE_CXX_FLAGS "-hstd=c++11 ${CMAKE_CXX_FLAGS}") From dd7819025998311ced75804cd27e204b26bc65d8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 23:13:53 +0000 Subject: [PATCH 444/469] Testing: write action --- tests/grib_filter.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index 57bc4cb8f..9a836a898 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -445,6 +445,16 @@ status=$? set -e [ $status -ne 0 ] + +# Bad write +set +e +echo 'write "/";' | ${tools_dir}/grib_filter - $input > $tempOut 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Unable to open file" $tempOut + + # Setting step # ------------- input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl From d6642c881e2e8deabb8b41602e55c6b85993918d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Feb 2024 23:14:28 +0000 Subject: [PATCH 445/469] Accessors: Dead code removal --- src/grib_accessor_class_bufr_string_values.cc | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/grib_accessor_class_bufr_string_values.cc b/src/grib_accessor_class_bufr_string_values.cc index 94e0f2216..02627e763 100644 --- a/src/grib_accessor_class_bufr_string_values.cc +++ b/src/grib_accessor_class_bufr_string_values.cc @@ -22,8 +22,8 @@ This is used by make_class.pl START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_ascii -IMPLEMENTS = unpack_string_array; pack_string_array -IMPLEMENTS = unpack_string; pack_string +IMPLEMENTS = unpack_string_array +IMPLEMENTS = unpack_string IMPLEMENTS = init;dump;destroy IMPLEMENTS = value_count MEMBERS = const char* dataAccessorName @@ -43,8 +43,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static int pack_string(grib_accessor*, const char*, size_t* len); -static int pack_string_array(grib_accessor*, const char**, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int unpack_string_array(grib_accessor*, char**, size_t* len); static int value_count(grib_accessor*, long*); @@ -89,9 +87,9 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { 0, /* pack_float */ 0, /* unpack_double */ 0, /* unpack_float */ - &pack_string, /* pack_string */ + 0, /* pack_string */ &unpack_string, /* unpack_string */ - &pack_string_array, /* pack_string_array */ + 0, /* pack_string_array */ &unpack_string_array, /* unpack_string_array */ 0, /* pack_bytes */ 0, /* unpack_bytes */ @@ -148,7 +146,6 @@ static int unpack_string_array(grib_accessor* a, char** buffer, size_t* len) grib_vsarray* stringValues = NULL; size_t l = 0, tl; size_t i, j, n = 0; - /*char buf[25]={0,};*/ char** b = buffer; data = get_accessor(a); @@ -176,21 +173,11 @@ static int unpack_string_array(grib_accessor* a, char** buffer, size_t* len) return GRIB_SUCCESS; } -static int pack_string_array(grib_accessor* a, const char** v, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int unpack_string(grib_accessor* a, char* val, size_t* len) { return GRIB_NOT_IMPLEMENTED; } -static int pack_string(grib_accessor* a, const char* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - static int value_count(grib_accessor* a, long* rlen) { grib_accessor* descriptors = get_accessor(a); From fa06c0063a335787009114a042d01d645e20b441 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 11:42:30 +0000 Subject: [PATCH 446/469] CMake: Upgrade min version of Python. Also no need for Numpy --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 26cb0b6c3..f60682739 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,9 +148,8 @@ ecbuild_add_option( FEATURE AEC DEFAULT ON CONDITION AEC_FOUND ) -ecbuild_find_python( VERSION 2.6 NO_LIBS ) -find_package( NumPy ) -set( HAVE_PYTHON 0 ) +ecbuild_find_python( VERSION 3.6 NO_LIBS ) +# find_package( NumPy ) ## TODO REQUIRED_LANGUAGES Fortran ecbuild_add_option( FEATURE FORTRAN From 7eb2ada58add1b682aee6e2c3445f993e58caf4a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 13:13:14 +0000 Subject: [PATCH 447/469] ECC-1756: GRIB2: Add mean parameters for CERISE project --- .../grib1/localConcepts/ecmf/units.def | 6 +-- .../grib2/localConcepts/cerise/cfVarName.def | 46 +++++++++++++++++++ .../grib2/localConcepts/cerise/name.def | 46 +++++++++++++++++++ .../grib2/localConcepts/cerise/paramId.def | 46 +++++++++++++++++++ .../grib2/localConcepts/cerise/shortName.def | 46 +++++++++++++++++++ .../grib2/localConcepts/cerise/units.def | 46 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 2 +- 7 files changed, 234 insertions(+), 4 deletions(-) create mode 100644 definitions/grib2/localConcepts/cerise/cfVarName.def create mode 100644 definitions/grib2/localConcepts/cerise/name.def create mode 100644 definitions/grib2/localConcepts/cerise/paramId.def create mode 100644 definitions/grib2/localConcepts/cerise/shortName.def create mode 100644 definitions/grib2/localConcepts/cerise/units.def diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 12d9b715b..c2c79b985 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -3805,12 +3805,12 @@ indicatorOfParameter = 122 ; } #Mean surface runoff rate -'m of water equivalent s**-1' = { +'m s**-1' = { table2Version = 172 ; indicatorOfParameter = 8 ; } #Mean sub-surface runoff rate -'m of water equivalent s**-1' = { +'m s**-1' = { table2Version = 172 ; indicatorOfParameter = 9 ; } @@ -15080,7 +15080,7 @@ indicatorOfParameter = 181 ; } #Evaporation -'m of water s**-1' = { +'m of water equivalent s**-1' = { table2Version = 172 ; indicatorOfParameter = 182 ; } diff --git a/definitions/grib2/localConcepts/cerise/cfVarName.def b/definitions/grib2/localConcepts/cerise/cfVarName.def new file mode 100644 index 000000000..7861181b1 --- /dev/null +++ b/definitions/grib2/localConcepts/cerise/cfVarName.def @@ -0,0 +1,46 @@ +# Automatically generated by ./create_def.pl, do not edit +#Mean surface runoff rate +'msror' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean sub-surface runoff rate +'mssror' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total snowfall rate +'mtsfr' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Evaporation +'erate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total precipitation rate +'tprate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; +} diff --git a/definitions/grib2/localConcepts/cerise/name.def b/definitions/grib2/localConcepts/cerise/name.def new file mode 100644 index 000000000..7fb9dff6c --- /dev/null +++ b/definitions/grib2/localConcepts/cerise/name.def @@ -0,0 +1,46 @@ +# Automatically generated by ./create_def.pl, do not edit +#Mean surface runoff rate +'Mean surface runoff rate' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean sub-surface runoff rate +'Mean sub-surface runoff rate' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total snowfall rate +'Mean total snowfall rate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Evaporation +'Evaporation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total precipitation rate +'Mean total precipitation rate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; +} diff --git a/definitions/grib2/localConcepts/cerise/paramId.def b/definitions/grib2/localConcepts/cerise/paramId.def new file mode 100644 index 000000000..f905e10e0 --- /dev/null +++ b/definitions/grib2/localConcepts/cerise/paramId.def @@ -0,0 +1,46 @@ +# Automatically generated by ./create_def.pl, do not edit +#Mean surface runoff rate +'172008' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean sub-surface runoff rate +'172009' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total snowfall rate +'172144' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Evaporation +'172182' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total precipitation rate +'172228' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; +} diff --git a/definitions/grib2/localConcepts/cerise/shortName.def b/definitions/grib2/localConcepts/cerise/shortName.def new file mode 100644 index 000000000..7861181b1 --- /dev/null +++ b/definitions/grib2/localConcepts/cerise/shortName.def @@ -0,0 +1,46 @@ +# Automatically generated by ./create_def.pl, do not edit +#Mean surface runoff rate +'msror' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean sub-surface runoff rate +'mssror' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total snowfall rate +'mtsfr' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Evaporation +'erate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total precipitation rate +'tprate' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; +} diff --git a/definitions/grib2/localConcepts/cerise/units.def b/definitions/grib2/localConcepts/cerise/units.def new file mode 100644 index 000000000..36ab79310 --- /dev/null +++ b/definitions/grib2/localConcepts/cerise/units.def @@ -0,0 +1,46 @@ +# Automatically generated by ./create_def.pl, do not edit +#Mean surface runoff rate +'m s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean sub-surface runoff rate +'m s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total snowfall rate +'m of water equivalent s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Evaporation +'m of water equivalent s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean total precipitation rate +'m s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 36b703fe7..506f9c365 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -19082,7 +19082,7 @@ parameterNumber = 181 ; } #Evaporation -'m of water s**-1' = { +'m of water equivalent s**-1' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 182 ; From c3703eb1ce51a3ee7a03cc314ce53179d6813612 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 13:30:54 +0000 Subject: [PATCH 448/469] Testing: codes_get_string errors --- src/grib_accessor_class_ascii.cc | 10 ++++++---- src/grib_accessor_class_bitmap.cc | 2 +- src/grib_accessor_class_bufr_data_element.cc | 2 +- src/grib_accessor_class_bytes.cc | 2 +- src/grib_accessor_class_codetable_units.cc | 5 ++++- src/grib_accessor_class_getenv.cc | 2 +- src/grib_accessor_class_gts_header.cc | 4 ++-- src/grib_accessor_class_julian_date.cc | 3 ++- src/grib_accessor_class_md5.cc | 7 ++++++- src/grib_accessor_class_message.cc | 4 ++-- src/grib_query.cc | 4 ++-- tests/codes_get_string.cc | 2 +- tests/codes_get_string.sh | 7 +------ 13 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/grib_accessor_class_ascii.cc b/src/grib_accessor_class_ascii.cc index 035b2c9cc..9d88fa9f9 100644 --- a/src/grib_accessor_class_ascii.cc +++ b/src/grib_accessor_class_ascii.cc @@ -148,10 +148,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) const size_t alen = a->length; if (len[0] < (alen + 1)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%zu) for %s, it contains %ld values", - len[0], a->name, a->length + 1); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, alen+1, *len); + len[0] = alen + 1; + return GRIB_BUFFER_TOO_SMALL; } for (i = 0; i < alen; i++) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index b5708d5c6..b3c371a35 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -290,7 +290,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", cclass_name, a->name, l, *len); *len = l; - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; } for (i = 0; i < a->length; i++) { diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 65c4cecfb..1e98e17d9 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -358,7 +358,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) snprintf(sval, sizeof(sval), "%g", dval); slen = strlen(sval); if (*len < slen) - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; strcpy(val, sval); return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_bytes.cc b/src/grib_accessor_class_bytes.cc index 8ad005033..71533095e 100644 --- a/src/grib_accessor_class_bytes.cc +++ b/src/grib_accessor_class_bytes.cc @@ -134,7 +134,7 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) if (*len < (size_t)slength) { *len = slength; - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; } p = grib_handle_of_accessor(a)->buffer->data + grib_byte_offset(a); diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index 57f1a9c30..de9a9655f 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -156,8 +156,11 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) l = strlen(tmp) + 1; if (*len < l) { + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, l, *len); *len = l; - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_getenv.cc b/src/grib_accessor_class_getenv.cc index 6760dff6d..6bc0ced3e 100644 --- a/src/grib_accessor_class_getenv.cc +++ b/src/grib_accessor_class_getenv.cc @@ -138,7 +138,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) l = strlen(self->value); if (*len < l) - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; snprintf(val, 1024, "%s", self->value); *len = strlen(self->value); diff --git a/src/grib_accessor_class_gts_header.cc b/src/grib_accessor_class_gts_header.cc index 149e9cfdd..65b295634 100644 --- a/src/grib_accessor_class_gts_header.cc +++ b/src/grib_accessor_class_gts_header.cc @@ -122,12 +122,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (h->gts_header == NULL || h->gts_header_len < 8) { if (*len < 8) - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; snprintf(val, 1024, "missing"); return GRIB_SUCCESS; } if (*len < h->gts_header_len) - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; offset = self->gts_offset > 0 ? self->gts_offset : 0; length = self->gts_length > 0 ? self->gts_length : h->gts_header_len; diff --git a/src/grib_accessor_class_julian_date.cc b/src/grib_accessor_class_julian_date.cc index 5f6456546..61fd6959c 100644 --- a/src/grib_accessor_class_julian_date.cc +++ b/src/grib_accessor_class_julian_date.cc @@ -282,7 +282,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) grib_handle* h = grib_handle_of_accessor(a); if (*len < 15) - return GRIB_ARRAY_TOO_SMALL; + return GRIB_BUFFER_TOO_SMALL; if (self->ymd == NULL) { ret = grib_get_long(h, self->year, &year); @@ -334,6 +334,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) else { snprintf(val, 1024, "%04ld%02ld%02ld%02ld%02ld%02ld", year, month, day, hour, minute, second); } + *len = strlen(val)+1; return ret; } diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 86aa62dd9..2408c85dd 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -181,7 +181,12 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) struct grib_md5_state md5c; if (*len < 32) { - grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); + const char* cclass_name = a->cclass->name; + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + cclass_name, a->name, 32, *len); + // grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); + *len = 32; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 739e5d55d..2a4eed170 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -146,8 +146,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) if (len[0] < (a->length + 1)) { grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", len[0], a->name, a->length + 1); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; + len[0] = a->length+1; + return GRIB_BUFFER_TOO_SMALL; } for (i = 0; i < a->length; i++) diff --git a/src/grib_query.cc b/src/grib_query.cc index c543f478a..634f0e600 100644 --- a/src/grib_query.cc +++ b/src/grib_query.cc @@ -168,7 +168,7 @@ static char* get_condition(const char* name, codes_condition* condition) condition->rightType = GRIB_TYPE_UNDEFINED; - Assert(name[0] == '/'); + DEBUG_ASSERT(name[0] == '/'); while (*equal != 0 && *equal != '=') equal++; @@ -569,7 +569,7 @@ char* grib_split_name_attribute(grib_context* c, const char* name, char* attribu grib_accessor* grib_find_accessor(const grib_handle* h, const char* name) { grib_accessor* aret = NULL; - Assert(h); + DEBUG_ASSERT(h); if (h->product_kind == PRODUCT_GRIB) { aret = _grib_find_accessor(h, name); /* ECC-144: Performance */ } diff --git a/tests/codes_get_string.cc b/tests/codes_get_string.cc index 8ca3bccb7..2cc90798a 100644 --- a/tests/codes_get_string.cc +++ b/tests/codes_get_string.cc @@ -36,7 +36,7 @@ int main(int argc, char* argv[]) err = codes_get_string(h, key, kvalue, &len); printf("err=%d kvalue=|%s|\n", err, kvalue); - assert(err == CODES_ARRAY_TOO_SMALL || err == CODES_BUFFER_TOO_SMALL); + assert(err == CODES_BUFFER_TOO_SMALL); codes_handle_delete(h); fclose(in); diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 14ce6f503..6cae28866 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -14,14 +14,9 @@ label="codes_get_string_test" tempText=temp.$label.txt input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -keys="identifier md5Headers parameterUnits" -for k in $keys; do - $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText - grep -q "Wrong size" $tempText -done input=$data_dir/reduced_latlon_surface.grib2 -keys="projString bitmap class year gridDefinitionDescription packingType" +keys="identifier projString bitmap class year gridDefinitionDescription packingType md5Headers parameterUnits" for k in $keys; do $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText grep -q "Buffer too small" $tempText From 939ec37e33017b24c6e1497d02b4dbe4d22620c2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 13:47:40 +0000 Subject: [PATCH 449/469] ECC-1756: Legacy params --- .../localConcepts/ecmf/cfVarName.legacy.def | 18 ++++++++++++++++++ .../grib2/localConcepts/ecmf/name.legacy.def | 18 ++++++++++++++++++ .../localConcepts/ecmf/paramId.legacy.def | 18 ++++++++++++++++++ .../localConcepts/ecmf/shortName.legacy.def | 18 ++++++++++++++++++ .../grib2/localConcepts/ecmf/units.legacy.def | 18 ++++++++++++++++++ 5 files changed, 90 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 42c81b37e..ab4af4326 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -1351,3 +1351,21 @@ parameterCategory = 190 ; parameterNumber = 141 ; } +#Mean total snowfall rate +'mtsfr' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 144 ; +} +#Evaporation +'erate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 182 ; +} +#Mean total precipitation rate +'tprate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 228 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index b27bc61c7..c3e229a57 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -1351,3 +1351,21 @@ parameterCategory = 190 ; parameterNumber = 141 ; } +#Mean total snowfall rate +'Mean total snowfall rate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 144 ; +} +#Evaporation +'Evaporation' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 182 ; +} +#Mean total precipitation rate +'Mean total precipitation rate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 228 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index e1122a4bc..aaf6da765 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -1351,3 +1351,21 @@ parameterCategory = 190 ; parameterNumber = 141 ; } +#Mean total snowfall rate +'172144' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 144 ; +} +#Evaporation +'172182' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 182 ; +} +#Mean total precipitation rate +'172228' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 228 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index aa0db49de..ec7ef430b 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -1351,3 +1351,21 @@ parameterCategory = 190 ; parameterNumber = 141 ; } +#Mean total snowfall rate +'mtsfr' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 144 ; +} +#Evaporation +'erate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 182 ; +} +#Mean total precipitation rate +'tprate' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 228 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index d2f4aafda..ca9926f81 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -1351,3 +1351,21 @@ parameterCategory = 190 ; parameterNumber = 141 ; } +#Mean total snowfall rate +'m of water equivalent s**-1' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 144 ; +} +#Evaporation +'m of water s**-1' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 182 ; +} +#Mean total precipitation rate +'m s**-1' = { + discipline = 192 ; + parameterCategory = 172 ; + parameterNumber = 228 ; +} From a3e8be20b4e3b6ba70137ed7fd61e7f92f407f9a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 15:52:24 +0000 Subject: [PATCH 450/469] API: codes_extract_offsets_sizes_malloc --- src/eccodes.h | 5 ++++- src/eccodes_prototypes.h | 4 +++- src/grib_io.cc | 35 +++++++++++++++++++++++++++++++++-- tests/extract_offsets.cc | 37 ++++++++++++++++++++++++++++--------- tests/extract_offsets.sh | 15 ++++++++++----- 5 files changed, 78 insertions(+), 18 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index 7a535808e..f0b110b86 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1458,7 +1458,10 @@ int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* v * strict_mode = If 1 means fail if any message is invalid. * returns 0 if OK, integer value on error. */ -int codes_extract_offsets_malloc(codes_context* c, const char* filename, ProductKind product, off_t** offsets, int* num_messages, int strict_mode); +int codes_extract_offsets_malloc(codes_context* c, const char* filename, ProductKind product, + off_t** offsets, int* num_messages, int strict_mode); +int codes_extract_offsets_sizes_malloc(codes_context* c, const char* filename, ProductKind product, + off_t** offsets, size_t** sizes, int* num_messages, int strict_mode); /* --------------------------------------- */ #ifdef __cplusplus diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 9041e2bc2..307f29330 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1025,7 +1025,9 @@ int grib_read_any_from_memory_alloc(grib_context* ctx, unsigned char** data, siz int grib_read_any_from_memory(grib_context* ctx, unsigned char** data, size_t* data_length, void* buffer, size_t* len); int grib_count_in_file(grib_context* c, FILE* f, int* n); int grib_count_in_filename(grib_context* c, const char* filename, int* n); -int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductKind product, off_t** offsets, int* length, int strict_mode); +int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductKind product, off_t** offsets, int* num_messages, int strict_mode); +int codes_extract_offsets_sizes_malloc(grib_context* c, const char* filename, ProductKind product, + off_t** offsets, size_t** sizes, int* num_messages, int strict_mode); /* grib_trie.cc*/ diff --git a/src/grib_io.cc b/src/grib_io.cc index 6f878c8af..64c197a29 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1815,7 +1815,11 @@ static int count_product_in_file(grib_context* c, FILE* f, ProductKind product, return err == GRIB_END_OF_FILE ? 0 : err; } -int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductKind product, off_t** offsets, int* length, int strict_mode) +static int codes_extract_offsets_malloc_internal( + grib_context* c, const char* filename, ProductKind product, + off_t** offsets, size_t** sizes, + int* number_of_elements, + int strict_mode) { int err = 0; size_t size = 0; @@ -1848,7 +1852,7 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK fclose(f); return err; } - *length = num_messages; + *number_of_elements = num_messages; if (num_messages == 0) { grib_context_log(c, GRIB_LOG_ERROR, "%s: No messages in file", __func__); fclose(f); @@ -1859,6 +1863,13 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK fclose(f); return GRIB_OUT_OF_MEMORY; } + if (sizes) { + *sizes = (size_t*)calloc(num_messages, sizeof(size_t)); + if (!*sizes) { + fclose(f); + return GRIB_OUT_OF_MEMORY; + } + } i = 0; while (err != GRIB_END_OF_FILE) { @@ -1868,6 +1879,9 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK err = decoder(f, &size, &offset); if (!err) { (*offsets)[i] = offset; + if (sizes) { + (*sizes)[i] = size; + } } else { if (strict_mode && (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE)) { @@ -1881,3 +1895,20 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK fclose(f); return err; } + +// The lagacy version only did the offsets +int codes_extract_offsets_malloc( + grib_context* c, const char* filename, ProductKind product, + off_t** offsets, int* number_of_elements, int strict_mode) +{ + // Call without doing the message sizes + return codes_extract_offsets_malloc_internal(c, filename, product, offsets, NULL, number_of_elements, strict_mode); +} + +// New function does both message offsets and sizes +int codes_extract_offsets_sizes_malloc( + grib_context* c, const char* filename, ProductKind product, + off_t** offsets, size_t** sizes, int* number_of_elements, int strict_mode) +{ + return codes_extract_offsets_malloc_internal(c, filename, product, offsets, sizes, number_of_elements, strict_mode); +} diff --git a/tests/extract_offsets.cc b/tests/extract_offsets.cc index 13d0ce378..ea5a02073 100644 --- a/tests/extract_offsets.cc +++ b/tests/extract_offsets.cc @@ -15,23 +15,42 @@ int main(int argc, char* argv[]) { - char *filename; + char *filename = NULL; + char *what = NULL; // offsets or sizes int err = 0; int num_messages = 0, i =0; off_t* offsets = NULL; + size_t* sizes = NULL; codes_context* c = codes_context_get_default(); const int strict_mode = 1; - /* Usage: prog file */ - assert(argc == 2); + /* Usage: prog mode file */ + assert(argc == 3); - filename = argv[1]; - err = codes_extract_offsets_malloc(c, filename, PRODUCT_ANY, &offsets, &num_messages, strict_mode); - if (err) return err; + what = argv[1]; + filename = argv[2]; - for (i = 0; i < num_messages; ++i) { - printf("%lu\n", (unsigned long)offsets[i]); + if (strcmp(what, "-o")==0) { + err = codes_extract_offsets_malloc(c, filename, PRODUCT_ANY, &offsets, &num_messages, strict_mode); + if (err) return err; + + for (i = 0; i < num_messages; ++i) { + printf("%lu\n", (unsigned long)offsets[i]); + } + free(offsets); } - free(offsets); + + if (strcmp(what, "-s")==0) { + // Version getting offsets as well as sizes of messages + err = codes_extract_offsets_sizes_malloc(c, filename, PRODUCT_ANY, &offsets, &sizes, &num_messages, strict_mode); + if (err) return err; + + for (i = 0; i < num_messages; ++i) { + printf("%zu\n", sizes[i]); + } + free(offsets); + free(sizes); + } + return 0; } diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index b36005cb9..60bb42708 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -19,15 +19,20 @@ tempLog="temp.${label}.log" echo "Multi-message BUFR..." # --------------------------- input=${data_dir}/bufr/aeolus_wmo_26.bufr -$EXEC ${test_dir}/extract_offsets $input > $temp1 +$EXEC ${test_dir}/extract_offsets -o $input > $temp1 ${tools_dir}/bufr_get -p offset:i $input > $temp2 diff $temp1 $temp2 +$EXEC ${test_dir}/extract_offsets -s $input > $temp1 +${tools_dir}/bufr_get -p totalLength $input > $temp2 +diff $temp1 $temp2 + + echo "Multi-message GRIBs..." # -------------------------- inputs="${data_dir}/mixed.grib ${data_dir}/test.grib1 ${data_dir}/v.grib2" for input in $inputs; do - $EXEC ${test_dir}/extract_offsets $input > $temp1 + $EXEC ${test_dir}/extract_offsets -o $input > $temp1 ${tools_dir}/grib_get -p offset:i $input > $temp2 diff $temp1 $temp2 done @@ -35,21 +40,21 @@ done echo "Test with invalid inputs..." # --------------------------------- set +e -$EXEC ${test_dir}/extract_offsets ${data_dir} > $tempLog 2>&1 +$EXEC ${test_dir}/extract_offsets -o ${data_dir} > $tempLog 2>&1 status=$? set -e [ $status -ne 0 ] grep -q "is a directory" $tempLog set +e -$EXEC ${test_dir}/extract_offsets ${data_dir}/bad.grib > $tempLog 2>&1 +$EXEC ${test_dir}/extract_offsets -o ${data_dir}/bad.grib > $tempLog 2>&1 status=$? set -e [ $status -ne 0 ] grep -q "Wrong message length" $tempLog set +e -$EXEC ${test_dir}/extract_offsets nonexistentfile > $tempLog 2>&1 +$EXEC ${test_dir}/extract_offsets -o nonexistentfile > $tempLog 2>&1 status=$? set -e [ $status -ne 0 ] From b3594219a6ee07b7e2c1bb3373a02d87dafdc4e9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 17:31:25 +0000 Subject: [PATCH 451/469] Testing: codes_extract_offsets_sizes_malloc --- tests/extract_offsets.cc | 27 ++++++++++++++++++++------- tests/extract_offsets.sh | 23 ++++++++++++++++++++++- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/tests/extract_offsets.cc b/tests/extract_offsets.cc index ea5a02073..e72fddc94 100644 --- a/tests/extract_offsets.cc +++ b/tests/extract_offsets.cc @@ -12,25 +12,38 @@ #undef NDEBUG #include +#include int main(int argc, char* argv[]) { char *filename = NULL; - char *what = NULL; // offsets or sizes int err = 0; int num_messages = 0, i =0; off_t* offsets = NULL; size_t* sizes = NULL; codes_context* c = codes_context_get_default(); const int strict_mode = 1; + int do_offsets = 0; + int do_sizes = 0; + int index = 0, oc = 0; - /* Usage: prog mode file */ - assert(argc == 3); + /* Usage: prog option file */ + assert(argc == 3 || argc == 4); - what = argv[1]; - filename = argv[2]; + while ((oc = getopt(argc, argv, "os")) != -1) { + switch (oc) { + case 'o': + do_offsets = 1; + break; + case 's': + do_sizes = 1; + break; + } + } + index = optind; + filename = argv[index]; - if (strcmp(what, "-o")==0) { + if (do_offsets) { err = codes_extract_offsets_malloc(c, filename, PRODUCT_ANY, &offsets, &num_messages, strict_mode); if (err) return err; @@ -40,7 +53,7 @@ int main(int argc, char* argv[]) free(offsets); } - if (strcmp(what, "-s")==0) { + if (do_sizes) { // Version getting offsets as well as sizes of messages err = codes_extract_offsets_sizes_malloc(c, filename, PRODUCT_ANY, &offsets, &sizes, &num_messages, strict_mode); if (err) return err; diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index 60bb42708..ea43f0091 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -15,6 +15,7 @@ label="extract_offsets_test" temp1="temp.${label}.1" temp2="temp.${label}.2" tempLog="temp.${label}.log" +tempRef="temp.${label}.ref" echo "Multi-message BUFR..." # --------------------------- @@ -35,8 +36,28 @@ for input in $inputs; do $EXEC ${test_dir}/extract_offsets -o $input > $temp1 ${tools_dir}/grib_get -p offset:i $input > $temp2 diff $temp1 $temp2 + + $EXEC ${test_dir}/extract_offsets -s $input > $temp1 + ${tools_dir}/grib_get -p totalLength $input > $temp2 + diff $temp1 $temp2 done +echo "GTS headers and padding..." +# ------------------------------- +input=${data_dir}/gts.grib +$EXEC ${test_dir}/extract_offsets -o -s $input > $temp1 +cat > $tempRef << EOF +41 +170 +299 +428 +84 +84 +84 +84 +EOF +diff $tempRef $temp1 + echo "Test with invalid inputs..." # --------------------------------- set +e @@ -62,4 +83,4 @@ grep -q "Unable to read file" $tempLog # Clean up -rm -f $temp1 $temp2 $tempLog +rm -f $temp1 $temp2 $tempLog $tempRef From 5c9ff023936d9e60adaeab0d0604d6ba70491895 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 17:32:33 +0000 Subject: [PATCH 452/469] Testing: projString for unsupported grids --- tests/grib_proj_string.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/grib_proj_string.sh b/tests/grib_proj_string.sh index e1a60ca56..cc2538dc9 100755 --- a/tests/grib_proj_string.sh +++ b/tests/grib_proj_string.sh @@ -97,6 +97,17 @@ set -e grep -q "ERROR.*Cannot unpack.*projTargetString.* as double" $tempText grep -q "Hint: Try unpacking as string" $tempText +# Unsupported grids +unsupported_grids="albers space_view equatorial_azimuthal_equidistant transverse_mercator" +for ug in $unsupported_grids; do + ${tools_dir}/grib_set -s gridType=$ug $grib2_sample $tempGrib + set +e + ${tools_dir}/grib_get -p projString $tempGrib > $tempText 2>&1 + status=$? + set -e + [ $status -ne 0 ] + grep -q "Not yet implemented" $tempText +done # Clean up rm -f $tempGrib $tempText From c412b2c87c52a5eec8f46a61d4e390070d96e0ed Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 17:33:25 +0000 Subject: [PATCH 453/469] Testing: codes_get_string messages --- src/grib_accessor_class_group.cc | 19 +++++++++++-------- src/grib_accessor_class_md5.cc | 1 - src/grib_accessor_class_message.cc | 19 +++++++++++-------- src/grib_accessor_class_time.cc | 3 +-- src/grib_accessor_class_variable.cc | 6 +++--- tests/codes_get_string.sh | 3 ++- 6 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/grib_accessor_class_group.cc b/src/grib_accessor_class_group.cc index 32f337d3b..a64362968 100644 --- a/src/grib_accessor_class_group.cc +++ b/src/grib_accessor_class_group.cc @@ -172,19 +172,22 @@ static int get_native_type(grib_accessor* a) static int unpack_string(grib_accessor* a, char* val, size_t* len) { - int i = 0; - - if (len[0] < (a->length + 1)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s it contains %ld values", - len[0], a->name, a->length + 1); - len[0] = 0; + long i = 0; + size_t l = a->length + 1; + grib_handle* h = grib_handle_of_accessor(a); + + if (*len < l) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + a->cclass->name, a->name, l, *len); + *len = l; return GRIB_ARRAY_TOO_SMALL; } for (i = 0; i < a->length; i++) - val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset + i]; + val[i] = h->buffer->data[a->offset + i]; val[i] = 0; - len[0] = i; + *len = i; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 2408c85dd..dfb08a7fb 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -185,7 +185,6 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len) grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", cclass_name, a->name, 32, *len); - // grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong size (%zu) for %s", __func__, *len, a->name); *len = 32; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 2a4eed170..8dd580d3e 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -141,19 +141,22 @@ static int value_count(grib_accessor* a, long* count) static int unpack_string(grib_accessor* a, char* val, size_t* len) { - int i = 0; - - if (len[0] < (a->length + 1)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", - len[0], a->name, a->length + 1); - len[0] = a->length+1; + long i = 0; + size_t l = a->length + 1; + grib_handle* h = grib_handle_of_accessor(a); + + if (*len < l) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + a->cclass->name, a->name, l, *len); + *len = l; return GRIB_BUFFER_TOO_SMALL; } for (i = 0; i < a->length; i++) - val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset + i]; + val[i] = h->buffer->data[a->offset + i]; val[i] = 0; - len[0] = i; + *len = i; return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index cf7350605..a90f4415a 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -197,10 +197,9 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) unpack_long(a, &v, &lsize); if (*len < lmin) { - const char* cclass_name = a->cclass->name; grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", - cclass_name, a->name, lmin, *len); + a->cclass->name, a->name, lmin, *len); *len = lmin; return GRIB_BUFFER_TOO_SMALL; } diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index c85d8a085..9d12e04cf 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -324,7 +324,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) char buf[80]; char* p = buf; - size_t slen; + size_t slen = 0; if (self->type == GRIB_TYPE_STRING) { p = self->cval; @@ -336,8 +336,8 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) slen = strlen(p) + 1; if (*len < slen) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Variable unpack_string. Wrong size for %s, it is %ld bytes long (len=%lu)", - a->name, slen, *len); + "%s: Buffer too small for %s. It is %zu bytes long (len=%zu)", + a->cclass->name, a->name, slen, *len); *len = slen; return GRIB_BUFFER_TOO_SMALL; } diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 6cae28866..50dc54388 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -16,7 +16,8 @@ tempText=temp.$label.txt input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl input=$data_dir/reduced_latlon_surface.grib2 -keys="identifier projString bitmap class year gridDefinitionDescription packingType md5Headers parameterUnits" +keys="identifier projString bitmap class year gridDefinitionDescription + time validityTime packingType md5Headers parameterUnits" for k in $keys; do $EXEC ${test_dir}/codes_get_string $input $k 2> $tempText grep -q "Buffer too small" $tempText From d8996c9a400e1491a69bdbb3726788146dc1b621 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 17:36:56 +0000 Subject: [PATCH 454/469] Testing: projString test fix --- tests/grib_proj_string.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_proj_string.sh b/tests/grib_proj_string.sh index cc2538dc9..93ddd92eb 100755 --- a/tests/grib_proj_string.sh +++ b/tests/grib_proj_string.sh @@ -106,7 +106,7 @@ for ug in $unsupported_grids; do status=$? set -e [ $status -ne 0 ] - grep -q "Not yet implemented" $tempText + grep -q "not yet implemented" $tempText done # Clean up From 562ff8b6043d18afac49e9bdf0049feae4edad23 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 17:57:59 +0000 Subject: [PATCH 455/469] Fix broken Windows build --- tests/extract_offsets.cc | 3 +++ tests/extract_offsets.sh | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/tests/extract_offsets.cc b/tests/extract_offsets.cc index e72fddc94..4860d64ee 100644 --- a/tests/extract_offsets.cc +++ b/tests/extract_offsets.cc @@ -12,7 +12,10 @@ #undef NDEBUG #include + +#ifndef ECCODES_ON_WINDOWS #include +#endif int main(int argc, char* argv[]) { diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index ea43f0091..65cf98a4f 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -17,6 +17,11 @@ temp2="temp.${label}.2" tempLog="temp.${label}.log" tempRef="temp.${label}.ref" +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + echo "Multi-message BUFR..." # --------------------------- input=${data_dir}/bufr/aeolus_wmo_26.bufr From 096d14ebc2ee49cb581b957189951294e3e40b9e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Feb 2024 19:01:42 +0000 Subject: [PATCH 456/469] Fix broken Windows build (2nd try) --- tests/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eca4a11b3..71babe949 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -48,7 +48,6 @@ list(APPEND test_c_bins bufr_ecc-1288 bufr_get_element bufr_extract_headers - extract_offsets bufr_check_descriptors bufr_coordinate_descriptors codes_new_from_samples @@ -459,6 +458,13 @@ if( HAVE_BUILD_TOOLS ) COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bufr_threads_ecc-604.sh ) endif() + if( NOT ECCODES_ON_WINDOWS ) + ecbuild_add_executable( TARGET extract_offsets + NOINSTALL + SOURCES extract_offsets.cc + LIBS eccodes ) + endif() + ecbuild_add_test( TARGET eccodes_t_grib_to_netcdf TYPE SCRIPT CONDITION HAVE_NETCDF AND ENABLE_EXTRA_TESTS AND NOT ECCODES_ON_WINDOWS From f783dc1f53f588f2c01e2a794f81e89de63e29ee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 3 Feb 2024 19:02:57 +0000 Subject: [PATCH 457/469] Testing: codes_extract_offsets cleanup --- tests/extract_offsets.cc | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/tests/extract_offsets.cc b/tests/extract_offsets.cc index 4860d64ee..4a21aef41 100644 --- a/tests/extract_offsets.cc +++ b/tests/extract_offsets.cc @@ -12,25 +12,18 @@ #undef NDEBUG #include - -#ifndef ECCODES_ON_WINDOWS #include -#endif int main(int argc, char* argv[]) { char *filename = NULL; int err = 0; - int num_messages = 0, i =0; - off_t* offsets = NULL; - size_t* sizes = NULL; + int num_messages = 0, i = 0, do_offsets = 0, do_sizes = 0, oc = 0; + off_t* offsets = NULL; // array of message offsets + size_t* sizes = NULL; // array of message sizes codes_context* c = codes_context_get_default(); const int strict_mode = 1; - int do_offsets = 0; - int do_sizes = 0; - int index = 0, oc = 0; - /* Usage: prog option file */ assert(argc == 3 || argc == 4); while ((oc = getopt(argc, argv, "os")) != -1) { @@ -43,8 +36,7 @@ int main(int argc, char* argv[]) break; } } - index = optind; - filename = argv[index]; + filename = argv[optind]; if (do_offsets) { err = codes_extract_offsets_malloc(c, filename, PRODUCT_ANY, &offsets, &num_messages, strict_mode); @@ -53,7 +45,6 @@ int main(int argc, char* argv[]) for (i = 0; i < num_messages; ++i) { printf("%lu\n", (unsigned long)offsets[i]); } - free(offsets); } if (do_sizes) { @@ -64,9 +55,9 @@ int main(int argc, char* argv[]) for (i = 0; i < num_messages; ++i) { printf("%zu\n", sizes[i]); } - free(offsets); free(sizes); } + free(offsets); return 0; } From db7d9d09956d2b81c8a9e7a4ce789c64fa3fb5bb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 3 Feb 2024 19:18:42 +0000 Subject: [PATCH 458/469] Testing: expandedDescriptors as array of doubles --- tests/bufr_filter_misc.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/bufr_filter_misc.sh b/tests/bufr_filter_misc.sh index a31cd2f0a..2d4dc8d4c 100755 --- a/tests/bufr_filter_misc.sh +++ b/tests/bufr_filter_misc.sh @@ -1270,6 +1270,13 @@ diff $fRef $fLog rm -f $fRef +# Decode expandedDescriptors as array of doubles +cat > $fRules < Date: Sat, 3 Feb 2024 19:49:31 +0000 Subject: [PATCH 459/469] Testing: expanded_descriptors with different ranks --- tests/bufr_filter_misc.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/bufr_filter_misc.sh b/tests/bufr_filter_misc.sh index 2d4dc8d4c..fa022f461 100755 --- a/tests/bufr_filter_misc.sh +++ b/tests/bufr_filter_misc.sh @@ -1276,6 +1276,17 @@ cat > $fRules < $fRules < $fLog # Clean up From 62bb44d65a6e08fa8f73574072f4f7c51c75b63c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 4 Feb 2024 13:56:39 +0000 Subject: [PATCH 460/469] Testing: expanded_descriptors scales --- src/grib_accessor_class_g1date.cc | 5 ----- tests/bufr_filter_misc.sh | 10 ++++++---- tests/codes_get_string.sh | 3 ++- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/grib_accessor_class_g1date.cc b/src/grib_accessor_class_g1date.cc index c1efdfc03..37cd80ad5 100644 --- a/src/grib_accessor_class_g1date.cc +++ b/src/grib_accessor_class_g1date.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************ - * Enrico Fucile - ***********************************/ - #include "grib_api_internal.h" /* @@ -259,7 +255,6 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } else if (year == 255 && month >= 1 && month <= 12) { snprintf(tmp, sizeof(tmp), "%s-%02ld", months[month - 1], day); - /* snprintf(tmp,sizeof(tmp),"%02ld-%02ld",month,day); */ } else { long x = ((century - 1) * 100 + year) * 10000 + month * 100 + day; diff --git a/tests/bufr_filter_misc.sh b/tests/bufr_filter_misc.sh index fa022f461..f1edf0368 100755 --- a/tests/bufr_filter_misc.sh +++ b/tests/bufr_filter_misc.sh @@ -1279,12 +1279,14 @@ ${tools_dir}/codes_bufr_filter $fRules airc_142.bufr # Various expanded descriptors f="$ECCODES_SAMPLES_PATH/BUFR4.tmpl" cat > $fRules < $fLog diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 50dc54388..54d8aba96 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -13,7 +13,8 @@ label="codes_get_string_test" tempText=temp.$label.txt -input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +input=$ECCODES_SAMPLES_PATH/GRIB1.tmpl +$EXEC ${test_dir}/codes_get_string $input dataDate 2> $tempText input=$data_dir/reduced_latlon_surface.grib2 keys="identifier projString bitmap class year gridDefinitionDescription From 4bf80fa6f3413883b6af34892ab17fce752942b0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 4 Feb 2024 14:14:13 +0000 Subject: [PATCH 461/469] tests --- ...b_accessor_class_g1day_of_the_year_date.cc | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/grib_accessor_class_g1day_of_the_year_date.cc b/src/grib_accessor_class_g1day_of_the_year_date.cc index 6745bbf56..9028d5076 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.cc +++ b/src/grib_accessor_class_g1day_of_the_year_date.cc @@ -120,32 +120,26 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) { /* special clim case where each mont have 30 days.. to comply with mars*/ grib_accessor_g1day_of_the_year_date* self = (grib_accessor_g1day_of_the_year_date*)a; - + grib_handle* hand = grib_handle_of_accessor(a); char tmp[1024]; long year = 0; long century = 0; long month = 0; long day = 0; - - long fullyear = 0; + long fullyear = 0; long fake_day_of_year = 0; - size_t l; - - grib_get_long_internal(grib_handle_of_accessor(a), self->century, ¢ury); - grib_get_long_internal(grib_handle_of_accessor(a), self->day, &day); - grib_get_long_internal(grib_handle_of_accessor(a), self->month, &month); - grib_get_long_internal(grib_handle_of_accessor(a), self->year, &year); - - if (*len < 1) - return GRIB_BUFFER_TOO_SMALL; + grib_get_long_internal(hand, self->century, ¢ury); + grib_get_long_internal(hand, self->day, &day); + grib_get_long_internal(hand, self->month, &month); + grib_get_long_internal(hand, self->year, &year); - fullyear = ((century - 1) * 100 + year); + fullyear = ((century - 1) * 100 + year); fake_day_of_year = ((month - 1) * 30) + day; snprintf(tmp, sizeof(tmp), "%04ld-%03ld", fullyear, fake_day_of_year); - l = strlen(tmp) + 1; + size_t l = strlen(tmp) + 1; if (*len < l) { *len = l; return GRIB_BUFFER_TOO_SMALL; From 70e6d1094e3ceddb1cbbf281a79ccf7161218af2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 4 Feb 2024 14:14:52 +0000 Subject: [PATCH 462/469] Testing: Increase coverage --- tests/codes_compare_keys.sh | 2 +- tests/codes_get_string.sh | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/codes_compare_keys.sh b/tests/codes_compare_keys.sh index 44fed25d2..9a2a39aef 100755 --- a/tests/codes_compare_keys.sh +++ b/tests/codes_compare_keys.sh @@ -74,7 +74,7 @@ ${test_dir}/codes_compare_keys $sample_spectral $sample_spectral enorm,avg sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl tempGribA=temp.${label}.A.grib tempGribB=temp.${label}.B.grib -${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=6 $sample1 $tempGribA +${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=2 $sample1 $tempGribA ${tools_dir}/grib_set -s localDefinitionNumber=16,verifyingMonth=5 $sample1 $tempGribB set +e ${test_dir}/codes_compare_keys $tempGribA $tempGribB endOfInterval > $tempLog 2>&1 diff --git a/tests/codes_get_string.sh b/tests/codes_get_string.sh index 54d8aba96..011224253 100755 --- a/tests/codes_get_string.sh +++ b/tests/codes_get_string.sh @@ -11,10 +11,15 @@ . ./include.ctest.sh label="codes_get_string_test" +tempGrib=temp.$label.grib tempText=temp.$label.txt input=$ECCODES_SAMPLES_PATH/GRIB1.tmpl -$EXEC ${test_dir}/codes_get_string $input dataDate 2> $tempText +$EXEC ${test_dir}/codes_get_string $input dataDate + +${tools_dir}/grib_set -s marsType=s3,marsStream=mpic $input $tempGrib +$EXEC ${test_dir}/codes_get_string $tempGrib dayOfTheYearDate # 2> $tempText + input=$data_dir/reduced_latlon_surface.grib2 keys="identifier projString bitmap class year gridDefinitionDescription From 57085c5bb13dc039fcec5e388100c82b788a5205 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Mon, 5 Feb 2024 10:32:55 +0000 Subject: [PATCH 463/469] ECC-1758: tables for local ERA6 parameters --- definitions/grib2/tables/local/era6/1.1.table | 6 ++++++ definitions/grib2/tables/local/era6/1/4.2.0.1.table | 13 +++++++++++++ .../grib2/tables/local/era6/1/4.2.0.14.table | 2 ++ .../grib2/tables/local/era6/1/4.2.0.19.table | 3 +++ definitions/grib2/tables/local/era6/1/4.2.0.4.table | 6 ++++++ definitions/grib2/tables/local/era6/1/4.2.0.5.table | 6 ++++++ definitions/grib2/tables/local/era6/1/4.2.0.6.table | 5 +++++ definitions/grib2/tables/local/era6/1/4.2.2.0.table | 6 ++++++ 8 files changed, 47 insertions(+) create mode 100644 definitions/grib2/tables/local/era6/1.1.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.1.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.14.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.19.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.4.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.5.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.0.6.table create mode 100644 definitions/grib2/tables/local/era6/1/4.2.2.0.table diff --git a/definitions/grib2/tables/local/era6/1.1.table b/definitions/grib2/tables/local/era6/1.1.table new file mode 100644 index 000000000..720161860 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1.1.table @@ -0,0 +1,6 @@ +# Code Table 1.1 GRIB Local Tables Version Number +0 0 Local tables not used +# . Only table entries and templates from the current Master table are valid. +# 1-254 Number of local tables version used +1 1 ERA6 local tables version 1 +255 255 Missing diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.1.table b/definitions/grib2/tables/local/era6/1/4.2.0.1.table new file mode 100644 index 000000000..3dc343d26 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.1.table @@ -0,0 +1,13 @@ +# Code table 4.2 - discipline=0 category=1 for ERA6 +192 192 Snow evaporation rate (kg m-2 s-1) +193 193 Total precipitation rate (m s-1) +194 194 Accumulated freezing rain (m) +195 195 Convective precipitation rate (m s-1) +196 196 Large-scale precipitation rate (m s-1) +197 197 Snow evaporation rate (m of water equivalent s-1) +198 198 Snowfall rate (m of water equivalent s-1) +199 199 Evaporation rate (m of water equivalent s-1) +200 200 Potential evaporation rate (m s-1) +201 201 Convective snowfall rate (m of water equivalent s-1) +202 202 Large-scale snowfall rate (m of water equivalent s-1) +254 254 Snow depth (m of water equivalent) diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.14.table b/definitions/grib2/tables/local/era6/1/4.2.0.14.table new file mode 100644 index 000000000..4269f21e4 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.14.table @@ -0,0 +1,2 @@ +# Code table 4.2 - discipline=0 category=14 for ERA6 +192 192 Total column ozone diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.19.table b/definitions/grib2/tables/local/era6/1/4.2.0.19.table new file mode 100644 index 000000000..43085d667 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.19.table @@ -0,0 +1,3 @@ +# Code table 4.2 - discipline=0 category=19 for ERA6 +192 192 Snow albedo (0-1) +193 193 Forecast albedo (0-1) diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.4.table b/definitions/grib2/tables/local/era6/1/4.2.0.4.table new file mode 100644 index 000000000..0aacbad26 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.4.table @@ -0,0 +1,6 @@ +# Code table 4.2 - discipline=0 category=4 for ERA6 +192 192 UV visible albedo for diffuse radiation (0-1) +193 193 UV visible albedo for direct radiation (0-1) +194 194 UV visible albedo for direct radiation, geometric component (0-1) +195 195 UV visible albedo for direct radiation, isotropic component (0-1) +196 196 UV visible albedo for direct radiation, volumetric component (0-1) diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.5.table b/definitions/grib2/tables/local/era6/1/4.2.0.5.table new file mode 100644 index 000000000..fcff92005 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.5.table @@ -0,0 +1,6 @@ +# Code table 4.2 - discipline=0 category=5 for ERA6 +192 192 Near IR albedo for diffuse radiation (0-1) +193 193 Near IR albedo for direct radiation (0-1) +194 194 Near IR albedo for direct radiation, volumetric component (0-1) +195 195 Near IR albedo for direct radiation, isotropic component (0-1) +196 196 Near IR albedo for direct radiation, volumetric component (0-1) diff --git a/definitions/grib2/tables/local/era6/1/4.2.0.6.table b/definitions/grib2/tables/local/era6/1/4.2.0.6.table new file mode 100644 index 000000000..2ba5a541c --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.0.6.table @@ -0,0 +1,5 @@ +# Code table 4.2 - discipline=0 category=6 for ERA6 +192 192 Total cloud cover (0-1) +193 193 Low cloud cover (0-1) +194 194 Medium cloud cover (0-1) +195 195 High cloud cover (0-1) diff --git a/definitions/grib2/tables/local/era6/1/4.2.2.0.table b/definitions/grib2/tables/local/era6/1/4.2.2.0.table new file mode 100644 index 000000000..9350f0560 --- /dev/null +++ b/definitions/grib2/tables/local/era6/1/4.2.2.0.table @@ -0,0 +1,6 @@ +# Code table 4.2 - discipline=2 category=0 for ERA6 +201 201 Water runoff and drainage rate (m s-1) +202 202 Surface runoff rate (m s-1) +203 203 Snow melt rate (m of water equivalent s-1) +204 204 Sub-surface runoff rate (m s-1) +205 205 Skin reservoir content (m of water equivalent) From 762079f64b8e0be7d335f730c62e1cd59550c5f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Feb 2024 10:57:40 +0000 Subject: [PATCH 464/469] ECC-1758: GRIB2: add local ECMWF parameters to pseudo-centre ERA6 --- .../grib2/localConcepts/era6/cfName.def | 62 ++++ definitions/grib2/localConcepts/era6/name.def | 280 ++++++++++++++++++ .../grib2/localConcepts/era6/paramId.def | 280 ++++++++++++++++++ .../grib2/localConcepts/era6/shortName.def | 280 ++++++++++++++++++ .../grib2/localConcepts/era6/units.def | 280 ++++++++++++++++++ 5 files changed, 1182 insertions(+) create mode 100644 definitions/grib2/localConcepts/era6/cfName.def diff --git a/definitions/grib2/localConcepts/era6/cfName.def b/definitions/grib2/localConcepts/era6/cfName.def new file mode 100644 index 000000000..b4593411b --- /dev/null +++ b/definitions/grib2/localConcepts/era6/cfName.def @@ -0,0 +1,62 @@ +# Automatically generated by ./create_def.pl, do not edit +#Snow depth +'lwe_thickness_of_surface_snow_amount' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 254 ; + } +#Large-scale precipitation +'lwe_thickness_of_stratiform_precipitation_amount' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective precipitation +'lwe_thickness_of_convective_precipitation_amount' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowfall +'lwe_thickness_of_snowfall_amount' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Total cloud cover +'cloud_area_fraction' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Evaporation +'lwe_thickness_of_water_evaporation_amount' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Total column ozone +'atmosphere_mass_content_of_ozone' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; +} diff --git a/definitions/grib2/localConcepts/era6/name.def b/definitions/grib2/localConcepts/era6/name.def index 7a0ddd401..a716f4abd 100644 --- a/definitions/grib2/localConcepts/era6/name.def +++ b/definitions/grib2/localConcepts/era6/name.def @@ -1,4 +1,266 @@ # Automatically generated by ./create_def.pl, do not edit +#Surface runoff +'Surface runoff' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff +'Sub-surface runoff' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#UV visible albedo for direct radiation (climatological) +'UV visible albedo for direct radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for diffuse radiation (climatological) +'UV visible albedo for diffuse radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'Near IR albedo for direct radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for diffuse radiation (climatological) +'Near IR albedo for diffuse radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Snow albedo +'Snow albedo' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 192 ; + } +#Snow evaporation +'Snow evaporation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowmelt +'Snowmelt' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snow depth +'Snow depth' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 254 ; + } +#Large-scale precipitation +'Large-scale precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective precipitation +'Convective precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowfall +'Snowfall' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Logarithm of surface pressure +'Logarithm of surface pressure' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 105 ; + } +#Total cloud cover +'Total cloud cover' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Evaporation +'Evaporation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Low cloud cover +'Low cloud cover' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 193 ; + } +#Medium cloud cover +'Medium cloud cover' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 194 ; + } +#High cloud cover +'High cloud cover' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 195 ; + } +#Skin reservoir content +'Skin reservoir content' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; + } +#Runoff +'Runoff' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 201 ; + typeOfStatisticalProcessing = 1 ; + } +#Total column ozone +'Total column ozone' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total precipitation +'Total precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 255 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective snowfall +'Convective snowfall' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Large-scale snowfall +'Large-scale snowfall' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Forecast albedo +'Forecast albedo' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'UV visible albedo for direct radiation, isotropic component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'UV visible albedo for direct radiation, volumetric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'UV visible albedo for direct radiation, geometric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'Near IR albedo for direct radiation, isotropic component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'Near IR albedo for direct radiation, volumetric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'Near IR albedo for direct radiation, geometric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } #Accumulated Carbon Dioxide Net Ecosystem Exchange 'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { discipline = 2 ; @@ -50,6 +312,24 @@ constituentType = 3 ; is_chemical = 1 ; } +#Accumulated freezing rain +'Accumulated freezing rain' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Potential evaporation +'Potential evaporation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'Time integrated, vertically integrated eastward ozone flux' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/era6/paramId.def b/definitions/grib2/localConcepts/era6/paramId.def index d8bafd40e..48ebc11f2 100644 --- a/definitions/grib2/localConcepts/era6/paramId.def +++ b/definitions/grib2/localConcepts/era6/paramId.def @@ -1,4 +1,266 @@ # Automatically generated by ./create_def.pl, do not edit +#Surface runoff +'8' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff +'9' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#UV visible albedo for direct radiation (climatological) +'15' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for diffuse radiation (climatological) +'16' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'17' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for diffuse radiation (climatological) +'18' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Snow albedo +'32' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 192 ; + } +#Snow evaporation +'44' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowmelt +'45' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snow depth +'141' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 254 ; + } +#Large-scale precipitation +'142' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective precipitation +'143' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowfall +'144' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Logarithm of surface pressure +'152' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 105 ; + } +#Total cloud cover +'164' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Evaporation +'182' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Low cloud cover +'186' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 193 ; + } +#Medium cloud cover +'187' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 194 ; + } +#High cloud cover +'188' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 195 ; + } +#Skin reservoir content +'198' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; + } +#Runoff +'205' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 201 ; + typeOfStatisticalProcessing = 1 ; + } +#Total column ozone +'206' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total precipitation +'228' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 255 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective snowfall +'239' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Large-scale snowfall +'240' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Forecast albedo +'243' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'210186' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'210187' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'210188' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'210189' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'210190' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'210191' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } #Accumulated Carbon Dioxide Net Ecosystem Exchange '228080' = { discipline = 2 ; @@ -50,6 +312,24 @@ constituentType = 3 ; is_chemical = 1 ; } +#Accumulated freezing rain +'228216' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Potential evaporation +'228251' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated eastward ozone flux '233032' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/era6/shortName.def b/definitions/grib2/localConcepts/era6/shortName.def index fb08d337b..02efcff3c 100644 --- a/definitions/grib2/localConcepts/era6/shortName.def +++ b/definitions/grib2/localConcepts/era6/shortName.def @@ -1,4 +1,266 @@ # Automatically generated by ./create_def.pl, do not edit +#Surface runoff +'sro' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff +'ssro' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#UV visible albedo for direct radiation (climatological) +'aluvp' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for diffuse radiation (climatological) +'aluvd' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'alnip' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for diffuse radiation (climatological) +'alnid' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Snow albedo +'asn' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 192 ; + } +#Snow evaporation +'es' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowmelt +'smlt' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snow depth +'sd' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 254 ; + } +#Large-scale precipitation +'lsp' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective precipitation +'cp' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowfall +'sf' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Logarithm of surface pressure +'lnsp' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 105 ; + } +#Total cloud cover +'tcc' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Evaporation +'e' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Low cloud cover +'lcc' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 193 ; + } +#Medium cloud cover +'mcc' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 194 ; + } +#High cloud cover +'hcc' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 195 ; + } +#Skin reservoir content +'src' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; + } +#Runoff +'ro' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 201 ; + typeOfStatisticalProcessing = 1 ; + } +#Total column ozone +'tco3' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total precipitation +'tp' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 255 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective snowfall +'csf' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Large-scale snowfall +'lsf' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Forecast albedo +'fal' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'aluvpi' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'aluvpv' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'aluvpg' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'alnipi' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'alnipv' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'alnipg' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } #Accumulated Carbon Dioxide Net Ecosystem Exchange 'aco2nee' = { discipline = 2 ; @@ -50,6 +312,24 @@ constituentType = 3 ; is_chemical = 1 ; } +#Accumulated freezing rain +'fzra' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Potential evaporation +'pev' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'tvioze' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/era6/units.def b/definitions/grib2/localConcepts/era6/units.def index 299d44782..828da275e 100644 --- a/definitions/grib2/localConcepts/era6/units.def +++ b/definitions/grib2/localConcepts/era6/units.def @@ -1,4 +1,266 @@ # Automatically generated by ./create_def.pl, do not edit +#Surface runoff +'m' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff +'m' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#UV visible albedo for direct radiation (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for diffuse radiation (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for diffuse radiation (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; + } +#Snow albedo +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 192 ; + } +#Snow evaporation +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 197 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowmelt +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 203 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snow depth +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 254 ; + } +#Large-scale precipitation +'m' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 196 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective precipitation +'m' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Snowfall +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 198 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Logarithm of surface pressure +'Numeric' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 25 ; + typeOfFirstFixedSurface = 105 ; + } +#Total cloud cover +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Evaporation +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 199 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Low cloud cover +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 193 ; + } +#Medium cloud cover +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 194 ; + } +#High cloud cover +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 195 ; + } +#Skin reservoir content +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; + } +#Runoff +'m' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 201 ; + typeOfStatisticalProcessing = 1 ; + } +#Total column ozone +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 14 ; + parameterNumber = 192 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total precipitation +'m' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 193 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 255 ; + typeOfStatisticalProcessing = 1 ; + } +#Convective snowfall +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 201 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Large-scale snowfall +'m of water equivalent' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 202 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Forecast albedo +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'(0 - 1)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; + } #Accumulated Carbon Dioxide Net Ecosystem Exchange 'kg m**-2' = { discipline = 2 ; @@ -50,6 +312,24 @@ constituentType = 3 ; is_chemical = 1 ; } +#Accumulated freezing rain +'m' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 194 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Potential evaporation +'m' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 200 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'kg m**-1' = { discipline = 0 ; From 1548438447e03575d881e2cdbac7b1335d2ada27 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Feb 2024 12:08:14 +0000 Subject: [PATCH 465/469] DestinE: DestinE data does not have the domain key --- definitions/grib2/post_meta_data.hook.products_12.def | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/post_meta_data.hook.products_12.def b/definitions/grib2/post_meta_data.hook.products_12.def index 17a4c2001..e22d01852 100644 --- a/definitions/grib2/post_meta_data.hook.products_12.def +++ b/definitions/grib2/post_meta_data.hook.products_12.def @@ -2,7 +2,8 @@ # Hooks post meta-data for DestinE (productionStatusOfProcessedData=12) # conceptsDir2 --> datasetForLocal -concept gridSpecification(unknown, "gridSpecificationConcept.def",conceptsDir2,conceptsDir1): no_copy, read_only, dump; - -concept destineOrigin (unknown, "destineOriginConcept.def",conceptsDir2,conceptsDir1): no_copy, dump; +concept gridSpecification(unknown, "gridSpecificationConcept.def", conceptsDir2, conceptsDir1): no_copy, read_only, dump; +concept destineOrigin(unknown, "destineOriginConcept.def", conceptsDir2, conceptsDir1): no_copy, dump; +# DestinE data does not have the domain key +unalias mars.domain; From 48801c4fb729919dee41981d4bcf8b3dcd87aaea Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Feb 2024 12:09:09 +0000 Subject: [PATCH 466/469] DestinE: DestinE data does not have the domain key --- definitions/grib2/post_meta_data.hook.products_12.def | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/post_meta_data.hook.products_12.def b/definitions/grib2/post_meta_data.hook.products_12.def index 17a4c2001..e22d01852 100644 --- a/definitions/grib2/post_meta_data.hook.products_12.def +++ b/definitions/grib2/post_meta_data.hook.products_12.def @@ -2,7 +2,8 @@ # Hooks post meta-data for DestinE (productionStatusOfProcessedData=12) # conceptsDir2 --> datasetForLocal -concept gridSpecification(unknown, "gridSpecificationConcept.def",conceptsDir2,conceptsDir1): no_copy, read_only, dump; - -concept destineOrigin (unknown, "destineOriginConcept.def",conceptsDir2,conceptsDir1): no_copy, dump; +concept gridSpecification(unknown, "gridSpecificationConcept.def", conceptsDir2, conceptsDir1): no_copy, read_only, dump; +concept destineOrigin(unknown, "destineOriginConcept.def", conceptsDir2, conceptsDir1): no_copy, dump; +# DestinE data does not have the domain key +unalias mars.domain; From 6a60c7a7a091961805767a6113da5f409b1853c6 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Mon, 5 Feb 2024 13:44:27 +0000 Subject: [PATCH 467/469] ECC-1759: MARS - namespace for type est and stream rfsd --- definitions/mars/grib.elda.est.def | 1 + definitions/mars/grib.rfsd.go.def | 14 ++++++++++++++ definitions/mars/grib.rfsd.sfo.def | 14 ++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 definitions/mars/grib.elda.est.def create mode 100644 definitions/mars/grib.rfsd.go.def create mode 100644 definitions/mars/grib.rfsd.sfo.def diff --git a/definitions/mars/grib.elda.est.def b/definitions/mars/grib.elda.est.def new file mode 100644 index 000000000..f877d1fa5 --- /dev/null +++ b/definitions/mars/grib.elda.est.def @@ -0,0 +1 @@ +alias mars.anoffset=offsetToEndOf4DvarWindow; diff --git a/definitions/mars/grib.rfsd.go.def b/definitions/mars/grib.rfsd.go.def new file mode 100644 index 000000000..6aff32403 --- /dev/null +++ b/definitions/mars/grib.rfsd.go.def @@ -0,0 +1,14 @@ +# rfsd Gridded observations + +alias mars.step = endStep; + +alias mars.date = dateOfForecast; +alias mars.time = timeOfForecast; + +alias mars.origin = inputOriginatingCentre; + +alias mars.anoffset=anoffset; + +# We need this because 'postProcessing' is defined later +meta efas_model sprintf("%s", postProcessing) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.rfsd.sfo.def b/definitions/mars/grib.rfsd.sfo.def new file mode 100644 index 000000000..dd53fa1d5 --- /dev/null +++ b/definitions/mars/grib.rfsd.sfo.def @@ -0,0 +1,14 @@ +# Simulation forced with observations + +alias mars.step = endStep; + +alias mars.date = dateOfForecast; +alias mars.time = timeOfForecast; + +alias mars.origin = inputOriginatingCentre; + +alias mars.anoffset=anoffset; + +# We need this because 'postProcessing' is defined later +meta efas_model sprintf("%s", postProcessing) : no_copy; +alias mars.model = efas_model; From 1342bd2c12cb386da1a9d1dd8ae59dcb6f8468b9 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Mon, 5 Feb 2024 15:04:28 +0000 Subject: [PATCH 468/469] ECC-1759: removed anoffset for stream rfsd from mars namespaces --- definitions/mars/grib.rfsd.go.def | 2 +- definitions/mars/grib.rfsd.sfo.def | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/mars/grib.rfsd.go.def b/definitions/mars/grib.rfsd.go.def index 6aff32403..651444588 100644 --- a/definitions/mars/grib.rfsd.go.def +++ b/definitions/mars/grib.rfsd.go.def @@ -7,7 +7,7 @@ alias mars.time = timeOfForecast; alias mars.origin = inputOriginatingCentre; -alias mars.anoffset=anoffset; +# alias mars.anoffset=anoffset; # We need this because 'postProcessing' is defined later meta efas_model sprintf("%s", postProcessing) : no_copy; diff --git a/definitions/mars/grib.rfsd.sfo.def b/definitions/mars/grib.rfsd.sfo.def index dd53fa1d5..8be729236 100644 --- a/definitions/mars/grib.rfsd.sfo.def +++ b/definitions/mars/grib.rfsd.sfo.def @@ -7,7 +7,7 @@ alias mars.time = timeOfForecast; alias mars.origin = inputOriginatingCentre; -alias mars.anoffset=anoffset; +# alias mars.anoffset=anoffset; # We need this because 'postProcessing' is defined later meta efas_model sprintf("%s", postProcessing) : no_copy; From b56d0571cbb7961e146bd5207c8c0e6642201a0c Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Tue, 6 Feb 2024 13:55:32 +0000 Subject: [PATCH 469/469] ECC-1759: postponed mars namespace for stream rfsd --- definitions/mars/grib.rfsd.go.def | 14 -------------- definitions/mars/grib.rfsd.sfo.def | 14 -------------- 2 files changed, 28 deletions(-) delete mode 100644 definitions/mars/grib.rfsd.go.def delete mode 100644 definitions/mars/grib.rfsd.sfo.def diff --git a/definitions/mars/grib.rfsd.go.def b/definitions/mars/grib.rfsd.go.def deleted file mode 100644 index 651444588..000000000 --- a/definitions/mars/grib.rfsd.go.def +++ /dev/null @@ -1,14 +0,0 @@ -# rfsd Gridded observations - -alias mars.step = endStep; - -alias mars.date = dateOfForecast; -alias mars.time = timeOfForecast; - -alias mars.origin = inputOriginatingCentre; - -# alias mars.anoffset=anoffset; - -# We need this because 'postProcessing' is defined later -meta efas_model sprintf("%s", postProcessing) : no_copy; -alias mars.model = efas_model; diff --git a/definitions/mars/grib.rfsd.sfo.def b/definitions/mars/grib.rfsd.sfo.def deleted file mode 100644 index 8be729236..000000000 --- a/definitions/mars/grib.rfsd.sfo.def +++ /dev/null @@ -1,14 +0,0 @@ -# Simulation forced with observations - -alias mars.step = endStep; - -alias mars.date = dateOfForecast; -alias mars.time = timeOfForecast; - -alias mars.origin = inputOriginatingCentre; - -# alias mars.anoffset=anoffset; - -# We need this because 'postProcessing' is defined later -meta efas_model sprintf("%s", postProcessing) : no_copy; -alias mars.model = efas_model;